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 :
8 : #include "DataStructures/DataBox/Prefixes.hpp"
9 : #include "NumericalAlgorithms/LinearOperators/PartialDerivatives.hpp"
10 : #include "PointwiseFunctions/GeneralRelativity/TagsDeclarations.hpp"
11 :
12 : namespace gr {
13 : /// Base struct for properties common to all GR analytic solutions
14 : template <size_t Dim>
15 1 : struct AnalyticSolution {
16 0 : static constexpr size_t volume_dim = Dim;
17 : template <typename DataType, typename Frame = ::Frame::Inertial>
18 0 : using DerivLapse = ::Tags::deriv<gr::Tags::Lapse<DataType>,
19 : tmpl::size_t<volume_dim>, Frame>;
20 : template <typename DataType, typename Frame = ::Frame::Inertial>
21 0 : using DerivShift = ::Tags::deriv<gr::Tags::Shift<DataType, volume_dim, Frame>,
22 : tmpl::size_t<volume_dim>, Frame>;
23 : template <typename DataType, typename Frame = ::Frame::Inertial>
24 0 : using DerivSpatialMetric =
25 : ::Tags::deriv<gr::Tags::SpatialMetric<DataType, volume_dim, Frame>,
26 : tmpl::size_t<volume_dim>, Frame>;
27 :
28 : template <typename DataType, typename Frame = ::Frame::Inertial>
29 0 : using tags = tmpl::list<
30 : gr::Tags::Lapse<DataType>, ::Tags::dt<gr::Tags::Lapse<DataType>>,
31 : DerivLapse<DataType, Frame>, gr::Tags::Shift<DataType, volume_dim, Frame>,
32 : ::Tags::dt<gr::Tags::Shift<DataType, volume_dim, Frame>>,
33 : DerivShift<DataType, Frame>,
34 : gr::Tags::SpatialMetric<DataType, volume_dim, Frame>,
35 : ::Tags::dt<gr::Tags::SpatialMetric<DataType, volume_dim, Frame>>,
36 : DerivSpatialMetric<DataType, Frame>,
37 : gr::Tags::SqrtDetSpatialMetric<DataType>,
38 : gr::Tags::ExtrinsicCurvature<DataType, volume_dim, Frame>,
39 : gr::Tags::InverseSpatialMetric<DataType, volume_dim, Frame>>;
40 : };
41 :
42 : /*!
43 : * \ingroup AnalyticSolutionsGroup
44 : * \brief Classes which implement analytic solutions to Einstein's equations
45 : */
46 : namespace Solutions {}
47 : } // namespace gr
|