:orphan: # PCShellSetPreSolve Sets routine to apply to the operators/vectors before a `KSPSolve()` is applied. This usually does something like scale the linear system in some application specific way. ## Synopsis ``` #include "petscpc.h" PetscErrorCode PCShellSetPreSolve(PC pc, PetscErrorCode (*presolve)(PC, KSP, Vec, Vec)) ``` Logically Collective ## Input Parameters - ***pc -*** the preconditioner context - ***presolve -*** the application-provided presolve routine ## Calling sequence of `presolve` ```none PetscErrorCode presolve(PC pc, KSP ksp, Vec b, Vec x) ``` - ***pc -*** the preconditioner, get the application context with `PCShellGetContext()` - ***xin -*** input vector - ***xout -*** output vector ## See Also `PCSHELL`, `PCShellSetApplyRichardson()`, `PCShellSetSetUp()`, `PCShellSetApplyTranspose()`, `PCShellSetPostSolve()`, `PCShellSetContext()` ## Level advanced ## Location src/ksp/pc/impls/shell/shellpc.c ## Implementations PCShellSetPreSolve_Shell(PC pc, PetscErrorCode (*presolve) in src/ksp/pc/impls/shell/shellpc.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/pc/impls/shell/shellpc.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)