TypeAliases.hpp
Go to the documentation of this file.
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 /// \file
5 /// Defines a list of useful type aliases for tensors
6 
7 #pragma once
8 
11 
12 /// \cond
13 class DataVector;
14 template <typename X, typename Symm, typename IndexList>
15 class Tensor;
16 /// \endcond
17 
18 /// \ingroup TensorGroup
19 /// Scalar type
20 template <typename T>
21 using Scalar = Tensor<T, Symmetry<>, index_list<>>;
22 
23 /*!
24  * \ingroup TensorGroup
25  * \brief Type aliases to construct common Tensors
26  *
27  * Lower case letters represent covariant indices and upper case letters
28  * represent contravariant indices. Letters a, b, c, d represent spacetime
29  * indices and i, j, k, l represent spatial indices.
30  */
31 namespace tnsr {
32 // Rank 1
33 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
35 using a = Tensor<DataType, tmpl::integral_list<std::int32_t, 1>,
36  index_list<Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo,
37  Fr, Index>>>;
38 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
40 using A = Tensor<DataType, tmpl::integral_list<std::int32_t, 1>,
41  index_list<Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up,
42  Fr, Index>>>;
43 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
44 using i = Tensor<DataType, tmpl::integral_list<std::int32_t, 1>,
45  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>>>;
46 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
47 using I = Tensor<DataType, tmpl::integral_list<std::int32_t, 1>,
48  index_list<SpatialIndex<SpatialDim, UpLo::Up, Fr>>>;
49 
50 // Rank 2
51 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
53 using ab = Tensor<
54  DataType, tmpl::integral_list<std::int32_t, 2, 1>,
55  index_list<
56  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
57  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>>>;
58 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
60 using Ab = Tensor<
61  DataType, tmpl::integral_list<std::int32_t, 2, 1>,
62  index_list<
63  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
64  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>>>;
65 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
67 using aB = Tensor<
68  DataType, tmpl::integral_list<std::int32_t, 2, 1>,
69  index_list<
70  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
71  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>>>;
72 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
74 using AB = Tensor<
75  DataType, tmpl::integral_list<std::int32_t, 2, 1>,
76  index_list<
77  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
78  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>>>;
79 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
80 using ij = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1>,
81  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
83 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
84 using iJ = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1>,
85  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
87 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
88 using Ij = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1>,
89  index_list<SpatialIndex<SpatialDim, UpLo::Up, Fr>,
90  SpatialIndex<SpatialDim, UpLo::Lo, Fr>>>;
91 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
92 using IJ = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1>,
93  index_list<SpatialIndex<SpatialDim, UpLo::Up, Fr>,
94  SpatialIndex<SpatialDim, UpLo::Up, Fr>>>;
95 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
96 using ia = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1>,
97 index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
99 
100 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
102 using aa = Tensor<
103  DataType, tmpl::integral_list<std::int32_t, 1, 1>,
104  index_list<
105  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
106  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>>>;
107 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
109 using AA = Tensor<
110  DataType, tmpl::integral_list<std::int32_t, 1, 1>,
111  index_list<
112  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
113  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>>>;
114 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
115 using ii = Tensor<DataType, tmpl::integral_list<std::int32_t, 1, 1>,
116  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
117  SpatialIndex<SpatialDim, UpLo::Lo, Fr>>>;
118 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
119 using II = Tensor<DataType, tmpl::integral_list<std::int32_t, 1, 1>,
120  index_list<SpatialIndex<SpatialDim, UpLo::Up, Fr>,
121  SpatialIndex<SpatialDim, UpLo::Up, Fr>>>;
122 
123 // Rank 3 - spacetime
124 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
126 using abc = Tensor<
127  DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
128  index_list<
129  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
130  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
131  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>>>;
132 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
134 using abC = Tensor<
135  DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
136  index_list<
137  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
138  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
139  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>>>;
140 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
142 using aBc = Tensor<
143  DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
144  index_list<
145  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
146  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
147  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>>>;
148 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
150 using Abc = Tensor<
151  DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
152  index_list<
153  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
154  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
155  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>>>;
156 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
158 using aBC = Tensor<
159  DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
160  index_list<
161  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
162  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
163  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>>>;
164 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
166 using AbC = Tensor<
167  DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
168  index_list<
169  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
170  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
171  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>>>;
172 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
174 using ABc = Tensor<
175  DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
176  index_list<
177  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
178  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
179  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>>>;
180 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
182 using ABC = Tensor<
183  DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
184  index_list<
185  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
186  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
187  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>>>;
188 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
190 using abb = Tensor<
191  DataType, tmpl::integral_list<std::int32_t, 2, 1, 1>,
192  index_list<
193  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
194  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
195  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>>>;
196 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
198 using Abb = Tensor<
199  DataType, tmpl::integral_list<std::int32_t, 2, 1, 1>,
200  index_list<
201  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
202  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
203  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>>>;
204 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
206 using aBB = Tensor<
207  DataType, tmpl::integral_list<std::int32_t, 2, 1, 1>,
208  index_list<
209  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
210  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
211  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>>>;
212 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
214 using ABB = Tensor<
215  DataType, tmpl::integral_list<std::int32_t, 2, 1, 1>,
216  index_list<
217  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
218  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
219  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>>>;
220 
221 // Rank 3 - spatial
222 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
223 using iii = Tensor<DataType, tmpl::integral_list<std::int32_t, 1, 1, 1>,
224  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
225  SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
226  SpatialIndex<SpatialDim, UpLo::Lo, Fr>>>;
227 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
228 using ijk = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
229  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
230  SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
231  SpatialIndex<SpatialDim, UpLo::Lo, Fr>>>;
232 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
233 using ijK = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
234  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
235  SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
236  SpatialIndex<SpatialDim, UpLo::Up, Fr>>>;
237 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
238 using iJk = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
239  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
240  SpatialIndex<SpatialDim, UpLo::Up, Fr>,
241  SpatialIndex<SpatialDim, UpLo::Lo, Fr>>>;
242 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
243 using Ijk = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
244  index_list<SpatialIndex<SpatialDim, UpLo::Up, Fr>,
245  SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
246  SpatialIndex<SpatialDim, UpLo::Lo, Fr>>>;
247 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
248 using iJK = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
249  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
250  SpatialIndex<SpatialDim, UpLo::Up, Fr>,
251  SpatialIndex<SpatialDim, UpLo::Up, Fr>>>;
252 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
253 using IjK = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
254  index_list<SpatialIndex<SpatialDim, UpLo::Up, Fr>,
255  SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
256  SpatialIndex<SpatialDim, UpLo::Up, Fr>>>;
257 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
258 using IJk = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
259  index_list<SpatialIndex<SpatialDim, UpLo::Up, Fr>,
260  SpatialIndex<SpatialDim, UpLo::Up, Fr>,
261  SpatialIndex<SpatialDim, UpLo::Lo, Fr>>>;
262 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
263 using IJK = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
264  index_list<SpatialIndex<SpatialDim, UpLo::Up, Fr>,
265  SpatialIndex<SpatialDim, UpLo::Up, Fr>,
266  SpatialIndex<SpatialDim, UpLo::Up, Fr>>>;
267 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
268 using ijj = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1, 1>,
269  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
270  SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
271  SpatialIndex<SpatialDim, UpLo::Lo, Fr>>>;
272 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
273 using Ijj = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1, 1>,
274  index_list<SpatialIndex<SpatialDim, UpLo::Up, Fr>,
275  SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
276  SpatialIndex<SpatialDim, UpLo::Lo, Fr>>>;
277 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
278 using iJJ = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1, 1>,
279  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
280  SpatialIndex<SpatialDim, UpLo::Up, Fr>,
281  SpatialIndex<SpatialDim, UpLo::Up, Fr>>>;
282 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
283 using IJJ = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1, 1>,
284  index_list<SpatialIndex<SpatialDim, UpLo::Up, Fr>,
285  SpatialIndex<SpatialDim, UpLo::Up, Fr>,
286  SpatialIndex<SpatialDim, UpLo::Up, Fr>>>;
287 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
288 using III = Tensor<DataType, tmpl::integral_list<std::int32_t, 1, 1, 1>,
289  index_list<SpatialIndex<SpatialDim, UpLo::Up, Fr>,
290  SpatialIndex<SpatialDim, UpLo::Up, Fr>,
291  SpatialIndex<SpatialDim, UpLo::Up, Fr>>>;
292 
293 // Rank 3 - mixed spacetime spatial
294 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
295 using iab = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
296  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
297  SpacetimeIndex<SpatialDim, UpLo::Lo, Fr>,
298  SpacetimeIndex<SpatialDim, UpLo::Lo, Fr>>>;
299 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
300 using iaB = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
301  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
302  SpacetimeIndex<SpatialDim, UpLo::Lo, Fr>,
304 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
305 using iAb = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
306  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
307  SpacetimeIndex<SpatialDim, UpLo::Up, Fr>,
308  SpacetimeIndex<SpatialDim, UpLo::Lo, Fr>>>;
309 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
310 using iAB = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1>,
311  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
312  SpacetimeIndex<SpatialDim, UpLo::Up, Fr>,
313  SpacetimeIndex<SpatialDim, UpLo::Up, Fr>>>;
314 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
315 using iaa = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1, 1>,
316  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
317  SpacetimeIndex<SpatialDim, UpLo::Lo, Fr>,
318  SpacetimeIndex<SpatialDim, UpLo::Lo, Fr>>>;
319 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
320 using aia = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1, 2>,
321  index_list<SpacetimeIndex<SpatialDim, UpLo::Lo, Fr>,
322  SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
323  SpacetimeIndex<SpatialDim, UpLo::Lo, Fr>>>;
324 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
325 using iAA = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1, 1>,
326  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
327  SpacetimeIndex<SpatialDim, UpLo::Up, Fr>,
328  SpacetimeIndex<SpatialDim, UpLo::Up, Fr>>>;
329 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
330 using Iaa = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1, 1>,
331  index_list<SpatialIndex<SpatialDim, UpLo::Up, Fr>,
332  SpacetimeIndex<SpatialDim, UpLo::Lo, Fr>,
333  SpacetimeIndex<SpatialDim, UpLo::Lo, Fr>>>;
334 
335 // Rank 4 - Mixed
336 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
337 using ijaa = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1, 1>,
338  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
339  SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
340  SpacetimeIndex<SpatialDim, UpLo::Lo, Fr>,
341  SpacetimeIndex<SpatialDim, UpLo::Lo, Fr>>>;
342 
343 // Rank 4 - generic (default spacetime)
344 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
346 using abcc = Tensor<
347  DataType, tmpl::integral_list<std::int32_t, 3, 2, 1, 1>,
348  index_list<
349  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
350  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
351  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
352  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>>>;
353 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial,
355 using aBcc = Tensor<
356  DataType, tmpl::integral_list<std::int32_t, 3, 2, 1, 1>,
357  index_list<
358  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
359  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Up, Fr, Index>,
360  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>,
361  Tensor_detail::TensorIndexType<SpatialDim, UpLo::Lo, Fr, Index>>>;
362 
363 // Rank 4 - spatial
364 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
365 using ijkk = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1, 1>,
366  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
367  SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
368  SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
369  SpatialIndex<SpatialDim, UpLo::Lo, Fr>>>;
370 template <typename DataType, size_t SpatialDim, typename Fr = Frame::Inertial>
371 using iJkk = Tensor<DataType, tmpl::integral_list<std::int32_t, 3, 2, 1, 1>,
372  index_list<SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
373  SpatialIndex<SpatialDim, UpLo::Up, Fr>,
374  SpatialIndex<SpatialDim, UpLo::Lo, Fr>,
375  SpatialIndex<SpatialDim, UpLo::Lo, Fr>>>;
376 
377 } // namespace tnsr
378 
379 template <typename DataType, size_t Dim, typename SourceFrame,
380  typename TargetFrame>
381 using InverseJacobian =
382  Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1>,
383  index_list<SpatialIndex<Dim, UpLo::Up, SourceFrame>,
385 
386 template <typename DataType, size_t Dim, typename SourceFrame,
387  typename TargetFrame>
388 using Jacobian = Tensor<DataType, tmpl::integral_list<std::int32_t, 2, 1>,
389  index_list<SpatialIndex<Dim, UpLo::Up, TargetFrame>,
Covariant, or Lower index.
The TensorIndexType is a spacetime index.
Contravariant, or Upper index.
Tensor_detail::TensorIndexType< SpatialDim, Ul, Fr, IndexType::Spacetime > SpacetimeIndex
A SpacetimeIndex holds information about the number of spatial dimensions, whether the index is covar...
Definition: IndexType.hpp:199
Type aliases to construct common Tensors.
Definition: TypeAliases.hpp:31
Tensor_detail::TensorIndexType< SpatialDim, Ul, Fr, IndexType::Spatial > SpatialIndex
A SpatialIndex holds information about the number of spatial dimensions, whether the index is covaria...
Definition: IndexType.hpp:185
Defines metafunctions used to comute the Symmetry<...> for a Tensor.
Stores a collection of function values.
Definition: DataVector.hpp:46
An integer multi-index.
Definition: Index.hpp:28
IndexType
Indicates whether the TensorIndexType is Spatial or Spacetime.
Definition: IndexType.hpp:133
Definition: IndexType.hpp:44
Tensor< T, Symmetry<>, index_list<> > Scalar
Scalar type.
Definition: TypeAliases.hpp:21
Defines classes representing tensor indices.