Level-based explicit-stability time step: refinement halves the element scale per level, so a time step dtBase that is stable on the base (level-0) mesh scales to dtBase / 2**MaxLevel on the current forest. Deterministic and exact for the quadtree (child elements are exact half-scale subdivisions); no geometry reduction is needed.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(AMRController2D), | intent(in) | :: | this | |||
| real(kind=prec), | intent(in) | :: | dtBase |
function RecommendedTimeStep_AMRController2D(this,dtBase) result(dt)
!! Level-based explicit-stability time step: refinement halves the element scale per
!! level, so a time step dtBase that is stable on the base (level-0) mesh scales to
!! dtBase / 2**MaxLevel on the current forest. Deterministic and exact for the quadtree
!! (child elements are exact half-scale subdivisions); no geometry reduction is needed.
implicit none
class(AMRController2D),intent(in) :: this
real(prec),intent(in) :: dtBase
real(prec) :: dt
dt = dtBase/real(2**this%forest%MaxLevel(),prec)
endfunction RecommendedTimeStep_AMRController2D