petsc-master 2018-01-22
Report Typos and Errors


create a preconditioning matrix for the Schur complement by assembling Sp = A11 - A10 inv(diag(A00)) A01


#include "petscksp.h" 
PetscErrorCode  MatCreateSchurComplementPmat(Mat A00,Mat A01,Mat A10,Mat A11,MatSchurComplementAinvType ainvtype,MatReuse preuse,Mat *Spmat)
Collective on Mat

Input Parameters

A00,A01,A10,A11 - the four parts of the original matrix A = [A00 A01; A10 A11] (A01,A10, and A11 are optional, implying zero matrices)
ainvtype - type of approximation for inv(A00) used when forming Sp = A11 - A10 inv(A00) A01
preuse - MAT_INITIAL_MATRIX for a new Sp, or MAT_REUSE_MATRIX to reuse an existing Sp, or MAT_IGNORE_MATRIX to put nothing in Sp

Output Parameter

Spmat -approximate Schur complement suitable for preconditioning S = A11 - A10 inv(diag(A00)) A01


Since the real Schur complement is usually dense, providing a good approximation to newpmat usually requires application-specific information. The default for assembled matrices is to use the inverse of the diagonal of the (0,0) block A00 in place of A00^{-1}. This rarely produce a scalable algorithm. Optionally, A00 can be lumped before forming inv(diag(A00)).

See Also

MatCreateSchurComplement(), MatGetSchurComplement(), MatSchurComplementGetPmat(), MatSchurComplementAinvType




Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages