SpECTRE  v2025.03.17
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
ScalarAdvection::BoundaryCorrections::Rusanov< Dim > Class Template Referencefinal

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

#include <Rusanov.hpp>

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_volume_tags = implementation defined
 
using dg_boundary_terms_volume_tags = implementation defined
 
- Public Types inherited from ScalarAdvection::BoundaryCorrections::BoundaryCorrection< Dim >
using creatable_classes = implementation defined
 

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
 
- Public Member Functions inherited from ScalarAdvection::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 Member Functions

static double dg_package_data (gsl::not_null< Scalar< DataVector > * > packaged_u, gsl::not_null< Scalar< DataVector > * > packaged_normal_dot_flux_u, gsl::not_null< Scalar< DataVector > * > packaged_abs_char_speed, const Scalar< DataVector > &u, const tnsr::I< DataVector, Dim, Frame::Inertial > &flux_u, const tnsr::I< DataVector, Dim, Frame::Inertial > &velocity_field, const tnsr::i< DataVector, Dim, Frame::Inertial > &normal_covector, const std::optional< tnsr::I< DataVector, Dim, Frame::Inertial > > &mesh_velocity, const std::optional< Scalar< DataVector > > &normal_dot_mesh_velocity)
 
static void dg_boundary_terms (gsl::not_null< Scalar< DataVector > * > boundary_correction_u, const Scalar< DataVector > &u_int, const Scalar< DataVector > &normal_dot_flux_u_int, const Scalar< DataVector > &abs_char_speed_int, const Scalar< DataVector > &u_ext, const Scalar< DataVector > &normal_dot_flux_u_ext, const Scalar< DataVector > &abs_char_speed_ext, dg::Formulation dg_formulation)
 

Static Public Attributes

static constexpr Options::String help
 

Detailed Description

template<size_t Dim>
class ScalarAdvection::BoundaryCorrections::Rusanov< Dim >

A Rusanov/local Lax-Friedrichs Riemann solver.

Let U be the evolved scalar variable, Fi the corresponding fluxes, and ni be the outward directed unit normal to the interface. Denoting F:=niFi, the Rusanov boundary correction is

GRusanov=FintFext2max(|λint|,|λext|)2(UextUint),

where "int" and "ext" stand for interior and exterior, and λ is the characteristic/signal speed. The minus sign in front of the Fext is necessary because the outward directed normal of the neighboring element has the opposite sign, i.e. niext=niint.

For the ScalarAdvection system, λ is given as

λ=|v|=vivi

where vi is the advection velocity field.

Note
In the strong form the dg_boundary_terms function returns GFint

Member Function Documentation

◆ get_clone()

Member Data Documentation

◆ help

template<size_t Dim>
constexpr Options::String ScalarAdvection::BoundaryCorrections::Rusanov< Dim >::help
staticconstexpr
Initial value:
= {
"Computes the Rusanov or local Lax-Friedrichs boundary correction term "
"for the ScalarAdvection system."}

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