#!/bin/sh
#######################################################################
#  Job Name: exgfsmos_cogridded_prdgen.sh.sms 
#  Purpose: To run all steps necessary to create short range GFS-based
#           gridded MOS fcsts on the CONUS 2.5 km NDFD Grid.
#  Remarks: This script is kicked off when the 4 forecast jobs
#           METAR, GOE, COOPMESO, and TSTM have completed. 
#           The goe and gridded forecasts are archived in the 
#           extended-range job.
#
#           For the time being, 2.5 km CONUS GMOS will use the 5 km
#           GOE files created exgfsmos_goe_fcst.sh.sms.
#
#  HISTORY: Jan 05, 2011  EFE    - New job for CONUS 2.5 km Gridded 
#                                  MOS. Adapted from Alaska Gridded
#                                  prdgen scripts because CONUS 2.5 km
#                                  GMOS is now using U155 version 9.
#           Feb 08, 2011  EFE    - Updated section of the script that
#                                  creates GRIB2 files. Because of
#                                  current TOC limitations with file
#                                  transmission sizes, we will be 
#                                  creating 3 sets of data that will be
#                                  described below. More information
#                                  is contained in that part of the
#                                  script.
#           Mar 31, 2011  EFE    - Added section after GRIDPOST to check
#                                  for HRQPF GRIB2 files. If available,
#                                  these files will be used as official
#                                  products and alerted; if not, the
#                                  regular GMOS POP/QPF files will be
#                                  used.
#           Nov 08, 2012  EFE    - Added dbn_alert commands for superheaded
#                                  element GRIB2 files in $pcom
#           Nov 19, 2012  EFE    - Turn off dbn alerts for non-headed 2.5KM
#                                  CONUS GMOS GRIB2 files, using subtype string
#                                  "GMOSCO*"; Added "hr" to copy destination name
#                                  of HR POP/QPF superheaded GRIB2 files to /pcom.
#           Mar 12, 2013  SH     - Turn on dbn alerts to send the 2.5KM GMOS GRIB2 
#                                  files from the CCS to the local centers in NCWCP.
#           NOTE: On approx. 12/13/12, NCO will begin routing 2.5KM CONUS GMOS
#                 GRIB2 files to TOC with superheaders and inidividual headers.
#                 Superheaders will be sents to TGFTP and inidividual headers
#                 will be sent to SBN/NOAAPORT.
#######################################################################
#
echo MDLLOG: `date` - Begin job exgfsmos_cogridded_prdgen.sh.sms

set -x

export PS4='$SECONDS + '

cd $DATA

echo $PDY $cyc: Date and Cycle - echo PDY and cyc

export DAT="$PDY$cyc"
#######################################################################
#  COPY THE MDL FORECAST FILES FROM COM
#######################################################################
cp $COMIN/mdl_gfsmos.$cycle mdl_gfsmos.$cycle
cp $COMIN/mdl_gfscpmos.$cycle mdl_gfscpmos.$cycle
cp $COMIN/mdl_gfstsvr40.$cycle mdl_gfstsvr40.$cycle
cp $COMIN/mdl_goemosmodel.$cycle mdl_goemosmodel.$cycle
cp $COMIN/mdl_goemos.$cycle mdl_goemos.$cycle

if test $cyc -eq '00'
then
   prevcyc=12
   cp $COMINm1/mdl_gfsmergesta_co.t${prevcyc}z mdl_gfsmergesta_co.last$prevcyc
   cp $COMINm1/mdl_gfsxmergesta_co.t${prevcyc}z mdl_gfsxmergesta_co.last$prevcyc

else
   prevcyc=00
   cp $COMIN/mdl_gfsmergesta_co.t${prevcyc}z mdl_gfsmergesta_co.last$prevcyc
   cp $COMIN/mdl_gfsxmergesta_co.t${prevcyc}z mdl_gfsxmergesta_co.last$prevcyc
fi

#######################################################################
#
# PROGRAM RAMERGE - MERGES TWO VECTOR TDLPACK FILES INTO ONE.  IN THIS
#                   CASE MERGE THE METAR AND COOPRFCMESO FILES.
#######################################################################
echo MDLLOG: `date` - begin job RAMERGE

export pgm=mdl_ramerge
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$FIXmdl/mdl_granlsta_co.lst"
export XLFUNIT_27="$FIXmdl/mdl_granlsta_co.tbl"
export XLFUNIT_28="$FIXmdl/mdl_gfsramerge_co.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_46="mdl_gfsmos.$cycle"
export XLFUNIT_48="mdl_gfscpmos.$cycle"
export XLFUNIT_60="mdl_gfsmergesta_co.$cycle"
$EXECmdl/mdl_ramerge < $PARMmdl/mdl_ramerge.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  RAMERGE ended

#######################################################################
#
# PROGRAM VECT2GRID - CONVERTS SEQUENTIAL "GRIDPOINT STATION" FILE TO
#                     TRUE GRIDDED RECORDS.  THIS RUN PUTS THE CONUS
#                     DMO WIND FIRST GUESS ON THE 5 KM CONUS GRID.  
#
#######################################################################
echo MDLLOG: `date` - begin job vect2grid

export pgm=mdl_vect2grid
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$FIXmdl/mdl_ndfdtrimsta.lst"
export XLFUNIT_27="$FIXmdl/mdl_ndfdsta.tbl"
export XLFUNIT_31="$FIXmdl/mdl_gfsvect2grid_codmo.in.$cycle"
export XLFUNIT_32="$FIXmdl/mdl_gfsvect2grid_codmo.out.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_61="mdl_goemosmodel.$cycle"
export XLFUNIT_60="mdl_cogoedmogrsq.$cycle"
$EXECmdl/mdl_vect2grid < $PARMmdl/mdl_vect2grid_codmo.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  VECT2GRID ended

#######################################################################
#
# PROGRAM VECT2GRID - CONVERTS SEQUENTIAL "GRIDPOINT STATION" FILE TO
#                     TRUE GRIDDED RECORDS.  THIS RUN PUTS THE GOES
#                     ON A 5 KM GRID.
#######################################################################
echo MDLLOG: `date` - begin job vect2grid

export pgm=mdl_vect2grid
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$FIXmdl/mdl_ndfdtrimsta.lst"
export XLFUNIT_27="$FIXmdl/mdl_ndfdsta.tbl"
export XLFUNIT_31="$FIXmdl/mdl_gfsvect2grid_cogoe.in.$cycle"
export XLFUNIT_32="$FIXmdl/mdl_gfsvect2grid_cogoe.out.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_48="mdl_goemos.$cycle"
export XLFUNIT_60="mdl_cogoemosgrsq.$cycle"
$EXECmdl/mdl_vect2grid < $PARMmdl/mdl_vect2grid_cogoe.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  VECT2GRID ended

#######################################################################
#
# PROGRAM GRANALYSIS_CO - PERFORMS THE ANALYSIS OF THE MOS FORECASTS
#                         ONTO A GRID.
#
# FIRST: COPY THE RANDOM ACCESS TEMPLATE FILE FROM FIX. WE DON'T HAVE
#        GFSXMERGESTA YET SO TOUCH THE FILE TO CREATE IT.
#
#  NOTE: THE UPPER AIR DATA FOR LAPSE RATE COMPUTATION COMES FROM
#        THE 95KM MODEL ARCHIVE FILE
#######################################################################
cp $FIXmdl/mdl_rafile_template mdl_gfsgmosco.$cycle

touch mdl_gfsxmergesta_co.$cycle

echo MDLLOG: `date` - begin job GRANALYSIS_CO
export pgm=mdl_granalysis_co
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_20="$FIXmdl/mdl_gmoscobogusfile.dewp"
export XLFUNIT_26="$FIXmdl/mdl_granlsta_co.lst"
export XLFUNIT_27="$FIXmdl/mdl_granlsta_co.tbl"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_30="mdl_cogoemosgrsq.$cycle"
export XLFUNIT_31="mdl_cogoedmogrsq.$cycle"
export XLFUNIT_37="$FIXmdl/mdl_granlstation_copairs"
export XLFUNIT_38="$FIXmdl/mdl_gfsgranlids_co.$cycle"
export XLFUNIT_44="$FIXmdl/mdl_analysisgrconst_co"
export XLFUNIT_51="$FIXmdl/mdl_u405adewcocn"
export XLFUNIT_52="$FIXmdl/mdl_u405atmpcocn"
export XLFUNIT_53="$FIXmdl/mdl_u405amaxcocn"
export XLFUNIT_54="$FIXmdl/mdl_u405amincocn"
export XLFUNIT_55="$FIXmdl/mdl_u405apop6cocn"
export XLFUNIT_56="$FIXmdl/mdl_u405apop12cocn"
export XLFUNIT_57="$FIXmdl/mdl_u405awspcocn"
export XLFUNIT_58="$FIXmdl/mdl_u405awucocn"
export XLFUNIT_59="$FIXmdl/mdl_u405awvcocn"
export XLFUNIT_60="$FIXmdl/mdl_u405awgstcocn"
export XLFUNIT_61="$FIXmdl/mdl_u405aqpf1cocn"
export XLFUNIT_62="$FIXmdl/mdl_u405aqpfcocn"
export XLFUNIT_63="$FIXmdl/mdl_u405asnwcocn"
export XLFUNIT_64="$FIXmdl/mdl_u405askycocn"
export XLFUNIT_80="mdl_gfsmergesta_co.$cycle"
export XLFUNIT_81="mdl_gfsxmergesta_co.$cycle"
export XLFUNIT_82="mdl_gfsmergesta_co.last$prevcyc"
export XLFUNIT_83="mdl_gfsxmergesta_co.last$prevcyc"
export XLFUNIT_42="mdl_gfsgmosco.$cycle"
$EXECmdl/mdl_granalysis_co < $PARMmdl/mdl_granalysis_co.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  GRANALYSIS_CO ended

#######################################################################
#
# PROGRAM VECT2GRID - CONVERTS SEQUENTIAL "GRIDPOINT STATION" FILE
#         (U140)      TO TRUE GRIDDED RECORDS.  THIS RUN PUTS THE 40KM
#                     TSTMS INTO GRIDDED FORMAT.
#######################################################################
echo MDLLOG: `date` - begin job vect2grid

export pgm=mdl_vect2grid
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$FIXmdl/mdl_tsvr40sta.lst"
export XLFUNIT_27="$FIXmdl/mdl_tsvr40sta.tbl"
export XLFUNIT_31="$FIXmdl/mdl_gfsvect2grid_tsvr40km.in.$cycle"
export XLFUNIT_32="$FIXmdl/mdl_gfsvect2grid_tsvr40km.out.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_48="mdl_gfstsvr40.$cycle"
export XLFUNIT_60="mdl_gfstsvr40grd.sq.$cycle"
$EXECmdl/mdl_vect2grid < $PARMmdl/mdl_vect2grid_tsvr40km.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  VECT2GRID ended

#######################################################################
# PROGRAM GRD2GRD - INTERPOLATE THUNDERSTORM DATA FROM 40KM GRID TO 
#         (U365)    2.5 KM CONUS NDFD GRID.
#######################################################################
echo MDLLOG: `date` - begin job GRD2GRD - INTERPOLATE TO NDFD GRID

export pgm=mdl_grd2grd
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_25="mdl_gfstsvr40grd.sq.$cycle"
export XLFUNIT_28="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_27="$FIXmdl/mdl_gfsgrd2grd_tsvr40.ids.$cycle"
export XLFUNIT_42="mdl_gfsgmosco.$cycle"
$EXECmdl/mdl_grd2grd < $PARMmdl/mdl_grd2grd_co.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` - GRD2GRD ended

#######################################################################
#
# PROGRAM GRIDPOST - PERFORMS POST-PROCESSING OF THE GRIDDED MOS
#                    FORECASTS.
#######################################################################
echo MDLLOG: `date` - begin job GRIDPOST - POST PROCESS MOS FORECASTS

export pgm=mdl_gridpost
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$FIXmdl/mdl_granlsta_co.lst"
export XLFUNIT_27="$FIXmdl/mdl_granlsta_co.tbl"
export XLFUNIT_28="$FIXmdl/mdl_gfsgrpost_co.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_42="mdl_gfsgmosco.$cycle"
$EXECmdl/mdl_gridpost < $PARMmdl/mdl_gridpost_co.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  GRIDPOST ended

#######################################################################
# PROGRAM RA2GRIB2 - CODES TDLPACK MOS FORECASTS INTO GRIB2. 
#######################################################################
#   WE'LL LOOP THROUGH THE FOLLOWING ELEMENTS, CREATING SEPARATE
#   GRIB2 FILES FOR EACH ELEMENT (PACKAGING NEEDED FOR TGFTP) 
#
#    TEMP = 2M SURFACE TEMPERATURE    DEWP = 2M SURFACE DEWPOINT
#    MAX  = MAXIMUM TEMPERATURE       MIN  = MINIMUM TEMPERATURE
#    RH   = 2M RELATIVE HUMIDITY      POP6 = 6HR POP
#   POP12 = 12HR POP                  WSPD = 10M WIND SPEED
#    WDIR = 10M WIND DIRECTION     PTSTM03 = 3HR THUNDERSTORM PROB
# PTSTM06 = 6HR THUNDERSTORM PROB  PTSTM12 = 12HR THUNDERSTORM PROB
#   QPF06 = 6HR QPF                  QPF12 = 12HR QPF
#     SKY = OPAQUE SKY COVER         SNW24 = 24HR SNOWFALL
#    WGST = WIND GUST
#
#######################################################################
for element in temp dewp max min rh pop6 pop12 wspd wdir ptstm03 ptstm06 ptstm12 qpf06 qpf12 sky snw24 wgst
do

echo MDLLOG: `date` - begin job RA2GRIB2 
export pgm=mdl_ra2grib2
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_31="$FIXmdl/mdl_gmosgb2sect0-1"
export XLFUNIT_32="$FIXmdl/mdl_gmoscogb2sect3"
export XLFUNIT_33="$FIXmdl/mdl_gmoscogb2sect4${element}.$cycle"
export XLFUNIT_34="$FIXmdl/mdl_gmoscogb2sect5${element}.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_44="mdl_gfsgmosco.$cycle"
export XLFUNIT_60="mdl_gmoscogb2${element}.$cycle.nohead"
$EXECmdl/mdl_ra2grib2 < $PARMmdl/mdl_ra2grib2_co.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  RA2GRIB2 ended 

done

#######################################################################
# CHECK FOR HRQPF GRIB2 FILES. LOOK IN COM FOR HI-RES POP/QPF GRIB2
# FILES. SET A FLAG ACCORDING TO FILE AVAILABILITY (1=YES, 0=NO) IN
# THE VARIABLE ARRAY $USEHRGRB2 AND COPY THE FILE INTO THE WORKING
# DIRECTORY. THE INDICIES OF $USEHRGRB2 REPRESENT AN ELEMENT.
#
#   $USEHRGRB2[0] = POP6
#   $USEHRGRB2[1] = POP12
#   $USEHRGRB2[2] = QPF06
#   $USEHRGRB2[3] = QPF12
#
#######################################################################
i=0
for hrelement in pop6 pop12 qpf06 qpf12
do

  if [ -s $COMIN/mdl_gmoscogb2hr${hrelement}.$cycle ];then
    USEHRGRB2[$i]=1
    cp $COMIN/mdl_gmoscogb2hr${hrelement}.$cycle mdl_gmoscogb2hr${hrelement}.$cycle.nohead
  else
    USEHRGRB2[$i]=0
  fi

  i=$(( $i + 1 ))

done

#######################################################################
# NOTE: AT THIS POINT IN THE SCRIPT, WE HAVE CREATED GRIB2 FILES
#       WITH NO WMO HEADERS INSERTED. THESE ARE 
#
#       mdl_gmoscogb2${element}.$cycle.nohead
#
#  NOW RUN TOCGRIB2 TO PUT HEADERS AND FFS ON THE FILES
#  CAT ALL OF THE GRIB FILES TOGETHER AND RUN TOCGRIB2 ONCE
#
# NOTE (4/1/2011): THIS SECTION NOW CONTAINS 2 FOR LOOPS. THE FIRST
# LOOP WILL CAT ALL ELEMENT EXCEPT FOR POP/QPF ELEMENTS. THE SECOND
# FOR LOOP WILL CAT EITHER THE "REGULAR" GMOS POP/QPF FILES OR THE
# HI-RES POP/QPF FILES BASED ON IF THE HI-RES POP/QPF FILE ARE
# AVAILABLE.
#######################################################################
touch mdl_gmoscogrib2.$cycle

# NON POP/QPF ELEMENTS
for element in temp dewp max min rh wspd wdir ptstm03 ptstm06 ptstm12 sky snw24 wgst
do
  cat mdl_gmoscogb2${element}.$cycle.nohead >> mdl_gmoscogrib2.$cycle
done

# POP/QPF ELEMENTS
i=0
for element in pop6 pop12 qpf06 qpf12
do

  if [ ${USEHRGRB2[$i]} -eq 1 ]; then
    cat mdl_gmoscogb2hr${element}.$cycle.nohead >> mdl_gmoscogrib2.$cycle
  elif [ ${USEHRGRB2[$i]} -eq 0 ]; then
    cat mdl_gmoscogb2${element}.$cycle.nohead >> mdl_gmoscogrib2.$cycle
  fi

  i=$(( $i + 1 ))

done

export pgm=grb2index
. prep_step
startmsg
$EXECutil/grb2index mdl_gmoscogrib2.$cycle mdl_gmoscogrib2i.$cycle
export err=$?; err_chk

export pgm=tocgrib2
. prep_step
startmsg
export XLFUNIT_11="mdl_gmoscogrib2.$cycle"
export XLFUNIT_31="mdl_gmoscogrib2i.$cycle"
export XLFUNIT_51="mdl_gmoscogrib2.xtrn.$cycle"
$EXECutil/tocgrib2 <$FIXmdl/mdl_gmoscogb2head.$cycle 1>> $pgmout 2>> errfile
export err=$?; err_chk

#######################################################################
# UTILITY AQM_SMOKE - INSERTS WMO SUPERHEADERS AND INDIVIDUAL HEADERS
#                     INTO ELEMENT-SPECIFIC GRIB2 FILES, THEN CAT ALL
#                     ELEMENT-SPECIFIC GRIB2 FILES INTO ONE FILE.
#
# NOTE:  THOUGH THE NAME DOES NOT SUGGEST IT, AQM_SMOKE IS AN UPDATED
#        VERSION OF TOCGRIB2. THIS UPDATED VERSION CAN NOW INSERT WMO
#        SUPERHEADERS INTO A GRIB2 FILE.
#######################################################################
for element in temp dewp max min rh pop6 pop12 wspd wdir ptstm03 ptstm06 ptstm12 qpf06 qpf12 sky snw24 wgst
do

echo 0 > filesize
export pgm=aqm_smoke
. prep_step
startmsg
export XLFUNIT_11="mdl_gmoscogb2${element}.$cycle.nohead"
export XLFUNIT_12="filesize"
export XLFUNIT_31=
export XLFUNIT_51="mdl_gmoscogb2${element}.$cycle.temp"
$EXECutil/aqm_smoke < $FIXmdl/mdl_gmoscogb2head${element}.$cycle 1>> $pgmout 2>> errfile
export err=$?; err_chk

echo `ls -l mdl_gmoscogb2${element}.$cycle.temp | awk '{print $5}'` > filesize
export pgm=aqm_smoke
. prep_step
startmsg
export XLFUNIT_11="mdl_gmoscogb2${element}.$cycle.temp"
export XLFUNIT_12="filesize"
export XLFUNIT_31=
export XLFUNIT_51="mdl_gmoscogb2${element}.xtrn.$cycle"
$EXECutil/aqm_smoke < $FIXmdl/mdl_gmoscogb2head${element}.$cycle 1>> $pgmout 2>> errfile
export err=$?; err_chk

done
#######################################################################
# CHECK TO SEE IF WE NEED TO RUN AQM_SMOKE ON THE HI-RES POP/QPF
# GRIB2 FILES.
#######################################################################
i=0
for element in pop6 pop12 qpf06 qpf12
do

if [ ${USEHRGRB2[$i]} -eq 1 ]; then

echo 0 > filesize
export pgm=aqm_smoke
. prep_step
startmsg
export XLFUNIT_11="mdl_gmoscogb2hr${element}.$cycle.nohead"
export XLFUNIT_12="filesize"
export XLFUNIT_31=
export XLFUNIT_51="mdl_gmoscogb2hr${element}.$cycle.temp"
$EXECutil/aqm_smoke < $FIXmdl/mdl_gmoscogb2head${element}.$cycle 1>> $pgmout 2>> errfile
export err=$?; err_chk

echo `ls -l mdl_gmoscogb2hr${element}.$cycle.temp | awk '{print $5}'` > filesize
export pgm=aqm_smoke
. prep_step
startmsg
export XLFUNIT_11="mdl_gmoscogb2hr${element}.$cycle.temp"
export XLFUNIT_12="filesize"
export XLFUNIT_31=
export XLFUNIT_51="mdl_gmoscogb2hr${element}.xtrn.$cycle"
$EXECutil/aqm_smoke < $FIXmdl/mdl_gmoscogb2head${element}.$cycle 1>> $pgmout 2>> errfile
export err=$?; err_chk

fi

i=$(( $i + 1 ))

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

if test $SENDCOM = 'YES'
then
  # TDLPACK FILES
  cp mdl_gfsmergesta_co.$cycle $COMOUT
  cp mdl_cogoedmogrsq.$cycle $COMOUT
  cp mdl_cogoemosgrsq.$cycle $COMOUT
  cp mdl_gfsgmosco.$cycle $COMOUT
  cp mdl_gfstsvr40grd.sq.$cycle $COMOUT
  # ELEMENT-SPECIFIC GRIB2 FILES WITHOUT HEADERS. SENDING TO
  # COM WITHOUT THE .nohead EXTENSION.
  #
  # THERE IS NO NEED TO COPY THE HI-RES POP/QPF FILES BACK INTO
  # COM.
  cp mdl_gmoscogb2temp.$cycle.nohead $COMOUT/mdl_gmoscogb2temp.$cycle
  cp mdl_gmoscogb2dewp.$cycle.nohead $COMOUT/mdl_gmoscogb2dewp.$cycle
  cp mdl_gmoscogb2max.$cycle.nohead $COMOUT/mdl_gmoscogb2max.$cycle
  cp mdl_gmoscogb2min.$cycle.nohead $COMOUT/mdl_gmoscogb2min.$cycle
  cp mdl_gmoscogb2rh.$cycle.nohead $COMOUT/mdl_gmoscogb2rh.$cycle
  cp mdl_gmoscogb2ptstm03.$cycle.nohead $COMOUT/mdl_gmoscogb2ptstm03.$cycle
  cp mdl_gmoscogb2ptstm06.$cycle.nohead $COMOUT/mdl_gmoscogb2ptstm06.$cycle
  cp mdl_gmoscogb2ptstm12.$cycle.nohead $COMOUT/mdl_gmoscogb2ptstm12.$cycle
  cp mdl_gmoscogb2wspd.$cycle.nohead $COMOUT/mdl_gmoscogb2wspd.$cycle
  cp mdl_gmoscogb2wdir.$cycle.nohead $COMOUT/mdl_gmoscogb2wdir.$cycle
  cp mdl_gmoscogb2wgst.$cycle.nohead $COMOUT/mdl_gmoscogb2wgst.$cycle
  cp mdl_gmoscogb2pop6.$cycle.nohead $COMOUT/mdl_gmoscogb2pop6.$cycle
  cp mdl_gmoscogb2pop12.$cycle.nohead $COMOUT/mdl_gmoscogb2pop12.$cycle
  cp mdl_gmoscogb2sky.$cycle.nohead $COMOUT/mdl_gmoscogb2sky.$cycle
  cp mdl_gmoscogb2qpf06.$cycle.nohead $COMOUT/mdl_gmoscogb2qpf06.$cycle
  cp mdl_gmoscogb2qpf12.$cycle.nohead $COMOUT/mdl_gmoscogb2qpf12.$cycle
  cp mdl_gmoscogb2snw24.$cycle.nohead $COMOUT/mdl_gmoscogb2snw24.$cycle
  # SEND XTRN GRIB2 FILE AND ELEMENT-SPECIFIC FILES 
  # WITH SUPER AND INDIVIDUAL HEADERS TO PCOM
  cp mdl_gmoscogrib2.xtrn.$cycle $pcom/mdl_gmoscogrib2.xtrn.$job
  cp mdl_gmoscogb2temp.xtrn.$cycle $pcom/mdl_gmoscogb2temp.xtrn.$job
  cp mdl_gmoscogb2dewp.xtrn.$cycle $pcom/mdl_gmoscogb2dewp.xtrn.$job
  cp mdl_gmoscogb2max.xtrn.$cycle $pcom/mdl_gmoscogb2max.xtrn.$job
  cp mdl_gmoscogb2min.xtrn.$cycle $pcom/mdl_gmoscogb2min.xtrn.$job
  cp mdl_gmoscogb2rh.xtrn.$cycle $pcom/mdl_gmoscogb2rh.xtrn.$job
  cp mdl_gmoscogb2wspd.xtrn.$cycle $pcom/mdl_gmoscogb2wspd.xtrn.$job
  cp mdl_gmoscogb2wdir.xtrn.$cycle $pcom/mdl_gmoscogb2wdir.xtrn.$job
  cp mdl_gmoscogb2ptstm03.xtrn.$cycle $pcom/mdl_gmoscogb2ptstm03.xtrn.$job
  cp mdl_gmoscogb2ptstm06.xtrn.$cycle $pcom/mdl_gmoscogb2ptstm06.xtrn.$job
  cp mdl_gmoscogb2ptstm12.xtrn.$cycle $pcom/mdl_gmoscogb2ptstm12.xtrn.$job
  cp mdl_gmoscogb2sky.xtrn.$cycle $pcom/mdl_gmoscogb2sky.xtrn.$job
  cp mdl_gmoscogb2snw24.xtrn.$cycle $pcom/mdl_gmoscogb2snw24.xtrn.$job
  cp mdl_gmoscogb2wgst.xtrn.$cycle $pcom/mdl_gmoscogb2wgst.xtrn.$job
  # CHECK TO SEE WHICH POP/QPF FILES TO SEND TO PCOM
  i=0
  for element in pop6 pop12 qpf06 qpf12
  do
    if [ ${USEHRGRB2[$i]} -eq 1 ]; then
      cp mdl_gmoscogb2hr${element}.xtrn.$cycle $pcom/mdl_gmoscogb2hr${element}.xtrn.$job  
    elif [ ${USEHRGRB2[$i]} -eq 0 ]; then
      cp mdl_gmoscogb2${element}.xtrn.$cycle $pcom/mdl_gmoscogb2${element}.xtrn.$job  
    fi
    i=$(( $i + 1 ))
  done
fi

#######################################################################
#  THEN ALERT PRODUCTS TO TGFTP AND THE SBN
#  FOR THE SBN ALL THE PRODUCTS ARE IN ONE FILE W/WMO HEADERS
#  FOR TGFTP GRIDS ARE GROUPED BY ELEMENT AND DO NOT HAVE WMO HEADERS
#
#  NOTE (2/9/2011):
#  DBNET ALERTS COMMANDS HAVE NOT BEEN CREATED IN THIS SECTION FOR THE 
#  ELEMENT-SPECIFIC GRIB2 FILES WITH SUPER AND INDIVIDUAL HEADERS. AT
#  THIS TIME, THE TOC CANNOT HANDLE SUPERHEADED DATA GREATER THAN 20MB.
#  WE EXPECT THIS TO CHANGE IN THE NEAR? FUTURE (TO POSSIBLY 50MB). 
#  THEREFORE, THIS SCRIPT WILL NEED TO BE UPDATED WHEN THE TOC HAS 
#  FINISHED UPGRADING THEIR SYSTEMS.
#
#  A NEW ALERT SUBTYPE STRING WILL BE USED WHEN ALERTING NON-HEADED
#  ELEMENT-SPECIFIC FILES: GMOSCOT, GMOSCOTD, ETC.
#######################################################################
if test $SENDDBN = 'YES'
then
    # ALERT XTRN GRIB2 FILE (ALL ELEMENTS) TO TOC FOR ROUTING TO SBN.                       
    #$DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogrib2.xtrn.$job

    # ALERT ELEMENT-SPECIFIC GRIB2 FILES WITH WMO SUPERHEADERS AND
    # INDIVIDUAL HEADERS
    $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogb2temp.xtrn.$job
    $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogb2dewp.xtrn.$job
    $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogb2max.xtrn.$job
    $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogb2min.xtrn.$job
    $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogb2rh.xtrn.$job
    $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogb2wdir.xtrn.$job
    $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogb2wspd.xtrn.$job
    $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogb2ptstm03.xtrn.$job
    $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogb2ptstm06.xtrn.$job
    $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogb2ptstm12.xtrn.$job
    $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogb2sky.xtrn.$job
    $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogb2wgst.xtrn.$job
    $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmoscogb2snw24.xtrn.$job
    # ALERT POP6
    if [ ${USEHRGRB2[0]} -eq 1 ]; then
      $DBNROOT/bin/dbn_alert NTC_LOW gfs  $job $pcom/mdl_gmoscogb2hrpop6.xtrn.$job
    elif [ ${USEHRGRB2[0]} -eq 0 ]; then
      $DBNROOT/bin/dbn_alert NTC_LOW gfs  $job $pcom/mdl_gmoscogb2pop6.xtrn.$job
    fi
    # ALERT POP12
    if [ ${USEHRGRB2[1]} -eq 1 ]; then
      $DBNROOT/bin/dbn_alert NTC_LOW gfs  $job $pcom/mdl_gmoscogb2hrpop12.xtrn.$job
    elif [ ${USEHRGRB2[1]} -eq 0 ]; then
      $DBNROOT/bin/dbn_alert NTC_LOW gfs  $job $pcom/mdl_gmoscogb2pop12.xtrn.$job
    fi
    # ALERT QPF06
    if [ ${USEHRGRB2[2]} -eq 1 ]; then
      $DBNROOT/bin/dbn_alert NTC_LOW gfs  $job $pcom/mdl_gmoscogb2hrqpf06.xtrn.$job
    elif [ ${USEHRGRB2[2]} -eq 0 ]; then
      $DBNROOT/bin/dbn_alert NTC_LOW gfs  $job $pcom/mdl_gmoscogb2qpf06.xtrn.$job
    fi
    # ALERT QPF12
    if [ ${USEHRGRB2[3]} -eq 1 ]; then
      $DBNROOT/bin/dbn_alert NTC_LOW gfs  $job $pcom/mdl_gmoscogb2hrqpf12.xtrn.$job
    elif [ ${USEHRGRB2[3]} -eq 0 ]; then
      $DBNROOT/bin/dbn_alert NTC_LOW gfs  $job $pcom/mdl_gmoscogb2qpf12.xtrn.$job
    fi

    ## ALERT INDIVIDUAL ELEMENT GRIB2 FILES. THESE ARE DESTINED FOR TGFTP.
    $DBNROOT/bin/dbn_alert MDLFCST GMOSCOT     $job $COMOUT/mdl_gmoscogb2temp.$cycle
    $DBNROOT/bin/dbn_alert MDLFCST GMOSCOTD    $job $COMOUT/mdl_gmoscogb2dewp.$cycle
    $DBNROOT/bin/dbn_alert MDLFCST GMOSCOMX    $job $COMOUT/mdl_gmoscogb2max.$cycle
    $DBNROOT/bin/dbn_alert MDLFCST GMOSCOMN    $job $COMOUT/mdl_gmoscogb2min.$cycle
    $DBNROOT/bin/dbn_alert MDLFCST GMOSCORH    $job $COMOUT/mdl_gmoscogb2rh.$cycle
    $DBNROOT/bin/dbn_alert MDLFCST GMOSCOWD    $job $COMOUT/mdl_gmoscogb2wdir.$cycle
    $DBNROOT/bin/dbn_alert MDLFCST GMOSCOWS    $job $COMOUT/mdl_gmoscogb2wspd.$cycle
    $DBNROOT/bin/dbn_alert MDLFCST GMOSCOTS3   $job $COMOUT/mdl_gmoscogb2ptstm03.$cycle
    $DBNROOT/bin/dbn_alert MDLFCST GMOSCOTS6   $job $COMOUT/mdl_gmoscogb2ptstm06.$cycle
    $DBNROOT/bin/dbn_alert MDLFCST GMOSCOTS12  $job $COMOUT/mdl_gmoscogb2ptstm12.$cycle
    $DBNROOT/bin/dbn_alert MDLFCST GMOSCOSKY   $job $COMOUT/mdl_gmoscogb2sky.$cycle
    $DBNROOT/bin/dbn_alert MDLFCST GMOSCOGST   $job $COMOUT/mdl_gmoscogb2wgst.$cycle
    $DBNROOT/bin/dbn_alert MDLFCST GMOSCOSNW24 $job $COMOUT/mdl_gmoscogb2snw24.$cycle
    ## ALERT POP6
    #if [ ${USEHRGRB2[0]} -eq 1 ]; then
    #  $DBNROOT/bin/dbn_alert MDLFCST GMOSCOPOP6  $job $COMOUT/mdl_gmoscogb2hrpop6.$cycle
    #elif [ ${USEHRGRB2[0]} -eq 0 ]; then
    #  $DBNROOT/bin/dbn_alert MDLFCST GMOSCOPOP6  $job $COMOUT/mdl_gmoscogb2pop6.$cycle
    #fi
    ## ALERT POP12
    #if [ ${USEHRGRB2[1]} -eq 1 ]; then
    #  $DBNROOT/bin/dbn_alert MDLFCST GMOSCOPOP12  $job $COMOUT/mdl_gmoscogb2hrpop12.$cycle
    #elif [ ${USEHRGRB2[1]} -eq 0 ]; then
    #  $DBNROOT/bin/dbn_alert MDLFCST GMOSCOPOP12  $job $COMOUT/mdl_gmoscogb2pop12.$cycle
    #fi
    ## ALERT QPF06
    #if [ ${USEHRGRB2[2]} -eq 1 ]; then
    #  $DBNROOT/bin/dbn_alert MDLFCST GMOSCOQPF6  $job $COMOUT/mdl_gmoscogb2hrqpf06.$cycle
    #elif [ ${USEHRGRB2[2]} -eq 0 ]; then
    #  $DBNROOT/bin/dbn_alert MDLFCST GMOSCOQPF6  $job $COMOUT/mdl_gmoscogb2qpf06.$cycle
    #fi
    ## ALERT QPF12
    #if [ ${USEHRGRB2[3]} -eq 1 ]; then
    #  $DBNROOT/bin/dbn_alert MDLFCST GMOSCOQPF12  $job $COMOUT/mdl_gmoscogb2hrqpf12.$cycle
    #elif [ ${USEHRGRB2[3]} -eq 0 ]; then
    #  $DBNROOT/bin/dbn_alert MDLFCST GMOSCOQPF12  $job $COMOUT/mdl_gmoscogb2qpf12.$cycle
    #fi
fi
#######################################################################
echo MDLLOG: `date` - Job exgfsmos_cogridded_prdgen has ended.
#######################################################################
