Skip to main content
`Ctrl`+`K`

# PCType

String with the name of a PETSc preconditioner. These are all the preconditioners and direct solvers that PETSc provides.

## Synopsis

    typedef const char *PCType;
    #define PCNONE               "none"
    #define PCJACOBI             "jacobi"
    #define PCSOR                "sor"
    #define PCLU                 "lu"
    #define PCQR                 "qr"
    #define PCSHELL              "shell"
    #define PCAMGX               "amgx"
    #define PCBJACOBI            "bjacobi"
    #define PCMG                 "mg"
    #define PCEISENSTAT          "eisenstat"
    #define PCILU                "ilu"
    #define PCICC                "icc"
    #define PCASM                "asm"
    #define PCGASM               "gasm"
    #define PCKSP                "ksp"
    #define PCBJKOKKOS           "bjkokkos"
    #define PCCOMPOSITE          "composite"
    #define PCREDUNDANT          "redundant"
    #define PCSPAI               "spai"
    #define PCNN                 "nn"
    #define PCCHOLESKY           "cholesky"
    #define PCPBJACOBI           "pbjacobi"
    #define PCVPBJACOBI          "vpbjacobi"
    #define PCMAT                "mat"
    #define PCHYPRE              "hypre"
    #define PCPARMS              "parms"
    #define PCFIELDSPLIT         "fieldsplit"
    #define PCTFS                "tfs"
    #define PCML                 "ml"
    #define PCGALERKIN           "galerkin"
    #define PCEXOTIC             "exotic"
    #define PCCP                 "cp"
    #define PCBFBT               "bfbt"
    #define PCLSC                "lsc"
    #define PCPYTHON             "python"
    #define PCPFMG               "pfmg"
    #define PCSMG                "smg"
    #define PCSYSPFMG            "syspfmg"
    #define PCREDISTRIBUTE       "redistribute"
    #define PCSVD                "svd"
    #define PCGAMG               "gamg"
    #define PCCHOWILUVIENNACL    "chowiluviennacl"
    #define PCROWSCALINGVIENNACL "rowscalingviennacl"
    #define PCSAVIENNACL         "saviennacl"
    #define PCBDDC               "bddc"
    #define PCKACZMARZ           "kaczmarz"
    #define PCTELESCOPE          "telescope"
    #define PCPATCH              "patch"
    #define PCLMVM               "lmvm"
    #define PCHMG                "hmg"
    #define PCDEFLATION          "deflation"
    #define PCHPDDM              "hpddm"
    #define PCH2OPUS             "h2opus"
    #define PCMPI                "mpi"

## Notes

Use `PCSetType()` or the options database key `-pc_type` to set the preconditioner to use with a given `PC` object

`PCRegister()` is used to register preconditioners that are then accessible via `PCSetType()`

## See Also

Summary of Sparse Linear Solvers Available In PETSc, Preconditioners, `PCSetType()`, `PC`, `PCCreate()`, `PCRegister()`, `PCSetFromOptions()`, `PCLU`, `PCJACOBI`, `PCBJACOBI`

## Level

beginner

## Location

include/petscpctypes.h

## Examples

src/ksp/ksp/tutorials/ex2f.F90
src/ksp/ksp/tutorials/ex57f.F90

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