11  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
   12            char j, 
char k, 
char l>
 
   18    template <
int Current_Dim>
 
   22      return iterA(N1, N2, Current_Dim - 1) * 
iterB(Current_Dim - 1, N3)
 
 
   38    operator()(
const int N1, 
const int N2, 
const int N3)
 const 
 
 
   44  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
   45            char j, 
char k, 
char l>
 
   46  Dg_Expr<Dg_times_Tensor2_symmetric_0<A, B, T, U, Dim01, Dim2, i, j, k, l>,
 
   59  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
   60            char j, 
char k, 
char l>
 
   61  Dg_Expr<Dg_times_Tensor2_symmetric_0<A, B, T, U, Dim01, Dim2, i, j, k, l>,
 
   74  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
   75            char j, 
char k, 
char l>
 
   81    template <
int Current_Dim>
 
   85      return iterA(N1, N2, Current_Dim - 1) * 
iterB(N3, Current_Dim - 1)
 
 
 
  107  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  108            char j, 
char k, 
char l>
 
  109  Dg_Expr<Dg_times_Tensor2_symmetric_1<A, B, T, U, Dim01, Dim2, i, j, k, l>,
 
  122  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  123            char j, 
char k, 
char l>
 
  124  Dg_Expr<Dg_times_Tensor2_symmetric_1<A, B, T, U, Dim01, Dim2, i, j, k, l>,
 
  137  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  138            char j, 
char k, 
char l>
 
  144    template <
int Current_Dim>
 
  148      return iterA(N1, Current_Dim - 1, N2) * 
iterB(Current_Dim - 1, N3)
 
 
 
  170  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  171            char j, 
char k, 
char l>
 
  173    Dg_times_Tensor2_symmetric_1_0<A, B, T, U, Dim01, Dim2, i, j, k, l>,
 
  181                        Dim01, 
i, 
k, 
l>(TensorExpr(
a, b));
 
 
  186  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  187            char j, 
char k, 
char l>
 
  189    Dg_times_Tensor2_symmetric_1_0<A, B, T, U, Dim01, Dim2, i, j, k, l>,
 
  197                        Dim01, 
i, 
k, 
l>(TensorExpr(
a, b));
 
 
  202  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  203            char j, 
char k, 
char l>
 
  209    template <
int Current_Dim>
 
  213      return iterA(N1, Current_Dim - 1, N2) * 
iterB(N3, Current_Dim - 1)
 
 
 
  235  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  236            char j, 
char k, 
char l>
 
  238    Dg_times_Tensor2_symmetric_1_1<A, B, T, U, Dim01, Dim2, i, j, k, l>,
 
  246                        Dim01, 
i, 
k, 
l>(TensorExpr(
a, b));
 
 
  251  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  252            char j, 
char k, 
char l>
 
  254    Dg_times_Tensor2_symmetric_1_1<A, B, T, U, Dim01, Dim2, i, j, k, l>,
 
  262                        Dim01, 
i, 
k, 
l>(TensorExpr(
a, b));
 
 
  267  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j, 
char k>
 
  273    template <
int Current_Dim0, 
int Current_Dim1>
 
  277      return iterA(N1, Current_Dim0 - 1, Current_Dim1 - 1)
 
  278               * 
iterB(Current_Dim0 - 1, Current_Dim1 - 1)
 
 
  281    template <
int Current_Dim1>
 
  285      return iterA(N1, 0, Current_Dim1 - 1) * 
iterB(0, Current_Dim1 - 1)
 
 
 
  306  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j, 
char k>
 
  319  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j, 
char k>
 
  332  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j, 
char k>
 
  338    template <
int Current_Dim0, 
int Current_Dim1>
 
  342      return iterA(N1, Current_Dim0 - 1, Current_Dim1 - 1)
 
  343               * 
iterB(Current_Dim1 - 1, Current_Dim0 - 1)
 
 
  346    template <
int Current_Dim1>
 
  350      return iterA(N1, 0, Current_Dim1 - 1) * 
iterB(Current_Dim1 - 1, 0)
 
 
 
  371  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j, 
char k>
 
  384  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j, 
char k>
 
  397  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j, 
char k>
 
  403    template <
int Current_Dim0, 
int Current_Dim1>
 
  407      return iterA(Current_Dim0 - 1, N1, Current_Dim1 - 1)
 
  408               * 
iterB(Current_Dim0 - 1, Current_Dim1 - 1)
 
 
  411    template <
int Current_Dim1>
 
  415      return iterA(0, N1, Current_Dim1 - 1) * 
iterB(0, Current_Dim1 - 1)
 
 
 
  436  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j, 
char k>
 
  449  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j, 
char k>
 
  462  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j, 
char k>
 
  468    template <
int Current_Dim0, 
int Current_Dim1>
 
  472      return iterA(Current_Dim0 - 1, N1, Current_Dim1 - 1)
 
  473               * 
iterB(Current_Dim1 - 1, Current_Dim0 - 1)
 
 
  476    template <
int Current_Dim1>
 
  480      return iterA(0, N1, Current_Dim1 - 1) * 
iterB(Current_Dim1 - 1, 0)
 
 
 
  501  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j, 
char k>
 
  514  template <
class A, 
class B, 
class T, 
class U, 
int Dim, 
char i, 
char j, 
char k>
 
  527  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  534    template <
int Current_Dim0, 
int Current_Dim1>
 
  538      return iterA(Current_Dim0 - 1, Current_Dim1 - 1, N1)
 
  539               * 
iterB(Current_Dim0 - 1, Current_Dim1 - 1)
 
 
  542    template <
int Current_Dim1>
 
  546      return iterA(0, Current_Dim1 - 1, N1) * 
iterB(0, Current_Dim1 - 1)
 
 
 
  567  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  582  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  597  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  604    template <
int Current_Dim0, 
int Current_Dim1>
 
  608      return iterA(Current_Dim0 - 1, Current_Dim1 - 1, N1)
 
  609               * 
iterB(Current_Dim1 - 1, Current_Dim0 - 1)
 
 
  612    template <
int Current_Dim1>
 
  616      return iterA(0, Current_Dim1 - 1, N1) * 
iterB(Current_Dim1 - 1, 0)
 
 
 
  637  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
  652  template <
class A, 
class B, 
class T, 
class U, 
int Dim01, 
int Dim2, 
char i,
 
Dg_Expr< A, T, Dim01, Dim2, j, k, i > iterA
Dg_times_Tensor2_symmetric_01(const Dg_Expr< A, T, Dim01, Dim2, j, k, i > &a, const Tensor2_symmetric_Expr< B, U, Dim01, j, k > &b)
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< 1 > &) const
promote< T, U >::V eval(const int N1, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V operator()(const int N1) const
Tensor2_symmetric_Expr< B, U, Dim01, j, k > iterB
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V operator()(const int N1) const
Tensor2_symmetric_Expr< B, U, Dim, j, k > iterB
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< 1 > &) const
Dg_Expr< A, T, Dim, Dim, j, i, k > iterA
Dg_times_Tensor2_symmetric_02(const Dg_Expr< A, T, Dim, Dim, j, i, k > &a, const Tensor2_symmetric_Expr< B, U, Dim, j, k > &b)
promote< T, U >::V eval(const int N1, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Dg_Expr< A, T, Dim01, Dim2, i, j, k > iterA
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
Tensor2_symmetric_Expr< B, U, Dim2, k, l > iterB
Dg_times_Tensor2_symmetric_0(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const Tensor2_symmetric_Expr< B, U, Dim2, k, l > &b)
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
Dg_times_Tensor2_symmetric_10(const Dg_Expr< A, T, Dim01, Dim2, j, k, i > &a, const Tensor2_symmetric_Expr< B, U, Dim01, k, j > &b)
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< 1 > &) const
Tensor2_symmetric_Expr< B, U, Dim01, k, j > iterB
Dg_Expr< A, T, Dim01, Dim2, j, k, i > iterA
promote< T, U >::V operator()(const int N1) const
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< 1 > &) const
Dg_times_Tensor2_symmetric_12(const Dg_Expr< A, T, Dim, Dim, i, j, k > &a, const Tensor2_symmetric_Expr< B, U, Dim, j, k > &b)
promote< T, U >::V eval(const int N1, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Dg_Expr< A, T, Dim, Dim, i, j, k > iterA
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< Current_Dim1 > &) const
Tensor2_symmetric_Expr< B, U, Dim, j, k > iterB
promote< T, U >::V operator()(const int N1) const
Tensor2_symmetric_Expr< B, U, Dim01, j, l > iterB
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
Dg_times_Tensor2_symmetric_1_0(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const Tensor2_symmetric_Expr< B, U, Dim01, j, l > &b)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
Dg_Expr< A, T, Dim01, Dim2, i, j, k > iterA
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
Tensor2_symmetric_Expr< B, U, Dim01, l, j > iterB
Dg_times_Tensor2_symmetric_1_1(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const Tensor2_symmetric_Expr< B, U, Dim01, l, j > &b)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
Dg_times_Tensor2_symmetric_1(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const Tensor2_symmetric_Expr< B, U, Dim2, l, k > &b)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
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
Tensor2_symmetric_Expr< B, U, Dim2, l, k > iterB
Dg_times_Tensor2_symmetric_20(const Dg_Expr< A, T, Dim, Dim, k, i, j > &a, const Tensor2_symmetric_Expr< B, U, Dim, j, k > &b)
promote< T, U >::V eval(const int N1, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Dg_Expr< A, T, Dim, Dim, k, i, j > iterA
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< Current_Dim1 > &) const
Tensor2_symmetric_Expr< B, U, Dim, j, k > iterB
promote< T, U >::V operator()(const int N1) const
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< 1 > &) const
Dg_times_Tensor2_symmetric_21(const Dg_Expr< A, T, Dim, Dim, i, j, k > &a, const Tensor2_symmetric_Expr< B, U, Dim, k, j > &b)
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V operator()(const int N1) const
Dg_Expr< A, T, Dim, Dim, i, j, k > iterA
promote< T, U >::V eval(const int N1, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< 1 > &) const
Tensor2_symmetric_Expr< B, U, Dim, k, j > iterB
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)