10  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
   11            char j, 
char k, 
char l>
 
   17    template <
int Current_Dim0, 
int Current_Dim1>
 
   22      return iterA(N1, Current_Dim0 - 1, Current_Dim1 - 1)
 
   23               * 
iterB(Current_Dim0 - 1, Current_Dim1 - 1, N2)
 
 
   27    template <
int Current_Dim1>
 
   32      return iterA(N1, 0, Current_Dim1 - 1) * 
iterB(0, Current_Dim1 - 1, N2)
 
 
 
   52  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
   53            char j, 
char k, 
char l>
 
   54  Tensor2_Expr<Dg_times_Dg_12_01<A, B, T, U, Dim01, Dim2, i, j, k, l>,
 
   66  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
   67            char j, 
char k, 
char l>
 
   68  Tensor2_Expr<Dg_times_Dg_12_01<A, B, T, U, Dim01, Dim2, i, j, k, l>,
 
   80  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
   81            char j, 
char k, 
char l>
 
   87    template <
int Current_Dim0, 
int Current_Dim1>
 
   92      return iterA(N1, Current_Dim0 - 1, Current_Dim1 - 1)
 
   93               * 
iterB(Current_Dim1 - 1, N2, Current_Dim0 - 1)
 
 
   97    template <
int Current_Dim1>
 
  102      return iterA(N1, 0, Current_Dim1 - 1) * 
iterB(Current_Dim1 - 1, N2, 0)
 
 
 
  122  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  123            char j, 
char k, 
char l>
 
  124  Tensor2_Expr<Dg_times_Dg_12_20<A, B, T, U, Dim01, Dim2, i, j, k, l>,
 
  131                        l>(TensorExpr(
a, b));
 
 
  136  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  137            char j, 
char k, 
char l>
 
  138  Tensor2_Expr<Dg_times_Dg_12_20<A, B, T, U, Dim01, Dim2, i, j, k, l>,
 
  145                        l>(TensorExpr(
a, b));
 
 
  150  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
int Dim3,
 
  151            char i, 
char j, 
char k, 
char l>
 
  156    template <
int Current_Dim0, 
int Current_Dim1>
 
  160      return iterA(Current_Dim0 - 1, Current_Dim1 - 1, N1) *
 
  161                 iterB(Current_Dim0 - 1, Current_Dim1 - 1, N2) +
 
 
  164    template <
int Current_Dim1>
 
  168      return iterA(0, Current_Dim1 - 1, N1) * 
iterB(0, Current_Dim1 - 1, N2) +
 
 
 
  185  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
int Dim3,
 
  186            char i, 
char j, 
char k, 
char l>
 
  190        Dg_times_Dg_01_01<A, B, T, U, Dim01, Dim2, Dim3, i, j, k, l>;
 
  192                        l>(TensorExpr(
a, b));
 
 
  197  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim23, 
int Dim2,
 
  198            char i, 
char j, 
char k, 
char l, 
char m>
 
  204    template <
int Current_Dim0>
 
  206    eval(
const int N1, 
const int N2, 
const int N3, 
const int N4,
 
  209      return iterA(N1, N2, Current_Dim0 - 1) * 
iterB(N3, N4, Current_Dim0 - 1)
 
 
  224    operator()(
const int N1, 
const int N2, 
const int N3, 
const int N4)
 const 
 
 
  230  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim23, 
int Dim2,
 
  231            char i, 
char j, 
char k, 
char l, 
char m>
 
  232  Ddg_Expr<Dg_times_Dg_2<A, B, T, U, Dim01, Dim23, Dim2, i, j, k, l, m>,
 
  238      = 
Dg_times_Dg_2<A, B, T, U, Dim01, Dim23, Dim2, i, j, k, l, m>;
 
  240                    l, 
m>(TensorExpr(
a, b));
 
 
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
promote< T, U >::V operator()(const int N1, const int N2) const
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< 1 > &) const
Dg_Expr< B, U, Dim01, Dim3, i, j, l > iterB
Dg_times_Dg_01_01(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const Dg_Expr< B, U, Dim01, Dim3, i, j, l > &b)
Dg_Expr< A, T, Dim01, Dim2, i, j, k > iterA
Dg_Expr< B, U, Dim01, Dim2, j, k, l > iterB
Dg_Expr< A, T, Dim01, Dim01, i, j, k > iterA
promote< T, U >::V operator()(const int N1, const int N2) const
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 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
Dg_times_Dg_12_01(const Dg_Expr< A, T, Dim01, Dim01, i, j, k > &a, const Dg_Expr< B, U, Dim01, Dim2, j, k, l > &b)
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< 1 > &) const
Dg_Expr< B, U, Dim2, Dim01, k, l, j > iterB
promote< T, U >::V operator()(const int N1, const int N2) const
Dg_times_Dg_12_20(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const Dg_Expr< B, U, Dim2, Dim01, k, l, j > &b)
Dg_Expr< A, T, Dim01, Dim2, i, j, k > 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
Dg_Expr< B, U, Dim23, Dim2, l, m, k > iterB
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
Dg_times_Dg_2(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const Dg_Expr< B, U, Dim23, Dim2, l, m, k > &b)
Dg_Expr< A, T, Dim01, Dim2, i, j, k > iterA
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
FTensor::Index< 'i', SPACE_DIM > i
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