xref: /petsc/include/petscfetypes.h (revision e5afcf2835ad2df3c79a70d4d9a0fbb86e97247e) !
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: intermediate
8 
9   Concepts: finite element
10 
11 .seealso: PetscSpaceCreate(), PetscDualSpaceCreate(), PetscSpaceSetType(), PetscSpaceType
12 S*/
13 typedef struct _p_PetscSpace *PetscSpace;
14 
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
17 
18   Level: intermediate
19 
20   Concepts: finite element
21 
22 .seealso: PetscDualSpaceCreate(), PetscSpaceCreate(), PetscDualSpaceSetType(), PetscDualSpaceType
23 S*/
24 typedef struct _p_PetscDualSpace *PetscDualSpace;
25 
26 /*MC
27   PetscDualSpaceReferenceCell - The type of reference cell
28 
29   Notes: This is used only for automatic creation of reference cells. A PetscDualSpace can accept an arbitary DM for a reference cell.
30 
31   Level: intermediate
32 
33 .seealso: PetscSpace
34 M*/
35 typedef enum { PETSCDUALSPACE_REFCELL_SIMPLEX, PETSCDUALSPACE_REFCELL_TENSOR } PetscDualSpaceReferenceCell;
36 PETSC_EXTERN const char * const PetscDualSpaceReferenceCells[];
37 
38 /*S
39   PetscFE - PETSc object that manages a finite element space, e.g. the P_1 Lagrange element
40 
41   Level: intermediate
42 
43   Concepts: finite element
44 
45 .seealso: PetscFECreate(), PetscSpaceCreate(), PetscDualSpaceCreate(), PetscFESetType(), PetscFEType
46 S*/
47 typedef struct _p_PetscFE *PetscFE;
48 
49 /*MC
50   PetscFEJacobianType - indicates which pointwise functions should be used to fill the Jacobian matrix
51 
52   Level: intermediate
53 
54 .seealso: PetscFEIntegrateJacobian()
55 M*/
56 typedef enum { PETSCFE_JACOBIAN, PETSCFE_JACOBIAN_PRE, PETSCFE_JACOBIAN_DYN } PetscFEJacobianType;
57 
58 #endif
59