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::MusclHancock< EquationT, BaseMethod, SlopeLimiter > Struct Template Reference

#include <MusclHancockMethod.hpp>

Public Types

using Equation = EquationT
 
using Complete = typename Equation::Complete
 
using Conservative = typename Equation::Conservative
 
using CompleteArray = ::fub::CompleteArray< Equation >
 
using ConservativeArray = ::fub::ConservativeArray< Equation >
 

Public Member Functions

 MusclHancock (const Equation &eq)
 
 MusclHancock (const Equation &eq, const BaseMethod &method)
 
double ComputeStableDt (span< const Complete, 4 > states, double dx, Direction dir) noexcept
 
Array1d ComputeStableDt (span< const CompleteArray, 4 > states, double dx, Direction dir) noexcept
 
Array1d ComputeStableDt (span< const CompleteArray, 4 > states, Array1d face_fraction, span< const Array1d, 4 > volume_fraction, double dx, Direction dir)
 
void ComputeNumericFlux (Conservative &flux, span< const Complete, 4 > stencil, Duration dt, double dx, Direction dir)
 
void ComputeNumericFlux (Conservative &flux, span< const Complete, 2 > stencil, span< const Conservative, 2 > gradients, 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< 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

Equation equation_
 
BaseMethod flux_method_
 
SlopeLimiter slope_limiter_
 
std::array< Complete, 2 > rec_
 
Conservative slope_
 
Conservative flux_left_
 
Conservative flux_right_
 
Complete q_left_
 
Complete q_right_
 
std::array< CompleteArray, 2 > rec_arr_
 
ConservativeArray slope_arr_
 
ConservativeArray flux_left_arr_
 
ConservativeArray flux_right_arr_
 
CompleteArray q_left_arr_
 
CompleteArray q_right_arr_
 

Member Typedef Documentation

◆ Complete

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
using fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::Complete = typename Equation::Complete

◆ CompleteArray

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
using fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::CompleteArray = ::fub::CompleteArray<Equation>

◆ Conservative

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
using fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::Conservative = typename Equation::Conservative

◆ ConservativeArray

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
using fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::ConservativeArray = ::fub::ConservativeArray<Equation>

◆ Equation

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
using fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::Equation = EquationT

Constructor & Destructor Documentation

◆ MusclHancock() [1/2]

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::MusclHancock ( const Equation eq)
inlineexplicit

◆ MusclHancock() [2/2]

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::MusclHancock ( const Equation eq,
const BaseMethod &  method 
)
inline

Member Function Documentation

◆ ComputeNumericFlux() [1/4]

template<typename Equation , typename Method , typename SlopeLimiter >
void fub::MusclHancock< Equation, Method, SlopeLimiter >::ComputeNumericFlux ( Conservative flux,
span< const Complete, 2 >  stencil,
span< const Conservative, 2 >  gradients,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeNumericFlux() [2/4]

template<typename Equation , typename Method , typename SlopeLimiter >
void fub::MusclHancock< Equation, Method, SlopeLimiter >::ComputeNumericFlux ( Conservative flux,
span< const Complete, 4 >  stencil,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeNumericFlux() [3/4]

template<typename Equation , typename Method , typename SlopeLimiter >
void fub::MusclHancock< Equation, Method, SlopeLimiter >::ComputeNumericFlux ( ConservativeArray flux,
Array1d  face_fractions,
span< const CompleteArray, 4 >  stencil,
span< Array1d, 4 >  volume_fractions,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeNumericFlux() [4/4]

template<typename Equation , typename Method , typename SlopeLimiter >
void fub::MusclHancock< Equation, Method, SlopeLimiter >::ComputeNumericFlux ( ConservativeArray flux,
span< const CompleteArray, 4 >  stencil,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeStableDt() [1/3]

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
double fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::ComputeStableDt ( span< const Complete, 4 >  states,
double  dx,
Direction  dir 
)
inlinenoexcept

◆ ComputeStableDt() [2/3]

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
Array1d fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::ComputeStableDt ( span< const CompleteArray, 4 >  states,
Array1d  face_fraction,
span< const Array1d, 4 >  volume_fraction,
double  dx,
Direction  dir 
)
inline

◆ ComputeStableDt() [3/3]

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
Array1d fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::ComputeStableDt ( span< const CompleteArray, 4 >  states,
double  dx,
Direction  dir 
)
inlinenoexcept

◆ GetEquation() [1/2]

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
const Equation& fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::GetEquation ( ) const
inlinenoexcept

◆ GetEquation() [2/2]

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
Equation& fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::GetEquation ( )
inlinenoexcept

◆ GetStencilWidth()

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
static constexpr int fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::GetStencilWidth ( )
inlinestaticconstexprnoexcept

Member Data Documentation

◆ equation_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
Equation fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::equation_
private

◆ flux_left_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
Conservative fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::flux_left_
private

◆ flux_left_arr_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
ConservativeArray fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::flux_left_arr_
private

◆ flux_method_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
BaseMethod fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::flux_method_
private

◆ flux_right_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
Conservative fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::flux_right_
private

◆ flux_right_arr_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
ConservativeArray fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::flux_right_arr_
private

◆ q_left_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
Complete fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::q_left_
private

◆ q_left_arr_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
CompleteArray fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::q_left_arr_
private

◆ q_right_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
Complete fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::q_right_
private

◆ q_right_arr_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
CompleteArray fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::q_right_arr_
private

◆ rec_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
std::array<Complete, 2> fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::rec_
private

◆ rec_arr_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
std::array<CompleteArray, 2> fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::rec_arr_
private

◆ slope_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
Conservative fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::slope_
private

◆ slope_arr_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
ConservativeArray fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::slope_arr_
private

◆ slope_limiter_

template<typename EquationT , typename BaseMethod = GodunovMethod<EquationT, ExactRiemannSolver<EquationT>>, typename SlopeLimiter = MinMod>
SlopeLimiter fub::MusclHancock< EquationT, BaseMethod, SlopeLimiter >::slope_limiter_
private

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