<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Whoops, sorry I missed this.<div><br></div><div>It looks like you have a largish \omega\mu\sigma because, as Jed mentioned, one would not expect GAMG to work well for the curl-curl part.</div><div><br></div><div>A few things to try:</div><div><br></div><div>1) '-pc_gamg_type sa' will provide what should be a better solver for SPD problems.</div><div><br></div><div>2) Try:</div><div><br></div><div><div>-pc_type hypre    ! instead of -pc_type gamg</div><div>-pc_hypre_type boomeramg </div><div>-pc_hypre_boomeramg_strong_threshold 0.6</div><div><br></div><div>3) You say 'staggard' but I just see E here.  Do you have E on faces?  I forget how staggering works here.  If E is cell centered then you have a system of 3x3 blocks (with the right ordering) and GAMG might benefit from setting the block size to tell it this:</div><div><br></div><div>MatSetBlockSize(mat,3); </div><div><br></div><div>And Jed's answer addresses your 2nd question about null-space.  These solvers will degrade as \omega\mu\sigma gets smaller.</div><div><br></div><div>Mark</div><div><br><div><div>On Jan 19, 2012, at 5:37 PM, Jed Brown wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="gmail_quote">On Wed, Jan 18, 2012 at 08:22, Alexander Grayver <span dir="ltr"><<a href="mailto:agrayver@gfz-potsdam.de">agrayver@gfz-potsdam.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; ">
Hello petsc team,<br>
<br>
I solve 3D vector Helmholtz equation like following:<br>
<br>
\nabla \times \nabla \times E + i\omega\mu\sigma E  = -J<br></blockquote><div><br></div><div>Multigrid methods for curl-curl problems are pretty specialized. ML and Hypre have support for specific discretizations, I don't know if they support an imaginary shift. The PETSc interface to these packages does not currently support their special Maxwell interfaces.</div>
<div><br></div><div>The methods are generally based on edge relaxation or auxiliary space preconditioning, see Hiptmair or Arnold, Falk, and Winther for the mathematical background.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
I use structured staggered grid and FD. The solution is a vector that consists of three parts E = {Ex Ey Ez}. The operator is symmetric matrix with complex numbers on diagonal.<br>
I'm interested in solving this system with iterative techniques. I applied newly presented gamg and it gives promising results, but all I did is just:<br>
-ksp_type tfqmr -pc_type gamg<br>
<br>
I played with different ksp_type and gamg options which are listed on PCGAMG doc page, but nothing improved convergence.<br>
Could you please guide me a bit through usage of this technique?<br>
The precise questions are:<br>
1. Do I have to do something to say petsc that my equation is a vector equation? Is it important for gamg pc?<br>
2. Should I take into account null-space using KSPSetNullSpace? Since it is well known that as \omega or \sigma get small, null-space of geometric term (curl curl operator) starts to dominate and system gets more ill-conditioned.<br>

3. Which options for gamg may improve convergence in my case?<br>
<br>
<br>
Thanks a lot in advance.<br><font color="#888888">
<br>
-- <br>
Regards,<br>
Alexander<br>
<br>
</font></blockquote></div><br>
</blockquote></div><br></div></div></body></html>