diff --git a/.gitmodules b/.gitmodules
index f8bb22ffd1..4a9e4b8c0f 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -28,7 +28,7 @@
[submodule "fates"]
path = src/fates
url = https://github.com/NGEET/fates
-fxtag = sci.1.81.0_api.37.1.0
+fxtag = sci.1.81.1_api.38.0.0
fxrequired = AlwaysRequired
# Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed
fxDONOTUSEurl = https://github.com/NCAR/fates-release
diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm
index 93004ad1c4..400c831b73 100755
--- a/bld/CLMBuildNamelist.pm
+++ b/bld/CLMBuildNamelist.pm
@@ -808,7 +808,11 @@ sub setup_cmdl_fates_mode {
"use_fates_cohort_age_tracking","use_fates_inventory_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" );
+ "flandusepftdat","use_fates_potentialveg","use_fates_lupft","fates_history_dimlevel",
+ "use_fates_daylength_factor", "fates_photosynth_acclimation", "fates_stomatal_model",
+ "fates_stomatal_assimilation", "fates_leafresp_model", "fates_cstarvation_model",
+ "fates_regeneration_model", "fates_hydro_solver", "fates_radiation_model", "fates_electron_transport_model"
+ );
# dis-allow fates specific namelist items with non-fates runs
foreach my $var ( @list ) {
@@ -4707,7 +4711,11 @@ sub setup_logic_fates {
add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'fates_paramfile', 'phys'=>$nl_flags->{'phys'});
my @list = ( "fates_spitfire_mode", "use_fates_planthydro", "use_fates_ed_st3", "use_fates_ed_prescribed_phys",
"use_fates_inventory_init","fates_seeddisp_cadence","fates_history_dimlevel",
- "fates_harvest_mode","fates_parteh_mode", "use_fates_cohort_age_tracking","use_fates_tree_damage" );
+ "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",
+ "fates_regeneration_model", "fates_hydro_solver", "fates_radiation_model", "fates_electron_transport_model"
+ );
foreach my $var ( @list ) {
add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, $var, 'use_fates'=>$nl_flags->{'use_fates'},
diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml
index 9c643f6dd1..6e3d4db0d6 100644
--- a/bld/namelist_files/namelist_defaults_ctsm.xml
+++ b/bld/namelist_files/namelist_defaults_ctsm.xml
@@ -532,7 +532,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
-lnd/clm2/paramdata/fates_params_api.37.1.0_14pft_c250214.nc
+lnd/clm2/paramdata/fates_params_api.38.0.0_14pft_c250226.nc
@@ -2387,31 +2387,41 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2
.true.
-0
-no_harvest
-.false.
-.false.
-.false.
-.false.
-.false.
-.false.
-.false.
-.false.
-.false.
-.true.
-.true.
-.true.
-.true.
-.false.
-1
-0
-.true.
-.true.
-.false.
-.true.
-.true.
-.false.
-2,2
+FvCB1980
+nonacclimating
+0
+no_harvest
+ballberry1987
+net
+ryan1991
+linear
+default
+norman
+2D_Picard
+.false.
+.false.
+.false.
+.true.
+.false.
+.false.
+.false.
+.false.
+.false.
+.false.
+.true.
+.true.
+.true.
+.true.
+.false.
+1
+0
+.true.
+.true.
+.false.
+.true.
+.true.
+.false.
+2,2
diff --git a/bld/namelist_files/namelist_definition_ctsm.xml b/bld/namelist_files/namelist_definition_ctsm.xml
index ac61b86852..8612f35d8d 100644
--- a/bld/namelist_files/namelist_definition_ctsm.xml
+++ b/bld/namelist_files/namelist_definition_ctsm.xml
@@ -780,6 +780,64 @@ Allowed values are:
This option is older than the luhdata options and may be depricated at some point in the future.
+
+Set the FATES electron transport model to either Johnson-Berry 2021 or
+ Farquhar von Caemmerer and Berry 1980 (FvCB1980).
+
+
+
+
+Set the FATES radiation model
+
+
+
+Set the FATES hydro solver method
+
+
+
+Set the FATES seed regeneration model
+Valid values:
+ default: default scheme
+ trs: Tree Recruitment Scheme (Hanbury-Brown et al., 2022)
+ trs_no_seed_dyn: Tree Recruitment Scheme (Hanbury-Brown et al., 2022) without seed dynamics
+
+
+
+Set the FATES carbon starvation model
+
+
+
+Set the FATES leaf maintenance respiration model
+
+
+
+Set net or gross asslimiation for the FATES stomatal model
+
+
+
+Set the FATES stomatal conductance model
+
+
+
+Set the FATES photosynthesis temperature acclimation model.
+(Only relevant if FATES is on)
+
+
+
+If TRUE, enable FATES to utilize the day length factor from the host land model.
+(Only relevant if FATES is on)
+
+
Toggle to turn on plant hydraulics
diff --git a/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStream/shell_commands b/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStream/shell_commands
deleted file mode 100644
index 5d94e5f659..0000000000
--- a/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStream/shell_commands
+++ /dev/null
@@ -1,8 +0,0 @@
-SRCDIR=`./xmlquery SRCROOT --value`
-CASEDIR=`./xmlquery CASEROOT --value`
-FATESDIR=$SRCDIR/src/fates
-FATESPARAMFILE=$CASEDIR/fates_params_twostream.nc
-
-ncgen -o $FATESPARAMFILE $FATESDIR/parameter_files/fates_params_default.cdl
-
-$FATESDIR/tools/modify_fates_paramfile.py --O --fin $FATESPARAMFILE --fout $FATESPARAMFILE --var fates_rad_model --val 2 --allpfts
diff --git a/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStream/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStream/user_nl_clm
index cae5fc2112..1be92bfa26 100644
--- a/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStream/user_nl_clm
+++ b/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStream/user_nl_clm
@@ -1 +1 @@
-fates_paramfile = '$CASEROOT/fates_params_twostream.nc'
+fates_radiation_model = 'twostream'
diff --git a/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStreamNoCompFixedBioGeo/shell_commands b/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStreamNoCompFixedBioGeo/shell_commands
deleted file mode 100644
index 5d94e5f659..0000000000
--- a/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStreamNoCompFixedBioGeo/shell_commands
+++ /dev/null
@@ -1,8 +0,0 @@
-SRCDIR=`./xmlquery SRCROOT --value`
-CASEDIR=`./xmlquery CASEROOT --value`
-FATESDIR=$SRCDIR/src/fates
-FATESPARAMFILE=$CASEDIR/fates_params_twostream.nc
-
-ncgen -o $FATESPARAMFILE $FATESDIR/parameter_files/fates_params_default.cdl
-
-$FATESDIR/tools/modify_fates_paramfile.py --O --fin $FATESPARAMFILE --fout $FATESPARAMFILE --var fates_rad_model --val 2 --allpfts
diff --git a/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStreamNoCompFixedBioGeo/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStreamNoCompFixedBioGeo/user_nl_clm
index 362dfa4a5e..e55d90c227 100644
--- a/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStreamNoCompFixedBioGeo/user_nl_clm
+++ b/cime_config/testdefs/testmods_dirs/clm/FatesColdTwoStreamNoCompFixedBioGeo/user_nl_clm
@@ -1,2 +1,2 @@
-fates_paramfile = '$CASEROOT/fates_params_twostream.nc'
-use_fates_fixed_biogeog=.true.
\ No newline at end of file
+use_fates_fixed_biogeog=.true.
+fates_radiation_model = 'twostream'
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 3a47cc5c20..aa6cd33f6f 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,4 +1,95 @@
===============================================================
+Tag name: ctsm5.3.027
+Originator(s): glemieux (Gregory Lemieux, LBNL, glemieux@lbl.gov)
+Date: Sun Mar 2 15:27:01 PST 2025
+One-line Summary: FATES parameter file switch migration
+
+Purpose and description of changes
+----------------------------------
+
+Move global FATES switches from the FATES parameter file to the namelist.
+
+
+Significant changes to scientifically-supported configurations
+--------------------------------------------------------------
+
+Does this tag change answers significantly for any of the following physics configurations?
+(Details of any changes will be given in the "Answer changes" section below.)
+
+ [Put an [X] in the box for any configuration with significant answer changes.]
+
+[ ] clm6_0
+
+[ ] clm5_0
+
+[ ] ctsm5_0-nwp
+
+[ ] clm4_5
+
+Notes of particular relevance for users
+---------------------------------------
+
+Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables):
+
+The following FATES namelist options are now available:
+ - use_fates_daylength_factor
+ - fates_photosynth_acclimation
+ - fates_stomatal_model
+ - fates_stomatal_assimilation
+ - fates_leafresp_model
+ - fates_cstarvation_model
+ - fates_regeneration_model
+ - fates_hydro_solver
+ - fates_radiation_model
+
+The following FATES namelist option is available, but not yet implemented in FATES:
+ - fates_electron_transport_model
+
+Notes of particular relevance for developers:
+---------------------------------------------
+Changes to tests or testing:
+
+The FATES two stream tests no longer generation a FATES NetCDF parameter file on-the-fly.
+The need to do so is removed as the fates_radiation_model option is controlled by the
+namelist.
+
+
+Testing summary:
+----------------
+
+ build-namelist tests (if CLMBuildNamelist.pm has changed):
+
+ derecho - PASS
+
+ regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing):
+
+ derecho ----- OK
+ izumi ------- OK
+
+ fates tests: (give name of baseline if different from CTSM tagname, normally fates baselines are fates--)
+ derecho ----- OK
+ izumi ------- OK
+
+
+Answer changes
+--------------
+
+Changes answers relative to baseline: No
+
+Other details
+-------------
+
+List any git submodules updated (cime, rtm, mosart, cism, fates, etc.):
+ fates: sci.1.81.0_api.37.1.0 -> sci.1.81.1_api.38.0.0
+
+Pull Requests that document the changes (include PR ids):
+(https://github.com/ESCOMP/ctsm/pull)
+https://github.com/ESCOMP/CTSM/pull/2904
+https://github.com/NGEET/fates/pull/1300
+https://github.com/NGEET/fates/pull/1344
+
+===============================================================
+===============================================================
Tag name: ctsm5.3.026
Originator(s): erik (Erik Kluzek,UCAR/TSS,303-497-1326)
Date: Wed 26 Feb 2025 09:55:48 AM MST
@@ -138,8 +229,8 @@ Testing summary:
regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing):
- derecho -----
- izumi -------
+ derecho ----- OK
+ izumi ------- OK
fates tests: (give name of baseline if different from CTSM tagname, normally fates baselines are fates--)
derecho ----- OK
diff --git a/doc/ChangeSum b/doc/ChangeSum
index bda8a4f301..343a031a44 100644
--- a/doc/ChangeSum
+++ b/doc/ChangeSum
@@ -1,5 +1,6 @@
Tag Who Date Summary
============================================================================================================================
+ ctsm5.3.027 glemieux 03/02/2025 FATES parameter file switch migration
ctsm5.3.026 samrabin 02/26/2025 Merge b4b-dev to master: run_tower updates, reduce log noise
ctsm5.3.025 glemieux 02/20/2025 FATES default parameter file update
ctsm5.3.024 xinchang 02/11/2025 Change choice of pressure in CLMU building energy model
diff --git a/src/fates b/src/fates
index ccc1de04ab..6903518a5e 160000
--- a/src/fates
+++ b/src/fates
@@ -1 +1 @@
-Subproject commit ccc1de04abcc14dcc8a24bb06f271bc04e2bc48c
+Subproject commit 6903518a5ebaf711b924583eb109d79805f69e05
diff --git a/src/main/clm_varctl.F90 b/src/main/clm_varctl.F90
index 9539060200..9d4fcc645f 100644
--- a/src/main/clm_varctl.F90
+++ b/src/main/clm_varctl.F90
@@ -331,6 +331,15 @@ module clm_varctl
! see bld/namelist_files/namelist_definition_clm4_5.xml for details
logical, public :: use_fates_tree_damage = .false. ! true => turn on tree damage module
character(len=256), public :: fates_harvest_mode = '' ! five different harvest modes; see namelist definition
+ character(len=256), public :: fates_stomatal_model = '' ! stomatal conductance model, Ball-berry or Medlyn
+ character(len=256), public :: fates_stomatal_assimilation = '' ! net or gross assimilation modes
+ character(len=256), public :: fates_leafresp_model = '' ! Leaf maintenance respiration model, Ryan or Atkin
+ character(len=256), public :: fates_cstarvation_model = '' ! linear or exponential function
+ character(len=256), public :: fates_regeneration_model = '' ! default, TRS, or TRS without seed dynamics
+ character(len=256), public :: fates_radiation_model = '' ! Norman or two-stream radiation model
+ character(len=256), public :: fates_hydro_solver = '' ! 1D Taylor, 2D Picard, 2D Newton
+ character(len=256), public :: fates_photosynth_acclimation = '' ! nonacclimating, kumarathunge2019
+ character(len=256), public :: fates_electron_transport_model = '' ! Johnson-Berry 2021 or Farquhar von Caemmerer and Berry 1980
logical, public :: use_fates_planthydro = .false. ! true => turn on fates hydro
logical, public :: use_fates_cohort_age_tracking = .false. ! true => turn on cohort age tracking
logical, public :: use_fates_ed_st3 = .false. ! true => static stand structure
@@ -338,6 +347,8 @@ module clm_varctl
logical, public :: use_fates_inventory_init = .false. ! true => initialize fates from inventory
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
+
! FATES history dimension level
! fates can produce history at either the daily timescale (dynamics)
diff --git a/src/main/controlMod.F90 b/src/main/controlMod.F90
index c07909c67e..f8f6dc6cf4 100644
--- a/src/main/controlMod.F90
+++ b/src/main/controlMod.F90
@@ -243,9 +243,19 @@ subroutine control_init(dtime)
fluh_timeseries, &
flandusepftdat, &
fates_inventory_ctrl_filename, &
+ fates_stomatal_model, &
+ fates_stomatal_assimilation, &
+ fates_leafresp_model, &
+ fates_cstarvation_model, &
+ fates_regeneration_model, &
+ fates_radiation_model, &
+ fates_hydro_solver, &
+ fates_electron_transport_model, &
fates_parteh_mode, &
fates_seeddisp_cadence, &
use_fates_tree_damage, &
+ use_fates_daylength_factor, &
+ fates_photosynth_acclimation, &
fates_history_dimlevel
! Ozone vegetation stress method
@@ -806,6 +816,14 @@ subroutine control_spmd()
call mpi_bcast (fates_spitfire_mode, 1, MPI_INTEGER, 0, mpicom, ier)
call mpi_bcast (fates_harvest_mode, len(fates_harvest_mode) , MPI_CHARACTER, 0, mpicom, ier)
+ call mpi_bcast (fates_stomatal_model, len(fates_stomatal_model) , MPI_CHARACTER, 0, mpicom, ier)
+ call mpi_bcast (fates_stomatal_assimilation, len(fates_stomatal_assimilation) , MPI_CHARACTER, 0, mpicom, ier)
+ call mpi_bcast (fates_leafresp_model, len(fates_leafresp_model) , MPI_CHARACTER, 0, mpicom, ier)
+ call mpi_bcast (fates_cstarvation_model, len(fates_cstarvation_model) , MPI_CHARACTER, 0, mpicom, ier)
+ call mpi_bcast (fates_regeneration_model, len(fates_regeneration_model) , MPI_CHARACTER, 0, mpicom, ier)
+ call mpi_bcast (fates_radiation_model, len(fates_radiation_model) , MPI_CHARACTER, 0, mpicom, ier)
+ call mpi_bcast (fates_hydro_solver, len(fates_hydro_solver) , MPI_CHARACTER, 0, mpicom, ier)
+ call mpi_bcast (fates_electron_transport_model, len(fates_electron_transport_model) , MPI_CHARACTER, 0, mpicom, ier)
call mpi_bcast (use_fates_planthydro, 1, MPI_LOGICAL, 0, mpicom, ier)
call mpi_bcast (use_fates_tree_damage, 1, MPI_LOGICAL, 0, mpicom, ier)
call mpi_bcast (use_fates_cohort_age_tracking, 1, MPI_LOGICAL, 0, mpicom, ier)
@@ -819,6 +837,8 @@ subroutine control_spmd()
call mpi_bcast (use_fates_lupft, 1, MPI_LOGICAL, 0, mpicom, ier)
call mpi_bcast (use_fates_potentialveg, 1, MPI_LOGICAL, 0, mpicom, ier)
call mpi_bcast (use_fates_bgc, 1, MPI_LOGICAL, 0, mpicom, ier)
+ call mpi_bcast (use_fates_daylength_factor, 1, MPI_LOGICAL, 0, mpicom, ier)
+ call mpi_bcast (fates_photosynth_acclimation, len(fates_photosynth_acclimation), MPI_CHARACTER, 0, mpicom, ier)
call mpi_bcast (fates_inventory_ctrl_filename, len(fates_inventory_ctrl_filename), MPI_CHARACTER, 0, mpicom, ier)
call mpi_bcast (fates_paramfile, len(fates_paramfile) , MPI_CHARACTER, 0, mpicom, ier)
call mpi_bcast (fluh_timeseries, len(fluh_timeseries) , MPI_CHARACTER, 0, mpicom, ier)
@@ -1207,11 +1227,21 @@ subroutine control_print ()
if (use_fates) then
write(iulog, *) ' fates_spitfire_mode = ', fates_spitfire_mode
write(iulog, *) ' fates_harvest_mode = ', fates_harvest_mode
+ write(iulog, *) ' fates_stomatal_model = ', fates_stomatal_model
+ write(iulog, *) ' fates_stomatal_assimilation = ', fates_stomatal_assimilation
+ write(iulog, *) ' fates_leafresp_model = ', fates_leafresp_model
+ write(iulog, *) ' fates_cstarvation_model = ', fates_cstarvation_model
+ write(iulog, *) ' fates_regeneration_model = ', fates_regeneration_model
+ write(iulog, *) ' fates_radiation_model = ', fates_radiation_model
+ write(iulog, *) ' fates_hydro_solver = ', fates_hydro_solver
+ write(iulog, *) ' fates_electron_transport_model = ', fates_electron_transport_model
write(iulog, *) ' fates_paramfile = ', fates_paramfile
write(iulog, *) ' fates_parteh_mode = ', fates_parteh_mode
+ write(iulog, *) ' fates_photosynth_acclimation = ', trim(fates_photosynth_acclimation)
write(iulog, *) ' use_fates_planthydro = ', use_fates_planthydro
write(iulog, *) ' use_fates_tree_damage = ', use_fates_tree_damage
write(iulog, *) ' use_fates_cohort_age_tracking = ', use_fates_cohort_age_tracking
+ write(iulog, *) ' use_fates_daylength_factor = ', use_fates_daylength_factor
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
diff --git a/src/utils/clmfates_interfaceMod.F90 b/src/utils/clmfates_interfaceMod.F90
index 61d2af3cbd..d73a60cf33 100644
--- a/src/utils/clmfates_interfaceMod.F90
+++ b/src/utils/clmfates_interfaceMod.F90
@@ -52,9 +52,19 @@ module CLMFatesInterfaceMod
use clm_varctl , only : use_fates_tree_damage
use clm_varctl , only : use_fates_planthydro
use clm_varctl , only : use_fates_cohort_age_tracking
+ use clm_varctl , only : use_fates_daylength_factor
+ use clm_varctl , only : fates_photosynth_acclimation
use clm_varctl , only : use_fates_ed_st3
use clm_varctl , only : use_fates_ed_prescribed_phys
use clm_varctl , only : fates_harvest_mode
+ use clm_varctl , only : fates_stomatal_model
+ use clm_varctl , only : fates_stomatal_assimilation
+ use clm_varctl , only : fates_leafresp_model
+ use clm_varctl , only : fates_cstarvation_model
+ use clm_varctl , only : fates_regeneration_model
+ use clm_varctl , only : fates_hydro_solver
+ 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_fixed_biogeog
use clm_varctl , only : use_fates_nocomp
@@ -407,6 +417,16 @@ subroutine CLMFatesGlobals2()
integer :: pass_use_potentialveg
integer :: pass_num_luh_states
integer :: pass_num_luh_transitions
+ integer :: pass_photosynth_acclimation_switch
+ integer :: pass_daylength_factor_switch
+ integer :: pass_stomatal_model
+ integer :: pass_stomatal_assimilation
+ integer :: pass_leafresp_model
+ integer :: pass_cstarvation_model
+ integer :: pass_regeneration_model
+ integer :: pass_hydro_solver
+ integer :: pass_radiation_model
+ integer :: pass_electron_transport_model
call t_startf('fates_globals2')
@@ -523,6 +543,80 @@ subroutine CLMFatesGlobals2()
end if
call set_fates_ctrlparms('use_cohort_age_tracking',ival=pass_cohort_age_tracking)
+ if(trim(fates_photosynth_acclimation) == 'kumarathunge2019') then
+ pass_photosynth_acclimation_switch = 1
+ else if(trim(fates_photosynth_acclimation) == 'nonacclimating') then
+ pass_photosynth_acclimation_switch = 0
+ end if
+ call set_fates_ctrlparms('photosynth_acclimation',ival=pass_photosynth_acclimation_switch)
+
+ if(use_fates_daylength_factor) then
+ pass_daylength_factor_switch = 1
+ else
+ pass_daylength_factor_switch = 0
+ end if
+ call set_fates_ctrlparms('use_daylength_factor_switch',ival=pass_daylength_factor_switch)
+
+ if (trim(fates_stomatal_model) == 'ballberry1987') then
+ pass_stomatal_model = 1
+ else if (trim(fates_stomatal_model) == 'medlyn2011') then
+ pass_stomatal_model = 2
+ end if
+ call set_fates_ctrlparms('stomatal_model',ival=pass_stomatal_model)
+
+ if (trim(fates_stomatal_assimilation) == 'net') then
+ pass_stomatal_assimilation = 1
+ else if (trim(fates_stomatal_assimilation) == 'gross') then
+ pass_stomatal_assimilation = 2
+ end if
+ call set_fates_ctrlparms('stomatal_assim_model',ival=pass_stomatal_assimilation)
+
+ if (trim(fates_leafresp_model) == 'ryan1991') then
+ pass_leafresp_model = 1
+ else if (trim(fates_leafresp_model) == 'atkin2017') then
+ pass_leafresp_model = 2
+ end if
+ call set_fates_ctrlparms('maintresp_leaf_model',ival=pass_leafresp_model)
+
+ if (trim(fates_cstarvation_model) == 'linear') then
+ pass_cstarvation_model = 1
+ else if (trim(fates_cstarvation_model) == 'expontential') then
+ pass_cstarvation_model = 2
+ end if
+ call set_fates_ctrlparms('mort_cstarvation_model',ival=pass_cstarvation_model)
+
+ if (trim(fates_regeneration_model) == 'default') then
+ pass_regeneration_model = 1
+ else if (trim(fates_regeneration_model) == 'trs') then
+ pass_regeneration_model = 2
+ else if (trim(fates_regeneration_model) == 'trs_no_seed_dyn') then
+ pass_regeneration_model = 3
+ end if
+ call set_fates_ctrlparms('regeneration_model',ival=pass_regeneration_model)
+
+ if (trim(fates_hydro_solver) == '1D_Taylor') then
+ pass_hydro_solver = 1
+ else if (trim(fates_hydro_solver) == '2D_Picard') then
+ pass_hydro_solver = 2
+ else if (trim(fates_hydro_solver) == '2D_Newton') then
+ pass_hydro_solver = 3
+ end if
+ call set_fates_ctrlparms('hydr_solver',ival=pass_hydro_solver)
+
+ if (trim(fates_radiation_model) == 'norman') then
+ pass_radiation_model = 1
+ else if (trim(fates_radiation_model) == 'twostream') then
+ pass_radiation_model = 2
+ end if
+ call set_fates_ctrlparms('radiation_model',ival=pass_radiation_model)
+
+ if (trim(fates_electron_transport_model) == 'FvCB1980') then
+ pass_radiation_model = 1
+ else if (trim(fates_electron_transport_model) == 'JohnsonBerry2021') then
+ pass_radiation_model = 2
+ end if
+ call set_fates_ctrlparms('electron_transport_model',ival=pass_electron_transport_model)
+
! FATES logging and harvest modes
pass_logging = 0
pass_lu_harvest = 0