:orphan:
# PCFieldSplitSchurFactType
determines which off-diagonal parts of the approximate block factorization to use
## Synopsis
```
typedef enum {
PC_FIELDSPLIT_SCHUR_FACT_DIAG,
PC_FIELDSPLIT_SCHUR_FACT_LOWER,
PC_FIELDSPLIT_SCHUR_FACT_UPPER,
PC_FIELDSPLIT_SCHUR_FACT_FULL
} PCFieldSplitSchurFactType;
```
## Values
- ***`PC_FIELDSPLIT_SCHUR_FACT_DIAG` -*** the preconditioner is solving `D`
- ***`PC_FIELDSPLIT_SCHUR_FACT_LOWER` -*** the preconditioner is solving `L D`
- ***`PC_FIELDSPLIT_SCHUR_FACT_UPPER` -*** the preconditioner is solving `D U`
- ***`PC_FIELDSPLIT_SCHUR_FACT_FULL` -*** the preconditioner is solving `L(D U)`
where the matrix is factorized as
```none
(A B) = (1 0) (A 0) (1 Ainv*B) = L D U
(C E) (C*Ainv 1) (0 S) (0 1)
```
## See Also
[](sec_pc), `PCFIELDSPLIT`, `PCFieldSplitSetSchurFactType()`, `PC`
## Level
intermediate
## Location
include/petscpctypes.h
## Examples
src/dm/impls/stag/tutorials/ex4.c
---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/include/petscpctypes.h)
[Index of all PC routines](index.md)
[Table of Contents for all manual pages](/manualpages/index.md)
[Index of all manual pages](/manualpages/singleindex.md)