Skip to content

Commit e75ff0f

Browse files
committed
Fix NonEq limiter clipping
1 parent 143f9ea commit e75ff0f

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

src/parameterized_tendencies/microphysics/microphysics_wrappers.jl

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,17 @@ function cloud_sources(
7878
qᵣ,
7979
qₛ,
8080
ρ,
81-
Tₐ,
81+
T,
8282
dt,
8383
) where {FT}
8484

8585
qᵥ = qₜ - qₗ - qᵢ - qᵣ - qₛ
86+
qₛₗ = TD.q_vap_saturation_from_density(
87+
thp,
88+
T,
89+
ρ,
90+
TD.saturation_vapor_pressure(thp, T, TD.Liquid()),
91+
)
8692

8793
if qᵥ + qₗ > FT(0)
8894
S = CMNe.conv_q_vap_to_q_liq_ice_MM2015(
@@ -94,16 +100,16 @@ function cloud_sources(
94100
qᵣ,
95101
qₛ,
96102
ρ,
97-
Tₐ,
103+
T,
98104
)
99105
else
100106
S = FT(0)
101107
end
102108

103109
return ifelse(
104110
S > FT(0),
105-
triangle_inequality_limiter(S, limit(clip(qᵥ), dt, 2)),
106-
-triangle_inequality_limiter(abs(S), limit(clip(qₗ), dt, 2)),
111+
triangle_inequality_limiter(S, limit(qᵥ - qₛₗ, dt, 2)),
112+
-triangle_inequality_limiter(abs(S), limit(qₗ, dt, 2)),
107113
)
108114
end
109115
function cloud_sources(
@@ -121,6 +127,13 @@ function cloud_sources(
121127

122128
qᵥ = qₜ - qₗ - qᵢ - qᵣ - qₛ
123129

130+
qₛᵢ = TD.q_vap_saturation_from_density(
131+
thp,
132+
T,
133+
ρ,
134+
TD.saturation_vapor_pressure(thp, T, TD.Ice()),
135+
)
136+
124137
if qᵥ + qᵢ > FT(0)
125138
S = CMNe.conv_q_vap_to_q_liq_ice_MM2015(
126139
cm_params,
@@ -139,8 +152,8 @@ function cloud_sources(
139152

140153
return ifelse(
141154
S > FT(0),
142-
triangle_inequality_limiter(S, limit(clip(qᵥ), dt, 2)),
143-
-triangle_inequality_limiter(abs(S), limit(clip(qᵢ), dt, 2)),
155+
triangle_inequality_limiter(S, limit(qᵥ - qₛᵢ, dt, 2)),
156+
-triangle_inequality_limiter(abs(S), limit(qᵢ, dt, 2)),
144157
)
145158
end
146159

0 commit comments

Comments
 (0)