SpECTRE
v2025.03.17
|
The HLLC (Harten-Lax-van Leer-Contact) Riemann solver for the NewtonianEuler system. More...
#include <Hllc.hpp>
Classes | |
struct | LargestIngoingCharSpeed |
struct | LargestOutgoingCharSpeed |
Public Types | |
using | options = implementation defined |
using | dg_package_field_tags = implementation defined |
using | dg_package_data_temporary_tags = implementation defined |
using | dg_package_data_primitive_tags = implementation defined |
using | dg_package_data_volume_tags = implementation defined |
using | dg_boundary_terms_volume_tags = implementation defined |
![]() | |
using | creatable_classes = implementation defined |
Public Member Functions | |
Hllc (const Hllc &)=default | |
Hllc & | operator= (const Hllc &)=default |
Hllc (Hllc &&)=default | |
Hllc & | operator= (Hllc &&)=default |
void | pup (PUP::er &p) override |
std::unique_ptr< BoundaryCorrection< Dim > > | get_clone () const override |
double | dg_package_data (gsl::not_null< Scalar< DataVector > * > packaged_mass_density, gsl::not_null< tnsr::I< DataVector, Dim, Frame::Inertial > * > packaged_momentum_density, gsl::not_null< Scalar< DataVector > * > packaged_energy_density, gsl::not_null< Scalar< DataVector > * > packaged_pressure, gsl::not_null< Scalar< DataVector > * > packaged_normal_dot_flux_mass_density, gsl::not_null< tnsr::I< DataVector, Dim, Frame::Inertial > * > packaged_normal_dot_flux_momentum_density, gsl::not_null< Scalar< DataVector > * > packaged_normal_dot_flux_energy_density, gsl::not_null< tnsr::i< DataVector, Dim, Frame::Inertial > * > packaged_interface_unit_normal, gsl::not_null< Scalar< DataVector > * > packaged_normal_dot_velocity, gsl::not_null< Scalar< DataVector > * > packaged_largest_outgoing_char_speed, gsl::not_null< Scalar< DataVector > * > packaged_largest_ingoing_char_speed, const Scalar< DataVector > &mass_density, const tnsr::I< DataVector, Dim, Frame::Inertial > &momentum_density, const Scalar< DataVector > &energy_density, const tnsr::I< DataVector, Dim, Frame::Inertial > &flux_mass_density, const tnsr::IJ< DataVector, Dim, Frame::Inertial > &flux_momentum_density, const tnsr::I< DataVector, Dim, Frame::Inertial > &flux_energy_density, const tnsr::I< DataVector, Dim, Frame::Inertial > &velocity, const Scalar< DataVector > &specific_internal_energy, const tnsr::i< DataVector, Dim, Frame::Inertial > &normal_covector, const std::optional< tnsr::I< DataVector, Dim, Frame::Inertial > > &, const std::optional< Scalar< DataVector > > &normal_dot_mesh_velocity, const EquationsOfState::EquationOfState< false, 2 > &equation_of_state) const |
void | dg_boundary_terms (gsl::not_null< Scalar< DataVector > * > boundary_correction_mass_density, gsl::not_null< tnsr::I< DataVector, Dim, Frame::Inertial > * > boundary_correction_momentum_density, gsl::not_null< Scalar< DataVector > * > boundary_correction_energy_density, const Scalar< DataVector > &mass_density_int, const tnsr::I< DataVector, Dim, Frame::Inertial > &momentum_density_int, const Scalar< DataVector > &energy_density_int, const Scalar< DataVector > &pressure_int, const Scalar< DataVector > &normal_dot_flux_mass_density_int, const tnsr::I< DataVector, Dim, Frame::Inertial > &normal_dot_flux_momentum_density_int, const Scalar< DataVector > &normal_dot_flux_energy_density_int, const tnsr::i< DataVector, Dim, Frame::Inertial > &interface_unit_normal_int, const Scalar< DataVector > &normal_dot_velocity_int, const Scalar< DataVector > &largest_outgoing_char_speed_int, const Scalar< DataVector > &largest_ingoing_char_speed_int, const Scalar< DataVector > &mass_density_ext, const tnsr::I< DataVector, Dim, Frame::Inertial > &momentum_density_ext, const Scalar< DataVector > &energy_density_ext, const Scalar< DataVector > &pressure_ext, const Scalar< DataVector > &normal_dot_flux_mass_density_ext, const tnsr::I< DataVector, Dim, Frame::Inertial > &normal_dot_flux_momentum_density_ext, const Scalar< DataVector > &normal_dot_flux_energy_density_ext, const tnsr::i< DataVector, Dim, Frame::Inertial > &interface_unit_normal_ext, const Scalar< DataVector > &normal_dot_velocity_ext, const Scalar< DataVector > &largest_outgoing_char_speed_ext, const Scalar< DataVector > &largest_ingoing_char_speed_ext, dg::Formulation dg_formulation) const |
![]() | |
BoundaryCorrection (const BoundaryCorrection &)=default | |
BoundaryCorrection & | operator= (const BoundaryCorrection &)=default |
BoundaryCorrection (BoundaryCorrection &&)=default | |
BoundaryCorrection & | operator= (BoundaryCorrection &&)=default |
virtual std::unique_ptr< BoundaryCorrection< Dim > > | get_clone () const =0 |
Static Public Attributes | |
static constexpr Options::String | help |
The HLLC (Harten-Lax-van Leer-Contact) Riemann solver for the NewtonianEuler system.
Let
where "int" and "ext" stand for interior and exterior.
Intermediate ('star') states are given by
and
The contact wave speed
where
Note the minus signs in front of
For the NewtonianEuler system,
where
dg_boundary_terms
function returns In the implementation, we use
with
Provided that
this prescription recovers the original HLLC boundary correction for all four cases. For either
|
overridevirtual |
|
staticconstexpr |