8#include <kernel/shape.hpp> 
    9#include <kernel/util/math.hpp> 
   10#include <kernel/util/tiny_algebra.hpp> 
   26      template<
typename Shape_, 
int face_dim_>
 
   45        template<
typename DataType_, 
int sm_, 
int sn_, 
int sl_>
 
   46        static void compute(Tiny::Matrix<DataType_, m, n, sm_, sn_>& a, Tiny::Vector<DataType_, n, sl_>& b, 
int face);
 
   54      class FaceRefTrafo<Shape::Hypercube<2>, 1>
 
   57        template<
typename DataType_, 
int sm_, 
int sn_, 
int sl_>
 
   58        static void compute(Tiny::Matrix<DataType_, 2, 1, sm_, sn_>& a, Tiny::Vector<DataType_, 2, sl_>& b, 
int face)
 
   65            b(
Index(0)) =  DataType_(0);
 
   66            b(
Index(1)) = -DataType_(1);
 
   72            b(
Index(0)) =  DataType_(0);
 
   73            b(
Index(1)) = +DataType_(1);
 
   79            b(
Index(0)) = -DataType_(1);
 
   80            b(
Index(1)) =  DataType_(0);
 
   86            b(
Index(0)) = +DataType_(1);
 
   87            b(
Index(1)) =  DataType_(0);
 
   97      class FaceRefTrafo<Shape::Hypercube<3>, 1>
 
  100        template<
typename DataType_, 
int sm_, 
int sn_, 
int sl_>
 
  101        static void compute(Tiny::Matrix<DataType_, 3, 1, sm_, sn_>& a, Tiny::Vector<DataType_, 3, sl_>& b, 
int face)
 
  109            b(
Index(0)) =  DataType_(0);
 
  110            b(
Index(1)) = -DataType_(1);
 
  111            b(
Index(2)) = -DataType_(1);
 
  118            b(
Index(0)) =  DataType_(0);
 
  119            b(
Index(1)) =  DataType_(1);
 
  120            b(
Index(2)) = -DataType_(1);
 
  127            b(
Index(0)) =  DataType_(0);
 
  128            b(
Index(1)) = -DataType_(1);
 
  129            b(
Index(2)) =  DataType_(1);
 
  136            b(
Index(0)) =  DataType_(0);
 
  137            b(
Index(1)) =  DataType_(1);
 
  138            b(
Index(2)) =  DataType_(1);
 
  145            b(
Index(0)) = -DataType_(1);
 
  146            b(
Index(1)) =  DataType_(0);
 
  147            b(
Index(2)) = -DataType_(1);
 
  154            b(
Index(0)) =  DataType_(1);
 
  155            b(
Index(1)) =  DataType_(0);
 
  156            b(
Index(2)) = -DataType_(1);
 
  163            b(
Index(0)) = -DataType_(1);
 
  164            b(
Index(1)) =  DataType_(0);
 
  165            b(
Index(2)) =  DataType_(1);
 
  172            b(
Index(0)) =  DataType_(1);
 
  173            b(
Index(1)) =  DataType_(0);
 
  174            b(
Index(2)) =  DataType_(1);
 
  181            b(
Index(0)) = -DataType_(1);
 
  182            b(
Index(1)) = -DataType_(1);
 
  183            b(
Index(2)) =  DataType_(0);
 
  190            b(
Index(0)) =  DataType_(1);
 
  191            b(
Index(1)) = -DataType_(1);
 
  192            b(
Index(2)) =  DataType_(0);
 
  199            b(
Index(0)) = -DataType_(1);
 
  200            b(
Index(1)) =  DataType_(1);
 
  201            b(
Index(2)) =  DataType_(0);
 
  208            b(
Index(0)) =  DataType_(1);
 
  209            b(
Index(1)) =  DataType_(1);
 
  210            b(
Index(2)) =  DataType_(0);
 
  220      class FaceRefTrafo<Shape::Hypercube<3>, 2>
 
  223        template<
typename DataType_, 
int sm_, 
int sn_, 
int sl_>
 
  224        static void compute(Tiny::Matrix<DataType_, 3, 2, sm_, sn_>& a, Tiny::Vector<DataType_, 3, sl_>& b, 
int face)
 
  235            b(
Index(0)) =  DataType_(0);
 
  236            b(
Index(1)) =  DataType_(0);
 
  237            b(
Index(2)) = -DataType_(1);
 
  247            b(
Index(0)) =  DataType_(0);
 
  248            b(
Index(1)) =  DataType_(0);
 
  249            b(
Index(2)) =  DataType_(1);
 
  259            b(
Index(0)) =  DataType_(0);
 
  260            b(
Index(1)) = -DataType_(1);
 
  261            b(
Index(2)) =  DataType_(0);
 
  271            b(
Index(0)) =  DataType_(0);
 
  272            b(
Index(1)) =  DataType_(1);
 
  273            b(
Index(2)) =  DataType_(0);
 
  283            b(
Index(0)) = -DataType_(1);
 
  284            b(
Index(1)) =  DataType_(0);
 
  285            b(
Index(2)) =  DataType_(0);
 
  295            b(
Index(0)) =  DataType_(1);
 
  296            b(
Index(1)) =  DataType_(0);
 
  297            b(
Index(2)) =  DataType_(0);
 
  307      class FaceRefTrafo<Shape::Simplex<2>, 1>
 
  310        template<
typename DataType_, 
int sm_, 
int sn_, 
int sl_>
 
  311        static void compute(Tiny::Matrix<DataType_, 2, 1, sm_, sn_>& a, Tiny::Vector<DataType_, 2, sl_>& b, 
int face)
 
  318            b(
Index(0)) =  DataType_(1);
 
  319            b(
Index(1)) =  DataType_(0);
 
  325            b(
Index(0)) =  DataType_(0);
 
  326            b(
Index(1)) =  DataType_(1);
 
  332            b(
Index(0)) =  DataType_(0);
 
  333            b(
Index(1)) =  DataType_(0);
 
  343      class FaceRefTrafo<Shape::Simplex<3>, 1>
 
  346        template<
typename DataType_, 
int sm_, 
int sn_, 
int sl_>
 
  347        static void compute(Tiny::Matrix<DataType_, 3, 1, sm_, sn_>& a, Tiny::Vector<DataType_, 3, sl_>& b, 
int face)
 
  355            b(
Index(0)) =  DataType_(0);
 
  356            b(
Index(1)) =  DataType_(0);
 
  357            b(
Index(2)) =  DataType_(0);
 
  364            b(
Index(0)) =  DataType_(0);
 
  365            b(
Index(1)) =  DataType_(0);
 
  366            b(
Index(2)) =  DataType_(0);
 
  373            b(
Index(0)) =  DataType_(0);
 
  374            b(
Index(1)) =  DataType_(0);
 
  375            b(
Index(2)) =  DataType_(0);
 
  382            b(
Index(0)) =  DataType_(1);
 
  383            b(
Index(1)) =  DataType_(0);
 
  384            b(
Index(2)) =  DataType_(0);
 
  391            b(
Index(0)) =  DataType_(1);
 
  392            b(
Index(1)) =  DataType_(0);
 
  393            b(
Index(2)) =  DataType_(0);
 
  400            b(
Index(0)) =  DataType_(0);
 
  401            b(
Index(1)) =  DataType_(1);
 
  402            b(
Index(2)) =  DataType_(0);
 
  412      class FaceRefTrafo<Shape::Simplex<3>, 2>
 
  415        template<
typename DataType_, 
int sm_, 
int sn_, 
int sl_>
 
  416        static void compute(Tiny::Matrix<DataType_, 3, 2, sm_, sn_>& a, Tiny::Vector<DataType_, 3, sl_>& b, 
int face)
 
  427            b(
Index(0)) =  DataType_(1);
 
  428            b(
Index(1)) =  DataType_(0);
 
  429            b(
Index(2)) =  DataType_(0);
 
  439            b(
Index(0)) =  DataType_(0);
 
  440            b(
Index(1)) =  DataType_(0);
 
  441            b(
Index(2)) =  DataType_(0);
 
  451            b(
Index(0)) =  DataType_(0);
 
  452            b(
Index(1)) =  DataType_(0);
 
  453            b(
Index(2)) =  DataType_(0);
 
  463            b(
Index(0)) =  DataType_(0);
 
  464            b(
Index(1)) =  DataType_(0);
 
  465            b(
Index(2)) =  DataType_(0);
 
std::uint64_t Index
Index data type.