diff --git a/.gitmodules b/.gitmodules index ec186d8338d..e608c11ae23 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,7 @@ [submodule "sorc/ufs_model.fd"] path = sorc/ufs_model.fd url = https://github.com/ufs-community/ufs-weather-model + ignore = dirty [submodule "sorc/wxflow"] path = sorc/wxflow url = https://github.com/NOAA-EMC/wxflow diff --git a/dev/ci/cases/weekly/C384_S2SWA.yaml b/dev/ci/cases/weekly/C384_S2SWA.yaml deleted file mode 100644 index be494acf8aa..00000000000 --- a/dev/ci/cases/weekly/C384_S2SWA.yaml +++ /dev/null @@ -1,30 +0,0 @@ -experiment: - net: gfs - mode: forecast-only - pslot: {{ 'pslot' | getenv }} - app: S2SWA - resdetatmos: 384 - resdetocean: 0.25 - comroot: {{ 'RUNTESTS' | getenv }}/COMROOT - expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR - idate: 2016070100 - edate: 2016070100 - yaml: {{ HOMEgfs }}/dev/ci/cases/yamls/gfs_defaults_ci.yaml - -workflow: - engine: rocoto - rocoto: - maxtries: 2 - cyclethrottle: 3 - taskthrottle: 25 - verbosity: 2 - -# ICs are not currently available for this test. -skip_ci_on_hosts: - - gaeac6 - - gaeac5 - - hercules - - wcoss2 - - hera - - orion - - awsepicglobalworkflow diff --git a/dev/parm/config/gfs/config.cleanup b/dev/parm/config/gfs/config.cleanup index 7b0b718f4dc..543d624caf2 100644 --- a/dev/parm/config/gfs/config.cleanup +++ b/dev/parm/config/gfs/config.cleanup @@ -12,7 +12,7 @@ export CLEANUP_COM="YES" # NO=retain ROTDIR. YES default in cleanup.sh export RMOLDSTD=144 export RMOLDEND=24 -if [[ "${DO_GEMPAK}" == "YES" ]]; then +if [[ "${DO_GEMPAK}" == "YES" && "${RUN}" == "gfs" ]]; then export RMOLDSTD=346 export RMOLDEND=222 fi diff --git a/docs/source/index.rst b/docs/source/index.rst index ea6c2170bae..8c36c412dae 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -9,7 +9,7 @@ Status ====== * State of develop (HEAD) branch: GFSv17+ development -* State of operations (dev/gfs.v16 branch): GFS v16.3.24 `tag: [gfs.v16.3.24] `_ +* State of operations (dev/gfs.v16 branch): GFS v16.3.28 `tag: [gfs.v16.3.28] `_ ============= Code managers diff --git a/jobs/JGLOBAL_ANALYSIS_STATS b/jobs/JGLOBAL_ANALYSIS_STATS index efb34c8ce82..488392112be 100755 --- a/jobs/JGLOBAL_ANALYSIS_STATS +++ b/jobs/JGLOBAL_ANALYSIS_STATS @@ -30,7 +30,7 @@ YMD=${PDY} HH=${cyc} declare_from_tmpl -rx COMIN_OBS:COM_OBS_TMPL \ # Run relevant script EXSCRIPT=${ANLSTATSPY:-${SCRgfs}/exglobal_analysis_stats.py} -${EXSCRIPT} +${EXSCRIPT} && true export err=$? if [[ ${err} -ne 0 ]]; then err_exit diff --git a/parm/archive/enkf.yaml.j2 b/parm/archive/enkf.yaml.j2 index c13bf32a58a..7e44828e2bb 100644 --- a/parm/archive/enkf.yaml.j2 +++ b/parm/archive/enkf.yaml.j2 @@ -96,10 +96,10 @@ enkf: {% endfor %} {% if DO_JEDISNOWDA %} - - "{{ COMIN_SNOW_ANALYSIS_ENSSTAT | relpath(ROTDIR) }}/{{ head }}snowstat.tgz" + - "{{ COMIN_SNOW_ANALYSIS_ENSSTAT | relpath(ROTDIR) }}/{{ head }}snow_analysis.ioda_hofx.ensmean.tar" {% for itile in range(1,7) %} # Snow analysis is 3dvar - - "{{ COMIN_SNOW_ANALYSIS_ENSSTAT | relpath(ROTDIR) }}/snowinc.{{ cycle_YMD }}.{{ cycle_HH }}0000.sfc_data.tile{{ itile }}.nc" + - "{{ COMIN_SNOW_ANALYSIS_ENSSTAT | relpath(ROTDIR) }}/{{ cycle_YMD }}.{{ cycle_HH }}0000.snow_increment.sfc_data.tile{{ itile }}.nc" {% endfor %} {% endif %} diff --git a/parm/archive/gdas.yaml.j2 b/parm/archive/gdas.yaml.j2 index 436c702022a..f9a1115d19f 100644 --- a/parm/archive/gdas.yaml.j2 +++ b/parm/archive/gdas.yaml.j2 @@ -103,11 +103,11 @@ gdas: # Snow analysis data {% if DO_JEDISNOWDA %} {% for itile in range(1,7) %} - - "{{ COMIN_SNOW_ANALYSIS | relpath(ROTDIR) }}/snowinc.{{ cycle_YMD }}.{{ cycle_HH }}0000.sfc_data.tile{{ itile }}.nc" + - "{{ COMIN_SNOW_ANALYSIS | relpath(ROTDIR) }}/{{ current_cycle | to_fv3time }}.snow_increment.sfc_data.tile{{ itile }}.nc" {% endfor %} - - "{{ COMIN_SNOW_ANALYSIS | relpath(ROTDIR) }}/{{ head }}snowstat.tgz" + - "{{ COMIN_SNOW_ANALYSIS | relpath(ROTDIR) }}/{{ head }}snow_analysis.ioda_hofx.tar" - "{{ COMIN_CONF | relpath(ROTDIR) }}/{{ head }}snowanlvar.yaml" - - "{{ COMIN_SNOW_ANLMON | relpath(ROTDIR) }}/{{ head }}snow_iodastat.tgz" + - "{{ COMIN_SNOW_ANLMON | relpath(ROTDIR) }}/{{ head }}snow_analysis.ioda_hofx_stats.tar.gz" {% endif %} # Ozone verification diff --git a/parm/archive/gfs_arcdir.yaml.j2 b/parm/archive/gfs_arcdir.yaml.j2 index e80eb47e03b..c7b50b7d812 100644 --- a/parm/archive/gfs_arcdir.yaml.j2 +++ b/parm/archive/gfs_arcdir.yaml.j2 @@ -46,8 +46,8 @@ {% endif %} {% if DO_JEDISNOWDA == True %} - {% do det_anl_files.append([COMIN_SNOW_ANALYSIS ~ "/" ~ head ~ "snowstat.tgz", - ARCDIR ~ "/snowstat." ~ RUN ~ "." ~ cycle_YMDH ~ ".tgz"]) %} + {% do det_anl_files.append([COMIN_SNOW_ANALYSIS ~ "/" ~ head ~ "snow_analysis.ioda_hofx.tar", + ARCDIR ~ "/snowstat." ~ RUN ~ "." ~ cycle_YMDH ~ ".tar"]) %} {% endif %} {% if DO_AERO_ANL %} diff --git a/parm/archive/gfsa.yaml.j2 b/parm/archive/gfsa.yaml.j2 index 6f64ef2e00a..20196f68f5a 100644 --- a/parm/archive/gfsa.yaml.j2 +++ b/parm/archive/gfsa.yaml.j2 @@ -52,9 +52,9 @@ gfsa: # Snow analysis data {% if DO_JEDISNOWDA %} {% for itile in range(1,7) %} - - "{{ COMIN_SNOW_ANALYSIS | relpath(ROTDIR) }}/snowinc.{{ cycle_YMD }}.{{ cycle_HH }}0000.sfc_data.tile{{ itile }}.nc" + - "{{ COMIN_SNOW_ANALYSIS | relpath(ROTDIR) }}/{{ current_cycle | to_fv3time }}.snow_increment.sfc_data.tile{{ itile }}.nc" {% endfor %} - - "{{ COMIN_SNOW_ANALYSIS | relpath(ROTDIR) }}/{{ head }}snowstat.tgz" + - "{{ COMIN_SNOW_ANALYSIS | relpath(ROTDIR) }}/{{ head }}snow_analysis.ioda_hofx.tar" - "{{ COMIN_CONF | relpath(ROTDIR) }}/{{ head }}snowanlvar.yaml" {% endif %} diff --git a/scripts/exgdas_enkf_sfc.sh b/scripts/exgdas_enkf_sfc.sh index 5dff02f56b8..1fb8c53a79c 100755 --- a/scripts/exgdas_enkf_sfc.sh +++ b/scripts/exgdas_enkf_sfc.sh @@ -186,8 +186,10 @@ if [[ "$DOIAU" == "YES" ]]; then COMIN_SNOW_ANALYSIS_MEM:COM_SNOW_ANALYSIS_TMPL # determine where the input snow restart files come from + snow_prefix="" if [[ "${DO_JEDISNOWDA:-}" == "YES" ]]; then sfcdata_dir="${COMIN_SNOW_ANALYSIS_MEM}" + snow_prefix="snow_analysis." else sfcdata_dir="${COMIN_ATMOS_RESTART_MEM_PREV}" fi @@ -195,7 +197,7 @@ if [[ "$DOIAU" == "YES" ]]; then if [[ ${TILE_NUM} -eq 1 ]]; then mkdir -p "${COMOUT_ATMOS_RESTART_MEM}" fi - cpreq "${sfcdata_dir}/${bPDY}.${bcyc}0000.sfc_data.tile${n}.nc" \ + cpreq "${sfcdata_dir}/${bPDY}.${bcyc}0000.${snow_prefix}sfc_data.tile${n}.nc" \ "${DATA}/fnbgsi.${cmem}" cpreq "${DATA}/fnbgsi.${cmem}" "${DATA}/fnbgso.${cmem}" cpreq "${FIXgfs}/orog/${CASE}/${CASE}_grid.tile${n}.nc" "${DATA}/fngrid.${cmem}" @@ -264,13 +266,15 @@ if [[ "${DOSFCANL_ENKF}" == "YES" ]]; then COMIN_ATMOS_ANALYSIS_MEM:COM_ATMOS_ANALYSIS_TMPL # determine where the input snow restart files come from + snow_prefix="" if [[ "${DO_JEDISNOWDA:-}" == "YES" ]]; then sfcdata_dir="${COMIN_SNOW_ANALYSIS_MEM}" + snow_prefix="snow_analysis." else sfcdata_dir="${COMIN_ATMOS_RESTART_MEM_PREV}" fi - cpreq "${sfcdata_dir}/${PDY}.${cyc}0000.sfc_data.tile${n}.nc" \ + cpreq "${sfcdata_dir}/${PDY}.${cyc}0000.${snow_prefix}sfc_data.tile${n}.nc" \ "${DATA}/fnbgsi.${cmem}" cpreq "${DATA}/fnbgsi.${cmem}" "${DATA}/fnbgso.${cmem}" cpreq "${FIXgfs}/orog/${CASE}/${CASE}_grid.tile${n}.nc" "${DATA}/fngrid.${cmem}" diff --git a/scripts/exglobal_atmos_sfcanl.sh b/scripts/exglobal_atmos_sfcanl.sh index bfe96eae87a..c24a044d75a 100755 --- a/scripts/exglobal_atmos_sfcanl.sh +++ b/scripts/exglobal_atmos_sfcanl.sh @@ -90,8 +90,10 @@ else fi # determine where the input snow restart files come from +snow_prefix="" if [[ "${DO_JEDISNOWDA:-}" == "YES" ]]; then sfcdata_dir="${COMIN_SNOW_ANALYSIS}" + snow_prefix="snow_analysis." else sfcdata_dir="${COMIN_ATMOS_RESTART_PREV}" fi @@ -165,7 +167,7 @@ for hr in "${!gcycle_dates[@]}"; do # Copy inputs from COMIN to DATA for (( nn=1; nn <= ntiles; nn++ )); do - cpreq "${sfcdata_dir}/${datestr}.sfc_data.tile${nn}.nc" "${DATA}/fnbgsi.00${nn}" + cpreq "${sfcdata_dir}/${datestr}.${snow_prefix}sfc_data.tile${nn}.nc" "${DATA}/fnbgsi.00${nn}" cpreq "${DATA}/fnbgsi.00${nn}" "${DATA}/fnbgso.00${nn}" done diff --git a/sorc/gdas.cd b/sorc/gdas.cd index e2b780da168..1859724c85e 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit e2b780da168c1b9a45fb6487fa71ff148e42754d +Subproject commit 1859724c85e7f8382b1e3190bd5353381ea3a984 diff --git a/ush/python/pygfs/task/analysis_stats.py b/ush/python/pygfs/task/analysis_stats.py index 5ae2411f4c6..f13ad8a6af4 100644 --- a/ush/python/pygfs/task/analysis_stats.py +++ b/ush/python/pygfs/task/analysis_stats.py @@ -189,7 +189,7 @@ def finalize(self, jedi_dict_key: str) -> None: FileHandler({'copy_opt': copy_list}).sync() # path of output tar statfile - iodastatzipfile = os.path.join(outdir, f"{self.task_config.APREFIX}{jedi_dict_key}_iodastat.tgz") + iodastatzipfile = os.path.join(outdir, f"{self.task_config.APREFIX}{jedi_dict_key}_analysis.ioda_hofx_stats.tar.gz") logger.info(f"Compressing ioda-stats generated files to {iodastatzipfile}") @@ -301,7 +301,7 @@ def convert_gsi_diags(self) -> None: # Tar up the ioda files iodastatzipfile = os.path.join(self.task_config.DATA, 'atmos_gsi_ioda', - f"{self.task_config.APREFIX}atmos_gsi_ioda_diags.tgz") + f"{self.task_config.APREFIX}atmos_gsi_ioda_diags.tar.gz") logger.info(f"Compressing GSI IODA files to {iodastatzipfile}") # get list of iodastat files to put in tarball iodastatfiles = glob.glob(os.path.join(output_dir_path, '*nc4')) diff --git a/ush/python/pygfs/task/snow_analysis.py b/ush/python/pygfs/task/snow_analysis.py index 03fdd1312af..a854696bda6 100644 --- a/ush/python/pygfs/task/snow_analysis.py +++ b/ush/python/pygfs/task/snow_analysis.py @@ -148,7 +148,7 @@ def finalize(self) -> None: # Compress and tar diag files into COM directory self.tar_diag_files(self.task_config.COMOUT_SNOW_ANALYSIS, - f"{self.task_config.APREFIX}snowstat.tgz") + f"{self.task_config.APREFIX}snow_analysis.ioda_hofx.tar") # Save files to COM logger.info(f"Saving files to COM") diff --git a/ush/python/pygfs/task/snowens_analysis.py b/ush/python/pygfs/task/snowens_analysis.py index 78206324f12..8016576779b 100644 --- a/ush/python/pygfs/task/snowens_analysis.py +++ b/ush/python/pygfs/task/snowens_analysis.py @@ -152,7 +152,7 @@ def finalize(self) -> None: # Compress and tar diag files into COM directory self.tar_diag_files(self.task_config.COMOUT_SNOW_ANALYSIS, - f"{self.task_config.APREFIX_ENS}snowstat.tgz") + f"{self.task_config.APREFIX_ENS}snow_analysis.ioda_hofx.ensmean.tar") # Save files to COM logger.info(f"Saving files to COM")