1: #ifndef PETSC_PFIMPL_H 2: #define PETSC_PFIMPL_H 4: #include <petscpf.h> 5: #include <petsc/private/petscimpl.h> 6: #include <petscviewer.h> 8: PETSC_EXTERN PetscBool PFRegisterAllCalled; 9: PETSC_EXTERN PetscErrorCode PFRegisterAll(void); 11: typedef struct _PFOps *PFOps; 12: struct _PFOps { 13: PetscErrorCode (*apply)(void *, PetscInt, const PetscScalar *, PetscScalar *); 14: PetscErrorCode (*applyvec)(void *, Vec, Vec); 15: PetscErrorCode (*destroy)(void *); 16: PetscErrorCode (*view)(void *, PetscViewer); 17: PetscErrorCode (*setfromoptions)(PF, PetscOptionItems *); 18: }; 20: struct _p_PF { 21: PETSCHEADER(struct _PFOps); 22: PetscInt dimin, dimout; /* dimension of input and output spaces */ 23: void *data; 24: }; 26: #endif // PETSC_PFIMPL_H