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 27*3f2a96e3SMatthew 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*/ 31*3f2a96e3SMatthew 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 3486fe8405SMatthew G. Knepley #endif 35