Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include "DataStructures/VariablesTag.hpp"
7 : #include "Evolution/Systems/GeneralizedHarmonic/BoundaryConditions/BoundaryCondition.hpp"
8 : #include "Evolution/Systems/GeneralizedHarmonic/Characteristics.hpp"
9 : #include "Evolution/Systems/GeneralizedHarmonic/Equations.hpp"
10 : #include "Evolution/Systems/GeneralizedHarmonic/TimeDerivative.hpp"
11 : #include "PointwiseFunctions/AnalyticSolutions/GeneralRelativity/Factory.hpp"
12 : #include "PointwiseFunctions/GeneralRelativity/Tags.hpp"
13 : #include "Utilities/TMPL.hpp"
14 :
15 : /// \cond
16 : class DataVector;
17 : /// \endcond
18 :
19 : /*!
20 : * \ingroup EvolutionSystemsGroup
21 : * \brief Items related to evolving the first-order generalized harmonic system.
22 : */
23 : namespace gh {
24 : template <size_t Dim>
25 0 : struct System {
26 0 : static std::string name() { return "GeneralizedHarmonic"; }
27 :
28 0 : static constexpr bool is_in_flux_conservative_form = false;
29 0 : static constexpr bool has_primitive_and_conservative_vars = false;
30 0 : static constexpr size_t volume_dim = Dim;
31 0 : static constexpr bool is_euclidean = false;
32 :
33 0 : using boundary_conditions_base = BoundaryConditions::BoundaryCondition<Dim>;
34 :
35 0 : using variables_tag = ::Tags::Variables<
36 : tmpl::list<gr::Tags::SpacetimeMetric<DataVector, Dim>,
37 : Tags::Pi<DataVector, Dim>, Tags::Phi<DataVector, Dim>>>;
38 0 : using flux_variables = tmpl::list<>;
39 0 : using gradient_variables =
40 : tmpl::list<gr::Tags::SpacetimeMetric<DataVector, Dim>,
41 : Tags::Pi<DataVector, Dim>, Tags::Phi<DataVector, Dim>>;
42 0 : using gradients_tags = gradient_variables;
43 :
44 0 : using compute_volume_time_derivative_terms =
45 : TimeDerivative<gh::Solutions::all_solutions<Dim>, Dim>;
46 0 : using normal_dot_fluxes = ComputeNormalDotFluxes<Dim>;
47 :
48 0 : using compute_largest_characteristic_speed =
49 : Tags::ComputeLargestCharacteristicSpeed<Dim, Frame::Inertial>;
50 :
51 0 : using inverse_spatial_metric_tag =
52 : gr::Tags::InverseSpatialMetric<DataVector, Dim>;
53 : };
54 : } // namespace gh
|