###############################################################################################
# Script:   cmce_adjust_wind10m.sh 
# Abstract: Use accumulated NCEP and CMC analysis difference to adjust CMC 10m wind u and v of
#           each member, which will be used to get downscaled wind speed and direction
#           for variable 10m wind u and v
# Author:   Bo Cui 
# History:  January 2010 - First implementation of this new script 
###############################################################################################

########################################
#  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_cmc="p01 p02 p03 p04 p05 p06 p07 p08 p09 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20"

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

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

pgm=cmce_adjust_wind10m
pgmout=output_adjustcmc

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

ifdebias=1

for nfhrs in $hourlist; do

 ( for mem in ${memberlist_cmc}; do

    echo " &namens" >>namin.adjustcmc.$nfhrs.$mem

    ifile=0

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

    ifile_cmc=$COMINCMC/cmc_ge${mem}.t${cyc}z.pgrba_bcf${nfhrs}
    if [ $nfhrs -eq 00 ]; then
      ifile_cmc=$COM_IN/cmce.$PDY/${cyc}/pgrba/cmc_ge${mem}.t${cyc}z.pgrbaf${nfhrs}
    fi
    if [ -s $ifile_cmc ]; then
      (( ifile = ifile + 1 ))
      iskip=-1
#     if [ "$mem" = "c00" ]; then
#       iskip=0
#     fi
      echo " cfipg($ifile)='${ifile_cmc}'," >>namin.adjustcmc.$nfhrs.$mem
      echo " iskip($ifile)=${iskip}," >>namin.adjustcmc.$nfhrs.$mem
    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=ncepcmc_glbanl.t${cyc_verf}z.pgrba_mdf00

    echo $COM_IN/gefs.$PDYm2/${cyc_verf}/pgrba/$ifile_anldiff

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

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

    echo " nfiles=${ifile}," >>namin.adjustcmc.$nfhrs.$mem
    echo " ifdebias=${ifdebias}," >>namin.adjustcmc.$nfhrs.$mem
    echo " cfipg1='${ifile_anldiff}'," >>namin.adjustcmc.$nfhrs.$mem

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

    echo " cfopg1='cmc_ge${mem}.t${cyc}z.pgrba_bcf${nfhrs}_temp'," >>namin.adjustcmc.$nfhrs.$mem

    rm cmc_ge${mem}.t${cyc}z.pgrba_bcf${nfhrs}_temp

    echo " /" >>namin.adjustcmc.$nfhrs.$mem

    startmsg
    $EXECrtma/$pgm <namin.adjustcmc.$nfhrs.$mem > $pgmout.${nfhrs}.$mem  2> errfile
    export err=$?;$DATA/err_chk

  done  ) &

  wait
done

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

