|
| v0.14.0
|
Go to the documentation of this file.
11 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
12 char j,
char k,
char l>
18 template <
int Current_Dim0,
int Current_Dim1>
23 return iterA(N1, N2, Current_Dim0 - 1, Current_Dim1 - 1)
24 *
iterB(Current_Dim0 - 1, Current_Dim1 - 1)
28 template <
int Current_Dim1>
33 return iterA(N1, N2, 0, Current_Dim1 - 1) *
iterB(0, Current_Dim1 - 1)
53 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
54 char j,
char k,
char l>
55 Tensor2_symmetric_Expr<
56 Ddg_times_Tensor2_23<A, B, T, U, Dim01, Dim23, i, j, k, l>,
64 i,
j>(TensorExpr(
a, b));
69 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
70 char j,
char k,
char l>
71 Tensor2_symmetric_Expr<
72 Ddg_times_Tensor2_23<A, B, T, U, Dim01, Dim23, i, j, k, l>,
80 i,
j>(TensorExpr(
a, b));
85 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
86 char j,
char k,
char l>
92 template <
int Current_Dim0,
int Current_Dim1>
97 return iterA(N1, N2, Current_Dim0 - 1, Current_Dim1 - 1)
98 *
iterB(Current_Dim0 - 1, Current_Dim1 - 1)
102 template <
int Current_Dim1>
107 return iterA(N1, N2, 0, Current_Dim1 - 1) *
iterB(0, Current_Dim1 - 1)
127 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
128 char j,
char k,
char l>
129 Tensor2_symmetric_Expr<
130 Ddg_times_Tensor2_32<A, B, T, U, Dim01, Dim23, i, j, k, l>,
138 i,
j>(TensorExpr(
a, b));
143 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
144 char j,
char k,
char l>
145 Tensor2_symmetric_Expr<
146 Ddg_times_Tensor2_32<A, B, T, U, Dim01, Dim23, i, j, k, l>,
154 i,
j>(TensorExpr(
a, b));
159 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
160 char j,
char k,
char l>
165 template <
int Current_Dim0,
int Current_Dim1>
169 return iterA(Current_Dim0 - 1, Current_Dim1 - 1, N1, N2) *
170 iterB(Current_Dim0 - 1, Current_Dim1 - 1) +
173 template <
int Current_Dim1>
177 return iterA(0, Current_Dim1 - 1, N1, N2) *
iterB(0, Current_Dim1 - 1) +
194 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
195 char j,
char k,
char l>
196 Tensor2_symmetric_Expr<
197 Ddg_times_Tensor2_01<A, B, T, U, Dim01, Dim23, i, j, k, l>,
204 k,
l>(TensorExpr(
a, b));
209 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
210 char j,
char k,
char l>
211 Tensor2_symmetric_Expr<
212 Ddg_times_Tensor2_01<A, B, T, U, Dim01, Dim23, i, j, k, l>,
219 k,
l>(TensorExpr(
a, b));
224 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
225 char j,
char k,
char l>
226 Tensor2_symmetric_Expr<
227 Ddg_times_Tensor2_01<A, B, T, U, Dim01, Dim23, i, j, k, l>,
234 k,
l>(TensorExpr(
a, b));
239 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
240 char j,
char k,
char l>
241 Tensor2_symmetric_Expr<
242 Ddg_times_Tensor2_01<A, B, T, U, Dim01, Dim23, i, j, k, l>,
249 k,
l>(TensorExpr(
a, b));
256 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
257 char j,
char k,
char l>
263 template <
int Current_Dim0,
int Current_Dim1>
268 return iterA(N1, Current_Dim0 - 1, N2, Current_Dim1 - 1) *
269 iterB(Current_Dim0 - 1, Current_Dim1 - 1) +
272 template <
int Current_Dim1>
277 return iterA(N1, 0, N2, Current_Dim1 - 1) *
iterB(0, Current_Dim1 - 1) +
297 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
298 char j,
char k,
char l>
300 Ddg_times_Tensor2_13<A, B, T, U, Dim01, Dim23, i, j, k, l>,
308 k>(TensorExpr(
a, b));
313 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
char i,
314 char j,
char k,
char l>
315 Tensor2_Expr<Ddg_times_Tensor2_13<A, B, T, U, Dim01, Dim23, i, j, k, l>,
322 k>(TensorExpr(
a, b));
336 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim4,
337 char i,
char j,
char k,
char l,
char m>
343 template <
int Current_Dim0>
345 eval(
const int N1,
const int N2,
const int N3,
const int N4,
348 return iterA(N1, N2, N3, Current_Dim0 - 1) *
iterB(Current_Dim0 - 1, N4)
363 operator()(
const int N1,
const int N2,
const int N3,
const int N4)
const
369 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim4,
370 char i,
char j,
char k,
char l,
char m>
371 inline const Tensor4_Expr<
372 const Ddg_times_Tensor2_3_1<A, B, T, U, Dim01, Dim23, Dim4, i, j, k, l, m>,
381 Dim23, Dim4,
i,
j,
k,
m>(TensorExpr(
a, b));
386 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim4,
387 char i,
char j,
char k,
char l,
char m>
388 inline const Tensor4_Expr<
389 const Ddg_times_Tensor2_3_1<A, B, T, U, Dim01, Dim23, Dim4, i, j, k, l, m>,
398 Dim23, Dim4,
i,
j,
k,
m>(TensorExpr(
a, b));
403 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim4,
404 char i,
char j,
char k,
char l,
char m>
410 template <
int Current_Dim0>
412 eval(
const int N1,
const int N2,
const int N3,
const int N4,
415 return iterA(N1, N2, N3, Current_Dim0 - 1) *
iterB(N4, Current_Dim0 - 1)
430 operator()(
const int N1,
const int N2,
const int N3,
const int N4)
const
436 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim4,
437 char i,
char j,
char k,
char l,
char m>
438 inline const Tensor4_Expr<
439 const Ddg_times_Tensor2_3_0<A, B, T, U, Dim01, Dim23, Dim4, i, j, k, l, m>,
448 Dim23, Dim4,
i,
j,
k,
m>(TensorExpr(
a, b));
453 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim4,
454 char i,
char j,
char k,
char l,
char m>
455 inline const Tensor4_Expr<
456 const Ddg_times_Tensor2_3_0<A, B, T, U, Dim01, Dim23, Dim4, i, j, k, l, m>,
465 Dim23, Dim4,
i,
j,
k,
m>(TensorExpr(
a, b));
470 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim4,
471 char i,
char j,
char k,
char l,
char m>
477 template <
int Current_Dim0>
479 eval(
const int N1,
const int N2,
const int N3,
const int N4,
482 return iterA(N1, N2, Current_Dim0 - 1, N4) *
iterB(N3, Current_Dim0 - 1)
497 operator()(
const int N1,
const int N2,
const int N3,
const int N4)
const
503 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim4,
504 char i,
char j,
char k,
char l,
char m>
505 inline const Tensor4_Expr<
506 const Ddg_times_Tensor2_2_0<A, B, T, U, Dim01, Dim23, Dim4, i, j, k, l, m>,
515 Dim23, Dim4,
i,
j,
m,
l>(TensorExpr(
a, b));
520 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim4,
521 char i,
char j,
char k,
char l,
char m>
522 inline const Tensor4_Expr<
523 const Ddg_times_Tensor2_2_0<A, B, T, U, Dim01, Dim23, Dim4, i, j, k, l, m>,
532 Dim23, Dim4,
i,
j,
m,
l>(TensorExpr(
a, b));
537 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim4,
538 char i,
char j,
char k,
char l,
char m>
544 template <
int Current_Dim0>
546 eval(
const int N1,
const int N2,
const int N3,
const int N4,
549 return iterA(N1, N2, Current_Dim0 - 1, N4) *
iterB(Current_Dim0 - 1, N3)
564 operator()(
const int N1,
const int N2,
const int N3,
const int N4)
const
570 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim4,
571 char i,
char j,
char k,
char l,
char m>
572 inline const Tensor4_Expr<
573 const Ddg_times_Tensor2_2_1<A, B, T, U, Dim01, Dim23, Dim4, i, j, k, l, m>,
582 Dim23, Dim4,
i,
j,
m,
l>(TensorExpr(
a, b));
587 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim4,
588 char i,
char j,
char k,
char l,
char m>
589 inline const Tensor4_Expr<
590 const Ddg_times_Tensor2_2_1<A, B, T, U, Dim01, Dim23, Dim4, i, j, k, l, m>,
599 Dim23, Dim4,
i,
j,
m,
l>(TensorExpr(
a, b));
604 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim2,
605 char i,
char j,
char k,
char l,
char m>
611 template <
int Current_Dim0>
613 eval(
const int N1,
const int N2,
const int N3,
const int N4,
616 return iterA(N1, Current_Dim0 - 1, N3, N4) *
iterB(Current_Dim0 - 1, N2)
631 operator()(
const int N1,
const int N2,
const int N3,
const int N4)
const
637 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim2,
638 char i,
char j,
char k,
char l,
char m>
639 inline const Tensor4_Expr<
640 const Ddg_times_Tensor2_1_0<A, B, T, U, Dim01, Dim23, Dim2, i, j, k, l, m>,
649 Dim23, Dim2,
i,
m,
k,
l>(TensorExpr(
a, b));
654 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim2,
655 char i,
char j,
char k,
char l,
char m>
656 inline const Tensor4_Expr<
657 const Ddg_times_Tensor2_1_0<A, B, T, U, Dim01, Dim23, Dim2, i, j, k, l, m>,
666 Dim23, Dim2,
i,
m,
k,
l>(TensorExpr(
a, b));
671 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim2,
672 char i,
char j,
char k,
char l,
char m>
678 template <
int Current_Dim0>
680 eval(
const int N1,
const int N2,
const int N3,
const int N4,
683 return iterA(N1, Current_Dim0 - 1, N3, N4) *
iterB(N2, Current_Dim0 - 1)
698 operator()(
const int N1,
const int N2,
const int N3,
const int N4)
const
704 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim2,
705 char i,
char j,
char k,
char l,
char m>
706 inline const Tensor4_Expr<
707 const Ddg_times_Tensor2_1_1<A, B, T, U, Dim01, Dim23, Dim2, i, j, k, l, m>,
716 Dim23, Dim23,
i,
m,
k,
l>(TensorExpr(
a, b));
721 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim2,
722 char i,
char j,
char k,
char l,
char m>
723 inline const Tensor4_Expr<
724 const Ddg_times_Tensor2_1_1<A, B, T, U, Dim01, Dim23, Dim2, i, j, k, l, m>,
733 Dim23, Dim2,
i,
m,
k,
l>(TensorExpr(
a, b));
738 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim1,
739 char i,
char j,
char k,
char l,
char m>
745 template <
int Current_Dim0>
747 eval(
const int N1,
const int N2,
const int N3,
const int N4,
750 return iterA(Current_Dim0 - 1, N2, N3, N4) *
iterB(Current_Dim0 - 1, N1)
765 operator()(
const int N1,
const int N2,
const int N3,
const int N4)
const
771 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim1,
772 char i,
char j,
char k,
char l,
char m>
773 inline const Tensor4_Expr<
774 const Ddg_times_Tensor2_0_0<A, B, T, U, Dim01, Dim23, Dim1, i, j, k, l, m>,
783 Dim23, Dim23,
m,
j,
k,
l>(TensorExpr(
a, b));
788 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim1,
789 char i,
char j,
char k,
char l,
char m>
790 inline const Tensor4_Expr<
791 const Ddg_times_Tensor2_0_0<A, B, T, U, Dim01, Dim23, Dim1, i, j, k, l, m>,
800 Dim23, Dim23,
m,
j,
k,
l>(TensorExpr(
a, b));
805 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim1,
806 char i,
char j,
char k,
char l,
char m>
812 template <
int Current_Dim0>
814 eval(
const int N1,
const int N2,
const int N3,
const int N4,
817 return iterA(Current_Dim0 - 1, N2, N3, N4) *
iterB(N1, Current_Dim0 - 1)
832 operator()(
const int N1,
const int N2,
const int N3,
const int N4)
const
838 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim1,
839 char i,
char j,
char k,
char l,
char m>
840 inline const Tensor4_Expr<
841 const Ddg_times_Tensor2_0_1<A, B, T, U, Dim01, Dim23, Dim1, i, j, k, l, m>,
850 Dim23, Dim1,
m,
j,
k,
l>(TensorExpr(
a, b));
855 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim1,
856 char i,
char j,
char k,
char l,
char m>
857 inline const Tensor4_Expr<
858 const Ddg_times_Tensor2_0_1<A, B, T, U, Dim01, Dim23, Dim1, i, j, k, l, m>,
867 Dim23, Dim23,
m,
j,
k,
l>(TensorExpr(
a, b));
Ddg_times_Tensor2_2_1(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_Expr< B, U, Dim4, Dim23, k, m > &b)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< Current_Dim0 > &) const
Ddg_times_Tensor2_23(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_Expr< B, U, Dim23, Dim23, k, l > &b)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &) const
promote< T, U >::V operator*(const Ddg_Expr< A, T, Dim, Dim, i, j, k, l > &a, const Ddg_Expr< B, U, Dim, Dim, i, k, j, l > &b)
Ddg_times_Tensor2_2_0(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_Expr< B, U, Dim4, Dim23, m, k > &b)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< 1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Tensor2_Expr< B, U, Dim01, Dim01, i, j > iterB
const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > iterA
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
const Tensor2_Expr< B, U, Dim4, Dim23, m, k > iterB
Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > iterA
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< 1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > iterA
const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > iterA
promote< T, U >::V eval(const int N1, const int N2, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< Current_Dim1 > &) const
Ddg_times_Tensor2_0_1(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_Expr< B, U, Dim01, Dim1, m, i > &b)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &) const
Tensor2_Expr< B, U, Dim01, Dim23, j, l > iterB
const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > iterA
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< Current_Dim0 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< Current_Dim0 > &) const
const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > iterA
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &) const
const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > iterA
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< Current_Dim0 > &) const
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< 1 > &) const
Ddg_times_Tensor2_3_1(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_Expr< B, U, Dim23, Dim4, l, m > &b)
Ddg_times_Tensor2_1_1(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_Expr< B, U, Dim01, Dim2, m, j > &b)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< Current_Dim0 > &) const
const Tensor2_Expr< B, U, Dim01, Dim2, m, j > iterB
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &) const
Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > iterA
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &) const
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
promote< T, U >::V eval(const int N1, const int N2, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Ddg_times_Tensor2_32(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_Expr< B, U, Dim23, Dim23, l, k > &b)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &) const
promote< T, U >::V operator()(const int N1, const int N2) const
const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > iterA
FTensor::Index< 'i', SPACE_DIM > i
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< Current_Dim0 > &) const
Ddg_times_Tensor2_1_0(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_Expr< B, U, Dim01, Dim2, j, m > &b)
Ddg_times_Tensor2_13(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_Expr< B, U, Dim01, Dim23, j, l > &b)
const Tensor2_Expr< B, U, Dim01, Dim1, m, i > iterB
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< Current_Dim1 > &) const
Ddg_times_Tensor2_0_0(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_Expr< B, U, Dim01, Dim1, i, m > &b)
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
const Tensor2_Expr< B, U, Dim4, Dim23, m, l > iterB
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > iterA
FTensor::Index< 'j', 3 > j
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
promote< T, U >::V operator()(const int N1, const int N2) const
promote< T, U >::V operator()(const int N1, const int N2) const
Tensor2_Expr< B, U, Dim23, Dim23, k, l > iterB
const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > iterA
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< Current_Dim0 > &) const
Tensor2_Expr< B, U, Dim23, Dim23, l, k > iterB
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< 1 > &) const
FTensor::Index< 'm', 3 > m
const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > iterA
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< Current_Dim0 > &) const
const Tensor2_Expr< B, U, Dim01, Dim1, i, m > iterB
const Tensor2_Expr< B, U, Dim01, Dim2, j, m > iterB
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< Current_Dim1 > &) const
FTensor::Index< 'k', 3 > k
Ddg_times_Tensor2_01(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_Expr< B, U, Dim01, Dim01, i, j > &b)
const Tensor2_Expr< B, U, Dim23, Dim4, l, m > iterB
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
const Tensor2_Expr< B, U, Dim4, Dim23, k, m > iterB
promote< T, U >::V operator()(const int N1, const int N2) const
FTensor::Index< 'l', 3 > l
Ddg_times_Tensor2_3_0(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_Expr< B, U, Dim4, Dim23, m, l > &b)