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 Attributes | Private Attributes | List of all members
fub::KbnCutCellMethod< FM, RiemannSolver > Class Template Reference

#include <KbnStabilisation.hpp>

Public Types

using Equation = typename FM::Equation
 
using Conservative = ::fub::Conservative< Equation >
 
using ConservativeArray = ::fub::ConservativeArray< Equation >
 
using Complete = ::fub::Complete< Equation >
 
using CompleteArray = ::fub::CompleteArray< Equation >
 
template<typename T >
using DataView = PatchDataView< T, Rank, layout_stride >
 

Public Member Functions

 KbnCutCellMethod (const FM &fm)
 Constructs a CutCell method from a given base flux method. More...
 
 KbnCutCellMethod (const FM &fm, const RiemannSolver &rs)
 Constructs a CutCell Method from a specified base flux and riemann solver. More...
 
void PreAdvanceHierarchy (const View< Complete > &references, const View< const Complete > &states, const CutCellData< Rank > &cutcell_data)
 This function computes a reference state for each cut-cell. More...
 
void ComputeBoundaryFlux (Conservative &flux, Complete &state, const Complete &reference_state, const Eigen::Matrix< double, Rank, 1 > &boundary_normal, Direction dir, Duration dt, double dx)
 This function can be used to compute a boundary flux for a given cut-cell. More...
 
void ComputeBoundaryFluxes (const View< Conservative > &boundary_fluxes, const View< const Complete > &states, const View< const Complete > &reference_states, const CutCellData< Rank > &cutcell_data, Duration dt, double dx, Direction dir)
 This function can be used to compute a boundary flux for all cut cells. More...
 
double ComputeStableDt (const View< const Complete > &states, const CutCellData< Rank > &cutcell_data, double dx, Direction dir)
 
void ComputeRegularFluxes (const View< Conservative > &regular_fluxes, const View< const Complete > &states, const CutCellData< Rank > &cutcell_data, Duration dt, double dx, Direction dir)
 
void ComputeCutCellFluxes (const View< Conservative > &stabilised_fluxes, const View< Conservative > &shielded_left_fluxes, const View< Conservative > &shielded_right_fluxes, const View< Conservative > &doubly_shielded_fluxes, const View< Conservative > &boundary_fluxes, const View< const Conservative > &regular_fluxes, const View< const Complete > &states, const CutCellData< Rank > &cutcell_data, Duration dt, double dx, Direction dir)
 

Static Public Attributes

static constexpr int Rank
 
static constexpr std::size_t sRank
 
static constexpr int StencilWidth
 
static constexpr std::size_t StencilSize
 

Private Attributes

std::array< Complete, StencilSizestencil_
 
Complete state_
 
Complete solution_
 
Complete reflected_
 
Complete reference_state_
 
Conservative cutcell_flux_
 
Conservative regular_flux_
 
Conservative boundary_flux_left_
 
Conservative boundary_flux_right_
 
Conservative shielded_right_flux_
 
Conservative shielded_left_flux_
 
Conservative doubly_shielded_flux_
 
std::array< CompleteArray, StencilSizestencil_array_
 
ConservativeArray numeric_flux_array_
 
RiemannSolver riemann_solver_
 

Member Typedef Documentation

◆ Complete

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
using fub::KbnCutCellMethod< FM, RiemannSolver >::Complete = ::fub::Complete<Equation>

◆ CompleteArray

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
using fub::KbnCutCellMethod< FM, RiemannSolver >::CompleteArray = ::fub::CompleteArray<Equation>

◆ Conservative

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
using fub::KbnCutCellMethod< FM, RiemannSolver >::Conservative = ::fub::Conservative<Equation>

◆ ConservativeArray

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
using fub::KbnCutCellMethod< FM, RiemannSolver >::ConservativeArray = ::fub::ConservativeArray<Equation>

◆ DataView

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
template<typename T >
using fub::KbnCutCellMethod< FM, RiemannSolver >::DataView = PatchDataView<T, Rank, layout_stride>

◆ Equation

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
using fub::KbnCutCellMethod< FM, RiemannSolver >::Equation = typename FM::Equation

Constructor & Destructor Documentation

◆ KbnCutCellMethod() [1/2]

template<typename FM , typename RiemannSolver >
fub::KbnCutCellMethod< FM, RiemannSolver >::KbnCutCellMethod ( const FM &  fm)
explicit

Constructs a CutCell method from a given base flux method.

This constructor uses a default constructed riemann problem solver.

◆ KbnCutCellMethod() [2/2]

template<typename FM , typename RiemannSolver >
fub::KbnCutCellMethod< FM, RiemannSolver >::KbnCutCellMethod ( const FM &  fm,
const RiemannSolver &  rs 
)

Constructs a CutCell Method from a specified base flux and riemann solver.

Member Function Documentation

◆ ComputeBoundaryFlux()

template<typename FM , typename RiemannSolver >
void fub::KbnCutCellMethod< FM, RiemannSolver >::ComputeBoundaryFlux ( Conservative flux,
Complete state,
const Complete reference_state,
const Eigen::Matrix< double, Rank, 1 > &  boundary_normal,
Direction  dir,
Duration  dt,
double  dx 
)

This function can be used to compute a boundary flux for a given cut-cell.

Parameters
[out]fluxthe storage for the result.
[in,out]statethe state in the cut cell.
[in]boundary_normalthe boundary normal of the cutcell
[in]dirthe split direction for the flux
[in]dtthe current time step size
[in]dxthe cell width length

◆ ComputeBoundaryFluxes()

template<typename FM , typename RiemannSolver >
void fub::KbnCutCellMethod< FM, RiemannSolver >::ComputeBoundaryFluxes ( const View< Conservative > &  boundary_fluxes,
const View< const Complete > &  states,
const View< const Complete > &  reference_states,
const CutCellData< Rank > &  cutcell_data,
Duration  dt,
double  dx,
Direction  dir 
)

This function can be used to compute a boundary flux for all cut cells.

◆ ComputeCutCellFluxes()

template<typename FM , typename RiemannSolver >
void fub::KbnCutCellMethod< FM, RiemannSolver >::ComputeCutCellFluxes ( const View< Conservative > &  stabilised_fluxes,
const View< Conservative > &  shielded_left_fluxes,
const View< Conservative > &  shielded_right_fluxes,
const View< Conservative > &  doubly_shielded_fluxes,
const View< Conservative > &  boundary_fluxes,
const View< const Conservative > &  regular_fluxes,
const View< const Complete > &  states,
const CutCellData< Rank > &  cutcell_data,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeRegularFluxes()

template<typename FM , typename RiemannSolver >
void fub::KbnCutCellMethod< FM, RiemannSolver >::ComputeRegularFluxes ( const View< Conservative > &  regular_fluxes,
const View< const Complete > &  states,
const CutCellData< Rank > &  cutcell_data,
Duration  dt,
double  dx,
Direction  dir 
)

◆ ComputeStableDt()

template<typename FM , typename RiemannSolver >
double fub::KbnCutCellMethod< FM, RiemannSolver >::ComputeStableDt ( const View< const Complete > &  states,
const CutCellData< Rank > &  geom,
double  dx,
Direction  dir 
)

in the reflection with their boundary state.

in the reflection with their boundary state.

◆ PreAdvanceHierarchy()

template<typename FM , typename RiemannSolver >
void fub::KbnCutCellMethod< FM, RiemannSolver >::PreAdvanceHierarchy ( const View< Complete > &  references,
const View< const Complete > &  states,
const CutCellData< Rank > &  cutcell_data 
)

This function computes a reference state for each cut-cell.

These states will be used to compute the embedded boundary fluxes and need to be fixed for a whole split cycle.

Parameters
[out]referencesthe destination view of references states which will be filled by this method.
[in]statesthe source view of states which will used as a reference state.

Member Data Documentation

◆ boundary_flux_left_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
Conservative fub::KbnCutCellMethod< FM, RiemannSolver >::boundary_flux_left_
private

◆ boundary_flux_right_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
Conservative fub::KbnCutCellMethod< FM, RiemannSolver >::boundary_flux_right_
private

◆ cutcell_flux_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
Conservative fub::KbnCutCellMethod< FM, RiemannSolver >::cutcell_flux_
private

◆ doubly_shielded_flux_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
Conservative fub::KbnCutCellMethod< FM, RiemannSolver >::doubly_shielded_flux_
private

◆ numeric_flux_array_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
ConservativeArray fub::KbnCutCellMethod< FM, RiemannSolver >::numeric_flux_array_
private

◆ Rank

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
constexpr int fub::KbnCutCellMethod< FM, RiemannSolver >::Rank
staticconstexpr

◆ reference_state_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
Complete fub::KbnCutCellMethod< FM, RiemannSolver >::reference_state_
private

◆ reflected_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
Complete fub::KbnCutCellMethod< FM, RiemannSolver >::reflected_
private

◆ regular_flux_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
Conservative fub::KbnCutCellMethod< FM, RiemannSolver >::regular_flux_
private

◆ riemann_solver_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
RiemannSolver fub::KbnCutCellMethod< FM, RiemannSolver >::riemann_solver_
private

◆ shielded_left_flux_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
Conservative fub::KbnCutCellMethod< FM, RiemannSolver >::shielded_left_flux_
private

◆ shielded_right_flux_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
Conservative fub::KbnCutCellMethod< FM, RiemannSolver >::shielded_right_flux_
private

◆ solution_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
Complete fub::KbnCutCellMethod< FM, RiemannSolver >::solution_
private

◆ sRank

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
constexpr std::size_t fub::KbnCutCellMethod< FM, RiemannSolver >::sRank
staticconstexpr

◆ state_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
Complete fub::KbnCutCellMethod< FM, RiemannSolver >::state_
private

◆ stencil_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
std::array<Complete, StencilSize> fub::KbnCutCellMethod< FM, RiemannSolver >::stencil_
private

◆ stencil_array_

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
std::array<CompleteArray, StencilSize> fub::KbnCutCellMethod< FM, RiemannSolver >::stencil_array_
private

◆ StencilSize

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
constexpr std::size_t fub::KbnCutCellMethod< FM, RiemannSolver >::StencilSize
staticconstexpr

◆ StencilWidth

template<typename FM , typename RiemannSolver = ExactRiemannSolver<typename FM::Equation>>
constexpr int fub::KbnCutCellMethod< FM, RiemannSolver >::StencilWidth
staticconstexpr

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