11template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim23, 
int Dim2,
 
   12          int Dim3, 
char i, 
char j, 
char k, 
char l, 
char m, 
char n>
 
   17  template <
int Current_Dim0, 
int Current_Dim1>
 
   19  eval(
const int N1, 
const int N2, 
const int N3, 
const int N4,
 
   21    return iterA(N1, N2, Current_Dim0 - 1, Current_Dim1 - 1) *
 
   22               iterB(Current_Dim0 - 1, Current_Dim1 - 1, N3, N4) +
 
 
   26  template <
int Current_Dim1>
 
   28  eval(
const int N1, 
const int N2, 
const int N3, 
const int N4,
 
   30    return iterA(N1, N2, 0, Current_Dim1 - 1) *
 
   31               iterB(0, Current_Dim1 - 1, N3, N4) +
 
 
   35                                        const int N3, 
const int N4,
 
   38    return iterA(N1, N2, 0, 0) * 
iterB(0, 0, N3, N4);
 
 
 
   52template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim23, 
int Dim2,
 
   53          int Dim3, 
char i, 
char j, 
char k, 
char l, 
char m, 
char n>
 
   54Tensor4_Expr<Ddg_times_Tensor4_2301_ijkl<
A, 
B, T, U, Dim01, Dim23, Dim2, Dim3, 
i, 
j,
 
   62                      Dim3, 
i, 
j, 
k, 
l>(TensorExpr(
a, b));
 
 
   67template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim23, 
int Dim2,
 
   68          int Dim3, 
char i, 
char j, 
char k, 
char l, 
char m, 
char n>
 
   69Tensor4_Expr<Ddg_times_Tensor4_2301_ijkl<
A, 
B, T, U, Dim01, Dim23, Dim2, Dim3, 
i, 
j,
 
   72operator*(
const Tensor4_Expr<B, U, Dim23, Dim23, Dim2, Dim3, m, n, k, l> &b,
 
   77                      Dim3, 
i, 
j, 
k, 
l>(TensorExpr(
a, b));
 
 
   83template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim23, 
int Dim0,
 
   84          int Dim1, 
char i, 
char j, 
char k, 
char l, 
char m, 
char n>
 
   89  template <
int Current_Dim0, 
int Current_Dim1>
 
   91  eval(
const int N1, 
const int N2, 
const int N3, 
const int N4,
 
   93    return iterA(Current_Dim0 - 1, Current_Dim1 - 1, N3, N4) *
 
   94               iterB(N1, N2, Current_Dim0 - 1, Current_Dim1 - 1) +
 
 
   98  template <
int Current_Dim1>
 
  100  eval(
const int N1, 
const int N2, 
const int N3, 
const int N4,
 
  102    return iterA(0, Current_Dim1 - 1, N3, N4) *
 
  103               iterB(N1, N2, 0, Current_Dim1 - 1) +
 
 
  107                                        const int N3, 
const int N4,
 
  110    return iterA(0, 0, N3, N4) * 
iterB(N1, N2, 0, 0);
 
 
  119                                       const int N4)
 const {
 
 
 
  126template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim23, 
int Dim0,
 
  127          int Dim1, 
char i, 
char j, 
char k, 
char l, 
char m, 
char n>
 
  128Tensor4_Expr<Ddg_times_Tensor4_2323_klij<
A, 
B, T, U, Dim01, Dim23, Dim0, Dim1,
 
  136                      Dim23, 
i, 
j, 
k, 
l>(TensorExpr(
a, b));
 
 
  141template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim23, 
int Dim0,
 
  142          int Dim1, 
char i, 
char j, 
char k, 
char l, 
char m, 
char n>
 
  143Tensor4_Expr<Ddg_times_Tensor4_2323_klij<
A, 
B, T, U, Dim01, Dim23, Dim0, Dim1,
 
  146operator*(
const Tensor4_Expr<B, U, Dim0, Dim1, Dim23, Dim23, i, j, m, n> &b,
 
  151                      Dim23, 
i, 
j, 
k, 
l>(TensorExpr(
a, b));
 
 
Ddg_times_Tensor4_2301_ijkl(const Ddg_Expr< A, T, Dim01, Dim23, i, j, m, n > &a, const Tensor4_Expr< B, U, Dim23, Dim23, Dim2, Dim3, m, n, k, l > &b)
Tensor4_Expr< B, U, Dim23, Dim23, Dim2, Dim3, m, n, k, l > iterB
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
Ddg_Expr< A, T, Dim01, Dim23, i, j, m, n > iterA
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 operator()(const int N1, const int N2, const int N3, const int N4) const
Ddg_Expr< A, T, Dim01, Dim23, m, n, k, l > iterA
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 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< 1 > &, const Number< Current_Dim1 > &) const
Tensor4_Expr< B, U, Dim0, Dim1, Dim23, Dim23, i, j, m, n > iterB
Ddg_times_Tensor4_2323_klij(const Ddg_Expr< A, T, Dim01, Dim23, m, n, k, l > &a, const Tensor4_Expr< B, U, Dim0, Dim1, Dim23, Dim23, i, j, m, n > &b)
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
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