diff --git a/.gitmodules b/.gitmodules
index 418d917c26..d8a34d6ce1 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -151,7 +151,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git
[submodule "cdeps"]
path = components/cdeps
url = https://github.com/ESCOMP/CDEPS.git
-fxtag = cdeps1.0.45
+fxtag = cdeps1.0.48
fxrequired = ToplevelRequired
fxDONOTUSEurl = https://github.com/ESCOMP/CDEPS.git
@@ -172,7 +172,7 @@ fxDONOTUSEurl = https://github.com/NCAR/ParallelIO
[submodule "cice"]
path = components/cice
url = https://github.com/ESCOMP/CESM_CICE
-fxtag = cesm_cice6_5_0_10
+fxtag = cesm_cice6_5_0_12
fxrequired = ToplevelRequired
fxDONOTUSEurl = https://github.com/ESCOMP/CESM_CICE
diff --git a/cime_config/config_pes.xml b/cime_config/config_pes.xml
index 5c8df356e4..7b50ec52f3 100644
--- a/cime_config/config_pes.xml
+++ b/cime_config/config_pes.xml
@@ -112,6 +112,43 @@
+
+
+
+ none
+
+ -4
+ -4
+ -4
+ -4
+ -4
+ -4
+ -4
+ -4
+
+
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+
+
diff --git a/cime_config/testdefs/testlist_cam.xml b/cime_config/testdefs/testlist_cam.xml
index 665d65fb15..8c4260275a 100644
--- a/cime_config/testdefs/testlist_cam.xml
+++ b/cime_config/testdefs/testlist_cam.xml
@@ -1165,7 +1165,7 @@
-
+
@@ -1358,7 +1358,7 @@
-
+
@@ -1474,7 +1474,7 @@
-
+
@@ -1484,7 +1484,7 @@
-
+
diff --git a/cime_config/usermods_dirs/scam_mandatory/shell_commands b/cime_config/usermods_dirs/scam_mandatory/shell_commands
index cfc2114554..4fa8390aa5 100755
--- a/cime_config/usermods_dirs/scam_mandatory/shell_commands
+++ b/cime_config/usermods_dirs/scam_mandatory/shell_commands
@@ -9,7 +9,7 @@
./xmlchange REST_OPTION=never
# Note that clm cannot use initial conditions with SCAM -so will only use specified phenology
-# Only change if CLM_FORCE_COLDSTART exists and dycore is eulerian
-if [ `./xmlquery --value CAM_DYCORE` == 'eul' ] && [ `./xmlquery --value CLM_FORCE_COLDSTART |& grep -c 'ERROR'` -eq 0 ]; then
+# Only change if CLM_FORCE_COLDSTART exists.
+if [ `./xmlquery --value CLM_FORCE_COLDSTART 2>&1 | grep -c 'ERROR'` -eq 0 ]; then
./xmlchange CLM_FORCE_COLDSTART='on'
fi
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 973ef3b4e3..54d09896a0 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,4 +1,301 @@
+===============================================================
+
+Tag name: cam6_4_023
+Originator(s): jet
+Date: Aug 22, 2024
+One-line Summary: cam6_4_023: SCAM-SE feature addition plus bugfixes and some refactoring
+Github PR URL: https://github.com/ESCOMP/CAM/pull/958
+
+Purpose of changes (include the issue number and title text for each relevant GitHub issue):
+
+This update includes some refactoring of SCAM, a few bugfixes, and adding the capability to use
+spectral elements dycore to do vertical transport in the column. The SE feature addition follows
+the E3SM implementation where a complete coarse resolution (ne3np4) of the SE dycore is initialized
+but only a single element is run through vertical transport. The single column chosen by scmlat, scmlon.
+
+Like the Eulerian version, SCAM-SE also has a bit for bit test to validate an exact run through
+the same physics as the full 3d model. Because SCAM updates the solution using a slightly different
+order of operations, the bfb capability is tested by making a special diagnostic run of CAM where
+the 3d model derives the phys/dyn tendency each time step and then recalculates the prognostic
+solution using the derived tendencies and SCAM's prognostic equation. This new solution (which is
+less precise (roundoff) due to the change in order of operations) is substituted for the full 3d
+solution at each time step of the model run. The substitution of the roundoff state in the 3d run
+allows SCAM to reproduce (BFB) each time step using the captured tendencies in the cam iop history file.
+
+The SCAM-SE vertical advection skips the horizontal step and derives the floating level tendency
+based on the IOP prescribed vertical velocity. The floating levels are subsequently remapped at
+the end of the vertically Lagrangian dynamics step.
+
+Describe any changes made to build system: Allow SCAM to be built with spectral element dycore
+
+Describe any changes made to the namelist: N/A
+
+List any changes to the defaults for the boundary datasets:New boundary data for SE SCM
+A atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-09-01-00000.nc
+A atm/cam/inic/se/cami_0000-01-01_ne3np4_L30_c120315.nc
+A atm/cam/inic/se/cami_0000-01-01_ne3np4_L26_c120525.nc
+A atm/cam/topo/se/ne3np4_gmted2010_modis_bedmachine_nc0540_Laplace1000_noleak_20230717.nc
+A atm/cam/chem/trop_mam/atmsrf_ne3np4_230718.nc
+A atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-01-01-00000.nc
+A atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-02-01-00000.nc
+A atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-04-01-00000.nc
+A atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-06-01-00000.nc
+A atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-07-01-00000.nc
+A atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-08-01-00000.nc
+A atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-10-01-00000.nc
+A atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-12-01-00000.nc
+A atm/cam/scam/iop/micre2017_3mo.cam.i.2017-01-01-00000.regrid.ne3np4.nc
+
+Describe any substantial timing or memory changes: N/A
+
+Code reviewed by: nusbaume, cacraig
+
+List all files eliminated:
+
+ D bld/namelist_files/use_cases/scam_arm95.xml
+ D bld/namelist_files/use_cases/scam_arm97.xml
+ D bld/namelist_files/use_cases/scam_gateIII.xml
+ D bld/namelist_files/use_cases/scam_mpace.xml
+ D bld/namelist_files/use_cases/scam_sparticus.xml
+ D bld/namelist_files/use_cases/scam_togaII.xml
+ D bld/namelist_files/use_cases/scam_twp06.xml
+ - These are now available via xml defaults
+ D cime_config/usermods_dirs/scam_arm95/shell_commands
+ D cime_config/usermods_dirs/scam_arm95/user_nl_cam
+ D cime_config/usermods_dirs/scam_arm97/shell_commands
+ D cime_config/usermods_dirs/scam_arm97/user_nl_cam
+ D cime_config/usermods_dirs/scam_atex/shell_commands
+ D cime_config/usermods_dirs/scam_atex/user_nl_cam
+ D cime_config/usermods_dirs/scam_bomex/user_nl_cam
+ D cime_config/usermods_dirs/scam_cgilsS11/shell_commands
+ D cime_config/usermods_dirs/scam_cgilsS11/user_nl_cam
+ D cime_config/usermods_dirs/scam_cgilsS12/shell_commands
+ D cime_config/usermods_dirs/scam_cgilsS12/user_nl_cam
+ D cime_config/usermods_dirs/scam_cgilsS6/shell_commands
+ D cime_config/usermods_dirs/scam_cgilsS6/user_nl_cam
+ D cime_config/usermods_dirs/scam_dycomsRF01/shell_commands
+ D cime_config/usermods_dirs/scam_dycomsRF01/user_nl_cam
+ D cime_config/usermods_dirs/scam_dycomsRF02/shell_commands
+ D cime_config/usermods_dirs/scam_dycomsRF02/user_nl_cam
+ D cime_config/usermods_dirs/scam_gateIII/shell_commands
+ D cime_config/usermods_dirs/scam_gateIII/user_nl_cam
+ D cime_config/usermods_dirs/scam_micre2017/shell_commands
+ D cime_config/usermods_dirs/scam_micre2017/user_nl_cam
+ D cime_config/usermods_dirs/scam_mpace/shell_commands
+ D cime_config/usermods_dirs/scam_mpace/user_nl_cam
+ D cime_config/usermods_dirs/scam_rico/shell_commands
+ D cime_config/usermods_dirs/scam_rico/user_nl_cam
+ D cime_config/usermods_dirs/scam_SAS/shell_commands
+ D cime_config/usermods_dirs/scam_SAS/user_nl_cam
+ D cime_config/usermods_dirs/scam_sparticus/shell_commands
+ D cime_config/usermods_dirs/scam_sparticus/user_nl_cam
+ D cime_config/usermods_dirs/scam_togaII/shell_commands
+ D cime_config/usermods_dirs/scam_togaII/user_nl_cam
+ D cime_config/usermods_dirs/scam_twp06/shell_commands
+ D cime_config/usermods_dirs/scam_twp06/user_nl_cam
+ D src/control/history_defaults.F90
+ - after moving scam specific code there was nothing left here
+
+
+List all files added and what they do: N/A
+ A cime_config/usermods_dirs/scam_camfrc/shell_commands
+ A cime_config/usermods_dirs/scam_camfrc/user_nl_cam
+ A cime_config/usermods_dirs/scam_mandatory/shell_commands
+ - template directories for usermods to scam.
+
+ A src/dynamics/se/apply_iop_forcing.F90
+ A src/dynamics/se/dycore/se_single_column_mod.F90
+ A src/utils/hybvcoord_mod.F90
+ - enable iop forcing for SE SCM
+
+List all existing files that have been modified, and describe the changes:
+M .gitmodules
+ - update cice to fix scam failure
+ - update cdeps to fix CDEPS regression test build failures
+M bld/build-namelist
+ - update namelist defaults for scm relaxation.
+M bld/config_files/definition.xml
+ - new configurations option for scam_iops
+M bld/configure
+ - new configure options for SCAM refactor
+M bld/namelist_files/namelist_defaults_cam.xml
+M bld/namelist_files/namelist_definition.xml
+ - new configurations option for scam_iops
+M cime_config/buildcpp
+ - setup new build for se SCAM test
+M cime_config/config_component.xml
+M cime_config/config_compsets.xml
+ - add scam defaults to cime
+M cime_config/config_pes.xml
+ - add scam se pe defaults
+M cime_config/SystemTests/sct.py
+ - setup new BFB se SCAM test
+M cime_config/testdefs/testlist_cam.xml
+M cime_config/testdefs/testmods_dirs/cam/scmarm/shell_commands
+ - add new scam se regression tests
+M cime_config/usermods_dirs/scam_mandatory/shell_commands
+ - add warmstart logic
+M src/control/cam_comp.F90
+ - cleanup some of the BFB_CAM_SCAM_IOP cppdefs
+M src/control/cam_history.F90
+ - set write_camiop logical if CAMIOP history type is requested by user.
+M src/control/getinterpnetcdfdata.F90
+M src/control/history_scam.F90
+ - generalize for output on single column grid
+M src/control/ncdio_atm.F90
+ - add physgrid_scm, scam uses the full physgrid to read data from boundary and
+M src/control/scamMod.F90
+ - new control parameters for SCAM-SE
+M src/dynamics/eul/diag_dynvar_ic.F90
+M src/dynamics/eul/dyn_comp.F90
+M src/dynamics/eul/dynpkg.F90
+ - remove more scam CPP defines
+M src/dynamics/eul/dyn_grid.F90
+M src/dynamics/eul/iop.F90
+ - generalize to use common routines for SE and EUL
+M src/dynamics/eul/restart_dynamics.F90
+ - remove more scam CPP defines
+M src/dynamics/eul/scmforecast.F90
+M src/dynamics/eul/stepon.F90
+M src/dynamics/eul/tfilt_massfix.F90
+ - refactor/cleanup
+M src/dynamics/se/advect_tend.F90
+ - capture SE advective tendencies for BFB testing
+M src/dynamics/se/dp_coupling.F90
+ - phys/dyn interface additions for SE-SCAM
+M src/dynamics/se/dycore/prim_advance_mod.F90
+M src/dynamics/se/dycore/prim_driver_mod.F90
+M src/dynamics/se/dycore/vertremap_mod.F90
+M src/dynamics/se/dycore/viscosity_mod.F90
+ - refactor/cleanup
+M src/dynamics/se/dyn_comp.F90
+M src/dynamics/se/dyn_grid.F90
+ - add SE single column mod
+M src/dynamics/se/gravity_waves_sources.F90
+ - hvcoord
+M src/dynamics/se/stepon.F90
+ - add SE SCAM iop update calls
+M src/infrastructure/phys_grid.F90
+ - update for single column phys grid
+M src/physics/cam7/physpkg.F90
+M src/physics/cam/cam_diagnostics.F90
+ - clean up BFB cpp defs
+M src/physics/cam/check_energy.F90
+ - add heat_glob for SE iop
+M src/physics/cam/chem_surfvals.F90
+ - add column initialization for greenhouse gasses
+M src/physics/cam/clubb_intr.F90
+ - use model grid box size not arbitrary SCM column size
+M src/physics/cam/convect_shallow.F90
+ - add DQP diagnostic
+M src/physics/cam/phys_grid.F90
+ - define scm single column grid for scm history
+M src/physics/cam/physpkg.F90
+ - clean up BFB cpp defs
+M src/utils/cam_grid_support.F90
+ - add trim to grid name
+M src/utils/hycoef.F90
+ - add hvcoord struct
+
+
+If there were any failures reported from running test_driver.sh on any test
+platform, and checkin with these failures has been OK'd by the gatekeeper,
+then copy the lines from the td.*.status files for the failed tests to the
+appropriate machine below. All failed tests must be justified.
+
+derecho/intel/aux_cam:
+
+ ERP_Ln9.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq9s (Overall: FAIL) details:
+ - pre-existing failure due to HEMCO not having reproducible results issues #1018 and #856
+ SMS_D_Ln9_P1280x1.ne0ARCTICne30x4_ne0ARCTICne30x4_mt12.FHIST.derecho_intel.cam-outfrq9s (Overall: PEND) details:
+ SMS_D_Ln9_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.derecho_intel.cam-outfrq9s (Overall: PEND) details:
+ - pre-existing pend/failures -- need fix in CLM external
+
+ SCT_D_Ln7.ne3_ne3_mg37.QPC5.derecho_intel.cam-scm_prep (Overall: FAIL)
+ - New Test; Failure expected (SCAM on spectral element grid)
+
+ SMS_D_Ln9.T42_T42.FSCAMARM97.derecho_intel.cam-outfrq9s (Overall: FAIL) details:
+ - New Test; Failure expected; FSCAM compset named changed to FSCAMARM97
+
+ SMS_D_Ln9.T42_T42.FSCAMARM97.derecho_intel.cam-outfrq9s (Overall: FAIL)
+ - New Test name; Failure expected (FSCAM->FSCAMARM97)
+
+ SCT_D_Ln7.T42_T42_mg17.QPC5.derecho_intel.cam-scm_prep (Overall: DIFF) details:
+ - Roundoff answer changes expected to existing SCAM prep cases
+
+ SMS_Lm13.f10_f10_mg37.F2000climo.derecho_intel.cam-outfrq1m (Overall: DIFF) details:
+ - Expected differenc due to cice update, only 2 fields different as new cice has annual restarts off.
+
+ ERP_Ld3.f09_f09_mg17.FWHIST.derecho_intel.cam-reduced_hist1d (Overall: NLFAIL) details:
+ ERP_Lh12.f19_f19_mg17.FW4madSD.derecho_intel.cam-outfrq3h (Overall: NLFAIL) details:
+ ERP_Ln9.C96_C96_mg17.F2000climo.derecho_intel.cam-outfrq9s_mg3 (Overall: NLFAIL) details:
+ ERP_Ln9.f09_f09_mg17.F1850.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ ERP_Ln9.f09_f09_mg17.F2000climo.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ ERP_Ln9.f09_f09_mg17.F2010climo.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ ERP_Ln9.f09_f09_mg17.FHIST_BDRD.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ ERP_Ln9.f19_f19_mg17.FWsc1850.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ ERP_Ln9.ne30pg3_ne30pg3_mg17.FCnudged.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ ERP_Ln9.ne30pg3_ne30pg3_mg17.FW2000climo.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ ERS_Ld3.f10_f10_mg37.F1850.derecho_intel.cam-outfrq1d_14dec_ghg_cam7 (Overall: NLFAIL) details:
+ ERS_Ln9.f09_f09_mg17.FX2000.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ ERS_Ln9.f19_f19_mg17.FSPCAMS.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ ERS_Ln9.f19_f19_mg17.FXSD.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ ERS_Ln9_P288x1.mpasa120_mpasa120.F2000climo.derecho_intel.cam-outfrq9s_mpasa120 (Overall: NLFAIL) details:
+ ERS_Ln9_P36x1.mpasa480_mpasa480.F2000climo.derecho_intel.cam-outfrq9s_mpasa480 (Overall: NLFAIL) details:
+ SMS_D_Ln9.f09_f09_mg17.FCts2nudged.derecho_intel.cam-outfrq9s_leapday (Overall: NLFAIL) details:
+ SMS_D_Ln9.f09_f09_mg17.FCvbsxHIST.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ SMS_D_Ln9.f09_f09_mg17.FSD.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ SMS_D_Ln9.f19_f19_mg17.FWma2000climo.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ SMS_D_Ln9.f19_f19_mg17.FWma2000climo.derecho_intel.cam-outfrq9s_waccm_ma_mam4 (Overall: NLFAIL) details:
+ SMS_D_Ln9.f19_f19_mg17.FXHIST.derecho_intel.cam-outfrq9s_amie (Overall: NLFAIL) details:
+ SMS_D_Ln9.ne16pg3_ne16pg3_mg17.FX2000.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ SMS_D_Ln9.ne30pg3_ne30pg3_mg17.FCts4MTHIST.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ SMS_D_Ln9.ne30pg3_ne30pg3_mg17.FMTHIST.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ SMS_D_Ln9_P1280x1.ne30pg3_ne30pg3_mg17.FCLTHIST.derecho_intel.cam-outfrq9s (Overall: NLFAIL) details:
+ SMS_Ld1.f09_f09_mg17.FCHIST_GC.derecho_intel.cam-outfrq1d (Overall: NLFAIL) details:
+ SMS_Ld1.f09_f09_mg17.FW2000climo.derecho_intel.cam-outfrq1d (Overall: NLFAIL) details:
+ SMS_Ld1.ne30pg3_ne30pg3_mg17.FC2010climo.derecho_intel.cam-outfrq1d (Overall: NLFAIL) details:
+ SMS_Lh12.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq3h (Overall: NLFAIL) details:
+ SMS_Ln9.f09_f09_mg17.F2010climo.derecho_intel.cam-nudging (Overall: NLFAIL) details:
+ SMS_Ln9.f09_f09_mg17.FW1850.derecho_intel.cam-reduced_hist3s (Overall: NLFAIL) details:
+ SMS_Ln9.f19_f19.F2000climo.derecho_intel.cam-silhs (Overall: NLFAIL) details:
+ SMS_Ln9.f19_f19_mg17.FHIST.derecho_intel.cam-outfrq9s_nochem (Overall: NLFAIL) details:
+ SMS_Ln9.ne30pg3_ne30pg3_mg17.FW2000climo.derecho_intel.cam-outfrq9s_rrtmgp (Overall: NLFAIL) details
+ - Expected failures, In addition to differences these tests also failed namelist comparisons due to the updated cice
+
+derecho/nvhpc/aux_cam:
+ ERS_Ln9_G4-a100-openacc.ne30pg3_ne30pg3_mg17.F2000dev.derecho_nvhpc.cam-outfrq9s_mg3_default (Overall: DIFF) details:
+ - Roundoff answer changes expected
+
+izumi/nag/aux_cam:
+ DAE.f45_f45_mg37.FHS94.izumi_nag.cam-dae (Overall: FAIL) details:
+ - pre-existing failure - issue #670
+ SMS_D_Ln7.T42_T42_mg17.QPSCAMC5.izumi_nag.cam-scmarm (Overall: DIFF) details:
+ - Roundoff answer changes expected to existing SCAM cases
+
+izumi/gnu/aux_cam:
+ SCT_D_Ln7.ne3_ne3_mg37.QPC6.izumi_gnu.cam-scm_prep_c6 (Overall: FAIL)
+ - New Test Failure expected.
+ SCT_D_Ln7.T42_T42_mg17.QPC4.izumi_gnu.cam-scm_prep (Overall: DIFF) details:
+ SCT_D_Ln7.T42_T42_mg17.QPC6.izumi_gnu.cam-scm_prep_c6 (Overall: DIFF) details:
+ - Roundoff answer changes expected to existing SCAM cases
+ SMS_P48x1_D_Ln9.f19_f19_mg17.FW4madSD.izumi_gnu.cam-outfrq9s (Overall: NLFAIL) details:
+ - Expected namelist failure due to cice update.
+
+CAM tag used for the baseline comparison tests if different than previous
+tag:
+
+Summarize any changes to answers, i.e.,
+- what code configurations: SCAM tests
+- what platforms/compilers: All
+- nature of change (roundoff; larger than roundoff but same climate; new
+ climate): new climate - larger changes confined to top levels that were ignored in previous versions.
+
+If bitwise differences were observed, how did you show they were no worse
+than roundoff?
+
+===============================================================
===============================================================
Tag name: cam6_4_022