Important special cases, the Stokes equation: C = B' and D = 0 (A B) (x_1) = (b_1) B' 0) (x_2) (b_2)
One of the goals of the PCFieldSplit preconditioner in PETSc is to provide a variety of preconditioners for this block system.
Consider an additional matrix (Ap Bp) (Cp Dp) where some or all of the entries may be the same as in the original matrix (for example Ap == A).
In the following, A^ denotes the approximate application of the inverse of A, possibly using Ap in the approximation. In PETSc this simply means one has called KSPSetOperators(ksp,A,Ap,...) or KSPSetOperators(ksp,Ap,Ap,...)
Block Jacobi: x_1 = A^ b_1 x_2 = D^ b_2
Lower block Gauss-Seidel: x_1 = A^ b_1 x_2 = D^ (b_2 - C x_1) variant x_2 = D^ (b_2 - Cp x_1)
Symmetric Gauss-Seidel: x_1 = x_1 + A^(b_1 - A x_1 - B x_2) variant x_1 = x_1 + A^(b_1 - Ap x_1 - Bp x_2) Interestingly this form is not actually a symmetric matrix, the symmetric version is x_1 = A^(b_1 - B x_2) variant x_1 = A^(b_1 - Bp x_2)
Level:intermediate
Location:src/ksp/pc/impls/fieldsplit/fieldsplit.c
Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages