<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Jed,<br>
<br>
My initial motivation to try gamg was that paper:<br>
<span class="st">W.A. <em>Mulder</em>, A <em>multigrid solver for
3D</em> electromagnetic diffusion<br>
<br>
Where it seems to work fine (on uniform grids only at least).<br>
</span>I use MUMPS currently and it is very robust. It properly
solves systems with extremely low \omega and \sigma for any
stretched (which would 'kill' any multigrid I guess) grids.<br>
I don't expect iterative solvers to be that robust, but I would like
to solve even simple models with ~uniform grid of the order 10^7<br>
<br>
So, I will try to look at HYPRE's approach for Maxwell equations. <br>
Thanks a lot.<br>
<span class="st"></span><br>
On 20.01.2012 13:47, Jed Brown wrote:
<blockquote
cite="mid:CAM9tzSm5FqekiD=GdQOtN6bZ+_v7LooYXoUW7aOVeDmTOsA5SQ@mail.gmail.com"
type="cite">
<div class="gmail_quote">On Fri, Jan 20, 2012 at 05:37, Alexander
Grayver <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:agrayver@gfz-potsdam.de">agrayver@gfz-potsdam.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
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: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
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: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;">
<div bgcolor="#ffffff" text="#000000"> 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: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
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: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
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: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
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>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">--
Regards,
Alexander</pre>
</body>
</html>