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