SpECTRE  v2024.12.16
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
Burgers::BoundaryCorrections::Hll Class Referencefinal

An HLL (Harten-Lax-van Leer) Riemann solver. More...

#include <Hll.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

 Hll (const Hll &)=default
 
Hlloperator= (const Hll &)=default
 
 Hll (Hll &&)=default
 
Hlloperator= (Hll &&)=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_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

An HLL (Harten-Lax-van Leer) 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 HLL boundary correction is

GHLL=λmaxFint+λminFextλmaxλminλminλmaxλmaxλmin(UintUext)

where "int" and "ext" stand for interior and exterior, and

λmin=min(Uint,Uext,0)λmax=max(Uint,Uext,0),

The positive sign in front of the Fext in GHLL and the minus signs in front of the Uext terms in λmin and λmax terms are necessary because the outward directed normal of the neighboring element has the opposite sign, i.e. niext=niint. Note that for either λmin=0 or λmax=0 (i.e. all characteristics move in the same direction) the HLL boundary correction reduces to pure upwinding.

Note
  • In the strong form the dg_boundary_terms function returns GFint
  • Some references use S instead of λ for the signal/characteristic speeds

Member Function Documentation

◆ get_clone()

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

Member Data Documentation

◆ help

constexpr Options::String Burgers::BoundaryCorrections::Hll::help
staticconstexpr
Initial value:
= {
"Computes the HLL boundary correction term for the Burgers system."}

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