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