18template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
19 int Dim3,
int Dim4,
int Dim5,
char i,
char j,
char k,
char l,
char m,
25 template <
int Current_Dim0,
int Current_Dim1>
29 return iterA(N1, N2, Current_Dim0 - 1, Current_Dim1 - 1) *
30 iterB(Current_Dim0 - 1, Current_Dim1 - 1, N3, N4) +
34 template <
int Current_Dim1>
38 return iterA(N1, N2, 0, Current_Dim1 - 1) *
39 iterB(0, Current_Dim1 - 1, N3, N4) +
45 return iterA(N1, N2, 0, 0) *
iterB(0, 0, N3, N4);
55 const Tensor4_Expr<A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l> &
a,
60template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
61 int Dim3,
int Dim4,
int Dim5,
char i,
char j,
char k,
char l,
char m,
64operator*(
const Tensor4_Expr<A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l> &
a,
67 Tensor4_times_Tensor4_2345<
A,
B, T, U, Dim0, Dim1, Dim2, Dim3, Dim4, Dim5,
70 Dim5,
i,
j,
m,
n>(TensorExpr(
a, b));
75template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
76 int Dim3,
int Dim4,
int Dim5,
char i,
char j,
char k,
char l,
char m,
82 template <
int Current_Dim0,
int Current_Dim1>
86 return iterA(Current_Dim0 - 1, Current_Dim1 - 1, N1, N2) *
87 iterB(Current_Dim0 - 1, Current_Dim1 - 1, N3, N4) +
91 template <
int Current_Dim1>
95 return iterA(0, Current_Dim1 - 1, N1, N2) *
96 iterB(0, Current_Dim1 - 1, N3, N4) +
102 return iterA(0, 0, N1, N2) *
iterB(0, 0, N3, N4);
107 const int N4)
const {
112 const Tensor4_Expr<A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l> &
a,
117template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
118 int Dim3,
int Dim4,
int Dim5,
char i,
char j,
char k,
char l,
char m,
121operator*(
const Tensor4_Expr<A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l> &
a,
124 Tensor4_times_Tensor4_0145<
A,
B, T, U, Dim0, Dim1, Dim2, Dim3, Dim4, Dim5,
127 Dim5,
m,
n,
k,
l>(TensorExpr(
a, b));
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &, 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 Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &, const Number< Current_Dim1 > &) const
const Tensor4_Expr< A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > iterA
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
Tensor4_times_Tensor4_0145(const Tensor4_Expr< A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > &a, const Tensor4_Expr< B, U, Dim0, Dim1, Dim4, Dim5, i, j, m, n > &b)
const Tensor4_Expr< B, U, Dim0, Dim1, Dim4, Dim5, i, j, m, n > iterB
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, 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 Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &, const Number< 1 > &) const
Tensor4_times_Tensor4_2345(const Tensor4_Expr< A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > &a, const Tensor4_Expr< B, U, Dim2, Dim3, Dim4, Dim5, k, l, m, n > &b)
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
const Tensor4_Expr< A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > iterA
const Tensor4_Expr< B, U, Dim2, Dim3, Dim4, Dim5, k, l, m, n > iterB
FTensor::Index< 'i', SPACE_DIM > i
const double n
refractive index of diffusive medium
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
Tensors class implemented by Walter Landry.
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)
FTensor::Index< 'm', 3 > m