11{
16
17 for(int ii = 0; ii < 1; ++ii)
18 {
19 for(int jj = 0; jj < 2; ++jj)
20 {
22 - (t4_1(ii, jj, 0, 0) * t2_5(0, 0)
23 + t4_1(ii, jj, 0, 1) * t2_5(0, 1)
24 + t4_1(ii, jj, 0, 2) * t2_5(0, 2)
25 + t4_1(ii, jj, 0, 3) * t2_5(0, 3)
26 + t4_1(ii, jj, 1, 0) * t2_5(1, 0)
27 + t4_1(ii, jj, 1, 1) * t2_5(1, 1)
28 + t4_1(ii, jj, 1, 2) * t2_5(1, 2)
29 + t4_1(ii, jj, 1, 3) * t2_5(1, 3)
30 + t4_1(ii, jj, 2, 0) * t2_5(2, 0)
31 + t4_1(ii, jj, 2, 1) * t2_5(2, 1)
32 + t4_1(ii, jj, 2, 2) * t2_5(2, 2)
33 + t4_1(ii, jj, 2, 3) * t2_5(2, 3)),
34 "T4(i,j,k,l)*T2(k,l)(" + std::to_string(ii) + ","
35 + std::to_string(jj) + ")");
37 - (t4_1(ii, jj, 0, 0) * t2_5(0, 0)
38 + t4_1(ii, jj, 0, 1) * t2_5(0, 1)
39 + t4_1(ii, jj, 0, 2) * t2_5(0, 2)
40 + t4_1(ii, jj, 0, 3) * t2_5(0, 3)
41 + t4_1(ii, jj, 1, 0) * t2_5(1, 0)
42 + t4_1(ii, jj, 1, 1) * t2_5(1, 1)
43 + t4_1(ii, jj, 1, 2) * t2_5(1, 2)
44 + t4_1(ii, jj, 1, 3) * t2_5(1, 3)
45 + t4_1(ii, jj, 2, 0) * t2_5(2, 0)
46 + t4_1(ii, jj, 2, 1) * t2_5(2, 1)
47 + t4_1(ii, jj, 2, 2) * t2_5(2, 2)
48 + t4_1(ii, jj, 2, 3) * t2_5(2, 3)),
49 "T2(k,l)*T4(i,j,k,l)(" + std::to_string(ii) + ","
50 + std::to_string(jj) + ")");
52 - (t4_1(ii, jj, 0, 0) * t2_4(0, 0)
53 + t4_1(ii, jj, 0, 1) * t2_4(1, 0)
54 + t4_1(ii, jj, 0, 2) * t2_4(2, 0)
55 + t4_1(ii, jj, 0, 3) * t2_4(3, 0)
56 + t4_1(ii, jj, 1, 0) * t2_4(0, 1)
57 + t4_1(ii, jj, 1, 1) * t2_4(1, 1)
58 + t4_1(ii, jj, 1, 2) * t2_4(2, 1)
59 + t4_1(ii, jj, 1, 3) * t2_4(3, 1)
60 + t4_1(ii, jj, 2, 0) * t2_4(0, 2)
61 + t4_1(ii, jj, 2, 1) * t2_4(1, 2)
62 + t4_1(ii, jj, 2, 2) * t2_4(2, 2)
63 + t4_1(ii, jj, 2, 3) * t2_4(3, 2)),
64 "T4(i,j,k,l)*T2(l,k)(" + std::to_string(ii) + ","
65 + std::to_string(jj) + ")");
67 - (t4_1(ii, jj, 0, 0) * t2_4(0, 0)
68 + t4_1(ii, jj, 0, 1) * t2_4(1, 0)
69 + t4_1(ii, jj, 0, 2) * t2_4(2, 0)
70 + t4_1(ii, jj, 0, 3) * t2_4(3, 0)
71 + t4_1(ii, jj, 1, 0) * t2_4(0, 1)
72 + t4_1(ii, jj, 1, 1) * t2_4(1, 1)
73 + t4_1(ii, jj, 1, 2) * t2_4(2, 1)
74 + t4_1(ii, jj, 1, 3) * t2_4(3, 1)
75 + t4_1(ii, jj, 2, 0) * t2_4(0, 2)
76 + t4_1(ii, jj, 2, 1) * t2_4(1, 2)
77 + t4_1(ii, jj, 2, 2) * t2_4(2, 2)
78 + t4_1(ii, jj, 2, 3) * t2_4(3, 2)),
79 "T2(l,k)*T4(i,j,k,l)(" + std::to_string(ii) + ","
80 + std::to_string(jj) + ")");
81 }
82 for(int kk = 0; kk < 3; ++kk)
83 {
85 - (t4_1(ii, 0, kk, 0) * t2_5(0, 0)
86 + t4_1(ii, 0, kk, 1) * t2_5(0, 1)
87 + t4_1(ii, 0, kk, 2) * t2_5(0, 2)
88 + t4_1(ii, 0, kk, 3) * t2_5(0, 3)
89 + t4_1(ii, 1, kk, 0) * t2_5(1, 0)
90 + t4_1(ii, 1, kk, 1) * t2_5(1, 1)
91 + t4_1(ii, 1, kk, 2) * t2_5(1, 2)
92 + t4_1(ii, 1, kk, 3) * t2_5(1, 3)),
93 "T4(i,j,k,l)*T2(j,l)(" + std::to_string(ii) + ","
94 + std::to_string(kk) + ")");
96 - (t4_1(ii, 0, kk, 0) * t2_5(0, 0)
97 + t4_1(ii, 0, kk, 1) * t2_5(0, 1)
98 + t4_1(ii, 0, kk, 2) * t2_5(0, 2)
99 + t4_1(ii, 0, kk, 3) * t2_5(0, 3)
100 + t4_1(ii, 1, kk, 0) * t2_5(1, 0)
101 + t4_1(ii, 1, kk, 1) * t2_5(1, 1)
102 + t4_1(ii, 1, kk, 2) * t2_5(1, 2)
103 + t4_1(ii, 1, kk, 3) * t2_5(1, 3)),
104 "T2(j,l)*T4(i,j,k,l)(" + std::to_string(ii) + ","
105 + std::to_string(kk) + ")");
107 - (t4_1(ii, 0, kk, 0) * t2_4(0, 0)
108 + t4_1(ii, 0, kk, 1) * t2_4(1, 0)
109 + t4_1(ii, 0, kk, 2) * t2_4(2, 0)
110 + t4_1(ii, 0, kk, 3) * t2_4(3, 0)
111 + t4_1(ii, 1, kk, 0) * t2_4(0, 1)
112 + t4_1(ii, 1, kk, 1) * t2_4(1, 1)
113 + t4_1(ii, 1, kk, 2) * t2_4(2, 1)
114 + t4_1(ii, 1, kk, 3) * t2_4(3, 1)),
115 "T4(i,j,k,l)*T2(l,j)(" + std::to_string(ii) + ","
116 + std::to_string(kk) + ")");
118 - (t4_1(ii, 0, kk, 0) * t2_4(0, 0)
119 + t4_1(ii, 0, kk, 1) * t2_4(1, 0)
120 + t4_1(ii, 0, kk, 2) * t2_4(2, 0)
121 + t4_1(ii, 0, kk, 3) * t2_4(3, 0)
122 + t4_1(ii, 1, kk, 0) * t2_4(0, 1)
123 + t4_1(ii, 1, kk, 1) * t2_4(1, 1)
124 + t4_1(ii, 1, kk, 2) * t2_4(2, 1)
125 + t4_1(ii, 1, kk, 3) * t2_4(3, 1)),
126 "T2(l,j)*T4(i,j,k,l)(" + std::to_string(ii) + ","
127 + std::to_string(kk) + ")");
128 }
129 for(int ll = 0; ll < 4; ++ll)
130 {
132 - (t4_1(ii, 0, 0, ll) * t2_5(0, 0)
133 + t4_1(ii, 0, 1, ll) * t2_5(0, 1)
134 + t4_1(ii, 0, 2, ll) * t2_5(0, 2)
135 + t4_1(ii, 1, 0, ll) * t2_5(1, 0)
136 + t4_1(ii, 1, 1, ll) * t2_5(1, 1)
137 + t4_1(ii, 1, 2, ll) * t2_5(1, 2)),
138 "T4(i,j,k,l)*T2(j,k)(" + std::to_string(ii) + ","
139 + std::to_string(ll) + ")");
141 - (t4_1(ii, 0, 0, ll) * t2_5(0, 0)
142 + t4_1(ii, 0, 1, ll) * t2_5(0, 1)
143 + t4_1(ii, 0, 2, ll) * t2_5(0, 2)
144 + t4_1(ii, 1, 0, ll) * t2_5(1, 0)
145 + t4_1(ii, 1, 1, ll) * t2_5(1, 1)
146 + t4_1(ii, 1, 2, ll) * t2_5(1, 2)),
147 "T2(j,k)*T4(i,j,k,l)(" + std::to_string(ii) + ","
148 + std::to_string(ll) + ")");
150 - (t4_1(ii, 0, 0, ll) * t2_4(0, 0)
151 + t4_1(ii, 0, 1, ll) * t2_4(1, 0)
152 + t4_1(ii, 0, 2, ll) * t2_4(2, 0)
153 + t4_1(ii, 1, 0, ll) * t2_4(0, 1)
154 + t4_1(ii, 1, 1, ll) * t2_4(1, 1)
155 + t4_1(ii, 1, 2, ll) * t2_4(2, 1)),
156 "T4(i,j,k,l)*T2(k,j)(" + std::to_string(ii) + ","
157 + std::to_string(ll) + ")");
159 - (t4_1(ii, 0, 0, ll) * t2_4(0, 0)
160 + t4_1(ii, 0, 1, ll) * t2_4(1, 0)
161 + t4_1(ii, 0, 2, ll) * t2_4(2, 0)
162 + t4_1(ii, 1, 0, ll) * t2_4(0, 1)
163 + t4_1(ii, 1, 1, ll) * t2_4(1, 1)
164 + t4_1(ii, 1, 2, ll) * t2_4(2, 1)),
165 "T2(k,j)*T4(i,j,k,l)(" + std::to_string(ii) + ","
166 + std::to_string(ll) + ")");
167 }
168 }
169 for(int jj = 0; jj < 2; ++jj)
170 {
171 for(int kk = 0; kk < 3; ++kk)
172 {
174 - (t4_1(0, jj, kk, 0) * t2_5(0, 0)
175 + t4_1(0, jj, kk, 1) * t2_5(0, 1)
176 + t4_1(0, jj, kk, 2) * t2_5(0, 2)
177 + t4_1(0, jj, kk, 3) * t2_5(0, 3)),
178 "T4(i,j,k,l)*T2(i,l)(" + std::to_string(jj) + ","
179 + std::to_string(kk) + ")");
181 - (t4_1(0, jj, kk, 0) * t2_5(0, 0)
182 + t4_1(0, jj, kk, 1) * t2_5(0, 1)
183 + t4_1(0, jj, kk, 2) * t2_5(0, 2)
184 + t4_1(0, jj, kk, 3) * t2_5(0, 3)),
185 "T2(i,l)*T4(i,j,k,l)(" + std::to_string(jj) + ","
186 + std::to_string(kk) + ")");
188 - (t4_1(0, jj, kk, 0) * t2_4(0, 0)
189 + t4_1(0, jj, kk, 1) * t2_4(1, 0)
190 + t4_1(0, jj, kk, 2) * t2_4(2, 0)
191 + t4_1(0, jj, kk, 3) * t2_4(3, 0)),
192 "T4(i,j,k,l)*T2(l,i)(" + std::to_string(jj) + ","
193 + std::to_string(kk) + ")");
195 - (t4_1(0, jj, kk, 0) * t2_4(0, 0)
196 + t4_1(0, jj, kk, 1) * t2_4(1, 0)
197 + t4_1(0, jj, kk, 2) * t2_4(2, 0)
198 + t4_1(0, jj, kk, 3) * t2_4(3, 0)),
199 "T2(l,i)*T4(i,j,k,l)(" + std::to_string(jj) + ","
200 + std::to_string(kk) + ")");
201 }
202 for(int ll = 0; ll < 4; ++ll)
203 {
205 - (t4_1(0, jj, 0, ll) * t2_5(0, 0)
206 + t4_1(0, jj, 1, ll) * t2_5(0, 1)
207 + t4_1(0, jj, 2, ll) * t2_5(0, 2)),
208 "T4(i,j,k,l)*T2(i,k)(" + std::to_string(jj) + ","
209 + std::to_string(ll) + ")");
211 - (t4_1(0, jj, 0, ll) * t2_5(0, 0)
212 + t4_1(0, jj, 1, ll) * t2_5(0, 1)
213 + t4_1(0, jj, 2, ll) * t2_5(0, 2)),
214 "T2(i,k)*T4(i,j,k,l)(" + std::to_string(jj) + ","
215 + std::to_string(ll) + ")");
217 - (t4_1(0, jj, 0, ll) * t2_4(0, 0)
218 + t4_1(0, jj, 1, ll) * t2_4(1, 0)
219 + t4_1(0, jj, 2, ll) * t2_4(2, 0)),
220 "T4(i,j,k,l)*T2(k,i)(" + std::to_string(jj) + ","
221 + std::to_string(ll) + ")");
223 - (t4_1(0, jj, 0, ll) * t2_4(0, 0)
224 + t4_1(0, jj, 1, ll) * t2_4(1, 0)
225 + t4_1(0, jj, 2, ll) * t2_4(2, 0)),
226 "T2(k,i)*T4(i,j,k,l)(" + std::to_string(jj) + ","
227 + std::to_string(ll) + ")");
228 }
229 }
230 for(int kk = 0; kk < 3; ++kk)
231 for(int ll = 0; ll < 4; ++ll)
232 {
234 - (t4_1(0, 0, kk, ll) * t2_5(0, 0)
235 + t4_1(0, 1, kk, ll) * t2_5(0, 1)),
236 "T4(i,j,k,l)*T2(i,j)(" + std::to_string(kk) + ","
237 + std::to_string(ll) + ")");
239 - (t4_1(0, 0, kk, ll) * t2_5(0, 0)
240 + t4_1(0, 1, kk, ll) * t2_5(0, 1)),
241 "T2(i,j)*T4(i,j,k,l)(" + std::to_string(kk) + ","
242 + std::to_string(ll) + ")");
244 - (t4_1(0, 0, kk, ll) * t2_4(0, 0)
245 + t4_1(0, 1, kk, ll) * t2_4(1, 0)),
246 "T4(i,j,k,l)*T2(j,i)(" + std::to_string(kk) + ","
247 + std::to_string(ll) + ")");
249 - (t4_1(0, 0, kk, ll) * t2_4(0, 0)
250 + t4_1(0, 1, kk, ll) * t2_4(1, 0)),
251 "T2(j,i)*T4(i,j,k,l)(" + std::to_string(kk) + ","
252 + std::to_string(ll) + ")");
253 }
254}
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
void test_for_zero(const T &t, const std::string &s)