# 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 PETSCKSP_DLLEXPORT PCShellSetPreSolve(PC pc,PetscErrorCode (*presolve)(void*,KSP,Vec,Vec))

Collective on PC

### Input Parameters

| pc | - the preconditioner context
| presolve | - the application-provided presolve routine

### Calling sequence of presolve

       PetscErrorCode presolve (void *ptr,KSP ksp,Vec b,Vec x)

| ptr | - the application context
| xin | - input vector
| xout | - output vector

### Keywords

PC, shell, set, apply, user-provided

### See Also

PCShellSetApplyRichardson(), PCShellSetSetUp(), PCShellSetApplyTranspose(), PCShellSetPostSolve(), PCShellSetContext()

Level:developer
Location:src/ksp/pc/impls/shell/shellpc.c
Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages