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