:orphan:
# KSPPREONLY
This implements a method that applies ONLY the preconditioner exactly once. This may be used in inner iterations, where it is desired to allow multiple iterations as well as the "0-iteration" case. It is commonly used with the direct solver preconditioners like `PCLU` and `PCCHOLESKY`. There is an alias of `KSPNONE`.
## Options Database Key
- ***-ksp_type preonly -*** use preconditioner only
## Notes
Since this does not involve an iteration the basic `KSP` parameters such as tolerances and iteration counts
do not apply
To apply multiple preconditioners in a simple iteration use `KSPRICHARDSON`
## Developer Note
Even though this method does not use any norms, the user is allowed to set the `KSPNormType` to any value.
This is so the users does not have to change `KSPNormType` options when they switch from other `KSP` methods to this one.
## See Also
[](ch_ksp), `KSPCreate()`, `KSPSetType()`, `KSPType`, `KSP`, `KSPRICHARDSON`, `KSPCHEBYSHEV`
## Level
beginner
## Location
src/ksp/ksp/impls/preonly/preonly.c
## Examples
src/ksp/ksp/tutorials/ex52.c
src/ksp/ksp/tutorials/ex52f.F90
src/ksp/ksp/tutorials/ex57f.F90
src/ksp/ksp/tutorials/ex78.c
src/snes/tutorials/ex31.c
src/tao/constrained/tutorials/ex1.c
src/tao/constrained/tutorials/maros.c
---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/ksp/impls/preonly/preonly.c)
[Index of all KSP routines](index.md)
[Table of Contents for all manual pages](/manualpages/index.md)
[Index of all manual pages](/manualpages/singleindex.md)