diff --git a/dev/ci/cases/pr/C96mx025_S2S.yaml b/dev/ci/cases/pr/C96mx025_S2S.yaml new file mode 100644 index 00000000000..04510e59ce6 --- /dev/null +++ b/dev/ci/cases/pr/C96mx025_S2S.yaml @@ -0,0 +1,28 @@ +experiment: + net: sfs + mode: forecast-only + idate: 1994050100 + edate: 1994050100 + pslot: {{ 'pslot' | getenv }} + app: S2S + resdetatmos: 96 + resensatmos: 96 + resdetocean: 0.25 + start: 'cold' + nens: 2 + comroot: {{ 'RUNTESTS' | getenv }}/COMROOT + expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR + icsdir: {{ 'ICSDIR_ROOT' | getenv }}/C96mx025/20251217 + yaml: {{ HOMEgfs }}/dev/ci/cases/yamls/sfs_CPC_defaults.yaml + +skip_ci_on_hosts: + - gaeac5 + - awsepicglobalworkflow + +workflow: + engine: rocoto + rocoto: + maxtries: 2 + cyclethrottle: 3 + taskthrottle: 25 + verbosity: 2 diff --git a/dev/ci/cases/yamls/gefs_defaults_ci.yaml b/dev/ci/cases/yamls/gefs_defaults_ci.yaml index d90c858b1ec..5919e9ad4e8 100644 --- a/dev/ci/cases/yamls/gefs_defaults_ci.yaml +++ b/dev/ci/cases/yamls/gefs_defaults_ci.yaml @@ -8,5 +8,4 @@ base: DO_BUFRSND: "NO" DO_GEMPAK: "NO" DO_AWIPS: "NO" -ocn: MOM6_INTERP_ICS: "NO" diff --git a/dev/ci/cases/yamls/sfs_CPC_defaults.yaml b/dev/ci/cases/yamls/sfs_CPC_defaults.yaml new file mode 100644 index 00000000000..f977aa6c0ba --- /dev/null +++ b/dev/ci/cases/yamls/sfs_CPC_defaults.yaml @@ -0,0 +1,10 @@ +defaults: + !INC {{ HOMEgfs }}/dev/parm/config/sfs/yaml/defaults.yaml +base: + FHMAX_GFS: 144 + FCST_BREAKPOINTS: "48,96" + USE_OCN_ENS_PERTURB_FILES: "YES" + USE_ATM_ENS_PERTURB_FILES: "YES" + MOM6_INTERP_ICS: "YES" +nsst: + NST_SPINUP: 1 diff --git a/dev/ci/cases/yamls/sfs_defaults.yaml b/dev/ci/cases/yamls/sfs_defaults.yaml index c59676a9069..9251f55fb55 100644 --- a/dev/ci/cases/yamls/sfs_defaults.yaml +++ b/dev/ci/cases/yamls/sfs_defaults.yaml @@ -5,5 +5,4 @@ base: FCST_BREAKPOINTS: "48,96" USE_OCN_ENS_PERTURB_FILES: "YES" USE_ATM_ENS_PERTURB_FILES: "YES" -ocn: MOM6_INTERP_ICS: "YES" diff --git a/dev/ci/cases/yamls/sfs_full.yaml b/dev/ci/cases/yamls/sfs_full.yaml index a2c21e4b621..9426dd42e78 100644 --- a/dev/ci/cases/yamls/sfs_full.yaml +++ b/dev/ci/cases/yamls/sfs_full.yaml @@ -5,5 +5,4 @@ base: FCST_BREAKPOINTS: "" USE_OCN_ENS_PERTURB_FILES: "YES" USE_ATM_ENS_PERTURB_FILES: "YES" -ocn: MOM6_INTERP_ICS: "YES" diff --git a/dev/ci/gitlab-ci-hosts.yml b/dev/ci/gitlab-ci-hosts.yml index 5511b16fd49..222776f96ea 100644 --- a/dev/ci/gitlab-ci-hosts.yml +++ b/dev/ci/gitlab-ci-hosts.yml @@ -22,19 +22,19 @@ # Template matrices for case lists .hera_cases_matrix: &hera_cases - - caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48_hybatmsnowDA", "C96C48_hybatmsoilDA", "C96C48_ufsgsi_hybatmDA", "C96C48_ufs_hybatmDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96_gcafs_cycled", "C96_gcafs_cycled_noDA", "C96mx100_S2S"] + - caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48_hybatmsnowDA", "C96C48_hybatmsoilDA", "C96C48_ufsgsi_hybatmDA", "C96C48_ufs_hybatmDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96_gcafs_cycled", "C96_gcafs_cycled_noDA", "C96mx100_S2S", "C96mx025_S2S"] .gaeac6_cases_matrix: &gaeac6_cases - - caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48_hybatmsnowDA", "C96C48_hybatmsoilDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96_gcafs_cycled", "C96_gcafs_cycled_noDA", "C96mx100_S2S"] + - caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48_hybatmsnowDA", "C96C48_hybatmsoilDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96_gcafs_cycled", "C96_gcafs_cycled_noDA", "C96mx100_S2S", "C96mx025_S2S"] .orion_cases_matrix: &orion_cases - - caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C96C48_hybatmDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96mx100_S2S", "C96_gcafs_cycled"] + - caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C96C48_hybatmDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96mx100_S2S", "C96_gcafs_cycled", "C96mx025_S2S"] .hercules_cases_matrix: &hercules_cases - - caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96mx100_S2S", "C96_gcafs_cycled"] + - caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96mx100_S2S", "C96_gcafs_cycled", "C96mx025_S2S"] .ursa_cases_matrix: &ursa_cases - - caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48_hybatmsnowDA", "C96C48_hybatmsoilDA", "C96C48_ufsgsi_hybatmDA", "C96C48_ufs_hybatmDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96mx100_S2S"] + - caseName: ["C48_ATM", "C48_S2SW", "C48_S2SWA_gefs", "C48mx500_3DVarAOWCDA", "C48mx500_hybAOWCDA", "C96C48_hybatmDA", "C96C48_hybatmsnowDA", "C96C48_hybatmsoilDA", "C96C48_ufsgsi_hybatmDA", "C96C48_ufs_hybatmDA", "C96C48mx500_S2SW_cyc_gfs", "C96_atm3DVar", "C96mx100_S2S", "C96mx025_S2S"] # Host: Hera - Standard Cases setup_experiments-hera: diff --git a/dev/parm/config/gefs/config.base.j2 b/dev/parm/config/gefs/config.base.j2 index a44ca83d6aa..e6be151924f 100644 --- a/dev/parm/config/gefs/config.base.j2 +++ b/dev/parm/config/gefs/config.base.j2 @@ -326,4 +326,7 @@ export CLIENT_GLOBUS_UUID="{{ CLIENT_GLOBUS_UUID }}" # Number of regional collectives to create soundings for export NUM_SND_COLLECTIVES=${NUM_SND_COLLECTIVES:-9} +# MOM6 IC setting needed for forecast and stage ics +export MOM6_INTERP_ICS="{{ MOM6_INTERP_ICS }}" + echo "END: config.base" diff --git a/dev/parm/config/gefs/config.ufs b/dev/parm/config/gefs/config.ufs index 33c06d70d0a..09b0ba2ef0e 100644 --- a/dev/parm/config/gefs/config.ufs +++ b/dev/parm/config/gefs/config.ufs @@ -364,7 +364,7 @@ if [[ "${skip_mom6}" == "false" ]]; then FRUNOFF="runoff.daitren.clim.${NX_GLB}x${NY_GLB}.v20180328.nc" CHLCLIM="seawifs-clim-1997-2010.${NX_GLB}x${NY_GLB}.v20180328.nc" MOM6_RIVER_RUNOFF='True' - MOM6_RESTART_SETTING="r" + MOM6_RESTART_SETTING=${MOM6_RESTART_SETTING:-'r'} eps_imesh="1.0e-1" case ${RUN} in gfs|gefs|sfs) diff --git a/dev/parm/config/gefs/yaml/defaults.yaml b/dev/parm/config/gefs/yaml/defaults.yaml index b302a8bf30b..fe16b97100e 100644 --- a/dev/parm/config/gefs/yaml/defaults.yaml +++ b/dev/parm/config/gefs/yaml/defaults.yaml @@ -21,14 +21,13 @@ base: USE_OCN_ENS_PERTURB_FILES: "NO" USE_ATM_ENS_PERTURB_FILES: "NO" DO_TEST_MODE: "NO" + MOM6_INTERP_ICS: "NO" fcst: CHECK_LAND_RESTART_OROG: "YES" reforecast: "NO" FHZERO: 6 TYPE: "nh" MONO: "non-mono" -ocn: - MOM6_INTERP_ICS: "NO" nsst: NST_SPINUP: 0 # config.aero has just a system-specific path to add. diff --git a/dev/parm/config/gfs/config.ocn.j2 b/dev/parm/config/gfs/config.ocn.j2 index b9669be2c8a..91eb3c973a4 100644 --- a/dev/parm/config/gfs/config.ocn.j2 +++ b/dev/parm/config/gfs/config.ocn.j2 @@ -24,8 +24,7 @@ else export ODA_INCUPD_NHOURS="3.0" fi -MOM6_INTERP_ICS="{{ MOM6_INTERP_ICS }}" -if [[ "${MOM6_INTERP_ICS}" == "YES" ]]; then +if [[ "${MOM6_INTERP_ICS:-NO}" == "YES" ]]; then export MOM6_RESTART_SETTING='n' export MOM6_WARMSTART_FILE="MOM.res.nc" export MOM6_INIT_FROM_Z='False' diff --git a/dev/parm/config/sfs/config.base.j2 b/dev/parm/config/sfs/config.base.j2 index 860f892ce15..3103f6deb37 100644 --- a/dev/parm/config/sfs/config.base.j2 +++ b/dev/parm/config/sfs/config.base.j2 @@ -322,4 +322,7 @@ export ARCHCOM_TO="{{ ARCHCOM_TO }}" # Valid options are hpss, globus_hpss, a # Number of regional collectives to create soundings for export NUM_SND_COLLECTIVES=${NUM_SND_COLLECTIVES:-9} +# MOM6 IC setting needed for forecast and stage ics +export MOM6_INTERP_ICS="{{ MOM6_INTERP_ICS }}" + echo "END: config.base" diff --git a/dev/parm/config/sfs/config.efcs b/dev/parm/config/sfs/config.efcs index 2f8662dac9e..95830046778 100644 --- a/dev/parm/config/sfs/config.efcs +++ b/dev/parm/config/sfs/config.efcs @@ -27,8 +27,8 @@ source "${EXPDIR}/config.ufs" ${string} source "${EXPDIR}/config.resources" efcs # Stochastic physics parameters (only for ensemble forecasts) -if [[ "${CASE}" == "C96" ]] ; then - export DO_SKEB="NO" # SKEB turned off for C96 +if [[ "${TYPE}" == "hydro" ]] ; then + export DO_SKEB="NO" # SKEB turned off for hydrostatic runs due to bug in FV3 export SKEB=-999. else export DO_SKEB="YES" # SKEB turned on for all other resolutions diff --git a/dev/parm/config/sfs/yaml/defaults.yaml b/dev/parm/config/sfs/yaml/defaults.yaml index 305183fdf88..ebfe070d61a 100644 --- a/dev/parm/config/sfs/yaml/defaults.yaml +++ b/dev/parm/config/sfs/yaml/defaults.yaml @@ -21,14 +21,13 @@ base: USE_OCN_ENS_PERTURB_FILES: "NO" USE_ATM_ENS_PERTURB_FILES: "NO" DO_TEST_MODE: "NO" + MOM6_INTERP_ICS: "NO" fcst: CHECK_LAND_RESTART_OROG: "YES" reforecast: "YES" FHZERO: 24 TYPE: "hydro" MONO: "mono" -ocn: - MOM6_INTERP_ICS: "NO" nsst: NST_SPINUP: 0 # config.aero has just a system-specific path to add. diff --git a/parm/stage/ocean.yaml.j2 b/parm/stage/ocean.yaml.j2 index 5916e69aff7..aeca4439df7 100644 --- a/parm/stage/ocean.yaml.j2 +++ b/parm/stage/ocean.yaml.j2 @@ -3,7 +3,7 @@ ocean: - "{{ COMOUT_OCEAN_RESTART_PREV }}" link_req: - ["{{ ICSDIR }}/{{ COMOUT_OCEAN_RESTART_PREV | relpath(ROTDIR) }}/{{ m_prefix }}.MOM.res.nc", "{{ COMOUT_OCEAN_RESTART_PREV }}"] - {% if OCNRES == "025" %} + {% if OCNRES == "025" and not MOM6_INTERP_ICS %} {% for nn in range(1, 4) %} - ["{{ ICSDIR }}/{{ COMOUT_OCEAN_RESTART_PREV | relpath(ROTDIR) }}/{{ m_prefix }}.MOM.res_{{ nn }}.nc", "{{ COMOUT_OCEAN_RESTART_PREV }}"] {% endfor %} diff --git a/ush/python/pygfs/task/stage_ic.py b/ush/python/pygfs/task/stage_ic.py index 873d4346593..f660fb7096d 100644 --- a/ush/python/pygfs/task/stage_ic.py +++ b/ush/python/pygfs/task/stage_ic.py @@ -44,7 +44,7 @@ def _copy_base_config(self) -> Dict[str, Any]: 'ROTDIR', 'ICSDIR', 'STAGE_IC_YAML_TMPL', 'DO_JEDIATMVAR', 'OCNRES', 'waveGRD', 'ntiles', 'DOIAU', 'ATMINC_GRID', 'DO_JEDIOCNVAR', 'DO_STARTMEM_FROM_JEDIICE', - 'DO_WAVE', 'DO_OCN', 'DO_ICE', 'DO_NEST', 'DO_CA', 'DO_AERO_ANL', + 'DO_WAVE', 'DO_OCN', 'DO_ICE', 'DO_NEST', 'DO_CA', 'DO_AERO_ANL', 'MOM6_INTERP_ICS', 'USE_ATM_ENS_PERTURB_FILES', 'USE_OCN_ENS_PERTURB_FILES', 'DO_GSISOILDA', 'DO_LAND_IAU' ]