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