126bd1501SBarry Smith #if !defined(PETSCDMPLEXTYPES_H) 226bd1501SBarry Smith #define PETSCDMPLEXTYPES_H 386fe8405SMatthew G. Knepley 4412e9a14SMatthew G. Knepley /*S 5412e9a14SMatthew G. Knepley DMPlexCellRefiner - Object encapsulating the refinement strategy for a DMPlex 6412e9a14SMatthew G. Knepley 7412e9a14SMatthew G. Knepley Level: developer 8412e9a14SMatthew G. Knepley 9412e9a14SMatthew G. Knepley .seealso: DMPlexCellRefinerCreate(), DMType 10412e9a14SMatthew G. Knepley S*/ 11412e9a14SMatthew G. Knepley typedef struct _p_DMPlexCellRefiner *DMPlexCellRefiner; 12412e9a14SMatthew G. Knepley 13412e9a14SMatthew G. Knepley 1486fe8405SMatthew G. Knepley /*E 15412e9a14SMatthew G. Knepley DMPlexCellRefinerType - This describes the strategy used to refine cells. 1686fe8405SMatthew G. Knepley 1786fe8405SMatthew G. Knepley Level: beginner 1886fe8405SMatthew G. Knepley 19412e9a14SMatthew G. Knepley The strategy gives a prescription for refining each cell type. Existing strategies include 2096ca5757SLisandro Dalcin $ DM_REFINER_REGULAR - Divide cells into smaller cells of the same type 2196ca5757SLisandro Dalcin $ DM_REFINER_TO_BOX - Divide all cells into box cells 2296ca5757SLisandro Dalcin $ DM_REFINER_TO_SIMPLEX - Divide all cells into simplices 23cf4091a3SMatthew G. Knepley $ DM_REFINER_ALFELD2D - Alfeld barycentric refinement of triangles 24cf4091a3SMatthew G. Knepley $ DM_REFINER_ALFELD3D - Alfeld barycentric refinement of tetrahedra 25cf4091a3SMatthew G. Knepley $ DM_REFINER_POWELL_SABIN - Powell-Sabin barycentric refinement of simplices (unfinished) 26a5801f52SStefano Zampini $ DM_REFINER_BOUNDARYLAYER - Refine only tensor cells in the tensor direction, often used to refine boundary layers 273f2a96e3SMatthew G. Knepley $ DM_REFINER_SBR - Adaptively refine using the Skeleton-based Refinement algorithm of Plaza and Carey 2886fe8405SMatthew G. Knepley 29412e9a14SMatthew G. Knepley .seealso: DMPlexGetCellRefiner(), DMPlexSetCellRefiner(), DMRefine(), DMPolytopeType 3086fe8405SMatthew G. Knepley E*/ 313f2a96e3SMatthew G. Knepley 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; 32412e9a14SMatthew G. Knepley PETSC_EXTERN const char * const DMPlexCellRefinerTypes[]; 3386fe8405SMatthew G. Knepley 34*9318fe57SMatthew G. Knepley /*E 35*9318fe57SMatthew G. Knepley DMPlexShape - The domain shape used for automatic mesh creation. 36*9318fe57SMatthew G. Knepley 37*9318fe57SMatthew G. Knepley Existing shapes include 38*9318fe57SMatthew G. Knepley $ DM_SHAPE_BOX - The tensor product of intervals in dimension d 39*9318fe57SMatthew G. Knepley $ DM_SHAPE_BOX_SURFACE - The surface of a box in dimension d+1 40*9318fe57SMatthew G. Knepley $ DM_SHAPE_BALL - The d-dimensional ball 41*9318fe57SMatthew G. Knepley $ DM_SHAPE_SPHERE - The surface of the (d+1)-dimensional ball 42*9318fe57SMatthew G. Knepley $ DM_SHAPE_CYLINDER - The tensor product of the interval and disk 43*9318fe57SMatthew G. Knepley 44*9318fe57SMatthew G. Knepley Level: beginner 45*9318fe57SMatthew G. Knepley 46*9318fe57SMatthew G. Knepley .seealso: DMPlexGetCellRefiner(), DMPlexSetCellRefiner(), DMRefine(), DMPolytopeType 47*9318fe57SMatthew G. Knepley E*/ 48*9318fe57SMatthew G. Knepley typedef enum {DM_SHAPE_BOX, DM_SHAPE_BOX_SURFACE, DM_SHAPE_BALL, DM_SHAPE_SPHERE, DM_SHAPE_CYLINDER, DM_SHAPE_UNKNOWN} DMPlexShape; 49*9318fe57SMatthew G. Knepley PETSC_EXTERN const char * const DMPlexShapes[]; 50*9318fe57SMatthew G. Knepley 5186fe8405SMatthew G. Knepley #endif 52