#!/bin/ksh
################################################################################
####  UNIX Script Documentation Block
#                      .                                             .
# Script name:         nam_smartinitak_rtmages_off.sh
# Script description:  runs smartinit code over NDFD Alaskan domain for 06/18z cycles
#
# Author:        Geoff Manikin       Org: NP22         Date: 2011-07-22
#
# Script history log:
# 2011-07-23  Geoff Manikin     
#

set -x

let pcphr=ffhr+3
let pcphrl=ffhr+3
let pcphr12=pcphr-12
let pcphr6=pcphr-6
let pcphr3=pcphr-3

typeset -Z2 srefcyc
typeset -Z2 gefscyc
typeset -Z2 pcphrl

cd $DATA

if [ $ffhr -gt 0 ]; then
# get the sref precip fields that we need
cp $COMIN_SREF/sref.t${srefcyc}z.pgrb216.prob_3hrly SREFPROB

if [ ! -s SREFPROB ]; then
cp $COMIN_GEFS/${gefscyc}/sref.t${gefscyc}z.pgrb216.prob_3hrly SREFPROB
fi

$utilexec/grbindex SREFPROB SREFPROBI

# 3-hr prob of pcp > 0.01
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 64 64 0 0"| grep "0 1 $pcphr3 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp1

# 3-hr prob of pcp > 0.05
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 65 20 81 236"| grep "0 1 $pcphr3 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp2

# 3-hr prob of pcp > 0.10
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 65 40 163 215"| grep "0 1 $pcphr3 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp3

# 3-hr prob of pcp > 0.25
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 65 101 153 154"| grep "0 1 $pcphr3 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp4

# 3-hr prob of pcp > 0.50
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 65 203 51 51"| grep "0 1 $pcphr3 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp5

if [ $ffhr -gt 5 ]; then
# 6-hr prob of pcp > 0.01
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 64 64 0 0"| grep "0 1 $pcphr6 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp6

# 6-hr prob of pcp > 0.05
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 65 20 81 236"| grep "0 1 $pcphr6 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp7

# 6-hr prob of pcp > 0.10
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 65 40 163 215"| grep "0 1 $pcphr6 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp8

# 6-hr prob of pcp > 0.25
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 65 101 153 154"| grep "0 1 $pcphr6 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp9

# 6-hr prob of pcp > 0.50
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 65 203 51 51"| grep "0 1 $pcphr6 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp10
fi

if [ $ffhr -gt 11 ]; then
# 12-hr prob of pcp > 0.01
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 64 64 0 0"| grep "0 1 $pcphr12 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp11

# 12-hr prob of pcp > 0.05
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 65 20 81 236"| grep "0 1 $pcphr12 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp12

# 12-hr prob of pcp > 0.10
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 65 40 163 215"| grep "0 1 $pcphr12 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp13

# 12-hr prob of pcp > 0.25
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 65 101 153 154"| grep "0 1 $pcphr12 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp14

# 12-hr prob of pcp > 0.50
$utilexec/wgrib -PDS10 SREFPROB |grep "2 0 0 0 0 65 203 51 51"| grep "0 1 $pcphr12 $pcphr 4"|$utilexec/wgrib -i -grib -o dump SREFPROB
mv dump srefpcp15
fi

if [ $ffhr -gt 11 ]; then
cat srefpcp1 srefpcp2 srefpcp3 srefpcp4 srefpcp5 srefpcp6 srefpcp7 srefpcp8 srefpcp9 srefpcp10 srefpcp11 srefpcp12 srefpcp13 srefpcp14 srefpcp15  > srefallpcp
elif [ $ffhr -gt 5 ]; then
cat srefpcp1 srefpcp2 srefpcp3 srefpcp4 srefpcp5 srefpcp6 srefpcp7 srefpcp8 srefpcp9 srefpcp10 > srefallpcp
else
cat srefpcp1 srefpcp2 srefpcp3 srefpcp4 srefpcp5 > srefallpcp
fi

grid="255 5 825 553 40530 181429 8 210000 5953 5953 0 64 0 25000 25000"
$utilexec/copygb -g "$grid" -x srefallpcp srefpcpak_${SREF_PDY}${srefcyc}f0${pcphrl}
$utilexec/grbindex srefpcpak_${SREF_PDY}${srefcyc}f0${pcphrl} srefpcpaki_${SREF_PDY}${srefcyc}f0${pcphrl}
fi

let ffhr1=ffhr-1
let ffhr2=ffhr-2

hours="${ffhr2} ${ffhr1} ${ffhr}"
for fhr in $hours; do

  let check3=fhr%3
  let fhr1=fhr-1
  let fhr2=fhr-2
  let fhr3=fhr-3
  let fhr6=fhr-6
  let fhr9=fhr-9 

  typeset -Z2 fhr3
  typeset -Z2 fhr1
  typeset -Z2 fhr2
  typeset -Z2 fhr6
  typeset -Z2 fhr9 
  typeset -Z2 fhr

  cp $COMIN/nam.t${cyc}z.bgrd3d${fhr}.tm00 WRFPRS${fhr}.tm00
  $utilexec/grbindex WRFPRS${fhr}.tm00 WRFPRS${fhr}i.tm00
  cp $PARMnam/nam_masterak.ctl master${fhr}.ctl

  #   need to make 6-hr buckets at f06 
  if [ $fhr -eq 06 ] ; then 
     cp $COMIN/nam.t${cyc}z.bgrd3d${fhr3}.tm00 WRFPRS${fhr3}.tm00
     $utilexec/grbindex WRFPRS${fhr3}.tm00 WRFPRS${fhr3}i.tm00

     export pgm=nam_smartaddprecip6;. prep_step
     export XLFUNIT_13="WRFPRS${fhr3}.tm00"
     export XLFUNIT_14="WRFPRS${fhr3}i.tm00"
     export XLFUNIT_15="WRFPRS${fhr}.tm00"
     export XLFUNIT_16="WRFPRS${fhr}i.tm00"
     export XLFUNIT_50="6precip.${fhr}"
     export XLFUNIT_51="6cprecip.${fhr}"
     export XLFUNIT_52="6snow.${fhr}"
$EXECnam/nam_smartaddprecip6 <<EOF > makeprecip6.out
$fhr3 $fhr
EOF
export err=$?;err_chk

     grid="255 5 825 553 40530 181429 8 210000 5953 5953 0 64 0 25000 25000"
     $utilexec/copygb -g "$grid" -i3 -x 6precip.${fhr} 6precip
     $utilexec/grbindex 6precip 6precipi
     $utilexec/copygb -g "$grid" -i3 -x 6snow.${fhr} 6snow
     $utilexec/grbindex 6snow 6snowi
  fi

cat >input${fhr}.prd <<EOF5
WRFPRS${fhr}.tm00
EOF5

  export pgm=nam_prdgen;. prep_step 
  ln -sf master${fhr}.ctl                 fort.10
  ln -sf $FIXnam/nam_wgt_198         fort.21
  ln -sf $PARMnam/nam_kwbx.tbl       fort.41
  ln -sf $PARMnam/nam_time.tbl       fort.42
  ln -sf $PARMnam/nam_parm.tbl       fort.43
  ln -sf $PARMnam/nam_grid.tbl       fort.44
  ln -sf $PARMnam/nam_levl.tbl       fort.45
  $EXECnam/nam_prdgen < input${fhr}.prd > prdgen.out${fhr}
   export err=$?;err_chk

  cp /com/date/t${cyc}z DATE

    mv mesoak.NDFD mesoak.NDFDf${fhr}
    $utilexec/grbindex mesoak.NDFDf${fhr} mesoak.NDFDif${fhr}

  # at F06, we need to pass in the 6-hr buckets
  if [ $fhr -eq 06 ] ; then 
    cp srefpcpak_${SREF_PDY}${srefcyc}f0${pcphrl} SREFPCP
    cp srefpcpaki_${SREF_PDY}${srefcyc}f0${pcphrl} SREFPCPi
    cp MAXMIN${fhr2}.tm00 MAXMIN2
    cp MAXMIN${fhr1}.tm00 MAXMIN1

    $utilexec/grbindex MAXMIN2 MAXMIN2i
    $utilexec/grbindex MAXMIN1 MAXMIN1i

    export pgm=nam_smartinitak;. prep_step
    export XLFUNIT_11="mesoak.NDFDf${fhr}"
    export XLFUNIT_12="mesoak.NDFDif${fhr}"
    export XLFUNIT_13="SREFPCP"
    export XLFUNIT_14="SREFPCPi"
    export XLFUNIT_15="6precip"
    export XLFUNIT_16="6precipi"
    export XLFUNIT_17="6snow"
    export XLFUNIT_18="6snowi"
    export XLFUNIT_19="MAXMIN2"
    export XLFUNIT_20="MAXMIN1"
    export XLFUNIT_21="MAXMIN2i"
    export XLFUNIT_22="MAXMIN1i"
    export XLFUNIT_46="$FIXnam/nam_smartmaskak.grb"
    export XLFUNIT_47="$FIXnam/nam_smartmaskak.grbi"
    export XLFUNIT_48="$FIXnam/nam_smarttopoak.grb"
    export XLFUNIT_49="$FIXnam/nam_smarttopoak.grbi"
$EXECnam/nam_smartinitak <<EOF >> smartinit.out${fhr}
$fhr
$cyc
EOF
export err=$?;err_chk
mv MESOAK${fhr}.tm00 $COMOUT/nam.t${cyc}z.smartak_rtmages${fhr}.tm00

  #  for forecast hour 3.... the file already has 3-hr buckets,
  #   but we need max/min temp data for the previous 2 hours

  elif [ $fhr -eq 3 -o $fhr -eq 9 ]; then
    cp srefpcpak_${SREF_PDY}${srefcyc}f0${pcphrl} SREFPCP
    cp srefpcpaki_${SREF_PDY}${srefcyc}f0${pcphrl} SREFPCPi
    cp MAXMIN${fhr2}.tm00 MAXMIN2
    cp MAXMIN${fhr1}.tm00 MAXMIN1

    $utilexec/grbindex MAXMIN2 MAXMIN2i
    $utilexec/grbindex MAXMIN1 MAXMIN1i

    export pgm=nam_smartinitak;. prep_step 
    export XLFUNIT_11="mesoak.NDFDf${fhr}"
    export XLFUNIT_12="mesoak.NDFDif${fhr}"
    export XLFUNIT_13="SREFPCP"
    export XLFUNIT_14="SREFPCPi"
    export XLFUNIT_15="MAXMIN2"
    export XLFUNIT_16="MAXMIN1"
    export XLFUNIT_17="MAXMIN2i"
    export XLFUNIT_18="MAXMIN1i"
    export XLFUNIT_46="$FIXnam/nam_smartmaskak.grb"
    export XLFUNIT_47="$FIXnam/nam_smartmaskak.grbi"
    export XLFUNIT_48="$FIXnam/nam_smarttopoak.grb"
    export XLFUNIT_49="$FIXnam/nam_smarttopoak.grbi"
$EXECnam/nam_smartinitak <<EOF >> smartinit.out${fhr}
$fhr
$cyc
EOF
  export err=$?;err_chk
  mv MESOAK${fhr}.tm00 $COMOUT/nam.t${cyc}z.smartak_rtmages${fhr}.tm00

  #  for all "in-between" forecast hours (1,2,4....), we don't need
  #    any special data
  else 
    export pgm=nam_smartinitak;. prep_step
    export XLFUNIT_11="mesoak.NDFDf${fhr}"
    export XLFUNIT_12="mesoak.NDFDif${fhr}"
    export XLFUNIT_46="$FIXnam/nam_smartmaskak.grb"
    export XLFUNIT_47="$FIXnam/nam_smartmaskak.grbi"
    export XLFUNIT_48="$FIXnam/nam_smarttopoak.grb"
    export XLFUNIT_49="$FIXnam/nam_smarttopoak.grbi"
$EXECnam/nam_smartinitak <<EOF >> smartinit.out${fhr}
$fhr
$cyc
EOF
export err=$?;err_chk
if [ $fhr -lt 9 ] ; then
 mv MESOAK${fhr}.tm00 $COMOUT/nam.t${cyc}z.smartak_rtmages${fhr}.tm00
fi
  fi
done
exit
