########################################################################
#  Job Name: exglmp_hr00_granalysis.sh.sms
#  Purpose: To perform a current hour observational analysis
#  Remarks: This script is kicked off upon the successful completion of
#           JGLMP_00PREP at the current cycle.
#
#   HISTORY: Jul 27, 2010      - new job for Gridded LAMP
#            Oct 26, 2011      - modified for better error handling when
#                              - observations too few to run tdp
#    Jun 06, 2012 GHIRARDELLI  - MODIFIED TO CREATE RA FILE OF MISSINGS
#                                AND ZERO-BYTE SQ FILE FOR TDP IF THERE 
#                                IS A PROBLEM WITH RUNNING glmp_granalysis.
#
########################################################################
set -x

#######################################################################
# PROGRAM GRANALYSIS - PERFORMS AN ANALYSIS OF THE STATION OBSERVATIONS
#                      ONTO A GRID.
#   FIRST:  COPY THE RANDOM ACCESS TEMPLATE FILE FROM FIX
#######################################################################

cp $FIXlmp/glmp_grid_arc.tmp glmp_hr00_${elm}.co.ra.g.t${HOUR}z

#######################################################################
#   COPY OVER APPROPRIATE INPUT DATA FOR ELEMENT
#######################################################################
if [[ $elm == "tdp" ]]; then
#   CHECK FOR CURRENT HOUR OBS
   if [[ ! -s $COMIN/glmp_tdp_obs4pkd.${HOUR} ]]; then
      echo GLMPLOG: `date` - missing current hour observations. Exiting...
      exit 1
   else
      echo GLMPLOG: `date` - copying current hour OBS4 data
      cp $COMIN/glmp_tdp_obs4pkd.${HOUR} .
   fi
#   CHECK FOR PREVIOUS HOUR OBS
   if [[ ! -s $COMIN/glmp_tdp_obs4pkd.${HOURm1}_m1run ]]; then
      echo GLMPLOG: `date` - missing previous hour observations
      echo GLMPLOG: `date` - Proceeding without previous hour augmentation
   else
      echo GLMPLOG: `date` - copying previous hour OBS4 data
      cp $COMIN/glmp_tdp_obs4pkd.${HOURm1}_m1run glmp_tdp_obs4pkd.${HOURm1}
   fi
elif [[ $elm == "cig" ]]; then
#   CHECK FOR CURRENT HOUR CIG
   if [[ ! -s $COMIN/glmp_compobs.${HOUR} ]]; then
      echo GLMPLOG: `date` - missing current hour ceiling height. Exiting...
      exit 1
   else
      echo GLMPLOG: `date` - copying current hour CIG data
      cp $COMIN/glmp_compobs.${HOUR} .
   fi
elif [[ $elm == "vis" ]]; then
#   CHECK FOR CURRENT HOUR CIG
   if [[ ! -s $COMIN/glmp_vis_obs2pkd.${HOUR} ]]; then
      echo GLMPLOG: `date` - missing current hour visibility. Exiting...
      exit 1
   else
      echo GLMPLOG: `date` - copying current hour VIS data
      cp $COMIN/glmp_vis_obs2pkd.${HOUR} .
   fi
fi

echo GLMPLOG: `date` - begin running glmp_granalysis_v9ak

export MP_PULSE=0
export MP_TIMEOUT=900
export OMP_NUM_THREADS=16

export pgm=glmp_granalysis_2p5
. prep_step
export XLFUNIT_10="ncepdate"
export XLFUNIT_29="$FIXlmp/glmp_mos2000id.tbl"
export XLFUNIT_37="$FIXlmp/glmp_hr00_sta_pairs_${elm}"
export XLFUNIT_15="$FIXlmp/glmp_hr00_radii_${elm}"
export XLFUNIT_38="$PARMlmp/glmp_hr00_ids.lst.${elm}"
export XLFUNIT_42="glmp_hr00_${elm}.co.ra.g.t${HOUR}z"
export XLFUNIT_34="glmp_hr00_${elm}.co.sq.g.t${HOUR}z"

if [[ $elm == "tdp" ]]; then
   export XLFUNIT_26="$PARMlmp/glmp_hr00_granalysis.tdpstns.lst"
   export XLFUNIT_27="$PARMlmp/glmp_hr00_granalysis.tdpstns.tbl"
   export XLFUNIT_16="$FIXlmp/glmp_hr00_agpairs"
   export XLFUNIT_44="$FIXlmp/glmp_hr00_const_conus2p5_LakeO"
   export XLFUNIT_51="$PARMlmp/glmp_u405adptobscn"
   export XLFUNIT_53="$PARMlmp/glmp_u405atmpobscn"
   export XLFUNIT_80="glmp_tdp_obs4pkd.${HOURm1}"
   export XLFUNIT_81="glmp_tdp_obs4pkd.${HOUR}"
   startmsg
   $EXEClmp/glmp_granalysis_2p5 < $PARMlmp/glmp_hr00_granalysis_tdp.cn >> $pgmout 2>errfile
   export err=$?
   if [[ $err -ne 0 ]]; then 

      echo GLMPLOG: `date` - Error $err in glmp_granalysis_2p5 step in 
      echo GLMPLOG: "   exglmp_obs_granalysis.sh.sms script. Possibly due to"
      echo GLMPLOG: "   too few observations received in the prep step."
      echo GLMPLOG: "   If the observation outage is corrected, rerun the glamp"
      echo GLMPLOG: "   glamp_${HOUR}/obs suite starting at the jglamp_obs_prep_${HOUR}"
      echo GLMPLOG: "   job.  Otherwise, do not re-run."
      echo GLMPLOG: `date` - Error in glmp_granalysis_2p5

#     Overwrite glmp_granalysis output random access file with file filled with 
#     missing values
      cp $FIXlmp/glmp_hr00_tdp.co.ra.g.missing glmp_hr00_tdp.co.ra.g.t${HOUR}z
      echo GLMPLOG: `date` - Creating RA tdp hr00 file filled with missing values

#     Overwrite glmp_granalysis output sequential file with a zero-byte file
      echo GLMPLOG: `date` - Creating zero-byte sequential tdp hr00 file 
      rm -f glmp_hr00_tdp.co.sq.g.t${HOUR}z
      touch glmp_hr00_tdp.co.sq.g.t${HOUR}z

      msg="$job has failed on `hostname` at `date` - likely due to missing obs.  GRIB2 files filled with missing values will be created for Temperature, Dewpoint, and Error estimations.  Rerun starting with jglamp_obs_prep_${HOUR} job if obs problem fixed.  Otherwise do not rerun." 
      postmsg "$jlogfile" "$msg"

      msg="ERROR PROGRAM $pgm RETURN CODE $err - JOB CONTINUING"
      postmsg "$jlogfile" "$msg"

   fi                                                                        
#  err_chk (cannot run err_chk here - or else a failure in glmp_granalysis will stop
#  the job and GRIB2 files filled with missings will not be created.)
elif [[ $elm == "cig" || $elm == "vis" ]]; then
   export XLFUNIT_27="$PARMlmp/glmp_hr00.non_mesostns.tbl"
   export XLFUNIT_44="$FIXlmp/glmp_const_conus2p5_dist"
   export XLFUNIT_53="$PARMlmp/glmp_u405a${elm}obscn"
   if [[ $elm == "cig" ]]; then
      export XLFUNIT_26="$PARMlmp/glmp_hr00.cldstns.lst"
      export XLFUNIT_80="glmp_compobs.${HOUR}"
   else
      export XLFUNIT_26="$PARMlmp/glmp_hr00.${elm}stns.lst"
      export XLFUNIT_80="glmp_vis_obs2pkd.${HOUR}"
   fi
   startmsg
   $EXEClmp/glmp_granalysis_2p5 < $PARMlmp/glmp_hr00_granalysis_cigvis.cn >> $pgmout 2>errfile
   export err=$?; err_chk
fi

echo GLMPLOG: `date` - glmp_granalysis_v9ak ended

#######################################################################
# COPY FILES TO COM
#######################################################################
if test $SENDCOM = 'YES'
then
   cp glmp_hr00_${elm}.co.ra.g.t${HOUR}z $COMOUT/.
   cp glmp_hr00_${elm}.co.sq.g.t${HOUR}z $COMOUT/.
fi

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

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