:orphan:
# PCPreSolve
Optional pre-solve phase, intended for any preconditioner-specific actions that must be performed before the iterative solve itself.
## Synopsis
```
#include "petscksp.h"
PetscErrorCode PCPreSolve(PC pc, KSP ksp)
```
Collective
## Input Parameters
- ***pc -*** the preconditioner context
- ***ksp -*** the Krylov subspace context
## Sample of Usage
```none
PCPreSolve(pc,ksp);
KSPSolve(ksp,b,x);
PCPostSolve(pc,ksp);
```
## Notes
The pre-solve phase is distinct from the `PCSetUp()` phase.
`KSPSolve()` calls this directly, so is rarely called by the user.
## See Also
`PC`, `PCPostSolve()`
## Level
developer
## Location
src/ksp/pc/interface/precon.c
## Implementations
PCPreSolve_BDDC in src/ksp/pc/impls/bddc/bddc.c
PCPreSolve_Deflation in src/ksp/pc/impls/deflation/deflation.c
PCPreSolve_Eisenstat in src/ksp/pc/impls/eisens/eisen.c
PCPreSolve_HPDDM in src/ksp/pc/impls/hpddm/pchpddm.cxx
PCPreSolve_Shell in src/ksp/pc/impls/shell/shellpc.c
PCPreSolve_PDIPM in src/tao/constrained/impls/ipm/pdipm.c
---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/pc/interface/precon.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)