diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm
index 083ce3b667..b7b183be3e 100755
--- a/bld/CLMBuildNamelist.pm
+++ b/bld/CLMBuildNamelist.pm
@@ -816,7 +816,7 @@ sub setup_cmdl_fates_mode {
} else {
# dis-allow fates specific namelist items with non-fates runs
my @list = ( "fates_spitfire_mode", "use_fates_planthydro", "use_fates_ed_st3", "use_fates_ed_prescribed_phys",
- "use_fates_cohort_age_tracking","use_fates_inventory_init","use_fates_fixed_biogeog",
+ "use_fates_cohort_age_tracking","use_fates_inventory_init","use_fates_dbh_init","use_fates_fixed_biogeog",
"use_fates_nocomp","use_fates_sp","fates_inventory_ctrl_filename","fates_harvest_mode",
"fates_parteh_mode","use_fates_tree_damage","fates_seeddisp_cadence","use_fates_luh","fluh_timeseries",
"flandusepftdat","use_fates_potentialveg","use_fates_lupft","fates_history_dimlevel",
@@ -4896,7 +4896,7 @@ sub setup_logic_fates {
if (&value_is_true( $nl_flags->{'use_fates'}) ) {
add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'fates_paramfile', 'phys'=>$nl_flags->{'phys'});
my @list = ( "use_fates_planthydro", "use_fates_ed_st3", "use_fates_ed_prescribed_phys",
- "use_fates_inventory_init","fates_seeddisp_cadence","fates_history_dimlevel",
+ "use_fates_inventory_init","use_fates_dbh_init","fates_seeddisp_cadence","fates_history_dimlevel",
"fates_harvest_mode","fates_parteh_mode", "use_fates_cohort_age_tracking","use_fates_tree_damage",
"use_fates_daylength_factor", "fates_photosynth_acclimation", "fates_stomatal_model",
"fates_stomatal_assimilation", "fates_leafresp_model", "fates_cstarvation_model",
@@ -4961,6 +4961,10 @@ sub setup_logic_fates {
}
}
}
+ my $var = "use_fates_dbh_init";
+ if ( &value_is_true($nl->get_value($var)) && ( !&value_is_true($nl->get_value("use_fates_nocomp")))) {
+ $log->fatal_error("$var can only be .true. use_fates_nocomp is .true." );
+ }
# make sure that fates landuse x pft mode has the necessary run mode configurations
my $var = "use_fates_lupft";
if ( defined($nl->get_value($var)) ) {
diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml
index ef5e6919db..9bd99600db 100644
--- a/bld/namelist_files/namelist_defaults_ctsm.xml
+++ b/bld/namelist_files/namelist_defaults_ctsm.xml
@@ -2715,6 +2715,7 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.4.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2
.false.
.false.
.false.
+.false.
.false.
.false.
.false.
diff --git a/bld/namelist_files/namelist_definition_ctsm.xml b/bld/namelist_files/namelist_definition_ctsm.xml
index 179704e518..75a96a6c5f 100644
--- a/bld/namelist_files/namelist_definition_ctsm.xml
+++ b/bld/namelist_files/namelist_definition_ctsm.xml
@@ -881,6 +881,14 @@ Full pathname to the inventory initialization control file.
(Only relevant if FATES is on).
+
+
+Initialize cohorts at coldstart with diameter at breast height instead of density
+(Applies only if use_fates_nocomp=.true.)
+(Only relevant if FATES is on).
+
+
Setting for what types of FATES history to be allocate and
diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml
index f4648c5c4d..90f6ca000b 100644
--- a/cime_config/testdefs/testlist_clm.xml
+++ b/cime_config/testdefs/testlist_clm.xml
@@ -4104,6 +4104,14 @@
+
+
+
+
+
+
+
+
diff --git a/cime_config/testdefs/testmods_dirs/clm/FatesColdNoCompInitDbh/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/FatesColdNoCompInitDbh/include_user_mods
new file mode 100644
index 0000000000..ea160c525f
--- /dev/null
+++ b/cime_config/testdefs/testmods_dirs/clm/FatesColdNoCompInitDbh/include_user_mods
@@ -0,0 +1 @@
+../FatesColdNoComp
\ No newline at end of file
diff --git a/cime_config/testdefs/testmods_dirs/clm/FatesColdNoCompInitDbh/shell_commands b/cime_config/testdefs/testmods_dirs/clm/FatesColdNoCompInitDbh/shell_commands
new file mode 100644
index 0000000000..438b95731f
--- /dev/null
+++ b/cime_config/testdefs/testmods_dirs/clm/FatesColdNoCompInitDbh/shell_commands
@@ -0,0 +1,10 @@
+SRCDIR=`./xmlquery SRCROOT --value`
+CASEDIR=`./xmlquery CASEROOT --value`
+FATESDIR=$SRCDIR/src/fates/
+FATESPARAMFILE=$CASEDIR/fates_params_init_dbh.json
+
+cp $FATESDIR/parameter_files/fates_params_default.json $FATESPARAMFILE
+
+$FATESDIR/tools/modify_fates_paramfile.py --overwrite --fin $FATESPARAMFILE --param fates_recruit_init_seed --values 0.01 --indices all
+
+echo "fates_paramfile = '$FATESPARAMFILE'" >> $CASEDIR/user_nl_clm
\ No newline at end of file
diff --git a/cime_config/testdefs/testmods_dirs/clm/FatesColdNoCompInitDbh/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/FatesColdNoCompInitDbh/user_nl_clm
new file mode 100644
index 0000000000..9450396fc4
--- /dev/null
+++ b/cime_config/testdefs/testmods_dirs/clm/FatesColdNoCompInitDbh/user_nl_clm
@@ -0,0 +1 @@
+use_fates_dbh_init = .true.
\ No newline at end of file
diff --git a/src/main/clm_varctl.F90 b/src/main/clm_varctl.F90
index 4c36cb21d1..9e42c3ff21 100644
--- a/src/main/clm_varctl.F90
+++ b/src/main/clm_varctl.F90
@@ -357,6 +357,7 @@ module clm_varctl
logical, public :: use_fates_ed_st3 = .false. ! true => static stand structure
logical, public :: use_fates_ed_prescribed_phys = .false. ! true => prescribed physiology
logical, public :: use_fates_inventory_init = .false. ! true => initialize fates from inventory
+ logical, public :: use_fates_dbh_init = .false. ! true => initialize cohorts with dbh instead of density (nocomp only)
logical, public :: use_fates_fixed_biogeog = .false. ! true => use fixed biogeography mode
logical, public :: use_fates_nocomp = .false. ! true => use no comopetition mode
logical, public :: use_fates_daylength_factor = .false. ! true => enable fates to use host land model daylength factor
diff --git a/src/main/controlMod.F90 b/src/main/controlMod.F90
index fc8036e75f..70cf132dc7 100644
--- a/src/main/controlMod.F90
+++ b/src/main/controlMod.F90
@@ -239,6 +239,7 @@ subroutine control_init(dtime)
use_fates_cohort_age_tracking, &
use_fates_ed_prescribed_phys, &
use_fates_inventory_init, &
+ use_fates_dbh_init, &
use_fates_fixed_biogeog, &
use_fates_nocomp, &
use_fates_sp, &
@@ -845,6 +846,7 @@ subroutine control_spmd()
call mpi_bcast (use_fates_ed_st3, 1, MPI_LOGICAL, 0, mpicom, ier)
call mpi_bcast (use_fates_ed_prescribed_phys, 1, MPI_LOGICAL, 0, mpicom, ier)
call mpi_bcast (use_fates_inventory_init, 1, MPI_LOGICAL, 0, mpicom, ier)
+ call mpi_bcast (use_fates_dbh_init, 1, MPI_LOGICAL, 0, mpicom, ier)
call mpi_bcast (use_fates_fixed_biogeog, 1, MPI_LOGICAL, 0, mpicom, ier)
call mpi_bcast (use_fates_nocomp, 1, MPI_LOGICAL, 0, mpicom, ier)
call mpi_bcast (use_fates_sp, 1, MPI_LOGICAL, 0, mpicom, ier)
@@ -1266,6 +1268,7 @@ subroutine control_print ()
write(iulog, *) ' use_fates_ed_st3 = ',use_fates_ed_st3
write(iulog, *) ' use_fates_ed_prescribed_phys = ',use_fates_ed_prescribed_phys
write(iulog, *) ' use_fates_inventory_init = ',use_fates_inventory_init
+ write(iulog, *) ' use_fates_dbh_init = ',use_fates_dbh_init
write(iulog, *) ' use_fates_fixed_biogeog = ', use_fates_fixed_biogeog
write(iulog, *) ' use_fates_nocomp = ', use_fates_nocomp
write(iulog, *) ' use_fates_sp = ', use_fates_sp
diff --git a/src/utils/clmfates_interfaceMod.F90 b/src/utils/clmfates_interfaceMod.F90
index 5584ff1705..ae2a409f7c 100644
--- a/src/utils/clmfates_interfaceMod.F90
+++ b/src/utils/clmfates_interfaceMod.F90
@@ -68,6 +68,7 @@ module CLMFatesInterfaceMod
use clm_varctl , only : fates_radiation_model
use clm_varctl , only : fates_electron_transport_model
use clm_varctl , only : use_fates_inventory_init
+ use clm_varctl , only : use_fates_dbh_init
use clm_varctl , only : use_fates_fixed_biogeog
use clm_varctl , only : use_fates_nocomp
use clm_varctl , only : use_fates_sp
@@ -430,6 +431,7 @@ subroutine CLMFatesGlobals2()
integer :: pass_ed_prescribed_phys
integer :: pass_planthydro
integer :: pass_inventory_init
+ integer :: pass_dbh_init
integer :: pass_is_restart
integer :: pass_cohort_age_tracking
integer :: pass_tree_damage
@@ -674,6 +676,12 @@ subroutine CLMFatesGlobals2()
call set_fates_ctrlparms('inventory_ctrl_file',cval=fates_inventory_ctrl_filename)
+ if(use_fates_dbh_init) then
+ pass_dbh_init = 1
+ else
+ pass_dbh_init = 0
+ end if
+ call set_fates_ctrlparms('use_dbh_init',ival=pass_dbh_init)
! Check through FATES parameters to see if all have been set
call set_fates_ctrlparms('check_allset')