#!/bin/csh -fx
# ------------------------------
#PBS -W group_list=g0613
#
#PBS -N ssatT
#PBS -l ncpus=4          
#PBS -l walltime=12:00:00 
#PBS -S /bin/csh
#PBS -j eo
#BSUB -J simcov
#BSUB -n 4
#BSUB -W 4:00
#BSUB -o simsat.%J
#BSUB -e simsat.%J
# ------------------------------
#
# driver script for simulating OSSE satellite data
#
#   Apr-15-2008 : Modify RE's sim_conv.j to simulate OSSE satellite data
#                         Need to work on a flexible script later....
#-------------------------------------
# Experiment environment
# ----------------------

  setenv SIMHOME  /cxfsm/nobackup11/ryang/OSSE2/OSSE2/Simtest
# not necessary to add SIMROOT--except copy files
  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
# Make sure files are acessible
# -----------------------------
  umask 022

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

  cd $SIMWORK


#set bufr data path: use same data sets of hirs2/3, airs,amsua,amsub used by YZ for obs. sensitivity study
# Their periods are: July 2005 and Jan. 2006
# REMARK: all these data need to be unblocked first when start to use them
# Full data path: see the SIMROOT obs.acq.latest




#-------------------------------------------
# copy the excutable files and other required files to the work directory
rm -f addtime.x sim_rad.x ossegrid.txt
#
cp $SIMROOT/bin/addtime.x .
cp $SIMROOT/bin/sim_rad.x sim_rad.x
cp $SIMROOT/etc/ossegrid.txt ossegrid.txt
cp $SIMROOT/etc/cloud.rc .
cp $SIMROOT/etc/airs_bufr_table .
cp $SIMROOT/etc/*Big_Endian .
echo "table file"
/bin/ls airs_bufr_table

# set NR data path:
set NR_path_data="/output/ryang/NATURE2005"

#  NOTE:: do not change datetime1 before the loop and within the first loop
#. NOTE:  limitation: for now this job is only for the data within a whole month

set datetime1="2006010418"   # set initial symoptic datetime.
@ ntimes = 12                 # set number of synoptic times to process

# set some constants
set add3h=+03
set add6h=+06
set sub3h=-03
set sub6h=-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`
set dd=`echo $datetime1   | cut -c7-8`
set hh=`echo $datetime1   | cut -c9-10`
 @ yy = $yyyy % 10
  set yy=`printf "%2.2d\n" $yy`
  set datatime="${yy}${mm}${dd}.t${hh}z"

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

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

set BF_outp_AIRS_="/output/ryang/OSSE2005/SIMOBSNOERR/AIRSA/Y$yyyy/M$mm"
set BF_outp_HIRS2="/output/ryang/OSSE2005/SIMOBSNOERR/HIRS2/Y$yyyy/M$mm"
set BF_outp_HIRS3="/output/ryang/OSSE2005/SIMOBSNOERR/HIRS3/Y$yyyy/M$mm"
set BF_outp_AMSUA="/output/ryang/OSSE2005/SIMOBSNOERR/AMSUA/Y$yyyy/M$mm"
set BF_outp_AMSUB="/output/ryang/OSSE2005/SIMOBSNOERR/AMSUB/Y$yyyy/M$mm"
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}

# test with AMSUB only
#set up the path name
#set BF_path_AIRS_="none"
#set BF_path_HIRS2="none"
#set BF_path_HIRS3="none"
#set BF_path_AMSUA="none"

set BF_path_AIRS_="/input/dao_ops/obs/merra/airs/bufr/Y$yyyy/M$mm"
set BF_path_HIRS2="/input/dao_ops/ops/flk/ncep_g5obs/bufr/HIRS2/Y$yyyy/M$mm" 
set BF_path_HIRS3="/input/dao_ops/ops/flk/ncep_g5obs/bufr/HIRS3/Y$yyyy/M$mm"
set BF_path_AMSUA="/input/dao_ops/ops/flk/ncep_g5obs/bufr/AMSUA/Y$yyyy/M$mm"
set BF_path_AMSUB="/input/dao_ops/ops/flk/ncep_g5obs/bufr/AMSUB/Y$yyyy/M$mm"

#........................................
# get all bin data
#........................................
  echo "dmget of NR files"

    dmget ${NR_path_data}/Y${yyyy}/M${mm}/*bin

  echo `ls *bin`
# --------------------------------------------------
# dmget input BUFR data files
# simple case: all data are within one month
# --------------------------------------------------


  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 "dmget BUFR files for an entire month"


# ----------------------------------------------------------------------
# produce file names for first synoptic time - 3 hours 
echo "produce file names for first synoptic time - 3 hours"

set result=`addtime.x $datetime1 $sub3h`
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 "datetime=" $datetime

  set file_pres="${NR_path_data}/Y${yyyy}/M${mm}/pres_${datetime}z.bin"
  set file_surf="${NR_path_data}/Y${yyyy}/M${mm}/surf_${datetime}z.bin"
  set file_udat="${NR_path_data}/Y${yyyy}/M${mm}/udat_${datetime}z.bin"
  set file_vdat="${NR_path_data}/Y${yyyy}/M${mm}/vdat_${datetime}z.bin"
  set file_tdat="${NR_path_data}/Y${yyyy}/M${mm}/tdat_${datetime}z.bin"
  set file_qdat="${NR_path_data}/Y${yyyy}/M${mm}/qdat_${datetime}z.bin"
  set file_odat="${NR_path_data}/Y${yyyy}/M${mm}/odat_${datetime}z.bin"

# x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 
# loop over synoptic times

@ i = 1
@ ilast =  $ntimes  
while ( $i <= $ntimes ) 
  
# x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 
# link to required NR .bin files for current synoptic time and 3 hours earlier

  set result=`addtime.x $datetime $add3h`
  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}"
  @ yy = $yyyy % 10 
  set yy=`printf "%2.2d\n" $yy`

  echo " "
  echo "Top of loop for ${datetime}"

# assign NR01,NR_02 for all SEVEN(CHECK)7 NR data sets 
  /bin/rm -f pres_NR_01
  /bin/rm -f pres_NR_02
  ln -s $file_pres pres_NR_01
  set filename="${NR_path_data}/Y${yyyy}/M${mm}/pres_${datetime}z.bin"
  ln -s $filename pres_NR_02
   echo 'pres_NR_02'

  rm -f surf_NR_01
  rm -f surf_NR_02
  ln -s $file_surf surf_NR_01
  set filename="${NR_path_data}/Y${yyyy}/M${mm}/surf_${datetime}z.bin"
  ln -s $filename surf_NR_02
   echo 'filename= surf_NR_02', $filename

  rm -f udat_NR_01
  rm -f udat_NR_02
  rm -f vdat_NR_01
  rm -f vdat_NR_02
  ln -s $file_udat udat_NR_01
  ln -s $file_vdat vdat_NR_01
  set filename="${NR_path_data}/Y${yyyy}/M${mm}/udat_${datetime}z.bin"
  ln -s $filename udat_NR_02
  set filename="${NR_path_data}/Y${yyyy}/M${mm}/vdat_${datetime}z.bin"
  ln -s $filename vdat_NR_02
  rm -f tdat_NR_01
  rm -f tdat_NR_02
  rm -f qdat_NR_01
  rm -f qdat_NR_02
  ln -s $file_tdat tdat_NR_01
  ln -s $file_qdat qdat_NR_01
  set filename="${NR_path_data}/Y${yyyy}/M${mm}/tdat_${datetime}z.bin"
  ln -s $filename tdat_NR_02
  set filename="${NR_path_data}/Y${yyyy}/M${mm}/qdat_${datetime}z.bin"
  ln -s $filename qdat_NR_02
  rm -f odat_NR_01
  rm -f odat_NR_02
  ln -s $file_odat odat_NR_01
  set filename="${NR_path_data}/Y${yyyy}/M${mm}/odat_${datetime}z.bin"
  ln -s $filename odat_NR_02

  echo "after set all file name NR02"
# x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
# produce file names for first synoptic time + 3 hours
# these will beome names for next synoptic time - 3 hours
# link to required NR binary files for current synoptic time + 3 hours

  set result=`addtime.x $datetime $add3h`
  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 'datetime=', $datetime

  rm -f pres_NR_03
  set file_pres="${NR_path_data}/Y${yyyy}/M${mm}/pres_${datetime}z.bin"
  ln -s $file_pres pres_NR_03

  rm -f surf_NR_03
  set file_surf="${NR_path_data}/Y${yyyy}/M${mm}/surf_${datetime}z.bin"
  ln -s $file_surf surf_NR_03

  rm -f udat_NR_03
  rm -f vdat_NR_03
  set file_udat="${NR_path_data}/Y${yyyy}/M${mm}/udat_${datetime}z.bin"
  ln -s $file_udat udat_NR_03
  set file_vdat="${NR_path_data}/Y${yyyy}/M${mm}/vdat_${datetime}z.bin"
  ln -s $file_vdat vdat_NR_03

  rm -f tdat_NR_03
  rm -f qdat_NR_03
  set file_tdat="${NR_path_data}/Y${yyyy}/M${mm}/tdat_${datetime}z.bin"
  ln -s $file_tdat tdat_NR_03
  set file_qdat="${NR_path_data}/Y${yyyy}/M${mm}/qdat_${datetime}z.bin"
  ln -s $file_qdat qdat_NR_03

  rm -f odat_NR_03
  set file_odat="${NR_path_data}/Y${yyyy}/M${mm}/odat_${datetime}z.bin"
  ln -s $file_odat odat_NR_03
#

# x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
# run interpolation program to create simulated observations
# first compute time info for synoptic time from time + 3 hours
  set result=`addtime.x $datetime $sub3h`
  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 datetime2="${yyyy}${mm}${dd}${hh}"
  @ yy = $yyyy % 10
  set yy=`printf "%2.2d\n" $yy`
  set datatime="${yy}${mm}${dd}.t${hh}z"
#-------------------------------------
#  set the input bufr file and data 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


echo 'BF_path_AIRS_=',${BF_path_AIRS_}
echo 'BF_path_HIRS2=',${BF_path_HIRS2}
echo 'BF_path_HIRS3=',${BF_path_HIRS3}
echo 'BF_path_AMSUA=',${BF_path_AMSUA}
echo 'BF_path_AMSUB=',${BF_path_AMSUB}

# Simulate radiance data to Aqua_AIRS and Aqua_AMSUA observation locationss
  if ($BF_path_AIRS_ != "none" ) then
    /bin/rm -f file_in_bfr file_in_brf.blk data_out.bfr
    /bin/rm -f data_out*temp
    ln -s  ${BF_path_AIRS_}/${BF_AIRS_TAIL} file_in_bfr
    $BUFRBIN/block  file_in_bfr file_in_bfr.blk
     sim_rad.x AIRS_ $datetime2 cloud.rc file_in_bfr.blk data_out.bfr
     /bin/cp data_out.bfr ${BF_outp_AIRS_}/${BF_AIRS_TAIL}
      /bin/ls -l ${BF_outp_AIRS_}
     /bin/rm -f data_out_bfr data_out_*temp
     /bin/rm -f file_in_bfr.blk
     /bin/rm -f file_in_bfr
  endif


# Simulate radiance data to TOVS_hirs2 observation locations
  if ($BF_path_HIRS2 != "none") then
    /bin/rm -f file_in_bfr file_in_bfr.blk data_out.bfr
    ln -s ${BF_path_HIRS2}/${BF_HIRS2TAIL} file_in_bfr
    $BUFRBIN/block  file_in_bfr file_in_bfr.blk
    sim_rad.x HIRS2 $datetime2 cloud.rc file_in_bfr.blk data_out.bfr
    /bin/cp data_out.bfr ${BF_outp_HIRS2}/${BF_HIRS2TAIL}
    /bin/rm -f data_out.bfr file_in_bfr file_in_bfr.blk
  endif

# Simulate radiance data to TOVS_hirs3 observation locations
  if ($BF_path_HIRS3 != "none") then
    /bin/rm -f file_in_bfr file_in_bfr.blk data_out.bfr
    ln -s ${BF_path_HIRS3}/${BF_HIRS3TAIL} file_in_bfr
    $BUFRBIN/block  file_in_bfr file_in_bfr.blk
    sim_rad.x HIRS3 $datetime2 cloud.rc file_in_bfr.blk data_out.bfr     
    /bin/cp data_out.bfr ${BF_outp_HIRS3}/${BF_HIRS3TAIL}
    /bin/rm -f data_out.bfr file_in_bfr file_in_bfr.blk
  endif

# Simulate radiance data to AMSUA observation locations
  if ($BF_path_AMSUA != "none") then
    /bin/rm -f file_in_bfr file_in_bfr.blk data_out.bfr
    ln -s ${BF_path_AMSUA}/${BF_AMSUATAIL} file_in_bfr
    $BUFRBIN/block  file_in_bfr file_in_bfr.blk
    sim_rad.x AMSUA $datetime2 cloud.rc file_in_bfr.blk data_out.bfr     
    /bin/cp data_out.bfr ${BF_outp_AMSUA}/${BF_AMSUATAIL}
    /bin/rm -f data_out.bfr file_in_bfr file_in_bfr.blk
  endif

# Simulate radiance data to AMSUB observation locations
  if ($BF_path_AMSUB != "none") then
    /bin/rm -f file_in_bfr file_in_bfr.blk data_out.bfr
    ln -s ${BF_path_AMSUB}/${BF_AMSUBTAIL} file_in_bfr
    $BUFRBIN/block  file_in_bfr file_in_bfr.blk
   echo ` $BUFRBIN/scanbuf.x file_in_bfr.blk` 
    sim_rad.x AMSUB $datetime2 cloud.rc file_in_bfr.blk data_out.bfr     
    /bin/cp data_out.bfr ${BF_outp_AMSUB}/${BF_AMSUBTAIL}
    /bin/rm -f data_out.bfr file_in_bfr file_in_bfr.blk
  endif


@ i++
end


# All done
# clean thework directory LATERlater
  /bin/rm -rf *
echo "end script"
# --------
  exit 0
# --------
