#######################################################################
#  Job Name: exgfsmos.sh.sms (formerly exmrfmos.sh.sms)
#  Purpose: To run all steps necessary to create extended-range GFS MOS
#           fcsts
#  Remarks:
#  HISTORY: May 16, 2000         - new job for MRF MOS2000
#           July 5, 2000         - updated for PoP/QPF elements
#           Aug 30, 2000  RLA    - implemented cool temps
#           Sep 13, 2000 MCE/MAS - implemented cool PoP/QPF and
#                                  added consistency check for 24-hr PoP
#           Sep 27, 2000         - implemented Ptype and cool clouds
#           Feb  6, 2001  RLA    - implemented warm season clouds
#           Mar 22, 2001  MAS    - implemented bufr
#           Apr 17, 2001  RLA    - implemented spring and summer tsvr
#           Aug 15, 2001 RLA/JCM - implemented winter tsvr
#           Aug 24, 2001 RLA/MCE - implemented Air Force message
#           Aug 31, 2001  RLA    - implemented updated cool season mxmntd
#           Oct 02, 2001 MCE/RLA - added grib steps for CONUS/AK
#           Jan 09, 2002  RLC    - changed name of mdl_mos2grd1081.tbl to
#                                  mdl_mos2grd.tbl when station number was
#                                  upped to 1432.
#           Apr 23, 2002  RLC    - added step to create FECN21, Canadian
#                                  max/min text message
#           Jun 12, 2002  RLC    - added dbnet alerts to get files to TGFTP
#           Jul 16, 2002  MCE    - added climo to constant file, added
#                                  constant file to mex message step
#           Aug 01, 2002  JCM    - updated for new grb2mdlp and mdl_gridlst
#           Aug 20, 2002  RLC    - added step to archive Nam tsvr @ 00Z
#           Aug 23, 2002  MCE    - implemented warm and cool wind speed
#           AUG 20, 2003  RLC    - GFS TRANSTITION - merged GFS and MRF
#                                  processing into one GFS paradigm.  At
#                                  this time, the mrfmos script will do
#                                  the MEX forecasts and products.  Both
#                                  gfsmos and mrfmos jobs will write to
#                                  gfsmos random access file.  The archiving
#                                  of the GFS MOS Forecasts happens here.
#                                  We'll now run this script 4 times daily
#                                  so we can archive all 4 cycles to 384h.
#           Mar 10, 2004  JCM    - Nam and GFS gridded constants files
#                                  have been merged into one file; this
#                                  required renaming the file on unit 44.
#           May  4, 2004  RLC    - Removed the dependency on 6Z obs.
#                                  Changed the obsprep to use 3Z obs instead.
#           Nov 15, 2004  RLC    - Changed BUFR dbnet alert to go NTC.
#           DEC 13, 2004 JCM  - GRIDDED MOS:  Stripped out TSTM stuff, this
#                               script now only runs through the
#                               post-processor.
#           Sep 13, 2005 RLC  - Added hard stop if short-range random
#                               access file isn't found.
#           Apr 26, 2006 JCM  - Added wind gusts to EQNEVAL
#           Jun 26, 2006 RLC  - Took out original 12-hr max wind
#                               eqns and processing.  Now the value comes
#                               from post-processing the hourly winds.
#           Feb 28, 2007 RLC  - Added opaque cloud equations.
#           Aug 15, 2007 RLC  - Added new code seq2ra.  The PRISM normals
#                               are interpolated to stations in U201.
#                               This new code puts them in the ra file.
#           Oct 07, 2009 JCM  - Added new PTYPE for NDGD support.
#                               Snow now goes out an extra 24h.
#
#######################################################################
#
echo MDLLOG: `date` - Begin job exgfsextmos_metar_fcst.sh.sms

set -x

cd $DATA

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

export DAT="$PDY$cyc"

###########################################################################
#
#    THIS JOB USES THE RANDOM ACCESS FILE FIRST CREATED IN THE
#    EXECUTION OF EXGFSMOS_METAR_FCST.  CHECK IF THE FILE MDL_GFSMOS.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_METAR_EXTFCST
#    WILL NOT WORK UNLESS EXGFSMOS_METAR_FCST HAS ALREADY RUN SUCCESSFULLY.
#
############################################################################
#
if [ ! -f $COMIN/mdl_gfsmos.$cycle ]
     then echo 'need successful run of gfsmos_metar_fcst to run properly' >> $pgmout
             export err=1;err_chk
fi

cp $COMIN/mdl_gfsmos.$cycle .

######################################################################
#  COPY THE MDL GFS MODEL FILES FROM COM
#######################################################################
cp $COMIN/mdl_gfspkd.$cycle pkgfsraw.$DAT
cp $COMIN/mdl_gfsxpkd.$cycle pkgfsxraw.$DAT

#######################################################################
#    RUN OBSPREP
#    EVEN IF OBS ARE MISSING, WE NEED TO PRODUCE PKOBS FILE
#######################################################################

if test $cyc -eq '00'
then
 obhr1=03
 cp $DCOM/sfctbl.$obhr1 sfctbl.$obhr1
elif test $cyc -eq '12'
then
 obhr1=15
 cp $DCOM/sfctbl.$obhr1 sfctbl.$obhr1
fi

if [ ! -f sfctbl.$obhr1 ]
  then touch sfctbl.$obhr1
fi

export pgm=mdl_obsprep
. prep_step
export XLFUNIT_10="ncepdate"
export XLFUNIT_20="sfctbl.$obhr1"
export XLFUNIT_26="$FIXmdl/mdl_station.lst"
export XLFUNIT_27="$FIXmdl/mdl_station.tbl"
export XLFUNIT_70="pkobs.$DAT"
startmsg
$EXECmdl/mdl_obsprep < $PARMmdl/mdl_gfsobsprep.cn >> $pgmout 2>errfile
export err=$?

#!!!NOTE: AN ERROR HERE IS OK; OBS ARE NOT ESSENTIAL TO MOS FORECASTS!!!

#######################################################################
#
#    FIRST EXECUTION OF PROGRAM MOSPRED
#    MOSPRED - USED TO INTERPOLATE TO STATIONS FROM TDL GRID-POINT
#              ARCHIVE FILES AND TO PROCESS/COMBINE VECTOR DATA.
#
#######################################################################

echo MDLLOG: `date` - begin job MOSPRED - INTERPOLATE MODEL DATA
export pgm=mdl_mospred
. prep_step
export XLFUNIT_10="ncepdate"
export XLFUNIT_23="pkgfsraw.$DAT"
export XLFUNIT_24="pkgfsxraw.$DAT"
export XLFUNIT_26="$FIXmdl/mdl_station.lst"
export XLFUNIT_27="$FIXmdl/mdl_station.tbl"
export XLFUNIT_28="$FIXmdl/mdl_gfsxprd.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_44="$FIXmdl/mdl_griddedconstants"
export XLFUNIT_45="$FIXmdl/mdl_conststa"
export XLFUNIT_60="gfsxmodel.$DAT"
startmsg
$EXECmdl/mdl_mospred < $PARMmdl/mdl_gfsxpredmdl.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  First use of MOSPRED ended


#######################################################################
#
#    SECOND EXECUTION OF PROGRAM MOSPRED
#    MOSPRED - USED TO CREATE OBSERVED PREDICTORS FROM THE MDL
#              OBSERVATIONAL TABLES.
#  NOTE:  Right now this produces lots of errors because we're using
#         3hr obs, but asking for 6.  This will happen until we redo
#         ptype and clouds with 3hr obs.
#######################################################################

echo MDLLOG: `date` - begin job MOSPRED - CREATE OBSERVATIONAL PREDICTORS
export pgm=mdl_mospred
. prep_step
export XLFUNIT_10="ncepdate"
export XLFUNIT_80="pkobs.$DAT"
export XLFUNIT_26="$FIXmdl/mdl_station.lst"
export XLFUNIT_27="$FIXmdl/mdl_station.tbl"
export XLFUNIT_28="$FIXmdl/mdl_gfsxprd.obs"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_61="mdl_gfsxobs.$cycle"
startmsg
$EXECmdl/mdl_mospred < $PARMmdl/mdl_gfspredobs.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  Second use of MOSPRED ended


#######################################################################
#
#    PROGRAM EQNEVAL - CALCULATES MOS FORECASTS
#
#######################################################################

echo MDLLOG: `date` - begin job EQNEVAL - MAKE MOS FORECASTS
export pgm=mdl_eqneval
. prep_step
export XLFUNIT_10="ncepdate"
export XLFUNIT_23="mdl_gfsxobs.$cycle"
export XLFUNIT_24="gfsxmodel.$DAT"
export XLFUNIT_26="$FIXmdl/mdl_station.lst"
export XLFUNIT_27="$FIXmdl/mdl_station.tbl"
export XLFUNIT_28="$FIXmdl/mdl_predtofcst"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_30="$FIXmdl/mdl_gfsxmxmntd.04010930.$cycle"
export XLFUNIT_31="$FIXmdl/mdl_gfsxmxmntd.10010331.$cycle"
export XLFUNIT_32="$FIXmdl/mdl_gfsxpopqpf.04010930.$cycle"
export XLFUNIT_33="$FIXmdl/mdl_gfsxpopqpf.10010331.$cycle"
export XLFUNIT_34="$FIXmdl/mdl_gfscldx.04010930.$cycle"
export XLFUNIT_35="$FIXmdl/mdl_gfscldx.10010331.$cycle"
export XLFUNIT_36="$FIXmdl/mdl_gfsxwind.04010930.$cycle"
export XLFUNIT_37="$FIXmdl/mdl_gfsxwind.10010331.$cycle"
export XLFUNIT_38="$FIXmdl/mdl_gfsptypx.09010831.$cycle"
export XLFUNIT_39="$FIXmdl/mdl_gfssnow156.09010831.$cycle"
export XLFUNIT_50="$FIXmdl/mdl_gfsxgust.04010930.$cycle"
export XLFUNIT_51="$FIXmdl/mdl_gfsxgust.10010331.$cycle"
export XLFUNIT_52="$FIXmdl/mdl_gfsxopqcld.04010930.$cycle"
export XLFUNIT_53="$FIXmdl/mdl_gfsxopqcld.10010331.$cycle"
export XLFUNIT_54="$FIXmdl/mdl_gfsptype192.09010831.$cycle"
export XLFUNIT_49="mdl_gfsmos.$cycle"
startmsg
$EXECmdl/mdl_eqneval < $PARMmdl/mdl_gfsxeval.cn.$cycle >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  EQNEVAL ended

#######################################################################
#
#    PROGRAM FCSTPOST - POST-PROCESSES MOS FORECASTS
#
#######################################################################

echo MDLLOG: `date` - begin job FCSTPOST - POST PROCESS MOS FORECASTS
export pgm=mdl_fcstpost
. prep_step
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$FIXmdl/mdl_station.lst"
export XLFUNIT_27="$FIXmdl/mdl_station.tbl"
export XLFUNIT_28="$FIXmdl/mdl_gfsxpost.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_45="$FIXmdl/mdl_conststa"
export XLFUNIT_47="$FIXmdl/mdl_threshold"
export XLFUNIT_49="mdl_gfsmos.$cycle"
startmsg
$EXECmdl/mdl_fcstpost < $PARMmdl/mdl_gfspost.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  FCSTPOST ended

#######################################################################
#
#    PROGRAM SEQ2RA - WRITES VECTOR SEQUENTIAL TO STATION RANDOM ACCESS
#      THIS GETS THE PRISM NORMALS FROM THE U201 OUTPUT AND WRITES 
#      THEM TO THE FORECAST FILE FOR USE BY MEX CODE.
#
#######################################################################

echo MDLLOG: `date` - begin job SEQ2RA - PACKS PRISM NORMALS
export pgm=mdl_seq2ra
. prep_step
export XLFUNIT_26="$FIXmdl/mdl_station.lst"
export XLFUNIT_27="$FIXmdl/mdl_station.tbl"
export XLFUNIT_20="gfsxmodel.$DAT"
export XLFUNIT_49="mdl_gfsmos.t${cyc}z"
startmsg
$EXECmdl/mdl_seq2ra < $PARMmdl/mdl_seq2ra.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  SEQ2RA ended

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

if test $SENDCOM = 'YES'
then
  cp mdl_gfsmos.$cycle $COMOUT
  cp mdl_gfsxobs.$cycle $COMOUT
  cp pkobs.$DAT $COMOUT/mdl_gfsxobspkd.$cycle
fi

#######################################################################
echo MDLLOG: `date` - Job gfsmos_metar_extfcst has ended.
#######################################################################
