#!/bin/sh
#######################################################################
#  Job Name:  exgfsmos_hrqpf_extprdgen.sh.sms
#  Purpose:   After post step is complete, run all steps necessary to 
#             prepare data for dissemination.
#
echo "------------------------------------------------"
echo "JGFSMOS_HRQPF_EXTPRDGEN processing                 "
echo "------------------------------------------------"
echo "History: May 1, 2011 - First implementation of this new script."
#
#
#######################################################################

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

######################################################################
#
#   COPY NEEDED FILES FROM COMIN
#
######################################################################

cp ${COMIN}/mdl_hrqpf_fnlxfcst_vecra.t${cyc}z .
cp ${COMIN}/mdl_hrqpf_gridfill_grdsq_2p5.t${cyc}z .
cp ${COMIN}/mdl_hrqpf_gridfill_grdsq_5.t${cyc}z .

######################################################################
#
#   VECT2GRID - CONVERTS FORECAST FILES FROM VECTOR TO GRID FORMAT
#
######################################################################

echo QPFLOG: `date` - begin job VECT2GRID - CONVERT FORECAST DATA FORMAT

export pgm="mdl_hrqpf_vect2grid"
. prep_step
export XLFUNIT_10="${DATA}/ncepdate"
export XLFUNIT_26="${FIXmdl}/mdl_hrqpf_stations.list"
export XLFUNIT_27="${FIXmdl}/mdl_hrqpf_fullgrid.tbl"
export XLFUNIT_31="${FIXmdl}/mdl_hrqpf_vect2grid_ext_in.t${cyc}z.list"
export XLFUNIT_32="${FIXmdl}/mdl_hrqpf_vect2grid_ext_out.t${cyc}z.list"
export XLFUNIT_29="${FIXmdl}/mdl_hrqpf_idtable"
export XLFUNIT_48="mdl_hrqpf_fnlxfcst_vecra.t${cyc}z"
export XLFUNIT_60="mdl_hrqpf_fnlxfcst_grdsq.t${cyc}z"

startmsg
${EXECmdl}/mdl_hrqpf_vect2grid < ${PARMmdl}/mdl_hrqpf_vect2grid_4km.cn > ${pgmout} 2>errfile
export err=$?; err_chk

######################################################################
#
#   FOR 2.5 AND 5 KM GRIDS:
#       GRD2GRD - INTERPOLATE DATA
#       MOSPRED - PERFORMS GRID FILL IN AREAS WITH MISSING DATA
#     VECT2GRID - CONVERTS OUTPUT FROM VECTOR TO GRID
#      RA2GRIB2 - CREATES GRIB2 FILES
#
######################################################################

grids="2p5 5"
for grid in ${grids}
do

  case ${grid} in
    "2p5" )
       statable="condfdtrimsta"
       stalist="condfdtrimsta.lst";;
    "5" )
       statable="hrqpf_stations_5km"
       stalist="hrqpf_stations_5km.list";;
  esac

######################################################################
#
#   RACREATE - CREATE NEEDED RANDOM ACCESS FILES
#
######################################################################

   echo QPFLOG: `date` - begin job RACREATE - CREATE NEEDED RA FILES

   export pgm="mdl_racreate"
   . prep_step
   export XLFUNIT_50="mdl_hrqpf_fnlxfcst_grdra_${grid}.t${cyc}z"
   
   startmsg
   ${EXECmdl}/mdl_racreate < ${PARMmdl}/mdl_hrqpf_racreate.cn >> ${pgmout} 2>errfile
   export err=$?; err_chk

   export pgm="mdl_racreate"
   . prep_step
   export XLFUNIT_50="mdl_hrqpf_extgridfill_grdra_${grid}.t${cyc}z"
  
   startmsg
   ${EXECmdl}/mdl_racreate < ${PARMmdl}/mdl_hrqpf_racreate.cn >> ${pgmout} 2>errfile
   export err=$?; err_chk

   export pgm="mdl_racreate"
   . prep_step
   export XLFUNIT_50="mdl_hrqpf_extgridarch_grdra_${grid}.t${cyc}z"

   startmsg
   ${EXECmdl}/mdl_racreate < ${PARMmdl}/mdl_hrqpf_racreate.cn >> ${pgmout} 2>errfile
   export err=$?; err_chk

######################################################################
#
#   GRD2GRD - INTERPOLATE FROM 4KM GRID TO OUTPUT GRID
#
######################################################################

   echo QPFLOG: `date` - begin job GRD2GRD - INTERPOLATE TO NDGD GRID

   export pgm="mdl_hrqpf_grd2grd"
   . prep_step
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_25="mdl_hrqpf_fnlxfcst_grdsq.t${cyc}z"
   export XLFUNIT_42="mdl_hrqpf_fnlxfcst_grdra_${grid}.t${cyc}z"
   export XLFUNIT_28="${FIXmdl}/mdl_hrqpf_idtable"
   export XLFUNIT_27="${FIXmdl}/mdl_hrqpf_grd2grd_ext.t${cyc}z.list"

   startmsg
   ${EXECmdl}/mdl_hrqpf_grd2grd < ${PARMmdl}/mdl_hrqpf_grd2grd_${grid}km.cn >> ${pgmout} 2> errfile
   export err=$?; err_chk

######################################################################
#
#   GRIDARC - CONVERTS GRID RANDOM ACCESS TO SEQUENTIAL GRID
#
######################################################################

   echo QPFLOG: `date` - begin job GRIDARCH - convert grid ra to seq. grid

   export pgm="mdl_gridarch"
   . prep_step
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_26="${FIXmdl}/mdl_hrqpf_stations_short.list"
   export XLFUNIT_27="${FIXmdl}/mdl_hrqpf_stations_short.tbl"
   export XLFUNIT_28="${FIXmdl}/mdl_hrqpf_gridarch-init_ext.t${cyc}z"
   export XLFUNIT_29="${FIXmdl}/mdl_hrqpf_idtable"
   export XLFUNIT_43="mdl_hrqpf_fnlxfcst_grdra_${grid}.t${cyc}z"
   export XLFUNIT_60="mdl_hrqpf_fnlxfcst_grdsq_${grid}.t${cyc}z"

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

######################################################################
#
#   MOSPRED - PERFORMS GRID FILL TO ELIMINATE MISSING DATA
#
######################################################################

   echo QPFLOG: `date` - begin job MOSPRED - performs grid filling

   export pgm="mdl_hrqpf_mospred"
   . prep_step
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_20="${DATA}/mdl_hrqpf_fnlxfcst_grdsq_${grid}.t${cyc}z"
   export XLFUNIT_60="${DATA}/mdl_hrqpf_extgridfill_vecsq_${grid}.t${cyc}z"
   export XLFUNIT_33="${FIXmdl}/mdl_${statable}.tbl"
   export XLFUNIT_39="${FIXmdl}/mdl_hrqpf_idtable"
   export XLFUNIT_35="${FIXmdl}/mdl_hrqpf_gridfill_ext.t${cyc}z.list"

   startmsg
   ${EXECmdl}/mdl_hrqpf_mospred < ${PARMmdl}/mdl_hrqpf_gridfill.cn >> $pgmout 2>>errfile
   export err=$?; err_chk

######################################################################
#
#   VECT2GRID - CONVERT FROM VECTOR TO GRID RANDOM ACCESS FILE
#
######################################################################

   echo QPFLOG: `date` - begin job VECT2GRID - convert seq. vector to grid ra

   export pgm="mdl_hrqpf_vect2grid"
   . prep_step
   export XLFUNIT_10="${DATA}/ncepdate"
   export XLFUNIT_26="${FIXmdl}/mdl_${stalist}"
   export XLFUNIT_27="${FIXmdl}/mdl_hrqpf_fullgrid_${grid}km.tbl"
   export XLFUNIT_31="${FIXmdl}/mdl_hrqpf_vect2grid_gridfill-in_ext.t${cyc}z.list"
   export XLFUNIT_32="${FIXmdl}/mdl_hrqpf_vect2grid_gridfill-out_ext.t${cyc}z.list"
   export XLFUNIT_29="${FIXmdl}/mdl_hrqpf_idtable"
   export XLFUNIT_48="mdl_hrqpf_extgridfill_vecsq_${grid}.t${cyc}z"
   export XLFUNIT_42="mdl_hrqpf_extgridfill_grdra_${grid}.t${cyc}z"

   startmsg
   ${EXECmdl}/mdl_hrqpf_vect2grid < ${PARMmdl}/mdl_hrqpf_vect2grid_gridfill_${grid}km.cn >> ${pgmout} 2>errfile
   export err=$?; err_chk

######################################################################
#
#   RA2GRIB2 - CREATE GRIB2 FILES
#
######################################################################

   case ${grid} in
     "2p5" ) name="gmosxcogb";;
     "5" ) name="gmosxgb";;
   esac

   echo QPFLOG: `date` begin job RA2GRIB2 - create grib2 files

   elements="pop6 pop12 qpf06 qpf12"
   for elem in ${elements}
   do

      export pgm="glmp_ra2grib2_2p5"
      . prep_step
      export XLFUNIT_10="ncepdate"
      export XLFUNIT_44="mdl_hrqpf_extgridfill_grdra_${grid}.t${cyc}z"
      export XLFUNIT_60="mdl_${name}2hr${elem}.t${cyc}z"
      export XLFUNIT_31="${FIXmdl}/mdl_${name}2sect0-1"
      export XLFUNIT_32="${FIXmdl}/mdl_${name}2sect3"
      export XLFUNIT_33="${FIXmdl}/mdl_hrqpf_${name}2sect4${elem}.t${cyc}z"
      export XLFUNIT_34="${FIXmdl}/mdl_${name}2sect5${elem}.t${cyc}z"
      export XLFUNIT_29="${FIXmdl}/mdl_hrqpf_idtable"

      startmsg
      ${EXECmdl}/glmp_ra2grib2_2p5 < ${PARMmdl}/mdl_hrqpf_ra2grib2_${grid}km.cn >> ${pgmout} 2>errfile
      export err=$?; err_chk

   done

######################################################################
#
#   VECT2GRID - CONVERT FROM VECTOR TO GRID RANDOM ACCESS FILE
#
######################################################################

   echo QPFLOG: `date` - begin job VECT2GRID - convert seq. vector to grid ra

   export pgm="mdl_hrqpf_vect2grid"
   . prep_step
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_26="${FIXmdl}/mdl_${stalist}"
   export XLFUNIT_27="${FIXmdl}/mdl_hrqpf_fullgrid_${grid}km.tbl"
   export XLFUNIT_31="${FIXmdl}/mdl_hrqpf_vect2grid_gridfill-in_ext.t${cyc}z.list"
   export XLFUNIT_32="${FIXmdl}/mdl_hrqpf_vect2grid_arc-out_ext.t${cyc}z.list"
   export XLFUNIT_29="${FIXmdl}/mdl_hrqpf_idtable"
   export XLFUNIT_48="mdl_hrqpf_extgridfill_vecsq_${grid}.t${cyc}z"
   export XLFUNIT_42="mdl_hrqpf_extgridarch_grdra_${grid}.t${cyc}z"

   startmsg
   ${EXECmdl}/mdl_hrqpf_vect2grid < ${PARMmdl}/mdl_hrqpf_vect2grid_gridfill_${grid}km.cn >> ${pgmout} 2>errfile
   export err=$?; err_chk

######################################################################
#
#   GRIDARC - CONVERTS GRID RANDOM ACCESS TO SEQUENTIAL GRID
#
######################################################################

   echo QPFLOG: `date` begin job GRIDARCH - convert grid ra to seq. grid

   export pgm="mdl_gridarch"
   . prep_step
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_26="${FIXmdl}/mdl_hrqpf_stations_short.list"
   export XLFUNIT_27="${FIXmdl}/mdl_hrqpf_stations_short.tbl"
   export XLFUNIT_28="${FIXmdl}/mdl_hrqpf_gridarch_ext.t${cyc}z"
   export XLFUNIT_29="${FIXmdl}/mdl_hrqpf_idtable"
   export XLFUNIT_43="mdl_hrqpf_extgridarch_grdra_${grid}.t${cyc}z"
   export XLFUNIT_60="mdl_hrqpf_extgridfill_grdsq_${grid}.t${cyc}z"

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

######################################################################
#
#   CREATE FINAL SEQ. GRID FILE BY COMBINING SHORT AND LONG RANGE FILES
#
######################################################################

   case ${grid} in
     "2p5" )
        name2="gfsgmoscosq";;
     "5" )
        name2="gfsgmossq";;
   esac

   cat mdl_hrqpf_gridfill_grdsq_${grid}.t${cyc}z mdl_hrqpf_extgridfill_grdsq_${grid}.t${cyc}z > mdl_hrqpf_${name2}.t${cyc}z

######################################################################
#
#   COPY FILES TO COMPUT
#
######################################################################

   if test ${SENDCOM} = 'YES'
   then
      for elem in ${elements}
      do
         cp mdl_${name}2hr${elem}.t${cyc}z ${COMOUT}
      done
      cp mdl_hrqpf_${name2}.t${cyc}z ${COMOUT}
   fi
 
done

exit 0

