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