#!/bin/sh
#######################################################################
#  Purpose: To extract multiple parameters from NCEP GFS model output
#           GRIB file for one projection and interpolate the parameters 
#           to MDL's fine grid.  This script runs 4 times per day for 
#           archiving purposes.
echo "------------------------------------------------"
echo "JMRF MOS PREP processing                        "
echo "------------------------------------------------"
echo "History: May 15, 2000 - First implementation of this new scripts."
#              Aug     2002 - Changed to point to the GFS files in /com/gfs,
#                             Increased do loop to every 6 hours out to 180 
#                             hours.
#              Nov     2003 - GFS transition.  Changed to save 99 to 284
#                             hours.
#              Feb     2005 - Set up for gridded MOS paradigm.  Added
#                             grb2mdlp step to this script.
#              Q-3     2010 - Changed to save 183/186/189 h projections.
#                             Accumulations at F192 changed from 12h to 6h
#######################################################################


########################################
set -x
msg="Begin job for $job"
postmsg "$jlogfile" "$msg"
########################################

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

#######################################################################
# LOOP THROUGH PROJECTIONS
#######################################################################
for tau in 99 102 105 108 111\
           114 117 120 123 126 129 132 135 138 141\
           144 147 150 153 156 159 162 165 168 171\
           174 177 180 183 186 189 192 204 216 228\
           240 252 264 276 288 300 312 324 336 348\
           360 372 384
do
#######################################################################
# COPY MODEL FILES TO TEMP SPACE
#######################################################################

  cp $COMIN/gfs.$cycle.pgrbf$tau mrf.$PDY$cyc.pgrbf$tau
  cp $COMIN/gfs.$cycle.pgrbif$tau mrf.$PDY$cyc.pgrbif$tau

#######################################################################
# RUN WGRIB TO GET INPUT LIST FOR COPYGB
# RUN COPYGB FOR NON PRECIP
# CONVERTS TO MDL GRID
#######################################################################
  if [ $tau -le 192 ] ; then
     grid=`cat $FIXmdl/mdl_finegds`
  else
     grid=`cat $FIXmdl/mdl_coarsegds`
  fi
  g1=mrf.$PDY$cyc.pgrbf$tau
  x1=mrf.$PDY$cyc.pgrbif$tau
#
  $EXECutil/wgrib $g1 > wgrib.out
  grep -f $FIXmdl/mdl_gfsxpcp.wgrib wgrib.out |\
  $EXECutil/copygb -a -kw -g"$grid" -i0 $g1 $x1 mdl_xpcpx.$cycle.pgrb
#

#######################################################################
# RUN WGRIB TO GET INPUT LIST FOR COPYGB
# RUN COPYGB FOR PRECIP
# CONVERTS TO MDL GRID
#######################################################################

  if [ $tau -le 192 ] ; then
     grid=`cat $FIXmdl/mdl_finegds`
  else
     grid=`cat $FIXmdl/mdl_coarsegds`
  fi
  g1=mrf.$PDY$cyc.pgrbf$tau
  x1=mrf.$PDY$cyc.pgrbif$tau
#
  grep -f $FIXmdl/mdl_gfspcp.wgrib wgrib.out |\
  $EXECutil/copygb -a -kw -g"$grid" -i3 $g1 $x1 mdl_pcpx.$cycle.pgrb
#
done
#######################################################################
# GET INDICES AND INVENTORY
#######################################################################
$EXECutil/grbindex mdl_xpcpx.$cycle.pgrb mdl_xpcpx.$cycle.pgrbi
$EXECutil/grbindex mdl_pcpx.$cycle.pgrb mdl_pcpx.$cycle.pgrbi
$EXECutil/invindex mdl_xpcpx.$cycle.pgrbi > mdl_xpcpx.pgrbinv.$PDY$cyc
$EXECutil/invindex mdl_pcpx.$cycle.pgrbi > mdl_pcpx.pgrbinv.$PDY$cyc

#######################################################################
# GRB2MDLP
# CONVERT GRIB TO MDL_PACK FOR HOURS 99 - 384 
#######################################################################

export pgm=mdl_grb2mdlp
. prep_step
export XLFUNIT_10="ncepdate"
export XLFUNIT_11="mdl_xpcpx.$cycle.pgrb"
export XLFUNIT_21="mdl_xpcpx.$cycle.pgrbi"
export XLFUNIT_12="mdl_pcpx.$cycle.pgrb"
export XLFUNIT_22="mdl_pcpx.$cycle.pgrbi"
export XLFUNIT_30="$FIXmdl/mdl_gridlst"
export XLFUNIT_51="pkgfsxraw.$PDY$cyc"
export XLFUNIT_52="grb2mdlp.lst"
echo MDLLOG: `date` - Program grb2mdlp has begun.
startmsg
$EXECmdl/mdl_grb2mdlp < $PARMmdl/mdl_gfsxgrbcnv.cn.$cycle >> $pgmout 2>errfile
export err=$?; err_chk

#######################################################################
# COPY FILES TO COM
#######################################################################
if test $SENDCOM = 'YES'
then
  cp pkgfsxraw.$PDY$cyc $COMOUT/mdl_gfsxpkd.$cycle 
  cp mdl_xpcpx.$cycle.pgrb $COMOUT
  cp mdl_xpcpx.$cycle.pgrbi $COMOUT
  cp mdl_pcpx.$cycle.pgrb $COMOUT
  cp mdl_pcpx.$cycle.pgrbi $COMOUT
fi

#####################################################################
# GOOD RUN
set +x
echo "************** $job COMPLETED NORMALLY ON THE IBM SP"
set -x
#####################################################################

msg="HAS COMPLETED NORMALLY!"
postmsg "$jlogfile" "$msg"

#######################################################################
