8 #include "DataStructures/DataBox/Tag.hpp"
9 #include "DataStructures/Tensor/EagerMath/Magnitude.hpp"
14 #include "Evolution/Systems/CurvedScalarWave/TagsDeclarations.hpp"
15 #include "PointwiseFunctions/GeneralRelativity/TagsDeclarations.hpp"
47 template <
size_t SpatialDim>
50 const tnsr::I<DataVector, SpatialDim, Frame::Inertial>&
shift,
51 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>&
54 template <
size_t SpatialDim>
55 void characteristic_speeds(
58 const tnsr::I<DataVector, SpatialDim, Frame::Inertial>&
shift,
59 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>&
62 template <
size_t SpatialDim>
67 using argument_tags = tmpl::list<
72 static constexpr
void function(
75 const tnsr::I<DataVector, SpatialDim, Frame::Inertial>&
shift,
76 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>&
78 characteristic_speeds<SpatialDim>(result, gamma_1,
lapse,
shift,
132 template <
size_t SpatialDim>
135 characteristic_fields(
137 const tnsr::II<DataVector, SpatialDim, Frame::Inertial>&
138 inverse_spatial_metric,
140 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>&
phi,
141 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>&
144 template <
size_t SpatialDim>
145 void characteristic_fields(
150 const tnsr::II<DataVector, SpatialDim, Frame::Inertial>&
151 inverse_spatial_metric,
153 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>&
phi,
154 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>&
157 template <
size_t SpatialDim>
161 using return_type =
typename base::type;
162 using argument_tags = tmpl::list<
168 static constexpr
void function(
170 const tnsr::II<DataVector, SpatialDim, Frame::Inertial>&
171 inverse_spatial_metric,
173 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>&
phi,
174 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>&
176 characteristic_fields<SpatialDim>(result, gamma_2, inverse_spatial_metric,
187 template <
size_t SpatialDim>
188 Variables<tmpl::list<Psi, Pi, Phi<SpatialDim>>>
189 evolved_fields_from_characteristic_fields(
191 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>& v_zero,
193 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>&
196 template <
size_t SpatialDim>
197 void evolved_fields_from_characteristic_fields(
201 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>& v_zero,
203 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>&
206 template <
size_t SpatialDim>
211 using return_type =
typename base::type;
212 using argument_tags = tmpl::list<
217 static constexpr
void function(
220 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>& v_zero,
222 const tnsr::i<DataVector, SpatialDim, Frame::Inertial>&
224 evolved_fields_from_characteristic_fields<SpatialDim>(
233 template <
size_t SpatialDim>
235 using argument_tags = tmpl::list<Tags::CharacteristicSpeeds<SpatialDim>>;