Actual source code: petscfetypes.h
1: #ifndef PETSCFETYPES_H
2: #define PETSCFETYPES_H
4: /* SUBMANSEC = FE */
6: /*S
7: PetscSpace - PETSc object that manages a linear space, e.g. the space of d-dimensional polynomials of given degree
9: Level: beginner
11: .seealso: `PetscSpaceCreate()`, `PetscDualSpaceCreate()`, `PetscSpaceSetType()`, `PetscSpaceType`
12: S*/
13: typedef struct _p_PetscSpace *PetscSpace;
15: /*S
16: PetscDualSpace - PETSc object that manages the dual space to a linear space, e.g. the space of evaluation functionals at the vertices of a triangle
18: Level: beginner
20: .seealso: `PetscDualSpaceCreate()`, `PetscSpaceCreate()`, `PetscDualSpaceSetType()`, `PetscDualSpaceType`
21: S*/
22: typedef struct _p_PetscDualSpace *PetscDualSpace;
24: /*MC
25: PetscDualSpaceReferenceCell - The type of reference cell
27: Notes: This is used only for automatic creation of reference cells. A `PetscDualSpace` can accept an arbitrary `DM` for a reference cell.
29: Level: beginner
31: .seealso: `PetscSpace`
32: M*/
33: typedef enum {
34: PETSCDUALSPACE_REFCELL_SIMPLEX,
35: PETSCDUALSPACE_REFCELL_TENSOR
36: } PetscDualSpaceReferenceCell;
37: PETSC_EXTERN const char *const PetscDualSpaceReferenceCells[];
39: /*MC
40: PetscDualSpaceTransformType - The type of function transform
42: Notes:
43: These transforms, and their inverses, are used to move functions and functionals between the reference element and real space.
44: Suppose that we have a mapping $\phi$ which maps the reference cell to real space, and its Jacobian $J$. If we want to transform function $F$ on the reference element,
45: so that it acts on real space, we use the pushforward transform $\sigma^*$. The pullback $\sigma_*$ is the inverse transform.
47: $ Covariant Piola: $\sigma^*(F) = J^{-T} F \circ \phi^{-1)$
48: $ Contravariant Piola: $\sigma^*(F) = 1/|J| J F \circ \phi^{-1)$
50: References:
51: . Rognes, Kirby, and Logg, Efficient Assembly of Hdiv and Hrot Conforming Finite Elements, SISC, 31(6), 4130-4151, arXiv 1205.3085, 2010
53: Level: beginner
55: .seealso: `PetscDualSpaceGetDeRahm()`
56: M*/
57: typedef enum {
58: IDENTITY_TRANSFORM,
59: COVARIANT_PIOLA_TRANSFORM,
60: CONTRAVARIANT_PIOLA_TRANSFORM
61: } PetscDualSpaceTransformType;
63: /*S
64: PetscFE - PETSc object that manages a finite element space, e.g. the P_1 Lagrange element
66: Level: beginner
68: .seealso: `PetscFECreate()`, `PetscSpaceCreate()`, `PetscDualSpaceCreate()`, `PetscFESetType()`, `PetscFEType`
69: S*/
70: typedef struct _p_PetscFE *PetscFE;
72: /*MC
73: PetscFEJacobianType - indicates which pointwise functions should be used to fill the Jacobian matrix
75: Level: beginner
77: .seealso: `PetscFEIntegrateJacobian()`
78: M*/
79: typedef enum {
80: PETSCFE_JACOBIAN,
81: PETSCFE_JACOBIAN_PRE,
82: PETSCFE_JACOBIAN_DYN
83: } PetscFEJacobianType;
85: #endif