Is this trial L+ the neutral / unsuppressed limit?
TRUE for a non-finite L+, for L+ <= 0 and for the
CAVITY_L_PLUS_NEUTRAL sentinel. A non-positive L+ means the
interfacial buoyancy flux is DESTABILISING (or zero), which every
stratification-dependent law treats as its neutral limit: Holland
& Jenkins (1999) p. 1792, “If the Obukhov length is negative
(i.e., the buoyancy flux is destabilizing) the stability
parameter is set to 1”; Yung et al. (2025) pp. 5832-5833, “Since
the LES studies we follow do not explore freezing conditions, we
use the ConstCoeff transfer coefficients … when L+ < 0”.
It also keeps log() off a negative argument in the outer
residual — a real excursion, not a hypothetical: for hj99 at
strong suppression Gamma_Turb -> infinity makes the heat and
salt denominators converge, so gamma_s/gamma_t -> 1,
S_b -> S_w, the stabilising salt term vanishes and the
destabilising temperature term is left holding the sign.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | l_plus |
Viscous Obukhov scale, or |
pure function cavity_l_plus_is_neutral(l_plus) result(is_neutral) !! Is this trial `L+` the neutral / unsuppressed limit? !! !! TRUE for a non-finite `L+`, for `L+ <= 0` and for the !! `CAVITY_L_PLUS_NEUTRAL` sentinel. A non-positive `L+` means the !! interfacial buoyancy flux is DESTABILISING (or zero), which every !! stratification-dependent law treats as its neutral limit: Holland !! & Jenkins (1999) p. 1792, "If the Obukhov length is negative !! (i.e., the buoyancy flux is destabilizing) the stability !! parameter is set to 1"; Yung et al. (2025) pp. 5832-5833, "Since !! the LES studies we follow do not explore freezing conditions, we !! use the ConstCoeff transfer coefficients ... when L+ < 0". !! !! It also keeps `log()` off a negative argument in the outer !! residual — a real excursion, not a hypothetical: for `hj99` at !! strong suppression `Gamma_Turb -> infinity` makes the heat and !! salt denominators converge, so `gamma_s/gamma_t -> 1`, !! `S_b -> S_w`, the stabilising salt term vanishes and the !! destabilising temperature term is left holding the sign. !$acc routine seq real(wp), intent(in) :: l_plus !! Viscous Obukhov scale, or `CAVITY_L_PLUS_NEUTRAL`. logical :: is_neutral is_neutral = (.not. ieee_is_finite(l_plus)) .or. (l_plus <= 0.0_wp) & .or. (l_plus >= CAVITY_L_PLUS_NEUTRAL) end function cavity_l_plus_is_neutral