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 | Private Types | List of all members
fub::SubcycleFineFirstSolver< LevelIntegrator > Class Template Reference

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

#include <SubcycleFineFirstSolver.hpp>

Public Member Functions

 SubcycleFineFirstSolver (LevelIntegrator &&integrator)
 
 SubcycleFineFirstSolver (const LevelIntegrator &integrator)
 
int GetTotalRefineRatio (int fine_level, int coarse_level=0) const
 Returns the total refinement ratio between specified coarse to fine level number. More...
 
Duration ComputeStableDt ()
 Returns a stable time step size for the coarsest refinement level. More...
 
Result< void, TimeStepTooLargeAdvanceLevel (int level_number, Duration dt, std::pair< int, int > subcycle)
 Advance a specified patch level and all finer levels by time dt. More...
 
Result< void, TimeStepTooLargeAdvanceHierarchy (Duration dt)
 
LevelIntegrator & GetLevelIntegrator () noexcept
 
const LevelIntegrator & GetLevelIntegrator () const noexcept
 

Static Public Attributes

static constexpr int Rank
 

Private Types

using Base = SolverFacade< LevelIntegrator >
 

Detailed Description

template<typename LevelIntegrator>
class fub::SubcycleFineFirstSolver< LevelIntegrator >

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.

Member Typedef Documentation

◆ Base

template<typename LevelIntegrator >
using fub::SubcycleFineFirstSolver< LevelIntegrator >::Base = SolverFacade<LevelIntegrator>
private

Constructor & Destructor Documentation

◆ SubcycleFineFirstSolver() [1/2]

template<typename LevelIntegrator >
fub::SubcycleFineFirstSolver< LevelIntegrator >::SubcycleFineFirstSolver ( LevelIntegrator &&  integrator)
inlineexplicit

◆ SubcycleFineFirstSolver() [2/2]

template<typename LevelIntegrator >
fub::SubcycleFineFirstSolver< LevelIntegrator >::SubcycleFineFirstSolver ( const LevelIntegrator &  integrator)
inlineexplicit

Member Function Documentation

◆ AdvanceHierarchy()

template<typename LevelIntegrator >
Result< void, TimeStepTooLarge > fub::SubcycleFineFirstSolver< LevelIntegrator >::AdvanceHierarchy ( Duration  dt)

◆ AdvanceLevel()

template<typename LevelIntegrator >
Result< void, TimeStepTooLarge > fub::SubcycleFineFirstSolver< LevelIntegrator >::AdvanceLevel ( 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]directionThe dimensional split direction which will be used to advance.
[in]dtA stable time step size for the level_num-th patch level.

◆ ComputeStableDt()

template<typename LevelIntegrator >
Duration fub::SubcycleFineFirstSolver< LevelIntegrator >::ComputeStableDt

Returns a stable time step size for the coarsest refinement level.

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

◆ GetLevelIntegrator() [1/2]

template<typename LevelIntegrator >
const LevelIntegrator& fub::SolverFacade< LevelIntegrator >::GetLevelIntegrator ( ) const
inlinenoexceptinherited

◆ GetLevelIntegrator() [2/2]

template<typename LevelIntegrator >
LevelIntegrator& fub::SolverFacade< LevelIntegrator >::GetLevelIntegrator ( )
inlinenoexceptinherited

◆ GetTotalRefineRatio()

template<typename LevelIntegrator >
int fub::SubcycleFineFirstSolver< LevelIntegrator >::GetTotalRefineRatio ( int  fine_level,
int  coarse_level = 0 
) const

Returns the total refinement ratio between specified coarse to fine level number.

Member Data Documentation

◆ Rank

template<typename LevelIntegrator >
constexpr int fub::SubcycleFineFirstSolver< LevelIntegrator >::Rank
staticconstexpr

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