FK restratification timescale [s].
Bare (default, T1 analytic gate): ts = Ce / max(|f|, f_floor) reproduces FK08 Psi_max = CeH^2|grad b|/|f| exactly.
FK11 momentum-mixrate (PRODUCTION-RECOMMENDED, use_mom_mixrate):
mr = (vonKar * pi^2) * u^2 / (|f|H_vel^2 + 4(H_vel+h_neg)u)
ts = Ce * (|f| + 2mr) / (|f|^2 + mr^2)
The mr term regularises 1/|f| as f -> 0 and suppresses restrat
under vigorous mixing. The bare form is the mr -> 0 limit.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | f_abs | |||
| real(kind=wp), | intent(in) | :: | ustar | |||
| real(kind=wp), | intent(in) | :: | h_vel | |||
| real(kind=wp), | intent(in) | :: | ce | |||
| real(kind=wp), | intent(in) | :: | f_floor | |||
| logical, | intent(in) | :: | use_mom_mixrate |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=wp), | private | :: | f_eff | ||||
| real(kind=wp), | private | :: | mr |
pure function mle_timescale(f_abs, ustar, h_vel, ce, f_floor, use_mom_mixrate) result(ts) !$acc routine seq !! FK restratification timescale [s]. !! !! Bare (default, T1 analytic gate): !! ts = Ce / max(|f|, f_floor) !! reproduces FK08 Psi_max = Ce*H^2*|grad b|/|f| exactly. !! !! FK11 momentum-mixrate (PRODUCTION-RECOMMENDED, `use_mom_mixrate`): !! mr = (vonKar * pi^2) * u*^2 / (|f|*H_vel^2 + 4*(H_vel+h_neg)*u*) !! ts = Ce * (|f| + 2*mr) / (|f|^2 + mr^2) !! The mr term regularises 1/|f| as f -> 0 and suppresses restrat !! under vigorous mixing. The bare form is the mr -> 0 limit. real(wp), intent(in) :: f_abs, ustar, h_vel, ce, f_floor logical, intent(in) :: use_mom_mixrate real(wp) :: ts, mr, f_eff if (use_mom_mixrate) then mr = (VONKAR*PI*PI)*ustar*ustar/ & (f_abs*h_vel*h_vel + 4.0_wp*(h_vel + H_NEGLECT)*ustar + H_NEGLECT) ts = ce*(f_abs + 2.0_wp*mr)/(f_abs*f_abs + mr*mr + H_NEGLECT) else f_eff = max(f_abs, f_floor) ts = ce/f_eff end if end function mle_timescale