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