<!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>