1: #pragma once
3: #include <petscpf.h>
4: #include <petsc/private/petscimpl.h>
6: PETSC_EXTERN PetscBool PFRegisterAllCalled;
7: PETSC_EXTERN PetscErrorCode PFRegisterAll(void);
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, PetscOptionItems);
16: };
18: struct _p_PF {
19: PETSCHEADER(struct _PFOps);
20: PetscInt dimin, dimout; /* dimension of input and output spaces */
21: void *data;
22: };