10 #include "Elliptic/Systems/Xcts/Tags.hpp"
13 #include "PointwiseFunctions/GeneralRelativity/Tags.hpp"
15 #include "Utilities/TaggedTuple.hpp"
74 template <SchwarzschildCoordinates Coords>
83 using options = tmpl::list<Mass>;
85 "Schwarzschild spacetime in general relativity"};
97 double mass()
const noexcept;
104 template <
typename DataType>
105 auto variables(
const tnsr::I<DataType, 3, Frame::Inertial>& x,
111 template <
typename DataType>
113 const tnsr::I<DataType, 3, Frame::Inertial>& x,
118 template <
typename DataType>
120 const tnsr::I<DataType, 3, Frame::Inertial>& x,
127 template <
typename DataType>
129 const tnsr::I<DataType, 3, Frame::Inertial>& x,
133 template <
typename DataType>
135 const tnsr::I<DataType, 3, Frame::Inertial>& x,
142 template <
typename DataType>
144 const tnsr::I<DataType, 3, Frame::Inertial>& x,
149 template <
typename DataType>
151 const tnsr::I<DataType, 3, Frame::Inertial>& x,
158 template <
typename DataType>
159 auto variables(
const tnsr::I<DataType, 3, Frame::Inertial>& x,
165 template <
typename DataType>
167 const tnsr::I<DataType, 3, Frame::Inertial>& x,
173 template <
typename DataType>
175 const tnsr::I<DataType, 3, Frame::Inertial>& x,
181 template <
typename DataType>
182 auto variables(
const tnsr::I<DataType, 3, Frame::Inertial>& x,
188 template <
typename DataType>
189 auto variables(
const tnsr::I<DataType, 3, Frame::Inertial>& x,
195 template <
typename DataType>
196 auto variables(
const tnsr::I<DataType, 3, Frame::Inertial>& x,
202 template <
typename DataType>
203 auto variables(
const tnsr::I<DataType, 3, Frame::Inertial>& x,
207 template <
typename DataType>
208 auto variables(
const tnsr::I<DataType, 3, Frame::Inertial>& x,
212 template <
typename DataType>
213 auto variables(
const tnsr::I<DataType, 3, Frame::Inertial>& x,
221 template <
typename DataType,
typename... Tags>
223 const tnsr::I<DataType, 3, Frame::Inertial>& x,
224 tmpl::list<Tags...> )
const noexcept {
225 static_assert(
sizeof...(Tags) > 1,
"The requested tag is not implemented.");
226 return {tuples::get<Tags>(
variables(x, tmpl::list<Tags>{}))...};
229 void pup(PUP::er& p) noexcept {
237 template <SchwarzschildCoordinates Coords>
239 const Schwarzschild<Coords>& lhs,
240 const Schwarzschild<Coords>& rhs) noexcept {
241 return lhs.mass() == rhs.mass();
244 template <SchwarzschildCoordinates Coords>
246 const Schwarzschild<Coords>& lhs,
247 const Schwarzschild<Coords>& rhs) noexcept {
248 return not(lhs == rhs);