From 208c594c6084d47c99081d9ca2aa49f8c0942a75 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 3 May 2024 15:08:27 -0600 Subject: [PATCH 01/76] Point CDEPS external at cdeps1.0.33. --- Externals.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Externals.cfg b/Externals.cfg index 185f412cab..515eaccd8b 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -55,7 +55,7 @@ local_path = components/cmeps required = True [cdeps] -tag = cdeps1.0.28 +tag = cdeps1.0.33 protocol = git repo_url = https://github.com/ESCOMP/CDEPS.git local_path = components/cdeps From 8d628f2f75c37bb450fa8003571219e4864cc293 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 3 May 2024 15:31:39 -0600 Subject: [PATCH 02/76] Update other externals after CESM tag cesm2_3_alpha17e. --- Externals.cfg | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Externals.cfg b/Externals.cfg index 515eaccd8b..183690d159 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -8,7 +8,7 @@ required = True local_path = components/cism protocol = git repo_url = https://github.com/ESCOMP/CISM-wrapper -tag = cismwrap_2_1_99 +tag = cismwrap_2_1_100 externals = Externals_CISM.cfg required = True @@ -34,7 +34,7 @@ hash = 34723c2 required = True [ccs_config] -tag = ccs_config_cesm0.0.92 +tag = ccs_config_cesm0.0.106 protocol = git repo_url = https://github.com/ESMCI/ccs_config_cesm.git local_path = ccs_config @@ -44,11 +44,11 @@ required = True local_path = cime protocol = git repo_url = https://github.com/ESMCI/cime -tag = cime6.0.217_httpsbranch03 +tag = cime6.0.238_httpsbranch01 required = True [cmeps] -tag = cmeps0.14.50 +tag = cmeps0.14.60 protocol = git repo_url = https://github.com/ESCOMP/CMEPS.git local_path = components/cmeps @@ -63,7 +63,7 @@ externals = Externals_CDEPS.cfg required = True [cpl7] -tag = cpl77.0.7 +tag = cpl77.0.8 protocol = git repo_url = https://github.com/ESCOMP/CESM_CPL7andDataComps local_path = components/cpl7 From 702477db00b86d4938c3998e2bb844ba8a98f2ee Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 9 May 2024 15:32:13 -0600 Subject: [PATCH 03/76] Add datm_rcp45_anom_forc testmod. --- .../datm_rcp45_anom_forc/include_user_mods | 1 + .../clm/datm_rcp45_anom_forc/user_nl_clm | 1 + .../clm/datm_rcp45_anom_forc/user_nl_datm | 1 + .../datm_rcp45_anom_forc/user_nl_datm_streams | 55 +++++++++++++++++++ 4 files changed, 58 insertions(+) create mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/include_user_mods create mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_clm create mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm create mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm_streams diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/include_user_mods new file mode 100644 index 0000000000..fe0e18cf88 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/include_user_mods @@ -0,0 +1 @@ +../default diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_clm new file mode 100644 index 0000000000..ebd35fb2ab --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_clm @@ -0,0 +1 @@ +flanduse_timeseries = '$DIN_LOC_ROOT/lnd/clm2/surfdata_esmf/ctsm5.2.0/landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240216.nc' diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm new file mode 100644 index 0000000000..5caf191fe2 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm @@ -0,0 +1 @@ +anomaly_forcing = 'Anomaly.Forcing.Precip', 'Anomaly.Forcing.Temperature', 'Anomaly.Forcing.Pressure', 'Anomaly.Forcing.Humidity', 'Anomaly.Forcing.Uwind', 'Anomaly.Forcing.Vwind', 'Anomaly.Forcing.Shortwave', 'Anomaly.Forcing.Longwave' diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm_streams b/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm_streams new file mode 100644 index 0000000000..2bc553567c --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm_streams @@ -0,0 +1,55 @@ +Anomaly.Forcing.Temperature:year_first=2015 +Anomaly.Forcing.Temperature:year_last=2100 +Anomaly.Forcing.Temperature:year_align=2015 +Anomaly.Forcing.Temperature:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc +Anomaly.Forcing.Temperature:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.tas.ccsm4.rcp45.2006-2300.nc +Anomaly.Forcing.Temperature:datavars = tas Sa_tbot_af + +Anomaly.Forcing.Precip:year_first=2015 +Anomaly.Forcing.Precip:year_last=2100 +Anomaly.Forcing.Precip:year_align=2015 +Anomaly.Forcing.Precip:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc +Anomaly.Forcing.Precip:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.pr.ccsm4.rcp45.2006-2300.nc +Anomaly.Forcing.Precip:datavars = pr Faxa_prec_af + +Anomaly.Forcing.Pressure:year_first=2015 +Anomaly.Forcing.Pressure:year_last=2100 +Anomaly.Forcing.Pressure:year_align=2015 +Anomaly.Forcing.Pressure:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc +Anomaly.Forcing.Pressure:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.ps.ccsm4.rcp45.2006-2300.nc +Anomaly.Forcing.Pressure:datavars = ps Sa_pbot_af + +Anomaly.Forcing.Humidity:year_first=2015 +Anomaly.Forcing.Humidity:year_last=2100 +Anomaly.Forcing.Humidity:year_align=2015 +Anomaly.Forcing.Humidity:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc +Anomaly.Forcing.Humidity:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.huss.ccsm4.rcp45.2006-2300.nc +Anomaly.Forcing.Humidity:datavars = huss Sa_shum_af + +Anomaly.Forcing.Uwind:year_first=2015 +Anomaly.Forcing.Uwind:year_last=2100 +Anomaly.Forcing.Uwind:year_align=2015 +Anomaly.Forcing.Uwind:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc +Anomaly.Forcing.Uwind:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.uas.ccsm4.rcp45.2006-2300.nc +Anomaly.Forcing.Uwind:datavars = uas Sa_u_af + +Anomaly.Forcing.Vwind:year_first=2015 +Anomaly.Forcing.Vwind:year_last=2100 +Anomaly.Forcing.Vwind:year_align=2015 +Anomaly.Forcing.Vwind:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc +Anomaly.Forcing.Vwind:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.vas.ccsm4.rcp45.2006-2300.nc +Anomaly.Forcing.Vwind:datavars = vas Sa_v_af + +Anomaly.Forcing.Shortwave:year_first=2015 +Anomaly.Forcing.Shortwave:year_last=2100 +Anomaly.Forcing.Shortwave:year_align=2015 +Anomaly.Forcing.Shortwave:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc +Anomaly.Forcing.Shortwave:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.rsds.ccsm4.rcp45.2006-2300.nc +Anomaly.Forcing.Shortwave:datavars = rsds Faxa_swdn_af + +Anomaly.Forcing.Longwave:year_first=2015 +Anomaly.Forcing.Longwave:year_last=2100 +Anomaly.Forcing.Longwave:year_align=2015 +Anomaly.Forcing.Longwave:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc +Anomaly.Forcing.Longwave:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.rlds.ccsm4.rcp45.2006-2300.nc +Anomaly.Forcing.Longwave:datavars = rlds Faxa_lwdn_af From f59d04515d9759750c9170bc593006c0aba85e37 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 9 May 2024 14:12:47 -0600 Subject: [PATCH 04/76] Point CDEPS external at my branch, with Anomaly.Forcing.cmip5.rcp45. --- Externals.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Externals.cfg b/Externals.cfg index 183690d159..df9daf3658 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -55,9 +55,9 @@ local_path = components/cmeps required = True [cdeps] -tag = cdeps1.0.33 +tag = e4bd386dc564cbe2c89872947e2fc4c5c480480f protocol = git -repo_url = https://github.com/ESCOMP/CDEPS.git +repo_url = https://github.com/samsrabin/CDEPS.git local_path = components/cdeps externals = Externals_CDEPS.cfg required = True From 662e536fb302bc1b01d7d1da42a781d0bb9f7794 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 8 Aug 2024 15:03:52 -0600 Subject: [PATCH 05/76] datm_rcp45_anom_forc testmod now uses Anomaly.Forcing.cmip5.rcp45. Instead of having to specify anomaly_forcing = 'Anomaly.Forcing.Precip', 'Anomaly.Forcing.Temperature', etc. --- .../testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm index 5caf191fe2..a1e2523cca 100644 --- a/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm +++ b/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm @@ -1 +1 @@ -anomaly_forcing = 'Anomaly.Forcing.Precip', 'Anomaly.Forcing.Temperature', 'Anomaly.Forcing.Pressure', 'Anomaly.Forcing.Humidity', 'Anomaly.Forcing.Uwind', 'Anomaly.Forcing.Vwind', 'Anomaly.Forcing.Shortwave', 'Anomaly.Forcing.Longwave' +anomaly_forcing = 'Anomaly.Forcing.cmip5.rcp45' From 8df08ff6d0234ee2d669645789903f7c78b3ccdd Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 8 Aug 2024 15:28:56 -0600 Subject: [PATCH 06/76] Added a few scripts for this work --- tmp_scripts/make_allvars_files.sh | 46 +++++++++++++++++++ .../test-ssp-temperature-ctsm5.2.003.sh | 35 ++++++++++++++ 2 files changed, 81 insertions(+) create mode 100755 tmp_scripts/make_allvars_files.sh create mode 100755 tmp_scripts/test-ssp-temperature-ctsm5.2.003.sh diff --git a/tmp_scripts/make_allvars_files.sh b/tmp_scripts/make_allvars_files.sh new file mode 100755 index 0000000000..06d47a9479 --- /dev/null +++ b/tmp_scripts/make_allvars_files.sh @@ -0,0 +1,46 @@ +#!/bin/bash +set -e + +module load nco + +indir=/glade/campaign/cesm/cesmdata/cseg/inputdata/atm/datm7/anomaly_forcing +outdir=/glade/work/samrabin/ctsm_cdeps_ssp-temperature + +rcp=$1 +if [[ ${rcp} == "" ]]; then + echo "You must provide rcp (e.g., 45)" >&2 + exit 1 +fi + +if [[ ! -d "${indir}" ]]; then + echo "Input directory not found: ${indir}" >&2 + exit 1 +fi + +restoffilename="ccsm4.rcp${rcp}.2006-2300.nc" + +pushd "${indir}" 1>/dev/null +varlist="$(ls af.*.${restoffilename} | grep -v allvars | cut -f2 -d.)" +if [[ "${varlist}" == "" ]]; then + echo "No variables found" >&2 + exit 1 +fi +popd 1>/dev/null + +newfile="${outdir}/af.allvars.${restoffilename}" + +i=0 +for var in ${varlist}; do + echo $var + i=$((i + 1)) + thisfile="${indir}/af.${var}.${restoffilename}" + if [[ ${i} -eq 1 ]]; then + nccopy -k cdf5 "${thisfile}" "${newfile}" + continue + fi + ncks -A -v ${var} "${thisfile}" "${newfile}" +done + +echo Done + +exit 0 \ No newline at end of file diff --git a/tmp_scripts/test-ssp-temperature-ctsm5.2.003.sh b/tmp_scripts/test-ssp-temperature-ctsm5.2.003.sh new file mode 100755 index 0000000000..4c9ca5c39e --- /dev/null +++ b/tmp_scripts/test-ssp-temperature-ctsm5.2.003.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -e + +ssp=$1 +if [[ ${ssp} == "" ]]; then + echo "You must provide an SSP number (e.g., 245)" >&2 + exit 1 +fi +ssp_punctuation="$(echo ${ssp} | sed -E "s/(.)(.)(.)/\1-\2.\3/")" + +casedir="$HOME/cases_ctsm/test_cdeps_ssp-temperature" +compset="SSP${ssp}_DATM%GSWP3v1_CLM51%BGC-CROP_SICE_SOCN_MOSART_CISM2%NOEVOLVE_SWAV" +res="f10_f10_mg37" + +if [[ -d "${casedir}" ]]; then + rm -r "${casedir}" +fi + +cime/scripts/create_newcase --run-unsupported --case "${casedir}" --compset ${compset} --res ${res} \ + --handle-preexisting-dirs r + +cd "${casedir}" +./case.setup + +#echo "anomaly_forcing = 'Anomaly.Forcing.Temperature'" >> user_nl_datm +echo "anomaly_forcing = 'Anomaly.Forcing.cmip5.rcp45'" >> user_nl_datm +echo "flanduse_timeseries = '/glade/campaign/cesm/cesmdata/cseg/inputdata/lnd/clm2/surfdata_esmf/ctsm5.2.0/landuse.timeseries_10x15_SSP${ssp_punctuation}_78_CMIP6_1850-2100_c230517.nc'" >> user_nl_clm + +echo "Generating namelists..." +./preview_namelists 1>/dev/null + +./xmlquery COMPSET +grep "" CaseDocs/datm.streams.xml | grep anomaly_forcing | grep '.tas.' + +exit 0 From 141636313fe6599413cd6003694fbd03b8cd47d3 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 8 Aug 2024 15:50:47 -0600 Subject: [PATCH 07/76] Remove user_nl_datm_streams from datm_rcp45_anom_forc testmod. --- .../datm_rcp45_anom_forc/user_nl_datm_streams | 55 ------------------- 1 file changed, 55 deletions(-) delete mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm_streams diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm_streams b/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm_streams deleted file mode 100644 index 2bc553567c..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_datm_streams +++ /dev/null @@ -1,55 +0,0 @@ -Anomaly.Forcing.Temperature:year_first=2015 -Anomaly.Forcing.Temperature:year_last=2100 -Anomaly.Forcing.Temperature:year_align=2015 -Anomaly.Forcing.Temperature:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc -Anomaly.Forcing.Temperature:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.tas.ccsm4.rcp45.2006-2300.nc -Anomaly.Forcing.Temperature:datavars = tas Sa_tbot_af - -Anomaly.Forcing.Precip:year_first=2015 -Anomaly.Forcing.Precip:year_last=2100 -Anomaly.Forcing.Precip:year_align=2015 -Anomaly.Forcing.Precip:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc -Anomaly.Forcing.Precip:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.pr.ccsm4.rcp45.2006-2300.nc -Anomaly.Forcing.Precip:datavars = pr Faxa_prec_af - -Anomaly.Forcing.Pressure:year_first=2015 -Anomaly.Forcing.Pressure:year_last=2100 -Anomaly.Forcing.Pressure:year_align=2015 -Anomaly.Forcing.Pressure:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc -Anomaly.Forcing.Pressure:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.ps.ccsm4.rcp45.2006-2300.nc -Anomaly.Forcing.Pressure:datavars = ps Sa_pbot_af - -Anomaly.Forcing.Humidity:year_first=2015 -Anomaly.Forcing.Humidity:year_last=2100 -Anomaly.Forcing.Humidity:year_align=2015 -Anomaly.Forcing.Humidity:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc -Anomaly.Forcing.Humidity:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.huss.ccsm4.rcp45.2006-2300.nc -Anomaly.Forcing.Humidity:datavars = huss Sa_shum_af - -Anomaly.Forcing.Uwind:year_first=2015 -Anomaly.Forcing.Uwind:year_last=2100 -Anomaly.Forcing.Uwind:year_align=2015 -Anomaly.Forcing.Uwind:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc -Anomaly.Forcing.Uwind:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.uas.ccsm4.rcp45.2006-2300.nc -Anomaly.Forcing.Uwind:datavars = uas Sa_u_af - -Anomaly.Forcing.Vwind:year_first=2015 -Anomaly.Forcing.Vwind:year_last=2100 -Anomaly.Forcing.Vwind:year_align=2015 -Anomaly.Forcing.Vwind:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc -Anomaly.Forcing.Vwind:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.vas.ccsm4.rcp45.2006-2300.nc -Anomaly.Forcing.Vwind:datavars = vas Sa_v_af - -Anomaly.Forcing.Shortwave:year_first=2015 -Anomaly.Forcing.Shortwave:year_last=2100 -Anomaly.Forcing.Shortwave:year_align=2015 -Anomaly.Forcing.Shortwave:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc -Anomaly.Forcing.Shortwave:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.rsds.ccsm4.rcp45.2006-2300.nc -Anomaly.Forcing.Shortwave:datavars = rsds Faxa_swdn_af - -Anomaly.Forcing.Longwave:year_first=2015 -Anomaly.Forcing.Longwave:year_last=2100 -Anomaly.Forcing.Longwave:year_align=2015 -Anomaly.Forcing.Longwave:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc -Anomaly.Forcing.Longwave:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/af.rlds.ccsm4.rcp45.2006-2300.nc -Anomaly.Forcing.Longwave:datavars = rlds Faxa_lwdn_af From 4b96267b8e806b5627d6c8ef693671220b4302fa Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 8 Aug 2024 16:22:50 -0600 Subject: [PATCH 08/76] Update CDEPS external to 462c7a9. Branch ssp-fix: Fix more typos of "anomaly." --- Externals.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Externals.cfg b/Externals.cfg index df9daf3658..07c3a00a2b 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -55,7 +55,7 @@ local_path = components/cmeps required = True [cdeps] -tag = e4bd386dc564cbe2c89872947e2fc4c5c480480f +tag = 462c7a9cff10e7ce9a7ab2d670f159f91d96d2cb # ssp-fix protocol = git repo_url = https://github.com/samsrabin/CDEPS.git local_path = components/cdeps From 825fbb6f4fd0711ad36be3eddc6a6f773545506b Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 8 Aug 2024 17:32:34 -0600 Subject: [PATCH 09/76] Update CDEPS external to 759c591. Branch ssp-fix: Add Anomaly.Forcing.cmip6.ssp126. --- Externals.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Externals.cfg b/Externals.cfg index 07c3a00a2b..34fb385441 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -55,7 +55,7 @@ local_path = components/cmeps required = True [cdeps] -tag = 462c7a9cff10e7ce9a7ab2d670f159f91d96d2cb # ssp-fix +tag = 759c5910e147b322a5ac833ddc760d9a27b90477 # ssp-fix protocol = git repo_url = https://github.com/samsrabin/CDEPS.git local_path = components/cdeps From 496c1540c0971035f33ed1c51292fba54c9b6ff6 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 8 Aug 2024 17:34:59 -0600 Subject: [PATCH 10/76] datm_ssp126_anom_forc testmod now uses Anomaly.Forcing.cmip6.ssp126. --- .../clm/datm_ssp126_anom_forc/user_nl_datm | 2 +- .../user_nl_datm_streams | 22 ------------------- 2 files changed, 1 insertion(+), 23 deletions(-) delete mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/user_nl_datm_streams diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/user_nl_datm index d8ee13a339..83878d7e4c 100644 --- a/cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/user_nl_datm +++ b/cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/user_nl_datm @@ -1 +1 @@ -anomaly_forcing = 'Anomaly.Forcing.Temperature' +anomaly_forcing = 'Anomaly.Forcing.cmip6.ssp126' diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/user_nl_datm_streams b/cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/user_nl_datm_streams deleted file mode 100644 index 34ca8a96ae..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/user_nl_datm_streams +++ /dev/null @@ -1,22 +0,0 @@ -Anomaly.Forcing.Temperature:year_first=2015 -Anomaly.Forcing.Temperature:year_last=2100 -Anomaly.Forcing.Temperature:year_align=2015 -Anomaly.Forcing.Temperature:meshfile =$DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc -! List of Data types to use -! Remove the variables you do NOT want to include in the Anomaly forcing: -! pr is preciptiation -! tas is temperature -! huss is humidity -! uas and vas are U and V winds -! rsds is solare -! rlds is LW down -Anomaly.Forcing.Temperature:datavars = pr Faxa_prec_af, \ - tas Sa_tbot_af, \ - ps Sa_pbot_af, \ - huss Sa_shum_af, \ - uas Sa_u_af, \ - vas Sa_v_af, \ - rsds Faxa_swdn_af, \ - rlds Faxa_lwdn_af -Anomaly.Forcing.Temperature:datafiles =$DIN_LOC_ROOT/atm/datm7/anomaly_forcing/CMIP6-SSP1-2.6/af.allvars.CESM.SSP1-2.6.2015-2100_c20220628.nc - From 0a8df10ce43d8d722875d50443a4b6e63a80cf41 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 8 Aug 2024 17:35:51 -0600 Subject: [PATCH 11/76] Add 'ssp' test suite. --- cime_config/testdefs/testlist_clm.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index c2a90507ba..a97f91e62a 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -2532,6 +2532,7 @@ + From 634cfcef4a8c9554adc12f1ad950a6e49da5f3a6 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 8 Aug 2024 18:25:26 -0600 Subject: [PATCH 12/76] Update CDEPS external to 84669d7. ssp-fix branch: Add Anomaly.Forcing.cmip6.245, 370, 585. --- Externals.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Externals.cfg b/Externals.cfg index 34fb385441..e8a682598b 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -55,7 +55,7 @@ local_path = components/cmeps required = True [cdeps] -tag = 759c5910e147b322a5ac833ddc760d9a27b90477 # ssp-fix +tag = 84669d7984e8a941b3e675c0d331c72deec932b3 # ssp-fix protocol = git repo_url = https://github.com/samsrabin/CDEPS.git local_path = components/cdeps From 42b7575846e8f2c8beb19a0b812b639512df6526 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 8 Aug 2024 18:28:33 -0600 Subject: [PATCH 13/76] Add testmods for ssp245, 370, 585. --- .../testmods_dirs/clm/datm_ssp245_anom_forc/include_user_mods | 1 + .../testmods_dirs/clm/datm_ssp245_anom_forc/user_nl_datm | 1 + .../testmods_dirs/clm/datm_ssp370_anom_forc/include_user_mods | 1 + .../testmods_dirs/clm/datm_ssp370_anom_forc/user_nl_datm | 1 + .../testmods_dirs/clm/datm_ssp585_anom_forc/include_user_mods | 1 + .../testmods_dirs/clm/datm_ssp585_anom_forc/user_nl_datm | 1 + 6 files changed, 6 insertions(+) create mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/include_user_mods create mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/user_nl_datm create mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/include_user_mods create mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/user_nl_datm create mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/include_user_mods create mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/user_nl_datm diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/include_user_mods new file mode 100644 index 0000000000..fe0e18cf88 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/include_user_mods @@ -0,0 +1 @@ +../default diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/user_nl_datm new file mode 100644 index 0000000000..148091362d --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/user_nl_datm @@ -0,0 +1 @@ +anomaly_forcing = 'Anomaly.Forcing.cmip6.ssp245' diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/include_user_mods new file mode 100644 index 0000000000..fe0e18cf88 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/include_user_mods @@ -0,0 +1 @@ +../default diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/user_nl_datm new file mode 100644 index 0000000000..082d916c2e --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/user_nl_datm @@ -0,0 +1 @@ +anomaly_forcing = 'Anomaly.Forcing.cmip6.ssp370' diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/include_user_mods new file mode 100644 index 0000000000..fe0e18cf88 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/include_user_mods @@ -0,0 +1 @@ +../default diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/user_nl_datm new file mode 100644 index 0000000000..d218ac45b7 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/user_nl_datm @@ -0,0 +1 @@ +anomaly_forcing = 'Anomaly.Forcing.cmip6.ssp585' From 567fcad83fb66a7c219453ed3ba9a6001efdc2c2 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 8 Aug 2024 18:30:29 -0600 Subject: [PATCH 14/76] Add ssp suite tests for 245, 370, 585. --- cime_config/testdefs/testlist_clm.xml | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index a97f91e62a..92b137d857 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -2529,6 +2529,7 @@ + @@ -2539,6 +2540,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + From c4ec313d239cc1a70a28e15794593dff68fda070 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 8 Aug 2024 20:59:22 -0600 Subject: [PATCH 15/76] Update CDEPS external to 547506603e. Branch ssp-fix: Merge tag 'cdeps1.0.34' into ssp-fix --- .gitmodules | 2 +- components/cdeps | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 824337af6f..b010ad89a2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps url = https://github.com/samsrabin/CDEPS.git -fxtag = 84669d7984e8a941b3e675c0d331c72deec932b3 +fxtag = 547506603e1f3ac302f16e70b448d74a84947341 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 diff --git a/components/cdeps b/components/cdeps index 84669d7984..547506603e 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit 84669d7984e8a941b3e675c0d331c72deec932b3 +Subproject commit 547506603e1f3ac302f16e70b448d74a84947341 From 49382ee62b6d51b60606b3b7c436c18d35132993 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 4 Sep 2024 16:52:09 -0600 Subject: [PATCH 16/76] Update CDEPS external to 3f36622. Branch ssp-fix: "anomaly_forcing now automatically set based on compset (ISSP*)." Also updates testmods accordingly. --- .gitmodules | 2 +- cime_config/testdefs/testlist_clm.xml | 40 +++++++++++++++++++ .../clm/datm_ssp126_anom_forc/user_nl_datm | 1 - .../clm/datm_ssp245_anom_forc/user_nl_datm | 1 - .../clm/datm_ssp370_anom_forc/user_nl_datm | 1 - .../clm/datm_ssp585_anom_forc/user_nl_datm | 1 - components/cdeps | 2 +- 7 files changed, 42 insertions(+), 6 deletions(-) delete mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/user_nl_datm delete mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/user_nl_datm delete mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/user_nl_datm delete mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/user_nl_datm diff --git a/.gitmodules b/.gitmodules index b010ad89a2..37a3f9624f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps url = https://github.com/samsrabin/CDEPS.git -fxtag = 547506603e1f3ac302f16e70b448d74a84947341 +fxtag = 3f36622b3bd6358d324f1aca5e90009db306963e 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 diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index f8e8d3208f..f2bd123c84 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -1989,6 +1989,7 @@ + @@ -2551,6 +2552,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/user_nl_datm deleted file mode 100644 index 83878d7e4c..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/user_nl_datm +++ /dev/null @@ -1 +0,0 @@ -anomaly_forcing = 'Anomaly.Forcing.cmip6.ssp126' diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/user_nl_datm deleted file mode 100644 index 148091362d..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/user_nl_datm +++ /dev/null @@ -1 +0,0 @@ -anomaly_forcing = 'Anomaly.Forcing.cmip6.ssp245' diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/user_nl_datm deleted file mode 100644 index 082d916c2e..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/user_nl_datm +++ /dev/null @@ -1 +0,0 @@ -anomaly_forcing = 'Anomaly.Forcing.cmip6.ssp370' diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/user_nl_datm deleted file mode 100644 index d218ac45b7..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/user_nl_datm +++ /dev/null @@ -1 +0,0 @@ -anomaly_forcing = 'Anomaly.Forcing.cmip6.ssp585' diff --git a/components/cdeps b/components/cdeps index 547506603e..3f36622b3b 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit 547506603e1f3ac302f16e70b448d74a84947341 +Subproject commit 3f36622b3bd6358d324f1aca5e90009db306963e From 728257bd21ade1948bd014c7ad79310fd9472257 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Sep 2024 09:04:35 -0600 Subject: [PATCH 17/76] Update CDEPS external to 797b320. Branch ssp-fix: Now actually sets anomaly_forcing based on compset. --- .gitmodules | 2 +- components/cdeps | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 37a3f9624f..37052fdc07 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps url = https://github.com/samsrabin/CDEPS.git -fxtag = 3f36622b3bd6358d324f1aca5e90009db306963e +fxtag = 797b320464a93b05eea492ea2f28821a14584515 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 diff --git a/components/cdeps b/components/cdeps index 3f36622b3b..797b320464 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit 3f36622b3bd6358d324f1aca5e90009db306963e +Subproject commit 797b320464a93b05eea492ea2f28821a14584515 From 4da45876d25bc875fb4cb3a714214d08f9b2ddaa Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Sep 2024 13:02:36 -0600 Subject: [PATCH 18/76] Update CDEPS external to 274b06b. Branch ssp-fix: Only set anomaly_forcing for DATM SSP compsets. --- .gitmodules | 2 +- components/cdeps | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 37052fdc07..648b29abb9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps url = https://github.com/samsrabin/CDEPS.git -fxtag = 797b320464a93b05eea492ea2f28821a14584515 +fxtag = 274b06bfd59c6e6f8e4ffcd257747ac09099bf91 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 diff --git a/components/cdeps b/components/cdeps index 797b320464..274b06bfd5 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit 797b320464a93b05eea492ea2f28821a14584515 +Subproject commit 274b06bfd59c6e6f8e4ffcd257747ac09099bf91 From 51a8e1b76d12790284ae3912494dcb7962efe873 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Sep 2024 11:46:22 -0600 Subject: [PATCH 19/76] Update "Running with anomaly forcing" doc for latest CDEPS. --- .../Running-with-anomaly-forcing.rst | 90 ++++++++++++------- 1 file changed, 59 insertions(+), 31 deletions(-) diff --git a/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst b/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst index 0c6009f3fe..efb6400afe 100644 --- a/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst +++ b/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst @@ -7,39 +7,67 @@ ============================== Because performing fully coupled climate simulations is computationally expensive, an alternate method of running land-only simulations forced by future climate projections was developed for CTSM called 'anomaly forcing'. The anomaly forcing method uses a previously completed fully coupled simulation to create monthly anomalies, relative to the present day, of near-surface atmospheric states and fluxes. These anomalies, representing the evolution of future climate projections, are applied to a repeating cycle of present day atmospheric forcing data, either as an additive (for states) or multiplicative (for fluxes) quantity. Thus, high-frequency variability is obtained from the present day atmospheric forcing data, while the long-term evolution of the climate is determined by the anomaly forcing dataset. -To enable anomaly forcing in a CTSM simulation, the following namelist variable can be added to the user\_nl\_datm file: - - anomaly\_forcing = 'Anomaly.Forcing.Precip','Anomaly.Forcing.Temperature','Anomaly.Forcing.Pressure','Anomaly.Forcing.Humidity','Anomaly.Forcing.Uwind','Anomaly.Forcing.Vwind','Anomaly.Forcing.Shortwave','Anomaly.Forcing.Longwave' - -Any combination or subset of forcing variables can be used, e.g. to modify only a single atmospheric forcing variable, one could use: - - anomaly\_forcing = 'Anomaly.Forcing.Temperature' - -which will only adjust the temperature (TBOT). - -After the namelist has been created, the run directory will be populated with files such as these: - - datm.streams.txt.Anomaly.Forcing.Temperature - -which will contain the location of the default anomaly forcing datasets. To use alternative data, copy these files to the case directory with the 'user\_' prefix, and modify the 'user\_*' files accordingly, e.g.: - - user\_datm.streams.txt.Anomaly.Forcing.Temperature - - For example, one could use the user\_datm.streams.txt.Anomaly.Forcing.* files to point to these SSP-derived anomaly forcing datasets: - - /glade/p/cesmdata/cseg/inputdata/atm/datm7/anomaly\_forcing/CMIP6-SSP3-7.0 - - af.huss.cesm2.SSP3-7.0.2015-2100\_c20200329.nc - af.pr.cesm2.SSP3-7.0.2015-2100\_c20200329.nc - af.ps.cesm2.SSP3-7.0.2015-2100\_c20200329.nc - af.rlds.cesm2.SSP3-7.0.2015-2100\_c20200329.nc - af.rsds.cesm2.SSP3-7.0.2015-2100\_c20200329.nc - af.tas.cesm2.SSP3-7.0.2015-2100\_c20200329.nc - -Users may wish to also update files such as the landuse\_timeseries and aerosol and Ndepostion files to correspond to the appropriate SSP. +Anomaly climate forcings are automatically enabled for ``ISSP`` compsets (e.g., ``ISSP585``). To disable anomaly forcing in such compsets, the following can be added to the ``user_nl_datm`` file: + +TODO: WHAT WOULD THIS DO? + +:: + + anomaly_forcing = '' + +After the namelist has been created, ``CaseDocs/datm.streams.xml`` will have an entry like this pointing to the anomaly forcing file being used: + +:: + + + ... + + /glade/campaign/cesm/cesmdata/inputdata/atm/datm7/anomaly_forcing/CMIP6-SSP5-8.5/af.allvars.CESM.SSP5-8.5.2015-2100_c20220628.nc + + + huss Sa_shum_af + pr Faxa_prec_af + ps Sa_pbot_af + rlds Faxa_lwdn_af + rsds Faxa_swdn_af + tas Sa_tbot_af + uas Sa_u_af + vas Sa_v_af + + ... + + +To use alternative data, add a ``user_nl_datm_streams`` namelist file to your case with contents like so: + +:: + + Anomaly.Forcing.cmip6.ssp585:datafiles = /path/to/your/datafile + Anomaly.Forcing.cmip6.ssp585:meshfile = /path/to/meshfile/for/your/datafile + + ! List of Data types to use + ! Remove the variables you do NOT want to include in the anomaly forcing: + ! pr is precipitation + ! tas is temperature + ! huss is humidity + ! uas and vas are U and V winds + ! rsds is solare + ! rlds is LW down + Anomaly.Forcing.cmip6.ssp585:datavars = pr Faxa_prec_af, \ + tas Sa_tbot_af, \ + ps Sa_pbot_af, \ + huss Sa_shum_af, \ + uas Sa_u_af, \ + vas Sa_v_af, \ + rsds Faxa_swdn_af, \ + rlds Faxa_lwdn_af + + +Note that other inputs are also set automatically for ``ISSP`` compsets, including CO2 (``co2tseries``), ozone (``preso3``), N deposition (``presndep``), and aerosols (``presaero``). For single point simulations, the global anomaly forcing files can be used, but the map_algo namelist variable should be appended with nearest neighbor values for each of the anomaly forcing fields, e.g. +TODO: IN WHAT NAMELIST? DOES THIS NEED TO BE UPDATED? + mapalgo = 'nn','nn','nn','nn','nn','nn','nn','nn','nn','nn','nn','nn','nn' (the number of 'nn' values will depend on the number of original streams plus the number of anomaly forcing streams) -The cycling of the present-day (base) climate is controlled through the DATM\_CLMNCEP\_YR\_START and DATM_CLMNCEP\_YR\_END variables in env\_run.xml. +The first and last years over which the present-day (base) climate should cycle are set through the ``DATM_YR_START`` and ``DATM_YR_END`` XML variables. From 1644c619755b5d88f86333a308edf991de1fb7ce Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Sep 2024 12:07:28 -0600 Subject: [PATCH 20/76] Running-with-anomaly-forcing.rst: Formatting improvements. --- .../Running-with-anomaly-forcing.rst | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst b/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst index efb6400afe..1dcc5e1546 100644 --- a/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst +++ b/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst @@ -5,7 +5,7 @@ ============================== Running with anomaly forcing ============================== -Because performing fully coupled climate simulations is computationally expensive, an alternate method of running land-only simulations forced by future climate projections was developed for CTSM called 'anomaly forcing'. The anomaly forcing method uses a previously completed fully coupled simulation to create monthly anomalies, relative to the present day, of near-surface atmospheric states and fluxes. These anomalies, representing the evolution of future climate projections, are applied to a repeating cycle of present day atmospheric forcing data, either as an additive (for states) or multiplicative (for fluxes) quantity. Thus, high-frequency variability is obtained from the present day atmospheric forcing data, while the long-term evolution of the climate is determined by the anomaly forcing dataset. +Because performing fully coupled climate simulations is computationally expensive, an alternate method of running land-only simulations forced by future climate projections was developed for CTSM called "anomaly forcing." The anomaly forcing method uses a previously-completed, fully-coupled simulation to create monthly anomalies, relative to the present day, of near-surface atmospheric states and fluxes. These anomalies, representing the evolution of future climate projections, are applied to a repeating cycle of present day atmospheric forcing data, either as an additive (for states) or multiplicative (for fluxes) quantity. Thus, high-frequency variability is obtained from the present day atmospheric forcing data, while the long-term evolution of the climate is determined by the anomaly forcing dataset. Anomaly climate forcings are automatically enabled for ``ISSP`` compsets (e.g., ``ISSP585``). To disable anomaly forcing in such compsets, the following can be added to the ``user_nl_datm`` file: @@ -64,10 +64,14 @@ To use alternative data, add a ``user_nl_datm_streams`` namelist file to your ca Note that other inputs are also set automatically for ``ISSP`` compsets, including CO2 (``co2tseries``), ozone (``preso3``), N deposition (``presndep``), and aerosols (``presaero``). -For single point simulations, the global anomaly forcing files can be used, but the map_algo namelist variable should be appended with nearest neighbor values for each of the anomaly forcing fields, e.g. +For single-point simulations, the global anomaly forcing files can be used, but the ``mapalgo`` namelist variable should be appended with nearest neighbor values for each of the anomaly forcing fields. I.e.: -TODO: IN WHAT NAMELIST? DOES THIS NEED TO BE UPDATED? +TODO: IN WHAT NAMELIST? DOES THIS NEED TO BE UPDATED? IMPROVE CLARITY OF NOTE: HOW CAN USER CALCULATE NUMBER NEEDED? - mapalgo = 'nn','nn','nn','nn','nn','nn','nn','nn','nn','nn','nn','nn','nn' (the number of 'nn' values will depend on the number of original streams plus the number of anomaly forcing streams) +:: + + ! The number of 'nn' values will depend on the number of original streams + ! plus the number of anomaly forcing streams + mapalgo = 'nn','nn','nn','nn','nn','nn','nn','nn','nn','nn','nn','nn','nn' The first and last years over which the present-day (base) climate should cycle are set through the ``DATM_YR_START`` and ``DATM_YR_END`` XML variables. From 5aae2a66c899a150d2ee7d9dc1cca2239a49029f Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Sep 2024 12:20:03 -0600 Subject: [PATCH 21/76] Running-with-anomaly-forcing.rst: Resolve a TODO. --- .../Running-with-anomaly-forcing.rst | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst b/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst index 1dcc5e1546..6b3752b86d 100644 --- a/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst +++ b/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst @@ -7,15 +7,7 @@ ============================== Because performing fully coupled climate simulations is computationally expensive, an alternate method of running land-only simulations forced by future climate projections was developed for CTSM called "anomaly forcing." The anomaly forcing method uses a previously-completed, fully-coupled simulation to create monthly anomalies, relative to the present day, of near-surface atmospheric states and fluxes. These anomalies, representing the evolution of future climate projections, are applied to a repeating cycle of present day atmospheric forcing data, either as an additive (for states) or multiplicative (for fluxes) quantity. Thus, high-frequency variability is obtained from the present day atmospheric forcing data, while the long-term evolution of the climate is determined by the anomaly forcing dataset. -Anomaly climate forcings are automatically enabled for ``ISSP`` compsets (e.g., ``ISSP585``). To disable anomaly forcing in such compsets, the following can be added to the ``user_nl_datm`` file: - -TODO: WHAT WOULD THIS DO? - -:: - - anomaly_forcing = '' - -After the namelist has been created, ``CaseDocs/datm.streams.xml`` will have an entry like this pointing to the anomaly forcing file being used: +Anomaly climate forcings are automatically enabled for ``ISSP`` compsets (e.g., ``ISSP585``). After the namelist has been created, ``CaseDocs/datm.streams.xml`` will have an entry like this pointing to the anomaly forcing file being used: :: @@ -61,6 +53,11 @@ To use alternative data, add a ``user_nl_datm_streams`` namelist file to your ca rsds Faxa_swdn_af, \ rlds Faxa_lwdn_af +To instead disable anomaly forcing in ``ISSP`` compsets, the following can be added to the ``user_nl_datm`` file: + +:: + + anomaly_forcing = 'none' Note that other inputs are also set automatically for ``ISSP`` compsets, including CO2 (``co2tseries``), ozone (``preso3``), N deposition (``presndep``), and aerosols (``presaero``). From a2fc1c1eea842ba3e5d385a4eb971016329f28d0 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Sep 2024 13:57:02 -0600 Subject: [PATCH 22/76] Running-with-anomaly-forcing.rst: Update single-pt instructions. --- .../Running-with-anomaly-forcing.rst | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst b/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst index 6b3752b86d..0a22fea0c6 100644 --- a/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst +++ b/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst @@ -61,14 +61,13 @@ To instead disable anomaly forcing in ``ISSP`` compsets, the following can be ad Note that other inputs are also set automatically for ``ISSP`` compsets, including CO2 (``co2tseries``), ozone (``preso3``), N deposition (``presndep``), and aerosols (``presaero``). -For single-point simulations, the global anomaly forcing files can be used, but the ``mapalgo`` namelist variable should be appended with nearest neighbor values for each of the anomaly forcing fields. I.e.: +For single-point simulations, the global anomaly forcing files can be used, but the map should be nearest-neighbor interpolated by putting the following in ``user_nl_datm_streams``: -TODO: IN WHAT NAMELIST? DOES THIS NEED TO BE UPDATED? IMPROVE CLARITY OF NOTE: HOW CAN USER CALCULATE NUMBER NEEDED? +TODO: IS THIS ACTUALLY NEEDED? :: - ! The number of 'nn' values will depend on the number of original streams - ! plus the number of anomaly forcing streams - mapalgo = 'nn','nn','nn','nn','nn','nn','nn','nn','nn','nn','nn','nn','nn' + ! Replace "ssp585" if needed + Anomaly.Forcing.cmip6.ssp585:mapalgo = nn The first and last years over which the present-day (base) climate should cycle are set through the ``DATM_YR_START`` and ``DATM_YR_END`` XML variables. From f514ed8599ea686ccab5d73f07d3ae7b96e31f8b Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Sep 2024 14:21:03 -0600 Subject: [PATCH 23/76] Update CDEPS external to 1e403a8. Branch ssp-fix: Provide hint in error message if namelist variable invalid due to surrounding quote marks. --- .gitmodules | 2 +- components/cdeps | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 648b29abb9..7e4d38607a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps url = https://github.com/samsrabin/CDEPS.git -fxtag = 274b06bfd59c6e6f8e4ffcd257747ac09099bf91 +fxtag = 1e403a8574096d58cfb332cd620faaea156359eb 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 diff --git a/components/cdeps b/components/cdeps index 274b06bfd5..1e403a8574 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit 274b06bfd59c6e6f8e4ffcd257747ac09099bf91 +Subproject commit 1e403a8574096d58cfb332cd620faaea156359eb From da2f4e8813f6130ea8f2908e5db719cb97609e72 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Sep 2024 15:17:04 -0600 Subject: [PATCH 24/76] Update CDEPS external to b1f17519. Branch ssp-fix: Make datm buildnml more robust. --- .gitmodules | 2 +- components/cdeps | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 7e4d38607a..a8a88fd3dd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps url = https://github.com/samsrabin/CDEPS.git -fxtag = 1e403a8574096d58cfb332cd620faaea156359eb +fxtag = b1f17519a57d2b99aa6651235a713836e0844eb8 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 diff --git a/components/cdeps b/components/cdeps index 1e403a8574..b1f17519a5 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit 1e403a8574096d58cfb332cd620faaea156359eb +Subproject commit b1f17519a57d2b99aa6651235a713836e0844eb8 From 8cb5854267974e934b42733003a1c1b609ffc803 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Sep 2024 15:20:55 -0600 Subject: [PATCH 25/76] Remove datm_ssp*_anom_forc testmods. --- cime_config/testdefs/testlist_clm.xml | 40 +------------------ .../datm_ssp126_anom_forc/include_user_mods | 1 - .../datm_ssp245_anom_forc/include_user_mods | 1 - .../datm_ssp370_anom_forc/include_user_mods | 1 - .../datm_ssp585_anom_forc/include_user_mods | 1 - 5 files changed, 1 insertion(+), 43 deletions(-) delete mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/include_user_mods delete mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/include_user_mods delete mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/include_user_mods delete mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/include_user_mods diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index f2bd123c84..6ad95bda6c 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -2514,46 +2514,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/include_user_mods deleted file mode 100644 index fe0e18cf88..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/datm_ssp126_anom_forc/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../default diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/include_user_mods deleted file mode 100644 index fe0e18cf88..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/datm_ssp245_anom_forc/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../default diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/include_user_mods deleted file mode 100644 index fe0e18cf88..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/datm_ssp370_anom_forc/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../default diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/include_user_mods deleted file mode 100644 index fe0e18cf88..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/datm_ssp585_anom_forc/include_user_mods +++ /dev/null @@ -1 +0,0 @@ -../default From 01967bf96af78f698dc043d8cc27f0616a9d3f6f Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Sep 2024 15:36:03 -0600 Subject: [PATCH 26/76] Replace non-SSP test in ssp suite with nvhpc version. To match what's run in aux_clm. --- cime_config/testdefs/testlist_clm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index 6ad95bda6c..df6f6b01cc 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -1989,7 +1989,7 @@ - + From 124027b2d7500a61490ca3fa4827943768e4243d Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Sep 2024 15:49:45 -0600 Subject: [PATCH 27/76] Update CDEPS external to 25c7b92. Branch ssp-fix: Bugfix to future-proofing of datm buildnml. --- .gitmodules | 2 +- components/cdeps | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index a8a88fd3dd..2708c9446b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps url = https://github.com/samsrabin/CDEPS.git -fxtag = b1f17519a57d2b99aa6651235a713836e0844eb8 +fxtag = 25c7b920de8fdf1a90b00276a0d7b003b4a845a9 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 diff --git a/components/cdeps b/components/cdeps index b1f17519a5..25c7b920de 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit b1f17519a57d2b99aa6651235a713836e0844eb8 +Subproject commit 25c7b920de8fdf1a90b00276a0d7b003b4a845a9 From 28ecb3f7d6264faf9fe6fa886e0e90cfd27294cc Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 6 Sep 2024 09:56:40 -0600 Subject: [PATCH 28/76] Update CDEPS external to 7cb5040. Branch ssp-fix: Add aux_cdeps tests for SSPs other than 585. --- .gitmodules | 2 +- components/cdeps | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 2708c9446b..64d0b8b2a8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps url = https://github.com/samsrabin/CDEPS.git -fxtag = 25c7b920de8fdf1a90b00276a0d7b003b4a845a9 +fxtag = 7cb5040af8bfd6edc0cb2607e42ba63f1e2f0a0d 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 diff --git a/components/cdeps b/components/cdeps index 25c7b920de..7cb5040af8 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit 25c7b920de8fdf1a90b00276a0d7b003b4a845a9 +Subproject commit 7cb5040af8bfd6edc0cb2607e42ba63f1e2f0a0d From 865858f132e986d984ae07534215a5102105cd5c Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 19 Feb 2025 14:13:46 -0700 Subject: [PATCH 29/76] Update CDEPS external to 93e59c0f19110d2ace7a94c6906b19ca3bfa98f0. Branch ssp-fix: Fix indentation. --- .gitmodules | 2 +- components/cdeps | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 64d0b8b2a8..483c1ef746 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps url = https://github.com/samsrabin/CDEPS.git -fxtag = 7cb5040af8bfd6edc0cb2607e42ba63f1e2f0a0d +fxtag = 93e59c0f19110d2ace7a94c6906b19ca3bfa98f0 # Branch ssp-fix: Fix indentation. 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 diff --git a/components/cdeps b/components/cdeps index 7cb5040af8..93e59c0f19 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit 7cb5040af8bfd6edc0cb2607e42ba63f1e2f0a0d +Subproject commit 93e59c0f19110d2ace7a94c6906b19ca3bfa98f0 From 741dc3306f63bb89725b5ffbe7b480b6499558cd Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 19 Feb 2025 13:42:19 -0700 Subject: [PATCH 30/76] Remove an extraneous test from ssp suite. --- cime_config/testdefs/testlist_clm.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index df6f6b01cc..41633612f3 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -1989,7 +1989,6 @@ - From 546dbcafc5ae2e6646e6620f6ebcb0c8741e9540 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 19 Feb 2025 13:42:37 -0700 Subject: [PATCH 31/76] Add noAnomalyForcing testmod and one test. --- cime_config/testdefs/testlist_clm.xml | 9 +++++++++ .../testmods_dirs/clm/noAnomalyForcing/user_nl_datm | 2 ++ 2 files changed, 11 insertions(+) create mode 100644 cime_config/testdefs/testmods_dirs/clm/noAnomalyForcing/user_nl_datm diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index 41633612f3..4aa06aa767 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -2533,6 +2533,15 @@ + + + + + + + + + diff --git a/cime_config/testdefs/testmods_dirs/clm/noAnomalyForcing/user_nl_datm b/cime_config/testdefs/testmods_dirs/clm/noAnomalyForcing/user_nl_datm new file mode 100644 index 0000000000..e609bf1b7a --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/noAnomalyForcing/user_nl_datm @@ -0,0 +1,2 @@ +anomaly_forcing = 'none' + From 19c35fba474c882e0ef35dd21ecbaa9534bab093 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 14 Mar 2025 14:54:41 -0600 Subject: [PATCH 32/76] Update CDEPS submodule to 196957f. Branch ssp-fix: buildnml now errors on mismatch between anomaly forcing and DATM_MODE. --- .gitmodules | 2 +- components/cdeps | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 483c1ef746..870deb3688 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps url = https://github.com/samsrabin/CDEPS.git -fxtag = 93e59c0f19110d2ace7a94c6906b19ca3bfa98f0 # Branch ssp-fix: Fix indentation. +fxtag = 196957fce5b9604d723efbd643fe9aa72b98477f # Branch ssp-fix: buildnml now errors on mismatch between anomaly forcing and DATM_MODE. 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 diff --git a/components/cdeps b/components/cdeps index 93e59c0f19..196957fce5 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit 93e59c0f19110d2ace7a94c6906b19ca3bfa98f0 +Subproject commit 196957fce5b9604d723efbd643fe9aa72b98477f From 5eb9cf4d97ef158353411e8738f27bae34fdf54c Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 14 Mar 2025 16:24:50 -0600 Subject: [PATCH 33/76] Update CDEPS external to 9b35f06b. Branch ssp-fix: Merge branch 'ssp-fix-202503' into ssp-fix --- .gitmodules | 2 +- components/cdeps | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 4d2e54853c..0eb50af013 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,7 +92,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps url = https://github.com/samsrabin/CDEPS.git -fxtag = 196957fce5b9604d723efbd643fe9aa72b98477f # Branch ssp-fix-202503: Merge tag 'cdeps1.0.61' into ssp-fix-202503 +fxtag = 9b35f06bb00ebf99ce0ff71373023092e656db34 # Branch ssp-fix: Merge branch 'ssp-fix-202503' into ssp-fix 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 diff --git a/components/cdeps b/components/cdeps index 4107fc336b..9b35f06bb0 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit 4107fc336b3c24555f80ea998f28a6d4a0b458a4 +Subproject commit 9b35f06bb00ebf99ce0ff71373023092e656db34 From d969449fc2c237b6de9419b29cd04ff721867e5f Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 14 Apr 2025 14:01:39 -0600 Subject: [PATCH 34/76] Update CDEPS to cdeps1.0.71. Now using the upstream repo instead of my fork. --- .gitmodules | 4 ++-- components/cdeps | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 0eb50af013..af0b670bf5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -91,8 +91,8 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps -url = https://github.com/samsrabin/CDEPS.git -fxtag = 9b35f06bb00ebf99ce0ff71373023092e656db34 # Branch ssp-fix: Merge branch 'ssp-fix-202503' into ssp-fix +url = https://github.com/ESCOMP/CDEPS.git +fxtag = cdeps1.0.71 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 diff --git a/components/cdeps b/components/cdeps index 9b35f06bb0..cde4ac685a 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit 9b35f06bb00ebf99ce0ff71373023092e656db34 +Subproject commit cde4ac685a6699c137bf7b76c4af47d326adbfa1 From 98e2485ff321e0d792aaf06dd652b6ef72386444 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 14 Apr 2025 14:14:50 -0600 Subject: [PATCH 35/76] Add an SSP245 test to aux_clm. --- cime_config/testdefs/testlist_clm.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index f87a208f4d..541984ecaa 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -2649,6 +2649,7 @@ + From bdd601a88aa0f693f977c6a63548b38ac8db509e Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 14 Apr 2025 14:47:09 -0600 Subject: [PATCH 36/76] Delete tmp_scripts/. --- tmp_scripts/make_allvars_files.sh | 46 ------------------- .../test-ssp-temperature-ctsm5.2.003.sh | 35 -------------- 2 files changed, 81 deletions(-) delete mode 100755 tmp_scripts/make_allvars_files.sh delete mode 100755 tmp_scripts/test-ssp-temperature-ctsm5.2.003.sh diff --git a/tmp_scripts/make_allvars_files.sh b/tmp_scripts/make_allvars_files.sh deleted file mode 100755 index 06d47a9479..0000000000 --- a/tmp_scripts/make_allvars_files.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash -set -e - -module load nco - -indir=/glade/campaign/cesm/cesmdata/cseg/inputdata/atm/datm7/anomaly_forcing -outdir=/glade/work/samrabin/ctsm_cdeps_ssp-temperature - -rcp=$1 -if [[ ${rcp} == "" ]]; then - echo "You must provide rcp (e.g., 45)" >&2 - exit 1 -fi - -if [[ ! -d "${indir}" ]]; then - echo "Input directory not found: ${indir}" >&2 - exit 1 -fi - -restoffilename="ccsm4.rcp${rcp}.2006-2300.nc" - -pushd "${indir}" 1>/dev/null -varlist="$(ls af.*.${restoffilename} | grep -v allvars | cut -f2 -d.)" -if [[ "${varlist}" == "" ]]; then - echo "No variables found" >&2 - exit 1 -fi -popd 1>/dev/null - -newfile="${outdir}/af.allvars.${restoffilename}" - -i=0 -for var in ${varlist}; do - echo $var - i=$((i + 1)) - thisfile="${indir}/af.${var}.${restoffilename}" - if [[ ${i} -eq 1 ]]; then - nccopy -k cdf5 "${thisfile}" "${newfile}" - continue - fi - ncks -A -v ${var} "${thisfile}" "${newfile}" -done - -echo Done - -exit 0 \ No newline at end of file diff --git a/tmp_scripts/test-ssp-temperature-ctsm5.2.003.sh b/tmp_scripts/test-ssp-temperature-ctsm5.2.003.sh deleted file mode 100755 index 4c9ca5c39e..0000000000 --- a/tmp_scripts/test-ssp-temperature-ctsm5.2.003.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash -set -e - -ssp=$1 -if [[ ${ssp} == "" ]]; then - echo "You must provide an SSP number (e.g., 245)" >&2 - exit 1 -fi -ssp_punctuation="$(echo ${ssp} | sed -E "s/(.)(.)(.)/\1-\2.\3/")" - -casedir="$HOME/cases_ctsm/test_cdeps_ssp-temperature" -compset="SSP${ssp}_DATM%GSWP3v1_CLM51%BGC-CROP_SICE_SOCN_MOSART_CISM2%NOEVOLVE_SWAV" -res="f10_f10_mg37" - -if [[ -d "${casedir}" ]]; then - rm -r "${casedir}" -fi - -cime/scripts/create_newcase --run-unsupported --case "${casedir}" --compset ${compset} --res ${res} \ - --handle-preexisting-dirs r - -cd "${casedir}" -./case.setup - -#echo "anomaly_forcing = 'Anomaly.Forcing.Temperature'" >> user_nl_datm -echo "anomaly_forcing = 'Anomaly.Forcing.cmip5.rcp45'" >> user_nl_datm -echo "flanduse_timeseries = '/glade/campaign/cesm/cesmdata/cseg/inputdata/lnd/clm2/surfdata_esmf/ctsm5.2.0/landuse.timeseries_10x15_SSP${ssp_punctuation}_78_CMIP6_1850-2100_c230517.nc'" >> user_nl_clm - -echo "Generating namelists..." -./preview_namelists 1>/dev/null - -./xmlquery COMPSET -grep "" CaseDocs/datm.streams.xml | grep anomaly_forcing | grep '.tas.' - -exit 0 From 599fdaf575b109dbc94f27a272737909a794c41f Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 14 Apr 2025 14:55:22 -0600 Subject: [PATCH 37/76] datm_rcp45_anom_forc testmod: Delete user_nl_clm. --- .../testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_clm | 1 - 1 file changed, 1 deletion(-) delete mode 100644 cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_clm diff --git a/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_clm deleted file mode 100644 index ebd35fb2ab..0000000000 --- a/cime_config/testdefs/testmods_dirs/clm/datm_rcp45_anom_forc/user_nl_clm +++ /dev/null @@ -1 +0,0 @@ -flanduse_timeseries = '$DIN_LOC_ROOT/lnd/clm2/surfdata_esmf/ctsm5.2.0/landuse.timeseries_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240216.nc' From 4b16a84edf33966df58afbd36f7a97ded5fa5269 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 14 Apr 2025 14:57:15 -0600 Subject: [PATCH 38/76] Add RCP45 test to aux_clm and ssp suites. --- cime_config/testdefs/testlist_clm.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index af1e17b7d6..a33f110640 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -3094,6 +3094,16 @@ + + + + + + + + + + From f50aeccf4d883854d6623ca78a2ee3427bf6ba79 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 21 Apr 2025 14:38:59 -0600 Subject: [PATCH 39/76] Add anomaly_forcing = 'none' for tower site defaults. --- .../usermods_dirs/clm/NEON/FATES/defaults/user_nl_datm_streams | 2 ++ .../usermods_dirs/clm/NEON/defaults/user_nl_datm_streams | 1 + .../usermods_dirs/clm/PLUMBER2/defaults/user_nl_datm_streams | 1 + 3 files changed, 4 insertions(+) diff --git a/cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_datm_streams b/cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_datm_streams index 36f1e72b3a..0509b57542 100644 --- a/cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_datm_streams +++ b/cime_config/usermods_dirs/clm/NEON/FATES/defaults/user_nl_datm_streams @@ -37,3 +37,5 @@ preso3.SSP3-7.0:year_first=2018 preso3.SSP3-7.0:year_last=2022 preso3.SSP3-7.0:year_align=2018 preso3.SSP3-7.0:dtlimit=30 + +anomaly_forcing = 'none' diff --git a/cime_config/usermods_dirs/clm/NEON/defaults/user_nl_datm_streams b/cime_config/usermods_dirs/clm/NEON/defaults/user_nl_datm_streams index bae77db6b5..0509b57542 100644 --- a/cime_config/usermods_dirs/clm/NEON/defaults/user_nl_datm_streams +++ b/cime_config/usermods_dirs/clm/NEON/defaults/user_nl_datm_streams @@ -38,3 +38,4 @@ preso3.SSP3-7.0:year_last=2022 preso3.SSP3-7.0:year_align=2018 preso3.SSP3-7.0:dtlimit=30 +anomaly_forcing = 'none' diff --git a/cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_datm_streams b/cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_datm_streams index 29a8c675ac..a63b4a3a56 100644 --- a/cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_datm_streams +++ b/cime_config/usermods_dirs/clm/PLUMBER2/defaults/user_nl_datm_streams @@ -39,3 +39,4 @@ presndep.SSP3-7.0:dtlimit=30 co2tseries.SSP3-7.0:datafiles = $DIN_LOC_ROOT/atm/datm7/CO2/fco2_datm_globalSSP3-7.0_simyr_1750-2501_CMIP6_c201101.nc +anomaly_forcing = 'none' From 28c7936798bf4b4735e9556625361cdd2937783f Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Wed, 14 May 2025 14:52:55 -0600 Subject: [PATCH 40/76] Anomaly forcing docs: Remove bit about NN. --- .../Running-with-anomaly-forcing.rst | 9 --------- 1 file changed, 9 deletions(-) diff --git a/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst b/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst index 0a22fea0c6..a8197d836c 100644 --- a/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst +++ b/doc/source/users_guide/running-special-cases/Running-with-anomaly-forcing.rst @@ -61,13 +61,4 @@ To instead disable anomaly forcing in ``ISSP`` compsets, the following can be ad Note that other inputs are also set automatically for ``ISSP`` compsets, including CO2 (``co2tseries``), ozone (``preso3``), N deposition (``presndep``), and aerosols (``presaero``). -For single-point simulations, the global anomaly forcing files can be used, but the map should be nearest-neighbor interpolated by putting the following in ``user_nl_datm_streams``: - -TODO: IS THIS ACTUALLY NEEDED? - -:: - - ! Replace "ssp585" if needed - Anomaly.Forcing.cmip6.ssp585:mapalgo = nn - The first and last years over which the present-day (base) climate should cycle are set through the ``DATM_YR_START`` and ``DATM_YR_END`` XML variables. From 7e10e0088915b9ce5ef293208151f1ae13612c98 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 30 May 2025 12:15:00 -0600 Subject: [PATCH 41/76] 3 ctsm_sci tests no longer expected to fail. --- cime_config/testdefs/ExpectedTestFails.xml | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 77083c778d..c4f20b5a9a 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -36,27 +36,6 @@ - - - FAIL - #2686 - - - - - - FAIL - #2686 - - - - - - FAIL - #2686 - - - FAIL From 630f7f444d22f9bf32a8ef8083dae1c5421d0963 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 30 May 2025 12:59:31 -0600 Subject: [PATCH 42/76] Add workflow to check XML files for well-formedness. --- .github/workflows/xml-check.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .github/workflows/xml-check.yml diff --git a/.github/workflows/xml-check.yml b/.github/workflows/xml-check.yml new file mode 100644 index 0000000000..a6d79ada5c --- /dev/null +++ b/.github/workflows/xml-check.yml @@ -0,0 +1,30 @@ +name: Check that XML files are well-formed + +on: [push, pull_request] # Trigger on push or pull request + +jobs: + check-xml-expected-fails: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Check XML files for well-formedness + run: | + file_list="$(git ls-files '*.xml' --exclude-standard)" # Don't include .xml files in submodules + n_files=$(echo $file_list | wc -w) + n_bad=0 + n_checked=0 + for f in ${file_list}; do + xmllint $f 1>/dev/null 2>&1 + result=$? + ((n_checked++)) + if [[ ${result} -eq 0 ]]; then + echo "$f is well-formed" + else + echo "* $f is NOT well-formed" + ((n_bad++)) + fi + done + echo ${n_bad}/${n_files} XML files are not well-formed From 93e847a1faba30cae41b81fd5584072e0791a514 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 30 May 2025 13:53:30 -0600 Subject: [PATCH 43/76] xml-check.yml now uses Python instead of missing xmllint. --- .github/workflows/validate_xml.py | 47 +++++++++++++++++++++++++++++++ .github/workflows/xml-check.yml | 39 +++++++++++-------------- 2 files changed, 64 insertions(+), 22 deletions(-) create mode 100644 .github/workflows/validate_xml.py diff --git a/.github/workflows/validate_xml.py b/.github/workflows/validate_xml.py new file mode 100644 index 0000000000..72f13c1cbe --- /dev/null +++ b/.github/workflows/validate_xml.py @@ -0,0 +1,47 @@ +import sys +from lxml import etree +import glob +import os +import subprocess + + +def get_submodule_paths(): + cmd = "git config --file .gitmodules --get-regexp path | awk '{ print $2 }'" + result = subprocess.run(cmd, capture_output=True, text=True, shell=True, check=True) + result_list = result.stdout.split("\n")[:-1] + result_list = [x for x in result_list if x] + return result_list + + +def is_in_submodule(file_path, submodule): + return os.path.commonpath([file_path, submodule]) == os.path.commonpath([submodule]) + + +def is_in_any_submodule(file_path, submodule_paths): + file_path = os.path.abspath(file_path) + submodule_paths = map(os.path.abspath, submodule_paths) + return any(is_in_submodule(file_path, submodule) for submodule in submodule_paths) + + +def validate_xml(file_path): + try: + etree.parse(file_path) + except etree.XMLSyntaxError: + print(f"❌ {file_path} is NOT well-formed") + return False + print(f"✅ {file_path} is well-formed") + return True + + +def main(): + submodule_paths = get_submodule_paths() + all_valid = True + for xml_file in glob.glob("**/*.xml", recursive=True): + if is_in_any_submodule(xml_file, submodule_paths): + continue + if not validate_xml(xml_file): + all_valid = False + return all_valid + + +sys.exit(0 if main() else 1) diff --git a/.github/workflows/xml-check.yml b/.github/workflows/xml-check.yml index a6d79ada5c..db866c58a2 100644 --- a/.github/workflows/xml-check.yml +++ b/.github/workflows/xml-check.yml @@ -1,30 +1,25 @@ name: Check that XML files are well-formed +# Only check files in our repo that AREN'T in submodules +# Use a Python command to check each file on: [push, pull_request] # Trigger on push or pull request jobs: - check-xml-expected-fails: + check-xml: runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install lxml - - name: Check XML files for well-formedness - run: | - file_list="$(git ls-files '*.xml' --exclude-standard)" # Don't include .xml files in submodules - n_files=$(echo $file_list | wc -w) - n_bad=0 - n_checked=0 - for f in ${file_list}; do - xmllint $f 1>/dev/null 2>&1 - result=$? - ((n_checked++)) - if [[ ${result} -eq 0 ]]; then - echo "$f is well-formed" - else - echo "* $f is NOT well-formed" - ((n_bad++)) - fi - done - echo ${n_bad}/${n_files} XML files are not well-formed + - name: Check XML files + run: python .github/workflows/validate_xml.py From fcf5fd8f0b2a7d3644fe6526da52d86d85882912 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 30 May 2025 13:56:25 -0600 Subject: [PATCH 44/76] Fix cime_config/testdefs/ExpectedTestFails.xml. --- cime_config/testdefs/ExpectedTestFails.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index c4f20b5a9a..427f76bc11 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -138,7 +138,7 @@ - FAIL #3182 From db6a25b51f4948f87b10e92da52f80594c26c8c4 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 30 May 2025 14:01:51 -0600 Subject: [PATCH 45/76] Satisfy Pylint. --- .github/workflows/validate_xml.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/.github/workflows/validate_xml.py b/.github/workflows/validate_xml.py index 72f13c1cbe..6ae7668d37 100644 --- a/.github/workflows/validate_xml.py +++ b/.github/workflows/validate_xml.py @@ -1,11 +1,17 @@ +""" +Check that all XML files in our repo (except for those in submodules) are well-formed. Error if not. +""" import sys -from lxml import etree import glob import os import subprocess +import xml.etree.ElementTree as ET def get_submodule_paths(): + """ + Get list of submodules + """ cmd = "git config --file .gitmodules --get-regexp path | awk '{ print $2 }'" result = subprocess.run(cmd, capture_output=True, text=True, shell=True, check=True) result_list = result.stdout.split("\n")[:-1] @@ -14,19 +20,28 @@ def get_submodule_paths(): def is_in_submodule(file_path, submodule): + """ + Return True if file is in given submodule, False otherwise + """ return os.path.commonpath([file_path, submodule]) == os.path.commonpath([submodule]) def is_in_any_submodule(file_path, submodule_paths): + """ + Return True if file is in any submodule, False otherwise + """ file_path = os.path.abspath(file_path) submodule_paths = map(os.path.abspath, submodule_paths) return any(is_in_submodule(file_path, submodule) for submodule in submodule_paths) def validate_xml(file_path): + """ + Return True if XML file is well-formed, False otherwise + """ try: - etree.parse(file_path) - except etree.XMLSyntaxError: + ET.parse(file_path) + except ET.ParseError: print(f"❌ {file_path} is NOT well-formed") return False print(f"✅ {file_path} is well-formed") @@ -34,6 +49,7 @@ def validate_xml(file_path): def main(): + # pylint: disable=missing-function-docstring submodule_paths = get_submodule_paths() all_valid = True for xml_file in glob.glob("**/*.xml", recursive=True): From 9da830de6d174157dec48c164db60a26c6c94a48 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 30 May 2025 14:10:08 -0600 Subject: [PATCH 46/76] Don't need to install lxml anymore. --- .github/workflows/xml-check.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/xml-check.yml b/.github/workflows/xml-check.yml index db866c58a2..f797cdb7f8 100644 --- a/.github/workflows/xml-check.yml +++ b/.github/workflows/xml-check.yml @@ -16,10 +16,5 @@ jobs: with: python-version: '3.x' - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install lxml - - name: Check XML files run: python .github/workflows/validate_xml.py From 6bd8acd62d2cc6bb468142faffd2691ec5d9c9ae Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Fri, 30 May 2025 14:10:17 -0600 Subject: [PATCH 47/76] Add info about xmllint. --- .github/workflows/validate_xml.py | 4 ++++ .github/workflows/xml-check.yml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/validate_xml.py b/.github/workflows/validate_xml.py index 6ae7668d37..c854bf916b 100644 --- a/.github/workflows/validate_xml.py +++ b/.github/workflows/validate_xml.py @@ -57,6 +57,10 @@ def main(): continue if not validate_xml(xml_file): all_valid = False + + if not all_valid: + print("\nUse xmllint to show problems in malformed files") + return all_valid diff --git a/.github/workflows/xml-check.yml b/.github/workflows/xml-check.yml index f797cdb7f8..18cc6b4079 100644 --- a/.github/workflows/xml-check.yml +++ b/.github/workflows/xml-check.yml @@ -1,6 +1,6 @@ name: Check that XML files are well-formed # Only check files in our repo that AREN'T in submodules -# Use a Python command to check each file +# Use a Python command to check each file because xmllint isn't available on GH runners on: [push, pull_request] # Trigger on push or pull request From a3ce6a7a703401c75af6c42b91961500080a6f10 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 30 May 2025 14:44:53 -0600 Subject: [PATCH 48/76] Change snow_thermal_cond_glc_method and _lake_method for clm6_0 --- bld/namelist_files/namelist_defaults_ctsm.xml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index fedfca8020..e43d74f47c 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -484,13 +484,11 @@ attributes from the config_cache.xml file (with keys converted to upper-case). Jordan1991 Sturm1997 - Jordan1991 -Sturm1997 +Jordan1991 - Jordan1991 -Jordan1991 +Sturm1997 -lnd/clm2/paramdata/ctsm60_params.c250311.nc +lnd/clm2/paramdata/ctsm5.3.041.Nfix_params.v13.c250221_upplim250.nc lnd/clm2/paramdata/clm50_params.c250311.nc lnd/clm2/paramdata/clm45_params.c250311.nc From b1890ac5ebbf3fd72c807b54abf7495c5f657591 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 30 May 2025 17:42:14 -0600 Subject: [PATCH 52/76] Update to new non-final ctsm5.4 f09 & ne30 fsurdat/landuse files --- bld/namelist_files/namelist_defaults_ctsm.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 3a16453dc6..6b9a4e385a 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1698,7 +1698,7 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_4x5_hist_1850_16pfts_c241007.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_360x720cru_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_0.9x1.25_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_0.9x1.25_hist_1850_78pfts_c250428.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_1.9x2.5_hist_1850_78pfts_c240908.nc @@ -1716,7 +1716,7 @@ lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4_hist_1850_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg2_hist_1850_78pfts_c240908.nc -lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c240908.nc +lnd/clm2/surfdata_esmf/ctsm5.4.0/surfdata_ne30np4.pg3_hist_1850_78pfts_c250428.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/surfdata_ne3np4.pg3_hist_1850_78pfts_c240908.nc @@ -1776,7 +1776,7 @@ 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_0.9x1.25_SSP2-4.5_1850-2100_78pfts_c240908.nc + >lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_0.9x1.25_hist_1850-2023_78pfts_c250428.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_1.9x2.5_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne16np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_ne30np4.pg3_SSP2-4.5_1850-2100_78pfts_c240908.nc +>lnd/clm2/surfdata_esmf/ctsm5.4.0/landuse.timeseries_ne30np4.pg3_hist_1850-2023_78pfts_c250428.nc lnd/clm2/surfdata_esmf/ctsm5.3.0/landuse.timeseries_C96_SSP2-4.5_1850-2100_78pfts_c240908.nc From 8fcae563a60544a377ebb1159290252dd61c13d5 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Sat, 31 May 2025 10:05:14 -0600 Subject: [PATCH 53/76] FUNITCTSM_P1x1.f10_f10_mg37.I2000Clm50Sp.izumi_intel expected fail in RUN. --- cime_config/testdefs/ExpectedTestFails.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 427f76bc11..b9316ae761 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -143,6 +143,10 @@ FAIL #3182 + + FAIL + #3182 + From e1fbca6ab1ca600c869b559cc684e523eb524d64 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Sat, 31 May 2025 10:12:57 -0600 Subject: [PATCH 54/76] Return those three expected-fail ctsm_sci tests. Expected to fail until ESCOMP/CTSM#3209 is resolved. --- cime_config/testdefs/ExpectedTestFails.xml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index b9316ae761..f52c6c1cd8 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -36,6 +36,27 @@ + + + FAIL + #3209 + + + + + + FAIL + #3209 + + + + + + FAIL + #3209 + + + FAIL From b04a2897c9afee17aa55f75edad2cd4fe5ab6468 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Sat, 31 May 2025 15:47:31 -0600 Subject: [PATCH 55/76] doc/testing.sh: Add git-fleximod update. --- doc/testing.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/testing.sh b/doc/testing.sh index a44b6ad18a..63974ec869 100755 --- a/doc/testing.sh +++ b/doc/testing.sh @@ -2,6 +2,10 @@ set -e set -x +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +cd "${SCRIPT_DIR}" + +../bin/git-fleximod update -o rm -rf _publish* # Build all docs using container From af46c56d0662d485e647b6d499f6be153662fcfb Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Sat, 31 May 2025 16:05:59 -0600 Subject: [PATCH 56/76] docs-omnibus.yml: testing.sh itself doesn't need to be conda run. --- .github/workflows/docs-omnibus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs-omnibus.yml b/.github/workflows/docs-omnibus.yml index 655813c366..1636150fae 100644 --- a/.github/workflows/docs-omnibus.yml +++ b/.github/workflows/docs-omnibus.yml @@ -51,4 +51,4 @@ jobs: # TODO: Split testing.sh tests into their own steps in this job - name: Text Sphinx builds with omnibus script run: | - cd doc && conda run -n ctsm_pylib ./testing.sh + cd doc && ./testing.sh From 6f8ef105b3e4f4c6fbd8fba93e7ec667cfaf0311 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Sat, 31 May 2025 16:11:49 -0600 Subject: [PATCH 57/76] fleximod_test.yaml: Include optional submodules. --- .github/workflows/fleximod_test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/fleximod_test.yaml b/.github/workflows/fleximod_test.yaml index 8680541676..b62cb5a28e 100644 --- a/.github/workflows/fleximod_test.yaml +++ b/.github/workflows/fleximod_test.yaml @@ -22,7 +22,7 @@ jobs: uses: actions/checkout@v4 - id: run-fleximod run: | - $GITHUB_WORKSPACE/bin/git-fleximod update + $GITHUB_WORKSPACE/bin/git-fleximod update -o echo echo "Update complete, checking status" echo From 2967370909876e67ce9a291efd6acb75a388b8b0 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Sat, 31 May 2025 16:27:25 -0600 Subject: [PATCH 58/76] fleximod_test.yaml: Catch STAGED uncommitted changes. --- .github/workflows/fleximod_test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/fleximod_test.yaml b/.github/workflows/fleximod_test.yaml index b62cb5a28e..bf92cb3a91 100644 --- a/.github/workflows/fleximod_test.yaml +++ b/.github/workflows/fleximod_test.yaml @@ -32,4 +32,4 @@ jobs: echo echo "Checking if git fleximod matches expected externals" echo - git diff --exit-code + git add . && git diff --quiet && git diff --cached --quiet From 30677b8e8f6b2620f8e16b064c2881d1c40e1aeb Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Sat, 31 May 2025 16:33:22 -0600 Subject: [PATCH 59/76] Actually add FTorch submodule. --- libraries/FTorch | 1 + 1 file changed, 1 insertion(+) create mode 160000 libraries/FTorch diff --git a/libraries/FTorch b/libraries/FTorch new file mode 160000 index 0000000000..79e7675694 --- /dev/null +++ b/libraries/FTorch @@ -0,0 +1 @@ +Subproject commit 79e7675694b19b9980f3459ffd42a85d1e6f3316 From 647e319d931058292a60e3ebeac76a045053bfc9 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Sat, 31 May 2025 16:41:49 -0600 Subject: [PATCH 60/76] testing.sh: conda run Makefile method. --- doc/testing.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/testing.sh b/doc/testing.sh index 63974ec869..9253df848c 100755 --- a/doc/testing.sh +++ b/doc/testing.sh @@ -38,7 +38,7 @@ rm -rf _build_container # Check that Makefile method works echo "~~~~~ Check that Makefile method works" rm -rf _build -make SPHINXOPTS="-W --keep-going" BUILDDIR=${PWD}/_build html +conda run -n ctsm_pylib make SPHINXOPTS="-W --keep-going" BUILDDIR=${PWD}/_build html # Check that -b works echo "~~~~~ Check that -b works (Podman)" From 43267c92fd3350d63e730c92d9d14c515023973d Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Sat, 31 May 2025 16:46:56 -0600 Subject: [PATCH 61/76] fleximod_test.yaml: Show the diffs again. --- .github/workflows/fleximod_test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/fleximod_test.yaml b/.github/workflows/fleximod_test.yaml index bf92cb3a91..d85958f972 100644 --- a/.github/workflows/fleximod_test.yaml +++ b/.github/workflows/fleximod_test.yaml @@ -32,4 +32,4 @@ jobs: echo echo "Checking if git fleximod matches expected externals" echo - git add . && git diff --quiet && git diff --cached --quiet + git add . && git diff --exit-code && git diff --cached --exit-code From c3bc488fce5322d6f655d14566daa0aacd091dec Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Sun, 1 Jun 2025 16:55:17 -0600 Subject: [PATCH 62/76] CDEPS: Allow anomaly forcings w/ any DATM. --- .gitmodules | 4 ++-- components/cdeps | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index d6c16471a0..3604d03e14 100644 --- a/.gitmodules +++ b/.gitmodules @@ -91,8 +91,8 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps -url = https://github.com/ESCOMP/CDEPS.git -fxtag = cdeps1.0.73 +url = https://github.com/samsrabin/CDEPS.git +fxtag = 0a59658973f1d9d1155f884df3a578fd59a2fd60 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 diff --git a/components/cdeps b/components/cdeps index 9e57b278de..0a59658973 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit 9e57b278de18cf69351bc693fe1988143e859fa7 +Subproject commit 0a59658973f1d9d1155f884df3a578fd59a2fd60 From 128539cdb70de12398d9fa43545a12e6a552ae5d Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Sun, 1 Jun 2025 17:01:35 -0600 Subject: [PATCH 63/76] Three ctsm_sci tests now expected to pass. --- cime_config/testdefs/ExpectedTestFails.xml | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index f52c6c1cd8..b9316ae761 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -36,27 +36,6 @@ - - - FAIL - #3209 - - - - - - FAIL - #3209 - - - - - - FAIL - #3209 - - - FAIL From 5bc74e840d9873db7fc74d0be19f7244fa2296c0 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 2 Jun 2025 11:43:28 -0600 Subject: [PATCH 64/76] Update comments about how do_grossunrep gets set in CLMBuildNamelist.pm --- bld/CLMBuildNamelist.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 408ff9b573..3ca81c815b 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -3175,9 +3175,9 @@ sub setup_logic_do_grossunrep { my $var = 'do_grossunrep'; - # Start by assuming a default value of '.true.'. Then check a number of + # Start by assuming a default value of '.false.'. Then check a number of # conditions under which do_grossunrep cannot be true. Under these - # conditions: (1) set default value to '.false.'; (2) make sure that the + # conditions: (1) set default value to '.false.' again; (2) make sure that the # value is indeed false (e.g., that the user didn't try to set it to true). my $default_val = ".false."; From 619bc5c6f1ed98624332b86393701eb6ce6627ff Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 2 Jun 2025 11:45:34 -0600 Subject: [PATCH 65/76] Update ChangeLog/ChangeSum --- doc/ChangeLog | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 1 + 2 files changed, 75 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index d54166062a..b3fbeb31bb 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,78 @@ =============================================================== +Tag name: ctsm5.3.054 +Originator(s): samrabin (Sam Rabin, UCAR/TSS) +Date: Mon Jun 2 11:39:50 MDT 2025 +One-line Summary: CDEPS: Allow anomaly forcings with any DATM + +Purpose and description of changes +---------------------------------- + +Updates CDEPS to version cdeps1.0.75, allowing anomaly forcings with any datm_mode. CRU-JRA thus now works with anomalies. + +Also brings in cdeps1.0.74: "In DATM with cplhist mode, make 1st timestep same as cam7 when using the cam7 option." + + + +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): +- [Issue #3209: [CDEPS] Allow anomaly forcings with any datm](https://github.com/ESCOMP/CTSM/issues/3209) + + +Testing summary: +---------------- + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + derecho ----- OK + izumi ------- OK + + ctsm_sci (just three tests that were failing before) + derecho ---- PASS + + +Answer changes +-------------- + +Changes answers relative to baseline: Yes (although not in tests) + + Summarize any changes to answers, i.e., + - what code configurations: CPLHIST + - what platforms/compilers: All + - nature of change (roundoff; larger than roundoff/same climate; new climate): Roundoff + + Only affects first timestep under lnd_tuning_mode clm6_0_cam7.0. + + +Other details +------------- + +List any git submodules updated (cime, rtm, mosart, cism, fates, etc.): +- cdeps updated from cdeps1.0.73 to cdeps1.0.75 + +Pull Requests that document the changes (include PR ids): +- [Pull Request #3212: ctsm5.3.054: CDEPS: Allow anomaly forcings with any DATM by samsrabin](https://github.com/ESCOMP/CTSM/pull/3212) + +=============================================================== +=============================================================== Tag name: ctsm5.3.053 Originator(s): samrabin (Sam Rabin, UCAR/TSS) Date: Fri May 30 14:56:48 MDT 2025 diff --git a/doc/ChangeSum b/doc/ChangeSum index d8d4ffc4aa..9570dc96e2 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.3.054 samrabin 06/02/2025 CDEPS: Allow anomaly forcings with any DATM ctsm5.3.053 samrabin 05/30/2025 Fix and improve anomaly forcings for ISSP cases ctsm5.3.052 erik 05/30/2025 Changes to MEGAN needed for coupled cases ctsm5.3.051 erik 05/28/2025 Update submodules to cesm3_0_beta06 versions and update MEGAN/drydep test namelist From 3ccf1b82544529b7edb8d0f617f747a81077282d Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 2 Jun 2025 12:56:11 -0600 Subject: [PATCH 66/76] Point CDEPS at cdeps1.0.75. --- .gitmodules | 4 ++-- components/cdeps | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 3604d03e14..bd3f79f743 100644 --- a/.gitmodules +++ b/.gitmodules @@ -91,8 +91,8 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CMEPS.git [submodule "cdeps"] path = components/cdeps -url = https://github.com/samsrabin/CDEPS.git -fxtag = 0a59658973f1d9d1155f884df3a578fd59a2fd60 +url = https://github.com/ESCOMP/CDEPS.git +fxtag = cdeps1.0.75 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 diff --git a/components/cdeps b/components/cdeps index 0a59658973..472264c96a 160000 --- a/components/cdeps +++ b/components/cdeps @@ -1 +1 @@ -Subproject commit 0a59658973f1d9d1155f884df3a578fd59a2fd60 +Subproject commit 472264c96a14f9f97cbb087df2c2357c1dcea826 From 31598a0b3b33154addad7bc144a8251470a04ddb Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 2 Jun 2025 12:58:14 -0600 Subject: [PATCH 67/76] Make use_c1* isotope settings true for Clm6Bgc cases --- bld/namelist_files/namelist_defaults_ctsm.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 6b9a4e385a..6cdb2e52d8 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -110,6 +110,17 @@ attributes from the config_cache.xml file (with keys converted to upper-case). Medlyn2011 Ball-Berry1987 + +.false. +.false. +.false. +.false. + +.true. +.true. +.true. +.true. + lnd/clm2/isotopes/atm_delta_C13_CMIP6_1850-2015_yearly_v2.0_c190528.nc lnd/clm2/isotopes/atm_delta_C13_CMIP6_SSP119_1850-2100_yearly_c181209.nc From 45f47d88d06a89fa404b6c00769fcc8bca9054d2 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Mon, 2 Jun 2025 13:55:54 -0600 Subject: [PATCH 68/76] Update CMEPS from cmeps1.0.48 to cmeps1.0.51. BROKEN. --- .gitmodules | 2 +- components/cmeps | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index d6c16471a0..70dfd225b3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -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.48 +fxtag = cmeps1.0.51 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 diff --git a/components/cmeps b/components/cmeps index b7b50a64d6..b72438eda5 160000 --- a/components/cmeps +++ b/components/cmeps @@ -1 +1 @@ -Subproject commit b7b50a64d66a76490a9bb39e0050acd179391342 +Subproject commit b72438eda538ac6410aeaea27dd305f4d370d1ce From 3a8c43262c425882f2ee10686684158ff2349477 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 2 Jun 2025 14:54:58 -0600 Subject: [PATCH 69/76] Update to new ctsm5.4 f09 and ne30 finidat files for 1850 and 2000 --- bld/namelist_files/namelist_defaults_ctsm.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 6cdb2e52d8..59fc9e42dd 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1292,14 +1292,14 @@ attributes from the config_cache.xml file (with keys converted to upper-case). ic_ymd="18500101" sim_year="1850" do_transient_pfts=".false." use_excess_ice=".true." ic_tod="0" glc_nec="10" use_crop=".true." irrigate=".false." phys="clm6_0" ->lnd/clm2/initdata_esmf/ctsm5.3/ctsm53019_f09_BNF_pSASU.clm2.r.0161-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000_64bitoffset.nc lnd/clm2/initdata_esmf/ctsm5.3/ctsm53019_f09_BNF_pSASU.clm2.r.0161-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm53041_54surfdata_ne30_102_pSASU.clm2.r.0081-01-01-00000_64bitoffset.nc lnd/clm2/initdata_esmf/ctsm5.3/ctsm53019_f09_BNF_hist.clm2.r.2000-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm53041_54surfdata_ne30_102_HIST.clm2.r.2000-01-01-00000.nc lnd/clm2/initdata_esmf/ctsm5.3/ctsm53019_f09_BNF_hist.clm2.r.2000-01-01-00000.nc +>lnd/clm2/initdata_esmf/ctsm5.4/ctsm53041_54surfdata_ne30_102_HIST.clm2.r.2000-01-01-00000.nc From b13597c2575160aafc2e9971d61f863feda1b3b2 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 3 Jun 2025 14:57:11 -0600 Subject: [PATCH 70/76] Changes needed for use_c1* variables to get their default values --- bld/CLMBuildNamelist.pm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 3ca81c815b..36b98beb09 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -1688,6 +1688,7 @@ sub process_namelist_inline_logic { setup_logic_cnmatrix($opts, $nl_flags, $definition, $defaults, $nl, $envxml_ref); setup_logic_spinup($opts, $nl_flags, $definition, $defaults, $nl); setup_logic_supplemental_nitrogen($opts, $nl_flags, $definition, $defaults, $nl); + setup_logic_c_isotope($opts, $nl_flags, $definition, $defaults, $nl); setup_logic_snowpack($opts, $nl_flags, $definition, $defaults, $nl); setup_logic_fates($opts, $nl_flags, $definition, $defaults, $nl); setup_logic_z0param($opts, $nl_flags, $definition, $defaults, $nl); @@ -1737,7 +1738,6 @@ sub process_namelist_inline_logic { # namelist group: ch4par_in # ############################### setup_logic_methane($opts, $nl_flags, $definition, $defaults, $nl); - setup_logic_c_isotope($opts, $nl_flags, $definition, $defaults, $nl); ############################### # namelist group: ndepdyn_nml # @@ -3703,6 +3703,8 @@ sub setup_logic_c_isotope { # my ($opts, $nl_flags, $definition, $defaults, $nl) = @_; + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'use_c13', 'bgc_mode'=>$nl_flags->{'bgc_mode'}, 'phys'=>$nl_flags->{'phys'}); + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'use_c14', 'bgc_mode'=>$nl_flags->{'bgc_mode'}, 'phys'=>$nl_flags->{'phys'}); my $use_c13 = $nl->get_value('use_c13'); my $use_c14 = $nl->get_value('use_c14'); if ( $nl_flags->{'bgc_mode'} ne "sp" && $nl_flags->{'bgc_mode'} ne "fates" ) { @@ -3716,6 +3718,7 @@ sub setup_logic_c_isotope { } if ( defined($use_c14) ) { if ( &value_is_true($use_c14) ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'use_c14_bombspike', 'bgc_mode'=>$nl_flags->{'bgc_mode'}, 'phys'=>$nl_flags->{'phys'}); my $use_c14_bombspike = $nl->get_value('use_c14_bombspike'); if ( defined($use_c14_bombspike) && &value_is_true($use_c14_bombspike) ) { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'atm_c14_filename', @@ -3736,6 +3739,7 @@ sub setup_logic_c_isotope { } if ( defined($use_c13) ) { if ( &value_is_true($use_c13) ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'use_c13_timeseries', 'bgc_mode'=>$nl_flags->{'bgc_mode'}, 'phys'=>$nl_flags->{'phys'}); my $use_c13_timeseries = $nl->get_value('use_c13_timeseries'); if ( defined($use_c13_timeseries) && &value_is_true($use_c13_timeseries) ) { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'atm_c13_filename', @@ -3755,11 +3759,11 @@ sub setup_logic_c_isotope { } } } else { - if ( defined($use_c13) || - defined($use_c14) || - defined($nl->get_value('use_c14_bombspike')) || + if ( &value_is_true($use_c13) || + &value_is_true($use_c14) || + &value_is_true($nl->get_value('use_c14_bombspike')) || defined($nl->get_value('atm_c14_filename')) || - defined($nl->get_value('use_c13_timeseries')) || + &value_is_true($nl->get_value('use_c13_timeseries')) || defined($nl->get_value('atm_c13_filename')) ) { $log->fatal_error("bgc=sp and C isotope namelist variables were set, both can't be used at the same time"); } From f62261b80aa0cfc9e9923987368c260da0878e1c Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Jun 2025 11:55:57 -0600 Subject: [PATCH 71/76] Revert "Update CMEPS from cmeps1.0.48 to cmeps1.0.51. BROKEN." This reverts commit 45f47d88d06a89fa404b6c00769fcc8bca9054d2. --- .gitmodules | 2 +- components/cmeps | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 70dfd225b3..d6c16471a0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -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.51 +fxtag = cmeps1.0.48 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 diff --git a/components/cmeps b/components/cmeps index b72438eda5..b7b50a64d6 160000 --- a/components/cmeps +++ b/components/cmeps @@ -1 +1 @@ -Subproject commit b72438eda538ac6410aeaea27dd305f4d370d1ce +Subproject commit b7b50a64d66a76490a9bb39e0050acd179391342 From ce59fea60a0d90082ff5c55bf877e86170beaa47 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Jun 2025 11:57:06 -0600 Subject: [PATCH 72/76] Remove broken FTorch. Resolves ESCOMP/CTSM#3214. --- .gitmodules | 10 ---------- libraries/FTorch | 1 - 2 files changed, 11 deletions(-) delete mode 160000 libraries/FTorch diff --git a/.gitmodules b/.gitmodules index d6c16471a0..5ff53c215e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -128,13 +128,3 @@ fxtag = v2.2.6 fxrequired = ToplevelOptional # Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed fxDONOTUSEurl = https://github.com/ESMCI/doc-builder - -# FTorch is an optional library useful for AI and Machine Learning -# In order to use it -- it must be checked out with git-fleximod -[submodule "FTorch"] -path = libraries/FTorch -url = https://github.com/ESCOMP/FTorch_interface -fxtag = v0.0.5 -fxrequired = ToplevelOptional -# Standard Fork to compare to with "git fleximod test" to ensure personal forks aren't committed -fxDONOTUSEurl = https://github.com/ESCOMP/FTorch_interface diff --git a/libraries/FTorch b/libraries/FTorch deleted file mode 160000 index 79e7675694..0000000000 --- a/libraries/FTorch +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 79e7675694b19b9980f3459ffd42a85d1e6f3316 From 5bce0ed0f1bb20eafc3f9a1a6f2aa7b9686ea62b Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 5 Jun 2025 12:30:25 -0600 Subject: [PATCH 73/76] Remove unnecessary "if ( defined" statements as per code review --- bld/CLMBuildNamelist.pm | 51 +++++++++++++++-------------------------- 1 file changed, 19 insertions(+), 32 deletions(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 36b98beb09..e498f275e6 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -3179,6 +3179,7 @@ sub setup_logic_do_grossunrep { # conditions under which do_grossunrep cannot be true. Under these # conditions: (1) set default value to '.false.' again; (2) make sure that the # value is indeed false (e.g., that the user didn't try to set it to true). + # Ideally the default value would be set in namelist_defaults my $default_val = ".false."; @@ -3709,53 +3710,39 @@ sub setup_logic_c_isotope { my $use_c14 = $nl->get_value('use_c14'); if ( $nl_flags->{'bgc_mode'} ne "sp" && $nl_flags->{'bgc_mode'} ne "fates" ) { if ( $nl_flags->{'bgc_mode'} ne "bgc" ) { - if ( defined($use_c13) && &value_is_true($use_c13) ) { + if ( &value_is_true($use_c13) ) { $log->warning("use_c13 is ONLY scientifically validated with the bgc=BGC configuration" ); } - if ( defined($use_c14) && &value_is_true($use_c14) ) { + if ( &value_is_true($use_c14) ) { $log->warning("use_c14 is ONLY scientifically validated with the bgc=BGC configuration" ); } } - if ( defined($use_c14) ) { - if ( &value_is_true($use_c14) ) { - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'use_c14_bombspike', 'bgc_mode'=>$nl_flags->{'bgc_mode'}, 'phys'=>$nl_flags->{'phys'}); - my $use_c14_bombspike = $nl->get_value('use_c14_bombspike'); - if ( defined($use_c14_bombspike) && &value_is_true($use_c14_bombspike) ) { - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'atm_c14_filename', - 'use_c14'=>$use_c14, 'use_cn'=>$nl_flags->{'use_cn'}, 'use_c14_bombspike'=>$nl->get_value('use_c14_bombspike'), - 'ssp_rcp'=>$nl_flags->{'ssp_rcp'} ); - } - } else { - if ( defined($nl->get_value('use_c14_bombspike')) || - defined($nl->get_value('atm_c14_filename')) ) { - $log->fatal_error("use_c14 is FALSE and use_c14_bombspike or atm_c14_filename set"); - } + if ( &value_is_true($use_c14) ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'use_c14_bombspike', 'bgc_mode'=>$nl_flags->{'bgc_mode'}, 'phys'=>$nl_flags->{'phys'}); + my $use_c14_bombspike = $nl->get_value('use_c14_bombspike'); + if ( &value_is_true($use_c14_bombspike) ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'atm_c14_filename', + 'use_c14'=>$use_c14, 'use_cn'=>$nl_flags->{'use_cn'}, 'use_c14_bombspike'=>$nl->get_value('use_c14_bombspike'), + 'ssp_rcp'=>$nl_flags->{'ssp_rcp'} ); } } else { if ( defined($nl->get_value('use_c14_bombspike')) || defined($nl->get_value('atm_c14_filename')) ) { - $log->fatal_error("use_c14 NOT set to .true., but use_c14_bompspike/atm_c14_filename defined."); + $log->fatal_error("use_c14 is FALSE and use_c14_bombspike or atm_c14_filename set"); } } - if ( defined($use_c13) ) { - if ( &value_is_true($use_c13) ) { - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'use_c13_timeseries', 'bgc_mode'=>$nl_flags->{'bgc_mode'}, 'phys'=>$nl_flags->{'phys'}); - my $use_c13_timeseries = $nl->get_value('use_c13_timeseries'); - if ( defined($use_c13_timeseries) && &value_is_true($use_c13_timeseries) ) { - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'atm_c13_filename', - 'use_c13'=>$use_c13, 'use_cn'=>$nl_flags->{'use_cn'}, 'use_c13_timeseries'=>$nl->get_value('use_c13_timeseries'), - 'ssp_rcp'=>$nl_flags->{'ssp_rcp'} ); - } - } else { - if ( defined($nl->get_value('use_c13_timeseries')) || - defined($nl->get_value('atm_c13_filename')) ) { - $log->fatal_error("use_c13 is FALSE and use_c13_timeseries or atm_c13_filename set"); - } + if ( &value_is_true($use_c13) ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'use_c13_timeseries', 'bgc_mode'=>$nl_flags->{'bgc_mode'}, 'phys'=>$nl_flags->{'phys'}); + my $use_c13_timeseries = $nl->get_value('use_c13_timeseries'); + if ( &value_is_true($use_c13_timeseries) ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'atm_c13_filename', + 'use_c13'=>$use_c13, 'use_cn'=>$nl_flags->{'use_cn'}, 'use_c13_timeseries'=>$nl->get_value('use_c13_timeseries'), + 'ssp_rcp'=>$nl_flags->{'ssp_rcp'} ); } } else { if ( defined($nl->get_value('use_c13_timeseries')) || defined($nl->get_value('atm_c13_filename')) ) { - $log->fatal_error("use_c13 NOT set to .true., but use_c13_bompspike/atm_c13_filename defined."); + $log->fatal_error("use_c13 is FALSE and use_c13_timeseries or atm_c13_filename set"); } } } else { From d081a3a12c5f8cbaf8de71fd929d0e5cac40b964 Mon Sep 17 00:00:00 2001 From: Sam Rabin Date: Thu, 5 Jun 2025 14:03:00 -0600 Subject: [PATCH 74/76] Update ChangeLog/ChangeSum. --- doc/ChangeLog | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 1 + 2 files changed, 55 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index b3fbeb31bb..793b324524 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,58 @@ =============================================================== +Tag name: ctsm5.3.055 +Originator(s): samrabin (Sam Rabin, UCAR/TSS) +Date: Thu Jun 5 13:59:20 MDT 2025 +One-line Summary: Remove FTorch + +Purpose and description of changes +---------------------------------- + +Incorrect CMEPS version causes a build failure. + + +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): +- [Issue #3210: build-and-deploy failure at ctsm5.3.053](https://github.com/ESCOMP/CTSM/issues/3210) +- [Issue #3214: Build fails with FTorch checked out](https://github.com/ESCOMP/CTSM/issues/3214) + + +Testing summary: +---------------- + +Model now builds successfully on Izumi with all optional submodules checked out. + + +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.): +- FTorch removed + +Pull Requests that document the changes (include PR ids): +- [Pull Request #3211: ctsm5.3.055: Remove broken FTorch submodule by samsrabin](https://github.com/ESCOMP/CTSM/pull/3211) + +=============================================================== +=============================================================== Tag name: ctsm5.3.054 Originator(s): samrabin (Sam Rabin, UCAR/TSS) Date: Mon Jun 2 11:39:50 MDT 2025 diff --git a/doc/ChangeSum b/doc/ChangeSum index 9570dc96e2..3b5c59acfe 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.3.055 samrabin 06/05/2025 Remove FTorch ctsm5.3.054 samrabin 06/02/2025 CDEPS: Allow anomaly forcings with any DATM ctsm5.3.053 samrabin 05/30/2025 Fix and improve anomaly forcings for ISSP cases ctsm5.3.052 erik 05/30/2025 Changes to MEGAN needed for coupled cases From 84dcbe0aca42dcb416ca53502761e8e188730eb3 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 6 Jun 2025 12:56:56 -0600 Subject: [PATCH 75/76] Increase wallclock on izumi tests running out of wallclock --- cime_config/testdefs/testlist_clm.xml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index ec10966594..4b2399a731 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -150,7 +150,7 @@ - + @@ -551,7 +551,7 @@ - + @@ -559,7 +559,7 @@ - + @@ -567,7 +567,7 @@ - + @@ -1339,7 +1339,7 @@ - + @@ -1593,7 +1593,7 @@ - + @@ -2700,7 +2700,7 @@ - + @@ -2830,7 +2830,7 @@ - + @@ -2872,7 +2872,7 @@ - + @@ -2887,7 +2887,7 @@ - + @@ -3311,7 +3311,7 @@ - + @@ -3360,7 +3360,7 @@ - + @@ -4325,7 +4325,7 @@ - + From f7dc9aae7bbe4f95d8d979ad9ac248923252f593 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 12 Jun 2025 16:51:57 -0600 Subject: [PATCH 76/76] Update LII2FINIDATAREAS tests from Clm5 to Clm6 and update exp. fails --- cime_config/testdefs/ExpectedTestFails.xml | 21 +++++++++++++++++++++ cime_config/testdefs/testlist_clm.xml | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index b9316ae761..a9fbebcdf8 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -62,6 +62,27 @@ + + + FAIL + #3252 + Works with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000.nc' and fails with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000_64bitoffset.nc'. + + + + + FAIL + #3252 + Works with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000.nc' and fails with finidat = 'ctsm53041_54surfdata_snowTherm_100_pSASU.clm2.r.0161-01-01-00000_64bitoffset.nc'. + + + + + FAIL + #3250 + SSP landuse files not available for ctsm54, yet. + + FAIL diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index 4b2399a731..c67955b16e 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -2269,7 +2269,7 @@ - + @@ -2278,7 +2278,7 @@ - +