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)