9 template <
class A,
class B,
class U,
int Current_Dim0,
int Current_Dim1,
10 int Current_Dim2,
int Current_Dim3,
int Dim01,
int Dim23,
char i,
11 char j,
char k,
char l>
20 iter(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1,
22 = result(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1,
29 template <
class A,
class B,
class U,
int Current_Dim1,
int Current_Dim2,
30 int Current_Dim3,
int Dim01,
int Dim23,
char i,
char j,
char k,
39 iter(0, Current_Dim1 - 1, Current_Dim2 - 1, Current_Dim3 - 1)
40 = result(0, Current_Dim1 - 1, Current_Dim2 - 1, Current_Dim3 - 1);
46 template <
class A,
class B,
class U,
int Current_Dim2,
int Current_Dim3,
47 int Dim01,
int Dim23,
char i,
char j,
char k,
char l>
55 iter(0, 0, Current_Dim2 - 1, Current_Dim3 - 1)
56 = result(0, 0, Current_Dim2 - 1, Current_Dim3 - 1);
61 template <
class A,
class B,
class U,
int Current_Dim3,
int Dim01,
int Dim23,
62 char i,
char j,
char k,
char l>
69 iter(0, 0, 0, Current_Dim3 - 1) = result(0, 0, 0, Current_Dim3 - 1);
74 template <
class A,
class B,
class U,
int Dim01,
int Dim23,
char i,
char j,
82 iter(0, 0, 0, 0) = result(0, 0, 0, 0);
85 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
86 int Dim23,
char i,
char j,
char k,
char l>
87 template <
class B,
class U>
88 Ddg_Expr<Ddg<A, Tensor_Dim01, Tensor_Dim23>,
T, Dim01, Dim23,
i,
j,
k,
l> &
97 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
98 int Dim23,
char i,
char j,
char k,
char l>
110 template <
typename L,
typename R>
static inline void op(
L &
l, R &&r) {
116 template <
typename L,
typename R>
static inline void op(
L &
l, R &&r) {
121 template <
class A,
class B,
class U,
int Current_Dim0,
int Current_Dim1,
122 int Current_Dim2,
int Current_Dim3,
int Dim01,
int Dim23,
char i,
123 char j,
char k,
char l,
class Op>
129 Op::op(iter(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1,
131 result(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1,
138 template <
class A,
class B,
class U,
int Current_Dim1,
139 int Current_Dim2,
int Current_Dim3,
int Dim01,
int Dim23,
char i,
140 char j,
char k,
char l,
class Op>
145 Op::op(iter(0, Current_Dim1 - 1, Current_Dim2 - 1, Current_Dim3 - 1),
146 result(0, Current_Dim1 - 1, Current_Dim2 - 1, Current_Dim3 - 1));
152 template <
class A,
class B,
class U,
int Current_Dim2,
153 int Current_Dim3,
int Dim01,
int Dim23,
char i,
char j,
char k,
159 Op::op(iter(0, 0, Current_Dim2 - 1, Current_Dim3 - 1),
160 result(0, 0, Current_Dim2 - 1, Current_Dim3 - 1));
166 template <
class A,
class B,
class U,
int Current_Dim3,
int Dim01,
167 int Dim23,
char i,
char j,
char k,
char l,
class Op>
172 Op::op(iter(0, 0, 0, Current_Dim3 - 1), result(0, 0, 0, Current_Dim3 - 1));
178 template <
class A,
class B,
class U,
int Dim01,
int Dim23,
char i,
char j,
179 char k,
char l,
class Op>
186 Op::op(iter(0, 0, 0, 0), result(0, 0, 0, 0));
189 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
190 int Dim23,
char i,
char j,
char k,
char l>
191 template <
class B,
class U>
192 Ddg_Expr<Ddg<A, Tensor_Dim01, Tensor_Dim23>,
T, Dim01, Dim23,
i,
j,
k,
l> &
202 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
203 int Dim23,
char i,
char j,
char k,
char l>
212 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
213 int Dim23,
char i,
char j,
char k,
char l>
214 template <
class B,
class U>
225 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
226 int Dim23,
char i,
char j,
char k,
char l>
237 template <
class A,
class T,
class U,
int Dim01,
int Dim23>
243 template <
int Current_Dim0,
int Current_Dim1,
int Current_Dim2,
247 iter(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1,
248 Current_Dim3 - 1) *=
u;
253 template <
int Current_Dim1,
int Current_Dim2,
int Current_Dim3>
256 iter(0, Current_Dim1 - 1, Current_Dim2 - 1, Current_Dim3 - 1) *=
u;
261 template <
int Current_Dim2,
int Current_Dim3>
264 iter(0, 0, Current_Dim2 - 1, Current_Dim3 - 1) *=
u;
269 template <
int Current_Dim3>
272 iter(0, 0, 0, Current_Dim3 - 1) *=
u;
279 iter(0, 0, 0, 0) *=
u;
291 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
292 int Dim23,
char i,
char j,
char k,
char l>
294 Ddg_Expr<Ddg<A, Tensor_Dim01, Tensor_Dim23>,
T, Dim01, Dim23,
i,
j,
k,
l> &
296 operator*=(
const U &
d) {
301 template <
class A,
class T,
class U,
int Dim01,
int Dim23>
307 template <
int Current_Dim0,
int Current_Dim1,
int Current_Dim2,
317 template <
int Current_Dim1,
int Current_Dim2,
int Current_Dim3>
326 template <
int Current_Dim2,
int Current_Dim3>
335 template <
int Current_Dim3>
357 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
358 int Dim23,
char i,
char j,
char k,
char l>
360 Ddg_Expr<Ddg<A, Tensor_Dim01, Tensor_Dim23>,
T, Dim01, Dim23,
i,
j,
k,
l> &
361 Ddg_Expr<Ddg<A, Tensor_Dim01, Tensor_Dim23>,
T, Dim01, Dim23,
i,
j,
k,
362 l>::operator=(
const U &
d) {
void eval(const Number< 1 > &, const Number< 1 > &, const Number< 1 > &, const Number< Current_Dim3 > &)
void eval(const Number< 1 > &, const Number< Current_Dim1 > &, const Number< Current_Dim2 > &, const Number< Current_Dim3 > &)
void eval(const Number< 1 > &, const Number< 1 > &, const Number< Current_Dim2 > &, const Number< Current_Dim3 > &)
T4Ddg_equals_generic(Ddg< A, Dim01, Dim23 > &a, const U &b)
void eval(const Number< Current_Dim0 > &, const Number< Current_Dim1 > &, const Number< Current_Dim2 > &, const Number< Current_Dim3 > &)
Ddg< A, Dim01, Dim23 > & iter
void eval(const Number< 1 > &, const Number< 1 > &, const Number< 1 > &, const Number< 1 > &)
void eval(const Number< Current_Dim0 > &, const Number< Current_Dim1 > &, const Number< Current_Dim2 > &, const Number< Current_Dim3 > &)
void eval(const Number< 1 > &, const Number< Current_Dim1 > &, const Number< Current_Dim2 > &, const Number< Current_Dim3 > &)
Ddg< A, Dim01, Dim23 > & iter
void eval(const Number< 1 > &, const Number< 1 > &, const Number< 1 > &, const Number< 1 > &)
void eval(const Number< 1 > &, const Number< 1 > &, const Number< 1 > &, const Number< Current_Dim3 > &)
void eval(const Number< 1 > &, const Number< 1 > &, const Number< Current_Dim2 > &, const Number< Current_Dim3 > &)
T4Ddg_times_equals_generic(Ddg< A, Dim01, Dim23 > &a, const U &b)
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.
const Tensor1_Expr< const dTensor0< T, Dim, i >, typename promote< T, double >::V, Dim, i > d(const Tensor0< T * > &a, const Index< i, Dim > index, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
void T4ddg_plus_equals_T4ddg(A &iter, const Ddg_Expr< B, U, Dim01, Dim23, i, j, k, l > &result, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &, const Number< Current_Dim2 > &, const Number< Current_Dim3 > &, const Op &)
void T4ddg_equals_T4ddg(A &iter, const Ddg_Expr< B, U, Dim01, Dim23, i, j, k, l > &result, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &, const Number< Current_Dim2 > &, const Number< Current_Dim3 > &)
static void op(L &l, R &&r)
static void op(L &l, R &&r)