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.