extern PetscErrorCode (*apply)(void*,Vec,Vec);
extern PetscErrorCode (*applytrans)(void*,Vec,Vec);
extern PetscErrorCode (*backtr)(void*,PetscScalar*,PetscScalar*);
STCreate(comm,&st);
STSetType(st,STSHELL);
STShellSetContext(st,ctx);
STShellSetApply(st,apply);
STShellSetApplyTranspose(st,applytrans); (optional)
STShellSetBackTransform(st,backtr); (optional)
Location: src/sys/classes/st/impls/shell/shell.c