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