1a4963045SJacob Faibussowitsch #pragma once 2ac09b921SBarry Smith 3b2b58855SToby Isaac #include <petscdm.h> 4b2b58855SToby Isaac #include <petscdt.h> 5b2b58855SToby Isaac #include <petscfe.h> 6b2b58855SToby Isaac 7ac09b921SBarry Smith /* SUBMANSEC = DM */ 8ac09b921SBarry Smith 9b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldInitializePackage(void); 10b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldFinalizePackage(void); 11b2b58855SToby Isaac 12b2b58855SToby Isaac PETSC_EXTERN PetscClassId DMFIELD_CLASSID; 13b2b58855SToby Isaac 14b2b58855SToby Isaac /*J 1516a05f60SBarry Smith DMFieldType - String with the name of a `DMField` implementation 16b2b58855SToby Isaac 17b2b58855SToby Isaac Level: intermediate 1887497f52SBarry Smith 19af27ebaaSBarry Smith .seealso: [](ch_dmbase), `DMField`, `DMFieldSetType()`, `DMFieldGetType()`, `DMFieldRegister()` 20b2b58855SToby Isaac J*/ 21b2b58855SToby Isaac typedef const char *DMFieldType; 22b2b58855SToby Isaac #define DMFIELDDA "da" 23b2b58855SToby Isaac #define DMFIELDDS "ds" 24b2b58855SToby Isaac #define DMFIELDSHELL "shell" 25b2b58855SToby Isaac 26b2b58855SToby Isaac PETSC_EXTERN PetscFunctionList DMFieldList; 27b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldSetType(DMField, DMFieldType); 28b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetType(DMField, DMFieldType *); 29b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldRegister(const char[], PetscErrorCode (*)(DMField)); 30b2b58855SToby Isaac 319371c9d4SSatish Balay typedef enum { 329371c9d4SSatish Balay DMFIELD_VERTEX, 339371c9d4SSatish Balay DMFIELD_EDGE, 349371c9d4SSatish Balay DMFIELD_FACET, 359371c9d4SSatish Balay DMFIELD_CELL 369371c9d4SSatish Balay } DMFieldContinuity; 37b2b58855SToby Isaac PETSC_EXTERN const char *const DMFieldContinuities[]; 38b2b58855SToby Isaac 39b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldDestroy(DMField *); 40b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldView(DMField, PetscViewer); 41b2b58855SToby Isaac 42b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetDM(DMField, DM *); 43b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetNumComponents(DMField, PetscInt *); 44b2b58855SToby Isaac 45b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldEvaluate(DMField, Vec, PetscDataType, void *, void *, void *); 46b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldEvaluateFE(DMField, IS, PetscQuadrature, PetscDataType, void *, void *, void *); 47b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldEvaluateFV(DMField, IS, PetscDataType, void *, void *, void *); 48ac9d17c7SMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMFieldCreateFEGeom(DMField, IS, PetscQuadrature, PetscFEGeomMode, PetscFEGeom **); 49b2b58855SToby Isaac 50b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateDefaultQuadrature(DMField, IS, PetscQuadrature *); 51989fa639SBrad Aagaard PETSC_EXTERN PetscErrorCode DMFieldCreateDefaultFaceQuadrature(DMField, IS, PetscQuadrature *); 52b2b58855SToby Isaac 53b7260050SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetDegree(DMField, IS, PetscInt *, PetscInt *); 54b2b58855SToby Isaac 55b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateDA(DM, PetscInt, const PetscScalar *, DMField *); 56b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateDS(DM, PetscInt, Vec, DMField *); 576858538eSMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMFieldCreateDSWithDG(DM, DM, PetscInt, Vec, Vec, DMField *); 58b2b58855SToby Isaac 59*2a8381b2SBarry Smith PETSC_EXTERN PetscErrorCode DMFieldCreateShell(DM, PetscInt, DMFieldContinuity, PetscCtx, DMField *); 60028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetDestroy(DMField, PetscErrorCode (*)(DMField)); 61*2a8381b2SBarry Smith PETSC_EXTERN PetscErrorCode DMFieldShellGetContext(DMField, PetscCtxRt); 62b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluate(DMField, PetscErrorCode (*)(DMField, Vec, PetscDataType, void *, void *, void *)); 63028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluateFE(DMField, PetscErrorCode (*)(DMField, IS, PetscQuadrature, PetscDataType, void *, void *, void *)); 64028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellEvaluateFEDefault(DMField, IS, PetscQuadrature, PetscDataType, void *, void *, void *); 65b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluateFV(DMField, PetscErrorCode (*)(DMField, IS, PetscDataType, void *, void *, void *)); 66028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellEvaluateFVDefault(DMField, IS, PetscDataType, void *, void *, void *); 67b7260050SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetGetDegree(DMField, PetscErrorCode (*)(DMField, IS, PetscInt *, PetscInt *)); 68028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetCreateDefaultQuadrature(DMField, PetscErrorCode (*)(DMField, IS, PetscQuadrature *)); 69