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