Skip to content

Commit 24983d3

Browse files
committed
blocks clipping brainstorm
1 parent 36d8b1b commit 24983d3

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/prognostic_equations/implicit/manual_sparse_jacobian.jl

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -606,12 +606,24 @@ function update_jacobian!(alg::ManualSparseJacobian, cache, Y, p, dtγ, t)
606606
return q / float(dt) / n
607607
end
608608

609-
function ∂ρqₗ_err_∂ρqᵪ(tps, ts, cmc, dt, deriv, limit_deriv)
609+
function ∂ρqₗ_err_∂ρqₗ(tps, ts, cmc, dt, S, pos_lim, neg_lim,
610+
source_deriv, pos_lim_deriv, neg_lim_deriv)
610611
FT_inner = eltype(tps)
611612
q = TD.PhasePartition(tps, ts)
612613
ρ = TD.air_density(tps, ts)
613614

614-
S = CMNe.conv_q_vap_to_q_liq_ice_MM2015(cmc.liquid, tps, q, ρ, Tₐ(tps, ts))
615+
# set derivatives to 0 if things are getting clipped
616+
if q.vap < FT(0)
617+
pos_lim_deriv = 0
618+
619+
if q.liq < FT(0)
620+
neg_lim_deriv = 0
621+
622+
if q.tot + q.liq < FT(0)
623+
S = CMNe.conv_q_vap_to_q_liq_ice_MM2015(cmc.liquid, tps, q, ρ, Tₐ(tps, ts))
624+
else
625+
S = 0
626+
source_deriv = 0
615627

616628
if S > FT_inner(0)
617629
if S <= limit(TD.vapor_specific_humidity(q), dt, 2)
@@ -636,7 +648,7 @@ function update_jacobian!(alg::ManualSparseJacobian, cache, Y, p, dtγ, t)
636648
end
637649
end
638650

639-
function ∂ρqᵢ_err_∂ρqᵪ(tps, ts, cmc, dt, deriv, limit_deriv)
651+
function ∂ρqᵢ_err_∂ρqᵢ(tps, ts, cmc, dt, deriv, limit_deriv)
640652
FT_inner = eltype(tps)
641653
q = TD.PhasePartition(tps, ts)
642654
ρ = TD.air_density(tps, ts)

0 commit comments

Comments
 (0)