From 693ed12c2691a865a65bab31d25e0624d9d647e7 Mon Sep 17 00:00:00 2001 From: Gabriele Bozzola Date: Tue, 25 Jun 2024 10:31:58 -0700 Subject: [PATCH 1/2] Remove FT. from biogeochemistry --- src/standalone/Soil/Biogeochemistry/Biogeochemistry.jl | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/standalone/Soil/Biogeochemistry/Biogeochemistry.jl b/src/standalone/Soil/Biogeochemistry/Biogeochemistry.jl index 871590745a..e149532e6f 100644 --- a/src/standalone/Soil/Biogeochemistry/Biogeochemistry.jl +++ b/src/standalone/Soil/Biogeochemistry/Biogeochemistry.jl @@ -402,14 +402,12 @@ This has been written so as to work with Differential Equations.jl. """ function ClimaLand.make_update_aux(model::SoilCO2Model) function update_aux!(p, Y, t) - # get FT to enforce types of variables not stored directly in `p` - FT = eltype(Y.soilco2.C) params = model.parameters z = model.domain.fields.z - T_soil = FT.(soil_temperature(model.driver.met, p, Y, t, z)) - θ_l = FT.(soil_moisture(model.driver.met, p, Y, t, z)) - Csom = FT.(soil_SOM_C(model.driver.soc, p, Y, t, z)) - P_sfc = FT.(air_pressure(model.driver.atmos, p, Y, t)) + T_soil = soil_temperature(model.driver.met, p, Y, t, z) + θ_l = soil_moisture(model.driver.met, p, Y, t, z) + Csom = soil_SOM_C(model.driver.soc, p, Y, t, z) + P_sfc = air_pressure(model.driver.atmos, p, Y, t) θ_w = θ_l p.soilco2.D .= co2_diffusivity.(T_soil, θ_w, P_sfc, Ref(params)) From cb9aaa9a6f33d731ca90d4ef36ede578b319cc2b Mon Sep 17 00:00:00 2001 From: Gabriele Bozzola Date: Tue, 2 Jul 2024 10:14:43 -0700 Subject: [PATCH 2/2] Fix allocation in canopy_energy --- src/standalone/Vegetation/canopy_energy.jl | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/standalone/Vegetation/canopy_energy.jl b/src/standalone/Vegetation/canopy_energy.jl index 94dc934d10..c3950225c7 100644 --- a/src/standalone/Vegetation/canopy_energy.jl +++ b/src/standalone/Vegetation/canopy_energy.jl @@ -103,16 +103,19 @@ function make_compute_exp_tendency( # area index on the LHF, as ac_canopy [J/m^2/K] # is per unit area plant. - net_energy_flux = @. -p.canopy.radiative_transfer.LW_n - - p.canopy.radiative_transfer.SW_n + - p.canopy.energy.shf + - p.canopy.energy.lhf - p.canopy.energy.fa_energy_roots - # To prevent dividing by zero, change AI" to # "max(AI, eps(FT))" c_per_ground_area = @. ac_canopy * max(area_index.leaf + area_index.stem, eps(FT)) - @. dY.canopy.energy.T = -net_energy_flux / c_per_ground_area + + # d(energy.T) = - net_energy_flux / specific_heat_capacity + @. dY.canopy.energy.T = + -( + -p.canopy.radiative_transfer.LW_n - + p.canopy.radiative_transfer.SW_n + + p.canopy.energy.shf + + p.canopy.energy.lhf - p.canopy.energy.fa_energy_roots + ) / c_per_ground_area end return compute_exp_tendency! end