xref: /petsc/include/petscdmfield.h (revision ac09b9214d23ea9ad238aa607de9fa447fd4e91b)
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 J*/
20 typedef const char *DMFieldType;
21 #define DMFIELDDA    "da"
22 #define DMFIELDDS    "ds"
23 #define DMFIELDSHELL "shell"
24 
25 PETSC_EXTERN PetscFunctionList DMFieldList;
26 PETSC_EXTERN PetscErrorCode    DMFieldSetType(DMField, DMFieldType);
27 PETSC_EXTERN PetscErrorCode    DMFieldGetType(DMField, DMFieldType*);
28 PETSC_EXTERN PetscErrorCode    DMFieldRegister(const char[],PetscErrorCode (*)(DMField));
29 
30 typedef enum {DMFIELD_VERTEX,DMFIELD_EDGE,DMFIELD_FACET,DMFIELD_CELL} DMFieldContinuity;
31 PETSC_EXTERN const char *const DMFieldContinuities[];
32 
33 PETSC_EXTERN PetscErrorCode    DMFieldDestroy(DMField*);
34 PETSC_EXTERN PetscErrorCode    DMFieldView(DMField,PetscViewer);
35 
36 PETSC_EXTERN PetscErrorCode    DMFieldGetDM(DMField,DM*);
37 PETSC_EXTERN PetscErrorCode    DMFieldGetNumComponents(DMField,PetscInt*);
38 PETSC_EXTERN PetscErrorCode    DMFieldGetContinuity(DMField,DMFieldContinuity*);
39 
40 PETSC_EXTERN PetscErrorCode    DMFieldEvaluate(DMField,Vec,PetscDataType,void*,void*,void*);
41 PETSC_EXTERN PetscErrorCode    DMFieldEvaluateFE(DMField,IS,PetscQuadrature,PetscDataType,void*,void*,void*);
42 PETSC_EXTERN PetscErrorCode    DMFieldEvaluateFV(DMField,IS,PetscDataType,void*,void*,void*);
43 PETSC_EXTERN PetscErrorCode    DMFieldCreateFEGeom(DMField,IS,PetscQuadrature,PetscBool,PetscFEGeom **);
44 
45 PETSC_EXTERN PetscErrorCode    DMFieldCreateDefaultQuadrature(DMField,IS,PetscQuadrature*);
46 
47 PETSC_EXTERN PetscErrorCode    DMFieldGetDegree(DMField,IS,PetscInt *,PetscInt *);
48 
49 PETSC_EXTERN PetscErrorCode    DMFieldCreateDA(DM,PetscInt,const PetscScalar *,DMField *);
50 PETSC_EXTERN PetscErrorCode    DMFieldCreateDS(DM,PetscInt,Vec,DMField *);
51 
52 PETSC_EXTERN PetscErrorCode    DMFieldCreateShell(DM,PetscInt,DMFieldContinuity,void *,DMField *);
53 PETSC_EXTERN PetscErrorCode    DMFieldShellSetDestroy(DMField,PetscErrorCode(*)(DMField));
54 PETSC_EXTERN PetscErrorCode    DMFieldShellGetContext(DMField,void *);
55 PETSC_EXTERN PetscErrorCode    DMFieldShellSetEvaluate(DMField,PetscErrorCode(*)(DMField,Vec,PetscDataType,void*,void*,void*));
56 PETSC_EXTERN PetscErrorCode    DMFieldShellSetEvaluateFE(DMField,PetscErrorCode(*)(DMField,IS,PetscQuadrature,PetscDataType,void*,void*,void*));
57 PETSC_EXTERN PetscErrorCode    DMFieldShellEvaluateFEDefault(DMField,IS,PetscQuadrature,PetscDataType,void*,void*,void*);
58 PETSC_EXTERN PetscErrorCode    DMFieldShellSetEvaluateFV(DMField,PetscErrorCode(*)(DMField,IS,PetscDataType,void*,void*,void*));
59 PETSC_EXTERN PetscErrorCode    DMFieldShellEvaluateFVDefault(DMField,IS,PetscDataType,void*,void*,void*);
60 PETSC_EXTERN PetscErrorCode    DMFieldShellSetGetDegree(DMField,PetscErrorCode(*)(DMField,IS,PetscInt *,PetscInt *));
61 PETSC_EXTERN PetscErrorCode    DMFieldShellSetCreateDefaultQuadrature(DMField,PetscErrorCode(*)(DMField,IS,PetscQuadrature *));
62 
63 #endif
64