From e47498b5fbf980607bccb4768e7fb1fe4301e5b4 Mon Sep 17 00:00:00 2001 From: Marcos Longo <5891904+mpaiao@users.noreply.github.com> Date: Thu, 30 Jul 2026 15:33:29 -0300 Subject: [PATCH 1/4] Update twostream_rad.f90 This is a bug identified by Claude as @xiangtaoxu was working on it. There is a PFT assignment issue. --- ED/src/dynamics/twostream_rad.f90 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ED/src/dynamics/twostream_rad.f90 b/ED/src/dynamics/twostream_rad.f90 index 30088ddba..4e40a4368 100644 --- a/ED/src/dynamics/twostream_rad.f90 +++ b/ED/src/dynamics/twostream_rad.f90 @@ -654,6 +654,8 @@ subroutine sw_two_stream(grnd_alb_par4,grnd_alb_nir4,cosaoi4,nir_beam_norm ! Find the diffuse radiation properties. ! !---------------------------------------------------------------------------------! diffuseloop: do i=1,ncoh + ipft = pft(i) + !----- Scattering coefficient. ------------------------------------------------! iota (i) = leaf_weight(i) * leaf_scatter(ipft) & + wood_weight(i) * wood_scatter(ipft) From 712acd49df3e4df106361b27e8dd0986f6535071 Mon Sep 17 00:00:00 2001 From: Marcos Longo <5891904+mpaiao@users.noreply.github.com> Date: Thu, 30 Jul 2026 15:42:01 -0300 Subject: [PATCH 2/4] Update radiate_driver.f90 Fix albedo assignment for bedrock. --- ED/src/dynamics/radiate_driver.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ED/src/dynamics/radiate_driver.f90 b/ED/src/dynamics/radiate_driver.f90 index bea0ea3e1..856312659 100644 --- a/ED/src/dynamics/radiate_driver.f90 +++ b/ED/src/dynamics/radiate_driver.f90 @@ -636,7 +636,7 @@ subroutine sfcrad_ed(cosaoi,csite,ipa,ibuff,mzg,mzs,ntext_soil,ncol_soil,rlong,t albedo_soil_nir = soilcol(colour)%alb_nir_dry !----- Damp soil, for temporary surface water albedo. ----------------------------! albedo_damp_par = albedo_soil_par - albedo_damp_nir = albedo_damp_nir + albedo_damp_nir = albedo_soil_nir case (12) !----- Peat, follow McCumber and Pielke (1981). ----------------------------------! fcpct = csite%soil_water(mzg,ipa) / soil(nsoil)%soilpo From ec232fcabf7ac90ab5f06709d11b6edbc5acb822 Mon Sep 17 00:00:00 2001 From: Marcos Longo <5891904+mpaiao@users.noreply.github.com> Date: Thu, 30 Jul 2026 15:45:43 -0300 Subject: [PATCH 3/4] Update radiate_driver.f90 Add clumping_factor to the weighting of leaf/wood area indices for long-wave "optical" properties. --- ED/src/dynamics/radiate_driver.f90 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ED/src/dynamics/radiate_driver.f90 b/ED/src/dynamics/radiate_driver.f90 index 856312659..b7215418c 100644 --- a/ED/src/dynamics/radiate_driver.f90 +++ b/ED/src/dynamics/radiate_driver.f90 @@ -1104,9 +1104,11 @@ subroutine sfcrad_ed(cosaoi,csite,ipa,ibuff,mzg,mzs,ntext_soil,ncol_soil,rlong,t * radscr(ibuff)%LAI_array(il) & + (1.d0 - wood_scatter_nir(ipft)) & * radscr(ibuff)%WAI_array(il) ), tiny_offset ) - wleaf_tir = sngloff( ( leaf_emiss_tir(ipft) & + wleaf_tir = sngloff( ( clumping_factor(ipft) & + * leaf_emiss_tir(ipft) & * radscr(ibuff)%LAI_array(il) ) & - / ( leaf_emiss_tir(ipft) & + / ( clumping_factor(ipft) & + * leaf_emiss_tir(ipft) & * radscr(ibuff)%LAI_array(il) & + wood_emiss_tir(ipft) & * radscr(ibuff)%WAI_array(il) ) & From cbf7452f5e6a3499512035427f32c7d47d4fba05 Mon Sep 17 00:00:00 2001 From: Marcos Longo <5891904+mpaiao@users.noreply.github.com> Date: Thu, 30 Jul 2026 15:53:37 -0300 Subject: [PATCH 4/4] Update twostream_rad.f90 Fix mu bar calculation for diffuse radiation. This has no impact on runs as cai must be 1 for icanrad = 2. But it could become an issue if we allow for finite crown areas in the radiation scheme. --- ED/src/dynamics/twostream_rad.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ED/src/dynamics/twostream_rad.f90 b/ED/src/dynamics/twostream_rad.f90 index 4e40a4368..aab3ccb91 100644 --- a/ED/src/dynamics/twostream_rad.f90 +++ b/ED/src/dynamics/twostream_rad.f90 @@ -592,7 +592,7 @@ subroutine sw_two_stream(grnd_alb_par4,grnd_alb_nir4,cosaoi4,nir_beam_norm ! longwave radiation. ! !------------------------------------------------------------------------------! mu (i) = - etai(i) / log( ( 1.d0 - cai(i) ) & - + cai(i) * exp( - etai(i) / mu_bar(ipft) ) ) + + cai(i) * exp( - etai(i) / (cai(i) * mu_bar(ipft) ) ) ) !------------------------------------------------------------------------------!