########################################################################
#  Job Name: exglmp_hr00_prdgen.sh.sms
#  Purpose: To post-process gridded observations by converting units
#           to metric and encoding data in GRIB2.  Resulting files will
#           then be sent out via dbnet.
#  Remarks: This script is kicked off upon the successful completion of
#           JGLMP_00GRANALYSIS at the current cycle.
#
#   HISTORY: Jul 27, 2010      - new job for Gridded LAMP
#            Apr 05, 2011      - added logic to place wmo headers
#                                into the glmp analysis grib2 files.
#            Apr 15, 2011      - removed all processing related to 
#                                non-scaled data.
#            Oct 05, 2012      - removed commented out dbn_alerts so                                             
#                                that GLMP data can be sent across the                                           
#                                SBN.                                                                            
#            Dec 03, 2012      - removed dbnet alert of xgb2 files since
#                                these will go through the TOC as per
#                                TIN 11-18-aad.
#
########################################################################
echo GLMPLOG: `date` - begin job exglmp_hr00_prdgen.sh.sm on `hostname`

#######################################################################
#   COPY IN GRIDDED OUTPUT
#######################################################################
cp $COMIN/glmp_hr00_${elm}.co.ra.g.t${HOUR}z .

#######################################################################
# PROGRAM GRIDPOST - PERFORMS POST-PROCESSING OF THE HR00 ANALYSES.
#######################################################################
echo GLMPLOG: `date` - begin running GRIDPOST for HR00

export pgm=glmp_gridpost_2p5
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$PARMlmp/glmp_hr00_granalysis.tdpstns.lst"
export XLFUNIT_27="$PARMlmp/glmp_hr00_granalysis.tdpstns.tbl"
export XLFUNIT_28="$PARMlmp/glmp_hr00_gridpost_${elm}_ids.lst"
export XLFUNIT_29="$FIXlmp/glmp_mos2000id.tbl"
export XLFUNIT_42="glmp_hr00_${elm}.co.ra.g.t${HOUR}z"
$EXEClmp/glmp_gridpost_2p5 < $PARMlmp/glmp_gridpost.cn >> $pgmout 2>errfile
export err=$?; err_chk

echo GLMPLOG: `date` -  GRIDPOST ended

#######################################################################
# PROGRAM RA2GRIB2 - CODES RANDOM ACCESS TDLPACK GLMP FORECASTS INTO
#                    GRIB2.  NEW SCALING FACTORS WERE INTRODUCED TO
#                    MINIMIZE OUTPUT FILE SIZES.
#######################################################################

export pgm=glmp_ra2grib2_2p5
. prep_step                             ##### added SH

export XLFUNIT_31="$FIXlmp/glmp_hr00_gb2sect0-1"
export XLFUNIT_32="$FIXlmp/glmp_gb2sect3_2p5"
export XLFUNIT_34="$FIXlmp/glmp_hr00_gb2sect5.${elm}"
export XLFUNIT_29="$FIXlmp/glmp_mos2000id.tbl"
export XLFUNIT_44="glmp_hr00_${elm}.co.ra.g.t${HOUR}z"

if [[ $elm == "tdp" ]]; then
   echo GLMPLOG: `date` - begin running RA2GRIB2 for HR00 for scaled T

# #######################################################################
# #   COPY IN GRIDDED OUTPUT
# #######################################################################
#   cp $COMIN/glmp_hr00_t.co.gb2.g.t${HOUR}z .
#   cp $COMIN/glmp_hr00_tee.co.gb2.g.t${HOUR}z .
#   cp $COMIN/glmp_hr00_td.co.gb2.g.t${HOUR}z .
#   cp $COMIN/glmp_hr00_tdee.co.gb2.g.t${HOUR}z .
#   cp $COMIN/glmp_hr00_${elm}.co.gb2.g.t${HOUR}z .

#   . prep_step
   startmsg
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_33="$FIXlmp/glmp_hr00_gb2sect4.t"
   export XLFUNIT_60="glmp_hr00_t.co.gb2.g.t${HOUR}z"
   $EXEClmp/glmp_ra2grib2_2p5 < $PARMlmp/glmp_ra2grib2.cn >> $pgmout 2>errfile
   export err=$?; err_chk

   echo GLMPLOG: `date` -  RA2GRIB2 ended

   echo GLMPLOG: `date` - begin running RA2GRIB2 for HR00 for scaled TEE

#   . prep_step
   startmsg
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_33="$FIXlmp/glmp_hr00_gb2sect4.tee"
   export XLFUNIT_60="glmp_hr00_tee.co.gb2.g.t${HOUR}z"
   $EXEClmp/glmp_ra2grib2_2p5 < $PARMlmp/glmp_ra2grib2.cn >> $pgmout 2>errfile
   export err=$?; err_chk

   echo GLMPLOG: `date` -  RA2GRIB2 ended

   echo GLMPLOG: `date` - begin running RA2GRIB2 for HR00 for scaled Td

#   . prep_step
   startmsg
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_33="$FIXlmp/glmp_hr00_gb2sect4.td"
   export XLFUNIT_60="glmp_hr00_td.co.gb2.g.t${HOUR}z"
   $EXEClmp/glmp_ra2grib2_2p5 < $PARMlmp/glmp_ra2grib2.cn >> $pgmout 2>errfile
   export err=$?; err_chk

   echo GLMPLOG: `date` -  RA2GRIB2 ended

   echo GLMPLOG: `date` - begin running RA2GRIB2 for HR00 for scaled TdEE

#   . prep_step
   startmsg
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_33="$FIXlmp/glmp_hr00_gb2sect4.tdee"
   export XLFUNIT_60="glmp_hr00_tdee.co.gb2.g.t${HOUR}z"
   $EXEClmp/glmp_ra2grib2_2p5 < $PARMlmp/glmp_ra2grib2.cn >> $pgmout 2>errfile
   export err=$?; err_chk

   echo GLMPLOG: `date` -  RA2GRIB2 ended
else
   echo GLMPLOG: `date` - begin running RA2GRIB2 for HR00 for scaled $elm

#   . prep_step
   startmsg
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_33="$FIXlmp/glmp_hr00_gb2sect4.${elm}"
   export XLFUNIT_60="glmp_hr00_${elm}.co.gb2.g.t${HOUR}z"
   $EXEClmp/glmp_ra2grib2_2p5 < $PARMlmp/glmp_ra2grib2.cn >> $pgmout 2>errfile
   export err=$?; err_chk

   echo GLMPLOG: `date` -  RA2GRIB2 ended
fi

#######################################################################
#   NOW RUN TOCGRIB2 TO PLACE HEADERS IN THE GRIB2 FILES.  NOTE THAT A
#   NEW SET OF GRIB2 FILES ARE CREATED THAT CONTAIN THESE HEADERS.
#######################################################################

export pgm=glmp_tocgrib2_2p5

if [[ $elm == "tdp" ]]; then

   for element in t tee td tdee
   do
      echo GLMPLOG: `date` - begin running TOCGRIB2 for HR00 for ${element}

# #######################################################################
# #   COPY IN GRIDDED OUTPUT
# #######################################################################
#       cp $COMIN/glmp_hr00_${element}.co.gb2.g.t${HOUR}z .

#      . prep_step
      startmsg
      $EXECutil/grb2index glmp_hr00_${element}.co.gb2.g.t${HOUR}z glmp_hr00_${element}.co.gb2.g.t${HOUR}z.index >> $pgmout 2>errfile
      export err=$?; err_chk

      export XLFUNIT_11="glmp_hr00_${element}.co.gb2.g.t${HOUR}z"
      export XLFUNIT_31="glmp_hr00_${element}.co.gb2.g.t${HOUR}z.index"
      export XLFUNIT_51="glmp_hr00_${element}.co.xgb2.g.t${HOUR}z"

#        INSERT THE HOUR INTO THE CONTROL FILE.

      sed -e 's/HH/'${HOUR}'/g' $PARMlmp/glmp_hr00_tocgrib2_${element}_template.cn > glmp_hr00_tocgrib2_${element}.cn

#      . prep_step
      startmsg
      $EXECutil/tocgrib2 < glmp_hr00_tocgrib2_${element}.cn >> $pgmout 2>errfile
      export err=$?; err_chk

      echo GLMPLOG: `date` -  TOCGRIB2 ended for HR00 for ${element}

   done

else

   echo GLMPLOG: `date` - begin running TOCGRIB2 for HR00 for ${elm}

# #######################################################################
# #   COPY IN GRIDDED OUTPUT
# #######################################################################
#    cp $COMIN/glmp_hr00_${elm}.co.gb2.g.t${HOUR}z .

#   . prep_step
   startmsg
   $EXECutil/grb2index glmp_hr00_${elm}.co.gb2.g.t${HOUR}z glmp_hr00_${elm}.co.gb2.g.t${HOUR}z.index >> $pgmout 2>errfile
   export err=$?; err_chk

   export XLFUNIT_11="glmp_hr00_${elm}.co.gb2.g.t${HOUR}z"
   export XLFUNIT_31="glmp_hr00_${elm}.co.gb2.g.t${HOUR}z.index"
   export XLFUNIT_51="glmp_hr00_${elm}.co.xgb2.g.t${HOUR}z"

#        INSERT THE HOUR INTO THE CONTROL FILE.

   sed -e 's/HH/'${HOUR}'/g' $PARMlmp/glmp_hr00_tocgrib2_${elm}_template.cn > glmp_hr00_tocgrib2_${elm}.cn

#   . prep_step
   startmsg
   $EXECutil/tocgrib2 < glmp_hr00_tocgrib2_${elm}.cn >> $pgmout 2>errfile
   export err=$?; err_chk

   echo GLMPLOG: `date` -  TOCGRIB2 ended for HR00 for ${elm}
fi

#########################################################################
#  COPY DATA TO COMOUT DIRECTORY FOR USE IN OTHER RUN TIMES             
#  SEND DATA VIA DBN_ALERT TO EXPERIMENTAL NDGD
#########################################################################

if test $SENDCOM = 'YES'
then
   cp glmp_hr00_${elm}.co.ra.g.t${HOUR}z $COMOUT/.
   if [[ $elm == "tdp" ]]; then
      cp glmp_hr00_t.co.gb2.g.t${HOUR}z $COMOUT/.
      cp glmp_hr00_tee.co.gb2.g.t${HOUR}z $COMOUT/.
      cp glmp_hr00_t.co.xgb2.g.t${HOUR}z $COMOUT/.
      cp glmp_hr00_tee.co.xgb2.g.t${HOUR}z $COMOUT/.
      cp glmp_hr00_t.co.xgb2.g.t${HOUR}z $pcom/.
      cp glmp_hr00_tee.co.xgb2.g.t${HOUR}z $pcom/.
      cp glmp_hr00_td.co.gb2.g.t${HOUR}z $COMOUT/.
      cp glmp_hr00_tdee.co.gb2.g.t${HOUR}z $COMOUT/.
      cp glmp_hr00_td.co.xgb2.g.t${HOUR}z $COMOUT/.
      cp glmp_hr00_tdee.co.xgb2.g.t${HOUR}z $COMOUT/.
      cp glmp_hr00_td.co.xgb2.g.t${HOUR}z $pcom/.
      cp glmp_hr00_tdee.co.xgb2.g.t${HOUR}z $pcom/.
   else
      cp glmp_hr00_${elm}.co.gb2.g.t${HOUR}z $COMOUT/.
      cp glmp_hr00_${elm}.co.xgb2.g.t${HOUR}z $COMOUT/.
      cp glmp_hr00_${elm}.co.xgb2.g.t${HOUR}z $pcom/.
   fi
fi

#######################################################################                                                
#   SEND DATA FROM $pcom TO TOC FOR DISSEMINATION TO SBN AND OPER NDGD                                                 
#######################################################################                                                


if [[ $SENDDBN = "YES" ]]; then
   if [[ $elm == "tdp" ]]; then
      $DBNROOT/bin/dbn_alert NTC_LOW GLAMP $job $pcom/glmp_hr00_t.co.xgb2.g.t${HOUR}z
      $DBNROOT/bin/dbn_alert NTC_LOW GLAMP $job $pcom/glmp_hr00_tee.co.xgb2.g.t${HOUR}z
      $DBNROOT/bin/dbn_alert NTC_LOW GLAMP $job $pcom/glmp_hr00_td.co.xgb2.g.t${HOUR}z
      $DBNROOT/bin/dbn_alert NTC_LOW GLAMP $job $pcom/glmp_hr00_tdee.co.xgb2.g.t${HOUR}z
   elif [[ $elm == "cig" || $elm == "vis" ]]; then
      $DBNROOT/bin/dbn_alert NTC_LOW GLAMP $job $pcom/glmp_hr00_${elm}.co.xgb2.g.t${HOUR}z
   fi
fi

msg="$job has completed normally on `hostname` at `date`"
postmsg "$jlogfile" "$msg"

echo GLMPLOG: `date` - exglmp_hr00_prdgen.sh.sm ended
exit 0
