@@ -189,9 +189,11 @@ function conv_q_vap_to_q_lcl_icl_MM2015(
189189 dqsl_dT = dqcld_dT (qᵥ_sat_liq, Lᵥ, Rᵥ, T)
190190 Γₗ = gamma_helper (Lᵥ, cₚ_air, dqsl_dT)
191191
192- # compute the tendency
193- tendency = (qᵥ - qᵥ_sat_liq) / ( τ_relax * Γₗ)
192+ sat_excess = qᵥ - qᵥ_sat_liq
193+ timescale = τ_relax * Γₗ
194194
195+ # compute the tendency
196+ tendency = ifelse (sat_excess < 0 , q_lcl / timescale, sat_excess / timescale)
195197 return ifelse (limit_MM2015_sinks (tendency, q_lcl), zero (tendency), tendency)
196198end
197199function conv_q_vap_to_q_lcl_icl_MM2015 (
@@ -208,8 +210,11 @@ function conv_q_vap_to_q_lcl_icl_MM2015(
208210 dqsi_dT = dqcld_dT (qᵥ_sat_ice, Lₛ, Rᵥ, T)
209211 Γᵢ = gamma_helper (Lₛ, cₚ_air, dqsi_dT)
210212
213+ sat_excess = qᵥ - qᵥ_sat_ice
214+ timescale = τ_relax * Γᵢ
215+
211216 # compute the tendency
212- tendency = (qᵥ - qᵥ_sat_ice) / (τ_relax * Γᵢ )
217+ tendency = ifelse (sat_excess < 0 , q_icl / timescale, sat_excess / timescale )
213218
214219 limiter = limit_MM2015_sinks (tendency, q_icl) || INP_limiter (tendency, tps, T)
215220 return ifelse (limiter, zero (tendency), tendency)
0 commit comments