1a4963045SJacob Faibussowitsch #pragma once 2292f8084SBarry Smith 3c6db04a5SJed Brown #include <petscpf.h> 4af0996ceSBarry Smith #include <petsc/private/petscimpl.h> 5665c2dedSJed Brown #include <petscviewer.h> 6292f8084SBarry Smith 70f51fdf8SToby Isaac PETSC_EXTERN PetscBool PFRegisterAllCalled; 814acc2feSToby Isaac PETSC_EXTERN PetscErrorCode PFRegisterAll(void); 90f51fdf8SToby Isaac 10292f8084SBarry Smith typedef struct _PFOps *PFOps; 11292f8084SBarry Smith struct _PFOps { 12dd394643SJed Brown PetscErrorCode (*apply)(void *, PetscInt, const PetscScalar *, PetscScalar *); 13292f8084SBarry Smith PetscErrorCode (*applyvec)(void *, Vec, Vec); 14292f8084SBarry Smith PetscErrorCode (*destroy)(void *); 15292f8084SBarry Smith PetscErrorCode (*view)(void *, PetscViewer); 16*ce78bad3SBarry Smith PetscErrorCode (*setfromoptions)(PF, PetscOptionItems); 17292f8084SBarry Smith }; 18292f8084SBarry Smith 19292f8084SBarry Smith struct _p_PF { 20011f5a45SSatish Balay PETSCHEADER(struct _PFOps); 21292f8084SBarry Smith PetscInt dimin, dimout; /* dimension of input and output spaces */ 22292f8084SBarry Smith void *data; 23292f8084SBarry Smith }; 24