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.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc 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.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne3np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc 0.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_deck run_component_ctsm env_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 #2619 This failure relates to the following REP failure. - + FAIL #2619 This 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)