Skip to main content
`Ctrl`+`K`

# KSPSetPCSide

Sets the preconditioning side.

## Synopsis

    #include "petscksp.h"
    #include "petscmat.h"
    PetscErrorCode KSPSetPCSide(KSP ksp, PCSide side)

Logically Collective

## Input Parameter

- ksp - iterative solver obtained from `KSPCreate()`

## Output Parameter

- side - the preconditioning side, where side is one of

      PC_LEFT      - left preconditioning (default)
      PC_RIGHT     - right preconditioning
      PC_SYMMETRIC - symmetric preconditioning

## Options Database Key

- -ksp_pc_side <right,left,symmetric> - `KSP` preconditioner side

## Notes

Left preconditioning is used by default for most Krylov methods except `KSPFGMRES` which only supports right preconditioning.

For methods changing the side of the preconditioner changes the norm type that is used, see `KSPSetNormType()`.

Symmetric preconditioning is currently available only for the `KSPQCG` method. However, note that symmetric preconditioning can be emulated by using either right or left preconditioning, modifying the application of the matrix (with a custom `Mat` argument to `KSPSetOperators()`, and using a pre ‘KSPSetPreSolve()`or post processing`KSPSetPostSolve()` step).

Setting the `PCSide` often affects the default norm type. See `KSPSetNormType()` for details.

## See Also

KSP: Linear System Solvers, `KSPGetPCSide()`, `KSPSetNormType()`, `KSPGetNormType()`, `KSP`, `KSPSetPreSolve()`, `KSPSetPostSolve()`

## Level

intermediate

## Location

src/ksp/ksp/interface/itfunc.c

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