-
Notifications
You must be signed in to change notification settings - Fork 385
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
C-based harvest in ELM-FATES #5106
Changes from 10 commits
975c41a
e60d108
be484a5
17bb955
f50460d
b00fb40
3da7482
f69a848
12be3a6
b322f08
362fecf
9b49c52
f165e40
60ee280
16d43dc
afe87df
08dc6ad
f9a40a5
e96fc25
164e333
0ccaedf
13d0f5a
ed780f8
d215068
7480098
3730a54
cbc03fb
45d053d
1beed82
2e05202
1b3257f
4d13737
076299a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -616,7 +616,10 @@ subroutine ColWaterBalanceCheck( bounds, num_do_smb_c, filter_do_smb_c, & | |
found = .false. | ||
do p = bounds%begp, bounds%endp | ||
if (veg_pp%active(p)) then | ||
if ( (errsol(p) /= spval) .and. (abs(errsol(p)) > 1.e-7_r8) ) then | ||
!if ( (errsol(p) /= spval) .and. (abs(errsol(p)) > 1.e-7_r8) ) then | ||
! solar radiation balance error is high when running FATES | ||
! adjust the threshold to 5.e-7 | ||
if ( (errsol(p) /= spval) .and. (abs(errsol(p)) > 5.e-7_r8) ) then | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If we bump this value up to suppress warnings, that seems fine for a FATES run. We are very aware that an audit needs to be done to reduce these fine errors in radiation scattering. However, we may want to only apply it to a fates governed patch. This "is_fates" can tell us if we are on a fates patch and if we should apply different logic: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
found = .true. | ||
indexp = p | ||
indext = veg_pp%topounit(indexp) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2054,6 +2054,16 @@ subroutine col_cs_init(this, begc, endc, carbon_type, ratio, c12_carbonstate_var | |
avgflag='A', long_name='total column carbon, incl veg and cpool but excl product pools', & | ||
ptr_col=this%totcolc) | ||
|
||
this%prod10c(begc:endc) = spval | ||
call hist_addfld1d (fname='PROD10C', units='gC/m^2', & | ||
avgflag='A', long_name='10-yr wood product C', & | ||
ptr_col=this%prod10c, default='inactive') | ||
|
||
this%prod100c(begc:endc) = spval | ||
call hist_addfld1d (fname='PROD100C', units='gC/m^2', & | ||
avgflag='A', long_name='100-yr wood product C', & | ||
ptr_col=this%prod100c, default='inactive') | ||
|
||
Comment on lines
+2093
to
+2102
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @sshu88 was this a temporary change to make sure that you could read the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. These are two outputs I added to the history output file for checking the change of product pool size. So it is a temporary change. But the product pool size shall be a basic output in land surface model when considering anthropogenic disturbances. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To clarify, does this need to be available when fates is running? The current issue is that the same call is made just below behind a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I have removed the part below |
||
if(.not.use_fates)then | ||
|
||
this%seedc(begc:endc) = spval | ||
|
@@ -5717,6 +5727,34 @@ subroutine col_cf_init(this, begc, endc, carbon_type) | |
call hist_addfld1d (fname='HR', units='gC/m^2/s', & | ||
avgflag='A', long_name='total heterotrophic respiration', & | ||
ptr_col=this%hr) | ||
! Shijie | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. remove comment |
||
this%hrv_deadstemc_to_prod10c(begc:endc) = spval | ||
call hist_addfld1d (fname='HRV_DEADSTEMC_TO_PROD10C', units='gC/m^2/s', & | ||
avgflag='A', long_name='flux into 10-yr wood product C', & | ||
ptr_col=this%hrv_deadstemc_to_prod10c, default='inactive') | ||
|
||
this%hrv_deadstemc_to_prod100c(begc:endc) = spval | ||
call hist_addfld1d (fname='HRV_DEADSTEMC_TO_PROD100C', units='gC/m^2/s', & | ||
avgflag='A', long_name='flux into 100-yr wood product C', & | ||
ptr_col=this%hrv_deadstemc_to_prod100c, default='inactive') | ||
|
||
this%nep(begc:endc) = spval | ||
call hist_addfld1d (fname='NEP', units='gC/m^2/s', & | ||
avgflag='A', long_name='net ecosystem production, excludes fire, landuse, and harvest flux, positive for sink', & | ||
ptr_col=this%nep) | ||
|
||
this%nbp(begc:endc) = spval | ||
call hist_addfld1d (fname='NBP', units='gC/m^2/s', & | ||
avgflag='A', long_name='net biome production, includes fire, landuse, and harvest flux, positive for sink', & | ||
ptr_col=this%nbp) | ||
|
||
this%nee(begc:endc) = spval | ||
call hist_addfld1d (fname='NEE', units='gC/m^2/s', & | ||
rgknox marked this conversation as resolved.
Show resolved
Hide resolved
|
||
avgflag='A', long_name='net ecosystem exchange of carbon, includes fire, landuse,'& | ||
//' harvest, and hrv_xsmrpool flux, positive for source', & | ||
ptr_col=this%nee) | ||
! Shijie | ||
|
||
end if | ||
! end of use_fates (C12) block | ||
|
||
|
@@ -6902,9 +6940,13 @@ subroutine col_cf_summary(this, bounds, num_soilc, filter_soilc, isotope) | |
|
||
! total product loss | ||
this%product_closs(c) = & | ||
this%prod10c_loss(c) + & | ||
this%prod10c_loss(c) + & | ||
bishtgautam marked this conversation as resolved.
Show resolved
Hide resolved
|
||
this%prod100c_loss(c) + & | ||
this%prod1c_loss(c) | ||
! if (masterproc) then | ||
! write(iulog,*) "this%prod10c_loss?", this%prod10c_loss(c), "this%prod100c_loss?", & | ||
! this%prod100c_loss(c), "this%prod1c_loss?", this%prod1c_loss(c) | ||
! endif | ||
bishtgautam marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
! soil organic matter fire losses (SOMFIRE) | ||
this%somfire(c) = 0._r8 | ||
|
@@ -7405,18 +7447,18 @@ subroutine col_cf_zero_forfates_veg(this, bounds, num_soilc, filter_soilc) | |
|
||
if(.not.use_fates) return | ||
|
||
do fc = 1,num_soilc | ||
c = filter_soilc(fc) | ||
this%gpp(c) = 0._r8 | ||
this%ar(c) = 0._r8 | ||
this%npp(c) = 0._r8 | ||
this%vegfire(c) = 0._r8 | ||
this%wood_harvestc(c) = 0._r8 | ||
this%fire_closs_p2c(c) = 0._r8 | ||
!this%litfall(c) = 0._r8 (overwritten) | ||
this%hrv_xsmrpool_to_atm(c) = 0._r8 | ||
|
||
end do | ||
do fc = 1,num_soilc | ||
c = filter_soilc(fc) | ||
this%gpp(c) = 0._r8 | ||
this%ar(c) = 0._r8 | ||
this%npp(c) = 0._r8 | ||
this%vegfire(c) = 0._r8 | ||
this%wood_harvestc(c) = 0._r8 | ||
this%fire_closs_p2c(c) = 0._r8 | ||
!this%litfall(c) = 0._r8 (overwritten) | ||
this%hrv_xsmrpool_to_atm(c) = 0._r8 | ||
|
||
end do | ||
bishtgautam marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
|
||
end subroutine col_cf_zero_forfates_veg | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -25,8 +25,7 @@ module dynHarvestMod | |
use ColumnDataType , only : col_cf, col_nf, col_pf | ||
use VegetationType , only : veg_pp | ||
use VegetationDataType , only : veg_cs, veg_cf, veg_ns, veg_nf | ||
use topounit_varcon , only : max_topounits | ||
use VegetationDataType , only : veg_ps, veg_pf | ||
use topounit_varcon , only : max_topounits | ||
use VegetationDataType , only : veg_ps, veg_pf | ||
use elm_varctl , only : use_cn, use_fates, iulog | ||
use FatesConstantsMod , only : hlm_harvest_area_fraction | ||
|
@@ -66,22 +65,23 @@ module dynHarvestMod | |
! for FATES: capacity for passing harvest data in units of carbon harvested per year (per grid cell) has been added | ||
! but these data are not yet included in the input file | ||
! the code here can be changed to wood_harvest_units = harvest_carbon to pass carbon data to FATES if: | ||
! the carbon data are in the same input variables as listed below | ||
! and the carbon units in the input file match that expected by FATES | ||
! the carbon data are in the same input variables as listed below | ||
! and the carbon units in the input file match that expected by FATES | ||
|
||
integer, public, parameter :: num_harvest_vars = 5 | ||
character(len=64), public, parameter :: harvest_varnames(num_harvest_vars) = & | ||
[character(len=64) :: 'HARVEST_VH1', 'HARVEST_VH2', 'HARVEST_SH1', 'HARVEST_SH2', 'HARVEST_SH3'] | ||
[character(len=64) :: 'HARVEST_VH1', 'HARVEST_VH2', 'HARVEST_SH1', 'HARVEST_SH2', 'HARVEST_SH3'] | ||
|
||
type(dyn_var_time_uninterp_type) :: harvest_vars(num_harvest_vars) ! value of each harvest variable | ||
|
||
! the units flag must match the units of harvest_varnames | ||
! set this here because dynHarvest_init is called after alm_fates%init | ||
! this flag is accessed only if namelist do_harvest is TRUE | ||
integer, public :: wood_harvest_units = hlm_harvest_area_fraction | ||
|
||
type(dyn_var_time_uninterp_type) :: harvest_vars(num_harvest_vars) ! value of each harvest variable | ||
|
||
real(r8) , allocatable, public :: harvest_rates(:,:) ! category harvest rates (d1) in each gridcell (d2) | ||
integer, public, parameter :: wood_harvest_units = 2 ! 1 = area fraction, 2 = carbon | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @sshu88, is the long-term plan to have wood_harvest_units read in or defined in the file? or set in a namelist? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In my opinion it would be better to set There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I agree that a namelist option would be best in the long-term, particularly if the input file eventually contains both carbon and area prescriptions. |
||
real(r8), allocatable, public :: harvest_rates(:,:) ! harvest rates | ||
logical, private :: do_harvest ! whether we're in a period when we should do harvest | ||
|
||
logical, private :: do_harvest ! whether we're in a period when we should do harvest | ||
!--------------------------------------------------------------------------- | ||
|
||
contains | ||
|
@@ -92,8 +92,9 @@ subroutine dynHarvest_init(bounds, harvest_filename) | |
! !DESCRIPTION: | ||
! Initialize data structures for harvest information. | ||
! This should be called once, during model initialization. | ||
! | ||
use elm_varctl , only : use_cn | ||
|
||
! !USES: | ||
use elm_varctl , only : use_cn, use_fates | ||
use dynVarTimeUninterpMod , only : dyn_var_time_uninterp_type | ||
use dynTimeInfoMod , only : YEAR_POSITION_START_OF_TIMESTEP | ||
use dynTimeInfoMod , only : YEAR_POSITION_END_OF_TIMESTEP | ||
|
@@ -156,7 +157,7 @@ subroutine dynHarvest_interp_harvest_types(bounds) | |
! | ||
! !USES: | ||
use dynTimeInfoMod , only : time_info_type | ||
use elm_varctl , only : use_cn, use_fates | ||
use elm_varctl , only : use_cn, use_fates | ||
! | ||
! !ARGUMENTS: | ||
type(bounds_type), intent(in) :: bounds ! proc-level bounds | ||
|
@@ -181,7 +182,8 @@ subroutine dynHarvest_interp_harvest_types(bounds) | |
! means that harvest rates will be maintained at the rate given in the last | ||
! year of the file for all years past the end of this specified time series. | ||
do_harvest = .true. | ||
allocate(this_data(bounds%begg:bounds%endg)) | ||
! Right now we don't account for the topounit in plant harvest | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. will harvest work with a configuration with more than 1 topo unit per cell? If it doesn't, we should have a graceful fail if that combination is specified. Probably in contolmod ? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. True. The dataset we are using now does not account for another topographic dimension. |
||
allocate(this_data(bounds%begg:bounds%endg)) | ||
do varnum = 1, num_harvest_vars | ||
call harvest_vars(varnum)%get_current_data(this_data) | ||
harvest_rates(varnum,bounds%begg:bounds%endg) = this_data(bounds%begg:bounds%endg) | ||
|
+7 −3 | biogeochem/EDCanopyStructureMod.F90 | |
+386 −26 | biogeochem/EDLoggingMortalityMod.F90 | |
+11 −5 | biogeochem/EDMortalityFunctionsMod.F90 | |
+177 −139 | biogeochem/EDPatchDynamicsMod.F90 | |
+1 −1 | biogeochem/FatesAllometryMod.F90 | |
+2 −0 | main/EDInitMod.F90 | |
+20 −2 | main/EDMainMod.F90 | |
+10 −0 | main/EDParamsMod.F90 | |
+7 −4 | main/EDTypesMod.F90 | |
+335 −4 | main/FatesHistoryInterfaceMod.F90 | |
+20 −0 | main/FatesInterfaceMod.F90 | |
+15 −0 | main/FatesInterfaceTypesMod.F90 | |
+10 −8 | parteh/PRTGenericMod.F90 |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -152,7 +152,7 @@ module ELMFatesInterfaceMod | |
use FatesPlantHydraulicsMod, only : InitHydrSites | ||
use FatesPlantHydraulicsMod, only : RestartHydrStates | ||
|
||
use dynHarvestMod , only : num_harvest_vars, harvest_varnames | ||
use dynHarvestMod , only : num_harvest_vars, harvest_varnames, wood_harvest_units | ||
use dynHarvestMod , only : harvest_rates ! these are dynamic in space and time | ||
use dynHarvestMod , only : num_harvest_vars, harvest_varnames, wood_harvest_units | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @sshu88 it looks like there is some duplicate code here as well. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks for checking. |
||
|
||
|
@@ -211,6 +211,7 @@ module ELMFatesInterfaceMod | |
procedure, public :: wrap_accumulatefluxes | ||
procedure, public :: prep_canopyfluxes | ||
procedure, public :: wrap_canopy_radiation | ||
procedure, public :: wrap_WoodProducts | ||
procedure, public :: wrap_update_hifrq_hist | ||
procedure, public :: TransferZ0mDisp | ||
procedure, public :: UpdateLitterFluxes | ||
|
@@ -271,6 +272,7 @@ subroutine ELMFatesGlobals() | |
integer :: pass_biogeog | ||
integer :: pass_num_lu_harvest_types | ||
integer :: pass_lu_harvest | ||
integer :: pass_harvest_bypass_criteria | ||
integer :: pass_nocomp | ||
integer :: pass_sp | ||
|
||
|
@@ -294,11 +296,17 @@ subroutine ELMFatesGlobals() | |
|
||
! We will use this switch temporarily, until we complete | ||
! the ELM-FATES harvest integration | ||
logical, parameter :: do_elm_fates_harvest = .false. | ||
|
||
logical, parameter :: do_elm_fates_harvest = .true. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. similar to my other question, should/could this be a namelist parameter instead of this hard-coded local? Or will this be added in a later phase? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nevermind, i see it isn't used. Can we remove this variable and its commented out usage below? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes. Remove this namelist option does not affect the ELM-FATES run now. |
||
! Another switch to determine if we want to harvest forest | ||
! by ignoring the harvest criteria | ||
! This is only useful when performing carbon-based harvest | ||
! Need to update as a namelist option in the future | ||
logical, parameter :: allow_harvest_bypass_criteria = .false. | ||
|
||
if (use_fates) then | ||
|
||
verbose_output = .false. | ||
! Shijie: Turn on verbose_output for test | ||
verbose_output = .false. | ||
call FatesInterfaceInit(iulog, verbose_output) | ||
|
||
! Force FATES parameters that are recieve type, to the unset value | ||
|
@@ -313,7 +321,7 @@ subroutine ELMFatesGlobals() | |
call set_fates_ctrlparms('hlm_name',cval='ELM') | ||
call set_fates_ctrlparms('hio_ignore_val',rval=spval) | ||
call set_fates_ctrlparms('soilwater_ipedof',ival=get_ipedof(0)) | ||
call set_fates_ctrlparms('max_patch_per_site',ival=(natpft_size-1)) | ||
call set_fates_ctrlparms('max_patch_per_site',ival=natpft_size-1) | ||
|
||
|
||
call set_fates_ctrlparms('parteh_mode',ival=fates_parteh_mode) | ||
|
@@ -411,12 +419,19 @@ subroutine ELMFatesGlobals() | |
pass_logging = 1 | ||
pass_num_lu_harvest_types = num_harvest_vars | ||
pass_lu_harvest = 1 | ||
if(allow_harvest_bypass_criteria) then | ||
pass_harvest_bypass_criteria = 1 | ||
else | ||
pass_harvest_bypass_criteria = 0 | ||
end if | ||
else | ||
pass_lu_harvest = 0 | ||
pass_num_lu_harvest_types = 0 | ||
pass_harvest_bypass_criteria = 0 | ||
end if | ||
|
||
call set_fates_ctrlparms('use_lu_harvest',ival=pass_lu_harvest) | ||
call set_fates_ctrlparms('use_harvest_bypass_criteria',ival=pass_harvest_bypass_criteria) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't see any setup for this on the fates side pr 888. Is this a future feature? I'm assuming so given that it's hard coded to false just above this. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's an old flag. I forgot to delete this line in ELM side. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ok, cool. In that case would you push an update to remove it please? |
||
call set_fates_ctrlparms('num_lu_harvest_cats',ival=pass_num_lu_harvest_types) | ||
call set_fates_ctrlparms('use_logging',ival=pass_logging) | ||
|
||
|
@@ -692,7 +707,6 @@ subroutine init(this, bounds_proc ) | |
|
||
end do | ||
|
||
|
||
! Initialize site-level static quantities dictated by the HLM | ||
! currently ground layering depth | ||
|
||
|
@@ -886,6 +900,7 @@ subroutine dynamics_driv(this, bounds_clump, top_as_inst, & | |
this%fates(nc)%bc_in(s)%hlm_harvest_catnames = harvest_varnames | ||
this%fates(nc)%bc_in(s)%hlm_harvest_units = wood_harvest_units | ||
end if | ||
this%fates(nc)%bc_in(s)%site_area=col_pp%wtgcell(c)*grc_pp%area(g)*1e6_r8 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. need units for 1e6 please. I'm guessing this is m2 per km2? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Right. |
||
|
||
end do | ||
|
||
|
@@ -1108,10 +1123,11 @@ subroutine wrap_update_hlmfates_dyn(this, nc, bounds_clump, & | |
this%fates(nc)%sites, & | ||
this%fates(nc)%bc_in) | ||
|
||
! Canopy diagnostic outputs for HLM | ||
! Canopy diagnostic outputs for HLM, including LUC | ||
call update_hlm_dynamics(this%fates(nc)%nsites, & | ||
this%fates(nc)%sites, & | ||
this%f2hmap(nc)%fcolumn, & | ||
this%fates(nc)%bc_in, & | ||
this%fates(nc)%bc_out ) | ||
|
||
!--------------------------------------------------------------------------------- | ||
|
@@ -1180,7 +1196,6 @@ subroutine wrap_update_hlmfates_dyn(this, nc, bounds_clump, & | |
|
||
! initialize SP mode pft order index to 0. Below ground is the 0th patch | ||
veg_pp%sp_pftorder_index(col_pp%pfti(c)) = 0 | ||
|
||
areacheck = veg_pp%wt_ed(col_pp%pfti(c)) | ||
|
||
do ifp = 1, this%fates(nc)%sites(s)%youngest_patch%patchno | ||
|
@@ -2213,6 +2228,46 @@ end subroutine wrap_accumulatefluxes | |
|
||
! ====================================================================================== | ||
|
||
subroutine wrap_WoodProducts(this, bounds_clump, fc, filterc) | ||
|
||
! !ARGUMENTS: | ||
class(hlm_fates_interface_type), intent(inout) :: this | ||
type(bounds_type) , intent(in) :: bounds_clump | ||
integer , intent(in) :: fc ! size of column filter | ||
integer , intent(in) :: filterc(fc) ! column filter | ||
|
||
! Locacs | ||
integer :: s,c,icc | ||
integer :: nc | ||
|
||
associate(& | ||
gpp => col_cf%gpp , & | ||
ar => col_cf%ar , & | ||
hrv_deadstemc_to_prod10c => col_cf%hrv_deadstemc_to_prod10c , & | ||
hrv_deadstemc_to_prod100c => col_cf%hrv_deadstemc_to_prod100c) | ||
|
||
nc = bounds_clump%clump_index | ||
! Loop over columns | ||
do icc = 1,fc | ||
c = filterc(icc) | ||
s = this%f2hmap(nc)%hsites(c) | ||
|
||
! Shijie: Pass harvested wood products to ELM variable | ||
hrv_deadstemc_to_prod10c(c) = this%fates(nc)%bc_out(s)%hrv_deadstemc_to_prod10c | ||
hrv_deadstemc_to_prod100c(c) = this%fates(nc)%bc_out(s)%hrv_deadstemc_to_prod100c | ||
|
||
! Pass LUC related C fluxes which are calculated in FATES [gC m-2 s-1] | ||
gpp(c) = this%fates(nc)%bc_out(s)%gpp_site*1e3 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. units for 1e3 please, named constant is good too There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. g per kg. |
||
ar(c) = this%fates(nc)%bc_out(s)%ar_site*1e3 | ||
|
||
end do | ||
|
||
end associate | ||
return | ||
end subroutine wrap_WoodProducts | ||
|
||
! ====================================================================================== | ||
|
||
subroutine wrap_canopy_radiation(this, bounds_clump, & | ||
num_vegsol, filter_vegsol, coszen, surfalb_inst) | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@sshu88 is this change to try and avoid the water balance error? @rgknox and I recommend that we not change this in e3sm master branch. It should be reverted to the old value.