9#include <kernel/shape.hpp>
36 struct StandardRefinementTraits;
38 struct StandardRefinementTraits
41 typedef Shape_ ShapeType;
44 static constexpr int cell_dim = ShapeType::dimension;
47 static constexpr int face_dim = face_dim_;
50 static constexpr int count = ...;
59 template<
int face_dim_>
60 struct StandardRefinementTraits<Shape::Vertex, face_dim_>
63 static_assert(face_dim_ == 0,
"invalid face dimension");
66 typedef Shape::Vertex ShapeType;
69 static constexpr int cell_dim = ShapeType::dimension;
72 static constexpr int face_dim = face_dim_;
75 static constexpr int count = 1;
78 static inline String name()
80 return "StandardRefinementTraits<Vertex," +
stringify(face_dim_) +
">";
92 struct StandardRefinementTraits<Shape::Hypercube<cell_dim_>, face_dim_>
95 static_assert(face_dim_ >= 0,
"invalid face dimension");
96 static_assert(cell_dim_ >= face_dim_,
"invalid cell dimension");
99 typedef Shape::Hypercube<cell_dim_> ShapeType;
102 typedef typename Shape::FaceTraits<ShapeType, face_dim_>::ShapeType FaceType;
105 static constexpr int cell_dim = cell_dim_;
108 static constexpr int face_dim = face_dim_;
116 static constexpr int count = Shape::FaceTraits<ShapeType, cell_dim - face_dim>::count;
119 static inline String name()
121 return "StandardRefinementTraits<" + ShapeType::name() +
"," +
stringify(face_dim_) +
">";
132 struct StandardRefinementTraits<Shape::Simplex<1>, face_dim_>
135 static_assert(face_dim_ >= 0,
"invalid face dimension");
136 static_assert(1 >= face_dim_,
"invalid cell dimension");
139 typedef Shape::Simplex<1> ShapeType;
142 typedef typename Shape::FaceTraits<ShapeType, face_dim_>::ShapeType FaceType;
145 static constexpr int cell_dim = 1;
148 static constexpr int face_dim = face_dim_;
151 static constexpr int count = Shape::FaceTraits<ShapeType, cell_dim - face_dim>::count;
154 static inline String name()
156 return "StandardRefinementTraits<" + ShapeType::name() +
"," +
stringify(face_dim_) +
">";
166 struct StandardRefinementTraits<Shape::Simplex<2>, 0>
169 typedef Shape::Simplex<2> ShapeType;
172 static constexpr int cell_dim = 2;
175 static constexpr int face_dim = 0;
178 static constexpr int count = 0;
181 static inline String name()
183 return "StandardRefinementTraits<" + ShapeType::name() +
",0>";
193 struct StandardRefinementTraits<Shape::Simplex<2>, 1>
196 typedef Shape::Simplex<2> ShapeType;
199 static constexpr int cell_dim = 2;
202 static constexpr int face_dim = 1;
205 static constexpr int count = 3;
208 static inline String name()
210 return "StandardRefinementTraits<" + ShapeType::name() +
",1>";
220 struct StandardRefinementTraits<Shape::Simplex<2>, 2>
223 typedef Shape::Simplex<2> ShapeType;
226 static constexpr int cell_dim = 2;
229 static constexpr int face_dim = 2;
232 static constexpr int count = 4;
235 static inline String name()
237 return "StandardRefinementTraits<" + ShapeType::name() +
",2>";
247 struct StandardRefinementTraits<Shape::Simplex<3>, 0>
250 typedef Shape::Simplex<3> ShapeType;
253 static constexpr int cell_dim = 3;
256 static constexpr int face_dim = 0;
259 static constexpr int count = 1;
262 static inline String name()
264 return "StandardRefinementTraits<" + ShapeType::name() +
",0>";
274 struct StandardRefinementTraits<Shape::Simplex<3>, 1>
277 typedef Shape::Simplex<3> ShapeType;
280 static constexpr int cell_dim = 3;
283 static constexpr int face_dim = 1;
286 static constexpr int count = 6;
289 static inline String name()
291 return "StandardRefinementTraits<" + ShapeType::name() +
",1>";
301 struct StandardRefinementTraits<Shape::Simplex<3>, 2>
304 typedef Shape::Simplex<3> ShapeType;
307 static constexpr int cell_dim = 3;
310 static constexpr int face_dim = 2;
313 static constexpr int count = 16;
316 static inline String name()
318 return "StandardRefinementTraits<" + ShapeType::name() +
",2>";
328 struct StandardRefinementTraits<Shape::Simplex<3>, 3>
331 typedef Shape::Simplex<3> ShapeType;
334 static constexpr int cell_dim = 3;
337 static constexpr int face_dim = 3;
340 static constexpr int count = 12;
343 static inline String name()
345 return "StandardRefinementTraits<" + ShapeType::name() +
",3>";
String stringify(const T_ &item)
Converts an item into a String.