1 #if !defined(PETSCFETYPES_H) 2 #define PETSCFETYPES_H 3 4 /*S 5 PetscSpace - PETSc object that manages a linear space, e.g. the space of d-dimensional polynomials of given degree 6 7 Level: beginner 8 9 .seealso: PetscSpaceCreate(), PetscDualSpaceCreate(), PetscSpaceSetType(), PetscSpaceType 10 S*/ 11 typedef struct _p_PetscSpace *PetscSpace; 12 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 15 16 Level: beginner 17 18 .seealso: PetscDualSpaceCreate(), PetscSpaceCreate(), PetscDualSpaceSetType(), PetscDualSpaceType 19 S*/ 20 typedef struct _p_PetscDualSpace *PetscDualSpace; 21 22 /*MC 23 PetscDualSpaceReferenceCell - The type of reference cell 24 25 Notes: This is used only for automatic creation of reference cells. A PetscDualSpace can accept an arbitary DM for a reference cell. 26 27 Level: beginner 28 29 .seealso: PetscSpace 30 M*/ 31 typedef enum { PETSCDUALSPACE_REFCELL_SIMPLEX, PETSCDUALSPACE_REFCELL_TENSOR } PetscDualSpaceReferenceCell; 32 PETSC_EXTERN const char * const PetscDualSpaceReferenceCells[]; 33 34 /*MC 35 PetscDualSpaceTransformType - The type of function transform 36 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. 38 39 $ Covariant Piola: $\sigma^*(F) = J^{-T} F \circ \phi^{-1)$ 40 $ Contravariant Piola: $\sigma^*(F) = 1/|J| J F \circ \phi^{-1)$ 41 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 43 44 Level: beginner 45 46 .seealso: PetscDualSpaceGetDeRahm() 47 M*/ 48 typedef enum {IDENTITY_TRANSFORM, COVARIANT_PIOLA_TRANSFORM, CONTRAVARIANT_PIOLA_TRANSFORM} PetscDualSpaceTransformType; 49 50 /*S 51 PetscFE - PETSc object that manages a finite element space, e.g. the P_1 Lagrange element 52 53 Level: beginner 54 55 .seealso: PetscFECreate(), PetscSpaceCreate(), PetscDualSpaceCreate(), PetscFESetType(), PetscFEType 56 S*/ 57 typedef struct _p_PetscFE *PetscFE; 58 59 /*MC 60 PetscFEJacobianType - indicates which pointwise functions should be used to fill the Jacobian matrix 61 62 Level: beginner 63 64 .seealso: PetscFEIntegrateJacobian() 65 M*/ 66 typedef enum { PETSCFE_JACOBIAN, PETSCFE_JACOBIAN_PRE, PETSCFE_JACOBIAN_DYN } PetscFEJacobianType; 67 68 #endif 69