
########################### BIASUPDATE ################################
echo "------------------------------------------------"
echo "Update Bias Estimation Daily of CMC Global Ensemble"
echo "------------------------------------------------"
echo "History: May 2006 - First implementation of this new script."
echo "AUTHOR: Bo Cui  (wx20cb)"

### To submit this job for T00Z and T12Z  two cycles per day

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

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

export NDATE=$EXECUTIL/ndate
export COPYGB=$EXECUTIL/copygb

export pgm=cmcens_bias
. prep_step

################################################################
#  ndays:   length of training period, 17 days                         
#  interhr: ensemble forecast interval                                 
###############################################################

ndays=17 
interhr=6

################################################################
### define the days for searching bias estimation backup
################################################################

export ymdh=${PDY}${cyc}
export PDYm8=`$NDATE -192 $ymdh | cut -c1-8`
export PDYm9=`$NDATE -216 $ymdh | cut -c1-8`
export PDYm10=`$NDATE -240 $ymdh | cut -c1-8`
export PDYm11=`$NDATE -264 $ymdh | cut -c1-8`
export PDYm12=`$NDATE -288 $ymdh | cut -c1-8`
export PDYm13=`$NDATE -312 $ymdh | cut -c1-8`
export PDYm14=`$NDATE -336 $ymdh | cut -c1-8`
export PDYm15=`$NDATE -360 $ymdh | cut -c1-8`
export PDYm16=`$NDATE -384 $ymdh | cut -c1-8`

################################################################
### calculate bias estimation for different forecast 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="c00 p01 p02 p03 p04 p05 p06 p07 p08 p09 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20"

if [ $cyc -eq 00 -o $cyc -eq 12 ]; then

for nfhrs in $hourlist; do
 for nens in $memberlist; do

###
# input basic information, member and forecast lead time
###

  echo "&fileh"  >input1.$nfhrs.$nens
  echo " ifhr=$nfhrs," >>input1.$nfhrs.$nens
  echo " nens='$nens'," >>input1.$nfhrs.$nens
  echo " interhr=$interhr," >>input1.$nfhrs.$nens
  echo "/" >>input1.$nfhrs.$nens

###
# analysis files entry
###

# fymdh=${PDYm1}18
  fymdh=${PDYm2}18
  fymdh=`$NDATE -$nfhrs $fymdh `
  fymd=`echo $fymdh | cut -c1-8`

  aymdh=`$NDATE +$nfhrs $fymd$cyc `
  aymh=`echo $aymdh | cut -c1-8`
  acyc=`echo $aymdh | cut -c9-10`

  pgb=$COM/cmce.${aymh}/${acyc}/pgrba/cmc_gec00.t${acyc}z.pgrbaanl

  echo "&fileme"  >input2.$nfhrs.$nens
  echo " afile='$pgb', " >>input2.$nfhrs.$nens

###
# forecast files entry
###

  pgb=$COM/cmce.${fymd}/${cyc}/pgrba/cmc_ge$nens.t${cyc}z.pgrbaf$nfhrs  
  echo " cfile='$pgb'," >>input2.$nfhrs.$nens

# odate=`$NDATE -24 $PDY$cyc `
  odate=`$NDATE -24 ${PDYm1}$cyc `
  echo " odate=$odate," >>input2.$nfhrs.$nens

###
#  get initialized bias for $nens at $nfhrs
#  set the no cold start index as default, 0
###

  cstart=0

  pgbme=cmc_ge${nens}.t${cyc}z.pgrba_mef$nfhrs    
  pgbbias=bias.ge${nens}.t${cyc}z.f$nfhrs
  echo " ifile='$pgbbias'," >> input2.$nfhrs.$nens

  if [ -s $COM/cmce.$PDY/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDY/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm1/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm1/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm2/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm2/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm3/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm3/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm4/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm4/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm5/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm5/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm6/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm6/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm7/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm7/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm8/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm8/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm9/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm9/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm10/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm10/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm11/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm11/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm12/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm12/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm13/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm13/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm14/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm14/${cyc}/pgrba/$pgbme $pgbbias
    elif [ -s $COM/cmce.$PDYm15/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm15/${cyc}/pgrba/$pgbme $pgbbias
  elif [ -s $COM/cmce.$PDYm16/${cyc}/pgrba/$pgbme ]; then
    cp $COM/cmce.$PDYm16/${cyc}/pgrba/$pgbme $pgbbias
  else
    echo " Cold Start for Bias Estimation for Fcst. Hour " $nfhrs " For Member "  $nens
    cstart=1
  fi

###
#  input bias estimation 6h ago for tmax and tmin bias estimation
###
  if [ $nfhrs -ge 06 ]; then

    nfhrsm06=`expr $nfhrs - 06`
    if [ $nfhrsm06 -le 09 ]; then
      pgb=cmc_ge${nens}.t${cyc}z.pgrba_mef0$nfhrsm06
    else
      pgb=cmc_ge${nens}.t${cyc}z.pgrba_mef$nfhrsm06
    fi

    echo "&fileme2"  >input3.$nfhrs.$nens
    echo " ifile2='$pgb'," >> input3.$nfhrs.$nens
    echo "/" >>input3.$nfhrs.$nens

  fi

###
#  output ensemble forecasting bias estimation
###

  pgb=cmc_ge${nens}.t${cyc}z.pgrba_mef$nfhrs                        
  echo " ofile='$pgb'," >> input2.$nfhrs.$nens
  echo " icstart=${cstart}," >> input2.$nfhrs.$nens
  echo "/" >>input2.$nfhrs.$nens

  if [ $nfhrs -eq 00 ]; then
    cat input1.$nfhrs.$nens input2.$nfhrs.$nens >input.$nfhrs.$nens
  else
    cat input1.$nfhrs.$nens input2.$nfhrs.$nens input3.$nfhrs.$nens >input.$nfhrs.$nens
  fi

  startmsg
  $EXECCMCE/$pgm  <input.$nfhrs.$nens > $pgmout.$nfhrs.$nens  
  export err=$?;err_chk

 done
done

fi

###
#  calculate bias estimation between CDAS and CMC analysis    
###

for nfhrs in 00; do
 for nens in mdf; do

###
#  set the no cold start index as default, 0
###
  cstart=0

  echo "&fileh"  >input1.mdf
  echo " ifhr=$nfhrs," >>input1.mdf
  echo " nens='$nens'," >>input1.mdf
  echo " interhr=$interhr," >>input1.mdf
  echo "/" >>input1.mdf

###
# CMC operational analysis file entry
###

  pgb=$COM/cmce.${PDYm2}/${cyc}/pgrba/cmc_gec00.t${cyc}z.pgrbaanl

  echo "&filemdf"  >input2.mdf
  echo " afile='$pgb', " >>input2.mdf

###
# cdas reanalysi file entry
###

  reymd_m06=`$NDATE -6 $PDYm2$cyc `
  dtrea_m06=`echo $reymd_m06 | cut -c1-8`
  dhrea_m06=`echo $reymd_m06 | cut -c9-10`

  $COPYGB -g3 -i1,1 -x $COMINCDAS/cdas.${PDYm2}/cdas.t${cyc}z.pgrbf00               cdas.t${cyc}z.pgrbf00.$PDYm2
  $COPYGB -g3 -i1,1 -x $COMINCDAS/cdas.${dtrea_m06}/cdas.t${dhrea_m06}z.sfluxgrbf06 cdas.t${dhrea_m06}z.sfluxgrbf06.$dtrea_m06

  pgb1=cdas.t${cyc}z.pgrbf00.$PDYm2
  pgb2=cdas.t${dhrea_m06}z.sfluxgrbf06.$dtrea_m06

  echo " rfile1='$pgb1'," >>input2.mdf
  echo " rfile2='$pgb2'," >>input2.mdf

###
#  get initialized bias between analyais and reanalysis entry
###

  pgbmdf=cmc_glbanl.t${cyc}z.pgrba_mdf00
  pgbmean=glbanl.t${cyc}z.pgrba_meandif

  echo " ifile='$pgbmean'," >> input2.mdf           

  if [ -s $COM/cmce.$PDY/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDY/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm1/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm1/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm2/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm2/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm3/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm3/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm4/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm4/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm5/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm5/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm6/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm6/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm7/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm7/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm8/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm8/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm9/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm9/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm10/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm10/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm11/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm11/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm12/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm12/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm13/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm13/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm14/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm14/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm15/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm15/${cyc}/pgrba/$pgbmdf $pgbmean
  elif [ -s $COM/cmce.$PDYm16/${cyc}/pgrba/$pgbmdf ]; then
    cp $COM/cmce.$PDYm16/${cyc}/pgrba/$pgbmdf $pgbmean
  else
    echo " Cold Start for Bias Estimation between CDAS and CMC Analysis " $nfhrs 
    cstart=1
  fi

###
#  output bias estimation between CDAS and CMC Analysis    
###

  pgb=cmc_glbanl.t${cyc}z.pgrba_mdf00                        
  echo " ofile='$pgb'," >> input2.mdf   
  echo " icstart=${cstart}," >> input2.mdf        
  echo "/" >>input2.mdf   

  cat input1.mdf input2.mdf >input.mdf    

  startmsg
  $EXECCMCE/$pgm  <input.mdf > $pgmout.mdf     
  export err=$?;err_chk

 done
done

if [ "$SENDCOM" = "YES" ]; then
  for nfhrs in $hourlist; do
    for nens in $memberlist; do
      if [ -s cmc_ge${nens}.t${cyc}z.pgrba_mef$nfhrs ]; then
#       cp cmc_ge${nens}.t${cyc}z.pgrba_mef$nfhrs $COMOUT/cmc_ge${nens}.t${cyc}z.pgrba_mef$nfhrs  
        cp cmc_ge${nens}.t${cyc}z.pgrba_mef$nfhrs $COMOUT_M1/cmc_ge${nens}.t${cyc}z.pgrba_mef$nfhrs  
      fi
    done
  done
    if [ -s cmc_glbanl.t${cyc}z.pgrba_mdf00 ]; then
      cp cmc_glbanl.t${cyc}z.pgrba_mdf00 $COMOUT_M2/cmc_glbanl.t${cyc}z.pgrba_mdf00  
    fi
fi

msg="HAS COMPLETED NORMALLY!"
postmsg "$jlogfile" "$msg"


