Skip to content

Commit

Permalink
Fix time offset issue on ICS with GFS nemsio and netcdf files and add…
Browse files Browse the repository at this point in the history
… new archive file name on HPSS (#457)

* fix time offset with gfs

* add new archive file name and we2e test

* add ics_or_lbcs to test_retrieve.py

* Add check availability of nemsio and netcdf

* Copy file_templates dict before modifying it.

* remove native from xml for dev_transfer on wcoss2

* correct data locations on wcoss2

* remove met_verification from fundamental.cheyenne.gnu

* replace cyc to hh in data locations

* make lbcs condition general

Co-authored-by: Daniel Abdi <[email protected]>
  • Loading branch information
chan-hoo and danielabdi-noaa authored Nov 9, 2022
1 parent 474ab7d commit 04fd9c6
Show file tree
Hide file tree
Showing 9 changed files with 87 additions and 11 deletions.
26 changes: 18 additions & 8 deletions jobs/JREGIONAL_GET_EXTRN_MDL_FILES
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,11 @@ check_var_valid_value "ICS_OR_LBCS" "valid_vals_ICS_OR_LBCS"
if [ "${ICS_OR_LBCS}" = "ICS" ]; then
export TIME_OFFSET_HRS=${EXTRN_MDL_ICS_OFFSET_HRS:-0}
export EXTRN_MDL_NAME=${EXTRN_MDL_NAME_ICS}

GFS_FILE_FMT=${FV3GFS_FILE_FMT_ICS}
elif [ "${ICS_OR_LBCS}" = "LBCS" ]; then
export TIME_OFFSET_HRS=${EXTRN_MDL_LBCS_OFFSET_HRS:-0}
export EXTRN_MDL_NAME=${EXTRN_MDL_NAME_LBCS}
GFS_FILE_FMT=${FV3GFS_FILE_FMT_LBCS}
fi

#
Expand Down Expand Up @@ -159,10 +160,10 @@ case ${EXTRN_MDL_NAME} in
# The transition date from the GSMGFS to the FV3GFS was 2019061212, i.e.
# this was the first official forecast with the FV3GFS. So we set the
# last CDATE for the GSMGFS to the one 6 hours before this.
cdate_max="2019061206"
if [ "$EXTRN_MDL_CDATE" -gt "$cdate_max" ]; then
CDATE_max="2019061206"
if [ "$EXTRN_MDL_CDATE" -gt "$CDATE_max" ]; then
print_err_msg_exit "\
$(data_unavailable $EXTRN_MDL_NAME $EXTRN_MDL_CDATE $cdate_max max)"
$(data_unavailable $EXTRN_MDL_NAME $EXTRN_MDL_CDATE $CDATE_max max)"
fi
;;

Expand All @@ -171,11 +172,20 @@ case ${EXTRN_MDL_NAME} in
# this was the first official forecast with the FV3GFS. However, paral-
# lel runs with the FV3GFS go back to 2018121500. So we set the first
# EXTRN_MDL_CDATE for the FV3GFS to this date and time.
# CDATE_min="2019061212"
CDATE_min="2018121500"
CDATE_min_netcdf="2021032100"
CDATE_max_nemsio="2021032018"
if [ "$EXTRN_MDL_CDATE" -lt "$CDATE_min" ]; then
print_err_msg_exit "\
$(data_unavailable $EXTRN_MDL_NAME $EXTRN_MDL_CDATE $cdate_min min)"
$(data_unavailable $EXTRN_MDL_NAME $EXTRN_MDL_CDATE $CDATE_min min)"
elif [ "${GFS_FILE_FMT}" = "netcdf" ] && [ "${EXTRN_MDL_CDATE}" -lt "${CDATE_min_netcdf}" ]; then
print_err_msg_exit "\
NETCDF is not available for this date:: However, NEMSIO is available:: \
$(data_unavailable $EXTRN_MDL_NAME $EXTRN_MDL_CDATE $CDATE_min_netcdf min)"
elif [ "${GFS_FILE_FMT}" = "nemsio" ] && [ "${EXTRN_MDL_CDATE}" -gt "${CDATE_max_nemsio}" ]; then
print_err_msg_exit "\
NEMSIO is not available for this date:: However, NETCDF is available:: \
$(data_unavailable $EXTRN_MDL_NAME $EXTRN_MDL_CDATE $CDATE_max_nemsio max)"
fi
;;

Expand All @@ -185,7 +195,7 @@ case ${EXTRN_MDL_NAME} in
CDATE_min="2015070100"
if [ "$EXTRN_MDL_CDATE" -lt "$CDATE_min" ]; then
print_err_msg_exit "\
$(data_unavailable $EXTRN_MDL_NAME $EXTRN_MDL_CDATE $cdate_min min)"
$(data_unavailable $EXTRN_MDL_NAME $EXTRN_MDL_CDATE $CDATE_min min)"
fi
;;

Expand All @@ -196,7 +206,7 @@ case ${EXTRN_MDL_NAME} in
CDATE_min="2014103000"
if [ "$EXTRN_MDL_CDATE" -lt "$CDATE_min" ]; then
print_err_msg_exit "\
$(data_unavailable $EXTRN_MDL_NAME $EXTRN_MDL_CDATE $cdate_min min)"
$(data_unavailable $EXTRN_MDL_NAME $EXTRN_MDL_CDATE $CDATE_min min)"
fi
;;

Expand Down
4 changes: 4 additions & 0 deletions parm/FV3LAM_wflow.xml
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,9 @@ MODULES_RUN_TASK_FP script.
{%- endif %}
<walltime>{{ wtime_get_extrn_ics }}</walltime>
<nodesize>&NCORES_PER_NODE;</nodesize>
{%- if machine not in ["WCOSS2"] %}
<native>&SCHED_NATIVE_CMD;</native>
{%- endif %}
<jobname>&GET_EXTRN_ICS_TN;</jobname>
<join>&LOGDIR;/&GET_EXTRN_ICS_TN;<cyclestr>_@Y@m@d@H</cyclestr>&LOGEXT;</join>

Expand Down Expand Up @@ -335,7 +337,9 @@ MODULES_RUN_TASK_FP script.
{%- endif %}
<walltime>{{ wtime_get_extrn_lbcs }}</walltime>
<nodesize>&NCORES_PER_NODE;</nodesize>
{%- if machine not in ["WCOSS2"] %}
<native>&SCHED_NATIVE_CMD;</native>
{%- endif %}
<jobname>&GET_EXTRN_LBCS_TN;</jobname>
<join>&LOGDIR;/&GET_EXTRN_LBCS_TN;<cyclestr>_@Y@m@d@H</cyclestr>&LOGEXT;</join>

Expand Down
7 changes: 7 additions & 0 deletions parm/data_locations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,17 +64,20 @@ FV3GFS:
- gfs.t{hh}z.sfcanl.nemsio
fcst:
- gfs.t{hh}z.atmf{fcst_hr:03d}.nemsio
- gfs.t{hh}z.sfcf{fcst_hr:03d}.nemsio
netcdf:
anl:
- gfs.t{hh}z.atmanl.nc
- gfs.t{hh}z.sfcanl.nc
fcst:
- gfs.t{hh}z.atmf{fcst_hr:03d}.nc
- gfs.t{hh}z.sfcf{fcst_hr:03d}.nc
hpss:
protocol: htar
archive_path:
- /NCEPPROD/hpssprod/runhistory/rh{yyyy}/{yyyymm}/{yyyymmdd}
- /NCEPPROD/hpssprod/runhistory/rh{yyyy}/{yyyymm}/{yyyymmdd}
- /NCEPPROD/hpssprod/runhistory/rh{yyyy}/{yyyymm}/{yyyymmdd}
archive_internal_dir:
- ./gfs.{yyyymmdd}/{hh}
- ./gfs.{yyyymmdd}/{hh}/atmos
Expand All @@ -83,9 +86,11 @@ FV3GFS:
anl:
- gpfs_dell1_nco_ops_com_gfs_prod_gfs.{yyyymmdd}_{hh}.gfs_pgrb2.tar
- com_gfs_prod_gfs.{yyyymmdd}_{hh}.gfs_pgrb2.tar
- com_gfs_v16.2_gfs.{yyyymmdd}_{hh}.gfs_pgrb2.tar
fcst:
- gpfs_dell1_nco_ops_com_gfs_prod_gfs.{yyyymmdd}_{hh}.gfs_pgrb2.tar
- com_gfs_prod_gfs.{yyyymmdd}_{hh}.gfs_pgrb2.tar
- com_gfs_v16.2_gfs.{yyyymmdd}_{hh}.gfs_pgrb2.tar
nemsio:
anl:
- gpfs_dell1_nco_ops_com_gfs_prod_gfs.{yyyymmdd}_{hh}.gfs_nemsioa.tar
Expand All @@ -97,9 +102,11 @@ FV3GFS:
anl:
- gpfs_dell1_nco_ops_com_gfs_prod_gfs.{yyyymmdd}_{hh}.gfs_nca.tar
- com_gfs_prod_gfs.{yyyymmdd}_{hh}.gfs_nca.tar
- com_gfs_v16.2_gfs.{yyyymmdd}_{hh}.gfs_nca.tar
fcst:
- ['gpfs_dell1_nco_ops_com_gfs_prod_gfs.{yyyymmdd}_{hh}.gfs_nca.tar', 'gpfs_dell1_nco_ops_com_gfs_prod_gfs.{yyyymmdd}_{hh}.gfs_ncb.tar']
- ['com_gfs_prod_gfs.{yyyymmdd}_{hh}.gfs_nca.tar', 'com_gfs_prod_gfs.{yyyymmdd}_{hh}.gfs_ncb.tar']
- ['com_gfs_v16.2_gfs.{yyyymmdd}_{hh}.gfs_nca.tar', 'com_gfs_v16.2_gfs.{yyyymmdd}_{hh}.gfs_ncb.tar']
file_names:
<<: *gfs_file_names
aws:
Expand Down
1 change: 1 addition & 0 deletions scripts/exregional_get_extrn_mdl_files.sh
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ python3 -u ${USHdir}/retrieve_data.py \
--data_stores ${data_stores} \
--external_model ${EXTRN_MDL_NAME} \
--fcst_hrs ${fcst_hrs[@]} \
--ics_or_lbcs ${ICS_OR_LBCS} \
--output_path ${EXTRN_MDL_STAGING_DIR} \
--summary_file ${EXTRN_DEFNS} \
$additional_flags"
Expand Down
1 change: 0 additions & 1 deletion tests/WE2E/machine_suites/fundamental.cheyenne.gnu
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
MET_verification
grid_CONUS_25km_GFDLgrid_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_HRRR
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_RRFS_v1beta
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
metadata:
description: |-
This test is to ensure that the workflow running in nco mode completes
successfully on the RRFS_CONUS_25km grid using the FV3_GFS_v16 physics
suite with time-offset ICs/LBCs derived from the FV3GFS.
user:
RUN_ENVIR: nco
workflow:
CCPP_PHYS_SUITE: FV3_GFS_v16
DATE_FIRST_CYCL: '2022081012'
DATE_LAST_CYCL: '2022081012'
FCST_LEN_HRS: 6
PREEXISTING_DIR_METHOD: rename
workflow_switches:
RUN_TASK_MAKE_GRID: false
RUN_TASK_MAKE_OROG: false
RUN_TASK_MAKE_SFC_CLIMO: false
task_get_extrn_ics:
EXTRN_MDL_NAME_ICS: FV3GFS
FV3GFS_FILE_FMT_ICS: netcdf
EXTRN_MDL_ICS_OFFSET_HRS: 6
task_get_extrn_lbcs:
EXTRN_MDL_NAME_LBCS: FV3GFS
FV3GFS_FILE_FMT_LBCS: netcdf
LBC_SPEC_INTVL_HRS: 3
EXTRN_MDL_LBCS_OFFSET_HRS: 6
task_run_fcst:
PREDEF_GRID_NAME: RRFS_CONUS_25km
4 changes: 2 additions & 2 deletions ush/machine/wcoss2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ task_run_fcst:
FIXlut: /lfs/h2/emc/lam/noscrub/UFS_SRW_App/develop/fix/fix_lut
data:
GSMGFS: compath.py ${envir}/gsmgfs/${gsmgfs_ver}/gsmgfs.${PDY}
FV3GFS: compath.py ${envir}/gfs/${gfs_ver}/gfs.${PDY}
FV3GFS: compath.py ${envir}/gfs/${gfs_ver}/gfs.${PDY}/${hh}/atmos
RAP: compath.py ${envir}/rap/${rap_ver}/rap.${PDY}
NAM: compath.py ${envir}/nam/${nam_ver}/nam.${PDY}
HRRR: compath.py ${envir}/hrrr/${hrrr_ver}/hrrr.${PDY}
HRRR: compath.py ${envir}/hrrr/${hrrr_ver}/hrrr.${PDY}/conus

17 changes: 17 additions & 0 deletions ush/retrieve_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import sys
from textwrap import dedent
import time
from copy import deepcopy

import yaml

Expand Down Expand Up @@ -289,6 +290,16 @@ def get_file_templates(cla, known_data_info, data_store, use_cla_tmpl=False):
"""

file_templates = known_data_info.get(data_store, {}).get("file_names")
file_templates = deepcopy(file_templates)

# Remove sfc files from fcst in file_names of external models for LBCs
# sfc files needed in fcst when time_offset is not zero.
if cla.ics_or_lbcs == "LBCS":
for format in ['netcdf', 'nemsio']:
for i, tmpl in enumerate(file_templates.get(format, {}).get('fcst', [])):
if "sfc" in tmpl:
del file_templates[format]['fcst'][i]

if use_cla_tmpl:
file_templates = cla.file_templates if cla.file_templates else file_templates

Expand Down Expand Up @@ -946,6 +957,12 @@ def parse_args(argv):
required=True,
type=os.path.abspath,
)
parser.add_argument(
"--ics_or_lbcs",
choices=("ICS", "LBCS"),
help="Flag for whether ICS or LBCS.",
required=True,
)

# Optional
parser.add_argument(
Expand Down
10 changes: 10 additions & 0 deletions ush/test_retrieve_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ def test_fv3gfs_grib2_lbcs_from_hpss(self):
'--external_model', 'FV3GFS',
'--fcst_hrs', '6', '12', '3',
'--output_path', tmp_dir,
'--ics_or_lbcs', 'LBCS',
'--debug',
'--file_type', 'grib2',
]
Expand Down Expand Up @@ -80,6 +81,7 @@ def test_fv3gfs_netcdf_lbcs_from_hpss(self):
'--external_model', 'FV3GFS',
'--fcst_hrs', '24', '48', '24',
'--output_path', tmp_dir,
'--ics_or_lbcs', 'LBCS',
'--debug',
'--file_type', 'netcdf',
]
Expand Down Expand Up @@ -112,6 +114,7 @@ def test_gdas_ics_from_aws(self):
'--external_model', 'GDAS',
'--fcst_hrs', '6', '9', '3',
'--output_path', out_path_tmpl,
'--ics_or_lbcs', 'LBCS',
'--debug',
'--file_type', 'netcdf',
'--members', '9', '10',
Expand Down Expand Up @@ -147,6 +150,7 @@ def test_gefs_grib2_ics_from_aws(self):
'--external_model', 'GEFS',
'--fcst_hrs', '6',
'--output_path', out_path_tmpl,
'--ics_or_lbcs', 'ICS',
'--debug',
'--file_type', 'netcdf',
'--members', '1', '2',
Expand Down Expand Up @@ -180,6 +184,7 @@ def test_hrrr_ics_from_hpss(self):
'--external_model', 'HRRR',
'--fcst_hrs', '0',
'--output_path', tmp_dir,
'--ics_or_lbcs', 'ICS',
'--debug',
]
# fmt: on
Expand Down Expand Up @@ -209,6 +214,7 @@ def test_hrrr_lbcs_from_hpss(self):
'--external_model', 'HRRR',
'--fcst_hrs', '3', '24', '3',
'--output_path', tmp_dir,
'--ics_or_lbcs', 'LBCS',
'--debug',
]
# fmt: on
Expand Down Expand Up @@ -237,6 +243,7 @@ def test_hrrr_ics_from_aws(self):
'--external_model', 'HRRR',
'--fcst_hrs', '0',
'--output_path', tmp_dir,
'--ics_or_lbcs', 'ICS',
'--debug',
]
# fmt: on
Expand Down Expand Up @@ -265,6 +272,7 @@ def test_hrrr_lbcs_from_aws(self):
'--external_model', 'HRRR',
'--fcst_hrs', '3', '24', '3',
'--output_path', tmp_dir,
'--ics_or_lbcs', 'LBCS',
'--debug',
]
# fmt: on
Expand Down Expand Up @@ -294,6 +302,7 @@ def test_rap_ics_from_aws(self):
'--external_model', 'RAP',
'--fcst_hrs', '3',
'--output_path', tmp_dir,
'--ics_or_lbcs', 'ICS',
'--debug',
]
# fmt: on
Expand Down Expand Up @@ -323,6 +332,7 @@ def test_rap_lbcs_from_aws(self):
'--external_model', 'RAP',
'--fcst_hrs', '3', '30', '6',
'--output_path', tmp_dir,
'--ics_or_lbcs', 'LBCS',
'--debug',
]
# fmt: on
Expand Down

0 comments on commit 04fd9c6

Please sign in to comment.