#######################################################################
#  Job Name: exgfsmos.sh.sms (formerly exavnmos.sh.sms)
#  Purpose: To run all steps necessary to create short range GFS MOS fcsts
#  Remarks: 
#  HISTORY: May 16, 2000      - new job for AVN MOS2000
#           July 5, 2000  RLA - implemented ptype and warm season 
#                               clouds.
#           Aug 30, 2000  RLA - implemented cool season winds & temps
#           SEP 25, 2000  MAS - implemented cool season pops vis & tsvr
#           Jan 23, 2001  RLA - implemented warm season vis/obv and fix
#                               to cool season vis/obv
#           Feb 18, 2001  RLA - implemented spring season tsvr eqns
#           MAR 19, 2001  MAS - implemented bufr code
#           APR 23, 2001  JCM - implemented ra2tdlp
#           JUN 27, 2001  MCE - implemented warm popqpf
#           JUN 27, 2001  RLA - implemented warm & cool popc, fixed
#                               warm vis/obv.
#           AUG 24, 2001 RA/MCE implemented Air Force text message
#           AUG 31, 2001  RLA - implemented cool popqpf and fix to
#                               cld/cig rfs.
#           SEP 24, 2001 RA/MCE implemented grib code and fix to dictionary.
#           NOV 05, 2001 MCE  - pulled temporary 6/18Z script together with
#                               00/12Z script to have one AVN MOS script for
#                               all four cycles.
#           JAN 9,  2002 RLC  - changed tdl_mos2grd1081.tbl to tdl_mos2grd.tbl
#                               when stations were upped to 1432
#           APR 6,  2002 RLC  - added step to create FECN20(Canadian txt)
#           JUN 12, 2002 RLC  - added dbnet alerts to get files to TGFTP       
#           AUG 01, 2002 JCM  - updated for new grb2tdlp and tdl_gridlst
#           AUG 12, 2002 RC/CM- added 6/18 visobvis, POPO, POPO3 for all
#                               four cycles, changed all code and script
#                               pieces from FECN20 to FOCN20.
#           AUG 20, 2002 RLC  - added piece to archive Eta tsvr at 12Z
#           MAY  6, 2003 RC/CM -added marine MOS sites to system, added
#                               marine MOS text message
#           AUG 20, 2003 RLC  - GFS TRANSTITION - merged AVN and MRF
#                               processing into one GFS paradigm.  At    
#                               this time, the avnmos script will do
#                               the MAV (out to 84/90-h)
#                               forecasts and products.  Both avnmos
#                               and mrfmos jobs will write to gfsmos
#                               random access file.  The archiving of
#                               all the GFS MOS forecasts will be in 
#                               the mrf job.
#           MAR 10, 2004 JCM  - Eta and GFS gridded constants files
#                               have been merged into one file; this
#                               required renaming the file on unit 44.
#           APR 30, 2004 RLC  - Added a line for the old visibility
#                               equations that we have to keep running
#                               for the BUFR and GRIB products for now.
#           JUL 31, 2004 RLC  - Added another line for the old visibility.
#           DEC 13, 2004 JCM  - GRIDDED MOS:  Stripped out TSTM stuff, this 
#                               script now only runs through the 
#                               post-processor.
#           APR 26, 2006 JCM  - Added processing for wind gusts in EQNEVAL
#           JUL 07, 2006 RLC  - Took out old visobv equations
#           Feb 28, 2007 RLC  - Added opaque sky cover equations.
#           Dec  2, 2009 JCM  - New P-Type, Ceiling
#
#######################################################################
#
echo MDLLOG: `date` - Begin job exgfsmos.sh.sms

set -x

cd $DATA

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

export DAT="$PDY$cyc"


#######################################################################
#  COPY THE MDL 0-96 HR GFS MODEL FILE FROM COM
#######################################################################
cp $COMIN/mdl_gfspkd.$cycle pkgfsraw.$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 '06'
then
 obhr1=09
 cp $DCOM/sfctbl.$obhr1 sfctbl.$obhr1
elif test $cyc -eq '12'
then
 obhr1=15
 cp $DCOM/sfctbl.$obhr1 sfctbl.$obhr1
elif test $cyc -eq '18'
then
 obhr1=21
 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!!!
#
#######################################################################
#
# PROGRAM RACREATE - MOS-2000 PROGRAM WHICH 
#                   CREATES RANDOM ACCESS FILES; IN THIS CASE, THE
#                   CODE IS USED TO CREATE THE OPERATIONAL MOS
#                   FORECAST FILE.
#######################################################################

echo MDLLOG: `date` - begin job RACREATE - CREATE MOS FORECAST FILE

export pgm=mdl_racreate
. prep_step
export XLFUNIT_50="mdl_gfsmos.$cycle"
startmsg
$EXECmdl/mdl_racreate < $PARMmdl/mdl_u350.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  RACREATE ended 

#######################################################################
#
#  PROGRAM RAINIT - INITIALIZES RANDOM ACCESS MOS FORECAST
#                   FILE WITH STATION CALL LETTERS,
#                   ELEVATION, LATITUDE, AND LONGITUDE
#
#######################################################################

export pgm=mdl_rainit
. prep_step
echo MDLLOG: `date` - begin job RAINIT - INITIALIZE MOS FORECAST FILE
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$FIXmdl/mdl_station.lst"
export XLFUNIT_27="$FIXmdl/mdl_station.tbl"
export XLFUNIT_49="mdl_gfsmos.$cycle"
startmsg
$EXECmdl/mdl_rainit < $PARMmdl/mdl_u351.cn >> $pgmout 2>errfile
export err=$?; err_chk
echo MDLLOG: `date` -  RAINIT ended 


#######################################################################
#
#    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_24="pkgfsraw.$DAT"
export XLFUNIT_26="$FIXmdl/mdl_station.lst"
export XLFUNIT_27="$FIXmdl/mdl_station.tbl"
export XLFUNIT_28="$FIXmdl/mdl_gfsprd.$cycle"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_44="$FIXmdl/mdl_griddedconstants"
export XLFUNIT_45="$FIXmdl/mdl_conststa"
export XLFUNIT_60="gfsmodel.$DAT"
startmsg
$EXECmdl/mdl_mospred < $PARMmdl/mdl_gfspredmdl.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.
#
#######################################################################

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_gfsprd.obs"
export XLFUNIT_29="$FIXmdl/mdl_mos2000id.tbl"
export XLFUNIT_61="mdl_gfsobs.$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_gfsobs.$cycle"
export XLFUNIT_24="gfsmodel.$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_gfswind.04010930.$cycle"
export XLFUNIT_31="$FIXmdl/mdl_gfswind.10010331.$cycle"
export XLFUNIT_32="$FIXmdl/mdl_gfsmxmntd84.04010930.$cycle"
export XLFUNIT_33="$FIXmdl/mdl_gfsmxmntd84.10010331.$cycle"
export XLFUNIT_34="$FIXmdl/mdl_gfscigcld.04010930.$cycle"
export XLFUNIT_35="$FIXmdl/mdl_gfscigcld.10010331.$cycle"
export XLFUNIT_36="$FIXmdl/mdl_gfspopqpf84.04010930.$cycle"
export XLFUNIT_37="$FIXmdl/mdl_gfspopqpf84.10010331.$cycle"
export XLFUNIT_38="$FIXmdl/mdl_gfsvisobv.04010930.$cycle"
export XLFUNIT_39="$FIXmdl/mdl_gfsvisobv.10010331.$cycle"
export XLFUNIT_40="$FIXmdl/mdl_gfsptype84.09010831.$cycle"
export XLFUNIT_41="$FIXmdl/mdl_gfssnow84.09010831.$cycle"
export XLFUNIT_42="$FIXmdl/mdl_gfspopc.04010930.$cycle"
export XLFUNIT_43="$FIXmdl/mdl_gfspopc.10010331.$cycle"
export XLFUNIT_20="$FIXmdl/mdl_gfspopo.04010930.$cycle"
export XLFUNIT_21="$FIXmdl/mdl_gfspopo.10010331.$cycle"
export XLFUNIT_50="$FIXmdl/mdl_gfsgust.04010930.$cycle"
export XLFUNIT_51="$FIXmdl/mdl_gfsgust.10010331.$cycle"
export XLFUNIT_52="$FIXmdl/mdl_gfsopqcld.04010930.$cycle"
export XLFUNIT_53="$FIXmdl/mdl_gfsopqcld.10010331.$cycle"
export XLFUNIT_54="$FIXmdl/mdl_gfsceiling.04010930.$cycle"
export XLFUNIT_55="$FIXmdl/mdl_gfsceiling.10010331.$cycle"
export XLFUNIT_49="mdl_gfsmos.$cycle"
startmsg
$EXECmdl/mdl_eqneval < $PARMmdl/mdl_gfseval.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_gfspost.$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 

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

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

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