126bd1501SBarry Smith #if !defined(PETSCDMFIELD_H) 226bd1501SBarry Smith #define PETSCDMFIELD_H 3*ac09b921SBarry Smith 4b2b58855SToby Isaac #include <petscdm.h> 5b2b58855SToby Isaac #include <petscdt.h> 6b2b58855SToby Isaac #include <petscfe.h> 7b2b58855SToby Isaac 8*ac09b921SBarry Smith /* SUBMANSEC = DM */ 9*ac09b921SBarry 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 16b2b58855SToby Isaac DMFieldType - String with the name of a DMField method 17b2b58855SToby Isaac 18b2b58855SToby Isaac Level: intermediate 19b2b58855SToby Isaac J*/ 20b2b58855SToby Isaac typedef const char *DMFieldType; 21b2b58855SToby Isaac #define DMFIELDDA "da" 22b2b58855SToby Isaac #define DMFIELDDS "ds" 23b2b58855SToby Isaac #define DMFIELDSHELL "shell" 24b2b58855SToby Isaac 25b2b58855SToby Isaac PETSC_EXTERN PetscFunctionList DMFieldList; 26b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldSetType(DMField, DMFieldType); 27b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetType(DMField, DMFieldType*); 28b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldRegister(const char[],PetscErrorCode (*)(DMField)); 29b2b58855SToby Isaac 30b2b58855SToby Isaac typedef enum {DMFIELD_VERTEX,DMFIELD_EDGE,DMFIELD_FACET,DMFIELD_CELL} DMFieldContinuity; 31b2b58855SToby Isaac PETSC_EXTERN const char *const DMFieldContinuities[]; 32b2b58855SToby Isaac 33b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldDestroy(DMField*); 34b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldView(DMField,PetscViewer); 35b2b58855SToby Isaac 36b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetDM(DMField,DM*); 37b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetNumComponents(DMField,PetscInt*); 38b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetContinuity(DMField,DMFieldContinuity*); 39b2b58855SToby Isaac 40b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldEvaluate(DMField,Vec,PetscDataType,void*,void*,void*); 41b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldEvaluateFE(DMField,IS,PetscQuadrature,PetscDataType,void*,void*,void*); 42b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldEvaluateFV(DMField,IS,PetscDataType,void*,void*,void*); 432bb1671aSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateFEGeom(DMField,IS,PetscQuadrature,PetscBool,PetscFEGeom **); 44b2b58855SToby Isaac 45b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateDefaultQuadrature(DMField,IS,PetscQuadrature*); 46b2b58855SToby Isaac 47b7260050SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetDegree(DMField,IS,PetscInt *,PetscInt *); 48b2b58855SToby Isaac 49b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateDA(DM,PetscInt,const PetscScalar *,DMField *); 50b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateDS(DM,PetscInt,Vec,DMField *); 51b2b58855SToby Isaac 52b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateShell(DM,PetscInt,DMFieldContinuity,void *,DMField *); 53028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetDestroy(DMField,PetscErrorCode(*)(DMField)); 54b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellGetContext(DMField,void *); 55b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluate(DMField,PetscErrorCode(*)(DMField,Vec,PetscDataType,void*,void*,void*)); 56028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluateFE(DMField,PetscErrorCode(*)(DMField,IS,PetscQuadrature,PetscDataType,void*,void*,void*)); 57028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellEvaluateFEDefault(DMField,IS,PetscQuadrature,PetscDataType,void*,void*,void*); 58b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluateFV(DMField,PetscErrorCode(*)(DMField,IS,PetscDataType,void*,void*,void*)); 59028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellEvaluateFVDefault(DMField,IS,PetscDataType,void*,void*,void*); 60b7260050SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetGetDegree(DMField,PetscErrorCode(*)(DMField,IS,PetscInt *,PetscInt *)); 61028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetCreateDefaultQuadrature(DMField,PetscErrorCode(*)(DMField,IS,PetscQuadrature *)); 62b2b58855SToby Isaac 63b2b58855SToby Isaac #endif 64