v0.14.0
Dg_times_Tensor2.hpp
Go to the documentation of this file.
1 /* This file has all of the declarations for expressions like
2  Dg*Tensor2 and Tensor2*Dg, yielding a
3  Dg, Tensor3, or Tensor1. */
4 
5 #pragma once
6 
7 namespace FTensor
8 {
9  /* A(i,j,k)*B(k,l)->Dg */
10 
11  template <class A, class B, class T, class U, int Dim01, int Dim2, int Dim3,
12  char i, char j, char k, char l>
14  {
17 
18  template <int Current_Dim>
19  typename promote<T, U>::V eval(const int N1, const int N2, const int N3,
20  const Number<Current_Dim> &) const
21  {
22  return iterA(N1, N2, Current_Dim - 1) * iterB(Current_Dim - 1, N3)
23  + eval(N1, N2, N3, Number<Current_Dim - 1>());
24  }
25  typename promote<T, U>::V
26  eval(const int N1, const int N2, const int N3, const Number<1> &) const
27  {
28  return iterA(N1, N2, 0) * iterB(0, N3);
29  }
30 
31  public:
34  : iterA(a), iterB(b)
35  {}
36  typename promote<T, U>::V
37  operator()(const int N1, const int N2, const int N3) const
38  {
39  return eval(N1, N2, N3, Number<Dim2>());
40  }
41  };
42 
43  template <class A, class B, class T, class U, int Dim01, int Dim2, int Dim3,
44  char i, char j, char k, char l>
45  Dg_Expr<Dg_times_Tensor2_0<A, B, T, U, Dim01, Dim2, Dim3, i, j, k, l>,
46  typename promote<T, U>::V, Dim01, Dim3, i, j, l>
49  {
50  using TensorExpr
52  return Dg_Expr<TensorExpr, typename promote<T, U>::V, Dim01, Dim3, i, j, l>(
53  TensorExpr(a, b));
54  }
55 
56  /* B(k,l)*A(i,j,k)->Dg */
57 
58  template <class A, class B, class T, class U, int Dim01, int Dim2, int Dim3,
59  char i, char j, char k, char l>
60  Dg_Expr<Dg_times_Tensor2_0<A, B, T, U, Dim01, Dim2, Dim3, i, j, k, l>,
61  typename promote<T, U>::V, Dim01, Dim3, i, j, l>
64  {
65  using TensorExpr
67  return Dg_Expr<TensorExpr, typename promote<T, U>::V, Dim01, Dim3, i, j, l>(
68  TensorExpr(a, b));
69  }
70 
71  /* A(i,j,k)*B(l,k)->Dg */
72 
73  template <class A, class B, class T, class U, int Dim01, int Dim2, int Dim3,
74  char i, char j, char k, char l>
76  {
79 
80  template <int Current_Dim>
81  typename promote<T, U>::V eval(const int N1, const int N2, const int N3,
82  const Number<Current_Dim> &) const
83  {
84  return iterA(N1, N2, Current_Dim - 1) * iterB(N3, Current_Dim - 1)
85  + eval(N1, N2, N3, Number<Current_Dim - 1>());
86  }
87  typename promote<T, U>::V
88  eval(const int N1, const int N2, const int N3, const Number<1> &) const
89  {
90  return iterA(N1, N2, 0) * iterB(N3, 0);
91  }
92 
93  public:
96  : iterA(a), iterB(b)
97  {}
98  typename promote<T, U>::V
99  operator()(const int N1, const int N2, const int N3) const
100  {
101  return eval(N1, N2, N3, Number<Dim2>());
102  }
103  };
104 
105  template <class A, class B, class T, class U, int Dim01, int Dim2, int Dim3,
106  char i, char j, char k, char l>
107  Dg_Expr<Dg_times_Tensor2_1<A, B, T, U, Dim01, Dim2, Dim3, i, j, k, l>,
108  typename promote<T, U>::V, Dim01, Dim3, i, j, l>
111  {
112  using TensorExpr
114  return Dg_Expr<TensorExpr, typename promote<T, U>::V, Dim01, Dim3, i, j, l>(
115  TensorExpr(a, b));
116  }
117 
118  /* B(l,k)*A(i,j,k)->Dg */
119 
120  template <class A, class B, class T, class U, int Dim01, int Dim2, int Dim3,
121  char i, char j, char k, char l>
122  Dg_Expr<Dg_times_Tensor2_1<A, B, T, U, Dim01, Dim2, Dim3, i, j, k, l>,
123  typename promote<T, U>::V, Dim01, Dim3, i, j, l>
126  {
127  using TensorExpr
129  return Dg_Expr<TensorExpr, typename promote<T, U>::V, Dim01, Dim3, i, j, l>(
130  TensorExpr(a, b));
131  }
132 
133  /* A(i,j,k)*B(j,l)->Tensor3 */
134 
135  template <class A, class B, class T, class U, int Dim01, int Dim2, int Dim3,
136  char i, char j, char k, char l>
138  {
141 
142  template <int Current_Dim>
143  typename promote<T, U>::V eval(const int N1, const int N2, const int N3,
144  const Number<Current_Dim> &) const
145  {
146  return iterA(N1, Current_Dim - 1, N2) * iterB(Current_Dim - 1, N3)
147  + eval(N1, N2, N3, Number<Current_Dim - 1>());
148  }
149  typename promote<T, U>::V
150  eval(const int N1, const int N2, const int N3, const Number<1> &) const
151  {
152  return iterA(N1, 0, N2) * iterB(0, N3);
153  }
154 
155  public:
158  : iterA(a), iterB(b)
159  {}
160  typename promote<T, U>::V
161  operator()(const int N1, const int N2, const int N3) const
162  {
163  return eval(N1, N2, N3, Number<Dim01>());
164  }
165  };
166 
167  template <class A, class B, class T, class U, int Dim01, int Dim2, int Dim3,
168  char i, char j, char k, char l>
169  Tensor3_Expr<Dg_times_Tensor2_1_0<A, B, T, U, Dim01, Dim2, Dim3, i, j, k, l>,
170  typename promote<T, U>::V, Dim01, Dim2, Dim3, i, k, l>
173  {
174  using TensorExpr
177  Dim3, i, k, l>(TensorExpr(a, b));
178  }
179 
180  /* B(j,l)*A(i,j,k)->Tensor3 */
181 
182  template <class A, class B, class T, class U, int Dim01, int Dim2, int Dim3,
183  char i, char j, char k, char l>
184  Tensor3_Expr<Dg_times_Tensor2_1_0<A, B, T, U, Dim01, Dim2, Dim3, i, j, k, l>,
185  typename promote<T, U>::V, Dim01, Dim2, Dim3, i, k, l>
188  {
189  using TensorExpr
192  Dim3, i, k, l>(TensorExpr(a, b));
193  }
194 
195  /* A(i,j,k)*B(l,j)->Tensor3 */
196 
197  template <class A, class B, class T, class U, int Dim01, int Dim2, int Dim3,
198  char i, char j, char k, char l>
200  {
203 
204  template <int Current_Dim>
205  typename promote<T, U>::V eval(const int N1, const int N2, const int N3,
206  const Number<Current_Dim> &) const
207  {
208  return iterA(N1, Current_Dim - 1, N2) * iterB(N3, Current_Dim - 1)
209  + eval(N1, N2, N3, Number<Current_Dim - 1>());
210  }
211  typename promote<T, U>::V
212  eval(const int N1, const int N2, const int N3, const Number<1> &) const
213  {
214  return iterA(N1, 0, N2) * iterB(N3, 0);
215  }
216 
217  public:
220  : iterA(a), iterB(b)
221  {}
222  typename promote<T, U>::V
223  operator()(const int N1, const int N2, const int N3) const
224  {
225  return eval(N1, N2, N3, Number<Dim01>());
226  }
227  };
228 
229  template <class A, class B, class T, class U, int Dim01, int Dim2, int Dim3,
230  char i, char j, char k, char l>
231  Tensor3_Expr<Dg_times_Tensor2_1_1<A, B, T, U, Dim01, Dim2, Dim3, i, j, k, l>,
232  typename promote<T, U>::V, Dim01, Dim2, Dim3, i, k, l>
235  {
236  using TensorExpr
239  Dim3, i, k, l>(TensorExpr(a, b));
240  }
241 
242  /* B(l,j)*A(i,j,k)->Tensor3 */
243 
244  template <class A, class B, class T, class U, int Dim01, int Dim2, int Dim3,
245  char i, char j, char k, char l>
246  Tensor3_Expr<Dg_times_Tensor2_1_1<A, B, T, U, Dim01, Dim2, Dim3, i, j, k, l>,
247  typename promote<T, U>::V, Dim01, Dim2, Dim3, i, k, l>
250  {
251  using TensorExpr
254  Dim3, i, k, l>(TensorExpr(a, b));
255  }
256 
257  /* A(i,j,k)*B(j,k)->Tensor1 */
258 
259  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
260  char j, char k>
262  {
265 
266  template <int Current_Dim0, int Current_Dim1>
267  typename promote<T, U>::V eval(const int N1, const Number<Current_Dim0> &,
268  const Number<Current_Dim1> &) const
269  {
270  return iterA(N1, Current_Dim0 - 1, Current_Dim1 - 1)
271  * iterB(Current_Dim0 - 1, Current_Dim1 - 1)
273  }
274  template <int Current_Dim1>
275  typename promote<T, U>::V
276  eval(const int N1, const Number<1> &, const Number<Current_Dim1> &) const
277  {
278  return iterA(N1, 0, Current_Dim1 - 1) * iterB(0, Current_Dim1 - 1)
280  }
281  typename promote<T, U>::V
282  eval(const int N1, const Number<1> &, const Number<1> &) const
283  {
284  return iterA(N1, 0, 0) * iterB(0, 0);
285  }
286 
287  public:
290  : iterA(a), iterB(b)
291  {}
292  typename promote<T, U>::V operator()(const int N1) const
293  {
294  return eval(N1, Number<Dim01>(), Number<Dim2>());
295  }
296  };
297 
298  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
299  char j, char k>
301  typename promote<T, U>::V, Dim01, i>
304  {
307  TensorExpr(a, b));
308  }
309 
310  /* B(j,k)*A(i,j,k)->Tensor1 */
311 
312  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
313  char j, char k>
315  typename promote<T, U>::V, Dim01, i>
318  {
321  TensorExpr(a, b));
322  }
323 
324  /* A(i,j,k)*B(k,j)->Tensor1 */
325 
326  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
327  char j, char k>
329  {
332 
333  template <int Current_Dim0, int Current_Dim1>
334  typename promote<T, U>::V eval(const int N1, const Number<Current_Dim0> &,
335  const Number<Current_Dim1> &) const
336  {
337  return iterA(N1, Current_Dim0 - 1, Current_Dim1 - 1)
338  * iterB(Current_Dim1 - 1, Current_Dim0 - 1)
340  }
341  template <int Current_Dim1>
342  typename promote<T, U>::V
343  eval(const int N1, const Number<1> &, const Number<Current_Dim1> &) const
344  {
345  return iterA(N1, 0, Current_Dim1 - 1) * iterB(Current_Dim1 - 1, 0)
347  }
348  typename promote<T, U>::V
349  eval(const int N1, const Number<1> &, const Number<1> &) const
350  {
351  return iterA(N1, 0, 0) * iterB(0, 0);
352  }
353 
354  public:
357  : iterA(a), iterB(b)
358  {}
359  typename promote<T, U>::V operator()(const int N1) const
360  {
361  return eval(N1, Number<Dim01>(), Number<Dim2>());
362  }
363  };
364 
365  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
366  char j, char k>
368  typename promote<T, U>::V, Dim01, i>
371  {
374  TensorExpr(a, b));
375  }
376 
377  /* B(k,j)*A(i,j,k)->Tensor1 */
378 
379  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
380  char j, char k>
382  typename promote<T, U>::V, Dim01, i>
385  {
388  TensorExpr(a, b));
389  }
390 
391  /* A(j,i,k)*B(j,k)->Tensor1 */
392 
393  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
394  char j, char k>
396  {
399 
400  template <int Current_Dim0, int Current_Dim1>
401  typename promote<T, U>::V eval(const int N1, const Number<Current_Dim0> &,
402  const Number<Current_Dim1> &) const
403  {
404  return iterA(Current_Dim0 - 1, N1, Current_Dim1 - 1)
405  * iterB(Current_Dim0 - 1, Current_Dim1 - 1)
407  }
408  template <int Current_Dim1>
409  typename promote<T, U>::V
410  eval(const int N1, const Number<1> &, const Number<Current_Dim1> &) const
411  {
412  return iterA(0, N1, Current_Dim1 - 1) * iterB(0, Current_Dim1 - 1)
414  }
415  typename promote<T, U>::V
416  eval(const int N1, const Number<1> &, const Number<1> &) const
417  {
418  return iterA(0, N1, 0) * iterB(0, 0);
419  }
420 
421  public:
424  : iterA(a), iterB(b)
425  {}
426  typename promote<T, U>::V operator()(const int N1) const
427  {
428  return eval(N1, Number<Dim01>(), Number<Dim2>());
429  }
430  };
431 
432  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
433  char j, char k>
435  typename promote<T, U>::V, Dim01, i>
438  {
441  TensorExpr(a, b));
442  }
443 
444  /* B(j,k)*A(j,i,k)->Tensor1 */
445 
446  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
447  char j, char k>
449  typename promote<T, U>::V, Dim01, i>
452  {
455  TensorExpr(a, b));
456  }
457 
458  /* A(k,i,j)*B(j,k)->Tensor1 */
459 
460  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
461  char j, char k>
463  {
466 
467  template <int Current_Dim0, int Current_Dim1>
468  typename promote<T, U>::V eval(const int N1, const Number<Current_Dim0> &,
469  const Number<Current_Dim1> &) const
470  {
471  return iterA(Current_Dim0 - 1, N1, Current_Dim1 - 1)
472  * iterB(Current_Dim1 - 1, Current_Dim0 - 1)
474  }
475  template <int Current_Dim1>
476  typename promote<T, U>::V
477  eval(const int N1, const Number<1> &, const Number<Current_Dim1> &) const
478  {
479  return iterA(0, N1, Current_Dim1 - 1) * iterB(Current_Dim1 - 1, 0)
481  }
482  typename promote<T, U>::V
483  eval(const int N1, const Number<1> &, const Number<1> &) const
484  {
485  return iterA(0, N1, 0) * iterB(0, 0);
486  }
487 
488  public:
491  : iterA(a), iterB(b)
492  {}
493  typename promote<T, U>::V operator()(const int N1) const
494  {
495  return eval(N1, Number<Dim01>(), Number<Dim2>());
496  }
497  };
498 
499  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
500  char j, char k>
502  typename promote<T, U>::V, Dim01, i>
505  {
508  TensorExpr(a, b));
509  }
510 
511  /* B(j,k)*A(k,i,j)->Tensor1 */
512 
513  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
514  char j, char k>
516  typename promote<T, U>::V, Dim01, i>
519  {
522  TensorExpr(a, b));
523  }
524 
525  /* A(j,k,i)*B(j,k)->Tensor1 */
526 
527  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
528  char j, char k>
530  {
533 
534  template <int Current_Dim0, int Current_Dim1>
535  typename promote<T, U>::V eval(const int N1, const Number<Current_Dim0> &,
536  const Number<Current_Dim1> &) const
537  {
538  return iterA(Current_Dim0 - 1, Current_Dim1 - 1, N1)
539  * iterB(Current_Dim0 - 1, Current_Dim1 - 1)
541  }
542  template <int Current_Dim1>
543  typename promote<T, U>::V
544  eval(const int N1, const Number<1> &, const Number<Current_Dim1> &) const
545  {
546  return iterA(0, Current_Dim1 - 1, N1) * iterB(0, Current_Dim1 - 1)
548  }
549  typename promote<T, U>::V
550  eval(const int N1, const Number<1> &, const Number<1> &) const
551  {
552  return iterA(0, 0, N1) * iterB(0, 0);
553  }
554 
555  public:
558  : iterA(a), iterB(b)
559  {}
560  typename promote<T, U>::V operator()(const int N1) const
561  {
562  return eval(N1, Number<Dim01>(), Number<Dim01>());
563  }
564  };
565 
566  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
567  char j, char k>
569  typename promote<T, U>::V, Dim2, i>
572  {
575  TensorExpr(a, b));
576  }
577 
578  /* B(j,k)*A(j,k,i)->Tensor1 */
579 
580  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
581  char j, char k>
583  typename promote<T, U>::V, Dim2, i>
586  {
589  TensorExpr(a, b));
590  }
591 
592  /* A(j,k,i)*B(k,j)->Tensor1 */
593 
594  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
595  char j, char k>
597  {
600 
601  template <int Current_Dim0, int Current_Dim1>
602  typename promote<T, U>::V eval(const int N1, const Number<Current_Dim0> &,
603  const Number<Current_Dim1> &) const
604  {
605  return iterA(Current_Dim0 - 1, Current_Dim1 - 1, N1)
606  * iterB(Current_Dim1 - 1, Current_Dim0 - 1)
608  }
609  template <int Current_Dim1>
610  typename promote<T, U>::V
611  eval(const int N1, const Number<1> &, const Number<Current_Dim1> &) const
612  {
613  return iterA(0, Current_Dim1 - 1, N1) * iterB(Current_Dim1 - 1, 0)
615  }
616  typename promote<T, U>::V
617  eval(const int N1, const Number<1> &, const Number<1> &) const
618  {
619  return iterA(0, 0, N1) * iterB(0, 0);
620  }
621 
622  public:
625  : iterA(a), iterB(b)
626  {}
627  typename promote<T, U>::V operator()(const int N1) const
628  {
629  return eval(N1, Number<Dim01>(), Number<Dim01>());
630  }
631  };
632 
633  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
634  char j, char k>
636  typename promote<T, U>::V, Dim2, i>
639  {
642  TensorExpr(a, b));
643  }
644 
645  /* B(k,j)*A(j,k,i)->Tensor1 */
646 
647  template <class A, class B, class T, class U, int Dim01, int Dim2, char i,
648  char j, char k>
650  typename promote<T, U>::V, Dim2, i>
653  {
656  TensorExpr(a, b));
657  }
658 }
FTensor::Dg_times_Tensor2_21::eval
promote< T, U >::V eval(const int N1, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Definition: Dg_times_Tensor2.hpp:334
FTensor::Dg_times_Tensor2_1::iterA
Dg_Expr< A, T, Dim01, Dim2, i, j, k > iterA
Definition: Dg_times_Tensor2.hpp:77
FTensor
JSON compatible output.
Definition: Christof_constructor.hpp:6
FTensor::Dg_times_Tensor2_1::iterB
Tensor2_Expr< B, U, Dim3, Dim2, l, k > iterB
Definition: Dg_times_Tensor2.hpp:78
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::Dg_times_Tensor2_0::iterB
Tensor2_Expr< B, U, Dim2, Dim3, k, l > iterB
Definition: Dg_times_Tensor2.hpp:16
FTensor::Dg_times_Tensor2_21
Definition: Dg_times_Tensor2.hpp:328
FTensor::Dg_times_Tensor2_02::eval
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< Current_Dim1 > &) const
Definition: Dg_times_Tensor2.hpp:410
FTensor::Dg_times_Tensor2_1_0::iterB
Tensor2_Expr< B, U, Dim01, Dim3, j, l > iterB
Definition: Dg_times_Tensor2.hpp:140
FTensor::Dg_times_Tensor2_1::operator()
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
Definition: Dg_times_Tensor2.hpp:99
FTensor::Dg_times_Tensor2_21::eval
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< 1 > &) const
Definition: Dg_times_Tensor2.hpp:349
FTensor::Dg_times_Tensor2_1_0::Dg_times_Tensor2_1_0
Dg_times_Tensor2_1_0(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const Tensor2_Expr< B, U, Dim01, Dim3, j, l > &b)
Definition: Dg_times_Tensor2.hpp:156
FTensor::Tensor2_Expr< B, U, Dim2, Dim3, k, l >
A
constexpr AssemblyType A
Definition: operators_tests.cpp:30
FTensor::Dg_times_Tensor2_0::operator()
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
Definition: Dg_times_Tensor2.hpp:37
FTensor::Dg_times_Tensor2_12::iterA
Dg_Expr< A, T, Dim01, Dim2, i, j, k > iterA
Definition: Dg_times_Tensor2.hpp:263
FTensor::Dg_times_Tensor2_0::eval
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
Definition: Dg_times_Tensor2.hpp:19
FTensor::Dg_times_Tensor2_1::eval
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
Definition: Dg_times_Tensor2.hpp:88
FTensor::Dg_times_Tensor2_12::eval
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< Current_Dim1 > &) const
Definition: Dg_times_Tensor2.hpp:276
FTensor::Dg_times_Tensor2_10::iterA
Dg_Expr< A, T, Dim01, Dim2, j, k, i > iterA
Definition: Dg_times_Tensor2.hpp:598
FTensor::Number
Definition: Number.hpp:11
FTensor::Dg_times_Tensor2_21::eval
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< Current_Dim1 > &) const
Definition: Dg_times_Tensor2.hpp:343
FTensor::Dg_times_Tensor2_21::iterA
Dg_Expr< A, T, Dim01, Dim2, i, j, k > iterA
Definition: Dg_times_Tensor2.hpp:330
FTensor::Dg_times_Tensor2_1_0
Definition: Dg_times_Tensor2.hpp:137
FTensor::Dg_times_Tensor2_12::Dg_times_Tensor2_12
Dg_times_Tensor2_12(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const Tensor2_Expr< B, U, Dim01, Dim2, j, k > &b)
Definition: Dg_times_Tensor2.hpp:288
FTensor::Dg_times_Tensor2_01::eval
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< 1 > &) const
Definition: Dg_times_Tensor2.hpp:550
FTensor::Tensor1_Expr
Definition: Tensor1_Expr.hpp:27
FTensor::Dg_times_Tensor2_1_1::operator()
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
Definition: Dg_times_Tensor2.hpp:223
FTensor::Dg_times_Tensor2_20::iterA
Dg_Expr< A, T, Dim01, Dim2, k, i, j > iterA
Definition: Dg_times_Tensor2.hpp:464
a
constexpr double a
Definition: approx_sphere.cpp:30
FTensor::Dg_times_Tensor2_12
Definition: Dg_times_Tensor2.hpp:261
FTensor::Dg_times_Tensor2_1_1::eval
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
Definition: Dg_times_Tensor2.hpp:212
FTensor::Dg_times_Tensor2_20
Definition: Dg_times_Tensor2.hpp:462
FTensor::Dg_times_Tensor2_12::eval
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< 1 > &) const
Definition: Dg_times_Tensor2.hpp:282
FTensor::Dg_times_Tensor2_1_1::eval
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
Definition: Dg_times_Tensor2.hpp:205
FTensor::Dg_times_Tensor2_01::iterA
Dg_Expr< A, T, Dim01, Dim2, j, k, i > iterA
Definition: Dg_times_Tensor2.hpp:531
FTensor::Dg_times_Tensor2_1_0::eval
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
Definition: Dg_times_Tensor2.hpp:143
FTensor::promote::V
T1 V
Definition: promote.hpp:17
FTensor::Dg_times_Tensor2_12::eval
promote< T, U >::V eval(const int N1, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Definition: Dg_times_Tensor2.hpp:267
FTensor::Dg_times_Tensor2_10::eval
promote< T, U >::V eval(const int N1, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Definition: Dg_times_Tensor2.hpp:602
FTensor::Dg_times_Tensor2_0
Definition: Dg_times_Tensor2.hpp:13
FTensor::Dg_times_Tensor2_1_0::iterA
Dg_Expr< A, T, Dim01, Dim2, i, j, k > iterA
Definition: Dg_times_Tensor2.hpp:139
FTensor::Dg_times_Tensor2_12::iterB
Tensor2_Expr< B, U, Dim01, Dim2, j, k > iterB
Definition: Dg_times_Tensor2.hpp:264
FTensor::Dg_times_Tensor2_01::Dg_times_Tensor2_01
Dg_times_Tensor2_01(const Dg_Expr< A, T, Dim01, Dim2, j, k, i > &a, const Tensor2_Expr< B, U, Dim01, Dim01, j, k > &b)
Definition: Dg_times_Tensor2.hpp:556
FTensor::Dg_times_Tensor2_10::Dg_times_Tensor2_10
Dg_times_Tensor2_10(const Dg_Expr< A, T, Dim01, Dim2, j, k, i > &a, const Tensor2_Expr< B, U, Dim01, Dim01, k, j > &b)
Definition: Dg_times_Tensor2.hpp:623
FTensor::Dg_times_Tensor2_02::eval
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< 1 > &) const
Definition: Dg_times_Tensor2.hpp:416
FTensor::Dg_times_Tensor2_20::Dg_times_Tensor2_20
Dg_times_Tensor2_20(const Dg_Expr< A, T, Dim01, Dim2, k, i, j > &a, const Tensor2_Expr< B, U, Dim2, Dim01, j, k > &b)
Definition: Dg_times_Tensor2.hpp:489
FTensor::Dg_times_Tensor2_0::eval
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
Definition: Dg_times_Tensor2.hpp:26
FTensor::Tensor3_Expr
Definition: Tensor3_Expr.hpp:24
FTensor::Dg_times_Tensor2_02::eval
promote< T, U >::V eval(const int N1, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Definition: Dg_times_Tensor2.hpp:401
FTensor::Dg_times_Tensor2_01::eval
promote< T, U >::V eval(const int N1, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Definition: Dg_times_Tensor2.hpp:535
FTensor::Dg_times_Tensor2_02::iterB
Tensor2_Expr< B, U, Dim01, Dim2, j, k > iterB
Definition: Dg_times_Tensor2.hpp:398
FTensor::Dg_times_Tensor2_1::Dg_times_Tensor2_1
Dg_times_Tensor2_1(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const Tensor2_Expr< B, U, Dim3, Dim2, l, k > &b)
Definition: Dg_times_Tensor2.hpp:94
FTensor::Dg_times_Tensor2_1_1
Definition: Dg_times_Tensor2.hpp:199
i
FTensor::Index< 'i', SPACE_DIM > i
Definition: hcurl_divergence_operator_2d.cpp:27
FTensor::Dg_times_Tensor2_02::iterA
Dg_Expr< A, T, Dim01, Dim2, j, i, k > iterA
Definition: Dg_times_Tensor2.hpp:397
FTensor::Dg_times_Tensor2_01::operator()
promote< T, U >::V operator()(const int N1) const
Definition: Dg_times_Tensor2.hpp:560
FTensor::Dg_times_Tensor2_1_1::iterB
Tensor2_Expr< B, U, Dim3, Dim01, l, j > iterB
Definition: Dg_times_Tensor2.hpp:202
FTensor::Dg_times_Tensor2_0::Dg_times_Tensor2_0
Dg_times_Tensor2_0(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const Tensor2_Expr< B, U, Dim2, Dim3, k, l > &b)
Definition: Dg_times_Tensor2.hpp:32
FTensor::Dg_times_Tensor2_02::Dg_times_Tensor2_02
Dg_times_Tensor2_02(const Dg_Expr< A, T, Dim01, Dim2, j, i, k > &a, const Tensor2_Expr< B, U, Dim01, Dim2, j, k > &b)
Definition: Dg_times_Tensor2.hpp:422
Tensor1_Expr
Definition: single.cpp:11
FTensor::Dg_times_Tensor2_0::iterA
Dg_Expr< A, T, Dim01, Dim2, i, j, k > iterA
Definition: Dg_times_Tensor2.hpp:15
FTensor::Dg_times_Tensor2_21::Dg_times_Tensor2_21
Dg_times_Tensor2_21(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const Tensor2_Expr< B, U, Dim2, Dim01, k, j > &b)
Definition: Dg_times_Tensor2.hpp:355
FTensor::Dg_times_Tensor2_20::eval
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< Current_Dim1 > &) const
Definition: Dg_times_Tensor2.hpp:477
FTensor::Dg_times_Tensor2_20::operator()
promote< T, U >::V operator()(const int N1) const
Definition: Dg_times_Tensor2.hpp:493
FTensor::Dg_times_Tensor2_1_1::iterA
Dg_Expr< A, T, Dim01, Dim2, i, j, k > iterA
Definition: Dg_times_Tensor2.hpp:201
FTensor::Dg_times_Tensor2_21::iterB
Tensor2_Expr< B, U, Dim2, Dim01, k, j > iterB
Definition: Dg_times_Tensor2.hpp:331
FTensor::Dg_Expr
Definition: Dg_Expr.hpp:25
FTensor::Dg_times_Tensor2_1_0::operator()
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
Definition: Dg_times_Tensor2.hpp:161
j
FTensor::Index< 'j', 3 > j
Definition: matrix_function.cpp:19
FTensor::Dg_times_Tensor2_02
Definition: Dg_times_Tensor2.hpp:395
FTensor::Dg_times_Tensor2_01::iterB
Tensor2_Expr< B, U, Dim01, Dim01, j, k > iterB
Definition: Dg_times_Tensor2.hpp:532
FTensor::Dg_times_Tensor2_12::operator()
promote< T, U >::V operator()(const int N1) const
Definition: Dg_times_Tensor2.hpp:292
FTensor::Dg_times_Tensor2_20::iterB
Tensor2_Expr< B, U, Dim2, Dim01, j, k > iterB
Definition: Dg_times_Tensor2.hpp:465
FTensor::Dg_times_Tensor2_20::eval
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< 1 > &) const
Definition: Dg_times_Tensor2.hpp:483
FTensor::Dg_times_Tensor2_1_1::Dg_times_Tensor2_1_1
Dg_times_Tensor2_1_1(const Dg_Expr< A, T, Dim01, Dim2, i, j, k > &a, const Tensor2_Expr< B, U, Dim3, Dim01, l, j > &b)
Definition: Dg_times_Tensor2.hpp:218
FTensor::Dg_times_Tensor2_10::eval
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< Current_Dim1 > &) const
Definition: Dg_times_Tensor2.hpp:611
FTensor::Dg_times_Tensor2_1
Definition: Dg_times_Tensor2.hpp:75
FTensor::Dg_times_Tensor2_20::eval
promote< T, U >::V eval(const int N1, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Definition: Dg_times_Tensor2.hpp:468
FTensor::Dg_times_Tensor2_10::eval
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< 1 > &) const
Definition: Dg_times_Tensor2.hpp:617
FTensor::Dg_times_Tensor2_10::iterB
Tensor2_Expr< B, U, Dim01, Dim01, k, j > iterB
Definition: Dg_times_Tensor2.hpp:599
FTensor::Dg_times_Tensor2_10::operator()
promote< T, U >::V operator()(const int N1) const
Definition: Dg_times_Tensor2.hpp:627
k
FTensor::Index< 'k', 3 > k
Definition: matrix_function.cpp:20
FTensor::Dg_times_Tensor2_1::eval
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
Definition: Dg_times_Tensor2.hpp:81
FTensor::Dg_times_Tensor2_1_0::eval
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
Definition: Dg_times_Tensor2.hpp:150
FTensor::Dg_times_Tensor2_01::eval
promote< T, U >::V eval(const int N1, const Number< 1 > &, const Number< Current_Dim1 > &) const
Definition: Dg_times_Tensor2.hpp:544
EshelbianPlasticity::U
@ U
Definition: EshelbianContact.cpp:193
FTensor::Dg_times_Tensor2_21::operator()
promote< T, U >::V operator()(const int N1) const
Definition: Dg_times_Tensor2.hpp:359
l
FTensor::Index< 'l', 3 > l
Definition: matrix_function.cpp:21
FTensor::Dg_times_Tensor2_02::operator()
promote< T, U >::V operator()(const int N1) const
Definition: Dg_times_Tensor2.hpp:426
FTensor::Dg_times_Tensor2_10
Definition: Dg_times_Tensor2.hpp:596
FTensor::Dg_times_Tensor2_01
Definition: Dg_times_Tensor2.hpp:529