<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Dear Dr. Brown, <br>
           Thank you so much for your help. Your reply is really helpful
      and knowledgeable. <br>
      <br>
      sincerely,<br>
      Alan<br>
      On 10/5/2012 2:42 PM, Jed Brown wrote:<br>
    </div>
    <blockquote
cite="mid:CAM9tzSmr8xoNXRZnJ2_peRDM2PSW2zWNaBQFG5uZb7vuHcBYyQ@mail.gmail.com"
      type="cite">On Fri, Oct 5, 2012 at 2:33 PM, Zhenglun (Alan) Wei <span
        dir="ltr"><<a moz-do-not-send="true"
          href="mailto:zhenglun.wei@gmail.com" target="_blank">zhenglun.wei@gmail.com</a>></span>
      wrote:<br>
      <div class="gmail_quote">
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div>Dear Dr. Brown, <br>
                 Thanks for your reply. I checked my grid partition by
            output the corner points of the local domain. There is no
            problem according to that. <br>
                 I ran the same case with smaller grid size with 8 cores
            and find that the code occupy a lot of memory and slow if I
            use the original script file which is<br>
            <i>mpiexec -np 8 ./ex45 -pc_type exotic -ksp_type fgmres
              -mg_levels_ksp_type gmres -mg_levels_ksp_max_it 1
              -mg_levels_pc_type bjacobi -ksp_rtol 1.0e-7
              -ksp_monitor_true_residual -ksp_converged_reason
              -log_summary > out</i><br>
            <br>
                 If I simply use <br>
            <i>mpiexec -np 8 ./ex45 -ksp_monitor_true_residual
              -ksp_converged_reason -log_summary > out</i><br>
            <br>
                 Everything works fine. Therefore, I did more tests and
            found out that the "-pc_type exotic" has some problem. </div>
        </blockquote>
        <div><br>
        </div>
        <div>PCEXOTIC is a special purpose, and mostly experimental,
          method.</div>
        <div> </div>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div>Now I changed it to "-pc_type gamg"; like, <br>
            <i>mpiexec -np 8 ./ex45 -pc_type gamg -ksp_type fgmres
              -mg_levels_ksp_type gmres -mg_levels_ksp_max_it 1
              -mg_levels_pc_type bjacobi -ksp_rtol 1.0e-7
              -ksp_monitor_true_residual -ksp_converged_reason
              -log_summary > out</i></div>
        </blockquote>
        <div><br>
        </div>
        <div>Add -pc_gamg_agg_nsmooths 1 to the options above and it
          will likely converge much faster (in exchange for somewhat
          higher setup, but you are spending almost no time in setup).</div>
        <div><br>
        </div>
        <div>Why are you using GMRES on levels? It will probably go
          faster if you drop all the -mg_levels_* options above (which
          will use Chebyshev and SOR, should converge fast, but has
          higher setup), perhaps going with -mg_levels_ksp_max_it 1
          -mg_levels_ksp_type richardson which will probably also works
          fine without the setup cost.</div>
        <div> </div>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div><i> </i><br>
                 it is super fast now, the log file is attached.
            However, I have another question that it always show that
            "unpreconditioned " although I already put pc_type over
            there. <br>
                  " 0 KSP unpreconditioned resid norm 1.800295456670e+01
            true resid norm 1.800295456670e+01 ||r(i)||/||b||
            1.000000000000e+00"<br>
                 <br>
                  However, if I changed the 'ksp_type' from 'fgmres' to
            'cg', it would give me:<br>
                  "0 KSP preconditioned resid norm 1.117293929796e+02
            true resid norm 1.800293604638e+01 ||r(i)||/||b||
            1.000000000000e+00"<br>
          </div>
        </blockquote>
        <div><br>
        </div>
        <div>This "preconditioned" versus "unpreconditioned" is
          reporting the norm used by the method, not whether
          preconditioning is being used. Note that you can only use CG
          (or normal GMRES) if the preconditioner is linear.
          Changing/removing the option -mg_levels_ksp_type gmres will
          make your method linear. Note that you can use normal GMRES in
          unpreconditioned norm (-ksp_norm_type unpreconditioned) so you
          don't have to pay for the extra memory and work done by
          FGMRES.</div>
        <div> </div>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div> <br>
                  The finial question: what are the choice for the <i>'</i>-mg_levels_ksp_type'.

            Are they as the same as 'ksp_type'?</div>
        </blockquote>
      </div>
      <br>
      <div>Yes, you can also tell this via -help. Usually you want to
        use a stationary method in the smoother, typically chebyshev or
        richardson. A "Krylov" method like GMRES or CG will make the
        multigrid cycle nonlinear.</div>
    </blockquote>
    <br>
  </body>
</html>