SpECTRE  v2025.03.17
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
Burgers::BoundaryCorrections::Rusanov Class 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 Burgers::BoundaryCorrections::BoundaryCorrection
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< BoundaryCorrectionget_clone () const override
 
- Public Member Functions inherited from Burgers::BoundaryCorrections::BoundaryCorrection
 BoundaryCorrection (const BoundaryCorrection &)=default
 
BoundaryCorrectionoperator= (const BoundaryCorrection &)=default
 
 BoundaryCorrection (BoundaryCorrection &&)=default
 
BoundaryCorrectionoperator= (BoundaryCorrection &&)=default
 
 BoundaryCorrection (CkMigrateMessage *msg)
 
virtual std::unique_ptr< BoundaryCorrectionget_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, gsl::not_null< Scalar< DataVector > * > packaged_abs_char_speed, const Scalar< DataVector > &u, const tnsr::I< DataVector, 1, Frame::Inertial > &flux_u, const tnsr::i< DataVector, 1, Frame::Inertial > &normal_covector, const std::optional< tnsr::I< DataVector, 1, 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

A Rusanov/local Lax-Friedrichs Riemann solver.

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

GRusanov=FintFext2max(|Uint|,|Uext|)2(UextUint),

where "int" and "ext" stand for interior and exterior. 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.

Note
In the strong form the dg_boundary_terms function returns GFint

Member Function Documentation

◆ get_clone()

std::unique_ptr< BoundaryCorrection > Burgers::BoundaryCorrections::Rusanov::get_clone ( ) const
overridevirtual

Member Data Documentation

◆ help

constexpr Options::String Burgers::BoundaryCorrections::Rusanov::help
staticconstexpr
Initial value:
= {
"Computes the Rusanov or local Lax-Friedrichs boundary correction term "
"for the Burgers system."}

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