2: #if !defined(_PFIMPL) 3: #define _PFIMPL 5: #include <petscpf.h> 6: #include <petsc-private/petscimpl.h> 7: #include <petscviewer.h> 9: typedef struct _PFOps *PFOps; 10: struct _PFOps { 11: PetscErrorCode (*apply)(void*,PetscInt,const PetscScalar*,PetscScalar*); 12: PetscErrorCode (*applyvec)(void*,Vec,Vec); 13: PetscErrorCode (*destroy)(void*); 14: PetscErrorCode (*view)(void*,PetscViewer); 15: PetscErrorCode (*setfromoptions)(PF); 16: }; 18: struct _p_PF { 19: PETSCHEADER(struct _PFOps); 20: PetscInt dimin,dimout; /* dimension of input and output spaces */ 21: void *data; 22: }; 24: #endif