From 47fd4899cfb1c9cef5d45766b20c7026b080df9e Mon Sep 17 00:00:00 2001 From: Gregory Lemieux Date: Tue, 10 Dec 2024 16:23:31 -0800 Subject: [PATCH] add FATES radiation model switch to the namelist This commit facilitates moving this switch from the FATES parameter file to the namelist --- bld/CLMBuildNamelist.pm | 4 ++-- bld/namelist_files/namelist_defaults_ctsm.xml | 1 + bld/namelist_files/namelist_definition_ctsm.xml | 5 +++++ src/main/clm_varctl.F90 | 1 + src/main/controlMod.F90 | 3 +++ src/utils/clmfates_interfaceMod.F90 | 9 +++++++++ 6 files changed, 21 insertions(+), 2 deletions(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 99d5c99c9a..463b9b3a15 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -811,7 +811,7 @@ sub setup_cmdl_fates_mode { "flandusepftdat","use_fates_potentialveg","use_fates_lupft","fates_history_dimlevel", "use_fates_daylength_factor", "use_fates_photosynth_acclimation", "fates_stomatal_model", "fates_stomatal_assimilation", "fates_leafresp_model", "fates_cstarvation_model", - "fates_regeneration_model", "fates_hydro_solver" + "fates_regeneration_model", "fates_hydro_solver", "fates_radiation_model" ); # dis-allow fates specific namelist items with non-fates runs @@ -4709,7 +4709,7 @@ sub setup_logic_fates { "fates_harvest_mode","fates_parteh_mode", "use_fates_cohort_age_tracking","use_fates_tree_damage", "use_fates_daylength_factor", "use_fates_photosynth_acclimation", "fates_stomatal_model", "fates_stomatal_assimilation", "fates_leafresp_model", "fates_cstarvation_model", - "fates_regeneration_model", "fates_hydro_solver" + "fates_regeneration_model", "fates_hydro_solver", "fates_radiation_model" ); foreach my $var ( @list ) { diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 1210f79796..ebfdaecbaf 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -2394,6 +2394,7 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2 ryan1991 linear default +norman 1D_Taylor .false. .false. diff --git a/bld/namelist_files/namelist_definition_ctsm.xml b/bld/namelist_files/namelist_definition_ctsm.xml index a53befbfc6..d3f96f662e 100644 --- a/bld/namelist_files/namelist_definition_ctsm.xml +++ b/bld/namelist_files/namelist_definition_ctsm.xml @@ -775,6 +775,11 @@ Allowed values are: This option is older than the luhdata options and may be depricated at some point in the future. + +Set the FATES radiation model + + Set the FATES hydro solver method diff --git a/src/main/clm_varctl.F90 b/src/main/clm_varctl.F90 index 4a817ba3e5..3be27207b7 100644 --- a/src/main/clm_varctl.F90 +++ b/src/main/clm_varctl.F90 @@ -336,6 +336,7 @@ module clm_varctl 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 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 diff --git a/src/main/controlMod.F90 b/src/main/controlMod.F90 index 7b358599a5..e7fa8934b2 100644 --- a/src/main/controlMod.F90 +++ b/src/main/controlMod.F90 @@ -247,6 +247,7 @@ subroutine control_init(dtime) fates_leafresp_model, & fates_cstarvation_model, & fates_regeneration_model, & + fates_radiation_model, & fates_hydro_solver, & fates_parteh_mode, & fates_seeddisp_cadence, & @@ -812,6 +813,7 @@ subroutine control_spmd() 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 (use_fates_planthydro, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (use_fates_tree_damage, 1, MPI_LOGICAL, 0, mpicom, ier) @@ -1221,6 +1223,7 @@ subroutine control_print () 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_paramfile = ', fates_paramfile write(iulog, *) ' fates_parteh_mode = ', fates_parteh_mode diff --git a/src/utils/clmfates_interfaceMod.F90 b/src/utils/clmfates_interfaceMod.F90 index 727cefd24b..fda2ca0461 100644 --- a/src/utils/clmfates_interfaceMod.F90 +++ b/src/utils/clmfates_interfaceMod.F90 @@ -63,6 +63,7 @@ module CLMFatesInterfaceMod 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 : use_fates_inventory_init use clm_varctl , only : use_fates_fixed_biogeog use clm_varctl , only : use_fates_nocomp @@ -415,6 +416,7 @@ subroutine CLMFatesGlobals2() integer :: pass_cstarvation_model integer :: pass_regeneration_model integer :: pass_hydro_solver + integer :: pass_radiation_model call t_startf('fates_globals2') @@ -591,6 +593,13 @@ subroutine CLMFatesGlobals2() 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_hydro_solver) == 'twostream') then + pass_radiation_model = 2 + end if + call set_fates_ctrlparms('radiation_model',ival=pass_radiation_model) + ! FATES logging and harvest modes pass_logging = 0 pass_lu_harvest = 0