#!/bin/sh
#
#  UTILITY SCRIPT NAME :  expgribf.sh
#               AUTHOR :  Boi Vuong 
#         DATE WRITTEN :  05/15/2000
#
#  Abstract:  This utility script uses WGRIB to extract surface fields from 
#             the GFS/MRF model and uses COPYGB to interpolate to grid 211 
#             for special use.   These grid files post on NCEP ftp server.   
#

set -x

cd $DATA

#####################################
# Define Script/Exec and Variables
#####################################

export WGRIB=/nwprod/util/exec/wgrib
export GRBIDX=/nwprod/util/exec/grbindex
export COPYGB=/nwprod/util/exec/copygb
export CNVGRIB=/nwprod/util/exec/cnvgrib
export WGRIB2=/nwprod/util/exec/wgrib2
export jlogfile=${jlogfile:-jlogfile}
export NET=${NET:-gfs}

msg="Begin job for $job"
postmsg "$jlogfile" "$msg"
echo " "
echo PDY="$PDY"
echo " "

case $NET in
     gfs)prefix='gfs'
         input_pgrbf=$COMIN/$prefix.${cycle}.master.grbf
         fcsthrs_list='00 03 06 09 12 15 18 21 24 27 30 33 36 39
                       42 45 48 51 54 57 60 63 66 69 72 75 78 81
                       84 87 90 93 96 99 102 105 108 111 114 117 120'
         ;;
     mrf)prefix='drfmr'
         input_pgrbf=$COMIN/$prefix.${cycle}.pgrbf
         fcsthrs_list=' 00  12  24  36  48  60  72  84  96 108 120
                       132 144 156 168 180 192 204 216 228 240 252
                       264 276 288 300 312 324 336 348 360 372 384'
         ;;
esac

for hour in $fcsthrs_list 
do 

#############################################################################
#  Using wgrib to inventory $input_pgrbf${hour}
#  WGRIB -verf -s $input_pgrbf${hour} to ${prefix}_inv.${cycle}.pgrbf${hour}
#############################################################################

   $WGRIB -verf -s $input_pgrbf${hour} > ${prefix}_inv.${cycle}.pgrbf${hour}

#################################################################
#  List of fields that need to extract from the GFS/MRF products  
#################################################################

   wgrib_parmlist="APCP RH TMP UGRD VGRD TCDC"

   for field in $wgrib_parmlist
   do
      case $field in
            RH)   CSEL=":RH:2 m above gnd";;
           TMP)   CSEL=":TMP:2 m above gnd";;
          APCP)   CSEL=":APCP:sfc";;
          UGRD)   CSEL=":UGRD:10 m above gnd";;
          VGRD)   CSEL=":VGRD:10 m above gnd";;
          TCDC)   CSEL=":TCDC:atmos col";;
      esac
      grep "$CSEL" < ${prefix}_inv.${cycle}.pgrbf${hour} |  \
          $WGRIB $input_pgrbf${hour} -s -grib -i -o pgrbf.${cycle}.${field}$hour
   done

   for field in $wgrib_parmlist
   do
      cat pgrbf.${cycle}.${field}$hour >> $prefix.${cycle}.pgrib$hour
      rm  pgrbf.${cycle}.${field}$hour
   done

   $COPYGB -xg211 $prefix.${cycle}.pgrib$hour \
           ${prefix}_grb211.${cycle}.pgrbf$hour

   $GRBIDX ${prefix}_grb211.${cycle}.pgrbf$hour \
           ${prefix}_grb211.${cycle}.pgrbif$hour

   rm $prefix.${cycle}.pgrib$hour
   rm ${prefix}_inv.${cycle}.pgrbf${hour}

   ##############################
   # Convert to grib2 format
   ##############################
   $CNVGRIB -g12 -p40 ${prefix}_grb211.${cycle}.pgrbf$hour ${prefix}_grb211.${cycle}.pgrbf${hour}.grib2
   $WGRIB2 ${prefix}_grb211.${cycle}.pgrbf${hour}.grib2 -s >${prefix}_grb211.${cycle}.pgrbf${hour}.grib2.idx

   ##############################
   # Post Files to PCOM
   ##############################
   cp ${prefix}_grb211.${cycle}.pgrbf${hour}.grib2 $COMOUT/.
   cp ${prefix}_grb211.${cycle}.pgrbf${hour}.grib2.idx $COMOUT/.
   cp ${prefix}_grb211.${cycle}.pgrbf$hour   $COMOUT/.
   cp ${prefix}_grb211.${cycle}.pgrbif$hour  $COMOUT/.

done

   ##############################
   # Distribute Data
   ##############################

for hour in $fcsthrs_list 
do 

    if [ "$SENDCOM" = "YES" ]
    then
        ALERT_NET=`echo $NET | tr [a-z] [A-Z]`

        if [ "$SENDDBN" = "YES" -a "$NET" != "mrf" ]
        then
           $DBNROOT/bin/dbn_alert MODEL ${ALERT_NET}_GRB211 $job $COMOUT/${prefix}_grb211.${cycle}.pgrbf$hour
           $DBNROOT/bin/dbn_alert MODEL ${ALERT_NET}_GRBI211 $job $COMOUT/${prefix}_grb211.${cycle}.pgrbif$hour
           
           if [ $SENDDBN_GB2 = YES ]
           then

           $DBNROOT/bin/dbn_alert MODEL ${ALERT_NET}_GRB211_GB2 $job $COMOUT/${prefix}_grb211.${cycle}.pgrbf${hour}.grib2
           $DBNROOT/bin/dbn_alert MODEL ${ALERT_NET}_GRB211_GB2_WIDX $job $COMOUT/${prefix}_grb211.${cycle}.pgrbf${hour}.grib2.idx

           fi
        fi

    fi

done

echo " "
echo "      ==== END  OF  EXTRACT DATA FROM THE PGB FORECAST FILES ====="
echo " "

msg="HAS COMPLETED NORMALLY!"
postmsg "$jlogfile" "$msg"
