petsc-3.7.1 2016-05-15
Report Typos and Errors

PCLSC

Preconditioning for Schur complements, based on Least Squares Commutators

Options Database Key

-pc_lsc_scale_diag -Use the diagonal of A for scaling Many br

Many br

Notes

This preconditioner will normally be used with PCFieldSplit to precondition the Schur complement, but Many brit can be used for any Schur complement system. Consider the Schur complement Many br

   S = A11 - A10 inv(A00) A01
Many br

PCLSC currently doesn't do anything with A11, so let's assume it is 0. The idea is that a good approximation to Many brinv(S) is given by Many br

   inv(A10 A01) A10 A00 A01 inv(A10 A01)
Many br

The product A10 A01 can be computed for you, but you can provide it (this is Many brusually more efficient anyway). In the case of incompressible flow, A10 A10 is a Laplacian, call it L. The current Many brinterface is to hang L and a preconditioning matrix Lp on the preconditioning matrix. Many br

If you had called KSPSetOperators(ksp,S,Sp), S should have type MATSCHURCOMPLEMENT and Sp can be any type you Many brlike (PCLSC doesn't use it directly) but should have matrices composed with it, under the names "LSC_L" and "LSC_Lp". Many brFor example, you might have setup code like this Many br

   PetscObjectCompose((PetscObject)Sp,"LSC_L",(PetscObject)L);
   PetscObjectCompose((PetscObject)Sp,"LSC_Lp",(PetscObject)Lp);
Many br

And then your Jacobian assembly would look like Many br

   PetscObjectQuery((PetscObject)Sp,"LSC_L",(PetscObject*)&L);
   PetscObjectQuery((PetscObject)Sp,"LSC_Lp",(PetscObject*)&Lp);
   if (L) { assembly L }
   if (Lp) { assemble Lp }
Many br

With this, you should be able to choose LSC preconditioning, using e.g. ML's algebraic multigrid to solve with L Many br

   -fieldsplit_1_pc_type lsc -fieldsplit_1_lsc_pc_type ml
Many br

Since we do not use the values in Sp, you can still put an assembled matrix there to use normal preconditioners. Many br

References

1. - Elman, Howle, Shadid, Shuttleworth, and Tuminaro, Block preconditioners based on approximate commutators, 2006. Many br
2. - Silvester, Elman, Kay, Wathen, Efficient preconditioning of the linearized Navier Stokes equations for incompressible flow, 2001. Many br

See Also

PCCreate(), PCSetType(), PCType (for list of available types), PC, Block_Preconditioners, PCFIELDSPLIT,
PCFieldSplitGetSubKSP(), PCFieldSplitSetFields(), PCFieldSplitSetType(), PCFieldSplitSetIS(), PCFieldSplitSetSchurPre(), Many brMatCreateSchurComplement() Many br

Level:intermediate
Location:
src/ksp/pc/impls/lsc/lsc.c
Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages