Skip to content

Commit 5b7e47e

Browse files
committed
Merge with changes coming from main branch
1 parent 79028dd commit 5b7e47e

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

src/prognostic_equations/implicit/manual_sparse_jacobian.jl

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -619,39 +619,44 @@ function update_jacobian!(alg::ManualSparseJacobian, cache, Y, p, dtγ, t)
619619
FT = eltype(params)
620620
(; vertical_diffusion, smagorinsky_lilly) = p.atmos
621621
(; ᶜp) = p.precomputed
622+
ᶜK_u = p.scratch.ᶜtemp_scalar_4
623+
ᶜK_h = p.scratch.ᶜtemp_scalar_5
622624
if vertical_diffusion isa DecayWithHeightDiffusion
623-
ᶜK_h = ᶜcompute_eddy_diffusivity_coefficient(Y.c.ρ, vertical_diffusion)
624-
ᶜK_u = ᶜK_h
625+
ᶜK_h .= ᶜcompute_eddy_diffusivity_coefficient(Y.c.ρ, vertical_diffusion)
626+
ᶜK_u .= ᶜK_h
625627
elseif vertical_diffusion isa VerticalDiffusion
626-
ᶜK_h = ᶜcompute_eddy_diffusivity_coefficient(Y.c.uₕ, ᶜp, vertical_diffusion)
627-
ᶜK_u = ᶜK_h
628+
ᶜK_h .= ᶜcompute_eddy_diffusivity_coefficient(Y.c.uₕ, ᶜp, vertical_diffusion)
629+
ᶜK_u .= ᶜK_h
628630
elseif is_smagorinsky_vertical(smagorinsky_lilly)
629631
set_smagorinsky_lilly_precomputed_quantities!(Y, p, smagorinsky_lilly)
630-
ᶜK_u = p.precomputed.ᶜνₜ_v
631-
ᶜK_h = p.precomputed.ᶜD_v
632+
ᶜK_u .= p.precomputed.ᶜνₜ_v
633+
ᶜK_h .= p.precomputed.ᶜD_v
632634
elseif turbconv_model isa AbstractEDMF
633635
(; ᶜlinear_buoygrad, ᶜstrain_rate_norm) = p.precomputed
634636
ᶜtke⁰ = @. lazy(specific(Y.c.sgs⁰.ρatke, Y.c.ρ))
635637
ᶜmixing_length_field = p.scratch.ᶜtemp_scalar_3
636638
ᶜmixing_length_field .= ᶜmixing_length(Y, p)
637-
ᶜK_u = @. lazy(eddy_viscosity(turbconv_params, ᶜtke⁰, ᶜmixing_length_field))
639+
@. ᶜK_u = eddy_viscosity(turbconv_params, ᶜtke⁰, ᶜmixing_length_field)
640+
638641
ᶜprandtl_nvec = @. lazy(
639642
turbulent_prandtl_number(params, ᶜlinear_buoygrad, ᶜstrain_rate_norm),
640643
)
641-
ᶜK_h = @. lazy(eddy_diffusivity(ᶜK_u, ᶜprandtl_nvec))
644+
@. ᶜK_h = eddy_diffusivity(ᶜK_u, ᶜprandtl_nvec)
642645
end
643646

647+
ᶠρK_h = p.scratch.ᶠtemp_scalar
648+
@. ᶠρK_h = ᶠinterp(ᶜρ) * ᶠinterp(ᶜK_h)
644649
@. ᶜdiffusion_h_matrix =
645-
ᶜadvdivᵥ_matrix() DiagonalMatrixRow(ᶠinterp(ᶜρ) * ᶠinterp(ᶜK_h))
646-
ᶠgradᵥ_matrix()
650+
ᶜadvdivᵥ_matrix() DiagonalMatrixRow(ᶠρK_h) ᶠgradᵥ_matrix()
647651
if (
648652
MatrixFields.has_field(Y, @name(c.sgs⁰.ρatke)) ||
649653
!isnothing(p.atmos.turbconv_model) ||
650654
!disable_momentum_vertical_diffusion(p.atmos.vertical_diffusion)
651655
)
656+
ᶠρK_u = p.scratch.ᶠtemp_scalar
657+
@. ᶠρK_u = ᶠinterp(ᶜρ) * ᶠinterp(ᶜK_u)
652658
@. ᶜdiffusion_u_matrix =
653-
ᶜadvdivᵥ_matrix()
654-
DiagonalMatrixRow(ᶠinterp(ᶜρ) * ᶠinterp(ᶜK_u)) ᶠgradᵥ_matrix()
659+
ᶜadvdivᵥ_matrix() DiagonalMatrixRow(ᶠρK_u) ᶠgradᵥ_matrix()
655660
end
656661

657662
∂ᶜρe_tot_err_∂ᶜρ = matrix[@name(c.ρe_tot), @name(c.ρ)]

0 commit comments

Comments
 (0)