<div dir="ltr"><div>Hi Luc, it looks like it is possible to lump A00 before inverting it:<br><br><a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/KSP/MatSchurComplementGetAinvType.html#MatSchurComplementGetAinvType">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/KSP/MatSchurComplementGetAinvType.html#MatSchurComplementGetAinvType</a><br><br></div>I wonder if this will produce a similar improvement for your problem while avoiding the need to implement diag(inv(A00)).<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 3, 2014 at 5:40 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Luc Berger-Vergiat <<a href="mailto:lb2653@columbia.edu">lb2653@columbia.edu</a>> writes:<br>
<br>
> Hi all,<br>
> I would like to know if there would be an easy way of computing the Sp<br>
> preconditioner for a fieldsplit schur complement using the following<br>
> formula:<br>
> Sp=A11-A10*diag(inv(A00))*A01<br>
> instead of<br>
> Sp=A11-A10*inv(diag(A00))*A01<br>
<br>
</span>Not in general because inv(A00) is dense, thus not practically<br>
computable.  You can use PCFieldSplitSetSchurPre to provide your own Sp.<br>
<div class="HOEnZb"><div class="h5"><br>
> I think that it would be really beneficial in my case since the<br>
> eigenvalues of both operators are very different for my problem (see<br>
> ev_S_diaginv for the eigenvalues of the modified Sp and ev_S for the<br>
> eigenvalues of the current Sp).<br>
><br>
> I do understand that this requires to compute a more complex inverse<br>
> while forming Sp, but I compute this inverse using a block jacobi lu due<br>
> to the special properties of my matrix (see jac_nonlin_nested for the<br>
> sparsity pattern of my matrix). So the change would actually be quite<br>
> minimal no? I am also actually debating whether I should compute the<br>
> exact S?<br>
><br>
> --<br>
> Best,<br>
> Luc<br>
</div></div></blockquote></div><br></div>