126bd1501SBarry Smith #if !defined(PETSCDMFIELD_H) 226bd1501SBarry Smith #define PETSCDMFIELD_H 3ac09b921SBarry Smith 4b2b58855SToby Isaac #include <petscdm.h> 5b2b58855SToby Isaac #include <petscdt.h> 6b2b58855SToby Isaac #include <petscfe.h> 7b2b58855SToby Isaac 8ac09b921SBarry Smith /* SUBMANSEC = DM */ 9ac09b921SBarry Smith 10b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldInitializePackage(void); 11b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldFinalizePackage(void); 12b2b58855SToby Isaac 13b2b58855SToby Isaac PETSC_EXTERN PetscClassId DMFIELD_CLASSID; 14b2b58855SToby Isaac 15b2b58855SToby Isaac /*J 1687497f52SBarry Smith DMFieldType - String with the name of a `DMField` method 17b2b58855SToby Isaac 18b2b58855SToby Isaac Level: intermediate 1987497f52SBarry Smith 2087497f52SBarry Smith .seealso: `DMField`, `DMFieldSetType()`, `DMFieldGetType()`, `DMFieldRegister()` 21b2b58855SToby Isaac J*/ 22b2b58855SToby Isaac typedef const char *DMFieldType; 23b2b58855SToby Isaac #define DMFIELDDA "da" 24b2b58855SToby Isaac #define DMFIELDDS "ds" 25b2b58855SToby Isaac #define DMFIELDSHELL "shell" 26b2b58855SToby Isaac 27b2b58855SToby Isaac PETSC_EXTERN PetscFunctionList DMFieldList; 28b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldSetType(DMField, DMFieldType); 29b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetType(DMField, DMFieldType *); 30b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldRegister(const char[], PetscErrorCode (*)(DMField)); 31b2b58855SToby Isaac 32*9371c9d4SSatish Balay typedef enum { 33*9371c9d4SSatish Balay DMFIELD_VERTEX, 34*9371c9d4SSatish Balay DMFIELD_EDGE, 35*9371c9d4SSatish Balay DMFIELD_FACET, 36*9371c9d4SSatish Balay DMFIELD_CELL 37*9371c9d4SSatish Balay } DMFieldContinuity; 38b2b58855SToby Isaac PETSC_EXTERN const char *const DMFieldContinuities[]; 39b2b58855SToby Isaac 40b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldDestroy(DMField *); 41b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldView(DMField, PetscViewer); 42b2b58855SToby Isaac 43b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetDM(DMField, DM *); 44b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetNumComponents(DMField, PetscInt *); 45b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetContinuity(DMField, DMFieldContinuity *); 46b2b58855SToby Isaac 47b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldEvaluate(DMField, Vec, PetscDataType, void *, void *, void *); 48b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldEvaluateFE(DMField, IS, PetscQuadrature, PetscDataType, void *, void *, void *); 49b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldEvaluateFV(DMField, IS, PetscDataType, void *, void *, void *); 502bb1671aSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateFEGeom(DMField, IS, PetscQuadrature, PetscBool, PetscFEGeom **); 51b2b58855SToby Isaac 52b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateDefaultQuadrature(DMField, IS, PetscQuadrature *); 53b2b58855SToby Isaac 54b7260050SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetDegree(DMField, IS, PetscInt *, PetscInt *); 55b2b58855SToby Isaac 56b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateDA(DM, PetscInt, const PetscScalar *, DMField *); 57b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateDS(DM, PetscInt, Vec, DMField *); 586858538eSMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMFieldCreateDSWithDG(DM, DM, PetscInt, Vec, Vec, DMField *); 59b2b58855SToby Isaac 60b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateShell(DM, PetscInt, DMFieldContinuity, void *, DMField *); 61028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetDestroy(DMField, PetscErrorCode (*)(DMField)); 62b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellGetContext(DMField, void *); 63b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluate(DMField, PetscErrorCode (*)(DMField, Vec, PetscDataType, void *, void *, void *)); 64028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluateFE(DMField, PetscErrorCode (*)(DMField, IS, PetscQuadrature, PetscDataType, void *, void *, void *)); 65028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellEvaluateFEDefault(DMField, IS, PetscQuadrature, PetscDataType, void *, void *, void *); 66b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluateFV(DMField, PetscErrorCode (*)(DMField, IS, PetscDataType, void *, void *, void *)); 67028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellEvaluateFVDefault(DMField, IS, PetscDataType, void *, void *, void *); 68b7260050SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetGetDegree(DMField, PetscErrorCode (*)(DMField, IS, PetscInt *, PetscInt *)); 69028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetCreateDefaultQuadrature(DMField, PetscErrorCode (*)(DMField, IS, PetscQuadrature *)); 70b2b58855SToby Isaac 71b2b58855SToby Isaac #endif 72