diff --git a/Externals.cfg b/Externals.cfg
index 6f5fcd4798..7645d74097 100644
--- a/Externals.cfg
+++ b/Externals.cfg
@@ -1,7 +1,7 @@
# External sub-modules of global-workflow
[FV3GFS]
-tag = GFS.v16.0.15
+tag = GFS.v16.0.16
local_path = sorc/fv3gfs.fd
repo_url = https://github.com/ufs-community/ufs-weather-model.git
protocol = git
@@ -43,7 +43,7 @@ protocol = git
required = True
[EMC_gfs_wafs]
-tag = gfs_wafs.v6.0.18
+tag = gfs_wafs.v6.0.21
local_path = sorc/gfs_wafs.fd
repo_url = https://github.com/NOAA-EMC/EMC_gfs_wafs.git
protocol = git
diff --git a/ecflow/ecf/scripts/gfs/wave/post/jgfs_wave_post_bndpntbll.ecf b/ecflow/ecf/scripts/gfs/wave/post/jgfs_wave_post_bndpntbll.ecf
new file mode 100755
index 0000000000..5448111647
--- /dev/null
+++ b/ecflow/ecf/scripts/gfs/wave/post/jgfs_wave_post_bndpntbll.ecf
@@ -0,0 +1,69 @@
+#BSUB -L /bin/sh
+#BSUB -J %E%%RUN%_wave_post_bndpntbll_%CYC%
+#BSUB -o %COM%/output/%ENVIR%/today/%RUN%_wave_post_bndpntbll_%CYC%.o%J
+#BSUB -q %QUEUE%
+#BSUB -P %PROJ%
+#BSUB -cwd /tmp
+#BSUB -W 01:00
+#BSUB -R span[ptile=28]; -R affinity[core(1)]
+#BSUB -n 280
+
+%include
+%include
+
+set -x
+
+export NODES=10
+export ntasks=280
+export ptile=28
+export threads=1
+
+export NET=%NET:gfs%
+export RUN=%RUN%
+export CDUMP=%RUN%
+
+model=gfs
+%include
+
+############################################################
+## Load modules
+############################################################
+module load lsf/${lsf_ver}
+module load impi/${impi_ver}
+module load CFP/${CFP_ver}
+
+module list
+
+############################################################
+## WCOSS_C environment settings
+############################################################
+export cyc=%CYC%
+export cycle=t%CYC%z
+
+############################################################
+# CALL executable job script here
+############################################################
+${HOMEgfs}/jobs/JGLOBAL_WAVE_POST_BNDPNTBLL
+
+if [ $? -ne 0 ]; then
+ ecflow_client --msg="***JOB ${ECF_NAME} ERROR RUNNING J-SCRIPT ***"
+ ecflow_client --abort
+ exit
+fi
+
+%include
+%manual
+######################################################################
+# Purpose:
+#
+#
+######################################################################
+
+######################################################################
+# Job specific troubleshooting instructions:
+# see generic troubleshoot manual page
+#
+######################################################################
+
+# include manual page below
+%end
diff --git a/ecflow/ecf/versions/gfs.ver b/ecflow/ecf/versions/gfs.ver
index d53b8c5256..810f0d4aed 100644
--- a/ecflow/ecf/versions/gfs.ver
+++ b/ecflow/ecf/versions/gfs.ver
@@ -22,7 +22,7 @@ export dumpjb_ver="5.1.0"
export NCL_ver="6.4.0"
export python_ver="3.6.3"
export prod_envir_ver="1.1.0"
-export util_shared_ver="1.1.2"
+export util_shared_ver="1.3.0"
export prod_util_ver="1.1.4"
export metplus_ver="2.1"
export w3emc_para_ver="2.4.0"
diff --git a/env/HERA.env b/env/HERA.env
index f71531c1ed..f6c7c6543d 100755
--- a/env/HERA.env
+++ b/env/HERA.env
@@ -42,7 +42,7 @@ if [ $step = "prep" -o $step = "prepbufr" ]; then
export BACK="NO"
export sys_tp="HERA"
-elif [ $step = "waveinit" -o $step = "waveprep" -o $step = "wavepostsbs" -o $step = "wavepostbndpnt" -o $step = "wavepostpnt" ]; then
+elif [ $step = "waveinit" -o $step = "waveprep" -o $step = "wavepostsbs" -o $step = "wavepostbndpnt" -o $step = "wavepostbndpntbll" -o $step = "wavepostpnt" ]; then
export mpmd="--multi-prog"
export CFP_MP="YES"
diff --git a/env/JET.env b/env/JET.env
index ef37e468df..d4d0cdb2a5 100755
--- a/env/JET.env
+++ b/env/JET.env
@@ -37,7 +37,7 @@ if [ $step = "prep" -o $step = "prepbufr" ]; then
export BACK=${BACK:-"YES"}
export sys_tp="Cray-CS400"
-elif [ $step = "waveinit" -o $step = "waveprep" -o $step = "wavepostsbs" -o $step = "wavepostbndpnt" -o $step = "wavepostpnt" ]; then
+elif [ $step = "waveinit" -o $step = "waveprep" -o $step = "wavepostsbs" -o $step = "wavepostbndpnt" -o $step = "wavepostbndpntbll" -o $step = "wavepostpnt" ]; then
if [ $step = "waveprep" ]; then export MP_PULSE=0 ; fi
export wavempexec=${launcher}
diff --git a/env/WCOSS_C.env b/env/WCOSS_C.env
index 4885a966a0..17396abce7 100755
--- a/env/WCOSS_C.env
+++ b/env/WCOSS_C.env
@@ -37,7 +37,7 @@ if [ $step = "prep" -o $step = "prepbufr" ]; then
export POE=${POE:-"YES"}
export sys_tp="Cray-XC40"
-elif [ $step = "waveinit" -o $step = "waveprep" -o $step = "wavepostsbs" -o $step = "wavepostbndpnt" -o $step = "wavepostpnt" ]; then
+elif [ $step = "waveinit" -o $step = "waveprep" -o $step = "wavepostsbs" -o $step = "wavepostbndpnt" -o $step = "wavepostbndpntbll" -o $step = "wavepostpnt" ]; then
if [ $step = "waveprep" ]; then export MP_PULSE=0 ; fi
export wavempexec=${launcher}
export wave_mpmd=${mpmd}
diff --git a/env/WCOSS_DELL_P3.env b/env/WCOSS_DELL_P3.env
index a028826b93..46c50b0766 100755
--- a/env/WCOSS_DELL_P3.env
+++ b/env/WCOSS_DELL_P3.env
@@ -45,7 +45,7 @@ if [ $step = "prep" -o $step = "prepbufr" ]; then
export BACK=${BACK:-"off"}
export sys_tp="Dell-p3"
-elif [ $step = "waveinit" -o $step = "waveprep" -o $step = "wavepostsbs" -o $step = "wavepostbndpnt" -o $step = "wavepostpnt" ]; then
+elif [ $step = "waveinit" -o $step = "waveprep" -o $step = "wavepostsbs" -o $step = "wavepostbndpnt" -o $step = "wavepostbndpntbll" -o $step = "wavepostpnt" ]; then
if [ $step = "waveprep" ]; then export MP_PULSE=0 ; fi
export wavempexec=${launcher}
diff --git a/jobs/JGLOBAL_WAVE_POST_BNDPNT b/jobs/JGLOBAL_WAVE_POST_BNDPNT
index 6305b4a03b..93b690ad1d 100755
--- a/jobs/JGLOBAL_WAVE_POST_BNDPNT
+++ b/jobs/JGLOBAL_WAVE_POST_BNDPNT
@@ -66,10 +66,6 @@ fi
export COMIN=${COMIN:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/$COMPONENT}
export COMOUT=${COMOUT:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/$COMPONENT}
-export COMINice=${COMINice:-${COMROOTp2}/omb/prod}
-export COMINwnd=${COMINwnd:-${COMROOT}/gfs/prod}
-export COMIN_WAV_CUR=${COMIN_WAV_CUR:-${COMROOTp2}/rtofs/prod}
-
mkdir -p $COMOUT/station
env | sort
@@ -85,8 +81,14 @@ export WAV_MOD_TAG=${CDUMP}wave${waveMEMB}
export CFP_VERBOSE=1
+export FHMAX_WAV_PNT=180
+if [ $FHMAX_WAV -lt $FHMAX_WAV_PNT ] ; then export FHMAX_WAV_IBP=$FHMAX_WAV ; fi
+export DOSPC_WAV='YES' # Spectral post
+export DOBLL_WAV='NO' # Bulletin post
+export DOBNDPNT_WAV='YES' #not boundary points
+
# Execute the Script
-$HOMEgfs/scripts/exgfs_wave_post_bndpnt.sh
+$HOMEgfs/scripts/exgfs_wave_post_pnt.sh
err=$?
if [ $err -ne 0 ]; then
msg="FATAL ERROR: ex-script of GWES_POST failed!"
diff --git a/jobs/JGLOBAL_WAVE_POST_BNDPNTBLL b/jobs/JGLOBAL_WAVE_POST_BNDPNTBLL
new file mode 100755
index 0000000000..5d37dd35fc
--- /dev/null
+++ b/jobs/JGLOBAL_WAVE_POST_BNDPNTBLL
@@ -0,0 +1,108 @@
+#!/bin/bash
+
+date
+export RUN_ENVIR=${RUN_ENVIR:-"nco"}
+export PS4=' $SECONDS + '
+set -x -e
+
+#############################
+# Source relevant config files
+#############################
+configs="base wave wavepostsbs wavepostbndpnt"
+export EXPDIR=${EXPDIR:-$HOMEgfs/parm/config}
+config_path=${EXPDIR:-$NWROOT/gfs.${gfs_ver}/parm/config}
+for config in $configs; do
+ . $config_path/config.$config
+ status=$?
+ [[ $status -ne 0 ]] && exit $status
+done
+
+##########################################
+# Source machine runtime environment
+##########################################
+. $HOMEgfs/env/${machine}.env wavepostbndpntbll
+status=$?
+[[ $status -ne 0 ]] && exit $status
+
+# PATH for working directory
+export NET=${NET:-gfs}
+export RUN=${RUN:-gfs}
+export COMPONENT=${COMPONENT:-wave}
+
+export HOMEgefs=${HOMEgefs:-$NWROOT/$NET.${gefs_ver}}
+export HOMEgfs=${HOMEgfs:-$NWROOT/$NET.${gfs_ver}}
+
+# Add default errchk = err_chk
+export errchk=${errchk:-err_chk}
+
+# Create and go to DATA directory
+export DATA=${DATA:-${DATAROOT:?}/${jobid}}
+mkdir -p $DATA
+cd $DATA
+
+export cyc=${cyc:-00}
+export cycle=${cycle:-t${cyc}z}
+
+# Set PDY
+setpdy.sh
+. PDY
+
+export CDATE=$PDY$cyc
+
+export pgmout=OUTPUT.$$
+
+export MP_PULSE=0
+
+# Path to HOME Directory
+export FIXwave=${FIXwave:-$HOMEgfs/fix/fix_wave_${NET}}
+export PARMwave=${PARMwave:-$HOMEgfs/parm/wave}
+export USHwave=${USHwave:-$HOMEgfs/ush}
+export EXECwave=${EXECwave:-$HOMEgfs/exec}
+
+# Set COM Paths and GETGES environment
+if [ $RUN_ENVIR = "nco" ]; then
+ export ROTDIR=${COMROOT:?}/$NET/$envir
+fi
+export COMIN=${COMIN:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/$COMPONENT}
+export COMOUT=${COMOUT:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/$COMPONENT}
+
+
+mkdir -p $COMOUT/station
+
+env | sort
+
+# Set wave model ID tag to include member number
+# if ensemble; waveMEMB var empty in deterministic
+# Set wave model ID tag to include member number
+# if ensemble; waveMEMB var empty in deterministic
+membTAG='p'
+if [ "${waveMEMB}" == "00" ]; then membTAG='c'; fi
+export membTAG
+export WAV_MOD_TAG=${CDUMP}wave${waveMEMB}
+
+export CFP_VERBOSE=1
+
+export FHMAX_WAV_PNT=180
+if [ $FHMAX_WAV -lt $FHMAX_WAV_PNT ] ; then export FHMAX_WAV_IBP=$FHMAX_WAV ; fi
+export DOSPC_WAV='NO' # Spectral post
+export DOBLL_WAV='YES' # Bulletin post
+export DOBNDPNT_WAV='YES' #boundary points
+
+# Execute the Script
+$HOMEgfs/scripts/exgfs_wave_post_pnt.sh
+err=$?
+if [ $err -ne 0 ]; then
+ msg="FATAL ERROR: ex-script of GFS_WAVE_POST_PNT failed!"
+else
+ msg="$job completed normally!"
+fi
+postmsg "$jlogfile" "$msg"
+
+##########################################
+# Remove the Temporary working directory
+##########################################
+cd $DATAROOT
+[[ $KEEPDATA = "NO" ]] && rm -rf $DATA
+
+date
+exit 0
diff --git a/jobs/JGLOBAL_WAVE_POST_PNT b/jobs/JGLOBAL_WAVE_POST_PNT
index 6ebc032ac1..092916b7f6 100755
--- a/jobs/JGLOBAL_WAVE_POST_PNT
+++ b/jobs/JGLOBAL_WAVE_POST_PNT
@@ -66,10 +66,6 @@ fi
export COMIN=${COMIN:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/$COMPONENT}
export COMOUT=${COMOUT:-${ROTDIR}/${CDUMP}.${PDY}/${cyc}/$COMPONENT}
-export COMINice=${COMINice:-${COMROOTp2}/omb/prod}
-export COMINwnd=${COMINwnd:-${COMROOT}/gfs/prod}
-export COMIN_WAV_CUR=${COMIN_WAV_CUR:-${COMROOTp2}/rtofs/prod}
-
mkdir -p $COMOUT/station
env | sort
@@ -85,6 +81,12 @@ export WAV_MOD_TAG=${CDUMP}wave${waveMEMB}
export CFP_VERBOSE=1
+export FHMAX_WAV_PNT=${FHMAX_WAV}
+export DOSPC_WAV='YES' # Spectral post
+export DOBLL_WAV='YES' # Bulletin post
+export DOBNDPNT_WAV='NO' #not boundary points
+
+
# Execute the Script
$HOMEgfs/scripts/exgfs_wave_post_pnt.sh
err=$?
diff --git a/jobs/rocoto/wavepostbndpntbll.sh b/jobs/rocoto/wavepostbndpntbll.sh
new file mode 100755
index 0000000000..388fa70b00
--- /dev/null
+++ b/jobs/rocoto/wavepostbndpntbll.sh
@@ -0,0 +1,21 @@
+#!/bin/ksh -x
+
+###############################################################
+echo
+echo "=============== START TO SOURCE FV3GFS WORKFLOW MODULES ==============="
+. $HOMEgfs/ush/load_fv3gfs_modules.sh
+status=$?
+[[ $status -ne 0 ]] && exit $status
+
+###############################################################
+echo
+echo "=============== START TO RUN WAVE_POST_BNDPNT ==============="
+# Execute the JJOB
+$HOMEgfs/jobs/JGLOBAL_WAVE_POST_BNDPNTBLL
+status=$?
+[[ $status -ne 0 ]] && 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
old mode 100644
new mode 100755
index f3a76c9a22..0bd8bd436b
--- a/modulefiles/module_base.wcoss_dell_p3
+++ b/modulefiles/module_base.wcoss_dell_p3
@@ -27,11 +27,11 @@ module load HDF5-parallel/1.10.6
module use -a /gpfs/dell1/nco/ops/nwprod/modulefiles/
module load gempak/7.3.3
module load g2tmpl/1.6.0
+module load util_shared/1.3.0
# Load for WAFS
module load bufr_dumplist/2.0.0
module load dumpjb/5.1.0
-module load util_shared/1.1.2
# python
module load python/3.6.3
diff --git a/parm/config/config.resources b/parm/config/config.resources
index b3d81e39b9..7d284f8b7f 100755
--- a/parm/config/config.resources
+++ b/parm/config/config.resources
@@ -10,7 +10,7 @@ if [ $# -ne 1 ]; then
echo "argument can be any one of the following:"
echo "anal analcalc analdiag gldas fcst post vrfy metp arch echgres"
echo "eobs ediag eomg eupd ecen esfc efcs epos earc"
- echo "waveinit waveprep wavepostsbs wavepostbndpnt wavepostpnt"
+ echo "waveinit waveprep wavepostsbs wavepostbndpnt wavepostbndpntbll wavepostpnt"
echo "wavegempak waveawipsbulls waveawipsgridded"
echo "postsnd awips gempak"
echo "wafs wafsgrib2 wafsblending wafsgrib20p25 wafsblending0p25 wafsgcip"
@@ -76,6 +76,14 @@ elif [ $step = "wavepostbndpnt" ]; then
export npe_node_wavepostbndpnt=$(echo "$npe_node_max / $nth_wavepostbndpnt" | bc)
export NTASKS=${npe_wavepostbndpnt}
+elif [ $step = "wavepostbndpntbll" ]; then
+
+ export wtime_wavepostbndpntbll="01:00:00"
+ export npe_wavepostbndpntbll=280
+ export nth_wavepostbndpntbll=1
+ export npe_node_wavepostbndpntbll=$(echo "$npe_node_max / $nth_wavepostbndpntbll" | bc)
+ export NTASKS=${npe_wavepostbndpntbll}
+
elif [ $step = "wavepostpnt" ]; then
export wtime_wavepostpnt="02:00:00"
diff --git a/parm/config/config.resources.nco.static b/parm/config/config.resources.nco.static
deleted file mode 100755
index a6a2c88c0a..0000000000
--- a/parm/config/config.resources.nco.static
+++ /dev/null
@@ -1,323 +0,0 @@
-#!/bin/ksh -x
-
-########## config.resources ##########
-# Set resource information for job tasks
-# e.g. walltime, node, cores per node, memory etc.
-
-if [ $# -ne 1 ]; then
-
- echo "Must specify an input task argument to set resource variables!"
- echo "argument can be any one of the following:"
- echo "anal analcalc analdiag gldas fcst post vrfy metp arch echgres"
- echo "eobs ediag eomg eupd ecen esfc efcs epos earc"
- echo "waveinit waveprep wavepostsbs wavepostbndpnt wavepostpnt"
- echo "wavegempak waveawipsbulls waveawipsgridded"
- echo "postsnd awips gempak"
- echo "wafs wafsgrib2 wafsblending wafsgrib20p25 wafsblending0p25 wafsgcip"
- exit 1
-
-fi
-
-step=$1
-
-echo "BEGIN: config.resources"
-
-export npe_node_max=28
-if [ "$QUEUE" = "dev2" -o "$QUEUE" = "devonprod2" -o "$QUEUE" = "devmax2" ]; then # WCOSS Dell 3.5
- export npe_node_max=40
-fi
-
-if [ $step = "prep" -o $step = "prepbufr" ]; then
-
- eval "export wtime_$step='00:45:00'"
- eval "export npe_$step=4"
- eval "export npe_node_$step=2"
- eval "export nth_$step=1"
-
-elif [ $step = "waveinit" ]; then
-
- export wtime_waveinit="00:10:00"
- export npe_waveinit=12
- export nth_waveinit=1
- export npe_node_waveinit=$(echo "$npe_node_max / $nth_waveinit" | bc)
- export NTASKS=${npe_waveinit}
-
-elif [ $step = "waveprep" ]; then
-
- export wtime_waveprep="00:10:00"
- export wtime_waveprep_gfs="00:30:00"
- export npe_waveprep=84
- export nth_waveprep=1
- export npe_node_waveprep=$(echo "$npe_node_max / $nth_waveprep" | bc)
- export NTASKS=${npe_waveprep}
-
-elif [ $step = "wavepostsbs" ]; then
-
- export wtime_wavepostsbs="00:20:00"
- export wtime_wavepostsbs_gfs="03:00:00"
- export npe_wavepostsbs=28
- export npe_wavepostsbs_gfs=280
- export nth_wavepostsbs=1
- export npe_node_wavepostsbs=$(echo "$npe_node_max / $nth_wavepostsbs" | bc)
- export NTASKS=${npe_wavepostsbs}
-
-elif [ $step = "wavepostbndpnt" ]; then
-
- export wtime_wavepostbndpnt="01:00:00"
- export npe_wavepostbndpnt=280
- export nth_wavepostbndpnt=1
- export npe_node_wavepostbndpnt=$(echo "$npe_node_max / $nth_wavepostbndpnt" | bc)
- export NTASKS=${npe_wavepostbndpnt}
-
-elif [ $step = "wavepostpnt" ]; then
-
- export wtime_wavepostpnt="00:12:00"
- export wtime_wavepostpnt_gfs="01:30:00"
- export npe_wavepostpnt=280
- export nth_wavepostpnt=1
- export npe_node_wavepostpnt=$(echo "$npe_node_max / $nth_wavepostpnt" | bc)
- export NTASKS=${npe_wavepostpnt}
-
-elif [ $step = "wavegempak" ]; then
-
- export wtime_wavegempak="01:00:00"
- export npe_wavegempak=$npe_node_max
- export nth_wavegempak=1
- export npe_node_wavegempak=$(echo "$npe_node_max / $nth_wavegempak" | bc)
- export NTASKS=${npe_wavegempak}
-
-elif [ $step = "waveawipsbulls" ]; then
-
- export wtime_waveawipsbulls="00:30:00"
- export npe_waveawipsbulls=$npe_node_max
- export nth_waveawipsbulls=1
- export npe_node_waveawipsbulls=$(echo "$npe_node_max / $nth_waveawipsbulls" | bc)
- export NTASKS=${npe_waveawipsbulls}
-
-elif [ $step = "waveawipsgridded" ]; then
-
- export wtime_waveawipsgridded="00:30:00"
- export npe_waveawipsgridded=$npe_node_max
- export nth_waveawipsgridded=1
- export npe_node_waveawipsgridded=$(echo "$npe_node_max / $nth_waveawipsgridded" | bc)
- export NTASKS=${npe_waveawipsgridded}
-
-elif [ $step = "anal" ]; then
-
- export wtime_anal="01:00:00"
- export wtime_anal_gfs="00:40:00"
- export npe_anal=1000
- export npe_anal_gfs=1000
- export nth_anal=7
- export npe_node_anal=$(echo "$npe_node_max / $nth_anal" | bc)
- export nth_cycle=$npe_node_max
-
-elif [ $step = "analcalc" ]; then
-
- export wtime_analcalc="00:10:00"
- export npe_analcalc=127
- export nth_analcalc=1
- export npe_node_analcalc=$npe_node_max
-
-elif [ $step = "analdiag" ]; then
-
- export wtime_analdiag="00:10:00"
- export npe_analdiag=112
- export nth_analdiag=1
- export npe_node_analdiag=$npe_node_max
-
-elif [ $step = "gldas" ]; then
-
- export wtime_gldas="00:20:00"
- export npe_gldas=112
- export nth_gldas=1
- export npe_node_gldas=$npe_node_max
- export npe_gaussian=96
- export nth_gaussian=1
- export npe_node_gaussian=24
-
-elif [ $step = "fcst" ]; then
-
- export wtime_fcst="01:00:00"
- export wtime_fcst_gfs="02:30:00"
- export npe_fcst=$(echo "$layout_x * $layout_y * 6" | bc)
- export npe_fcst_gfs=$(echo "$layout_x_gfs * $layout_y_gfs * 6" | bc)
- export nth_fcst=${nth_fv3:-2}
- export npe_node_fcst=$(echo "$npe_node_max / $nth_fcst" | bc)
-
-elif [ $step = "post" ]; then
-
- export wtime_post="00:12:00"
- export wtime_post_gfs="00:20:00"
- export npe_post=98
- export npe_post_gfs=112
- export nth_post=1
- export npe_node_post=14
- export npe_node_post_gfs=28
- export npe_node_dwn=$npe_node_max
-
-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"
- export wtime_vrfy_gfs="06:00:00"
- export npe_vrfy=3
- export nth_vrfy=1
- export npe_node_vrfy=1
- export npe_vrfy_gfs=1
- export npe_node_vrfy_gfs=1
-
-elif [ $step = "metp" ]; then
-
- export nth_metp=1
- export wtime_metp="03:00:00"
- export npe_metp=4
- export npe_node_metp=4
- export wtime_metp_gfs="06:00:00"
- export npe_metp_gfs=4
- export npe_node_metp_gfs=4
-
-elif [ $step = "echgres" ]; then
-
- export wtime_echgres="00:10:00"
- export npe_echgres=3
- export nth_echgres=$npe_node_max
- export npe_node_echgres=1
-
-elif [ $step = "arch" -o $step = "earc" -o $step = "getic" ]; then
-
- eval "export wtime_$step='06:00:00'"
- eval "export npe_$step=1"
- eval "export npe_node_$step=1"
- eval "export nth_$step=1"
- eval "export memory_$step=2048M"
-
-elif [ $step = "eobs" -o $step = "eomg" ]; then
-
-
- export wtime_eobs="00:10:00"
- export wtime_eomg="01:00:00"
- export npe_eobs=480
- export nth_eobs=7
- export npe_node_eobs=$(echo "$npe_node_max / $nth_eobs" | bc)
-
-elif [ $step = "ediag" ]; then
-
- export wtime_ediag="00:06:00"
- export npe_ediag=56
- export nth_ediag=1
- export npe_node_ediag=$npe_node_max
-
-elif [ $step = "eupd" ]; then
-
- export wtime_eupd="00:30:00"
- export npe_eupd=960
- export nth_eupd=7
- export npe_node_eupd=$(echo "$npe_node_max / $nth_eupd" | bc)
-
-elif [ $step = "ecen" ]; then
-
- export wtime_ecen="00:10:00"
- export npe_ecen=80
- export nth_ecen=7
- export npe_node_ecen=$(echo "$npe_node_max / $nth_ecen" | bc)
- export nth_cycle=$nth_ecen
-
-elif [ $step = "esfc" ]; then
-
- export wtime_esfc="00:06:00"
- export npe_esfc=80
- export npe_node_esfc=$npe_node_max
- export nth_esfc=1
- export nth_cycle=$nth_esfc
-
-elif [ $step = "efcs" ]; then
-
- export wtime_efcs="00:40:00"
- export npe_efcs=$(echo "$layout_x * $layout_y * 6" | bc)
- export nth_efcs=${nth_fv3:-2}
- export npe_node_efcs=$(echo "$npe_node_max / $nth_efcs" | bc)
-
-elif [ $step = "epos" ]; then
-
- export wtime_epos="00:15:00"
- export npe_epos=80
- export nth_epos=7
- export npe_node_epos=$(echo "$npe_node_max / $nth_epos" | bc)
-
-elif [ $step = "postsnd" ]; then
-
- export wtime_postsnd="02:00:00"
- export npe_postsnd=40
- export nth_postsnd=1
- export npe_node_postsnd=5
- export npe_postsndcfp=9
- export npe_node_postsndcfp=3
- if [ $OUTPUT_FILE == "nemsio" ]; then
- export npe_postsnd=13
- export npe_node_postsnd=4
- fi
-
-elif [ $step = "awips" ]; then
-
- export wtime_awips="03:30:00"
- export npe_awips=2
- export npe_node_awips=2
- export nth_awips=1
-
-elif [ $step = "gempak" ]; then
-
- export wtime_gempak="02:00:00"
- export npe_gempak=17
- export npe_node_gempak=4
- export nth_gempak=3
-
-else
-
- echo "Invalid step = $step, ABORT!"
- exit 2
-
-fi
-
-echo "END: config.resources"
diff --git a/parm/config/config.wavepostbndpntbll b/parm/config/config.wavepostbndpntbll
new file mode 100755
index 0000000000..d26d70fa7a
--- /dev/null
+++ b/parm/config/config.wavepostbndpntbll
@@ -0,0 +1,11 @@
+#!/bin/ksh -x
+
+########## config.wavepostbndpntbll ##########
+# Wave steps specific
+
+echo "BEGIN: config.wavepostbndpntbll"
+
+# Get task specific resources
+. $EXPDIR/config.resources wavepostbndpntbll
+
+echo "END: config.wavepostbndpntbll"
diff --git a/parm/transfer_rdhpcs_gdas.list b/parm/transfer_rdhpcs_gdas.list
index fae17a0bfe..e3811d3aa6 100644
--- a/parm/transfer_rdhpcs_gdas.list
+++ b/parm/transfer_rdhpcs_gdas.list
@@ -41,7 +41,6 @@ com/gfs/_ENVIR_/gdas._PDYm1_/ _REMOTEPATH_/com/gfs/_ENVIR_/gdas._PDYm1_/
+ /??/atmos/gdas.t??z.atmgm3.nc
+ /??/atmos/gdas.t??z.atmgp3.nc
+ /??/atmos/gdas.t??z.sfcanl.nc
-+ /??/atmos/gdas.t??z.sstgrb
- *
E
# This directory is a good candidate for compression
diff --git a/parm/transfer_rdhpcs_gdas_enkf_enkf_1.list b/parm/transfer_rdhpcs_gdas_enkf_enkf_1.list
index a7def2fa6f..f924cbd377 100644
--- a/parm/transfer_rdhpcs_gdas_enkf_enkf_1.list
+++ b/parm/transfer_rdhpcs_gdas_enkf_enkf_1.list
@@ -29,18 +29,20 @@
com/gfs/_ENVIR_/enkfgdas._PDYm1_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDYm1_/
+ /00/
-+ /00/mem???/
-+ /00/mem???/gdas.t??z.atmf006s.nc
-+ /00/mem???/gdas.t??z.atmf009s.nc
++ /00/atmos/
++ /00/atmos/mem???/
++ /00/atmos/mem???/gdas.t??z.atmf006.nc
++ /00/atmos/mem???/gdas.t??z.atmf009.nc
- *
E
# This directory is a good candidate for compression
#Z
com/gfs/_ENVIR_/enkfgdas._PDY_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDY_/
+ /00/
-+ /00/mem???/
-+ /00/mem???/gdas.t??z.atmf006s.nc
-+ /00/mem???/gdas.t??z.atmf009s.nc
++ /00/atmos/
++ /00/atmos/mem???/
++ /00/atmos/mem???/gdas.t??z.atmf006.nc
++ /00/atmos/mem???/gdas.t??z.atmf009.nc
- *
E
# This directory is a good candidate for compression
diff --git a/parm/transfer_rdhpcs_gdas_enkf_enkf_2.list b/parm/transfer_rdhpcs_gdas_enkf_enkf_2.list
index 759caa2c72..f7b2f03f9e 100644
--- a/parm/transfer_rdhpcs_gdas_enkf_enkf_2.list
+++ b/parm/transfer_rdhpcs_gdas_enkf_enkf_2.list
@@ -29,18 +29,20 @@
com/gfs/_ENVIR_/enkfgdas._PDYm1_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDYm1_/
+ /06/
-+ /06/mem???/
-+ /06/mem???/gdas.t??z.atmf006s.nc
-+ /06/mem???/gdas.t??z.atmf009s.nc
++ /06/atmos/
++ /06/atmos/mem???/
++ /06/atmos/mem???/gdas.t??z.atmf006.nc
++ /06/atmos/mem???/gdas.t??z.atmf009.nc
- *
E
# This directory is a good candidate for compression
#Z
com/gfs/_ENVIR_/enkfgdas._PDY_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDY_/
+ /06/
-+ /06/mem???/
-+ /06/mem???/gdas.t??z.atmf006s.nc
-+ /06/mem???/gdas.t??z.atmf009s.nc
++ /06/atmos/
++ /06/atmos/mem???/
++ /06/atmos/mem???/gdas.t??z.atmf006.nc
++ /06/atmos/mem???/gdas.t??z.atmf009.nc
- *
E
# This directory is a good candidate for compression
diff --git a/parm/transfer_rdhpcs_gdas_enkf_enkf_3.list b/parm/transfer_rdhpcs_gdas_enkf_enkf_3.list
index 48d3c54934..f51726923b 100644
--- a/parm/transfer_rdhpcs_gdas_enkf_enkf_3.list
+++ b/parm/transfer_rdhpcs_gdas_enkf_enkf_3.list
@@ -29,18 +29,20 @@
com/gfs/_ENVIR_/enkfgdas._PDYm1_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDYm1_/
+ /12/
-+ /12/mem???/
-+ /12/mem???/gdas.t??z.atmf006s.nc
-+ /12/mem???/gdas.t??z.atmf009s.nc
++ /12/atmos/
++ /12/atmos/mem???/
++ /12/atmos/mem???/gdas.t??z.atmf006.nc
++ /12/atmos/mem???/gdas.t??z.atmf009.nc
- *
E
# This directory is a good candidate for compression
#Z
com/gfs/_ENVIR_/enkfgdas._PDY_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDY_/
+ /12/
-+ /12/mem???/
-+ /12/mem???/gdas.t??z.atmf006s.nc
-+ /12/mem???/gdas.t??z.atmf009s.nc
++ /12/atmos/
++ /12/atmos/mem???/
++ /12/atmos/mem???/gdas.t??z.atmf006.nc
++ /12/atmos/mem???/gdas.t??z.atmf009.nc
- *
E
# This directory is a good candidate for compression
diff --git a/parm/transfer_rdhpcs_gdas_enkf_enkf_4.list b/parm/transfer_rdhpcs_gdas_enkf_enkf_4.list
index 4a5735c8af..85c541beb8 100644
--- a/parm/transfer_rdhpcs_gdas_enkf_enkf_4.list
+++ b/parm/transfer_rdhpcs_gdas_enkf_enkf_4.list
@@ -29,18 +29,20 @@
com/gfs/_ENVIR_/enkfgdas._PDYm1_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDYm1_/
+ /18/
-+ /18/mem???/
-+ /18/mem???/gdas.t??z.atmf006s.nc
-+ /18/mem???/gdas.t??z.atmf009s.nc
++ /18/atmos/
++ /18/atmos/mem???/
++ /18/atmos/mem???/gdas.t??z.atmf006.nc
++ /18/atmos/mem???/gdas.t??z.atmf009.nc
- *
E
# This directory is a good candidate for compression
#Z
com/gfs/_ENVIR_/enkfgdas._PDY_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDY_/
+ /18/
-+ /18/mem???/
-+ /18/mem???/gdas.t??z.atmf006s.nc
-+ /18/mem???/gdas.t??z.atmf009s.nc
++ /18/atmos/
++ /18/atmos/mem???/
++ /18/atmos/mem???/gdas.t??z.atmf006.nc
++ /18/atmos/mem???/gdas.t??z.atmf009.nc
- *
E
# This directory is a good candidate for compression
diff --git a/parm/transfer_rdhpcs_gdas_enkf_enkf_5.list b/parm/transfer_rdhpcs_gdas_enkf_enkf_5.list
index aa4d95ba9c..44bf0f4662 100644
--- a/parm/transfer_rdhpcs_gdas_enkf_enkf_5.list
+++ b/parm/transfer_rdhpcs_gdas_enkf_enkf_5.list
@@ -29,20 +29,22 @@
com/gfs/_ENVIR_/enkfgdas._PDYm1_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDYm1_/
+ /00/
-+ /00/mem???/
-+ /00/mem???/gdas.t??z.ratmanl.nc
-+ /00/gdas.t??z.atmf006.ensmean.nc
-+ /00/gdas.t??z.atmf009.ensmean.nc
++ /00/atmos/
++ /00/atmos/mem???/
++ /00/atmos/mem???/gdas.t??z.ratminc.nc
++ /00/atmos/gdas.t??z.atmf006.ensmean.nc
++ /00/atmos/gdas.t??z.atmf009.ensmean.nc
- *
E
# This directory is a good candidate for compression
#Z
com/gfs/_ENVIR_/enkfgdas._PDY_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDY_/
+ /00/
-+ /00/mem???/
-+ /00/mem???/gdas.t??z.ratmanl.nc
-+ /00/gdas.t??z.atmf006.ensmean.nc
-+ /00/gdas.t??z.atmf009.ensmean.nc
++ /00/atmos/
++ /00/atmos/mem???/
++ /00/atmos/mem???/gdas.t??z.ratminc.nc
++ /00/atmos/gdas.t??z.atmf006.ensmean.nc
++ /00/atmos/gdas.t??z.atmf009.ensmean.nc
- *
E
# This directory is a good candidate for compression
diff --git a/parm/transfer_rdhpcs_gdas_enkf_enkf_6.list b/parm/transfer_rdhpcs_gdas_enkf_enkf_6.list
index 713a5830e1..3af2fbae4d 100644
--- a/parm/transfer_rdhpcs_gdas_enkf_enkf_6.list
+++ b/parm/transfer_rdhpcs_gdas_enkf_enkf_6.list
@@ -29,20 +29,22 @@
com/gfs/_ENVIR_/enkfgdas._PDYm1_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDYm1_/
+ /06/
-+ /06/mem???/
-+ /06/mem???/gdas.t??z.ratmanl.nc
-+ /06/gdas.t??z.atmf006.ensmean.nc
-+ /06/gdas.t??z.atmf009.ensmean.nc
++ /06/atmos/
++ /06/atmos/mem???/
++ /06/atmos/mem???/gdas.t??z.ratminc.nc
++ /06/atmos/gdas.t??z.atmf006.ensmean.nc
++ /06/atmos/gdas.t??z.atmf009.ensmean.nc
- *
E
# This directory is a good candidate for compression
#Z
com/gfs/_ENVIR_/enkfgdas._PDY_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDY_/
+ /06/
-+ /06/mem???/
-+ /06/mem???/gdas.t??z.ratmanl.nc
-+ /06/gdas.t??z.atmf006.ensmean.nc
-+ /06/gdas.t??z.atmf009.ensmean.nc
++ /06/atmos/
++ /06/atmos/mem???/
++ /06/atmos/mem???/gdas.t??z.ratminc.nc
++ /06/atmos/gdas.t??z.atmf006.ensmean.nc
++ /06/atmos/gdas.t??z.atmf009.ensmean.nc
- *
E
# This directory is a good candidate for compression
diff --git a/parm/transfer_rdhpcs_gdas_enkf_enkf_7.list b/parm/transfer_rdhpcs_gdas_enkf_enkf_7.list
index 1b9db67e5d..9a86b20c42 100644
--- a/parm/transfer_rdhpcs_gdas_enkf_enkf_7.list
+++ b/parm/transfer_rdhpcs_gdas_enkf_enkf_7.list
@@ -29,20 +29,22 @@
com/gfs/_ENVIR_/enkfgdas._PDYm1_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDYm1_/
+ /12/
-+ /12/mem???/
-+ /12/mem???/gdas.t??z.ratmanl.nc
-+ /12/gdas.t??z.atmf006.ensmean.nc
-+ /12/gdas.t??z.atmf009.ensmean.nc
++ /12/atmos/
++ /12/atmos/mem???/
++ /12/atmos/mem???/gdas.t??z.ratminc.nc
++ /12/atmos/gdas.t??z.atmf006.ensmean.nc
++ /12/atmos/gdas.t??z.atmf009.ensmean.nc
- *
E
# This directory is a good candidate for compression
#Z
com/gfs/_ENVIR_/enkfgdas._PDY_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDY_/
+ /12/
-+ /12/mem???/
-+ /12/mem???/gdas.t??z.ratmanl.nc
-+ /12/gdas.t??z.atmf006.ensmean.nc
-+ /12/gdas.t??z.atmf009.ensmean.nc
++ /12/atmos/
++ /12/atmos/mem???/
++ /12/atmos/mem???/gdas.t??z.ratminc.nc
++ /12/atmos/gdas.t??z.atmf006.ensmean.nc
++ /12/atmos/gdas.t??z.atmf009.ensmean.nc
- *
E
# This directory is a good candidate for compression
diff --git a/parm/transfer_rdhpcs_gdas_enkf_enkf_8.list b/parm/transfer_rdhpcs_gdas_enkf_enkf_8.list
index 45304aaf2e..747be01fcd 100644
--- a/parm/transfer_rdhpcs_gdas_enkf_enkf_8.list
+++ b/parm/transfer_rdhpcs_gdas_enkf_enkf_8.list
@@ -29,20 +29,22 @@
com/gfs/_ENVIR_/enkfgdas._PDYm1_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDYm1_/
+ /18/
-+ /18/mem???/
-+ /18/mem???/gdas.t??z.ratmanl.nc
-+ /18/gdas.t??z.atmf006.ensmean.nc
-+ /18/gdas.t??z.atmf009.ensmean.nc
++ /18/atmos/
++ /18/atmos/mem???/
++ /18/atmos/mem???/gdas.t??z.ratminc.nc
++ /18/atmos/gdas.t??z.atmf006.ensmean.nc
++ /18/atmos/gdas.t??z.atmf009.ensmean.nc
- *
E
# This directory is a good candidate for compression
#Z
com/gfs/_ENVIR_/enkfgdas._PDY_/ _REMOTEPATH_/com/gfs/_ENVIR_/enkfgdas._PDY_/
+ /18/
-+ /18/mem???/
-+ /18/mem???/gdas.t??z.ratmanl.nc
-+ /18/gdas.t??z.atmf006.ensmean.nc
-+ /18/gdas.t??z.atmf009.ensmean.nc
++ /18/atmos/
++ /18/atmos/mem???/
++ /18/atmos/mem???/gdas.t??z.ratminc.nc
++ /18/atmos/gdas.t??z.atmf006.ensmean.nc
++ /18/atmos/gdas.t??z.atmf009.ensmean.nc
- *
E
# This directory is a good candidate for compression
diff --git a/parm/transfer_rdhpcs_gfs.list b/parm/transfer_rdhpcs_gfs.list
index 72e7046017..34e006e179 100644
--- a/parm/transfer_rdhpcs_gfs.list
+++ b/parm/transfer_rdhpcs_gfs.list
@@ -28,7 +28,6 @@ com/gfs/_ENVIR_/gfs._PDY_/ _REMOTEPATH_/com/gfs/_ENVIR_/gfs._PDY_/
+ /??/
+ /??/atmos/
+ /??/atmos/gfs.t??z.*bufr*
-+ /??/atmos/gfs.t??z.sstgrb
+ /??/atmos/gfs.t??z.engicegrb
+ /??/atmos/gfs.t??z.*tcvitals*tm00
+ /??/atmos/gfs.t??z.atmanl.nc
@@ -36,7 +35,6 @@ com/gfs/_ENVIR_/gfs._PDY_/ _REMOTEPATH_/com/gfs/_ENVIR_/gfs._PDY_/
+ /??/atmos/gfs.t??z.master.grb2f*
+ /??/atmos/gfs.t??z.pgrb2.0p25.f*
+ /??/atmos/gfs.t??z.sfluxgrbf*
-+ /??/atmos/gfs.t??z.gtg.grb2f*
+ /??/atmos/gfs.t??z.gcip.f00.grib2
+ /??/atmos/gfs.t??z.atmf000.nc
+ /??/atmos/gfs.t??z.atmf003.nc
diff --git a/scripts/exgfs_wave_post_bndpnt.sh b/scripts/exgfs_wave_post_bndpnt.sh
deleted file mode 100755
index 0851f6fb52..0000000000
--- a/scripts/exgfs_wave_post_bndpnt.sh
+++ /dev/null
@@ -1,621 +0,0 @@
-#!/bin/bash
-#
-################################################################################
-#
-# UNIX Script Documentation Block
-# Script name: exgfs_wave_post_bndpnt.sh
-# Script description: Creates output products from binary WW3 data
-#
-# Author: Jose-Henrique Alves Org: NCEP/EMC Date: 2019-12-06
-# Abstract: This script is the boundary point postprocessor for the wave component in GFS.
-#
-# wave_outp_spec.sh : generates spectral data for output locations
-# wave_outp_cat.sh : cats the by hour into the single output file
-# wave_tar.sh : tars the spectral and bulletin multiple files
-#
-# Script history log:
-# 2019-12-06 J-Henrique Alves: First Version adapted from HTolman post.sh 2007
-# 2020-06-10 J-Henrique Alves: Porting to R&D machine Hera
-# 2020-07-30 Jessica Meixner: Points only - no gridded data + optimization
-# 2020-09-29 Jessica Meixner: optimized by changing loop structures
-#
-# $Id$
-#
-# Attributes:
-# Language: Bourne-again (Bash) Shell
-# Machine: WCOSS-DELL-P3
-#
-###############################################################################
-#
-# --------------------------------------------------------------------------- #
-# 0. Preparations
-# 0.a Basic modes of operation
-
- set -x
- # Use LOUD variable to turn on/off trace. Defaults to YES (on).
- export LOUD=${LOUD:-YES}; [[ $LOUD = yes ]] && export LOUD=YES
- [[ "$LOUD" != YES ]] && set +x
-
- cd $DATA
-
- # Set wave model ID tag to include member number
- # if ensemble; waveMEMB var empty in deterministic
- export WAV_MOD_TAG=${CDUMP}wave${waveMEMB}
- FHMAX_WAV_IBP=${FHMAX_WAV_IBP:-180}
-
- postmsg "$jlogfile" "HAS BEGUN on `hostname`"
-
- msg="Starting WAVE BNDPNT POSTPROCESSOR SCRIPT for $WAV_MOD_TAG"
- postmsg "$jlogfile" "$msg"
-
- set +x
- echo ' '
- echo ' *****************************************'
- echo ' *** WAVE BND PNT POSTPROCESSOR SCRIPT ***'
- echo ' *****************************************'
- echo ' '
- echo "Starting at : `date`"
- echo '-------------'
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
-
- # Script will run only if pre-defined NTASKS
- # The actual work is distributed over these tasks.
- if [ -z ${NTASKS} ]
- then
- echo "FATAL ERROR: requires NTASKS to be set "
- err=1; export err;${errchk}
- exit $err
- fi
-
-# 0.b Defining model grids
-
- waveuoutpGRD=${waveuoutpGRD:?buoyNotSet}
-
-# 0.c Define a temporary directory for storing ascii point output files
-# and flush it
-
- export STA_DIR=$DATA/station_ascii_files
- if [ -d $STA_DIR ]
- then
- rm -rf ${STA_DIR}
- fi
- mkdir -p ${STA_DIR}
- mkdir -p ${STA_DIR}/ibp
- mkdir -p ${STA_DIR}/ibpfhr
-
- set +x
- echo ' '
- echo 'Grid information :'
- echo '-------------------'
- echo " Output points : $waveuoutpGRD"
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
-
-# --------------------------------------------------------------------------- #
-# 1. Get files that are used by most child scripts
-
- exit_code=0
-
- set +x
- echo ' '
- echo 'Preparing input files :'
- echo '-----------------------'
- [[ "$LOUD" = YES ]] && set -x
-
-# 1.a Model definition files and output files (set up using poe)
-
-# 1.a.1 Set up the parallel command tasks
-
- rm -f cmdfile
- touch cmdfile
- chmod 744 cmdfile
-
- [[ "$LOUD" = YES ]] && set -x
-
-# Copy model definition file for points
- if [ -f "$COMIN/rundata/${CDUMP}wave.mod_def.${waveuoutpGRD}" ]
- then
- set +x
- echo " Mod def file for $waveuoutpGRD found in ${COMIN}/rundata. copying ...."
- [[ "$LOUD" = YES ]] && set -x
-
- cp -f $COMIN/rundata/${CDUMP}wave.mod_def.${waveuoutpGRD} mod_def.${waveuoutpGRD}
- fi
-
- if [ ! -f mod_def.${waveuoutpGRD} ]
- then
- set +x
- echo ' '
- echo '*************************************************** '
- echo " FATAL ERROR : NO MOD_DEF FILE mod_def.${waveuoutpGRD} "
- echo '*************************************************** '
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
- postmsg "$jlogfile" "FATAL ERROR : NO MOD_DEF file mod_def.${waveuoutpGRD}"
- err=2; export err;${errchk}
- exit $err
- else
- set +x
- echo "File mod_def.${waveuoutpGRD} found. Syncing to all nodes ..."
- [[ "$LOUD" = YES ]] && set -x
- fi
-
-# 1.b Output locations file
-
- rm -f buoy.loc
-
- if [ -f $FIXwave/wave_${NET}.buoys ]
- then
- cp -f $FIXwave/wave_${NET}.buoys buoy.loc
- fi
-
- if [ -s buoy.loc ]
- then
- set +x
- echo " buoy.loc and buoy.ibp copied and processed ($FIXwave/wave_${NET}.buoys)."
- [[ "$LOUD" = YES ]] && set -x
- else
- set +x
- echo ' '
- echo '************************************* '
- echo ' FATAL ERROR : NO BUOY LOCATION FILE '
- echo '************************************* '
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
- postmsg "$jlogfile" "FATAL ERROR : NO BUOY LOCATION FILE"
- err=3; export err;${errchk}
- exit $err
- fi
-
- sed -n '/^\$.*/!p' buoy.loc | grep IBP > buoy.ibp
- if [ -s buoy.ibp ]; then
- set +x
- echo " buoy.loc and buoy.ibp copied and processed ($FIXwave/wave_${NET}.buoys)."
- [[ "$LOUD" = YES ]] && set -x
- else
- set +x
- echo ' '
- echo '***************************************** '
- echo ' FATAL ERROR : NO IBP BUOY LOCATION FILE '
- echo '***************************************** '
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
- postmsg "$jlogfile" "FATAL ERROR : NO IBP BUOY LOCATION FILE"
- err=4; export err;${errchk}
- exit $err
- fi
-
-# 1.c Input template files
-
- if [ -f $FIXwave/ww3_outp_spec.inp.tmpl ]
- then
- cp -f $FIXwave/ww3_outp_spec.inp.tmpl ww3_outp_spec.inp.tmpl
- fi
-
- if [ -f ww3_outp_spec.inp.tmpl ]
- then
- set +x
- echo " ww3_outp_spec.inp.tmpl copied. Syncing to all grids ..."
- [[ "$LOUD" = YES ]] && set -x
- else
- set +x
- echo ' '
- echo '*********************************************** '
- echo '*** ERROR : NO TEMPLATE FOR SPEC INPUT FILE *** '
- echo '*********************************************** '
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
- postmsg "$jlogfile" "NON-FATAL ERROR : NO TEMPLATE FOR SPEC INPUT FILE"
- exit_code=3
- fi
-
-# 1.d Getting buoy information for points
-
- ymdh=`$NDATE -${WAVHINDH} $CDATE`
- tstart="`echo $ymdh | cut -c1-8` `echo $ymdh | cut -c9-10`0000"
- dtspec=3600. # default time step (not used here)
- sed -e "s/TIME/$tstart/g" \
- -e "s/DT/$dtspec/g" \
- -e "s/POINT/1/g" \
- -e "s/ITYPE/0/g" \
- -e "s/FORMAT/F/g" \
- ww3_outp_spec.inp.tmpl > ww3_outp.inp
-
- ln -s mod_def.$waveuoutpGRD mod_def.ww3
- YMD=$(echo $CDATE | cut -c1-8)
- HMS="$(echo $CDATE | cut -c9-10)0000"
- if [ -f $COMIN/rundata/${WAV_MOD_TAG}.out_pnt.${waveuoutpGRD}.${YMD}.${HMS} ]
- then
- ln -s $COMIN/rundata/${WAV_MOD_TAG}.out_pnt.${waveuoutpGRD}.${YMD}.${HMS} ./out_pnt.${waveuoutpGRD}
- else
- echo '*************************************************** '
- echo " FATAL ERROR : NO RAW POINT OUTPUT FILE out_pnt.${waveuoutpGRD}.${YMD}.${HMS} "
- echo '*************************************************** '
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
- echo "$WAV_MOD_TAG post $waveuoutpGRD $CDATE $cycle : field output missing."
- postmsg "$jlogfile" "FATAL ERROR : NO RAW POINT OUTPUT FILE out_pnt.${waveuoutpGRD}.${YMD}.${HMS}"
- err=5; export err;${errchk}
- fi
-
- rm -f buoy_tmp.loc buoy_log.ww3 ww3_oup.inp
- ln -fs ./out_pnt.${waveuoutpGRD} ./out_pnt.ww3
- ln -fs ./mod_def.${waveuoutpGRD} ./mod_def.ww3
- export pgm=ww3_outp;. prep_step
- $EXECwave/ww3_outp > buoy_lst.loc 2>&1
- export err=$?;err_chk
-
-
- if [ "$err" != '0' ] && [ ! -f buoy_log.ww3 ]
- then
- pgm=wave_post
- msg="ABNORMAL EXIT: ERROR IN ww3_outp"
- postmsg "$jlogfile" "$msg"
- set +x
- echo ' '
- echo '******************************************** '
- echo '*** FATAL ERROR : ERROR IN ww3_outp *** '
- echo '******************************************** '
- echo ' '
- cat buoy_tmp.loc
- echo "$WAV_MOD_TAG post $date $cycle : buoy log file failed to be created."
- echo $msg
- [[ "$LOUD" = YES ]] && set -x
- err=6;export err;${errchk}
- exit $err
- fi
-
-
-# Create new buoy_log.ww3 including all IBP files
- cat buoy.ibp | awk '{print $3}' | sed 's/'\''//g' > ibp_tags
- grep -F -f ibp_tags buoy_log.ww3 > buoy_log.tmp
- rm -f buoy_log.ibp
- mv buoy_log.tmp buoy_log.ibp
-
- grep -F -f ibp_tags buoy_lst.loc > buoy_tmp1.loc
- sed '$d' buoy_tmp1.loc > buoy_tmp2.loc
- ibpoints=`awk '{ print $1 }' buoy_tmp2.loc`
- Nibp=`wc buoy_tmp2.loc | awk '{ print $1 }'`
- rm -f buoy_tmp1.loc buoy_tmp2.loc
- if [ -s buoy_log.ibp ]
- then
- set +x
- echo 'IBP log file created. Syncing to all nodes ...'
- [[ "$LOUD" = YES ]] && set -x
- else
- set +x
- echo ' '
- echo '********************************************** '
- echo '*** FATAL ERROR : NO IBP LOG FILE CREATED *** '
- echo '********************************************** '
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
- echo "$WAV_MOD_TAG post $date $cycle : ibp log file missing."
- postmsg "$jlogfile" "FATAL ERROR : NO IBP LOG FILE GENERATED FOR SPEC AND BULLETIN FILES"
- err=7;export err;${errchk}
- exit $err
- fi
-
-# 1.e Data summary
-
- set +x
- echo ' '
- echo " Input files read and processed at : `date`"
- echo ' '
- echo ' Data summary : '
- echo ' ---------------------------------------------'
- echo " Sufficient data for Input Boundary Points ($Nibp points)"
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
-
-# --------------------------------------------------------------------------- #
-# 2. Make files for processing boundary points
-#
-# 2.a Command file set-up
-
- set +x
- echo ' Making command file for wave boundary points '
- [[ "$LOUD" = YES ]] && set -x
-
- rm -f cmdfile
- touch cmdfile
- chmod 744 cmdfile
-
-# 2.a.1 Loop over forecast time to generate post files
- fhr=$FHMIN_WAV
- fhrp=$fhr
- echo " Starting processing wave boundary points at: `date`"
-
- while [ $fhr -le $FHMAX_WAV_IBP ]; do
-
- ymdh=`$NDATE $fhr $CDATE`
- YMD=$(echo $ymdh | cut -c1-8)
- HMS="$(echo $ymdh | cut -c9-10)0000"
- YMDHMS=${YMD}${HMS}
- FH3=$(printf %03i $fhr)
-
-
- rm -f tmpcmdfile.$FH3
- touch tmpcmdfile.$FH3
-
- mkdir output_$YMDHMS
- cd output_$YMDHMS
-
-# Create instances of directories for spec output
- export SPECDATA=${DATA}/output_$YMDHMS
- ln -fs $DATA/mod_def.${waveuoutpGRD} mod_def.ww3
-
- pfile=$COMIN/rundata/${WAV_MOD_TAG}.out_pnt.${waveuoutpGRD}.${YMD}.${HMS}
- if [ -f ${pfile} ]
- then
- ln -fs ${pfile} ./out_pnt.${waveuoutpGRD}
- else
- echo " FATAL ERROR : NO RAW POINT OUTPUT FILE out_pnt.$waveuoutpGRD.${YMD}.${HMS}
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
- postmsg "$jlogfile" "FATAL ERROR : NO RAW POINT OUTPUT FILE out_pnt.$waveuoutpGRD.${YMD}.${HMS}
- err=8; export err;${errchk}
- exit $err
- fi
-
- cd $DATA
- export dtspec=3600.
- for buoy in $ibpoints
- do
- echo "$USHwave/wave_outp_spec.sh $buoy $ymdh ibp $SPECDATA > $SPECDATA/ibp_$buoy.out 2>&1" >> tmpcmdfile.$FH3
- done
- split -n l/1/10 tmpcmdfile.$FH3 > cmdfile.${FH3}.01
- split -n l/2/10 tmpcmdfile.$FH3 > cmdfile.${FH3}.02
- split -n l/3/10 tmpcmdfile.$FH3 > cmdfile.${FH3}.03
- split -n l/4/10 tmpcmdfile.$FH3 > cmdfile.${FH3}.04
- split -n l/5/10 tmpcmdfile.$FH3 > cmdfile.${FH3}.05
- split -n l/6/10 tmpcmdfile.$FH3 > cmdfile.${FH3}.06
- split -n l/7/10 tmpcmdfile.$FH3 > cmdfile.${FH3}.07
- split -n l/8/10 tmpcmdfile.$FH3 > cmdfile.${FH3}.08
- split -n l/9/10 tmpcmdfile.$FH3 > cmdfile.${FH3}.09
- split -n l/10/10 tmpcmdfile.$FH3 > cmdfile.${FH3}.10
- rm tmpcmdfile.$FH3
- chmod 744 cmdfile.${FH3}.01 cmdfile.${FH3}.02 cmdfile.${FH3}.03 cmdfile.${FH3}.04
- chmod 744 cmdfile.${FH3}.05 cmdfile.${FH3}.06 cmdfile.${FH3}.07 cmdfile.${FH3}.08
- chmod 744 cmdfile.${FH3}.09 cmdfile.${FH3}.10
- echo "$DATA/cmdfile.${FH3}.01" >> cmdfile
- echo "$DATA/cmdfile.${FH3}.02" >> cmdfile
- echo "$DATA/cmdfile.${FH3}.03" >> cmdfile
- echo "$DATA/cmdfile.${FH3}.04" >> cmdfile
- echo "$DATA/cmdfile.${FH3}.05" >> cmdfile
- echo "$DATA/cmdfile.${FH3}.06" >> cmdfile
- echo "$DATA/cmdfile.${FH3}.07" >> cmdfile
- echo "$DATA/cmdfile.${FH3}.08" >> cmdfile
- echo "$DATA/cmdfile.${FH3}.09" >> cmdfile
- echo "$DATA/cmdfile.${FH3}.10" >> cmdfile
-
- FHINCP=$(( DTPNT_WAV / 3600 ))
- if [ $fhr = $fhrp ]
- then
- fhrp=$((fhr+FHINCP))
- fi
-
- fhr=$fhrp # no gridded output, loop with out_pnt stride
-
- done
-
- if [ ${CFP_MP:-"NO"} = "YES" ]; then
- nfile=0
- ifile=0
- iline=1
- ifirst='yes'
- nlines=$( wc -l cmdfile | awk '{print $1}' )
- while [ $iline -le $nlines ]; do
- line=$( sed -n ''$iline'p' cmdfile )
- if [ -z "$line" ]; then
- break
- else
- if [ "$ifirst" = 'yes' ]; then
- echo "#!/bin/sh" > cmdmfile.$nfile
- echo "$nfile cmdmfile.$nfile" >> cmdmprog
- chmod 744 cmdmfile.$nfile
- fi
- echo $line >> cmdmfile.$nfile
- nfile=$(( nfile + 1 ))
- if [ $nfile -eq $NTASKS ]; then
- nfile=0
- ifirst='no'
- fi
- iline=$(( iline + 1 ))
- fi
- done
- fi
-
- wavenproc=`wc -l cmdfile | awk '{print $1}'`
- wavenproc=`echo $((${wavenproc}<${NTASKS}?${wavenproc}:${NTASKS}))`
-
- set +x
- echo ' '
- echo " Executing the boundary point scripts at : `date`"
- echo ' ------------------------------------'
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
-
- if [ "$wavenproc" -gt '1' ]
- then
- if [ ${CFP_MP:-"NO"} = "YES" ]; then
- ${wavempexec} -n ${wavenproc} ${wave_mpmd} cmdmprog
- else
- ${wavempexec} ${wavenproc} ${wave_mpmd} cmdfile
- fi
- exit=$?
- else
- chmod 744 cmdfile
- ./cmdfile
- exit=$?
- fi
-
- if [ "$exit" != '0' ]
- then
- set +x
- echo ' '
- echo '*************************************'
- echo '*** FATAL ERROR: CMDFILE FAILED ***'
- echo '*************************************'
- echo ' See Details Below '
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
- err=9; export err;${errchk}
- exit $err
- fi
-
-
-# 2.b Loop over each buoy to cat the final buoy file for all fhr
-
- cd $DATA
-
- echo "Creating cmdfile for cat bouy : `date`"
- rm -f cmdfile.bouy
- touch cmdfile.bouy
- chmod 744 cmdfile.bouy
- CATOUTDIR=${DATA}/ibp_cat_out
- mkdir -p ${CATOUTDIR}
- for buoy in $ibpoints
- do
- echo "$USHwave/wave_outp_cat.sh $buoy $FHMAX_WAV_IBP ibp > ${CATOUTDIR}/ibp_cat_$buoy.out 2>&1" >> cmdfile.bouy
- done
-
- if [ ${CFP_MP:-"NO"} = "YES" ]; then
- nfile=0
- ifile=0
- iline=1
- ifirst='yes'
- nlines=$( wc -l cmdfile.bouy | awk '{print $1}' )
- while [ $iline -le $nlines ]; do
- line=$( sed -n ''$iline'p' cmdfile.bouy )
- if [ -z "$line" ]; then
- break
- else
- if [ "$ifirst" = 'yes' ]; then
- echo "#!/bin/sh" > cmdfile.bouy.$nfile
- echo "$nfile cmdfile.bouy.$nfile" >> cmdmprogbouy
- chmod 744 cmdfile.bouy.$nfile
- fi
- echo $line >> cmdfile.bouy.$nfile
- nfile=$(( nfile + 1 ))
- if [ $nfile -eq $NTASKS ]; then
- nfile=0
- ifirst='no'
- fi
- iline=$(( iline + 1 ))
- fi
- done
- fi
-
- wavenproc=`wc -l cmdfile.bouy | awk '{print $1}'`
- wavenproc=`echo $((${wavenproc}<${NTASKS}?${wavenproc}:${NTASKS}))`
-
- set +x
- echo ' '
- echo " Executing the boundary point cat script at : `date`"
- echo ' ------------------------------------'
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
-
- if [ "$wavenproc" -gt '1' ]
- then
- if [ ${CFP_MP:-"NO"} = "YES" ]; then
- ${wavempexec} -n ${wavenproc} ${wave_mpmd} cmdmprogbouy
- else
- ${wavempexec} ${wavenproc} ${wave_mpmd} cmdfile.bouy
- fi
- exit=$?
- else
- chmod 744 ${fcmdnow}
- ./${fcmdnow}
- exit=$?
- fi
-
- if [ "$exit" != '0' ]
- then
- set +x
- echo ' '
- echo '*************************************'
- echo '*** FATAL ERROR: CMDFILE FAILED ***'
- echo '*************************************'
- echo ' See Details Below '
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
- err=10; export err;${errchk}
- exit $err
- fi
-
-# --------------------------------------------------------------------------- #
-# 3. Compress point output data into tar files
-
-# 3.a Set up cmdfile
-
- rm -f cmdtarfile
- touch cmdtarfile
- chmod 744 cmdtarfile
-
- set +x
- echo ' '
- echo ' Making command file for taring all point output files.'
-
- [[ "$LOUD" = YES ]] && set -x
-
- echo "$USHwave/wave_tar.sh $WAV_MOD_TAG ibp $Nibp > ${WAV_MOD_TAG}_ibp_tar.out 2>&1 " >> cmdtarfile
-
- wavenproc=`wc -l cmdtarfile | awk '{print $1}'`
- wavenproc=`echo $((${wavenproc}<${NTASKS}?${wavenproc}:${NTASKS}))`
-
- set +x
- echo ' '
- echo " Executing the wave_tar scripts at : `date`"
- echo ' ------------------------------------'
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
-
- chmod 744 cmdtarfile
- ./cmdtarfile
- exit=$?
-
- if [ "$exit" != '0' ]
- then
- set +x
- echo ' '
- echo '*************************************'
- echo '*** FATAL ERROR: CMDFILE FAILED ***'
- echo '*************************************'
- echo ' See Details Below '
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
- err=11; export err;${errchk}
- exit $err
- fi
-
-# --------------------------------------------------------------------------- #
-# 4. Ending output
-
- set +x
- echo ' '
- echo "Ending at : `date`"
- echo '-----------'
- echo ' '
- echo ' *** End of MWW3 bnd pnt postprocessor ***'
- echo ' '
- [[ "$LOUD" = YES ]] && set -x
-
- if [ "$exit_code" -ne '0' ]
- then
- echo " FATAL ERROR: Problem in MWW3 BND PNT POST"
- msg="ABNORMAL EXIT: Problem in MWW3 BND PNT POST"
- postmsg "$jlogfile" "$msg"
- echo $msg
- err=12; export err;${errchk}
- exit $err
- else
- echo " Wave BndPnt Post Completed Normally "
- msg="$job completed normally"
- postmsg "$jlogfile" "$msg"
- exit 0
- fi
-
-# End of MWW3 bnd pnt prostprocessor script ---------------------------------------- #
diff --git a/scripts/exgfs_wave_post_pnt.sh b/scripts/exgfs_wave_post_pnt.sh
index 9028595610..45f74796dd 100755
--- a/scripts/exgfs_wave_post_pnt.sh
+++ b/scripts/exgfs_wave_post_pnt.sh
@@ -101,10 +101,6 @@
# --------------------------------------------------------------------------- #
# 1. Get files that are used by most child scripts
- export DOPNT_WAV='YES' # Station data
- export DOSPC_WAV='YES' # Spectral post
- export DOBLL_WAV='YES' # Bulletin post
-
exit_code=0
set +x
@@ -165,8 +161,13 @@
if [ -f $FIXwave/wave_${NET}.buoys ]
then
cp -f $FIXwave/wave_${NET}.buoys buoy.loc.temp
-# Reverse grep to exclude IBP points
- sed -n '/^\$.*/!p' buoy.loc.temp | grep -v IBP > buoy.loc
+ if [ "$DOBNDPNT_WAV" = YES ]; then
+ #only do boundary points
+ sed -n '/^\$.*/!p' buoy.loc.temp | grep IBP > buoy.loc
+ else
+ #exclude boundary points
+ sed -n '/^\$.*/!p' buoy.loc.temp | grep -v IBP > buoy.loc
+ fi
fi
if [ -s buoy.loc ]
@@ -185,7 +186,6 @@
postmsg "$jlogfile" "FATAL ERROR : NO BUOY LOCATION FILE"
err=3; export err;${errchk}
exit $err
- DOPNT_WAV='NO'
DOSPC_WAV='NO'
DOBLL_WAV='NO'
fi
@@ -299,17 +299,17 @@
exit $err
fi
-# Create new buoy_log.ww3 excluding all IBP files
+# Create new buoy_log.ww3
cat buoy.loc | awk '{print $3}' | sed 's/'\''//g' > ibp_tags
grep -F -f ibp_tags buoy_log.ww3 > buoy_log.tmp
rm -f buoy_log.dat
mv buoy_log.tmp buoy_log.dat
- grep -F -f ibp_tags buoy_lst.loc > buoy_tmp1.loc
- sed '$d' buoy_tmp1.loc > buoy_tmp2.loc
- buoys=`awk '{ print $1 }' buoy_tmp2.loc`
- Nb=`wc buoy_tmp2.loc | awk '{ print $1 }'`
- rm -f buoy_tmp1.loc buoy_tmp2.loc
+ grep -F -f ibp_tags buoy_lst.loc > buoy_tmp1.loc
+ #sed '$d' buoy_tmp1.loc > buoy_tmp2.loc
+ buoys=`awk '{ print $1 }' buoy_tmp1.loc`
+ Nb=`wc buoy_tmp1.loc | awk '{ print $1 }'`
+ rm -f buoy_tmp1.loc
if [ -s buoy_log.dat ]
then
@@ -342,6 +342,7 @@
echo ' ---------------------------------------------'
echo " Sufficient data for spectral files : $DOSPC_WAV ($Nb points)"
echo " Sufficient data for bulletins : $DOBLL_WAV ($Nb points)"
+ echo " Boundary points : $DOBNDPNT_WAV"
echo ' '
[[ "$LOUD" = YES ]] && set -x
@@ -360,7 +361,7 @@
# 1.a.2 Loop over forecast time to generate post files
fhr=$FHMIN_WAV
- while [ $fhr -le $FHMAX_WAV ]; do
+ while [ $fhr -le $FHMAX_WAV_PNT ]; do
echo " Creating the wave point scripts at : `date`"
ymdh=`$NDATE $fhr $CDATE`
@@ -377,7 +378,7 @@
# Create instances of directories for spec and gridded output
export SPECDATA=${DATA}/output_$YMDHMS
export BULLDATA=${DATA}/output_$YMDHMS
- ln -fs $DATA/mod_def.${waveuoutpGRD} mod_def.ww3
+ cp $DATA/mod_def.${waveuoutpGRD} mod_def.${waveuoutpGRD}
pfile=$COMIN/rundata/${WAV_MOD_TAG}.out_pnt.${waveuoutpGRD}.${YMD}.${HMS}
if [ -f ${pfile} ]
@@ -526,7 +527,7 @@
then
for buoy in $buoys
do
- echo "$USHwave/wave_outp_cat.sh $buoy $FHMAX_WAV spec > ${CATOUTDIR}/spec_cat_$buoy.out 2>&1" >> cmdfile.bouy
+ echo "$USHwave/wave_outp_cat.sh $buoy $FHMAX_WAV_PNT spec > ${CATOUTDIR}/spec_cat_$buoy.out 2>&1" >> cmdfile.bouy
done
fi
@@ -534,7 +535,7 @@
then
for buoy in $buoys
do
- echo "$USHwave/wave_outp_cat.sh $buoy $FHMAX_WAV bull > ${CATOUTDIR}/bull_cat_$buoy.out 2>&1" >> cmdfile.bouy
+ echo "$USHwave/wave_outp_cat.sh $buoy $FHMAX_WAV_PNT bull > ${CATOUTDIR}/bull_cat_$buoy.out 2>&1" >> cmdfile.bouy
done
fi
@@ -624,16 +625,47 @@
if [ ${CFP_MP:-"NO"} = "YES" ]; then nm=0; fi
if [ ${CFP_MP:-"NO"} = "YES" ]; then
- echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG spec $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
- nm=$(( nm + 1 ))
- echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG bull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
- nm=$(( nm + 1 ))
- echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG cbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
- nm=$(( nm + 1 ))
+ if [ "$DOBNDPNT_WAV" = YES ]; then
+ if [ "$DOSPC_WAV" = YES ]; then
+ echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG ibp $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
+ nm=$(( nm + 1 ))
+ fi
+ if [ "$DOBLL_WAV" = YES ]; then
+ echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG ibpbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
+ nm=$(( nm + 1 ))
+ echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG ibpcbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
+ nm=$(( nm + 1 ))
+ fi
+ else
+ if [ "$DOSPC_WAV" = YES ]; then
+ echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG spec $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
+ nm=$(( nm + 1 ))
+ fi
+ if [ "$DOBLL_WAV" = YES ]; then
+ echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG bull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
+ nm=$(( nm + 1 ))
+ echo "$nm $USHwave/wave_tar.sh $WAV_MOD_TAG cbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
+ nm=$(( nm + 1 ))
+ fi
+ fi
else
- echo "$USHwave/wave_tar.sh $WAV_MOD_TAG spec $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
- echo "$USHwave/wave_tar.sh $WAV_MOD_TAG bull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
- echo "$USHwave/wave_tar.sh $WAV_MOD_TAG cbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
+ if [ "$DOBNDPNT_WAV" = YES ]; then
+ if [ "$DOSPC_WAV" = YES ]; then
+ echo "$USHwave/wave_tar.sh $WAV_MOD_TAG ibp $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
+ fi
+ if [ "$DOBLL_WAV" = YES ]; then
+ echo "$USHwave/wave_tar.sh $WAV_MOD_TAG ibpbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
+ echo "$USHwave/wave_tar.sh $WAV_MOD_TAG ibpcbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
+ fi
+ else
+ if [ "$DOSPC_WAV" = YES ]; then
+ echo "$USHwave/wave_tar.sh $WAV_MOD_TAG spec $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
+ fi
+ if [ "$DOBLL_WAV" = YES ]; then
+ echo "$USHwave/wave_tar.sh $WAV_MOD_TAG bull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
+ echo "$USHwave/wave_tar.sh $WAV_MOD_TAG cbull $Nb > ${WAV_MOD_TAG}_spec_tar.out 2>&1 " >> cmdtarfile
+ fi
+ fi
fi
wavenproc=`wc -l cmdtarfile | awk '{print $1}'`
diff --git a/sorc/checkout.sh b/sorc/checkout.sh
index 4d01b527b7..2102bba6c5 100755
--- a/sorc/checkout.sh
+++ b/sorc/checkout.sh
@@ -32,7 +32,7 @@ if [[ ! -d fv3gfs.fd ]] ; then
git clone https://github.com/ufs-community/ufs-weather-model fv3gfs.fd >> ${topdir}/checkout-fv3gfs.log 2>&1
cd fv3gfs.fd
if [ ${run_ccpp:-"NO"} = "NO" ]; then
- git checkout GFS.v16.0.15
+ git checkout GFS.v16.0.16
else
git checkout b771e5be7e35eaea5ee7f762d644afccab019ed3
fi
@@ -104,7 +104,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.19
+ git checkout gfs_wafs.v6.0.21
cd ${topdir}
else
echo 'Skip. Directory gfs_wafs.fd already exists.'
diff --git a/sorc/link_fv3gfs.sh b/sorc/link_fv3gfs.sh
index afb65ecab2..0d829b246f 100755
--- a/sorc/link_fv3gfs.sh
+++ b/sorc/link_fv3gfs.sh
@@ -343,7 +343,6 @@ cd $pwd/../parm/config
[[ -s config.base ]] && rm -f config.base
if [ $RUN_ENVIR = nco ] ; then
cp -p config.base.nco.static config.base
- cp -p config.resources.nco.static config.resources
else
cp -p config.base.emc.dyn config.base
fi
diff --git a/ush/rocoto/setup_workflow.py b/ush/rocoto/setup_workflow.py
index dd91295026..4a4bfa6bb8 100755
--- a/ush/rocoto/setup_workflow.py
+++ b/ush/rocoto/setup_workflow.py
@@ -48,7 +48,7 @@ def main():
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', 'wavepostbndpnt', 'wavepostpnt']
+ wav_steps = ['waveinit', 'waveprep', 'wavepostsbs', 'wavepostbndpnt', 'wavepostbndpntbll', 'wavepostpnt']
#Implement additional wave jobs at later date
wav_steps_gempak = ['wavegempak']
wav_steps_awips = ['waveawipsbulls', 'waveawipsgridded']
@@ -252,13 +252,13 @@ def get_gdasgfs_resources(dict_configs, cdump='gdas'):
tasks += ['gldas']
if cdump in ['gdas'] and do_wave in ['Y', 'YES'] and do_wave_cdump in ['GDAS', 'BOTH']:
#tasks += ['waveinit', 'waveprep', 'wavepostsbs', 'wavepostbndpnt', 'wavepostpnt', 'wavestat']
- tasks += ['waveinit', 'waveprep', 'wavepostsbs', 'wavepostbndpnt', 'wavepostpnt']
+ tasks += ['waveinit', 'waveprep', 'wavepostsbs', 'wavepostbndpnt', 'wavepostbndpntbll', 'wavepostpnt']
tasks += ['fcst', 'post', 'vrfy', 'arch']
if cdump in ['gfs'] and do_wave in ['Y', 'YES'] and do_wave_cdump in ['GFS', 'BOTH']:
#tasks += ['waveinit', 'waveprep', 'wavepostsbs', 'wavepostbndpnt', 'wavepostpnt', 'wavestat']
- tasks += ['waveinit', 'waveprep', 'wavepostsbs', 'wavepostbndpnt', 'wavepostpnt']
+ tasks += ['waveinit', 'waveprep', 'wavepostsbs', 'wavepostbndpnt', 'wavepostbndpntbll', 'wavepostpnt']
if cdump in ['gfs'] and do_bufrsnd in ['Y', 'YES']:
tasks += ['postsnd']
if cdump in ['gfs'] and do_gempak in ['Y', 'YES']:
@@ -609,6 +609,18 @@ def get_gdasgfs_tasks(dict_configs, cdump='gdas'):
task = wfu.create_wf_task('wavepostbndpnt', cdump=cdump, envar=envars, dependency=dependencies)
dict_tasks['%swavepostbndpnt' % cdump] = task
+ # wavepostbndpntbll
+ if do_wave in ['Y', 'YES'] and cdump in ['gfs']:
+ deps = []
+ data = '&ROTDIR;/%s.@Y@m@d/@H/atmos/%s.t@Hz.logf180.txt' % (cdump,cdump)
+ dep_dict = {'type': 'data', 'data': data}
+ deps.append(rocoto.add_dependency(dep_dict))
+ dep_dict = {'type':'task', 'name':'%swavepostbndpnt' % cdump}
+ deps.append(rocoto.add_dependency(dep_dict))
+ dependencies = rocoto.create_dependency(dep_condition='and', dep=deps)
+ task = wfu.create_wf_task('wavepostbndpntbll', cdump=cdump, envar=envars, dependency=dependencies)
+ dict_tasks['%swavepostbndpntbll' % cdump] = task
+
# wavepostpnt
if do_wave in ['Y', 'YES'] and cdump in ['gdas']:
deps = []
@@ -622,7 +634,7 @@ def get_gdasgfs_tasks(dict_configs, cdump='gdas'):
deps = []
dep_dict = {'type':'task', 'name':'%sfcst' % cdump}
deps.append(rocoto.add_dependency(dep_dict))
- dep_dict = {'type':'task', 'name':'%swavepostbndpnt' % cdump}
+ dep_dict = {'type':'task', 'name':'%swavepostbndpntbll' % cdump}
deps.append(rocoto.add_dependency(dep_dict))
dependencies = rocoto.create_dependency(dep_condition='and', dep=deps)
task = wfu.create_wf_task('wavepostpnt', cdump=cdump, envar=envars, dependency=dependencies)
diff --git a/ush/rocoto/setup_workflow_fcstonly.py b/ush/rocoto/setup_workflow_fcstonly.py
index f10250b310..4d39cc7c12 100755
--- a/ush/rocoto/setup_workflow_fcstonly.py
+++ b/ush/rocoto/setup_workflow_fcstonly.py
@@ -28,7 +28,7 @@
import workflow_utils as wfu
#taskplan = ['getic', 'fv3ic', 'waveinit', 'waveprep', 'fcst', 'post', 'wavepostsbs', 'wavegempak', 'waveawipsbulls', 'waveawipsgridded', 'wavepost', 'wavestat', 'wafs', 'wafsgrib2', 'wafsblending', 'wafsgcip', 'wafsgrib20p25', 'wafsblending0p25', 'vrfy', 'metp', 'arch']
-taskplan = ['getic', 'fv3ic', 'waveinit', 'waveprep', 'fcst', 'post', 'wavepostsbs', 'wavepostbndpnt', 'wavepostpnt', 'wavegempak', 'waveawipsbulls', 'waveawipsgridded', 'wafs', 'wafsgrib2', 'wafsblending', 'wafsgcip', 'wafsgrib20p25', 'wafsblending0p25', 'vrfy', 'metp', 'arch']
+taskplan = ['getic', 'fv3ic', 'waveinit', 'waveprep', 'fcst', 'post', 'wavepostsbs', 'wavepostbndpnt', 'wavepostbndpntbll', 'wavepostpnt', 'wavegempak', 'waveawipsbulls', 'waveawipsgridded', '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)
@@ -401,12 +401,23 @@ def get_workflow(dict_configs, cdump='gdas'):
tasks.append(task)
tasks.append('\n')
+ # wavepostbndpntbll
+ if do_wave in ['Y', 'YES']:
+ deps = []
+ data = '&ROTDIR;/%s.@Y@m@d/@H/atmos/%s.t@Hz.logf180.txt' % (cdump,cdump)
+ dep_dict = {'type': 'data', 'data': data}
+ deps.append(rocoto.add_dependency(dep_dict))
+ dependencies = rocoto.create_dependency(dep=deps)
+ task = wfu.create_wf_task('wavepostbndpntbll', cdump=cdump, envar=envars, dependency=dependencies)
+ tasks.append(task)
+ tasks.append('\n')
+
# wavepostpnt
if do_wave in ['Y', 'YES']:
deps = []
dep_dict = {'type':'task', 'name':'%sfcst' % cdump}
deps.append(rocoto.add_dependency(dep_dict))
- dep_dict = {'type':'task', 'name':'%swavepostbndpnt' % cdump}
+ dep_dict = {'type':'task', 'name':'%swavepostbndpntbll' % cdump}
deps.append(rocoto.add_dependency(dep_dict))
dependencies = rocoto.create_dependency(dep_condition='and', dep=deps)
task = wfu.create_wf_task('wavepostpnt', cdump=cdump, envar=envars, dependency=dependencies)
diff --git a/ush/wave_outp_spec.sh b/ush/wave_outp_spec.sh
index 88d88e8b7f..437ce20460 100755
--- a/ush/wave_outp_spec.sh
+++ b/ush/wave_outp_spec.sh
@@ -37,7 +37,7 @@
specdir=$3
workdir=$4
- YMDHE=`$NDATE $FHMAX_WAV $CDATE`
+ YMDHE=`$NDATE $FHMAX_WAV_PNT $CDATE`
cd $workdir
@@ -146,7 +146,7 @@
# 0.f Links to mother directory
- ln -s ${DATA}/mod_def.${waveuoutpGRD} ./mod_def.ww3
+ ln -s ${DATA}/output_${ymdh}0000/mod_def.${waveuoutpGRD} ./mod_def.ww3
ln -s ${DATA}/output_${ymdh}0000/out_pnt.${waveuoutpGRD} ./out_pnt.ww3
# --------------------------------------------------------------------------- #
@@ -160,7 +160,7 @@
if [ "$specdir" = "bull" ]
then
tstart="`echo $ymdh | cut -c1-8` `echo $ymdh | cut -c9-10`0000"
- truntime="`echo $CDATE | cut -c1-8` `echo $YMDH | cut -c9-10`0000"
+ truntime="`echo $CDATE | cut -c1-8` `echo $CDATE | cut -c9-10`0000"
sed -e "s/TIME/$tstart/g" \
-e "s/DT/$dtspec/g" \
-e "s/POINT/$point/g" \
@@ -249,9 +249,6 @@
# 3.b Clean up the rest
- rm -f ww3_outp.inp
- rm -f mod_def.ww3 out_pnt.ww3
-
cd ..
rm -rf ${specdir}_${bloc}
diff --git a/ush/wave_tar.sh b/ush/wave_tar.sh
index 358be51a92..af816d3636 100755
--- a/ush/wave_tar.sh
+++ b/ush/wave_tar.sh
@@ -70,6 +70,9 @@
filext=$type
if [ "$type" = "ibp" ]; then filext='spec'; fi
+ if [ "$type" = "ibpbull" ]; then filext='bull'; fi
+ if [ "$type" = "ibpcbull" ]; then filext='cbull'; fi
+
rm -rf TAR_${filext}_$ID
mkdir TAR_${filext}_$ID
@@ -92,7 +95,7 @@
exit 2
fi
- cd ${STA_DIR}/${type}
+ cd ${STA_DIR}/${filext}
# --------------------------------------------------------------------------- #
# 2. Generate tar file (spectral files are compressed)