#!/bin/ksh
################################################################################
####  UNIX Script Documentation Block
#                      .                                             .
# Script name:         nam_prdgen8.sh
# Script description:  Run nam product generator jobs
#
# Author:        Eric Rogers       Org: NP22         Date: 1999-06-23
#
# Abstract: This script runs the Nam PRDGEN jobs
#
# Script history log:
# 1999-06-23  Eric Rogers
# 1999-08-25  Brent Gordon  Pulled the PRDGEN here file out of the post
#                           jobs into this script.
# 2008-08-14  Eric Rogers   This script created the expanded NAM 32 km
#                           output grid, made at 3-h intervals
# 2011-02-18  Eric Rogers   Changed to make grid #151 hourly to 36-h
# 2012-01-28  Eric Rogers   Add 3-h precip buckets for 00z/12z cycles
#                           and reinstate hswitch test
#

set -x

export CNVGRIB=/nwprod/util/exec/cnvgrib
export WGRIB2=/nwprod/util/exec/wgrib2

export fhr=$1
export hswitch=$2
export PS4='PRDGEN${fhr}_T$SECONDS + '

cd $DATA/prdgen8_${fhr}
sh $utilscript/setup.sh

# Now need for hswitch test since we're adding 3-h precip buckets to 00z/12z runs

cat >input8${fhr}.prd <<EOF5
$DATA/BGDAWP${fhr}.tm00
EOF5

if [ $hswitch -ne 0 ] ; then

export pgm=nam_prdgen;. prep_step
export XLFUNIT_10="master8.${fhr}.ctl"
export XLFUNIT_21="$FIXnam/nam_wgt_151"
export XLFUNIT_41="$PARMnam/nam_kwbx.tbl"
export XLFUNIT_42="$PARMnam/nam_time.tbl"
export XLFUNIT_43="$PARMnam/nam_parm.tbl"
export XLFUNIT_44="$PARMnam/nam_grid.tbl"
export XLFUNIT_45="$PARMnam/nam_levl.tbl"
$EXECnam/nam_prdgen < input8${fhr}.prd > $DATA/prdgen8.out${fhr}
export err=$?;err_chk

else

export pgm=nam_prdgen;. prep_step
export XLFUNIT_10="master8.${fhr}.ctl"
export XLFUNIT_21="$FIXnam/nam_wgt_151"
export XLFUNIT_41="$PARMnam/nam_kwbx.tbl"
export XLFUNIT_42="$PARMnam/nam_time.tbl"
export XLFUNIT_43="$PARMnam/nam_parm.tbl"
export XLFUNIT_44="$PARMnam/nam_grid.tbl"
export XLFUNIT_45="$PARMnam/nam_levl.tbl"
$EXECnam/nam_prdgen < input8${fhr}.prd > $DATA/prdgen8.out${fhr}
export err=$?;err_chk

#######################################################
# Generate 3-hour precip for on-time runs.
#######################################################
if [ $cyc -eq 00 -o $cyc -eq 12 ] ; then
  if [ $fhr -ne 00 -a $fhr -ne 03 -a $fhr -ne 15 -a $fhr -ne 27 -a \
       $fhr -ne 39 -a $fhr -ne 51 -a $fhr -ne 63 -a $fhr -ne 75 ] ; then
    $utilexec/grbindex nam.AWP151${fhr} AWP151i${fhr}
    let fhr3=fhr-3
    typeset -Z2 fhr3
    #
    # Make sure fhr3 prdgen files are available before
    # proceeding.
    #
    ic=0
    while [ ! -r $COMOUT/${RUN}.${cycle}.awp151${fhr3}.tm00 -o \
            ! -r $COMOUT/${RUN}.${cycle}.awp151i${fhr3} ] ; do
      let ic=ic+1
      if [ $ic -gt 60 ] ; then
        err_exit "F$fhr PRDGEN GIVING UP AFTER 15 MINUTES WAITING FOR F$fhr3 files"
      fi
      sleep 15
    done

# start grid 151 processing

    cp $COMOUT/${RUN}.${cycle}.awp151${fhr3}.tm00 ${fhr}.nam.AWP151${fhr3}
    cp $COMOUT/${RUN}.${cycle}.awp151i${fhr3} ${fhr}.AWP151i${fhr3}
    cp nam.AWP151${fhr} ${fhr}.nam.AWP151${fhr}
    cp AWP151i${fhr} ${fhr}.AWP151i${fhr}

    export pgm=nam_makeprecip_151;. prep_step
    export XLFUNIT_13="${fhr}.nam.AWP151${fhr3}"
    export XLFUNIT_14="${fhr}.AWP151i${fhr3}"
    export XLFUNIT_15="${fhr}.nam.AWP151${fhr}"
    export XLFUNIT_16="${fhr}.AWP151i${fhr}"
    export XLFUNIT_50="3precip151.${fhr}"
    export XLFUNIT_51="3cprecip151.${fhr}"
    $EXECnam/nam_makeprecip_151 <<EOF>>$pgmout 2>errfil
$fhr $fhr3
EOF
    export err=$?;err_chk

    cat 3precip151.${fhr} >> nam.AWP151${fhr}
    cat 3cprecip151.${fhr} >> nam.AWP151${fhr}

  fi # fhr test

fi # end on-time cycle processing

fi # end hswitch test

if test $SENDCOM = 'YES'
then

  $utilexec/grbindex nam.AWP151${fhr} AWP151i${fhr}
  mv AWP151i${fhr} $COMOUT/${RUN}.${cycle}.awp151i${fhr}

  $CNVGRIB -g12 -p40 nam.AWP151${fhr} nam.AWP151${fhr}.grib2
  $WGRIB2 nam.AWP151${fhr}.grib2 -s >nam.AWP151${fhr}.grib2.idx
  mv nam.AWP151${fhr}.grib2 $COMOUT/${RUN}.${cycle}.awp151${fhr}.tm00.grib2
  mv nam.AWP151${fhr}.grib2.idx $COMOUT/${RUN}.${cycle}.awp151${fhr}.tm00.grib2.idx

  mv nam.AWP151${fhr} $COMOUT/${RUN}.${cycle}.awp151${fhr}.tm00

  if test $SENDDBN = 'YES'
  then
   $DBNROOT/bin/dbn_alert MODEL NAM_AW151 $job $COMOUT/${RUN}.${cycle}.awp151${fhr}.tm00
   $DBNROOT/bin/dbn_alert MODEL NAM_AW151I $job $COMOUT/${RUN}.${cycle}.awp151i${fhr}
   $DBNROOT/bin/dbn_alert MODEL NAM_AW151_GB2 $job $COMOUT/${RUN}.${cycle}.awp151${fhr}.tm00.grib2
   $DBNROOT/bin/dbn_alert MODEL NAM_AW151_GB2_WIDX $job $COMOUT/${RUN}.${cycle}.awp151${fhr}.tm00.grib2.idx
  fi

fi
 
if test "$SENDSMS" = 'YES'
then
  $SMSBIN/setev post_8_complete
fi

echo EXITING $0

wait
