MatSchurComplementSetSubMatrices#
Sets the matrices that define the Schur complement
Synopsis#
#include "petscksp.h"
PetscErrorCode MatSchurComplementSetSubMatrices(Mat S, Mat A00, Mat Ap00, Mat A01, Mat A10, Mat A11)
Collective
Input Parameters#
S - matrix obtained with
MatSetType
(S,MATSCHURCOMPLEMENT
)
A00 - the upper-left block of the original matrix A = [A00 A01; A10 A11]
Ap00 - preconditioning matrix for use in ksp(A00,Ap00) to approximate the action of A00^{-1}
A01 - the upper-right block of the original matrix A = [A00 A01; A10 A11]
A10 - the lower-left block of the original matrix A = [A00 A01; A10 A11]
A11 - (optional) the lower-right block of the original matrix A = [A00 A01; A10 A11]
Notes#
The Schur complement is NOT explicitly formed! Rather, this object performs the matrix-vector product of the Schur complement by using formula S = A11 - A10 ksp(A00,Ap00) A01
All four matrices must have the same MPI communicator.
A00
and A11
must be square matrices.
This is to be used in the context of code such as
while MatSchurComplementUpdateSubMatrices()
should only be called after MatCreateSchurComplement()
or MatSchurComplementSetSubMatrices()
See Also#
KSP: Linear System Solvers, Mat
, MatCreateNormal()
, MatMult()
, MatCreate()
, MatSchurComplementGetKSP()
, MatSchurComplementUpdateSubMatrices()
, MatCreateTranspose()
, MatCreateSchurComplement()
, MatGetSchurComplement()
Level#
intermediate
Location#
src/ksp/ksp/utils/schurm/schurm.c
Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages