:orphan: # PCCOMPOSITE Build a preconditioner by composing together several preconditioners ## Options Database Keys - ***-pc_composite_type -*** Sets composite preconditioner type - ***-pc_use_amat -*** activates `PCSetUseAmat()` - ***-pc_composite_pcs -*** list of PCs to compose ## Notes To use a Krylov method inside the composite preconditioner, set the `PCType` of one or more inner `PC`s to be `PCKSP`. Using a Krylov method inside another Krylov method can be dangerous (you get divergence or the incorrect answer) unless you use `KSPFGMRES` as the outer Krylov method To use a different operator to construct one of the inner preconditioners first call `PCCompositeGetPC()`, then call `PCSetOperators()` on that `PC`. ## See Also `PCCreate()`, `PCSetType()`, `PCType`, `PC`, `PCSHELL`, `PCKSP`, `PCCompositeSetType()`, `PCCompositeSpecialSetAlpha()`, `PCCompositeAddPCType()`, `PCCompositeGetPC()`, `PCSetUseAmat()`, `PCCompositeAddPC()`, `PCCompositeGetNumberPC()` ## Level intermediate ## Location src/ksp/pc/impls/composite/composite.c ## Examples src/ksp/ksp/tutorials/ex60.c
src/ksp/ksp/tutorials/ex71.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/pc/impls/composite/composite.c) [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)