#!/bin/sh
###############################################################################
####  UNIX Script Documentation Block                                         #
#                                                                             #
# Script name:         exofs_atl_assimilation_sst.sh.sms                      #
# Script description:                                                         #
#                                                                             #
# Author:        Dan Iredell       Org: NP23         Date: 2005-06-14         #
#                                                                             #
# Abstract: This script generates the SST analysis and an updated reastart    #
#           for the Ocean Forecast Model                                      #
#                                                                             #
# Sub-scripts called:                                                         #
#    ofs_sst_assim.sh : create sst analyses                                   #
#    ofs_merge.sh : merge together multiple sst analyses                      #
#                                                                             #
# Script history log:                                                         #
# 2005-07-27  Dan Iredell                                                     #
# 2007-01-30  Ilya Rivin
#                                                                             #
###############################################################################
set -x
# --------------------------------------------------------------------------- #
# 0.  Preparations
# 0.a Basic modes of operation

export PS4='$SECONDS + '

# send extra output for monitoring purposes.

export monitor=1

cd $DATA

msg="${RUN}_${modID} model data assimilation has begun on `hostname`"
postmsg "$jlogfile" "$msg"

# obtain the startdate and enddate
export cdate=$PDY
export srtdate=$PDYm1
export enddate=`sh $utilscript/finddate.sh $srtdate d+1`
 
# model day

 export t0=`$utilscript/date_normal2hycom.sh $srtdate$cyc`
 export t1=`$utilscript/date_normal2hycom.sh $enddate$cyc`

# Set environment variables for decoders

export depth=0
export TANK=${TANK:-${DCOMROOT}/us007003}
export DUMPMB=${DUMPMB:-${USHofs}/dumpmb}
export dumpmb=$DUMPMB

#########################################
#  SST assimilation
#########################################
if [ $runsst -eq 1 ] ; then

#1.a Set identifier for file labels
   export field=sst
   test -d $DATA/sst || mkdir -p $DATA/sst
  
#1.b Do an analysis for each assigned day

   for sstdate in $PDYm1 $PDY
   do
      export srtdate=$sstdate

#1.c Set date/day labels
      yyyyddd=`$utilscript/date2jday.sh $sstdate`
      yyyy=`echo $yyyyddd | cut -c -1-4`
      ddd=`echo $yyyyddd | cut -c -5-7`

#1.d  find archive files for day ddd in a set of sub-directories
      loopexit=0
      cyymmdd=$sstdate
      dirschecked=1
      while [ $loopexit -eq 0 ]
      do
#1.d.1 test if files are available.
         COM=`dirname $COMIN`
         fila=$COM/ofs.$cyymmdd/${RUN}_${modID}.${cycle}.${yyyy}_${ddd}_00.a
         filb=$COM/ofs.$cyymmdd/${RUN}_${modID}.${cycle}.${yyyy}_${ddd}_00.b
         echo checking $COM/ofs.$cyymmdd for ${RUN}_${modID}.${cycle}.${yyyy}_${ddd}_00.b

         if [[ -s $fila && -s $filb ]]
         then
            inova_in_a=$fila
            inova_in_b=$filb
            loopexit=1
         else
         # go back one day to look for the files:
            cyymmdd=`sh $utilscript/finddate.sh $cyymmdd d-1`
            dirschecked=`expr $dirschecked + 1`
            if [ $dirschecked -gt 5 ]
            then
              msg="FATAL: Cannot find archive file for day $sstdate"
              postmsg  ${jlogfile} "${msg}"
              err=911
              export err;err_chk
            fi
         fi
      done

      # Copy archive files over to working directory:
      if [ $loopexit -eq 1 ]
      then
        ln -s $inova_in_a $DATA/sst/archv_$sstdate.a
        ln -s $inova_in_b $DATA/sst/archv_$sstdate.b
      fi

       $USHofs/ofs_sst_assim.sh $sstdate $DATA/sst/archv_$sstdate

   done

#1.2 run merge to combine  all days together

   $USHofs/ofs_merge.sh  $PDYm1 $PDY 


#2.3  save permanent files, and also intermediary files if requested.
   if [ $SENDCOM = YES ]
   then
      #2.3a intermediate files  decoders
       cp $DATA/sst/avhrr.sst.${PDY}.box.txt   $COMOUT/${RUN}_${modID}.${cycle}.avhrr.sst.${PDY}.box.txt
       cp $DATA/sst/goes.sst.${PDY}.box.txt    $COMOUT/${RUN}_${modID}.${cycle}.goes.sst.${PDY}.box.txt
       cp $DATA/sst/rough_goes.sst.${PDY}.box.txt   $COMOUT/${RUN}_${modID}.${cycle}.goes.rough.sst.${PDY}.box.txt
       cp $DATA/sst/situ.sst.${PDY}.box.txt    $COMOUT/${RUN}_${modID}.${cycle}.situ.sst.${PDY}.box.txt
       cp $DATA/sst/avhrr.sst.${PDYm1}.box.txt $COMOUT/${RUN}_${modID}.${cycle}.avhrr.sst.${PDYm1}.box.txt
       cp $DATA/sst/goes.sst.${PDYm1}.box.txt    $COMOUT/${RUN}_${modID}.${cycle}.goes.sst.${PDYm1}.box.txt
       cp $DATA/sst/rough_goes.sst.${PDYm1}.box.txt $COMOUT/${RUN}_${modID}.${cycle}.goes.rough.sst.${PDYm1}.box.txt
       cp $DATA/sst/situ.sst.${PDYm1}.box.txt  $COMOUT/${RUN}_${modID}.${cycle}.situ.sst.${PDYm1}.box.txt
       cp $DATA/sst/sst.${PDY}.txt             $COMOUT/${RUN}_${modID}.${cycle}.sst.${PDY}.txt
       cp $DATA/sst/sst.${PDYm1}.txt           $COMOUT/${RUN}_${modID}.${cycle}.sst.${PDYm1}.txt
       cp $DATA/sst/sst.${PDY}.test.txt        $COMOUT/${RUN}_${modID}.${cycle}.sst.${PDY}.test.txt
       cp $DATA/sst/sst.${PDYm1}.test.txt      $COMOUT/${RUN}_${modID}.${cycle}.sst.${PDYm1}.test.txt
      #2.3b intermediate files.. spread
       cp $DATA/sst/sst.${PDY}.${cycle}.spread.txt     $COMOUT/${RUN}_${modID}.${cycle}.sst.${PDY}.spread.txt
       cp $DATA/sst/sst.${PDYm1}.${cycle}.spread.txt   $COMOUT/${RUN}_${modID}.${cycle}.sst.${PDYm1}.spread.txt

     #2.3c  fairly perm files. inova/spread
     cp $DATA/sst/sst.${PDY}.${cycle}.inova.bin      $COMOUT/${RUN}_${modID}.${cycle}.sst.${PDY}.inova.bin
     cp $DATA/sst/sst.${PDYm1}.${cycle}.inova.bin    $COMOUT/${RUN}_${modID}.${cycle}.sst.${PDYm1}.inova.bin
     cp $DATA/sst/sst.${PDY}.${cycle}.spread.bin     $COMOUT/${RUN}_${modID}.${cycle}.sst.${PDY}.spread.bin
     cp $DATA/sst/sst.${PDYm1}.${cycle}.spread.bin   $COMOUT/${RUN}_${modID}.${cycle}.sst.${PDYm1}.spread.bin
#3.3e  perm files.. merge
     cp $DATA/sst/assim.surtmp.a                     $COMOUT/${RUN}_${modID}.${cycle}.sstanl.a
     cp $DATA/sst/assim.surtmp.b                     $COMOUT/${RUN}_${modID}.${cycle}.sstanl.b
   fi

fi

postmsg "$jlogfile" "$msg"

msg='THE OFS_ASSIMILATION JOB HAS ENDED NORMALLY.'
postmsg "$jlogfile" "$msg"

################## END OF SCRIPT #######################

