From 8f97726a4170d56dcaf6732ae141fae9aaebfd8d Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Fri, 28 Aug 2020 16:39:50 +0000 Subject: [PATCH 1/3] Add new downstream WAFS jobs --- Externals.cfg | 4 +- jobs/rocoto/wafs.sh | 41 +++++++++++++++++ jobs/rocoto/wafsblending.sh | 40 ++++++++++++++++ jobs/rocoto/wafsblending0p25.sh | 40 ++++++++++++++++ jobs/rocoto/wafsgcip.sh | 40 ++++++++++++++++ jobs/rocoto/wafsgrib2.sh | 40 ++++++++++++++++ jobs/rocoto/wafsgrib20p25.sh | 40 ++++++++++++++++ modulefiles/module_base.wcoss_dell_p3 | 3 ++ parm/config/config.base.emc.dyn | 7 +-- parm/config/config.base.nco.static | 1 + parm/config/config.post | 2 +- parm/config/config.resources | 43 +++++++++++++++++ parm/config/config.wafs | 15 ++++++ parm/config/config.wafsblending | 14 ++++++ parm/config/config.wafsblending0p25 | 16 +++++++ parm/config/config.wafsgcip | 15 ++++++ parm/config/config.wafsgrib2 | 15 ++++++ parm/config/config.wafsgrib20p25 | 16 +++++++ sorc/build_gfs_wafs.sh | 11 +---- sorc/checkout.sh | 4 +- sorc/link_fv3gfs.sh | 5 +- ush/rocoto/setup_workflow.py | 66 +++++++++++++++++++++++++++ 22 files changed, 460 insertions(+), 18 deletions(-) create mode 100755 jobs/rocoto/wafs.sh create mode 100755 jobs/rocoto/wafsblending.sh create mode 100755 jobs/rocoto/wafsblending0p25.sh create mode 100755 jobs/rocoto/wafsgcip.sh create mode 100755 jobs/rocoto/wafsgrib2.sh create mode 100755 jobs/rocoto/wafsgrib20p25.sh create mode 100755 parm/config/config.wafs create mode 100755 parm/config/config.wafsblending create mode 100755 parm/config/config.wafsblending0p25 create mode 100755 parm/config/config.wafsgcip create mode 100755 parm/config/config.wafsgrib2 create mode 100755 parm/config/config.wafsgrib20p25 diff --git a/Externals.cfg b/Externals.cfg index bf8392c149b..305fe8993be 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -22,7 +22,7 @@ protocol = git required = True [EMC_post] -tag = upp_gfsv16_release.v1.0.11 +tag = upp_gfsv16_release.v1.0.12 local_path = sorc/gfs_post.fd repo_url = https://github.com/NOAA-EMC/EMC_post.git protocol = git @@ -43,7 +43,7 @@ protocol = git required = True [EMC_gfs_wafs] -tag = gfs_wafs.v5.0.11 +tag = gfs_wafs.v6.0.1 local_path = sorc/gfs_wafs.fd repo_url = https://github.com/NOAA-EMC/EMC_gfs_wafs.git protocol = git diff --git a/jobs/rocoto/wafs.sh b/jobs/rocoto/wafs.sh new file mode 100755 index 00000000000..efb8983ed9f --- /dev/null +++ b/jobs/rocoto/wafs.sh @@ -0,0 +1,41 @@ +#!/bin/ksh -x + +############################################################### +echo +echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" +. $HOMEgfs/ush/load_fv3gfs_modules.sh +status=$? +[[ $status -ne 0 ]] && exit $status + +############################################################### +echo "=============== BEGIN TO SOURCE RELEVANT CONFIGS ===============" +configs="base wafs" +for config in $configs; do + . $EXPDIR/config.${config} + status=$? + [[ $status -ne 0 ]] && exit $status +done + +############################################################### + +export pid=${pid:-$$} +export jobid=${job}.${pid} +export DATAROOT="$RUNDIR/$CDATE/$CDUMP/wafs.$jobid" +[[ -d $DATAROOT ]] && rm -rf $DATAROOT +mkdir -p $DATAROOT + +export DATA="${DATAROOT}/$job" + +############################################################### +echo +echo "=============== START TO RUN WAFS ===============" + +# Execute the JJOB +$HOMEgfs/jobs/JGFS_WAFS +status=$? +exit $status + +############################################################### +# Force Exit out cleanly +if [ ${KEEPDATA:-"NO"} = "NO" ] ; then rm -rf $DATAROOT ; fi +exit 0 diff --git a/jobs/rocoto/wafsblending.sh b/jobs/rocoto/wafsblending.sh new file mode 100755 index 00000000000..4283e137424 --- /dev/null +++ b/jobs/rocoto/wafsblending.sh @@ -0,0 +1,40 @@ +#!/bin/ksh -x + +############################################################### +echo +echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" +. $HOMEgfs/ush/load_fv3gfs_modules.sh +status=$? +[[ $status -ne 0 ]] && exit $status + +############################################################### +echo "=============== BEGIN TO SOURCE RELEVANT CONFIGS ===============" +configs="base wafsblending" +for config in $configs; do + . $EXPDIR/config.${config} + status=$? + [[ $status -ne 0 ]] && exit $status +done + +############################################################### + +export DATAROOT="$RUNDIR/$CDATE/$CDUMP/wafsblending" +[[ -d $DATAROOT ]] && rm -rf $DATAROOT +mkdir -p $DATAROOT + +export pid=${pid:-$$} +export jobid=${job}.${pid} +export DATA="${DATAROOT}/$job" + +############################################################### +echo +echo "=============== START TO RUN WAFSBLENDING ===============" +# Execute the JJOB +$HOMEgfs/jobs/JGFS_WAFS_BLENDING +status=$? +exit $status + +############################################################### +# Force Exit out cleanly +if [ ${KEEPDATA:-"NO"} = "NO" ] ; then rm -rf $DATAROOT ; fi +exit 0 diff --git a/jobs/rocoto/wafsblending0p25.sh b/jobs/rocoto/wafsblending0p25.sh new file mode 100755 index 00000000000..8aa97027a66 --- /dev/null +++ b/jobs/rocoto/wafsblending0p25.sh @@ -0,0 +1,40 @@ +#!/bin/ksh -x + +############################################################### +echo +echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" +. $HOMEgfs/ush/load_fv3gfs_modules.sh +status=$? +[[ $status -ne 0 ]] && exit $status + +############################################################### +echo "=============== BEGIN TO SOURCE RELEVANT CONFIGS ===============" +configs="base wafsblending0p25" +for config in $configs; do + . $EXPDIR/config.${config} + status=$? + [[ $status -ne 0 ]] && exit $status +done + +############################################################### + +export DATAROOT="$RUNDIR/$CDATE/$CDUMP/wafsblending0p25" +[[ -d $DATAROOT ]] && rm -rf $DATAROOT +mkdir -p $DATAROOT + +export pid=${pid:-$$} +export jobid=${job}.${pid} +export DATA="${DATAROOT}/$job" + +############################################################### +echo +echo "=============== START TO RUN WAFSBLENDING0P25 ===============" +# Execute the JJOB +$HOMEgfs/jobs/JGFS_WAFS_BLENDING_0P25 +status=$? +exit $status + +############################################################### +# Force Exit out cleanly +if [ ${KEEPDATA:-"NO"} = "NO" ] ; then rm -rf $DATAROOT ; fi +exit 0 diff --git a/jobs/rocoto/wafsgcip.sh b/jobs/rocoto/wafsgcip.sh new file mode 100755 index 00000000000..20ef381db85 --- /dev/null +++ b/jobs/rocoto/wafsgcip.sh @@ -0,0 +1,40 @@ +#!/bin/ksh -x + +############################################################### +echo +echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" +. $HOMEgfs/ush/load_fv3gfs_modules.sh +status=$? +[[ $status -ne 0 ]] && exit $status + +############################################################### +echo "=============== BEGIN TO SOURCE RELEVANT CONFIGS ===============" +configs="base wafsgcip" +for config in $configs; do + . $EXPDIR/config.${config} + status=$? + [[ $status -ne 0 ]] && exit $status +done + +############################################################### + +export DATAROOT="$RUNDIR/$CDATE/$CDUMP/wafsgcip" +[[ -d $DATAROOT ]] && rm -rf $DATAROOT +mkdir -p $DATAROOT + +export pid=${pid:-$$} +export jobid=${job}.${pid} +export DATA="${DATAROOT}/$job" + +############################################################### +echo +echo "=============== START TO RUN WAFSGCIP ===============" +# Execute the JJOB +$HOMEgfs/jobs/JGFS_WAFS_GCIP +status=$? +exit $status + +############################################################### +# Force Exit out cleanly +if [ ${KEEPDATA:-"NO"} = "NO" ] ; then rm -rf $DATAROOT ; fi +exit 0 diff --git a/jobs/rocoto/wafsgrib2.sh b/jobs/rocoto/wafsgrib2.sh new file mode 100755 index 00000000000..5ac8786b15d --- /dev/null +++ b/jobs/rocoto/wafsgrib2.sh @@ -0,0 +1,40 @@ +#!/bin/ksh -x + +############################################################### +echo +echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" +. $HOMEgfs/ush/load_fv3gfs_modules.sh +status=$? +[[ $status -ne 0 ]] && exit $status + +############################################################### +echo "=============== BEGIN TO SOURCE RELEVANT CONFIGS ===============" +configs="base wafsgrib2" +for config in $configs; do + . $EXPDIR/config.${config} + status=$? + [[ $status -ne 0 ]] && exit $status +done + +############################################################### + +export DATAROOT="$RUNDIR/$CDATE/$CDUMP/wafsgrib2" +[[ -d $DATAROOT ]] && rm -rf $DATAROOT +mkdir -p $DATAROOT + +export pid=${pid:-$$} +export jobid=${job}.${pid} +export DATA="${DATAROOT}/$job" + +############################################################### +echo +echo "=============== START TO RUN WAFSGRIB2 ===============" +# Execute the JJOB +$HOMEgfs/jobs/JGFS_WAFS_GRIB2 +status=$? +exit $status + +############################################################### +# Force Exit out cleanly +if [ ${KEEPDATA:-"NO"} = "NO" ] ; then rm -rf $DATAROOT ; fi +exit 0 diff --git a/jobs/rocoto/wafsgrib20p25.sh b/jobs/rocoto/wafsgrib20p25.sh new file mode 100755 index 00000000000..5ba6cebdad7 --- /dev/null +++ b/jobs/rocoto/wafsgrib20p25.sh @@ -0,0 +1,40 @@ +#!/bin/ksh -x + +############################################################### +echo +echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ===============" +. $HOMEgfs/ush/load_fv3gfs_modules.sh +status=$? +[[ $status -ne 0 ]] && exit $status + +############################################################### +echo "=============== BEGIN TO SOURCE RELEVANT CONFIGS ===============" +configs="base wafsgrib20p25" +for config in $configs; do + . $EXPDIR/config.${config} + status=$? + [[ $status -ne 0 ]] && exit $status +done + +############################################################### + +export DATAROOT="$RUNDIR/$CDATE/$CDUMP/wafsgrib20p25" +[[ -d $DATAROOT ]] && rm -rf $DATAROOT +mkdir -p $DATAROOT + +export pid=${pid:-$$} +export jobid=${job}.${pid} +export DATA="${DATAROOT}/$job" + +############################################################### +echo +echo "=============== START TO RUN WAFSGRIB20p25 ===============" +# Execute the JJOB +$HOMEgfs/jobs/JGFS_WAFS_GRIB2_0P25 +status=$? +exit $status + +############################################################### +# Force Exit out cleanly +if [ ${KEEPDATA:-"NO"} = "NO" ] ; then rm -rf $DATAROOT ; fi +exit 0 diff --git a/modulefiles/module_base.wcoss_dell_p3 b/modulefiles/module_base.wcoss_dell_p3 index 76de5f0622e..25d84a4ed25 100644 --- a/modulefiles/module_base.wcoss_dell_p3 +++ b/modulefiles/module_base.wcoss_dell_p3 @@ -28,6 +28,9 @@ module load esmf/8.0.1bs08 module use -a /gpfs/dell1/nco/ops/nwprod/modulefiles/ module load gempak/7.3.1 +# Load dumpjb utility +module load dumpjb/5.0.3 + # python module load python/3.6.3 diff --git a/parm/config/config.base.emc.dyn b/parm/config/config.base.emc.dyn index a185ed2ee94..120bccb240d 100755 --- a/parm/config/config.base.emc.dyn +++ b/parm/config/config.base.emc.dyn @@ -45,9 +45,10 @@ export NOSCRUB="@NOSCRUB@" export BASE_GIT="@BASE_GIT@" # Toggle to turn on/off GFS downstream processing. -export DO_BUFRSND="YES" -export DO_GEMPAK="NO" -export DO_AWIPS="NO" +export DO_BUFRSND="YES" # BUFR sounding products +export DO_GEMPAK="NO" # GEMPAK products +export DO_AWIPS="NO" # AWIPS products +export WAFSF="NO" # WAFS products # NO for retrospective parallel; YES for real-time parallel # arch.sh uses REALTIME for MOS. Need to set REALTIME=YES diff --git a/parm/config/config.base.nco.static b/parm/config/config.base.nco.static index b014c7373bc..5f45860d04c 100755 --- a/parm/config/config.base.nco.static +++ b/parm/config/config.base.nco.static @@ -56,6 +56,7 @@ export RTMFIX=$CRTM_FIX export DO_BUFRSND="YES" export DO_GEMPAK="YES" export DO_AWIPS="YES" +export WAFSF="YES" # WAFS products # NO for retrospective parallel; YES for real-time parallel export REALTIME="YES" diff --git a/parm/config/config.post b/parm/config/config.post index 5d7b6a88b39..b4b7b2f08ad 100755 --- a/parm/config/config.post +++ b/parm/config/config.post @@ -27,7 +27,7 @@ export GFSDWNSH="$HOMEpost/ush/fv3gfs_dwn_nems.sh" export POSTGPSH="$HOMEpost/ush/gfs_nceppost.sh" export POSTGPEXEC="$HOMEpost/exec/gfs_ncep_post" export GOESF=YES # goes image -export WAFSF=NO # WAFS products +export WAFSF=${WAFSF:-NO} # WAFS products export FLXF=YES # grib2 flux file written by post export PGB1F=YES if [ $RUN_ENVIR = "nco" ]; then diff --git a/parm/config/config.resources b/parm/config/config.resources index 9af606b5e20..97f2255ffb1 100755 --- a/parm/config/config.resources +++ b/parm/config/config.resources @@ -13,6 +13,7 @@ if [ $# -ne 1 ]; then echo "waveinit waveprep wavepostsbs wavegempaksbs waveawipssbs" echo "wavepost waveawips wavestat" echo "postsnd awips gempak" + echo "wafs wafsgrib2 wafsblending wafsgrib20p25 wafsblending0p25 wafsgcip" exit 1 fi @@ -170,6 +171,48 @@ elif [ $step = "post" ]; then if [[ "$machine" = "WCOSS_DELL_P3" ]]; then export npe_node_post=14 ; fi if [[ "$machine" == "WCOSS_C" ]]; then export memory_post="3072M"; fi +elif [ $step = "wafs" ]; then + + export wtime_wafs="00:30:00" + export npe_wafs=1 + export npe_node_wafs=1 + export nth_wafs=1 + +elif [ $step = "wafsgcip" ]; then + + export wtime_wafsgcip="00:30:00" + export npe_wafsgcip=2 + export npe_node_wafsgcip=1 + export nth_wafsgcip=1 + +elif [ $step = "wafsgrib2" ]; then + + export wtime_wafsgrib2="00:30:00" + export npe_wafsgrib2=1 + export npe_node_wafsgrib2=1 + export nth_wafsgrib2=1 + +elif [ $step = "wafsblending" ]; then + + export wtime_wafsblending="00:30:00" + export npe_wafsblending=1 + export npe_node_wafsblending=1 + export nth_wafsblending=1 + +elif [ $step = "wafsgrib20p25" ]; then + + export wtime_wafsgrib20p25="00:30:00" + export npe_wafsgrib20p25=1 + export npe_node_wafsgrib20p25=1 + export nth_wafsgrib20p25=1 + +elif [ $step = "wafsblending0p25" ]; then + + export wtime_wafsblending0p25="00:30:00" + export npe_wafsblending0p25=1 + export npe_node_wafsblending0p25=1 + export nth_wafsblending0p25=1 + elif [ $step = "vrfy" ]; then export wtime_vrfy="03:00:00" diff --git a/parm/config/config.wafs b/parm/config/config.wafs new file mode 100755 index 00000000000..bb071626209 --- /dev/null +++ b/parm/config/config.wafs @@ -0,0 +1,15 @@ +#!/bin/ksh -x + +########## config.wafs ########## + +echo "BEGIN: config.wafs" + +# Get task specific resources +. $EXPDIR/config.resources wafs + +export fcsthrs=36 +export COMIN=$COMINatmos +export COMOUT=$COMOUTatmos +export SENDCOM="YES" + +echo "END: config.wafs" diff --git a/parm/config/config.wafsblending b/parm/config/config.wafsblending new file mode 100755 index 00000000000..dfd7d1715eb --- /dev/null +++ b/parm/config/config.wafsblending @@ -0,0 +1,14 @@ +#!/bin/ksh -x + +########## config.wafsblending ########## + +echo "BEGIN: config.wafsblending" + +# Get task specific resources +. $EXPDIR/config.resources wafsblending + +export COMIN=$COMINatmos +export COMOUT=$COMOUTatmos +export SENDCOM="YES" + +echo "END: config.wafsblending" diff --git a/parm/config/config.wafsblending0p25 b/parm/config/config.wafsblending0p25 new file mode 100755 index 00000000000..2572ecdbd41 --- /dev/null +++ b/parm/config/config.wafsblending0p25 @@ -0,0 +1,16 @@ +#!/bin/ksh -x + +########## config.wafsblending0p25 ########## + +echo "BEGIN: config.wafsblending0p25" + +# Get task specific resources +. $EXPDIR/config.resources wafsblending0p25 + +export COMIN=$COMINatmos +export COMOUT=$COMOUTatmos +export SENDCOM="YES" + +export HOURLY="NO" + +echo "END: config.wafsblending0p25" diff --git a/parm/config/config.wafsgcip b/parm/config/config.wafsgcip new file mode 100755 index 00000000000..5c166a541b6 --- /dev/null +++ b/parm/config/config.wafsgcip @@ -0,0 +1,15 @@ +#!/bin/ksh -x + +########## config.wafsgcip ########## + +echo "BEGIN: config.wafsgcip" + +# Get task specific resources +. $EXPDIR/config.resources wafsgcip + +export COMIN=$COMINatmos +export COMINgfs=$COMIN +export COMOUT=$COMOUTatmos +export SENDCOM="YES" + +echo "END: config.wafsgcip" diff --git a/parm/config/config.wafsgrib2 b/parm/config/config.wafsgrib2 new file mode 100755 index 00000000000..27b137cd8ce --- /dev/null +++ b/parm/config/config.wafsgrib2 @@ -0,0 +1,15 @@ +#!/bin/ksh -x + +########## config.wafsgrib2 ########## +# Post specific + +echo "BEGIN: config.wafsgrib2" + +# Get task specific resources +. $EXPDIR/config.resources wafsgrib2 + +export COMIN=$COMINatmos +export COMOUT=$COMOUTatmos +export SENDCOM="YES" + +echo "END: config.wafsgrib2" diff --git a/parm/config/config.wafsgrib20p25 b/parm/config/config.wafsgrib20p25 new file mode 100755 index 00000000000..a55d6908d1d --- /dev/null +++ b/parm/config/config.wafsgrib20p25 @@ -0,0 +1,16 @@ +#!/bin/ksh -x + +########## config.wafsgrib20p25 ########## + +echo "BEGIN: config.wafsgrib20p25" + +# Get task specific resources +. $EXPDIR/config.resources wafsgrib20p25 + +export COMIN=$COMINatmos +export COMOUT=$COMOUTatmos +export SENDCOM="YES" + +export HOURLY="NO" + +echo "END: config.wafsgrib20p25" diff --git a/sorc/build_gfs_wafs.sh b/sorc/build_gfs_wafs.sh index 96c7669b794..ceff4eae670 100755 --- a/sorc/build_gfs_wafs.sh +++ b/sorc/build_gfs_wafs.sh @@ -16,14 +16,7 @@ if [ ! -d "../exec" ]; then mkdir ../exec fi -if [ $target = wcoss_dell_p3 ]; then - cd gfs_wafs.fd/sorc - sh build_wafs_dell.sh -elif [ $target = hera ]; then - cd gfs_wafs.fd/sorc - sh build_wafs_hera.sh -else - echo "This version of wafs only works on Dell and Hera. exit" -fi +cd gfs_wafs.fd/sorc +sh build_wafs.sh exit diff --git a/sorc/checkout.sh b/sorc/checkout.sh index c188bd86d05..2b342426149 100755 --- a/sorc/checkout.sh +++ b/sorc/checkout.sh @@ -72,7 +72,7 @@ if [[ ! -d gfs_post.fd ]] ; then rm -f ${topdir}/checkout-gfs_post.log git clone https://github.com/NOAA-EMC/EMC_post.git gfs_post.fd >> ${topdir}/checkout-gfs_post.log 2>&1 cd gfs_post.fd - git checkout upp_gfsv16_release.v1.0.11 + git checkout upp_gfsv16_release.v1.0.12 ################################################################################ # checkout_gtg ## yes: The gtg code at NCAR private repository is available for ops. GFS only. @@ -95,7 +95,7 @@ if [[ ! -d gfs_wafs.fd ]] ; then rm -f ${topdir}/checkout-gfs_wafs.log git clone --recursive https://github.com/NOAA-EMC/EMC_gfs_wafs.git gfs_wafs.fd >> ${topdir}/checkout-gfs_wafs.log 2>&1 cd gfs_wafs.fd - git checkout gfs_wafs.v5.0.11 + git checkout gfs_wafs.v6.0.1 cd ${topdir} else echo 'Skip. Directory gfs_wafs.fd already exists.' diff --git a/sorc/link_fv3gfs.sh b/sorc/link_fv3gfs.sh index 7e41a8eddf9..6a0c1b987ff 100755 --- a/sorc/link_fv3gfs.sh +++ b/sorc/link_fv3gfs.sh @@ -205,7 +205,10 @@ fi $LINK ../sorc/gfs_post.fd/exec/ncep_post gfs_ncep_post if [ -d ${pwd}/gfs_wafs.fd ]; then - for wafsexe in wafs_awc_wafavn wafs_blending wafs_cnvgrib2 wafs_gcip wafs_makewafs wafs_setmissing; do + for wafsexe in \ + wafs_awc_wafavn wafs_blending wafs_blending_0p25 \ + wafs_cnvgrib2 wafs_gcip wafs_grib2_0p25 \ + wafs_makewafs wafs_setmissing; do [[ -s $wafsexe ]] && rm -f $wafsexe $LINK ../sorc/gfs_wafs.fd/exec/$wafsexe . done diff --git a/ush/rocoto/setup_workflow.py b/ush/rocoto/setup_workflow.py index 41efd882b81..3e38e9d70f4 100755 --- a/ush/rocoto/setup_workflow.py +++ b/ush/rocoto/setup_workflow.py @@ -45,6 +45,7 @@ def main(): gfs_steps = ['prep', 'anal', 'analdiag', 'analcalc', 'gldas', 'fcst', 'postsnd', 'post', 'vrfy', 'arch'] gfs_steps_gempak = ['gempak'] gfs_steps_awips = ['awips'] + gfs_steps_wafs = ['wafs', 'wafsgrib2', 'wafsblending', 'wafsgcip', 'wafsgrib20p25', 'wafsblending0p25'] #hyb_steps = ['eobs', 'eomg', 'eupd', 'ecen', 'efcs', 'epos', 'earc'] metp_steps = ['metp'] wav_steps = ['waveinit', 'waveprep', 'wavepostsbs'] @@ -60,6 +61,7 @@ def main(): steps = steps + metp_steps if _base.get('DO_METP', 'NO') == 'YES' else steps steps = steps + gfs_steps_gempak if _base.get('DO_GEMPAK', 'NO') == 'YES' else steps steps = steps + gfs_steps_awips if _base.get('DO_AWIPS', 'NO') == 'YES' else steps + steps = steps + gfs_steps_wafs if _base.get('WAFSF', 'NO') == 'YES' else steps steps = steps + wav_steps if _base.get('DO_WAVE', 'NO') == 'YES' else steps #steps = steps + wav_steps_gempak if _base.get('DO_GEMPAK', 'NO') == 'YES' else steps #steps = steps + wav_steps_awips if _base.get('DO_AWIPS', 'NO') == 'YES' else steps @@ -233,6 +235,7 @@ def get_gdasgfs_resources(dict_configs, cdump='gdas'): do_bufrsnd = base.get('DO_BUFRSND', 'NO').upper() do_gempak = base.get('DO_GEMPAK', 'NO').upper() do_awips = base.get('DO_AWIPS', 'NO').upper() + do_wafs = base.get('WAFSF', 'NO').upper() do_metp = base.get('DO_METP', 'NO').upper() do_gldas = base.get('DO_GLDAS', 'NO').upper() do_wave = base.get('DO_WAVE', 'NO').upper() @@ -263,6 +266,8 @@ def get_gdasgfs_resources(dict_configs, cdump='gdas'): # tasks += ['wavegempaksbs'] if cdump in ['gfs'] and do_awips in ['Y', 'YES']: tasks += ['awips'] + if cdump in ['gfs'] and do_wafs in ['Y', 'YES']: + tasks += ['wafs', 'wafsgrib2', 'wafsblending', 'wafsgcip', 'wafsgrib20p25', 'wafsblending0p25'] if cdump in ['gfs'] and do_metp in ['Y', 'YES']: tasks += ['metp'] #if cdump in ['gfs'] and do_wave in ['Y', 'YES'] and do_awips in ['Y', 'YES']: @@ -390,6 +395,7 @@ def get_gdasgfs_tasks(dict_configs, cdump='gdas'): do_bufrsnd = base.get('DO_BUFRSND', 'NO').upper() do_gempak = base.get('DO_GEMPAK', 'NO').upper() do_awips = base.get('DO_AWIPS', 'NO').upper() + do_wafs = base.get('WAFSF', 'NO').upper() do_metp = base.get('DO_METP', 'NO').upper() do_gldas = base.get('DO_GLDAS', 'NO').upper() do_wave = base.get('DO_WAVE', 'NO').upper() @@ -698,6 +704,66 @@ def get_gdasgfs_tasks(dict_configs, cdump='gdas'): dict_tasks['%sgempak' % cdump] = task + # wafs + if cdump in ['gfs'] and do_wafs in ['Y', 'YES']: + deps = [] + dep_dict = {'type': 'metatask', 'name': '%spost' % cdump} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + task = wfu.create_wf_task('wafs', cdump=cdump, envar=envars, dependency=dependencies) + + dict_tasks['%swafs' % cdump] = task + + # wafsgrib2 + if cdump in ['gfs'] and do_wafs in ['Y', 'YES']: + deps = [] + dep_dict = {'type': 'metatask', 'name': '%spost' % cdump} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + task = wfu.create_wf_task('wafsgrib2', cdump=cdump, envar=envars, dependency=dependencies) + + dict_tasks['%swafsgrib2' % cdump] = task + + # wafsblending + if cdump in ['gfs'] and do_wafs in ['Y', 'YES']: + deps = [] + dep_dict = {'type': 'task', 'name': '%swafsgrib2' % cdump} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + task = wfu.create_wf_task('wafsblending', cdump=cdump, envar=envars, dependency=dependencies) + + dict_tasks['%swafsblending' % cdump] = task + + # wafsgcip + if cdump in ['gfs'] and do_wafs in ['Y', 'YES']: + deps = [] + dep_dict = {'type': 'task', 'name': '%spost' % cdump} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + task = wfu.create_wf_task('wafsgcip', cdump=cdump, envar=envars, dependency=dependencies) + + dict_tasks['%swafsgcip' % cdump] = task + + # wafsgrib20p25 + if cdump in ['gfs'] and do_wafs in ['Y', 'YES']: + deps = [] + dep_dict = {'type': 'task', 'name': '%spost' % cdump} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + task = wfu.create_wf_task('wafsgrib20p25', cdump=cdump, envar=envars, dependency=dependencies) + + dict_tasks['%swafsgrib20p25' % cdump] = task + + # wafsblending0p25 + if cdump in ['gfs'] and do_wafs in ['Y', 'YES']: + deps = [] + dep_dict = {'type': 'task', 'name': '%swafsgrib20p25' % cdump} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + task = wfu.create_wf_task('wafsblending0p25', cdump=cdump, envar=envars, dependency=dependencies) + + dict_tasks['%swafsblending0p25' % cdump] = task + # arch deps = [] dep_dict = {'type': 'task', 'name': '%svrfy' % cdump} From 95ec3329e72a54b0dabdccdecd467972c4914dcd Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Mon, 31 Aug 2020 18:57:32 +0000 Subject: [PATCH 2/3] Added WAFS jobs to free-forecast mode, updates for extending WAFS to fh120, and two bug fixes in link_fv3gfs.sh and hpssarch_gen.sh --- modulefiles/module_base.wcoss_dell_p3 | 3 +- parm/config/config.wafs | 2 +- sorc/link_fv3gfs.sh | 2 +- ush/hpssarch_gen.sh | 2 +- ush/rocoto/setup_workflow.py | 30 ++++++------- ush/rocoto/setup_workflow_fcstonly.py | 65 ++++++++++++++++++++++++++- 6 files changed, 83 insertions(+), 21 deletions(-) diff --git a/modulefiles/module_base.wcoss_dell_p3 b/modulefiles/module_base.wcoss_dell_p3 index 25d84a4ed25..7a3689669f4 100644 --- a/modulefiles/module_base.wcoss_dell_p3 +++ b/modulefiles/module_base.wcoss_dell_p3 @@ -28,7 +28,8 @@ module load esmf/8.0.1bs08 module use -a /gpfs/dell1/nco/ops/nwprod/modulefiles/ module load gempak/7.3.1 -# Load dumpjb utility +# Load for WAFS +module load bufr_dumplist/2.0.0 module load dumpjb/5.0.3 # python diff --git a/parm/config/config.wafs b/parm/config/config.wafs index bb071626209..dafded38a1c 100755 --- a/parm/config/config.wafs +++ b/parm/config/config.wafs @@ -7,7 +7,7 @@ echo "BEGIN: config.wafs" # Get task specific resources . $EXPDIR/config.resources wafs -export fcsthrs=36 +export fcsthrs=120 export COMIN=$COMINatmos export COMOUT=$COMOUTatmos export SENDCOM="YES" diff --git a/sorc/link_fv3gfs.sh b/sorc/link_fv3gfs.sh index 92a6f829d55..a8df36cb2e0 100755 --- a/sorc/link_fv3gfs.sh +++ b/sorc/link_fv3gfs.sh @@ -81,7 +81,7 @@ cd ${pwd}/../ush ||exit 8 done cd ${pwd}/../util ||exit 8 for file in sub_slurm sub_wcoss_c sub_wcoss_d ; do - $LINK ../sorc/ufs_utils.fd/util/$file + $LINK ../sorc/ufs_utils.fd/util/$file . done diff --git a/ush/hpssarch_gen.sh b/ush/hpssarch_gen.sh index 0bdf56650b0..02d460d9f98 100755 --- a/ush/hpssarch_gen.sh +++ b/ush/hpssarch_gen.sh @@ -98,7 +98,7 @@ if [ $type = "gfs" ]; then echo "${dirname}${head}pgrb2.0p25.f${fhr}.idx " >>gfsa.txt echo "${dirname}${head}logf${fhr}.txt " >>gfsa.txt - if [ -s $ROTDIR/${dirpath}}${head}pgrb2.0p50.f${fhr} ]; then + if [ -s $ROTDIR/${dirpath}${head}pgrb2.0p50.f${fhr} ]; then echo "${dirname}${head}pgrb2.0p50.f${fhr} " >>gfsb.txt echo "${dirname}${head}pgrb2.0p50.f${fhr}.idx " >>gfsb.txt fi diff --git a/ush/rocoto/setup_workflow.py b/ush/rocoto/setup_workflow.py index 3e38e9d70f4..4f9ef4b6afa 100755 --- a/ush/rocoto/setup_workflow.py +++ b/ush/rocoto/setup_workflow.py @@ -714,45 +714,45 @@ def get_gdasgfs_tasks(dict_configs, cdump='gdas'): dict_tasks['%swafs' % cdump] = task - # wafsgrib2 + # wafsgcip if cdump in ['gfs'] and do_wafs in ['Y', 'YES']: deps = [] dep_dict = {'type': 'metatask', 'name': '%spost' % cdump} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - task = wfu.create_wf_task('wafsgrib2', cdump=cdump, envar=envars, dependency=dependencies) + task = wfu.create_wf_task('wafsgcip', cdump=cdump, envar=envars, dependency=dependencies) - dict_tasks['%swafsgrib2' % cdump] = task + dict_tasks['%swafsgcip' % cdump] = task - # wafsblending + # wafsgrib2 if cdump in ['gfs'] and do_wafs in ['Y', 'YES']: deps = [] - dep_dict = {'type': 'task', 'name': '%swafsgrib2' % cdump} + dep_dict = {'type': 'metatask', 'name': '%spost' % cdump} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - task = wfu.create_wf_task('wafsblending', cdump=cdump, envar=envars, dependency=dependencies) + task = wfu.create_wf_task('wafsgrib2', cdump=cdump, envar=envars, dependency=dependencies) - dict_tasks['%swafsblending' % cdump] = task + dict_tasks['%swafsgrib2' % cdump] = task - # wafsgcip + # wafsgrib20p25 if cdump in ['gfs'] and do_wafs in ['Y', 'YES']: deps = [] - dep_dict = {'type': 'task', 'name': '%spost' % cdump} + dep_dict = {'type': 'metatask', 'name': '%spost' % cdump} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - task = wfu.create_wf_task('wafsgcip', cdump=cdump, envar=envars, dependency=dependencies) + task = wfu.create_wf_task('wafsgrib20p25', cdump=cdump, envar=envars, dependency=dependencies) - dict_tasks['%swafsgcip' % cdump] = task + dict_tasks['%swafsgrib20p25' % cdump] = task - # wafsgrib20p25 + # wafsblending if cdump in ['gfs'] and do_wafs in ['Y', 'YES']: deps = [] - dep_dict = {'type': 'task', 'name': '%spost' % cdump} + dep_dict = {'type': 'task', 'name': '%swafsgrib2' % cdump} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep=deps) - task = wfu.create_wf_task('wafsgrib20p25', cdump=cdump, envar=envars, dependency=dependencies) + task = wfu.create_wf_task('wafsblending', cdump=cdump, envar=envars, dependency=dependencies) - dict_tasks['%swafsgrib20p25' % cdump] = task + dict_tasks['%swafsblending' % cdump] = task # wafsblending0p25 if cdump in ['gfs'] and do_wafs in ['Y', 'YES']: diff --git a/ush/rocoto/setup_workflow_fcstonly.py b/ush/rocoto/setup_workflow_fcstonly.py index 8a308bb7603..738e39d979a 100755 --- a/ush/rocoto/setup_workflow_fcstonly.py +++ b/ush/rocoto/setup_workflow_fcstonly.py @@ -27,8 +27,8 @@ import rocoto import workflow_utils as wfu -#taskplan = ['getic', 'fv3ic', 'waveinit', 'waveprep', 'fcst', 'post', 'wavepostsbs', 'wavegempaksbs', 'waveawipssbs', 'wavepost', 'waveawips', 'wavestat', 'vrfy', 'metp', 'arch'] -taskplan = ['getic', 'fv3ic', 'waveinit', 'waveprep', 'fcst', 'post', 'wavepostsbs', 'vrfy', 'metp', 'arch'] +#taskplan = ['getic', 'fv3ic', 'waveinit', 'waveprep', 'fcst', 'post', 'wavepostsbs', 'wavegempaksbs', 'waveawipssbs', 'wavepost', 'waveawips', 'wavestat', 'wafs', 'wafsgrib2', 'wafsblending', 'wafsgcip', 'wafsgrib20p25', 'wafsblending0p25', 'vrfy', 'metp', 'arch'] +taskplan = ['getic', 'fv3ic', 'waveinit', 'waveprep', 'fcst', 'post', 'wavepostsbs', 'wafs', 'wafsgrib2', 'wafsblending', 'wafsgcip', 'wafsgrib20p25', 'wafsblending0p25', 'vrfy', 'metp', 'arch'] def main(): parser = ArgumentParser(description='Setup XML workflow and CRONTAB for a forecast only experiment.', formatter_class=ArgumentDefaultsHelpFormatter) @@ -234,6 +234,7 @@ def get_workflow(dict_configs, cdump='gdas'): do_wave = base.get('DO_WAVE', 'NO').upper() do_gempak = base.get('DO_GEMPAK', 'NO').upper() do_awips = base.get('DO_AWIPS', 'NO').upper() + do_wafs = base.get('WAFSF', 'NO').upper() do_metp = base.get('DO_METP', 'NO').upper() tasks = [] @@ -426,6 +427,66 @@ def get_workflow(dict_configs, cdump='gdas'): # tasks.append(task) # tasks.append('\n') + # wafs + if do_wafs in ['Y', 'YES']: + deps = [] + dep_dict = {'type': 'metatask', 'name': '%spost' % cdump} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + task = wfu.create_wf_task('wafs', cdump=cdump, envar=envars, dependency=dependencies) + tasks.append(task) + tasks.append('\n') + + # wafsgcip + if do_wafs in ['Y', 'YES']: + deps = [] + dep_dict = {'type': 'metatask', 'name': '%spost' % cdump} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + task = wfu.create_wf_task('wafsgcip', cdump=cdump, envar=envars, dependency=dependencies) + tasks.append(task) + tasks.append('\n') + + # wafsgrib2 + if do_wafs in ['Y', 'YES']: + deps = [] + dep_dict = {'type': 'metatask', 'name': '%spost' % cdump} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + task = wfu.create_wf_task('wafsgrib2', cdump=cdump, envar=envars, dependency=dependencies) + tasks.append(task) + tasks.append('\n') + + # wafsgrib20p25 + if do_wafs in ['Y', 'YES']: + deps = [] + dep_dict = {'type': 'metatask', 'name': '%spost' % cdump} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + task = wfu.create_wf_task('wafsgrib20p25', cdump=cdump, envar=envars, dependency=dependencies) + tasks.append(task) + tasks.append('\n') + + # wafsblending + if do_wafs in ['Y', 'YES']: + deps = [] + dep_dict = {'type': 'task', 'name': '%swafsgrib2' % cdump} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + task = wfu.create_wf_task('wafsblending', cdump=cdump, envar=envars, dependency=dependencies) + tasks.append(task) + tasks.append('\n') + + # wafsblending0p25 + if do_wafs in ['Y', 'YES']: + deps = [] + dep_dict = {'type': 'task', 'name': '%swafsgrib20p25' % cdump} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + task = wfu.create_wf_task('wafsblending0p25', cdump=cdump, envar=envars, dependency=dependencies) + tasks.append(task) + tasks.append('\n') + # vrfy deps = [] dep_dict = {'type':'metatask', 'name':'%spost' % cdump} From 8a593c8df03d8a879c5488fbd671fef94f5d867d Mon Sep 17 00:00:00 2001 From: "kate.friedman" Date: Tue, 1 Sep 2020 14:09:49 +0000 Subject: [PATCH 3/3] Update to WAFS tag and added SENDDBN_NTC to both base configs --- Externals.cfg | 2 +- parm/config/config.base.emc.dyn | 1 + parm/config/config.base.nco.static | 1 + sorc/checkout.sh | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Externals.cfg b/Externals.cfg index c20f8c31cef..3a28ec09557 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -43,7 +43,7 @@ protocol = git required = True [EMC_gfs_wafs] -tag = gfs_wafs.v6.0.1 +tag = gfs_wafs.v6.0.3 local_path = sorc/gfs_wafs.fd repo_url = https://github.com/NOAA-EMC/EMC_gfs_wafs.git protocol = git diff --git a/parm/config/config.base.emc.dyn b/parm/config/config.base.emc.dyn index 9e1b34b38e8..24af1552bdb 100755 --- a/parm/config/config.base.emc.dyn +++ b/parm/config/config.base.emc.dyn @@ -125,6 +125,7 @@ export REDERR="2>" export SENDECF="NO" export SENDCOM="NO" export SENDDBN="NO" +export SENDDBN_NTC="NO" export SENDSDM="NO" # Resolution specific parameters diff --git a/parm/config/config.base.nco.static b/parm/config/config.base.nco.static index 51a7133a2f8..4e66d41631d 100755 --- a/parm/config/config.base.nco.static +++ b/parm/config/config.base.nco.static @@ -122,6 +122,7 @@ export REDERR="2>" export SENDECF=${SENDECF:-"NO"} export SENDCOM=${SENDCOM:-"YES"} export SENDDBN=${SENDDBN:-"YES"} +export SENDDBN_NTC=${SENDDBN_NTC:-"YES"} export SENDSDM=${SENDSDM:-"NO"} # Resolution specific parameters diff --git a/sorc/checkout.sh b/sorc/checkout.sh index b72460778dc..08ba993fb35 100755 --- a/sorc/checkout.sh +++ b/sorc/checkout.sh @@ -95,7 +95,7 @@ if [[ ! -d gfs_wafs.fd ]] ; then rm -f ${topdir}/checkout-gfs_wafs.log git clone --recursive https://github.com/NOAA-EMC/EMC_gfs_wafs.git gfs_wafs.fd >> ${topdir}/checkout-gfs_wafs.log 2>&1 cd gfs_wafs.fd - git checkout gfs_wafs.v6.0.1 + git checkout gfs_wafs.v6.0.3 cd ${topdir} else echo 'Skip. Directory gfs_wafs.fd already exists.'