PCFieldSplitSetSchurFactType#
sets which blocks of the approximate block factorization to retain in the preconditioner [MGW00] and [Ips01]
Synopsis#
#include "petscpc.h"
PetscErrorCode PCFieldSplitSetSchurFactType(PC pc, PCFieldSplitSchurFactType ftype)
Collective
Input Parameters#
pc - the preconditioner context
ftype - which blocks of factorization to retain,
PC_FIELDSPLIT_SCHUR_FACT_FULL
is default
Options Database Key#
-pc_fieldsplit_schur_fact_type <diag,lower,upper,full> - default is
full
Notes#
The full
factorization is
where \( S = E - C A^{-1} B \). In practice, the full factorization is applied via block triangular solves with the grouping \(L(DU)\). upper
uses \(DU\), lower
uses \(LD\),
and diag
is the diagonal part with the sign of \(S\) flipped (because this makes the preconditioner positive definite for many formulations,
thus allowing the use of KSPMINRES)
. Sign flipping of \(S\) can be turned off with PCFieldSplitSetSchurScale()
.
If \(A\) and \(S\) are solved exactly
1 -
full
factorization is a direct solver.2 - The preconditioned operator with
lower
orupper
has all eigenvalues equal to 1 and minimal polynomial of degree 2, soKSPGMRES
converges in 2 iterations.3 - With
diag
, the preconditioned operator has three distinct nonzero eigenvalues and minimal polynomial of degree at most 4, soKSPGMRES
converges in at most 4 iterations.
If the iteration count is very low, consider using KSPFGMRES
or KSPGCR
which can use one less preconditioner
application in this case. Note that the preconditioned operator may be highly non-normal, so such fast convergence may not be observed in practice.
For symmetric problems in which \(A\) is positive definite and \(S\) is negative definite, diag
can be used with KSPMINRES
.
A flexible method like KSPFGMRES
or KSPGCR
, Flexible Krylov Methods, must be used if the fieldsplit preconditioner is nonlinear (e.g., a few iterations of a Krylov method is used to solve with \(A\) or \(S\)).
References#
Ilse CF Ipsen. A note on preconditioning nonsymmetric matrices. SIAM Journal on Scientific Computing, 23(3):1050–1051, 2001.
Malcolm F Murphy, Gene H Golub, and Andrew J Wathen. A note on preconditioning for indefinite linear systems. SIAM Journal on Scientific Computing, 21(6):1969–1972, 2000.
See Also#
Solving Block Matrices with PCFIELDSPLIT, PC
, PCFieldSplitGetSubKSP()
, PCFIELDSPLIT
, PCFieldSplitSetFields()
, PCFieldSplitSchurPreType
, PCFieldSplitSetSchurScale()
,
Flexible Krylov Methods, PCFieldSplitSetSchurPre()
Level#
intermediate
Location#
Examples#
Implementations#
PCFieldSplitSetSchurFactType_FieldSplit() in src/ksp/pc/impls/fieldsplit/fieldsplit.c
Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages