11 #include "Evolution/Systems/ScalarWave/BoundaryCorrections/BoundaryCorrection.hpp"
13 #include "NumericalAlgorithms/DiscontinuousGalerkin/Formulation.hpp"
173 template <
size_t Dim>
177 using type = tnsr::i<DataVector, Dim, Frame::Inertial>;
180 using type = tnsr::i<DataVector, Dim, Frame::Inertial>;
186 using type = tnsr::i<DataVector, 3, Frame::Inertial>;
190 using options = tmpl::list<>;
192 "Computes the UpwindPenalty boundary correction term for the scalar wave "
204 using PUP::able::register_constructor;
207 void pup(PUP::er& p)
override;
211 using dg_package_field_tags =
213 NormalTimesVPlus, NormalTimesVMinus, Gamma2VPsi,
215 using dg_package_data_temporary_tags = tmpl::list<Tags::ConstraintGamma2>;
216 using dg_package_data_volume_tags = tmpl::list<>;
218 double dg_package_data(
221 packaged_char_speed_v_zero,
225 packaged_char_speed_n_times_v_plus,
227 packaged_char_speed_n_times_v_minus,
230 packaged_char_speeds,
233 const tnsr::i<DataVector, Dim, Frame::Inertial>&
phi,
238 const tnsr::i<DataVector, Dim, Frame::Inertial>& normal_covector,
239 const std::optional<tnsr::I<DataVector, Dim, Frame::Inertial>>&
244 void dg_boundary_terms(
247 phi_boundary_correction,
251 const tnsr::i<DataVector, Dim, Frame::Inertial>& char_speed_v_zero_int,
254 const tnsr::i<DataVector, Dim, Frame::Inertial>&
255 char_speed_normal_times_v_plus_int,
256 const tnsr::i<DataVector, Dim, Frame::Inertial>&
257 char_speed_normal_times_v_minus_int,
259 const tnsr::i<DataVector, 3, Frame::Inertial>& char_speeds_int,
262 const tnsr::i<DataVector, Dim, Frame::Inertial>& char_speed_v_zero_ext,
265 const tnsr::i<DataVector, Dim, Frame::Inertial>&
266 char_speed_minus_normal_times_v_plus_ext,
267 const tnsr::i<DataVector, Dim, Frame::Inertial>&
268 char_speed_minus_normal_times_v_minus_ext,
270 const tnsr::i<DataVector, 3, Frame::Inertial>& char_speeds_ext,