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