###########################################################################################
# Script: naefs_bc_probability.sh
# Abstract: produces ensemble 10%, 50% and 90% probability forecast
# Author: Bo CUI ---- July 2007
#                     Jan. 2008  use accumulated analysis difference to adjust CMC ensemble 
#                     Apr. 2009 add the option to set NAEFS product ID as 114
#                     July.2010 add FNMOC ensemble 20 members
###########################################################################################

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

#hourlist=" 00  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"

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

##################################################
# start probability calculation for each lead time
##################################################

hourlist=$FHRLIST

####################################################################
# define if removing initial analyis difference between CMC and NCEP
# 0 = don't remove difference from CMC/FNMOC ensemble forecast
# 1 = remove difference from CMC ensemble forecast
####################################################################

ifdebias=0

####################################
# judeg if generating NAEFS products
# 0 = use the original product ID
# 1 = set NAEFS product ID as 114
####################################

pidswitch=0

###############################################
# create variable list for ensmeble conbination
###############################################

fieldlist=" 1000HGT 925HGT 850HGT 700HGT 500HGT 250HGT 200HGT 100HGT 50HGT 10HGT \
            1000TMP 925TMP 850TMP 700TMP 500TMP 250TMP 200TMP 100TMP 50TMP 10TMP \
            1000UGRD 925UGRD 850UGRD 700UGRD 500UGRD 250UGRD 200UGRD 100UGRD 50UGRD 10UGRD \
            1000VGRD 925VGRD 850VGRD 700VGRD 500VGRD 250VGRD 200VGRD 100VGRD 50VGRD 10VGRD \
            PRES PRMSL 2MTMP 10MUGRD 10MVGRD TMAX TMIN 850VVEL "

nvar=0

rm namin.varlist

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

  echo " &varlist" >>namin.varlist

  for cfield in $fieldlist; do
   
    ffd=dummy

    case $cfield in

    1000HGT) ffd=z1000;ifd=7;isp=100;ilv=1000;icnt=2;;
     925HGT) ffd=z925;ifd=7;isp=100;ilv=925;icnt=2;;
     850HGT) ffd=z850;ifd=7;isp=100;ilv=850;icnt=2;;
     700HGT) ffd=z700;ifd=7;isp=100;ilv=700;icnt=2;;
     500HGT) ffd=z500;ifd=7;isp=100;ilv=500;icnt=2;;
     250HGT) ffd=z250;ifd=7;isp=100;ilv=250;icnt=2;;
     200HGT) ffd=z200;ifd=7;isp=100;ilv=200;icnt=2;;
     100HGT) ffd=z100;ifd=7;isp=100;ilv=100;icnt=2;;
      50HGT) ffd=z50; ifd=7;isp=100;ilv=50; icnt=2;;
      10HGT) ffd=z10; ifd=7;isp=100;ilv=10; icnt=2;;

    1000TMP) ffd=t1000;ifd=11;isp=100;ilv=1000;icnt=2;;
     925TMP) ffd=t925;ifd=11;isp=100;ilv=925;icnt=2;;
     850TMP) ffd=t850;ifd=11;isp=100;ilv=850;icnt=2;;
     700TMP) ffd=t700;ifd=11;isp=100;ilv=700;icnt=2;;
     500TMP) ffd=t500;ifd=11;isp=100;ilv=500;icnt=2;;
     250TMP) ffd=t250;ifd=11;isp=100;ilv=250;icnt=2;;
     200TMP) ffd=t200;ifd=11;isp=100;ilv=200;icnt=2;;
     100TMP) ffd=t100;ifd=11;isp=100;ilv=100;icnt=2;;
      50TMP) ffd=t50; ifd=11;isp=100;ilv=50; icnt=2;;
      10TMP) ffd=t10; ifd=11;isp=100;ilv=10; icnt=2;;

    1000UGRD) ffd=u1000;ifd=33;isp=100;ilv=1000;icnt=2;;
     925UGRD) ffd=u925;ifd=33;isp=100;ilv=925;icnt=2;;
     850UGRD) ffd=u850;ifd=33;isp=100;ilv=850;icnt=2;;
     700UGRD) ffd=u700;ifd=33;isp=100;ilv=700;icnt=2;;
     500UGRD) ffd=u500;ifd=33;isp=100;ilv=500;icnt=2;;
     250UGRD) ffd=u250;ifd=33;isp=100;ilv=250;icnt=2;;
     200UGRD) ffd=u200;ifd=33;isp=100;ilv=200;icnt=2;;
     100UGRD) ffd=u100;ifd=33;isp=100;ilv=100;icnt=2;;
      50UGRD) ffd=u50; ifd=33;isp=100;ilv=50; icnt=2;;
      10UGRD) ffd=u10; ifd=33;isp=100;ilv=10; icnt=2;;

    1000VGRD) ffd=v1000;ifd=34;isp=100;ilv=1000;icnt=2;;
     925VGRD) ffd=v925;ifd=34;isp=100;ilv=925;icnt=2;;
     850VGRD) ffd=v850;ifd=34;isp=100;ilv=850;icnt=2;;
     700VGRD) ffd=v700;ifd=34;isp=100;ilv=700;icnt=2;;
     500VGRD) ffd=v500;ifd=34;isp=100;ilv=500;icnt=2;;
     250VGRD) ffd=v250;ifd=34;isp=100;ilv=250;icnt=2;;
     200VGRD) ffd=v200;ifd=34;isp=100;ilv=200;icnt=2;;
     100VGRD) ffd=v100;ifd=34;isp=100;ilv=100;icnt=2;;
      50VGRD) ffd=v50; ifd=34;isp=100;ilv=50; icnt=2;;
      10VGRD) ffd=v10; ifd=34;isp=100;ilv=10; icnt=2;;

      PRMSL) ffd=prmsl;ifd=2;isp=102;ilv=0;icnt=2;;
       PRES) ffd=pres;ifd=1;isp=1;  ilv=0;icnt=2;;
      2MTMP) ffd=t2m;ifd=11;isp=105;ilv=2;icnt=2;;
       TMAX) ffd=t2max;ifd=15;isp=105;ilv=2;icnt=2;;
       TMIN) ffd=t2min;ifd=16;isp=105;ilv=2;icnt=2;;
    10MUGRD) ffd=u10m;ifd=33;isp=105;ilv=10;icnt=2;;
    10MVGRD) ffd=v10m;ifd=34;isp=105;ilv=10;icnt=2;;
    850VVEL) ffd=vvel;ifd=39;isp=100;ilv=850;icnt=2;;
    ULWRFtop) ffd=ulwrftop;ifd=212;isp=8;ilv=0;icnt=2;;
    ULWRFsfc) ffd=ulwrfsfc;ifd=212;isp=1;ilv=0;icnt=2;;

    esac

    if [ "$ffd" == "dummy" ]; then
      echo " #### attention: variable $cfield is not in the list"
    else
      (( nvar = nvar + 1 ))
      echo "ffd($nvar)='$ffd',pds5($nvar)=$ifd,pds6($nvar)=$isp,pds7($nvar)=$ilv,mmod($nvar)=$icnt," >>namin.varlist
    fi

  done

  echo "nvar=$nvar," >>namin.varlist
  echo " /" >>namin.varlist

fi

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

  echo " &varlist" >>namin.varlist

  for cfield in $fieldlist; do

    ffd=dummy

    case $cfield in

    1000HGT) ffd=z1000;ifd=7;isp=100;ilv=1000;icnt=1;;
     925HGT) ffd=z925;ifd=7;isp=100;ilv=925;icnt=1;;
     850HGT) ffd=z850;ifd=7;isp=100;ilv=850;icnt=1;;
     700HGT) ffd=z700;ifd=7;isp=100;ilv=700;icnt=1;;
     500HGT) ffd=z500;ifd=7;isp=100;ilv=500;icnt=1;;
     250HGT) ffd=z250;ifd=7;isp=100;ilv=250;icnt=1;;
     200HGT) ffd=z200;ifd=7;isp=100;ilv=200;icnt=1;;
     100HGT) ffd=z100;ifd=7;isp=100;ilv=100;icnt=1;;
      50HGT) ffd=z50; ifd=7;isp=100;ilv=50; icnt=1;;
      10HGT) ffd=z10; ifd=7;isp=100;ilv=10; icnt=1;;

    1000TMP) ffd=t1000;ifd=11;isp=100;ilv=1000;icnt=1;;
     925TMP) ffd=t925;ifd=11;isp=100;ilv=925;icnt=1;;
     850TMP) ffd=t850;ifd=11;isp=100;ilv=850;icnt=1;;
     700TMP) ffd=t700;ifd=11;isp=100;ilv=700;icnt=1;;
     500TMP) ffd=t500;ifd=11;isp=100;ilv=500;icnt=1;;
     250TMP) ffd=t250;ifd=11;isp=100;ilv=250;icnt=1;;
     200TMP) ffd=t200;ifd=11;isp=100;ilv=200;icnt=1;;
     100TMP) ffd=t100;ifd=11;isp=100;ilv=100;icnt=1;;
      50TMP) ffd=t50; ifd=11;isp=100;ilv=50; icnt=1;;
      10TMP) ffd=t10; ifd=11;isp=100;ilv=10; icnt=1;;

    1000UGRD) ffd=u1000;ifd=33;isp=100;ilv=1000;icnt=1;;
     925UGRD) ffd=u925;ifd=33;isp=100;ilv=925;icnt=1;;
     850UGRD) ffd=u850;ifd=33;isp=100;ilv=850;icnt=1;;
     700UGRD) ffd=u700;ifd=33;isp=100;ilv=700;icnt=1;;
     500UGRD) ffd=u500;ifd=33;isp=100;ilv=500;icnt=1;;
     250UGRD) ffd=u250;ifd=33;isp=100;ilv=250;icnt=1;;
     200UGRD) ffd=u200;ifd=33;isp=100;ilv=200;icnt=1;;
     100UGRD) ffd=u100;ifd=33;isp=100;ilv=100;icnt=1;;
      50UGRD) ffd=u50; ifd=33;isp=100;ilv=50; icnt=1;;
      10UGRD) ffd=u10; ifd=33;isp=100;ilv=10; icnt=1;;

    1000VGRD) ffd=v1000;ifd=34;isp=100;ilv=1000;icnt=1;;
     925VGRD) ffd=v925;ifd=34;isp=100;ilv=925;icnt=1;;
     850VGRD) ffd=v850;ifd=34;isp=100;ilv=850;icnt=1;;
     700VGRD) ffd=v700;ifd=34;isp=100;ilv=700;icnt=1;;
     500VGRD) ffd=v500;ifd=34;isp=100;ilv=500;icnt=1;;
     250VGRD) ffd=v250;ifd=34;isp=100;ilv=250;icnt=1;;
     200VGRD) ffd=v200;ifd=34;isp=100;ilv=200;icnt=1;;
     100VGRD) ffd=v100;ifd=34;isp=100;ilv=100;icnt=1;;
      50VGRD) ffd=v50; ifd=34;isp=100;ilv=50; icnt=1;;
      10VGRD) ffd=v10; ifd=34;isp=100;ilv=10; icnt=1;;

      PRMSL) ffd=prmsl;ifd=2;isp=102;ilv=0;icnt=1;;
       PRES) ffd=pres;ifd=1;isp=1;  ilv=0;icnt=1;;
      2MTMP) ffd=t2m;ifd=11;isp=105;ilv=2;icnt=1;;
       TMAX) ffd=t2max;ifd=15;isp=105;ilv=2;icnt=1;;
       TMIN) ffd=t2min;ifd=16;isp=105;ilv=2;icnt=1;;
    10MUGRD) ffd=u10m;ifd=33;isp=105;ilv=10;icnt=1;;
    10MVGRD) ffd=v10m;ifd=34;isp=105;ilv=10;icnt=1;;
    850VVEL) ffd=vvel;ifd=39;isp=100;ilv=850;icnt=1;;
    ULWRFtop) ffd=ulwrftop;ifd=212;isp=8;ilv=0;icnt=1;;
    ULWRFsfc) ffd=ulwrfsfc;ifd=212;isp=1;ilv=0;icnt=1;;

    esac

    if [ "$ffd" == "dummy" ]; then
      echo " #### attention: variable $cfield is not in the list"
    else
      (( nvar = nvar + 1 ))
      echo "ffd($nvar)='$ffd',pds5($nvar)=$ifd,pds6($nvar)=$isp,pds7($nvar)=$ilv,mmod($nvar)=$icnt," >>namin.varlist
    fi

  done

  echo "nvar=$nvar," >>namin.varlist
  echo " /" >>namin.varlist

fi

###################################
# start loop for forecast lead time
###################################

for nfhrs in $hourlist; do

  rm namin.prob.$nfhrs

  echo " &namens" >>namin.prob.$nfhrs

  ifile=0

  if [ "$IFNAEFS" = "YES" ]; then
   pidswitch=1
   ifdebias=1
  fi

##############################
# input NCEP Ensemble forecast
##############################

  if [ "$IFNAEFS" = "YES" -o  "$IFGEFS" = "YES" ]; then
    for mem in ${memberlist_ncep}; do
      ifile_ncep=$COMINNCEP/ge${mem}.t${cyc}z.pgrba_bcf${nfhrs}
      if [ -s $ifile_ncep ]; then
        (( ifile = ifile + 1 ))
        iskip=1
        if [ "$mem" = "c00" ]; then
          iskip=0
        fi
        echo " cfipg($ifile)='$ifile_ncep'," >>namin.prob.$nfhrs
        echo " iskip($ifile)=${iskip}," >>namin.prob.$nfhrs
      fi
    done
  fi

##############################
#  input CMC Ensemble forecast
##############################

  if [ "$IFNAEFS" = "YES" -o  "$IFCMCE" = "YES" ]; then

    for mem in ${memberlist_cmc}; do
      ifile_cmc=$COMINCMC/cmc_ge${mem}.t${cyc}z.pgrba_bcf${nfhrs}
      if [ -s $ifile_cmc ]; then
        (( ifile = ifile + 1 ))
        iskip=2
        if [ "$mem" = "c00" ]; then
          iskip=0
        fi
        echo " cfipg($ifile)='$COMINCMC/cmc_ge${mem}.t${cyc}z.pgrba_bcf${nfhrs}'," >>namin.prob.$nfhrs
        echo " iskip($ifile)=${iskip}," >>namin.prob.$nfhrs
      fi
    done

########################################################################
#  input CMC 2m temperature 6h ago for tmax and tmin forecast adjustment 
########################################################################
    if [ $nfhrs -ge 06 ]; then
      nfhrsm06=`expr $nfhrs - 06`
      if [ $nfhrsm06 -le 09 ]; then
        ifile_t2m_m06_cmc=cmc_enspost.t${cyc}z.pgrba_bcf0${nfhrsm06}
      else
        ifile_t2m_m06_cmc=cmc_enspost.t${cyc}z.pgrba_bcf${nfhrsm06}
      fi
      >$ifile_t2m_m06_cmc

      for mem in ${memberlist_cmc}; do
        if [ $nfhrsm06 -le 09 ]; then
          ifile_cmcm06=$COMINCMC/cmc_ge${mem}.t${cyc}z.pgrba_bcf0$nfhrsm06
          if [ $nfhrsm06 -eq 00 ]; then
            ifile_cmcm06=$COM/cmce.$PDY/${cyc}/pgrba/cmc_ge${mem}.t${cyc}z.pgrbaf0$nfhrsm06
          fi   
        else
          ifile_cmcm06=$COMINCMC/cmc_ge${mem}.t${cyc}z.pgrba_bcf$nfhrsm06
        fi
        $EXECUTIL/wgrib $ifile_cmcm06 | grep ":TMP:" | grep "2 m" | $EXECUTIL/wgrib -i $ifile_cmcm06  -grib -append -o $ifile_t2m_m06_cmc
      done
    fi     

###########################################################################
# CMC and NCEP analysis difference input, first step is to judge valid time
###########################################################################

    cyc_verf=`$NDATE +$nfhrs $PDY$cyc | cut -c9-10`
    ifile_anldiff_cmc=ncepcmc_glbanl.t${cyc_verf}z.pgrba_mdf00

    if [ -s $COM/gefs.$PDYm2/${cyc_verf}/pgrba/$ifile_anldiff_cmc ]; then
      cp $COM/gefs.$PDYm2/${cyc_verf}/pgrba/$ifile_anldiff_cmc  . 
    elif [ -s $COM/gefs.$PDYm3/${cyc_verf}/pgrba/$ifile_anldiff_cmc ]; then
      cp $COM/gefs.$PDYm3/${cyc_verf}/pgrba/$ifile_anldiff_cmc  . 
    elif [ -s $COM/gefs.$PDYm4/${cyc_verf}/pgrba/$ifile_anldiff_cmc ]; then
      cp $COM/gefs.$PDYm4/${cyc_verf}/pgrba/$ifile_anldiff_cmc  . 
    elif [ -s $COM/gefs.$PDYm5/${cyc_verf}/pgrba/$ifile_anldiff_cmc ]; then
      cp $COM/gefs.$PDYm5/${cyc_verf}/pgrba/$ifile_anldiff_cmc  . 
    elif [ -s $COM/gefs.$PDYm6/${cyc_verf}/pgrba/$ifile_anldiff_cmc ]; then
      cp $COM/gefs.$PDYm6/${cyc_verf}/pgrba/$ifile_anldiff_cmc  . 
    elif [ -s $COM/gefs.$PDYm7/${cyc_verf}/pgrba/$ifile_anldiff_cmc ]; then
      cp $COM/gefs.$PDYm7/${cyc_verf}/pgrba/$ifile_anldiff_cmc  . 
    fi

#################################################
# CMC and NCEP analysis difference (6h ago) input
#################################################

    if [ $nfhrs -ge 06 ]; then
      pdy_verf=`$NDATE +$nfhrs $PDY$cyc`
      cyc_verfm06=`$NDATE -06 $pdy_verf | cut -c9-10`
      ifile_anldiff_cmc_m06=ncepcmc_glbanl.t${cyc_verfm06}z.pgrba_mdf00

      if [ -s $COM/gefs.$PDYm2/${cyc_verfm06}/pgrba/$ifile_anldiff_cmc_m06 ]; then
        cp $COM/gefs.$PDYm2/${cyc_verfm06}/pgrba/$ifile_anldiff_cmc_m06  . 
      elif [ -s $COM/gefs.$PDYm3/${cyc_verfm06}/pgrba/$ifile_anldiff_cmc_m06 ]; then
        cp $COM/gefs.$PDYm3/${cyc_verfm06}/pgrba/$ifile_anldiff_cmc_m06  . 
      elif [ -s $COM/gefs.$PDYm4/${cyc_verfm06}/pgrba/$ifile_anldiff_cmc_m06 ]; then
        cp $COM/gefs.$PDYm4/${cyc_verfm06}/pgrba/$ifile_anldiff_cmc_m06  . 
      elif [ -s $COM/gefs.$PDYm5/${cyc_verfm06}/pgrba/$ifile_anldiff_cmc_m06 ]; then
        cp $COM/gefs.$PDYm5/${cyc_verfm06}/pgrba/$ifile_anldiff_cmc_m06  . 
      elif [ -s $COM/gefs.$PDYm6/${cyc_verfm06}/pgrba/$ifile_anldiff_cmc_m06 ]; then
        cp $COM/gefs.$PDYm6/${cyc_verfm06}/pgrba/$ifile_anldiff_cmc_m06  . 
      elif [ -s $COM/gefs.$PDYm7/${cyc_verfm06}/pgrba/$ifile_anldiff_cmc_m06 ]; then
        cp $COM/gefs.$PDYm7/${cyc_verfm06}/pgrba/$ifile_anldiff_cmc_m06  . 
      fi
    fi

  fi

################################
#  input FNMOC Ensemble forecast
################################

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

    for mem in ${memberlist_fnmoc}; do
      ifile_fnmoc=$COMINFENS/fnmoc_ge${mem}.t${cyc}z.pgrba_bcf${nfhrs}
      if [ -s $ifile_fnmoc ]; then
        (( ifile = ifile + 1 ))
        iskip=3
        echo " cfipg($ifile)='$COMINFENS/fnmoc_ge${mem}.t${cyc}z.pgrba_bcf${nfhrs}'," >>namin.prob.$nfhrs
        echo " iskip($ifile)=${iskip}," >>namin.prob.$nfhrs
      fi
    done

##########################################################################
#  input FNMOC 2m temperature 6h ago for tmax and tmin forecast adjustment 
##########################################################################
    if [ $nfhrs -ge 06 ]; then
      nfhrsm06=`expr $nfhrs - 06`
      if [ $nfhrsm06 -le 09 ]; then
        ifile_t2m_m06_fnmoc=fnmoc_enspost.t${cyc}z.pgrba_bcf0${nfhrsm06}
      else
        ifile_t2m_m06_fnmoc=fnmoc_enspost.t${cyc}z.pgrba_bcf${nfhrsm06}
      fi
      >$ifile_t2m_m06_fnmoc

      for mem in ${memberlist_fnmoc}; do
        if [ $nfhrsm06 -le 09 ]; then
          ifile_fnmocm06=$COMINFENS/fnmoc_ge${mem}.t${cyc}z.pgrba_bcf0$nfhrsm06
          if [ $nfhrsm06 -eq 00 ]; then
            ifile_fnmocm06=$COM_FNMOC/fens.$PDY/${cyc}/pgrba/fnmoc_ge${mem}.t${cyc}z.pgrbaf0$nfhrsm06
          fi   
        else
          ifile_fnmocm06=$COMINFENS/fnmoc_ge${mem}.t${cyc}z.pgrba_bcf$nfhrsm06
        fi
        $EXECUTIL/wgrib $ifile_fnmocm06 | grep ":TMP:" | grep "2 m" | $EXECUTIL/wgrib -i $ifile_fnmocm06  -grib -append -o $ifile_t2m_m06_fnmoc
      done
    fi     

#############################################################################
# FNMOC and NCEP analysis difference input, first step is to judge valid time
#############################################################################

COM=${COM:-/com/gens/${envir}}

    cyc_verf=`$NDATE +$nfhrs $PDY$cyc | cut -c9-10`
    ifile_anldiff_fnmoc=ncepfnmoc_glbanl.t${cyc_verf}z.pgrba_mdf00
  
    echo $COM/gefs.$PDYm2/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc

    if [ -s $COM/gefs.$PDYm1/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc ]; then
      cp $COM/gefs.$PDYm1/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc  . 
    elif [ -s $COM/gefs.$PDYm2/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc ]; then
      cp $COM/gefs.$PDYm2/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc  . 
    elif [ -s $COM/gefs.$PDYm3/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc ]; then
      cp $COM/gefs.$PDYm3/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc  . 
    elif [ -s $COM/gefs.$PDYm4/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc ]; then
      cp $COM/gefs.$PDYm4/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc  . 
    elif [ -s $COM/gefs.$PDYm5/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc ]; then
      cp $COM/gefs.$PDYm5/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc  . 
    elif [ -s $COM/gefs.$PDYm6/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc ]; then
      cp $COM/gefs.$PDYm6/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc  . 
    elif [ -s $COM/gefs.$PDYm7/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc ]; then
      cp $COM/gefs.$PDYm7/${cyc_verf}/pgrba/$ifile_anldiff_fnmoc  . 
    fi

###################################################
# FNMOC and NCEP analysis difference (6h ago) input
###################################################

    if [ $nfhrs -ge 06 ]; then
      pdy_verf=`$NDATE +$nfhrs $PDY$cyc`
      cyc_verfm06=`$NDATE -06 $pdy_verf | cut -c9-10`
      ifile_anldiff_fnmoc_m06=ncepfnmoc_glbanl.t${cyc_verfm06}z.pgrba_mdf00

      echo $COM/gefs.$PDYm2/${cyc_verfm06}/pgrba/$ifile_anldiff_fnmoc_m06

      if [ -s $COM/gefs.$PDYm2/${cyc_verfm06}/pgrba/$ifile_anldiff_fnmoc_m06 ]; then
        cp $COM/gefs.$PDYm2/${cyc_verfm06}/pgrba/$ifile_anldiff_fnmoc_m06  . 
      elif [ -s $COM/gefs.$PDYm3/${cyc_verfm06}/pgrba/$ifile_anldiff_fnmoc_m06 ]; then
        cp $COM/gefs.$PDYm3/${cyc_verfm06}/pgrba/$ifile_anldiff_fnmoc_m06  . 
      elif [ -s $COM/gefs.$PDYm4/${cyc_verfm06}/pgrba/$ifile_anldiff_fnmoc_m06 ]; then
        cp $COM/gefs.$PDYm4/${cyc_verfm06}/pgrba/$ifile_anldiff_fnmoc_m06  . 
      elif [ -s $COM/gefs.$PDYm5/${cyc_verfm06}/pgrba/$ifile_anldiff_fnmoc_m06 ]; then
        cp $COM/gefs.$PDYm5/${cyc_verfm06}/pgrba/$ifile_anldiff_fnmoc_m06  . 
      elif [ -s $COM/gefs.$PDYm6/${cyc_verfm06}/pgrba/$ifile_anldiff_fnmoc_m06 ]; then
        cp $COM/gefs.$PDYm6/${cyc_verfm06}/pgrba/$ifile_anldiff_fnmoc_m06  . 
      elif [ -s $COM/gefs.$PDYm7/${cyc_verfm06}/pgrba/$ifile_anldiff_fnmoc_m06 ]; then
        cp $COM/gefs.$PDYm7/${cyc_verfm06}/pgrba/$ifile_anldiff_fnmoc_m06  . 
      fi
    fi

  fi

####################
# set up input files 
####################

  echo " pidswitch=${pidswitch}," >>namin.prob.$nfhrs
  echo " nfiles=${ifile}," >>namin.prob.$nfhrs
  echo " ifdebias=${ifdebias}," >>namin.prob.$nfhrs

  if [ "$IFNAEFS" = "YES" ]; then
    echo " cfipg1='${ifile_t2m_m06_cmc}'," >>namin.prob.$nfhrs
    echo " cfipg2='${ifile_anldiff_cmc}'," >>namin.prob.$nfhrs
    echo " cfipg3='${ifile_anldiff_cmc_m06}'," >>namin.prob.$nfhrs

    echo " cfipg4='${ifile_t2m_m06_fnmoc}'," >>namin.prob.$nfhrs
    echo " cfipg5='${ifile_anldiff_fnmoc}'," >>namin.prob.$nfhrs
    echo " cfipg6='${ifile_anldiff_fnmoc_m06}'," >>namin.prob.$nfhrs
  fi

  echo " ifhr=$nfhrs," >>namin.prob.$nfhrs

#####################
# set up output files 
#####################

  echo " cfopg1='ge10pt.t${cyc}z.pgrba_bcf${nfhrs}'," >>namin.prob.$nfhrs
  echo " cfopg2='ge90pt.t${cyc}z.pgrba_bcf${nfhrs}'," >>namin.prob.$nfhrs
  echo " cfopg3='ge50pt.t${cyc}z.pgrba_bcf${nfhrs}'," >>namin.prob.$nfhrs
  echo " cfopg4='geavg.t${cyc}z.pgrba_bcf${nfhrs}'," >>namin.prob.$nfhrs
  echo " cfopg5='gespr.t${cyc}z.pgrba_bcf${nfhrs}'," >>namin.prob.$nfhrs
  echo " cfopg6='gemode.t${cyc}z.pgrba_bcf${nfhrs}'," >>namin.prob.$nfhrs

  echo " /" >>namin.prob.$nfhrs

  cat namin.varlist >>namin.prob.$nfhrs

  startmsg
  $EXECNAEFS/naefs_bc_probability <namin.prob.$nfhrs > $pgmout.${nfhrs}_prob  2> errfile
  export err=$?;err_chk
  rm namin.prob.$nfhrs

done

set +x
echo " "
echo "Leaving sub script naefs_bc_probability.sh"
echo " "
set -x

