#!/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 # --------