diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm
index bb7d767391..b4eefd984c 100755
--- a/bld/CLMBuildNamelist.pm
+++ b/bld/CLMBuildNamelist.pm
@@ -2038,7 +2038,7 @@ sub setup_logic_snicar_methods {
add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'do_sno_oc' );
# Error checking in loop
- my %supportedSettings = ( 'snicar_solarspec' => "'mid_latitude_winter'", 'snicar_dust_optics' => "'sahara'", 'snicar_numrad_snw' => '5', 'snicar_snobc_intmix' => '.false.', 'snicar_snodst_intmix' => '.false.', 'snicar_use_aerosol' => '.true.', 'do_sno_oc' => '.false.' );
+ my %supportedSettings = ( 'snicar_solarspec' => "'mid_latitude_winter'", 'snicar_dust_optics' => "'sahara'", 'snicar_numrad_snw' => '5', 'snicar_snodst_intmix' => '.false.', 'snicar_use_aerosol' => '.true.', 'do_sno_oc' => '.false.' );
keys %supportedSettings;
while ( my ($key, $val) = each %supportedSettings ) {
my $var = $nl->get_value($key);
@@ -2056,13 +2056,13 @@ sub setup_logic_snicar_methods {
$log->warning("$key1=$val1a and $val1b are supported; $var1 is EXPERIMENTAL, UNSUPPORTED, and UNTESTED!");
}
- # snicar_snobc_intmix and snicar_snodst_intmix cannot both be true
+ # snicar_snobc_intmix and snicar_snodst_intmix cannot both be true, however, they can both be false
my $key1 = 'snicar_snobc_intmix';
my $key2 = 'snicar_snodst_intmix';
my $var1 = $nl->get_value($key1);
my $var2 = $nl->get_value($key2);
- my $val1 = $supportedSettings{$key1}; # supported value for this option
- if (($var1 eq $var2) && ($var1 ne $val1)) {
+ my $val2 = $supportedSettings{$key2}; # supported value for this option
+ if (($var1 eq $var2) && ($var2 ne $val2)) {
$log->warning("$key1 = $var1 and $key2 = $var2 do not work together!");
}
}
diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml
index 8c8af76223..5c86d230fd 100644
--- a/bld/namelist_files/namelist_defaults_ctsm.xml
+++ b/bld/namelist_files/namelist_defaults_ctsm.xml
@@ -441,7 +441,9 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
1.e9
SwensonLawrence2012
+
Jordan1991
+Sturm1997
-lnd/clm2/paramdata/ctsm51_params.c240207b.nc
-lnd/clm2/paramdata/clm50_params.c240207b.nc
-lnd/clm2/paramdata/clm45_params.c240207b.nc
+lnd/clm2/paramdata/ctsm51_params.c240208.nc
+lnd/clm2/paramdata/clm50_params.c240208.nc
+lnd/clm2/paramdata/clm45_params.c240208.nc
@@ -1637,7 +1639,8 @@ use_crop=".true.">lnd/clm2/surfdata_map/ctsm5.1.dev052/landuse.timeseries_mpasa1
mid_latitude_winter
sahara
.false.
-.false.
+.false.
+.true.
.true.
.false.
diff --git a/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm
index c235d72df1..3c686f08b9 100644
--- a/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm
+++ b/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm
@@ -1,2 +1,2 @@
-paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm51_ciso_cwd_hr_params.c240207b.nc'
+paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm51_ciso_cwd_hr_params.c240208.nc'
hist_fincl1 = 'CWDC_HR','C13_CWDC_HR','C14_CWDC_HR','CWD_HR_L2','CWD_HR_L2_vr','CWD_HR_L3','CWD_HR_L3_vr'
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 2615593353..fbaa87f2dd 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,4 +1,100 @@
===============================================================
+Tag name: ctsm5.1.dev174
+Originator(s): olyson (Keith Oleson,UCAR/TSS)
+Date: Thu 14 Mar 2024 04:56:37 PM MDT
+One-line Summary: Improve vegetation health at high latitudes
+
+Purpose and description of changes
+----------------------------------
+
+The corresponding changes:
+
+Remove snicar_snobc_intmix from EXPERIMENTAL endrun (allow it to be true)
+Remove flg_snoage_scl in SNICAR such that xdrdt can have an effect (fixes #2298 )
+New parameter file and namelist values for clm5_1:
+
+- snow_thermal_cond_method = Sturm1997 (default for clm5_1)
+- snicar_snobc_intmix = .true. (default for clm5_1)
+- ctsm51_params.c240208.nc is the new CTSM parameter file (changes: froot_leaf(11:12)=1.2, FUN_fracfixers(11:12)=1, xdrdt=5, scvng_fct_mlt_sf=0.5, snw_rds_refrz=1500, fresh_snw_rds_max=400)
+- New history fields for coupler history verification (default off)
+- Add snow5d_thresh_for_onset to parameter file, set to 0.2 for clm51 and 0.1 (unchanged) for clm50 and clm45.
+
+
+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.]
+
+[X] clm5_1
+
+[ ] clm5_0
+
+[ ] ctsm5_0-nwp
+
+[ ] clm4_5
+
+
+Bugs fixed
+----------
+CTSM issues fixed (include CTSM Issue #):
+Fixes #2298
+Fixes LMWG_dev discussion #3
+
+New bug discovered or introduced:
+Relevant post appears in #2348 on 2024/3/14
+
+Notes of particular relevance for users
+---------------------------------------
+Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables):
+ New namelist defaults including new parameter files:
+ ctsm51_params.c240208.nc
+ clm50_params.c240208.nc
+ clm45_params.c240208.nc
+ ctsm51_ciso_cwd_hr_params.c240208.nc
+
+
+Testing summary:
+----------------
+
+ [PASS means all tests PASS; OK means tests PASS other than expected fails.]
+
+ regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing):
+
+ derecho ----- OK
+ izumi ------- OK
+
+ any other testing (give details below):
+ Keith Oleson replicated simulation in LMWG_dev issue #51 as bfb when
+ snow5d_thresh_for_onset on ctsm51_ciso_cwd_hr_params.c240208.nc was set
+ to original value of 0.1.
+
+Answer changes
+--------------
+
+Changes answers relative to baseline: YES
+
+ Summarize any changes to answers, i.e.,
+ - what code configurations: clm51
+ - what platforms/compilers: all
+ - nature of change: new climate at high latitudes
+
+ See LMWG_dev discussion #3 and simulations discussed therein,
+ including (though possibly not limited to) LMWG_dev issues #51, 52, 54, 57.
+
+ slevis will add this tag with the label "SIGNIFICANT" to the
+ Answer-changing-tags wiki:
+ https://github.com/ESCOMP/CTSM/wiki/Answer-changing-tags
+
+Other details
+-------------
+Pull Requests that document the changes (include PR ids):
+ https://github.com/ESCOMP/ctsm/pull/2348
+
+===============================================================
+===============================================================
Tag name: ctsm5.1.dev173
Originator(s): rgknox (Ryan Knox,LAWRENCE BERKELEY NATIONAL LABORATORY)
Date: Wed 13 Mar 2024 04:46:37 PM MDT
diff --git a/doc/ChangeSum b/doc/ChangeSum
index 61cf0530ca..49afdeb03f 100644
--- a/doc/ChangeSum
+++ b/doc/ChangeSum
@@ -1,8 +1,9 @@
Tag Who Date Summary
============================================================================================================================
+ ctsm5.1.dev174 olyson 03/14/2024 Improve vegetation health at high latitudes
ctsm5.1.dev173 rgknox 03/13/2024 New FATES namelist variable: fates_history_dimlevel
ctsm5.1.dev172 erik 03/12/2024 Merge b4b-dev
- ctsm5.1.dev171 slevis 03/01/2024 Set initial t_soisno=272 for soils and 274K for urban road
+ ctsm5.1.dev171 olyson 03/01/2024 Set initial t_soisno=272 for soils and 274K for urban road
ctsm5.1.dev170 samrabin 02/28/2024 Add hillslope hydrology
ctsm5.1.dev169 samrabin 02/22/2024 Merge b4b-dev
ctsm5.1.dev168 slevis 02/16/2024 Remove a source of negative snocan in CanopyFluxesMod
diff --git a/src/biogeochem/CNPhenologyMod.F90 b/src/biogeochem/CNPhenologyMod.F90
index 05041527a7..fffb19bc46 100644
--- a/src/biogeochem/CNPhenologyMod.F90
+++ b/src/biogeochem/CNPhenologyMod.F90
@@ -97,6 +97,7 @@ module CNPhenologyMod
real(r8) :: soilpsi_off ! critical soil water potential for leaf offset
real(r8) :: lwtop ! live wood turnover proportion (annual fraction)
real(r8) :: phenology_soil_depth ! soil depth used for measuring states for phenology triggers
+ real(r8) :: snow5d_thresh_for_onset ! 5-day snow depth threshold for leaf onset
end type params_type
type(params_type) :: params_inst
@@ -280,6 +281,7 @@ subroutine CNPhenologySetParams( )
params_inst%soilpsi_off = -0.8 ! MPa
params_inst%lwtop = 0.7_r8 ! Fraction
params_inst%phenology_soil_depth = 0.08_r8 ! m
+ params_inst%snow5d_thresh_for_onset = 0.2_r8 ! m
end subroutine CNPhenologySetParams
!-----------------------------------------------------------------------
@@ -313,6 +315,7 @@ subroutine readParams ( ncid )
call readNcdioScalar(ncid, 'soilpsi_off', subname, params_inst%soilpsi_off)
call readNcdioScalar(ncid, 'lwtop_ann', subname, params_inst%lwtop)
call readNcdioScalar(ncid, 'phenology_soil_depth', subname, params_inst%phenology_soil_depth)
+ call readNcdioScalar(ncid, 'snow5d_thresh_for_onset', subname, params_inst%snow5d_thresh_for_onset)
end subroutine readParams
@@ -1136,7 +1139,6 @@ function SeasonalDecidOnset( onset_gdd, onset_gddflag, soilt, soila10, t_a5min,
logical :: do_onset ! Flag if onset should happen (return value)
!
! !LOCAL VARIABLES:
- real(r8), parameter :: snow5d_thresh_for_onset = 0.1_r8 ! 5-day snow depth threshold for leaf onset
real(r8), parameter :: min_critical_daylength_onset = 39300._r8/2._r8 ! Minimum daylength for onset to happen
! NOTE above: The 39300/2(19650) value is what we've
! tested with, we are concerned that changing
@@ -1192,7 +1194,8 @@ function SeasonalDecidOnset( onset_gdd, onset_gddflag, soilt, soila10, t_a5min,
else if (season_decid_temperate == 0 .and. onset_gddflag == 1.0_r8 .and. &
soila10 > SHR_CONST_TKFRZ .and. &
t_a5min > SHR_CONST_TKFRZ .and. ws_flag==1.0_r8 .and. &
- dayl>min_critical_daylength_onset .and. snow_5daymin_critical_daylength_onset .and. &
+ snow_5day this%forc_aer_grc(begg:endg,1)
+ call hist_addfld1d (fname='BCPHIDRY', units='kg/m^2/s', &
+ avgflag='A', long_name='black carbon deposition (phidry) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
+ data1dptr => this%forc_aer_grc(begg:endg,2)
+ call hist_addfld1d (fname='BCPHODRY', units='kg/m^2/s', &
+ avgflag='A', long_name='black carbon deposition (phodry) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
+ data1dptr => this%forc_aer_grc(begg:endg,3)
+ call hist_addfld1d (fname='BCPHIWET', units='kg/m^2/s', &
+ avgflag='A', long_name='black carbon deposition (phiwet) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
+ data1dptr => this%forc_aer_grc(begg:endg,4)
+ call hist_addfld1d (fname='OCPHIDRY', units='kg/m^2/s', &
+ avgflag='A', long_name='organic carbon deposition (phidry) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
+ data1dptr => this%forc_aer_grc(begg:endg,5)
+ call hist_addfld1d (fname='OCPHODRY', units='kg/m^2/s', &
+ avgflag='A', long_name='black carbon deposition (phodry) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
+ data1dptr => this%forc_aer_grc(begg:endg,6)
+ call hist_addfld1d (fname='OCPHIWET', units='kg/m^2/s', &
+ avgflag='A', long_name='organic carbon deposition (phiwet) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
+ data1dptr => this%forc_aer_grc(begg:endg,7)
+ call hist_addfld1d (fname='DSTWET1', units='kg/m^2/s', &
+ avgflag='A', long_name='dust deposition (wet1) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
+ data1dptr => this%forc_aer_grc(begg:endg,8)
+ call hist_addfld1d (fname='DSTDRY1', units='kg/m^2/s', &
+ avgflag='A', long_name='dust deposition (dry1) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
+ data1dptr => this%forc_aer_grc(begg:endg,9)
+ call hist_addfld1d (fname='DSTWET2', units='kg/m^2/s', &
+ avgflag='A', long_name='dust deposition (wet2) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
+ data1dptr => this%forc_aer_grc(begg:endg,10)
+ call hist_addfld1d (fname='DSTDRY2', units='kg/m^2/s', &
+ avgflag='A', long_name='dust deposition (dry2) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
+ data1dptr => this%forc_aer_grc(begg:endg,11)
+ call hist_addfld1d (fname='DSTWET3', units='kg/m^2/s', &
+ avgflag='A', long_name='dust deposition (wet3) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
+ data1dptr => this%forc_aer_grc(begg:endg,12)
+ call hist_addfld1d (fname='DSTDRY3', units='kg/m^2/s', &
+ avgflag='A', long_name='dust deposition (dry3) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
+ data1dptr => this%forc_aer_grc(begg:endg,13)
+ call hist_addfld1d (fname='DSTWET4', units='kg/m^2/s', &
+ avgflag='A', long_name='dust deposition (wet4) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
+ data1dptr => this%forc_aer_grc(begg:endg,14)
+ call hist_addfld1d (fname='DSTDRY4', units='kg/m^2/s', &
+ avgflag='A', long_name='dust deposition (dry4) from atmosphere', &
+ ptr_gcell=data1dptr, default = 'inactive')
+
! Time averaged quantities
this%fsi24_patch(begp:endp) = spval
call hist_addfld1d (fname='FSI24', units='K', &
diff --git a/src/main/controlMod.F90 b/src/main/controlMod.F90
index 723153b5f2..a5da9c3082 100644
--- a/src/main/controlMod.F90
+++ b/src/main/controlMod.F90
@@ -637,7 +637,7 @@ subroutine control_init(dtime)
snicar_solarspec /= 'mid_latitude_winter' .or. &
snicar_dust_optics /= 'sahara' .or. &
snicar_numrad_snw /= 5 .or. &
- snicar_snobc_intmix .or. snicar_snodst_intmix .or. &
+ snicar_snodst_intmix .or. &
.not. snicar_use_aerosol .or. &
do_sno_oc) then
call endrun(msg=' ERROR: You have selected an option that is EXPERIMENTAL, UNSUPPORTED, and UNTESTED. For guidance see namelist_defaults_ctsm.xml'//&