From 508e7076574d7ca07d5f4ec3e66223806e8264e1 Mon Sep 17 00:00:00 2001 From: ckoven Date: Fri, 23 Mar 2018 15:51:15 -0600 Subject: [PATCH 1/4] more documentation and fewer dependencies for ncvarsort.py --- tools/ncvarsort.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/tools/ncvarsort.py b/tools/ncvarsort.py index 4778c21c..ffd7c091 100644 --- a/tools/ncvarsort.py +++ b/tools/ncvarsort.py @@ -1,11 +1,18 @@ from netCDF4 import Dataset -import numpy -import filemod import sys +import os -# program sorts the variables based on the provided list, and pulls them one at a time from an existing file and adds them to a new file in the sorted order. +# program sorts the variables based on the provided list, and pulls them one at a time +# from an existing file and adds them to a new file in the sorted order. # input/output based on code here: https://gist.github.com/guziy/8543562 +def clobber(filename): + try: + print('replacing file: '+filename) + os.remove(filename) + except: + print('file does not exist: '+filename) + ### modify the paths below to point to the new and old file names fnamein = 'fates_params_default.nc' fnameout = 'fates_params_default_sorted.nc' @@ -13,11 +20,13 @@ # open the input dataset dsin = Dataset(fnamein) -# make empty lists to hold the variable names in +# make empty lists to hold the variable names in. the first of these is a list of sub-lists, +# one for each type of variable (based on dimensionality). +# the second is the master list that will contain all variables. varnames_list = [[],[],[],[],[],[],[],[],[]] varnames_list_sorted = [] -# sort the variables by dimensionality, but mix the PFTxother dimension in with the regular PFT-indexed variables +# sort the variables by dimensionality, but mix the PFT x other dimension in with the regular PFT-indexed variables dimtype_sortorder_dict = {(u'fates_history_height_bins',):0, (u'fates_history_size_bins',):1, (u'fates_history_age_bins',):2, @@ -30,16 +39,20 @@ (u'fates_NCWD',):7, ():8} +# go through each of the variables and assign it to one of the sub-lists based on its dimensionality for v_name, varin in dsin.variables.iteritems(): sortorder = dimtype_sortorder_dict[varin.dimensions] # if a KeyError, it means that the parameter has a dimension which isn't in dimtype_sortorder_dict. need to add it. varnames_list[sortorder].append(v_name) +# go through each of the lists and sort the variable names alphabetically, +# and put them into a master list of all variables. for i in range(len(varnames_list)): varnames_list[i] = sorted(varnames_list[i], key=lambda L: (L.lower(), L)) varnames_list_sorted.extend(varnames_list[i]) -filemod.clobber(fnameout) +# open the output filename, deleting it if it exists already. +clobber(fnameout) dsout = Dataset(fnameout, "w", format="NETCDF3_CLASSIC") #Copy dimensions @@ -49,6 +62,8 @@ print +# go through each variable in the order of the sorted master list, and copy the variable +# as well as all metadata to the new file. for i in range(len(varnames_list_sorted)): v_name = varnames_list_sorted[i] varin = dsin.variables[v_name] @@ -66,3 +81,4 @@ # close the output file dsout.close() +dsin.close() From a36c80aa8456eee36bb11ad907d409912854507b Mon Sep 17 00:00:00 2001 From: Charlie Koven Date: Fri, 23 Mar 2018 16:49:12 -0700 Subject: [PATCH 2/4] replaced fates_stress_mort and an inline parameter with separate cold, hydr, and carbon rate params --- biogeochem/EDMortalityFunctionsMod.F90 | 8 +++---- main/EDParamsMod.F90 | 10 -------- main/EDPftvarcon.F90 | 30 ++++++++++++++++++++++++ parameter_files/fates_params_default.cdl | 20 ++++++++++++---- 4 files changed, 49 insertions(+), 19 deletions(-) diff --git a/biogeochem/EDMortalityFunctionsMod.F90 b/biogeochem/EDMortalityFunctionsMod.F90 index 4e849283..e32a3678 100644 --- a/biogeochem/EDMortalityFunctionsMod.F90 +++ b/biogeochem/EDMortalityFunctionsMod.F90 @@ -62,7 +62,6 @@ subroutine mortality_rates( cohort_in,bc_in,cmort,hmort,bmort,frmort ) real(r8) :: hf_sm_threshold ! hydraulic failure soil moisture threshold real(r8) :: temp_dep ! Temp. function (freezing mortality) real(r8) :: temp_in_C ! Daily averaged temperature in Celcius - real(r8),parameter :: frost_mort_scaler = 3.0_r8 ! Scaling factor for freezing mortality real(r8),parameter :: frost_mort_buffer = 5.0_r8 ! 5deg buffer for freezing mortality logical, parameter :: test_zero_mortality = .false. ! Developer test which @@ -79,7 +78,7 @@ subroutine mortality_rates( cohort_in,bc_in,cmort,hmort,bmort,frmort ) hf_sm_threshold = EDPftvarcon_inst%hf_sm_threshold(cohort_in%pft) if(cohort_in%patchptr%btran_ft(cohort_in%pft) <= hf_sm_threshold)then - hmort = ED_val_stress_mort + hmort = EDPftvarcon_inst%mort_scalar_hydrfailure(cohort_in%pft) else hmort = 0.0_r8 endif @@ -89,7 +88,8 @@ subroutine mortality_rates( cohort_in,bc_in,cmort,hmort,bmort,frmort ) call bleaf(cohort_in%dbh,cohort_in%pft,cohort_in%canopy_trim,b_leaf) if( b_leaf > 0._r8 .and. cohort_in%bstore <= b_leaf )then frac = cohort_in%bstore/ b_leaf - cmort = max(0.0_r8,ED_val_stress_mort*(1.0_r8 - frac)) + cmort = max(0.0_r8,EDPftvarcon_inst%mort_scalar_cstarvation(cohort_in%pft) * & + (1.0_r8 - frac)) else cmort = 0.0_r8 endif @@ -109,7 +109,7 @@ subroutine mortality_rates( cohort_in,bc_in,cmort,hmort,bmort,frmort ) temp_in_C = bc_in%t_veg24_si - tfrz temp_dep = max(0.0,min(1.0,1.0 - (temp_in_C - & EDPftvarcon_inst%freezetol(cohort_in%pft))/frost_mort_buffer) ) - frmort = frost_mort_scaler * temp_dep + frmort = EDPftvarcon_inst%mort_scalar_coldstress(cohort_in%pft) * temp_dep !mortality_rates = bmort + hmort + cmort diff --git a/main/EDParamsMod.F90 b/main/EDParamsMod.F90 index f1db7058..8ffa505d 100644 --- a/main/EDParamsMod.F90 +++ b/main/EDParamsMod.F90 @@ -22,7 +22,6 @@ module EDParamsMod real(r8),protected :: fates_mortality_disturbance_fraction ! the fraction of canopy mortality that results in disturbance real(r8),protected :: ED_val_comp_excln - real(r8),protected :: ED_val_stress_mort real(r8),protected :: ED_val_init_litter real(r8),protected :: ED_val_nignitions real(r8),protected :: ED_val_understorey_death @@ -50,7 +49,6 @@ module EDParamsMod character(len=param_string_length),parameter :: ED_name_mort_disturb_frac = "fates_mort_disturb_frac" character(len=param_string_length),parameter :: ED_name_comp_excln = "fates_comp_excln" - character(len=param_string_length),parameter :: ED_name_stress_mort = "fates_stress_mort" character(len=param_string_length),parameter :: ED_name_init_litter = "fates_init_litter" character(len=param_string_length),parameter :: ED_name_nignitions = "fates_fire_nignitions" character(len=param_string_length),parameter :: ED_name_understorey_death = "fates_mort_understorey_death" @@ -128,7 +126,6 @@ subroutine FatesParamsInit() fates_mortality_disturbance_fraction = nan ED_val_comp_excln = nan - ED_val_stress_mort = nan ED_val_init_litter = nan ED_val_nignitions = nan ED_val_understorey_death = nan @@ -187,9 +184,6 @@ subroutine FatesRegisterParams(fates_params) call fates_params%RegisterParameter(name=ED_name_comp_excln, dimension_shape=dimension_shape_1d, & dimension_names=dim_names) - call fates_params%RegisterParameter(name=ED_name_stress_mort, dimension_shape=dimension_shape_1d, & - dimension_names=dim_names) - call fates_params%RegisterParameter(name=ED_name_init_litter, dimension_shape=dimension_shape_1d, & dimension_names=dim_names) @@ -302,9 +296,6 @@ subroutine FatesReceiveParams(fates_params) call fates_params%RetreiveParameter(name=ED_name_comp_excln, & data=ED_val_comp_excln) - call fates_params%RetreiveParameter(name=ED_name_stress_mort, & - data=ED_val_stress_mort) - call fates_params%RetreiveParameter(name=ED_name_init_litter, & data=ED_val_init_litter) @@ -416,7 +407,6 @@ subroutine FatesReportParams(is_master) write(fates_log(),*) '----------- FATES Scalar Parameters -----------------' write(fates_log(),fmt0) 'fates_mortality_disturbance_fraction = ',fates_mortality_disturbance_fraction write(fates_log(),fmt0) 'ED_val_comp_excln = ',ED_val_comp_excln - write(fates_log(),fmt0) 'ED_val_stress_mort = ',ED_val_stress_mort write(fates_log(),fmt0) 'ED_val_init_litter = ',ED_val_init_litter write(fates_log(),fmt0) 'ED_val_nignitions = ',ED_val_nignitions write(fates_log(),fmt0) 'ED_val_understorey_death = ',ED_val_understorey_death diff --git a/main/EDPftvarcon.F90 b/main/EDPftvarcon.F90 index 55afd74f..03d7e143 100644 --- a/main/EDPftvarcon.F90 +++ b/main/EDPftvarcon.F90 @@ -76,6 +76,9 @@ module EDPftvarcon real(r8), allocatable :: maintresp_reduction_intercept(:) ! intercept of MR reduction as f(carbon storage), ! 0=no throttling, 1=max throttling real(r8), allocatable :: bmort(:) + real(r8), allocatable :: mort_scalar_coldstress(:) + real(r8), allocatable :: mort_scalar_cstarvation(:) + real(r8), allocatable :: mort_scalar_hydrfailure(:) real(r8), allocatable :: hf_sm_threshold(:) real(r8), allocatable :: vcmaxha(:) real(r8), allocatable :: jmaxha(:) @@ -589,6 +592,18 @@ 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_scalar_coldstress' + call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, & + dimension_names=dim_names, lower_bounds=dim_lower_bound) + + name = 'fates_mort_scalar_cstarvation' + call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, & + dimension_names=dim_names, lower_bounds=dim_lower_bound) + + name = 'fates_mort_scalar_hydrfailure' + 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) @@ -1005,6 +1020,18 @@ subroutine Receive_PFT(this, fates_params) call fates_params%RetreiveParameterAllocate(name=name, & data=this%bmort) + name = 'fates_mort_scalar_coldstress' + call fates_params%RetreiveParameterAllocate(name=name, & + data=this%mort_scalar_coldstress) + + name = 'fates_mort_scalar_cstarvation' + call fates_params%RetreiveParameterAllocate(name=name, & + data=this%mort_scalar_cstarvation) + + name = 'fates_mort_scalar_hydrfailure' + call fates_params%RetreiveParameterAllocate(name=name, & + data=this%mort_scalar_hydrfailure) + name = 'fates_mort_hf_sm_threshold' call fates_params%RetreiveParameterAllocate(name=name, & data=this%hf_sm_threshold) @@ -1479,6 +1506,9 @@ subroutine FatesReportPFTParams(is_master) write(fates_log(),fmt0) 'grperc = ',EDPftvarcon_inst%grperc write(fates_log(),fmt0) 'c2b = ',EDPftvarcon_inst%c2b write(fates_log(),fmt0) 'bmort = ',EDPftvarcon_inst%bmort + 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) 'hf_sm_threshold = ',EDPftvarcon_inst%hf_sm_threshold write(fates_log(),fmt0) 'vcmaxha = ',EDPftvarcon_inst%vcmaxha write(fates_log(),fmt0) 'jmaxha = ',EDPftvarcon_inst%jmaxha diff --git a/parameter_files/fates_params_default.cdl b/parameter_files/fates_params_default.cdl index b8dc1e2a..64572892 100644 --- a/parameter_files/fates_params_default.cdl +++ b/parameter_files/fates_params_default.cdl @@ -113,9 +113,6 @@ variables: float fates_phen_ncolddayslim(fates_scalar) ; fates_phen_ncolddayslim:units = "days" ; fates_phen_ncolddayslim:long_name = "day threshold exceedance for temperature leaf-drop" ; - float fates_stress_mort(fates_scalar) ; - fates_stress_mort:units = "/yr" ; - fates_stress_mort:long_name = "maximum mortality rate from either carbon starvation or hydraulic mortality" ; char fates_pftname(fates_pft, fates_string_length) ; fates_pftname:units = "unitless - string" ; fates_pftname:long_name = "Description of plant type" ; @@ -359,6 +356,15 @@ variables: float fates_mort_hf_sm_threshold(fates_pft) ; fates_mort_hf_sm_threshold:units = "unitless" ; fates_mort_hf_sm_threshold:long_name = "soil moisture (btran units) at which drought mortality begins for non-hydraulic model" ; + float fates_mort_scalar_coldstress(fates_pft) ; + fates_mort_scalar_coldstress:units = "1/yr" ; + fates_mort_scalar_coldstress:long_name = "maximum mortality rate from cold stress" ; + float fates_mort_scalar_cstarvation(fates_pft) ; + fates_mort_scalar_cstarvation:units = "1/yr" ; + fates_mort_scalar_cstarvation:long_name = "maximum mortality rate from carbon starvation" ; + float 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" ; float fates_pft_used(fates_pft) ; fates_pft_used:units = "0 = off (dont use), 1 = on (use)" ; fates_pft_used:long_name = "Switch to turn on and off PFTs (also see fates_initd for cold-start)" ; @@ -614,8 +620,6 @@ data: fates_phen_ncolddayslim = 5 ; - fates_stress_mort = 0.6 ; - fates_pftname = "broadleaf_evergreen_tropical_tree ", "needleleaf_evergreen_temperate_tree ", @@ -907,6 +911,12 @@ data: fates_mort_hf_sm_threshold = 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06, 1e-06 ; + fates_mort_scalar_coldstress = 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 ; + + fates_mort_scalar_cstarvation = 0.6, 0.6, 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_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, 0.6, 0.6 ; + fates_pft_used = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ; fates_phen_evergreen = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ; From d5d7fdb5a6abc4d4acae0dc024e12c8b37907a20 Mon Sep 17 00:00:00 2001 From: Charlie Koven Date: Fri, 23 Mar 2018 16:51:49 -0700 Subject: [PATCH 3/4] bugfix on prior --- biogeochem/EDMortalityFunctionsMod.F90 | 1 - 1 file changed, 1 deletion(-) diff --git a/biogeochem/EDMortalityFunctionsMod.F90 b/biogeochem/EDMortalityFunctionsMod.F90 index e32a3678..620e0f8f 100644 --- a/biogeochem/EDMortalityFunctionsMod.F90 +++ b/biogeochem/EDMortalityFunctionsMod.F90 @@ -12,7 +12,6 @@ module EDMortalityFunctionsMod use EDTypesMod , only : ed_patch_type use FatesConstantsMod , only : itrue,ifalse use FatesAllometryMod , only : bleaf - use EDParamsMod , only : ED_val_stress_mort use FatesInterfaceMod , only : bc_in_type use FatesInterfaceMod , only : hlm_use_ed_prescribed_phys use FatesInterfaceMod , only : hlm_freq_day From 91dfada12df5da26b3919934396a162736b4bdb6 Mon Sep 17 00:00:00 2001 From: Charlie Koven Date: Fri, 23 Mar 2018 17:39:50 -0700 Subject: [PATCH 4/4] updated names for leaf/root C:N and recruit parameters --- main/EDPftvarcon.F90 | 16 ++++---- parameter_files/fates_params_default.cdl | 52 ++++++++++++------------ 2 files changed, 35 insertions(+), 33 deletions(-) diff --git a/main/EDPftvarcon.F90 b/main/EDPftvarcon.F90 index 03d7e143..7abc5bfe 100644 --- a/main/EDPftvarcon.F90 +++ b/main/EDPftvarcon.F90 @@ -284,7 +284,7 @@ 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_seed_hgt_min' + name = 'fates_recruit_hgt_min' call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, & dimension_names=dim_names, lower_bounds=dim_lower_bound) @@ -308,7 +308,7 @@ 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_seed_initd' + name = 'fates_recruit_initd' call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, & dimension_names=dim_names, lower_bounds=dim_lower_bound) @@ -412,11 +412,11 @@ 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_leafcn' + name = 'fates_leaf_c2n_ratio' call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, & dimension_names=dim_names, lower_bounds=dim_lower_bound) - name = 'fates_root_frootcn' + name = 'fates_froot_c2n_ratio' call fates_params%RegisterParameter(name=name, dimension_shape=dimension_shape_1d, & dimension_names=dim_names, lower_bounds=dim_lower_bound) @@ -712,7 +712,7 @@ subroutine Receive_PFT(this, fates_params) call fates_params%RetreiveParameterAllocate(name=name, & data=this%wood_density) - name = 'fates_seed_hgt_min' + name = 'fates_recruit_hgt_min' call fates_params%RetreiveParameterAllocate(name=name, & data=this%hgt_min) @@ -736,7 +736,7 @@ subroutine Receive_PFT(this, fates_params) call fates_params%RetreiveParameterAllocate(name=name, & data=this%crown_kill) - name = 'fates_seed_initd' + name = 'fates_recruit_initd' call fates_params%RetreiveParameterAllocate(name=name, & data=this%initd) @@ -836,11 +836,11 @@ subroutine Receive_PFT(this, fates_params) call fates_params%RetreiveParameterAllocate(name=name, & data=this%vcmax25top) - name = 'fates_leafcn' + name = 'fates_leaf_c2n_ratio' call fates_params%RetreiveParameterAllocate(name=name, & data=this%leafcn) - name = 'fates_root_frootcn' + name = 'fates_froot_c2n_ratio' call fates_params%RetreiveParameterAllocate(name=name, & data=this%frootcn) diff --git a/parameter_files/fates_params_default.cdl b/parameter_files/fates_params_default.cdl index 64572892..e6c08af9 100644 --- a/parameter_files/fates_params_default.cdl +++ b/parameter_files/fates_params_default.cdl @@ -1,4 +1,4 @@ -netcdf fates_params_default { +netcdf fates_params_default_sorted { dimensions: fates_pft = 14 ; fates_history_age_bins = 7 ; @@ -227,6 +227,9 @@ variables: float fates_fr_flig(fates_pft) ; fates_fr_flig:units = "fraction" ; fates_fr_flig:long_name = "Fine root litter lignin fraction" ; + float fates_froot_c2n_ratio(fates_pft) ; + fates_froot_c2n_ratio:units = "gC/gN" ; + fates_froot_c2n_ratio:long_name = "Fine root C:N" ; float fates_grperc(fates_pft) ; fates_grperc:units = "unitless" ; fates_grperc:long_name = "Growth respiration factor" ; @@ -278,6 +281,9 @@ variables: float fates_leaf_BB_slope(fates_pft) ; fates_leaf_BB_slope:units = "unitless" ; fates_leaf_BB_slope:long_name = "stomatal slope parameter, as per Ball-Berry" ; + float fates_leaf_c2n_ratio(fates_pft) ; + fates_leaf_c2n_ratio:units = "gC/gN" ; + fates_leaf_c2n_ratio:long_name = "Leaf C:N" ; float fates_leaf_c3psn(fates_pft) ; fates_leaf_c3psn:units = "flag" ; fates_leaf_c3psn:long_name = "Photosynthetic pathway" ; @@ -329,9 +335,6 @@ variables: float fates_leaf_xl(fates_pft) ; fates_leaf_xl:units = "unitless" ; fates_leaf_xl:long_name = "Leaf/stem orientation index" ; - float fates_leafcn(fates_pft) ; - fates_leafcn:units = "gC/gN" ; - fates_leafcn:long_name = "Leaf C:N" ; float fates_lf_fcel(fates_pft) ; fates_lf_fcel:units = "fraction" ; fates_lf_fcel:long_name = "Leaf litter cellulose fraction" ; @@ -392,6 +395,12 @@ variables: float fates_prescribed_recruitment(fates_pft) ; fates_prescribed_recruitment:units = "n/yr" ; fates_prescribed_recruitment:long_name = "recruitment rate for prescribed physiology mode" ; + float fates_recruit_hgt_min(fates_pft) ; + fates_recruit_hgt_min:units = "m" ; + fates_recruit_hgt_min:long_name = "the minimum height (ie starting height) of a newly recruited plant" ; + float fates_recruit_initd(fates_pft) ; + fates_recruit_initd:units = "stems/m2" ; + fates_recruit_initd:long_name = "initial seedling density for a cold-start near-bare-ground simulation" ; float fates_rholnir(fates_pft) ; fates_rholnir:units = "fraction" ; fates_rholnir:long_name = "Leaf reflectance: near-IR" ; @@ -404,9 +413,6 @@ variables: float fates_rhosvis(fates_pft) ; fates_rhosvis:units = "fraction" ; fates_rhosvis:long_name = "Stem reflectance: visible" ; - float fates_root_frootcn(fates_pft) ; - fates_root_frootcn:units = "gC/gN" ; - fates_root_frootcn:long_name = "Fine root C:N" ; float fates_root_long(fates_pft) ; fates_root_long:units = "yr" ; fates_root_long:long_name = "root longevity (alternatively, turnover time)" ; @@ -434,12 +440,6 @@ variables: float fates_seed_germination_timescale(fates_pft) ; fates_seed_germination_timescale:units = "1/yr" ; fates_seed_germination_timescale:long_name = "turnover time for seeds with respect to decay" ; - float fates_seed_hgt_min(fates_pft) ; - fates_seed_hgt_min:units = "m" ; - fates_seed_hgt_min:long_name = "the minimum height (ie starting height) of a newly recruited plant" ; - float fates_seed_initd(fates_pft) ; - fates_seed_initd:units = "stems/m2" ; - fates_seed_initd:long_name = "initial seedling density for a cold-start near-bare-ground simulation" ; float fates_seed_rain(fates_pft) ; fates_seed_rain:units = "KgC/m2/yr" ; fates_seed_rain:long_name = "External seed rain from outside site (non-mass conserving)" ; @@ -737,6 +737,8 @@ data: fates_fr_flig = 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25 ; + fates_froot_c2n_ratio = 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 ; + fates_grperc = 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11 ; @@ -838,6 +840,8 @@ data: fates_leaf_BB_slope = 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 ; + fates_leaf_c2n_ratio = 30, 35, 40, 25, 30, 25, 25, 25, 30, 25, 25, 25, 25, 25 ; + fates_leaf_c3psn = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 ; fates_leaf_clumping_index = 0.85, 0.85, 0.675, 0.8, 0.85, 0.85, 0.9, 0.75, @@ -886,8 +890,6 @@ data: fates_leaf_xl = 0.1, 0.01, 0.01, 0.01, 0.1, 0.01, 0.25, 0.25, 0.01, 0.25, 0.25, -0.3, -0.3, -0.3 ; - fates_leafcn = 30, 35, 40, 25, 30, 25, 25, 25, 30, 25, 25, 25, 25, 25 ; - fates_lf_fcel = 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5 ; @@ -913,9 +915,11 @@ data: fates_mort_scalar_coldstress = 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 ; - fates_mort_scalar_cstarvation = 0.6, 0.6, 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_scalar_cstarvation = 0.6, 0.6, 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_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, 0.6, 0.6 ; + 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, 0.6, 0.6 ; fates_pft_used = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ; @@ -941,6 +945,12 @@ data: fates_prescribed_recruitment = 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02 ; + fates_recruit_hgt_min = 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, + 0.75, 0.75, 0.75, 0.75, 0.75, 0.75 ; + + fates_recruit_initd = 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, + 20, 20, 20 ; + fates_rholnir = 0.45, 0.35, 0.35, 0.35, 0.45, 0.45, 0.45, 0.45, 0.35, 0.45, 0.45, 0.35, 0.35, 0.35 ; @@ -953,8 +963,6 @@ data: fates_rhosvis = 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.16, 0.31, 0.31, 0.31 ; - fates_root_frootcn = 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 ; - fates_root_long = 1, 2, 3, 1, 1.5, 1, 1, 1, 1.5, 1, 1, 1, 1, 1 ; fates_roota_par = 7, 7, 7, 7, 7, 6, 6, 6, 7, 7, 7, 11, 11, 11 ; @@ -981,12 +989,6 @@ data: fates_seed_germination_timescale = 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5 ; - fates_seed_hgt_min = 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0.75, - 0.75, 0.75, 0.75, 0.75, 0.75 ; - - fates_seed_initd = 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, - 20, 20, 20 ; - fates_seed_rain = 0.28, 0.28, 0.28, 0.28, 0.28, 0.28, 0.28, 0.28, 0.28, 0.28, 0.28, 0.28, 0.28, 0.28 ;