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.