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 >
