GADGET-4
symtensor_indices.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * \copyright This file is part of the GADGET4 N-body/SPH code developed
3  * \copyright by Volker Springel. Copyright (C) 2014-2020 by Volker Springel
4  * \copyright (vspringel@mpa-garching.mpg.de) and all contributing authors.
5  *******************************************************************************/
6 
12 #ifndef SRC_DATA_SYMTENSOR_INDICES_H_
13 #define SRC_DATA_SYMTENSOR_INDICES_H_
14 
15 /* 2-tensor element mapping, symmetric 3x3 */
16 #define qXX 0
17 #define qXY 1
18 #define qXZ 2
19 #define qYX qXY
20 #define qYY 3
21 #define qYZ 4
22 #define qZX qXZ
23 #define qZY qYZ
24 #define qZZ 5
25 
26 /* 3-tensor element mapping, symmetric 3x3x3 */
27 #define dXXX 0
28 #define dXXY 1
29 #define dXXZ 2
30 
31 #define dXYX dXXY
32 #define dXYY 3
33 #define dXYZ 4
34 
35 #define dXZX dXXZ
36 #define dXZY dXYZ
37 #define dXZZ 5
38 
39 #define dYXX dXXY
40 #define dYXY dXYY
41 #define dYXZ dXYZ
42 
43 #define dYYX dXYY
44 #define dYYY 6
45 #define dYYZ 7
46 
47 #define dYZX dXYZ
48 #define dYZY dYYZ
49 #define dYZZ 8
50 
51 #define dZXX dXXZ
52 #define dZXY dXYZ
53 #define dZXZ dXZZ
54 
55 #define dZYX dXYZ
56 #define dZYY dYYZ
57 #define dZYZ dYZZ
58 
59 #define dZZX dXZZ
60 #define dZZY dYZZ
61 #define dZZZ 9
62 
63 /* 4-tensor element mapping, symmetric 3x3x3x3 */
64 #define sXXXX 0
65 #define sXXXY 1
66 #define sXXXZ 2
67 
68 #define sXXYX sXXXY
69 #define sXXYY 3
70 #define sXXYZ 4
71 
72 #define sXXZX sXXXZ
73 #define sXXZY sXXYZ
74 #define sXXZZ 5
75 
76 #define sXYXX sXXXY
77 #define sXYXY sXXYY
78 #define sXYXZ sXXYZ
79 
80 #define sXYYX sXXYY
81 #define sXYYY 6
82 #define sXYYZ 7
83 
84 #define sXYZX sXXYZ
85 #define sXYZY sXYYZ
86 #define sXYZZ 8
87 
88 #define sXZXX sXXXZ
89 #define sXZXY sXXYZ
90 #define sXZXZ sXXZZ
91 
92 #define sXZYX sXXYZ
93 #define sXZYY sXYYZ
94 #define sXZYZ sXYZZ
95 
96 #define sXZZX sXXZZ
97 #define sXZZY sXYZZ
98 #define sXZZZ 9
99 //-----------------
100 #define sYXXX sXXXY
101 #define sYXXY sXXYY
102 #define sYXXZ sXXYZ
103 
104 #define sYXYX sXXYY
105 #define sYXYY sXYYY
106 #define sYXYZ sXYYZ
107 
108 #define sYXZX sXXYZ
109 #define sYXZY sXYYZ
110 #define sYXZZ sXYZZ
111 
112 #define sYYXX sXXYY
113 #define sYYXY sXYYY
114 #define sYYXZ sXYYZ
115 
116 #define sYYYX sXYYY
117 #define sYYYY 10
118 #define sYYYZ 11
119 
120 #define sYYZX sXYYZ
121 #define sYYZY sYYYZ
122 #define sYYZZ 12
123 
124 #define sYZXX sXXYZ
125 #define sYZXY sXYYZ
126 #define sYZXZ sXYZZ
127 
128 #define sYZYX sXYYZ
129 #define sYZYY sYYYZ
130 #define sYZYZ sYYZZ
131 
132 #define sYZZX sXYZZ
133 #define sYZZY sYYZZ
134 #define sYZZZ 13
135 //-----------------
136 #define sZXXX sXXXZ
137 #define sZXXY sXXYZ
138 #define sZXXZ sXXZZ
139 
140 #define sZXYX sXXYZ
141 #define sZXYY sXYYZ
142 #define sZXYZ sXYZZ
143 
144 #define sZXZX sXXZZ
145 #define sZXZY sXYZZ
146 #define sZXZZ sXZZZ
147 
148 #define sZYXX sXXYZ
149 #define sZYXY sXYYZ
150 #define sZYXZ sXYZZ
151 
152 #define sZYYX sXYYZ
153 #define sZYYY sYYYZ
154 #define sZYYZ sYYZZ
155 
156 #define sZYZX sXYZZ
157 #define sZYZY sYYZZ
158 #define sZYZZ sYZZZ
159 
160 #define sZZXX sXXZZ
161 #define sZZXY sXYZZ
162 #define sZZXZ sXZZZ
163 
164 #define sZZYX sXYZZ
165 #define sZZYY sYYZZ
166 #define sZZYZ sYZZZ
167 
168 #define sZZZX sXZZZ
169 #define sZZZY sYZZZ
170 #define sZZZZ 14
171 
172 /* 5-tensor element mapping, symmetric 3x3x3x3x3 */
173 #define rXXXXX 0
174 #define rXXXXY 1
175 #define rXXXXZ 2
176 #define rXXXYX rXXXXY
177 #define rXXXYY 3
178 #define rXXXYZ 4
179 #define rXXXZX rXXXXZ
180 #define rXXXZY rXXXYZ
181 #define rXXXZZ 5
182 #define rXXYXX rXXXXY
183 #define rXXYXY rXXXYY
184 #define rXXYXZ rXXXYZ
185 #define rXXYYX rXXXYY
186 #define rXXYYY 6
187 #define rXXYYZ 7
188 #define rXXYZX rXXXYZ
189 #define rXXYZY rXXYYZ
190 #define rXXYZZ 8
191 #define rXXZXX rXXXXZ
192 #define rXXZXY rXXXYZ
193 #define rXXZXZ rXXXZZ
194 #define rXXZYX rXXXYZ
195 #define rXXZYY rXXYYZ
196 #define rXXZYZ rXXYZZ
197 #define rXXZZX rXXXZZ
198 #define rXXZZY rXXYZZ
199 #define rXXZZZ 9
200 #define rXYXXX rXXXXY
201 #define rXYXXY rXXXYY
202 #define rXYXXZ rXXXYZ
203 #define rXYXYX rXXXYY
204 #define rXYXYY rXXYYY
205 #define rXYXYZ rXXYYZ
206 #define rXYXZX rXXXYZ
207 #define rXYXZY rXXYYZ
208 #define rXYXZZ rXXYZZ
209 #define rXYYXX rXXXYY
210 #define rXYYXY rXXYYY
211 #define rXYYXZ rXXYYZ
212 #define rXYYYX rXXYYY
213 #define rXYYYY 10
214 #define rXYYYZ 11
215 #define rXYYZX rXXYYZ
216 #define rXYYZY rXYYYZ
217 #define rXYYZZ 12
218 #define rXYZXX rXXXYZ
219 #define rXYZXY rXXYYZ
220 #define rXYZXZ rXXYZZ
221 #define rXYZYX rXXYYZ
222 #define rXYZYY rXYYYZ
223 #define rXYZYZ rXYYZZ
224 #define rXYZZX rXXYZZ
225 #define rXYZZY rXYYZZ
226 #define rXYZZZ 13
227 #define rXZXXX rXXXXZ
228 #define rXZXXY rXXXYZ
229 #define rXZXXZ rXXXZZ
230 #define rXZXYX rXXXYZ
231 #define rXZXYY rXXYYZ
232 #define rXZXYZ rXXYZZ
233 #define rXZXZX rXXXZZ
234 #define rXZXZY rXXYZZ
235 #define rXZXZZ rXXZZZ
236 #define rXZYXX rXXXYZ
237 #define rXZYXY rXXYYZ
238 #define rXZYXZ rXXYZZ
239 #define rXZYYX rXXYYZ
240 #define rXZYYY rXYYYZ
241 #define rXZYYZ rXYYZZ
242 #define rXZYZX rXXYZZ
243 #define rXZYZY rXYYZZ
244 #define rXZYZZ rXYZZZ
245 #define rXZZXX rXXXZZ
246 #define rXZZXY rXXYZZ
247 #define rXZZXZ rXXZZZ
248 #define rXZZYX rXXYZZ
249 #define rXZZYY rXYYZZ
250 #define rXZZYZ rXYZZZ
251 #define rXZZZX rXXZZZ
252 #define rXZZZY rXYZZZ
253 #define rXZZZZ 14
254 #define rYXXXX rXXXXY
255 #define rYXXXY rXXXYY
256 #define rYXXXZ rXXXYZ
257 #define rYXXYX rXXXYY
258 #define rYXXYY rXXYYY
259 #define rYXXYZ rXXYYZ
260 #define rYXXZX rXXXYZ
261 #define rYXXZY rXXYYZ
262 #define rYXXZZ rXXYZZ
263 #define rYXYXX rXXXYY
264 #define rYXYXY rXXYYY
265 #define rYXYXZ rXXYYZ
266 #define rYXYYX rXXYYY
267 #define rYXYYY rXYYYY
268 #define rYXYYZ rXYYYZ
269 #define rYXYZX rXXYYZ
270 #define rYXYZY rXYYYZ
271 #define rYXYZZ rXYYZZ
272 #define rYXZXX rXXXYZ
273 #define rYXZXY rXXYYZ
274 #define rYXZXZ rXXYZZ
275 #define rYXZYX rXXYYZ
276 #define rYXZYY rXYYYZ
277 #define rYXZYZ rXYYZZ
278 #define rYXZZX rXXYZZ
279 #define rYXZZY rXYYZZ
280 #define rYXZZZ rXYZZZ
281 #define rYYXXX rXXXYY
282 #define rYYXXY rXXYYY
283 #define rYYXXZ rXXYYZ
284 #define rYYXYX rXXYYY
285 #define rYYXYY rXYYYY
286 #define rYYXYZ rXYYYZ
287 #define rYYXZX rXXYYZ
288 #define rYYXZY rXYYYZ
289 #define rYYXZZ rXYYZZ
290 #define rYYYXX rXXYYY
291 #define rYYYXY rXYYYY
292 #define rYYYXZ rXYYYZ
293 #define rYYYYX rXYYYY
294 #define rYYYYY 15
295 #define rYYYYZ 16
296 #define rYYYZX rXYYYZ
297 #define rYYYZY rYYYYZ
298 #define rYYYZZ 17
299 #define rYYZXX rXXYYZ
300 #define rYYZXY rXYYYZ
301 #define rYYZXZ rXYYZZ
302 #define rYYZYX rXYYYZ
303 #define rYYZYY rYYYYZ
304 #define rYYZYZ rYYYZZ
305 #define rYYZZX rXYYZZ
306 #define rYYZZY rYYYZZ
307 #define rYYZZZ 18
308 #define rYZXXX rXXXYZ
309 #define rYZXXY rXXYYZ
310 #define rYZXXZ rXXYZZ
311 #define rYZXYX rXXYYZ
312 #define rYZXYY rXYYYZ
313 #define rYZXYZ rXYYZZ
314 #define rYZXZX rXXYZZ
315 #define rYZXZY rXYYZZ
316 #define rYZXZZ rXYZZZ
317 #define rYZYXX rXXYYZ
318 #define rYZYXY rXYYYZ
319 #define rYZYXZ rXYYZZ
320 #define rYZYYX rXYYYZ
321 #define rYZYYY rYYYYZ
322 #define rYZYYZ rYYYZZ
323 #define rYZYZX rXYYZZ
324 #define rYZYZY rYYYZZ
325 #define rYZYZZ rYYZZZ
326 #define rYZZXX rXXYZZ
327 #define rYZZXY rXYYZZ
328 #define rYZZXZ rXYZZZ
329 #define rYZZYX rXYYZZ
330 #define rYZZYY rYYYZZ
331 #define rYZZYZ rYYZZZ
332 #define rYZZZX rXYZZZ
333 #define rYZZZY rYYZZZ
334 #define rYZZZZ 19
335 #define rZXXXX rXXXXZ
336 #define rZXXXY rXXXYZ
337 #define rZXXXZ rXXXZZ
338 #define rZXXYX rXXXYZ
339 #define rZXXYY rXXYYZ
340 #define rZXXYZ rXXYZZ
341 #define rZXXZX rXXXZZ
342 #define rZXXZY rXXYZZ
343 #define rZXXZZ rXXZZZ
344 #define rZXYXX rXXXYZ
345 #define rZXYXY rXXYYZ
346 #define rZXYXZ rXXYZZ
347 #define rZXYYX rXXYYZ
348 #define rZXYYY rXYYYZ
349 #define rZXYYZ rXYYZZ
350 #define rZXYZX rXXYZZ
351 #define rZXYZY rXYYZZ
352 #define rZXYZZ rXYZZZ
353 #define rZXZXX rXXXZZ
354 #define rZXZXY rXXYZZ
355 #define rZXZXZ rXXZZZ
356 #define rZXZYX rXXYZZ
357 #define rZXZYY rXYYZZ
358 #define rZXZYZ rXYZZZ
359 #define rZXZZX rXXZZZ
360 #define rZXZZY rXYZZZ
361 #define rZXZZZ rXZZZZ
362 #define rZYXXX rXXXYZ
363 #define rZYXXY rXXYYZ
364 #define rZYXXZ rXXYZZ
365 #define rZYXYX rXXYYZ
366 #define rZYXYY rXYYYZ
367 #define rZYXYZ rXYYZZ
368 #define rZYXZX rXXYZZ
369 #define rZYXZY rXYYZZ
370 #define rZYXZZ rXYZZZ
371 #define rZYYXX rXXYYZ
372 #define rZYYXY rXYYYZ
373 #define rZYYXZ rXYYZZ
374 #define rZYYYX rXYYYZ
375 #define rZYYYY rYYYYZ
376 #define rZYYYZ rYYYZZ
377 #define rZYYZX rXYYZZ
378 #define rZYYZY rYYYZZ
379 #define rZYYZZ rYYZZZ
380 #define rZYZXX rXXYZZ
381 #define rZYZXY rXYYZZ
382 #define rZYZXZ rXYZZZ
383 #define rZYZYX rXYYZZ
384 #define rZYZYY rYYYZZ
385 #define rZYZYZ rYYZZZ
386 #define rZYZZX rXYZZZ
387 #define rZYZZY rYYZZZ
388 #define rZYZZZ rYZZZZ
389 #define rZZXXX rXXXZZ
390 #define rZZXXY rXXYZZ
391 #define rZZXXZ rXXZZZ
392 #define rZZXYX rXXYZZ
393 #define rZZXYY rXYYZZ
394 #define rZZXYZ rXYZZZ
395 #define rZZXZX rXXZZZ
396 #define rZZXZY rXYZZZ
397 #define rZZXZZ rXZZZZ
398 #define rZZYXX rXXYZZ
399 #define rZZYXY rXYYZZ
400 #define rZZYXZ rXYZZZ
401 #define rZZYYX rXYYZZ
402 #define rZZYYY rYYYZZ
403 #define rZZYYZ rYYZZZ
404 #define rZZYZX rXYZZZ
405 #define rZZYZY rYYZZZ
406 #define rZZYZZ rYZZZZ
407 #define rZZZXX rXXZZZ
408 #define rZZZXY rXYZZZ
409 #define rZZZXZ rXZZZZ
410 #define rZZZYX rXYZZZ
411 #define rZZZYY rYYZZZ
412 #define rZZZYZ rYZZZZ
413 #define rZZZZX rXZZZZ
414 #define rZZZZY rYZZZZ
415 #define rZZZZZ 20
416 
417 /* 6-tensor element mapping, symmetric 3x3x3x3x3x3 */
418 #define pXXXXXX 0
419 #define pXXXXXY 1
420 #define pXXXXXZ 2
421 #define pXXXXYY 3
422 #define pXXXXYZ 4
423 #define pXXXXZZ 5
424 #define pXXXYYY 6
425 #define pXXXYYZ 7
426 #define pXXXYZZ 8
427 #define pXXXZZZ 9
428 #define pXXYYYY 10
429 #define pXXYYYZ 11
430 #define pXXYYZZ 12
431 #define pXXYZZZ 13
432 #define pXXZZZZ 14
433 #define pXYYYYY 15
434 #define pXYYYYZ 16
435 #define pXYYYZZ 17
436 #define pXYYZZZ 18
437 #define pXYZZZZ 19
438 #define pXZZZZZ 20
439 #define pYYYYYY 21
440 #define pYYYYYZ 22
441 #define pYYYYZZ 23
442 #define pYYYZZZ 24
443 #define pYYZZZZ 25
444 #define pYZZZZZ 26
445 #define pZZZZZZ 27
446 
447 /* 7-tensor element mapping, symmetric 3x3x3x3x3x3x3 */
448 #define tXXXXXXX 0
449 #define tXXXXXXY 1
450 #define tXXXXXXZ 2
451 #define tXXXXXYY 3
452 #define tXXXXXYZ 4
453 #define tXXXXXZZ 5
454 #define tXXXXYYY 6
455 #define tXXXXYYZ 7
456 #define tXXXXYZZ 8
457 #define tXXXXZZZ 9
458 #define tXXXYYYY 10
459 #define tXXXYYYZ 11
460 #define tXXXYYZZ 12
461 #define tXXXYZZZ 13
462 #define tXXXZZZZ 14
463 #define tXXYYYYY 15
464 #define tXXYYYYZ 16
465 #define tXXYYYZZ 17
466 #define tXXYYZZZ 18
467 #define tXXYZZZZ 19
468 #define tXXZZZZZ 20
469 #define tXYYYYYY 21
470 #define tXYYYYYZ 22
471 #define tXYYYYZZ 23
472 #define tXYYYZZZ 24
473 #define tXYYZZZZ 25
474 #define tXYZZZZZ 26
475 #define tXZZZZZZ 27
476 #define tYYYYYYY 28
477 #define tYYYYYYZ 29
478 #define tYYYYYZZ 30
479 #define tYYYYZZZ 31
480 #define tYYYZZZZ 32
481 #define tYYZZZZZ 33
482 #define tYZZZZZZ 34
483 #define tZZZZZZZ 35
484 
485 #endif /* SRC_DATA_SYMTENSOR_INDICES_H_ */