diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml
index 4dbbe11ded..655e97c47c 100644
--- a/bld/namelist_files/namelist_defaults_ctsm.xml
+++ b/bld/namelist_files/namelist_defaults_ctsm.xml
@@ -115,8 +115,8 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/isotopes/atm_delta_C14_CMIP6_SSP534os_3x1_global_1850-2100_yearly_c181209.nc
lnd/clm2/isotopes/atm_delta_C14_CMIP6_SSP5B_3x1_global_1850-2100_yearly_c181209.nc
-
-.false.
+
+.false.
.true.
.false.
@@ -430,6 +430,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
Jordan1991
Sturm1997
+Sturm1997
-
-hgrid=0.9x1.25 maxpft=17 mask=gx1v7 use_cn=.false. use_crop=.false. irrigate=.true. glc_nec=10 do_transient_pfts=.false.
+
+hgrid=ne30np4.pg3 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.false. glc_nex=10 do_transient_pfts=.false. lnd_tuning_mode=clm6_0_GSWP3v1
-hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.false. glc_nec=10 do_transient_pfts=.false.
-
-
-
-hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.false. glc_nec=10 do_transient_pfts=.false.
-
-
-
-
-hgrid=0.9x1.25 maxpft=17 mask=gx1v7 use_cn=.false. use_crop=.false. irrigate=.true. glc_nec=10 do_transient_pfts=.false.
-
-
-hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.false. glc_nec=10 do_transient_pfts=.false.
-
-
-
-hgrid=0.9x1.25 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.false. glc_nec=10 do_transient_pfts=.false.
+hgrid=ne30np4.pg3 maxpft=79 mask=gx1v7 use_cn=.true. use_crop=.true. irrigate=.false. glc_nex=10 do_transient_pfts=.false. lnd_tuning_mode=clm6_0_GSWP3v1
@@ -969,21 +949,21 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.I1850Clm45BgcGs.0901-01-01.0.9x1.25_gx1v7_simyr1850_c200806.nc
lnd/clm2/initdata_map/clmi.I1850Clm45BgcCruGs.1101-01-01.0.9x1.25_gx1v7_simyr1850_c200806.nc
lnd/clm2/initdata_map/clmi.B1850Clm45BgcGs.0161-01-01.0.9x1.25_gx1v7_simyr1850_c200806.nc
@@ -991,7 +971,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.I1850Clm50Sp.0181-01-01.0.9x1.25_gx1v7_simyr1850_c200806.nc
@@ -1015,59 +995,24 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.B1850Clm50BgcCrop.0161-01-01.0.9x1.25_gx1v7_simyr1850_c200729.nc
lnd/clm2/initdata_map/clmi.I1850Clm50SpCru.1706-01-01.0.9x1.25_gx1v7_simyr1850_c200806.nc
-
-lnd/clm2/initdata_map/clmi.I1850Clm50Sp.0181-01-01.0.9x1.25_gx1v7_simyr1850_c200806.nc
-
-lnd/clm2/initdata_esmf/ctsm5.2/clmi.I1850Clm50BgcCrop-ciso.1366-01-01.0.9x1.25_gx1v7_simyr1850_c240223.nc
-
-
-
-lnd/clm2/initdata_map/clmi.B1850Clm50BgcCrop.0161-01-01.0.9x1.25_gx1v7_simyr1850_c200729.nc
-
-
-
-lnd/clm2/initdata_map/clmi.I1850Clm50Sp.0181-01-01.0.9x1.25_gx1v7_simyr1850_c200806.nc
-
-lnd/clm2/initdata_esmf/ctsm5.2/clmi.I1850Clm50BgcCrop-ciso.1366-01-01.0.9x1.25_gx1v7_simyr1850_c240223.nc
-
-
-
-
+
+lnd/clm2/initdata_map/clmi.B1850Clm50BgcCrop.0161-01-01.0.9x1.25_gx1v7_simyr1850_c200729.nc
+ lnd_tuning_mode="clm6_0_GSWP3v1" use_init_interp=".true."
+>lnd/clm2/initdata_esmf/ctsm5.2/clmi.I1850Clm60BgcCrop-ciso.1361-01-01.ne30pg3_mg17_c240317.nc
lnd/clm2/initdata_map/clmi.BHIST.2000-01-01.0.9x1.25_gx1v7_simyr1979_c200806.nc
lnd/clm2/initdata_map/clmi.BHIST.2000-01-01.1.9x2.5_gx1v7_simyr1979_c200806.nc
@@ -1227,7 +1172,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.FHISTSp.1979-01-01.ARCTIC_ne30x4_mt12_simyr1979_c200806.nc
@@ -1235,7 +1180,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.FHISTSp.1979-01-01.ARCTICGRIS_ne30x8_mt12_simyr1979_c200806.nc
@@ -1243,7 +1188,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.F2000.2000-01-01.ne120pg3_mt13_simyr2000_c200728.nc
@@ -1251,7 +1196,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.BHIST.2000-01-01.0.9x1.25_gx1v7_simyr2000_c200728.nc
@@ -1259,7 +1204,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.BHISTSp.2000-01-01.1.9x2.5_gx1v7_simyr2003_c200807.nc
@@ -1268,21 +1213,21 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.FHISTSp.2013-01-01.ne0CONUSne30x8_mt12_simyr2013_c200806.nc
lnd/clm2/initdata_map/clmi.BHIST.2000-01-01.0.9x1.25_gx1v7_simyr1979_c200806.nc
lnd/clm2/initdata_map/clmi.BHIST.2000-01-01.1.9x2.5_gx1v7_simyr1979_c200806.nc
@@ -1290,7 +1235,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.FHISTSp.1979-01-01.ARCTIC_ne30x4_mt12_simyr1979_c200806.nc
@@ -1298,7 +1243,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.FHISTSp.1979-01-01.ARCTICGRIS_ne30x8_mt12_simyr1979_c200806.nc
@@ -1306,7 +1251,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.F2000.2000-01-01.ne120pg3_mt13_simyr2000_c200728.nc
@@ -1314,7 +1259,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.BHIST.2000-01-01.0.9x1.25_gx1v7_simyr2000_c200728.nc
@@ -1322,7 +1267,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.BHISTSp.2000-01-01.1.9x2.5_gx1v7_simyr2003_c200807.nc
@@ -1331,7 +1276,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
lnd/clm2/initdata_map/clmi.FHISTSp.2013-01-01.ne0CONUSne30x8_mt12_simyr2013_c200806.nc
@@ -1648,6 +1593,7 @@ lnd/clm2/surfdata_esmf/NEON/surfdata_1x1_NEON_TOOL_hist_78pfts_CMIP6_simyr2000_c
.false.
.false.
.true.
+.true.
.true.
.false.
diff --git a/bld/namelist_files/use_cases/1850_control.xml b/bld/namelist_files/use_cases/1850_control.xml
index 94ee8c5d0d..6ea033629f 100644
--- a/bld/namelist_files/use_cases/1850_control.xml
+++ b/bld/namelist_files/use_cases/1850_control.xml
@@ -8,47 +8,18 @@
constant
-.false.
-.false.
-.false.
+.false.
-1850
-1850
+1850
+1850
-1850
-1850
+1850
+1850
-1850
-1850
+1850
+1850
-1850
-1850
-
-1850
-1850
-
-1850
-1850
-
-1850
-1850
-
-1850
-1850
-
-1850
-1850
-
-lnd/clm2/ndepdata/fndep_clm_WACCM6_CMIP6piControl001_y21-50avg_1850monthly_0.95x1.25_c180802.nc
-
-lnd/clm2/ndepdata/fndep_clm_WACCM6_CMIP6piControl001_y21-50avg_1850monthly_0.95x1.25_c180802.nc
-
-lnd/clm2/ndepdata/fndep_clm_WACCM6_CMIP6piControl001_y21-50avg_1850monthly_0.95x1.25_c180802.nc
-
-cycle
-cycle
diff --git a/bld/namelist_files/use_cases/1850_noanthro_control.xml b/bld/namelist_files/use_cases/1850_noanthro_control.xml
index 636164a729..d84903f43c 100644
--- a/bld/namelist_files/use_cases/1850_noanthro_control.xml
+++ b/bld/namelist_files/use_cases/1850_noanthro_control.xml
@@ -10,26 +10,11 @@
.false.
-1850
-1850
+1850
+1850
-1850
-1850
-
-1850
-1850
-
-cycle
-cycle
-
-1925
-1925
-
-1925
-1925
-
-1925
-1925
+1925
+1925
none
nn
-1850
-1850
-
-1850
-1850
-
-1850
-1850
+1850
+1850
NONE
diff --git a/bld/namelist_files/use_cases/2000_control.xml b/bld/namelist_files/use_cases/2000_control.xml
index f3c4980fc8..2fce7c5cce 100644
--- a/bld/namelist_files/use_cases/2000_control.xml
+++ b/bld/namelist_files/use_cases/2000_control.xml
@@ -8,37 +8,17 @@
constant
-.true.
-.false.
-.true.
-.false.
-.false.
+.true.
+.false.
+.false.
-2000
-2000
+2000
+2000
-2000
-2000
+2000
+2000
-2000
-2000
-
-2000
-2000
-
-2000
-2000
-
-2000
-2000
-
-2000
-2000
-
-2000
-2000
-
-2000
-2000
+2000
+2000
diff --git a/bld/namelist_files/use_cases/2010_control.xml b/bld/namelist_files/use_cases/2010_control.xml
index 9316ecfb7f..2f72624077 100644
--- a/bld/namelist_files/use_cases/2010_control.xml
+++ b/bld/namelist_files/use_cases/2010_control.xml
@@ -8,44 +8,17 @@
constant
-.true.
-.true.
-.false.
-.true.
-.false.
-.false.
+.true.
+.false.
+.false.
-2010
-2010
+2010
+2010
-2010
-2010
+2010
+2010
-2010
-2010
-
-2010
-2010
-
-2010
-2010
-
-2010
-2010
-
-2010
-2010
-
-2010
-2010
-
-2010
-2010
-
-2010
-2010
-
-2010
-2010
+2010
+2010
diff --git a/bld/namelist_files/use_cases/20thC_transient.xml b/bld/namelist_files/use_cases/20thC_transient.xml
index d6dd729b35..6cbf9e0d38 100644
--- a/bld/namelist_files/use_cases/20thC_transient.xml
+++ b/bld/namelist_files/use_cases/20thC_transient.xml
@@ -18,46 +18,20 @@
flanduse_timeseries
-.true.
-.false.
-.true.
-.false.
-.false.
-
-1850
-2015
-1850
-
-1850
-2015
-1850
-
-1850
-2015
-1850
-
-1850
-2016
-1850
-
-1850
-2016
-1850
-
-1850
-2016
-1850
-
-1850
-2106
-1850
-
-1850
-2106
-1850
-
-1850
-2106
-1850
+.true.
+.false.
+.false.
+
+1850
+2015
+1850
+
+1850
+2016
+1850
+
+1850
+2106
+1850
diff --git a/bld/namelist_files/use_cases/stdurbpt_pd.xml b/bld/namelist_files/use_cases/stdurbpt_pd.xml
index 65786f32ae..6f5e754ba0 100644
--- a/bld/namelist_files/use_cases/stdurbpt_pd.xml
+++ b/bld/namelist_files/use_cases/stdurbpt_pd.xml
@@ -18,10 +18,8 @@
'OFF'
-.true.
-.false.
-.true.
-.false.
-.false.
+.true.
+.false.
+.false.
diff --git a/bld/unit_testers/build-namelist_test.pl b/bld/unit_testers/build-namelist_test.pl
index 7b654337af..b0ddb1e448 100755
--- a/bld/unit_testers/build-namelist_test.pl
+++ b/bld/unit_testers/build-namelist_test.pl
@@ -163,10 +163,10 @@ sub cat_and_create_namelistinfile {
#
# Figure out number of tests that will run
#
-my $ntests = 2513;
+my $ntests = 3313;
if ( defined($opts{'compare'}) ) {
- $ntests += 1545;
+ $ntests += 2001;
}
plan( tests=>$ntests );
@@ -1421,30 +1421,166 @@ sub cat_and_create_namelistinfile {
}
print "\n==================================================\n";
-print " Rest all use-cases \n";
+print " Test all use-cases over all physics options\n";
print "==================================================\n";
-# Run over all use-cases...
+# Run over all use-cases for f09 and all physics...
my $list = `$bldnml -use_case list 2>&1 | grep "use case"`;
my @usecases;
if ( $list =~ /build-namelist : use cases : (.+)$/ ) {
- my @usecases = split( / /, $list );
+ @usecases = split( / /, $1 );
} else {
die "ERROR:: Trouble getting list of use-cases\n";
}
-foreach my $usecase ( @usecases ) {
- $options = "-use_case $usecase -envxml_dir .";
+if ( $#usecases != 15 ) {
+ print "use-cases = @usecases\n";
+ die "ERROR:: Number of use-cases isn't what's expected\n";
+}
+my @expect_fails = ( "1850-2100_SSP5-3.4_transient", "1850-2100_SSP4-3.4_transient", "2018-PD_transient", "1850-2100_SSP1-1.9_transient",
+ "1850-2100_SSP4-6.0_transient", "2018_control" );
+foreach my $phys ( "clm4_5", "clm5_0", "clm5_1", "clm6_0" ) {
+ print "physics = $phys\n";
+ &make_config_cache($phys);
+ foreach my $usecase ( @usecases ) {
+ print "usecase = $usecase\n";
+ $options = "-res 0.9x1.25 -use_case $usecase -envxml_dir .";
+ &make_env_run();
+ my $expect_fail = undef;
+ foreach my $failusecase ( @expect_fails ) {
+ if ( $failusecase eq $usecase ) {
+ $expect_fail = 1;
+ last;
+ }
+ }
+ eval{ system( "$bldnml $options > $tempfile 2>&1 " ); };
+ if ( ! defined($expect_fail) ) {
+ is( $@, '', "options: $options" );
+ $cfiles->checkfilesexist( "$options", $mode );
+ $cfiles->shownmldiff( "default", "standard" );
+ if ( defined($opts{'compare'}) ) {
+ $cfiles->doNOTdodiffonfile( "$tempfile", "$options", $mode );
+ $cfiles->comparefiles( "$options", $mode, $opts{'compare'} );
+ }
+ if ( defined($opts{'generate'}) ) {
+ $cfiles->copyfiles( "$options", $mode );
+ }
+ } else {
+ isnt( $@, 0, "options: $options" );
+ }
+ &cleanup();
+ }
+}
+
+print "\n=======================================================================================\n";
+print " Test the seperate initial condition files, for ones not tested elsewhere\n";
+print "=========================================================================================\n";
+
+my %finidat_files = (
+ "f091850Clm45BgcGSW" =>{ phys =>"clm4_5",
+ atm_forc=>"GSWP3v1",
+ res => "0.9x1.25",
+ bgc => "bgc",
+ crop => "--no-crop",
+ use_case => "1850_control",
+ start_ymd => "18500101",
+ namelist => "irrigate=T",
+ },
+ "f091850Clm45BgcCRU" =>{ phys =>"clm4_5",
+ atm_forc=>"CRUv7",
+ res => "0.9x1.25",
+ bgc => "bgc",
+ crop => "--no-crop",
+ use_case => "1850_control",
+ start_ymd => "18500101",
+ namelist => "irrigate=T",
+ },
+ "f091850Clm45BgcCAM6" =>{ phys =>"clm4_5",
+ atm_forc=>"cam6.0",
+ res => "0.9x1.25",
+ bgc => "bgc",
+ crop => "--crop",
+ use_case => "1850_control",
+ start_ymd => "18500101",
+ namelist => "irrigate=F",
+ },
+ "f091850Clm50BgcGSW" =>{ phys =>"clm5_0",
+ atm_forc=>"GSWP3v1",
+ res => "0.9x1.25",
+ bgc => "bgc",
+ crop => "--crop",
+ use_case => "1850_control",
+ start_ymd => "18500101",
+ namelist => "irrigate=F",
+ },
+ "f091850Clm50SpGSW" =>{ phys =>"clm5_0",
+ atm_forc=>"GSWP3v1",
+ res => "0.9x1.25",
+ bgc => "sp",
+ crop => "--no-crop",
+ use_case => "1850_control",
+ start_ymd => "18500101",
+ namelist => "irrigate=T",
+ },
+ "f091850Clm50BgcCRU" =>{ phys =>"clm5_0",
+ atm_forc=>"CRUv7",
+ res => "0.9x1.25",
+ bgc => "bgc",
+ crop => "--crop",
+ use_case => "1850_control",
+ start_ymd => "18500101",
+ namelist => "irrigate=F",
+ },
+ "f091850Clm50SpCRU" =>{ phys =>"clm5_0",
+ atm_forc=>"CRUv7",
+ res => "0.9x1.25",
+ bgc => "sp",
+ crop => "--no-crop",
+ use_case => "1850_control",
+ start_ymd => "18500101",
+ namelist => "irrigate=T",
+ },
+ "f091850Clm50BgcCAM6" =>{ phys =>"clm5_0",
+ atm_forc=>"cam6.0",
+ res => "0.9x1.25",
+ bgc => "bgc",
+ crop => "--crop",
+ use_case => "1850_control",
+ start_ymd => "18500101",
+ namelist => "irrigate=F",
+ },
+ );
+
+foreach my $key ( keys(%finidat_files) ) {
+ print( "$key\n" );
+ my $phys = $finidat_files{$key}{'phys'};
+ print "physics = $phys\n";
+ &make_config_cache($phys);
+ my $usecase = $finidat_files{$key}{'use_case'};
+ my $bgc = $finidat_files{$key}{'bgc'};
+ my $res = $finidat_files{$key}{'res'};
+ my $crop = $finidat_files{$key}{'crop'};
+ my $namelist = $finidat_files{$key}{'namelist'};
+ my $start_ymd = $finidat_files{$key}{'start_ymd'};
+ my $lnd_tuning_mode = "${phys}_" . $finidat_files{$key}{'atm_forc'};
+ $options = "-bgc $bgc -res $res -use_case $usecase -envxml_dir . $crop --lnd_tuning_mode $lnd_tuning_mode " .
+ "-namelist '&a start_ymd=$start_ymd, $namelist/'";
&make_env_run();
eval{ system( "$bldnml $options > $tempfile 2>&1 " ); };
is( $@, '', "options: $options" );
+ my $finidat = `grep finidat lnd_in`;
+ if ( $finidat =~ /initdata_map/ ) {
+ my $result;
+ eval( $result = `grep use_init_interp lnd_in` );
+ is ( $result =~ /.true./, 1, "use_init_interp needs to be true here: $result");
+ }
$cfiles->checkfilesexist( "$options", $mode );
$cfiles->shownmldiff( "default", "standard" );
if ( defined($opts{'compare'}) ) {
- $cfiles->doNOTdodiffonfile( "$tempfile", "$options", $mode );
- $cfiles->comparefiles( "$options", $mode, $opts{'compare'} );
+ $cfiles->doNOTdodiffonfile( "$tempfile", "$options", $mode );
+ $cfiles->comparefiles( "$options", $mode, $opts{'compare'} );
}
if ( defined($opts{'generate'}) ) {
- $cfiles->copyfiles( "$options", $mode );
+ $cfiles->copyfiles( "$options", $mode );
}
&cleanup();
}
@@ -1511,7 +1647,7 @@ sub cat_and_create_namelistinfile {
"20thC_transient",
);
foreach my $res ( @glc_res ) {
- foreach my $usecase ( @usecases ) {
+ foreach my $usecase ( @use_cases ) {
my $startymd = undef;
if ( ($usecase eq "1850_control") || ($usecase eq "20thC_transient") ) {
$startymd = 18500101;
@@ -1583,43 +1719,6 @@ sub cat_and_create_namelistinfile {
#
# End loop over versions
#
-#
-# Test ALL SSP's for f09...
-#
-$phys = "clm6_0";
-$mode = "-phys $phys";
-&make_config_cache($phys);
-my $res = "0.9x1.25";
-foreach my $usecase ( "1850-2100_SSP5-8.5_transient", "1850-2100_SSP2-4.5_transient", "1850-2100_SSP1-2.6_transient", "1850-2100_SSP3-7.0_transient" ) {
- $options = "-res $res -bgc bgc -crop -use_case $usecase -envxml_dir . -namelist '&a start_ymd=20150101/'";
- &make_env_run();
- eval{ system( "$bldnml $options > $tempfile 2>&1 " ); };
- is( $@, '', "$options" );
- $cfiles->checkfilesexist( "$options", $mode );
- $cfiles->shownmldiff( "default", "standard" );
- if ( defined($opts{'compare'}) ) {
- $cfiles->doNOTdodiffonfile( "$tempfile", "$options", $mode );
- $cfiles->comparefiles( "$options", $mode, $opts{'compare'} );
- }
- if ( defined($opts{'generate'}) ) {
- $cfiles->copyfiles( "$options", $mode );
- }
- &cleanup();
-}
-
-# The SSP's that fail because of missing ndep files...
-$phys = "clm5_0";
-$mode = "-phys $phys";
-&make_config_cache($phys);
-my $res = "0.9x1.25";
-foreach my $usecase ( "1850-2100_SSP5-3.4_transient", "1850-2100_SSP4-3.4", "1850-2100_SSP1-1.9_transient",
- "1850-2100_SSP4-6.0_transient" ) {
- $options = "-res $res -bgc bgc -crop -use_case $usecase -envxml_dir . -namelist '&a start_ymd=20150101/'";
- &make_env_run();
- eval{ system( "$bldnml $options > $tempfile 2>&1 " ); };
- isnt( $?, 0, $usecase );
- system( "cat $tempfile" );
-}
print "\n==================================================\n";
print "Test clm4.5/clm5.0/clm5_1/clm6_0 resolutions \n";
diff --git a/bld/unit_testers/cmp_baseline_lnd_in_files b/bld/unit_testers/cmp_baseline_lnd_in_files
new file mode 100755
index 0000000000..3c6d84954c
--- /dev/null
+++ b/bld/unit_testers/cmp_baseline_lnd_in_files
@@ -0,0 +1,71 @@
+#!/bin/bash
+#
+# A simple script to compare lnd_in namelists between two baselines on Derecho
+#
+
+#----------------------------------------------------------------------
+# Usage subroutine
+usage() {
+ echo ""
+ echo "***********************************************************************"
+ echo "usage:"
+ echo "./cmp_baseline_lnd_in_files "
+ echo " "
+ echo "Compares lnd_in files between two baselines on Derecho"
+ echo "***********************************************************************"
+}
+
+#----------------------------------------------------------------------
+
+if [ "$#" -ne 2 ]; then
+ echo "Need to give two baseline directories to compare"
+ usage
+ exit 1
+fi
+baseline=$1
+compare=$2
+
+cwd=`pwd`
+if [ -z "$1" ]; then
+ echo "Need to enter a baseline directory tag name"
+ usage
+ exit 1
+fi
+if [ -z "$2" ]; then
+ echo "Need to enter a comparison directory tag name"
+ usage
+ exit 1
+fi
+
+BASELINE_ROOT=/glade/campaign/cgd/tss/ctsm_baselines
+root=$BASELINE_ROOT/$baseline
+if ! test -d "$root"; then
+ echo "Root directory of $root does NOT exist"
+ exit 1
+fi
+comp_root=$BASELINE_ROOT/$compare
+if ! test -d "$comp_root"; then
+ echo "Root comparison directory of $comp_root does NOT exist"
+ usage
+ exit 1
+fi
+cd $root
+filepat="*"
+dirnames=($filepat)
+if [ "${filenames[*]}" = "$filepat" ]; then
+ echo "No directoctories exist in this directory"
+ exit 1
+fi
+for dir in ${dirnames[*]}
+do
+ echo $dir
+ base=$dir/CaseDocs/lnd_in
+ comp=$BASELINE_ROOT/$compare/$dir/CaseDocs/lnd_in
+ if ! test -f "$base"; then
+ echo "$base, does NOT exist, skipping"
+ elif ! test -f "$comp"; then
+ echo "$comp, does NOT exist, skipping"
+ else
+ $cwd/../../cime/CIME/Tools/compare_namelists $base $comp
+ fi
+done
diff --git a/bld/unit_testers/compare_namelists b/bld/unit_testers/compare_namelists
new file mode 100755
index 0000000000..0d0168b316
--- /dev/null
+++ b/bld/unit_testers/compare_namelists
@@ -0,0 +1,115 @@
+#! /bin/bash
+# Compare namelists made by the unit-tester to either themselves (for different physics versions)
+# or to a baseline also made by the unit-tester
+#
+
+#----------------------------------------------------------------------
+# Usage subroutine
+usage() {
+ echo ""
+ echo "***********************************************************************"
+ echo "usage:"
+ echo "./compare_namelists "
+ echo ""
+ echo "valid options: "
+ echo "[-h|--help] "
+ echo " Displays this help message"
+ echo "[-v|--verbose] "
+ echo " Run in verbose mode"
+ echo "[-pa|--physicsA ] "
+ echo " Namelists of first physics version for comparison"
+ echo " (in baseline directory)"
+ echo "[-pb|--physicsB ] "
+ echo " Namelists of second physics version to compare to the first one"
+ echo " (in current directory)"
+ echo "[-b|--baseline ] "
+ echo " Baseline directory to compare to (default current directory)"
+ echo " "
+ echo "NOTE: When --physicsA or --physicsB is chosen you must also set the other"
+ echo "***********************************************************************"
+}
+
+
+# Current working directory: the location of this script
+cwd=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
+
+# Default settings
+verbose="No"
+PHYSA="all"
+PHYSB="all"
+baseline="."
+
+# Parse command-line options
+while [ $# -gt 0 ]; do
+ case $1 in
+ -h|--help )
+ usage
+ exit 0
+ ;;
+ -v|--verbose )
+ verbose="YES"
+ ;;
+ -pa|--physicsA )
+ PHYSA=$2
+ shift
+ ;;
+ -pb|--physicsB )
+ PHYSB=$2
+ shift
+ ;;
+ -b|--baseline )
+ baseline=$2
+ shift
+ ;;
+ * )
+ echo "ERROR:: invalid argument sent in: $2"
+ usage
+ exit 1
+ ;;
+ esac
+ shift
+done
+if [ "$PHYSA" = "all" ] && [ "$PHYSB" != "all" ]; then
+ echo "When setting --physicsB you MUST also set --physicsA"
+ echo "$PHYSA $PHYSB"
+ exit 1
+fi
+if [ "$PHYSB" = "all" ] && [ "$PHYSA" != "all" ]; then
+ echo "When setting --physicsA you MUST also set --physicsB"
+ exit 1
+fi
+
+if [ "$verbose" = "YES" ]; then echo "Get list of lnd_in.* files"; fi
+if [ "$verbose" = "YES" ]; then pwd; fi
+filepat="lnd_in.*"
+filenames=($filepat)
+if [ "$verbose" = "YES" ]; then echo "filename list = ${filenames[*]}"; fi
+if [ "${filenames[*]}" = "$filepat" ]; then
+ echo "No lnd_in files exist in the current directory -- run ./build-namelist_test.pl first"
+ exit 1
+fi
+for file in ${filenames[*]}
+do
+ fileA="$baseline/$file"
+ fileB="./$file"
+ # If physicsA option used and the file matches the physics input
+ if [[ "$fileA" =~ "-phys+$PHYSA" ]] || [ "$PHYSA" = "all" ]; then
+ # Replace physicsB for fileB
+ if [ ! "$PHYSA" = "all" ]; then
+ fileB=${fileB/-phys+$PHYSA/-phys+$PHYSB}
+ fi
+ if ! test -f $fileB; then
+ if [ "$verbose" = "YES" ]; then echo "$fileB does NOT exist -- skipping"; fi
+ else
+ if [ "$verbose" = "YES" ]; then echo "Compare namelists for $file"; fi
+ if [ "$fileA" = "$fileB" ]; then
+ echo "Comparing files to themself:"
+ echo "fileA = $fileA"
+ echo "fileB = $fileB"
+ exit 1
+ fi
+ $cwd/../../cime/CIME/Tools/compare_namelists $fileA $fileB
+ fi
+ fi
+done
+if [ "$verbose" = "YES" ]; then echo "Successfully ran through lnd_in files to compare"; fi
diff --git a/cime_config/config_compsets.xml b/cime_config/config_compsets.xml
index 2de911da86..538329e523 100644
--- a/cime_config/config_compsets.xml
+++ b/cime_config/config_compsets.xml
@@ -91,6 +91,8 @@
I2000Clm60Sp
2000_DATM%GSWP3v1_CLM60%SP_SICE_SOCN_MOSART_SGLC_SWAV
+
+
@@ -182,6 +184,8 @@
I1850Clm60Sp
1850_DATM%GSWP3v1_CLM60%SP_SICE_SOCN_MOSART_SGLC_SWAV
+
+
@@ -291,22 +295,24 @@
I1850Clm60BgcNoAnthro
- 1850_DATM%GSWP3v1_CLM60%BGC-NOANTHRO_SICE_SOCN_MOSART_SGLC_SWAV
+ 1850_DATM%GSWP3v1_CLM60%BGC-NOANTHRO_SICE_SOCN_RTM_SGLC_SWAV
+
I1850Clm60SpNoAnthro
- 1850_DATM%GSWP3v1_CLM60%SP-NOANTHRO_SICE_SOCN_MOSART_SGLC_SWAV
+ 1850_DATM%GSWP3v1_CLM60%SP-NOANTHRO_SICE_SOCN_RTM_SGLC_SWAV
+
I1850Clm50BgcNoAnthro
- 1850_DATM%GSWP3v1_CLM50%BGC-NOANTHRO_SICE_SOCN_MOSART_SGLC_SWAV
+ 1850_DATM%GSWP3v1_CLM50%BGC-NOANTHRO_SICE_SOCN_RTM_SGLC_SWAV
I1850Clm50SpNoAnthro
- 1850_DATM%GSWP3v1_CLM50%SP-NOANTHRO_SICE_SOCN_MOSART_SGLC_SWAV
+ 1850_DATM%GSWP3v1_CLM50%SP-NOANTHRO_SICE_SOCN_RTM_SGLC_SWAV
@@ -319,12 +325,15 @@
I1850Clm60SpNoAnthro
- 1850_DATM%GSWP3v1_CLM60%SP-NOANTHRO_SICE_SOCN_MOSART_SGLC_SWAV
+ 1850_DATM%GSWP3v1_CLM60%SP-NOANTHRO_SICE_SOCN_RTM_SGLC_SWAV
+
IHistClm60Sp
HIST_DATM%GSWP3v1_CLM60%SP_SICE_SOCN_MOSART_SGLC_SWAV
+
+
@@ -631,6 +640,17 @@
I1850Clm60BgcCropG
1850_DATM%GSWP3v1_CLM60%BGC-CROP_SICE_SOCN_MOSART_CISM2%GRIS-EVOLVE_SWAV
+
+
+
+
+
+
+ IHistClm60BgcCropG
+ HIST_DATM%GSWP3v1_CLM60%BGC-CROP_SICE_SOCN_MOSART_CISM2%GRIS-EVOLVE_SWAV
+
+
+
diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml
index 8ee60cf4b8..9da502fd54 100644
--- a/cime_config/testdefs/ExpectedTestFails.xml
+++ b/cime_config/testdefs/ExpectedTestFails.xml
@@ -51,6 +51,13 @@
+
+
+ FAIL
+ #2542
+
+
+
FAIL
diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml
index 74bc229b7f..9cfba6f5b3 100644
--- a/cime_config/testdefs/testlist_clm.xml
+++ b/cime_config/testdefs/testlist_clm.xml
@@ -21,11 +21,10 @@
-
+
-
-
+
@@ -33,6 +32,15 @@
+
+
+
+
+
+
+
+
+
@@ -73,7 +81,7 @@
-
+
@@ -102,7 +110,7 @@
-
+
@@ -111,7 +119,7 @@
-
+
@@ -120,7 +128,7 @@
-
+
@@ -129,7 +137,7 @@
-
+
@@ -138,9 +146,10 @@
-
+
+
@@ -312,14 +321,14 @@
-
+
-
+
@@ -328,7 +337,25 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -549,6 +576,15 @@
+
+
+
+
+
+
+
+
+
@@ -568,14 +604,14 @@
-
+
-
+
@@ -584,7 +620,7 @@
-
+
@@ -685,7 +721,7 @@
-
+
@@ -731,14 +767,14 @@
-
+
-
+
@@ -747,7 +783,7 @@
-
+
@@ -2089,14 +2125,14 @@
-
+
-
+
@@ -2105,7 +2141,7 @@
-
+
@@ -2778,7 +2814,7 @@
-
+
@@ -2788,7 +2824,7 @@
-
+
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 3307c8df88..de37d4934c 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,4 +1,121 @@
===============================================================
+Tag name: ctsm5.2.005
+Originator(s): erik (Erik Kluzek,UCAR/TSS,303-497-1326)
+Date: Mon 13 May 2024 04:46:10 PM MDT
+One-line Summary: Fix clm6_0 defaults and CESM testing issues, add tests to detect these problems
+
+Purpose and description of changes
+----------------------------------
+
+Fix the clm6_0 defaults that were incorrect in ctsm5.2.0. The use-cases needed to be changed to handle clm6_0.
+And clm6_0 wasn't handled in the merge of ctsm5.1.dev174 for the two new settings. Simplified the use-cases which
+should help prevent these problems in the future. use_init_interp will be set for ctsm5.1 finidat files.
+
+Fix some testing. mksurfdata_esmf and the MKSUIRFDATA test didn't work in a CESM checkout. build-namelist unit tests
+weren't going over the use-cases. Also started adding some tests to go over finidat files, but didn't yet capture all of them.
+Add some scripts to compare namelists in order to detect namelist issues for physics
+version updates, and more easily see namelist changes in one place (bld/unit_testers/cmp_baseline_lnd_in_files,
+bld/unit_testers/compare_namelists).
+
+Add some tests to detect issues in CESM and CAM testing (add more tests for cam6.0 forcing, add new IHistClm60BgcCropG
+compset). Add a NoAnthro compset to the ctsm_sci testing. Add I1850Clm60Sp test for f09 and f19 to ctsm_sci.
+
+Change NoAnthro compsets to use RTM rather than MOSART. Add science support to some clm6_0 compsets, as was obvious.
+
+
+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] clm6_0
+
+[ ] clm5_1
+
+[ ] clm5_0
+
+[ ] ctsm5_0-nwp
+
+[ ] clm4_5
+
+
+Bugs fixed
+----------
+
+List of CTSM issues fixed (include CTSM Issue # and description) [one per line]:
+ Fixes #2492 -- Fix clm6_0 defaults
+ Fixes #2504 -- build-namelist unit tests for use-cases
+ Fixes #2519 -- MKSURFDATAESMF for CESM checkout
+ Fixes #2520 -- B1850 compsets are failing
+ One tick box in #2403 (new initial conditions)
+
+Notes of particular relevance for users
+---------------------------------------
+
+Changes made to namelist defaults (e.g., changed parameter values):
+ Fixes: snow_thermal_cond_method, irrigate and snicar_snobc_intmix for clm6_0
+
+Changes to the datasets (e.g., parameter, surface or initial files):
+ New initial conditions for clm5_1/clm6_0 for 1850 from ne30pg3_g17 GSWP3v1 forcing for BgcCrop with ciso
+
+Notes of particular relevance for developers:
+---------------------------------------------
+
+Caveats for developers (e.g., code that is duplicated that requires double maintenance):
+ build-namelist unit tester started to add some finidat tests, but only some of them were added to the list
+
+Changes to tests or testing: Add some tests to detect the CESM test issues
+
+
+Testing summary: regular ctsm_sci
+----------------
+ [PASS means all tests PASS; OK means tests PASS other than expected fails.]
+
+ build-namelist tests (if CLMBuildNamelist.pm has changed):
+
+ derecho - PASS (737 compare different to baseline)
+
+ python testing (if python code has changed; see instructions in python/README.md; document testing done):
+
+ derecho - PASS
+
+ 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):
+
+ ctsm_sci
+ derecho ---- OK
+
+If the tag used for baseline comparisons was NOT the previous tag, note that here:
+
+
+Answer changes
+--------------
+
+Changes answers relative to baseline: Yes!
+
+ Summarize any changes to answers, i.e.,
+ - what code configurations: clm6_0 (some clm4_5 see below)
+ - what platforms/compilers: All
+ - nature of change (roundoff; larger than roundoff/same climate; new climate):
+ new climate so agrees with clm5_1 namelists, and fixes irrigate for clm4_5
+
+Other details
+-------------
+
+Pull Requests that document the changes (include PR ids):
+(https://github.com/ESCOMP/ctsm/pull)
+
+ #2501 -- Fix clm6_0 defaults
+
+===============================================================
+===============================================================
Tag name: ctsm5.2.004
Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310)
Date: Thu 09 May 2024 03:10:52 PM MDT
diff --git a/doc/ChangeSum b/doc/ChangeSum
index 17ad670f17..0edccb3a18 100644
--- a/doc/ChangeSum
+++ b/doc/ChangeSum
@@ -1,5 +1,6 @@
Tag Who Date Summary
============================================================================================================================
+ ctsm5.2.005 erik 05/13/2024 Fix clm6_0 defaults and CESM testing issues, add tests to detect these problems
ctsm5.2.004 multiple 05/09/2024 CTSM5.2 1979 fsurdat and 1979-2026 landuse ne0np4 files + two fixes
ctsm5.2.003 samrabin 05/02/2024 Merge b4b-dev
ctsm5.2.002 glemieux 04/26/2024 FATES default allometry parameter file update
diff --git a/python/ctsm/.pylintrc b/python/ctsm/.pylintrc
index db78949288..230f8acba8 100644
--- a/python/ctsm/.pylintrc
+++ b/python/ctsm/.pylintrc
@@ -436,6 +436,8 @@ good-names=i,
ds,
m,
n,
+ ni,
+ nj,
l1,
l2,
ax,
diff --git a/python/ctsm/toolchain/gen_mksurfdata_namelist.py b/python/ctsm/toolchain/gen_mksurfdata_namelist.py
index 8a953c39df..361616419f 100755
--- a/python/ctsm/toolchain/gen_mksurfdata_namelist.py
+++ b/python/ctsm/toolchain/gen_mksurfdata_namelist.py
@@ -12,7 +12,7 @@
from datetime import datetime
import netCDF4
-from ctsm.path_utils import path_to_ctsm_root
+from ctsm.path_utils import path_to_ctsm_root, path_to_cime
from ctsm.ctsm_logging import setup_logging_pre_config, add_logging_args, process_logging_args
logger = logging.getLogger(__name__)
@@ -326,7 +326,7 @@ def main():
)
# determine output mesh
- determine_output_mesh(res, force_model_mesh_file, input_path, rawdata_files, tool_path)
+ determine_output_mesh(res, force_model_mesh_file, input_path, rawdata_files)
# Determine num_pft
if nocrop_flag:
@@ -752,11 +752,11 @@ def handle_transient_run(
return landuse_fname, must_run_download_input_data
-def determine_output_mesh(res, force_model_mesh_file, input_path, rawdata_files, tool_path):
+def determine_output_mesh(res, force_model_mesh_file, input_path, rawdata_files):
"""
determine output mesh
"""
- xml_path = os.path.join(tool_path, "../../ccs_config/component_grids_nuopc.xml")
+ xml_path = os.path.join(path_to_cime(), "../ccs_config/component_grids_nuopc.xml")
tree2 = ET.parse(xml_path)
root = tree2.getroot()
model_mesh = ""
diff --git a/tools/mksurfdata_esmf/gen_mksurfdata_build b/tools/mksurfdata_esmf/gen_mksurfdata_build
index 974c1929a5..864b5915b9 100755
--- a/tools/mksurfdata_esmf/gen_mksurfdata_build
+++ b/tools/mksurfdata_esmf/gen_mksurfdata_build
@@ -127,7 +127,16 @@ if [ "$existing_bld" = "No" ]; then
if [ "$verbose" != "YES" ]; then
options="$options --silent"
fi
- $cwd/../../cime/CIME/scripts/configure --macros-format CMake --machine $MACH $options
+ # Try finding configure file assuming a CTSM standalone checkout and then try for a CESM checkout
+ configure="$cwd/../../cime/CIME/scripts/configure"
+ if [ ! -f "$configure" ]; then
+ configure="$cwd/../../../../cime/CIME/scripts/configure"
+ if [ ! -f "$configure" ]; then
+ echo "Error $configure file does NOT exist in expected location, either for a standalone checkout or CESM/CAM checkout"
+ exit 1
+ fi
+ fi
+ $configure --macros-format CMake --machine $MACH $options
if [ $? != 0 ]; then
echo "Error doing configure for machine name: $MACH"