On Fri, Jun 10, 2011 at 01:01, Barry Smith <bsmith at mcs.anl.gov> wrote:
> Absolutely, by default MatGetSchurComplement() should be providing the > diagonal block if something else is not given by the user. This way the > fieldsplit can just call MatGetSchurComplement() and needs to have no > special code for "if user didn't provide anything". Right? Yes, although there is another possible option in MatGetSchurComplement_Basic(). As currently implemented, it returns a MatSchurComplement (the real thing, with a linear solver buried inside) as the primary and the SIMPLE approximation as the preconditioning matrix D - C inv(diag(A)) B It could be made a bit smarter to figure out if MatGetDiagonal() and MatMatMult() were implemented before proceeding down this road, otherwise falling back to just returning the diagonal block. In reality, that should be a run-time option, but how to we allow it to be different for different blocks (the user might want to get multiple Schur complements out of one matrix)? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20110610/3eb3f7a8/attachment.html>
