Hi Luc, it looks like it is possible to lump A00 before inverting it:

http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/KSP/MatSchurComplementGetAinvType.html#MatSchurComplementGetAinvType

I wonder if this will produce a similar improvement for your problem while
avoiding the need to implement diag(inv(A00)).

On Wed, Dec 3, 2014 at 5:40 PM, Jed Brown <[email protected]> wrote:

> Luc Berger-Vergiat <[email protected]> writes:
>
> > Hi all,
> > I would like to know if there would be an easy way of computing the Sp
> > preconditioner for a fieldsplit schur complement using the following
> > formula:
> > Sp=A11-A10*diag(inv(A00))*A01
> > instead of
> > Sp=A11-A10*inv(diag(A00))*A01
>
> Not in general because inv(A00) is dense, thus not practically
> computable.  You can use PCFieldSplitSetSchurPre to provide your own Sp.
>
> > I think that it would be really beneficial in my case since the
> > eigenvalues of both operators are very different for my problem (see
> > ev_S_diaginv for the eigenvalues of the modified Sp and ev_S for the
> > eigenvalues of the current Sp).
> >
> > I do understand that this requires to compute a more complex inverse
> > while forming Sp, but I compute this inverse using a block jacobi lu due
> > to the special properties of my matrix (see jac_nonlin_nested for the
> > sparsity pattern of my matrix). So the change would actually be quite
> > minimal no? I am also actually debating whether I should compute the
> > exact S?
> >
> > --
> > Best,
> > Luc
>

Reply via email to