@@ -193,9 +193,11 @@ function conv_q_vap_to_q_lcl_icl_MM2015(
193193 dqsl_dT = dqcld_dT (qᵥ_sat_liq, Lᵥ, Rᵥ, T)
194194 Γₗ = gamma_helper (Lᵥ, cₚ_air, dqsl_dT)
195195
196- # compute the tendency
197- tendency = (qᵥ - qᵥ_sat_liq) / ( τ_relax * Γₗ)
196+ sat_excess = qᵥ - qᵥ_sat_liq
197+ timescale = τ_relax * Γₗ
198198
199+ # compute the tendency
200+ tendency = ifelse (sat_excess < 0 , q_lcl / timescale, sat_excess / timescale)
199201 return ifelse (limit_MM2015_sinks (tendency, q_lcl), zero (tendency), tendency)
200202end
201203function conv_q_vap_to_q_lcl_icl_MM2015 (
@@ -219,8 +221,11 @@ function conv_q_vap_to_q_lcl_icl_MM2015(
219221 dqsi_dT = dqcld_dT (qᵥ_sat_ice, Lₛ, Rᵥ, T)
220222 Γᵢ = gamma_helper (Lₛ, cₚ_air, dqsi_dT)
221223
224+ sat_excess = qᵥ - qᵥ_sat_ice
225+ timescale = τ_relax * Γᵢ
226+
222227 # compute the tendency
223- tendency = (qᵥ - qᵥ_sat_ice) / (τ_relax * Γᵢ )
228+ tendency = ifelse (sat_excess < 0 , q_icl / timescale, sat_excess / timescale )
224229
225230 limiter = limit_MM2015_sinks (tendency, q_icl) || INP_limiter (tendency, tps, T)
226231 return ifelse (limiter, zero (tendency), tendency)
0 commit comments