Classes | Public Types | Public Member Functions | Static Public Attributes | Friends | List of all members
NewtonianEuler::Solutions::RiemannProblem< Dim > Class Template Reference

Analytic solution to the Riemann Problem. More...

#include <RiemannProblem.hpp>

Classes

struct  AdiabaticIndex
 The adiabatic index of the fluid. More...
 
struct  InitialData
 Holds initial data on a side of the discontinuity and related quantities. More...
 
struct  InitialPosition
 Initial position of the discontinuity. More...
 
struct  LeftMassDensity
 The mass density on the left of the initial discontinuity. More...
 
struct  LeftPressure
 The pressure on the left of the initial discontinuity. More...
 
struct  LeftVelocity
 The velocity on the left of the initial discontinuity. More...
 
struct  PressureStarTol
 The tolerance for solving for \(p_*\). More...
 
struct  RightMassDensity
 The mass density on the right of the initial discontinuity. More...
 
struct  RightPressure
 The pressure on the right of the initial discontinuity. More...
 
struct  RightVelocity
 The velocity on the right of the initial discontinuity. More...
 

Public Types

using equation_of_state_type = EquationsOfState::IdealFluid< false >
 
using source_term_type = Sources::NoSource
 
using options = tmpl::list< AdiabaticIndex, InitialPosition, LeftMassDensity, LeftVelocity, LeftPressure, RightMassDensity, RightVelocity, RightPressure, PressureStarTol >
 

Public Member Functions

 RiemannProblem (const RiemannProblem &)=delete
 
RiemannProblemoperator= (const RiemannProblem &)=delete
 
 RiemannProblem (RiemannProblem &&) noexcept=default
 
RiemannProblemoperator= (RiemannProblem &&) noexcept=default
 
 RiemannProblem (double adiabatic_index, double initial_position, double left_mass_density, const std::array< double, Dim > &left_velocity, double left_pressure, double right_mass_density, const std::array< double, Dim > &right_velocity, double right_pressure, double pressure_star_tol=PressureStarTol::suggested_value()) noexcept
 
template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, Dim, Frame::Inertial > &x, double t, tmpl::list< Tags... >) const noexcept
 Retrieve a collection of hydrodynamic variables at position x and time t
 
const EquationsOfState::IdealFluid< false > & equation_of_state () const noexcept
 
void pup (PUP::er &) noexcept
 
constexpr std::array< double, 2 > diagnostic_star_region_values () const noexcept
 

Static Public Attributes

static constexpr Options::String help
 

Friends

template<size_t SpatialDim>
bool operator== (const RiemannProblem< SpatialDim > &lhs, const RiemannProblem< SpatialDim > &rhs) noexcept
 

Detailed Description

template<size_t Dim>
class NewtonianEuler::Solutions::RiemannProblem< Dim >

Analytic solution to the Riemann Problem.

This class implements the exact Riemann solver described in detail in Chapter 4 of [107]. We follow the notation there. The algorithm implemented here allows for 1, 2 and 3D wave propagation along any coordinate axis. Typical initial data for test cases (see [107]) include:

where \(\rho\) is the mass density, \(p\) is the pressure, and \(u\) denotes the normal velocity.

Note
Currently the propagation axis must be hard-coded as a size_t private member variable propagation_axis_, which can take one of the three values PropagationAxis::X, PropagationAxis::Y, and PropagationAxis::Z.

Details

The algorithm makes use of the following recipe:

Note
The characterization of each propagating wave will only depend on the normal velocity, while the initial jump in the components of the velocity transverse to the wave propagation will be advected at the speed of the contact discontinuity ( \(u_*\)).

Member Data Documentation

◆ help

template<size_t Dim>
constexpr Options::String NewtonianEuler::Solutions::RiemannProblem< Dim >::help
staticconstexpr
Initial value:
= {
"Riemann Problem in 1, 2 or 3D along any coordinate axis."}

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