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