From 363df7d66b5efa4c58ea980816064a47404a3db3 Mon Sep 17 00:00:00 2001 From: Milan Date: Thu, 1 Feb 2024 17:47:46 -0500 Subject: [PATCH] humidity_diffusion! for NoVerticalDiffusion --- src/physics/large_scale_condensation.jl | 2 +- src/physics/vertical_diffusion.jl | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/physics/large_scale_condensation.jl b/src/physics/large_scale_condensation.jl index 757997b37..96a50a6e4 100644 --- a/src/physics/large_scale_condensation.jl +++ b/src/physics/large_scale_condensation.jl @@ -228,7 +228,7 @@ function large_scale_condensation!( dqsat_dT = grad_saturation_humidity(clausius_clapeyron,temp[k],pres[k]) humid_tend_k /= 1 + scheme.latent_heat_cₚ[]*dqsat_dT - # latent heat release + # latent heat release with maximum heating limiter for stability temp_tend[k] += min(max_heating, -scheme.latent_heat_cₚ[] * humid_tend_k) # If there is large-scale condensation at a level higher (i.e. smaller k) than diff --git a/src/physics/vertical_diffusion.jl b/src/physics/vertical_diffusion.jl index e945f4ffb..4dd49eb0d 100644 --- a/src/physics/vertical_diffusion.jl +++ b/src/physics/vertical_diffusion.jl @@ -108,10 +108,10 @@ function initialize!( scheme::HumidityDiffusion, # scheme.Fstar[] = C₀/scheme.time_scale.value end -# function barrier +# function barrier for all VerticalDiffusion, dispatch by type of humidity diffusion function humidity_diffusion!( column::ColumnVariables, model::PrimitiveWet) - humidity_diffusion!(column,model.humidity_diffusion,model.geometry) + humidity_diffusion!(column,model.humidity_diffusion,model) end # do nothing for primitive dry @@ -120,11 +120,20 @@ function humidity_diffusion!( column::ColumnVariables, return nothing end +# do nothing for no vertical diffusion function humidity_diffusion!( column::ColumnVariables, - scheme::NoVerticalDiffusion) + scheme::NoVerticalDiffusion, + model::PrimitiveEquation) return nothing end +# function barrier to unpack model +function humidity_diffusion!( column::ColumnVariables, + scheme::HumidityDiffusion, + model::PrimitiveEquation) + humidity_diffusion!(column, scheme, model.geometry) +end + """$(TYPEDSIGNATURES) Apply humidity diffusion.""" function humidity_diffusion!( column::ColumnVariables,