|
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 |