#! /bin/ksh
################################################################################
####  UNIX Script Documentation Block
#                      .                                             .
# Script name:         dgex_prdgen.sh.sms
# Script description:  Runs WRF-NMM product generator for DGEX
#
# Author:        Eric Rogers       Org: NP22         Date: 2006-04-21
#

set -xa
msg="JOB $job HAS BEGUN"
postmsg "$jlogfile" "$msg"
                                                                                                
cd $DATA
                                                                                                
#
# Get needed variables from exnam_prelim.sh.sms
#
. $COMOUT/${RUN}_${REGION}.t${cyc}z.envir.sh

model=NMM
export tmmark=tm00

# fcsthrs = forecast hour (from SMS job)

fhr=$fcsthrs

length=192

if [ $REGION = conus ] ; then
   export gridnum=185
   export gridname=awp185
   export region=conus
fi

if [ $REGION = alaska ] ; then
   export gridnum=186
   export gridname=awp186
   export region=alaska
fi

filedir=$DATA

YYYY=`echo ${CYCLEnam} | cut -c1-4`
MM=`echo ${CYCLEnam} | cut -c5-6`
DD=`echo ${CYCLEnam} | cut -c7-8`
CYCLE=`echo ${CYCLEnam} | cut -c1-10`

echo $CYCLEnam > cycledate
CYCNAM=`cut -c 9-10 cycledate`

yyy=`expr $fhr % 6`

date=`/nwprod/util/exec/ndate $fhr $CYCLE`

export fhr

while [ ! -s ${FCSTDATA}/dgexpost.done${fhr} ]
do
echo "waiting for desired forecast hour $fhr"
sleep 55
done

ln -s -f $COMIN/${RUN}_${REGION}.${cycle}.bgdawp${fhr}.tm00 BGDAWP${fhr}.tm00

cat >input${fhr}.prd <<EOF5
$DATA/BGDAWP${fhr}.${tmmark}
EOF5

if [ $yyy -eq 0 ] ; then
  cp $PARMdgex/dgex_master.ctl_${REGION} master${fhr}.ctl
else
  cp $PARMdgex/dgex_master.ctl_${REGION}_3h master${fhr}.ctl
fi

export pgm=dgex_prdgen;. prep_step

export XLFUNIT_10=master${fhr}.ctl
export XLFUNIT_21=$FIXdgex/dgex_wgt_g${gridnum}
$EXECdgex/dgex_prdgen < input${fhr}.prd > prdgen.out${fhr}
export err=$?;err_chk

echo "done executing prdgen" > ${FCSTDATA}/prdgendone${fhr}.${tmmark}

echo $FILENAM > higher
filenam=`cat higher | tr '[A-Z]' '[a-z]'`

if test $SENDCOM = 'YES'
then
                                                                                                
  y=`expr $fhr % 6`

  if [ $y -eq 0 ] ; then
    $utilexec/grbindex nam.AWP${gridnum}${fhr}.tm00 nam.AWP${gridnum}i${fhr}.tm00
    cp nam.AWP${gridnum}${fhr}.tm00 $COMOUT/dgex_${REGION}.${cycle}.awp${gridnum}${fhr}.tm00
    cp nam.AWP${gridnum}i${fhr}.tm00 $COMOUT/dgex_${REGION}.${cycle}.awp${gridnum}i${fhr}.tm00

# Convert to GRIB2 format
    $utilexec/cnvgrib -g12 -p40000 nam.AWP${gridnum}${fhr}.tm00 grib2_nam.AWP${gridnum}${fhr}.tm00
    cp grib2_nam.AWP${gridnum}${fhr}.tm00 $COMOUT/${RUN}_${region}.${cycle}.awpgrb2${gridnum}${fhr}.tm00

    if [ $REGION = "alaska" ]
    then
        export GRID=186
    else
        export GRID=185
    fi
#
# Call mkawpgrb.sh to create AWIPS GRIB products with WMO headers and send to TOC
#
    if [ $fhr -ge 90 ]
    then
       sh $utilscript/mkawpgrb.sh "$fhr"
    fi

    if test $SENDDBN = 'YES'
    then
     $DBNROOT/bin/dbn_alert MODEL DGEX_AW${gridnum} $job $COMOUT/${RUN}_${region}.${cycle}.awpgrb2${gridnum}${fhr}.tm00
    fi

  else

    $utilexec/grbindex nam.AWP${gridnum}${fhr}.tm00 AWP${gridnum}i${fhr}.tm00
    mv AWP${gridnum}i${fhr}.tm00 $COMOUT/${RUN}_${region}.${cycle}.awp${gridnum}i${fhr}.tm00
    mv nam.AWP${gridnum}${fhr}.tm00 $COMOUT/${RUN}_${region}.${cycle}.awp${gridnum}${fhr}.tm00

# end 6-h frequency test
  fi

# end SENDCOM test
fi

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

if [ $fhr -eq 192 ]
then

  icnt=0
  while [ $icnt -lt 1000 ]
  do
      fh=81
      while [ $fh -le $fhr ]
      do
         if [ -s $COMOUT/${RUN}_${REGION}.${cycle}.awp${gridnum}${fh}.tm00 ]
         then
            let "fh=fh+3"
         else
            break
         fi
      done
                                                                                                                                              
      if [ $fh -gt $fhr ]
      then
         break
      fi
                                                                                                                                              
      let "icnt=$icnt + 1"
      sleep 10
                                                                                                                                              
      if [ $icnt -ge 180 ]
      then
         msg="ABORTING after 30 minutes of waiting for NAM Post F${fh} to end."
         err_exit $msg
      fi
  done
     
# Run the ICWF script:
  $USHdgex/dgex_icwf.sh ${gridname}

# alert ICWF files

FHMAX=192

if test "$SENDDBN" = 'YES'
then
  fh=84
  while [ $fh -le $FHMAX ]
  do
    $DBNROOT/bin/dbn_alert MODEL NAM_AWP${gridnum}F WWDGEXR $COMOUT/${RUN}_${REGION}.${cycle}.awpgrb2${gridnum}$fh.tm00_icwf
    let "fh=fh+6"
  done
fi

#end 192-h test
fi

echo EXITING $0
exit

