<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=gb18030">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Dear folks, <br>
        I forget to forward my reply to the list. Please check the
    'Forwarded Message' about my code of Poisson solver with non-uniform
    grid and the procedure to reproduce the error for 'gamg'. <br>
        However, here I have some questions on the HYPRE preconditioner
    for the GMRES. One of my friend suggested me to add this to my code:<br>
    <div>ierr = KSPGetPC(solver, &pc);CHKERRQ(ierr);</div>
    <div>ierr = PCSetType(pc, PCHYPRE);CHKERRQ(ierr); </div>
    <div>ierr = PCHYPRESetType(pc,"boomeramg");CHKERRQ(ierr); </div>
    <div><br>
    </div>
    <div>ierr = PetscOptionsSetValue("-pc_hypre_boomeramg_max_levels",
      "25"); CHKERRQ(ierr);</div>
    <div>ierr =
      PetscOptionsSetValue("-pc_hypre_boomeramg_strong_threshold",
      "0.0"); CHKERRQ(ierr);</div>
    <div>ierr =
      PetscOptionsSetValue("-pc_hypre_boomeramg_relax_type_all",
      "SOR/Jacobi"); CHKERRQ(ierr);<br>
      <br>
         After this is done, the time for solving the Poisson equation
      indeed reduced to half; however, it is still very slow. Here I
      attached output file (out_GMRES_HYPRE-pc in the attachment) with
      -ksp_monitor and --ksp_view. Could you please help me to take a
      look and see which part I can modified to speed up the solver. <br>
      <br>
      thanks,<br>
      Alan<br>
    </div>
    <br>
    <div class="moz-forward-container"><br>
      <br>
      -------- Forwarded Message --------
      <table class="moz-email-headers-table" border="0" cellpadding="0"
        cellspacing="0">
        <tbody>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">主题: </th>
            <td>Re: [petsc-users] A question on the PETSc options for
              non-uniform grid</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">日期: </th>
            <td>Sun, 31 Mar 2013 18:21:40 -0500</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">发件人: </th>
            <td>Zhenglun (Alan) Wei <a class="moz-txt-link-rfc2396E" href="mailto:zhenglun.wei@gmail.com"><zhenglun.wei@gmail.com></a></td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">收件人: </th>
            <td>Jed Brown <a class="moz-txt-link-rfc2396E" href="mailto:jedbrown@mcs.anl.gov"><jedbrown@mcs.anl.gov></a>, "Mark F. Adams"
              <a class="moz-txt-link-rfc2396E" href="mailto:mark.adams@columbia.edu"><mark.adams@columbia.edu></a></td>
          </tr>
        </tbody>
      </table>
      <br>
      <br>
      <pre>Dear Dr. Brown,
Thank you so much for your answers. Here are my reply.
I reduced my code and attached here. It derives from the KSP ex45.c plus
my own code for the non uniform grid. The boundary condtion follows the
original method of ex45.c. Firstly, I should mention that if the code
runs for uniform grid, it is very fine. In the 'ITTCRun' script, there
are four executable lines.
1, it uses ksp = 'CG' and pc = 'GAMG'. It will comes up the
'un-symmetric graphic' problem;
2, it adds '-pc_gamg_sym_graph true' at the end. As I mentioned before,
it provides a very crazy norm since the '-pc_gamg_sym_graph true' is
used. The 'out_ksp=CG' shows the log and the norm.
3, No matter if the ksp type changed to 'GMRES' (which is the 3rd
executable line) or '-pc_gamg_sym_graph true' changed to
'-pc_gamg_threhold 0.0', the code will stacks there. However, it seems
not to be a 'deadlock' because if I reduce the computational load, i.e.
mesh size, it will complete but just very slow.
4, it uses everything for the default; I believe it is ksp = 'GMRES'
without any preconditioner. It can solve the fine mesh problem yet just
very slow.

I really appreciate your time and help, :)
Alan


> "Zhenglun (Alan) Wei" <a class="moz-txt-link-rfc2396E" href="mailto:zhenglun.wei@gmail.com"><zhenglun.wei@gmail.com></a> writes:
>
>> Dear All,
>> I hope you're having a nice day.
>> Based on ksp ex45, a 3D Poisson solver with non-uniform grid is coded.
>> The PETSc options I used is:
>> /mpiexec -np 32 ./ex45 -pc_type gamg -ksp_type cg -pc_gamg_type agg
>> -pc_gamg_agg_nsmooths 1 -mg_levels_ksp_max_it 1 -mg_levels_ksp_type
>> richardson -ksp_rtol 1.0e-7/
>> There are some problems:
>> 1, if the mesh is very coarse with very small amount of the grid, the
>> code runs well;
>> 2, if the mesh is fine, an error message comes up saying 'un-symmetric
>> graph'. It suggests me to use '-pc_gamg_sym_graph true' or
>> '-pc_gamg_thredhold 0.0'.
> How are you implementing boundary conditions?
>
>> a) if '-pc_gamg_sym_graph true' is used, the code runs but blows up very
>> quickly with crazy norm;
>> b) if '-pc_gamg_thredhold 0.0' is used, the code stops on the KSPSolve()
>> forever;
>> 3, because of the 'un-symmetric graph' error, it reminds me that the
>> matrix may not be symmetric, which indicates that '-ksp_type cg' may not
>> be a good option. Therefore, I changed it to '-ksp_type gmres'. It makes
>> the code run with 'moderate fine' mesh. However, it stops at KSPSolve()
>> also with fine mesh.
>> a) does there any other '-ksp_type' fit better for this case?
>> b) does multigrid preconditioner work well for gmres?
> All of the above should work. Can you reproduce with our version of
> ex45.c, or can you send your version with the full error messages you
> are seeing (or other symptoms, like deadlock?) and instructions to
> reproduce?


</pre>
      <br>
    </div>
    <br>
  </body>
</html>