1 #if !defined(PETSCDMFIELD_H) 2 #define PETSCDMFIELD_H 3 4 #include <petscdm.h> 5 #include <petscdt.h> 6 #include <petscfe.h> 7 8 /* SUBMANSEC = DM */ 9 10 PETSC_EXTERN PetscErrorCode DMFieldInitializePackage(void); 11 PETSC_EXTERN PetscErrorCode DMFieldFinalizePackage(void); 12 13 PETSC_EXTERN PetscClassId DMFIELD_CLASSID; 14 15 /*J 16 DMFieldType - String with the name of a `DMField` method 17 18 Level: intermediate 19 20 .seealso: `DMField`, `DMFieldSetType()`, `DMFieldGetType()`, `DMFieldRegister()` 21 J*/ 22 typedef const char *DMFieldType; 23 #define DMFIELDDA "da" 24 #define DMFIELDDS "ds" 25 #define DMFIELDSHELL "shell" 26 27 PETSC_EXTERN PetscFunctionList DMFieldList; 28 PETSC_EXTERN PetscErrorCode DMFieldSetType(DMField, DMFieldType); 29 PETSC_EXTERN PetscErrorCode DMFieldGetType(DMField, DMFieldType*); 30 PETSC_EXTERN PetscErrorCode DMFieldRegister(const char[],PetscErrorCode (*)(DMField)); 31 32 typedef enum {DMFIELD_VERTEX,DMFIELD_EDGE,DMFIELD_FACET,DMFIELD_CELL} DMFieldContinuity; 33 PETSC_EXTERN const char *const DMFieldContinuities[]; 34 35 PETSC_EXTERN PetscErrorCode DMFieldDestroy(DMField*); 36 PETSC_EXTERN PetscErrorCode DMFieldView(DMField,PetscViewer); 37 38 PETSC_EXTERN PetscErrorCode DMFieldGetDM(DMField,DM*); 39 PETSC_EXTERN PetscErrorCode DMFieldGetNumComponents(DMField,PetscInt*); 40 PETSC_EXTERN PetscErrorCode DMFieldGetContinuity(DMField,DMFieldContinuity*); 41 42 PETSC_EXTERN PetscErrorCode DMFieldEvaluate(DMField,Vec,PetscDataType,void*,void*,void*); 43 PETSC_EXTERN PetscErrorCode DMFieldEvaluateFE(DMField,IS,PetscQuadrature,PetscDataType,void*,void*,void*); 44 PETSC_EXTERN PetscErrorCode DMFieldEvaluateFV(DMField,IS,PetscDataType,void*,void*,void*); 45 PETSC_EXTERN PetscErrorCode DMFieldCreateFEGeom(DMField,IS,PetscQuadrature,PetscBool,PetscFEGeom **); 46 47 PETSC_EXTERN PetscErrorCode DMFieldCreateDefaultQuadrature(DMField,IS,PetscQuadrature*); 48 49 PETSC_EXTERN PetscErrorCode DMFieldGetDegree(DMField,IS,PetscInt *,PetscInt *); 50 51 PETSC_EXTERN PetscErrorCode DMFieldCreateDA(DM,PetscInt,const PetscScalar *,DMField *); 52 PETSC_EXTERN PetscErrorCode DMFieldCreateDS(DM,PetscInt,Vec,DMField *); 53 PETSC_EXTERN PetscErrorCode DMFieldCreateDSWithDG(DM,DM,PetscInt,Vec,Vec,DMField *); 54 55 PETSC_EXTERN PetscErrorCode DMFieldCreateShell(DM,PetscInt,DMFieldContinuity,void *,DMField *); 56 PETSC_EXTERN PetscErrorCode DMFieldShellSetDestroy(DMField,PetscErrorCode(*)(DMField)); 57 PETSC_EXTERN PetscErrorCode DMFieldShellGetContext(DMField,void *); 58 PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluate(DMField,PetscErrorCode(*)(DMField,Vec,PetscDataType,void*,void*,void*)); 59 PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluateFE(DMField,PetscErrorCode(*)(DMField,IS,PetscQuadrature,PetscDataType,void*,void*,void*)); 60 PETSC_EXTERN PetscErrorCode DMFieldShellEvaluateFEDefault(DMField,IS,PetscQuadrature,PetscDataType,void*,void*,void*); 61 PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluateFV(DMField,PetscErrorCode(*)(DMField,IS,PetscDataType,void*,void*,void*)); 62 PETSC_EXTERN PetscErrorCode DMFieldShellEvaluateFVDefault(DMField,IS,PetscDataType,void*,void*,void*); 63 PETSC_EXTERN PetscErrorCode DMFieldShellSetGetDegree(DMField,PetscErrorCode(*)(DMField,IS,PetscInt *,PetscInt *)); 64 PETSC_EXTERN PetscErrorCode DMFieldShellSetCreateDefaultQuadrature(DMField,PetscErrorCode(*)(DMField,IS,PetscQuadrature *)); 65 66 #endif 67