########################################################################
#  Job Name: exglmp_prdgen.sh.sms
#  Purpose: To post-process gridded LAMP forecats 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_GRANALYSIS at the current cycle.
#
#   HISTORY: Jul 26, 2010      - new job for Gridded LAMP
#            Apr 05, 2011      - added logic to place wmo superheaders
#                                and headers into the glmp forecast 
#                                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.
#            Nov 26, 2012      - modified to alert superheadered files
#                                (those with xsgb2 in filename) from 
#                                /pcom and to remove alerting of non-
#                                superheadered files (those with xgb2
#                                in the filename) from /pcom.
#            Dec 03, 2012      - removed dbnet alert of xgb2 files and 
#                                the commented-out dbnet alerts of xsgb2 
#                                files.  With this change the xsgb2
#                                files will go through the TOC as per
#                                TIN 11-18-aad.
#
########################################################################
echo GLMPLOG: `date` - begin job exglmp_prdgen.sh.sm on `hostname`

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

#######################################################################
# PROGRAM GRIDPOST - PERFORMS POST-PROCESSING OF THE GRIDDED LAMP
#                    FORECASTS.
#######################################################################
echo GLMPLOG: `date` - begin running GRIDPOST for GLMP forecasts

export pgm=glmp_gridpost_2p5

. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$PARMlmp/glmp_sref_co.aug.rand.lst"
export XLFUNIT_27="$FIXlmp/glmp_sref_co.aug.rand.tbl"
export XLFUNIT_28="$PARMlmp/glmp_gridpost_${elm}_ids.lst"
export XLFUNIT_29="$FIXlmp/glmp_mos2000id.tbl"
export XLFUNIT_42="glmp_${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.
#######################################################################

echo GLMPLOG: `date` - begin running RA2GRIB2 for GLMP forecasts with new scaling

export pgm=glmp_ra2grib2_2p5

. prep_step                                       #### SH
export XLFUNIT_31="$FIXlmp/glmp_gb2sect0-1"
export XLFUNIT_32="$FIXlmp/glmp_gb2sect3_2p5"
export XLFUNIT_29="$FIXlmp/glmp_mos2000id.tbl"
export XLFUNIT_44="glmp_${elm}.co.ra.g.t${HOUR}z"
export XLFUNIT_34="$FIXlmp/glmp_gb2sect5.$elm"

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

#######################################################################
#   COPY OVER GRIDDED OUTPUT
#######################################################################
   cp $COMIN/glmp_fcsts_t.co.gb2.g.t${HOUR}z .
   cp $COMIN/glmp_fcsts_td.co.gb2.g.t${HOUR}z .
   
#   . prep_step
   startmsg
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_33="$FIXlmp/glmp_gb2sect4.t"
   export XLFUNIT_60="glmp_fcsts_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 FCST for Td with scaling

#   . prep_step
   startmsg
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_33="$FIXlmp/glmp_gb2sect4.td"
   export XLFUNIT_60="glmp_fcsts_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
else
   echo GLMPLOG: `date` - begin running RA2GRIB2 for FCST for $elm with scaling

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

#   . prep_step
   startmsg
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_33="$FIXlmp/glmp_gb2sect4.${elm}"
   export XLFUNIT_60="glmp_fcsts_${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

#######################################################################
# UTILITY AQM_SMOKE - INSERTS WMO SUPERHEADERS AND INDIVIDUAL HEADERS
#                     INTO ELEMENT-SPECIFIC GRIB2 FILES
#######################################################################

export pgm=aqm_smoke_2p5

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

   for element in t td
   do
      echo GLMPLOG: `date` - begin running AQM_SMOKE for forecasts of ${element}

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

#      . prep_step
      startmsg
      echo 0 > filesize
      export XLFUNIT_11="glmp_fcsts_${element}.co.gb2.g.t${HOUR}z"
      export XLFUNIT_12="filesize"
      export XLFUNIT_31=
      export XLFUNIT_51="glmp_fcsts_${element}.co.xsgb2.g.t${HOUR}z.temporary"

      $EXECutil/aqm_smoke < $PARMlmp/glmp_aqmsmoke_${element}.cn >> $pgmout 2>errfile
      export err=$?; err_chk

#      . prep_step
      startmsg
      echo `ls -l glmp_fcsts_${element}.co.xsgb2.g.t${HOUR}z.temporary | awk '{print $5}'` > filesize
      export XLFUNIT_11="glmp_fcsts_${element}.co.xsgb2.g.t${HOUR}z.temporary"
      export XLFUNIT_12="filesize"
      export XLFUNIT_31=
      export XLFUNIT_51="glmp_fcsts_${element}.co.xsgb2.g.t${HOUR}z"

      $EXECutil/aqm_smoke < $PARMlmp/glmp_aqmsmoke_${element}.cn >> $pgmout 2>errfile
      export err=$?; err_chk

      echo GLMPLOG: `date` -  AQMSMOKE ended for forecasts of ${element}
   done

else

   echo GLMPLOG: `date` - begin running AQM_SMOKE for forecasts for ${elm}
#######################################################################
#   COPY OVER GRIDDED OUTPUT
#######################################################################
   cp $COMIN/glmp_fcsts_${elm}.co.gb2.g.t${HOUR}z  .

#   . prep_step
   startmsg
   echo 0 > filesize
   export XLFUNIT_11="glmp_fcsts_${elm}.co.gb2.g.t${HOUR}z"
   export XLFUNIT_12="filesize"
   export XLFUNIT_31=
   export XLFUNIT_51="glmp_fcsts_${elm}.co.xsgb2.g.t${HOUR}z.temporary"

   $EXECutil/aqm_smoke < $PARMlmp/glmp_aqmsmoke_${elm}.cn >> $pgmout 2>errfile
   export err=$?; err_chk

#   . prep_step
   startmsg
   echo `ls -l glmp_fcsts_${elm}.co.xsgb2.g.t${HOUR}z.temporary | awk '{print $5}'` > filesize
   export XLFUNIT_11="glmp_fcsts_${elm}.co.xsgb2.g.t${HOUR}z.temporary"
   export XLFUNIT_12="filesize"
   export XLFUNIT_31=
   export XLFUNIT_51="glmp_fcsts_${elm}.co.xsgb2.g.t${HOUR}z"

   $EXECutil/aqm_smoke < $PARMlmp/glmp_aqmsmoke_${elm}.cn >> $pgmout 2>errfile
   export err=$?; err_chk

   echo GLMPLOG: `date` -  AQMSMOKE ended for foreacsts of ${elm}

fi

#######################################################################
#   NOW RUN TOCGRIB2 TO CREATE AN IDENTICAL SET OF FILES AS ABOVE SANS
#   THE WMO SUPERHEADERS.
#######################################################################

export pgm=tocgrib2_2p5

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

   for element in t td
   do

      echo GLMPLOG: `date` - begin running TOCGRIB2 for forecasts of ${element}

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

#      . prep_step
      startmsg
      export XLFUNIT_11="glmp_fcsts_${element}.co.gb2.g.t${HOUR}z"
      export XLFUNIT_31="glmp_fcsts_${element}.co.gb2.g.t${HOUR}z.index"
      export XLFUNIT_51="glmp_fcsts_${element}.co.xgb2.g.t${HOUR}z"

      $EXECutil/tocgrib2 < $PARMlmp/glmp_tocgrib2_${element}.cn >> $pgmout 2>errfile
      export err=$?; err_chk

      echo GLMPLOG: `date` -  TOCGRIB2 ended for forecasts of ${element}
   done

else

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

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

#  . prep_step
   startmsg
   export XLFUNIT_11="glmp_fcsts_${elm}.co.gb2.g.t${HOUR}z"
   export XLFUNIT_31="glmp_fcsts_${elm}.co.gb2.g.t${HOUR}z.index"
   export XLFUNIT_51="glmp_fcsts_${elm}.co.xgb2.g.t${HOUR}z"

   $EXECutil/tocgrib2 < $PARMlmp/glmp_tocgrib2_${elm}.cn >> $pgmout 2>errfile
   export err=$?; err_chk

   echo GLMPLOG: `date` -  TOCGRIB2 ended for forecasts of ${elm}

fi

#######################################################################
# COPY FILES TO COM
#######################################################################

if test $SENDCOM = 'YES'
then
   cp glmp_${elm}.co.ra.g.t${HOUR}z $COMOUT/.
   if [[ $elm == "tdp" ]]; then
      cp glmp_fcsts_t.co.gb2.g.t${HOUR}z $COMOUT/.
      cp glmp_fcsts_t.co.xgb2.g.t${HOUR}z $COMOUT/.
      cp glmp_fcsts_t.co.xsgb2.g.t${HOUR}z $COMOUT/.
      cp glmp_fcsts_t.co.xsgb2.g.t${HOUR}z $pcom/.
      cp glmp_fcsts_td.co.gb2.g.t${HOUR}z $COMOUT/.
      cp glmp_fcsts_td.co.xgb2.g.t${HOUR}z $COMOUT/.
      cp glmp_fcsts_td.co.xsgb2.g.t${HOUR}z $COMOUT/.
      cp glmp_fcsts_td.co.xsgb2.g.t${HOUR}z $pcom/.
   else
      cp glmp_fcsts_${elm}.co.gb2.g.t${HOUR}z $COMOUT/.
      cp glmp_fcsts_${elm}.co.xgb2.g.t${HOUR}z $COMOUT/.
      cp glmp_fcsts_${elm}.co.xsgb2.g.t${HOUR}z $COMOUT/.
      cp glmp_fcsts_${elm}.co.xsgb2.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_fcsts_t.co.xsgb2.g.t${HOUR}z
      $DBNROOT/bin/dbn_alert NTC_LOW GLAMP $job $pcom/glmp_fcsts_td.co.xsgb2.g.t${HOUR}z
   elif [[ $elm == "cig" || $elm == "vis" ]]; then
      $DBNROOT/bin/dbn_alert NTC_LOW GLAMP $job $pcom/glmp_fcsts_${elm}.co.xsgb2.g.t${HOUR}z
   fi
fi

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

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