diff --git a/Externals.cfg b/Externals.cfg index c24b9155fa..efb7a686e6 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -1,7 +1,7 @@ # External sub-modules of global-workflow [FV3GFS] -tag = GFS.v16.3.1 +tag = GFS.v16.3.22 local_path = sorc/fv3gfs.fd repo_url = https://github.com/ufs-community/ufs-weather-model.git protocol = git diff --git a/docs/Release_Notes.md b/docs/Release_Notes.md index 1a36c59864..2c5656ae73 100644 --- a/docs/Release_Notes.md +++ b/docs/Release_Notes.md @@ -3,10 +3,10 @@ GFS V16.3.22 RELEASE NOTES ------- PRELUDE ------- - The upstream OBSPROC package is updated to v1.3. Along with this are the following companion updates: * workflow and UFS_UTILS package updates to use the new AFWA global snow file due to the hemispheric snow files being phased out * updated GSI code and convinfo file for saildrone observations +* ww3_outp is improved for the wave point output IMPLEMENTATION INSTRUCTIONS --------------------------- @@ -26,7 +26,7 @@ The checkout script extracts the following GFS components: | Component | Tag | POC | | --------- | ----------- | ----------------- | -| MODEL | GFS.v16.3.1 | Jun.Wang@noaa.gov | +| MODEL | GFS.v16.3.22 | Jun.Wang@noaa.gov | | GLDAS | gldas_gfsv16_release.v.2.1.0 | Helin.Wei@noaa.gov | | GSI | gfsda.v16.3.22 | Andrew.Collard@noaa.gov | | UFS_UTILS | ops-gfsv16.3.20 | George.Gayno@noaa.gov | @@ -58,6 +58,7 @@ SORC CHANGES * New UFS_UTILS tag - `emcsfc_snow2mdl` program and associated scripts are updated to process global AFWA snow data * New GSI tag - `src/gsi/read_prepbufr.f90` code update for new saildrone subtype +* New MODEL tag - WW3 program `ww3_outp` and associated scripts are improved to process the per-time-step point outputs more efficiently. JOBS CHANGES ------------ @@ -67,12 +68,15 @@ JOBS CHANGES PARM/CONFIG CHANGES ------------------- -* No changes from GFS v16.3.21 +In `config.resources.emc.dyn` and `config.resources.nco.static` following resources are changed: +* for wavepostbndpnt: npe from 240 to 1; wtime from 1hr to 30min +* for wavepostbndpntbll: npe from 448 to 2; wtime from 1hr to 10min +* for wavepostpnt: npe from 200 to 3; wtime from 1.5hr to 35min SCRIPT CHANGES -------------- -* No changes from GFS v16.3.21 +* `scripts/exgfs_wave_post_pnt.sh` is changed to be compatible with the new `ww3_outp`. FIX CHANGES ----------- @@ -97,14 +101,19 @@ Now ingest: ENVIRONMENT AND RESOURCE CHANGES -------------------------------- -* Increase ncpus from 50 to 60 for gfs_wave_postpnt job. - NCO provided change to avoid ncpu burst warnings. +Reduce the ncpu and wtime as follow: +* for jobs/JGLOBAL_WAVE_POST_BNDPNT; ncpu from 240 to 1; wtime from 1hr to 30min +* for jobs/JGLOBAL_WAVE_POST_BNDPNTBLL; ncpu from 448 to 2; wtime from 1hr to 10min +* for jobs/JGLOBAL_WAVE_POST_PNT; ncpu from 200 to 3; wtime from 1.5hr to 35min PRE-IMPLEMENTATION TESTING REQUIREMENTS --------------------------------------- * Which production jobs should be tested as part of this implementation? * emcsfc_sfc_prep and analysis + * wave_post_pnt + * wave_post_bndpnt + * wave_post_bndpntbll * Does this change require a 30-day evaluation? * No @@ -133,3 +142,5 @@ PREPARED BY Kate.Friedman@noaa.gov George.Gayno@noaa.gov Andrew.Collard@noaa.gov +Jessica.Meixner@noaa.gov +Ali.Salimi@noaa.gov diff --git a/ecf/scripts/gfs/wave/post/jgfs_wave_post_bndpnt.ecf b/ecf/scripts/gfs/wave/post/jgfs_wave_post_bndpnt.ecf index 6db7a431bc..02ecc35868 100755 --- a/ecf/scripts/gfs/wave/post/jgfs_wave_post_bndpnt.ecf +++ b/ecf/scripts/gfs/wave/post/jgfs_wave_post_bndpnt.ecf @@ -3,8 +3,8 @@ #PBS -j oe #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=01:00:00 -#PBS -l select=3:ncpus=80:ompthreads=1 +#PBS -l walltime=00:30:00 +#PBS -l select=1:ncpus=1:ompthreads=1 #PBS -l place=vscatter:exclhost #PBS -l debug=true diff --git a/ecf/scripts/gfs/wave/post/jgfs_wave_post_bndpntbll.ecf b/ecf/scripts/gfs/wave/post/jgfs_wave_post_bndpntbll.ecf index d285f31385..e869872b6f 100755 --- a/ecf/scripts/gfs/wave/post/jgfs_wave_post_bndpntbll.ecf +++ b/ecf/scripts/gfs/wave/post/jgfs_wave_post_bndpntbll.ecf @@ -3,8 +3,8 @@ #PBS -j oe #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=01:00:00 -#PBS -l select=4:ncpus=112:ompthreads=1 +#PBS -l walltime=00:10:00 +#PBS -l select=1:ncpus=2:ompthreads=1 #PBS -l place=vscatter:exclhost #PBS -l debug=true diff --git a/ecf/scripts/gfs/wave/post/jgfs_wave_postpnt.ecf b/ecf/scripts/gfs/wave/post/jgfs_wave_postpnt.ecf index 4990ad8d1f..1b680fe514 100755 --- a/ecf/scripts/gfs/wave/post/jgfs_wave_postpnt.ecf +++ b/ecf/scripts/gfs/wave/post/jgfs_wave_postpnt.ecf @@ -3,8 +3,8 @@ #PBS -j oe #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=01:30:00 -#PBS -l select=4:ncpus=60:ompthreads=1 +#PBS -l walltime=00:35:00 +#PBS -l select=1:ncpus=3:ompthreads=1 #PBS -l place=vscatter:exclhost #PBS -l debug=true diff --git a/parm/config/config.resources.emc.dyn b/parm/config/config.resources.emc.dyn index 105526a692..87482ffdd1 100755 --- a/parm/config/config.resources.emc.dyn +++ b/parm/config/config.resources.emc.dyn @@ -90,26 +90,26 @@ elif [ $step = "wavepostsbs" ]; then elif [ $step = "wavepostbndpnt" ]; then - export wtime_wavepostbndpnt="01:00:00" - export npe_wavepostbndpnt=240 + export wtime_wavepostbndpnt="00:30:00" + export npe_wavepostbndpnt=1 export nth_wavepostbndpnt=1 - export npe_node_wavepostbndpnt=80 + export npe_node_wavepostbndpnt=${npe_wavepostbndpnt} export NTASKS=$npe_wavepostbndpnt elif [ $step = "wavepostbndpntbll" ]; then - export wtime_wavepostbndpntbll="01:00:00" - export npe_wavepostbndpntbll=448 + export wtime_wavepostbndpntbll="00:10:00" + export npe_wavepostbndpntbll=2 export nth_wavepostbndpntbll=1 - export npe_node_wavepostbndpntbll=112 + export npe_node_wavepostbndpntbll=${npe_wavepostbndpntbll} export NTASKS=$npe_wavepostbndpntbll elif [ $step = "wavepostpnt" ]; then - export wtime_wavepostpnt="01:30:00" - export npe_wavepostpnt=200 + export wtime_wavepostpnt="00:35:00" + export npe_wavepostpnt=3 export nth_wavepostpnt=1 - export npe_node_wavepostpnt=60 + export npe_node_wavepostpnt=${npe_wavepostpnt} export NTASKS=$npe_wavepostpnt elif [ $step = "wavegempak" ]; then diff --git a/parm/config/config.resources.nco.static b/parm/config/config.resources.nco.static index 759ad52974..0b6961634e 100755 --- a/parm/config/config.resources.nco.static +++ b/parm/config/config.resources.nco.static @@ -74,26 +74,26 @@ elif [ $step = "wavepostsbs" ]; then elif [ $step = "wavepostbndpnt" ]; then - export wtime_wavepostbndpnt="01:00:00" - export npe_wavepostbndpnt=240 + export wtime_wavepostbndpnt="00:30:00" + export npe_wavepostbndpnt=1 export nth_wavepostbndpnt=1 - export npe_node_wavepostbndpnt=80 + export npe_node_wavepostbndpnt=${npe_wavepostbndpnt} export NTASKS=$npe_wavepostbndpnt elif [ $step = "wavepostbndpntbll" ]; then - export wtime_wavepostbndpntbll="01:00:00" - export npe_wavepostbndpntbll=448 + export wtime_wavepostbndpntbll="00:10:00" + export npe_wavepostbndpntbll=2 export nth_wavepostbndpntbll=1 - export npe_node_wavepostbndpntbll=112 + export npe_node_wavepostbndpntbll=${npe_wavepostbndpntbll} export NTASKS=$npe_wavepostbndpntbll elif [ $step = "wavepostpnt" ]; then - export wtime_wavepostpnt="01:30:00" - export npe_wavepostpnt=200 + export wtime_wavepostpnt="00:35:00" + export npe_wavepostpnt=3 export nth_wavepostpnt=1 - export npe_node_wavepostpnt=60 + export npe_node_wavepostpnt=${npe_wavepostpnt} export NTASKS=$npe_wavepostpnt elif [ $step = "wavegempak" ]; then diff --git a/scripts/exgfs_wave_post_pnt.sh b/scripts/exgfs_wave_post_pnt.sh index 2355d8f51e..c1a9ab9735 100755 --- a/scripts/exgfs_wave_post_pnt.sh +++ b/scripts/exgfs_wave_post_pnt.sh @@ -68,25 +68,19 @@ exit $err fi -# 0.c Defining model grids - - waveuoutpGRD=${waveuoutpGRD:?buoyNotSet} - -# 0.c.1 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 + then rm -rf ${STA_DIR} fi mkdir -p ${STA_DIR} mkdir -p ${STA_DIR}/spec mkdir -p ${STA_DIR}/bull mkdir -p ${STA_DIR}/cbull - mkdir -p ${STA_DIR}/specfhr - mkdir -p ${STA_DIR}/bullfhr - mkdir -p ${STA_DIR}/cbullfhr + +# 0.b Defining model grids + + waveuoutpGRD=${waveuoutpGRD:?buoyNotSet} set +x echo ' ' @@ -109,12 +103,6 @@ # 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 files @@ -151,7 +139,7 @@ fi done -# 1.c Output locations file +# 1.b Output locations file rm -f buoy.loc @@ -186,7 +174,7 @@ DOBLL_WAV='NO' fi -# 1.d Input template files +# 1.c Input template files if [ -f $FIXwave/ww3_outp_spec.inp.tmpl ] then @@ -233,7 +221,7 @@ DOBLL_WAV='NO' fi -# 1.e Getting buoy information for points +# 1.d Getting buoy information for points if [ "$DOSPC_WAV" = 'YES' ] || [ "$DOBLL_WAV" = 'YES' ] then @@ -252,7 +240,7 @@ 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} + ln -s $COMIN/rundata/${WAV_MOD_TAG}.out_pnt.${waveuoutpGRD}.${YMD}.${HMS} ./${WAV_MOD_TAG}.out_pnt.${waveuoutpGRD}.${YMD}.${HMS} else echo '*************************************************** ' echo " FATAL ERROR : NO RAW POINT OUTPUT FILE out_pnt.${waveuoutpGRD}.${YMD}.${HMS} " @@ -264,13 +252,12 @@ fi rm -f buoy_tmp.loc buoy_log.ww3 ww3_oup.inp - ln -fs ./out_pnt.${waveuoutpGRD} ./out_pnt.ww3 + ln -fs ${WAV_MOD_TAG}.out_pnt.${waveuoutpGRD}.${YMD}.${HMS} ./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 + $EXECwave/ww3_outp ${WAV_MOD_TAG} > buoy_lst.loc 2>&1 export err=$?;err_chk - if [ "$err" != '0' ] && [ ! -f buoy_log.ww3 ] then pgm=wave_post @@ -319,10 +306,9 @@ DOSPC_WAV='NO' DOBLL_WAV='NO' fi - fi -# 1.f Data summary +# 1.e Data summary set +x echo ' ' @@ -339,261 +325,69 @@ # --------------------------------------------------------------------------- # # 2. Make files for processing boundary points # -# 2.a Command file set-up +# 2.a creating ww3_outp.inp for each jobs set +x - echo ' Making command file for wave post points ' + echo ' Making input file for wave post point ' [[ "$LOUD" = YES ]] && set -x - rm -f cmdfile - touch cmdfile - chmod 744 cmdfile + grep -F -f ibp_tags buoy_lst.loc | awk '{ print $1 }' > buoys + grep -F -f buoys buoy_log.ww3 | awk '{ print $1 }' > points + points=$(cat points | awk '{print $0 "\\n"}' | tr -d '\n') + rm buoys + + ymdh=`$NDATE -${WAVHINDH} $CDATE` + tstart="`echo $ymdh | cut -c1-8` `echo $ymdh | cut -c9-10`0000" + dtspec=3600. # default time step (not used here) + N=$(( ($FHMAX_WAV_PNT - $FHMIN_WAV) + 1 )) + truntime="`echo $CDATE | cut -c1-8` `echo $CDATE | cut -c9-10`0000" -# 1.a.2 Loop over forecast time to generate post files fhr=$FHMIN_WAV while [ $fhr -le $FHMAX_WAV_PNT ]; do - - echo " Creating the wave point scripts at : `date`" 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 and gridded output - export SPECDATA=${DATA}/output_$YMDHMS - export BULLDATA=${DATA}/output_$YMDHMS - cp $DATA/mod_def.${waveuoutpGRD} mod_def.${waveuoutpGRD} pfile=$COMIN/rundata/${WAV_MOD_TAG}.out_pnt.${waveuoutpGRD}.${YMD}.${HMS} if [ -f ${pfile} ] - then - ln -fs ${pfile} ./out_pnt.${waveuoutpGRD} - else + then + ln -fs ${pfile} ./${WAV_MOD_TAG}.out_pnt.${waveuoutpGRD}.${YMD}.${HMS} + else echo " FATAL ERROR : NO RAW POINT OUTPUT FILE out_pnt.$waveuoutpGRD.${YMD}.${HMS} " echo ' ' [[ "$LOUD" = YES ]] && set -x err=7; export err;${errchk} exit $err fi - - cd $DATA - - if [ "$DOSPC_WAV" = 'YES' ] - then - export dtspec=3600. - for buoy in $buoys - do - echo "$USHwave/wave_outp_spec.sh $buoy $ymdh spec $SPECDATA > $SPECDATA/spec_$buoy.out 2>&1" >> tmpcmdfile.$FH3 - done - fi - - if [ "$DOBLL_WAV" = 'YES' ] - then - export dtspec=3600. - for buoy in $buoys - do - echo "$USHwave/wave_outp_spec.sh $buoy $ymdh bull $SPECDATA > $SPECDATA/bull_$buoy.out 2>&1" >> tmpcmdfile.$FH3 - done - fi - - 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 )) fhrp=$((fhr+FHINCP)) fhr=$fhrp # no gridded output, loop with out_pnt stride - done + if [ "$DOSPC_WAV" = 'YES' ]; then + sed -e "s/TIME/$tstart/g" \ + -e "s/DT/$dtspec/g" \ + -e "s/999/$N/g" \ + -e "s|POINT|$points|g" \ + -e "s/ITYPE/1/g" \ + -e "s/FORMAT/F/g" \ + ww3_outp_spec.inp.tmpl > ww3_outp.inp + + $EXECwave/ww3_outp ${WAV_MOD_TAG} 1> ww3_outp_spec.log 2>&1 - 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 wave 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=8; export err;${errchk} - exit $err - fi - -# 2.b Loop over each buoy to cat the final buoy file for all fhr - - cd $DATA - - echo "Before create cmdfile for cat bouy : `date`" - rm -f cmdfile.bouy - touch cmdfile.bouy - chmod 744 cmdfile.bouy - CATOUTDIR=${DATA}/pnt_cat_out - mkdir -p ${CATOUTDIR} - - if [ "$DOSPC_WAV" = 'YES' ] - then - for buoy in $buoys - do - echo "$USHwave/wave_outp_cat.sh $buoy $FHMAX_WAV_PNT spec > ${CATOUTDIR}/spec_cat_$buoy.out 2>&1" >> cmdfile.bouy - done - fi - - if [ "$DOBLL_WAV" = 'YES' ] - then - for buoy in $buoys - do - echo "$USHwave/wave_outp_cat.sh $buoy $FHMAX_WAV_PNT bull > ${CATOUTDIR}/bull_cat_$buoy.out 2>&1" >> cmdfile.bouy - done - fi - - 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=9; export err;${errchk} - exit $err + if [ "$DOBLL_WAV" = "YES" ]; then + sed -e "s/TIME/$tstart/g" \ + -e "s/DT/$dtspec/g" \ + -e "s/999/$N/g" \ + -e "s|POINT|$points|g" \ + -e "s/REFT/$truntime/g" \ + ww3_outp_bull.inp.tmpl > ww3_outp.inp + + $EXECwave/ww3_outp ${WAV_MOD_TAG} 1> ww3_outp_bull.log 2>&1 fi - # --------------------------------------------------------------------------- # # 3. Compress point output data into tar files @@ -616,43 +410,43 @@ if [ ${CFP_MP:-"NO"} = "YES" ]; then 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 + echo "$USHwave/wave_tar.sh $WAV_MOD_TAG ibp $Nb > ${WAV_MOD_TAG}_ibp_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 + echo "$USHwave/wave_tar.sh $WAV_MOD_TAG ibpbull $Nb > ${WAV_MOD_TAG}_ibpbull_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 + echo "$USHwave/wave_tar.sh $WAV_MOD_TAG ibpcbull $Nb > ${WAV_MOD_TAG}_ibpcbull_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 + echo "$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 + echo "$USHwave/wave_tar.sh $WAV_MOD_TAG bull $Nb > ${WAV_MOD_TAG}_bull_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 + echo "$USHwave/wave_tar.sh $WAV_MOD_TAG cbull $Nb > ${WAV_MOD_TAG}_cbull_tar.out 2>&1 " >> cmdtarfile nm=$(( nm + 1 )) fi fi else 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 + echo "$USHwave/wave_tar.sh $WAV_MOD_TAG ibp $Nb > ${WAV_MOD_TAG}_ibp_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 + echo "$USHwave/wave_tar.sh $WAV_MOD_TAG ibpbull $Nb > ${WAV_MOD_TAG}_ibpbull_tar.out 2>&1 " >> cmdtarfile + echo "$USHwave/wave_tar.sh $WAV_MOD_TAG ibpcbull $Nb > ${WAV_MOD_TAG}_ibpcbull_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 + echo "$USHwave/wave_tar.sh $WAV_MOD_TAG bull $Nb > ${WAV_MOD_TAG}_bull_tar.out 2>&1 " >> cmdtarfile + echo "$USHwave/wave_tar.sh $WAV_MOD_TAG cbull $Nb > ${WAV_MOD_TAG}_cbull_tar.out 2>&1 " >> cmdtarfile fi fi fi @@ -670,7 +464,7 @@ if [ "$wavenproc" -gt '1' ] then if [ ${CFP_MP:-"NO"} = "YES" ]; then - ${wavempexec} -n ${wavenproc} ${wave_mpmd} cmdtarfile + ${wavempexec} ${wave_mpmd} ${DATA}/cmdtarfile else ${wavempexec} ${wavenproc} ${wave_mpmd} cmdtarfile fi diff --git a/sorc/checkout.sh b/sorc/checkout.sh index cb4d80ffdb..56067ee5f2 100755 --- a/sorc/checkout.sh +++ b/sorc/checkout.sh @@ -23,7 +23,7 @@ echo $topdir echo fv3gfs checkout ... if [[ ! -d fv3gfs.fd ]] ; then rm -f ${topdir}/checkout-fv3gfs.log - git clone --recursive --branch GFS.v16.3.1 https://github.com/ufs-community/ufs-weather-model.git fv3gfs.fd >> ${topdir}/checkout-fv3gfs.log 2>&1 + git clone --recursive --branch GFS.v16.3.22 https://github.com/ufs-community/ufs-weather-model.git fv3gfs.fd >> ${topdir}/checkout-fv3gfs.log 2>&1 cd ${topdir} else echo 'Skip. Directory fv3gfs.fd already exists.' diff --git a/ush/wave_tar.sh b/ush/wave_tar.sh index b2054ab4d8..b53ab06704 100755 --- a/ush/wave_tar.sh +++ b/ush/wave_tar.sh @@ -92,8 +92,6 @@ exit 2 fi - cd ${STA_DIR}/${filext} - # --------------------------------------------------------------------------- # # 2. Generate tar file (spectral files are compressed) @@ -109,7 +107,7 @@ while [ "$count" -lt "$countMAX" ] && [ "$tardone" = 'no' ] do - nf=`ls | awk '/'$ID.*.$filext'/ {a++} END {print a}'` + nf=$(ls | awk '/'$ID.*.$filext'/ {a++} END {print a}') nbm2=$(( $nb - 2 )) if [ $nf -ge $nbm2 ] then @@ -202,7 +200,6 @@ exit 4 fi - # if [ "$SENDDBN" = 'YES' -a $type != "ibp" ] if [ "$SENDDBN" = 'YES' ] then set +x