Finite Volume Solver  prototype
A framework to build finite volume solvers for the AG Klein at the Freie Universität Berlin.
Public Member Functions | Static Public Attributes | List of all members
fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod > Class Template Reference

This Level Integrator applies a very general AMR integration scheme in context of dimensional splitting. More...

#include <DimensionalSplitLevelIntegrator.hpp>

Public Member Functions

 DimensionalSplitLevelIntegrator ()=delete
 
 DimensionalSplitLevelIntegrator (const DimensionalSplitLevelIntegrator &other)=default
 
DimensionalSplitLevelIntegratoroperator= (const DimensionalSplitLevelIntegrator &other)=default
 
 DimensionalSplitLevelIntegrator (DimensionalSplitLevelIntegrator &&other)=default
 
DimensionalSplitLevelIntegratoroperator= (DimensionalSplitLevelIntegrator &&other)=default
 
template<typename OtherSplitMethod >
 DimensionalSplitLevelIntegrator (const DimensionalSplitLevelIntegrator< Rank, IntegratorContext, OtherSplitMethod > &other)
 
 DimensionalSplitLevelIntegrator (IntegratorContext context, SplitMethod splitting=SplitMethod())
 
 DimensionalSplitLevelIntegrator (int_constant< R >, IntegratorContext context, SplitMethod splitting=SplitMethod())
 
const IntegratorContext & GetContext () const noexcept
 
IntegratorContext & GetContext () noexcept
 
const SplitMethod & GetSplitMethod () const noexcept
 
void PreAdvanceHierarchy ()
 
void PostAdvanceHierarchy ([[maybe_unused]] Duration time_step_size)
 
void PreAdvanceLevel ([[maybe_unused]] int level, [[maybe_unused]] Duration time_step_size, [[maybe_unused]] std::pair< int, int > subcycle)
 
Result< void, TimeStepTooLargePostAdvanceLevel ([[maybe_unused]] int level, [[maybe_unused]] Duration time_step_size, [[maybe_unused]] std::pair< int, int > subcycle)
 
Duration ComputeStableDt (int level_number)
 Returns a stable dt on a specified level across all spatial directions. More...
 
Result< void, TimeStepTooLargeAdvanceLevelNonRecursively (int level_number, Duration dt, std::pair< int, int > subcycle)
 Advance a specified patch level and all finer levels by time dt. More...
 

Static Public Attributes

static constexpr int Rank
 

Detailed Description

template<int R, typename IntegratorContext, typename SplitMethod = GodunovSplitting>
class fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >

This Level Integrator applies a very general AMR integration scheme in context of dimensional splitting.

The time integration is split into multiple intermediate steps where each is supposed to do a certain task. The detailed implementation of these tasks happens in the integrator context object.

Constructor & Destructor Documentation

◆ DimensionalSplitLevelIntegrator() [1/6]

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::DimensionalSplitLevelIntegrator ( )
delete

◆ DimensionalSplitLevelIntegrator() [2/6]

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::DimensionalSplitLevelIntegrator ( const DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod > &  other)
default

◆ DimensionalSplitLevelIntegrator() [3/6]

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::DimensionalSplitLevelIntegrator ( DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod > &&  other)
default

◆ DimensionalSplitLevelIntegrator() [4/6]

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
template<typename OtherSplitMethod >
fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::DimensionalSplitLevelIntegrator ( const DimensionalSplitLevelIntegrator< Rank, IntegratorContext, OtherSplitMethod > &  other)
inline

◆ DimensionalSplitLevelIntegrator() [5/6]

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::DimensionalSplitLevelIntegrator ( IntegratorContext  context,
SplitMethod  splitting = SplitMethod() 
)
inline

◆ DimensionalSplitLevelIntegrator() [6/6]

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::DimensionalSplitLevelIntegrator ( int_constant< R >  ,
IntegratorContext  context,
SplitMethod  splitting = SplitMethod() 
)
inline

Member Function Documentation

◆ AdvanceLevelNonRecursively()

template<int Rank, typename Context , typename SplitMethod >
Result< void, TimeStepTooLarge > fub::DimensionalSplitLevelIntegrator< Rank, Context, SplitMethod >::AdvanceLevelNonRecursively ( int  level_number,
Duration  dt,
std::pair< int, int >  subcycle 
)

Advance a specified patch level and all finer levels by time dt.

This method subcycles finer levels.

Parameters
[in]level_numAn integer denoting the patch level where 0 is the coarsest level.
[in]dtA stable time step size for the level_num-th patch level.
[in]subcycleThe ith subcycle which we are currently in, starting at 0.

◆ ComputeStableDt()

template<int Rank, typename Context , typename SplitMethod >
Duration fub::DimensionalSplitLevelIntegrator< Rank, Context, SplitMethod >::ComputeStableDt ( int  level_number)

Returns a stable dt on a specified level across all spatial directions.

For stability it is advised to multiply some additional CFL factor < 1.0.

◆ GetContext() [1/2]

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
const IntegratorContext& fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::GetContext ( ) const
inlinenoexcept

◆ GetContext() [2/2]

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
IntegratorContext& fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::GetContext ( )
inlinenoexcept

◆ GetSplitMethod()

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
const SplitMethod& fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::GetSplitMethod ( ) const
inlinenoexcept

◆ operator=() [1/2]

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
DimensionalSplitLevelIntegrator& fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::operator= ( const DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod > &  other)
default

◆ operator=() [2/2]

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
DimensionalSplitLevelIntegrator& fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::operator= ( DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod > &&  other)
default

◆ PostAdvanceHierarchy()

template<int R, typename IntegratorContext , typename SplitMethod >
void fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::PostAdvanceHierarchy ( [[maybe_unused] ] Duration  time_step_size)

◆ PostAdvanceLevel()

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
Result< void, TimeStepTooLarge > fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::PostAdvanceLevel ( [[maybe_unused] ] int  level,
[[maybe_unused] ] Duration  time_step_size,
[[maybe_unused] ] std::pair< int, int >  subcycle 
)

◆ PreAdvanceHierarchy()

template<int R, typename IntegratorContext , typename SplitMethod >
void fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::PreAdvanceHierarchy

◆ PreAdvanceLevel()

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
void fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::PreAdvanceLevel ( [[maybe_unused] ] int  level,
[[maybe_unused] ] Duration  time_step_size,
[[maybe_unused] ] std::pair< int, int >  subcycle 
)

Member Data Documentation

◆ Rank

template<int R, typename IntegratorContext , typename SplitMethod = GodunovSplitting>
constexpr int fub::DimensionalSplitLevelIntegrator< R, IntegratorContext, SplitMethod >::Rank
staticconstexpr

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