<div class="gmail_quote">On Fri, Jan 20, 2012 at 05:37, 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#ffffff" text="#000000">Well in my case it is the other way around. I solve this equation
for low \omega and possibly very low \sigma. The curl-curl term
dominates always.</div></blockquote><div><br></div><div>Yes, this is the hard regime.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#ffffff" text="#000000">
<div class="im"><blockquote type="cite"><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>
</blockquote>
<br></div>
Unfortunately, the convergence with this option is worse for several
operators I've tried. <br>
Would it help to specify coordinates vertices?</div></blockquote><div><br></div><div>SA does not use coordinates except to add rigid body modes to the near-null space, but that near-null space is different and much smaller than your near-null space.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#ffffff" text="#000000"><div class="im"></div>
When configuring with hypre I get "Cannot use hypre with complex
numbers it is not coded for this capability".<br>
I can reformulate my problem in terms of real matrix:<br>
<br>
If C = A + iB <br>
Cx=b == [A -B; B A] [xr; xi] = [br; bi]<br>
<br>
But I'm not sure that making spectra two times larger would not
influence my condition number?</div></blockquote><div><br></div><div>It's probably not so bad for conditioning, but the methods on BoomerAMG are not intended for Maxwell. Hypre's user's manual (and ML's) have sections on solving Maxwell with their custom interfaces, you would have to read those sections and call them directly (or add that functionality to the PETSc interface; if you want to do this, we can advise and assist).</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#ffffff" text="#000000"><div class="im"><blockquote type="cite"><div><div>
</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); <br>
</div>
</div>
</blockquote>
<br></div>
I have fields on the edges, but I can formulate another staggering
scheme where fields are on the faces. Would it help?<br></div></blockquote><div><br></div><div>Not immediately. I'm not very familiar with the problem, but my understanding is that the edge discretization is probably the one you want anyway.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#ffffff" text="#000000">
My matrix is 3x3 block. For instance, if I have 100^3 grid, then
matrix is 3*10^6 and each block is of 10^6 size. <br>
Which block size should I pass to MatSetBlockSize? 10^6 or 3?
Because from its description it is not obvious.</div></blockquote><div><br></div><div>This "block size" stuff is for "point blocks" where you have several dofs collocated at points (or modes of a modal basis). You don't have that structure because different variables are at different points, so you can't readily interlace your three macro-blocks to make 3x3 point-blocks.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#ffffff" text="#000000"><div class="im"><br>
<br>
<blockquote type="cite">
<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>
</blockquote>
<br></div>
I do observe this for low \omega and low \sigma (e.g. in the air). I
was thinking how could one project out this null-space. <br>
Hitpmair, as Jed pointed, gives some clues. However it requires some
efforts to implement and wanted first to try petsc built in stuff.</div></blockquote></div><br><div>If you can afford it, I suggest using a direct solver like MUMPS. Depending on your geometry, 10^6 dofs might be manageable (depending on how quickly you need to solve these problems).</div>