; ; NAME: cs_tseries ; ; PURPOSE: To compute time series of TB means, std dev, and # observations for ; specified latitude band using CS grid files and compare version 1 and ; version 2 time series. ; ; INPUTS: ; satnum string satellite number ; ichn int channel number ; slat float southern latitude boundary ; nlat float northern latitude boundary ; ttype string Time type (M-monthly, P-pentad, D-daily) ; btim int Begin time ; etim int end time ; byr int 2-digit begin year ; eyr int 2-digit end year ; ; INPUT KEYWORDS ; ; /ps -> Creates postscript output ; /eps -> Creates encapsulated postscript ; ; OUTPUTS: ; 3 panel image or postscript file of time series ; ; RESTRICTIONS: ; Assumes grid files are 1.0 resolution ; Assumes all grid stat files exist (MN,SD,CT) ; Can not cross over millineum boundary ; No weighting of grid boxes according to grid area size ; HISTORY: ; Darren Jackson ETL/CIRES March 2002 ;------------------------------------------------------------------------------- ; PRO cs_tseries, satnum, ichn, slat, nlat, ttype, btim, etim, byr, eyr, ps=ps, eps=eps ; ; Define final time value for grid type ; CASE ttype OF 'M' : etim3 = 12 'P' : etim3 = 73 'D' : etim3 = 365 ENDCASE ; ; Define size of x axis arrays ; time_label=strarr(60) xtickv=intarr(60) ; ; Define width of x ticks ; IF(eyr - byr lt 3) THEN BEGIN tickint = 3 ENDIF ELSE BEGIN tickint = 6 ENDELSE ; ; Define size of output array ; ts1=fltarr(2000,3) ts2=fltarr(2000,3) ; ; Define latitude band ; stat = ['MN','SD','CT'] lat1 = -69.5+FINDGEN(140) bl1=WHERE(lat1 ge slat and lat1 le nlat,blcnt1) lat2 = -89.5+FINDGEN(180) bl2=WHERE(lat2 ge slat and lat2 le nlat,blcnt2) ; ; Loop each year ; i=0l j=0l FOR iyr=byr,eyr DO BEGIN cyr = strtrim(string(iyr),2) IF(iyr eq byr) THEN BEGIN btim2 = btim etim2 = etim3 ENDIF IF(iyr eq eyr) THEN BEGIN btim2 = 1 etim2 = etim ENDIF IF(iyr ne byr and iyr ne eyr) THEN BEGIN btim2 = 1 etim2 = etim3 ENDIF ; ; Loop on each time element ; FOR itim=btim2,etim2 DO BEGIN ttype3 = ttype+strtrim(string(itim,format='(i2.2)'),2) ; ; Loop each grid file statistics ; FOR istat = 0,2 DO BEGIN ; ; Read grid file ; grid2 = read_grid_cs(satnum,cyr,ttype3,stat(istat),1.0,dpath='/data/dlj/tovs1b/pathfinder/hirs_grid/month/') grid = grid2(*,bl1(0):bl1(blcnt1-1),ichn-1) b = WHERE(grid ne -99.,bcnt) tmp = REFORM(grid(b),bcnt) IF(istat lt 2) THEN ts1(i,istat) = MEAN(tmp) ELSE ts1(i,istat) = TOTAL(tmp) grid2 = read_grid_cs(satnum,cyr,ttype3,stat(istat),1.0,/ver2) grid = grid2(*,bl2(0):bl2(blcnt2-1),ichn-1) b = WHERE(grid ne -99.,bcnt) tmp = REFORM(grid(b),bcnt) IF(istat lt 2) THEN ts2(i,istat) = MEAN(tmp) ELSE ts2(i,istat) = TOTAL(tmp) ENDFOR ; Construct time labels IF( (i mod tickint) eq 0 ) THEN BEGIN mtmp = (btim + i) MOD 12 IF(mtmp eq 0) THEN mtmp = 12 time_label(j) = STRTRIM(STRING(mtmp),2) + '/' + STRTRIM(STRING(iyr,format='(i2.2)'),2) xtickv(j) = i j = j + 1 ENDIF i = i + 1 ENDFOR ENDFOR ; Plot time series ;!p.multi=[0,1,3] !p.multi=[0,1,1] cchn=strtrim(string(ichn),2) latbnd = strtrim(string(lat1(bl1(0))),2)+':'+strtrim(string(lat1(bl1(blcnt1-1))),2) y1 = MIN ( ts1(0:i-1,0) ) y2 = MIN ( ts2(0:i-1,0) ) IF(y1 lt y2) THEN ymin1=y1 ELSE ymin1=y2 y1 = MAX ( ts1(0:i-1,0) ) y2 = MAX ( ts2(0:i-1,0) ) IF(y1 gt y2) THEN ymax1=y1 ELSE ymax1=y2 y1 = MIN ( ts1(0:i-1,1) ) y2 = MIN ( ts2(0:i-1,1) ) IF(y1 lt y2) THEN ymin2=y1 ELSE ymin2=y2 y1 = MAX ( ts1(0:i-1,1) ) y2 = MAX ( ts2(0:i-1,1) ) IF(y1 gt y2) THEN ymax2=y1 ELSE ymax2=y2 y1 = MIN ( ts1(0:i-1,2) ) y2 = MIN ( ts2(0:i-1,2) ) IF(y1 lt y2) THEN ymin3=y1 ELSE ymin3=y2 y1 = MAX ( ts1(0:i-1,2) ) y2 = MAX ( ts2(0:i-1,2) ) IF(y1 gt y2) THEN ymax3=y1 ELSE ymax3=y2 IF(KEYWORD_SET(ps) or KEYWORD_SET(eps)) THEN BEGIN !p.font=0 !p.thick=2 !x.thick=2 !y.thick=2 SET_PLOT,'ps' IF(KEYWORD_SET(eps)) THEN BEGIN DEVICE,xoffset=1,yoffset=1,xsize=6,ysize=3,/inch,/encapsulated,/times,font_size=14,filename='idl.eps',/color LOAD_CTBL,'/home/climsat/idl/color_tables/precip3.tbl',256 ENDIF ELSE BEGIN DEVICE,xoffset=1,yoffset=1,xsize=6,ysize=8,/inch ENDELSE ; ; Special case for AMS 2003 ; ; title = 'NOAA-'+satnum+' HIRS channel '+cchn+' 30N-30S' ; plot,ts1(0:i-1,0),line=0,xrange=[0,i-1],yrange=[ymin1,ymax1],ytitle='TB (K)', $ ; xticks=j-1,xtickname=time_label(0:j-1),xtickv=xtickv(0:j-1),/xstyle, $ ; title=title,charsize=0.9,/nodata ; oplot,ts1(0:i-1,0),line=0,color=5 ; oplot,ts2(0:i-1,0),line=0,color=10 title = 'NOAA-'+satnum+' HIRS channel '+cchn+' 30N-30S STD' plot,ts1(0:i-1,1),line=0,xrange=[0,i-1],yrange=[ymin2,ymax2],ytitle='TB (K)', $ xticks=j-1,xtickname=time_label(0:j-1),xtickv=xtickv(0:j-1),/xstyle, $ title=title,charsize=0.9,/nodata oplot,ts1(0:i-1,1),line=0,color=5 oplot,ts2(0:i-1,1),line=0,color=10 ; title='NOAA-'+satnum+' CHN = '+cchn+' LatBnd = '+latbnd+' Mean' ; plot,ts1(0:i-1,0),line=0,xrange=[0,i-1],yrange=[ymin1,ymax1],ytitle='TB (K)', $ ; xticks=j-1,xtickname=time_label(0:j-1),xtickv=xtickv(0:j-1),/xstyle, $ ; title=title,charsize=1.5,/nodata ; oplot,ts1(0:i-1,0),line=0,color=5 ; oplot,ts2(0:i-1,0),line=0,color=10 ; title='NOAA-'+satnum+' CHN = '+cchn+' LatBnd = '+latbnd+' STD' ; plot,ts1(0:i-1,1),line=0,xrange=[0,i-1],yrange=[ymin2,ymax2],ytitle='TB (K)', $ ; xticks=j-1,xtickname=time_label(0:j-1),xtickv=xtickv(0:j-1),/xstyle, $ ; title=title,charsize=1.5,/nodata,color=0 ; oplot,ts1(0:i-1,1),line=0,color=5 ; oplot,ts2(0:i-1,1),line=0,color=10 ; title='NOAA-'+satnum+' CHN = '+cchn+' LatBnd = '+latbnd+' Total # Obs.' ; plot,ts1(0:i-1,2),line=0,xrange=[0,i-1],yrange=[ymin3,ymax3],ytitle='# OBS', $ ; xticks=j-1,xtickname=time_label(0:j-1),xtickv=xtickv(0:j-1),/xstyle, $ ; title=title,charsize=1.5,/nodata,color=0 ; oplot,ts1(0:i-1,2),line=0,color=5 ; oplot,ts2(0:i-1,2),line=0,color=10 lpos = [.3,.65,.7,.95] lline = [0,0] llabel = ['Version 1','Version 2'] ccolor=[5,10] LEGEND,llabel,pos=lpos,linestyle=lline,color=ccolor DEVICE,/close ENDIF ELSE BEGIN title='NOAA-'+satnum+' CHN = '+cchn+' LatBnd = '+latbnd+' Average Mean' plot,ts1(0:i-1,0),line=1,yrange=[ymin1,ymax1],ytitle='TB (K)', $ title=title oplot,ts2(0:i-1,0),line=0 title='NOAA-'+satnum+' CHN = '+cchn+' LatBnd = '+latbnd+' Average STD' plot,ts1(0:i-1,1),line=1,yrange=[ymin2,ymax2],ytitle='TB (K)', $ title=title oplot,ts2(0:i-1,1),line=0 title='NOAA-'+satnum+' CHN = '+cchn+' LatBnd = '+latbnd+' Total # Observations' plot,ts1(0:i-1,2),line=1,yrange=[ymin3,ymax3],ytitle='# OBS', $ title=title oplot,ts2(0:i-1,2),line=0 ENDELSE END