#!/bin/sh
#######################################################################
#
#  Job Name: exgfsmos_higridded_extprdgen.sh.sms
#
#   Purpose: To run all steps necessary to create extended range GFS-based
#            gridded MOS fcsts on the HI NDGD grid
#
#   Remarks: This script is kicked off when the 4 forecast jobs
#            METAR, HIGOE EXT, COOPMESO have completed.
#            The goe and gridded forecasts for both short and extended
#            range are archive in this job.
#
#   History: Aug 18, 2010  EFE - New job for HI Gridded MOS (extended-range).
#                                Adapted from exgfsmos_akgridded_extprdgen.sh.sms
#                                This initial implementation of HI Gridded
#                                MOS contains the following elements:
#                                2-m Temp, Dew, MaxT, MinT, Wind Speed, Wind
#                                Direction, Wind Gust, 6-hr POP, 12-hr POP,
#                                and RH.
#            Nov  2, 2010  EFE - Corrected section of script that
#                                inserts WMO superheader and individual
#                                headers into GRIB2 files. Headers will
#                                now be inserted into the element-specific
#                                GRIB2 files, then cat the files into
#                                one large GRIB2 (xtrn) file. This is
#                                file that will alerted to TOC via db_net.
#######################################################################
#
echo MDLLOG: `date` - Begin job exgfsmos_higridded_extprdgen.sh.sms

set -x

cd $DATA

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

export DAT="${PDY}${cyc}"
#######################################################################
# WAIT 15 MINUTES (900 SECONDS) BEFORE CONTINUING.  WHEN MORE 
# FIELDS ARE ADDED TO GRIDDED HI MOS, THIS SLEEP WILL BE REDUCED AND
# EVENTUALLY REMOVED.
#######################################################################
sleep 900
#######################################################################
# 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_goehimosxmodel.$cycle mdl_goehimosxmodel.$cycle
cp $COMIN/mdl_gfsmergesta_hi.$cycle mdl_gfsmergesta_hi.$cycle
cp $COMIN/mdl_goehimos.$cycle mdl_goehimos.$cycle
cat $COMIN/mdl_gfspkd_hi.$cycle $COMIN/mdl_gfsxpkd_hi.$cycle > gfspkdfull_hi.$cycle
###########################################################################
# THIS JOB USES THE RANDOM ACCESS FILE FIRST CREATED IN THE
# EXECUTION OF GFSMOS_HIGRIDDED_PRDGEN.  CHECK IF THE FILE MDL_GFSGMOSHI.TXXZ
# EXISTS IN COM/GFS.  IF IT DOES, COPY THE FILE TO THE WORK SPACE.
# IF IT DOES NOT EXIST, THE SCRIPT WILL ABORT.  GFSMOS_HIGRIDDED_EXTPRDGEN
# WILL NOT WORK UNLESS GFSMOS_HIGRIDDED_PRDGEN HAS ALREADY RUN SUCCESSFULLY.
############################################################################
#
if [ ! -f $COMIN/mdl_gfsgmoshi.$cycle ]
     then echo 'need successful run of gfsmos_higridded_prdgen to run properly' >> $pgmout
             export err=1;err_chk
fi

cp $COMIN/mdl_gfsgmoshi.$cycle .

if test $cyc -eq '00'
then
   prevcyc=12
   cp $COMINm1/mdl_gfsmergesta_hi.t${prevcyc}z gfsmergesta_hi.last$prevcyc
   cp $COMINm1/mdl_gfsxmergesta_hi.t${prevcyc}z gfsxmergesta_hi.last$prevcyc
else
   prevcyc=00
   cp $COMIN/mdl_gfsmergesta_hi.t${prevcyc}z gfsmergesta_hi.last$prevcyc
   cp $COMIN/mdl_gfsxmergesta_hi.t${prevcyc}z gfsxmergesta_hi.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_hi.lst"
export XLFUNIT_27="$FIXmdl/mdl_granlsta_hi.tbl"
export XLFUNIT_28="$FIXmdl/mdl_gfsxramerge_hi.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_46="mdl_gfsmos.$cycle"
export XLFUNIT_48="mdl_gfscpmos.$cycle"
export XLFUNIT_60="mdl_gfsxmergesta_hi.$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 HI
#                     DMO FOR TEMP AND WIND FIRST GUESS ON THE 2.5KM HI 
#                     GRID. IT ALSO GETS UPPER AIR DATA FOR 183,186,
#                     189 FOR LAPSE RATE CALCULATIONS.
#######################################################################
echo MDLLOG: `date` - begin job vect2grid

export pgm=mdl_vect2grid
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$FIXmdl/mdl_hindfdtrimsta.lst"
export XLFUNIT_27="$FIXmdl/mdl_hindfdtrimsta.tbl"
export XLFUNIT_31="$FIXmdl/mdl_gfsxvect2grid_hidmo.in.$cycle"
export XLFUNIT_32="$FIXmdl/mdl_gfsxvect2grid_hidmo.out.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_61="mdl_goehimosxmodel.$cycle"
export XLFUNIT_60="mdl_hixdmogrsq.$cycle"

$EXECmdl/mdl_vect2grid < $PARMmdl/mdl_vect2grid_hidmo.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 HI
#                     GOES FOR POP ON THE 2.5KM HI GRID.
#######################################################################
echo MDLLOG: `date` - begin job vect2grid

export pgm=mdl_vect2grid
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$FIXmdl/mdl_hindfdtrimsta.lst"
export XLFUNIT_27="$FIXmdl/mdl_hindfdtrimsta.tbl"
export XLFUNIT_31="$FIXmdl/mdl_gfsxvect2grid_higoe.in.$cycle"
export XLFUNIT_32="$FIXmdl/mdl_gfsxvect2grid_higoe.out.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_48="mdl_goehimos.$cycle"
export XLFUNIT_60="mdl_hixgoegrsq.$cycle"

$EXECmdl/mdl_vect2grid < $PARMmdl/mdl_vect2grid_higoe.cn >> $pgmout 2> errfile
export err=$?; err_chk

echo MDLLOG: `date` -  VECT2GRID ended
#######################################################################
# PROGRAM GRANALYSIS_HI - PERFORMS THE ANALYSIS OF THE MOS FORECASTS
#                         ONTO A GRID.
#
#  NOTE:  THE UPPER AIR DATA FOR LAPSE RATE COMPUTATION COMES FROM
#         THE 95KM MODEL ARCHIVE FILE EXCEPT FOR 183,186,189 WHICH
#         WERE INTERPOLATED TO THE 3KM IN U201.
#######################################################################
echo MDLLOG: `date` - begin job GRANALYSIS_HI

export pgm=mdl_granalysis_hi
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$FIXmdl/mdl_granlsta_hi.lst"
export XLFUNIT_27="$FIXmdl/mdl_granlsta_hi.tbl"
export XLFUNIT_15="$FIXmdl/mdl_station_radii_hi"
export XLFUNIT_16="$FIXmdl/mdl_station_radii_hiwind"
export XLFUNIT_17="$FIXmdl/mdl_station_radii_hipop"
export XLFUNIT_21="$FIXmdl/mdl_gmoshibogusfile.wind"
export XLFUNIT_22="$FIXmdl/mdl_gmoshibogusfile.pop"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_30="mdl_hixdmogrsq.$cycle"
export XLFUNIT_31="mdl_hixgoegrsq.$cycle"
export XLFUNIT_32="gfspkdfull_hi.$cycle"
export XLFUNIT_37="$FIXmdl/mdl_granlstation_hipairs"
export XLFUNIT_38="$FIXmdl/mdl_gfsxgranlids_hi.$cycle"
export XLFUNIT_44="$FIXmdl/mdl_analysisgrconst_hi"
export XLFUNIT_51="$FIXmdl/mdl_u405adewhicn"
export XLFUNIT_53="$FIXmdl/mdl_u405atmphicn"
export XLFUNIT_54="$FIXmdl/mdl_u405amaxhicn"
export XLFUNIT_55="$FIXmdl/mdl_u405aminhicn"
export XLFUNIT_56="$FIXmdl/mdl_u405apop6hicn"
export XLFUNIT_57="$FIXmdl/mdl_u405apop12hicn"
export XLFUNIT_58="$FIXmdl/mdl_u405awuhicn"
export XLFUNIT_59="$FIXmdl/mdl_u405awvhicn"
export XLFUNIT_60="$FIXmdl/mdl_u405awspdhicn"
export XLFUNIT_61="$FIXmdl/mdl_u405awdirhicn"
export XLFUNIT_62="$FIXmdl/mdl_u405awgsthicn"
export XLFUNIT_80="mdl_gfsmergesta_hi.$cycle"
export XLFUNIT_81="mdl_gfsxmergesta_hi.$cycle"
export XLFUNIT_82="gfsmergesta_hi.last$prevcyc"
export XLFUNIT_83="gfsxmergesta_hi.last$prevcyc"
export XLFUNIT_42="mdl_gfsgmoshi.$cycle"

$EXECmdl/mdl_granalysis_hi < $PARMmdl/mdl_granalysis_hi.cn >> $pgmout 2> errfile
export err=$?; err_chk

echo MDLLOG: `date` -  GRANALYSIS_HI 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_hi.lst"
export XLFUNIT_27="$FIXmdl/mdl_granlsta_hi.tbl"
export XLFUNIT_28="$FIXmdl/mdl_gfsxgrpost_hi.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_42="mdl_gfsgmoshi.$cycle"

$EXECmdl/mdl_gridpost < $PARMmdl/mdl_gridpost.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 (00Z ONLY)
# 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 wspd wdir wgst pop6 pop12
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_gmoshigb2sect3"
export XLFUNIT_33="$FIXmdl/mdl_gmosxhigb2sect4${element}.$cycle"
export XLFUNIT_34="$FIXmdl/mdl_gmosxhigb2sect5${element}.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_44="mdl_gfsgmoshi.$cycle"
export XLFUNIT_60="mdl_gmosxhigb2${element}.$cycle.nohead"

$EXECmdl/mdl_ra2grib2 < $PARMmdl/mdl_ra2grib2_hi.cn >> $pgmout 2> errfile
export err=$?; err_chk

echo MDLLOG: `date` -  RA2GRIB2 ended 

done # for element
#######################################################################
# 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.
#######################################################################
touch mdl_gmosxhigrib2.xtrn.$cycle
for element in temp dewp max min rh wspd wdir wgst pop6 pop12
do

echo 0 > filesize
export XLFUNIT_11="mdl_gmosxhigb2${element}.$cycle.nohead"
export XLFUNIT_12="filesize"
export XLFUNIT_31=
export XLFUNIT_51="mdl_gmosxhigb2${element}.$cycle.temp"
$EXECutil/tocgrib2super < $FIXmdl/mdl_gmosxhigb2head${element}.$cycle 1>> $pgmout 2>> errfile

echo `ls -l mdl_gmosxhigb2${element}.$cycle.temp | awk '{print $5}'` > filesize
export XLFUNIT_11="mdl_gmosxhigb2${element}.$cycle.temp"
export XLFUNIT_12="filesize"
export XLFUNIT_31=
export XLFUNIT_51="mdl_gmosxhigb2${element}.$cycle"
$EXECutil/tocgrib2super < $FIXmdl/mdl_gmosxhigb2head${element}.$cycle 1>> $pgmout 2>> errfile

cat mdl_gmosxhigb2${element}.$cycle >> mdl_gmosxhigrib2.xtrn.$cycle

done
#######################################################################
# COPY FILES TO COM
#######################################################################
if test $SENDCOM = 'YES'
then
  cp mdl_gfsxmergesta_hi.$cycle $COMOUT
  cp mdl_hixdmogrsq.$cycle $COMOUT
  cp mdl_hixgoegrsq.$cycle $COMOUT
  cp mdl_gfsgmoshi.$cycle $COMOUT
  cp mdl_gfsxgmoshisq.$cycle $COMOUT
  cp mdl_gmosxhigb2temp.$cycle $COMOUT
  cp mdl_gmosxhigb2dewp.$cycle $COMOUT
  cp mdl_gmosxhigb2max.$cycle $COMOUT
  cp mdl_gmosxhigb2min.$cycle $COMOUT
  cp mdl_gmosxhigb2rh.$cycle $COMOUT
  cp mdl_gmosxhigb2wspd.$cycle $COMOUT
  cp mdl_gmosxhigb2wdir.$cycle $COMOUT
  cp mdl_gmosxhigb2wgst.$cycle $COMOUT
  cp mdl_gmosxhigb2pop6.$cycle $COMOUT
  cp mdl_gmosxhigb2pop12.$cycle $COMOUT
  cp mdl_gmosxhigrib2.xtrn.$cycle $COMOUT
  # SEND XTRN GRIB2 FILE TO $PCOM
  cp mdl_gmosxhigrib2.xtrn.$cycle $pcom/mdl_gmosxhigrib2.xtrn.$job
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
#######################################################################
if test $SENDDBN = 'YES'
then
  $DBNROOT/bin/dbn_alert NTC_LOW gfs $job $pcom/mdl_gmosxhigrib2.xtrn.$job

# THESE HAVE BEEN COMMENTED OUT BUT WILL REMAIN IN THE SCRIPT. THE
# BIG GRIB2 FILE (XTRN) NOW CONTAINS WMO SUPERHEADERS WHICH SHOULD
# NEGATE THE NEED TO SEND THESE ELEMENT-SPECIFIC GRIB2 FILES.
#
#  $DBNROOT/bin/dbn_alert MDLFCST GMOSXHIT      $job $COMOUT/mdl_gmosxhigb2temp.$cycle
#  $DBNROOT/bin/dbn_alert MDLFCST GMOSXHITD     $job $COMOUT/mdl_gmosxhigb2dewp.$cycle
#  $DBNROOT/bin/dbn_alert MDLFCST GMOSXHIMX     $job $COMOUT/mdl_gmosxhigb2max.$cycle
#  $DBNROOT/bin/dbn_alert MDLFCST GMOSXHIMN     $job $COMOUT/mdl_gmosxhigb2min.$cycle
#  $DBNROOT/bin/dbn_alert MDLFCST GMOSXHIRH     $job $COMOUT/mdl_gmosxhigb2rh.$cycle
#  $DBNROOT/bin/dbn_alert MDLFCST GMOSXHIPOP6   $job $COMOUT/mdl_gmosxhigb2pop6.$cycle
#  $DBNROOT/bin/dbn_alert MDLFCST GMOSXHIPOP12  $job $COMOUT/mdl_gmosxhigb2pop12.$cycle
#  $DBNROOT/bin/dbn_alert MDLFCST GMOSXHIWS     $job $COMOUT/mdl_gmosxhigb2wspd.$cycle
#  $DBNROOT/bin/dbn_alert MDLFCST GMOSXHIWD     $job $COMOUT/mdl_gmosxhigb2wdir.$cycle
#  $DBNROOT/bin/dbn_alert MDLFCST GMOSXHIGST    $job $COMOUT/mdl_gmosxhigb2wgst.$cycle

fi
#######################################################################
# PROGRAM GRIDARCH - ARCHIVES THE GRIDDED
#                    FORECASTS FOR ALL PROJECTIONS (6 - 198). 
#######################################################################
echo MDLLOG: `date` - begin job GRIDARCH - ARCHIVES GRIDDED MOS FORECASTS

export pgm=mdl_gridarch
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$FIXmdl/mdl_granlsta_hi.lst"
export XLFUNIT_27="$FIXmdl/mdl_granlsta_hi.tbl"
export XLFUNIT_28="$FIXmdl/mdl_gfsgrarch_hi.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_43="mdl_gfsgmoshi.$cycle"
export XLFUNIT_60="mdl_gfsgmoshisq.$cycle"

$EXECmdl/mdl_gridarch < $PARMmdl/mdl_gridarch.cn >> $pgmout 2> errfile
export err=$?; err_chk

echo MDLLOG: `date` -  GRIDARCH ended 
#######################################################################
# COPY FILES TO COM
# FOR ARCHIVING THE GOES, WE'LL SAVE THE U140 OUTPUTS
#######################################################################
if test $SENDCOM = 'YES'
then
  cp mdl_gfsgmoshisq.$cycle $COMOUT
fi
#######################################################################
echo MDLLOG: `date` - Job gfsmos_higridded_extprdgen has ended.
#######################################################################
