xref: /petsc/include/petscfetypes.h (revision bfe80ac4a46d58cb7760074b25f5e81b2f541d8a)
1 #pragma once
2 
3 /* MANSEC = DM */
4 /* SUBMANSEC = FE */
5 
6 /*S
7   PetscFE - PETSc object that manages a finite element space, e.g. the P_1 Lagrange element
8 
9   Level: beginner
10 
11 .seealso: `PetscFECreate()`, `PetscSpace`, `PetscDualSpace`, `PetscSpaceCreate()`, `PetscDualSpaceCreate()`, `PetscFESetType()`, `PetscFEType`
12 S*/
13 typedef struct _p_PetscFE *PetscFE;
14 
15 /*MC
16   PetscFEJacobianType - indicates which pointwise functions should be used to fill the Jacobian matrix
17 
18   Level: beginner
19 
20 .seealso: `PetscFEIntegrateJacobian()`
21 M*/
22 typedef enum {
23   PETSCFE_JACOBIAN,
24   PETSCFE_JACOBIAN_PRE,
25   PETSCFE_JACOBIAN_DYN
26 } PetscFEJacobianType;
27 
28 /*E
29   PetscFEGeomMode - Describes the type of geometry being encoded.
30 
31   Values:
32 + `PETSC_FEGEOM_BASIC`    - These are normal dim-cells, with dim == dE, and only bulk data is stored.
33 . `PETSC_FEGEOM_EMBEDDED` - These are dim-cells embedded in a higher dimension, as an embedded manifold, where dim < dE and only bulk data is stored.
34 . `PETSC_FEGEOM_BOUNDARY` - These are dim-cells on the boundary of a dE-mesh, so that dim < dE, and both bulk and s = 1 face data are stored.
35 - `PETSC_FEGEOM_COHESIVE` - These are dim-cells in the interior of a dE-mesh, so that dim < dE, and both bulk and s = 2 face data are stored.
36 
37   Level: beginner
38 
39   Note:
40   .vb
41   dim - The topological dimension and reference coordinate dimension
42   dE  - The real coordinate dimension
43   s   - The number of supporting cells for a face
44   .ve
45 
46 .seealso: [](ch_dmbase), `PetscFEGeom`, `DM`, `DMPLEX`, `PetscFEGeomCreate()`
47 E*/
48 typedef enum {
49   PETSC_FEGEOM_BASIC,
50   PETSC_FEGEOM_EMBEDDED,
51   PETSC_FEGEOM_BOUNDARY,
52   PETSC_FEGEOM_COHESIVE
53 } PetscFEGeomMode;
54