11 #include "Evolution/Systems/GrMhd/ValenciaDivClean/BoundaryCorrections/BoundaryCorrection.hpp"
12 #include "Evolution/Systems/GrMhd/ValenciaDivClean/Tags.hpp"
13 #include "NumericalAlgorithms/DiscontinuousGalerkin/Formulation.hpp"
16 #include "PointwiseFunctions/GeneralRelativity/Tags.hpp"
76 using options = tmpl::list<>;
78 "Computes the Rusanov or local Lax-Friedrichs boundary correction term "
79 "for the GRMHD system."};
89 explicit Rusanov(CkMigrateMessage* ) noexcept;
90 using PUP::able::register_constructor;
93 void pup(PUP::er& p)
override;
97 using dg_package_field_tags =
98 tmpl::list<Tags::TildeD, Tags::TildeTau, Tags::TildeS<Frame::Inertial>,
105 using dg_package_data_temporary_tags =
106 tmpl::list<gr::Tags::Lapse<DataVector>,
108 using dg_package_data_primitive_tags = tmpl::list<>;
109 using dg_package_data_volume_tags = tmpl::list<>;
111 static double dg_package_data(
114 gsl::not_null<tnsr::i<DataVector, 3, Frame::Inertial>*> packaged_tilde_s,
115 gsl::not_null<tnsr::I<DataVector, 3, Frame::Inertial>*> packaged_tilde_b,
120 packaged_normal_dot_flux_tilde_s,
122 packaged_normal_dot_flux_tilde_b,
127 const tnsr::i<DataVector, 3, Frame::Inertial>& tilde_s,
128 const tnsr::I<DataVector, 3, Frame::Inertial>& tilde_b,
131 const tnsr::I<DataVector, 3, Frame::Inertial>& flux_tilde_d,
132 const tnsr::I<DataVector, 3, Frame::Inertial>& flux_tilde_tau,
133 const tnsr::Ij<DataVector, 3, Frame::Inertial>& flux_tilde_s,
134 const tnsr::IJ<DataVector, 3, Frame::Inertial>& flux_tilde_b,
135 const tnsr::I<DataVector, 3, Frame::Inertial>& flux_tilde_phi,
138 const tnsr::I<DataVector, 3, Frame::Inertial>&
shift,
140 const tnsr::i<DataVector, 3, Frame::Inertial>& normal_covector,
141 const tnsr::I<DataVector, 3, Frame::Inertial>& normal_vector,
142 const std::optional<tnsr::I<DataVector, 3, Frame::Inertial>>&
145 normal_dot_mesh_velocity) noexcept;
147 static void dg_boundary_terms(
151 boundary_correction_tilde_s,
153 boundary_correction_tilde_b,
157 const tnsr::i<DataVector, 3, Frame::Inertial>& tilde_s_int,
158 const tnsr::I<DataVector, 3, Frame::Inertial>& tilde_b_int,
162 const tnsr::i<DataVector, 3, Frame::Inertial>&
163 normal_dot_flux_tilde_s_int,
164 const tnsr::I<DataVector, 3, Frame::Inertial>&
165 normal_dot_flux_tilde_b_int,
170 const tnsr::i<DataVector, 3, Frame::Inertial>& tilde_s_ext,
171 const tnsr::I<DataVector, 3, Frame::Inertial>& tilde_b_ext,
175 const tnsr::i<DataVector, 3, Frame::Inertial>&
176 normal_dot_flux_tilde_s_ext,
177 const tnsr::I<DataVector, 3, Frame::Inertial>&
178 normal_dot_flux_tilde_b_ext,