;----------------------------------------------------------------------- pro printframe,f,name print,' ' print,'------- PRINT FRAME ',name,' ------' print,'file=',f.filename,' frame=',f.iframe print,'xlab=',f.xlab,' ny=',f.ny print,'zz=' print,format="(6e12.4)",*f.zz end ;----------------------------------------------------------------------- pro pltxy,frame,ps=ps ; title = frame.toplab+' '+frame.infolab plot,*frame.zz,*frame.yy,title=title,ystyle=1,$ xrange=[min(*frame.xx),max(*frame.xx)],$ xtitle=frame.xlab,ytitle=frame.ylab,$ linestyle=frame.linestyle ; pngfile = frame.xlab+'_'+strtrim(frame.fileprefix)+'.png' print,'Frame ',frame.iframe,' datfile=',frame.filename,' pngfile=',pngfile ; ; print,'reading display..' ; image = tvrd() ; this take a long time over the net ; print,'writing png file ',pngfile ; write_png,pngfile,image ; end ; pltascii ;----------------------------------------------------------------------- pro rdascii,file,frames,nframes,ps=ps,png=png ; on_ioerror,ioerror print,' ' print,'Opening file ',file openr,lu,file,/get_lun ; hdr = strarr(4) line = '' line = string(line,format="(a80)") ; ;print,'frames[0].iframe=',frames[0].iframe frame = frames[frames[0].iframe] ; ; Assume <= 100 frames on the file: ; for iframe=frame.iframe+1,frame.iframe+100 do begin ;for iframe=1,100 do begin ;for iframe=1,2 do begin ;next_frame: nx=1 & ny=1 ; ; Read and print 4-line header: ; print,' ' for i=0,3 do begin readf,lu,line hdr(i) = strtrim(line,2) ; print,hdr(i) endfor print,hdr(0) ; ; nx, xx: ; xlab = '' readf,lu,line ; nx= 1 xx TN nx = 0 reads,line,nx,xlab,format="(3x,i4,5x,a)" xx = fltarr(nx) ; print,'nx=',nx,' xlab=',xlab if nx gt 1 then begin readf,lu,xx ; print,format="('xx=',/,(8f8.2))",xx endif ; ; ny, yy: ; ylab = '' readf,lu,line ny = 0 reads,line,ny,ylab,format="(3x,i4,5x,a)" yy = fltarr(ny) ; print,'ny=',ny,' ylab=',ylab if ny gt 1 then begin readf,lu,yy ; print,format="('yy=',/,(8f8.2))",yy endif ; ; Now the data: ; zz = fltarr(nx,ny) readf,lu,zz ; print,format="('zz=',/,(6e12.4))",zz ; frame.hdr=hdr frame.nx=nx *frame.xx=xx frame.xlab=strtrim(xlab) frame.ny=ny *frame.yy=yy frame.ylab=strtrim(ylab) *frame.zz=zz frame.toplab=hdr(0) frame.infolab=hdr(1) frame.botlab=hdr(2) frame.iframe=iframe ; for i=0,ny-1 do begin frame.zzz[i,iframe-1] = zz[i] endfor ; ; Plot: ; if (not keyword_set(ps)) then cursor,xcurs,ycurs,1 ; pltxy,frame ; ; Increment number of frames per file: nframes = nframes+1 ; ;goto,next_frame ; ; Update frames[i] from local frame: ; print,'rdascii: file=',file,' iframe=',frame.iframe,' zz min,max=',$ min(*frame.zz),max(*frame.zz) frames[frame.iframe-1] = frame endfor ; iframe loop print,' ' print,'Done.' free_lun,lu return ; ioerror: print,'Error reading ',file free_lun,lu end ; pro rdascii ;----------------------------------------------------------------------- pro mkframes,aframes,bframes,nframes,ps=ps ; for i=0,nframes-1 do begin ; for i=0,0 do begin za = fltarr(aframes[i].ny) for ii=0,aframes[i].ny-1 do begin za[ii] = aframes[i].zzz[ii,i] endfor zb = fltarr(bframes[i].ny) for ii=0,bframes[i].ny-1 do begin zb[ii] = bframes[i].zzz[ii,i] endfor ; print,' ' ; print,'mkframes: i=',i print,format=$ "('aframes: i=',i3,' file=',a,' xlab=',a,' za min,max=',2e12.4)",$ i,aframes[i].filename,aframes[i].xlab,min(za),max(za) print,format=$ "('bframes: i=',i3,' file=',a,' xlab=',a,' zb min,max=',2e12.4)",$ i,bframes[i].filename,bframes[i].xlab,min(zb),max(zb) ; title = aframes[i].toplab+' '+aframes[i].infolab fmin = min([min(za),min(zb)]) fmax = max([max(za),max(zb)]) position = [.15,.15,.85,.85] plot,za,*aframes[i].yy,ystyle=1,position=position,/norm,$ xtitle=aframes[i].xlab,ytitle=aframes[i].ylab,$ xrange=[fmin,fmax],xcharsize=1.5,ycharsize=1.5,$ linestyle=aframes[i].linestyle oplot,zb,*bframes[i].yy,linestyle=bframes[i].linestyle ; if (not keyword_set(ps)) then cursor,xcurs,ycurs,1 ; ; Make png file (this appears to work only from laptop hummingbird display -- ; does not work from vishnu display (from vishnu, the png file is blank). ; In both cases (vishnu or laptop), idl is run on the Linux system callisto. ; Also note that the tvrd takes much longer over the net (i.e., from home) ; if (not keyword_set(ps)) then begin ; cannot do tvrd from ps device print,'reading display..' ; image = tvrd() ; this take a long time over the net ; pngfile = aframes[i].xlab+'.png' ; print,'writing png file ',pngfile ; write_png,pngfile,image endif endfor ; for i=0,nframes-1 do begin ; ; Make plot with o2,o,n2: ; for i=0,nframes-1 do begin io2=0 & io1=0 & in2=0 case strtrim(aframes[i].xlab) of 'O2': begin io2 = i print,'mkframes: found O2: io2=',io2 o2a = fltarr(aframes[i].ny) for ii=0,aframes[i].ny-1 do o2a[ii] = aframes[i].zzz[ii,i] o2b = fltarr(bframes[i].ny) for ii=0,bframes[i].ny-1 do o2b[ii] = bframes[i].zzz[ii,i] end 'O1': begin io1 = i print,'mkframes: found O1: io1=',io1 o1a = fltarr(aframes[i].ny) for ii=0,aframes[i].ny-1 do o1a[ii] = aframes[i].zzz[ii,i] o1b = fltarr(bframes[i].ny) for ii=0,bframes[i].ny-1 do o1b[ii] = bframes[i].zzz[ii,i] end 'N2': begin in2 = i print,'mkframes: found N2: in2=',in2 n2a = fltarr(aframes[i].ny) for ii=0,aframes[i].ny-1 do n2a[ii] = aframes[i].zzz[ii,i] n2b = fltarr(bframes[i].ny) for ii=0,bframes[i].ny-1 do n2b[ii] = bframes[i].zzz[ii,i] end else: endcase endfor ; find o2,o,n2 ; xtitle = 'O2, O, N2' fmin = min([min(o2a),min(o2b),min(o1a),min(o1b),min(n2a),min(n2b)]) fmax = max([max(o2a),max(o2b),max(o1a),max(o1b),max(n2a),max(n2b)]) position = [.15,.15,.85,.85] min_o2a = min(o2a) & max_o2a = max(o2a) min_o2b = min(o2b) & max_o2b = max(o2b) min_o1a = min(o1a) & max_o1a = max(o1a) min_o1b = min(o1b) & max_o1b = max(o1b) min_n2a = min(n2a) & max_n2a = max(n2a) min_n2b = min(n2b) & max_n2b = max(n2b) print,'min,max o2a=',min_o2a,', ',max_o2a print,'min,max o2b=',min_o2b,', ',max_o2b print,'min,max o1a=',min_o1a,', ',max_o1a print,'min,max o1b=',min_o1b,', ',max_o1b print,'min,max n2a=',min_n2a,', ',max_n2a print,'min,max n2b=',min_n2b,', ',max_n2b ; ; O2 (gc-nc, hc-nc): plot,o2a,*aframes[io2].yy,ystyle=1,position=position,/norm,$ xtitle=xtitle,ytitle=aframes[io2].ylab,$ xrange=[fmin,fmax],xcharsize=1.5,ycharsize=1.5,$ linestyle=aframes[io2].linestyle oplot,o2b,*bframes[io2].yy,linestyle=bframes[io2].linestyle ; ; O1 (gc-nc, hc-nc): oplot,o1a,*aframes[io1].yy,linestyle=aframes[io1].linestyle oplot,o1b,*bframes[io1].yy,linestyle=bframes[io1].linestyle ; ; N2 (gc-nc, hc-nc): oplot,n2a,*aframes[in2].yy,linestyle=aframes[in2].linestyle oplot,n2b,*bframes[in2].yy,linestyle=bframes[in2].linestyle if (not keyword_set(ps)) then begin ; cannot do tvrd from ps device print,'reading display..' image = tvrd() ; this take a long time over the net pngfile = 'O2-O-N2'+'.png' print,'writing png file ',pngfile write_png,pngfile,image endif end ; pro mkframes ;----------------------------------------------------------------------- pro pltascii,ps=ps ; if (keyword_set(ps)) then begin set_plot,'ps' ; device,filename='pltascii.ps',/preview,/encapsulated device,filename='pltascii.ps' endif else begin set_plot,'X' window,retain=2 wset endelse ; ; Make gc-nc plots: ; file = 'tgcmproc.gc-nc.dat' prefix = 'gc-nc' ; frame = { $ filename:file, $ fileprefix:prefix, $ iframe:0, $ hdr:strarr(4), $ nx:0, $ xx:ptr_new(/allocate_heap), $ xlab:' ', $ ny:0, $ yy:ptr_new(/allocate_heap), $ ylab:' ', $ zz:ptr_new(/allocate_heap), $ zzz:fltarr(100,100), $ linestyle:0, $ toplab:' ', $ infolab:' ', $ botlab:' ' } ; frames_gcnc = replicate(frame,100) ; ; ; Get gc-nc data: ; nframes = 0 rdascii,file,frames_gcnc,nframes,ps=ps print,'nframes in ',file,' = ',nframes ; ;for i=0,nframes-1 do begin ; name = 'frames_gcnc['+string(i)+']' ; printframe,frames_gcnc[i],name ;endfor ; ; Get hc-nc data: ; frames_hcnc = replicate(frame,100) file = 'tgcmproc.hc-nc.dat' prefix = 'hc-nc' frames_hcnc[0].filename = file frames_hcnc[0].fileprefix = prefix ;frames_hcnc[0].linestyle = 2 ; 0->solid, 2->dashed, 5->long dashes frames_hcnc[0].linestyle = 5 ; 0->solid, 2->dashed, 5->long dashes nframes = 0 rdascii,file,frames_hcnc,nframes,ps=ps print,'nframes in ',file,' = ',nframes ; ;for i=0,nframes-1 do begin ; name = 'frames_hcnc['+string(i)+']' ; printframe,frames_hcnc[i],name ;endfor ; ; Make plots w/ both gc-nc and hc-nc: ; mkframes,frames_gcnc,frames_hcnc,nframes,ps=ps ; if (keyword_set(ps)) then device,/close end