6 #include "DataStructures/DataBox/PrefixHelpers.hpp"
9 #include "NumericalAlgorithms/DiscontinuousGalerkin/NumericalFluxes/NumericalFluxHelpers.hpp"
10 #include "NumericalAlgorithms/DiscontinuousGalerkin/Protocols.hpp"
11 #include "NumericalAlgorithms/DiscontinuousGalerkin/SimpleBoundaryData.hpp"
13 #include "Utilities/ProtocolHelpers.hpp"
21 template <
typename NumericalFluxType>
22 struct BoundaryDataImpl {
24 tt::assert_conforms_to<NumericalFluxType, protocols::NumericalFlux>);
26 tmpl::remove_duplicates<tmpl::append<
28 typename NumericalFluxType::variables_tags>,
29 typename NumericalFluxType::package_field_tags>>,
30 typename NumericalFluxType::package_extra_tags>;
45 template <
typename NumericalFluxType>
59 size_t FaceDim,
typename NumericalFluxType,
typename... NumericalFluxArgs,
63 const NumericalFluxType& numerical_flux_computer,
68 const NumericalFluxArgs&... args) noexcept {
70 face_mesh.number_of_grid_points()};
71 boundary_data.field_data.assign_subset(normal_dot_fluxes);
72 dg::NumericalFluxes::package_data(
make_not_null(&boundary_data),
73 numerical_flux_computer, args...);
Functionality related to discontinuous Galerkin schemes.
Definition: ComputeNonconservativeBoundaryFluxes.hpp:23
auto package_boundary_data(const NumericalFluxType &numerical_flux_computer, const Mesh< FaceDim > &face_mesh, const Variables< db::wrap_tags_in< ::Tags::NormalDotFlux, typename NumericalFluxType::variables_tags >> &normal_dot_fluxes, const NumericalFluxArgs &... args) noexcept
Package the data on element boundaries that's needed for the (strong) first-order boundary scheme.
Definition: BoundaryData.hpp:62
Distinguishes between field data, which can be projected to a mortar, and extra data,...
Definition: SimpleBoundaryData.hpp:35
typename detail::BoundaryDataImpl< NumericalFluxType >::type BoundaryData
The data on element boundaries that's needed for the (strong) first-order boundary scheme.
Definition: BoundaryData.hpp:46
Holds the number of grid points, basis, and quadrature in each direction of the computational grid.
Definition: Mesh.hpp:48
Boundary contributions for a first-order DG scheme.
Definition: FirstOrderScheme.hpp:66
gsl::not_null< T * > make_not_null(T *ptr) noexcept
Construct a not_null from a pointer. Often this will be done as an implicit conversion,...
Definition: Gsl.hpp:880
typename Requires_detail::requires_impl< B >::template_error_type_failed_to_meet_requirements_on_template_parameters Requires
Express requirements on the template parameters of a function or class, replaces std::enable_if_t
Definition: Requires.hpp:67