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::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod > Struct Template Reference

#include <MusclHancockMethod2.hpp>

Public Types

using Complete = typename Equation::Complete
 
using Conservative = typename Equation::Conservative
 
using Gradient = typename GradientMethod::Gradient
 
using CompleteArray = ::fub::CompleteArray< Equation >
 
using ConservativeArray = ::fub::ConservativeArray< Equation >
 
using GradientArray = typename GradientMethod::GradientArray
 

Public Member Functions

 MusclHancock2 (const Equation &eq)
 
 MusclHancock2 (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 Gradient, 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, span< const CompleteArray, 2 > stencil, span< const GradientArray, 2 > gradients, 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)
 
void ComputeNumericFlux (ConservativeArray &flux, Array1d face_fractions, span< const CompleteArray, 2 > stencil, span< const GradientArray, 2 > gradient, span< Array1d, 2 > volume_fractions, Duration dt, double dx, Direction dir)
 
const Equation & GetEquation () const noexcept
 
Equation & GetEquation () noexcept
 
const BaseMethod & GetBaseMethod () const noexcept
 

Static Public Member Functions

static constexpr int GetStencilWidth () noexcept
 

Private Attributes

Equation equation_
 
GradientMethod gradient_method_
 
ReconstructionMethod reconstruction_method_
 
BaseMethod flux_method_
 
std::array< Gradient, 2 > gradient_
 
std::array< Complete, 2 > reconstruction_
 
std::array< GradientArray, 2 > gradient_array_
 
std::array< CompleteArray, 2 > reconstruction_array_
 

Member Typedef Documentation

◆ Complete

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
using fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::Complete = typename Equation::Complete

◆ CompleteArray

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
using fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::CompleteArray = ::fub::CompleteArray<Equation>

◆ Conservative

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
using fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::Conservative = typename Equation::Conservative

◆ ConservativeArray

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
using fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::ConservativeArray = ::fub::ConservativeArray<Equation>

◆ Gradient

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
using fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::Gradient = typename GradientMethod::Gradient

◆ GradientArray

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
using fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::GradientArray = typename GradientMethod::GradientArray

Constructor & Destructor Documentation

◆ MusclHancock2() [1/2]

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::MusclHancock2 ( const Equation &  eq)
inlineexplicit

◆ MusclHancock2() [2/2]

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::MusclHancock2 ( const Equation &  eq,
const BaseMethod &  method 
)
inline

Member Function Documentation

◆ ComputeNumericFlux() [1/6]

template<typename Equation , typename GradientMethod , typename ReconstructionMethod , typename BaseMethod >
void fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::ComputeNumericFlux ( Conservative flux,
span< const Complete, 2 >  stencil,
span< const Gradient, 2 >  gradients,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeNumericFlux() [2/6]

template<typename Equation , typename GradientMethod , typename ReconstructionMethod , typename BaseMethod >
void fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::ComputeNumericFlux ( Conservative flux,
span< const Complete, 4 >  stencil,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeNumericFlux() [3/6]

template<typename Equation , typename GradientMethod , typename ReconstructionMethod , typename BaseMethod >
void fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::ComputeNumericFlux ( ConservativeArray flux,
Array1d  face_fractions,
span< const CompleteArray, 2 >  stencil,
span< const GradientArray, 2 >  gradient,
span< Array1d, 2 >  volume_fractions,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeNumericFlux() [4/6]

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

◆ ComputeNumericFlux() [5/6]

template<typename Equation , typename GradientMethod , typename ReconstructionMethod , typename BaseMethod >
void fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::ComputeNumericFlux ( ConservativeArray flux,
span< const CompleteArray, 2 >  stencil,
span< const GradientArray, 2 >  gradients,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeNumericFlux() [6/6]

template<typename Equation , typename GradientMethod , typename ReconstructionMethod , typename BaseMethod >
void fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::ComputeNumericFlux ( ConservativeArray flux,
span< const CompleteArray, 4 >  stencil,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeStableDt() [1/3]

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
double fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::ComputeStableDt ( span< const Complete, 4 >  states,
double  dx,
Direction  dir 
)
inlinenoexcept

◆ ComputeStableDt() [2/3]

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
Array1d fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::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 Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
Array1d fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::ComputeStableDt ( span< const CompleteArray, 4 >  states,
double  dx,
Direction  dir 
)
inlinenoexcept

◆ GetBaseMethod()

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
const BaseMethod& fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::GetBaseMethod ( ) const
inlinenoexcept

◆ GetEquation() [1/2]

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
const Equation& fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::GetEquation ( ) const
inlinenoexcept

◆ GetEquation() [2/2]

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
Equation& fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::GetEquation ( )
inlinenoexcept

◆ GetStencilWidth()

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
static constexpr int fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::GetStencilWidth ( )
inlinestaticconstexprnoexcept

Member Data Documentation

◆ equation_

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
Equation fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::equation_
private

◆ flux_method_

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
BaseMethod fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::flux_method_
private

◆ gradient_

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
std::array<Gradient, 2> fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::gradient_
private

◆ gradient_array_

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
std::array<GradientArray, 2> fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::gradient_array_
private

◆ gradient_method_

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
GradientMethod fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::gradient_method_
private

◆ reconstruction_

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
std::array<Complete, 2> fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::reconstruction_
private

◆ reconstruction_array_

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
std::array<CompleteArray, 2> fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::reconstruction_array_
private

◆ reconstruction_method_

template<typename Equation , typename GradientMethod = ConservativeGradient<Equation>, typename ReconstructionMethod = ConservativeReconstruction<Equation>, typename BaseMethod = GodunovMethod<Equation, ExactRiemannSolver<Equation>>>
ReconstructionMethod fub::MusclHancock2< Equation, GradientMethod, ReconstructionMethod, BaseMethod >::reconstruction_method_
private

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