From 049c850674253aec2a8c57c6cde18d98debeb992 Mon Sep 17 00:00:00 2001 From: Jun Yan Ding Date: Wed, 6 Jul 2022 14:52:15 -0700 Subject: [PATCH 1/6] fixing hydro grass water balance error --- biogeochem/EDPhysiologyMod.F90 | 9 +++++---- biogeophys/FatesPlantHydraulicsMod.F90 | 10 +++++++++- main/FatesHydraulicsMemMod.F90 | 2 +- parameter_files/fates_params_default.cdl | 2 +- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/biogeochem/EDPhysiologyMod.F90 b/biogeochem/EDPhysiologyMod.F90 index 6feb039d37..65db791aee 100644 --- a/biogeochem/EDPhysiologyMod.F90 +++ b/biogeochem/EDPhysiologyMod.F90 @@ -815,8 +815,8 @@ subroutine phenology( currentSite, bc_in ) endif ! ! accumulate the GDD using daily mean temperatures - ! Don't accumulate GDD during the growing season (that wouldn't make sense) - if (temp_in_C .gt. 0._r8 .and. currentSite%cstatus == phen_cstat_iscold) then + ! Don't accumulate GDD during the growing season (that wouldn't make sense) Junyan modified to adding nevercold + if (temp_in_C .gt. 0._r8 .and. (currentSite%cstatus == phen_cstat_iscold .or. currentSite%cstatus == phen_cstat_nevercold)) then currentSite%grow_deg_days = currentSite%grow_deg_days + temp_in_C endif @@ -910,9 +910,10 @@ subroutine phenology( currentSite, bc_in ) ! and thus %nchilldays will never go from zero to 1. The following logic ! when coupled with this fact will essentially prevent cold-deciduous ! plants from re-emerging in areas without at least some cold days - + if( (currentSite%cstatus == phen_cstat_notcold) .and. & - (dayssincecleafoff > 400)) then ! remove leaves after a whole year + (dayssincecleafoff > 40000)) then ! remove leaves after a whole year, + !Junyan change dayssincecleafoff > 400 to 40000 to disable this function, so the condition will never be met ! when there is no 'off' period. currentSite%grow_deg_days = 0._r8 diff --git a/biogeophys/FatesPlantHydraulicsMod.F90 b/biogeophys/FatesPlantHydraulicsMod.F90 index bd77528b14..3130a1d43a 100644 --- a/biogeophys/FatesPlantHydraulicsMod.F90 +++ b/biogeophys/FatesPlantHydraulicsMod.F90 @@ -934,8 +934,16 @@ subroutine UpdatePlantHydrLenVol(ccohort,site_hydr) crown_depth = min(ccohort%hite,0.1_r8) z_stem = ccohort%hite - crown_depth v_sapwood = a_sapwood * z_stem ! + 0.333_r8*a_sapwood*crown_depth - ccohort_hydr%v_ag(n_hypool_leaf+1:n_hypool_ag) = v_sapwood / n_hypool_stem + ! Junyan changed the following code to calculate the above ground node volume + ! foliage donate half of its water volume to xylem for grass + if (prt_params%woody(ft)==1) then + ccohort_hydr%v_ag(n_hypool_leaf+1:n_hypool_ag) = v_sapwood / n_hypool_stem ! original code + else + v_leaf_donate(1:n_hypool_leaf) = ccohort_hydr%v_ag(1:n_hypool_leaf) / l2sap_vol_donate_frac + ccohort_hydr%v_ag(1:n_hypool_leaf) = ccohort_hydr%v_ag(1:n_hypool_leaf) - v_leaf_donate(1:n_hypool_leaf) + ccohort_hydr%v_ag(n_hypool_leaf+1:n_hypool_ag) = (v_sapwood + sum(v_leaf_donate(1:n_hypool_leaf))) / n_hypool_stem + end if ! Determine belowground biomass as a function of total (sapwood, heartwood, ! leaf, fine root) biomass then subtract out the fine root biomass to get diff --git a/main/FatesHydraulicsMemMod.F90 b/main/FatesHydraulicsMemMod.F90 index f971b4f55b..8dbeb8030f 100644 --- a/main/FatesHydraulicsMemMod.F90 +++ b/main/FatesHydraulicsMemMod.F90 @@ -29,7 +29,7 @@ module FatesHydraulicsMemMod integer, parameter, public :: n_hypool_stem = 1 integer, parameter, public :: n_hypool_troot = 1 ! CANNOT BE CHANGED integer, parameter, public :: n_hypool_aroot = 1 ! THIS IS "PER-SOIL-LAYER" - integer, parameter, public :: nshell = 5 + integer, parameter, public :: nshell = 1 ! number of aboveground plant water storage nodes integer, parameter, public :: n_hypool_ag = n_hypool_leaf+n_hypool_stem diff --git a/parameter_files/fates_params_default.cdl b/parameter_files/fates_params_default.cdl index 6d5fa2cb4e..c33aa39485 100644 --- a/parameter_files/fates_params_default.cdl +++ b/parameter_files/fates_params_default.cdl @@ -769,7 +769,7 @@ data: fates_history_sizeclass_bin_edges = 0, 5, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100 ; - fates_hydr_htftype_node = 1, 1, 1, 1 ; + fates_hydr_htftype_node = 2, 2, 2, 2 ; fates_prt_organ_id = 1, 2, 3, 6 ; From 18317daa7933b3ecf166413d89854d76033abde8 Mon Sep 17 00:00:00 2001 From: Jun Yan Ding Date: Wed, 6 Jul 2022 19:12:19 -0700 Subject: [PATCH 2/6] fix hydro grass --- biogeophys/FatesPlantHydraulicsMod.F90 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/biogeophys/FatesPlantHydraulicsMod.F90 b/biogeophys/FatesPlantHydraulicsMod.F90 index 3130a1d43a..06bfd8781f 100644 --- a/biogeophys/FatesPlantHydraulicsMod.F90 +++ b/biogeophys/FatesPlantHydraulicsMod.F90 @@ -857,7 +857,9 @@ subroutine UpdatePlantHydrLenVol(ccohort,site_hydr) ! roots to help mitigate numerical issues due to very small volumes. This is the ! fraction the transporting roots donate to those layers real(r8), parameter :: t2aroot_vol_donate_frac = 0.65_r8 - + real(r8), parameter :: l2sap_vol_donate_frac = 0.5_r8 ! Junyan added + + real(r8), parameter :: min_leaf_frac = 0.1_r8 ! Fraction of maximum leaf carbon that ! we set as our lower cap on leaf volume real(r8), parameter :: min_trim = 0.1_r8 ! The lower cap on trimming function used From 87f06677e9909ae421e4b22603e790a18198ef39 Mon Sep 17 00:00:00 2001 From: JunyanDing <43835195+JunyanDing@users.noreply.github.com> Date: Wed, 6 Jul 2022 20:51:51 -0700 Subject: [PATCH 3/6] Update FatesPlantHydraulicsMod.F90 --- biogeophys/FatesPlantHydraulicsMod.F90 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/biogeophys/FatesPlantHydraulicsMod.F90 b/biogeophys/FatesPlantHydraulicsMod.F90 index 06bfd8781f..cc26852bd0 100644 --- a/biogeophys/FatesPlantHydraulicsMod.F90 +++ b/biogeophys/FatesPlantHydraulicsMod.F90 @@ -852,13 +852,14 @@ subroutine UpdatePlantHydrLenVol(ccohort,site_hydr) integer :: nlevrhiz ! number of rhizosphere levels real(r8) :: dbh ! the dbh of current cohort [cm] real(r8) :: z_fr ! rooting depth of a cohort [cm] - + real(r8) :: v_leaf_donate(1:n_hypool_leaf) ! the volume that leaf will donate to xylem + ! We allow the transporting root to donate a fraction of its volume to the absorbing ! roots to help mitigate numerical issues due to very small volumes. This is the ! fraction the transporting roots donate to those layers real(r8), parameter :: t2aroot_vol_donate_frac = 0.65_r8 real(r8), parameter :: l2sap_vol_donate_frac = 0.5_r8 ! Junyan added - + real(r8), parameter :: min_leaf_frac = 0.1_r8 ! Fraction of maximum leaf carbon that ! we set as our lower cap on leaf volume From 16526de8420a5b2cda1c305a36ef0dd75a2d9c66 Mon Sep 17 00:00:00 2001 From: JunyanDing <43835195+JunyanDing@users.noreply.github.com> Date: Tue, 12 Jul 2022 14:40:56 -0700 Subject: [PATCH 4/6] fix small bug --- biogeophys/FatesPlantHydraulicsMod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/biogeophys/FatesPlantHydraulicsMod.F90 b/biogeophys/FatesPlantHydraulicsMod.F90 index cc26852bd0..c626067d39 100644 --- a/biogeophys/FatesPlantHydraulicsMod.F90 +++ b/biogeophys/FatesPlantHydraulicsMod.F90 @@ -943,7 +943,7 @@ subroutine UpdatePlantHydrLenVol(ccohort,site_hydr) if (prt_params%woody(ft)==1) then ccohort_hydr%v_ag(n_hypool_leaf+1:n_hypool_ag) = v_sapwood / n_hypool_stem ! original code else - v_leaf_donate(1:n_hypool_leaf) = ccohort_hydr%v_ag(1:n_hypool_leaf) / l2sap_vol_donate_frac + v_leaf_donate(1:n_hypool_leaf) = ccohort_hydr%v_ag(1:n_hypool_leaf) * l2sap_vol_donate_frac ccohort_hydr%v_ag(1:n_hypool_leaf) = ccohort_hydr%v_ag(1:n_hypool_leaf) - v_leaf_donate(1:n_hypool_leaf) ccohort_hydr%v_ag(n_hypool_leaf+1:n_hypool_ag) = (v_sapwood + sum(v_leaf_donate(1:n_hypool_leaf))) / n_hypool_stem end if From 131a65682a68c72457432081f2822bda4b904b7b Mon Sep 17 00:00:00 2001 From: JunyanDing <43835195+JunyanDing@users.noreply.github.com> Date: Fri, 9 Sep 2022 12:55:52 -0700 Subject: [PATCH 5/6] Update fates_params_default.cdl --- parameter_files/fates_params_default.cdl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parameter_files/fates_params_default.cdl b/parameter_files/fates_params_default.cdl index c33aa39485..244c3716f6 100644 --- a/parameter_files/fates_params_default.cdl +++ b/parameter_files/fates_params_default.cdl @@ -1445,7 +1445,7 @@ data: fates_maintresp_model = 1 ; - fates_mort_disturb_frac = 1 ; + fates_mort_disturb_frac = 0 ; fates_mort_understorey_death = 0.55983 ; From 93a02af0c9383e63d0b27e4061d5614c6f5223ae Mon Sep 17 00:00:00 2001 From: Gregory Lemieux Date: Tue, 7 Mar 2023 14:24:24 -0800 Subject: [PATCH 6/6] Manually revert phenology and parameter changes --- biogeochem/EDPhysiologyMod.F90 | 7 +++---- parameter_files/fates_params_default.cdl | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/biogeochem/EDPhysiologyMod.F90 b/biogeochem/EDPhysiologyMod.F90 index 65db791aee..a70523b404 100644 --- a/biogeochem/EDPhysiologyMod.F90 +++ b/biogeochem/EDPhysiologyMod.F90 @@ -815,8 +815,8 @@ subroutine phenology( currentSite, bc_in ) endif ! ! accumulate the GDD using daily mean temperatures - ! Don't accumulate GDD during the growing season (that wouldn't make sense) Junyan modified to adding nevercold - if (temp_in_C .gt. 0._r8 .and. (currentSite%cstatus == phen_cstat_iscold .or. currentSite%cstatus == phen_cstat_nevercold)) then + ! Don't accumulate GDD during the growing season (that wouldn't make sense) + if (temp_in_C .gt. 0._r8 .and. currentSite%cstatus == phen_cstat_iscold) then currentSite%grow_deg_days = currentSite%grow_deg_days + temp_in_C endif @@ -912,8 +912,7 @@ subroutine phenology( currentSite, bc_in ) ! plants from re-emerging in areas without at least some cold days if( (currentSite%cstatus == phen_cstat_notcold) .and. & - (dayssincecleafoff > 40000)) then ! remove leaves after a whole year, - !Junyan change dayssincecleafoff > 400 to 40000 to disable this function, so the condition will never be met + (dayssincecleafoff > 400)) then ! remove leaves after a whole year, ! when there is no 'off' period. currentSite%grow_deg_days = 0._r8 diff --git a/parameter_files/fates_params_default.cdl b/parameter_files/fates_params_default.cdl index 244c3716f6..6d5fa2cb4e 100644 --- a/parameter_files/fates_params_default.cdl +++ b/parameter_files/fates_params_default.cdl @@ -769,7 +769,7 @@ data: fates_history_sizeclass_bin_edges = 0, 5, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100 ; - fates_hydr_htftype_node = 2, 2, 2, 2 ; + fates_hydr_htftype_node = 1, 1, 1, 1 ; fates_prt_organ_id = 1, 2, 3, 6 ; @@ -1445,7 +1445,7 @@ data: fates_maintresp_model = 1 ; - fates_mort_disturb_frac = 0 ; + fates_mort_disturb_frac = 1 ; fates_mort_understorey_death = 0.55983 ;