:orphan: # PCSHELL Creates a new preconditioner class for use with a users own private data storage format and preconditioner application code ## Usage ```none extern PetscErrorCode apply(PC,Vec,Vec); extern PetscErrorCode applyba(PC,PCSide,Vec,Vec,Vec); extern PetscErrorCode applytranspose(PC,Vec,Vec); extern PetscErrorCode setup(PC); extern PetscErrorCode destroy(PC); PCCreate(comm,&pc); PCSetType(pc,PCSHELL); PCShellSetContext(pc,ctx) PCShellSetApply(pc,apply); PCShellSetApplyBA(pc,applyba); (optional) PCShellSetApplyTranspose(pc,applytranspose); (optional) PCShellSetSetUp(pc,setup); (optional) PCShellSetDestroy(pc,destroy); (optional) ``` ## See Also `PCCreate()`, `PCSetType()`, `PCType`, `PC`, `MATSHELL`, `PCShellSetSetUp()`, `PCShellSetApply()`, `PCShellSetView()`, `PCShellSetDestroy()`, `PCShellSetPostSolve()`, `PCShellSetApplyTranspose()`, `PCShellSetName()`, `PCShellSetApplyRichardson()`, `PCShellSetPreSolve()`, `PCShellSetView()`, `PCShellGetName()`, `PCShellSetContext()`, `PCShellGetContext()`, `PCShellSetApplyBA()`, `MATSHELL`, `PCShellSetMatApply()`, ## Level advanced ## Location src/ksp/pc/impls/shell/shellpc.c ## Examples src/ksp/ksp/tutorials/ex15.c
src/ksp/ksp/tutorials/ex15f.F90
src/ksp/ksp/tutorials/ex60.c
src/snes/tutorials/ex3.c
src/tao/pde_constrained/tutorials/hyperbolic.c
src/tao/pde_constrained/tutorials/parabolic.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)