Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <cstddef>
7 : #include <string>
8 :
9 : #include "DataStructures/DataBox/Tag.hpp"
10 : #include "DataStructures/Tensor/TypeAliases.hpp"
11 :
12 : /// \cond
13 : class DataVector;
14 : namespace Frame {
15 : struct Inertial;
16 : } // namespace Frame
17 : /// \endcond
18 :
19 : namespace Tags {
20 : template <size_t N, typename T>
21 0 : struct TempTensor : db::SimpleTag {
22 0 : using type = T;
23 0 : static std::string name() {
24 : return std::string("TempTensor") + std::to_string(N);
25 : }
26 : };
27 :
28 : /// @{
29 : /// \ingroup PeoGroup
30 : /// Variables Tags for temporary tensors inside a function.
31 : template <size_t N, typename DataType = DataVector>
32 1 : using TempScalar = TempTensor<N, Scalar<DataType>>;
33 :
34 : // Rank 1
35 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
36 : typename DataType = DataVector>
37 1 : using Tempa = TempTensor<N, tnsr::a<DataType, SpatialDim, Fr>>;
38 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
39 : typename DataType = DataVector>
40 1 : using TempA = TempTensor<N, tnsr::A<DataType, SpatialDim, Fr>>;
41 :
42 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
43 : typename DataType = DataVector>
44 1 : using Tempi = TempTensor<N, tnsr::i<DataType, SpatialDim, Fr>>;
45 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
46 : typename DataType = DataVector>
47 1 : using TempI = TempTensor<N, tnsr::I<DataType, SpatialDim, Fr>>;
48 :
49 : // Rank 2
50 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
51 : typename DataType = DataVector>
52 1 : using Tempab = TempTensor<N, tnsr::ab<DataType, SpatialDim, Fr>>;
53 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
54 : typename DataType = DataVector>
55 1 : using TempaB = TempTensor<N, tnsr::aB<DataType, SpatialDim, Fr>>;
56 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
57 : typename DataType = DataVector>
58 1 : using TempAb = TempTensor<N, tnsr::Ab<DataType, SpatialDim, Fr>>;
59 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
60 : typename DataType = DataVector>
61 1 : using TempAB = TempTensor<N, tnsr::AB<DataType, SpatialDim, Fr>>;
62 :
63 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
64 : typename DataType = DataVector>
65 1 : using Tempij = TempTensor<N, tnsr::ij<DataType, SpatialDim, Fr>>;
66 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
67 : typename DataType = DataVector>
68 1 : using TempiJ = TempTensor<N, tnsr::iJ<DataType, SpatialDim, Fr>>;
69 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
70 : typename DataType = DataVector>
71 1 : using TempIj = TempTensor<N, tnsr::Ij<DataType, SpatialDim, Fr>>;
72 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
73 : typename DataType = DataVector>
74 1 : using TempIJ = TempTensor<N, tnsr::IJ<DataType, SpatialDim, Fr>>;
75 :
76 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
77 : typename DataType = DataVector>
78 1 : using Tempia = TempTensor<N, tnsr::ia<DataType, SpatialDim, Fr>>;
79 :
80 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
81 : typename DataType = DataVector>
82 1 : using Tempaa = TempTensor<N, tnsr::aa<DataType, SpatialDim, Fr>>;
83 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
84 : typename DataType = DataVector>
85 1 : using TempAA = TempTensor<N, tnsr::AA<DataType, SpatialDim, Fr>>;
86 :
87 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
88 : typename DataType = DataVector>
89 1 : using Tempii = TempTensor<N, tnsr::ii<DataType, SpatialDim, Fr>>;
90 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
91 : typename DataType = DataVector>
92 1 : using TempII = TempTensor<N, tnsr::II<DataType, SpatialDim, Fr>>;
93 :
94 : // Rank 3
95 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
96 : typename DataType = DataVector>
97 1 : using Tempijj = TempTensor<N, tnsr::ijj<DataType, SpatialDim, Fr>>;
98 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
99 : typename DataType = DataVector>
100 1 : using TempIjj = TempTensor<N, tnsr::Ijj<DataType, SpatialDim, Fr>>;
101 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
102 : typename DataType = DataVector>
103 1 : using Tempijk = TempTensor<N, tnsr::ijk<DataType, SpatialDim, Fr>>;
104 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
105 : typename DataType = DataVector>
106 1 : using TempiJk = TempTensor<N, tnsr::iJk<DataType, SpatialDim, Fr>>;
107 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
108 : typename DataType = DataVector>
109 1 : using TempijK = TempTensor<N, tnsr::ijK<DataType, SpatialDim, Fr>>;
110 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
111 : typename DataType = DataVector>
112 1 : using Tempiii = TempTensor<N, tnsr::iii<DataType, SpatialDim, Fr>>;
113 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
114 : typename DataType = DataVector>
115 1 : using Tempiaa = TempTensor<N, tnsr::iaa<DataType, SpatialDim, Fr>>;
116 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
117 : typename DataType = DataVector>
118 1 : using TempIaa = TempTensor<N, tnsr::Iaa<DataType, SpatialDim, Fr>>;
119 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
120 : typename DataType = DataVector>
121 1 : using TempiaB = TempTensor<N, tnsr::iaB<DataType, SpatialDim, Fr>>;
122 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
123 : typename DataType = DataVector>
124 1 : using Tempabb = TempTensor<N, tnsr::abb<DataType, SpatialDim, Fr>>;
125 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
126 : typename DataType = DataVector>
127 1 : using TempabC = TempTensor<N, tnsr::abC<DataType, SpatialDim, Fr>>;
128 :
129 : // Rank 4
130 : template <size_t N, size_t SpatialDim, typename Fr = Frame::Inertial,
131 : typename DataType = DataVector>
132 1 : using Tempijaa = TempTensor<N, tnsr::ijaa<DataType, SpatialDim, Fr>>;
133 : /// @}
134 : } // namespace Tags
|