Finite Volume Solver  prototype
A framework to build finite volume solvers for the AG Klein at the Freie Universität Berlin.
Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
fub::perfect_gas::MusclHancockCharacteristic< Rank > Class Template Reference

This is a variation of the Muscl Hancock Method where the reconstruction at the half time level is based on the primitive variables (p, u, T, Y) instead of on conservative variables. More...

#include <MusclHancockCharactersticMethod.hpp>

Public Types

using Equation = PerfectGas< Rank >
 
using Complete = ::fub::Complete< Equation >
 
using Conservative = ::fub::Conservative< Equation >
 
using CompleteArray = ::fub::CompleteArray< Equation >
 
using ConservativeArray = ::fub::ConservativeArray< Equation >
 

Public Member Functions

 MusclHancockCharacteristic (const PerfectGas< Rank > &equation)
 
template<typename Limiter >
 MusclHancockCharacteristic (const PerfectGas< Rank > &equation, Limiter &&limiter)
 
double ComputeStableDt (span< const Complete, 4 > states, double dx, Direction dir) noexcept
 Returns a stable time step estimate based on HLL signal velocities. More...
 
Array1d ComputeStableDt (span< const CompleteArray, 4 > states, Array1d face_fraction, span< const Array1d, 4 > volume_fraction, double dx, Direction dir) noexcept
 Returns an array of stable time step estimates based on HLL signal velocities. More...
 
Array1d ComputeStableDt (span< const CompleteArray, 4 > states, double dx, Direction dir) noexcept
 
void ComputeNumericFlux (Conservative &flux, span< const Complete, 4 > stencil, Duration dt, double dx, Direction dir)
 
void ComputeNumericFlux (ConservativeArray &flux, span< const CompleteArray, 4 > stencil, Duration dt, double dx, Direction dir)
 
void ComputeNumericFlux (ConservativeArray &flux, Array1d face_fractions, span< const CompleteArray, 4 > stencil, span< const Array1d, 4 > volume_fractions, Duration dt, double dx, Direction dir)
 
const EquationGetEquation () const noexcept
 
EquationGetEquation () noexcept
 

Static Public Member Functions

static constexpr int GetStencilWidth () noexcept
 

Private Attributes

PerfectGas< Rank > equation_
 
std::array< Complete, 2 > reconstruction_
 
Primitives diffs_
 
Characteristics amplitudes_
 
Characteristics slopes_
 
std::function< double(double, double)> limiter_
 
std::array< CompleteArray, 2 > reconstruction_array_
 
PrimitivesArray diffs_array_
 
CharacteristicsArray amplitudes_array_
 
CharacteristicsArray slopes_array_
 
std::function< Array1d(Array1d, Array1d)> array_limiter_
 
HllemMethod< PerfectGas< Rank > > hllem_
 

Detailed Description

template<int Rank>
class fub::perfect_gas::MusclHancockCharacteristic< Rank >

This is a variation of the Muscl Hancock Method where the reconstruction at the half time level is based on the primitive variables (p, u, T, Y) instead of on conservative variables.

Member Typedef Documentation

◆ Complete

◆ CompleteArray

◆ Conservative

◆ ConservativeArray

◆ Equation

template<int Rank>
using fub::perfect_gas::MusclHancockCharacteristic< Rank >::Equation = PerfectGas<Rank>

Constructor & Destructor Documentation

◆ MusclHancockCharacteristic() [1/2]

template<int Rank>
fub::perfect_gas::MusclHancockCharacteristic< Rank >::MusclHancockCharacteristic ( const PerfectGas< Rank > &  equation)
inlineexplicit

◆ MusclHancockCharacteristic() [2/2]

template<int Rank>
template<typename Limiter >
fub::perfect_gas::MusclHancockCharacteristic< Rank >::MusclHancockCharacteristic ( const PerfectGas< Rank > &  equation,
Limiter &&  limiter 
)
inline

Member Function Documentation

◆ ComputeNumericFlux() [1/3]

template<int Rank>
void fub::perfect_gas::MusclHancockCharacteristic< Rank >::ComputeNumericFlux ( Conservative flux,
span< const Complete, 4 >  stencil,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeNumericFlux() [2/3]

template<int Rank>
void fub::perfect_gas::MusclHancockCharacteristic< Rank >::ComputeNumericFlux ( ConservativeArray flux,
Array1d  face_fractions,
span< const CompleteArray, 4 >  stencil,
span< const Array1d, 4 >  volume_fractions,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeNumericFlux() [3/3]

template<int Rank>
void fub::perfect_gas::MusclHancockCharacteristic< Rank >::ComputeNumericFlux ( ConservativeArray flux,
span< const CompleteArray, 4 >  stencil,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeStableDt() [1/3]

template<int Rank>
double fub::perfect_gas::MusclHancockCharacteristic< Rank >::ComputeStableDt ( span< const Complete, 4 >  states,
double  dx,
Direction  dir 
)
noexcept

Returns a stable time step estimate based on HLL signal velocities.

◆ ComputeStableDt() [2/3]

template<int Rank>
Array1d fub::perfect_gas::MusclHancockCharacteristic< Rank >::ComputeStableDt ( span< const CompleteArray, 4 >  states,
Array1d  face_fraction,
span< const Array1d, 4 >  volume_fraction,
double  dx,
Direction  dir 
)
noexcept

Returns an array of stable time step estimates based on HLL signal velocities.

◆ ComputeStableDt() [3/3]

template<int Rank>
Array1d fub::perfect_gas::MusclHancockCharacteristic< Rank >::ComputeStableDt ( span< const CompleteArray, 4 >  states,
double  dx,
Direction  dir 
)
noexcept

◆ GetEquation() [1/2]

template<int Rank>
const Equation& fub::perfect_gas::MusclHancockCharacteristic< Rank >::GetEquation ( ) const
inlinenoexcept

◆ GetEquation() [2/2]

template<int Rank>
Equation& fub::perfect_gas::MusclHancockCharacteristic< Rank >::GetEquation ( )
inlinenoexcept

◆ GetStencilWidth()

template<int Rank>
static constexpr int fub::perfect_gas::MusclHancockCharacteristic< Rank >::GetStencilWidth ( )
inlinestaticconstexprnoexcept

Member Data Documentation

◆ amplitudes_

template<int Rank>
Characteristics fub::perfect_gas::MusclHancockCharacteristic< Rank >::amplitudes_
private

◆ amplitudes_array_

template<int Rank>
CharacteristicsArray fub::perfect_gas::MusclHancockCharacteristic< Rank >::amplitudes_array_
private

◆ array_limiter_

template<int Rank>
std::function<Array1d(Array1d, Array1d)> fub::perfect_gas::MusclHancockCharacteristic< Rank >::array_limiter_
private

◆ diffs_

template<int Rank>
Primitives fub::perfect_gas::MusclHancockCharacteristic< Rank >::diffs_
private

◆ diffs_array_

template<int Rank>
PrimitivesArray fub::perfect_gas::MusclHancockCharacteristic< Rank >::diffs_array_
private

◆ equation_

template<int Rank>
PerfectGas<Rank> fub::perfect_gas::MusclHancockCharacteristic< Rank >::equation_
private

◆ hllem_

template<int Rank>
HllemMethod<PerfectGas<Rank> > fub::perfect_gas::MusclHancockCharacteristic< Rank >::hllem_
private

◆ limiter_

template<int Rank>
std::function<double(double, double)> fub::perfect_gas::MusclHancockCharacteristic< Rank >::limiter_
private

◆ reconstruction_

template<int Rank>
std::array<Complete, 2> fub::perfect_gas::MusclHancockCharacteristic< Rank >::reconstruction_
private

◆ reconstruction_array_

template<int Rank>
std::array<CompleteArray, 2> fub::perfect_gas::MusclHancockCharacteristic< Rank >::reconstruction_array_
private

◆ slopes_

template<int Rank>
Characteristics fub::perfect_gas::MusclHancockCharacteristic< Rank >::slopes_
private

◆ slopes_array_

template<int Rank>
CharacteristicsArray fub::perfect_gas::MusclHancockCharacteristic< Rank >::slopes_array_
private

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