#include "petscksp.h" PetscErrorCode PCRegister(const char sname[],PetscErrorCode (*function)(PC))Not collective
| name_solver | - name of a new user-defined solver | |
| routine_create | - routine to create method context | 
   PCRegister("my_solver", MySolverCreate);
Then, your solver can be chosen with the procedural interface via
    PCSetType(pc,"my_solver")
or at runtime via the option
    -pc_type my_solver