[petsc-dev] kspupper

Barry Smith bsmith at mcs.anl.gov
Sun Dec 2 23:05:57 CST 2012


  Matt,

    Please fix the documentation below to explain what kspupper is used to solve and how to trigger it.  I assume you are talking about the 
solve associated with the upper right block -A10 ksp(A00) ? What about the solve that appears  in the lower left block -A10 ksp(A00)?   And what about  the solve labeled  inv(A00)? The notation is a confusing mess at the moment. It is not even clear how many different solvers we support in different places.

   Also it would be good to show further down in this same manual page the options and form of the preconditioner you get with the Simple preconditioner.


$     For the Schur complement preconditioner if J = ( A00 A01 )
$                                                    ( A10 A11 )
$     the preconditioner using full factorization is
$              ( I   -A10 ksp(A00) ) ( inv(A00)     0  ) (     I          0  )
$              ( 0         I       ) (   0      ksp(S) ) ( -A10 ksp(A00)  I  )
     where the action of inv(A00) is applied using the KSP solver with prefix -fieldsplit_0_. The action of
     ksp(S) is computed using the KSP solver with prefix -fieldsplit_splitname_ (where splitname was given
     in providing the SECOND split or 1 if not give). For PCFieldSplitGetKSP() when field number is 0,
     it returns the KSP associated with -fieldsplit_0_ while field number 1 gives -fieldsplit_1_ KSP. By default
     A11 is used to construct a preconditioner for S, use PCFieldSplitSchurPrecondition() to turn on or off this
     option. You can use the preconditioner PCLSC to precondition the Schur complement with -fieldsplit_1_pc_type lsc. The
     factorization type is set using -pc_fieldsplit_schur_fact_type <diag, lower, upper, full>. The full is shown above,
     diag gives
$              ( inv(A00)     0   )
$              (   0      -ksp(S) )
     note that slightly counter intuitively there is a negative in front of the ksp(S) so that the preconditioner is positive definite. The lower factorization is the inverse of
$              (  A00   0 )
$              (  A10   S )
     where the inverses of A00 and S are applied using KSPs. The upper factorization is the inverse of
$              ( A00 A01 )
$              (  0   S  )
     where again the inverses of A00 and S are applied using KSPs.





More information about the petsc-dev mailing list