8#include <kernel/geometry/raw_refinement_templates.hpp>
9#include <kernel/geometry/refinement_types.hpp>
10#include <kernel/shape.hpp>
32 template<
typename Shape__>
62 template<
typename Shape_>
65 return std::is_same_v<Shape_, Shape::Quadrilateral> || std::is_same_v<Shape_, Shape::Hexahedron>;
78 template<
int template_dim_,
int child_dim_>
81 static_assert(template_dim_ <= 3);
82 static_assert(child_dim_ <= 3);
83 const constexpr std::array<std::array<int, 4>, 4> children = {{
89 return children[template_dim_][child_dim_];
100 if constexpr(dim_ == 1)
104 if constexpr(dim_ == 2)
108 if constexpr(dim_ == 3)
112 XABORTM(
"TwoRefinementRawData supplied no templates of dimension " +
stringify(dim_));
146 using V =
typename RawCellTemplate::VertexType;
#define XABORTM(msg)
Abortion macro definition with custom message.
static constexpr bool is_shape_compatible()
Shape compatability test.
static EdgeMap & raw_edges()
Returns the raw templates for edges of this template set.
static TemplateMapByDim< dim_ > & raw_templates()
Accessor for raw template maps.
static CellMap & raw_cells()
Returns the raw templates for cells of this template set.
TemplateMapByDim< 2 > FaceMap
Type of map from face refinement types to raw templates.
RawTemplate< Shape::Hypercube< 3 > > RawCellTemplate
Raw cell template type.
static FaceMap & raw_faces()
Returns the raw templates for faces of this template set.
RawTemplate< Shape::Hypercube< 1 > > RawEdgeTemplate
Raw edge template type.
TemplateMapByDim< 3 > CellMap
Type of map from cell refinement types to raw templates.
static constexpr int max_children()
Constexpr function for retrieving maximum number of children for any template of this template set.
RawTemplate< Shape::Hypercube< 2 > > RawFaceTemplate
Raw face template type.
TemplateMapByDim< 1 > EdgeMap
Type of map from edge refinement types to raw templates.
std::unordered_map< RefinementTypeByDim< dim_ >, RawTemplate< Shape::Hypercube< dim_ > > > TemplateMapByDim
Type of map from refinement type to raw templates.
String stringify(const T_ &item)
Converts an item into a String.
Hypercube shape tag struct template.