xref: /petsc/include/petsc/private/dmfieldimpl.h (revision 49777e5269a9c36f7494c951e21e462585ae1f0f)
1 #pragma once
2 
3 #include <petscdmfield.h>
4 #include <petsc/private/petscimpl.h>
5 
6 PETSC_EXTERN PetscBool      DMFieldRegisterAllCalled;
7 PETSC_EXTERN PetscErrorCode DMFieldRegisterAll(void);
8 
9 typedef struct _DMFieldOps *DMFieldOps;
10 struct _DMFieldOps {
11   PetscErrorCode (*create)(DMField);
12   PetscErrorCode (*destroy)(DMField);
13   PetscErrorCode (*setfromoptions)(PetscOptionItems, DMField);
14   PetscErrorCode (*setup)(DMField);
15   PetscErrorCode (*view)(DMField, PetscViewer);
16   PetscErrorCode (*evaluate)(DMField, Vec, PetscDataType, void *, void *, void *);
17   PetscErrorCode (*evaluateFE)(DMField, IS, PetscQuadrature, PetscDataType, void *, void *, void *);
18   PetscErrorCode (*evaluateFV)(DMField, IS, PetscDataType, void *, void *, void *);
19   PetscErrorCode (*getDegree)(DMField, IS, PetscInt *, PetscInt *);
20   PetscErrorCode (*createDefaultQuadrature)(DMField, IS, PetscQuadrature *);
21   PetscErrorCode (*createDefaultFaceQuadrature)(DMField, IS, PetscQuadrature *);
22   PetscErrorCode (*computeFaceData)(DMField, IS, PetscQuadrature, PetscFEGeom *);
23 };
24 struct _p_DMField {
25   PETSCHEADER(struct _DMFieldOps);
26   DM                dm;
27   DMFieldContinuity continuity;
28   PetscInt          numComponents;
29   void             *data;
30 };
31 
32 PETSC_INTERN PetscErrorCode DMFieldCreate(DM, PetscInt, DMFieldContinuity, DMField *);
33 PETSC_INTERN PetscErrorCode DMFieldGetFVQuadrature_Internal(DMField, IS, PetscQuadrature *);
34