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