
########################### NAEFS PRODUCTS ####################################
echo "------------------------------------------------"
echo "NAEFS products generation from combined NCEP/GEFS and CMC/EPS ensembles"
echo "------------------------------------------------"
echo "History: Agust 2007 - First implementation of this new script."
echo "         Oct.  2010 - Add FNMOC ensemble."
echo "AUTHOR: Bo Cui  (wx20cb)"

###############################################################################
set -x
### To submit this job for T00Z, T06Z T12Z and T18Z, four cycles per day

### need pass the values of PDY, CYC, DATA, COMIN, COMOUT

export hourlist=$1
export workdir=$2

if [ ! -d $workdir ]; then
 mkdir -p $workdir
fi

cd $workdir
/nwprod/util/ush/setup.sh

##############################################
# define exec variable, and entry grib utility
##############################################

export NDATE=$EXECUTIL/ndate

export ENSPROB=$USHNAEFS/naefs_bc_probability.sh
export ENSMDF=$USHNAEFS/naefs_climate_anv.sh    

########################################
#  define ensemble members and lead time
########################################

#export hourlist="     06  12  18  24  30  36  42  48  54  60  66  72  78  84  90  96 \
#                 102 108 114 120 126 132 138 144 150 156 162 168 174 180 186 192 198 \
#                 204 210 216 222 228 234 240 246 252 258 264 270 276 282 288 294 300 \
#                 306 312 318 324 330 336 342 348 354 360 366 372 378 384"

export memberlist_ncep="c00 p01 p02 p03 p04 p05 p06 p07 p08 p09 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20"
export memberlist_cmc=" c00 p01 p02 p03 p04 p05 p06 p07 p08 p09 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20"
export memberlist_fnmoc="   p01 p02 p03 p04 p05 p06 p07 p08 p09 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20"

#################################################################################
### generate NAEFS joint ensemble probability forecast, ensemble average & spread
#################################################################################

if [ "$IFNAEFS" = "YES" ]; then

  for nfhrs in $hourlist; do

    export FHRLIST=$nfhrs

    o10pt_naefs=naefs_ge10pt.t${cyc}z.pgrba_bcf$nfhrs
    o10pt_naefs_gb2=naefs_ge10pt.t${cyc}z.pgrb2a_bcf$nfhrs
    o90pt_naefs=naefs_ge90pt.t${cyc}z.pgrba_bcf$nfhrs
    o90pt_naefs_gb2=naefs_ge90pt.t${cyc}z.pgrb2a_bcf$nfhrs
    o50pt_naefs=naefs_ge50pt.t${cyc}z.pgrba_bcf$nfhrs
    o50pt_naefs_gb2=naefs_ge50pt.t${cyc}z.pgrb2a_bcf$nfhrs
    omode_naefs=naefs_gemode.t${cyc}z.pgrba_bcf$nfhrs
    omode_naefs_gb2=naefs_gemode.t${cyc}z.pgrb2a_bcf$nfhrs
    oavg_naefs=naefs_geavg.t${cyc}z.pgrba_bcf$nfhrs
    oavg_naefs_gb2=naefs_geavg.t${cyc}z.pgrb2a_bcf$nfhrs
    ospr_naefs=naefs_gespr.t${cyc}z.pgrba_bcf$nfhrs
    ospr_naefs_gb2=naefs_gespr.t${cyc}z.pgrb2a_bcf$nfhrs
    omdf_naefs=naefs_geavg.t${cyc}z.pgrba_anvf$nfhrs
    omdf_naefs_gb2=naefs_geavg.t${cyc}z.pgrb2a_anvf$nfhrs

    echo  " Start NAEFS Probability Forecast Calculation  "
    $ENSPROB     
    export MEMLIST=" avg "
    $ENSMDF $PDY$cyc $nfhrs
    if [ "$SENDCOM" = "YES" ]; then
      ofile=ge10pt.t${cyc}z.pgrba_bcf$nfhrs      
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTNAEFS/$o10pt_naefs
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTNAEFS/$o10pt_naefs $COMOUTNAEFS_GB2/$o10pt_naefs_gb2 
      fi
      ofile=ge90pt.t${cyc}z.pgrba_bcf$nfhrs      
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTNAEFS/$o90pt_naefs
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTNAEFS/$o90pt_naefs $COMOUTNAEFS_GB2/$o90pt_naefs_gb2
      fi
      ofile=ge50pt.t${cyc}z.pgrba_bcf$nfhrs      
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTNAEFS/$o50pt_naefs
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTNAEFS/$o50pt_naefs $COMOUTNAEFS_GB2/$o50pt_naefs_gb2
      fi
      ofile=geavg.t${cyc}z.pgrba_bcf$nfhrs
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTNAEFS/$oavg_naefs
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTNAEFS/$oavg_naefs $COMOUTNAEFS_GB2/$oavg_naefs_gb2
      fi
      ofile=gespr.t${cyc}z.pgrba_bcf$nfhrs
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTNAEFS/$ospr_naefs
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTNAEFS/$ospr_naefs $COMOUTNAEFS_GB2/$ospr_naefs_gb2
      fi
      ofile=gemode.t${cyc}z.pgrba_bcf$nfhrs
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTNAEFS/$omode_naefs
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTNAEFS/$omode_naefs $COMOUTNAEFS_GB2/$omode_naefs_gb2
      fi
      ofile=geavg.t${cyc}z.pgrba_anvf$nfhrs
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTNAEFSAN/$omdf_naefs
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTNAEFSAN/$omdf_naefs $COMOUTNAEFSAN_GB2/$omdf_naefs_gb2
      fi

# Alert only the late files at 00z and 12z, since they include CMC data 

      if test "${cyc}" = "00" -o "${cyc}" = "12"; then
         if test "$SENDDBN" = 'YES'
            then
            $DBNROOT/bin/dbn_alert MODEL NAEFS_10BC_GB2 $job $COMOUTNAEFS_GB2/$o10pt_naefs_gb2
            $DBNROOT/bin/dbn_alert MODEL NAEFS_50BC_GB2 $job $COMOUTNAEFS_GB2/$o50pt_naefs_gb2
            $DBNROOT/bin/dbn_alert MODEL NAEFS_90BC_GB2 $job $COMOUTNAEFS_GB2/$o90pt_naefs_gb2
            $DBNROOT/bin/dbn_alert MODEL NAEFS_AVGBC_GB2 $job $COMOUTNAEFS_GB2/$oavg_naefs_gb2
            $DBNROOT/bin/dbn_alert MODEL NAEFS_MODEBC_GB2 $job $COMOUTNAEFS_GB2/$omode_naefs_gb2
            $DBNROOT/bin/dbn_alert MODEL NAEFS_SPRBC_GB2 $job $COMOUTNAEFS_GB2/$ospr_naefs_gb2
            $DBNROOT/bin/dbn_alert MODEL NAEFS_AVGAN_GB2 $job $COMOUTNAEFSAN_GB2/$omdf_naefs_gb2
         fi
      fi

#  

    fi

  done
fi

##########################################################################
### calculate GEFS ensemble probability forecast, ensemble average & spread
##########################################################################

if [ "$IFGEFS" = "YES" ]; then

  for nfhrs in $hourlist; do

    export FHRLIST=$nfhrs

    o10pt_gefs=ge10pt.t${cyc}z.pgrba_bcf$nfhrs
    o10pt_gefs_gb2=ge10pt.t${cyc}z.pgrb2a_bcf$nfhrs 
    o90pt_gefs=ge90pt.t${cyc}z.pgrba_bcf$nfhrs
    o90pt_gefs_gb2=ge90pt.t${cyc}z.pgrb2a_bcf$nfhrs
    o50pt_gefs=ge50pt.t${cyc}z.pgrba_bcf$nfhrs
    o50pt_gefs_gb2=ge50pt.t${cyc}z.pgrb2a_bcf$nfhrs
    oavg_gefs=geavg.t${cyc}z.pgrba_bcf$nfhrs
    oavg_gefs_gb2=geavg.t${cyc}z.pgrb2a_bcf$nfhrs
    ospr_gefs=gespr.t${cyc}z.pgrba_bcf$nfhrs
    ospr_gefs_gb2=gespr.t${cyc}z.pgrb2a_bcf$nfhrs
    omode_gefs=gemode.t${cyc}z.pgrba_bcf$nfhrs
    omode_gefs_gb2=gemode.t${cyc}z.pgrb2a_bcf$nfhrs
    omdf_gefs=geavg.t${cyc}z.pgrba_anvf$nfhrs
    omdf_gefs_gb2=geavg.t${cyc}z.pgrb2a_anvf$nfhrs

    echo  " Start GEFS Probability Forecast Calculation  "
    $ENSPROB     
    export MEMLIST=" avg "
    $ENSMDF $PDY$cyc $nfhrs
    if [ "$SENDCOM" = "YES" ]; then
      ofile=ge10pt.t${cyc}z.pgrba_bcf$nfhrs      
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTGEFS/$o10pt_gefs
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTGEFS/$o10pt_gefs $COMOUTGEFS_GB2/$o10pt_gefs_gb2
        $EXECUTIL/wgrib2 -s $COMOUTGEFS_GB2/$o10pt_gefs_gb2 > $COMOUTGEFS_GB2/$o10pt_gefs_gb2.idx
      fi
      ofile=ge90pt.t${cyc}z.pgrba_bcf$nfhrs      
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTGEFS/$o90pt_gefs
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTGEFS/$o90pt_gefs $COMOUTGEFS_GB2/$o90pt_gefs_gb2
        $EXECUTIL/wgrib2 -s $COMOUTGEFS_GB2/$o90pt_gefs_gb2 > $COMOUTGEFS_GB2/$o90pt_gefs_gb2.idx
      fi
      ofile=ge50pt.t${cyc}z.pgrba_bcf$nfhrs      
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTGEFS/$o50pt_gefs
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTGEFS/$o50pt_gefs $COMOUTGEFS_GB2/$o50pt_gefs_gb2
        $EXECUTIL/wgrib2 -s $COMOUTGEFS_GB2/$o50pt_gefs_gb2 > $COMOUTGEFS_GB2/$o50pt_gefs_gb2.idx
      fi
      ofile=geavg.t${cyc}z.pgrba_bcf$nfhrs
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTGEFS/$oavg_gefs
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTGEFS/$oavg_gefs $COMOUTGEFS_GB2/$oavg_gefs_gb2
        $EXECUTIL/wgrib2 -s $COMOUTGEFS_GB2/$oavg_gefs_gb2 > $COMOUTGEFS_GB2/$oavg_gefs_gb2.idx
      fi
      ofile=gespr.t${cyc}z.pgrba_bcf$nfhrs
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTGEFS/$ospr_gefs
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTGEFS/$ospr_gefs $COMOUTGEFS_GB2/$ospr_gefs_gb2
        $EXECUTIL/wgrib2 -s $COMOUTGEFS_GB2/$ospr_gefs_gb2 > $COMOUTGEFS_GB2/$ospr_gefs_gb2.idx
      fi
      ofile=gemode.t${cyc}z.pgrba_bcf$nfhrs      
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTGEFS/$omode_gefs
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTGEFS/$omode_gefs $COMOUTGEFS_GB2/$omode_gefs_gb2
        $EXECUTIL/wgrib2 -s $COMOUTGEFS_GB2/$omode_gefs_gb2 > $COMOUTGEFS_GB2/$omode_gefs_gb2.idx
      fi
      ofile=geavg.t${cyc}z.pgrba_anvf$nfhrs
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTGEFSAN/$omdf_gefs 
        $EXECUTIL/cnvgrib -g12 -p40 $COMOUTGEFSAN/$omdf_gefs $COMOUTGEFSAN_GB2/$omdf_gefs_gb2
      fi
    fi
    if [ "$SENDDBN" = "YES" ]; then
              $DBNROOT/bin/dbn_alert MODEL GEFS_10BC_GB2 $job $COMOUTGEFS_GB2/$o10pt_gefs_gb2
              $DBNROOT/bin/dbn_alert MODEL GEFS_50BC_GB2 $job $COMOUTGEFS_GB2/$o50pt_gefs_gb2
              $DBNROOT/bin/dbn_alert MODEL GEFS_90BC_GB2 $job $COMOUTGEFS_GB2/$o90pt_gefs_gb2
              $DBNROOT/bin/dbn_alert MODEL GEFS_AVGBC_GB2 $job $COMOUTGEFS_GB2/$oavg_gefs_gb2
              $DBNROOT/bin/dbn_alert MODEL GEFS_MODEBC_GB2 $job $COMOUTGEFS_GB2/$omode_gefs_gb2
              $DBNROOT/bin/dbn_alert MODEL GEFS_SPRBC_GB2 $job $COMOUTGEFS_GB2/$ospr_gefs_gb2
              $DBNROOT/bin/dbn_alert MODEL GEFS_10BC_GB2_WIDX $job $COMOUTGEFS_GB2/$o10pt_gefs_gb2.idx
              $DBNROOT/bin/dbn_alert MODEL GEFS_50BC_GB2_WIDX $job $COMOUTGEFS_GB2/$o50pt_gefs_gb2.idx
              $DBNROOT/bin/dbn_alert MODEL GEFS_90BC_GB2_WIDX $job $COMOUTGEFS_GB2/$o90pt_gefs_gb2.idx
              $DBNROOT/bin/dbn_alert MODEL GEFS_AVGBC_GB2_WIDX $job $COMOUTGEFS_GB2/$oavg_gefs_gb2.idx
              $DBNROOT/bin/dbn_alert MODEL GEFS_MODEBC_GB2_WIDX $job $COMOUTGEFS_GB2/$omode_gefs_gb2.idx
              $DBNROOT/bin/dbn_alert MODEL GEFS_SPRBC_GB2_WIDX $job $COMOUTGEFS_GB2/$ospr_gefs_gb2.idx
    fi

  done
fi

##########################################################################
### calculate CMCE ensemble probability forecast, ensemble average & spread
##########################################################################

if [ "$IFCMCE" = "YES" ]; then

  for nfhrs in $hourlist; do

    export FHRLIST=$nfhrs

    o10pt_cmce=cmc_ge10pt.t${cyc}z.pgrba_bcf$nfhrs
    o90pt_cmce=cmc_ge90pt.t${cyc}z.pgrba_bcf$nfhrs
    o50pt_cmce=cmc_ge50pt.t${cyc}z.pgrba_bcf$nfhrs
    omode_cmce=cmc_gemode.t${cyc}z.pgrba_bcf$nfhrs
    oavg_cmce=cmc_geavg.t${cyc}z.pgrba_bcf$nfhrs
    ospr_cmce=cmc_gespr.t${cyc}z.pgrba_bcf$nfhrs

    echo  " Start CMCE Probability Forecast Calculation  "
    $ENSPROB     
    if [ "$SENDCOM" = "YES" ]; then
      ofile=ge10pt.t${cyc}z.pgrba_bcf$nfhrs      
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTCMCE/$o10pt_cmce
      fi
      ofile=ge90pt.t${cyc}z.pgrba_bcf$nfhrs      
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTCMCE/$o90pt_cmce
      fi
      ofile=ge50pt.t${cyc}z.pgrba_bcf$nfhrs      
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTCMCE/$o50pt_cmce
      fi
      ofile=geavg.t${cyc}z.pgrba_bcf$nfhrs
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTCMCE/$oavg_cmce
      fi
      ofile=gespr.t${cyc}z.pgrba_bcf$nfhrs
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTCMCE/$ospr_cmce
      fi
      ofile=gemode.t${cyc}z.pgrba_bcf$nfhrs
      if [ -s $ofile ]; then
        mv $ofile  $COMOUTCMCE/$omode_cmce
      fi
    fi

  done
fi

msg="NAEFS PRODUCTS PRODUCTION HAS COMPLETED NORMALLY!"
postmsg "$jlogfile" "$msg"
