xref: /petsc/include/petscfetypes.h (revision 3596293dd4161d8a3c108d7d123e4946b1a63a18)
1dbe77d9eSMatthew G. Knepley #if !defined(_PETSCFETYPES_H)
2dbe77d9eSMatthew G. Knepley #define _PETSCFETYPES_H
3dbe77d9eSMatthew G. Knepley 
4dbe77d9eSMatthew G. Knepley /*S
5dbe77d9eSMatthew G. Knepley   PetscSpace - PETSc object that manages a linear space, e.g. the space of d-dimensional polynomials of given degree
6dbe77d9eSMatthew G. Knepley 
7dbe77d9eSMatthew G. Knepley   Level: intermediate
8dbe77d9eSMatthew G. Knepley 
9dbe77d9eSMatthew G. Knepley   Concepts: finite element
10dbe77d9eSMatthew G. Knepley 
11dbe77d9eSMatthew G. Knepley .seealso: PetscSpaceCreate(), PetscDualSpaceCreate(), PetscSpaceSetType(), PetscSpaceType
12dbe77d9eSMatthew G. Knepley S*/
13dbe77d9eSMatthew G. Knepley typedef struct _p_PetscSpace *PetscSpace;
14dbe77d9eSMatthew G. Knepley 
15*3596293dSMatthew G. Knepley /*MC
16*3596293dSMatthew G. Knepley   PetscSpacePolynomialType - The type of polynomial space
17*3596293dSMatthew G. Knepley 
18*3596293dSMatthew G. Knepley   Notes:
19*3596293dSMatthew G. Knepley $ PETSCSPACE_POLYNOMIALTYPE_P - This is the normal polynomial space of degree q, P_q or Q_q.
20*3596293dSMatthew G. Knepley $ PETSCSPACE_POLYNOMIALTYPE_PMINUS_HDIV - This is the smallest polynomial space contained in P_q/Q_q such that the divergence is in P_{q-1}/Q_{q-1}. Making this space is straightforward:
21*3596293dSMatthew G. Knepley $   P^-_q = P_{q-1} + P_{(q-1)} x
22*3596293dSMatthew G. Knepley $ where P_{(q-1)} is the space of homogeneous polynomials of degree q-1.
23*3596293dSMatthew G. Knepley $ PETSCSPACE_POLYNOMIALTYPE_PMINUS_HCURL - This is the smallest polynomial space contained in P_q/Q_q such that the curl is in P_{q-1}/Q_{q-1}. Making this space is straightforward:
24*3596293dSMatthew G. Knepley $   P^-_q = P_{q-1} + P_{(q-1)} rot x
25*3596293dSMatthew G. Knepley $ where P_{(q-1)} is the space of homogeneous polynomials of degree q-1, and rot x is (-y, x) in 2D, and (z - y, x - z, y - x) in 3D, being the generators of the rotation algebra.
26*3596293dSMatthew G. Knepley 
27*3596293dSMatthew G. Knepley   Level: intermediate
28*3596293dSMatthew G. Knepley 
29*3596293dSMatthew G. Knepley .seealso: PetscSpace
30*3596293dSMatthew G. Knepley M*/
31*3596293dSMatthew G. Knepley typedef enum { PETSCSPACE_POLYNOMIALTYPE_P, PETSCSPACE_POLYNOMIALTYPE_PMINUS_HDIV, PETSCSPACE_POLYNOMIALTYPE_PMINUS_HCURL } PetscSpacePolynomialType;
32*3596293dSMatthew G. Knepley PETSC_EXTERN const char * const PetscSpacePolynomialTypes[];
33*3596293dSMatthew G. Knepley 
34dbe77d9eSMatthew G. Knepley /*S
35dbe77d9eSMatthew G. Knepley   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
36dbe77d9eSMatthew G. Knepley 
37dbe77d9eSMatthew G. Knepley   Level: intermediate
38dbe77d9eSMatthew G. Knepley 
39dbe77d9eSMatthew G. Knepley   Concepts: finite element
40dbe77d9eSMatthew G. Knepley 
41dbe77d9eSMatthew G. Knepley .seealso: PetscDualSpaceCreate(), PetscSpaceCreate(), PetscDualSpaceSetType(), PetscDualSpaceType
42dbe77d9eSMatthew G. Knepley S*/
43dbe77d9eSMatthew G. Knepley typedef struct _p_PetscDualSpace *PetscDualSpace;
44dbe77d9eSMatthew G. Knepley 
45dbe77d9eSMatthew G. Knepley /*S
46dbe77d9eSMatthew G. Knepley   PetscFE - PETSc object that manages a finite element space, e.g. the P_1 Lagrange element
47dbe77d9eSMatthew G. Knepley 
48dbe77d9eSMatthew G. Knepley   Level: intermediate
49dbe77d9eSMatthew G. Knepley 
50dbe77d9eSMatthew G. Knepley   Concepts: finite element
51dbe77d9eSMatthew G. Knepley 
52dbe77d9eSMatthew G. Knepley .seealso: PetscFECreate(), PetscSpaceCreate(), PetscDualSpaceCreate(), PetscFESetType(), PetscFEType
53dbe77d9eSMatthew G. Knepley S*/
54dbe77d9eSMatthew G. Knepley typedef struct _p_PetscFE *PetscFE;
55dbe77d9eSMatthew G. Knepley 
56b7e05686SMatthew G. Knepley /*MC
579c3cf19fSMatthew G. Knepley   PetscFEJacobianType - indicates which pointwise functions should be used to fill the Jacobian matrix
58b7e05686SMatthew G. Knepley 
59b7e05686SMatthew G. Knepley   Level: intermediate
60b7e05686SMatthew G. Knepley 
61b7e05686SMatthew G. Knepley .seealso: PetscFEIntegrateJacobian()
62b7e05686SMatthew G. Knepley M*/
63b7e05686SMatthew G. Knepley typedef enum { PETSCFE_JACOBIAN, PETSCFE_JACOBIAN_PRE, PETSCFE_JACOBIAN_DYN } PetscFEJacobianType;
64b7e05686SMatthew G. Knepley 
65dbe77d9eSMatthew G. Knepley #endif
66