Skip to content

Commit a3905b2

Browse files
authored
Merge pull request #4051 from CliMA/he/fix-error-on-inconsistent
fix: error on inconsistent diffusion option
2 parents 2a57aa3 + fec52f6 commit a3905b2

File tree

2 files changed

+17
-20
lines changed

2 files changed

+17
-20
lines changed

src/prognostic_equations/implicit/manual_sparse_jacobian.jl

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -586,35 +586,22 @@ function update_jacobian!(alg::ManualSparseJacobian, cache, Y, p, dtγ, t)
586586
(; vertical_diffusion) = p.atmos
587587
(; ᶜp) = p.precomputed
588588
if vertical_diffusion isa DecayWithHeightDiffusion
589-
ᶜK_h =
590-
ᶜcompute_eddy_diffusivity_coefficient(Y.c.ρ, vertical_diffusion)
589+
ᶜK_h = ᶜcompute_eddy_diffusivity_coefficient(Y.c.ρ, vertical_diffusion)
591590
ᶜK_u = ᶜK_h
592591
elseif vertical_diffusion isa VerticalDiffusion
593-
ᶜK_h = ᶜcompute_eddy_diffusivity_coefficient(
594-
Y.c.uₕ,
595-
ᶜp,
596-
vertical_diffusion,
597-
)
592+
ᶜK_h = ᶜcompute_eddy_diffusivity_coefficient(Y.c.uₕ, ᶜp, vertical_diffusion)
598593
ᶜK_u = ᶜK_h
599-
else
594+
elseif turbconv_model isa AbstractEDMF
600595
(; ᶜlinear_buoygrad, ᶜstrain_rate_norm) = p.precomputed
601596
ᶜρa⁰ =
602-
p.atmos.turbconv_model isa PrognosticEDMFX ?
597+
turbconv_model isa PrognosticEDMFX ?
603598
(@. lazy(ρa⁰(Y.c.ρ, Y.c.sgsʲs, turbconv_model))) : Y.c.ρ
604-
ᶜtke⁰ = @. lazy(
605-
specific_tke(Y.c.ρ, Y.c.sgs⁰.ρatke, ᶜρa⁰, turbconv_model),
606-
)
599+
ᶜtke⁰ = @. lazy(specific_tke(Y.c.ρ, Y.c.sgs⁰.ρatke, ᶜρa⁰, turbconv_model))
607600
ᶜmixing_length_field = p.scratch.ᶜtemp_scalar_3
608601
ᶜmixing_length_field .= ᶜmixing_length(Y, p)
609-
ᶜK_u = @. lazy(
610-
eddy_viscosity(turbconv_params, ᶜtke⁰, ᶜmixing_length_field),
611-
)
602+
ᶜK_u = @. lazy(eddy_viscosity(turbconv_params, ᶜtke⁰, ᶜmixing_length_field))
612603
ᶜprandtl_nvec = @. lazy(
613-
turbulent_prandtl_number(
614-
params,
615-
ᶜlinear_buoygrad,
616-
ᶜstrain_rate_norm,
617-
),
604+
turbulent_prandtl_number(params, ᶜlinear_buoygrad, ᶜstrain_rate_norm),
618605
)
619606
ᶜK_h = @. lazy(eddy_diffusivity(ᶜK_u, ᶜprandtl_nvec))
620607
end

src/solver/model_getters.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,9 @@ function check_case_consistency(parsed_args)
642642
moist = parsed_args["moist"]
643643
ls_adv = parsed_args["ls_adv"]
644644
extf = parsed_args["external_forcing"]
645+
imp_vert_diff = parsed_args["implicit_diffusion"]
646+
vert_diff = parsed_args["vert_diff"]
647+
turbconv = parsed_args["turbconv"]
645648

646649
ISDAC_mandatory = (ic, subs, surf, rad, extf)
647650
if "ISDAC" in ISDAC_mandatory
@@ -651,5 +654,12 @@ function check_case_consistency(parsed_args)
651654
moist != "dry",
652655
"ISDAC setup not consistent"
653656
)
657+
elseif imp_vert_diff
658+
# Implicit vertical diffusion is only supported for specific models:
659+
@assert(
660+
!isnothing(turbconv) || !isnothing(vert_diff),
661+
"Implicit vertical diffusion is only supported when using a " *
662+
"turbulence convection model or vertical diffusion model.",
663+
)
654664
end
655665
end

0 commit comments

Comments
 (0)