:orphan:
# MatSchurComplementGetSubMatrices
Get the individual submatrices in the Schur complement 
## Synopsis
```
#include "petscksp.h" 
PetscErrorCode MatSchurComplementGetSubMatrices(Mat S, Mat *A00, Mat *Ap00, Mat *A01, Mat *A10, Mat *A11)
```
Collective


## Input Parameter

- ***S    -*** matrix obtained with `MatCreateSchurComplement()` (or equivalent) and implementing the action of A11 - A10 ksp(A00,Ap00) A01



## Output Parameters

- ***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 A^{-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]





## Note
`A11` is optional, and thus can be `NULL`.

The reference counts of the submatrices are not increased before they are returned and the matrices should not be modified or destroyed.


## See Also
 [](ch_ksp), `MatCreateNormal()`, `MatMult()`, `MatCreate()`, `MatSchurComplementGetKSP()`, `MatCreateSchurComplement()`, `MatSchurComplementUpdateSubMatrices()`

## Level
intermediate

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ksp/ksp/utils/schurm/schurm.c.html#MatSchurComplementGetSubMatrices">src/ksp/ksp/utils/schurm/schurm.c</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/ksp/utils/schurm/schurm.c)


[Index of all KSP routines](index.md)  
[Table of Contents for all manual pages](/manualpages/index.md)  
[Index of all manual pages](/manualpages/singleindex.md)  
