xref: /petsc/include/petscdmplextypes.h (revision 1e1ea65d8de51fde77ce8a787efbef25e407badc)
1 #if !defined(PETSCDMPLEXTYPES_H)
2 #define PETSCDMPLEXTYPES_H
3 
4 /*S
5   DMPlexCellRefiner - Object encapsulating the refinement strategy for a DMPlex
6 
7   Level: developer
8 
9 .seealso:  DMPlexCellRefinerCreate(), DMType
10 S*/
11 typedef struct _p_DMPlexCellRefiner *DMPlexCellRefiner;
12 
13 /*E
14   DMPlexCellRefinerType - This describes the strategy used to refine cells.
15 
16   Level: beginner
17 
18   The strategy gives a prescription for refining each cell type. Existing strategies include
19 $ DM_REFINER_REGULAR       - Divide cells into smaller cells of the same type
20 $ DM_REFINER_TO_BOX        - Divide all cells into box cells
21 $ DM_REFINER_TO_SIMPLEX    - Divide all cells into simplices
22 $ DM_REFINER_ALFELD2D      - Alfeld barycentric refinement of triangles
23 $ DM_REFINER_ALFELD3D      - Alfeld barycentric refinement of tetrahedra
24 $ DM_REFINER_POWELL_SABIN  - Powell-Sabin barycentric refinement of simplices (unfinished)
25 $ DM_REFINER_BOUNDARYLAYER - Refine only tensor cells in the tensor direction, often used to refine boundary layers
26 $ DM_REFINER_SBR           - Adaptively refine using the Skeleton-based Refinement algorithm of Plaza and Carey
27 
28 .seealso: DMPlexGetCellRefiner(), DMPlexSetCellRefiner(), DMRefine(), DMPolytopeType
29 E*/
30 typedef enum {DM_REFINER_REGULAR, DM_REFINER_TO_BOX, DM_REFINER_TO_SIMPLEX, DM_REFINER_ALFELD2D, DM_REFINER_ALFELD3D, DM_REFINER_POWELL_SABIN, DM_REFINER_BOUNDARYLAYER, DM_REFINER_SBR} DMPlexCellRefinerType;
31 PETSC_EXTERN const char * const DMPlexCellRefinerTypes[];
32 
33 /*E
34   DMPlexShape - The domain shape used for automatic mesh creation.
35 
36   Existing shapes include
37 $ DM_SHAPE_BOX         - The tensor product of intervals in dimension d
38 $ DM_SHAPE_BOX_SURFACE - The surface of a box in dimension d+1
39 $ DM_SHAPE_BALL        - The d-dimensional ball
40 $ DM_SHAPE_SPHERE      - The surface of the (d+1)-dimensional ball
41 $ DM_SHAPE_CYLINDER    - The tensor product of the interval and disk
42 
43   Level: beginner
44 
45 .seealso: DMPlexGetCellRefiner(), DMPlexSetCellRefiner(), DMRefine(), DMPolytopeType
46 E*/
47 typedef enum {DM_SHAPE_BOX, DM_SHAPE_BOX_SURFACE, DM_SHAPE_BALL, DM_SHAPE_SPHERE, DM_SHAPE_CYLINDER, DM_SHAPE_UNKNOWN} DMPlexShape;
48 PETSC_EXTERN const char * const DMPlexShapes[];
49 
50 #endif
51