On Wed, Jun 29, 2011 at 2:48 PM, tuane <span dir="ltr"><<a href="mailto:tuane@lncc.br">tuane@lncc.br</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;">
Thank you for your help.<br>
Well, but if the redundant preconditioner uses a direct solve what means:<br>
1. number of  iterations diversify with tolerance </blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
2. reductions iterations with the use the KSPSetInitialGuessNonzero.<br>
When I use the jacobi preconditioner, the number of iterations remains high.<br></blockquote><div><br></div><div>Redundant runs SOME preconditioner redundantly. If you specify nothing, it runs</div><div>the default which is GMRES/ILU(0). You can always use -ksp_view to see what</div>
<div>you used.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
What about tolerance? when I use jacobi preconditioner I need of a tolerance =1.0e-14 for to obtain the same result when I use the redundant preconditioner with tolerance=1.0e-10. I think that the tolerance is too small for jacobi preconditioner. What do you think?<br>

<br>
Thanks again.<br>
Tuane<br>
<br>
<br>
<br>
On Tue, 28 Jun 2011 14:00:06 -0500, Jed Brown wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Tue, Jun 28, 2011 at 11:55, tuane  wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
cg+redundant-PC give us the best result, similar to out original<br>
direct solver. we don't be sure what “redundant” is.<br>
</blockquote>
<br>
Redundant means that the whole problem is solved redundantly (using a<br>
direct solver by default) on every process. It only makes sense as a<br>
coarse level solver.<br>
  <br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Our response are beeing too dependent of these parameters:<br>
<br>
  1. iterative solver (CG, GMRES, BCGS)<br>
  2. preconditioners (jacobi, redundant, ILU)<br>
  3. tolerance<br>
  4. number of processors<br>
</blockquote>
<br>
At this point, you should always run with -ksp_monitor_true_residual<br>
to make sure that it is really converging.<br>
<br>
 We a<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
.  We used the routines:<br>
call PCSetType (pc, PCMG, ierr)<br>
<br>
This is not algebraic multigrid, it is geometric multigrid. If you<br>
use DMDA to manage the gri<br>
</blockquote>
ould use geometric multigrid here.<br>
<br>
But I think you are using a Raviart-Thomas mixed space in which case<br>
the default interpolants from DMDA are not going to work for you.<br>
<br>
The simplest thing you can do is to use PCFieldSplit to eliminate the<br>
fluxes such that the preconditioner can work with the non-mixed<br>
(H^1-conforming) operator defined in the potential/pressure space.<br>
<br>
The following won't work right now, but it should work soon. I'm<br>
describing it here for the others on petsc-dev. If you call<br>
<br>
PCFieldSplitSetIS(pc,"u",is_<u></u>fluxes);<br>
PCFieldSplitSetIS(pc,"p",is_<u></u>potential);<br>
<br>
and<br>
<br>
-pc_type fieldsplit -pc_fieldsplit_type schur<br>
-fieldsplit_u_pc_type jacobi # The (u,u) block is diagonal for lowest<br>
order RT spaces<br>
-fieldsplit_p_pc_type ml # or other multigrid, uses SIMPLE<br>
approximation of the Schur complement which happens to be exact<br>
because the (u,u) block is diagonal.<br>
<br>
This won't work right now because PCFieldSplit does not actually call<br>
MatGetSchurComplement() is designed. It would simplify fieldsplit.c to<br>
use MatGetSchurComplement(), but then MatGetSubMatrix() would be<br>
called twice for certain blocks in the matrix, once inside the Schur<br>
complement and once directly from fieldsplit.c. This is why I so want<br>
to make a mode in which the parent retains ownership and the caller<br>
gets a (intended to be) read-only reference when MatGetSubMatrix() and<br>
MatGetSchurComplement() are called.<br>
<br>
Links:<br>
------<br>
[1] mailto:<a href="mailto:tuane@lncc.br" target="_blank">tuane@lncc.br</a><br>
</blockquote>
<br>
</blockquote></div><br><br clear="all"><br>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener<br>