:orphan: # PCCompositeType Determines how two or more preconditioner are composed with the `PCType` of `PCCOMPOSITE` ## Synopsis ``` typedef enum { PC_COMPOSITE_ADDITIVE, PC_COMPOSITE_MULTIPLICATIVE, PC_COMPOSITE_SYMMETRIC_MULTIPLICATIVE, PC_COMPOSITE_SPECIAL, PC_COMPOSITE_SCHUR, PC_COMPOSITE_GKB } PCCompositeType; ``` ## Values - ***`PC_COMPOSITE_ADDITIVE` -*** results from application of all preconditioners are added together - ***`PC_COMPOSITE_MULTIPLICATIVE` -*** preconditioners are applied sequentially to the residual freshly computed after the previous preconditioner application - ***`PC_COMPOSITE_SYMMETRIC_MULTIPLICATIVE` -*** preconditioners are applied sequentially to the residual freshly computed from first preconditioner to last and then back (Use only for symmetric matrices and preconditioners) - ***`PC_COMPOSITE_SPECIAL` -*** This is very special for a matrix of the form alpha I + R + S where first preconditioner is built from alpha I + S and second from alpha I + R - ***`PC_COMPOSITE_SCHUR` -*** composes the Schur complement of the matrix from two blocks, see `PCFIELDSPLIT` - ***`PC_COMPOSITE_GKB` -*** the generalized Golub-Kahan bidiagonalization preconditioner, see `PCFIELDSPLIT` ## See Also [](sec_pc), `PCCOMPOSITE`, `PCFIELDSPLIT`, `PC`, `PCCompositeSetType()` ## Level beginner ## Location include/petscpctypes.h ## Examples src/dm/impls/stag/tutorials/ex4.c
src/ksp/ksp/tutorials/ex60.c
src/ksp/ksp/tutorials/ex71.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)