Skip to main content
`Ctrl`+`K`

# 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 the 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

Preconditioners, `PCCOMPOSITE`, `PCFIELDSPLIT`, `PC`, `PCCompositeSetType()`, `SNESCompositeType`, `PCCompositeSpecialSetAlpha()`

## Level

beginner

## Location

include/petscpctypes.h

## Examples

src/ksp/ksp/tutorials/ex71.c

## Examples

src/ksp/ksp/tutorials/ex60.c

## Examples

src/ksp/pc/tutorials/ex4.c

## Examples

src/dm/impls/stag/tutorials/ex4.c
src/ksp/ksp/tutorials/ex87.c

Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages