diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
index fca4a8315b..c02e20b678 100644
--- a/.git-blame-ignore-revs
+++ b/.git-blame-ignore-revs
@@ -27,6 +27,7 @@ d866510188d26d51bcd6d37239283db690af7e82
e096358c832ab292ddfd22dd5878826c7c788968
475831f0fb0e31e97f630eac4e078c886558b61c
fd5f177131d63d39e79a13918390bdfb642d781e
+a51816e0de380300b69db9fc3e2c7fa83b267b64
# Ran SystemTests and python/ctsm through black python formatter
5364ad66eaceb55dde2d3d598fe4ce37ac83a93c
8056ae649c1b37f5e10aaaac79005d6e3a8b2380
@@ -52,3 +53,4 @@ aa04d1f7d86cc2503b98b7e2b2d84dbfff6c316b
045d90f1d80f713eb3ae0ac58f6c2352937f1eb0
753fda3ff0147837231a73c9c728dd9ce47b5997
f112ba0bbf96a61d5a4d354dc0dcbd8b0c68145c
+bd535c710db78420b8e8b9d71d88d8339e899c59
diff --git a/.gitmodules b/.gitmodules
index 87676223a0..9aeb7d4de0 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -28,7 +28,7 @@
[submodule "fates"]
path = src/fates
url = https://github.com/NGEET/fates
-fxtag = sci.1.79.3_api.37.0.0
+fxtag = sci.1.80.4_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
@@ -36,7 +36,7 @@ fxDONOTUSEurl = https://github.com/NCAR/fates-release
[submodule "cism"]
path = components/cism
url = https://github.com/ESCOMP/CISM-wrapper
-fxtag = cismwrap_2_2_002
+fxtag = cismwrap_2_2_005
fxrequired = ToplevelRequired
# Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed
fxDONOTUSEurl = https://github.com/ESCOMP/CISM-wrapper
@@ -44,7 +44,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CISM-wrapper
[submodule "rtm"]
path = components/rtm
url = https://github.com/ESCOMP/RTM
-fxtag = rtm1_0_80
+fxtag = rtm1_0_86
fxrequired = ToplevelRequired
# Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed
fxDONOTUSEurl = https://github.com/ESCOMP/RTM
@@ -52,7 +52,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/RTM
[submodule "mosart"]
path = components/mosart
url = https://github.com/ESCOMP/MOSART
-fxtag = mosart1.1.02
+fxtag = mosart1.1.07
fxrequired = ToplevelRequired
# Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed
fxDONOTUSEurl = https://github.com/ESCOMP/MOSART
@@ -60,7 +60,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/MOSART
[submodule "mizuRoute"]
path = components/mizuRoute
url = https://github.com/ESCOMP/mizuRoute
-fxtag = cesm-coupling.n02_v2.1.3
+fxtag = cesm-coupling.n03_v2.2.0
fxrequired = ToplevelRequired
# Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed
fxDONOTUSEurl = https://github.com/ESCOMP/mizuRoute
@@ -68,7 +68,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/mizuRoute
[submodule "ccs_config"]
path = ccs_config
url = https://github.com/ESMCI/ccs_config_cesm.git
-fxtag = ccs_config_cesm1.0.10
+fxtag = ccs_config_cesm1.0.16
fxrequired = ToplevelRequired
# Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed
fxDONOTUSEurl = https://github.com/ESMCI/ccs_config_cesm.git
@@ -76,7 +76,7 @@ fxDONOTUSEurl = https://github.com/ESMCI/ccs_config_cesm.git
[submodule "cime"]
path = cime
url = https://github.com/ESMCI/cime
-fxtag = cime6.1.37
+fxtag = cime6.1.59
fxrequired = ToplevelRequired
# Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed
fxDONOTUSEurl = https://github.com/ESMCI/cime
@@ -84,7 +84,7 @@ fxDONOTUSEurl = https://github.com/ESMCI/cime
[submodule "cmeps"]
path = components/cmeps
url = https://github.com/ESCOMP/CMEPS.git
-fxtag = cmeps1.0.16
+fxtag = cmeps1.0.33
fxrequired = ToplevelRequired
# Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed
fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git
@@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git
[submodule "cdeps"]
path = components/cdeps
url = https://github.com/ESCOMP/CDEPS.git
-fxtag = cdeps1.0.53
+fxtag = cdeps1.0.61
fxrequired = ToplevelRequired
# Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed
fxDONOTUSEurl = https://github.com/ESCOMP/CDEPS.git
@@ -100,7 +100,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CDEPS.git
[submodule "share"]
path = share
url = https://github.com/ESCOMP/CESM_share
-fxtag = share1.1.2
+fxtag = share1.1.7
fxrequired = ToplevelRequired
# Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed
fxDONOTUSEurl = https://github.com/ESCOMP/CESM_share
diff --git a/README b/README
index c5c06daae7..af8f2cbaaa 100644
--- a/README
+++ b/README
@@ -126,9 +126,9 @@ cime_config/config_tests.xml ----- Define CTSM specific tests
cime_config/config_pes.xml ------- Define Processor layouts for various CTSM grids and compsets
cime_config/testdefs ------------- Directory for specification of CTSM testing
cime_config/testdefs/ExpectedTestFails.xml -- List of tests that are expected to fail
-cime_config/usermods_dirs -------- Directories of sets of user-modification subdirs
+cime_config/usermods_dirs/clm ---- Directories of sets of user-modification subdirs
(These are directories that add specific user modifications to
- simulations created using "cime/scripts/create_newcase --user-mods-dir".)
+ simulations created using "cime/scripts/create_newcase --user-mods-dir clm/*)
tools/mksurfdata_esmf --------- Directory to build program to create surface dataset
at any resolution.
diff --git a/WhatsNewInCTSM5.3.md b/WhatsNewInCTSM5.3.md
index b1f753081b..1fabfd1192 100644
--- a/WhatsNewInCTSM5.3.md
+++ b/WhatsNewInCTSM5.3.md
@@ -1,53 +1,48 @@
-Purpose and description of changes since ctsm5.2.005
-----------------------------------------------------
+# What's new in CTSM 5.3 (tag `ctsm5.3.0`)
-Bring in updates needed for the CESM3.0 science capability/functionality "chill". Most importantly bringing
-in: CN Matrix to speed up spinup for the BGC model, updated surface datasets, updated Leung 2023 dust emissions,
-explicit Air Conditioning for the Urban model, updates to crop calendars. For clm6_0 physics these options are now
-default turned on in addition to Sturm snow, and excess ice.
+## Purpose and description of changes since CTSM 5.2 (tag `ctsm5.2.005`)
+- Adds CN Matrix method to speed up spinup for the BGC model.
+- Updates surface datasets.
+- Brings in new Leung 2023 dust emissions.
+- Adds explicit air conditioning for the urban model.
+- Updates crop calendars.
+- Updates fire model with various improvements, including default parameterization against climate reanalysis from CRU-JRA instead of GSWP.
+- FATES compsets can now be run with transient land use.
-Changes to CTSM Infrastructure:
-===============================
+These changes were needed ahead of the CESM3 capability/functionality "chill". For `clm6_0` physics these options are now turned on by default, in addition to Sturm snow and excess ice.
- - manage_externals removed and replaced by git-fleximod
- - Ability to handle CAM7 in LND_TUNING_MODE
+## Changes to CTSM infrastructure
+ - `manage_externals` removed and replaced by `git-fleximod`
+ - Ability to handle CAM7 in `LND_TUNING_MODE`
-Changes to CTSM Answers:
-========================
+## Changes to CTSM answers
- Changes to defaults for clm6_0 physics:
+ Changes to defaults for `clm6_0` physics:
- Urban explicit A/C turned on
- - Snow thermal conductivity is now Sturm_1997
- - New IC file for f09 1850
+ - Snow thermal conductivity method is now `Sturm_1997`
+ - New initial conditions file for f09 ("1-degree") 1850, with more in progress
- New crop calendars
- - Dust emissions is now Leung_2023
+ - Dust emissions method is now `Leung_2023`
- Excess ice is turned on
- - Updates to MEGAN for BVOC's
+ - Updates to MEGAN for BVOCs
- Updates to BGC fire method
Changes for all physics versions:
-
- Parameter files updated
- FATES parameter file updated
- Glacier region 1 is now undefined
- - Update in FATES transient Land use
+ - Update in FATES transient land use
- Pass active glacier (CISM) runoff directly to river model (MOSART)
- - Add the option for using matrix for Carbon/Nitrogen BGC spinup
+ - Add the option for using Matrix CN method for Carbon/Nitrogen BGC spinup
-New surface datasets:
-=====================
+## New surface datasets
-- With new surface datasets the following GLC fields have region "1" set to UNSET:
- glacier_region_behavior, glacier_region_melt_behavior, glacier_region_ice_runoff_behavior
+- With new surface datasets the following GLC fields have region "1" set to UNSET: glacier_region_behavior, glacier_region_melt_behavior, glacier_region_ice_runoff_behavior
- Updates to allow creating transient landuse timeseries files going back to 1700.
-- Fix an important bug on soil fields that was there since ctsm5.2.0. This results in mksurfdata_esmf now giving identical answers with a change in number of processors, as it should.
-- Add in creation of ne0np4.POLARCAP.ne30x4 surface datasets.
-- Add version to the surface datasets.
-- Remove the --hires_pft option from mksurfdata_esmf as we don't have the datasets for it.
-- Remove VIC fields from surface datasets.
-
-New input datasets to mksurfdata_esmf:
-======================================
-
-- Updates in PFT/LAI/soil-color raw datasets (now from the TRENDY2024 timeseries that ends in 2023), as well as two fire datasets (AG fire, peatland), and the glacier behavior dataset.
+- Fix an important bug on soil fields that was there since `ctsm5.2.0`. This has the side effect of `mksurfdata_esmf` now giving identical answers with a change in number of processors, as it should.
+- Surface datasets now provided for the `ne0np4.POLARCAP.ne30x4` grid.
+- Surface datasets now have their version number embedded to prevent mismatch of surface dataset and CTSM version.
+- Remove the `--hires_pft` option from `mksurfdata_esmf` as we don't have the datasets for it.
+- Remove `VIC` fields from surface datasets.
+- Updates to input datasets in PFT/LAI/soil-color raw datasets (now from the TRENDY2024 timeseries that ends in 2023), as well as two fire datasets (crop fire peak month, peatland fraction), and the glacier behavior dataset.
diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm
index 07e78952f9..ab0aab0cc5 100755
--- a/bld/CLMBuildNamelist.pm
+++ b/bld/CLMBuildNamelist.pm
@@ -3395,7 +3395,7 @@ sub setup_logic_mineral_nitrogen_dynamics {
#
my ($opts, $nl_flags, $definition, $defaults, $nl) = @_;
- my @vars = ( "freelivfix_slope_wet", "freelivfix_intercept" );
+ my @vars = ( "freelivfix_slope_wet", "freelivfix_intercept", "nfix_method" );
if ( &value_is_true($nl_flags->{'use_cn'}) && &value_is_true($nl->get_value('use_fun')) ) {
foreach my $var ( @vars ) {
add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, $var,
@@ -3408,6 +3408,7 @@ sub setup_logic_mineral_nitrogen_dynamics {
}
}
}
+
}
@@ -5208,6 +5209,7 @@ sub write_output_files {
}
push @groups, "clm_humanindex_inparm";
push @groups, "cnmresp_inparm";
+ push @groups, "cnfun_inparm";
push @groups, "photosyns_inparm";
push @groups, "cnfire_inparm";
push @groups, "cn_general";
diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml
index 18b9b0b9e9..21b92ba472 100644
--- a/bld/namelist_files/namelist_defaults_ctsm.xml
+++ b/bld/namelist_files/namelist_defaults_ctsm.xml
@@ -524,10 +524,9 @@ attributes from the config_cache.xml file (with keys converted to upper-case).
-lnd/clm2/paramdata/ctsm60_params.c241017.nc
-lnd/clm2/paramdata/ctsm51_params.c241017.nc
-lnd/clm2/paramdata/clm50_params.c241017.nc
-lnd/clm2/paramdata/clm45_params.c241017.nc
+lnd/clm2/paramdata/ctsm60_params.c241119.nc
+lnd/clm2/paramdata/clm50_params.c241119.nc
+lnd/clm2/paramdata/clm45_params.c241119.nc
@@ -1658,6 +1657,8 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa480_hist_2000_78pfts_c240908.nc
lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_mpasa120_hist_2000_78pfts_c240908.nc
+
+lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4_hist_2000_78pfts_c240925.nc
lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_2000_78pfts_c240908.nc
@@ -1712,6 +1713,8 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg2_hist_1850_78pfts_c240908.n
lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c240908.nc
lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_1850_78pfts_c240908.nc
+
+lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4_hist_1850_78pfts_c240925.nc
lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_C96_hist_1850_78pfts_c240908.nc
@@ -1722,8 +1725,6 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/synthetic/surfdata_1x1_cidadinhoBR_synth_hist_2
lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1x1_brazil_hist_1850_78pfts_c240912.nc
-
-lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_1850_78pfts_c240908.nc
lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne16np4.pg3_hist_1850_78pfts_c240908.nc
@@ -1794,6 +1795,8 @@ lnd/clm2/surfdata_esmf/NEON/ctsm5.3.0/surfdata_1x1_NEON_TOOL_hist_2000_78pfts_c2
lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_mpasa120_SSP2-4.5_1850-2100_78pfts_c240908.nc
+lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4_SSP2-4.5_1850-2100_78pfts_c240926.nclnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nclnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_mpasa120_SSP2-4.5_1850-2100_78pfts_c240908.nc
+lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4_SSP2-4.5_1850-2100_78pfts_c240926.nclnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc0.0117d00
0.0006d00
+Houlton
+
0.83d-06
diff --git a/bld/namelist_files/namelist_definition_ctsm.xml b/bld/namelist_files/namelist_definition_ctsm.xml
index 2d5ab0e4c7..ac61b86852 100644
--- a/bld/namelist_files/namelist_definition_ctsm.xml
+++ b/bld/namelist_files/namelist_definition_ctsm.xml
@@ -388,6 +388,11 @@ Slope of free living Nitrogen fixation with annual ET
Intercept of free living Nitrogen fixation with zero annual ET
+
+Choice of nfix parameterization
+
+
If TRUE use the undercanopy stability term used with CLM4.5 (Sakaguchi&Zeng, 2008)
diff --git a/bld/unit_testers/build-namelist_test.pl b/bld/unit_testers/build-namelist_test.pl
index 9959632470..7480af82fb 100755
--- a/bld/unit_testers/build-namelist_test.pl
+++ b/bld/unit_testers/build-namelist_test.pl
@@ -368,7 +368,7 @@ sub cat_and_create_namelistinfile {
my $phys = "clm6_0";
$mode = "-phys $phys";
&make_config_cache($phys);
-my $neondir = "../../cime_config/usermods_dirs/NEON";
+my $neondir = "../../cime_config/usermods_dirs/clm/NEON";
foreach my $site ( "ABBY", "BLAN", "CPER", "DEJU", "GRSM", "HEAL", "KONA", "LENO", "NIWO",
"ONAQ", "PUUM", "SERC", "SRER", "TALL", "TREE", "WOOD", "BARR", "BONA",
"DCFS", "DELA", "GUAN", "JERC", "KONZ", "MLBS", "NOGP", "ORNL", "RMNP",
@@ -421,7 +421,7 @@ sub cat_and_create_namelistinfile {
my $phys = "clm6_0";
$mode = "-phys $phys";
&make_config_cache($phys);
-my $plumdir = "../../cime_config/usermods_dirs/PLUMBER2";
+my $plumdir = "../../cime_config/usermods_dirs/clm/PLUMBER2";
foreach my $site (
"AR-SLu", "AU-Emr", "AU-TTE", "CA-NS1", "CA-SF3", "CN-HaM", "DE-Obe", "ES-ES1", "FR-Gri", "IE-Dri", "IT-LMa", "IT-SRo", "RU-Fyo", "US-Aud", "US-Ho1", "US-Ne2", "US-Syv", "ZM-Mon",
"AT-Neu", "AU-Gin", "AU-Tum", "CA-NS2", "CH-Cha", "CN-Qia", "DE-Seh", "ES-ES2", "FR-Hes", "IT-Amp", "IT-Mal", "JP-SMF", "RU-Zot", "US-Bar", "US-KS2", "US-Ne3", "US-Ton",
@@ -1490,7 +1490,7 @@ sub cat_and_create_namelistinfile {
print "========================================================================\n";
# Check for ALL resolutions with CLM50SP
-my @resolutions = ( "360x720cru", "10x15", "4x5", "0.9x1.25", "1.9x2.5", "ne3np4.pg3", "ne16np4.pg3", "ne30np4", "ne30np4.pg2", "ne30np4.pg3", "ne120np4.pg3", "ne0np4CONUS.ne30x8", "ne0np4.ARCTIC.ne30x4", "ne0np4.ARCTICGRIS.ne30x8", "C96", "mpasa480", "mpasa120" );
+my @resolutions = ( "360x720cru", "10x15", "4x5", "0.9x1.25", "1.9x2.5", "ne3np4", "ne3np4.pg3", "ne16np4.pg3", "ne30np4", "ne30np4.pg2", "ne30np4.pg3", "ne120np4.pg3", "ne0np4CONUS.ne30x8", "ne0np4.ARCTIC.ne30x4", "ne0np4.ARCTICGRIS.ne30x8", "C96", "mpasa480", "mpasa120" );
my @only2000_resolutions = ( "1x1_numaIA", "1x1_brazil", "1x1_mexicocityMEX", "1x1_vancouverCAN", "1x1_urbanc_alpha", "5x5_amazon", "0.125nldas2", "mpasa60", "mpasa15", "mpasa3p75" );
my @regional;
foreach my $res ( @resolutions ) {
@@ -1527,7 +1527,7 @@ sub cat_and_create_namelistinfile {
print " Test important resolutions for BGC and historical\n";
print "==================================================\n";
-my @resolutions = ( "4x5", "10x15", "360x720cru", "ne30np4.pg3", "ne3np4.pg3", "1.9x2.5", "0.9x1.25", "C96", "mpasa120" );
+my @resolutions = ( "4x5", "10x15", "360x720cru", "ne30np4.pg3", "ne3np4", "ne3np4.pg3", "1.9x2.5", "0.9x1.25", "C96", "mpasa120" );
my @regional;
my $nlbgcmode = "bgc";
my $mode = "$phys-$nlbgcmode";
@@ -1754,7 +1754,7 @@ sub cat_and_create_namelistinfile {
&cleanup();
}
-my @crop_res = ( "1x1_numaIA", "4x5", "10x15", "0.9x1.25", "1.9x2.5", "ne3np4.pg3", "ne30np4", "ne30np4.pg3", "C96", "mpasa120" );
+my @crop_res = ( "1x1_numaIA", "4x5", "10x15", "0.9x1.25", "1.9x2.5", "ne3np4", "ne3np4.pg3", "ne30np4", "ne30np4.pg3", "C96", "mpasa120" );
foreach my $res ( @crop_res ) {
$options = "-bgc bgc -crop -res $res -envxml_dir .";
&make_env_run();
@@ -1843,7 +1843,7 @@ sub cat_and_create_namelistinfile {
&cleanup();
}
# Transient ssp_rcp scenarios that work
-my @tran_res = ( "4x5", "0.9x1.25", "1.9x2.5", "10x15", "360x720cru", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" );
+my @tran_res = ( "4x5", "0.9x1.25", "1.9x2.5", "10x15", "360x720cru", "ne3np4", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" );
foreach my $usecase ( "1850-2100_SSP2-4.5_transient" ) {
my $startymd = 20150101;
foreach my $res ( @tran_res ) {
@@ -1880,7 +1880,7 @@ sub cat_and_create_namelistinfile {
"-bgc bgc -clm_demand flanduse_timeseries -sim_year 1850-2000 -namelist '&a start_ymd=18500101/'",
"-bgc bgc -envxml_dir . -namelist '&a use_c13=.true.,use_c14=.true.,use_c14_bombspike=.true./'" );
foreach my $clmopts ( @clmoptions ) {
- my @clmres = ( "10x15", "4x5", "360x720cru", "0.9x1.25", "1.9x2.5", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" );
+ my @clmres = ( "10x15", "4x5", "360x720cru", "0.9x1.25", "1.9x2.5", "ne3np4", "ne3np4.pg3", "ne16np4.pg3", "ne30np4.pg3", "C96", "mpasa120" );
foreach my $res ( @clmres ) {
$options = "-res $res -envxml_dir . ";
&make_env_run( );
diff --git a/ccs_config b/ccs_config
index 6e77e7ee17..a712a92045 160000
--- a/ccs_config
+++ b/ccs_config
@@ -1 +1 @@
-Subproject commit 6e77e7ee1748a4d3b2497d7ad3943498a7cec2aa
+Subproject commit a712a920453dc0cb2831dce576e78c389b567f7e
diff --git a/cime b/cime
index a8a04e2d9d..addf9e67ce 160000
--- a/cime
+++ b/cime
@@ -1 +1 @@
-Subproject commit a8a04e2d9deac572e6f2222b4f893a575308db99
+Subproject commit addf9e67ceeb0e056de33ee793d67491176dd3a5
diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml
index e7a644f7e2..55ca78f1f4 100644
--- a/cime_config/config_component.xml
+++ b/cime_config/config_component.xml
@@ -355,15 +355,15 @@
- $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/fates_sp
- $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_deck
- $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_nociso_deck
- $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_waccm_deck
- $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_waccm_nociso_deck
- $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_deck
- $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_nociso_deck
- $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_waccm_deck
- $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/cmip6_waccm_nociso_deck
+ $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/fates_sp
+ $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_deck
+ $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_nociso_deck
+ $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_waccm_deck
+ $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_waccm_nociso_deck
+ $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_deck
+ $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_nociso_deck
+ $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_waccm_deck
+ $COMP_ROOT_DIR_LND/cime_config/usermods_dirs/clm/cmip6_waccm_nociso_deckrun_component_ctsmenv_case.xml
diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml
index f718582b60..9735c02f4c 100644
--- a/cime_config/testdefs/ExpectedTestFails.xml
+++ b/cime_config/testdefs/ExpectedTestFails.xml
@@ -84,21 +84,21 @@
-
+ FAIL#2619This failure relates to the following REP failure.
-
+ FAIL#2619This failure relates to the preceding ERP failure.
-
+ FAIL#2619
@@ -114,7 +114,7 @@
-
+ FAIL#1733
@@ -126,7 +126,7 @@
#2310
-
+
FAIL
@@ -138,6 +138,41 @@
+
+
+ FAIL
+ #2913
+
+
+
+
+
+ FAIL
+ #2913
+
+
+
+
+
+ FAIL
+ #2913
+
+
+
+
+
+ FAIL
+ #2913
+
+
+
+
+
+ FAIL
+ #2913
+
+
+
FAIL
@@ -155,7 +190,7 @@
#2310
-
+
FAIL
@@ -186,23 +221,12 @@
-
- FAIL
- #2454
- FAIL#2325
-
-
- FAIL
- #2454
-
-
-
FAIL
@@ -319,6 +343,13 @@
+
+
+ FAIL
+ #2919
+
+
+
diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml
index 08a0951a3d..7a665444a2 100644
--- a/cime_config/testdefs/testlist_clm.xml
+++ b/cime_config/testdefs/testlist_clm.xml
@@ -12,6 +12,7 @@
hillslope: Experimental test list used for the hillslope option of the model
rxcropmaturity: Short tests to be run during development related to prescribed crop calendars
matrixcn: Tests exercising the matrix-CN capability
+ aux_clm_mpi_serial: aux_clm tests using mpi-serial. Useful for redoing tests that failed due to https://github.com/ESCOMP/CTSM/issues/2916, after having replaced libraries/mpi-serial with a fresh copy.
-->
@@ -905,6 +906,7 @@
+
@@ -1149,6 +1151,7 @@
+
@@ -1158,6 +1161,7 @@
+
@@ -1317,6 +1321,15 @@
+
+
+
+
+
+
+
+
+
@@ -1524,7 +1537,7 @@
-
+
@@ -1692,6 +1705,7 @@
+
@@ -1709,6 +1723,7 @@
+
@@ -1718,6 +1733,7 @@
+
@@ -1727,6 +1743,7 @@
+
@@ -1737,6 +1754,7 @@
+
@@ -1746,6 +1764,7 @@
+
@@ -1755,6 +1774,7 @@
+
@@ -1765,6 +1785,7 @@
+
@@ -1785,6 +1806,7 @@
+
@@ -1859,6 +1881,7 @@
+
@@ -1869,6 +1892,7 @@
+
@@ -1881,6 +1905,7 @@
+
@@ -2290,18 +2315,22 @@
+
-
+
+
+
+
@@ -2399,6 +2428,7 @@
+
@@ -2410,7 +2440,9 @@
+
+
@@ -2421,8 +2453,10 @@
+
+
@@ -2434,7 +2468,9 @@
+
+
@@ -2445,7 +2481,9 @@
+
+
@@ -2454,7 +2492,7 @@
-
+
@@ -2469,8 +2507,10 @@
+
+
@@ -2482,8 +2522,10 @@
+
+
@@ -2514,6 +2556,7 @@
+
@@ -2529,7 +2572,7 @@
-
+
@@ -2556,9 +2599,10 @@
-
+
+
@@ -2705,6 +2749,7 @@
+
@@ -2714,6 +2759,7 @@
+
@@ -2765,6 +2811,7 @@
+
@@ -2869,7 +2916,9 @@
+
+
@@ -2878,6 +2927,7 @@
+
@@ -2896,6 +2946,7 @@
+
@@ -3208,6 +3259,7 @@
+
@@ -3450,6 +3502,7 @@
+
@@ -3460,6 +3513,7 @@
+
@@ -3526,6 +3580,7 @@
+
@@ -3670,6 +3725,7 @@
+
diff --git a/cime_config/testdefs/testmods_dirs/clm/ExcessIceStartup_output_sp_exice/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/ExcessIceStartup_output_sp_exice/include_user_mods
index 6d8de3732a..142522f5b3 100644
--- a/cime_config/testdefs/testmods_dirs/clm/ExcessIceStartup_output_sp_exice/include_user_mods
+++ b/cime_config/testdefs/testmods_dirs/clm/ExcessIceStartup_output_sp_exice/include_user_mods
@@ -1,2 +1,2 @@
../monthly
-../../../../usermods_dirs/output_sp_exice
+../../../../usermods_dirs/clm/output_sp_exice
diff --git a/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/shell_commands b/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/shell_commands
deleted file mode 100644
index e629e7ca34..0000000000
--- a/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/shell_commands
+++ /dev/null
@@ -1,8 +0,0 @@
-SRCDIR=`./xmlquery SRCROOT --value`
-CASEDIR=`./xmlquery CASEROOT --value`
-FATESDIR=$SRCDIR/src/fates
-FATESPARAMFILE=$CASEDIR/fates_params_hydrograsstempfix.nc
-
-ncgen -o $FATESPARAMFILE $FATESDIR/parameter_files/fates_params_default.cdl
-
-$FATESDIR/tools/modify_fates_paramfile.py --O --fin $FATESPARAMFILE --fout $FATESPARAMFILE --var fates_allom_smode --val 1 --allpfts
diff --git a/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm
index 318a34dfec..f0bdb388eb 100644
--- a/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm
+++ b/cime_config/testdefs/testmods_dirs/clm/FatesColdHydro/user_nl_clm
@@ -2,7 +2,6 @@ hist_mfilt = 365
hist_nhtfrq = -24
hist_empty_htapes = .true.
use_fates_planthydro= .true.
-fates_paramfile = '$CASEROOT/fates_params_hydrograsstempfix.nc'
hist_fincl1 = 'FATES_ERRH2O_SZPF', 'FATES_TRAN_SZPF',
'FATES_SAPFLOW_SZPF', 'FATES_ITERH1_SZPF','FATES_ABSROOT_H2O_SZPF',
'FATES_TRANSROOT_H2O_SZPF','FATES_STEM_H2O_SZPF','FATES_LEAF_H2O_SZPF',
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 edeb0fce21..8a1e5bb216 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.c241017.nc'
+paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm60_ciso_cwd_hr_params.c241119.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/cime_config/testdefs/testmods_dirs/clm/clm50cam7LndTuningMode/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/clm50cam7LndTuningMode/user_nl_datm
new file mode 100644
index 0000000000..c35d3fd9d4
--- /dev/null
+++ b/cime_config/testdefs/testmods_dirs/clm/clm50cam7LndTuningMode/user_nl_datm
@@ -0,0 +1,2 @@
+iradsw = -1
+nextsw_cday_calc = "cam7"
diff --git a/cime_config/testdefs/testmods_dirs/clm/clm60_monthly_matrixcn_soilCN30/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/clm60_monthly_matrixcn_soilCN30/user_nl_clm
index b1d856797d..d982aea0f0 100644
--- a/cime_config/testdefs/testmods_dirs/clm/clm60_monthly_matrixcn_soilCN30/user_nl_clm
+++ b/cime_config/testdefs/testmods_dirs/clm/clm60_monthly_matrixcn_soilCN30/user_nl_clm
@@ -1,2 +1,2 @@
use_soil_matrixcn = .true.
-paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm60_params_cn30.c241017.nc'
+paramfile = '$DIN_LOC_ROOT/lnd/clm2/paramdata/ctsm60_params_cn30.c241119.nc'
diff --git a/cime_config/testdefs/testmods_dirs/clm/clm60cam7LndTuningMode/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/clm60cam7LndTuningMode/user_nl_datm
new file mode 100644
index 0000000000..c35d3fd9d4
--- /dev/null
+++ b/cime_config/testdefs/testmods_dirs/clm/clm60cam7LndTuningMode/user_nl_datm
@@ -0,0 +1,2 @@
+iradsw = -1
+nextsw_cday_calc = "cam7"
diff --git a/cime_config/testdefs/testmods_dirs/clm/cmip6_deck/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/cmip6_deck/include_user_mods
index 45859d47f6..0f34cfe5cd 100644
--- a/cime_config/testdefs/testmods_dirs/clm/cmip6_deck/include_user_mods
+++ b/cime_config/testdefs/testmods_dirs/clm/cmip6_deck/include_user_mods
@@ -1 +1 @@
-../../../../usermods_dirs/cmip6_deck
+../../../../usermods_dirs/clm/cmip6_deck
diff --git a/cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/include_user_mods
new file mode 100644
index 0000000000..4fbf11b334
--- /dev/null
+++ b/cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/include_user_mods
@@ -0,0 +1 @@
+../flexCN_FUN
diff --git a/cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/user_nl_clm
new file mode 100644
index 0000000000..8084f982e1
--- /dev/null
+++ b/cime_config/testdefs/testmods_dirs/clm/flexCN_FUN_BNF/user_nl_clm
@@ -0,0 +1,2 @@
+ nfix_method = 'Bytnerowicz'
+
diff --git a/cime_config/testdefs/testmods_dirs/clm/lilac/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/lilac/include_user_mods
index 7b5f17cf20..6e978f6389 100644
--- a/cime_config/testdefs/testmods_dirs/clm/lilac/include_user_mods
+++ b/cime_config/testdefs/testmods_dirs/clm/lilac/include_user_mods
@@ -1 +1 @@
-../../../../usermods_dirs/lilac
+../../../../usermods_dirs/clm/lilac
diff --git a/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/README b/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/README
index 1363ea696b..4c18c9d65a 100644
--- a/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/README
+++ b/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/README
@@ -1,6 +1,6 @@
slevis 2022/2/1:
This testmod tests the newton_krylov_spinup usermod found in
-cime_config/usermods_dirs/newton_krylov_spinup
+cime_config/usermods_dirs/clm/newton_krylov_spinup
combined with the mimics testmod.
By default this usermod runs for 20 yrs and writes a history file at that
diff --git a/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/include_user_mods
index 192aa023a8..148f615059 100644
--- a/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/include_user_mods
+++ b/cime_config/testdefs/testmods_dirs/clm/newton_krylov_spinup/include_user_mods
@@ -1,2 +1,2 @@
../mimics
-../../../../usermods_dirs/newton_krylov_spinup
+../../../../usermods_dirs/clm/newton_krylov_spinup
diff --git a/cime_config/testdefs/testmods_dirs/clm/output_bgc_highfreq/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/output_bgc_highfreq/include_user_mods
index de8b9039c8..0336470fa8 100644
--- a/cime_config/testdefs/testmods_dirs/clm/output_bgc_highfreq/include_user_mods
+++ b/cime_config/testdefs/testmods_dirs/clm/output_bgc_highfreq/include_user_mods
@@ -1,2 +1,2 @@
-../../../../usermods_dirs/output_bgc_highfreq
+../../../../usermods_dirs/clm/output_bgc_highfreq
../basic
diff --git a/cime_config/testdefs/testmods_dirs/clm/output_crop_highfreq/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/output_crop_highfreq/include_user_mods
index 770abf5cf9..bd3d4850fa 100644
--- a/cime_config/testdefs/testmods_dirs/clm/output_crop_highfreq/include_user_mods
+++ b/cime_config/testdefs/testmods_dirs/clm/output_crop_highfreq/include_user_mods
@@ -1,2 +1,2 @@
-../../../../usermods_dirs/output_crop_highfreq
+../../../../usermods_dirs/clm/output_crop_highfreq
../basic
diff --git a/cime_config/testdefs/testmods_dirs/clm/output_sp_highfreq/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/output_sp_highfreq/include_user_mods
index 2df730d2d0..81287ac4c4 100644
--- a/cime_config/testdefs/testmods_dirs/clm/output_sp_highfreq/include_user_mods
+++ b/cime_config/testdefs/testmods_dirs/clm/output_sp_highfreq/include_user_mods
@@ -1,3 +1,3 @@
../CLM1PTStartDate
-../../../../usermods_dirs/output_sp_highfreq
+../../../../usermods_dirs/clm/output_sp_highfreq
../basic
diff --git a/cime_config/usermods_dirs/NEON/ABBY/include_user_mods b/cime_config/usermods_dirs/clm/NEON/ABBY/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/ABBY/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/ABBY/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/ABBY/shell_commands b/cime_config/usermods_dirs/clm/NEON/ABBY/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/ABBY/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/ABBY/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/BARR/include_user_mods b/cime_config/usermods_dirs/clm/NEON/BARR/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/BARR/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/BARR/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/BARR/shell_commands b/cime_config/usermods_dirs/clm/NEON/BARR/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/BARR/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/BARR/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/BART/include_user_mods b/cime_config/usermods_dirs/clm/NEON/BART/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/BART/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/BART/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/BART/shell_commands b/cime_config/usermods_dirs/clm/NEON/BART/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/BART/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/BART/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/BLAN/include_user_mods b/cime_config/usermods_dirs/clm/NEON/BLAN/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/BLAN/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/BLAN/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/BLAN/shell_commands b/cime_config/usermods_dirs/clm/NEON/BLAN/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/BLAN/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/BLAN/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/BONA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/BONA/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/BONA/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/BONA/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/BONA/shell_commands b/cime_config/usermods_dirs/clm/NEON/BONA/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/BONA/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/BONA/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/CLBJ/include_user_mods b/cime_config/usermods_dirs/clm/NEON/CLBJ/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/CLBJ/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/CLBJ/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/CLBJ/shell_commands b/cime_config/usermods_dirs/clm/NEON/CLBJ/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/CLBJ/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/CLBJ/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/CPER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/CPER/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/CPER/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/CPER/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/CPER/shell_commands b/cime_config/usermods_dirs/clm/NEON/CPER/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/CPER/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/CPER/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/DCFS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/DCFS/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/DCFS/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/DCFS/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/DCFS/shell_commands b/cime_config/usermods_dirs/clm/NEON/DCFS/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/DCFS/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/DCFS/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/DEJU/include_user_mods b/cime_config/usermods_dirs/clm/NEON/DEJU/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/DEJU/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/DEJU/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/DEJU/shell_commands b/cime_config/usermods_dirs/clm/NEON/DEJU/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/DEJU/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/DEJU/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/DELA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/DELA/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/DELA/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/DELA/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/DELA/shell_commands b/cime_config/usermods_dirs/clm/NEON/DELA/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/DELA/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/DELA/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/DSNY/include_user_mods b/cime_config/usermods_dirs/clm/NEON/DSNY/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/DSNY/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/DSNY/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/DSNY/shell_commands b/cime_config/usermods_dirs/clm/NEON/DSNY/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/DSNY/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/DSNY/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/ABBY/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/ABBY/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/ABBY/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/ABBY/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/ABBY/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/ABBY/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/ABBY/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/ABBY/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/BARR/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/BARR/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/BARR/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/BARR/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/BARR/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/BARR/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/BARR/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/BARR/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/BART/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/BART/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/BART/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/BART/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/BART/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/BART/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/BART/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/BART/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/BLAN/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/BLAN/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/BLAN/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/BLAN/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/BLAN/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/BLAN/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/BLAN/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/BLAN/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/BONA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/BONA/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/BONA/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/BONA/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/BONA/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/BONA/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/BONA/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/BONA/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/CLBJ/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/CLBJ/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/CLBJ/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/CLBJ/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/CLBJ/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/CLBJ/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/CLBJ/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/CLBJ/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/CPER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/CPER/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/CPER/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/CPER/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/CPER/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/CPER/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/CPER/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/CPER/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/DCFS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/DCFS/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/DCFS/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/DCFS/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/DCFS/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/DCFS/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/DCFS/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/DCFS/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/DEJU/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/DEJU/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/DEJU/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/DEJU/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/DEJU/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/DEJU/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/DEJU/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/DEJU/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/DELA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/DELA/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/DELA/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/DELA/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/DELA/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/DELA/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/DELA/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/DELA/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/DSNY/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/DSNY/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/DSNY/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/DSNY/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/DSNY/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/DSNY/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/DSNY/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/DSNY/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/GRSM/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/GRSM/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/GRSM/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/GRSM/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/GRSM/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/GRSM/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/GRSM/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/GRSM/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/GUAN/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/GUAN/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/GUAN/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/GUAN/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/GUAN/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/GUAN/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/GUAN/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/GUAN/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/HARV/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/HARV/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/HARV/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/HARV/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/HARV/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/HARV/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/HARV/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/HARV/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/HEAL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/HEAL/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/HEAL/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/HEAL/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/HEAL/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/HEAL/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/HEAL/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/HEAL/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/JERC/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/JERC/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/JERC/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/JERC/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/JERC/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/JERC/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/JERC/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/JERC/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/JORN/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/JORN/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/JORN/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/JORN/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/JORN/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/JORN/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/JORN/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/JORN/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/KONZ/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/KONZ/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/KONZ/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/KONZ/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/KONZ/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/KONZ/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/KONZ/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/KONZ/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/LAJA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/LAJA/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/LAJA/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/LAJA/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/LAJA/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/LAJA/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/LAJA/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/LAJA/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/LENO/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/LENO/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/LENO/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/LENO/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/LENO/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/LENO/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/LENO/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/LENO/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/MLBS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/MLBS/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/MLBS/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/MLBS/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/MLBS/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/MLBS/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/MLBS/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/MLBS/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/MOAB/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/MOAB/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/MOAB/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/MOAB/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/MOAB/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/MOAB/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/MOAB/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/MOAB/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/NIWO/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/NIWO/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/NIWO/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/NIWO/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/NIWO/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/NIWO/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/NIWO/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/NIWO/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/NOGP/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/NOGP/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/NOGP/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/NOGP/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/NOGP/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/NOGP/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/NOGP/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/NOGP/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/OAES/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/OAES/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/OAES/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/OAES/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/OAES/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/OAES/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/OAES/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/OAES/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/ONAQ/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/ONAQ/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/ONAQ/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/ONAQ/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/ONAQ/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/ONAQ/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/ONAQ/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/ONAQ/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/ORNL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/ORNL/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/ORNL/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/ORNL/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/ORNL/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/ORNL/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/ORNL/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/ORNL/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/OSBS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/OSBS/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/OSBS/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/OSBS/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/OSBS/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/OSBS/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/OSBS/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/OSBS/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/PUUM/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/PUUM/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/PUUM/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/PUUM/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/PUUM/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/PUUM/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/PUUM/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/PUUM/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/README.md b/cime_config/usermods_dirs/clm/NEON/FATES/README.md
similarity index 75%
rename from cime_config/usermods_dirs/NEON/FATES/README.md
rename to cime_config/usermods_dirs/clm/NEON/FATES/README.md
index 49cd2fc767..2d099771aa 100644
--- a/cime_config/usermods_dirs/NEON/FATES/README.md
+++ b/cime_config/usermods_dirs/clm/NEON/FATES/README.md
@@ -2,7 +2,7 @@
Use these user mods as you would any other user_mods, e.g.:
-`./create_newcase --case FATES_ABBY_test --res CLM_USRDAT --compset I1PtClm60Fates --run-unsupported --user-mods-dir /glade/work/$user/CTSM/cime_config/usermods_dirs/NEON/FATES/ABBY`
+`./create_newcase --case FATES_ABBY_test --res CLM_USRDAT --compset I1PtClm60Fates --run-unsupported --user-mods-dir clm/NEON/FATES/ABBY`
## Note on crop sites KONA and STER
diff --git a/cime_config/usermods_dirs/NEON/FATES/RMNP/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/RMNP/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/RMNP/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/RMNP/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/RMNP/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/RMNP/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/RMNP/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/RMNP/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/SCBI/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/SCBI/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/SCBI/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/SCBI/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/SCBI/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/SCBI/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/SCBI/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/SCBI/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/SERC/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/SERC/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/SERC/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/SERC/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/SERC/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/SERC/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/SERC/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/SERC/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/SJER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/SJER/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/SJER/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/SJER/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/SJER/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/SJER/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/SJER/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/SJER/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/SOAP/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/SOAP/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/SOAP/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/SOAP/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/SOAP/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/SOAP/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/SOAP/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/SOAP/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/SRER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/SRER/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/SRER/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/SRER/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/SRER/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/SRER/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/SRER/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/SRER/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/STEI/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/STEI/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/STEI/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/STEI/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/STEI/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/STEI/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/STEI/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/STEI/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/TALL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/TALL/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/TALL/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/TALL/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/TALL/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/TALL/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/TALL/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/TALL/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/TEAK/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/TEAK/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/TEAK/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/TEAK/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/TEAK/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/TEAK/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/TEAK/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/TEAK/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/TOOL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/TOOL/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/TOOL/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/TOOL/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/TOOL/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/TOOL/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/TOOL/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/TOOL/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/TREE/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/TREE/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/TREE/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/TREE/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/TREE/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/TREE/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/TREE/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/TREE/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/UKFS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/UKFS/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/UKFS/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/UKFS/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/UKFS/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/UKFS/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/UKFS/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/UKFS/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/UNDE/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/UNDE/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/UNDE/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/UNDE/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/UNDE/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/UNDE/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/UNDE/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/UNDE/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/WOOD/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/WOOD/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/WOOD/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/WOOD/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/WOOD/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/WOOD/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/WOOD/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/WOOD/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/WREF/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/WREF/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/WREF/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/WREF/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/WREF/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/WREF/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/WREF/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/WREF/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/YELL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/FATES/YELL/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/YELL/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/FATES/YELL/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/FATES/YELL/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/YELL/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/YELL/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/YELL/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/defaults/shell_commands b/cime_config/usermods_dirs/clm/NEON/FATES/defaults/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/defaults/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/FATES/defaults/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/FATES/defaults/user_nl_clm b/cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/defaults/user_nl_clm
rename to cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_clm
diff --git a/cime_config/usermods_dirs/NEON/FATES/defaults/user_nl_cpl b/cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_cpl
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/defaults/user_nl_cpl
rename to cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_cpl
diff --git a/cime_config/usermods_dirs/NEON/FATES/defaults/user_nl_datm_streams b/cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_datm_streams
similarity index 100%
rename from cime_config/usermods_dirs/NEON/FATES/defaults/user_nl_datm_streams
rename to cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_datm_streams
diff --git a/cime_config/usermods_dirs/NEON/GRSM/include_user_mods b/cime_config/usermods_dirs/clm/NEON/GRSM/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/GRSM/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/GRSM/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/GRSM/shell_commands b/cime_config/usermods_dirs/clm/NEON/GRSM/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/GRSM/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/GRSM/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/GUAN/include_user_mods b/cime_config/usermods_dirs/clm/NEON/GUAN/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/GUAN/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/GUAN/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/GUAN/shell_commands b/cime_config/usermods_dirs/clm/NEON/GUAN/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/GUAN/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/GUAN/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/HARV/include_user_mods b/cime_config/usermods_dirs/clm/NEON/HARV/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/HARV/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/HARV/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/HARV/shell_commands b/cime_config/usermods_dirs/clm/NEON/HARV/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/HARV/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/HARV/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/HEAL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/HEAL/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/HEAL/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/HEAL/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/HEAL/shell_commands b/cime_config/usermods_dirs/clm/NEON/HEAL/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/HEAL/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/HEAL/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/JERC/include_user_mods b/cime_config/usermods_dirs/clm/NEON/JERC/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/JERC/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/JERC/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/JERC/shell_commands b/cime_config/usermods_dirs/clm/NEON/JERC/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/JERC/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/JERC/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/JORN/include_user_mods b/cime_config/usermods_dirs/clm/NEON/JORN/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/JORN/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/JORN/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/JORN/shell_commands b/cime_config/usermods_dirs/clm/NEON/JORN/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/JORN/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/JORN/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/KONA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/KONA/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/KONA/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/KONA/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/KONA/shell_commands b/cime_config/usermods_dirs/clm/NEON/KONA/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/KONA/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/KONA/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/KONZ/include_user_mods b/cime_config/usermods_dirs/clm/NEON/KONZ/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/KONZ/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/KONZ/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/KONZ/shell_commands b/cime_config/usermods_dirs/clm/NEON/KONZ/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/KONZ/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/KONZ/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/LAJA/include_user_mods b/cime_config/usermods_dirs/clm/NEON/LAJA/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/LAJA/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/LAJA/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/LAJA/shell_commands b/cime_config/usermods_dirs/clm/NEON/LAJA/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/LAJA/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/LAJA/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/LENO/include_user_mods b/cime_config/usermods_dirs/clm/NEON/LENO/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/LENO/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/LENO/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/LENO/shell_commands b/cime_config/usermods_dirs/clm/NEON/LENO/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/LENO/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/LENO/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/MLBS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/MLBS/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/MLBS/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/MLBS/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/MLBS/shell_commands b/cime_config/usermods_dirs/clm/NEON/MLBS/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/MLBS/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/MLBS/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/MOAB/include_user_mods b/cime_config/usermods_dirs/clm/NEON/MOAB/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/MOAB/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/MOAB/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/MOAB/shell_commands b/cime_config/usermods_dirs/clm/NEON/MOAB/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/MOAB/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/MOAB/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/NIWO/include_user_mods b/cime_config/usermods_dirs/clm/NEON/NIWO/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/NIWO/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/NIWO/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/NIWO/shell_commands b/cime_config/usermods_dirs/clm/NEON/NIWO/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/NIWO/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/NIWO/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/NOGP/include_user_mods b/cime_config/usermods_dirs/clm/NEON/NOGP/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/NOGP/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/NOGP/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/NOGP/shell_commands b/cime_config/usermods_dirs/clm/NEON/NOGP/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/NOGP/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/NOGP/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/OAES/include_user_mods b/cime_config/usermods_dirs/clm/NEON/OAES/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/OAES/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/OAES/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/OAES/shell_commands b/cime_config/usermods_dirs/clm/NEON/OAES/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/OAES/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/OAES/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/ONAQ/include_user_mods b/cime_config/usermods_dirs/clm/NEON/ONAQ/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/ONAQ/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/ONAQ/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/ONAQ/shell_commands b/cime_config/usermods_dirs/clm/NEON/ONAQ/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/ONAQ/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/ONAQ/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/ORNL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/ORNL/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/ORNL/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/ORNL/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/ORNL/shell_commands b/cime_config/usermods_dirs/clm/NEON/ORNL/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/ORNL/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/ORNL/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/OSBS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/OSBS/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/OSBS/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/OSBS/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/OSBS/shell_commands b/cime_config/usermods_dirs/clm/NEON/OSBS/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/OSBS/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/OSBS/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/PUUM/include_user_mods b/cime_config/usermods_dirs/clm/NEON/PUUM/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/PUUM/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/PUUM/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/PUUM/shell_commands b/cime_config/usermods_dirs/clm/NEON/PUUM/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/PUUM/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/PUUM/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/RMNP/include_user_mods b/cime_config/usermods_dirs/clm/NEON/RMNP/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/RMNP/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/RMNP/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/RMNP/shell_commands b/cime_config/usermods_dirs/clm/NEON/RMNP/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/RMNP/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/RMNP/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/SCBI/include_user_mods b/cime_config/usermods_dirs/clm/NEON/SCBI/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/SCBI/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/SCBI/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/SCBI/shell_commands b/cime_config/usermods_dirs/clm/NEON/SCBI/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/SCBI/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/SCBI/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/SERC/include_user_mods b/cime_config/usermods_dirs/clm/NEON/SERC/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/SERC/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/SERC/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/SERC/shell_commands b/cime_config/usermods_dirs/clm/NEON/SERC/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/SERC/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/SERC/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/SJER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/SJER/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/SJER/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/SJER/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/SJER/shell_commands b/cime_config/usermods_dirs/clm/NEON/SJER/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/SJER/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/SJER/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/SOAP/include_user_mods b/cime_config/usermods_dirs/clm/NEON/SOAP/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/SOAP/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/SOAP/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/SOAP/shell_commands b/cime_config/usermods_dirs/clm/NEON/SOAP/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/SOAP/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/SOAP/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/SRER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/SRER/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/SRER/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/SRER/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/SRER/shell_commands b/cime_config/usermods_dirs/clm/NEON/SRER/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/SRER/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/SRER/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/STEI/include_user_mods b/cime_config/usermods_dirs/clm/NEON/STEI/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/STEI/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/STEI/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/STEI/shell_commands b/cime_config/usermods_dirs/clm/NEON/STEI/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/STEI/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/STEI/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/STER/include_user_mods b/cime_config/usermods_dirs/clm/NEON/STER/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/STER/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/STER/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/STER/shell_commands b/cime_config/usermods_dirs/clm/NEON/STER/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/STER/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/STER/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/TALL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/TALL/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/TALL/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/TALL/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/TALL/shell_commands b/cime_config/usermods_dirs/clm/NEON/TALL/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/TALL/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/TALL/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/TEAK/include_user_mods b/cime_config/usermods_dirs/clm/NEON/TEAK/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/TEAK/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/TEAK/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/TEAK/shell_commands b/cime_config/usermods_dirs/clm/NEON/TEAK/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/TEAK/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/TEAK/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/TOOL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/TOOL/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/TOOL/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/TOOL/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/TOOL/shell_commands b/cime_config/usermods_dirs/clm/NEON/TOOL/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/TOOL/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/TOOL/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/TREE/include_user_mods b/cime_config/usermods_dirs/clm/NEON/TREE/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/TREE/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/TREE/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/TREE/shell_commands b/cime_config/usermods_dirs/clm/NEON/TREE/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/TREE/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/TREE/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/UKFS/include_user_mods b/cime_config/usermods_dirs/clm/NEON/UKFS/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/UKFS/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/UKFS/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/UKFS/shell_commands b/cime_config/usermods_dirs/clm/NEON/UKFS/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/UKFS/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/UKFS/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/UNDE/include_user_mods b/cime_config/usermods_dirs/clm/NEON/UNDE/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/UNDE/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/UNDE/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/UNDE/shell_commands b/cime_config/usermods_dirs/clm/NEON/UNDE/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/UNDE/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/UNDE/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/WOOD/include_user_mods b/cime_config/usermods_dirs/clm/NEON/WOOD/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/WOOD/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/WOOD/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/WOOD/shell_commands b/cime_config/usermods_dirs/clm/NEON/WOOD/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/WOOD/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/WOOD/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/WREF/include_user_mods b/cime_config/usermods_dirs/clm/NEON/WREF/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/WREF/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/WREF/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/WREF/shell_commands b/cime_config/usermods_dirs/clm/NEON/WREF/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/WREF/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/WREF/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/YELL/include_user_mods b/cime_config/usermods_dirs/clm/NEON/YELL/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/NEON/YELL/include_user_mods
rename to cime_config/usermods_dirs/clm/NEON/YELL/include_user_mods
diff --git a/cime_config/usermods_dirs/NEON/YELL/shell_commands b/cime_config/usermods_dirs/clm/NEON/YELL/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/YELL/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/YELL/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/defaults/shell_commands b/cime_config/usermods_dirs/clm/NEON/defaults/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/NEON/defaults/shell_commands
rename to cime_config/usermods_dirs/clm/NEON/defaults/shell_commands
diff --git a/cime_config/usermods_dirs/NEON/defaults/user_nl_clm b/cime_config/usermods_dirs/clm/NEON/defaults/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/NEON/defaults/user_nl_clm
rename to cime_config/usermods_dirs/clm/NEON/defaults/user_nl_clm
diff --git a/cime_config/usermods_dirs/NEON/defaults/user_nl_cpl b/cime_config/usermods_dirs/clm/NEON/defaults/user_nl_cpl
similarity index 100%
rename from cime_config/usermods_dirs/NEON/defaults/user_nl_cpl
rename to cime_config/usermods_dirs/clm/NEON/defaults/user_nl_cpl
diff --git a/cime_config/usermods_dirs/NEON/defaults/user_nl_datm_streams b/cime_config/usermods_dirs/clm/NEON/defaults/user_nl_datm_streams
similarity index 100%
rename from cime_config/usermods_dirs/NEON/defaults/user_nl_datm_streams
rename to cime_config/usermods_dirs/clm/NEON/defaults/user_nl_datm_streams
diff --git a/cime_config/usermods_dirs/PLUMBER2/AR-SLu/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AR-SLu/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AR-SLu/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AR-SLu/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AR-SLu/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AR-SLu/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AR-SLu/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AR-SLu/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AT-Neu/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AT-Neu/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AT-Neu/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AT-Neu/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AT-Neu/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AT-Neu/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AT-Neu/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AT-Neu/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-ASM/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-ASM/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-ASM/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-ASM/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-ASM/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-ASM/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-ASM/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-ASM/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Cow/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Cow/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Cow/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Cow/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Cow/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Cow/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Cow/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Cow/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Cpr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Cpr/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Cpr/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Cpr/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Cpr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Cpr/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Cpr/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Cpr/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Ctr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Ctr/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Ctr/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Ctr/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Ctr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Ctr/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Ctr/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Ctr/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Cum/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Cum/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Cum/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Cum/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Cum/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Cum/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Cum/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Cum/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-DaP/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-DaP/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-DaP/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-DaP/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-DaP/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-DaP/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-DaP/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-DaP/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-DaS/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-DaS/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-DaS/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-DaS/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-DaS/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-DaS/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-DaS/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-DaS/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Dry/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Dry/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Dry/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Dry/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Dry/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Dry/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Dry/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Dry/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Emr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Emr/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Emr/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Emr/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Emr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Emr/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Emr/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Emr/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-GWW/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-GWW/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-GWW/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-GWW/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-GWW/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-GWW/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-GWW/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-GWW/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Gin/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Gin/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Gin/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Gin/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Gin/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Gin/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Gin/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Gin/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-How/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-How/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-How/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-How/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-How/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-How/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-How/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-How/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Lit/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Lit/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Lit/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Lit/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Lit/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Lit/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Lit/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Lit/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Otw/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Otw/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Otw/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Otw/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Otw/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Otw/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Otw/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Otw/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Rig/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Rig/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Rig/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Rig/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Rig/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Rig/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Rig/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Rig/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Rob/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Rob/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Rob/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Rob/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Rob/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Rob/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Rob/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Rob/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Sam/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Sam/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Sam/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Sam/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Sam/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Sam/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Sam/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Sam/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Stp/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Stp/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Stp/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Stp/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Stp/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Stp/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Stp/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Stp/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-TTE/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-TTE/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-TTE/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-TTE/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-TTE/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-TTE/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-TTE/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-TTE/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Tum/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Tum/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Tum/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Tum/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Tum/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Tum/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Tum/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Tum/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Whr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Whr/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Whr/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Whr/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Whr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Whr/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Whr/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Whr/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Wrr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Wrr/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Wrr/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Wrr/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Wrr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Wrr/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Wrr/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Wrr/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Ync/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Ync/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Ync/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Ync/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/AU-Ync/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/AU-Ync/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/AU-Ync/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/AU-Ync/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/BE-Bra/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/BE-Bra/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/BE-Bra/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/BE-Bra/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/BE-Bra/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/BE-Bra/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/BE-Bra/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/BE-Bra/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/BE-Lon/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/BE-Lon/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/BE-Lon/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/BE-Lon/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/BE-Lon/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/BE-Lon/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/BE-Lon/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/BE-Lon/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/BE-Vie/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/BE-Vie/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/BE-Vie/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/BE-Vie/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/BE-Vie/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/BE-Vie/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/BE-Vie/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/BE-Vie/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/BR-Sa3/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/BR-Sa3/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/BR-Sa3/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/BR-Sa3/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/BR-Sa3/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/BR-Sa3/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/BR-Sa3/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/BR-Sa3/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/BW-Ma1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/BW-Ma1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/BW-Ma1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/BW-Ma1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/BW-Ma1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/BW-Ma1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/BW-Ma1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/BW-Ma1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-NS1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-NS1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-NS2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-NS2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS4/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS4/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-NS4/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS4/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS4/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS4/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-NS4/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS4/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS5/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS5/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-NS5/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS5/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS5/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS5/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-NS5/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS5/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS6/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS6/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-NS6/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS6/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS6/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS6/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-NS6/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS6/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS7/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS7/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-NS7/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS7/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-NS7/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-NS7/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-NS7/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-NS7/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-Qcu/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-Qcu/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-Qcu/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-Qcu/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-Qcu/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-Qcu/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-Qcu/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-Qcu/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-Qfo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-Qfo/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-Qfo/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-Qfo/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-Qfo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-Qfo/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-Qfo/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-Qfo/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-SF1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-SF1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-SF1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-SF1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-SF1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-SF1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-SF1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-SF1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-SF2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-SF2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-SF2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-SF2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-SF2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-SF2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-SF2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-SF2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-SF3/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CA-SF3/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-SF3/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-SF3/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CA-SF3/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CA-SF3/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CA-SF3/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CA-SF3/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Cha/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Cha/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CH-Cha/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Cha/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Cha/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Cha/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CH-Cha/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Cha/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Dav/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Dav/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CH-Dav/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Dav/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Dav/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Dav/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CH-Dav/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Dav/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Fru/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Fru/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CH-Fru/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Fru/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Fru/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Fru/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CH-Fru/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Fru/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Oe1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Oe1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CH-Oe1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Oe1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CH-Oe1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CH-Oe1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CH-Oe1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CH-Oe1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Cha/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Cha/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-Cha/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Cha/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Cha/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Cha/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-Cha/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Cha/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Cng/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Cng/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-Cng/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Cng/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Cng/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Cng/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-Cng/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Cng/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Dan/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Dan/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-Dan/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Dan/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Dan/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Dan/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-Dan/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Dan/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Din/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Din/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-Din/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Din/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Din/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Din/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-Din/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Din/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Du2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Du2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-Du2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Du2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Du2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Du2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-Du2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Du2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-HaM/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-HaM/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-HaM/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-HaM/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-HaM/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-HaM/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-HaM/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-HaM/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Qia/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Qia/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-Qia/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Qia/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CN-Qia/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CN-Qia/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CN-Qia/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CN-Qia/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/CZ-wet/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/CZ-wet/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CZ-wet/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/CZ-wet/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/CZ-wet/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/CZ-wet/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/CZ-wet/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/CZ-wet/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Bay/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Bay/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Bay/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Bay/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Bay/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Bay/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Bay/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Bay/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Geb/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Geb/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Geb/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Geb/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Geb/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Geb/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Geb/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Geb/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Gri/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Gri/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Gri/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Gri/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Gri/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Gri/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Gri/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Gri/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Hai/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Hai/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Hai/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Hai/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Hai/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Hai/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Hai/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Hai/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Kli/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Kli/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Kli/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Kli/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Kli/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Kli/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Kli/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Kli/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Meh/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Meh/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Meh/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Meh/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Meh/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Meh/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Meh/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Meh/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Obe/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Obe/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Obe/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Obe/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Obe/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Obe/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Obe/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Obe/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Seh/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Seh/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Seh/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Seh/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Seh/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Seh/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Seh/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Seh/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-SfN/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-SfN/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-SfN/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-SfN/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-SfN/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-SfN/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-SfN/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-SfN/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Tha/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Tha/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Tha/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Tha/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Tha/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Tha/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Tha/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Tha/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Wet/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Wet/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Wet/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Wet/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DE-Wet/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DE-Wet/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DE-Wet/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DE-Wet/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Fou/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Fou/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DK-Fou/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Fou/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Fou/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Fou/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DK-Fou/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Fou/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Lva/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Lva/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DK-Lva/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Lva/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Lva/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Lva/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DK-Lva/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Lva/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Ris/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Ris/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DK-Ris/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Ris/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Ris/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Ris/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DK-Ris/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Ris/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Sor/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Sor/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DK-Sor/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Sor/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-Sor/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DK-Sor/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DK-Sor/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-Sor/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-ZaH/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/DK-ZaH/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DK-ZaH/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-ZaH/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/DK-ZaH/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/DK-ZaH/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/DK-ZaH/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/DK-ZaH/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-ES1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ES-ES1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ES-ES1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-ES1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-ES1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ES-ES1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ES-ES1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-ES1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-ES2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ES-ES2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ES-ES2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-ES2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-ES2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ES-ES2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ES-ES2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-ES2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-LMa/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ES-LMa/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ES-LMa/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-LMa/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-LMa/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ES-LMa/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ES-LMa/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-LMa/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-LgS/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ES-LgS/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ES-LgS/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-LgS/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-LgS/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ES-LgS/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ES-LgS/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-LgS/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-VDA/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ES-VDA/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ES-VDA/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-VDA/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/ES-VDA/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ES-VDA/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ES-VDA/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/ES-VDA/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Hyy/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Hyy/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FI-Hyy/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Hyy/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Hyy/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Hyy/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FI-Hyy/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Hyy/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Kaa/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Kaa/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FI-Kaa/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Kaa/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Kaa/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Kaa/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FI-Kaa/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Kaa/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Lom/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Lom/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FI-Lom/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Lom/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Lom/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Lom/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FI-Lom/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Lom/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Sod/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Sod/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FI-Sod/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Sod/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/FI-Sod/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FI-Sod/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FI-Sod/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/FI-Sod/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Fon/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Fon/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-Fon/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Fon/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Fon/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Fon/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-Fon/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Fon/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Gri/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Gri/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-Gri/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Gri/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Gri/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Gri/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-Gri/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Gri/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Hes/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Hes/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-Hes/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Hes/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Hes/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Hes/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-Hes/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Hes/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-LBr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-LBr/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-LBr/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-LBr/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-LBr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-LBr/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-LBr/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-LBr/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Lq1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-Lq1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Lq1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-Lq1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Lq2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-Lq2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Lq2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-Lq2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Lq2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Pue/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Pue/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-Pue/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Pue/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/FR-Pue/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/FR-Pue/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/FR-Pue/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/FR-Pue/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/GF-Guy/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/GF-Guy/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/GF-Guy/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/GF-Guy/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/GF-Guy/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/GF-Guy/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/GF-Guy/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/GF-Guy/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/HU-Bug/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/HU-Bug/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/HU-Bug/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/HU-Bug/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/HU-Bug/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/HU-Bug/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/HU-Bug/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/HU-Bug/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/ID-Pag/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ID-Pag/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ID-Pag/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/ID-Pag/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/ID-Pag/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ID-Pag/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ID-Pag/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/ID-Pag/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IE-Ca1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IE-Ca1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IE-Ca1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IE-Ca1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IE-Ca1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IE-Ca1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IE-Ca1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IE-Ca1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IE-Dri/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IE-Dri/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IE-Dri/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IE-Dri/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IE-Dri/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IE-Dri/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IE-Dri/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IE-Dri/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Amp/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Amp/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Amp/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Amp/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Amp/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Amp/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Amp/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Amp/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-BCi/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-BCi/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-BCi/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-BCi/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-BCi/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-BCi/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-BCi/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-BCi/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-CA1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-CA1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-CA1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-CA1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-CA1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-CA1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-CA1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-CA1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-CA2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-CA2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-CA2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-CA2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-CA2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-CA2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-CA2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-CA2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-CA3/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-CA3/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-CA3/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-CA3/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-CA3/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-CA3/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-CA3/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-CA3/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Col/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Col/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Col/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Col/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Col/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Col/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Col/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Col/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Cpz/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Cpz/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Cpz/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Cpz/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Cpz/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Cpz/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Cpz/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Cpz/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Isp/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Isp/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Isp/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Isp/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Isp/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Isp/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Isp/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Isp/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-LMa/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-LMa/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-LMa/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-LMa/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-LMa/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-LMa/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-LMa/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-LMa/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Lav/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Lav/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Lav/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Lav/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Lav/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Lav/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Lav/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Lav/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-MBo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-MBo/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-MBo/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-MBo/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-MBo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-MBo/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-MBo/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-MBo/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Mal/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Mal/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Mal/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Mal/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Mal/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Mal/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Mal/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Mal/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Noe/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Noe/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Noe/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Noe/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Noe/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Noe/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Noe/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Noe/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Non/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Non/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Non/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Non/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Non/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Non/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Non/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Non/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-PT1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-PT1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-PT1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-PT1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-PT1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-PT1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-PT1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-PT1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Ren/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Ren/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Ren/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Ren/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Ren/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Ren/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Ren/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Ren/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Ro1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Ro1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Ro1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Ro1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Ro2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Ro2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-Ro2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-Ro2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-Ro2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-SR2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-SR2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-SR2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-SR2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-SR2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-SR2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-SR2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-SR2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-SRo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/IT-SRo/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-SRo/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-SRo/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/IT-SRo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/IT-SRo/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/IT-SRo/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/IT-SRo/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/JP-SMF/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/JP-SMF/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/JP-SMF/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/JP-SMF/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/JP-SMF/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/JP-SMF/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/JP-SMF/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/JP-SMF/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/NL-Ca1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/NL-Ca1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/NL-Ca1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/NL-Ca1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/NL-Ca1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/NL-Ca1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/NL-Ca1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/NL-Ca1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/NL-Hor/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/NL-Hor/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/NL-Hor/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/NL-Hor/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/NL-Hor/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/NL-Hor/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/NL-Hor/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/NL-Hor/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/NL-Loo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/NL-Loo/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/NL-Loo/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/NL-Loo/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/NL-Loo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/NL-Loo/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/NL-Loo/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/NL-Loo/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/PL-wet/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/PL-wet/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/PL-wet/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/PL-wet/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/PL-wet/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/PL-wet/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/PL-wet/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/PL-wet/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/PT-Esp/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/PT-Esp/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/PT-Esp/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/PT-Esp/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/PT-Esp/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/PT-Esp/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/PT-Esp/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/PT-Esp/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/PT-Mi1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/PT-Mi1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/PT-Mi1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/PT-Mi1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/PT-Mi2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/PT-Mi2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/PT-Mi2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/PT-Mi2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/PT-Mi2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/RU-Che/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/RU-Che/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/RU-Che/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/RU-Che/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/RU-Che/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/RU-Che/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/RU-Che/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/RU-Che/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/RU-Fyo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/RU-Fyo/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/RU-Fyo/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/RU-Fyo/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/RU-Fyo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/RU-Fyo/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/RU-Fyo/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/RU-Fyo/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/RU-Zot/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/RU-Zot/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/RU-Zot/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/RU-Zot/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/RU-Zot/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/RU-Zot/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/RU-Zot/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/RU-Zot/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/SD-Dem/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/SD-Dem/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/SD-Dem/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/SD-Dem/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/SD-Dem/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/SD-Dem/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/SD-Dem/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/SD-Dem/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/SE-Deg/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/SE-Deg/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/SE-Deg/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/SE-Deg/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/SE-Deg/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/SE-Deg/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/SE-Deg/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/SE-Deg/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/UK-Gri/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/UK-Gri/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/UK-Gri/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/UK-Gri/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/UK-Gri/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/UK-Gri/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/UK-Gri/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/UK-Gri/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/UK-Ham/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/UK-Ham/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/UK-Ham/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/UK-Ham/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/UK-Ham/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/UK-Ham/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/UK-Ham/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/UK-Ham/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/UK-PL3/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/UK-PL3/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/UK-PL3/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/UK-PL3/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/UK-PL3/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/UK-PL3/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/UK-PL3/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/UK-PL3/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-AR1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-AR1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-AR1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-AR1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-AR1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-AR1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-AR1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-AR1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-AR2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-AR2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-AR2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-AR2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-AR2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-AR2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-AR2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-AR2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-ARM/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-ARM/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-ARM/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-ARM/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-ARM/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-ARM/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-ARM/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-ARM/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Aud/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Aud/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Aud/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Aud/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Aud/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Aud/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Aud/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Aud/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Bar/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Bar/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Bar/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Bar/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Bar/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Bar/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Bar/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Bar/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Bkg/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Bkg/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Bkg/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Bkg/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Bkg/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Bkg/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Bkg/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Bkg/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Blo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Blo/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Blo/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Blo/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Blo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Blo/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Blo/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Blo/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Bo1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Bo1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Bo1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Bo1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Bo1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Bo1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Bo1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Bo1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Cop/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Cop/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Cop/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Cop/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Cop/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Cop/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Cop/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Cop/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-FPe/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-FPe/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-FPe/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-FPe/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-FPe/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-FPe/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-FPe/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-FPe/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-GLE/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-GLE/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-GLE/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-GLE/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-GLE/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-GLE/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-GLE/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-GLE/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Goo/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Goo/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Goo/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Goo/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Goo/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Goo/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Goo/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Goo/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ha1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ha1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Ha1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ha1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ha1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ha1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Ha1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ha1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ho1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ho1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Ho1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ho1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ho1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ho1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Ho1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ho1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-KS2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-KS2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-KS2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-KS2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-KS2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-KS2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-KS2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-KS2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Los/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Los/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Los/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Los/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Los/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Los/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Los/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Los/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-MMS/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-MMS/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-MMS/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-MMS/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-MMS/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-MMS/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-MMS/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-MMS/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-MOz/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-MOz/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-MOz/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-MOz/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-MOz/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-MOz/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-MOz/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-MOz/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Me2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Me2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Me2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Me2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Me2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Me2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Me2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Me2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Me4/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Me4/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Me4/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Me4/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Me4/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Me4/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Me4/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Me4/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Me6/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Me6/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Me6/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Me6/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Me6/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Me6/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Me6/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Me6/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Myb/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Myb/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Myb/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Myb/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Myb/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Myb/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Myb/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Myb/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-NR1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-NR1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-NR1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-NR1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-NR1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-NR1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-NR1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-NR1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ne1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ne1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Ne1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ne1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ne1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ne1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Ne1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ne1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ne2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ne2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Ne2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ne2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ne2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ne2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Ne2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ne2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ne3/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ne3/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Ne3/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ne3/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ne3/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ne3/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Ne3/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ne3/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-PFa/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-PFa/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-PFa/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-PFa/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-PFa/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-PFa/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-PFa/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-PFa/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Prr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Prr/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Prr/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Prr/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Prr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Prr/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Prr/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Prr/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SP1/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-SP1/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-SP1/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SP1/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SP1/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-SP1/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-SP1/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SP1/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SP2/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-SP2/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-SP2/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SP2/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SP2/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-SP2/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-SP2/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SP2/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SP3/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-SP3/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-SP3/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SP3/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SP3/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-SP3/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-SP3/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SP3/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SRG/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-SRG/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-SRG/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SRG/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SRG/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-SRG/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-SRG/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SRG/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SRM/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-SRM/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-SRM/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SRM/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-SRM/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-SRM/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-SRM/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-SRM/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Syv/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Syv/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Syv/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Syv/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Syv/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Syv/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Syv/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Syv/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ton/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ton/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Ton/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ton/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Ton/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Ton/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Ton/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Ton/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Tw4/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Tw4/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Tw4/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Tw4/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Tw4/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Tw4/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Tw4/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Tw4/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Twt/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Twt/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Twt/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Twt/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Twt/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Twt/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Twt/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Twt/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-UMB/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-UMB/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-UMB/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-UMB/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-UMB/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-UMB/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-UMB/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-UMB/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Var/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Var/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Var/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Var/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Var/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Var/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Var/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Var/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-WCr/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-WCr/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-WCr/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-WCr/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-WCr/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-WCr/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-WCr/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-WCr/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Whs/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Whs/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Whs/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Whs/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Whs/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Whs/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Whs/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Whs/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Wkg/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/US-Wkg/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Wkg/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Wkg/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/US-Wkg/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/US-Wkg/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/US-Wkg/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/US-Wkg/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/ZA-Kru/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ZA-Kru/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ZA-Kru/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/ZA-Kru/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/ZA-Kru/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ZA-Kru/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ZA-Kru/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/ZA-Kru/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/ZM-Mon/include_user_mods b/cime_config/usermods_dirs/clm/PLUMBER2/ZM-Mon/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ZM-Mon/include_user_mods
rename to cime_config/usermods_dirs/clm/PLUMBER2/ZM-Mon/include_user_mods
diff --git a/cime_config/usermods_dirs/PLUMBER2/ZM-Mon/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/ZM-Mon/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/ZM-Mon/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/ZM-Mon/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/defaults/shell_commands b/cime_config/usermods_dirs/clm/PLUMBER2/defaults/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/defaults/shell_commands
rename to cime_config/usermods_dirs/clm/PLUMBER2/defaults/shell_commands
diff --git a/cime_config/usermods_dirs/PLUMBER2/defaults/user_nl_clm b/cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/defaults/user_nl_clm
rename to cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_clm
diff --git a/cime_config/usermods_dirs/PLUMBER2/defaults/user_nl_cpl b/cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_cpl
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/defaults/user_nl_cpl
rename to cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_cpl
diff --git a/cime_config/usermods_dirs/PLUMBER2/defaults/user_nl_datm_streams b/cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_datm_streams
similarity index 100%
rename from cime_config/usermods_dirs/PLUMBER2/defaults/user_nl_datm_streams
rename to cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_datm_streams
diff --git a/cime_config/usermods_dirs/_includes/README b/cime_config/usermods_dirs/clm/_includes/README
similarity index 100%
rename from cime_config/usermods_dirs/_includes/README
rename to cime_config/usermods_dirs/clm/_includes/README
diff --git a/cime_config/usermods_dirs/_includes/cmip6_carbon_isotopes/user_nl_clm b/cime_config/usermods_dirs/clm/_includes/cmip6_carbon_isotopes/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/_includes/cmip6_carbon_isotopes/user_nl_clm
rename to cime_config/usermods_dirs/clm/_includes/cmip6_carbon_isotopes/user_nl_clm
diff --git a/cime_config/usermods_dirs/_includes/cmip6_glaciers_cplhist/user_nl_cpl b/cime_config/usermods_dirs/clm/_includes/cmip6_glaciers_cplhist/user_nl_cpl
similarity index 100%
rename from cime_config/usermods_dirs/_includes/cmip6_glaciers_cplhist/user_nl_cpl
rename to cime_config/usermods_dirs/clm/_includes/cmip6_glaciers_cplhist/user_nl_cpl
diff --git a/cime_config/usermods_dirs/_includes/cmip6_glaciers_virtual_antarctica/user_nl_clm b/cime_config/usermods_dirs/clm/_includes/cmip6_glaciers_virtual_antarctica/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/_includes/cmip6_glaciers_virtual_antarctica/user_nl_clm
rename to cime_config/usermods_dirs/clm/_includes/cmip6_glaciers_virtual_antarctica/user_nl_clm
diff --git a/cime_config/usermods_dirs/_includes/output_base/README b/cime_config/usermods_dirs/clm/_includes/output_base/README
similarity index 100%
rename from cime_config/usermods_dirs/_includes/output_base/README
rename to cime_config/usermods_dirs/clm/_includes/output_base/README
diff --git a/cime_config/usermods_dirs/_includes/output_base/user_nl_clm b/cime_config/usermods_dirs/clm/_includes/output_base/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/_includes/output_base/user_nl_clm
rename to cime_config/usermods_dirs/clm/_includes/output_base/user_nl_clm
diff --git a/cime_config/usermods_dirs/_includes/output_base_highfreq/README b/cime_config/usermods_dirs/clm/_includes/output_base_highfreq/README
similarity index 100%
rename from cime_config/usermods_dirs/_includes/output_base_highfreq/README
rename to cime_config/usermods_dirs/clm/_includes/output_base_highfreq/README
diff --git a/cime_config/usermods_dirs/_includes/output_base_highfreq/include_user_mods b/cime_config/usermods_dirs/clm/_includes/output_base_highfreq/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/_includes/output_base_highfreq/include_user_mods
rename to cime_config/usermods_dirs/clm/_includes/output_base_highfreq/include_user_mods
diff --git a/cime_config/usermods_dirs/_includes/output_base_highfreq/user_nl_clm b/cime_config/usermods_dirs/clm/_includes/output_base_highfreq/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/_includes/output_base_highfreq/user_nl_clm
rename to cime_config/usermods_dirs/clm/_includes/output_base_highfreq/user_nl_clm
diff --git a/cime_config/usermods_dirs/cmip6_deck/include_user_mods b/cime_config/usermods_dirs/clm/cmip6_deck/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/cmip6_deck/include_user_mods
rename to cime_config/usermods_dirs/clm/cmip6_deck/include_user_mods
diff --git a/cime_config/usermods_dirs/cmip6_evolving_icesheet/include_user_mods b/cime_config/usermods_dirs/clm/cmip6_evolving_icesheet/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/cmip6_evolving_icesheet/include_user_mods
rename to cime_config/usermods_dirs/clm/cmip6_evolving_icesheet/include_user_mods
diff --git a/cime_config/usermods_dirs/cmip6_evolving_icesheet/user_nl_clm b/cime_config/usermods_dirs/clm/cmip6_evolving_icesheet/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/cmip6_evolving_icesheet/user_nl_clm
rename to cime_config/usermods_dirs/clm/cmip6_evolving_icesheet/user_nl_clm
diff --git a/cime_config/usermods_dirs/cmip6_waccm_deck/README b/cime_config/usermods_dirs/clm/cmip6_waccm_deck/README
similarity index 100%
rename from cime_config/usermods_dirs/cmip6_waccm_deck/README
rename to cime_config/usermods_dirs/clm/cmip6_waccm_deck/README
diff --git a/cime_config/usermods_dirs/cmip6_waccm_deck/include_user_mods b/cime_config/usermods_dirs/clm/cmip6_waccm_deck/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/cmip6_waccm_deck/include_user_mods
rename to cime_config/usermods_dirs/clm/cmip6_waccm_deck/include_user_mods
diff --git a/cime_config/usermods_dirs/cmip6_waccm_deck/shell_commands b/cime_config/usermods_dirs/clm/cmip6_waccm_deck/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/cmip6_waccm_deck/shell_commands
rename to cime_config/usermods_dirs/clm/cmip6_waccm_deck/shell_commands
diff --git a/cime_config/usermods_dirs/cmip6_waccm_nociso_deck/README b/cime_config/usermods_dirs/clm/cmip6_waccm_nociso_deck/README
similarity index 100%
rename from cime_config/usermods_dirs/cmip6_waccm_nociso_deck/README
rename to cime_config/usermods_dirs/clm/cmip6_waccm_nociso_deck/README
diff --git a/cime_config/usermods_dirs/cmip6_waccm_nociso_deck/include_user_mods b/cime_config/usermods_dirs/clm/cmip6_waccm_nociso_deck/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/cmip6_waccm_nociso_deck/include_user_mods
rename to cime_config/usermods_dirs/clm/cmip6_waccm_nociso_deck/include_user_mods
diff --git a/cime_config/usermods_dirs/f09_37x288pt_PanBoreal/shell_commands b/cime_config/usermods_dirs/clm/f09_37x288pt_PanBoreal/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/f09_37x288pt_PanBoreal/shell_commands
rename to cime_config/usermods_dirs/clm/f09_37x288pt_PanBoreal/shell_commands
diff --git a/cime_config/usermods_dirs/f09_37x288pt_PanBoreal/user_nl_clm b/cime_config/usermods_dirs/clm/f09_37x288pt_PanBoreal/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/f09_37x288pt_PanBoreal/user_nl_clm
rename to cime_config/usermods_dirs/clm/f09_37x288pt_PanBoreal/user_nl_clm
diff --git a/cime_config/usermods_dirs/fates_sp/user_nl_clm b/cime_config/usermods_dirs/clm/fates_sp/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/fates_sp/user_nl_clm
rename to cime_config/usermods_dirs/clm/fates_sp/user_nl_clm
diff --git a/cime_config/usermods_dirs/lilac/README b/cime_config/usermods_dirs/clm/lilac/README
similarity index 100%
rename from cime_config/usermods_dirs/lilac/README
rename to cime_config/usermods_dirs/clm/lilac/README
diff --git a/cime_config/usermods_dirs/lilac/user_nl_ctsm b/cime_config/usermods_dirs/clm/lilac/user_nl_ctsm
similarity index 100%
rename from cime_config/usermods_dirs/lilac/user_nl_ctsm
rename to cime_config/usermods_dirs/clm/lilac/user_nl_ctsm
diff --git a/cime_config/usermods_dirs/newton_krylov_spinup/README b/cime_config/usermods_dirs/clm/newton_krylov_spinup/README
similarity index 100%
rename from cime_config/usermods_dirs/newton_krylov_spinup/README
rename to cime_config/usermods_dirs/clm/newton_krylov_spinup/README
diff --git a/cime_config/usermods_dirs/newton_krylov_spinup/shell_commands b/cime_config/usermods_dirs/clm/newton_krylov_spinup/shell_commands
similarity index 100%
rename from cime_config/usermods_dirs/newton_krylov_spinup/shell_commands
rename to cime_config/usermods_dirs/clm/newton_krylov_spinup/shell_commands
diff --git a/cime_config/usermods_dirs/newton_krylov_spinup/user_nl_clm b/cime_config/usermods_dirs/clm/newton_krylov_spinup/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/newton_krylov_spinup/user_nl_clm
rename to cime_config/usermods_dirs/clm/newton_krylov_spinup/user_nl_clm
diff --git a/cime_config/usermods_dirs/output_bgc/include_user_mods b/cime_config/usermods_dirs/clm/output_bgc/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/output_bgc/include_user_mods
rename to cime_config/usermods_dirs/clm/output_bgc/include_user_mods
diff --git a/cime_config/usermods_dirs/output_bgc/user_nl_clm b/cime_config/usermods_dirs/clm/output_bgc/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/output_bgc/user_nl_clm
rename to cime_config/usermods_dirs/clm/output_bgc/user_nl_clm
diff --git a/cime_config/usermods_dirs/output_bgc_highfreq/include_user_mods b/cime_config/usermods_dirs/clm/output_bgc_highfreq/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/output_bgc_highfreq/include_user_mods
rename to cime_config/usermods_dirs/clm/output_bgc_highfreq/include_user_mods
diff --git a/cime_config/usermods_dirs/output_bgc_highfreq/user_nl_clm b/cime_config/usermods_dirs/clm/output_bgc_highfreq/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/output_bgc_highfreq/user_nl_clm
rename to cime_config/usermods_dirs/clm/output_bgc_highfreq/user_nl_clm
diff --git a/cime_config/usermods_dirs/output_crop/include_user_mods b/cime_config/usermods_dirs/clm/output_crop/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/output_crop/include_user_mods
rename to cime_config/usermods_dirs/clm/output_crop/include_user_mods
diff --git a/cime_config/usermods_dirs/output_crop/user_nl_clm b/cime_config/usermods_dirs/clm/output_crop/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/output_crop/user_nl_clm
rename to cime_config/usermods_dirs/clm/output_crop/user_nl_clm
diff --git a/cime_config/usermods_dirs/output_crop_highfreq/include_user_mods b/cime_config/usermods_dirs/clm/output_crop_highfreq/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/output_crop_highfreq/include_user_mods
rename to cime_config/usermods_dirs/clm/output_crop_highfreq/include_user_mods
diff --git a/cime_config/usermods_dirs/output_sp/include_user_mods b/cime_config/usermods_dirs/clm/output_sp/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/output_sp/include_user_mods
rename to cime_config/usermods_dirs/clm/output_sp/include_user_mods
diff --git a/cime_config/usermods_dirs/output_sp/user_nl_clm b/cime_config/usermods_dirs/clm/output_sp/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/output_sp/user_nl_clm
rename to cime_config/usermods_dirs/clm/output_sp/user_nl_clm
diff --git a/cime_config/usermods_dirs/output_sp_exice/include_user_mods b/cime_config/usermods_dirs/clm/output_sp_exice/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/output_sp_exice/include_user_mods
rename to cime_config/usermods_dirs/clm/output_sp_exice/include_user_mods
diff --git a/cime_config/usermods_dirs/output_sp_exice/user_nl_clm b/cime_config/usermods_dirs/clm/output_sp_exice/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/output_sp_exice/user_nl_clm
rename to cime_config/usermods_dirs/clm/output_sp_exice/user_nl_clm
diff --git a/cime_config/usermods_dirs/output_sp_highfreq/include_user_mods b/cime_config/usermods_dirs/clm/output_sp_highfreq/include_user_mods
similarity index 100%
rename from cime_config/usermods_dirs/output_sp_highfreq/include_user_mods
rename to cime_config/usermods_dirs/clm/output_sp_highfreq/include_user_mods
diff --git a/cime_config/usermods_dirs/output_sp_highfreq/user_nl_clm b/cime_config/usermods_dirs/clm/output_sp_highfreq/user_nl_clm
similarity index 100%
rename from cime_config/usermods_dirs/output_sp_highfreq/user_nl_clm
rename to cime_config/usermods_dirs/clm/output_sp_highfreq/user_nl_clm
diff --git a/components/cdeps b/components/cdeps
index f6bc97483a..0750c91753 160000
--- a/components/cdeps
+++ b/components/cdeps
@@ -1 +1 @@
-Subproject commit f6bc97483a1bfb7352c6c5610a13ed898a86990b
+Subproject commit 0750c9175395d3ba3bf8eba65703dee230d08572
diff --git a/components/cism b/components/cism
index c84cc9f5b3..41843ef8fe 160000
--- a/components/cism
+++ b/components/cism
@@ -1 +1 @@
-Subproject commit c84cc9f5b3103766a35d0a7ddd5e9dbd7deae762
+Subproject commit 41843ef8fed91fcf60e2ea217c4f6f2ee5133c5d
diff --git a/components/cmeps b/components/cmeps
index 5b7d76978e..4b636c6f79 160000
--- a/components/cmeps
+++ b/components/cmeps
@@ -1 +1 @@
-Subproject commit 5b7d76978e2fdc661ec2de4ba9834b985decadc6
+Subproject commit 4b636c6f794ca02d854d15c620e26644751b449b
diff --git a/components/mizuRoute b/components/mizuRoute
index 2ff305a029..362bee329b 160000
--- a/components/mizuRoute
+++ b/components/mizuRoute
@@ -1 +1 @@
-Subproject commit 2ff305a0292cb06789de6cfea7ad3cc0d6173493
+Subproject commit 362bee329bd6bf1fd45c8f36e006b9c4294bb8ca
diff --git a/components/mosart b/components/mosart
index e2ffe00004..330574fbd8 160000
--- a/components/mosart
+++ b/components/mosart
@@ -1 +1 @@
-Subproject commit e2ffe00004cc416cfc8bcfae2a949474075c1d1f
+Subproject commit 330574fbd8a4810b7a168175690cbf7e1a7f6dab
diff --git a/components/rtm b/components/rtm
index b3dfcfbba5..26e96f500b 160000
--- a/components/rtm
+++ b/components/rtm
@@ -1 +1 @@
-Subproject commit b3dfcfbba58c151ac5a6ab513b3515ef3deff798
+Subproject commit 26e96f500b9500b32a870db20eed6b1bd37587ea
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 5c0c6ba058..2c08950b2d 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,4 +1,802 @@
===============================================================
+Tag name: ctsm5.3.020
+Originator(s): samrabin (Sam Rabin, UCAR/TSS, samrabin@ucar.edu)
+Date: Fri Jan 17 12:21:24 MST 2025
+One-line Summary: Merge b4b-dev
+
+Purpose and description of changes
+----------------------------------
+
+Merging b4b-dev and ctsm5.3.019. Includes some improvements to test list / expected failures.
+
+
+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 developers:
+---------------------------------------------
+
+Changes to tests or testing:
+- New test suite: Useful for redoing tests that failed due to https://github.com/ESCOMP/CTSM/issues/2916, after having replaced libraries/mpi-serial with a fresh copy.
+
+
+Testing summary:
+----------------
+
+ regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing):
+
+ derecho ----- OK
+ izumi ------- OK
+
+
+Other details
+-------------
+[Remove any lines that don't apply. Remove entire section if nothing applies.]
+
+List any git submodules updated (cime, rtm, mosart, cism, fates, etc.):
+
+Pull Requests that document the changes (include PR ids):
+- ESCOMP/CTSM#2938: ctsm5.3.020: Merge b4b-dev 2025-01-16 (https://github.com/ESCOMP/CTSM/pull/2938)
+
+===============================================================
+===============================================================
+Tag name: ctsm5.3.019
+Originator(s): olyson (Keith Oleson, UCAR/TSS)
+Date: Tue 14 Jan 2025 02:46:11 PM MST
+One-line Summary: Stop running 0th time step
+
+Purpose and description of changes
+----------------------------------
+ As with the last tag, this is also for consistency with CAM.
+
+Contributors
+------------
+ Bill Sacks. In the final steps, also slevis.
+
+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
+
+
+Bugs fixed
+----------
+List of CTSM issues fixed (include CTSM Issue # and description) [one per line]:
+ Fixes #925
+
+Notes of particular relevance for developers:
+---------------------------------------------
+Caveats for developers (e.g., code that is duplicated that requires double maintenance):
+ Same or similar changes needed separately in clm, in mosart, and in rtm.
+
+Changes to tests or testing:
+ FAIL RXCROPMATURITYSKIPGEN_Ld1097.f10_f10_mg37.IHistClm60BgcCrop.derecho_intel.clm-cropMonthOutput RUN
+ I did not label this failure EXPECTED because the fix is planned for the next tag, ctsm5.3.020.
+
+ I resolved the izumi nag tests that failed to build (due to a bug in rtm and mosart) by introducing the bug-fix manually, as explained here:
+https://github.com/ESCOMP/CTSM/pull/2084#issuecomment-2584164690
+ In ctsm5.3.020 we plan to update to the rtm/mosart tags that include the fix.
+
+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
+
+ 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
+
+ mosart
+ derecho ----- OK
+ izumi ------- OK
+
+ rtm
+ derecho ----- OK
+
+If the tag used for baseline comparisons was NOT the previous tag, note that here:
+ I repeated the rtm & mosart test-suites with mosart1.1.04 instead of 06 and rtm1_0_82 instead of 84 (all else the same) and compared against the new baselines mosart1.1.06-ctsm5.3.019 and rtm1_0_84-ctsm5.3.019. These gave b4b identical answers.
+
+Answer changes
+--------------
+
+Changes answers relative to baseline: Yes
+
+ Summarize any changes to answers, i.e.,
+ - what code configurations: All
+ - what platforms/compilers: All
+ - nature of change: larger than roundoff/same climate
+
+ Caveat: We see diffs in mosart and cpl output that will be eliminated in ctsm5.3.020. They are discussed here:
+https://github.com/ESCOMP/CTSM/pull/2838#issuecomment-2477608383
+https://github.com/ESCOMP/MOSART/issues/103#issuecomment-2479679014
+
+Other details
+-------------
+List any git submodules updated (cime, rtm, mosart, cism, fates, etc.):
+ rtm and mosart were already updated in the previous tag (ctsm5.3.018) to include the corresponding rtm and mosart tags
+
+Pull Requests that document the changes (include PR ids):
+ https://github.com/ESCOMP/ctsm/pull/2084
+ https://github.com/ESCOMP/MOSART/pull/67
+ https://github.com/ESCOMP/RTM/pull/37
+
+===============================================================
+===============================================================
+Tag name: ctsm5.3.018
+Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310)
+Date: Fri 10 Jan 2025 05:37:08 PM MST
+One-line Summary: Change history time to be the middle of the time bounds
+
+Purpose and description of changes
+----------------------------------
+ Making the change to be consistent with CAM and to make history output more intuitive.
+
+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_1
+
+[ ] clm5_0
+
+[ ] ctsm5_0-nwp
+
+[ ] clm4_5
+
+
+Bugs fixed
+----------
+List of CTSM issues fixed (include CTSM Issue # and description) [one per line]:
+ Partly addresses issue #1059
+
+Notes of particular relevance for users
+---------------------------------------
+Caveats for users (e.g., need to interpolate initial conditions):
+ The history time variable now equals the middle of the time bounds.
+ Instantaneous history tapes now do not include time bounds.
+ Mixed history tapes do not change the treatment of instantaneous fields or move them to separate tapes, yet.
+
+Notes of particular relevance for developers:
+---------------------------------------------
+Caveats for developers (e.g., code that is duplicated that requires double maintenance):
+ Same changes are needed separately in clm, in mosart, and in rtm.
+
+Changes to tests or testing:
+ This tag introduces changes to the mosart/rtm testlists.
+
+ FAIL RXCROPMATURITYSKIPGEN_Ld1097.f10_f10_mg37.IHistClm60BgcCrop.derecho_intel.clm-cropMonthOutput RUN
+ I did not label this failure EXPECTED because the fix comes in later in this series of "history" tags, in particular ctsm5.3.020.
+
+ I resolved the izumi nag tests that failed to build (due to a bug in rtm and mosart) by introducing the bug-fix manually, as explained here:
+https://github.com/ESCOMP/CTSM/pull/2084#issuecomment-2584164690
+ In the next tag we expect to update to the rtm/mosart tags that include the fix.
+
+Testing summary:
+----------------
+
+ [PASS means all tests PASS; OK means tests PASS other than expected fails.]
+
+ build-namelist tests
+
+ derecho - PASS
+
+ 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
+
+ mosart
+ derecho ----- OK
+ izumi ------- OK
+
+ rtm
+ derecho ----- OK
+
+Answer changes
+--------------
+
+Changes answers relative to baseline: Only time variable, plus read caveat
+
+ Summarize any changes to answers, i.e.,
+ - what code configurations: all
+ - what platforms/compilers: all
+ - nature of change: only the time variable
+
+ Caveat: We see diffs in mosart and cpl output that will be eliminated later in this series of "history" tags, in particular ctsm5.3.020. They are discussed here:
+https://github.com/ESCOMP/CTSM/pull/2838#issuecomment-2477608383
+https://github.com/ESCOMP/MOSART/issues/103#issuecomment-2479679014
+
+Other details
+-------------
+List any git submodules updated (cime, rtm, mosart, cism, fates, etc.):
+ rtm, mosart (see related note in ctsm5.3.019)
+
+Pull Requests that document the changes (include PR ids):
+ https://github.com/ESCOMP/ctsm/pull/2838
+ https://github.com/ESCOMP/MOSART/pull/70
+ https://github.com/ESCOMP/RTM/issues/54
+ https://github.com/ESCOMP/MOSART/pull/106
+ https://github.com/ESCOMP/RTM/pull/39
+
+===============================================================
+===============================================================
+Tag name: ctsm5.3.017
+Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310)
+Date: Thu 09 Jan 2025 11:56:43 AM MST
+One-line Summary: Merge tmp-241219 branch to master
+
+Purpose and description of changes
+----------------------------------
+
+Includes three tmp-241219 tags:
+ tmp-241219.n01.ctsm5.3.016 Merge b4b-dev:
+ nfix_method options Houlton (default), Bytnerowicz (option)
+ tmp-241219.n02.ctsm5.3.016 FATES hydro test update
+ tmp-241219.n03.ctsm5.3.016 Bug fix for izumi nag tests to pass (b4b unless using Bytnerowicz)
+
+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
+
+
+Bugs fixed
+----------
+List of CTSM issues fixed (include CTSM Issue # and description) [one per line]:
+ Each separate tag documents this information below.
+
+Notes of particular relevance for users
+---------------------------------------
+Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables):
+ nfix_method as explained in tmp-241219.n01.ctsm5.3.016 tag below.
+
+Notes of particular relevance for developers:
+---------------------------------------------
+Changes to tests or testing:
+ New tests as documented in tmp-241219.n03.ctsm5.3.016 tag below.
+
+Testing summary:
+----------------
+
+ regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing):
+
+ derecho ----- OK (baseline linked to tmp-241219.n03.ctsm5.3.016)
+ izumi ------- OK (baseline linked to tmp-241219.n03.ctsm5.3.016)
+
+ fates tests:
+ derecho ----- No new testing; last baseline is fates-sci.1.80.4_api.37.0.0-tmp-241219.n02.ctsm5.3.016
+ izumi ------- No new testing; see tmp-241219.n02.ctsm5.3.016 tag below
+
+Answer changes
+--------------
+
+Changes answers relative to baseline: Yes, only for aux_clm fates testmods
+
+ Same comment as in tmp-241219.n02.ctsm5.3.016 tag:
+ The FATES tag update includes a number of science and bug fix updates since the
+ last fates tag update, which results in non-B4B changes. These have been reviewed
+ and differ as expected.
+
+ Also, see caveat in Answer changes for tag tmp-241219.n01.ctsm5.3.016.
+
+Other details
+-------------
+List any git submodules updated (cime, rtm, mosart, cism, fates, etc.):
+ fates updated to sci.1.80.4_api.37.0.0
+
+Pull Requests that document the changes (include PR ids):
+ https://github.com/ESCOMP/ctsm/pull/2928
+
+===============================================================
+===============================================================
+Tag name: tmp-241219.n03.ctsm5.3.016
+Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310)
+Date: Thu 09 Jan 2025 11:39:37 AM MST
+One-line Summary: Bug fix for izumi nag tests to pass
+
+Purpose and description of changes
+----------------------------------
+ Allocation statements should have been (0:mxpft) instead of (mxpft).
+ I introduced the bug in a small refactor requested in #2917.
+
+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
+
+
+Bugs fixed
+----------
+List of CTSM issues fixed (include CTSM Issue # and description) [one per line]:
+ Fixes #2924
+
+Notes of particular relevance for developers:
+---------------------------------------------
+Changes to tests or testing:
+ Added tests that I should have added in the tmp-241219.n01.ctsm5.3.016 tag:
+ ERP_D_Ld5_P48x1.f10_f10_mg37.I2000Clm50BgcCru.izumi_nag.clm-flexCN_FUN_BNF
+ ERP_D_Ld5_P48x1.f10_f10_mg37.I2000Clm50BgcCru.derecho_intel.clm-flexCN_FUN_BNF
+
+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
+
+If the tag used for baseline comparisons was NOT the previous tag, note that here:
+ derecho used tmp-241219.n02.ctsm5.3.016 (i.e. the previous tag)
+ izumi used ctsm5.3.016 because it was the best available baseline
+
+Answer changes
+--------------
+
+Changes answers relative to baseline: No but read caveat.
+
+ Summarize any changes to answers, i.e.,
+ - what code configurations: a few Fates cases
+ - what platforms/compilers: izumi; only because I compared to ctsm5.3.016
+ - nature of change: same as in the tmp-241219.n02.ctsm5.3.016 tag
+
+ Note: Also on izumi I see the following failure in all the tests that 'failed to initialize'
+ that I had to go back to build and run, whether with ./case.build or ./create_test. For example:
+ FAIL ERP_D_Ld5_P48x1.f10_f10_mg37.I2000Clm50BgcCru.izumi_nag.clm-noFUN_flexCN BASELINE ctsm5.3.016: ERROR CPRNC failed to open files
+ I am aware that others have also seen this behavior.
+
+Other details
+-------------
+Pull Requests that document the changes (include PR ids):
+ https://github.com/ESCOMP/ctsm/pull/2925
+
+===============================================================
+===============================================================
+Tag name: tmp-241219.n02.ctsm5.3.016
+Originator(s): glemieux (Gregory Lemieux, LBNL, glemieux@lbl.gov)
+Date: Wed 08 Jan 2025 10:52:49 AM MST
+One-line Summary: FATES hydro test update
+
+Purpose and description of changes
+----------------------------------
+
+This minor update reverts a temporary work around for FATES hydro system tests.
+The FATES tag is updated to capture the FATES-side fix to the issue that predicated
+the temporary testing workaround.
+
+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
+
+
+Bugs fixed
+----------
+List of CTSM issues fixed (include CTSM Issue # and description) [one per line]:
+
+ #2878 - Remove fates_allom_smode shell_command update in FatesColdHydro testmod
+
+Notes of particular relevance for developers:
+---------------------------------------------
+Changes to tests or testing:
+ FATES hydro tests will no long build a custom parameter file on the fly
+ The one FATES PVT test has been added to expected failure per #2919
+
+Testing summary: regular + fates
+----------------
+ [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 (see #2924)
+
+ 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: Yes, but only for aux_clm fates testmods
+
+ The FATES tag update includes a number of science and bug fix updates since the
+ last fates tag update, which results in non-B4B changes. These have been reviewed
+ and differ as expected.
+
+Other details
+-------------
+List any git submodules updated (cime, rtm, mosart, cism, fates, etc.):
+ fates: sci.1.79.3_api.37.0.0 -> sci.1.80.4_api.37.0.0
+
+Pull Requests that document the changes (include PR ids):
+(https://github.com/ESCOMP/ctsm/pull)
+ https://github.com/ESCOMP/CTSM/pull/2882
+
+===============================================================
+===============================================================
+Tag name: tmp-241219.n01.ctsm5.3.016
+Originator(s): slevis (Samuel Levis,UCAR/TSS,303-665-1310)
+Date: Tue 24 Dec 2024 03:43:01 PM MST
+One-line Summary: Merge b4b-dev
+
+Purpose and description of changes
+----------------------------------
+
+ #2869 Update temperature cost function for symbiotic Nfix in FUN
+
+
+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
+
+
+Bugs fixed
+----------
+List of CTSM issues fixed (include CTSM Issue # and description) [one per line]:
+ Resolves #2869
+
+Notes of particular relevance for users
+---------------------------------------
+Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables):
+ New namelist variable: nfix_method
+
+Changes made to namelist defaults (e.g., changed parameter values):
+ nfix_method default: Houlton
+ other available option: Bytnerowicz
+
+
+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 ------- machine seems problematic at the moment
+
+
+Answer changes
+--------------
+
+Changes answers relative to baseline: No, but read caveat.
+
+ Summarize any changes to answers, i.e.,
+ - what code configurations: tests with ciso_cwd_hr testmods
+ - what platforms/compilers: all
+ - nature of change: irrelevant
+
+ Explanation:
+ "diff ctsm60_ciso_cwd_hr_params.c241119.asc ctsm60_params.c241119.asc"
+ differ ONLY in the value of ceta. The previous paramfile for ciso_cwd_hr
+ showed additional diffs, likely due to problems that we have seen before
+ when generating new paramfiles. The ciso_cwd_hr tests would not have shown
+ diffs had the previous paramfile been correct, so I only mention the diffs
+ here for the record.
+
+
+Other details
+-------------
+Pull Requests that document the changes (include PR ids):
+ https://github.com/ESCOMP/ctsm/pull/2869
+
+===============================================================
+===============================================================
+Tag name: ctsm5.3.016
+Originator(s): jedwards and erik (Erik Kluzek,UCAR/TSS,303-497-1326)
+Date: Thu 19 Dec 2024 04:23:39 PM MST
+One-line Summary: Rpointer files for restart now have the simulation timestamp in the filename
+
+Purpose and description of changes
+----------------------------------
+
+Add the simulation timestamp to the rpointer files. Also update submodules with this change
+in CMEPS and CDEPS as well as updated cime to handle it. See the notes below for an explaination
+about this.
+
+Add a "clm" level directory under usermods_dirs so that the component where user-mods reside
+is declared and to make them function the same as test-mods.
+
+
+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
+---------------------------------------
+
+Caveats for users (e.g., need to interpolate initial conditions):
+ There are text files that CESM uses to keep track of how far simulations
+ have progressed. They are simple text files that point to the filename of the latest
+ restart file for that component. There is such a file for each component. So for CTSM I cases
+ that's: lnd, cpl, and atm (and rof if it's active). Normally for just extending the length
+ of a simulations -- the user doesn't have to worry about these files.
+
+ However, if there was a problem when a simulation shut down, it's possible that
+ different components will have mismatched restarts and rpointer files. In the past this
+ meant figuring out what restart file should be pointed to in each component rpointer file
+ and correcting it by hand in an editor. There was only the final set of rpointer files that
+ was kept for a case.
+
+ Now, with this update the lnd, cpl, and atm rpointer files have the simulation date in the filenames.
+ So it's easy to spot if the restarts are mismatched for one of the components. Also since
+ there are matching rpointer files for each time restarts are created it's now easier to make
+ sure restarts and rpointer files are all correctly matched. And for a user to take a set of restarts
+ and matching rpointer files to start up from for any part of an existing simulation to start from.
+ This means you don't have to hand edit the rpointer files and make sure you don't make a mistake
+ when you do.
+
+ Old rpointer filenames:
+ rpointer.atm
+ rpointer.cpl
+ rpointer.lnd
+
+ New names:
+ rpointer.atm.YYYY-MM-DD-SSSSS
+ rpointer.cpl.YYYY-MM-DD-SSSSS
+ rpointer.lnd.YYYY-MM-DD-SSSSS
+
+ Where YYYY-MM-DD-SSSSS is the year month day and seconds into the day for the simulation timestamp
+ For example rpointer.lnd.2000-01-01-00000 for a rpointer file for starting at Jan/1st/2000 at midnight
+
+
+ NOTE: BACKWARDS COMPATIBLE
+ For all the components you can use both the new format or old format for the rpointer filenames.
+ So if you are restarting from an existing case before ctsm5.3.016 you CAN use those rpointer filenames
+ that don't have the timestamps in the name.
+
+Notes of particular relevance for developers:
+---------------------------------------------
+
+Caveats for developers (e.g., code that is duplicated that requires double maintenance):
+ There's a lot of testing that failed with this tag, that we'll need to fix soonish.
+ There are issues on the problems and they are marked as expected fails
+
+ On Izumi I had to rebuild a bunch of tests as they failed with run_sys_tests submitted under ctsm_pylib.
+
+ Note, also that MOSART and RTM were NOT updated to use the new format.
+
+Testing summary: regular
+----------------
+ [PASS means all tests PASS; OK means tests PASS other than expected fails.]
+
+ build-namelist tests (if CLMBuildNamelist.pm has changed):
+
+ derecho - PASS (inventoryfileDNE fails as expected)
+
+ 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
+
+If the tag used for baseline comparisons was NOT the previous tag, note that here:
+
+
+Answer changes
+--------------
+
+Changes answers relative to baseline: No bit-for-bit
+
+Other details
+-------------
+
+List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): cime, cmeps, cdeps
+ cime to cime6.1.49
+ cmeps to cmeps1.0.32
+ cdeps to cdeps1.0.61
+
+Pull Requests that document the changes (include PR ids):
+(https://github.com/ESCOMP/ctsm/pull)
+ #2757 -- add timestamp to rpointer file
+
+===============================================================
+===============================================================
+Tag name: ctsm5.3.015
+Originator(s): erik (Erik Kluzek,UCAR/TSS,303-497-1326)
+Date: Wed 18 Dec 2024 02:09:40 PM MST
+One-line Summary: Update cdeps with cam7 nextsw cday changes
+
+Purpose and description of changes
+----------------------------------
+
+Update CDEPS with changes for CAM7 nextsw_cday handling. This changes answers
+for CPLHIST cases. We also changed the cam7LndTuningMode tests to turn this on
+for DATM to more closely match what CAM7 does.
+
+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
+
+
+Bugs fixed
+----------
+
+List of CTSM issues fixed (include CTSM Issue # and description) [one per line]:
+ Fixes: #2897 Update CDEPS to bring in DATM change regarding nextsw_cday changing answers in CPLHIST cases
+
+Notes of particular relevance for users
+---------------------------------------
+
+Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables):
+ New namelist parameter for DATM: nextsw_cday_calc
+ defaults to cam6, set to cam7 for CPLHIST and specific tests
+ Only applies if iradsw is NOT 0 or 1
+
+ Here is the documention on this in the namelist_definitial XML for DATM:
++ For CPLHIST cases, this should agree with the version of CAM (or other atmosphere
++ model) used to generate the CPLHIST forcings; the valid values for this variable are
++ based on this: 'cam6' is appropriate for cases generated with the driver ordering in
++ CAM6 and earlier, and 'cam7' is appropriate for cases generated with the driver
++ ordering in CAM7 and later.
++
++ For 'cam6', the next radiation timestep is set to the present time plus 2 timesteps
++ when mod(tod+dtime,delta_radsw)==0. For 'cam7', the next radiation timestep is set
++ to the present time plus 1 timestep when mod(tod,delta_radsw)==0.
+
+Notes of particular relevance for developers:
+---------------------------------------------
+
+Changes to tests or testing:
+ cam7LndTuningMode testmods changed so that iradsw==-1 (hourly) , and nextsw_cday_calc='cam7'
+
+Testing summary: regular
+----------------
+
+ regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing):
+
+ derecho ----- OK
+ izumi ------- OK
+
+If the tag used for baseline comparisons was NOT the previous tag, note that here:
+
+
+Answer changes
+--------------
+
+Changes answers relative to baseline: Only for CPLHIST cases, otherwise bit-for-bit
+
+ Summarize any changes to answers, i.e.,
+ - what code configurations: Compsets with DATM^CPLHIST
+ - what platforms/compilers: All
+ - nature of change; larger than roundoff/same climate
+
+Other details
+-------------
+
+List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): cdeps share
+ cdeps to cdeps1.0.57
+ share to share1.1.6
+
+Pull Requests that document the changes (include PR ids):
+(https://github.com/ESCOMP/ctsm/pull)
+ #2900 -- Update cdeps with cam7 nextsw cday changes
+
+===============================================================
+===============================================================
Tag name: ctsm5.3.014
Originator(s): multiple (see contributors below)
Date: Tue 03 Dec 2024 04:31:03 PM MST
diff --git a/doc/ChangeSum b/doc/ChangeSum
index 1ac751ea03..98739639a4 100644
--- a/doc/ChangeSum
+++ b/doc/ChangeSum
@@ -1,5 +1,14 @@
Tag Who Date Summary
============================================================================================================================
+ ctsm5.3.020 samrabin 01/17/2025 Merge b4b-dev
+ ctsm5.3.019 olyson 01/14/2025 Stop running 0th time step
+ ctsm5.3.018 slevis 01/10/2025 Change history time to be the middle of the time bounds
+ ctsm5.3.017 slevis 01/09/2025 Merge tmp-241219 branch to master
+tmp-241219.n03.ctsm5.3.016 01/09/2025 Bug fix for izumi nag tests to pass (slevis)
+tmp-241219.n02.ctsm5.3.016 01/08/2025 FATES hydro test update (glemieux)
+tmp-241219.n01.ctsm5.3.016 12/24/2024 Merge b4b-dev (slevis)
+ ctsm5.3.016 erik 12/19/2024 Rpointer files for restart now have the simulation date in the filename
+ ctsm5.3.015 erik 12/18/2024 Update cdeps with cam7 nextsw cday changes
ctsm5.3.014 erik 12/03/2024 Bring in several fixes for testing in the previous cesm3_0_beta03/04 tags
ctsm5.3.013 erik 11/26/2024 Merge b4b-dev
ctsm5.3.012 afoster 11/13/2024 update fates tag
diff --git a/python/ctsm/crop_calendars/cropcal_module.py b/python/ctsm/crop_calendars/cropcal_module.py
index 719d352665..3ea084e1d2 100644
--- a/python/ctsm/crop_calendars/cropcal_module.py
+++ b/python/ctsm/crop_calendars/cropcal_module.py
@@ -443,10 +443,7 @@ def import_output(
)
# Convert time axis to integer year, saving original as 'cftime'
- this_ds_gs = this_ds_gs.assign_coords(
- {"cftime": this_ds["time_bounds"].isel({"hist_interval": 0})}
- )
- this_ds_gs = this_ds_gs.assign_coords({"time": [t.year for t in this_ds_gs["cftime"].values]})
+ this_ds_gs = convert_time_to_int_year(filename, this_ds, this_ds_gs)
# Get number of harvests
this_ds_gs["NHARVESTS"] = (this_ds_gs["GDDHARV_PERHARV"] > 0).sum(dim="mxharvests")
@@ -458,6 +455,35 @@ def import_output(
return this_ds_gs, any_bad
+def convert_time_to_int_year(filename, this_ds, this_ds_gs):
+ """
+ Convert time axis to integer year, saving original as 'cftime'
+ """
+ if "time_bounds" in this_ds:
+ # Always true before PR #2838, when even files with all instantaneous variables got
+ # time_bounds saved. After that PR (and before the segregation of instantaneous and other
+ # variables onto separate files), files with an instantaneous variable first in their list
+ # do not get time_bounds saved.
+ this_ds_gs = this_ds_gs.assign_coords(
+ {"cftime": this_ds["time_bounds"].isel({"hist_interval": 0})}
+ )
+ this_ds_gs = this_ds_gs.assign_coords(
+ {"time": [t.year for t in this_ds_gs["cftime"].values]}
+ )
+ elif this_ds["time"].attrs["long_name"] == "time at end of time step":
+ # This is an "instantaneous file."
+ this_ds_gs = this_ds_gs.assign_coords({"cftime": this_ds["time"]})
+ this_ds_gs = this_ds_gs.assign_coords(
+ {"time": [t.year - 1 for t in this_ds_gs["cftime"].values]}
+ )
+ else:
+ raise RuntimeError(
+ f"{filename} is neither an instantaneous nor a combined/non-instantaneous file."
+ )
+
+ return this_ds_gs
+
+
def handle_zombie_crops(this_ds):
"""
When doing transient runs, it's somehow possible for crops in newly-active patches to be
diff --git a/python/ctsm/crop_calendars/generate_gdds_functions.py b/python/ctsm/crop_calendars/generate_gdds_functions.py
index 81c71e2a51..e83eb7bb50 100644
--- a/python/ctsm/crop_calendars/generate_gdds_functions.py
+++ b/python/ctsm/crop_calendars/generate_gdds_functions.py
@@ -60,6 +60,7 @@ def error(logger, string):
"""
Simultaneously print ERROR messages to console and to log file
"""
+ print(string)
logger.error(string)
raise RuntimeError(string)
@@ -271,7 +272,7 @@ def import_and_process_1yr(
else:
chunks = None
- # Get h2 file (list)
+ # Get h1 file (list)
h1_pattern = os.path.join(indir, "*h1.*.nc")
h1_filelist = glob.glob(h1_pattern)
if not h1_filelist:
@@ -551,13 +552,14 @@ def import_and_process_1yr(
log(logger, " Importing accumulated GDDs...")
clm_gdd_var = "GDDACCUM"
my_vars = [clm_gdd_var, "GDDHARV"]
- pattern = os.path.join(indir, f"*h2.{this_year-1}-01-01*.nc")
- h2_files = glob.glob(pattern)
- if not h2_files:
- pattern = os.path.join(indir, f"*h2.{this_year-1}-01-01*.nc.base")
+ patterns = [f"*h2.{this_year-1}-01*.nc", f"*h2.{this_year-1}-01*.nc.base"]
+ for p in patterns:
+ pattern = os.path.join(indir, p)
h2_files = glob.glob(pattern)
- if not h2_files:
- error(logger, f"No files found matching pattern '*h2.{this_year-1}-01-01*.nc(.base)'")
+ if h2_files:
+ break
+ if not h2_files:
+ error(logger, f"No files found matching patterns: {patterns}")
h2_ds = import_ds(
h2_files,
my_vars=my_vars,
diff --git a/python/ctsm/lilac_build_ctsm.py b/python/ctsm/lilac_build_ctsm.py
index d7b92517c5..c1350005a8 100644
--- a/python/ctsm/lilac_build_ctsm.py
+++ b/python/ctsm/lilac_build_ctsm.py
@@ -830,7 +830,7 @@ def _stage_runtime_inputs(build_dir, no_pnetcdf):
shutil.copyfile(
src=os.path.join(
- path_to_ctsm_root(), "cime_config", "usermods_dirs", "lilac", "user_nl_ctsm"
+ path_to_ctsm_root(), "cime_config", "usermods_dirs", "clm", "lilac", "user_nl_ctsm"
),
dst=os.path.join(build_dir, _RUNTIME_INPUTS_DIRNAME, "user_nl_ctsm"),
)
diff --git a/python/ctsm/site_and_regional/modify_singlept_site_neon.py b/python/ctsm/site_and_regional/modify_singlept_site_neon.py
index 5c28bd3582..d0a86a9e3c 100755
--- a/python/ctsm/site_and_regional/modify_singlept_site_neon.py
+++ b/python/ctsm/site_and_regional/modify_singlept_site_neon.py
@@ -60,7 +60,7 @@
# -- valid neon sites
valid = glob.glob(
- os.path.join(path_to_ctsm_root(), "cime_config", "usermods_dirs", "NEON", "[!d]*")
+ os.path.join(path_to_ctsm_root(), "cime_config", "usermods_dirs", "clm", "NEON", "[!d]*")
)
valid_neon_sites = [x[-4:] for x in valid] # last 4 letters in each string
diff --git a/python/ctsm/site_and_regional/neon_site.py b/python/ctsm/site_and_regional/neon_site.py
index 70414d9e5c..73264719ae 100755
--- a/python/ctsm/site_and_regional/neon_site.py
+++ b/python/ctsm/site_and_regional/neon_site.py
@@ -45,7 +45,9 @@ def build_base_case(
):
if user_mods_dirs is None:
user_mods_dirs = [
- os.path.join(self.cesmroot, "cime_config", "usermods_dirs", "NEON", self.name)
+ os.path.join(
+ self.cesmroot, "cime_config", "usermods_dirs", "clm", "NEON", self.name
+ )
]
case_path = super().build_base_case(cesmroot, output_root, res, compset, user_mods_dirs)
@@ -94,7 +96,7 @@ def run_case(
name of experiment, default False
"""
user_mods_dirs = [
- os.path.join(self.cesmroot, "cime_config", "usermods_dirs", "NEON", self.name)
+ os.path.join(self.cesmroot, "cime_config", "usermods_dirs", "clm", "NEON", self.name)
]
tower_type = "NEON"
diff --git a/python/ctsm/site_and_regional/plumber2_usermods.py b/python/ctsm/site_and_regional/plumber2_usermods.py
index d98899771b..aba6dfa336 100644
--- a/python/ctsm/site_and_regional/plumber2_usermods.py
+++ b/python/ctsm/site_and_regional/plumber2_usermods.py
@@ -24,7 +24,7 @@ def write_usermods(
Write information to be added to user mods
"""
- site_dir = os.path.join("../../cime_config/usermods_dirs/PLUMBER2/", site)
+ site_dir = os.path.join("../../cime_config/usermods_dirs/clm/PLUMBER2/", site)
if not os.path.isdir(site_dir):
os.makedirs(site_dir, exist_ok=True)
diff --git a/python/ctsm/site_and_regional/run_neon.py b/python/ctsm/site_and_regional/run_neon.py
index 3acbf435b1..ac72554d46 100755
--- a/python/ctsm/site_and_regional/run_neon.py
+++ b/python/ctsm/site_and_regional/run_neon.py
@@ -177,7 +177,7 @@ def main(description):
# The [!Fd]* portion means that we won't retrieve cases that start with:
# F (FATES) or d (default). We should be aware of adding cases that start with these.
valid_neon_sites = glob.glob(
- os.path.join(cesmroot, "cime_config", "usermods_dirs", "NEON", "[!Fd]*")
+ os.path.join(cesmroot, "cime_config", "usermods_dirs", "clm", "NEON", "[!Fd]*")
)
valid_neon_sites = sorted([v.split("/")[-1] for v in valid_neon_sites])
diff --git a/python/ctsm/site_and_regional/tower_site.py b/python/ctsm/site_and_regional/tower_site.py
index 31c959cac7..2ff8999408 100644
--- a/python/ctsm/site_and_regional/tower_site.py
+++ b/python/ctsm/site_and_regional/tower_site.py
@@ -79,21 +79,50 @@ def build_base_case(
Args:
self:
The NeonSite object
- base_root (str):
- root of the base_case CIME
+ cesmroot (str):
+ root of the CESM code to run
+ output_root (str):
+ root of the output directory to write to
res (str):
base_case resolution or gridname
compset (str):
base case compset
+ user_mods_dirs (str):
+ path to the user-mod-directory to use
overwrite (bool) :
Flag to overwrite the case if exists
+ setup_only (bool) :
+ Flag to only do the setup phase
"""
+ #
+ # Error checking on the input
+ #
+ if not os.path.isdir(cesmroot):
+ abort("Input cesmroot directory does NOT exist: " + str(cesmroot))
+ if not isinstance(res, str):
+ abort("Input res is NOT a string as expected: " + str(res))
+ if not isinstance(compset, str):
+ abort("Input compset is NOT a string as expected: " + str(compset))
+ if not isinstance(overwrite, bool):
+ abort("Input compset is NOT a boolean as expected: " + str(compset))
+ if not isinstance(setup_only, bool):
+ abort("Input setup_only is NOT a boolean as expected: " + str(setup_only))
+ if not isinstance(user_mods_dirs, list):
+ abort("Input user_mods_dirs is NOT a list as expected: " + str(user_mods_dirs))
+ for dir in user_mods_dirs:
+ if not os.path.isdir(dir):
+ abort("Input user_mods_dirs directory does NOT exist: " + str(dir))
+
print("---- building a base case -------")
# pylint: disable=attribute-defined-outside-init
self.base_case_root = output_root
# pylint: enable=attribute-defined-outside-init
if not output_root:
output_root = os.getcwd()
+
+ if not os.path.isdir(output_root):
+ abort("Input output_root directory does NOT exist: " + str(output_root))
+
case_path = os.path.join(output_root, self.name)
logger.info("base_case_name : %s", self.name)
diff --git a/python/ctsm/test/test_sys_modify_singlept_site_neon.py b/python/ctsm/test/test_sys_modify_singlept_site_neon.py
index 76a78c3db5..ed7e52ed38 100755
--- a/python/ctsm/test/test_sys_modify_singlept_site_neon.py
+++ b/python/ctsm/test/test_sys_modify_singlept_site_neon.py
@@ -55,7 +55,7 @@ def test_modify_site(self):
sys.argv = [
"modify_singlept_site_neon",
"--neon_site",
- path_to_ctsm_root() + "/ctsm/cime_config/usermods_dirs/NEON/ABBY",
+ path_to_ctsm_root() + "/ctsm/cime_config/usermods_dirs/clm/NEON/ABBY",
]
# TODO: the above requires a full path instead of site name
# because of how run_neon is configured.
diff --git a/python/ctsm/test/test_unit_neon_arg_parse.py b/python/ctsm/test/test_unit_neon_arg_parse.py
index 4a5b0b9e6c..141b41fbc7 100755
--- a/python/ctsm/test/test_unit_neon_arg_parse.py
+++ b/python/ctsm/test/test_unit_neon_arg_parse.py
@@ -60,7 +60,7 @@ def test_function(self):
description = ""
cesmroot = path_to_ctsm_root()
valid_neon_sites = glob.glob(
- os.path.join(cesmroot, "cime_config", "usermods_dirs", "NEON", "[!d]*")
+ os.path.join(cesmroot, "cime_config", "usermods_dirs", "clm", "NEON", "[!d]*")
)
valid_neon_sites = sorted([v.split("/")[-1] for v in valid_neon_sites])
parsed_arguments = get_parser(sys.argv, description, valid_neon_sites)
diff --git a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py
index fdf9466763..bde92fcf18 100755
--- a/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py
+++ b/python/ctsm/toolchain/gen_mksurfdata_jobscript_multi.py
@@ -202,11 +202,11 @@ def main():
"ultra_hi_res_no_crop": ["mpasa15", "mpasa3p75"],
"standard_res": ["360x720cru", "0.9x1.25", "1.9x2.5", "C96", "mpasa120"],
"standard_res_no_f09": ["360x720cru", "1.9x2.5", "C96", "mpasa120"],
- "low_res": ["4x5", "10x15", "ne3np4.pg3"],
+ "low_res": ["4x5", "10x15", "ne3np4.pg3", "ne3np4"],
"mpasa480": ["mpasa480"],
"nldas_res": ["0.125nldas2"],
"5x5_amazon": ["5x5_amazon"],
- "ne3": ["ne3np4.pg3"],
+ "ne3": ["ne3np4", "ne3np4.pg3"],
"ne16": ["ne16np4.pg3"],
"ne30": ["ne30np4.pg3", "ne30np4.pg2", "ne30np4"],
"ne0np4": [
diff --git a/share b/share
index f6f31fd61c..c5e7603c29 160000
--- a/share
+++ b/share
@@ -1 +1 @@
-Subproject commit f6f31fd61cb8f80aee97311fcca64b3e26b0202c
+Subproject commit c5e7603c29ea5e2fe93ca16d88bc9c7f16175bcd
diff --git a/src/biogeochem/CNFUNMod.F90 b/src/biogeochem/CNFUNMod.F90
index a6614fe4b9..0af5efe580 100644
--- a/src/biogeochem/CNFUNMod.F90
+++ b/src/biogeochem/CNFUNMod.F90
@@ -26,7 +26,7 @@ module CNFUNMod
use pftconMod , only : pftcon, npcropmin
use decompMod , only : bounds_type
use clm_varctl , only : use_nitrif_denitrif,use_flexiblecn
- use CNSharedParamsMod , only : use_matrixcn
+ use CNSharedParamsMod , only : use_matrixcn
use abortutils , only : endrun
use CNVegstateType , only : cnveg_state_type
use CNVegCarbonStateType , only : cnveg_carbonstate_type
@@ -48,12 +48,18 @@ module CNFUNMod
private
!
! !PUBLIC MEMBER FUNCTIONS:
+ public :: CNFUNReadNML ! Read in namelist variables
public:: readParams ! Read in parameters needed for FUN
public:: CNFUNInit ! FUN calculation initialization
public:: CNFUN ! Run FUN
+ character(len=25) :: nfix_method ! choice of nfix parameterization
+
type, private :: params_type
real(r8) :: ndays_off ! number of days to complete leaf offset
+ real(r8), allocatable :: nfix_tmin(:) ! A BNF parameter
+ real(r8), allocatable :: nfix_topt(:) ! A BNF parameter
+ real(r8), allocatable :: nfix_tmax(:) ! A BNF parameter
end type params_type
!
@@ -82,17 +88,73 @@ module CNFUNMod
contains
!--------------------------------------------------------------------
!---
+ subroutine CNFUNReadNML(NLFilename)
+ !
+ ! !DESCRIPTION:
+ ! Read in namelist variables
+ !
+ ! !USES:
+ use fileutils , only : getavu, relavu, opnfil
+ use shr_nl_mod , only : shr_nl_find_group_name
+ use spmdMod , only : masterproc, mpicom
+ use shr_mpi_mod, only : shr_mpi_bcast
+ use clm_varctl , only : iulog
+ use spmdMod , only : MPI_CHARACTER
+ !
+ ! !ARGUMENTS:
+ character(len=*), intent(in) :: NLFilename ! Namelist filename
+ !
+ ! !LOCAL VARIABLES:
+ integer :: ierr ! error code
+ integer :: unitn ! unit for namelist file
+
+ character(len=*), parameter :: nmlname = 'cnfun_inparm'
+ !-----------------------------------------------------------------------
+
+ namelist /cnfun_inparm/ nfix_method
+
+ ! Initialize options to default values, in case they are not specified in
+ ! the namelist
+
+ if (masterproc) then
+ unitn = getavu()
+ write(iulog,*) 'Read in '//nmlname//' namelist'
+ call opnfil (NLFilename, unitn, 'F')
+ call shr_nl_find_group_name(unitn, nmlname, status=ierr)
+ if (ierr == 0) then
+ read(unitn, nml=cnfun_inparm, iostat=ierr)
+ if (ierr /= 0) then
+ call endrun(msg="ERROR reading "//nmlname//"namelist"//errmsg(sourcefile, __LINE__))
+ end if
+ else
+ call endrun(msg="ERROR finding "//nmlname//"namelist"//errmsg(sourcefile, __LINE__))
+ end if
+ call relavu( unitn )
+ end if
+
+ call mpi_bcast (nfix_method, len(nfix_method), MPI_CHARACTER, 0, mpicom, ierr)
+
+ if (masterproc) then
+ write(iulog,*) ' '
+ write(iulog,*) nmlname//' settings:'
+ write(iulog,nml=cnfun_inparm)
+ write(iulog,*) ' '
+ end if
+
+ end subroutine CNFUNReadNML
+
+ !-----------------------------------------------------------------------
subroutine readParams ( ncid )
!
! !USES:
use ncdio_pio , only : file_desc_t,ncd_io
+ use clm_varpar, only : mxpft
! !ARGUMENTS:
implicit none
type(file_desc_t),intent(inout) :: ncid ! pio netCDF file id
!
! !LOCAL VARIABLES:
- character(len=32) :: subname = 'CNFUNParamsType'
character(len=100) :: errCode = '-Error reading in parameters file:'
logical :: readv ! has variable been read in or not
real(r8) :: tempr ! temporary to read in parameter
@@ -107,6 +169,20 @@ subroutine readParams ( ncid )
if ( .not. readv ) call endrun( msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__))
params_inst%ndays_off=tempr
+ allocate(params_inst%nfix_tmin(0:mxpft))
+ tString='nfix_tmin'
+ call ncd_io(trim(tString), params_inst%nfix_tmin(:), 'read', ncid, readvar=readv)
+ if ( .not. readv ) call endrun(msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__))
+
+ allocate(params_inst%nfix_topt(0:mxpft))
+ tString='nfix_topt'
+ call ncd_io(trim(tString), params_inst%nfix_topt(:), 'read', ncid, readvar=readv)
+ if ( .not. readv ) call endrun(msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__))
+
+ allocate(params_inst%nfix_tmax(0:mxpft))
+ tString='nfix_tmax'
+ call ncd_io(trim(tString), params_inst%nfix_tmax(:), 'read', ncid, readvar=readv)
+ if ( .not. readv ) call endrun(msg=trim(errCode)//trim(tString)//errMsg(sourcefile, __LINE__))
end subroutine readParams
@@ -135,7 +211,6 @@ subroutine CNFUNInit (bounds,cnveg_state_inst,cnveg_carbonstate_inst,cnveg_nitro
integer :: nstep ! time step number
integer :: nstep_fun ! Number of
! atmospheric timesteps between calls to FUN
- character(len=32) :: subname = 'CNFUNInit'
!--------------------------------------------------------------------
!---
@@ -290,7 +365,7 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp&
real(r8) :: litterfall_n(bounds%begp:bounds%endp) ! N loss based on the leafc to litter (gN/m2)
real(r8) :: litterfall_n_step(bounds%begp:bounds%endp,1:nstp) ! N loss based on the leafc to litter (gN/m2)
real(r8) :: litterfall_c_step(bounds%begp:bounds%endp,1:nstp) ! N loss based on the leafc to litter (gN/m2)
- real(r8) :: tc_soisno(bounds%begc:bounds%endc,1:nlevdecomp) ! Soil temperature (degrees Celsius)
+ real(r8) :: tc_soisno(bounds%begc:bounds%endc,1:nlevdecomp) ! Soil temperature (degrees Celsius)
real(r8) :: npp_remaining(bounds%begp:bounds%endp,1:nstp) ! A temporary variable for npp_remaining(gC/m2)
real(r8) :: n_passive_step(bounds%begp:bounds%endp,1:nstp) ! N taken up by transpiration at substep(gN/m2)
real(r8) :: n_passive_acc(bounds%begp:bounds%endp) ! N acquired by passive uptake (gN/m2)
@@ -460,14 +535,13 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp&
real(r8) :: total_N_resistance ! C to of N for whole soil -leaf
! pathway
real(r8) :: free_RT_frac=0.0_r8 !fraction of N retranslocation which is automatic/free.
- ! SHould be made into a PFT parameter.
+ ! Should be made into a PFT parameter.
real(r8) :: paid_for_n_retrans
real(r8) :: free_n_retrans
real(r8) :: total_c_spent_retrans
real(r8) :: total_c_accounted_retrans
-
!------end of not_use_nitrif_denitrif------!
!--------------------------------------------------------------------
!------------
@@ -495,9 +569,10 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp&
! fixers, 2 for non fixers. This will become redundant with the
! 'fixer' parameter if it works.
+ character(len=100) :: errCode
!--------------------------------------------------------------------
!---------------------------------
- associate(ivt => patch%itype , & ! Input: [integer (:) ] p
+ associate(ivt => patch%itype , & ! Input: [integer (:) ] p
leafcn => pftcon%leafcn , & ! Input: leaf C:N (gC/gN)
season_decid => pftcon%season_decid , & ! Input: binary flag for seasonal
! -deciduous leaf habit (0 or 1)
@@ -522,10 +597,10 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp&
perecm => pftcon%perecm , & ! Input: The fraction of ECM
! -associated PFT
grperc => pftcon%grperc , & ! Input: growth percentage
- fun_cn_flex_a => pftcon%fun_cn_flex_a , & ! Parameter a of FUN-flexcn link code (def 5)
- fun_cn_flex_b => pftcon%fun_cn_flex_b , & ! Parameter b of FUN-flexcn link code (def 200)
- fun_cn_flex_c => pftcon%fun_cn_flex_c , & ! Parameter b of FUN-flexcn link code (def 80)
- FUN_fracfixers => pftcon%FUN_fracfixers , & ! Fraction of C that can be used for fixation.
+ fun_cn_flex_a => pftcon%fun_cn_flex_a , & ! Parameter a of FUN-flexcn link code (def 5)
+ fun_cn_flex_b => pftcon%fun_cn_flex_b , & ! Parameter b of FUN-flexcn link code (def 200)
+ fun_cn_flex_c => pftcon%fun_cn_flex_c , & ! Parameter b of FUN-flexcn link code (def 80)
+ FUN_fracfixers => pftcon%FUN_fracfixers , & ! Fraction of C that can be used for fixation.
leafcn_offset => cnveg_state_inst%leafcn_offset_patch , & ! Output:
! [real(r8) (:)] Leaf C:N used by FUN
plantCN => cnveg_state_inst%plantCN_patch , & ! Output: [real(r8) (:)] Plant
@@ -1041,9 +1116,7 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp&
npp_to_nonmyc_nh4(:) = 0.0_r8
npp_to_fixation(:) = 0.0_r8
npp_to_retrans(:) = 0.0_r8
-
-
-
+
unmetDemand = .TRUE.
plant_ndemand_pool_step(p,istp) = plant_ndemand_pool(p) * permyc(p,istp)
npp_remaining(p,istp) = availc_pool(p) * permyc(p,istp)
@@ -1051,32 +1124,42 @@ subroutine CNFUN(bounds,num_soilc, filter_soilc,num_soilp&
! if (plant_ndemand_pool_step(p,istp) .gt. 0._r8) then !
! plant_ndemand_pool_step > 0.0
-
+
do j = 1, nlevdecomp
tc_soisno(c,j) = t_soisno(c,j) - tfrz
+
if(pftcon%c3psn(patch%itype(p)).eq.1)then
fixer=1
else
fixer=0
endif
- costNit(j,icostFix) = fun_cost_fix(fixer,a_fix(ivt(p)),b_fix(ivt(p))&
- ,c_fix(ivt(p)) ,big_cost,crootfr(p,j),s_fix(ivt(p)),tc_soisno(c,j))
+
+ select case (nfix_method)
+ case ('Houlton')
+ costNit(j,icostFix) = fun_cost_fix(fixer, &
+ a_fix(ivt(p)), b_fix(ivt(p)), c_fix(ivt(p)), &
+ big_cost, crootfr(p,j), s_fix(ivt(p)), tc_soisno(c,j))
+ case ('Bytnerowicz') ! no acclimation calculation
+ costNit(j,icostFix) = fun_cost_fix_Bytnerowicz_noAcc(fixer, &
+ params_inst%nfix_tmin(ivt(p)), params_inst%nfix_topt(ivt(p)), params_inst%nfix_tmax(ivt(p)), &
+ big_cost,crootfr(p,j), s_fix(ivt(p)), tc_soisno(c,j))
+ case default
+ errCode = ' ERROR: unknown nfix_method value: ' // nfix_method
+ call endrun( msg=trim(errCode) // errMsg(sourcefile, __LINE__))
+ end select
+
end do
cost_fix(p,1:nlevdecomp) = costNit(:,icostFix)
!--------------------------------------------------------------------
- !------------
! If passive uptake is insufficient, consider fixation,
! mycorrhizal
! non-mycorrhizal, storage, and retranslocation.
!--------------------------------------------------------------------
- !------------
!--------------------------------------------------------------------
- !------------
! Costs of active uptake.
!--------------------------------------------------------------------
- !------------
!------Mycorrhizal Uptake Cost-----------------!
do j = 1,nlevdecomp
rootc_dens_step = rootc_dens(p,j) * permyc(p,istp)
@@ -1608,6 +1691,44 @@ real(r8) function fun_cost_fix(fixer,a_fix,b_fix,c_fix,big_cost,crootfr,s_fix, t
end if ! ends up with the fixer or non-fixer decision
end function fun_cost_fix
+
+
+!=========================================================================================
+ real(r8) function fun_cost_fix_Bytnerowicz_noAcc(fixer,nfix_tmin,nfix_topt,nfix_tmax,big_cost,crootfr,s_fix, tc_soisno)
+
+! Description:
+! Calculate the cost of fixing N by nodules.
+! Code Description:
+! This code is written to CTSM5.1 by Will Wieder 11/17/2022, modified for CLM6 11/01/2024
+
+ implicit none
+!--------------------------------------------------------------------------
+! Function result.
+!--------------------------------------------------------------------------
+! real(r8) , intent(out) :: cost_of_n !!! cost of fixing N (kgC/kgN)
+!--------------------------------------------------------------------------
+ integer, intent(in) :: fixer ! flag indicating if plant is a fixer
+ ! 1=yes, otherwise no.
+ real(r8), intent(in) :: nfix_tmin ! As in Bytnerowicz et al. (2022)
+ real(r8), intent(in) :: nfix_topt ! As in Bytnerowicz et al. (2022)
+ real(r8), intent(in) :: nfix_tmax ! As in Bytnerowicz et al. (2022)
+ real(r8), intent(in) :: big_cost ! an arbitrary large cost (gC/gN)
+ real(r8), intent(in) :: crootfr ! fraction of roots for carbon that are in this layer
+ real(r8), intent(in) :: s_fix ! Inverts the temperature function for a cost function
+ real(r8), intent(in) :: tc_soisno ! soil temperature (degrees Celsius)
+
+ if (fixer == 1 .and. crootfr > 1.e-6_r8 .and. tc_soisno > nfix_tmin .and. tc_soisno < nfix_tmax) then
+ fun_cost_fix_Bytnerowicz_noAcc = (-s_fix) / ( ((nfix_tmax-tc_soisno)/(nfix_tmax-nfix_topt))*&
+ ( ((tc_soisno-nfix_tmin)/(nfix_topt-nfix_tmin))**&
+ ((nfix_topt- nfix_tmin)/(nfix_tmax-nfix_topt)) ) )
+ fun_cost_fix_Bytnerowicz_noAcc = min(fun_cost_fix_Bytnerowicz_noAcc,big_cost)
+ else
+ fun_cost_fix_Bytnerowicz_noAcc = big_cost
+ end if ! ends up with the fixer or non-fixer decision
+
+ end function fun_cost_fix_Bytnerowicz_noAcc
+!=========================================================================================
+
!=========================================================================================
real(r8) function fun_cost_active(sminn_layer,big_cost,kc_active,kn_active,rootc_dens,crootfr,smallValue)
diff --git a/src/biogeochem/CNPhenologyMod.F90 b/src/biogeochem/CNPhenologyMod.F90
index 73eadbb1a9..5ad4fb1157 100644
--- a/src/biogeochem/CNPhenologyMod.F90
+++ b/src/biogeochem/CNPhenologyMod.F90
@@ -392,19 +392,7 @@ subroutine CNPhenology (bounds, num_soilc, filter_soilc, num_soilp, &
soilstate_inst, temperature_inst, atm2lnd_inst, wateratm2lndbulk_inst, cnveg_state_inst, &
cnveg_carbonstate_inst, cnveg_nitrogenstate_inst, cnveg_carbonflux_inst, cnveg_nitrogenflux_inst)
- ! BACKWARDS_COMPATIBILITY(wjs, 2022-02-03) Old restart files generated at the end
- ! of the year can indicate that a crop was panted on Jan 1, because that used to be
- ! the time given to the last time step of the year. This would cause problems if we
- ! ran CropPhenology in time step 0, because now time step 0 is labeled as Dec 31,
- ! so CropPhenology would see the crop as having been planted 364 days ago, and so
- ! would want to harvest this newly-planted crop. To avoid this situation, we avoid
- ! calling CropPhenology on time step 0.
- !
- ! This .not. is_first_step() condition can be removed either when we can rely on
- ! all restart files having been generated with
- ! https://github.com/ESCOMP/CTSM/issues/1623 resolved, or we stop having a time
- ! step 0 (https://github.com/ESCOMP/CTSM/issues/925).
- if (num_pcropp > 0 .and. .not. is_first_step()) then
+ if (num_pcropp > 0) then
call CropPhenology(num_pcropp, filter_pcropp, &
waterdiagnosticbulk_inst, temperature_inst, crop_inst, canopystate_inst, cnveg_state_inst, &
cnveg_carbonstate_inst, cnveg_nitrogenstate_inst, cnveg_carbonflux_inst, cnveg_nitrogenflux_inst, &
diff --git a/src/biogeochem/CNVegetationFacade.F90 b/src/biogeochem/CNVegetationFacade.F90
index 706d52da27..dd20ce50a2 100644
--- a/src/biogeochem/CNVegetationFacade.F90
+++ b/src/biogeochem/CNVegetationFacade.F90
@@ -1285,7 +1285,7 @@ subroutine EndOfTimeStepVegDynamics(this, bounds, num_natvegp, filter_natvegp, &
! Call dv (dynamic vegetation) at last time step of year
call t_startf('d2dgvm')
- if (is_end_curr_year() .and. .not. is_first_step()) then
+ if (is_end_curr_year()) then
! Get date info. kyr is used in lpj(). At end of first year, kyr = 2.
call get_curr_date(yr, mon, day, sec)
@@ -1337,7 +1337,7 @@ subroutine WriteHistory(this, bounds)
! Write to CNDV history buffer if appropriate
if (use_cndv) then
- if (is_end_curr_year() .and. .not. is_first_step()) then
+ if (is_end_curr_year()) then
call t_startf('clm_drv_io_hdgvm')
call CNDVHist( bounds, this%dgvs_inst )
if (masterproc) write(iulog,*) 'Annual CNDV calculations are complete'
diff --git a/src/biogeochem/CropType.F90 b/src/biogeochem/CropType.F90
index 0f650a4a9f..54395c4668 100644
--- a/src/biogeochem/CropType.F90
+++ b/src/biogeochem/CropType.F90
@@ -930,7 +930,7 @@ subroutine CropIncrementYear (this, num_pcropp, filter_pcropp)
! Update nyrs when it's the end of the year (unless it's the very start of the
! run). This assumes that, if this patch is active at the end of the year, then it was
! active for the whole year.
- if ((kmo == 1 .and. kda == 1 .and. mcsec == 0) .and. .not. is_first_step()) then
+ if ((kmo == 1 .and. kda == 1 .and. mcsec == 0)) then
do fp = 1, num_pcropp
p = filter_pcropp(fp)
diff --git a/src/biogeochem/SatellitePhenologyMod.F90 b/src/biogeochem/SatellitePhenologyMod.F90
index 3e9341f430..9412d34586 100644
--- a/src/biogeochem/SatellitePhenologyMod.F90
+++ b/src/biogeochem/SatellitePhenologyMod.F90
@@ -13,7 +13,7 @@ module SatellitePhenologyMod
use shr_log_mod , only : errMsg => shr_log_errMsg
use decompMod , only : bounds_type
use abortutils , only : endrun
- use clm_varctl , only : iulog, use_lai_streams
+ use clm_varctl , only : iulog, use_lai_streams, single_column
use perf_mod , only : t_startf, t_stopf
use spmdMod , only : masterproc, mpicom, iam
use laiStreamMod , only : lai_init, lai_advance, lai_interp
@@ -311,7 +311,7 @@ subroutine readAnnualVegetation (bounds, canopystate_inst)
call ncd_pio_openfile (ncid, trim(locfn), 0)
call ncd_inqfdims (ncid, isgrid2d, ni, nj, ns)
- if (ldomain%ns /= ns .or. ldomain%ni /= ni .or. ldomain%nj /= nj) then
+ if (.not. single_column .and. (ldomain%ns /= ns .or. ldomain%ni /= ni .or. ldomain%nj /= nj)) then
write(iulog,*)trim(subname), 'ldomain and input file do not match dims '
write(iulog,*)trim(subname), 'ldomain%ni,ni,= ',ldomain%ni,ni
write(iulog,*)trim(subname), 'ldomain%nj,nj,= ',ldomain%nj,nj
diff --git a/src/biogeochem/dynCNDVMod.F90 b/src/biogeochem/dynCNDVMod.F90
index 76382d175b..d95313772a 100644
--- a/src/biogeochem/dynCNDVMod.F90
+++ b/src/biogeochem/dynCNDVMod.F90
@@ -99,7 +99,7 @@ subroutine dynCNDV_interp( bounds, dgvs_inst)
patch%wtcol(p) = dgvs_inst%fpcgrid_patch(p) + &
wt1 * (dgvs_inst%fpcgridold_patch(p) - dgvs_inst%fpcgrid_patch(p))
- if (mon==1 .and. day==1 .and. sec==dtime .and. nstep>0) then
+ if (mon==1 .and. day==1 .and. sec==dtime) then
dgvs_inst%fpcgridold_patch(p) = dgvs_inst%fpcgrid_patch(p)
end if
end if
diff --git a/src/biogeophys/UrbanParamsType.F90 b/src/biogeophys/UrbanParamsType.F90
index 4b7b80e4fe..c6443897fe 100644
--- a/src/biogeophys/UrbanParamsType.F90
+++ b/src/biogeophys/UrbanParamsType.F90
@@ -9,9 +9,9 @@ module UrbanParamsType
use shr_log_mod , only : errMsg => shr_log_errMsg
use abortutils , only : endrun
use decompMod , only : bounds_type, subgrid_level_gridcell, subgrid_level_landunit
- use clm_varctl , only : iulog, fsurdat
+ use clm_varctl , only : iulog, fsurdat, single_column
use clm_varcon , only : grlnd, spval
- use LandunitType , only : lun
+ use LandunitType , only : lun
!
implicit none
save
@@ -26,21 +26,21 @@ module UrbanParamsType
!
! !PRIVATE TYPE
type urbinp_type
- real(r8), pointer :: canyon_hwr (:,:)
- real(r8), pointer :: wtlunit_roof (:,:)
- real(r8), pointer :: wtroad_perv (:,:)
- real(r8), pointer :: em_roof (:,:)
- real(r8), pointer :: em_improad (:,:)
- real(r8), pointer :: em_perroad (:,:)
- real(r8), pointer :: em_wall (:,:)
- real(r8), pointer :: alb_roof_dir (:,:,:)
- real(r8), pointer :: alb_roof_dif (:,:,:)
- real(r8), pointer :: alb_improad_dir (:,:,:)
- real(r8), pointer :: alb_improad_dif (:,:,:)
- real(r8), pointer :: alb_perroad_dir (:,:,:)
- real(r8), pointer :: alb_perroad_dif (:,:,:)
- real(r8), pointer :: alb_wall_dir (:,:,:)
- real(r8), pointer :: alb_wall_dif (:,:,:)
+ real(r8), pointer :: canyon_hwr (:,:)
+ real(r8), pointer :: wtlunit_roof (:,:)
+ real(r8), pointer :: wtroad_perv (:,:)
+ real(r8), pointer :: em_roof (:,:)
+ real(r8), pointer :: em_improad (:,:)
+ real(r8), pointer :: em_perroad (:,:)
+ real(r8), pointer :: em_wall (:,:)
+ real(r8), pointer :: alb_roof_dir (:,:,:)
+ real(r8), pointer :: alb_roof_dif (:,:,:)
+ real(r8), pointer :: alb_improad_dir (:,:,:)
+ real(r8), pointer :: alb_improad_dif (:,:,:)
+ real(r8), pointer :: alb_perroad_dir (:,:,:)
+ real(r8), pointer :: alb_perroad_dif (:,:,:)
+ real(r8), pointer :: alb_wall_dir (:,:,:)
+ real(r8), pointer :: alb_wall_dif (:,:,:)
real(r8), pointer :: ht_roof (:,:)
real(r8), pointer :: wind_hgt_canyon (:,:)
real(r8), pointer :: tk_wall (:,:,:)
@@ -92,14 +92,14 @@ module UrbanParamsType
real(r8), pointer :: eflx_traffic_factor (:) ! lun multiplicative traffic factor for sensible heat flux from urban traffic (-)
contains
- procedure, public :: Init
-
+ procedure, public :: Init
+
end type urbanparams_type
!
! !Urban control variables
- character(len= *), parameter, public :: urban_hac_off = 'OFF'
- character(len= *), parameter, public :: urban_hac_on = 'ON'
- character(len= *), parameter, public :: urban_wasteheat_on = 'ON_WASTEHEAT'
+ character(len= *), parameter, public :: urban_hac_off = 'OFF'
+ character(len= *), parameter, public :: urban_hac_on = 'ON'
+ character(len= *), parameter, public :: urban_wasteheat_on = 'ON_WASTEHEAT'
character(len= 16), public :: urban_hac = urban_hac_off
logical, public :: urban_explicit_ac = .true. ! whether to use explicit, time-varying AC adoption rate
logical, public :: urban_traffic = .false. ! urban traffic fluxes
@@ -112,7 +112,7 @@ module UrbanParamsType
character(len=*), parameter, private :: sourcefile = &
__FILE__
- !-----------------------------------------------------------------------
+ !-----------------------------------------------------------------------
contains
@@ -132,11 +132,11 @@ subroutine Init(this, bounds)
!
! !ARGUMENTS:
class(urbanparams_type) :: this
- type(bounds_type) , intent(in) :: bounds
+ type(bounds_type) , intent(in) :: bounds
!
! !LOCAL VARIABLES:
integer :: j,l,c,p,g ! indices
- integer :: nc,fl,ib ! indices
+ integer :: nc,fl,ib ! indices
integer :: dindx ! urban density type index
integer :: ier ! error status
real(r8) :: sumvf ! sum of view factors for wall or road
@@ -182,12 +182,12 @@ subroutine Init(this, bounds)
allocate(this%em_perroad (begl:endl)) ; this%em_perroad (:) = nan
allocate(this%em_wall (begl:endl)) ; this%em_wall (:) = nan
allocate(this%alb_roof_dir (begl:endl,numrad)) ; this%alb_roof_dir (:,:) = nan
- allocate(this%alb_roof_dif (begl:endl,numrad)) ; this%alb_roof_dif (:,:) = nan
- allocate(this%alb_improad_dir (begl:endl,numrad)) ; this%alb_improad_dir (:,:) = nan
- allocate(this%alb_perroad_dir (begl:endl,numrad)) ; this%alb_perroad_dir (:,:) = nan
- allocate(this%alb_improad_dif (begl:endl,numrad)) ; this%alb_improad_dif (:,:) = nan
- allocate(this%alb_perroad_dif (begl:endl,numrad)) ; this%alb_perroad_dif (:,:) = nan
- allocate(this%alb_wall_dir (begl:endl,numrad)) ; this%alb_wall_dir (:,:) = nan
+ allocate(this%alb_roof_dif (begl:endl,numrad)) ; this%alb_roof_dif (:,:) = nan
+ allocate(this%alb_improad_dir (begl:endl,numrad)) ; this%alb_improad_dir (:,:) = nan
+ allocate(this%alb_perroad_dir (begl:endl,numrad)) ; this%alb_perroad_dir (:,:) = nan
+ allocate(this%alb_improad_dif (begl:endl,numrad)) ; this%alb_improad_dif (:,:) = nan
+ allocate(this%alb_perroad_dif (begl:endl,numrad)) ; this%alb_perroad_dif (:,:) = nan
+ allocate(this%alb_wall_dir (begl:endl,numrad)) ; this%alb_wall_dir (:,:) = nan
allocate(this%alb_wall_dif (begl:endl,numrad)) ; this%alb_wall_dif (:,:) = nan
allocate(this%eflx_traffic_factor (begl:endl)) ; this%eflx_traffic_factor (:) = nan
@@ -261,7 +261,7 @@ subroutine Init(this, bounds)
! | \ vsr / | | r | | \ vww / s
! | \ / | h o w | \ / k
! wall | \ / | wall | a | | \ / y
- ! |vwr \ / vwr| | d | |vrw \ / vsw
+ ! |vwr \ / vwr| | d | |vrw \ / vsw
! ------\/------ - - |-----\/-----
! road wall |
! <----- w ----> |
@@ -272,20 +272,20 @@ subroutine Init(this, bounds)
! vsw = view factor of sky for wall
! vsr + vwr + vwr = 1 vrw + vww + vsw = 1
!
- ! Source: Masson, V. (2000) A physically-based scheme for the urban energy budget in
+ ! Source: Masson, V. (2000) A physically-based scheme for the urban energy budget in
! atmospheric models. Boundary-Layer Meteorology 94:357-397
!
! - Calculate urban land unit aerodynamic constants using Macdonald (1998) as used in
! Grimmond and Oke (1999)
! ---------------------------------------------------------------------------------------
-
- ! road -- sky view factor -> 1 as building height -> 0
+
+ ! road -- sky view factor -> 1 as building height -> 0
! and -> 0 as building height -> infinity
this%vf_sr(l) = sqrt(lun%canyon_hwr(l)**2 + 1._r8) - lun%canyon_hwr(l)
this%vf_wr(l) = 0.5_r8 * (1._r8 - this%vf_sr(l))
- ! one wall -- sky view factor -> 0.5 as building height -> 0
+ ! one wall -- sky view factor -> 0.5 as building height -> 0
! and -> 0 as building height -> infinity
this%vf_sw(l) = 0.5_r8 * (lun%canyon_hwr(l) + 1._r8 - sqrt(lun%canyon_hwr(l)**2+1._r8)) / lun%canyon_hwr(l)
@@ -311,7 +311,7 @@ subroutine Init(this, bounds)
! Grimmond and Oke (1999)
!----------------------------------------------------------------------------------
- ! Calculate plan area index
+ ! Calculate plan area index
plan_ai = lun%canyon_hwr(l)/(lun%canyon_hwr(l) + 1._r8)
! Building shape shortside/longside ratio (e.g. 1 = square )
@@ -344,7 +344,7 @@ subroutine Init(this, bounds)
(1 - lun%z_d_town(l) / lun%ht_roof(l)) * frontal_ai)**(-0.5_r8))
end if
- else ! Not urban point
+ else ! Not urban point
this%eflx_traffic_factor(l) = spval
this%t_building_min(l) = spval
@@ -366,7 +366,7 @@ end subroutine Init
!-----------------------------------------------------------------------
subroutine UrbanInput(begg, endg, mode)
!
- ! !DESCRIPTION:
+ ! !DESCRIPTION:
! Allocate memory and read in urban input data
!
! !USES:
@@ -375,7 +375,7 @@ subroutine UrbanInput(begg, endg, mode)
use fileutils , only : getavu, relavu, getfil, opnfil
use spmdMod , only : masterproc
use domainMod , only : ldomain
- use ncdio_pio , only : file_desc_t, ncd_io, ncd_inqvdlen, ncd_inqfdims
+ use ncdio_pio , only : file_desc_t, ncd_io, ncd_inqvdlen, ncd_inqfdims
use ncdio_pio , only : ncd_pio_openfile, ncd_pio_closefile, ncd_inqdid, ncd_inqdlen
!
! !ARGUMENTS:
@@ -392,7 +392,7 @@ subroutine UrbanInput(begg, endg, mode)
integer :: numrad_i ! input grid: number of solar bands (VIS/NIR)
integer :: numurbl_i ! input grid: number of urban landunits
integer :: ier,ret ! error status
- logical :: isgrid2d ! true => file is 2d
+ logical :: isgrid2d ! true => file is 2d
logical :: readvar ! true => variable is on dataset
logical :: has_numurbl ! true => numurbl dimension is on dataset
character(len=32) :: subname = 'UrbanInput' ! subroutine name
@@ -403,11 +403,11 @@ subroutine UrbanInput(begg, endg, mode)
if (mode == 'initialize') then
! Read urban data
-
+
if (masterproc) then
write(iulog,*)' Reading in urban input data from fsurdat file ...'
end if
-
+
call getfil (fsurdat, locfn, 0)
call ncd_pio_openfile (ncid, locfn, 0)
@@ -428,20 +428,20 @@ subroutine UrbanInput(begg, endg, mode)
if ( nlevurb == 0 ) return
! Allocate dynamic memory
- allocate(urbinp%canyon_hwr(begg:endg, numurbl), &
- urbinp%wtlunit_roof(begg:endg, numurbl), &
+ allocate(urbinp%canyon_hwr(begg:endg, numurbl), &
+ urbinp%wtlunit_roof(begg:endg, numurbl), &
urbinp%wtroad_perv(begg:endg, numurbl), &
- urbinp%em_roof(begg:endg, numurbl), &
- urbinp%em_improad(begg:endg, numurbl), &
- urbinp%em_perroad(begg:endg, numurbl), &
- urbinp%em_wall(begg:endg, numurbl), &
- urbinp%alb_roof_dir(begg:endg, numurbl, numrad), &
- urbinp%alb_roof_dif(begg:endg, numurbl, numrad), &
- urbinp%alb_improad_dir(begg:endg, numurbl, numrad), &
- urbinp%alb_perroad_dir(begg:endg, numurbl, numrad), &
- urbinp%alb_improad_dif(begg:endg, numurbl, numrad), &
- urbinp%alb_perroad_dif(begg:endg, numurbl, numrad), &
- urbinp%alb_wall_dir(begg:endg, numurbl, numrad), &
+ urbinp%em_roof(begg:endg, numurbl), &
+ urbinp%em_improad(begg:endg, numurbl), &
+ urbinp%em_perroad(begg:endg, numurbl), &
+ urbinp%em_wall(begg:endg, numurbl), &
+ urbinp%alb_roof_dir(begg:endg, numurbl, numrad), &
+ urbinp%alb_roof_dif(begg:endg, numurbl, numrad), &
+ urbinp%alb_improad_dir(begg:endg, numurbl, numrad), &
+ urbinp%alb_perroad_dir(begg:endg, numurbl, numrad), &
+ urbinp%alb_improad_dif(begg:endg, numurbl, numrad), &
+ urbinp%alb_perroad_dif(begg:endg, numurbl, numrad), &
+ urbinp%alb_wall_dir(begg:endg, numurbl, numrad), &
urbinp%alb_wall_dif(begg:endg, numurbl, numrad), &
urbinp%ht_roof(begg:endg, numurbl), &
urbinp%wind_hgt_canyon(begg:endg, numurbl), &
@@ -461,7 +461,7 @@ subroutine UrbanInput(begg, endg, mode)
endif
call ncd_inqfdims (ncid, isgrid2d, ni, nj, ns)
- if (ldomain%ns /= ns .or. ldomain%ni /= ni .or. ldomain%nj /= nj) then
+ if (.not. single_column .and. (ldomain%ns /= ns .or. ldomain%ni /= ni .or. ldomain%nj /= nj)) then
write(iulog,*)trim(subname), 'ldomain and input file do not match dims '
write(iulog,*)trim(subname), 'ldomain%ni,ni,= ',ldomain%ni,ni
write(iulog,*)trim(subname), 'ldomain%nj,nj,= ',ldomain%nj,nj
@@ -655,7 +655,7 @@ subroutine UrbanInput(begg, endg, mode)
call ncd_pio_closefile(ncid)
if (masterproc) then
- write(iulog,*)' Sucessfully read urban input data'
+ write(iulog,*)' Sucessfully read urban input data'
write(iulog,*)
end if
@@ -955,7 +955,3 @@ end function IsProgBuildTemp
!-----------------------------------------------------------------------
end module UrbanParamsType
-
-
-
-
diff --git a/src/cpl/lilac/lnd_comp_esmf.F90 b/src/cpl/lilac/lnd_comp_esmf.F90
index 6c8bb2a491..0aa0fc9f81 100644
--- a/src/cpl/lilac/lnd_comp_esmf.F90
+++ b/src/cpl/lilac/lnd_comp_esmf.F90
@@ -374,7 +374,7 @@ subroutine lnd_init(comp, import_state, export_state, clock, rc)
!--------------------------------
! Finish initializing ctsm
!--------------------------------
- call initialize2(ni,nj)
+ call initialize2(ni,nj, currTime)
call ESMF_LogWrite(subname//"ctsm initialize2 done...", ESMF_LOGMSG_INFO)
!--------------------------------
@@ -559,7 +559,6 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc)
integer :: nstep ! time step index
logical :: rstwr ! .true. ==> write restart file before returning
logical :: nlend ! .true. ==> last time-step
- logical :: dosend ! true => send data back to driver
logical :: doalb ! .true. ==> do albedo calculation on this time step
real(r8) :: nextsw_cday ! calday from clock of next radiation computation
real(r8) :: caldayp1 ! ctsm calday plus dtime offset
@@ -626,161 +625,146 @@ subroutine lnd_run(gcomp, import_state, export_state, clock, rc)
!--------------------------------
dtime = get_step_size()
- dosend = .false.
- do while(.not. dosend)
-
- ! We assume that the land model time step matches the coupling interval. However,
- ! we still need this while loop to handle the initial time step (time 0). We may
- ! want to get rid of this time step 0 in the lilac coupling, at which point we
- ! should be able to remove this while loop and dosend variable.
- !
- ! See also https://github.com/ESCOMP/CTSM/issues/925
- nstep = get_nstep()
- if (nstep > 0) then
- dosend = .true.
- end if
- !--------------------------------
- ! Determine calendar day info
- !--------------------------------
+ ! We assume that the land model time step matches the coupling interval.
+ nstep = get_nstep()
- calday = get_curr_calday(reuse_day_365_for_day_366=.true.)
- caldayp1 = get_curr_calday(offset=dtime, reuse_day_365_for_day_366=.true.)
+ !--------------------------------
+ ! Determine calendar day info
+ !--------------------------------
- !--------------------------------
- ! Get time of next atmospheric shortwave calculation
- !--------------------------------
+ calday = get_curr_calday(reuse_day_365_for_day_366=.true.)
+ caldayp1 = get_curr_calday(offset=dtime, reuse_day_365_for_day_366=.true.)
- ! TODO(NS): nextsw_cday should come directly from atmosphere!
- ! For now I am setting nextsw_cday to be the same caldayp1
- !
- ! See also https://github.com/ESCOMP/CTSM/issues/860
+ !--------------------------------
+ ! Get time of next atmospheric shortwave calculation
+ !--------------------------------
- nextsw_cday = calday
- if (masterproc) then
- write(iulog,*) trim(subname) // '... nextsw_cday is : ', nextsw_cday
- end if
+ ! TODO(NS): nextsw_cday should come directly from atmosphere!
+ ! For now I am setting nextsw_cday to be the same caldayp1
+ !
+ ! See also https://github.com/ESCOMP/CTSM/issues/860
- !--------------------------------
- ! Obtain orbital values
- !--------------------------------
-
- call shr_orb_decl( calday , eccen, mvelpp, lambm0, obliqr, declin , eccf )
- call shr_orb_decl( nextsw_cday, eccen, mvelpp, lambm0, obliqr, declinp1, eccf )
-
- if (masterproc) then
- write(iulog,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
- write(iulog,F02) 'nextsw_cday is : ', nextsw_cday
- write(iulog,F02) 'calday is : ', calday
- write(iulog,F02) 'eccen is : ', eccen
- write(iulog,F02) 'mvelpp is : ', mvelpp
- write(iulog,F02) 'lambm0 is : ', lambm0
- write(iulog,F02) 'obliqr is : ', obliqr
- write(iulog,F02) 'declin is : ', declin
- write(iulog,F02) 'declinp1 is : ', declinp1
- write(iulog,* ) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
- end if
+ nextsw_cday = calday
+ if (masterproc) then
+ write(iulog,*) trim(subname) // '... nextsw_cday is : ', nextsw_cday
+ end if
- !--------------------------------
- ! Determine doalb based on nextsw_cday sent from atm model
- !--------------------------------
-
- if (nstep == 0) then
- doalb = .false.
- nextsw_cday = caldayp1
- else if (nstep == 1) then
- !doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8)
- doalb = .false.
- else
- doalb = (nextsw_cday >= -0.5_r8)
- end if
+ !--------------------------------
+ ! Obtain orbital values
+ !--------------------------------
- if (masterproc) then
- write(iulog,*) '------------ LILAC ----------------'
- write(iulog,*) 'nstep : ', nstep
- write(iulog,*) 'calday : ', calday
- write(iulog,*) 'caldayp1 : ', caldayp1
- write(iulog,*) 'nextsw_cday : ', nextsw_cday
- write(iulog,*) 'doalb : ', doalb
- write(iulog,*) '-------------------------------------'
- end if
+ call shr_orb_decl( calday , eccen, mvelpp, lambm0, obliqr, declin , eccf )
+ call shr_orb_decl( nextsw_cday, eccen, mvelpp, lambm0, obliqr, declinp1, eccf )
- call update_rad_dtime(doalb)
+ if (masterproc) then
+ write(iulog,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
+ write(iulog,F02) 'nextsw_cday is : ', nextsw_cday
+ write(iulog,F02) 'calday is : ', calday
+ write(iulog,F02) 'eccen is : ', eccen
+ write(iulog,F02) 'mvelpp is : ', mvelpp
+ write(iulog,F02) 'lambm0 is : ', lambm0
+ write(iulog,F02) 'obliqr is : ', obliqr
+ write(iulog,F02) 'declin is : ', declin
+ write(iulog,F02) 'declinp1 is : ', declinp1
+ write(iulog,* ) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
+ end if
- !--------------------------------
- ! Determine if time to write restart
- !--------------------------------
+ !--------------------------------
+ ! Determine doalb based on nextsw_cday sent from atm model
+ !--------------------------------
- call ESMF_ClockGetAlarm(clock, alarmname='lilac_restart_alarm', alarm=alarm, rc=rc)
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ if (nstep == 1) then
+ !doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8)
+ doalb = .false.
+ else
+ doalb = (nextsw_cday >= -0.5_r8)
+ end if
- if (ESMF_AlarmIsRinging(alarm, rc=rc)) then
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- rstwr = .true.
- call ESMF_AlarmRingerOff( alarm, rc=rc )
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- else
- rstwr = .false.
- endif
- if (masterproc) then
- write(iulog,*)' restart alarm is ',rstwr
- end if
+ if (masterproc) then
+ write(iulog,*) '------------ LILAC ----------------'
+ write(iulog,*) 'nstep : ', nstep
+ write(iulog,*) 'calday : ', calday
+ write(iulog,*) 'caldayp1 : ', caldayp1
+ write(iulog,*) 'nextsw_cday : ', nextsw_cday
+ write(iulog,*) 'doalb : ', doalb
+ write(iulog,*) '-------------------------------------'
+ end if
- !--------------------------------
- ! Determine if time to stop
- !--------------------------------
+ call update_rad_dtime(doalb)
- call ESMF_ClockGetAlarm(clock, alarmname='lilac_stop_alarm', alarm=alarm, rc=rc)
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ !--------------------------------
+ ! Determine if time to stop
+ !--------------------------------
- if (ESMF_AlarmIsRinging(alarm, rc=rc)) then
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- nlend = .true.
- call ESMF_AlarmRingerOff( alarm, rc=rc )
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- else
- nlend = .false.
- endif
- if (masterproc) then
- write(iulog,*)' stop alarm is ',nlend
- end if
+ call ESMF_ClockGetAlarm(clock, alarmname='lilac_stop_alarm', alarm=alarm, rc=rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
- !--------------------------------
- ! Run CTSM
- !--------------------------------
+ if (ESMF_AlarmIsRinging(alarm, rc=rc)) then
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ nlend = .true.
+ call ESMF_AlarmRingerOff( alarm, rc=rc )
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ else
+ nlend = .false.
+ endif
+ if (masterproc) then
+ write(iulog,*)' stop alarm is ',nlend
+ end if
- call t_barrierf('sync_ctsm_run1', mpicom)
+ !--------------------------------
+ ! Determine if time to write restart
+ !--------------------------------
- ! Restart File - use nexttimestr rather than currtimestr here since that is the time at the end of
- ! the timestep and is preferred for restart file names
- ! TODO: is this correct for lilac?
+ call ESMF_ClockGetAlarm(clock, alarmname='lilac_restart_alarm', alarm=alarm, rc=rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
- call ESMF_ClockGetNextTime(clock, nextTime=nextTime, rc=rc)
+ if (ESMF_AlarmIsRinging(alarm, rc=rc)) then
if (ChkErr(rc,__LINE__,u_FILE_u)) return
- call ESMF_TimeGet(nexttime, yy=yr_lilac, mm=mon_lilac, dd=day_lilac, s=tod_lilac, rc=rc)
+ rstwr = .true.
+ call ESMF_AlarmRingerOff( alarm, rc=rc )
if (ChkErr(rc,__LINE__,u_FILE_u)) return
- write(rdate,'(i4.4,"-",i2.2,"-",i2.2,"-",i5.5)') yr_lilac, mon_lilac, day_lilac, tod_lilac
+ else
+ rstwr = .false.
+ endif
+ if (masterproc) then
+ write(iulog,*)' restart alarm is ',rstwr
+ end if
- call t_startf ('ctsm_run')
- call clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, rof_prognostic=.false.)
- call t_stopf ('ctsm_run')
+ !--------------------------------
+ ! Run CTSM
+ !--------------------------------
- !--------------------------------
- ! Pack export state
- !--------------------------------
+ call t_barrierf('sync_ctsm_run1', mpicom)
- call t_startf ('lc_lnd_export')
- call export_fields(export_state, bounds, rc)
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- call t_stopf ('lc_lnd_export')
+ ! Restart File - use nexttimestr rather than currtimestr here since that is the time at the end of
+ ! the timestep and is preferred for restart file names
+ ! TODO: is this correct for lilac?
- !--------------------------------
- ! Advance ctsm time step
- !--------------------------------
+ call ESMF_ClockGetNextTime(clock, nextTime=nextTime, rc=rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ call ESMF_TimeGet(nexttime, yy=yr_lilac, mm=mon_lilac, dd=day_lilac, s=tod_lilac, rc=rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ write(rdate,'(i4.4,"-",i2.2,"-",i2.2,"-",i5.5)') yr_lilac, mon_lilac, day_lilac, tod_lilac
- call advance_timestep()
+ call t_startf ('ctsm_run')
+ call clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, rof_prognostic=.false.)
+ call t_stopf ('ctsm_run')
- end do
+ !--------------------------------
+ ! Pack export state
+ !--------------------------------
+
+ call t_startf ('lc_lnd_export')
+ call export_fields(export_state, bounds, rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ call t_stopf ('lc_lnd_export')
+
+ !--------------------------------
+ ! Advance ctsm time step
+ !--------------------------------
+
+ call advance_timestep()
!--------------------------------
! Check that internal clock is in sync with lilac driver clock
diff --git a/src/cpl/nuopc/lnd_comp_nuopc.F90 b/src/cpl/nuopc/lnd_comp_nuopc.F90
index 9631e807cd..8ee6c2014e 100644
--- a/src/cpl/nuopc/lnd_comp_nuopc.F90
+++ b/src/cpl/nuopc/lnd_comp_nuopc.F90
@@ -655,7 +655,10 @@ subroutine InitializeRealize(gcomp, importState, exportState, clock, rc)
! ---------------------
! Finish initializing ctsm
! ---------------------
- call initialize2(ni, nj)
+ call ESMF_ClockGet(clock, currTime=currtime, rc=rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+
+ call initialize2(ni, nj, currtime)
!--------------------------------
! Create land export state
@@ -740,7 +743,6 @@ subroutine ModelAdvance(gcomp, rc)
integer :: localPeCount ! Number of local Processors
logical :: rstwr ! .true. ==> write restart file before returning
logical :: nlend ! .true. ==> last time-step
- logical :: dosend ! true => send data back to driver
logical :: doalb ! .true. ==> do albedo calculation on this time step
real(r8) :: nextsw_cday ! calday from clock of next radiation computation
real(r8) :: caldayp1 ! ctsm calday plus dtime offset
@@ -816,112 +818,104 @@ subroutine ModelAdvance(gcomp, rc)
!--------------------------------
dtime = get_step_size()
- dosend = .false.
- do while(.not. dosend)
-
- ! TODO: This is currently hard-wired - is there a better way for nuopc?
- ! Note that the model clock is updated at the end of the time step not at the beginning
- nstep = get_nstep()
- if (nstep > 0) then
- dosend = .true.
- end if
- !--------------------------------
- ! Determine doalb based on nextsw_cday sent from atm model
- !--------------------------------
-
- caldayp1 = get_curr_calday(offset=dtime, reuse_day_365_for_day_366=.true.)
-
- if (nstep == 0) then
- doalb = .false.
- else if (nstep == 1) then
- doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8)
- else
- doalb = (nextsw_cday >= -0.5_r8)
- end if
- call update_rad_dtime(doalb)
+ ! TODO: This is currently hard-wired - is there a better way for nuopc?
+ ! Note that the model clock is updated at the end of the time step not at the beginning
+ nstep = get_nstep()
- !--------------------------------
- ! Determine if time to stop
- !--------------------------------
+ !--------------------------------
+ ! Determine doalb based on nextsw_cday sent from atm model
+ !--------------------------------
- call ESMF_ClockGetAlarm(clock, alarmname='alarm_stop', alarm=alarm, rc=rc)
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ caldayp1 = get_curr_calday(offset=dtime, reuse_day_365_for_day_366=.true.)
- if (ESMF_AlarmIsRinging(alarm, rc=rc)) then
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- nlend = .true.
- call ESMF_AlarmRingerOff( alarm, rc=rc )
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- else
- nlend = .false.
- endif
+ if (nstep == 1) then
+ doalb = (abs(nextsw_cday- caldayp1) < 1.e-10_r8)
+ else
+ doalb = (nextsw_cday >= -0.5_r8)
+ end if
- !--------------------------------
- ! Determine if time to write restart
- !--------------------------------
- rstwr = .false.
- if (nlend .and. write_restart_at_endofrun) then
- rstwr = .true.
- else
- call ESMF_ClockGetAlarm(clock, alarmname='alarm_restart', alarm=alarm, rc=rc)
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- if (ESMF_AlarmIsCreated(alarm, rc=rc)) then
- if (ESMF_AlarmIsRinging(alarm, rc=rc)) then
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- rstwr = .true.
- call ESMF_AlarmRingerOff( alarm, rc=rc )
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- endif
- endif
- end if
+ call update_rad_dtime(doalb)
- !--------------------------------
- ! Run CTSM
- !--------------------------------
+ !--------------------------------
+ ! Determine if time to stop
+ !--------------------------------
- ! call ESMF_VMBarrier(vm, rc=rc)
- ! if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ call ESMF_ClockGetAlarm(clock, alarmname='alarm_stop', alarm=alarm, rc=rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
- call t_startf ('shr_orb_decl')
- ! Note - the orbital inquiries set the values in clm_varorb via the module use statements
- call clm_orbital_update(clock, iulog, masterproc, eccen, obliqr, lambm0, mvelpp, rc)
+ if (ESMF_AlarmIsRinging(alarm, rc=rc)) then
if (ChkErr(rc,__LINE__,u_FILE_u)) return
- calday = get_curr_calday(reuse_day_365_for_day_366=.true.)
- call shr_orb_decl( calday , eccen, mvelpp, lambm0, obliqr, declin , eccf )
- call shr_orb_decl( nextsw_cday, eccen, mvelpp, lambm0, obliqr, declinp1, eccf )
- call t_stopf ('shr_orb_decl')
-
- call t_startf ('ctsm_run')
- ! Restart File - use nexttimestr rather than currtimestr here since that is the time at the end of
- ! the timestep and is preferred for restart file names
- call ESMF_ClockGetNextTime(clock, nextTime=nextTime, rc=rc)
+ nlend = .true.
+ call ESMF_AlarmRingerOff( alarm, rc=rc )
if (ChkErr(rc,__LINE__,u_FILE_u)) return
- call ESMF_TimeGet(nexttime, yy=yr_sync, mm=mon_sync, dd=day_sync, s=tod_sync, rc=rc)
+ else
+ nlend = .false.
+ endif
+
+ !--------------------------------
+ ! Determine if time to write restart
+ !--------------------------------
+ rstwr = .false.
+ if (nlend .and. write_restart_at_endofrun) then
+ rstwr = .true.
+ else
+ call ESMF_ClockGetAlarm(clock, alarmname='alarm_restart', alarm=alarm, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
- write(rdate,'(i4.4,"-",i2.2,"-",i2.2,"-",i5.5)') yr_sync, mon_sync, day_sync, tod_sync
- call clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, rof_prognostic)
- call t_stopf ('ctsm_run')
+ if (ESMF_AlarmIsCreated(alarm, rc=rc)) then
+ if (ESMF_AlarmIsRinging(alarm, rc=rc)) then
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ rstwr = .true.
+ call ESMF_AlarmRingerOff( alarm, rc=rc )
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ endif
+ endif
+ end if
- !--------------------------------
- ! Pack export state
- !--------------------------------
+ !--------------------------------
+ ! Run CTSM
+ !--------------------------------
- call t_startf ('lc_lnd_export')
- call export_fields(gcomp, bounds, glc_present, rof_prognostic, &
- water_inst%waterlnd2atmbulk_inst, lnd2atm_inst, lnd2glc_inst, rc)
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- call t_stopf ('lc_lnd_export')
+ ! call ESMF_VMBarrier(vm, rc=rc)
+ ! if (ChkErr(rc,__LINE__,u_FILE_u)) return
- !--------------------------------
- ! Advance ctsm time step
- !--------------------------------
+ call t_startf ('shr_orb_decl')
+ ! Note - the orbital inquiries set the values in clm_varorb via the module use statements
+ call clm_orbital_update(clock, iulog, masterproc, eccen, obliqr, lambm0, mvelpp, rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ calday = get_curr_calday(reuse_day_365_for_day_366=.true.)
+ call shr_orb_decl( calday , eccen, mvelpp, lambm0, obliqr, declin , eccf )
+ call shr_orb_decl( nextsw_cday, eccen, mvelpp, lambm0, obliqr, declinp1, eccf )
+ call t_stopf ('shr_orb_decl')
+
+ call t_startf ('ctsm_run')
+ ! Restart File - use nexttimestr rather than currtimestr here since that is the time at the end of
+ ! the timestep and is preferred for restart file names
+ call ESMF_ClockGetNextTime(clock, nextTime=nextTime, rc=rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ call ESMF_TimeGet(nexttime, yy=yr_sync, mm=mon_sync, dd=day_sync, s=tod_sync, rc=rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ write(rdate,'(i4.4,"-",i2.2,"-",i2.2,"-",i5.5)') yr_sync, mon_sync, day_sync, tod_sync
+ call clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, rof_prognostic)
+ call t_stopf ('ctsm_run')
- call t_startf ('lc_ctsm2_adv_timestep')
- call advance_timestep()
- call t_stopf ('lc_ctsm2_adv_timestep')
+ !--------------------------------
+ ! Pack export state
+ !--------------------------------
- end do
+ call t_startf ('lc_lnd_export')
+ call export_fields(gcomp, bounds, glc_present, rof_prognostic, &
+ water_inst%waterlnd2atmbulk_inst, lnd2atm_inst, lnd2glc_inst, rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ call t_stopf ('lc_lnd_export')
+
+ !--------------------------------
+ ! Advance ctsm time step
+ !--------------------------------
+
+ call t_startf ('lc_ctsm2_adv_timestep')
+ call advance_timestep()
+ call t_stopf ('lc_ctsm2_adv_timestep')
! Check that internal clock is in sync with master clock
! Note that the driver clock has not been updated yet - so at this point
@@ -1037,9 +1031,35 @@ subroutine ModelSetRunClock(gcomp, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call ESMF_LogWrite(subname//'setting alarms for ' // trim(name), ESMF_LOGMSG_INFO)
- !----------------
+ !----------------------------------------------------------------------------------
+ ! Stop alarm
+ ! MUST be set before the restart alarm in case restarts happen at the stop alarm
+ !----------------------------------------------------------------------------------
+ call NUOPC_CompAttributeGet(gcomp, name="stop_option", value=stop_option, rc=rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+
+ call NUOPC_CompAttributeGet(gcomp, name="stop_n", value=cvalue, rc=rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ read(cvalue,*) stop_n
+
+ call NUOPC_CompAttributeGet(gcomp, name="stop_ymd", value=cvalue, rc=rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+ read(cvalue,*) stop_ymd
+
+ call alarmInit(mclock, stop_alarm, stop_option, &
+ opt_n = stop_n, &
+ opt_ymd = stop_ymd, &
+ RefTime = mcurrTime, &
+ alarmname = 'alarm_stop', rc=rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+
+ call ESMF_AlarmSet(stop_alarm, clock=mclock, rc=rc)
+ if (ChkErr(rc,__LINE__,u_FILE_u)) return
+
+ !----------------------------------------------------------------------------------
! Restart alarm
- !----------------
+ ! MUST be set after the stop alarm in case restarts happen at the stop alarm
+ !----------------------------------------------------------------------------------
call NUOPC_CompAttributeGet(gcomp, name="restart_option", value=restart_option, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
@@ -1061,29 +1081,6 @@ subroutine ModelSetRunClock(gcomp, rc)
call ESMF_AlarmSet(restart_alarm, clock=mclock, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
- !----------------
- ! Stop alarm
- !----------------
- call NUOPC_CompAttributeGet(gcomp, name="stop_option", value=stop_option, rc=rc)
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
-
- call NUOPC_CompAttributeGet(gcomp, name="stop_n", value=cvalue, rc=rc)
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- read(cvalue,*) stop_n
-
- call NUOPC_CompAttributeGet(gcomp, name="stop_ymd", value=cvalue, rc=rc)
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
- read(cvalue,*) stop_ymd
-
- call alarmInit(mclock, stop_alarm, stop_option, &
- opt_n = stop_n, &
- opt_ymd = stop_ymd, &
- RefTime = mcurrTime, &
- alarmname = 'alarm_stop', rc=rc)
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
-
- call ESMF_AlarmSet(stop_alarm, clock=mclock, rc=rc)
- if (ChkErr(rc,__LINE__,u_FILE_u)) return
end if
diff --git a/src/fates b/src/fates
index e3e7d2cd86..296e1d6a45 160000
--- a/src/fates
+++ b/src/fates
@@ -1 +1 @@
-Subproject commit e3e7d2cd86a66f8ca0e8f6dc4a823246a2bdb95b
+Subproject commit 296e1d6a45f05a800073d376286d0537d2290e96
diff --git a/src/init_interp/initInterp.F90 b/src/init_interp/initInterp.F90
index f6027fe632..468c3207cd 100644
--- a/src/init_interp/initInterp.F90
+++ b/src/init_interp/initInterp.F90
@@ -820,13 +820,13 @@ subroutine findMinDist( dimname, begi, endi, bego, endo, ncidi, ncido, &
write(iulog,*)'calling set_subgrid_info for ',trim(dimname), ' for input'
end if
call set_subgrid_info(beg=begi, end=endi, dimname=dimname, use_glob=.true., &
- ncid=ncidi, active=activei, subgrid=subgridi)
+ ncid=ncidi, active=activei, subgrid=subgridi, allow_scm=.false.)
if (masterproc) then
write(iulog,*)'calling set_subgrid_info for ',trim(dimname), ' for output'
end if
call set_subgrid_info(beg=bego, end=endo, dimname=dimname, use_glob=.false., &
- ncid=ncido, active=activeo, subgrid=subgrido)
+ ncid=ncido, active=activeo, subgrid=subgrido, allow_scm=.true.)
select case (interp_method)
case (interp_method_general)
@@ -859,7 +859,7 @@ end subroutine findMinDist
!=======================================================================
- subroutine set_subgrid_info(beg, end, dimname, use_glob, ncid, active, subgrid)
+ subroutine set_subgrid_info(beg, end, dimname, use_glob, ncid, active, subgrid, allow_scm)
! --------------------------------------------------------------------
! arguments
@@ -869,6 +869,7 @@ subroutine set_subgrid_info(beg, end, dimname, use_glob, ncid, active, subgrid)
logical , intent(in) :: use_glob ! if .true., use the 'glob' form of ncd_io
logical , intent(out) :: active(beg:end)
type(subgrid_type) , intent(inout) :: subgrid
+ logical , intent(in) :: allow_scm ! if .true., allow single column model subset of data
!
! local variables
integer :: n
@@ -896,32 +897,32 @@ subroutine set_subgrid_info(beg, end, dimname, use_glob, ncid, active, subgrid)
end if
if (dimname == 'pft') then
- call read_var_double(ncid=ncid, varname='pfts1d_lon' , data=subgrid%lon , dim1name='pft', use_glob=use_glob)
- call read_var_double(ncid=ncid, varname='pfts1d_lat' , data=subgrid%lat , dim1name='pft', use_glob=use_glob)
- call read_var_int(ncid=ncid, varname='pfts1d_itypveg', data=subgrid%ptype, dim1name='pft', use_glob=use_glob)
- call read_var_int(ncid=ncid, varname='pfts1d_itypcol', data=subgrid%ctype, dim1name='pft', use_glob=use_glob)
- call read_var_int(ncid=ncid, varname='pfts1d_ityplun', data=subgrid%ltype, dim1name='pft', use_glob=use_glob)
- call read_var_int(ncid=ncid, varname='pfts1d_active' , data=itemp , dim1name='pft', use_glob=use_glob)
+ call read_var_double(ncid=ncid, varname='pfts1d_lon' , data=subgrid%lon , dim1name='pft', use_glob=use_glob, allow_scm=allow_scm)
+ call read_var_double(ncid=ncid, varname='pfts1d_lat' , data=subgrid%lat , dim1name='pft', use_glob=use_glob, allow_scm=allow_scm)
+ call read_var_int(ncid=ncid, varname='pfts1d_itypveg', data=subgrid%ptype, dim1name='pft', use_glob=use_glob, allow_scm=allow_scm)
+ call read_var_int(ncid=ncid, varname='pfts1d_itypcol', data=subgrid%ctype, dim1name='pft', use_glob=use_glob, allow_scm=allow_scm)
+ call read_var_int(ncid=ncid, varname='pfts1d_ityplun', data=subgrid%ltype, dim1name='pft', use_glob=use_glob, allow_scm=allow_scm)
+ call read_var_int(ncid=ncid, varname='pfts1d_active' , data=itemp , dim1name='pft', use_glob=use_glob, allow_scm=allow_scm)
if (associated(subgrid%topoglc)) then
- call read_var_double(ncid=ncid, varname='pfts1d_topoglc', data=subgrid%topoglc, dim1name='pft', use_glob=use_glob)
+ call read_var_double(ncid=ncid, varname='pfts1d_topoglc', data=subgrid%topoglc, dim1name='pft', use_glob=use_glob, allow_scm=allow_scm)
end if
else if (dimname == 'column') then
- call read_var_double(ncid=ncid, varname='cols1d_lon' , data=subgrid%lon , dim1name='column', use_glob=use_glob)
- call read_var_double(ncid=ncid, varname='cols1d_lat' , data=subgrid%lat , dim1name='column', use_glob=use_glob)
- call read_var_int(ncid=ncid, varname='cols1d_ityp' , data=subgrid%ctype, dim1name='column', use_glob=use_glob)
- call read_var_int(ncid=ncid, varname='cols1d_ityplun', data=subgrid%ltype, dim1name='column', use_glob=use_glob)
- call read_var_int(ncid=ncid, varname='cols1d_active' , data=itemp , dim1name='column', use_glob=use_glob)
+ call read_var_double(ncid=ncid, varname='cols1d_lon' , data=subgrid%lon , dim1name='column', use_glob=use_glob, allow_scm=allow_scm)
+ call read_var_double(ncid=ncid, varname='cols1d_lat' , data=subgrid%lat , dim1name='column', use_glob=use_glob, allow_scm=allow_scm)
+ call read_var_int(ncid=ncid, varname='cols1d_ityp' , data=subgrid%ctype, dim1name='column', use_glob=use_glob, allow_scm=allow_scm)
+ call read_var_int(ncid=ncid, varname='cols1d_ityplun', data=subgrid%ltype, dim1name='column', use_glob=use_glob, allow_scm=allow_scm)
+ call read_var_int(ncid=ncid, varname='cols1d_active' , data=itemp , dim1name='column', use_glob=use_glob, allow_scm=allow_scm)
if (associated(subgrid%topoglc)) then
- call read_var_double(ncid=ncid, varname='cols1d_topoglc', data=subgrid%topoglc, dim1name='column', use_glob=use_glob)
+ call read_var_double(ncid=ncid, varname='cols1d_topoglc', data=subgrid%topoglc, dim1name='column', use_glob=use_glob, allow_scm=allow_scm)
end if
else if (dimname == 'landunit') then
- call read_var_double(ncid=ncid, varname='land1d_lon' , data=subgrid%lon , dim1name='landunit', use_glob=use_glob)
- call read_var_double(ncid=ncid, varname='land1d_lat' , data=subgrid%lat , dim1name='landunit', use_glob=use_glob)
- call read_var_int(ncid=ncid, varname='land1d_ityplun', data=subgrid%ltype, dim1name='landunit', use_glob=use_glob)
- call read_var_int(ncid=ncid, varname='land1d_active' , data=itemp , dim1name='landunit', use_glob=use_glob)
+ call read_var_double(ncid=ncid, varname='land1d_lon' , data=subgrid%lon , dim1name='landunit', use_glob=use_glob, allow_scm=allow_scm)
+ call read_var_double(ncid=ncid, varname='land1d_lat' , data=subgrid%lat , dim1name='landunit', use_glob=use_glob, allow_scm=allow_scm)
+ call read_var_int(ncid=ncid, varname='land1d_ityplun', data=subgrid%ltype, dim1name='landunit', use_glob=use_glob, allow_scm=allow_scm)
+ call read_var_int(ncid=ncid, varname='land1d_active' , data=itemp , dim1name='landunit', use_glob=use_glob, allow_scm=allow_scm)
else if (dimname == 'gridcell') then
- call read_var_double(ncid=ncid, varname='grid1d_lon' , data=subgrid%lon , dim1name='gridcell', use_glob=use_glob)
- call read_var_double(ncid=ncid, varname='grid1d_lat' , data=subgrid%lat , dim1name='gridcell', use_glob=use_glob)
+ call read_var_double(ncid=ncid, varname='grid1d_lon' , data=subgrid%lon , dim1name='gridcell', use_glob=use_glob, allow_scm=allow_scm)
+ call read_var_double(ncid=ncid, varname='grid1d_lat' , data=subgrid%lat , dim1name='gridcell', use_glob=use_glob, allow_scm=allow_scm)
! All gridcells in the restart file are active
itemp(beg:end) = 1
@@ -942,7 +943,7 @@ subroutine set_subgrid_info(beg, end, dimname, use_glob, ncid, active, subgrid)
contains
- subroutine read_var_double(ncid, varname, data, dim1name, use_glob)
+ subroutine read_var_double(ncid, varname, data, dim1name, use_glob, allow_scm)
! Wraps the ncd_io call, providing logic related to whether we're using the 'glob'
! form of ncd_io
type(file_desc_t) , intent(inout) :: ncid
@@ -950,15 +951,29 @@ subroutine read_var_double(ncid, varname, data, dim1name, use_glob)
real(r8), pointer , intent(inout) :: data(:)
character(len=*) , intent(in) :: dim1name
logical , intent(in) :: use_glob ! if .true., use the 'glob' form of ncd_io
+ logical , intent(in) :: allow_scm ! if .true., allow single column model subset of data
+
+ ! local
+ character(16) :: readflag
+
+ if (allow_scm) then
+ readflag='read'
+ else
+ ! Flag to distinguish the times during IC interpolation when running in single column mode but
+ ! need to read the full data grid. Normally single_column means
+ ! "read the data grid and extract the closest column" but
+ ! during IC interpolation you need to read in the full grid to be interpolated regardless of the single_column flag.
+ readflag='read_noscm'
+ endif
if (use_glob) then
- call ncd_io(ncid=ncid, varname=varname, flag='read', data=data)
+ call ncd_io(ncid=ncid, varname=varname, flag=trim(readflag), data=data)
else
- call ncd_io(ncid=ncid, varname=varname, flag='read', data=data, dim1name=dim1name)
+ call ncd_io(ncid=ncid, varname=varname, flag=trim(readflag), data=data, dim1name=dim1name)
end if
end subroutine read_var_double
- subroutine read_var_int(ncid, varname, data, dim1name, use_glob)
+ subroutine read_var_int(ncid, varname, data, dim1name, use_glob, allow_scm)
! Wraps the ncd_io call, providing logic related to whether we're using the 'glob'
! form of ncd_io
type(file_desc_t) , intent(inout) :: ncid
@@ -966,11 +981,25 @@ subroutine read_var_int(ncid, varname, data, dim1name, use_glob)
integer, pointer , intent(inout) :: data(:)
character(len=*) , intent(in) :: dim1name
logical , intent(in) :: use_glob ! if .true., use the 'glob' form of ncd_io
+ logical , intent(in) :: allow_scm ! if .true., allow single column model subset of data
+
+ ! local
+ character(16) :: readflag
+
+ if (allow_scm) then
+ readflag='read'
+ else
+ ! Flag to distinguish the times during IC interpolation when running in single column mode but
+ ! need to read the full data grid. Normally single_column means
+ ! "read the data grid and extract the closest column" but
+ ! during IC interpolation you need to read in the full grid to be interpolated regardless of the single_column flag.
+ readflag='read_noscm'
+ endif
if (use_glob) then
- call ncd_io(ncid=ncid, varname=varname, flag='read', data=data)
+ call ncd_io(ncid=ncid, varname=varname, flag=trim(readflag), data=data)
else
- call ncd_io(ncid=ncid, varname=varname, flag='read', data=data, dim1name=dim1name)
+ call ncd_io(ncid=ncid, varname=varname, flag=trim(readflag), data=data, dim1name=dim1name)
end if
end subroutine read_var_int
@@ -1038,7 +1067,7 @@ subroutine interp_1d_double (varname, varname_i, dimname, begi, endi, bego, endo
end if
allocate (rbufsli(begi:endi), rbufslo(bego:endo))
- call ncd_io(ncid=ncidi, varname=trim(varname_i), flag='read', data=rbufsli)
+ call ncd_io(ncid=ncidi, varname=trim(varname_i), flag='read_noscm', data=rbufsli)
call ncd_io(ncid=ncido, varname=trim(varname), flag='read', data=rbufslo, &
dim1name=dimname)
@@ -1080,7 +1109,7 @@ subroutine interp_1d_int (varname, varname_i, dimname, begi, endi, bego, endo, n
allocate (ibufsli(begi:endi), ibufslo(bego:endo))
- call ncd_io(ncid=ncidi, varname=trim(varname_i), flag='read', &
+ call ncd_io(ncid=ncidi, varname=trim(varname_i), flag='read_noscm', &
data=ibufsli)
call ncd_io(ncid=ncido, varname=trim(varname), flag='read', &
data=ibufslo, dim1name=dimname)
diff --git a/src/init_interp/initInterpMultilevelContainer.F90 b/src/init_interp/initInterpMultilevelContainer.F90
index 5a7b14832a..d26e51c71c 100644
--- a/src/init_interp/initInterpMultilevelContainer.F90
+++ b/src/init_interp/initInterpMultilevelContainer.F90
@@ -732,7 +732,7 @@ subroutine create_snow_interpolators(interp_multilevel_levsno, interp_multilevel
! Read snlsno_source_sgrid
allocate(snlsno_source_sgrid(bounds_source%get_begc() : bounds_source%get_endc()))
- call ncd_io(ncid=ncid_source, varname='SNLSNO', flag='read', &
+ call ncd_io(ncid=ncid_source, varname='SNLSNO', flag='read_noscm', &
data=snlsno_source_sgrid)
snlsno_source_sgrid(:) = abs(snlsno_source_sgrid(:))
diff --git a/src/main/clm_driver.F90 b/src/main/clm_driver.F90
index 454ff87463..f93143d9e3 100644
--- a/src/main/clm_driver.F90
+++ b/src/main/clm_driver.F90
@@ -1368,41 +1368,39 @@ subroutine clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, ro
! FIX(SPM, 082814) - in the fates branch RF and I commented out the if(.not.
! use_fates) then statement ... double check if this is required and why
- if (nstep > 0) then
- call t_startf('accum')
+ call t_startf('accum')
- call atm2lnd_inst%UpdateAccVars(bounds_proc)
+ call atm2lnd_inst%UpdateAccVars(bounds_proc)
- call temperature_inst%UpdateAccVars(bounds_proc, crop_inst)
+ call temperature_inst%UpdateAccVars(bounds_proc, crop_inst)
- call canopystate_inst%UpdateAccVars(bounds_proc)
+ call canopystate_inst%UpdateAccVars(bounds_proc)
- call water_inst%UpdateAccVars(bounds_proc)
+ call water_inst%UpdateAccVars(bounds_proc)
- call energyflux_inst%UpdateAccVars(bounds_proc)
+ call energyflux_inst%UpdateAccVars(bounds_proc)
- ! COMPILER_BUG(wjs, 2014-11-30, pgi 14.7) For pgi 14.7 to be happy when
- ! compiling this threaded, I needed to change the dummy arguments to be
- ! pointers, and get rid of the explicit bounds in the subroutine call.
- ! call bgc_vegetation_inst%UpdateAccVars(bounds_proc, &
- ! t_a10_patch=temperature_inst%t_a10_patch(bounds_proc%begp:bounds_proc%endp), &
- ! t_ref2m_patch=temperature_inst%t_ref2m_patch(bounds_proc%begp:bounds_proc%endp))
- call bgc_vegetation_inst%UpdateAccVars(bounds_proc, &
- t_a10_patch=temperature_inst%t_a10_patch, &
- t_ref2m_patch=temperature_inst%t_ref2m_patch)
+ ! COMPILER_BUG(wjs, 2014-11-30, pgi 14.7) For pgi 14.7 to be happy when
+ ! compiling this threaded, I needed to change the dummy arguments to be
+ ! pointers, and get rid of the explicit bounds in the subroutine call.
+ ! call bgc_vegetation_inst%UpdateAccVars(bounds_proc, &
+ ! t_a10_patch=temperature_inst%t_a10_patch(bounds_proc%begp:bounds_proc%endp), &
+ ! t_ref2m_patch=temperature_inst%t_ref2m_patch(bounds_proc%begp:bounds_proc%endp))
+ call bgc_vegetation_inst%UpdateAccVars(bounds_proc, &
+ t_a10_patch=temperature_inst%t_a10_patch, &
+ t_ref2m_patch=temperature_inst%t_ref2m_patch)
- if (use_crop) then
- call crop_inst%CropUpdateAccVars(bounds_proc, &
- temperature_inst%t_ref2m_patch, temperature_inst%t_soisno_col)
- end if
-
- if(use_fates) then
- call clm_fates%UpdateAccVars(bounds_proc)
- end if
+ if (use_crop) then
+ call crop_inst%CropUpdateAccVars(bounds_proc, &
+ temperature_inst%t_ref2m_patch, temperature_inst%t_soisno_col)
+ end if
- call t_stopf('accum')
+ if(use_fates) then
+ call clm_fates%UpdateAccVars(bounds_proc)
end if
+ call t_stopf('accum')
+
! ============================================================================
! Update history buffer
! ============================================================================
diff --git a/src/main/clm_initializeMod.F90 b/src/main/clm_initializeMod.F90
index e3d9eeda06..46353539ce 100644
--- a/src/main/clm_initializeMod.F90
+++ b/src/main/clm_initializeMod.F90
@@ -125,12 +125,13 @@ subroutine initialize1(dtime)
end subroutine initialize1
!-----------------------------------------------------------------------
- subroutine initialize2(ni,nj)
+ subroutine initialize2(ni,nj, currtime)
!
! !DESCRIPTION:
! CLM initialization second phase
!
! !USES:
+ use ESMF , only : ESMF_Time
use clm_varcon , only : spval
use clm_varpar , only : natpft_lb, natpft_ub, cft_lb, cft_ub, maxpatch_glc
use clm_varpar , only : surfpft_lb, surfpft_ub
@@ -186,6 +187,7 @@ subroutine initialize2(ni,nj)
!
! !ARGUMENTS
integer, intent(in) :: ni, nj ! global grid sizes
+ type(ESMF_Time), intent(in) :: currtime
!
! !LOCAL VARIABLES:
integer :: c,g,i,j,k,l,n,p ! indices
@@ -345,10 +347,12 @@ subroutine initialize2(ni,nj)
source=create_nutrient_competition_method(bounds_proc))
call readParameters(photosyns_inst)
+
! Initialize time manager
if (nsrest == nsrStartup) then
call timemgr_init()
else
+ call timemgr_init(curr_date_in=currtime)
call restFile_getfile(file=fnamer, path=pnamer)
call restFile_open( flag='read', file=fnamer, ncid=ncid )
call timemgr_restart_io( ncid=ncid, flag='read' )
diff --git a/src/main/controlMod.F90 b/src/main/controlMod.F90
index 3f5c58ac0e..e8121519aa 100644
--- a/src/main/controlMod.F90
+++ b/src/main/controlMod.F90
@@ -119,6 +119,7 @@ subroutine control_init(dtime)
!
! !USES:
use CNMRespMod , only : CNMRespReadNML
+ use CNFUNMod , only : CNFUNReadNML
use CNNDynamicsMod , only : CNNDynamicsReadNML
use CNPhenologyMod , only : CNPhenologyReadNML
use landunit_varcon , only : max_lunit
@@ -596,6 +597,7 @@ subroutine control_init(dtime)
if ( use_fun ) then
call CNMRespReadNML( NLFilename )
+ call CNFUNReadNML( NLFilename )
end if
call soilHydReadNML( NLFilename )
diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90
index 381e1f1170..3c16a2b30f 100644
--- a/src/main/histFileMod.F90
+++ b/src/main/histFileMod.F90
@@ -147,7 +147,7 @@ module histFileMod
public :: hist_addfld1d ! Add a 1d single-level field to the list of all history fields
public :: hist_addfld2d ! Add a 2d multi-level field to the list of all history fields
public :: hist_addfld_decomp ! Add a 1d/2d field based on patch or column data
- public :: hist_add_subscript ! Add a 2d subscript dimension
+
public :: hist_printflds ! Print summary of list of all history fields
public :: htapes_fieldlist ! Finalize history file field lists, intersecting allhistfldlist with
@@ -196,10 +196,6 @@ module histFileMod
! is 255. But this can't be increased until all hard
! coded values throughout the i/o stack are updated.
integer, parameter :: max_chars = 199 ! max chars for char variables
- integer, parameter :: max_subs = 100 ! max number of subscripts
- integer :: num_subs = 0 ! actual number of subscripts
- character(len=32) :: subs_name(max_subs) ! name of subscript
- integer :: subs_dim(max_subs) ! dimension of subscript
! type2d value for a field without a level dimension. This value is important for the
! following reasons (as of 2023-08-21):
@@ -256,8 +252,11 @@ end subroutine copy_entry_interface
end interface
! Additional per-field metadata. See also history_entry.
- ! These values are specified in hist_addfld* calls but then can be
- ! overridden by namelist params like hist_fincl1.
+ ! For the primary history tape, some fields are enabled here (inside hist_addfld*
+ ! call) but then can be overridden by namelist params (like hist_fincl1). The
+ ! fields for other history tapes are theoretically settable here but in
+ ! practice are all disabled. Fields for those tapes have to be specified
+ ! explicitly and manually via hist_fincl2 et al.
type, extends(entry_base) :: allhistfldlist_entry
logical :: actflag(max_tapes) ! which history tapes to write to.
character(len=avgflag_strlen) :: avgflag(max_tapes) ! type of time averaging
@@ -307,8 +306,8 @@ end subroutine copy_entry_interface
type (clmpoint_ra) :: clmptr_ra(max_mapflds) ! Real array data (2D)
!
! History field metadata including which history tapes (if any) it should be output to, and
- ! type of accumulation to perform. The field ordering is arbitrary, depending on the order of
- ! hist_addfld* calls in the code.
+ ! type of accumulation to perform. This list contains all possible fields, and their field ordering
+ ! is arbitrary, as it depends on the order of hist_addfld* calls in the code.
! For the field data itself, see 'tape'.
!
type (allhistfldlist_entry) :: allhistfldlist(max_flds) ! list of all history fields
@@ -1172,6 +1171,7 @@ subroutine htape_addfld (t, f, avgflag)
integer :: beg1d,end1d ! beginning and ending indices for this field (assume already set)
integer :: num1d_out ! history output 1d size
type(bounds_type) :: bounds
+ character(len=avgflag_strlen) :: avgflag_temp ! local copy of hist_avgflag_pertape(t)
character(len=*),parameter :: subname = 'htape_addfld'
!-----------------------------------------------------------------------
@@ -1302,6 +1302,19 @@ subroutine htape_addfld (t, f, avgflag)
tape(t)%hlist(n)%avgflag = avgflag
end if
+ ! Override this tape's avgflag if nhtfrq == 1
+ if (tape(t)%nhtfrq == 1) then ! output is instantaneous
+ hist_avgflag_pertape(t) = 'I'
+ end if
+ ! Override this field's avgflag if the namelist or the previous line
+ ! has set this tape to
+ ! - instantaneous (I) or
+ ! - local time (L)
+ avgflag_temp = hist_avgflag_pertape(t)
+ if (avgflag_temp == 'I' .or. avgflag_temp(1:1) == 'L') then
+ tape(t)%hlist(n)%avgflag = avgflag_temp
+ end if
+
end subroutine htape_addfld
!-----------------------------------------------------------------------
@@ -2490,9 +2503,6 @@ subroutine htape_create (t, histrest)
! (although on the history file it will go 1:(nec+1) rather than 0:nec)
call ncd_defdim(lnfid, 'elevclas' , maxpatch_glc + 1, dimid)
- do n = 1,num_subs
- call ncd_defdim(lnfid, subs_name(n), subs_dim(n), dimid)
- end do
call ncd_defdim(lnfid, 'string_length', hist_dim_name_length, strlen_dimid)
call ncd_defdim(lnfid, 'scale_type_string_length', scale_type_strlen, dimid)
call ncd_defdim( lnfid, 'levdcmp', nlevdecomp_full, dimid)
@@ -2662,7 +2672,7 @@ subroutine htape_timeconst3D(t, &
! !DESCRIPTION:
! Write time constant 3D variables to history tapes.
! Only write out when this subroutine is called (normally only for
- ! primary history files at very first time-step, nstep=0).
+ ! primary history files at very first time-step, nstep=1).
! Issue the required netcdf wrapper calls to define the history file
! contents.
!
@@ -3098,6 +3108,7 @@ subroutine htape_timeconst(t, mode)
integer :: mcdate ! current date
integer :: yr,mon,day,nbsec ! year,month,day,seconds components of a date
integer :: hours,minutes,secs ! hours,minutes,seconds of hh:mm:ss
+ character(len= 12) :: step_or_bounds ! string used in long_name of several time variables
character(len= 10) :: basedate ! base date (yyyymmdd)
character(len= 8) :: basesec ! base seconds
character(len= 8) :: cdate ! system date
@@ -3357,8 +3368,18 @@ subroutine htape_timeconst(t, mode)
dim1id(1) = time_dimid
str = 'days since ' // basedate // " " // basesec
- call ncd_defvar(nfid(t), 'time', tape(t)%ncprec, 1, dim1id, varid, &
- long_name='time',units=str)
+ if (hist_avgflag_pertape(t) /= 'I') then ! NOT instantaneous fields tape
+ step_or_bounds = 'time_bounds'
+ long_name = 'time at exact middle of ' // step_or_bounds
+ call ncd_defvar(nfid(t), 'time', tape(t)%ncprec, 1, dim1id, varid, &
+ long_name=long_name, units=str)
+ call ncd_putatt(nfid(t), varid, 'bounds', 'time_bounds')
+ else ! instantaneous fields tape
+ step_or_bounds = 'time step'
+ long_name = 'time at end of ' // step_or_bounds
+ call ncd_defvar(nfid(t), 'time', tape(t)%ncprec, 1, dim1id, varid, &
+ long_name=long_name, units=str)
+ end if
cal = get_calendar()
if ( trim(cal) == NO_LEAP_C )then
caldesc = "noleap"
@@ -3366,11 +3387,11 @@ subroutine htape_timeconst(t, mode)
caldesc = "gregorian"
end if
call ncd_putatt(nfid(t), varid, 'calendar', caldesc)
- call ncd_putatt(nfid(t), varid, 'bounds', 'time_bounds')
dim1id(1) = time_dimid
+ long_name = 'current date (YYYYMMDD) at end of ' // step_or_bounds
call ncd_defvar(nfid(t) , 'mcdate', ncd_int, 1, dim1id , varid, &
- long_name = 'current date (YYYYMMDD)')
+ long_name = long_name)
!
! add global attribute time_period_freq
!
@@ -3397,18 +3418,23 @@ subroutine htape_timeconst(t, mode)
call ncd_putatt(nfid(t), ncd_global, 'time_period_freq', &
trim(time_period_freq))
+ long_name = 'current seconds of current date at end of ' // step_or_bounds
call ncd_defvar(nfid(t) , 'mcsec' , ncd_int, 1, dim1id , varid, &
- long_name = 'current seconds of current date', units='s')
+ long_name = long_name, units='s')
+ long_name = 'current day (from base day) at end of ' // step_or_bounds
call ncd_defvar(nfid(t) , 'mdcur' , ncd_int, 1, dim1id , varid, &
- long_name = 'current day (from base day)')
+ long_name = long_name)
+ long_name = 'current seconds of current day at end of ' // step_or_bounds
call ncd_defvar(nfid(t) , 'mscur' , ncd_int, 1, dim1id , varid, &
- long_name = 'current seconds of current day')
+ long_name = long_name)
call ncd_defvar(nfid(t) , 'nstep' , ncd_int, 1, dim1id , varid, &
long_name = 'time step')
dim2id(1) = hist_interval_dimid; dim2id(2) = time_dimid
- call ncd_defvar(nfid(t), 'time_bounds', ncd_double, 2, dim2id, varid, &
- long_name = 'history time interval endpoints')
+ if (hist_avgflag_pertape(t) /= 'I') then ! NOT instantaneous fields tape
+ call ncd_defvar(nfid(t), 'time_bounds', ncd_double, 2, dim2id, varid, &
+ long_name = 'history time interval endpoints')
+ end if
dim2id(1) = strlen_dimid; dim2id(2) = time_dimid
call ncd_defvar(nfid(t), 'date_written', ncd_char, 2, dim2id, varid)
@@ -3436,13 +3462,16 @@ subroutine htape_timeconst(t, mode)
call ncd_io('mscur' , mscur , 'write', nfid(t), nt=tape(t)%ntimes)
call ncd_io('nstep' , nstep , 'write', nfid(t), nt=tape(t)%ntimes)
- time = mdcur + mscur/secspday
+ timedata(1) = tape(t)%begtime ! beginning time
+ timedata(2) = mdcur + mscur/secspday ! end time
+ if (hist_avgflag_pertape(t) /= 'I') then ! NOT instantaneous fields tape
+ time = (timedata(1) + timedata(2)) * 0.5_r8
+ call ncd_io('time_bounds', timedata, 'write', nfid(t), nt=tape(t)%ntimes)
+ else
+ time = timedata(2)
+ end if
call ncd_io('time' , time , 'write', nfid(t), nt=tape(t)%ntimes)
- timedata(1) = tape(t)%begtime
- timedata(2) = time
- call ncd_io('time_bounds', timedata, 'write', nfid(t), nt=tape(t)%ntimes)
-
call getdatetime (cdate, ctime)
call ncd_io('date_written', cdate, 'write', nfid(t), nt=tape(t)%ntimes)
@@ -4137,12 +4166,6 @@ subroutine hist_htapes_wrapup( rstwr, nlend, bounds, &
cycle
end if
- ! Skip nstep=0 if monthly average
-
- if (nstep==0 .and. tape(t)%nhtfrq==0) then
- cycle
- end if
-
! Determine if end of history interval
tape(t)%is_endhist = .false.
if (tape(t)%nhtfrq==0) then !monthly average
@@ -5070,9 +5093,9 @@ subroutine hist_restart_ncd (bounds, ncid, flag, rdate)
end if
call ncd_io(ncid=ncid_hist(t), flag='read', varname=trim(name), &
- dim1name=type1d_out, data=hbuf1d)
+ dim1name=type1d_out, data=hbuf1d, posNOTonfile=.true.)
call ncd_io(ncid=ncid_hist(t), flag='read', varname=trim(name_acc), &
- dim1name=type1d_out, data=nacs1d)
+ dim1name=type1d_out, data=nacs1d, posNOTonfile=.true.)
hbuf(beg1d_out:end1d_out,1) = hbuf1d(beg1d_out:end1d_out)
nacs(beg1d_out:end1d_out,1) = nacs1d(beg1d_out:end1d_out)
@@ -5081,9 +5104,9 @@ subroutine hist_restart_ncd (bounds, ncid, flag, rdate)
deallocate(nacs1d)
else
call ncd_io(ncid=ncid_hist(t), flag='read', varname=trim(name), &
- dim1name=type1d_out, data=hbuf)
+ dim1name=type1d_out, data=hbuf, posNOTonfile=.true.)
call ncd_io(ncid=ncid_hist(t), flag='read', varname=trim(name_acc), &
- dim1name=type1d_out, data=nacs)
+ dim1name=type1d_out, data=nacs, posNOTonfile=.true.)
end if
end do
@@ -5940,31 +5963,6 @@ integer function next_history_pointer_index ()
end function next_history_pointer_index
- !-----------------------------------------------------------------------
- subroutine hist_add_subscript(name, dim)
- !
- ! !DESCRIPTION:
- ! Add a history variable to the output history tape.
- !
- ! !ARGUMENTS:
- character(len=*), intent(in) :: name ! name of subscript
- integer , intent(in) :: dim ! dimension of subscript
- !
- ! !LOCAL VARIABLES:
- character(len=*),parameter :: subname = 'hist_add_subscript'
- !-----------------------------------------------------------------------
-
- num_subs = num_subs + 1
- if (num_subs > max_subs) then
- write(iulog,*) trim(subname),' ERROR: ',&
- ' num_subs = ',num_subs,' greater than max_subs= ',max_subs
- call endrun(msg=errMsg(sourcefile, __LINE__))
- endif
- subs_name(num_subs) = name
- subs_dim(num_subs) = dim
-
- end subroutine hist_add_subscript
-
!-----------------------------------------------------------------------
subroutine strip_null(str)
diff --git a/src/main/ncdio_pio.F90.in b/src/main/ncdio_pio.F90.in
index 6d58ded872..04ed90a6cd 100644
--- a/src/main/ncdio_pio.F90.in
+++ b/src/main/ncdio_pio.F90.in
@@ -541,14 +541,6 @@ contains
character(len=32) :: subname = 'ncd_inqfdims' ! subroutine name
!-----------------------------------------------------------------------
- if (single_column) then
- ni = 1
- nj = 1
- ns = 1
- isgrid2d = .true.
- RETURN
- end if
-
ni = 0
nj = 0
@@ -1353,7 +1345,7 @@ contains
start(:) = 0
count(:) = 0
- if (flag == 'read') then
+ if (flag == 'read' .or. flag == 'read_noscm') then
call ncd_inqvid(ncid, varname, varid, vardesc, readvar=varpresent)
@@ -1382,7 +1374,7 @@ contains
#else
if (varpresent) then
allocate(idata1d(size(data)))
- if (single_column) then
+ if (single_column .and. flag == 'read') then
call scam_field_offsets(ncid,'undefined', vardesc,&
start, count, found=found, posNOTonfile=posNOTonfile)
if ( found )then
@@ -1478,7 +1470,7 @@ contains
start(:) = 0
count(:) = 0
- if (flag == 'read') then
+ if (flag == 'read' .or. flag == 'read_noscm') then
call ncd_inqvid(ncid, varname, varid, vardesc, readvar=varpresent)
@@ -1499,7 +1491,7 @@ contains
end if
#else
if (varpresent) then
- if (single_column) then
+ if (single_column .and. flag == 'read') then
call scam_field_offsets(ncid,'undefined', vardesc,&
start, count, found=found, posNOTonfile=posNOTonfile)
if ( found )then
@@ -1648,7 +1640,7 @@ contains
!-----------------------------------------------------------------------
!TYPE int,double,logical
- subroutine ncd_io_1d_{TYPE}(varname, data, dim1name, flag, ncid, nt, readvar, cnvrtnan2fill)
+ subroutine ncd_io_1d_{TYPE}(varname, data, dim1name, flag, ncid, nt, readvar, cnvrtnan2fill, posNOTonfile)
!
! !DESCRIPTION:
! netcdf I/O for 1d
@@ -1662,6 +1654,7 @@ contains
integer , optional, intent(in) :: nt ! time sample index
logical , optional, intent(out) :: readvar ! true => variable is on initial dataset (read only)
logical , optional, intent(in) :: cnvrtnan2fill ! true => convert any NaN's to _FillValue (spval)
+ logical , optional, intent(in) :: posNOTonfile ! Position is NOT on this file
!
! Local Variables
character(len=8) :: subgrid_level_name ! nameg, namel, etc.
@@ -1676,12 +1669,15 @@ contains
integer :: start(3) ! netcdf start index
integer :: count(3) ! netcdf count index
integer :: status ! error code
+ logical :: found ! if true, found lat/lon dims on file
logical :: varpresent ! if true, variable is on tape
integer :: xtype ! type of var in file
integer , pointer :: idata(:) ! Temporary integer data to send to file
type(iodesc_plus_type) , pointer :: iodesc_plus
type(var_desc_t) :: vardesc
integer :: oldhandle ! previous value of pio_error_handle
+ integer :: ni,nj,ns ! lat/lon indicies
+ logical :: isgrid2d ! if true, latlon grid
character(len=*),parameter :: subname='ncd_io_1d_{TYPE}' ! subroutine name
!-----------------------------------------------------------------------
@@ -1703,14 +1699,15 @@ contains
end if
#endif
- if (flag == 'read') then
+ if (flag == 'read' .or. flag == 'read_noscm') then
call ncd_inqvid(ncid, varname, varid, vardesc, readvar=varpresent)
if (varpresent) then
if (single_column) then
start(:) = 1 ; count(:) = 1
- call scam_field_offsets(ncid,subgrid_level_name,vardesc,start,count)
- if (trim(subgrid_level_name) == grlnd) then
+ call scam_field_offsets(ncid,subgrid_level_name,vardesc,start,count,found=found,posNOTonfile=posNOTonfile)
+ call ncd_inqfdims(ncid, isgrid2d, ni, nj, ns)
+ if (isgrid2d) then
n=2
if (present(nt)) then
start(3) = nt ; count(3) = 1
@@ -1823,7 +1820,7 @@ contains
!TYPE int,double
subroutine ncd_io_2d_{TYPE}(varname, data, dim1name, lowerb2, upperb2, &
- flag, ncid, nt, readvar, switchdim, cnvrtnan2fill)
+ flag, ncid, nt, readvar, switchdim, cnvrtnan2fill, posNOTonfile )
!
! !DESCRIPTION:
! Netcdf i/o of 2d
@@ -1839,7 +1836,7 @@ contains
logical, optional, intent(out) :: readvar ! true => variable is on initial dataset (read only)
logical, optional, intent(in) :: switchdim ! true=> permute dim1 and dim2 for output
logical, optional, intent(in) :: cnvrtnan2fill ! true => convert any NaN's to _FillValue (spval)
- !
+ logical, optional, intent(in) :: posNOTonfile ! Position is NOT on this file !
! !LOCAL VARIABLES:
#if ({ITYPE}==TYPEINT)
integer , pointer :: temp(:,:)
@@ -1862,7 +1859,10 @@ contains
logical :: varpresent ! if true, variable is on tape
integer :: lb1,lb2
integer :: ub1,ub2
+ integer :: ni,nj,ns
+ logical :: isgrid2d ! if true, latlon grid
integer :: xtype ! netcdf type of variable on file
+ logical :: found ! if true, found lat/lon dims on file
type(iodesc_plus_type) , pointer :: iodesc_plus
type(var_desc_t) :: vardesc
@@ -1898,14 +1898,16 @@ contains
allocate(temp(lb2:ub2,lb1:ub1))
end if
- if (flag == 'read') then
+ if (flag == 'read' .or. flag == 'read_noscm') then
call ncd_inqvid(ncid, varname, varid, vardesc, readvar=varpresent)
if (varpresent) then
- if (single_column) then
+ if (single_column .and. flag == 'read') then
start(:) = 1 ; count(:) = 1
- call scam_field_offsets(ncid, subgrid_level_name, vardesc, start, count)
- if (trim(subgrid_level_name) == grlnd) then
+ call scam_field_offsets(ncid, subgrid_level_name, vardesc, start, count,found=found,posNOTonfile=posNOTonfile)
+ call ncd_inqfdims(ncid, isgrid2d, ni, nj, ns)
+ call ncd_inqvdims(ncid, ndims, vardesc)
+ if (isgrid2d) then
count(3) = size(data,dim=2)
n=3
if (present(nt)) then
@@ -1913,11 +1915,9 @@ contains
n=4
end if
else
- count(2) = size(data,dim=2)
- n=2
+ n=ndims
if (present(nt)) then
- start(3) = nt ; count(3) = 1
- n=3
+ start(n) = nt ; count(n) = 1
end if
end if
if (present(switchdim)) then
@@ -2067,7 +2067,7 @@ contains
!-----------------------------------------------------------------------
!TYPE int,double
- subroutine ncd_io_3d_{TYPE}(varname, data, dim1name, flag, ncid, nt, readvar)
+ subroutine ncd_io_3d_{TYPE}(varname, data, dim1name, flag, ncid, nt, readvar, posNOTonfile)
!
! !DESCRIPTION:
! Netcdf i/o of 3d
@@ -2080,7 +2080,7 @@ contains
character(len=*) , intent(in) :: dim1name ! dimension 1 name
integer, optional, intent(in) :: nt ! time sample index
logical, optional, intent(out) :: readvar ! true => variable is on initial dataset (read only)
- !
+ logical, optional, intent(in) :: posNOTonfile ! Position is NOT on this file !
! !LOCAL VARIABLES:
integer :: ndim1,ndim2
character(len=8) :: subgrid_level_name ! nameg, namel, etc.
@@ -2099,6 +2099,9 @@ contains
logical :: varpresent ! if true, variable is on tape
type(iodesc_plus_type) , pointer :: iodesc_plus
type(var_desc_t) :: vardesc
+ integer :: ni,nj,ns
+ logical :: isgrid2d ! if true, latlon grid
+ logical :: found ! if true, found lat/lon dims on file
character(len=*),parameter :: subname='ncd_io_3d_{TYPE}' ! subroutine name
!-----------------------------------------------------------------------
@@ -2108,15 +2111,16 @@ contains
write(iulog,*) trim(subname),' ',trim(flag),' ',trim(varname),' ',trim(subgrid_level_name)
end if
- if (flag == 'read') then
+ if (flag == 'read' .or. flag == 'read_noscm') then
call ncd_inqvid(ncid, varname, varid, vardesc, readvar=varpresent)
if (varpresent) then
- if (single_column) then
+ if (single_column .and. flag == 'read') then
start(:) = 1
count(:) = 1
- call scam_field_offsets(ncid, subgrid_level_name, vardesc, start, count)
- if (trim(subgrid_level_name) == grlnd) then
+ call scam_field_offsets(ncid, subgrid_level_name, vardesc, start, count,found=found,posNOTonfile=posNOTonfile)
+ call ncd_inqfdims(ncid, isgrid2d, ni, nj, ns)
+ if (isgrid2d) then
count(3) = size(data,dim=2);
count(4) = size(data,dim=3)
n=4
@@ -2435,7 +2439,10 @@ contains
if ( trim(dimname)=='nj'.or. trim(dimname)=='lat'.or. trim(dimname)=='lsmlat') then
start(i)=latidx
count(i)=1
- else if ( trim(dimname)=='ni'.or. trim(dimname)=='lon'.or. trim(dimname)=='lsmlon') then
+ else if ( trim(dimname)=='ni'.or. trim(dimname)=='lon'.or. trim(dimname)=='lsmlon'.or. trim(dimname)=='gridcell') then
+ start(i)=lonidx
+ count(i)=1
+ else if ( trim(dimname)=='gridcell') then
start(i)=lonidx
count(i)=1
else if ( trim(dimname)=='column') then
diff --git a/src/main/organicFileMod.F90 b/src/main/organicFileMod.F90
index 3adbd5b6f1..5b61a8c0db 100644
--- a/src/main/organicFileMod.F90
+++ b/src/main/organicFileMod.F90
@@ -6,8 +6,8 @@ module organicFileMod
! !MODULE: organicFileMod
!
! !DESCRIPTION:
-! Contains methods for reading in organic matter data file which has
-! organic matter density for each grid point and soil level
+! Contains methods for reading in organic matter data file which has
+! organic matter density for each grid point and soil level
!
! !USES
use abortutils , only : endrun
@@ -30,7 +30,7 @@ module organicFileMod
!
!EOP
!
-!-----------------------------------------------------------------------
+!-----------------------------------------------------------------------
contains
@@ -42,7 +42,7 @@ module organicFileMod
! !INTERFACE:
subroutine organicrd(organic)
!
-! !DESCRIPTION:
+! !DESCRIPTION:
! Read the organic matter dataset.
!
! !USES:
@@ -68,7 +68,7 @@ subroutine organicrd(organic)
!EOP
character(len=256) :: locfn ! local file name
type(file_desc_t) :: ncid ! netcdf id
- integer :: ni,nj,ns ! dimension sizes
+ integer :: ni,nj,ns ! dimension sizes
logical :: isgrid2d ! true => file is 2d
logical :: readvar ! true => variable is on dataset
character(len=32) :: subname = 'organicrd' ! subroutine name
@@ -77,9 +77,9 @@ subroutine organicrd(organic)
! Initialize data to zero - no organic matter dataset
organic(:,:) = 0._r8
-
+
! Read data if file was specified in namelist
-
+
if (fsurdat /= ' ') then
if (masterproc) then
write(iulog,*) 'Attempting to read organic matter data .....'
@@ -90,14 +90,14 @@ subroutine organicrd(organic)
call ncd_pio_openfile (ncid, locfn, 0)
call ncd_inqfdims (ncid, isgrid2d, ni, nj, ns)
- if (ldomain%ns /= ns .or. ldomain%ni /= ni .or. ldomain%nj /= nj) then
+ if (.not. single_column .and. (ldomain%ns /= ns .or. ldomain%ni /= ni .or. ldomain%nj /= nj)) then
write(iulog,*)trim(subname), 'ldomain and input file do not match dims '
write(iulog,*)trim(subname), 'ldomain%ni,ni,= ',ldomain%ni,ni
write(iulog,*)trim(subname), 'ldomain%nj,nj,= ',ldomain%nj,nj
write(iulog,*)trim(subname), 'ldomain%ns,ns,= ',ldomain%ns,ns
call endrun()
end if
-
+
call ncd_io(ncid=ncid, varname='ORGANIC', flag='read', data=organic, &
dim1name=grlnd, readvar=readvar)
if (.not. readvar) call endrun('organicrd: errror reading ORGANIC')
diff --git a/src/main/restFileMod.F90 b/src/main/restFileMod.F90
index c7dbf0da72..d82505f4ff 100644
--- a/src/main/restFileMod.F90
+++ b/src/main/restFileMod.F90
@@ -6,13 +6,13 @@ module restFileMod
!
! !USES:
#include "shr_assert.h"
- use shr_kind_mod , only : r8 => shr_kind_r8
+ use shr_kind_mod , only : r8 => shr_kind_r8, CL=>shr_kind_CL
use decompMod , only : bounds_type, get_proc_clumps, get_clump_bounds
use decompMod , only : bounds_level_proc
use spmdMod , only : masterproc, mpicom
use abortutils , only : endrun
use shr_log_mod , only : errMsg => shr_log_errMsg
- use clm_time_manager , only : timemgr_restart_io, get_nstep
+ use clm_time_manager , only : timemgr_restart_io, get_nstep, get_curr_date
use subgridRestMod , only : subgridRestWrite, subgridRestRead, subgridRest_read_cleanup
use accumulMod , only : accumulRest
use clm_instMod , only : clm_instRest
@@ -340,6 +340,7 @@ subroutine restFile_read_pfile( pnamer )
! !USES:
use fileutils , only : opnfil, getavu, relavu
use clm_varctl, only : rpntfil, rpntdir, inst_suffix
+ use mpi, only : MPI_CHARACTER
!
! !ARGUMENTS:
character(len=*), intent(out) :: pnamer ! full path of restart file
@@ -347,8 +348,11 @@ subroutine restFile_read_pfile( pnamer )
! !LOCAL VARIABLES:
!EOP
integer :: i ! indices
+ integer :: yr, mon, day, tod
+ character(len=17) :: timestamp
integer :: nio ! restart unit
integer :: status ! substring check status
+ logical :: found
character(len=256) :: locfn ! Restart pointer file name
!-----------------------------------------------------------------------
@@ -359,17 +363,24 @@ subroutine restFile_read_pfile( pnamer )
! New history files are always created for branch runs.
if (masterproc) then
- write(iulog,*) 'Reading restart pointer file....'
+ nio = getavu()
+ call get_curr_date(yr, mon, day, tod)
+ write(timestamp,'(".",i4.4,"-",i2.2,"-",i2.2,"-",i5.5)') yr,mon,day,tod
+ locfn = trim(rpntdir) //'/'// trim(rpntfil)//trim(inst_suffix)//timestamp
+ inquire(file=trim(locfn), exist=found)
+ if(.not. found) then
+ locfn = trim(rpntdir) //'/'// trim(rpntfil)//trim(inst_suffix)
+ endif
+ write(iulog,*) 'Reading restart pointer file: ',trim(locfn)
+
+ call opnfil (locfn, nio, 'f')
+ read (nio,'(a256)') pnamer
+ call relavu (nio)
endif
-
- nio = getavu()
- locfn = trim(rpntdir) //'/'// trim(rpntfil)//trim(inst_suffix)
- call opnfil (locfn, nio, 'f')
- read (nio,'(a256)') pnamer
- call relavu (nio)
+ call mpi_bcast (pnamer, CL, MPI_CHARACTER, 0, mpicom, status)
if (masterproc) then
- write(iulog,*) 'Reading restart data.....'
+ write(iulog,*) 'Reading restart data: ',trim(pnamer)
write(iulog,'(72a1)') ("-",i=1,60)
end if
@@ -422,12 +433,16 @@ subroutine restFile_write_pfile( fnamer )
! !LOCAL VARIABLES:
integer :: m ! index
integer :: nio ! restart pointer file
+ integer :: yr, mon, day, tod
+ character(len=17) :: timestamp
character(len=256) :: filename ! local file name
!-----------------------------------------------------------------------
if (masterproc) then
+ call get_curr_date(yr, mon, day, tod)
+ write(timestamp,'(".",i4.4,"-",i2.2,"-",i2.2,"-",i5.5)') yr, mon, day, tod
nio = getavu()
- filename= trim(rpntdir) //'/'// trim(rpntfil)//trim(inst_suffix)
+ filename= trim(rpntdir) //'/'// trim(rpntfil)//trim(inst_suffix)//timestamp
call opnfil( filename, nio, 'f' )
write(nio,'(a)') fnamer
@@ -466,7 +481,7 @@ subroutine restFile_open( flag, file, ncid )
! Open netcdf restart file
if (masterproc) then
- write(iulog,*) 'Reading restart dataset'
+ write(iulog,*) 'Reading restart dataset: ', trim(file)
end if
call ncd_pio_openfile (ncid, trim(file), 0)
diff --git a/src/main/surfrdMod.F90 b/src/main/surfrdMod.F90
index 4005ec7845..c70ec28fa0 100644
--- a/src/main/surfrdMod.F90
+++ b/src/main/surfrdMod.F90
@@ -363,8 +363,10 @@ subroutine surfrd_get_num_patches (lfsurdat, actual_maxsoil_patches, actual_nump
type(file_desc_t) :: ncid ! netcdf file id
integer :: dimid ! netCDF dimension id
logical :: cft_dim_exists ! dimension exists on dataset
+ logical :: natpft_dim_exists ! dimension exists on dataset
integer :: check_numpft ! Surface dataset count of numpft, should
! match maxsoil_patches - actual_numcft
+ integer :: actual_numnatpft ! natpft value from sfc dataset
character(len=32) :: subname = 'surfrd_get_num_patches' ! subroutine name
!-----------------------------------------------------------------------
@@ -396,9 +398,17 @@ subroutine surfrd_get_num_patches (lfsurdat, actual_maxsoil_patches, actual_nump
call ncd_inqdlen(ncid, dimid, actual_maxsoil_patches, 'lsmpft')
actual_numpft = actual_maxsoil_patches - actual_numcft
- call ncd_inqdlen(ncid, dimid, check_numpft, 'natpft')
+ ! Read numpft
+ call ncd_inqdid(ncid, 'natpft', dimid, natpft_dim_exists)
+ if ( natpft_dim_exists ) then
+ call ncd_inqdlen(ncid, dimid, actual_numnatpft, 'natpft')
+ call ncd_inqdlen(ncid, dimid, check_numpft, 'natpft')
+ else
+ actual_numnatpft = 0
+ end if
- if(check_numpft.ne.actual_numpft)then
+!jt if(check_numpft.ne.actual_numpft)then
+ if(actual_numcft+actual_numnatpft.ne.actual_maxsoil_patches)then
write(iulog,*)'the sum of the cftdim and the natpft dim should match the lsmpft dim in the surface file'
write(iulog,*)'natpft: ',check_numpft
write(iulog,*)'lsmpft: ',actual_maxsoil_patches
diff --git a/src/unit_test_shr/unittestTimeManagerMod.F90 b/src/unit_test_shr/unittestTimeManagerMod.F90
index 44109d5b86..8e1cdb3f36 100644
--- a/src/unit_test_shr/unittestTimeManagerMod.F90
+++ b/src/unit_test_shr/unittestTimeManagerMod.F90
@@ -177,9 +177,6 @@ subroutine unittest_timemgr_set_nstep(nstep)
! !DESCRIPTION:
! Set the time step number
!
- ! Note that the starting time step number is 0, so calling this with nstep = 1
- ! advances the time step beyond the starting time step.
- !
! !USES:
use clm_time_manager, only : advance_timestep
!
@@ -192,7 +189,7 @@ subroutine unittest_timemgr_set_nstep(nstep)
character(len=*), parameter :: subname = 'unittest_timemgr_set_nstep'
!-----------------------------------------------------------------------
- do n = 1, nstep
+ do n = 2, nstep
call advance_timestep()
end do
diff --git a/src/utils/AnnualFluxDribbler.F90 b/src/utils/AnnualFluxDribbler.F90
index c7a3b792fe..8ea854b904 100644
--- a/src/utils/AnnualFluxDribbler.F90
+++ b/src/utils/AnnualFluxDribbler.F90
@@ -258,7 +258,8 @@ subroutine set_curr_delta(this, bounds, delta)
do i = beg_index, end_index
this%amount_from_this_timestep(i) = delta(i)
end do
- if (.not. this%allows_non_annual_delta .and. .not. is_first_step()) then
+ ! is_first_step check no longer necessary since there is no nstep=0
+ if (.not. this%allows_non_annual_delta) then
do i = beg_index, end_index
if (this%amount_from_this_timestep(i) /= 0._r8) then
write(iulog,*) subname//' ERROR: found unexpected non-zero delta mid-year'
diff --git a/src/utils/clm_time_manager.F90 b/src/utils/clm_time_manager.F90
index 955d98057a..f606c2832b 100644
--- a/src/utils/clm_time_manager.F90
+++ b/src/utils/clm_time_manager.F90
@@ -19,9 +19,9 @@ module clm_time_manager
public ::&
set_timemgr_init, &! setup startup values
- timemgr_init, &! time manager initialization
+ timemgr_init, &! time manager initialization, called always
timemgr_restart_io, &! read/write time manager restart info and restart time manager
- timemgr_restart, &! restart the time manager using info from timemgr_restart
+ timemgr_restart, &! check that time manager is setup coorectly upcon restart
timemgr_datediff, &! calculate difference between two time instants
advance_timestep, &! increment timestep number
get_curr_ESMF_Time, &! get current time in terms of the ESMF_Time
@@ -157,7 +157,7 @@ subroutine set_timemgr_init( calendar_in, start_ymd_in, start_tod_in, r
!
character(len=*), parameter :: sub = 'clm::set_timemgr_init'
- if ( timemgr_set ) call shr_sys_abort( sub//":: timemgr_init or timemgr_restart already called" )
+ if ( timemgr_set ) call shr_sys_abort( sub//":: timemgr_init already called" )
if (present(calendar_in) ) calendar = trim(calendar_in)
if (present(start_ymd_in) ) start_ymd = start_ymd_in
if (present(start_tod_in) ) start_tod = start_tod_in
@@ -177,7 +177,11 @@ end subroutine set_timemgr_init
!=========================================================================================
- subroutine timemgr_init( )
+ subroutine timemgr_init(curr_date_in )
+
+ use clm_varctl, only : nsrest, nsrContinue, nsrBranch
+
+ type(ESMF_Time), intent(in), optional :: curr_date_in
!---------------------------------------------------------------------------------
! Initialize the ESMF time manager from the sync clock
@@ -187,8 +191,8 @@ subroutine timemgr_init( )
character(len=*), parameter :: sub = 'clm::timemgr_init'
integer :: rc ! return code
type(ESMF_Time) :: start_date ! start date for run
- type(ESMF_Time) :: curr_date ! temporary date used in logic
type(ESMF_Time) :: ref_date ! reference date for time coordinate
+ type(ESMF_Time) :: curr_date ! temporary date used in logic
type(ESMF_TimeInterval) :: day_step_size ! day step size
type(ESMF_TimeInterval) :: step_size ! timestep size
!---------------------------------------------------------------------------------
@@ -211,8 +215,11 @@ subroutine timemgr_init( )
start_date = TimeSetymd( start_ymd, start_tod, "start_date" )
! Initialize current date
-
- curr_date = start_date
+ if(present(curr_date_in)) then
+ curr_date = curr_date_in
+ else
+ curr_date = start_date
+ endif
call ESMF_TimeIntervalSet( step_size, s=dtime, rc=rc )
call chkrc(rc, sub//': error return from ESMF_TimeIntervalSet: setting step_size')
@@ -238,6 +245,11 @@ subroutine timemgr_init( )
tm_perp_date = TimeSetymd( perpetual_ymd, 0, "tm_perp_date" )
end if
+ ! Advance time step to start at nstep=1
+ if (nsrest /= nsrContinue .and. nsrest /= nsrBranch) then
+ call advance_timestep()
+ end if
+
! Print configuration summary to log file (stdout).
if (masterproc) call timemgr_print()
@@ -253,7 +265,7 @@ subroutine init_clock( start_date, ref_date, curr_date )
!---------------------------------------------------------------------------------
! Purpose: Initialize the clock based on the start_date, ref_date and curr_date
!
- use ESMF , only : ESMF_ClockCreate, ESMF_ClockAdvance
+ use ESMF , only : ESMF_ClockCreate, ESMF_ClockAdvance, esmf_clockiscreated
type(ESMF_Time), intent(in) :: start_date ! start date for run
type(ESMF_Time), intent(in) :: ref_date ! reference date for time coordinate
@@ -277,6 +289,7 @@ subroutine init_clock( start_date, ref_date, curr_date )
! manager included in cime appears to require stopTime.
call ESMF_TimeSet(stop_date, yy=really_big_year, mm=12, dd=31, s=0, &
calendar=tm_cal, rc=rc)
+ call chkrc(rc, sub//': error return from ESMF_TimeIntervalSet: setting step_size')
! Error check
@@ -299,9 +312,10 @@ subroutine init_clock( start_date, ref_date, curr_date )
! Initialize the clock
+
tm_clock = ESMF_ClockCreate(name="CLM Time-manager clock", timeStep=step_size, startTime=start_date, &
stopTime=stop_date, refTime=ref_date, rc=rc)
- call chkrc(rc, sub//': error return from ESMF_ClockSetup')
+ call chkrc(rc, sub//': error return from ESMF_ClockCreate')
! Advance clock to the current time (in case of a restart)
@@ -496,11 +510,15 @@ end subroutine timemgr_restart_io
!=========================================================================================
- subroutine timemgr_restart( )
+ subroutine timemgr_restart()
!---------------------------------------------------------------------------------
- ! Restart the ESMF time manager using the synclock for ending date.
+ ! On restart do some checkcing to make sure time is synchronized with the clock from CESM.
+ ! Set a couple of variables, and advance the clock, so time is aligned properly.
+ !
+ ! timemgr_init MIST be called before this
!
+
character(len=*), parameter :: sub = 'clm::timemgr_restart'
integer :: rc ! return code
integer :: yr, mon, day, tod ! Year, month, day, and second as integers
@@ -510,26 +528,22 @@ subroutine timemgr_restart( )
type(ESMF_TimeInterval) :: day_step_size ! day step size
type(ESMF_TimeInterval) :: step_size ! timestep size
!---------------------------------------------------------------------------------
- call timemgr_spmdbcast( )
-
- ! Initialize calendar from restart info
-
- call init_calendar()
+ ! Check that timemgr_init was already called
+ if ( .not. check_timemgr_initialized(sub) ) return
- ! Initialize the timestep from restart info
+ ! Initialize the timestep
dtime = rst_step_sec
- ! Initialize start date from restart info
-
- start_date = TimeSetymd( rst_start_ymd, rst_start_tod, "start_date" )
+ ! Check start date from restart info
- ! Initialize current date from restart info
+ if (rst_start_ymd .ne. start_ymd .or. rst_start_tod .ne. start_tod) then
+ call shr_sys_abort(sub//'ERROR: mismatch in start date with restart file')
+ endif
- curr_date = TimeSetymd( rst_curr_ymd, rst_curr_tod, "curr_date" )
-
- call ESMF_TimeIntervalSet( step_size, s=dtime, rc=rc )
- call chkrc(rc, sub//': error return from ESMF_TimeIntervalSet: setting step_size')
+ if (rst_ref_ymd .ne. ref_ymd .or. rst_ref_tod .ne. ref_tod) then
+ call shr_sys_abort(sub//'ERROR: mismatch in reference date with restart file')
+ endif
call ESMF_TimeIntervalSet( day_step_size, d=1, rc=rc )
call chkrc(rc, sub//': error return from ESMF_TimeIntervalSet: setting day_step_size')
@@ -540,12 +554,6 @@ subroutine timemgr_restart( )
! Initialize ref date from restart info
- ref_date = TimeSetymd( rst_ref_ymd, rst_ref_tod, "ref_date" )
-
- ! Initialize clock
-
- call init_clock( start_date, ref_date, curr_date)
-
! Advance the timestep.
! Data from the restart file corresponds to the last timestep of the previous run.
@@ -555,12 +563,6 @@ subroutine timemgr_restart( )
tm_first_restart_step = .true.
- ! Print configuration summary to log file (stdout).
-
- if (masterproc) call timemgr_print()
-
- timemgr_set = .true.
-
end subroutine timemgr_restart
!=========================================================================================
@@ -1731,7 +1733,7 @@ end function is_end_curr_year
logical function is_first_step()
!---------------------------------------------------------------------------------
- ! Return true on first step of initial run only.
+ ! Return true on first step of startup and hybrid runs.
! Local variables
character(len=*), parameter :: sub = 'clm::is_first_step'
@@ -1745,7 +1747,7 @@ logical function is_first_step()
call ESMF_ClockGet( tm_clock, advanceCount=step_no, rc=rc )
call chkrc(rc, sub//': error return from ESMF_ClockGet')
nstep = step_no
- is_first_step = (nstep == 0)
+ is_first_step = (nstep == 1)
end function is_first_step
!=========================================================================================
diff --git a/src/utils/test/clm_time_manager_test/test_clm_time_manager.pf b/src/utils/test/clm_time_manager_test/test_clm_time_manager.pf
index df8a59de4b..d2f984aa5b 100644
--- a/src/utils/test/clm_time_manager_test/test_clm_time_manager.pf
+++ b/src/utils/test/clm_time_manager_test/test_clm_time_manager.pf
@@ -276,7 +276,7 @@ contains
end subroutine getPrevYearfrac_leapYearAtYearBoundary_returnsCorrectValue
@Test
- subroutine getNstep_step0(this)
+ subroutine getNstep_step1(this)
class(TestTimeManager), intent(inout) :: this
integer :: nstep
@@ -284,8 +284,8 @@ contains
nstep = get_nstep()
- @assertEqual(0, nstep)
- end subroutine getNstep_step0
+ @assertEqual(1, nstep)
+ end subroutine getNstep_step1
@Test
subroutine getNstep_step3(this)
@@ -377,7 +377,7 @@ contains
call unittest_timemgr_setup(dtime=dtime_int)
- call set_nstep(1)
+ call set_nstep(2)
is_first = is_first_step()
diff --git a/tools/site_and_regional/neon_gcs_upload b/tools/site_and_regional/neon_gcs_upload
index 40afef8e74..1c931e3b8d 100755
--- a/tools/site_and_regional/neon_gcs_upload
+++ b/tools/site_and_regional/neon_gcs_upload
@@ -126,7 +126,7 @@ def main(description):
#os.path.join(os.environ["HOME"],"gcwriter")
# Get the list of supported neon sites from usermods
- valid_neon_sites = glob.glob(os.path.join(cesmroot,"cime_config","usermods_dirs","NEON","[!d]*"))
+ valid_neon_sites = glob.glob(os.path.join(cesmroot,"cime_config","usermods_dirs","clm","NEON","[!d]*"))
valid_neon_sites = [v.split('/')[-1] for v in valid_neon_sites]
filedatestamp = datetime.datetime.now().date()
site_list, output_root, file_date, upload_finidat, upload_history = get_parser(sys.argv, description, valid_neon_sites)