[petsc-dev] Naming for PCFieldSplitSetSchurPrecondition()

Barry Smith bsmith at mcs.anl.gov
Thu Jun 9 18:15:21 CDT 2011


On Jun 9, 2011, at 6:08 PM, Jed Brown wrote:

> 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
> 
> 
  Crud, complications. Well regardless it would be good if all these possibilities were in one place as opposed to some coming from the MatSchurComplement() and some coming from the PCFieldSplitSetSchurPrecondition()

  I'd hate to see you keep PCFieldSplitSetSchurPrecondition() and ADD MatSetApproximateSchur().

> 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)?

   




More information about the petsc-dev mailing list