SpECTRE  v2021.12.06
Burgers::BoundaryCorrections::Hll Class Referencefinal

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

#include <Hll.hpp>

Public Types

using options = tmpl::list<>
using dg_package_field_tags = tmpl::list< Tags::U, ::Tags::NormalDotFlux< Tags::U >, CharSpeed >
using dg_package_data_temporary_tags = tmpl::list<>
using dg_package_data_volume_tags = tmpl::list<>
- Public Types inherited from Burgers::BoundaryCorrections::BoundaryCorrection
using creatable_classes = tmpl::list< Hll, Rusanov >

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, \(F^i\) the flux, and \(n_i\) be the outward directed unit normal to the interface. Denoting \(F := n_i F^i\), the HLL boundary correction is [55]

\begin{align*} G_\text{HLL} = \frac{\lambda_\text{max} F_\text{int} + \lambda_\text{min} F_\text{ext}}{\lambda_\text{max} - \lambda_\text{min}} - \frac{\lambda_\text{min}\lambda_\text{max}}{\lambda_\text{max} - \lambda_\text{min}} \left(U_\text{int} - U_\text{ext}\right) \end{align*}

where "int" and "ext" stand for interior and exterior, and [31]

\begin{align*} \lambda_\text{min} &= \text{min}\left(U_\text{int},-U_\text{ext}, 0\right) \\ \lambda_\text{max} &= \text{max}\left(U_\text{int},-U_\text{ext}, 0\right), \end{align*}

The positive sign in front of the \(F_{\text{ext}}\) in \(G_\text{HLL}\) and the minus signs in front of the \(U_\text{ext}\) terms in \(\lambda_\text{min}\) and \(\lambda_\text{max}\) terms are necessary because the outward directed normal of the neighboring element has the opposite sign, i.e. \(n_i^{\text{ext}}=-n_i^{\text{int}}\). Note that for either \(\lambda_\text{min} = 0\) or \(\lambda_\text{max} = 0\) (i.e. all characteristics move in the same direction) the HLL boundary correction reduces to pure upwinding.

  • In the strong form the dg_boundary_terms function returns \(G - F_\text{int}\)
  • Some references use \(S\) instead of \(\lambda\) for the signal/characteristic speeds

Member Function Documentation

◆ get_clone()

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

Member Data Documentation

◆ help

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

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