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