From e3b146f12d3cb87d5c150f48925434db8c879f1d Mon Sep 17 00:00:00 2001 From: Rahul Mahajan Date: Wed, 29 Oct 2025 12:04:16 -0400 Subject: [PATCH 1/9] wip: loop over downset and update apcp to 598 --- dev/parm/config/gfs/config.atmos_products | 7 +- scripts/exglobal_atmos_products.sh | 140 +++++++++++----------- 2 files changed, 70 insertions(+), 77 deletions(-) diff --git a/dev/parm/config/gfs/config.atmos_products b/dev/parm/config/gfs/config.atmos_products index 5b6e4067b5d..9b809524e9f 100644 --- a/dev/parm/config/gfs/config.atmos_products +++ b/dev/parm/config/gfs/config.atmos_products @@ -6,7 +6,7 @@ echo "BEGIN: config.atmos_products" # Get task specific resources -. "${EXPDIR}/config.resources" atmos_products +source "${EXPDIR}/config.resources" atmos_products ## Maximum number of rocoto tasks per member export MAX_TASKS=25 @@ -15,22 +15,19 @@ export MAX_TASKS=25 export INTERP_ATMOS_MASTERSH="${USHgfs}/interp_atmos_master.sh" export INTERP_ATMOS_SFLUXSH="${USHgfs}/interp_atmos_sflux.sh" +export downset=2 if [[ "${RUN:-}" == "gdas" ]]; then - export downset=1 export FHOUT_PGBS=${FHOUT:-1} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg export FLXGF="NO" # Create interpolated sflux.1p00 file export WGNE="NO" # WGNE products are created for first FHMAX_WGNE forecast hours export FHMAX_WGNE=0 elif [[ "${RUN:-}" == "gfs" ]]; then - export downset=2 export FHOUT_PGBS=${FHOUT_GFS:-3} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg export FLXGF="YES" # Create interpolated sflux.1p00 file export WGNE="YES" # WGNE products are created for first FHMAX_WGNE forecast hours export FHMAX_WGNE=180 fi -export APCP_MSG="597" # Message number for APCP in GFSv16. Look for TODO in exglobal_atmos_products.sh - # paramlist files for the different forecast hours and downsets export paramlista="${PARMgfs}/product/gfs.fFFF.paramlist.a.txt" export paramlista_anl="${PARMgfs}/product/gfs.anl.paramlist.a.txt" diff --git a/scripts/exglobal_atmos_products.sh b/scripts/exglobal_atmos_products.sh index 2c21d71120b..fe45d89f5b4 100755 --- a/scripts/exglobal_atmos_products.sh +++ b/scripts/exglobal_atmos_products.sh @@ -36,28 +36,6 @@ fi #----------------------------------------------------- # Section creating pressure grib2 interpolated products -# Files needed by ${INTERP_ATMOS_MASTERSH} -MASTER_FILE="${COMIN_ATMOS_MASTER}/${PREFIX}master.${fhr3}.grib2" - -# Get inventory from ${MASTER_FILE} that matches patterns from ${paramlista} -# Extract this inventory from ${MASTER_FILE} into a smaller tmpfile or tmpfileb based on paramlista or paramlistb -# shellcheck disable=SC2312 -${WGRIB2} "${MASTER_FILE}" | grep -F -f "${paramlista}" | ${WGRIB2} -i -grib "tmpfilea_${fhr3}" "${MASTER_FILE}" && true -export err=$? -if [[ ${err} -ne 0 ]]; then - err_exit "wgrib2 failed to create intermediate grib2 file from ${MASTER_FILE} using ${paramlista}" -fi - -# Do the same as above for ${paramlistb} -if [[ ${downset} -eq 2 ]]; then - # shellcheck disable=SC2312 - ${WGRIB2} "${MASTER_FILE}" | grep -F -f "${paramlistb}" | ${WGRIB2} -i -grib "tmpfileb_${fhr3}" "${MASTER_FILE}" && true - export err=$? - if [[ ${err} -ne 0 ]]; then - err_exit "wgrib2 failed to create intermediate grib2 file from ${MASTER_FILE} using ${paramlistb}" - fi -fi - # Determine grids once and save them as a string and an array for processing grid_string="0p25" if [[ "${PGBS:-}" == "YES" ]]; then @@ -69,12 +47,13 @@ fi # Also transform the ${grid_string} into an array for processing IFS=':' read -ra grids <<< "${grid_string}" -for (( nset=1 ; nset <= downset ; nset++ )); do +# Files needed by ${INTERP_ATMOS_MASTERSH} +MASTER_FILE="${COMIN_ATMOS_MASTER}/${PREFIX}master.${fhr3}.grib2" - echo "Begin processing nset = ${nset}" +nset=1 +while [[ ${nset} -le ${downset} ]]; do - # Number of processors available to process $nset - nproc=${ntasks} + echo "Begin processing nset = ${nset}" # Each set represents a group of files if [[ ${nset} == 1 ]]; then @@ -83,8 +62,22 @@ for (( nset=1 ; nset <= downset ; nset++ )); do grp="b" fi - # process grib2 chunkfiles to interpolate using MPMD + # Get inventory from ${MASTER_FILE} that matches patterns from ${paramlist} + # Extract this inventory from ${MASTER_FILE} into a smaller tmpfile based on paramlist + tmpfile="tmpfile${grp}_${fhr3}" + paramlist="paramlist${grp}" + parmfile=${!paramlist} + + # shellcheck disable=SC2312 + ${WGRIB2} "${MASTER_FILE}" | grep -F -f "${parmfile}" | ${WGRIB2} -i -grib "${tmpfile}" "${MASTER_FILE}" && true + export err=$? + if [[ ${err} -ne 0 ]]; then + err_exit "wgrib2 failed to create intermediate grib2 file from '${MASTER_FILE}' using '${parmfile}'" + fi + + # Number of processors available to process $nset + nproc=${ntasks} # shellcheck disable=SC2312 ncount=$(${WGRIB2} "${tmpfile}" | wc -l) @@ -93,10 +86,11 @@ for (( nset=1 ; nset <= downset ; nset++ )); do echo "Reduce nproc to ${ncount} (or less) to not waste resources" fi inv=$(( ncount / nproc )) - rm -f "${DATA}/poescript" + rm -f "${DATA}/cmdfile" last=0 - for (( iproc = 1 ; iproc <= nproc ; iproc++ )); do + iproc=1 + while [[ ${iproc} -le ${nproc} ]]; do first=$((last + 1)) last=$((last + inv)) if [[ ${last} -gt ${ncount} ]]; then @@ -126,20 +120,21 @@ for (( nset=1 ; nset <= downset ; nset++ )); do fi input_file="${tmpfile}_${iproc}" output_file_prefix="pgb2${grp}file_${fhr3}_${iproc}" - echo "${INTERP_ATMOS_MASTERSH} ${input_file} ${output_file_prefix} ${grid_string}" >> "${DATA}/poescript" + echo "${INTERP_ATMOS_MASTERSH} ${input_file} ${output_file_prefix} ${grid_string}" >> "${DATA}/cmdfile" # if at final record and have not reached the final processor then write echo's to - # poescript for remaining processors + # cmdfile for remaining processors if [[ ${last} -eq ${ncount} ]]; then for (( pproc = iproc+1 ; pproc < nproc ; pproc++ )); do - echo "/bin/echo ${pproc}" >> "${DATA}/poescript" + echo "/bin/echo ${pproc}" >> "${DATA}/cmdfile" done break fi - done # for (( iproc = 1 ; iproc <= nproc ; iproc++ )); do + iproc=$(( iproc + 1 )) + done # while [[ iproc -le nproc ]]; do # Run with MPMD or serial - "${USHgfs}/run_mpmd.sh" "${DATA}/poescript" && true + "${USHgfs}/run_mpmd.sh" "${DATA}/cmdfile" && true export err=$? if [[ ${err} -ne 0 ]]; then err_exit "Some or all interpolations of the master grib file failed during MPMD execution!" @@ -151,13 +146,15 @@ for (( nset=1 ; nset <= downset ; nset++ )); do # Concatenate grib files from each processor into a single one # and clean-up as you go echo "Concatenating processor-specific grib2 files into a single product file" - for (( iproc = 1 ; iproc <= nproc ; iproc++ )); do + iproc=1 + while [[ ${iproc} -le ${nproc} ]]; do for grid in "${grids[@]}"; do cat "pgb2${grp}file_${fhr3}_${iproc}_${grid}" >> "pgb2${grp}file_${fhr3}_${grid}" rm -f "pgb2${grp}file_${fhr3}_${iproc}_${grid}" done # There is no further use of the processor specific tmpfile; delete it rm -f "${tmpfile}_${iproc}" + iproc=$(( iproc + 1 )) done # Move to COM and index the product grib files @@ -169,7 +166,8 @@ for (( nset=1 ; nset <= downset ; nset++ )); do echo "Finished processing nset = ${nset}" -done # for (( nset=1 ; nset <= downset ; nset++ )) + nset=$(( nset + 1 )) +done # while [[ ${nset} -le ${downset} ]]; do #--------------------------------------------------------------- @@ -207,8 +205,8 @@ fi if [[ "${WGNE:-}" == "YES" ]]; then grp="a" if [[ ${FORECAST_HOUR} -gt 0 && ${FORECAST_HOUR} -le ${FHMAX_WGNE} ]]; then - # TODO: 597 is the message number for APCP in GFSv16. GFSv17 may change this as more messages are added. This can be controlled via config.atmos_products - ${WGRIB2} "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}pres_${grp}.0p25.${fhr3}.grib2" -d "${APCP_MSG:-597}" -grib "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}.grib2" + # 598 is the message number for APCP in GFSv17 (it was 597 in GFSv16) + ${WGRIB2} "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}pres_${grp}.0p25.${fhr3}.grib2" -d "${APCP_MSG:-598}" -grib "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}.grib2" fi fi @@ -217,6 +215,7 @@ fi # Start sending DBN alerts # Everything below this line is for sending files to DBN (SENDDBN=YES) if [[ "${SENDDBN:-}" == "YES" ]]; then + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_0P25" "${job}" "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}pres_a.0p25.${fhr3}.grib2" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_0P25_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}pres_a.0p25.${fhr3}.grib2.idx" if [[ "${RUN}" == "gfs" ]]; then @@ -225,16 +224,20 @@ if [[ "${SENDDBN:-}" == "YES" ]]; then if [[ -s "${COMOUT_ATMOS_GRIB_0p50}/${PREFIX}pres_a.0p50.${fhr3}.grib2" ]]; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_0P5" "${job}" "${COMOUT_ATMOS_GRIB_0p50}/${PREFIX}pres_a.0p50.${fhr3}.grib2" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_0P5_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_0p50}/${PREFIX}pres_a.0p50.${fhr3}.grib2.idx" + fi + if [[ -s "${COMOUT_ATMOS_GRIB_0p50}/${PREFIX}pres_b.0p50.${fhr3}.grib2" ]]; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_0P5" "${job}" "${COMOUT_ATMOS_GRIB_0p50}/${PREFIX}pres_b.0p50.${fhr3}.grib2" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_0P5_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_0p50}/${PREFIX}pres_b.0p50.${fhr3}.grib2.idx" fi if [[ -s "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2" ]]; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_1P0" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_1P0_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2.idx" + fi + if [[ -s "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_b.1p00.${fhr3}.grib2" ]]; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_1P0" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_b.1p00.${fhr3}.grib2" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_1P0_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_b.1p00.${fhr3}.grib2.idx" fi - if [[ "${WGNE:-}" == "YES" && -s "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}.grib2" ]] ; then + if [[ "${WGNE:-}" == "YES" ]] && [[ -s "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}.grib2" ]] ; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_WGNE" "${job}" "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}.grib2" fi fi @@ -249,39 +252,32 @@ if [[ "${SENDDBN:-}" == "YES" ]]; then else # forecast hours f000, f003, f006, etc. - if [[ "${RUN}" == "gdas" ]]; then - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB_GB2" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2" - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB_GB2_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2.idx" - if (( FORECAST_HOUR % 3 == 0 )); then - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}atm.${fhr3}.nc" - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_BF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}sfc.${fhr3}.nc" - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2_WIDX" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2.idx" - fi - elif [[ "${RUN}" == "gfs" ]]; then - - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}atm.${fhr3}.nc" - if [[ ${fhr} -gt 0 && ${fhr} -le 84 || ${fhr} -eq 120 ]]; then - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_BF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}sfc.${fhr3}.nc" - fi - - if [[ -s "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" ]]; then - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2_WIDX" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2.idx" - fi - elif [[ "${RUN}" == "gcafs" ]]; then - - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SF" "${job}" "${COM_ATMOS_HISTORY}/${PREFIX}atm.f${fhr3}.nc" - if [[ ${fhr} -gt 0 && ${fhr} -le 84 || ${fhr} == 120 ]]; then - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_BF" "${job}" "${COM_ATMOS_HISTORY}/${PREFIX}sfc.f${fhr3}.nc" - fi - - if [[ -s "${COM_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" ]]; then - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2" "${job}" "${COM_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" - "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2_WIDX" "${job}" "${COM_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2.idx" - fi - fi - + case "${RUN}" in + gdas) + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB_GB2" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2" + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB_GB2_WIDX" "${job}" "${COMOUT_ATMOS_GRIB_1p00}/${PREFIX}pres_a.1p00.${fhr3}.grib2.idx" + if (( FORECAST_HOUR % 3 == 0 )); then + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}atm.${fhr3}.nc" + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_BF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}sfc.${fhr3}.nc" + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2_WIDX" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2.idx" + fi + ;; + gfs|gcafs) + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}atm.${fhr3}.nc" + if [[ ${fhr} -gt 0 && ${fhr} -le 84 || ${fhr} -eq 120 ]]; then + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_BF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}sfc.${fhr3}.nc" + fi + + if [[ -s "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" ]]; then + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2" + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2_WIDX" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2.idx" + fi + ;; + *) + err_exit "Unsupported RUN value '${RUN}' for SENDDBN section" + ;; + esac fi # end if fhr3=anl From 3908db8f40afd69e599c483a42f82e0e5720a5c0 Mon Sep 17 00:00:00 2001 From: Rahul Mahajan Date: Wed, 29 Oct 2025 13:48:27 -0400 Subject: [PATCH 2/9] generate idx files locally, then copy to COM --- dev/parm/config/gfs/config.atmos_products | 8 +--- scripts/exglobal_atmos_products.sh | 47 ++++++++++------------- 2 files changed, 23 insertions(+), 32 deletions(-) diff --git a/dev/parm/config/gfs/config.atmos_products b/dev/parm/config/gfs/config.atmos_products index 9b809524e9f..e234d61e13c 100644 --- a/dev/parm/config/gfs/config.atmos_products +++ b/dev/parm/config/gfs/config.atmos_products @@ -11,11 +11,6 @@ source "${EXPDIR}/config.resources" atmos_products ## Maximum number of rocoto tasks per member export MAX_TASKS=25 -# Scripts used by this job -export INTERP_ATMOS_MASTERSH="${USHgfs}/interp_atmos_master.sh" -export INTERP_ATMOS_SFLUXSH="${USHgfs}/interp_atmos_sflux.sh" - -export downset=2 if [[ "${RUN:-}" == "gdas" ]]; then export FHOUT_PGBS=${FHOUT:-1} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg export FLXGF="NO" # Create interpolated sflux.1p00 file @@ -28,7 +23,8 @@ elif [[ "${RUN:-}" == "gfs" ]]; then export FHMAX_WGNE=180 fi -# paramlist files for the different forecast hours and downsets +# paramlist files for the different forecast hours and downsets (a, b) +export downset=2 export paramlista="${PARMgfs}/product/gfs.fFFF.paramlist.a.txt" export paramlista_anl="${PARMgfs}/product/gfs.anl.paramlist.a.txt" export paramlista_f000="${PARMgfs}/product/gfs.f000.paramlist.a.txt" diff --git a/scripts/exglobal_atmos_products.sh b/scripts/exglobal_atmos_products.sh index fe45d89f5b4..6581a2b6b4d 100755 --- a/scripts/exglobal_atmos_products.sh +++ b/scripts/exglobal_atmos_products.sh @@ -1,16 +1,7 @@ #! /usr/bin/env bash -# Scripts used -INTERP_ATMOS_MASTERSH=${INTERP_ATMOS_MASTERSH:-"${USHgfs}/interp_atmos_master.sh"} -INTERP_ATMOS_SFLUXSH=${INTERP_ATMOS_SFLUXSH:-"${USHgfs}/interp_atmos_sflux.sh"} - # Variables used in this job -downset=${downset:-1} # No. of groups of pressure grib2 products to create -ntasks_atmos_products=${ntasks_atmos_products:-8} # no. of processors available to process each group - -# WGNE related options -WGNE=${WGNE:-NO} # Create WGNE products -FHMAX_WGNE=${FHMAX_WGNE:-0} # WGNE products are created for first FHMAX_WGNE forecast hours (except 0) +#ntasks_atmos_products=${ntasks_atmos_products:-8} # no. of processors available to process each group cd "${DATA}" || exit 1 @@ -41,19 +32,19 @@ grid_string="0p25" if [[ "${PGBS:-}" == "YES" ]]; then grid_string="${grid_string}:0p50:1p00" else - echo "Supplemental product generation is disable for fhr = ${fhr3}" + echo "INFO: Supplemental product generation is disabled for fhr = ${fhr3}" PGBS="NO" # Can't generate supplemental products if PGBS is not YES fi # Also transform the ${grid_string} into an array for processing IFS=':' read -ra grids <<< "${grid_string}" -# Files needed by ${INTERP_ATMOS_MASTERSH} +# Files needed by ${USHgfs}/interp_atmos_master.sh MASTER_FILE="${COMIN_ATMOS_MASTER}/${PREFIX}master.${fhr3}.grib2" nset=1 -while [[ ${nset} -le ${downset} ]]; do +while [[ ${nset} -le ${downset:-1} ]]; do - echo "Begin processing nset = ${nset}" + echo "INFO: Begin processing nset = ${nset}" # Each set represents a group of files if [[ ${nset} == 1 ]]; then @@ -83,7 +74,7 @@ while [[ ${nset} -le ${downset} ]]; do ncount=$(${WGRIB2} "${tmpfile}" | wc -l) if [[ ${nproc} -gt ${ncount} ]]; then echo "WARNING: Total no. of available processors '${nproc}' exceeds no. of records '${ncount}' in ${tmpfile}" - echo "Reduce nproc to ${ncount} (or less) to not waste resources" + echo "WARNING: Reduce nproc to ${ncount} (or less) to not waste resources" fi inv=$(( ncount / nproc )) rm -f "${DATA}/cmdfile" @@ -120,7 +111,7 @@ while [[ ${nset} -le ${downset} ]]; do fi input_file="${tmpfile}_${iproc}" output_file_prefix="pgb2${grp}file_${fhr3}_${iproc}" - echo "${INTERP_ATMOS_MASTERSH} ${input_file} ${output_file_prefix} ${grid_string}" >> "${DATA}/cmdfile" + echo "${USHgfs}/interp_atmos_master.sh ${input_file} ${output_file_prefix} ${grid_string}" >> "${DATA}/cmdfile" # if at final record and have not reached the final processor then write echo's to # cmdfile for remaining processors @@ -145,7 +136,7 @@ while [[ ${nset} -le ${downset} ]]; do # Concatenate grib files from each processor into a single one # and clean-up as you go - echo "Concatenating processor-specific grib2 files into a single product file" + echo "INFO: Concatenating processor-specific grib2 files into a single product file" iproc=1 while [[ ${iproc} -le ${nproc} ]]; do for grid in "${grids[@]}"; do @@ -159,12 +150,13 @@ while [[ ${nset} -le ${downset} ]]; do # Move to COM and index the product grib files for grid in "${grids[@]}"; do + ${WGRIB2} -s "pgb2${grp}file_${fhr3}_${grid}" > "pgb2${grp}file_${fhr3}_${grid}.idx" prod_dir="COMOUT_ATMOS_GRIB_${grid}" - cpfs "pgb2${grp}file_${fhr3}_${grid}" "${!prod_dir}/${PREFIX}pres_${grp}.${grid}.${fhr3}.grib2" - ${WGRIB2} -s "pgb2${grp}file_${fhr3}_${grid}" > "${!prod_dir}/${PREFIX}pres_${grp}.${grid}.${fhr3}.grib2.idx" + cpfs "pgb2${grp}file_${fhr3}_${grid}" "${!prod_dir}/${PREFIX}pres_${grp}.${grid}.${fhr3}.grib2" + cpfs "pgb2${grp}file_${fhr3}_${grid}.idx" "${!prod_dir}/${PREFIX}pres_${grp}.${grid}.${fhr3}.grib2.idx" done - echo "Finished processing nset = ${nset}" + echo "INFO: Finished processing nset = ${nset}" nset=$(( nset + 1 )) done # while [[ ${nset} -le ${downset} ]]; do @@ -182,11 +174,11 @@ fi # move to COM and index it if [[ "${FLXGF:-}" == "YES" ]]; then - # Files needed by ${INTERP_ATMOS_SFLUXSH} + # Files needed by ${USHgfs}/interp_atmos_sflux.sh input_file="${FLUX_FILE}" output_file_prefix="sflux_${fhr3}" grid_string="1p00" - "${INTERP_ATMOS_SFLUXSH}" "${input_file}" "${output_file_prefix}" "${grid_string}" && true + "${USHgfs}/interp_atmos_sflux.sh" "${input_file}" "${output_file_prefix}" "${grid_string}" && true export err=$? if [[ ${err} -ne 0 ]]; then err_exit "Unable to interpolate the surface flux grib2 files!" @@ -195,18 +187,21 @@ if [[ "${FLXGF:-}" == "YES" ]]; then # Move to COM and index the product sflux file IFS=':' read -ra grids <<< "${grid_string}" for grid in "${grids[@]}"; do + ${WGRIB2} -s "sflux_${fhr3}_${grid}" > "sflux_${fhr3}_${grid}.idx" prod_dir="COMOUT_ATMOS_GRIB_${grid}" - cpfs "sflux_${fhr3}_${grid}" "${!prod_dir}/${PREFIX}flux.${grid}.${fhr3}.grib2" - ${WGRIB2} -s "sflux_${fhr3}_${grid}" > "${!prod_dir}/${PREFIX}flux.${grid}.${fhr3}.grib2.idx" + cpfs "sflux_${fhr3}_${grid}" "${!prod_dir}/${PREFIX}flux.${grid}.${fhr3}.grib2" + cpfs "sflux_${fhr3}_${grid}.idx" "${!prod_dir}/${PREFIX}flux.${grid}.${fhr3}.grib2.idx" done fi # Section creating 0.25 degree WGNE products for nset=1, and fhr <= FHMAX_WGNE if [[ "${WGNE:-}" == "YES" ]]; then grp="a" - if [[ ${FORECAST_HOUR} -gt 0 && ${FORECAST_HOUR} -le ${FHMAX_WGNE} ]]; then + if [[ ${FORECAST_HOUR} -gt 0 && ${FORECAST_HOUR} -le ${FHMAX_WGNE:-0} ]]; then # 598 is the message number for APCP in GFSv17 (it was 597 in GFSv16) - ${WGRIB2} "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}pres_${grp}.0p25.${fhr3}.grib2" -d "${APCP_MSG:-598}" -grib "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}.grib2" + ${WGRIB2} "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}pres_${grp}.0p25.${fhr3}.grib2" \ + -d "${APCP_MSG:-598}" \ + -grib "${COMOUT_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}.grib2" fi fi From 7d9fccf4d20ba649a17775cbda34fc39986b14d5 Mon Sep 17 00:00:00 2001 From: Rahul Mahajan Date: Wed, 29 Oct 2025 14:06:56 -0400 Subject: [PATCH 3/9] fix shellnorm found errors --- scripts/exglobal_atmos_products.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/exglobal_atmos_products.sh b/scripts/exglobal_atmos_products.sh index 6581a2b6b4d..2aec7efaf19 100755 --- a/scripts/exglobal_atmos_products.sh +++ b/scripts/exglobal_atmos_products.sh @@ -10,10 +10,12 @@ cd "${DATA}" || exit 1 if [[ ${FORECAST_HOUR} -le 0 ]]; then if [[ ${FORECAST_HOUR} -lt 0 ]]; then fhr3="analysis" + # shellcheck disable=SC2034 # paramlista is used later indirectly paramlista="${paramlista_anl}" FLXGF="NO" elif [[ ${FORECAST_HOUR} == 0 ]]; then fhr3=$(printf "f%03d" "${FORECAST_HOUR}") + # shellcheck disable=SC2034 # paramlista is used later indirectly paramlista="${paramlista_f000}" fi PGBS="YES" @@ -58,7 +60,7 @@ while [[ ${nset} -le ${downset:-1} ]]; do tmpfile="tmpfile${grp}_${fhr3}" paramlist="paramlist${grp}" - parmfile=${!paramlist} + parmfile="${!paramlist}" # shellcheck disable=SC2312 ${WGRIB2} "${MASTER_FILE}" | grep -F -f "${parmfile}" | ${WGRIB2} -i -grib "${tmpfile}" "${MASTER_FILE}" && true From a0b0b08b5125b72e2cc2c0d797e657c877106456 Mon Sep 17 00:00:00 2001 From: Rahul Mahajan Date: Wed, 29 Oct 2025 14:11:04 -0400 Subject: [PATCH 4/9] remove commented out lines --- scripts/exglobal_atmos_products.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/scripts/exglobal_atmos_products.sh b/scripts/exglobal_atmos_products.sh index 2aec7efaf19..460a0520a0c 100755 --- a/scripts/exglobal_atmos_products.sh +++ b/scripts/exglobal_atmos_products.sh @@ -1,8 +1,5 @@ #! /usr/bin/env bash -# Variables used in this job -#ntasks_atmos_products=${ntasks_atmos_products:-8} # no. of processors available to process each group - cd "${DATA}" || exit 1 # Set paramlist files based on FORECAST_HOUR (-1, 0, 3, 6, etc.) From 91207140ae1f0d3cc668ba2260cfbe8dfda44b49 Mon Sep 17 00:00:00 2001 From: Rahul Mahajan Date: Wed, 29 Oct 2025 14:22:42 -0400 Subject: [PATCH 5/9] include pres_b files for archiving when RUN=gdas --- parm/archive/gdas.yaml.j2 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/parm/archive/gdas.yaml.j2 b/parm/archive/gdas.yaml.j2 index 7163237c9b6..abf4fe5bb57 100644 --- a/parm/archive/gdas.yaml.j2 +++ b/parm/archive/gdas.yaml.j2 @@ -46,6 +46,10 @@ gdas: - "{{ COMIN_ATMOS_GRIB_0p25 | relpath(ROTDIR) }}/{{ head }}pres_a.0p25.analysis.grib2.idx" - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_a.1p00.analysis.grib2" - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_a.1p00.analysis.grib2.idx" + - "{{ COMIN_ATMOS_GRIB_0p25 | relpath(ROTDIR) }}/{{ head }}pres_b.0p25.analysis.grib2" + - "{{ COMIN_ATMOS_GRIB_0p25 | relpath(ROTDIR) }}/{{ head }}pres_b.0p25.analysis.grib2.idx" + - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_b.1p00.analysis.grib2" + - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_b.1p00.analysis.grib2.idx" # Analysis netCDF (raw) data - "{{ COMIN_ATMOS_ANALYSIS | relpath(ROTDIR) }}/{{ head }}analysis.atm.a006.nc" @@ -145,6 +149,10 @@ gdas: - "{{ COMIN_ATMOS_GRIB_0p25 | relpath(ROTDIR) }}/{{ head }}pres_a.0p25.f{{ fhr3 }}.grib2.idx" - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_a.1p00.f{{ fhr3 }}.grib2" - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_a.1p00.f{{ fhr3 }}.grib2.idx" + - "{{ COMIN_ATMOS_GRIB_0p25 | relpath(ROTDIR) }}/{{ head }}pres_b.0p25.f{{ fhr3 }}.grib2" + - "{{ COMIN_ATMOS_GRIB_0p25 | relpath(ROTDIR) }}/{{ head }}pres_b.0p25.f{{ fhr3 }}.grib2.idx" + - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_b.1p00.f{{ fhr3 }}.grib2" + - "{{ COMIN_ATMOS_GRIB_1p00 | relpath(ROTDIR) }}/{{ head }}pres_b.1p00.f{{ fhr3 }}.grib2.idx" # Forecast GRIB2 fluxes - "{{ COMIN_ATMOS_MASTER | relpath(ROTDIR) }}/{{ head }}sflux.f{{ fhr3 }}.grib2" - "{{ COMIN_ATMOS_MASTER | relpath(ROTDIR) }}/{{ head }}sflux.f{{ fhr3 }}.grib2.idx" From 6885e6af1a347660eb910b696cffc5159f1a3400 Mon Sep 17 00:00:00 2001 From: Rahul Mahajan Date: Wed, 29 Oct 2025 14:31:16 -0400 Subject: [PATCH 6/9] update gefs and gcafs configs --- dev/parm/config/gcafs/config.atmos_products | 8 +------- dev/parm/config/gefs/config.atmos_products | 9 ++------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/dev/parm/config/gcafs/config.atmos_products b/dev/parm/config/gcafs/config.atmos_products index 02b5acbaa5e..54f4e16a277 100644 --- a/dev/parm/config/gcafs/config.atmos_products +++ b/dev/parm/config/gcafs/config.atmos_products @@ -6,15 +6,11 @@ echo "BEGIN: config.atmos_products" # Get task specific resources -. "${EXPDIR}/config.resources" atmos_products +source "${EXPDIR}/config.resources" atmos_products ## Maximum number of rocoto tasks per member export MAX_TASKS=25 -# Scripts used by this job -export INTERP_ATMOS_MASTERSH="${USHgfs}/interp_atmos_master.sh" -export INTERP_ATMOS_SFLUXSH="${USHgfs}/interp_atmos_sflux.sh" - if [[ "${RUN:-}" == "gcdas" ]]; then export downset=1 export FHOUT_PGBS=${FHOUT:-1} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg @@ -29,8 +25,6 @@ elif [[ "${RUN:-}" == "gcafs" ]]; then export FHMAX_WGNE=180 fi -export APCP_MSG="597" # Message number for APCP in GFSv16. Look for TODO in exglobal_atmos_products.sh - # paramlist files for the different forecast hours and downsets export paramlista="${PARMgfs}/product/gfs.fFFF.paramlist.a.txt" export paramlista_anl="${PARMgfs}/product/gfs.anl.paramlist.a.txt" diff --git a/dev/parm/config/gefs/config.atmos_products b/dev/parm/config/gefs/config.atmos_products index 11c144636de..edc38f389c1 100644 --- a/dev/parm/config/gefs/config.atmos_products +++ b/dev/parm/config/gefs/config.atmos_products @@ -6,17 +6,11 @@ echo "BEGIN: config.atmos_products" # Get task specific resources -. "${EXPDIR}/config.resources" atmos_products +source "${EXPDIR}/config.resources" atmos_products # Maximum number of rocoto tasks per member export MAX_TASKS=25 -# Scripts used by this job -export INTERP_ATMOS_MASTERSH="${USHgfs}/interp_atmos_master.sh" -export INTERP_ATMOS_SFLUXSH="${USHgfs}/interp_atmos_sflux.sh" - -export downset=2 - if [[ "${FHMAX_HF_GFS:-0}" == "0" ]]; then export FHOUT_PGBS=${FHOUT_GFS:-3} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg else @@ -25,6 +19,7 @@ fi export FLXGF="NO" # Create interpolated sflux.1p00 file # paramlist files for the different forecast hours and downsets +export downset=2 export paramlista="${PARMgfs}/product/${NET}.0p25.fFFF.paramlist.a.txt" export paramlista_anl="${PARMgfs}/product/${NET}.0p25.anl.paramlist.a.txt" export paramlista_f000="${PARMgfs}/product/${NET}.0p25.f000.paramlist.a.txt" From 4b6da7c74d35dc8104f6f30205f05fdebdbc8984 Mon Sep 17 00:00:00 2001 From: Rahul Mahajan Date: Wed, 29 Oct 2025 15:32:30 -0400 Subject: [PATCH 7/9] remove gcafs from DBNalert, add warning if iproc did not produce a file with contents --- scripts/exglobal_atmos_products.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/exglobal_atmos_products.sh b/scripts/exglobal_atmos_products.sh index 460a0520a0c..cbebd256b51 100755 --- a/scripts/exglobal_atmos_products.sh +++ b/scripts/exglobal_atmos_products.sh @@ -139,8 +139,12 @@ while [[ ${nset} -le ${downset:-1} ]]; do iproc=1 while [[ ${iproc} -le ${nproc} ]]; do for grid in "${grids[@]}"; do - cat "pgb2${grp}file_${fhr3}_${iproc}_${grid}" >> "pgb2${grp}file_${fhr3}_${grid}" - rm -f "pgb2${grp}file_${fhr3}_${iproc}_${grid}" + if [[ ! -s "pgb2${grp}file_${fhr3}_${iproc}_${grid}" ]]; then + echo "WARNING: Expected grib2 file 'pgb2${grp}file_${fhr3}_${iproc}_${grid}' is missing or empty; skipping concatenation for this processor and grid" + else + cat "pgb2${grp}file_${fhr3}_${iproc}_${grid}" >> "pgb2${grp}file_${fhr3}_${grid}" + rm -f "pgb2${grp}file_${fhr3}_${iproc}_${grid}" + fi done # There is no further use of the processor specific tmpfile; delete it rm -f "${tmpfile}_${iproc}" @@ -257,7 +261,7 @@ if [[ "${SENDDBN:-}" == "YES" ]]; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SGB_GB2_WIDX" "${job}" "${COMIN_ATMOS_MASTER}/${PREFIX}sflux.f${fhr3}.grib2.idx" fi ;; - gfs|gcafs) + gfs) "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_SF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}atm.${fhr3}.nc" if [[ ${fhr} -gt 0 && ${fhr} -le 84 || ${fhr} -eq 120 ]]; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_BF" "${job}" "${COMIN_ATMOS_HISTORY}/${PREFIX}sfc.${fhr3}.nc" From 5e93cefa9cf22e55f881fd0beb7756390ed4693f Mon Sep 17 00:00:00 2001 From: Rahul Mahajan Date: Wed, 29 Oct 2025 15:34:43 -0400 Subject: [PATCH 8/9] remove warning as it may be misleading if there are idle procs --- scripts/exglobal_atmos_products.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/exglobal_atmos_products.sh b/scripts/exglobal_atmos_products.sh index cbebd256b51..6c0ee4fc122 100755 --- a/scripts/exglobal_atmos_products.sh +++ b/scripts/exglobal_atmos_products.sh @@ -139,9 +139,7 @@ while [[ ${nset} -le ${downset:-1} ]]; do iproc=1 while [[ ${iproc} -le ${nproc} ]]; do for grid in "${grids[@]}"; do - if [[ ! -s "pgb2${grp}file_${fhr3}_${iproc}_${grid}" ]]; then - echo "WARNING: Expected grib2 file 'pgb2${grp}file_${fhr3}_${iproc}_${grid}' is missing or empty; skipping concatenation for this processor and grid" - else + if [[ -s "pgb2${grp}file_${fhr3}_${iproc}_${grid}" ]]; then cat "pgb2${grp}file_${fhr3}_${iproc}_${grid}" >> "pgb2${grp}file_${fhr3}_${grid}" rm -f "pgb2${grp}file_${fhr3}_${iproc}_${grid}" fi From f63d0c3d7b531dc230fe70122a8d89547c9d45fe Mon Sep 17 00:00:00 2001 From: Rahul Mahajan Date: Thu, 30 Oct 2025 13:59:40 -0400 Subject: [PATCH 9/9] remove wafs related files --- parm/product/grib_wafs.grb2to1.list | 92 --------------------------- parm/product/grib_wafsgfs_intdsk | 92 --------------------------- parm/product/grib_wafsgfs_intdskf00 | 90 -------------------------- parm/product/wafs.namelist | 1 - parm/product/wafs_gfsmaster.grb1.list | 79 ----------------------- parm/product/wafs_gfsmaster.grb2.list | 79 ----------------------- 6 files changed, 433 deletions(-) delete mode 100644 parm/product/grib_wafs.grb2to1.list delete mode 100755 parm/product/grib_wafsgfs_intdsk delete mode 100755 parm/product/grib_wafsgfs_intdskf00 delete mode 100755 parm/product/wafs.namelist delete mode 100755 parm/product/wafs_gfsmaster.grb1.list delete mode 100644 parm/product/wafs_gfsmaster.grb2.list diff --git a/parm/product/grib_wafs.grb2to1.list b/parm/product/grib_wafs.grb2to1.list deleted file mode 100644 index 9b90e755f79..00000000000 --- a/parm/product/grib_wafs.grb2to1.list +++ /dev/null @@ -1,92 +0,0 @@ -:TMP:1000 mb: -:TMP:850 mb: -:TMP:700 mb: -:TMP:600 mb: -:TMP:500 mb: -:TMP:400 mb: -:TMP:300 mb: -:TMP:250 mb: -:TMP:200 mb: -:TMP:150 mb: -:TMP:100 mb: -:TMP:70 mb: -:UGRD:1000 mb: -:UGRD:850 mb: -:UGRD:700 mb: -:UGRD:600 mb: -:UGRD:500 mb: -:UGRD:400 mb: -:UGRD:300 mb: -:UGRD:250 mb: -:UGRD:200 mb: -:UGRD:150 mb: -:UGRD:100 mb: -:UGRD:70 mb: -:VGRD:1000 mb: -:VGRD:850 mb: -:VGRD:700 mb: -:VGRD:600 mb: -:VGRD:500 mb: -:VGRD:400 mb: -:VGRD:300 mb: -:VGRD:250 mb: -:VGRD:200 mb: -:VGRD:150 mb: -:VGRD:100 mb: -:VGRD:70 mb: -:HGT:1000 mb: -:HGT:850 mb: -:HGT:700 mb: -:HGT:600 mb: -:HGT:500 mb: -:HGT:400 mb: -:HGT:300 mb: -:HGT:250 mb: -:HGT:200 mb: -:HGT:150 mb: -:HGT:100 mb: -:HGT:70 mb: -:RH:1000 mb: -:RH:850 mb: -:RH:700 mb: -:RH:600 mb: -:RH:500 mb: -:RH:400 mb: -:RH:300 mb: -:RH:250 mb: -:RH:200 mb: -:RH:150 mb: -:RH:100 mb: -:VVEL:850 mb: -:VVEL:700 mb: -:VVEL:600 mb: -:VVEL:500 mb: -:VVEL:400 mb: -:VVEL:300 mb: -:VVEL:250 mb: -:VVEL:200 mb: -:VVEL:150 mb: -:VVEL:100 mb: -:TMP:tropopause: -:UGRD:tropopause: -:VGRD:tropopause: -:HGT:tropopause: -:PRES:tropopause -:TMP:max wind: -:UGRD:max wind: -:VGRD:max wind: -:HGT:max wind: -:PRES:max wind: -:TMP:30-0 mb above ground: -:UGRD:30-0 mb above ground: -:VGRD:30-0 mb above ground: -:RH:30-0 mb above ground: -:TMP:2 m above ground: -:RH:2 m above ground: -:UGRD:10 m above ground: -:VGRD:10 m above ground: -:APCP:surface: -:ACPCP:surface: -:PRES:surface: -:PRMSL:mean sea level: -:ABSV:500 mb: \ No newline at end of file diff --git a/parm/product/grib_wafsgfs_intdsk b/parm/product/grib_wafsgfs_intdsk deleted file mode 100755 index a1e873f8c81..00000000000 --- a/parm/product/grib_wafsgfs_intdsk +++ /dev/null @@ -1,92 +0,0 @@ -TMP:kpds5=11:kpds6=100:kpds7=850: -TMP:kpds5=11:kpds6=100:kpds7=700: -TMP:kpds5=11:kpds6=100:kpds7=600: -TMP:kpds5=11:kpds6=100:kpds7=500: -TMP:kpds5=11:kpds6=100:kpds7=400: -TMP:kpds5=11:kpds6=100:kpds7=300: -TMP:kpds5=11:kpds6=100:kpds7=250: -TMP:kpds5=11:kpds6=100:kpds7=200: -TMP:kpds5=11:kpds6=100:kpds7=150: -TMP:kpds5=11:kpds6=100:kpds7=100: -TMP:kpds5=11:kpds6=100:kpds7=70: -TMP:kpds5=11:kpds6=7:kpds7=0: -TMP:kpds5=11:kpds6=6:kpds7=0: -UGRD:kpds5=33:kpds6=100:kpds7=850: -UGRD:kpds5=33:kpds6=100:kpds7=700: -UGRD:kpds5=33:kpds6=100:kpds7=600: -UGRD:kpds5=33:kpds6=100:kpds7=500: -UGRD:kpds5=33:kpds6=100:kpds7=400: -UGRD:kpds5=33:kpds6=100:kpds7=300: -UGRD:kpds5=33:kpds6=100:kpds7=250: -UGRD:kpds5=33:kpds6=100:kpds7=200: -UGRD:kpds5=33:kpds6=100:kpds7=150: -UGRD:kpds5=33:kpds6=100:kpds7=100: -UGRD:kpds5=33:kpds6=100:kpds7=70: -UGRD:kpds5=33:kpds6=7:kpds7=0: -UGRD:kpds5=33:kpds6=6:kpds7=0: -VGRD:kpds5=34:kpds6=100:kpds7=850: -VGRD:kpds5=34:kpds6=100:kpds7=700: -VGRD:kpds5=34:kpds6=100:kpds7=600: -VGRD:kpds5=34:kpds6=100:kpds7=500: -VGRD:kpds5=34:kpds6=100:kpds7=400: -VGRD:kpds5=34:kpds6=100:kpds7=300: -VGRD:kpds5=34:kpds6=100:kpds7=250: -VGRD:kpds5=34:kpds6=100:kpds7=200: -VGRD:kpds5=34:kpds6=100:kpds7=150: -VGRD:kpds5=34:kpds6=100:kpds7=100: -VGRD:kpds5=34:kpds6=100:kpds7=70: -VGRD:kpds5=34:kpds6=7:kpds7=0: -VGRD:kpds5=34:kpds6=6:kpds7=0: -HGT:kpds5=7:kpds6=7:kpds7=0: -HGT:kpds5=7:kpds6=6:kpds7=0: -TMP:kpds5=11:kpds6=105:kpds7=2: -TMP:kpds5=11:kpds6=100:kpds7=1000: -UGRD:kpds5=33:kpds6=105:kpds7=10: -UGRD:kpds5=33:kpds6=100:kpds7=1000: -VGRD:kpds5=34:kpds6=105:kpds7=10: -VGRD:kpds5=34:kpds6=100:kpds7=1000: -PRES:kpds5=1:kpds6=1:kpds7=0: -PRMSL:kpds5=2:kpds6=102:kpds7=0: -APCP:kpds5=61:kpds6=1:kpds7=0: -ACPCP:kpds5=63:kpds6=1:kpds7=0: -HGT:kpds5=7:kpds6=100:kpds7=1000: -HGT:kpds5=7:kpds6=100:kpds7=850: -HGT:kpds5=7:kpds6=100:kpds7=700: -HGT:kpds5=7:kpds6=100:kpds7=600: -HGT:kpds5=7:kpds6=100:kpds7=500: -HGT:kpds5=7:kpds6=100:kpds7=400: -HGT:kpds5=7:kpds6=100:kpds7=300: -HGT:kpds5=7:kpds6=100:kpds7=250: -HGT:kpds5=7:kpds6=100:kpds7=200: -HGT:kpds5=7:kpds6=100:kpds7=150: -HGT:kpds5=7:kpds6=100:kpds7=100: -HGT:kpds5=7:kpds6=100:kpds7=70: -RH:kpds5=52:kpds6=105:kpds7=2: -RH:kpds5=52:kpds6=100:kpds7=1000: -RH:kpds5=52:kpds6=100:kpds7=850: -RH:kpds5=52:kpds6=100:kpds7=700: -RH:kpds5=52:kpds6=100:kpds7=600: -RH:kpds5=52:kpds6=100:kpds7=500: -RH:kpds5=52:kpds6=100:kpds7=400: -RH:kpds5=52:kpds6=100:kpds7=300: -RH:kpds5=52:kpds6=100:kpds7=250: -RH:kpds5=52:kpds6=100:kpds7=200: -RH:kpds5=52:kpds6=100:kpds7=150: -RH:kpds5=52:kpds6=100:kpds7=100: -VVEL:kpds5=39:kpds6=100:kpds7=850: -VVEL:kpds5=39:kpds6=100:kpds7=700: -VVEL:kpds5=39:kpds6=100:kpds7=600: -VVEL:kpds5=39:kpds6=100:kpds7=500: -VVEL:kpds5=39:kpds6=100:kpds7=400: -VVEL:kpds5=39:kpds6=100:kpds7=300: -VVEL:kpds5=39:kpds6=100:kpds7=250: -VVEL:kpds5=39:kpds6=100:kpds7=200: -VVEL:kpds5=39:kpds6=100:kpds7=150: -VVEL:kpds5=39:kpds6=100:kpds7=100: -UGRD:kpds5=33:kpds6=116:kpds7=7680: -VGRD:kpds5=34:kpds6=116:kpds7=7680: -TMP:kpds5=11:kpds6=116:kpds7=7680: -RH:kpds5=52:kpds6=116:kpds7=7680: -PRES:kpds5=1:kpds6=7:kpds7=0: -PRES:kpds5=1:kpds6=6:kpds7=0: -ABSV:kpds5=41:kpds6=100:kpds7=500: diff --git a/parm/product/grib_wafsgfs_intdskf00 b/parm/product/grib_wafsgfs_intdskf00 deleted file mode 100755 index fe0b85185fa..00000000000 --- a/parm/product/grib_wafsgfs_intdskf00 +++ /dev/null @@ -1,90 +0,0 @@ -TMP:kpds5=11:kpds6=100:kpds7=850: -TMP:kpds5=11:kpds6=100:kpds7=700: -TMP:kpds5=11:kpds6=100:kpds7=600: -TMP:kpds5=11:kpds6=100:kpds7=500: -TMP:kpds5=11:kpds6=100:kpds7=400: -TMP:kpds5=11:kpds6=100:kpds7=300: -TMP:kpds5=11:kpds6=100:kpds7=250: -TMP:kpds5=11:kpds6=100:kpds7=200: -TMP:kpds5=11:kpds6=100:kpds7=150: -TMP:kpds5=11:kpds6=100:kpds7=100: -TMP:kpds5=11:kpds6=100:kpds7=70: -TMP:kpds5=11:kpds6=7:kpds7=0: -TMP:kpds5=11:kpds6=6:kpds7=0: -UGRD:kpds5=33:kpds6=100:kpds7=850: -UGRD:kpds5=33:kpds6=100:kpds7=700: -UGRD:kpds5=33:kpds6=100:kpds7=600: -UGRD:kpds5=33:kpds6=100:kpds7=500: -UGRD:kpds5=33:kpds6=100:kpds7=400: -UGRD:kpds5=33:kpds6=100:kpds7=300: -UGRD:kpds5=33:kpds6=100:kpds7=250: -UGRD:kpds5=33:kpds6=100:kpds7=200: -UGRD:kpds5=33:kpds6=100:kpds7=150: -UGRD:kpds5=33:kpds6=100:kpds7=100: -UGRD:kpds5=33:kpds6=100:kpds7=70: -UGRD:kpds5=33:kpds6=7:kpds7=0: -UGRD:kpds5=33:kpds6=6:kpds7=0: -VGRD:kpds5=34:kpds6=100:kpds7=850: -VGRD:kpds5=34:kpds6=100:kpds7=700: -VGRD:kpds5=34:kpds6=100:kpds7=600: -VGRD:kpds5=34:kpds6=100:kpds7=500: -VGRD:kpds5=34:kpds6=100:kpds7=400: -VGRD:kpds5=34:kpds6=100:kpds7=300: -VGRD:kpds5=34:kpds6=100:kpds7=250: -VGRD:kpds5=34:kpds6=100:kpds7=200: -VGRD:kpds5=34:kpds6=100:kpds7=150: -VGRD:kpds5=34:kpds6=100:kpds7=100: -VGRD:kpds5=34:kpds6=100:kpds7=70: -VGRD:kpds5=34:kpds6=7:kpds7=0: -VGRD:kpds5=34:kpds6=6:kpds7=0: -HGT:kpds5=7:kpds6=7:kpds7=0: -HGT:kpds5=7:kpds6=6:kpds7=0: -TMP:kpds5=11:kpds6=105:kpds7=2: -TMP:kpds5=11:kpds6=100:kpds7=1000: -UGRD:kpds5=33:kpds6=105:kpds7=10: -UGRD:kpds5=33:kpds6=100:kpds7=1000: -VGRD:kpds5=34:kpds6=105:kpds7=10: -VGRD:kpds5=34:kpds6=100:kpds7=1000: -PRES:kpds5=1:kpds6=1:kpds7=0: -PRMSL:kpds5=2:kpds6=102:kpds7=0: -HGT:kpds5=7:kpds6=100:kpds7=1000: -HGT:kpds5=7:kpds6=100:kpds7=850: -HGT:kpds5=7:kpds6=100:kpds7=700: -HGT:kpds5=7:kpds6=100:kpds7=600: -HGT:kpds5=7:kpds6=100:kpds7=500: -HGT:kpds5=7:kpds6=100:kpds7=400: -HGT:kpds5=7:kpds6=100:kpds7=300: -HGT:kpds5=7:kpds6=100:kpds7=250: -HGT:kpds5=7:kpds6=100:kpds7=200: -HGT:kpds5=7:kpds6=100:kpds7=150: -HGT:kpds5=7:kpds6=100:kpds7=100: -HGT:kpds5=7:kpds6=100:kpds7=70: -RH:kpds5=52:kpds6=105:kpds7=2: -RH:kpds5=52:kpds6=100:kpds7=1000: -RH:kpds5=52:kpds6=100:kpds7=850: -RH:kpds5=52:kpds6=100:kpds7=700: -RH:kpds5=52:kpds6=100:kpds7=600: -RH:kpds5=52:kpds6=100:kpds7=500: -RH:kpds5=52:kpds6=100:kpds7=400: -RH:kpds5=52:kpds6=100:kpds7=300: -RH:kpds5=52:kpds6=100:kpds7=250: -RH:kpds5=52:kpds6=100:kpds7=200: -RH:kpds5=52:kpds6=100:kpds7=150: -RH:kpds5=52:kpds6=100:kpds7=100: -VVEL:kpds5=39:kpds6=100:kpds7=850: -VVEL:kpds5=39:kpds6=100:kpds7=700: -VVEL:kpds5=39:kpds6=100:kpds7=600: -VVEL:kpds5=39:kpds6=100:kpds7=500: -VVEL:kpds5=39:kpds6=100:kpds7=400: -VVEL:kpds5=39:kpds6=100:kpds7=300: -VVEL:kpds5=39:kpds6=100:kpds7=250: -VVEL:kpds5=39:kpds6=100:kpds7=200: -VVEL:kpds5=39:kpds6=100:kpds7=150: -VVEL:kpds5=39:kpds6=100:kpds7=100: -UGRD:kpds5=33:kpds6=116:kpds7=7680: -VGRD:kpds5=34:kpds6=116:kpds7=7680: -TMP:kpds5=11:kpds6=116:kpds7=7680: -RH:kpds5=52:kpds6=116:kpds7=7680: -PRES:kpds5=1:kpds6=7:kpds7=0: -PRES:kpds5=1:kpds6=6:kpds7=0: -ABSV:kpds5=41:kpds6=100:kpds7=500: diff --git a/parm/product/wafs.namelist b/parm/product/wafs.namelist deleted file mode 100755 index d8b5583be17..00000000000 --- a/parm/product/wafs.namelist +++ /dev/null @@ -1 +0,0 @@ - &NLCOPYGB IDS(33)=1,IDS(34)=1,/ diff --git a/parm/product/wafs_gfsmaster.grb1.list b/parm/product/wafs_gfsmaster.grb1.list deleted file mode 100755 index d22c4a69bd0..00000000000 --- a/parm/product/wafs_gfsmaster.grb1.list +++ /dev/null @@ -1,79 +0,0 @@ -UGRD:kpds5=33:kpds6=100:kpds7=100: -UGRD:kpds5=33:kpds6=100:kpds7=125 -UGRD:kpds5=33:kpds6=100:kpds7=150 -UGRD:kpds5=33:kpds6=100:kpds7=175 -UGRD:kpds5=33:kpds6=100:kpds7=200 -UGRD:kpds5=33:kpds6=100:kpds7=225 -UGRD:kpds5=33:kpds6=100:kpds7=250 -UGRD:kpds5=33:kpds6=100:kpds7=275 -UGRD:kpds5=33:kpds6=100:kpds7=300 -UGRD:kpds5=33:kpds6=100:kpds7=350 -UGRD:kpds5=33:kpds6=100:kpds7=400 -UGRD:kpds5=33:kpds6=100:kpds7=450 -UGRD:kpds5=33:kpds6=100:kpds7=500 -UGRD:kpds5=33:kpds6=100:kpds7=600 -UGRD:kpds5=33:kpds6=100:kpds7=700 -UGRD:kpds5=33:kpds6=100:kpds7=750 -UGRD:kpds5=33:kpds6=100:kpds7=850 -VGRD:kpds5=34:kpds6=100:kpds7=100: -VGRD:kpds5=34:kpds6=100:kpds7=125 -VGRD:kpds5=34:kpds6=100:kpds7=150 -VGRD:kpds5=34:kpds6=100:kpds7=175 -VGRD:kpds5=34:kpds6=100:kpds7=200 -VGRD:kpds5=34:kpds6=100:kpds7=225 -VGRD:kpds5=34:kpds6=100:kpds7=250 -VGRD:kpds5=34:kpds6=100:kpds7=275 -VGRD:kpds5=34:kpds6=100:kpds7=300 -VGRD:kpds5=34:kpds6=100:kpds7=350 -VGRD:kpds5=34:kpds6=100:kpds7=400 -VGRD:kpds5=34:kpds6=100:kpds7=450 -VGRD:kpds5=34:kpds6=100:kpds7=500 -VGRD:kpds5=34:kpds6=100:kpds7=600 -VGRD:kpds5=34:kpds6=100:kpds7=700 -VGRD:kpds5=34:kpds6=100:kpds7=750 -VGRD:kpds5=34:kpds6=100:kpds7=850 -TMP:kpds5=11:kpds6=100:kpds7=100: -TMP:kpds5=11:kpds6=100:kpds7=125 -TMP:kpds5=11:kpds6=100:kpds7=150 -TMP:kpds5=11:kpds6=100:kpds7=175 -TMP:kpds5=11:kpds6=100:kpds7=200 -TMP:kpds5=11:kpds6=100:kpds7=225 -TMP:kpds5=11:kpds6=100:kpds7=250 -TMP:kpds5=11:kpds6=100:kpds7=275 -TMP:kpds5=11:kpds6=100:kpds7=300 -TMP:kpds5=11:kpds6=100:kpds7=350 -TMP:kpds5=11:kpds6=100:kpds7=400 -TMP:kpds5=11:kpds6=100:kpds7=450 -TMP:kpds5=11:kpds6=100:kpds7=500 -TMP:kpds5=11:kpds6=100:kpds7=600 -TMP:kpds5=11:kpds6=100:kpds7=700 -TMP:kpds5=11:kpds6=100:kpds7=750 -TMP:kpds5=11:kpds6=100:kpds7=850 -HGT:kpds5=7:kpds6=100:kpds7=100: -HGT:kpds5=7:kpds6=100:kpds7=125 -HGT:kpds5=7:kpds6=100:kpds7=150 -HGT:kpds5=7:kpds6=100:kpds7=175 -HGT:kpds5=7:kpds6=100:kpds7=200 -HGT:kpds5=7:kpds6=100:kpds7=225 -HGT:kpds5=7:kpds6=100:kpds7=250 -HGT:kpds5=7:kpds6=100:kpds7=275 -HGT:kpds5=7:kpds6=100:kpds7=300 -HGT:kpds5=7:kpds6=100:kpds7=350 -HGT:kpds5=7:kpds6=100:kpds7=400 -HGT:kpds5=7:kpds6=100:kpds7=450 -HGT:kpds5=7:kpds6=100:kpds7=500 -HGT:kpds5=7:kpds6=100:kpds7=600 -HGT:kpds5=7:kpds6=100:kpds7=700 -HGT:kpds5=7:kpds6=100:kpds7=750 -HGT:kpds5=7:kpds6=100:kpds7=850 -RH:kpds5=52:kpds6=100:kpds7=450 -RH:kpds5=52:kpds6=100:kpds7=500 -RH:kpds5=52:kpds6=100:kpds7=600 -RH:kpds5=52:kpds6=100:kpds7=700 -RH:kpds5=52:kpds6=100:kpds7=750 -RH:kpds5=52:kpds6=100:kpds7=850 -ICAHT:kpds5=5:kpds6=7:kpds7=0 -TMP:kpds5=11:kpds6=7:kpds7=0 -UGRD:kpds5=33:kpds6=6:kpds7=0 -VGRD:kpds5=34:kpds6=6:kpds7=0 -ICAHT:kpds5=5:kpds6=6:kpds7=0 diff --git a/parm/product/wafs_gfsmaster.grb2.list b/parm/product/wafs_gfsmaster.grb2.list deleted file mode 100644 index 2f04a581fb2..00000000000 --- a/parm/product/wafs_gfsmaster.grb2.list +++ /dev/null @@ -1,79 +0,0 @@ -UGRD:100 mb: -UGRD:125 mb -UGRD:150 mb -UGRD:175 mb -UGRD:200 mb -UGRD:225 mb -UGRD:250 mb -UGRD:275 mb -UGRD:300 mb -UGRD:350 mb -UGRD:400 mb -UGRD:450 mb -UGRD:500 mb -UGRD:600 mb -UGRD:700 mb -UGRD:750 mb -UGRD:850 mb -VGRD:100 mb: -VGRD:125 mb -VGRD:150 mb -VGRD:175 mb -VGRD:200 mb -VGRD:225 mb -VGRD:250 mb -VGRD:275 mb -VGRD:300 mb -VGRD:350 mb -VGRD:400 mb -VGRD:450 mb -VGRD:500 mb -VGRD:600 mb -VGRD:700 mb -VGRD:750 mb -VGRD:850 mb -TMP:100 mb: -TMP:125 mb -TMP:150 mb -TMP:175 mb -TMP:200 mb -TMP:225 mb -TMP:250 mb -TMP:275 mb -TMP:300 mb -TMP:350 mb -TMP:400 mb -TMP:450 mb -TMP:500 mb -TMP:600 mb -TMP:700 mb -TMP:750 mb -TMP:850 mb -HGT:100 mb: -HGT:125 mb -HGT:150 mb -HGT:175 mb -HGT:200 mb -HGT:225 mb -HGT:250 mb -HGT:275 mb -HGT:300 mb -HGT:350 mb -HGT:400 mb -HGT:450 mb -HGT:500 mb -HGT:600 mb -HGT:700 mb -HGT:750 mb -HGT:850 mb -RH:450 mb: -RH:500 mb -RH:600 mb -RH:700 mb -RH:750 mb -RH:850 mb -ICAHT:tropopause -ICAHT:max wind -VGRD:max wind -UGRD:max wind -TMP:tropopause \ No newline at end of file