On Thu, Jun 21, 2012 at 1:17 AM, Klaij, Christiaan <span dir="ltr"><<a href="mailto:C.Klaij@marin.nl" target="_blank">C.Klaij@marin.nl</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">
> ><br>
> > In order to implement SIMPLE-type preconditioners for the<br>
> > incompressible Navier-Stokes equations (Elman e.a. JCP 227, 2008)<br>
> > using the PCFieldSplit framework, it looks like I need to replace<br>
> > inv(A00) by some cheap approximation<br>
> ><br>
> > 1) in the Schur complement<br>
> ><br>
><br>
> When you have a Schur FS, the '0' solver is this approximation.<br>
><br>
><br>
> > 2) in the L and/or U of the LDU factorization<br>
> ><br>
><br>
> You can use whatever PC you want for the solver mentioned above.<br>
><br>
><br>
> > 3) while keeping A00 in the D<br>
> ><br>
><br>
> I think what you want here is -pc_fieldsplit_real_diagonal.<br>
<br>
Let me get this straight. Looking at the full LDU factorization<br>
of the block matrix. Citing from the manual:<br>
<br>
  For the Schur complement preconditioner if<br>
  J = ( A00 A01 )<br>
      ( A10 A11 )<br>
<br>
  the preconditioner using full factorization is<br>
      ( I   -A10 ksp(A00) ) ( inv(A00)     0  ) (     I          0  )<br>
      ( 0         I       ) (   0      ksp(S) ) ( -A10 ksp(A00)  I  )<br></blockquote><div><br></div><div>Yes.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Clearly inv(A00) occurs four times, right? In L and in U and<br>
twice in D. Now if I somehow overrule the '0' solver with my<br></blockquote><div><br></div><div>Yes</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

approximation and use -pc_fieldsplit_real_diagonal, the effect<br>
would be that inv(A00) is replaced in L, in U and in S but not in<br>
the 00-block of D?<br></blockquote><div><br></div><div>No. What this says is that we should use the action of the</div><div>actual matrix rather than the preconditioner matrix in the solver.</div><div><br></div><div>I now think I have a better idea what you want, but it would be</div>
<div>helpful if you wrote it out completely in linear algebra notation, as</div><div>above. Right now, we use the same KSP for all 4 places above.</div><div>Using different KSPs would require a small code change, which I</div>
<div>can make if you give me a better idea what you want.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
And what's the function name corresponding to<br>
-pc_fieldsplit_real_diagonal?<br></blockquote><div><br></div><div>We have not put one in yet.</div><div><br></div><div>   Thanks,</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">

><br>
> I would be really nice to make a PETSc example that did SIMPLE. I was<br>
> going to do this, but if you do it first, I will put it in.<br>
<br>
Working on it.<br>
<br>
<br>
dr. ir. Christiaan Klaij<br>
CFD Researcher<br>
Research & Development<br>
E mailto:<a href="mailto:C.Klaij@marin.nl">C.Klaij@marin.nl</a><br>
T <a href="tel:%2B31%20317%2049%2033%2044" value="+31317493344">+31 317 49 33 44</a><br>
<br>
MARIN<br>
2, Haagsteeg, P.O. Box 28, 6700 AA Wageningen, The Netherlands<br>
T <a href="tel:%2B31%20317%2049%2039%2011" value="+31317493911">+31 317 49 39 11</a>, F <a href="tel:%2B31%20317%2049%2032%2045" value="+31317493245">+31 317 49 32 45</a>, I <a href="http://www.marin.nl" target="_blank">www.marin.nl</a><br>

<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <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>