11  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j,
 
   18    template <
int Current_Dim0, 
int Current_Dim1>
 
   23      return iterA(Current_Dim0 - 1, N1, Current_Dim1 - 1, N2)
 
   24               * 
iterB(Current_Dim0 - 1, Current_Dim1 - 1)
 
 
   28    template <
int Current_Dim1>
 
   33      return iterA(0, N1, Current_Dim1 - 1, N2) * 
iterB(0, Current_Dim1 - 1)
 
 
 
   54  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j,
 
   56  Tensor2_Expr<Ddg_times_Tensor2_symmetric_13<A, B, T, U, Dim, i, j, k, l>,
 
   69  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j,
 
   71  Tensor2_Expr<Ddg_times_Tensor2_symmetric_13<A, B, T, U, Dim, i, j, k, l>,
 
   84  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim23, 
char i,
 
   85            char j, 
char k, 
char l>
 
   91    template <
int Current_Dim0, 
int Current_Dim1>
 
   96      return iterA(Current_Dim0 - 1, Current_Dim1 - 1, N1, N2)
 
   97               * 
iterB(Current_Dim0 - 1, Current_Dim1 - 1)
 
 
  101    template <
int Current_Dim1>
 
  106      return iterA(0, Current_Dim1 - 1, N1, N2) * 
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_symmetric_01<A, B, T, U, Dim01, Dim23, i, j, k, l>,
 
  138                                  k, 
l>(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_symmetric_01<A, B, T, U, Dim01, Dim23, i, j, k, l>,
 
  154                                  k, 
l>(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>
 
  166    template <
int Current_Dim0, 
int Current_Dim1>
 
  171      return iterA(N1, N2, Current_Dim0 - 1, Current_Dim1 - 1)
 
  172               * 
iterB(Current_Dim0 - 1, Current_Dim1 - 1)
 
 
  176    template <
int Current_Dim1>
 
  181      return iterA(N1, N2, 0, Current_Dim1 - 1) * 
iterB(0, Current_Dim1 - 1)
 
 
 
  202  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim23, 
char i,
 
  203            char j, 
char k, 
char l>
 
  204  Tensor2_symmetric_Expr<
 
  205    Ddg_times_Tensor2_symmetric_23<A, B, T, U, Dim01, Dim23, i, j, k, l>,
 
  213                                  i, 
j>(TensorExpr(
a, b));
 
 
  218  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim23, 
char i,
 
  219            char j, 
char k, 
char l>
 
  220  Tensor2_symmetric_Expr<
 
  221    Ddg_times_Tensor2_symmetric_23<A, B, T, U, Dim01, Dim23, i, j, k, l>,
 
  229                                  i, 
j>(TensorExpr(
a, b));
 
 
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
Tensor2_symmetric_Expr< B, U, Dim01, i, j > iterB
promote< T, U >::V operator()(const int N1, const int N2) const
Ddg_times_Tensor2_symmetric_01(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_symmetric_Expr< B, U, Dim01, i, j > &b)
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< 1 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< Current_Dim1 > &) const
Tensor2_symmetric_Expr< B, U, Dim, j, l > iterB
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< 1 > &) const
Ddg_times_Tensor2_symmetric_13(const Ddg_Expr< A, T, Dim, Dim, i, j, k, l > &a, const Tensor2_symmetric_Expr< B, U, Dim, j, l > &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 operator()(const int N1, const int N2) const
Ddg_Expr< A, T, Dim, Dim, i, j, k, l > iterA
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
Tensor2_symmetric_Expr< B, U, Dim23, k, l > iterB
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< 1 > &) const
Ddg_times_Tensor2_symmetric_23(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Tensor2_symmetric_Expr< B, U, Dim23, k, l > &b)
promote< T, U >::V operator()(const int N1, const int N2) 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)