Finite Volume Solver
prototype
A framework to build finite volume solvers for the AG Klein at the Freie Universität Berlin.
|
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, TimeStepTooLarge > | AdvanceLevel (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, TimeStepTooLarge > | AdvanceHierarchy (Duration dt) |
LevelIntegrator & | GetLevelIntegrator () noexcept |
const LevelIntegrator & | GetLevelIntegrator () const noexcept |
Static Public Attributes | |
static constexpr int | Rank |
Private Types | |
using | Base = SolverFacade< 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.
|
private |
|
inlineexplicit |
|
inlineexplicit |
Result< void, TimeStepTooLarge > fub::SubcycleFineFirstSolver< LevelIntegrator >::AdvanceHierarchy | ( | Duration | dt | ) |
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.
[in] | level_num | An integer denoting the patch level where 0 is the coarsest level. |
[in] | direction | The dimensional split direction which will be used to advance. |
[in] | dt | A stable time step size for the level_num-th patch level. |
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.
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
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.
|
staticconstexpr |