# KSPSetPCSide
Sets the preconditioning side. 
## Synopsis
```
#include "petscksp.h" 
#include "petscmat.h" 
PetscErrorCode KSPSetPCSide(KSP ksp, PCSide side)
```
Logically Collective


## Input Parameter

- ***ksp -*** iterative context obtained from `KSPCreate()`



## Output Parameter

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


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



## Options Database Keys

- ***-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. Note, however, that
symmetric preconditioning can be emulated by using either right or left
preconditioning and a pre or post processing step.

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




## See Also
 [](chapter_ksp), `KSPGetPCSide()`, `KSPSetNormType()`, `KSPGetNormType()`, `KSP`

## Level
intermediate

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ksp/ksp/interface/itfunc.c.html#KSPSetPCSide">src/ksp/ksp/interface/itfunc.c</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/ksp/interface/itfunc.c)


[Index of all KSP routines](index.md)  
[Table of Contents for all manual pages](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
