SpECTRE  v2024.04.12
RelativisticEuler::Valencia::BoundaryCorrections::Rusanov< Dim > Class Template Referencefinal

A Rusanov/local Lax-Friedrichs Riemann solver. More...

#include <Rusanov.hpp>

Public Types

using options = tmpl::list<>
 
using dg_package_field_tags = tmpl::list< Tags::TildeD, Tags::TildeTau, Tags::TildeS< Dim >, ::Tags::NormalDotFlux< Tags::TildeD >, ::Tags::NormalDotFlux< Tags::TildeTau >, ::Tags::NormalDotFlux< Tags::TildeS< Dim > >, AbsCharSpeed >
 
using dg_package_data_temporary_tags = tmpl::list< gr::Tags::Lapse< DataVector >, gr::Tags::Shift< DataVector, Dim >, gr::Tags::SpatialMetric< DataVector, Dim > >
 
using dg_package_data_primitive_tags = tmpl::list< hydro::Tags::RestMassDensity< DataVector >, hydro::Tags::SpecificInternalEnergy< DataVector >, hydro::Tags::SpecificEnthalpy< DataVector >, hydro::Tags::SpatialVelocity< DataVector, Dim > >
 
using dg_package_data_volume_tags = tmpl::list< hydro::Tags::EquationOfStateBase >
 
using dg_boundary_terms_volume_tags = tmpl::list<>
 
- Public Types inherited from RelativisticEuler::Valencia::BoundaryCorrections::BoundaryCorrection< Dim >
using creatable_classes = tmpl::list< Rusanov< Dim > >
 

Public Member Functions

 Rusanov (const Rusanov &)=default
 
Rusanovoperator= (const Rusanov &)=default
 
 Rusanov (Rusanov &&)=default
 
Rusanovoperator= (Rusanov &&)=default
 
void pup (PUP::er &p) override
 
std::unique_ptr< BoundaryCorrection< Dim > > get_clone () const override
 
template<size_t ThermodynamicDim>
double dg_package_data (gsl::not_null< Scalar< DataVector > * > packaged_tilde_d, gsl::not_null< Scalar< DataVector > * > packaged_tilde_tau, gsl::not_null< tnsr::i< DataVector, Dim, Frame::Inertial > * > packaged_tilde_s, gsl::not_null< Scalar< DataVector > * > packaged_normal_dot_flux_tilde_d, gsl::not_null< Scalar< DataVector > * > packaged_normal_dot_flux_tilde_tau, gsl::not_null< tnsr::i< DataVector, Dim, Frame::Inertial > * > packaged_normal_dot_flux_tilde_s, gsl::not_null< Scalar< DataVector > * > packaged_abs_char_speed, const Scalar< DataVector > &tilde_d, const Scalar< DataVector > &tilde_tau, const tnsr::i< DataVector, Dim, Frame::Inertial > &tilde_s, const tnsr::I< DataVector, Dim, Frame::Inertial > &flux_tilde_d, const tnsr::I< DataVector, Dim, Frame::Inertial > &flux_tilde_tau, const tnsr::Ij< DataVector, Dim, Frame::Inertial > &flux_tilde_s, const Scalar< DataVector > &lapse, const tnsr::I< DataVector, Dim, Frame::Inertial > &shift, const tnsr::ii< DataVector, Dim, Frame::Inertial > &spatial_metric, const Scalar< DataVector > &rest_mass_density, const Scalar< DataVector > &specific_internal_energy, const Scalar< DataVector > &specific_enthalpy, const tnsr::I< DataVector, Dim, Frame::Inertial > &spatial_velocity, const tnsr::i< DataVector, Dim, Frame::Inertial > &normal_covector, const tnsr::I< DataVector, Dim, Frame::Inertial > &normal_vector, const std::optional< tnsr::I< DataVector, Dim, Frame::Inertial > > &, const std::optional< Scalar< DataVector > > &normal_dot_mesh_velocity, const EquationsOfState::EquationOfState< true, ThermodynamicDim > &equation_of_state) const
 
void dg_boundary_terms (gsl::not_null< Scalar< DataVector > * > boundary_correction_tilde_d, gsl::not_null< Scalar< DataVector > * > boundary_correction_tilde_tau, gsl::not_null< tnsr::i< DataVector, Dim, Frame::Inertial > * > boundary_correction_tilde_s, const Scalar< DataVector > &tilde_d_int, const Scalar< DataVector > &tilde_tau_int, const tnsr::i< DataVector, Dim, Frame::Inertial > &tilde_s_int, const Scalar< DataVector > &normal_dot_flux_tilde_d_int, const Scalar< DataVector > &normal_dot_flux_tilde_tau_int, const tnsr::i< DataVector, Dim, Frame::Inertial > &normal_dot_flux_tilde_s_int, const Scalar< DataVector > &abs_char_speed_int, const Scalar< DataVector > &tilde_d_ext, const Scalar< DataVector > &tilde_tau_ext, const tnsr::i< DataVector, Dim, Frame::Inertial > &tilde_s_ext, const Scalar< DataVector > &normal_dot_flux_tilde_d_ext, const Scalar< DataVector > &normal_dot_flux_tilde_tau_ext, const tnsr::i< DataVector, Dim, Frame::Inertial > &normal_dot_flux_tilde_s_ext, const Scalar< DataVector > &abs_char_speed_ext, dg::Formulation dg_formulation) const
 
- Public Member Functions inherited from RelativisticEuler::Valencia::BoundaryCorrections::BoundaryCorrection< Dim >
 BoundaryCorrection (const BoundaryCorrection &)=default
 
BoundaryCorrectionoperator= (const BoundaryCorrection &)=default
 
 BoundaryCorrection (BoundaryCorrection &&)=default
 
BoundaryCorrectionoperator= (BoundaryCorrection &&)=default
 
virtual std::unique_ptr< BoundaryCorrection< Dim > > get_clone () const =0
 

Static Public Attributes

static constexpr Options::String help
 

Detailed Description

template<size_t Dim>
class RelativisticEuler::Valencia::BoundaryCorrections::Rusanov< Dim >

A Rusanov/local Lax-Friedrichs Riemann solver.

Let \(U\) be the state vector of evolved variables, \(F^i\) the corresponding fluxes, and \(n_i\) be the outward directed unit normal to the interface. Denoting \(F := n_i F^i\), the Rusanov boundary correction is

\begin{align*} G_\text{Rusanov} = \frac{F_\text{int} - F_\text{ext}}{2} - \frac{\text{max}\left(\{|\lambda_\text{int}|\}, \{|\lambda_\text{ext}|\}\right)}{2} \left(U_\text{ext} - U_\text{int}\right), \end{align*}

where "int" and "ext" stand for interior and exterior, and \(\{|\lambda|\}\) is the set of characteristic/signal speeds. The minus sign in front of the \(F_{\text{ext}}\) is necessary because the outward directed normal of the neighboring element has the opposite sign, i.e. \(n_i^{\text{ext}}=-n_i^{\text{int}}\). The characteristic/signal speeds expressions are listed in the documentation of characteristic_speeds.

Note
In the strong form the dg_boundary_terms function returns \(G - F_\text{int}\)

Member Function Documentation

◆ get_clone()

Member Data Documentation

◆ help

template<size_t Dim>
constexpr Options::String RelativisticEuler::Valencia::BoundaryCorrections::Rusanov< Dim >::help
staticconstexpr
Initial value:
= {
"Computes the Rusanov or local Lax-Friedrichs boundary correction term "
"for the Valencia formulation of the relativistic Euler/hydrodynamics "
"system."}

The documentation for this class was generated from the following file: