#!/bin/sh
#
#  This script template requires following edit variables to be defined
#      %EXECSUBDIR% %YYYY% %MM% %DD% %HH% %FHE% %FHS% %INTSFCX% 
#      %ENDHOUR% %INTFLX% %INTSIG% %PLATFORM% %FTPDIR%
#      %YYYYS% %MMS% %DDS% %HHS% %YYYYE% %MME% %DDE% %HHE%
#      /nfsuser/g03/wx52op/pt6-62/run/runscr'
#      %FTP_SIG% %FTP_SFC% %FTP_ZNL% %FTP_FLX% %FTP_DIA% %FTP_KEN% 
#      %FTP_PGB% %FTP_SGB% %FTP_SFCANL% %FTP_SFCOUT% %FTP_FCSTOUT%
#      %LIST_OF_FILES% %FILES_TO_BE_KEPT% %FILES_TO_BE_AVERAGED%
#      %RMAVRG% %VARIANCE%
#
set -ax
#  Obtain the member from input:
member=$1
if [ $member -lt 10 ]; then member=0$member; fi

export YMDH=$start_date
HHS=$(echo $start_date | cut -c9-10)
#    which should be defined in cpost.in
#
#  obtain forecast hours for various ending dates
#
. $USHcfs/cfs_endfhrs.sh
#
if [ $FHS -lt 1 ] ; then
  fhsp=$FHS
else
  fhsp=`expr $FHS + $INTSIG`
fi
#
# pgb
#
echo $FILES_TO_BE_KEPT | grep pgb >/dev/null
cck=$?
echo $FILES_TO_BE_AVERAGED | grep pgb >/dev/null
cca=$?
if [ $cck -eq 0 -o $cca -eq 0 ] ; then
   $USHcfs/cfs_pgb.sh $fhsp $FHE $INTSIG 
   bdate=$($NDATE $FHS $start_date)
   edate=$($NDATE $FHE $start_date)
   $USHcfs/cfs_ocn.sh $start_date $bdate $edate
   $USHcfs/cfs_extvars.sh $fhsp $FHE $INTFLX 
fi
#
#  Compute monthly mean if a month is available
#
c=1
while [ $c -le $MCOUNT ] ; do
        x=\$MFHOUR_$c
        x=`eval echo $x`
        echo MFHOUR_$c=$x
        c=`expr $c + 1`
done
#
if [ ! -s $POSTDEFS/monthly.stamp ] ; then
#
# skip first month for averaging
#
  c=1
#
# if first month is less than 15 days, skip second month also????
#
  flen=`expr $MFHOUR_1 \/ 24`
# maxlen=15
  maxlen=1
  if [ $flen -lt $maxlen ]; then c=2; fi
#
else
  read c <$POSTDEFS/monthly.stamp
  c=$((c+1))
fi
#
echo doing monthly average for c=$c
#
while [ $c -le $MCOUNT ] ; do
#  c=`expr $c + 1`
   fte=\$MFHOUR_$c
   fte=`eval echo $fte`
#  if [ $fte -gt $FHS -a $fte -le $FHE ] ; then
#  if [ $fte -gt 0 -a $fte -le $ENDHOUR ] ; then
   if [ $fte -gt 0 -a $fte -le $FHE ] ; then
      echo 'Performing averaging'
      cm=`expr $c - 1`
      if [ $cm -eq 0 ] ; then
        fts=0
      else
        fts=\$MFHOUR_$cm
        fts=`eval echo $fts`
      fi
      NEWDATE=$($NDATE $fts $start_date)
      yyyy=$(echo $NEWDATE | cut -c-4)
      mm=$(echo $NEWDATE | cut -c5-6)
      dd=$(echo $NEWDATE | cut -c7-8)
      hh=$(echo $NEWDATE | cut -c9-10)
#
#     fh=`expr $fts + $INTSFCX`
      for file in $FILES_TO_BE_AVERAGED ; do
         intvl=$INTFLX
#
         fnymdh=.false.
         if [ $file = pgb ] ; then
           intvl=$INTSIG
           igau=2
         elif [ $file = ocn ] ; then
           iop=180
           jop=139
           intvl=24
           igau=2
           fnymdh=.true.
         elif [ $file = csst ] ; then
           iop=360
           jop=180
           intvl=24
           igau=2
           fnymdh=.true.
         else
           igau=1
         fi
         fh=`expr $fts + $intvl`
         sdate=$($NDATE $fh $start_date)
         edate=$($NDATE $fte $start_date)
#
         if [ $file = flx -o $file = csst ] ; then
           export datadir=$COM_YMDH
         else
           export datadir=$COM_YMDH_DG
         fi
#
         $USHcfs/cfs_grib_avrg.sh $file $start_date $sdate $edate \
                                  $intvl $igau $datadir $fnymdh

         if [ $SENDCOM = YES ] ; then
            for filename in $FILES_TO_SEND_COM ; do
              if [ $filename = avrg ] ; then
                ${NCP:-/bin/cp} $file$yyyy$mm.avrg.grib \
                $COM_YMDH_MG/$file$start_date.$member.$yyyy$mm.avrg.grib
                if [ $intvl -lt 24 ] ; then
                  fhc=-$intvl
                  until [[ $((fhc=10#$fhc+10#$intvl)) -gt 24 ]];do [[ $fhc -lt 10 ]]&&fhc=0$fhc
                    ${NCP:-/bin/cp} $file$yyyy$mm.avrg.grib.${fhc}Z \
                    $COM_YMDH_MG/$file$start_date.$member.$yyyy$mm.avrg.grib.${fhc}Z
                  done
                fi
#
                if [ $SENDDBN = YES -a $file != csst ] ; then
                   if [ $CUE2RUN = prod ] ; then
                     $DBNROOT/bin/dbn_alert MODEL CFS_FCST $job \
                     $COM_YMDH_MG/$file$start_date.$member.$yyyy$mm.avrg.grib
                   fi
                fi
              fi
            done
         fi
      done
      echo $c >$POSTDEFS/monthly.stamp
   fi
   c=`expr $c + 1`
done

if [ $FHE -ge $ENDHOUR ] ; then
  rm $POSTDEFS/monthly.stamp
fi

#  extvars processing

REMOVE_EXTVARS=NO
if [ $FHE -eq $ENDHOUR ] ; then
	hhs=`expr $HHS + 0`
	inchour=`expr $INTFLX + $hhs`
        yyyy=`echo $YMDH |cut -c1-4`
        mm=`echo $YMDH |cut -c5-6`
        dd=`echo $YMDH |cut -c7-8`
        if [ $dd -gt 15 ]; then mm=`expr $mm + 1`; fi
        while [ $mm -gt 12 ]
        do
           mm=`expr $mm - 12`
           yyyy=`expr $yyyy + 1`
        done
        mm=`expr $mm + 0`
        if [ $mm -lt 10 ]; then mm=0$mm; fi
	extvars_all=extvars$start_date.$member.$yyyy$mm.grib
fi
