################################################################################
####  UNIX Script Documentation Block
#                      .                                             .
# Script name:         rap_prdgen.sh
# Script description:  Runs ungrib
#
# Author:        Geoff Manikin           Org: EMC          Date: 2011-09-15
#
# Abstract: run ungrid.
#
# Script history log:
# 2011-09-15  Geoff Manikin   new script 
#

set -x
cd $DATA

msg="$job HAS BEGUN"
postmsg $jlogfile "$msg"

# fhr is passed from the SMS script
fhr=$fhr

export ndate=${ndate:-$utilexec/ndate}
export GRBINDEX=${GRBINDEX:-$utilexec/grbindex}
export WGRIB=${WGRIB:-$utilexec/wgrib}
export CNVGRIB=${CNVGRIB:-$utilexec/cnvgrib}
export WGRIB2=${WGRIB2:-$utilexec/wgrib2}

# Print out times
START_TIME=$PDY$cyc

echo "   START TIME = ${START_TIME}"
echo "    fhr = ${fhr}"

# Set up some constants
export XLFRTEOPTS="unit_vars=yes"

POST_TIME=`$ndate +${fhr} $START_TIME`
YYYY=`echo ${POST_TIME} | cut -c1-4`
MM=`echo ${POST_TIME} | cut -c5-6`
DD=`echo ${POST_TIME} | cut -c7-8`
yy=`echo ${POST_TIME} | cut -c3-4`
#cyc=`echo ${START_TIME} | cut -c9-10`
#fhr=${fhr}

let mod=${fhr}%3
let fhr3=${fhr}-3
let fhr2=${fhr}-2
let fhr1=${fhr}-1
let fhrb=${fhr}+80
if [ ${fhr} -lt 3 ]; then
  let fhr3=00
fi

typeset -Z2 fhr3 fhr2 fhr1 fhrb

COMINPRDG3=$DATA_IN/rap_prdgen_${envir}_${cyc}_f${fhr3}
COMINPRDG2=$DATA_IN/rap_prdgen_${envir}_${cyc}_f${fhr2}
COMINPRDG1=$DATA_IN/rap_prdgen_${envir}_${cyc}_f${fhr1}
COMINPRDG0=$DATA_IN/rap_prdgen_${envir}_${cyc}_f00

echo $fhr3 $fhr2 $mod
POST_TIME=`$ndate +${fhr} $START_TIME`
vtime="`$ndate -1 ${START_TIME}`"
echo vtime = $vtime
ymdm1=`echo $vtime | cut -c1-8`
cycm1=`echo $vtime | cut -c9-10`
export COMIN1=${COM_IN}/rap.${ymdm1}
echo $COMIN1

vtime="`${ndate} -2 ${START_TIME}`"
echo vtime = $vtime
ymdm2=`echo $vtime | cut -c1-8`
cycm2=`echo $vtime | cut -c9-10`
export COMIN2=${COM_IN}/rap.${ymdm2}
echo $COMIN2

vtime="`${ndate} -3 ${START_TIME}`"
echo vtime = $vtime
ymdm3=`echo $vtime | cut -c1-8`
cycm3=`echo $vtime | cut -c9-10`
export COMIN3=${COM_IN}/rap.${ymdm3}

vtime="`${ndate} -4 ${START_TIME}`"
echo vtime = $vtime
ymdm4=`echo $vtime | cut -c1-8`
cycm4=`echo $vtime | cut -c9-10`
export COMIN4=${COM_IN}/rap.${ymdm4}

vtime="`${ndate} -5 ${START_TIME}`"
echo vtime = $vtime
ymdm5=`echo $vtime | cut -c1-8`
cycm5=`echo $vtime | cut -c9-10`
export COMIN5=${COM_IN}/rap.${ymdm5}

# pressure level output
cp ${COMIN}/rap.t${cyc}z.wrfprs${fhr}.tm00 EGDAWP${fhr}.tm00
cat >input${fhr}.prd <<EOF5
EGDAWP${fhr}.tm00
$fhr
EOF5

rm -f fort.*
export XLFUNIT_10="${PARMrap}/rap_master1.ctl"
export XLFUNIT_21="${FIXrap}/rap_wgt_130"
export XLFUNIT_22="${FIXrap}/rap_wgt_236"
export XLFUNIT_23="${FIXrap}/rap_wgt_252"
${EXECrap}/rap_prdgen < input${fhr}.prd > prdgen.pout${fhr}
export err=$?; err_chk

# native level output
cp ${COMIN}/rap.t${cyc}z.wrfnat${fhr}.tm00 EGRD3D${fhr}.tm00
cat >input${fhr}.prd <<EOF5
EGRD3D${fhr}.tm00
$fhr
EOF5

rm -f fort.*
export XLFUNIT_10="${PARMrap}/rap_master2.ctl"
export XLFUNIT_21="${FIXrap}/rap_wgt_130"
export XLFUNIT_22="${FIXrap}/rap_wgt_236"
export XLFUNIT_23="${FIXrap}/rap_wgt_252"
${EXECrap}/rap_prdgen < input${fhr}.prd > prdgen.bout${fhr}
export err=$?; err_chk

# 200 Puerto Rico 221 full domain and 242 AK grids

cp ${COMIN}/rap.t${cyc}z.wrfprs${fhr}.tm00 EGDAWP${fhr}.tm00
cat >input${fhr}.prd <<EOF5
EGDAWP${fhr}.tm00
$fhr
EOF5

rm -f fort.*
export XLFUNIT_10="${PARMrap}/rap_master3.ctl"
export XLFUNIT_21="${FIXrap}/rap_wgt_200"
export XLFUNIT_22="${FIXrap}/rap_wgt_221"
export XLFUNIT_23="${FIXrap}/rap_wgt_242"
${EXECrap}/rap_prdgen < input${fhr}.prd > prdgen.akout${fhr}
export err=$?; err_chk

echo "End of product generator section"
echo "Start to process subfields"
echo "Set flag to release the subsequent prdgen jobs"
if [ $SENDSMS = YES ]; then
  $SMSBIN/setev grib_ready
fi

#  need to generate ptnd and 3-hr buckets for rain/snow
# 13 km
if [ $fhr -eq 00 ]; then
 cp rap.pgrb13${fhr} RAP13PRS1
 if [ -s ${COMIN3}/rap.t${cycm3}z.awp130pgrbf00 ]; then
   cp ${COMIN3}/rap.t${cycm3}z.awp130pgrbf00 RAP13PRS3
 elif [ -s ${COMIN4}/rap.t${cycm4}z.awp130pgrbf01 ]; then
   cp ${COMIN4}/rap.t${cycm4}z.awp130pgrbf01 RAP13PRS3
 elif [ -s ${COMIN5}/rap.t${cycm5}z.awp130pgrbf02 ]; then
   cp ${COMIN5}/rap.t${cycm5}z.awp130pgrbf02 RAP13PRS3
 else
   fhr3=99
 fi
elif [ $fhr -eq 01 ]; then
 cp rap.pgrb13${fhr} RAP13PRS1
 if [ -s ${COMIN2}/rap.t${cycm2}z.awp130pgrbf00 ]; then
   cp ${COMIN2}/rap.t${cycm2}z.awp130pgrbf00 RAP13PRS3
 elif [ -s ${COMIN3}/rap.t${cycm3}z.awp130pgrbf01 ]; then
   cp ${COMIN3}/rap.t${cycm3}z.awp130pgrbf01 RAP13PRS3
 elif [ -s ${COMIN4}/rap.t${cycm4}z.awp130pgrbf02 ]; then
   cp ${COMIN4}/rap.t${cycm4}z.awp130pgrbf02 RAP13PRS3
 else
   fhr3=99
 fi
elif [ $fhr -eq 02 ]; then
 cp rap.pgrb13${fhr} RAP13PRS1
 if [ -s ${COMIN1}/rap.t${cycm1}z.awp130pgrbf00 ]; then
   cp ${COMIN1}/rap.t${cycm1}z.awp130pgrbf00 RAP13PRS3
 elif [ -s ${COMIN2}/rap.t${cycm2}z.awp130pgrbf01 ]; then
   cp ${COMIN2}/rap.t${cycm2}z.awp130pgrbf01 RAP13PRS3
 elif [ -s ${COMIN3}/rap.t${cycm3}z.awp130pgrbf02 ]; then
   cp ${COMIN3}/rap.t${cycm3}z.awp130pgrbf02 RAP13PRS3
 else
   fhr3=99
 fi
elif [ $fhr -eq 03 ]; then
 cp rap.pgrb13${fhr} RAP13PRS1
 cp ${COMINPRDG3}/rap.pgrb13${fhr3} RAP13PRS3
elif [ $fhr -gt 03 -a $mod -eq 0 ]; then
 cp rap.pgrb13${fhr} RAP13PRS1
 cp ${COMINPRDG3}/rap.pgrb13${fhr3} RAP13PRS2
elif [ $fhr -ge 03 -a $mod -eq 1 ]; then
 cp rap.pgrb13${fhr} RAP13PRS1
 cp ${COMINPRDG1}/rap.pgrb13${fhr1} RAP13PRS2
 cp ${COMINPRDG3}/rap.pgrb13${fhr3} RAP13PRS3
 fhrpcp=$fhr1
else
 cp rap.pgrb13${fhr} RAP13PRS1
 cp ${COMINPRDG2}/rap.pgrb13${fhr2} RAP13PRS2
 cp ${COMINPRDG3}/rap.pgrb13${fhr3} RAP13PRS3
 fhrpcp=$fhr2
fi

if [ $fhr3 -eq 99  -o $fhr -le 3 ]; then
$GRBINDEX RAP13PRS1 RAP13PRS1I
else
$GRBINDEX RAP13PRS1 RAP13PRS1I
$GRBINDEX RAP13PRS2 RAP13PRS2I
fi

if [ -s RAP13PRS3 ]; then
 $GRBINDEX RAP13PRS3 RAP13PRS3I
fi

if [ $fhr -lt 3 -a $fhr3 -eq 99 ]; then
    export XLFUNIT_13="RAP13PRS1"
    export XLFUNIT_14="RAP13PRS1I"
    export XLFUNIT_50="13extra1.${fhr}p"
    ${EXECrap}/rap_subflds_130 <<EOF >> subflds${fhr}.out13p
$fhr 99 99
EOF
export err=$?; err_chk
elif [ $fhr -le 3 -a $fhr3 -ne 99 ]; then
    export XLFUNIT_13="RAP13PRS1"
    export XLFUNIT_14="RAP13PRS1I"
    export XLFUNIT_17="RAP13PRS3"
    export XLFUNIT_18="RAP13PRS3I"
    export XLFUNIT_50="13extra1.${fhr}p"
    ${EXECrap}/rap_subflds_130 <<EOF >> subflds${fhr}.out13p
$fhr 99 $fhr3
EOF
export err=$?; err_chk
elif [ $mod -eq 0 ]; then
    export XLFUNIT_13="RAP13PRS1"
    export XLFUNIT_14="RAP13PRS1I"
    export XLFUNIT_15="RAP13PRS2"
    export XLFUNIT_16="RAP13PRS2I"
    export XLFUNIT_50="13extra1.${fhr}p"
    ${EXECrap}/rap_subflds_130 <<EOF >> subflds${fhr}.out13p
$fhr $fhr3 99
EOF
export err=$?; err_chk
else
    export XLFUNIT_13="RAP13PRS1"
    export XLFUNIT_14="RAP13PRS1I"
    export XLFUNIT_15="RAP13PRS2"
    export XLFUNIT_16="RAP13PRS2I"
    export XLFUNIT_17="RAP13PRS3"
    export XLFUNIT_18="RAP13PRS3I"
    export XLFUNIT_50="13extra1.${fhr}p"
    ${EXECrap}/rap_subflds_130 <<EOF >> subflds${fhr}.out13p
$fhr $fhrpcp $fhr3
EOF
export err=$?; err_chk
fi

   if [ $fhr -gt 3 ]; then
    $WGRIB RAP13PRS1 | grep -v kpds5=65 | $WGRIB RAP13PRS1 -i -grib -o RAP13PRS1B
    cat 13extra1.${fhr}p >> RAP13PRS1B
   elif [ $fhr -eq 1 ]; then
    $WGRIB RAP13PRS1 | grep -v kpds5=62 | $WGRIB RAP13PRS1 -i -grib -o RAP13PRS1A
    $WGRIB RAP13PRS1A | grep -v kpds5=63 | $WGRIB RAP13PRS1A -i -grib -o RAP13PRS2A
    $WGRIB RAP13PRS2A | grep -v kpds5=65:kpds6=1:kpds7=0:TR=0 | $WGRIB RAP13PRS2A -i -grib -o RAP13PRS1B
    cat 13extra1.${fhr}p >> RAP13PRS1B
   else
    $WGRIB RAP13PRS1 | grep -v kpds5=65:kpds6=1:kpds7=0:TR=0 | $WGRIB RAP13PRS1 -i -grib -o RAP13PRS1B
    cat 13extra1.${fhr}p >> RAP13PRS1B
   fi

# 20 km
if [ $fhr -eq 00 ]; then
 cp rap.pgrb20${fhr} RAP20PRS1
 if [ -s ${COMIN3}/rap.t${cycm3}z.awp252pgrbf00 ]; then
   cp ${COMIN3}/rap.t${cycm3}z.awp252pgrbf00 RAP20PRS3
 elif [ -s ${COMIN4}/rap.t${cycm4}z.awp252pgrbf01 ]; then
   cp ${COMIN4}/rap.t${cycm4}z.awp252pgrbf01 RAP20PRS3
 elif [ -s ${COMIN5}/rap.t${cycm5}z.awp252pgrbf02 ]; then
   cp ${COMIN5}/rap.t${cycm5}z.awp252pgrbf02 RAP20PRS3
 else
   fhr3=99
 fi
elif [ $fhr -eq 01 ]; then
 cp rap.pgrb20${fhr} RAP20PRS1
 if [ -s ${COMIN2}/rap.t${cycm2}z.awp252pgrbf00 ]; then
   cp ${COMIN2}/rap.t${cycm2}z.awp252pgrbf00 RAP20PRS3
 elif [ -s ${COMIN3}/rap.t${cycm3}z.awp252pgrbf01 ]; then
   cp ${COMIN3}/rap.t${cycm3}z.awp252pgrbf01 RAP20PRS3
 elif [ -s ${COMIN4}/rap.t${cycm4}z.awp252pgrbf02 ]; then
   cp ${COMIN4}/rap.t${cycm4}z.awp252pgrbf02 RAP20PRS3
 else
   fhr3=99
 fi
elif [ $fhr -eq 02 ]; then
 cp rap.pgrb20${fhr} RAP20PRS1
 if [ -s ${COMIN1}/rap.t${cycm1}z.awp252pgrbf00 ]; then
   cp ${COMIN1}/rap.t${cycm1}z.awp252pgrbf00 RAP20PRS3
 elif [ -s ${COMIN2}/rap.t${cycm2}z.awp252pgrbf01 ]; then
   cp ${COMIN2}/rap.t${cycm2}z.awp252pgrbf01 RAP20PRS3
 elif [ -s ${COMIN3}/rap.t${cycm3}z.awp252pgrbf02 ]; then
   cp ${COMIN3}/rap.t${cycm3}z.awp252pgrbf02 RAP20PRS3
 else
   fhr3=99
 fi
elif [ $fhr -eq 03 ]; then
 cp rap.pgrb20${fhr} RAP20PRS1
 cp ${COMINPRDG3}/rap.pgrb20${fhr3} RAP20PRS3
elif [ $fhr -gt 03 -a $mod -eq 0 ]; then
 cp rap.pgrb20${fhr} RAP20PRS1
 cp ${COMINPRDG3}/rap.pgrb20${fhr3} RAP20PRS2
elif [ $fhr -ge 03 -a $mod -eq 1 ]; then
 cp rap.pgrb20${fhr} RAP20PRS1
 cp ${COMINPRDG1}/rap.pgrb20${fhr1} RAP20PRS2
 cp ${COMINPRDG3}/rap.pgrb20${fhr3} RAP20PRS3
 fhrpcp=$fhr1
else
 cp rap.pgrb20${fhr} RAP20PRS1
 cp ${COMINPRDG2}/rap.pgrb20${fhr2} RAP20PRS2
 cp ${COMINPRDG3}/rap.pgrb20${fhr3} RAP20PRS3
 fhrpcp=$fhr2
fi

if [ $fhr3 -eq 99  -o $fhr -le 3 ]; then
$GRBINDEX RAP20PRS1 RAP20PRS1I
else
$GRBINDEX RAP20PRS1 RAP20PRS1I
$GRBINDEX RAP20PRS2 RAP20PRS2I
fi

if [ -s RAP20PRS3 ]; then
 $GRBINDEX RAP20PRS3 RAP20PRS3I
fi

if [ $fhr -lt 3 -a $fhr3 -eq 99 ]; then
    export XLFUNIT_13="RAP20PRS1"
    export XLFUNIT_14="RAP20PRS1I"
    export XLFUNIT_50="20extra1.${fhr}p"
    ${EXECrap}/rap_subflds_252 <<EOF >> subflds${fhr}.out20p
$fhr 99 99
EOF
export err=$?; err_chk
elif [ $fhr -le 3 -a $fhr3 -ne 99 ]; then
    export XLFUNIT_13="RAP20PRS1"
    export XLFUNIT_14="RAP20PRS1I"
    export XLFUNIT_17="RAP20PRS3"
    export XLFUNIT_18="RAP20PRS3I"
    export XLFUNIT_50="20extra1.${fhr}p"
    ${EXECrap}/rap_subflds_252 <<EOF >> subflds${fhr}.out20p
$fhr 99 $fhr3
EOF
export err=$?; err_chk
elif [ $mod -eq 0 ]; then
    export XLFUNIT_13="RAP20PRS1"
    export XLFUNIT_14="RAP20PRS1I"
    export XLFUNIT_15="RAP20PRS2"
    export XLFUNIT_16="RAP20PRS2I"
    export XLFUNIT_50="20extra1.${fhr}p"
    ${EXECrap}/rap_subflds_252 <<EOF >> subflds${fhr}.out20p
$fhr $fhr3 99
EOF
export err=$?; err_chk
else
    export XLFUNIT_13="RAP20PRS1"
    export XLFUNIT_14="RAP20PRS1I"
    export XLFUNIT_15="RAP20PRS2"
    export XLFUNIT_16="RAP20PRS2I"
    export XLFUNIT_17="RAP20PRS3"
    export XLFUNIT_18="RAP20PRS3I"
    export XLFUNIT_50="20extra1.${fhr}p"
    ${EXECrap}/rap_subflds_252 <<EOF >> subflds${fhr}.out20p
$fhr $fhrpcp $fhr3
EOF
export err=$?; err_chk
fi

   if [ $fhr -gt 3 ]; then
    $WGRIB RAP20PRS1 | grep -v kpds5=65 | $WGRIB RAP20PRS1 -i -grib -o RAP20PRS1B
    cat 20extra1.${fhr}p >> RAP20PRS1B
   elif [ $fhr -eq 1 ]; then
    $WGRIB RAP20PRS1 | grep -v kpds5=62 | $WGRIB RAP20PRS1 -i -grib -o RAP20PRS1A
    $WGRIB RAP20PRS1A | grep -v kpds5=63 | $WGRIB RAP20PRS1A -i -grib -o RAP20PRS2A
    $WGRIB RAP20PRS2A | grep -v kpds5=65:kpds6=1:kpds7=0:TR=0 | $WGRIB RAP20PRS2A -i -grib -o RAP20PRS1B
    cat 20extra1.${fhr}p >> RAP20PRS1B
   else
    $WGRIB RAP20PRS1 | grep -v kpds5=65:kpds6=1:kpds7=0:TR=0 | $WGRIB RAP20PRS1 -i -grib -o RAP20PRS1B
    cat 20extra1.${fhr}p >> RAP20PRS1B
   fi

# 40 km
if [ $fhr -eq 00 ]; then
 cp rap.pgrb${fhr} RAP40PRS1
 if [ -s ${COMIN3}/rap.t${cycm3}z.awp236pgrbf00 ]; then
   cp ${COMIN3}/rap.t${cycm3}z.awp236pgrbf00 RAP40PRS3
 elif [ -s ${COMIN4}/rap.t${cycm4}z.awp236pgrbf01 ]; then
   cp ${COMIN4}/rap.t${cycm4}z.awp236pgrbf01 RAP40PRS3
 elif [ -s ${COMIN5}/rap.t${cycm5}z.awp236pgrbf02 ]; then
   cp ${COMIN5}/rap.t${cycm5}z.awp236pgrbf02 RAP40PRS3
 else
   fhr3=99
 fi
elif [ $fhr -eq 01 ]; then
 cp rap.pgrb${fhr} RAP40PRS1
 if [ -s ${COMIN2}/rap.t${cycm2}z.awp236pgrbf00 ]; then
   cp ${COMIN2}/rap.t${cycm2}z.awp236pgrbf00 RAP40PRS3
 elif [ -s ${COMIN3}/rap.t${cycm3}z.awp236pgrbf01 ]; then
   cp ${COMIN3}/rap.t${cycm3}z.awp236pgrbf01 RAP40PRS3
 elif [ -s ${COMIN4}/rap.t${cycm4}z.awp236pgrbf02 ]; then
   cp ${COMIN4}/rap.t${cycm4}z.awp236pgrbf02 RAP40PRS3
 else
   fhr3=99
 fi
elif [ $fhr -eq 02 ]; then
 cp rap.pgrb${fhr} RAP40PRS1
 if [ -s ${COMIN1}/rap.t${cycm1}z.awp236pgrbf00 ]; then
   cp ${COMIN1}/rap.t${cycm1}z.awp236pgrbf00 RAP40PRS3
 elif [ -s ${COMIN2}/rap.t${cycm2}z.awp236pgrbf01 ]; then
   cp ${COMIN2}/rap.t${cycm2}z.awp236pgrbf01 RAP40PRS3
 elif [ -s ${COMIN3}/rap.t${cycm3}z.awp236pgrbf02 ]; then
   cp ${COMIN3}/rap.t${cycm3}z.awp236pgrbf02 RAP40PRS3
 else
   fhr3=99
 fi
elif [ $fhr -eq 03 ]; then
 cp rap.pgrb${fhr} RAP40PRS1
 cp ${COMINPRDG3}/rap.pgrb${fhr3} RAP40PRS3
elif [ $fhr -gt 03 -a $mod -eq 0 ]; then
 cp rap.pgrb${fhr} RAP40PRS1
 cp ${COMINPRDG3}/rap.pgrb${fhr3} RAP40PRS2
elif [ $fhr -ge 03 -a $mod -eq 1 ]; then
 cp rap.pgrb${fhr} RAP40PRS1
 cp ${COMINPRDG1}/rap.pgrb${fhr1} RAP40PRS2
 cp ${COMINPRDG3}/rap.pgrb${fhr3} RAP40PRS3
 fhrpcp=$fhr1
else
 cp rap.pgrb${fhr} RAP40PRS1
 cp ${COMINPRDG2}/rap.pgrb${fhr2} RAP40PRS2
 cp ${COMINPRDG3}/rap.pgrb${fhr3} RAP40PRS3
 fhrpcp=$fhr2
fi

if [ $fhr3 -eq 99  -o $fhr -le 3 ]; then
$GRBINDEX RAP40PRS1 RAP40PRS1I
else
$GRBINDEX RAP40PRS1 RAP40PRS1I
$GRBINDEX RAP40PRS2 RAP40PRS2I
fi

if [ -s RAP40PRS3 ]; then
 $GRBINDEX RAP40PRS3 RAP40PRS3I
fi

if [ $fhr -lt 3 -a $fhr3 -eq 99 ]; then
    export XLFUNIT_13="RAP40PRS1"
    export XLFUNIT_14="RAP40PRS1I"
    export XLFUNIT_50="40extra1.${fhr}p"
    ${EXECrap}/rap_subflds_236 <<EOF >> subflds${fhr}.out40p
$fhr 99 99
EOF
export err=$?; err_chk
elif [ $fhr -le 3 -a $fhr3 -ne 99 ]; then
    export XLFUNIT_13="RAP40PRS1"
    export XLFUNIT_14="RAP40PRS1I"
    export XLFUNIT_17="RAP40PRS3"
    export XLFUNIT_18="RAP40PRS3I"
    export XLFUNIT_50="40extra1.${fhr}p"
    ${EXECrap}/rap_subflds_236 <<EOF >> subflds${fhr}.out40p
$fhr 99 $fhr3
EOF
export err=$?; err_chk
elif [ $mod -eq 0 ]; then
    export XLFUNIT_13="RAP40PRS1"
    export XLFUNIT_14="RAP40PRS1I"
    export XLFUNIT_15="RAP40PRS2"
    export XLFUNIT_16="RAP40PRS2I"
    export XLFUNIT_50="40extra1.${fhr}p"
    ${EXECrap}/rap_subflds_236 <<EOF >> subflds${fhr}.out40p
$fhr $fhr3 99
EOF
export err=$?; err_chk
else
    export XLFUNIT_13="RAP40PRS1"
    export XLFUNIT_14="RAP40PRS1I"
    export XLFUNIT_15="RAP40PRS2"
    export XLFUNIT_16="RAP40PRS2I"
    export XLFUNIT_17="RAP40PRS3"
    export XLFUNIT_18="RAP40PRS3I"
    export XLFUNIT_50="40extra1.${fhr}p"
    ${EXECrap}/rap_subflds_236 <<EOF >> subflds${fhr}.out40p
$fhr $fhrpcp $fhr3
EOF
export err=$?; err_chk
fi

   if [ $fhr -gt 3 ]; then
    $WGRIB RAP40PRS1 | grep -v kpds5=65 | $WGRIB RAP40PRS1 -i -grib -o RAP40PRS1B
    cat 40extra1.${fhr}p >> RAP40PRS1B
   elif [ $fhr -eq 1 ]; then
    $WGRIB RAP40PRS1 | grep -v kpds5=62 | $WGRIB RAP40PRS1 -i -grib -o RAP40PRS1A
    $WGRIB RAP40PRS1A | grep -v kpds5=63 | $WGRIB RAP40PRS1A -i -grib -o RAP40PRS2A
    $WGRIB RAP40PRS2A | grep -v kpds5=65:kpds6=1:kpds7=0:TR=0 | $WGRIB RAP40PRS2A -i -grib -o RAP40PRS1B
    cat 40extra1.${fhr}p >> RAP40PRS1B
   else
    $WGRIB RAP40PRS1 | grep -v kpds5=65:kpds6=1:kpds7=0:TR=0 | $WGRIB RAP40PRS1 -i -grib -o RAP40PRS1B
    cat 40extra1.${fhr}p >> RAP40PRS1B
   fi

if test "$SENDCOM" = 'YES'
then
  cp RAP13PRS1B ${COMOUT}/rap.t${cyc}z.awp130pgrbf${fhr}
  cp RAP20PRS1B ${COMOUT}/rap.t${cyc}z.awp252pgrbf${fhr}
  cp RAP40PRS1B ${COMOUT}/rap.t${cyc}z.awp236pgrbf${fhr}
  $GRBINDEX RAP13PRS1B RAP13PRS1BI

  if [ $SENDDBN = YES ]; then
     $DBNROOT/bin/dbn_alert MODEL RAP_PG20 $job ${COMOUT}/rap.t${cyc}z.awp252pgrbf${fhr}
  fi

  # Convert to GRIB2
  for fil in awp130pgrb awp252pgrb awp236pgrb
  do
    grib1=rap.t${cyc}z.${fil}f${fhr}
    grib2=rap.t${cyc}z.${fil}f${fhr}.grib2
    grib2_idx=rap.t${cyc}z.${fil}f${fhr}.grib2.idx

    $CNVGRIB -g12 -p40 ${COMOUT}/$grib1 ${COMOUT}/$grib2
    $WGRIB2 ${COMOUT}/$grib2 -s >${COMOUT}/$grib2_idx

    if [ $SENDDBN = YES ]
    then
      case $fil in
        awp130pgrb)  ALERT_TYPE=RAP_PG13_GB2;;
        awp252pgrb)  ALERT_TYPE=RAP_PG20_GB2;;
        awp236pgrb)  ALERT_TYPE=RAP_PG40_GB2;;
      esac

      $DBNROOT/bin/dbn_alert MODEL ${ALERT_TYPE} $job $COMOUT/$grib2
      $DBNROOT/bin/dbn_alert MODEL ${ALERT_TYPE}_WIDX $job $COMOUT/$grib2_idx
    fi
  done
fi

# native level output
# 13 km

# IF FHR < 4, NO EXTRA FIELDS ARE NEEDED
if [ $fhr -gt 3 ]; then

if [ $mod -eq 0 ]; then
 cp rap.bgrb13${fhr} RAP13NAT1
 cp ${COMINPRDG3}/rap.bgrb13${fhr3} RAP13NAT2
 fhrpcp=$fhr3
elif [ $mod -eq 1 ]; then
 cp rap.bgrb13${fhr} RAP13NAT1
 cp ${COMINPRDG1}/rap.bgrb13${fhr1} RAP13NAT2
 fhrpcp=$fhr1
else
 cp rap.bgrb13${fhr} RAP13NAT1
 cp ${COMINPRDG2}/rap.bgrb13${fhr2} RAP13NAT2
 fhrpcp=$fhr2
fi

$GRBINDEX RAP13NAT1 RAP13NAT1I
$GRBINDEX RAP13NAT2 RAP13NAT2I

    export XLFUNIT_13="RAP13NAT1"
    export XLFUNIT_14="RAP13NAT1I"
    export XLFUNIT_15="RAP13NAT2"
    export XLFUNIT_16="RAP13NAT2I"
    export XLFUNIT_50="13extra1.${fhr}b"
    ${EXECrap}/rap_subflds_130 <<EOF >> subflds${fhr}.out13b
$fhrb $fhrpcp 99
EOF
export err=$?; err_chk

if [ $mod -eq 1 ]; then
   $WGRIB RAP13NAT1 | grep -v kpds5=65:kpds6=1:kpds7=0:TR=4 | $WGRIB RAP13NAT1 -i -grib -o RAP13NAT1A
   $WGRIB RAP13NAT1A | grep -v kpds5=62:kpds6=1:kpds7=0:TR=4:P1=0 | $WGRIB RAP13NAT1A -i -grib -o RAP13NAT1B1
   $WGRIB RAP13NAT1B1 | grep -v kpds5=63:kpds6=1:kpds7=0:TR=4:P1=0 | $WGRIB RAP13NAT1B1 -i -grib -o RAP13NAT1B
   cat 13extra1.${fhr}b >> RAP13NAT1B
else
   $WGRIB RAP13NAT1 | grep -v kpds5=65:kpds6=1:kpds7=0:TR=4 | $WGRIB RAP13NAT1 -i -grib -o RAP13NAT1A
   $WGRIB RAP13NAT1A | grep -v kpds5=62 | $WGRIB RAP13NAT1A -i -grib -o RAP13NAT1B1
   $WGRIB RAP13NAT1B1 | grep -v kpds5=63 | $WGRIB RAP13NAT1B1 -i -grib -o RAP13NAT1B
   cat 13extra1.${fhr}b >> RAP13NAT1B
fi
elif [ ${fhr} -eq 1 ]; then
   $WGRIB rap.bgrb13${fhr} -PDS | sort -u -t: -k3 | sort -t: -nk1,1 | $WGRIB rap.bgrb13${fhr} -i -grib -o RAP13NAT1B
else
   cp rap.bgrb13${fhr} RAP13NAT1B
fi

# 20 km
# IF FHR < 4, NO EXTRA FIELDS ARE NEEDED
if [ $fhr -gt 3 ]; then

if [ $mod -eq 0 ]; then
 cp rap.bgrb20${fhr} RAP20NAT1
 cp ${COMINPRDG3}/rap.bgrb20${fhr3} RAP20NAT2
 fhrpcp=$fhr3
elif [ $mod -eq 1 ]; then
 cp rap.bgrb20${fhr} RAP20NAT1
 cp ${COMINPRDG1}/rap.bgrb20${fhr1} RAP20NAT2
 fhrpcp=$fhr1
else
 cp rap.bgrb20${fhr} RAP20NAT1
 cp ${COMINPRDG2}/rap.bgrb20${fhr2} RAP20NAT2
 fhrpcp=$fhr2
fi

$GRBINDEX RAP20NAT1 RAP20NAT1I
$GRBINDEX RAP20NAT2 RAP20NAT2I

    export XLFUNIT_13="RAP20NAT1"
    export XLFUNIT_14="RAP20NAT1I"
    export XLFUNIT_15="RAP20NAT2"
    export XLFUNIT_16="RAP20NAT2I"
    export XLFUNIT_50="20extra1.${fhr}b"
    ${EXECrap}/rap_subflds_252 <<EOF >> subflds${fhr}.out20b
$fhrb $fhrpcp 99
EOF
export err=$?; err_chk

if [ $mod -eq 1 ]; then
   $WGRIB RAP20NAT1 | grep -v kpds5=65:kpds6=1:kpds7=0:TR=4 | $WGRIB RAP20NAT1 -i -grib -o RAP20NAT1A
   $WGRIB RAP20NAT1A | grep -v kpds5=62:kpds6=1:kpds7=0:TR=4:P1=0 | $WGRIB RAP20NAT1A -i -grib -o RAP20NAT1B1
   $WGRIB RAP20NAT1B1 | grep -v kpds5=63:kpds6=1:kpds7=0:TR=4:P1=0 | $WGRIB RAP20NAT1B1 -i -grib -o RAP20NAT1B
   cat 20extra1.${fhr}b >> RAP20NAT1B
else
   $WGRIB RAP20NAT1 | grep -v kpds5=65:kpds6=1:kpds7=0:TR=4 | $WGRIB RAP20NAT1 -i -grib -o RAP20NAT1A
   $WGRIB RAP20NAT1A | grep -v kpds5=62 | $WGRIB RAP20NAT1A -i -grib -o RAP20NAT1B1
   $WGRIB RAP20NAT1B1 | grep -v kpds5=63 | $WGRIB RAP20NAT1B1 -i -grib -o RAP20NAT1B
   cat 20extra1.${fhr}b >> RAP20NAT1B
fi
elif [ ${fhr} -eq 1 ]; then
   $WGRIB rap.bgrb20${fhr} -PDS | sort -u -t: -k3 | sort -t: -nk1,1 | $WGRIB rap.bgrb20${fhr} -i -grib -o RAP20NAT1B
else
   cp rap.bgrb20${fhr} RAP20NAT1B
fi

if test "$SENDCOM" = 'YES'
then
  cp RAP13NAT1B ${COMOUT}/rap.t${cyc}z.awp130bgrbf${fhr}
  cp RAP20NAT1B ${COMOUT}/rap.t${cyc}z.awp252bgrbf${fhr}

  # Convert to GRIB2
  for fil in awp130bgrb awp252bgrb
  do
    grib1=rap.t${cyc}z.${fil}f${fhr}
    grib2=rap.t${cyc}z.${fil}f${fhr}.grib2
    grib2_idx=rap.t${cyc}z.${fil}f${fhr}.grib2.idx

    $CNVGRIB -g12 -p40 $COMOUT/$grib1 ${COMOUT}/$grib2
    $WGRIB2 ${COMOUT}/$grib2 -s >${COMOUT}/$grib2_idx

    if [ $SENDDBN = YES ]
    then
      case $fil in
        awp130bgrb)  ALERT_TYPE=RAP_NG13_GB2;;
        awp252bgrb)  ALERT_TYPE=RAP_NG20_GB2;;
      esac

      $DBNROOT/bin/dbn_alert MODEL ${ALERT_TYPE} $job $COMOUT/$grib2
      $DBNROOT/bin/dbn_alert MODEL ${ALERT_TYPE}_WIDX $job $COMOUT/$grib2_idx
    fi
  done

  
fi

# 242 AK grid
# IF FHR < 4, NO EXTRA FIELDS ARE NEEDED
#  (but some manipulation is required at f00 and f01)
if [ $fhr -gt 3 ]; then
if [ $mod -eq 0 ]; then
 cp rap.AWP242${fhr} RAPAK1
 cp ${COMINPRDG3}/rap.AWP242${fhr3} RAPAK2
 fhrpcp=$fhr3
elif [ $mod -eq 1 ]; then
 cp rap.AWP242${fhr} RAPAK1
 cp ${COMINPRDG1}/rap.AWP242${fhr1} RAPAK2
 fhrpcp=$fhr1
else
 cp rap.AWP242${fhr} RAPAK1
 cp ${COMINPRDG2}/rap.AWP242${fhr2} RAPAK2
 fhrpcp=$fhr2
fi

$GRBINDEX RAPAK1 RAPAK1I
$GRBINDEX RAPAK2 RAPAK2I

    export XLFUNIT_13="RAPAK1"
    export XLFUNIT_14="RAPAK1I"
    export XLFUNIT_15="RAPAK2"
    export XLFUNIT_16="RAPAK2I"
    export XLFUNIT_50="AKextra1.${fhr}"
    ${EXECrap}/rap_subflds_242 <<EOF >> subflds${fhr}.outak
$fhrb $fhrpcp 99
EOF
export err=$?; err_chk

    $WGRIB RAPAK1 | grep -v kpds5=65:kpds6=1:kpds7=0:TR=4 | $WGRIB RAPAK1 -i -grib -o RAPAK1B 
   cat AKextra1.${fhr} >> RAPAK1B
else
   cp rap.AWP242${fhr} RAPAK1B
fi

#  f00 and f01 have two of each precip field since we have
#  the run total and 1-hr bucket.  strip out both fields and
#  use the subflds program to add in single precip fields
if [ $fhr -le 1 ]; then
 cp rap.AWP242${fhr} RAPAK1
 fhrpcp=99
 $GRBINDEX RAPAK1 RAPAK1I

    export XLFUNIT_13="RAPAK1"
    export XLFUNIT_14="RAPAK1I"
    export XLFUNIT_50="AKextra1.${fhr}"
    ${EXECrap}/rap_subflds_242 <<EOF >> subflds${fhr}.outak
$fhrb $fhrpcp 99
EOF
export err=$?; err_chk

 $WGRIB RAPAK1 | grep -v kpds5=62 | $WGRIB RAPAK1 -i -grib -o RAPAK1A
 $WGRIB RAPAK1A | grep -v kpds5=63 | $WGRIB RAPAK1A -i -grib -o RAPAK1B
 cat AKextra1.${fhr} >> RAPAK1B
fi

# 221 grid
# IF FHR < 4, NO EXTRA FIELDS ARE NEEDED
#   (but some manipulation is required at f00 and f01)
if [ $fhr -gt 3 ]; then
if [ $mod -eq 0 ]; then
 cp rap.AWIP32${fhr} RAP321
 cp ${COMINPRDG3}/rap.AWIP32${fhr3} RAP322
 fhrpcp=$fhr3
elif [ $mod -eq 1 ]; then
 cp rap.AWIP32${fhr} RAP321
 cp ${COMINPRDG1}/rap.AWIP32${fhr1} RAP322
 fhrpcp=$fhr1
else
 cp rap.AWIP32${fhr} RAP321
 cp ${COMINPRDG2}/rap.AWIP32${fhr2} RAP322
 fhrpcp=$fhr2
fi

$GRBINDEX RAP321 RAP321I
$GRBINDEX RAP322 RAP322I

    export XLFUNIT_13="RAP321"
    export XLFUNIT_14="RAP321I"
    export XLFUNIT_15="RAP322"
    export XLFUNIT_16="RAP322I"
    export XLFUNIT_50="32extra1.${fhr}"
    ${EXECrap}/rap_subflds_221 <<EOF >> subflds${fhr}.out32
$fhrb $fhrpcp 99
EOF
export err=$?; err_chk

   $WGRIB RAP321 | grep -v kpds5=65:kpds6=1:kpds7=0:TR=4 | $WGRIB RAP321 -i -grib -o RAP321B 
   cat 32extra1.${fhr} >> RAP321B
else
   cp rap.AWIP32${fhr} RAP321B
fi

#  f00 and f01 have two of each precip field since we have
#  the run total and 1-hr bucket.  strip out both fields and
#  use the subflds program to add in single precip fields
if [ $fhr -le 1 ]; then
 cp rap.AWIP32${fhr} RAP321
 fhrpcp=99
 $GRBINDEX RAP321 RAP321I

    export XLFUNIT_13="RAP321"
    export XLFUNIT_14="RAP321I"
    export XLFUNIT_50="32extra1.${fhr}"
    ${EXECrap}/rap_subflds_221 <<EOF >> subflds${fhr}.out32
$fhrb $fhrpcp 99
EOF
export err=$?; err_chk

 $WGRIB RAP321 | grep -v kpds5=62 | $WGRIB RAP321 -i -grib -o RAP321A
 $WGRIB RAP321A | grep -v kpds5=63 | $WGRIB RAP321A -i -grib -o RAP321B
 cat 32extra1.${fhr} >> RAP321B
fi

# 200 grid
# do not need to use subflds at f04,f07,f10....
#  since the 1-hr total is the same as the 3-hr bucket
# also not needed at f02 since the run total is the same
#  as the 3-hr bucket
if [ $fhr -gt 3 -a $mod -ne 1 ]; then
if [ $mod -eq 0 ]; then
 cp rap.AWP200${fhr} RAPPR1
 cp ${COMINPRDG3}/rap.AWP200${fhr3} RAPPR2
 fhrpcp=$fhr3
else
 cp rap.AWP200${fhr} RAPPR1
 cp ${COMINPRDG2}/rap.AWP200${fhr2} RAPPR2
 fhrpcp=$fhr2
fi

$GRBINDEX RAPPR1 RAPPR1I
$GRBINDEX RAPPR2 RAPPR2I

    export XLFUNIT_13="RAPPR1"
    export XLFUNIT_14="RAPPR1I"
    export XLFUNIT_15="RAPPR2"
    export XLFUNIT_16="RAPPR2I"
    export XLFUNIT_50="PRextra1.${fhr}"
    ${EXECrap}/rap_subflds_200 <<EOF >> subflds${fhr}.outpr
$fhr $fhrpcp
EOF
export err=$?; err_chk

   cp RAPPR1 RAPPR1B
   cat PRextra1.${fhr} >> RAPPR1B
elif [ $mod -eq 1 -a $fhr -gt 3 ]; then
   cp rap.AWP200${fhr} RAPPR1B
elif [ $fhr -eq 2 ]; then
   cp rap.AWP200${fhr} RAPPR1B
else
#  f00 and f01 have two of each precip field since we have
#  the run total and 1-hr bucket.  strip out both fields and
#  use the subflds program to add in single precip fields
 cp rap.AWP200${fhr} RAPPR1
 fhrpcp=99
 $GRBINDEX RAPPR1 RAPPR1I

    export XLFUNIT_13="RAPPR1"
    export XLFUNIT_14="RAPPR1I"
    export XLFUNIT_50="PRextra1.${fhr}"
    ${EXECrap}/rap_subflds_200 <<EOF >> subflds${fhr}.outpr
$fhr $fhrpcp
EOF
export err=$?; err_chk

 $WGRIB RAPPR1 | grep -v kpds5=62 | $WGRIB RAPPR1 -i -grib -o RAPPR1A
 $WGRIB RAPPR1A | grep -v kpds5=63 | $WGRIB RAPPR1A -i -grib -o RAPPR1B
 cat PRextra1.${fhr} >> RAPPR1B
fi

if test "$SENDCOM" = 'YES'
then
  cp RAPAK1B ${COMOUT}/rap.t${cyc}z.awp242f${fhr}
  cp RAP321B ${COMOUT}/rap.t${cyc}z.awip32f${fhr}
  cp RAPPR1B ${COMOUT}/rap.t${cyc}z.awp200f${fhr}

# Convert to GRIB2
  for fil in awp242 awip32 awp200
  do
    grib1=rap.t${cyc}z.${fil}f${fhr}
    grib2=rap.t${cyc}z.${fil}f${fhr}.grib2
    grib2_idx=rap.t${cyc}z.${fil}f${fhr}.grib2.idx

    $CNVGRIB -g12 -p40 $COMOUT/$grib1 ${COMOUT}/$grib2
    $WGRIB2 ${COMOUT}/$grib2 -s >${COMOUT}/$grib2_idx

    if [ $SENDDBN = YES ]
    then
      case $fil in
        awip32)      ALERT_TYPE=RAP_FULL32_GB2;;
        awp242)      ALERT_TYPE=RAP_AK11_GB2;;
        awp200)      ALERT_TYPE=RAP_PR16_GB2;;
      esac

      $DBNROOT/bin/dbn_alert MODEL ${ALERT_TYPE} $job $COMOUT/$grib2
      $DBNROOT/bin/dbn_alert MODEL ${ALERT_TYPE}_WIDX $job $COMOUT/$grib2_idx
    fi
  done
fi

# End of the Product generation

# Now do the AWIPS grid conversion
  $USHrap/rap_mkawp.sh $fhr
# End of AWIPS grid generation

# Now do the downscaling process
if [ $fhr -gt 0 -a $fhr -lt 7 ]
then
  $USHrap/rap_smartinit.sh $fhr
fi
# End of downscaling process

echo done > $FCSTDIR/rapprdgen.done${fhr}

exit
