Actual source code: petscfetypes.h
1: #if !defined(PETSCFETYPES_H)
2: #define PETSCFETYPES_H
4: /*S
5: PetscSpace - PETSc object that manages a linear space, e.g. the space of d-dimensional polynomials of given degree
7: Level: beginner
9: .seealso: PetscSpaceCreate(), PetscDualSpaceCreate(), PetscSpaceSetType(), PetscSpaceType
10: S*/
11: typedef struct _p_PetscSpace *PetscSpace;
13: /*S
14: 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
16: Level: beginner
18: .seealso: PetscDualSpaceCreate(), PetscSpaceCreate(), PetscDualSpaceSetType(), PetscDualSpaceType
19: S*/
20: typedef struct _p_PetscDualSpace *PetscDualSpace;
22: /*MC
23: PetscDualSpaceReferenceCell - The type of reference cell
25: Notes: This is used only for automatic creation of reference cells. A PetscDualSpace can accept an arbitary DM for a reference cell.
27: Level: beginner
29: .seealso: PetscSpace
30: M*/
31: typedef enum { PETSCDUALSPACE_REFCELL_SIMPLEX, PETSCDUALSPACE_REFCELL_TENSOR } PetscDualSpaceReferenceCell;
32: PETSC_EXTERN const char * const PetscDualSpaceReferenceCells[];
34: /*MC
35: PetscDualSpaceTransformType - The type of function transform
37: Notes: These transforms, and their inverses, are used to move functions and functionals between the reference element and real space. 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, so that it acts on real space, we use the pushforward transform $\sigma^*$. The pullback $\sigma_*$ is the inverse transform.
39: $ Covariant Piola: $\sigma^*(F) = J^{-T} F \circ \phi^{-1)$
40: $ Contravariant Piola: $\sigma^*(F) = 1/|J| J F \circ \phi^{-1)$
42: Note: For details, please see Rognes, Kirby, and Logg, Efficient Assembly of Hdiv and Hrot Conforming Finite Elements, SISC, 31(6), 4130-4151, arXiv 1205.3085, 2010
44: Level: beginner
46: .seealso: PetscDualSpaceGetDeRahm()
47: M*/
48: typedef enum {IDENTITY_TRANSFORM, COVARIANT_PIOLA_TRANSFORM, CONTRAVARIANT_PIOLA_TRANSFORM} PetscDualSpaceTransformType;
50: /*S
51: PetscFE - PETSc object that manages a finite element space, e.g. the P_1 Lagrange element
53: Level: beginner
55: .seealso: PetscFECreate(), PetscSpaceCreate(), PetscDualSpaceCreate(), PetscFESetType(), PetscFEType
56: S*/
57: typedef struct _p_PetscFE *PetscFE;
59: /*MC
60: PetscFEJacobianType - indicates which pointwise functions should be used to fill the Jacobian matrix
62: Level: beginner
64: .seealso: PetscFEIntegrateJacobian()
65: M*/
66: typedef enum { PETSCFE_JACOBIAN, PETSCFE_JACOBIAN_PRE, PETSCFE_JACOBIAN_DYN } PetscFEJacobianType;
68: #endif