xref: /petsc/include/petscdmplextypes.h (revision cd1c4666a9c7786acffe2dfe971f76ff95fb06a8)
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 
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} DMPlexCellRefinerType;
31 PETSC_EXTERN const char * const DMPlexCellRefinerTypes[];
32 
33 #endif
34