xref: /petsc/include/petscdmplextypes.h (revision 589a23caa660d2a5f330cc8d1ed213e9cfaf51a7)
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_BL           - Refine only tensor cells in the tensor direction, often used to refine boundary layers
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_BL} DMPlexCellRefinerType;
31 PETSC_EXTERN const char * const DMPlexCellRefinerTypes[];
32 
33 #endif
34