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