v0.14.0
Tensor4_times_Tensor2_symmetric.hpp
Go to the documentation of this file.
1 /* This file has all of the declarations for expressions like
2  Tensor4*Tensor2_symmetric and Tensor2_symmetric*Tensor4, yielding a
3  Tensor2. */
4 
5 #pragma once
6 
7 namespace FTensor
8 {
9  /* A(i,j,k,l)*B(k,l) */
10 
11  template <class A, class B, class T, class U, int Dim0, int Dim1, int Dim,
12  char i, char j, char k, char l>
14  {
17 
18  template <int Current_Dim0, int Current_Dim1>
19  typename promote<T, U>::V
20  eval(const int N1, const int N2, const Number<Current_Dim0> &,
21  const Number<Current_Dim1> &) const
22  {
23  return iterA(N1, N2, Current_Dim0 - 1, Current_Dim1 - 1)
24  * iterB(Current_Dim0 - 1, Current_Dim1 - 1)
25  + eval(N1, N2, Number<Current_Dim0 - 1>(),
27  }
28  template <int Current_Dim1>
29  typename promote<T, U>::V
30  eval(const int N1, const int N2, const Number<1> &,
31  const Number<Current_Dim1> &) const
32  {
33  return iterA(N1, N2, 0, Current_Dim1 - 1) * iterB(0, Current_Dim1 - 1)
35  }
36  typename promote<T, U>::V eval(const int N1, const int N2,
37  const Number<1> &, const Number<1> &) const
38  {
39  return iterA(N1, N2, 0, 0) * iterB(0, 0);
40  }
41 
42  public:
43  typename promote<T, U>::V operator()(const int N1, const int N2) const
44  {
45  return eval(N1, N2, Number<Dim>(), Number<Dim>());
46  }
47 
51  : iterA(a), iterB(b)
52  {}
53  };
54 
55  template <class A, class B, class T, class U, int Dim0, int Dim1, int Dim,
56  char i, char j, char k, char l>
57  Tensor2_Expr<
58  Tensor4_times_Tensor2_symmetric_23<A, B, T, U, Dim0, Dim1, Dim, i, j, k, l>,
59  typename promote<T, U>::V, Dim0, Dim1, i, j>
62  {
63  using TensorExpr
64  = Tensor4_times_Tensor2_symmetric_23<A, B, T, U, Dim0, Dim1, Dim, i, j,
65  k, l>;
67  j>(TensorExpr(a, b));
68  }
69 
70  /* B(k,l)*A(i,j,k,l) */
71 
72  template <class A, class B, class T, class U, int Dim0, int Dim1, int Dim,
73  char i, char j, char k, char l>
74  Tensor2_Expr<
75  Tensor4_times_Tensor2_symmetric_23<A, B, T, U, Dim0, Dim1, Dim, i, j, k, l>,
76  typename promote<T, U>::V, Dim0, Dim1, i, j>
79  {
80  using TensorExpr
81  = Tensor4_times_Tensor2_symmetric_23<A, B, T, U, Dim0, Dim1, Dim, i, j,
82  k, l>;
84  j>(TensorExpr(a, b));
85  }
86 
87  /* A(i,j,k,l)*B(l,k) */
88 
89  template <class A, class B, class T, class U, int Dim0, int Dim1, int Dim,
90  char i, char j, char k, char l>
92  {
95 
96  template <int Current_Dim0, int Current_Dim1>
97  typename promote<T, U>::V
98  eval(const int N1, const int N2, const Number<Current_Dim0> &,
99  const Number<Current_Dim1> &) const
100  {
101  return iterA(N1, N2, Current_Dim0 - 1, Current_Dim1 - 1)
102  * iterB(Current_Dim0 - 1, Current_Dim1 - 1)
103  + eval(N1, N2, Number<Current_Dim0 - 1>(),
105  }
106  template <int Current_Dim1>
107  typename promote<T, U>::V
108  eval(const int N1, const int N2, const Number<1> &,
109  const Number<Current_Dim1> &) const
110  {
111  return iterA(N1, N2, 0, Current_Dim1 - 1) * iterB(0, Current_Dim1 - 1)
112  + eval(N1, N2, Number<Dim>(), Number<Current_Dim1 - 1>());
113  }
114  typename promote<T, U>::V eval(const int N1, const int N2,
115  const Number<1> &, const Number<1> &) const
116  {
117  return iterA(N1, N2, 0, 0) * iterB(0, 0);
118  }
119 
120  public:
121  typename promote<T, U>::V operator()(const int N1, const int N2) const
122  {
123  return eval(N1, N2, Number<Dim>(), Number<Dim>());
124  }
125 
129  : iterA(a), iterB(b)
130  {}
131  };
132 
133  template <class A, class B, class T, class U, int Dim0, int Dim1, int Dim,
134  char i, char j, char k, char l>
135  Tensor2_Expr<
136  Tensor4_times_Tensor2_symmetric_32<A, B, T, U, Dim0, Dim1, Dim, i, j, k, l>,
137  typename promote<T, U>::V, Dim0, Dim1, i, j>
140  {
141  using TensorExpr
142  = Tensor4_times_Tensor2_symmetric_32<A, B, T, U, Dim0, Dim1, Dim, i, j,
143  k, l>;
145  j>(TensorExpr(a, b));
146  }
147 
148  /* B(l,k)*A(i,j,k,l) */
149 
150  template <class A, class B, class T, class U, int Dim0, int Dim1, int Dim,
151  char i, char j, char k, char l>
152  Tensor2_Expr<
153  Tensor4_times_Tensor2_symmetric_32<A, B, T, U, Dim0, Dim1, Dim, i, j, k, l>,
154  typename promote<T, U>::V, Dim0, Dim1, i, j>
157  {
158  using TensorExpr
159  = Tensor4_times_Tensor2_symmetric_32<A, B, T, U, Dim0, Dim1, Dim, i, j,
160  k, l>;
162  j>(TensorExpr(a, b));
163  }
164 
165  /* A(i,j,k,l)*B(i,l) */
166 
167  template <class A, class B, class T, class U, int Dim, int Dim1, int Dim2,
168  char i, char j, char k, char l>
170  {
173 
174  template <int Current_Dim0, int Current_Dim1>
175  typename promote<T, U>::V
176  eval(const int N1, const int N2, const Number<Current_Dim0> &,
177  const Number<Current_Dim1> &) const
178  {
179  return iterA(Current_Dim0 - 1, N1, N2, Current_Dim1 - 1)
180  * iterB(Current_Dim0 - 1, Current_Dim1 - 1)
181  + eval(N1, N2, Number<Current_Dim0 - 1>(),
183  }
184  template <int Current_Dim1>
185  typename promote<T, U>::V
186  eval(const int N1, const int N2, const Number<1> &,
187  const Number<Current_Dim1> &) const
188  {
189  return iterA(0, N1, N2, Current_Dim1 - 1) * iterB(0, Current_Dim1 - 1)
190  + eval(N1, N2, Number<Dim>(), Number<Current_Dim1 - 1>());
191  }
192  typename promote<T, U>::V eval(const int N1, const int N2,
193  const Number<1> &, const Number<1> &) const
194  {
195  return iterA(0, N1, N2, 0) * iterB(0, 0);
196  }
197 
198  public:
199  typename promote<T, U>::V operator()(const int N1, const int N2) const
200  {
201  return eval(N1, N2, Number<Dim>(), Number<Dim>());
202  }
203 
207  : iterA(a), iterB(b)
208  {}
209  };
210 
211  template <class A, class B, class T, class U, int Dim, int Dim1, int Dim2,
212  char i, char j, char k, char l>
213  Tensor2_Expr<
214  Tensor4_times_Tensor2_symmetric_03<A, B, T, U, Dim1, Dim2, Dim, i, j, k, l>,
215  typename promote<T, U>::V, Dim1, Dim2, j, k>
218  {
219  using TensorExpr
220  = Tensor4_times_Tensor2_symmetric_03<A, B, T, U, Dim1, Dim2, Dim, i, j,
221  k, l>;
223  k>(TensorExpr(a, b));
224  }
225 
226  /* B(i,l)*A(i,j,k,l) */
227 
228  template <class A, class B, class T, class U, int Dim, int Dim1, int Dim2,
229  char i, char j, char k, char l>
230  Tensor2_Expr<
231  Tensor4_times_Tensor2_symmetric_03<A, B, T, U, Dim1, Dim2, Dim, i, j, k, l>,
232  typename promote<T, U>::V, Dim1, Dim2, j, k>
235  {
236  using TensorExpr
237  = Tensor4_times_Tensor2_symmetric_03<A, B, T, U, Dim1, Dim2, Dim, i, j,
238  k, l>;
240  k>(TensorExpr(a, b));
241  }
242 
243  /* A(i,j,k,l)*B(l,i) */
244 
245  template <class A, class B, class T, class U, int Dim, int Dim1, int Dim2,
246  char i, char j, char k, char l>
248  {
251 
252  template <int Current_Dim0, int Current_Dim1>
253  typename promote<T, U>::V
254  eval(const int N1, const int N2, const Number<Current_Dim0> &,
255  const Number<Current_Dim1> &) const
256  {
257  return iterA(Current_Dim0 - 1, N1, N2, Current_Dim1 - 1)
258  * iterB(Current_Dim1 - 1, Current_Dim0 - 1)
259  + eval(N1, N2, Number<Current_Dim0 - 1>(),
261  }
262  template <int Current_Dim1>
263  typename promote<T, U>::V
264  eval(const int N1, const int N2, const Number<1> &,
265  const Number<Current_Dim1> &) const
266  {
267  return iterA(0, N1, N2, Current_Dim1 - 1) * iterB(Current_Dim1 - 1, 0)
268  + eval(N1, N2, Number<Dim>(), Number<Current_Dim1 - 1>());
269  }
270  typename promote<T, U>::V eval(const int N1, const int N2,
271  const Number<1> &, const Number<1> &) const
272  {
273  return iterA(0, N1, N2, 0) * iterB(0, 0);
274  }
275 
276  public:
277  typename promote<T, U>::V operator()(const int N1, const int N2) const
278  {
279  return eval(N1, N2, Number<Dim>(), Number<Dim>());
280  }
281 
285  : iterA(a), iterB(b)
286  {}
287  };
288 
289  template <class A, class B, class T, class U, int Dim, int Dim1, int Dim2,
290  char i, char j, char k, char l>
291  Tensor2_Expr<
292  Tensor4_times_Tensor2_symmetric_30<A, B, T, U, Dim1, Dim2, Dim, i, j, k, l>,
293  typename promote<T, U>::V, Dim1, Dim2, j, k>
296  {
297  using TensorExpr
298  = Tensor4_times_Tensor2_symmetric_30<A, B, T, U, Dim1, Dim2, Dim, i, j,
299  k, l>;
301  k>(TensorExpr(a, b));
302  }
303 
304  /* B(l,i)*A(i,j,k,l) */
305 
306  template <class A, class B, class T, class U, int Dim, int Dim1, int Dim2,
307  char i, char j, char k, char l>
308  Tensor2_Expr<
309  Tensor4_times_Tensor2_symmetric_30<A, B, T, U, Dim1, Dim2, Dim, i, j, k, l>,
310  typename promote<T, U>::V, Dim1, Dim2, j, k>
313  {
314  using TensorExpr
315  = Tensor4_times_Tensor2_symmetric_30<A, B, T, U, Dim1, Dim2, Dim, i, j,
316  k, l>;
318  k>(TensorExpr(a, b));
319  }
320 
321  /* A(i,j,k,l)*B(i,k) */
322 
323  template <class A, class B, class T, class U, int Dim, int Dim1, int Dim2,
324  char i, char j, char k, char l>
326  {
329 
330  template <int Current_Dim0, int Current_Dim1>
331  typename promote<T, U>::V
332  eval(const int N1, const int N2, const Number<Current_Dim0> &,
333  const Number<Current_Dim1> &) const
334  {
335  return iterA(Current_Dim0 - 1, N1, Current_Dim1 - 1, N2)
336  * iterB(Current_Dim0 - 1, Current_Dim1 - 1)
337  + eval(N1, N2, Number<Current_Dim0 - 1>(),
339  }
340  template <int Current_Dim1>
341  typename promote<T, U>::V
342  eval(const int N1, const int N2, const Number<1> &,
343  const Number<Current_Dim1> &) const
344  {
345  return iterA(0, N1, Current_Dim1 - 1, N2) * iterB(0, Current_Dim1 - 1)
346  + eval(N1, N2, Number<Dim>(), Number<Current_Dim1 - 1>());
347  }
348  typename promote<T, U>::V eval(const int N1, const int N2,
349  const Number<1> &, const Number<1> &) const
350  {
351  return iterA(0, N1, 0, N2) * iterB(0, 0);
352  }
353 
354  public:
355  typename promote<T, U>::V operator()(const int N1, const int N2) const
356  {
357  return eval(N1, N2, Number<Dim>(), Number<Dim>());
358  }
359 
363  : iterA(a), iterB(b)
364  {}
365  };
366 
367  template <class A, class B, class T, class U, int Dim, int Dim1, int Dim2,
368  char i, char j, char k, char l>
369  Tensor2_Expr<
370  Tensor4_times_Tensor2_symmetric_02<A, B, T, U, Dim1, Dim2, Dim, i, j, k, l>,
371  typename promote<T, U>::V, Dim1, Dim2, j, l>
374  {
375  using TensorExpr
376  = Tensor4_times_Tensor2_symmetric_02<A, B, T, U, Dim1, Dim2, Dim, i, j,
377  k, l>;
379  l>(TensorExpr(a, b));
380  }
381 
382  /* B(i,k)*A(i,j,k,l) */
383 
384  template <class A, class B, class T, class U, int Dim, int Dim1, int Dim2,
385  char i, char j, char k, char l>
386  Tensor2_Expr<
387  Tensor4_times_Tensor2_symmetric_02<A, B, T, U, Dim1, Dim2, Dim, i, j, k, l>,
388  typename promote<T, U>::V, Dim1, Dim2, j, l>
391  {
392  using TensorExpr
393  = Tensor4_times_Tensor2_symmetric_02<A, B, T, U, Dim1, Dim2, Dim, i, j,
394  k, l>;
396  l>(TensorExpr(a, b));
397  }
398 
399  /* A(i,j,k,l)*B(i,j) */
400 
401  template <class A, class B, class T, class U, int Dim, int Dim2, int Dim3,
402  char i, char j, char k, char l>
404  {
407 
408  template <int Current_Dim0, int Current_Dim1>
409  typename promote<T, U>::V
410  eval(const int N3, const int N4, const Number<Current_Dim0> &,
411  const Number<Current_Dim1> &) const
412  {
413  return iterA(Current_Dim0 - 1, Current_Dim1 - 1, N3, N4) *
414  iterB(Current_Dim0 - 1, Current_Dim1 - 1) +
416  }
417  template <int Current_Dim1>
418  typename promote<T, U>::V
419  eval(const int N3, const int N4, const Number<1> &,
420  const Number<Current_Dim1> &) const
421  {
422  return iterA(0, Current_Dim1 - 1, N3, N4) * iterB(0, Current_Dim1 - 1)
423  + eval(N3, N4, Number<Dim>(), Number<Current_Dim1 - 1>());
424  }
425  typename promote<T, U>::V eval(const int N3, const int N4,
426  const Number<1> &, const Number<1> &) const
427  {
428  return iterA(0, 0, N3, N4) * iterB(0, 0);
429  }
430 
431  public:
432  typename promote<T, U>::V operator()(const int N3, const int N4) const
433  {
434  return eval(N3, N4, Number<Dim>(), Number<Dim>());
435  }
436 
440  : iterA(a), iterB(b)
441  {}
442  };
443 
444  template <class A, class B, class T, class U, int Dim, int Dim2, int Dim3,
445  char i, char j, char k, char l>
446  Tensor2_Expr<Tensor4_times_Tensor2_symmetric_01<A, B, T, U, Dim, Dim2,
447  Dim3, i, j, k, l>,
448  typename promote<T, U>::V, Dim2, Dim3, k, l>
451  using TensorExpr
452  = Tensor4_times_Tensor2_symmetric_01<A, B, T, U, Dim, Dim2, Dim3, i, j,
453  k, l>;
455  l>(TensorExpr(a, b));
456  }
457 
458  /* B(i,j)*A(i,j,k,l) */
459 
460  template <class A, class B, class T, class U, int Dim, int Dim2, int Dim3,
461  char i, char j, char k, char l>
462  Tensor2_Expr<
463  Tensor4_times_Tensor2_symmetric_01<A, B, T, U, Dim, Dim2, Dim3, i, j, k, l>,
464  typename promote<T, U>::V, Dim2, Dim3, k, l>
467  {
468  using TensorExpr
469  = Tensor4_times_Tensor2_symmetric_01<A, B, T, U, Dim, Dim2, Dim3, i, j,
470  k, l>;
472  l>(TensorExpr(a, b));
473  }
474 
475 }
FTensor
JSON compatible output.
Definition: Christof_constructor.hpp:6
FTensor::Tensor4_times_Tensor2_symmetric_23
Definition: Tensor4_times_Tensor2_symmetric.hpp:13
FTensor::operator*
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)
Definition: Ddg_times_Ddg.hpp:79
FTensor::Tensor4_times_Tensor2_symmetric_23::iterB
Tensor2_symmetric_Expr< B, U, Dim, k, l > iterB
Definition: Tensor4_times_Tensor2_symmetric.hpp:16
FTensor::Tensor4_times_Tensor2_symmetric_32
Definition: Tensor4_times_Tensor2_symmetric.hpp:91
FTensor::Tensor4_times_Tensor2_symmetric_32::Tensor4_times_Tensor2_symmetric_32
Tensor4_times_Tensor2_symmetric_32(const Tensor4_Expr< A, T, Dim0, Dim1, Dim, Dim, i, j, k, l > &a, const Tensor2_symmetric_Expr< B, U, Dim, l, k > &b)
Definition: Tensor4_times_Tensor2_symmetric.hpp:126
FTensor::Tensor2_symmetric_Expr< B, U, Dim, k, l >
FTensor::Tensor4_times_Tensor2_symmetric_01::eval
promote< T, U >::V eval(const int N3, const int N4, const Number< 1 > &, const Number< Current_Dim1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:419
FTensor::Tensor4_times_Tensor2_symmetric_01::eval
promote< T, U >::V eval(const int N3, const int N4, const Number< 1 > &, const Number< 1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:425
FTensor::Tensor4_times_Tensor2_symmetric_30::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:254
FTensor::Tensor4_times_Tensor2_symmetric_03::iterB
Tensor2_symmetric_Expr< B, U, Dim, i, l > iterB
Definition: Tensor4_times_Tensor2_symmetric.hpp:172
FTensor::Tensor4_times_Tensor2_symmetric_01::iterB
Tensor2_symmetric_Expr< B, U, Dim, i, j > iterB
Definition: Tensor4_times_Tensor2_symmetric.hpp:406
FTensor::Tensor2_Expr
Definition: Tensor2_Expr.hpp:26
FTensor::Tensor4_times_Tensor2_symmetric_30::iterA
Tensor4_Expr< A, T, Dim, Dim1, Dim2, Dim, i, j, k, l > iterA
Definition: Tensor4_times_Tensor2_symmetric.hpp:249
FTensor::Tensor4_times_Tensor2_symmetric_32::iterA
Tensor4_Expr< A, T, Dim0, Dim1, Dim, Dim, i, j, k, l > iterA
Definition: Tensor4_times_Tensor2_symmetric.hpp:93
FTensor::Tensor4_times_Tensor2_symmetric_01::Tensor4_times_Tensor2_symmetric_01
Tensor4_times_Tensor2_symmetric_01(const Tensor4_Expr< A, T, Dim, Dim, Dim2, Dim3, i, j, k, l > &a, const Tensor2_symmetric_Expr< B, U, Dim, i, j > &b)
Definition: Tensor4_times_Tensor2_symmetric.hpp:437
A
constexpr AssemblyType A
Definition: operators_tests.cpp:30
FTensor::Tensor4_times_Tensor2_symmetric_01
Definition: Tensor4_times_Tensor2_symmetric.hpp:403
FTensor::Tensor4_times_Tensor2_symmetric_02::iterA
Tensor4_Expr< A, T, Dim, Dim1, Dim2, Dim, i, j, k, l > iterA
Definition: Tensor4_times_Tensor2_symmetric.hpp:327
FTensor::Tensor4_times_Tensor2_symmetric_23::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< Current_Dim1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:30
FTensor::Tensor4_Expr< A, T, Dim0, Dim1, Dim, Dim, i, j, k, l >
FTensor::Number
Definition: Number.hpp:11
FTensor::Tensor4_times_Tensor2_symmetric_32::iterB
Tensor2_symmetric_Expr< B, U, Dim, l, k > iterB
Definition: Tensor4_times_Tensor2_symmetric.hpp:94
FTensor::Tensor4_times_Tensor2_symmetric_03::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< 1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:192
FTensor::Tensor4_times_Tensor2_symmetric_02::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:332
a
constexpr double a
Definition: approx_sphere.cpp:30
FTensor::Tensor4_times_Tensor2_symmetric_32::operator()
promote< T, U >::V operator()(const int N1, const int N2) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:121
FTensor::Tensor4_times_Tensor2_symmetric_01::eval
promote< T, U >::V eval(const int N3, const int N4, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:410
FTensor::Tensor4_times_Tensor2_symmetric_02
Definition: Tensor4_times_Tensor2_symmetric.hpp:325
FTensor::Tensor4_times_Tensor2_symmetric_01::iterA
Tensor4_Expr< A, T, Dim, Dim, Dim2, Dim3, i, j, k, l > iterA
Definition: Tensor4_times_Tensor2_symmetric.hpp:405
FTensor::Tensor4_times_Tensor2_symmetric_03::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:176
FTensor::promote::V
T1 V
Definition: promote.hpp:17
FTensor::Tensor4_times_Tensor2_symmetric_02::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< 1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:348
FTensor::Tensor4_times_Tensor2_symmetric_02::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< Current_Dim1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:342
FTensor::Tensor4_times_Tensor2_symmetric_32::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< Current_Dim1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:108
FTensor::Tensor4_times_Tensor2_symmetric_32::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< 1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:114
i
FTensor::Index< 'i', SPACE_DIM > i
Definition: hcurl_divergence_operator_2d.cpp:27
FTensor::Tensor4_times_Tensor2_symmetric_30::Tensor4_times_Tensor2_symmetric_30
Tensor4_times_Tensor2_symmetric_30(const Tensor4_Expr< A, T, Dim, Dim1, Dim2, Dim, i, j, k, l > &a, const Tensor2_symmetric_Expr< B, U, Dim, l, i > &b)
Definition: Tensor4_times_Tensor2_symmetric.hpp:282
FTensor::Tensor4_times_Tensor2_symmetric_23::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:20
FTensor::Tensor4_times_Tensor2_symmetric_30::iterB
Tensor2_symmetric_Expr< B, U, Dim, l, i > iterB
Definition: Tensor4_times_Tensor2_symmetric.hpp:250
FTensor::Tensor4_times_Tensor2_symmetric_02::Tensor4_times_Tensor2_symmetric_02
Tensor4_times_Tensor2_symmetric_02(const Tensor4_Expr< A, T, Dim, Dim1, Dim2, Dim, i, j, k, l > &a, const Tensor2_symmetric_Expr< B, U, Dim, i, k > &b)
Definition: Tensor4_times_Tensor2_symmetric.hpp:360
FTensor::Tensor4_times_Tensor2_symmetric_30
Definition: Tensor4_times_Tensor2_symmetric.hpp:247
FTensor::Tensor4_times_Tensor2_symmetric_23::operator()
promote< T, U >::V operator()(const int N1, const int N2) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:43
FTensor::Tensor4_times_Tensor2_symmetric_03::iterA
Tensor4_Expr< A, T, Dim, Dim1, Dim2, Dim, i, j, k, l > iterA
Definition: Tensor4_times_Tensor2_symmetric.hpp:171
FTensor::Tensor4_times_Tensor2_symmetric_30::operator()
promote< T, U >::V operator()(const int N1, const int N2) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:277
FTensor::Tensor4_times_Tensor2_symmetric_03::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< Current_Dim1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:186
FTensor::Tensor4_times_Tensor2_symmetric_23::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< 1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:36
j
FTensor::Index< 'j', 3 > j
Definition: matrix_function.cpp:19
FTensor::Tensor4_times_Tensor2_symmetric_03::Tensor4_times_Tensor2_symmetric_03
Tensor4_times_Tensor2_symmetric_03(const Tensor4_Expr< A, T, Dim, Dim1, Dim2, Dim, i, j, k, l > &a, const Tensor2_symmetric_Expr< B, U, Dim, i, l > &b)
Definition: Tensor4_times_Tensor2_symmetric.hpp:204
FTensor::Tensor4_times_Tensor2_symmetric_01::operator()
promote< T, U >::V operator()(const int N3, const int N4) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:432
FTensor::Tensor4_times_Tensor2_symmetric_02::operator()
promote< T, U >::V operator()(const int N1, const int N2) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:355
FTensor::Tensor4_times_Tensor2_symmetric_30::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< Current_Dim1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:264
FTensor::Tensor4_times_Tensor2_symmetric_23::iterA
Tensor4_Expr< A, T, Dim0, Dim1, Dim, Dim, i, j, k, l > iterA
Definition: Tensor4_times_Tensor2_symmetric.hpp:15
k
FTensor::Index< 'k', 3 > k
Definition: matrix_function.cpp:20
FTensor::Tensor4_times_Tensor2_symmetric_32::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:98
FTensor::Tensor4_times_Tensor2_symmetric_03::operator()
promote< T, U >::V operator()(const int N1, const int N2) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:199
FTensor::Tensor4_times_Tensor2_symmetric_03
Definition: Tensor4_times_Tensor2_symmetric.hpp:169
EshelbianPlasticity::U
@ U
Definition: EshelbianContact.cpp:193
l
FTensor::Index< 'l', 3 > l
Definition: matrix_function.cpp:21
FTensor::Tensor4_times_Tensor2_symmetric_02::iterB
Tensor2_symmetric_Expr< B, U, Dim, i, k > iterB
Definition: Tensor4_times_Tensor2_symmetric.hpp:328
FTensor::Tensor4_times_Tensor2_symmetric_30::eval
promote< T, U >::V eval(const int N1, const int N2, const Number< 1 > &, const Number< 1 > &) const
Definition: Tensor4_times_Tensor2_symmetric.hpp:270
FTensor::Tensor4_times_Tensor2_symmetric_23::Tensor4_times_Tensor2_symmetric_23
Tensor4_times_Tensor2_symmetric_23(const Tensor4_Expr< A, T, Dim0, Dim1, Dim, Dim, i, j, k, l > &a, const Tensor2_symmetric_Expr< B, U, Dim, k, l > &b)
Definition: Tensor4_times_Tensor2_symmetric.hpp:48