xref: /petsc/include/petscdmfield.h (revision 9371c9d470a9602b6d10a8bf50c9b2280a79e45a)
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