diff --git a/.gitmodules b/.gitmodules
index 1f6da08484..225f2f75ac 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -28,7 +28,7 @@
[submodule "fates"]
path = src/fates
url = https://github.com/NGEET/fates
-fxtag = sci.1.78.3_api.36.1.0
+fxtag = sci.1.79.3_api.37.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 dd5d8be545..cfdb4e9278 100755
--- a/bld/CLMBuildNamelist.pm
+++ b/bld/CLMBuildNamelist.pm
@@ -2588,12 +2588,9 @@ sub setup_logic_initial_conditions {
my $finidat = $nl->get_value($var);
$nl_flags->{'excess_ice_on_finidat'} = "unknown";
if ( $nl_flags->{'clm_start_type'} =~ /cold/ ) {
- if (defined $finidat ) {
- $log->warning("setting $var (either explicitly in your user_nl_clm or by doing a hybrid or branch RUN_TYPE)\n is incomptable with using a cold start" .
+ if (defined $finidat && !&value_is_true(($nl->get_value('use_fates')))) {
+ $log->fatal_error("setting $var (either explicitly in your user_nl_clm or by doing a hybrid or branch RUN_TYPE)\n is incompatible with using a cold start" .
" (by setting CLM_FORCE_COLDSTART=on)." );
- $log->warning("Overridding input $var file with one specifying that this is a cold start from arbitrary initial conditions." );
- my $group = $definition->get_group_name($var);
- $nl->set_variable_value($group, $var, "' '" );
}
add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl,
$var, 'val'=>"' '", 'no_abspath'=>1);
diff --git a/bld/unit_testers/build-namelist_test.pl b/bld/unit_testers/build-namelist_test.pl
index 4120ed869d..bab664666c 100755
--- a/bld/unit_testers/build-namelist_test.pl
+++ b/bld/unit_testers/build-namelist_test.pl
@@ -1314,10 +1314,6 @@ sub cat_and_create_namelistinfile {
my %warntest = (
# Warnings without the -ignore_warnings option given
- "coldwfinidat" =>{ options=>"-envxml_dir . -clm_start_type cold",
- namelst=>"finidat = 'testfile.nc'",
- phys=>"clm5_0",
- },
"bgcspin_w_suplnitro" =>{ options=>"-envxml_dir . -bgc bgc -clm_accelerated_spinup on",
namelst=>"suplnitro='ALL'",
phys=>"clm5_0",
@@ -1398,6 +1394,56 @@ sub cat_and_create_namelistinfile {
system( "cat $tempfile" );
}
+print "\n===============================================================================\n";
+print "Ensure cold starts with finidat are handled properly \n";
+print "=================================================================================\n";
+
+my %coldwfinidat = (
+ "bgc" => { options=>"-envxml_dir . -clm_start_type cold",
+ namelst=>"finidat = 'testfile.nc'",
+ phys=>"clm5_0",
+ expected_fail=>1,
+ },
+ "fates" => { options=>"-envxml_dir . -clm_start_type cold -bgc fates -no-megan",
+ namelst=>"finidat = 'testfile.nc', use_fates = .true.",
+ phys=>"clm5_0",
+ expected_fail=>0,
+ },
+);
+my $finidat;
+foreach my $key ( keys(%coldwfinidat) ) {
+ print( "$key\n" );
+
+ my $var;
+ foreach $var ( "phys" , "options", "namelst", "expected_fail" ) {
+ if ( not exists $coldwfinidat{$key}{$var} ) {
+ die "ERROR: Subkey $var does not exist for coldwfinidat $key\nERROR:Check if you spelled $var correctly\n"
+ }
+ }
+
+ &make_config_cache($coldwfinidat{$key}{"phys"});
+ my $options = $coldwfinidat{$key}{"options"};
+ my $namelist = $coldwfinidat{$key}{"namelst"};
+ my $expected_fail = $coldwfinidat{$key}{"expected_fail"};
+ my %settings;
+ &make_env_run( %settings );
+
+ # Should fail if expected to, pass otherwise
+ eval{ system( "$bldnml $options -namelist \"&clmexp $namelist /\" > $tempfile 2>&1 " ); };
+ is( $? eq 0, $expected_fail eq 0, "coldwfinidat $key run");
+
+ if ( $expected_fail ) {
+ # Now run with -ignore_warnings and make sure it still doesn't work
+ $options .= " -ignore_warnings";
+ eval{ system( "$bldnml $options -namelist \"&clmexp $namelist /\" > $tempfile 2>&1 " ); };
+ isnt( $?, 0, "coldwfinidat $key run -ignore_warnings" );
+ } else {
+ # Check that finidat was correctly set
+ $finidat = `grep finidat lnd_in`;
+ ok ( $finidat =~ "testfile.nc", "coldwfinidat $key finidat? $finidat" );
+ }
+}
+
#
# Loop over all physics versions
#
diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml
index b403c95b7e..007468cecc 100644
--- a/cime_config/testdefs/ExpectedTestFails.xml
+++ b/cime_config/testdefs/ExpectedTestFails.xml
@@ -180,6 +180,10 @@
FAIL
#2454
+
+ FAIL
+ #2325
+
@@ -188,6 +192,13 @@
#2454
+
+
+
+ FAIL
+ #2867
+
+
@@ -270,21 +281,22 @@
-
+
FAIL
#2325
+
+
-
-
+
+
FAIL
- #2325
+ #2861
-
FAIL
@@ -334,6 +346,12 @@
+
+
+ FAIL
+ #2861
+
+
@@ -348,6 +366,29 @@
#2810
+
+
+
+ FAIL
+ #2861
+
+
+
+
+
+
+ FAIL
+ #2861
+
+
+
+
+
+
+ FAIL
+ #2810
+
+
diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml
index d5a8f3077b..b118c863b1 100644
--- a/cime_config/testdefs/testlist_clm.xml
+++ b/cime_config/testdefs/testlist_clm.xml
@@ -2679,7 +2679,7 @@
-
+
@@ -2688,7 +2688,7 @@
-
+
diff --git a/cime_config/testdefs/testmods_dirs/clm/FatesColdST3/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/FatesColdST3/user_nl_clm
index eca76c4b9c..860656e8d8 100644
--- a/cime_config/testdefs/testmods_dirs/clm/FatesColdST3/user_nl_clm
+++ b/cime_config/testdefs/testmods_dirs/clm/FatesColdST3/user_nl_clm
@@ -1 +1,2 @@
use_fates_ed_st3= .true.
+hist_fexcl1 = 'FATES_ERROR_EL'
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 7dcda101aa..5a2a3c472e 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,4 +1,149 @@
===============================================================
+Tag name: ctsm5.3.012
+Originator(s): afoster (Adrianna Foster,UCAR/TSS,303-497-1728)
+Date: Wed 13 Nov 2024 09:53:51 AM MST
+One-line Summary: update fates tag
+
+Purpose and description of changes
+----------------------------------
+
+Updates FATES tag to latest fates main (sci.1.79.3_api.37.0.0), and updates API to go
+along with latest FATES update to refactor it's fire equations
+
+
+Significant changes to scientifically-supported configurations
+--------------------------------------------------------------
+
+
+[ ] clm6_0
+
+[ ] clm5_1
+
+[ ] clm5_0
+
+[ ] ctsm5_0-nwp
+
+[ ] clm4_5
+
+
+
+
+
+
+Testing summary:
+----------------
+
+ regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing):
+
+ derecho ----- OK
+ izumi ------- OK
+
+ fates tests:
+ derecho ----- OK
+ izumi ------- OK
+
+
+Answer changes
+--------------
+
+Changes answers relative to baseline:
+
+Round-off differences for FATES compsets where fire is active.
+NLCOMP differences for some FATES compsets
+
+
+Pull Requests that document the changes (include PR ids):
+- ESCOMP/CTSM#2782: Fates fuel refactor (https://github.com/ESCOMP/CTSM/pull/2782)
+
+===============================================================
+===============================================================
+Tag name: ctsm5.3.011
+Originator(s): samrabin (Sam Rabin, UCAR/TSS, samrabin@ucar.edu)
+Date: Mon Nov 11 17:55:57 MST 2024
+One-line Summary: Improve handling of cold-start finidat
+
+Purpose and description of changes
+----------------------------------
+
+This PR changes things so that:
+
+1. Cold-start FATES runs with finidat specified will not require -ignore_warnings, and the supplied finidat will actually be obeyed.
+2. Cold-start non-FATES runs will not be allowed, even with -ignore_warnings.
+
+
+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.)
+
+[ ] clm6_0
+
+[ ] clm5_1
+
+[ ] clm5_0
+
+[ ] ctsm5_0-nwp
+
+[ ] clm4_5
+
+
+Bugs fixed
+----------
+[Remove any lines that don't apply. Remove entire section if nothing applies.]
+
+List of CTSM issues fixed:
+- Resolves ESCOMP/CTSM#2856: FATES will never start from specified finidat (https://github.com/ESCOMP/CTSM/issues/2856)
+
+Notes of particular relevance for developers:
+---------------------------------------------
+NOTE: Be sure to review the steps in README.CHECKLIST.master_tags as well as the coding style in the Developers Guide
+
+Changes to tests or testing:
+Adds three fates suite tests to expected fails:
+- ERS_D_Mmpi-serial_Ld5.1x1_brazil.I2000Clm50FatesCruRsGs.izumi_nag.clm-FatesCold
+- SMS_Lm3_D_Mmpi-serial.1x1_brazil.I2000Clm50FatesCruRsGs.izumi_nag.clm-FatesColdHydro
+- ERS_D_Ld30.f45_f45_mg37.I2000Clm50FatesCruRsGs.izumi_nag.clm-FatesColdLandUse
+
+
+Testing summary:
+----------------
+
+ [PASS means all tests PASS; OK means tests PASS other than expected fails.]
+
+ 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:
+ derecho ----- OK
+ izumi ------- OK
+
+
+Answer changes
+--------------
+
+Changes answers relative to baseline:
+
+ Summarize any changes to answers, i.e.,
+ - what code configurations: FATES cold-start runs with finidat
+ - what platforms/compilers: All
+ - nature of change: new climate
+
+
+Other details
+-------------
+
+Pull Requests that document the changes (include PR ids):
+- ESCOMP/CTSM#2870: Fix handling of finidat with cold starts (https://github.com/ESCOMP/CTSM/pull/2870)
+
+===============================================================
+===============================================================
Tag name: ctsm5.3.010
Originator(s): afoster (Adrianna Foster)
Date: Sat Nov 9 12:54:18 MST 2024
diff --git a/doc/ChangeSum b/doc/ChangeSum
index 46e1176fd3..87d5709a68 100644
--- a/doc/ChangeSum
+++ b/doc/ChangeSum
@@ -1,5 +1,7 @@
Tag Who Date Summary
============================================================================================================================
+ ctsm5.3.012 afoster 11/13/2024 update fates tag
+ ctsm5.3.011 samrabin 11/11/2024 Improve handling of cold-start finidat
ctsm5.3.010 afoster 11/09/2024 Merge b4b-dev
ctsm5.3.009 samrabin 10/15/2024 Reduce outputs from matrixcnOn tests
ctsm5.3.008 olyson 10/14/2024 PPE change to sa_leaf in CanopyFluxesMod.F90
diff --git a/src/fates b/src/fates
index 825579d0b4..e3e7d2cd86 160000
--- a/src/fates
+++ b/src/fates
@@ -1 +1 @@
-Subproject commit 825579d0b406fe99344591b5ed8356e5c7aeebec
+Subproject commit e3e7d2cd86a66f8ca0e8f6dc4a823246a2bdb95b
diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90
index 14793441ae..381e1f1170 100644
--- a/src/main/histFileMod.F90
+++ b/src/main/histFileMod.F90
@@ -28,7 +28,7 @@ module histFileMod
use FatesInterfaceTypesMod , only : nlevheight
use FatesInterfaceTypesMod , only : nlevdamage
use FatesConstantsMod , only : n_landuse_cats
- use FatesLitterMod , only : nfsc
+ use FatesFuelClassesMod , only : num_fuel_classes
use FatesLitterMod , only : ncwd
use PRTGenericMod , only : num_elements_fates => num_elements
use FatesInterfaceTypesMod , only : numpft_fates => numpft
@@ -2506,7 +2506,7 @@ subroutine htape_create (t, histrest)
call ncd_defdim(lnfid, 'fates_levpft', numpft_fates, dimid)
call ncd_defdim(lnfid, 'fates_levage', nlevage, dimid)
call ncd_defdim(lnfid, 'fates_levheight', nlevheight, dimid)
- call ncd_defdim(lnfid, 'fates_levfuel', nfsc, dimid)
+ call ncd_defdim(lnfid, 'fates_levfuel', num_fuel_classes, dimid)
call ncd_defdim(lnfid, 'fates_levcwdsc', ncwd, dimid)
call ncd_defdim(lnfid, 'fates_levscpf', nlevsclass*numpft_fates, dimid)
call ncd_defdim(lnfid, 'fates_levcapf', nlevcoage*numpft_fates, dimid)
@@ -2521,7 +2521,7 @@ subroutine htape_create (t, histrest)
call ncd_defdim(lnfid, 'fates_levelpft', num_elements_fates * numpft_fates, dimid)
call ncd_defdim(lnfid, 'fates_levelcwd', num_elements_fates * ncwd, dimid)
call ncd_defdim(lnfid, 'fates_levelage', num_elements_fates * nlevage, dimid)
- call ncd_defdim(lnfid, 'fates_levagefuel', nlevage * nfsc, dimid)
+ call ncd_defdim(lnfid, 'fates_levagefuel', nlevage * num_fuel_classes, dimid)
call ncd_defdim(lnfid, 'fates_levclscpf', nclmax*nlevsclass*numpft_fates, dimid)
call ncd_defdim(lnfid, 'fates_levlanduse', n_landuse_cats, dimid)
call ncd_defdim(lnfid, 'fates_levlulu', n_landuse_cats * n_landuse_cats, dimid)
@@ -5597,7 +5597,7 @@ subroutine hist_addfld2d (fname, type2d, units, avgflag, long_name, type1d_out,
case ('fates_levheight')
num2d = nlevheight
case ('fates_levfuel')
- num2d = nfsc
+ num2d = num_fuel_classes
case ('fates_levcwdsc')
num2d = ncwd
case ('fates_levscpf')
@@ -5637,7 +5637,7 @@ subroutine hist_addfld2d (fname, type2d, units, avgflag, long_name, type1d_out,
case ('fates_levelage')
num2d = num_elements_fates*nlevage
case ('fates_levagefuel')
- num2d = nlevage*nfsc
+ num2d = nlevage*num_fuel_classes
case('fates_levclscpf')
num2d = nclmax * nclmax * numpft_fates
case ('fates_levlanduse')
diff --git a/src/utils/clmfates_interfaceMod.F90 b/src/utils/clmfates_interfaceMod.F90
index cff7679e9d..269189d1b7 100644
--- a/src/utils/clmfates_interfaceMod.F90
+++ b/src/utils/clmfates_interfaceMod.F90
@@ -3622,7 +3622,7 @@ subroutine hlm_bounds_to_fates_bounds(hlm, fates)
use FatesInterfaceTypesMod, only : nlevsclass, nlevage, nlevcoage
use FatesInterfaceTypesMod, only : nlevheight
use FatesInterfaceTypesMod, only : nlevdamage
- use FatesLitterMod, only : nfsc
+ use FatesFuelClassesMod, only : num_fuel_classes
use FatesLitterMod, only : ncwd
use EDParamsMod, only : nlevleaf, nclmax
use FatesInterfaceTypesMod, only : numpft_fates => numpft
@@ -3674,7 +3674,7 @@ subroutine hlm_bounds_to_fates_bounds(hlm, fates)
fates%sizeagepft_class_end = nlevsclass * nlevage * numpft_fates
fates%fuel_begin = 1
- fates%fuel_end = nfsc
+ fates%fuel_end = num_fuel_classes
fates%cwdsc_begin = 1
fates%cwdsc_end = ncwd
@@ -3701,7 +3701,7 @@ subroutine hlm_bounds_to_fates_bounds(hlm, fates)
fates%elage_end = num_elements * nlevage
fates%agefuel_begin = 1
- fates%agefuel_end = nlevage * nfsc
+ fates%agefuel_end = nlevage * num_fuel_classes
fates%cdpf_begin = 1
fates%cdpf_end = nlevdamage * numpft_fates * nlevsclass