#!/bin/tcsh -fx
# ------------------------------
#PBS -W group_list=g0613
#
#PBS -N adderr
#PBS -l ncpus=4
#PBS -l walltime=0:59:00
#PBS -S /bin/csh
#PBS -j eo
#BSUB -J adderr
#BSUB -n 4
#BSUB -W 4:00
#BSUB -o adderr.%J
#BSUB -e adderr.%J
# -----------------------------------------------------------------------------------
# driver script for adding observation error statistics to simulated OSSE observation.
# -----------------------------------------------------------------------------------
#   April 2008 : Errico: original job script working at palm
#
#   April 2008 : Yang: finalizing the batch job
#-------------------------
# Experiment environment

#-------------------------
  setenv SIMHOME  /cxfsm/nobackup11/ryang/OSSE2/OSSE2/Simtest
  setenv SIMROOT  /home0/ryang/GSimobs
  setenv BUFRBIN  /home/meta/bin/Linux

  mkdir -p       /lscr1/$user/fvwork.$$
  setenv SIMWORK /lscr1/$user/fvwork.$$

   /bin/mkdir -p $SIMWORK            # create working directory

  umask 022

  echo $SIMWORK > $SIMHOME/.SIMWORK  # record working directory

  cd $SIMWORK

#
# USER SET VARIABLES
#---------------------------------------
# can only process within a single calendar month due to how the 
# dmget of files is invoked.
#---------------------------------------
#
set datetime1="2006010306"   # set initial symoptic date time

@ ntimes = 4                 # set number of synoptic times to process

# set input file names 
# set equal to "none" means don't process

# ----------------------------------------------------------------------
# copy all required files to work directory
rm -f addtime.x add_error.x 
cp $SIMROOT/bin/addtime.x addtime.x
cp $SIMROOT/bin/add_error.x add_error.x
cp $SIMROOT/etc/*err_table* .
cp $SIMROOT/etc/error.rc error.rc
cp $SIMROOT/etc/airs_bufr_tabl .


# set some constants
set sub6h=-06
set add6h=+06


# ----------------------------------------------------------------------
# start loop to dmget NR data files

# initialize datetime to first synoptic time - 6 hours

set yyyy=`echo $datetime1 | cut -c1-4`
set mm=`echo $datetime1   | cut -c5-6`

  echo 'starting date time:  yyyy,mm', $yyyy,$mm

# set input file names
# set equal to "none" means don't process

#set BF_path_MASS_="none"
#set BF_path_WIND_="none"
#set BF_path_AIRS_="none"
#set BF_path_HIRS2="none"
#set BF_path_HIRS3="none"
#set BF_path_AMSUA="none"
#set BF_path_AMSUB="none"
#...........................
set BF_path_MASS_="/output/ryang/OSSE2005/SIMOBSNOERR/Mass/Y$yyyy/M$mm"
set BF_path_WIND_="/output/ryang/OSSE2005/SIMOBSNOERR/Wind/Y$yyyy/M$mm"
set BF_path_AIRS_="/output/ryang/OSSE2005/SIMOBSNOERR/AIRSA/Y$yyyy/M$mm"
set BF_path_HIRS2="/output/ryang/OSSE2005/SIMOBSNOERR/HIRS2/Y$yyyy/M$mm"
set BF_path_HIRS3="/output/ryang/OSSE2005/SIMOBSNOERR/HIRS3/Y$yyyy/M$mm"
set BF_path_AMSUA="/output/ryang/OSSE2005/SIMOBSNOERR/AMSUA/Y$yyyy/M$mm"
set BF_path_AMSUB="/output/ryang/OSSE2005/SIMOBSNOERR/AMSUB/Y$yyyy/M$mm"

# set initial part (before datetime) of bufr input file names
# if name for corresponding input file is none, then not used
set BF_outp_MASS_="/output/ryang/OSSE2005/SIMOBSWHERR/Mass/Y$yyyy/M$mm"
set BF_outp_WIND_="/output/ryang/OSSE2005/SIMOBSWHERR/Wind/Y$yyyy/M$mm"
set BF_outp_AIRS_="/output/ryang/OSSE2005/SIMOBSWHERR/AIRSA/Y$yyyy/M$mm"
set BF_outp_HIRS2="/output/ryang/OSSE2005/SIMOBSWHERR/HIRS2/Y$yyyy/M$mm"
set BF_outp_HIRS3="/output/ryang/OSSE2005/SIMOBSWHERR/HIRS3/Y$yyyy/M$mm"
set BF_outp_AMSUA="/output/ryang/OSSE2005/SIMOBSWHERR/AMSUA/Y$yyyy/M$mm"
set BF_outp_AMSUB="/output/ryang/OSSE2005/SIMOBSWHERR/AMSUB/Y$yyyy/M$mm"

#.................................................
# make the directory for the output bufr files
#.................................................

mkdir -p ${BF_outp_MASS_} 
mkdir -p ${BF_outp_WIND_}
mkdir -p ${BF_outp_AIRS_}
mkdir -p ${BF_outp_HIRS2}
mkdir -p ${BF_outp_HIRS3}
mkdir -p ${BF_outp_AMSUA}
mkdir -p ${BF_outp_AMSUB}


# ----------------------------------------------------------------------
#                     dmget whole month data
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# Perform dmget for whole month
  echo "dmget the required data sets"

if ($BF_path_WIND_ != "none" ) then
  dmget ${BF_path_WIND_}
endif

if ($BF_path_MASS_ != "none" ) then
 dmget ${BF_path_MASS_}
endif

if ($BF_path_AIRS_ != "none" ) then
  dmget ${BF_path_AIRS_}
endif

if ($BF_path_HIRS2 != "none" ) then
  dmget ${BF_path_HIRS2}
endif

if ($BF_path_HIRS3 != "none" ) then
  dmget ${BF_path_HIRS3}
endif

if ($BF_path_AMSUA != "none" ) then
  dmget ${BF_path_AMSUA}
endif

if ($BF_path_AMSUB != "none" ) then
  dmget ${BF_path_AMSUB}
endif

echo "done dmget of BUFR files"

# ----------------------------------------------------------------------
#                       Begin excutions of error simulator
# ----------------------------------------------------------------------

# initialize timing variables for loop

  set result=`addtime.x $datetime1 $sub6h`
  set yyyy=`echo $result | cut -d" " -f1`
  set mm=`echo $result | cut -d" " -f2`
  set dd=`echo $result | cut -d" " -f3`
  set hh=`echo $result | cut -d" " -f4`
  set datetime="${yyyy}${mm}${dd}${hh}"

   echo 'processing data time', $datetime
# loop over synoptic times

  @ i = 1
  @ ilast =  $ntimes  
  while ( $i <= $ntimes ) 
  
# determine values for synoptic time to be processed

    set result=`addtime.x $datetime $add6h`
    set yyyy=`echo $result | cut -d" " -f1`
    set mm=`echo $result | cut -d" " -f2`
    set dd=`echo $result | cut -d" " -f3`
    set hh=`echo $result | cut -d" " -f4`
    set datetime="${yyyy}${mm}${dd}${hh}"
    set datetime_syn="${datetime}"
    @ yy = $yyyy % 10 
    set yy=`printf "%2.2d\n" $yy`

    echo "Top of loop for ${datetime}"
    echo 'add error for datetime =', $datetime

    set datatime="${yy}${mm}${dd}.t${hh}z"
#-------------------------------------
#  set the input bufr file and data tail


  set BF_WIND_TAIL=gdas1.${datatime}.prepbufr
  set BF_MASS_TAIL=gdas1.${datatime}.prepbufr
  echo 'BF_WIND_TAIL',$BF_WIND_TAIL
  echo 'BF_MASS_TAIL',$BF_MASS_TAIL

  set BF_AIRS_TAIL=airs.$yyyy$mm$dd.t${hh}z.bufr
  set BF_HIRS2TAIL=gdas1.${datatime}.1bhrs2.tm00.bufr_d
  set BF_HIRS3TAIL=gdas1.${datatime}.1bhrs3.tm00.bufr_d
  set BF_AMSUATAIL=gdas1.${datatime}.1bamua.tm00.bufr_d
  set BF_AMSUBTAIL=gdas1.${datatime}.1bamub.tm00.bufr_d

# Add errors to wind observations
    if ($BF_path_WIND_ != "none") then
    rm -f file_in_bfr file_in_bfr.blk data_out.bfr
    set filename="${BF_path_WIND_}/${BF_WIND_TAIL}"
    ln -s $filename file_in_bfr
    /home/meta/bin/Linux/block  file_in_bfr file_in_bfr.blk
    add_error.x WIND_ error.rc $datetime file_in_bfr.blk data_out.bfr 
    set filename="${BF_outp_WIND_}/${BF_WIND_TAIL}"
    cp data_out.bfr $filename
    rm -f data_out.bfr
  endif

# Add errors to mass observations
  if ($BF_path_MASS_ != "none") then
    rm -f file_in_bfr file_in_bfr.blk data_out.bfr
    set filename="${BF_path_MASS_}/${BF_MASS_TAIL}"
    ln -s $filename file_in_bfr
    /home/meta/bin/Linux/block  file_in_bfr file_in_bfr.blk
    add_error.x MASS_ error.rc $datetime file_in_bfr.blk data_out.bfr 
    set filename="${BF_outp_MASS_}/${BF_MASS_TAIL}"
    cp data_out.bfr $filename
    rm -f data_out.bfr
  endif

# Add errors to airs observations (includes amsu-a on AQUA platform)
  if ($BF_path_AIRS_ != "none") then
    rm -f file_in_bfr file_in_bfr.blk data_out.bfr
    set filename="${BF_path_AIRS_}/${BF_AIRS_TAIL}"
    ln -s $filename file_in_bfr
    /home/meta/bin/Linux/block  file_in_bfr file_in_bfr.blk
    add_error.x AIRS_ error.rc $datetime file_in_bfr.blk data_out.bfr 
    set filename="${BF_outp_AIRS_}/${BF_AIRS_TAIL}"
    cp data_out.bfr $filename
    rm -f data_out.bfr
  endif

# Add errors to hirs2 observations
  if ($BF_path_HIRS2 != "none") then
    rm -f file_in_bfr file_in_bfr.blk data_out.bfr
    set filename="${BF_path_HIRS2}/${BF_HIRS2TAIL}"
    ln -s $filename file_in_bfr
    /home/meta/bin/Linux/block  file_in_bfr file_in_bfr.blk
    add_error.x HIRS2 error.rc $datetime file_in_bfr.blk data_out.bfr 
    set filename="${BF_outp_HIRS2}/${BF_HIRS2TAIL}"
    cp data_out.bfr $filename
    rm -f data_out.bfr
  endif

# Add errors to hirs3 observations
  if ($BF_path_HIRS3 != "none") then
    rm -f file_in_bfr file_in_bfr.blk data_out.bfr
    set filename="${BF_path_HIRS3}/${BF_HIRS3TAIL}"
    ln -s $filename file_in_bfr
    /home/meta/bin/Linux/block  file_in_bfr file_in_bfr.blk
    add_error.x HIRS3 error.rc $datetime file_in_bfr.blk data_out.bfr 
    set filename="${BF_outp_HIRS3}/${BF_HIRS3TAIL}"
    cp data_out.bfr $filename
    rm -f data_out.bfr
  endif

# Add errors to NOAA amsu-a observations
  if ($BF_path_AMSUA != "none") then
    rm -f file_in_bfr file_in_bfr.blk data_out.bfr
    set filename="${BF_path_AMSUA}/${BF_AMSUATAIL}"
    ln -s $filename file_in_bfr
    /home/meta/bin/Linux/block  file_in_bfr file_in_bfr.blk
    add_error.x AMSUA error.rc $datetime file_in_bfr.blk data_out.bfr 
    set filename="${BF_outp_AMSUA}/${BF_AMSUATAIL}"
    cp data_out.bfr $filename
    rm -f data_out.bfr
  endif

# Add errors to NOAA amsu-b observations
  if ($BF_path_AMSUB != "none") then
    rm -f file_in_bfr file_in_bfr.blk data_out.bfr
    set filename="${BF_path_AMSUB}/${BF_AMSUBTAIL}"
    ln -s $filename file_in_bfr
    /home/meta/bin/Linux/block  file_in_bfr file_in_bfr.blk
    add_error.x AMSUB error.rc $datetime file_in_bfr.blk data_out.bfr 
    set filename="${BF_outp_AMSUB}/${BF_AMSUBTAIL}"
    cp data_out.bfr $filename
    rm -f data_out.bfr
  endif

@ i++
end

date
echo "end script"



