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 | Public Attributes | Static Public Attributes | Private Attributes | List of all members
fub::GodunovMethod< Equation, RPSolver > Struct Template Reference

#include <GodunovMethod.hpp>

Public Types

using Equation = meta::Equation< const Godunov< Equation, ExactRiemannSolver< Equation > > & >
 
using Complete = ::fub::Complete< Equation >
 
using Conservative = ::fub::Conservative< Equation >
 
using CompleteArray = ::fub::CompleteArray< Equation >
 
using ConservativeArray = ::fub::ConservativeArray< Equation >
 
using RiemannSolver = RiemannSolverT
 

Public Member Functions

double ComputeStableDt (span< const Complete, 2 > states, double dx, Direction dir)
 
Array1d ComputeStableDt (span< const CompleteArray, 2 > states, double dx, Direction dir)
 
Array1d ComputeStableDt (span< const CompleteArray, 2 > states, Array1d face_fraction, span< const Array1d, 2 > volume_fraction, double dx, Direction dir)
 
const EquationGetEquation () const noexcept
 
EquationGetEquation () noexcept
 
const RiemannSolverGetRiemannSolver () const noexcept
 
RiemannSolverGetRiemannSolver () noexcept
 
void ComputeNumericFlux (Conservative &numeric_flux, span< const Complete, 2 > states, Duration, double, Direction dir)
 
void ComputeNumericFlux (ConservativeArray &numeric_flux, span< const CompleteArray, 2 > states, Duration, double, Direction dir)
 
void ComputeNumericFlux (ConservativeArray &numeric_flux, Array1d face_fraction, span< const CompleteArray, 2 > states, span< const Array1d, 2 > volume_fraction, Duration, double, Direction dir)
 
const Godunov< Equation, ExactRiemannSolver< Equation > > & Base () const noexcept
 Returns the Implementation class which will be used to compute single fluxes. More...
 
Godunov< Equation, ExactRiemannSolver< Equation > > & Base () noexcept
 Returns the Implementation class which will be used to compute single fluxes. More...
 
void ComputeNumericFluxes (const View< Conservative > &fluxes, const View< const Complete > &states, Duration dt, double dx, Direction dir)
 This function computes numerical fluxes. More...
 
void ComputeNumericFluxes (execution::SequentialTag, const View< Conservative > &fluxes, const View< const Complete > &states, Duration dt, double dx, Direction dir)
 This function computes numerical fluxes. More...
 
void ComputeNumericFluxes (execution::SimdTag, const View< Conservative > &fluxes, const View< const Complete > &states, Duration dt, double dx, Direction dir)
 This function computes numerical fluxes. More...
 
void ComputeNumericFluxes (execution::OpenMpTag, const View< Conservative > &fluxes, const View< const Complete > &states, Duration dt, double dx, Direction dir)
 This function computes numerical fluxes. More...
 
void ComputeNumericFluxes (execution::OpenMpSimdTag, const View< Conservative > &fluxes, const View< const Complete > &states, Duration dt, double dx, Direction dir)
 This function computes numerical fluxes. More...
 
double ComputeStableDt (const View< const Complete > &states, double dx, Direction dir)
 This function computes a time step size such that no signal will leave any cell covered by this view. More...
 
double ComputeStableDt (execution::SequentialTag, const View< const Complete > &states, double dx, Direction dir)
 This function computes a time step size such that no signal will leave any cell covered by this view. More...
 
double ComputeStableDt (execution::SimdTag, const View< const Complete > &states, double dx, Direction dir)
 This function computes a time step size such that no signal will leave any cell covered by this view. More...
 
double ComputeStableDt (execution::OpenMpTag, const View< const Complete > &states, double dx, Direction dir)
 This function computes a time step size such that no signal will leave any cell covered by this view. More...
 
double ComputeStableDt (execution::OpenMpSimdTag, const View< const Complete > &states, double dx, Direction dir)
 This function computes a time step size such that no signal will leave any cell covered by this view. More...
 

Static Public Member Functions

static constexpr int GetStencilWidth () noexcept
 Returns the stencil width of this flux method. More...
 
static constexpr int GetStencilSize () noexcept
 Returns the number of elements in a stencil of this flux method. More...
 

Public Attributes

std::array< Complete, StencilSizestencil_
 
Conservative numeric_flux_
 
std::array< CompleteArray, StencilSizestencil_array_
 
ConservativeArray numeric_flux_array_
 

Static Public Attributes

static constexpr int Rank
 
static constexpr std::size_t StencilSize
 Returns the number of elements in a stencil of this flux method (std::size_t version). More...
 

Private Attributes

Equation equation_
 
RiemannSolver riemann_solver_
 
Complete riemann_solution_
 
CompleteArray riemann_solution_arr_
 

Member Typedef Documentation

◆ Complete

◆ CompleteArray

◆ Conservative

◆ ConservativeArray

◆ Equation

◆ RiemannSolver

template<typename EquationT , typename RiemannSolverT = ExactRiemannSolver<EquationT>>
using fub::Godunov< EquationT, RiemannSolverT >::RiemannSolver = RiemannSolverT
inherited

Member Function Documentation

◆ Base() [1/2]

const Godunov< Equation, ExactRiemannSolver< Equation > > & fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::Base ( ) const
noexceptinherited

Returns the Implementation class which will be used to compute single fluxes.

◆ Base() [2/2]

Returns the Implementation class which will be used to compute single fluxes.

◆ ComputeNumericFlux() [1/3]

template<typename Equation , typename RiemannSolver >
void fub::Godunov< Equation, RiemannSolver >::ComputeNumericFlux ( Conservative numeric_flux,
span< const Complete, 2 >  states,
Duration  ,
double  ,
Direction  dir 
)
inherited

◆ ComputeNumericFlux() [2/3]

template<typename Equation , typename RiemannSolver >
void fub::Godunov< Equation, RiemannSolver >::ComputeNumericFlux ( ConservativeArray numeric_flux,
Array1d  face_fraction,
span< const CompleteArray, 2 >  states,
span< const Array1d, 2 >  volume_fraction,
Duration  ,
double  ,
Direction  dir 
)
inherited

◆ ComputeNumericFlux() [3/3]

template<typename Equation , typename RiemannSolver >
void fub::Godunov< Equation, RiemannSolver >::ComputeNumericFlux ( ConservativeArray numeric_flux,
span< const CompleteArray, 2 >  states,
Duration  ,
double  ,
Direction  dir 
)
inherited

◆ ComputeNumericFluxes() [1/5]

void fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::ComputeNumericFluxes ( const View< Conservative > &  fluxes,
const View< const Complete > &  states,
Duration  dt,
double  dx,
Direction  dir 
)
inherited

This function computes numerical fluxes.

Parameters
[out]fluxesThe destination view where numeric fluxes will be stored at.
[in]statesA view over cell states which will be used to fill the stencil for this method.
[in]dirThe direction parameter specifies which directional flux method to use.
[in]dtThe time step size which will be used to compute the numerical flux.
[in]dxThe cell width size which will be used to compute the numerical flux.

◆ ComputeNumericFluxes() [2/5]

void fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::ComputeNumericFluxes ( execution::OpenMpSimdTag  ,
const View< Conservative > &  fluxes,
const View< const Complete > &  states,
Duration  dt,
double  dx,
Direction  dir 
)
inherited

This function computes numerical fluxes.

Parameters
[out]fluxesThe destination view where numeric fluxes will be stored at.
[in]statesA view over cell states which will be used to fill the stencil for this method.
[in]dirThe direction parameter specifies which directional flux method to use.
[in]dtThe time step size which will be used to compute the numerical flux.
[in]dxThe cell width size which will be used to compute the numerical flux.

◆ ComputeNumericFluxes() [3/5]

void fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::ComputeNumericFluxes ( execution::OpenMpTag  ,
const View< Conservative > &  fluxes,
const View< const Complete > &  states,
Duration  dt,
double  dx,
Direction  dir 
)
inherited

This function computes numerical fluxes.

Parameters
[out]fluxesThe destination view where numeric fluxes will be stored at.
[in]statesA view over cell states which will be used to fill the stencil for this method.
[in]dirThe direction parameter specifies which directional flux method to use.
[in]dtThe time step size which will be used to compute the numerical flux.
[in]dxThe cell width size which will be used to compute the numerical flux.

◆ ComputeNumericFluxes() [4/5]

void fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::ComputeNumericFluxes ( execution::SequentialTag  ,
const View< Conservative > &  fluxes,
const View< const Complete > &  states,
Duration  dt,
double  dx,
Direction  dir 
)
inherited

This function computes numerical fluxes.

Parameters
[out]fluxesThe destination view where numeric fluxes will be stored at.
[in]statesA view over cell states which will be used to fill the stencil for this method.
[in]dirThe direction parameter specifies which directional flux method to use.
[in]dtThe time step size which will be used to compute the numerical flux.
[in]dxThe cell width size which will be used to compute the numerical flux.

◆ ComputeNumericFluxes() [5/5]

void fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::ComputeNumericFluxes ( execution::SimdTag  ,
const View< Conservative > &  fluxes,
const View< const Complete > &  states,
Duration  dt,
double  dx,
Direction  dir 
)
inherited

This function computes numerical fluxes.

Parameters
[out]fluxesThe destination view where numeric fluxes will be stored at.
[in]statesA view over cell states which will be used to fill the stencil for this method.
[in]dirThe direction parameter specifies which directional flux method to use.
[in]dtThe time step size which will be used to compute the numerical flux.
[in]dxThe cell width size which will be used to compute the numerical flux.

◆ ComputeStableDt() [1/8]

double fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::ComputeStableDt ( const View< const Complete > &  states,
double  dx,
Direction  dir 
)
inherited

This function computes a time step size such that no signal will leave any cell covered by this view.

Parameters
[in]statesA view over cell states which will be used to fill the stencil for this method.
[in]dirThe direction parameter specifies which directional flux method to use.
[in]dxThe cell width size which will be used to compute the numerical flux.

◆ ComputeStableDt() [2/8]

double fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::ComputeStableDt ( execution::OpenMpSimdTag  ,
const View< const Complete > &  states,
double  dx,
Direction  dir 
)
inherited

This function computes a time step size such that no signal will leave any cell covered by this view.

Parameters
[in]statesA view over cell states which will be used to fill the stencil for this method.
[in]dirThe direction parameter specifies which directional flux method to use.
[in]dxThe cell width size which will be used to compute the numerical flux.

◆ ComputeStableDt() [3/8]

double fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::ComputeStableDt ( execution::OpenMpTag  ,
const View< const Complete > &  states,
double  dx,
Direction  dir 
)
inherited

This function computes a time step size such that no signal will leave any cell covered by this view.

Parameters
[in]statesA view over cell states which will be used to fill the stencil for this method.
[in]dirThe direction parameter specifies which directional flux method to use.
[in]dxThe cell width size which will be used to compute the numerical flux.

◆ ComputeStableDt() [4/8]

double fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::ComputeStableDt ( execution::SequentialTag  ,
const View< const Complete > &  states,
double  dx,
Direction  dir 
)
inherited

This function computes a time step size such that no signal will leave any cell covered by this view.

Parameters
[in]statesA view over cell states which will be used to fill the stencil for this method.
[in]dirThe direction parameter specifies which directional flux method to use.
[in]dxThe cell width size which will be used to compute the numerical flux.

◆ ComputeStableDt() [5/8]

double fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::ComputeStableDt ( execution::SimdTag  ,
const View< const Complete > &  states,
double  dx,
Direction  dir 
)
inherited

This function computes a time step size such that no signal will leave any cell covered by this view.

Parameters
[in]statesA view over cell states which will be used to fill the stencil for this method.
[in]dirThe direction parameter specifies which directional flux method to use.
[in]dxThe cell width size which will be used to compute the numerical flux.

◆ ComputeStableDt() [6/8]

template<typename Equation , typename RiemannSolver >
double fub::Godunov< Equation, RiemannSolver >::ComputeStableDt ( span< const Complete, 2 >  states,
double  dx,
Direction  dir 
)
inherited

◆ ComputeStableDt() [7/8]

template<typename Equation , typename RiemannSolver >
Array1d fub::Godunov< Equation, RiemannSolver >::ComputeStableDt ( span< const CompleteArray, 2 >  states,
Array1d  face_fraction,
span< const Array1d, 2 >  volume_fraction,
double  dx,
Direction  dir 
)
inherited

◆ ComputeStableDt() [8/8]

template<typename Equation , typename RiemannSolver >
Array1d fub::Godunov< Equation, RiemannSolver >::ComputeStableDt ( span< const CompleteArray, 2 >  states,
double  dx,
Direction  dir 
)
inherited

◆ GetEquation() [1/2]

template<typename Equation , typename RiemannSolver >
const Equation & fub::Godunov< Equation, RiemannSolver >::GetEquation
noexceptinherited

◆ GetEquation() [2/2]

template<typename Equation , typename RiemannSolver >
Equation & fub::Godunov< Equation, RiemannSolver >::GetEquation
noexceptinherited

◆ GetRiemannSolver() [1/2]

template<typename Equation , typename RiemannSolver >
const RiemannSolver & fub::Godunov< Equation, RiemannSolver >::GetRiemannSolver
noexceptinherited

◆ GetRiemannSolver() [2/2]

template<typename Equation , typename RiemannSolver >
RiemannSolver & fub::Godunov< Equation, RiemannSolver >::GetRiemannSolver
noexceptinherited

◆ GetStencilSize()

constexpr int fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::GetStencilSize
staticconstexprnoexceptinherited

Returns the number of elements in a stencil of this flux method.

◆ GetStencilWidth()

constexpr int fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::GetStencilWidth
staticconstexprnoexceptinherited

Returns the stencil width of this flux method.

Member Data Documentation

◆ equation_

template<typename EquationT , typename RiemannSolverT = ExactRiemannSolver<EquationT>>
Equation fub::Godunov< EquationT, RiemannSolverT >::equation_
privateinherited

◆ numeric_flux_

◆ numeric_flux_array_

◆ Rank

constexpr int fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::Rank
staticconstexprinherited

◆ riemann_solution_

template<typename EquationT , typename RiemannSolverT = ExactRiemannSolver<EquationT>>
Complete fub::Godunov< EquationT, RiemannSolverT >::riemann_solution_
privateinherited

◆ riemann_solution_arr_

template<typename EquationT , typename RiemannSolverT = ExactRiemannSolver<EquationT>>
CompleteArray fub::Godunov< EquationT, RiemannSolverT >::riemann_solution_arr_
privateinherited

◆ riemann_solver_

template<typename EquationT , typename RiemannSolverT = ExactRiemannSolver<EquationT>>
RiemannSolver fub::Godunov< EquationT, RiemannSolverT >::riemann_solver_
privateinherited

◆ stencil_

std::array<Complete, StencilSize> fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::stencil_
inherited

◆ stencil_array_

std::array<CompleteArray, StencilSize> fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::stencil_array_
inherited

◆ StencilSize

constexpr std::size_t fub::FluxMethod< Godunov< Equation, ExactRiemannSolver< Equation > > >::StencilSize
staticconstexprinherited

Returns the number of elements in a stencil of this flux method (std::size_t version).


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