From 0a3c66c2c31516b9b4108dbb431d95eb8b443df3 Mon Sep 17 00:00:00 2001 From: Marcos Longo Date: Mon, 26 Jun 2023 21:10:45 -0700 Subject: [PATCH] Added future parameters for addressing issue 1014 in an upcoming pull request. --- main/EDPftvarcon.F90 | 24 ++++++++++++++++++++++++ parameter_files/fates_params_default.cdl | 10 ++++++++++ 2 files changed, 34 insertions(+) diff --git a/main/EDPftvarcon.F90 b/main/EDPftvarcon.F90 index f84cf96b9a..148df49e78 100644 --- a/main/EDPftvarcon.F90 +++ b/main/EDPftvarcon.F90 @@ -80,6 +80,8 @@ module EDPftvarcon ! 1=linear, 0=very curved real(r8), allocatable :: maintresp_reduction_intercept(:) ! intercept of MR reduction as f(carbon storage), ! 0=no throttling, 1=max throttling + real(r8), allocatable :: maintresp_reduction_upthresh (:) ! Upper threshold for storage biomass (relative + ! to leaf biomass) above which MR is not reduced real(r8), allocatable :: maintresp_leaf_atkin2017_baserate(:) ! leaf maintenance respiration base rate (r0) ! per Atkin et al 2017 @@ -94,6 +96,7 @@ module EDPftvarcon real(r8), allocatable :: mort_scalar_coldstress(:) ! maximum mortality rate from cold stress real(r8), allocatable :: mort_scalar_cstarvation(:) ! maximum mortality rate from carbon starvation real(r8), allocatable :: mort_scalar_hydrfailure(:) ! maximum mortality rate from hydraulic failure + real(r8), allocatable :: mort_upthresh_cstarvation(:) ! threshold for storage biomass (relative to target leaf biomass) above which carbon starvation is zero real(r8), allocatable :: hf_sm_threshold(:) ! soil moisture (btran units) at which drought mortality begins for non-hydraulic model real(r8), allocatable :: hf_flc_threshold(:) ! plant fractional loss of conductivity at which drought mortality begins for hydraulic model real(r8), allocatable :: vcmaxha(:) ! activation energy for vcmax @@ -448,6 +451,10 @@ subroutine Register_PFT(this, fates_params) call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, & dimension_names=dim_names, lower_bounds=dim_lower_bound) + name = 'fates_maintresp_reduction_upthresh' + call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, & + dimension_names=dim_names, lower_bounds=dim_lower_bound) + name = 'fates_maintresp_leaf_atkin2017_baserate' call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, & dimension_names=dim_names, lower_bounds=dim_lower_bound) @@ -560,6 +567,10 @@ subroutine Register_PFT(this, fates_params) call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, & dimension_names=dim_names, lower_bounds=dim_lower_bound) + name = 'fates_mort_upthresh_cstarvation' + call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, & + dimension_names=dim_names, lower_bounds=dim_lower_bound) + name = 'fates_mort_hf_sm_threshold' call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, & dimension_names=dim_names, lower_bounds=dim_lower_bound) @@ -865,6 +876,10 @@ subroutine Receive_PFT(this, fates_params) call fates_params%RetrieveParameterAllocate(name=name, & data=this%maintresp_reduction_intercept) + name = 'fates_maintresp_reduction_upthresh' + call fates_params%RetrieveParameterAllocate(name=name, & + data=this%maintresp_reduction_upthresh) + name = 'fates_maintresp_leaf_atkin2017_baserate' call fates_params%RetrieveParameterAllocate(name=name, & data=this%maintresp_leaf_atkin2017_baserate) @@ -961,6 +976,10 @@ subroutine Receive_PFT(this, fates_params) call fates_params%RetrieveParameterAllocate(name=name, & data=this%mort_scalar_hydrfailure) + name = 'fates_mort_upthresh_cstarvation' + call fates_params%RetrieveParameterAllocate(name=name, & + data=this%mort_upthresh_cstarvation) + name = 'fates_mort_ip_size_senescence' call fates_params%RetrieveParameterAllocate(name=name, & @@ -986,6 +1005,10 @@ subroutine Receive_PFT(this, fates_params) call fates_params%RetrieveParameterAllocate(name=name, & data=this%mort_scalar_cstarvation) + name = 'fates_mort_upthresh_cstarvation' + call fates_params%RetrieveParameterAllocate(name=name, & + data=this%mort_upthresh_cstarvation) + name = 'fates_mort_hf_sm_threshold' call fates_params%RetrieveParameterAllocate(name=name, & @@ -1615,6 +1638,7 @@ subroutine FatesReportPFTParams(is_master) write(fates_log(),fmt0) 'mort_scalar_coldstress = ',EDPftvarcon_inst%mort_scalar_coldstress write(fates_log(),fmt0) 'mort_scalar_cstarvation = ',EDPftvarcon_inst%mort_scalar_cstarvation write(fates_log(),fmt0) 'mort_scalar_hydrfailure = ',EDPftvarcon_inst%mort_scalar_hydrfailure + write(fates_log(),fmt0) 'mort_upthresh_cstarvation = ',EDPftvarcon_inst%mort_upthresh_cstarvation write(fates_log(),fmt0) 'hf_sm_threshold = ',EDPftvarcon_inst%hf_sm_threshold write(fates_log(),fmt0) 'hf_flc_threshold = ',EDPftvarcon_inst%hf_flc_threshold write(fates_log(),fmt0) 'vcmaxha = ',EDPftvarcon_inst%vcmaxha diff --git a/parameter_files/fates_params_default.cdl b/parameter_files/fates_params_default.cdl index a3a210d658..d1b219a36a 100644 --- a/parameter_files/fates_params_default.cdl +++ b/parameter_files/fates_params_default.cdl @@ -389,6 +389,9 @@ variables: double fates_maintresp_reduction_intercept(fates_pft) ; fates_maintresp_reduction_intercept:units = "unitless (0-1)" ; fates_maintresp_reduction_intercept:long_name = "intercept of MR reduction as f(carbon storage), 0=no throttling, 1=max throttling" ; + double fates_maintresp_reduction_upthresh(fates_pft) ; + fates_maintresp_reduction_upthresh:units = "unitless (0-1)" ; + fates_maintresp_reduction_upthresh:long_name = "upper threshold for storage biomass (relative to leaf biomass) above which MR is not reduced" ; double fates_mort_bmort(fates_pft) ; fates_mort_bmort:units = "1/yr" ; fates_mort_bmort:long_name = "background mortality rate" ; @@ -428,6 +431,9 @@ variables: double fates_mort_scalar_hydrfailure(fates_pft) ; fates_mort_scalar_hydrfailure:units = "1/yr" ; fates_mort_scalar_hydrfailure:long_name = "maximum mortality rate from hydraulic failure" ; + double fates_mort_upthresh_cstarvation(fates_pft) ; + fates_mort_upthresh_cstarvation:units = "unitless" ; + fates_mort_upthresh_cstarvation:long_name = "threshold for storage biomass (relative to target leaf biomass) above which carbon starvation is zero" ; double fates_nonhydro_smpsc(fates_pft) ; fates_nonhydro_smpsc:units = "mm" ; fates_nonhydro_smpsc:long_name = "Soil water potential at full stomatal closure" ; @@ -1288,6 +1294,8 @@ data: fates_maintresp_reduction_intercept = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ; + fates_maintresp_reduction_upthresh = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ; + fates_mort_bmort = 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014 ; @@ -1322,6 +1330,8 @@ data: fates_mort_scalar_hydrfailure = 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6 ; + fates_mort_upthresh_cstarvation = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ; + fates_nonhydro_smpsc = -255000, -255000, -255000, -255000, -255000, -255000, -255000, -255000, -255000, -255000, -255000, -255000 ;