From a8ecbfdf3b0fff424e7fa2a01c307262841a8023 Mon Sep 17 00:00:00 2001 From: Charles Kawczynski Date: Mon, 15 May 2023 12:38:59 -0700 Subject: [PATCH] Apply suggested fixes --- experiments/LSM/ozark/ozark_met_drivers_FLUXNET.jl | 6 ++++-- src/SharedUtilities/drivers.jl | 5 +++-- src/Vegetation/Canopy.jl | 2 +- test/Vegetation/canopy_model.jl | 6 ++++-- test/Vegetation/plant_hydraulics_test.jl | 6 ++++-- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/experiments/LSM/ozark/ozark_met_drivers_FLUXNET.jl b/experiments/LSM/ozark/ozark_met_drivers_FLUXNET.jl index 05a7a30cd6..4c16e473f8 100644 --- a/experiments/LSM/ozark/ozark_met_drivers_FLUXNET.jl +++ b/experiments/LSM/ozark/ozark_met_drivers_FLUXNET.jl @@ -107,7 +107,8 @@ lat = FT(38.7441) # degree long = FT(-92.2000) # degree function zenith_angle( - t::FT; + t::FT, + orbital_data; latitude = lat, longitude = long, insol_params = earth_param_set.insol_params, @@ -117,7 +118,7 @@ function zenith_angle( FT( instantaneous_zenith_angle( dt, - Insolation.OrbitalData(), + orbital_data, longitude, latitude, insol_params, @@ -131,6 +132,7 @@ radiation = ClimaLSM.PrescribedRadiativeFluxes( SW_IN_spline, LW_IN_spline; θs = zenith_angle, + orbital_data = Insolation.OrbitalData(), ) transpiration = DiagnosticTranspiration{FT}() diff --git a/src/SharedUtilities/drivers.jl b/src/SharedUtilities/drivers.jl index 39e8df3551..9246c31151 100644 --- a/src/SharedUtilities/drivers.jl +++ b/src/SharedUtilities/drivers.jl @@ -247,8 +247,9 @@ struct PrescribedRadiativeFluxes{FT, SW, LW, T} <: AbstractRadiativeDrivers{FT} LW_d::LW "Sun zenith angle, in radians" θs::T - function PrescribedRadiativeFluxes(FT, SW_d, LW_d; θs = nothing) - args = (SW_d, LW_d, θs) + function PrescribedRadiativeFluxes(FT, SW_d, LW_d; θs = nothing, orbital_data) + args = (SW_d, LW_d, θs, orbital_data) + @assert !isnothing(orbital_data) return new{FT, typeof.(args)...}(args...) end end diff --git a/src/Vegetation/Canopy.jl b/src/Vegetation/Canopy.jl index 46227c181e..e33ef7dcd6 100644 --- a/src/Vegetation/Canopy.jl +++ b/src/Vegetation/Canopy.jl @@ -342,7 +342,7 @@ function ClimaLSM.make_update_aux( energy_per_photon = h * c / λ_γ SW_d::FT = canopy.radiation.SW_d(t) LW_d::FT = canopy.radiation.LW_d(t) - θs::FT = canopy.radiation.θs(t) + θs::FT = canopy.radiation.θs(t, canopy.radiation.orbital_data) PAR = @.(SW_d / (energy_per_photon * N_a) / 2) K = extinction_coeff.(ld, θs) APAR .= plant_absorbed_ppfd.(PAR, ρ_leaf, K, LAI, Ω) diff --git a/test/Vegetation/canopy_model.jl b/test/Vegetation/canopy_model.jl index 2737ef44e5..1069775d2f 100644 --- a/test/Vegetation/canopy_model.jl +++ b/test/Vegetation/canopy_model.jl @@ -45,7 +45,8 @@ include(joinpath(pkgdir(ClimaLSM), "parameters", "create_parameters.jl")) long = FT(-180) # degree function zenith_angle( - t::FT; + t::FT, + orbital_data; latitude = lat, longitude = long, insol_params = earth_param_set.insol_params, @@ -53,7 +54,7 @@ include(joinpath(pkgdir(ClimaLSM), "parameters", "create_parameters.jl")) return FT( instantaneous_zenith_angle( DateTime(t), - Insolation.OrbitalData(), + orbital_data, longitude, latitude, insol_params, @@ -98,6 +99,7 @@ include(joinpath(pkgdir(ClimaLSM), "parameters", "create_parameters.jl")) shortwave_radiation, longwave_radiation; θs = zenith_angle, + orbital_data = Insolation.OrbitalData(), ) # Plant Hydraulics diff --git a/test/Vegetation/plant_hydraulics_test.jl b/test/Vegetation/plant_hydraulics_test.jl index 513d8dc378..c42d951f75 100644 --- a/test/Vegetation/plant_hydraulics_test.jl +++ b/test/Vegetation/plant_hydraulics_test.jl @@ -49,7 +49,8 @@ domains = [ long = FT(-180) # degree function zenith_angle( - t::FT; + t::FT, + orbital_data; latitude = lat, longitude = long, insol_params = earth_param_set.insol_params, @@ -57,7 +58,7 @@ domains = [ return FT( instantaneous_zenith_angle( DateTime(t), - Insolation.OrbitalData(), + orbital_data, longitude, latitude, insol_params, @@ -102,6 +103,7 @@ domains = [ shortwave_radiation, longwave_radiation; θs = zenith_angle, + orbital_data = Insolation.OrbitalData(), ) for domain in domains # Parameters are the same as the ones used in the Ozark tutorial