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 "Elliptic/BoundaryConditions/BoundaryCondition.hpp"
9 : #include "Elliptic/Protocols/FirstOrderSystem.hpp"
10 : #include "Elliptic/Systems/ScalarGaussBonnet/Equations.hpp"
11 : #include "Elliptic/Systems/Xcts/Tags.hpp"
12 : #include "Evolution/Systems/CurvedScalarWave/Tags.hpp"
13 : #include "NumericalAlgorithms/LinearOperators/PartialDerivatives.hpp"
14 : #include "Utilities/ProtocolHelpers.hpp"
15 : #include "Utilities/TMPL.hpp"
16 :
17 : namespace sgb {
18 :
19 : /*!
20 : * \brief The scalar equation in sGB theories of gravity in the decoupled limit,
21 : * assuming quasi-stationarity. See \ref sgb for details on the
22 : * explicit equation.
23 : */
24 1 : struct FirstOrderSystem
25 : : tt::ConformsTo<elliptic::protocols::FirstOrderSystem> {
26 : private:
27 0 : using field = ::sgb::Tags::Psi;
28 :
29 : public:
30 0 : static constexpr size_t volume_dim = 3;
31 :
32 0 : using primal_fields = tmpl::list<field>;
33 0 : using primal_fluxes =
34 : tmpl::list<::Tags::Flux<field, tmpl::size_t<3>, Frame::Inertial>>;
35 : // Note that there are many more background fields required for the elliptic
36 : // solve, however these are numerically imported and so are not listed here.
37 0 : using background_fields = tmpl::list<
38 : Xcts::Tags::InverseConformalMetric<DataVector, 3, Frame::Inertial>,
39 : Xcts::Tags::ConformalChristoffelContracted<DataVector, 3,
40 : Frame::Inertial>>;
41 0 : using inv_metric_tag =
42 : Xcts::Tags::InverseConformalMetric<DataVector, 3, Frame::Inertial>;
43 :
44 0 : using fluxes_computer = Fluxes;
45 0 : using sources_computer = Sources;
46 0 : using sources_computer_linearized = LinearizedSources;
47 :
48 0 : using boundary_conditions_base =
49 : elliptic::BoundaryConditions::BoundaryCondition<3>;
50 0 : using modify_boundary_data = void;
51 : };
52 :
53 : } // namespace sgb
|