xref: /petsc/include/petscdmfield.h (revision af27ebaa0199971c43fd2e2e162251afd1bcda49)
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 
19*af27ebaaSBarry 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 *);
482bb1671aSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateFEGeom(DMField, IS, PetscQuadrature, PetscBool, PetscFEGeom **);
49b2b58855SToby Isaac 
50b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateDefaultQuadrature(DMField, IS, PetscQuadrature *);
51b2b58855SToby Isaac 
52b7260050SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldGetDegree(DMField, IS, PetscInt *, PetscInt *);
53b2b58855SToby Isaac 
54b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateDA(DM, PetscInt, const PetscScalar *, DMField *);
55b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateDS(DM, PetscInt, Vec, DMField *);
566858538eSMatthew G. Knepley PETSC_EXTERN PetscErrorCode DMFieldCreateDSWithDG(DM, DM, PetscInt, Vec, Vec, DMField *);
57b2b58855SToby Isaac 
58b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldCreateShell(DM, PetscInt, DMFieldContinuity, void *, DMField *);
59028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetDestroy(DMField, PetscErrorCode (*)(DMField));
60b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellGetContext(DMField, void *);
61b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluate(DMField, PetscErrorCode (*)(DMField, Vec, PetscDataType, void *, void *, void *));
62028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluateFE(DMField, PetscErrorCode (*)(DMField, IS, PetscQuadrature, PetscDataType, void *, void *, void *));
63028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellEvaluateFEDefault(DMField, IS, PetscQuadrature, PetscDataType, void *, void *, void *);
64b2b58855SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetEvaluateFV(DMField, PetscErrorCode (*)(DMField, IS, PetscDataType, void *, void *, void *));
65028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellEvaluateFVDefault(DMField, IS, PetscDataType, void *, void *, void *);
66b7260050SToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetGetDegree(DMField, PetscErrorCode (*)(DMField, IS, PetscInt *, PetscInt *));
67028944aaSToby Isaac PETSC_EXTERN PetscErrorCode DMFieldShellSetCreateDefaultQuadrature(DMField, PetscErrorCode (*)(DMField, IS, PetscQuadrature *));
68