function rdframe,lu,iprint=iprint ; ; Return a frame structure read from lu: ; on_ioerror,badio frsize = 0 & readu,lu,frsize hdr1='' & hdr2='' & hdr3='' & hdr4='' readu,lu,hdr1,hdr2,hdr3,hdr4 nx = 0 & xlab='' & readu,lu,nx,xlab xx = fltarr(nx) & readu,lu,xx ny = 0 & ylab='' & readu,lu,ny,ylab yy = fltarr(ny) & readu,lu,yy mtime = intarr(3) & readu,lu,mtime f = fltarr(nx,ny) & readu,lu,f ; ; Define frame structure: ; frame = { $ frsize:0, $ frame size (currently dummy) hdr1:hdr1, $ 1st header line hdr2:hdr2, $ 2nd header line hdr3:hdr3, $ 3rd header line hdr4:hdr4, $ 4th header line nx:nx, $ number of x coords xlab:xlab, $ x-axis label xx:xx, $ x coords ny:ny, $ number of y coords ylab:ylab, $ y-axis label yy:yy, $ y coords mtime:mtime, $ model time (day,hr,min) f:f $ data } ; if keyword_set(iprint) then begin print,format="(/72('-'))" print,strtrim(frame.hdr1) print,strtrim(frame.hdr2) print,strtrim(frame.hdr3) print,strtrim(frame.hdr4) print,'nx=',frame.nx,' xlab = ',strtrim(frame.xlab) ; print,'xx=' & print,frame.xx print,'xx=',frame.xx(0),' to ',frame.xx(nx-1),' by ',$ frame.xx(1)-frame.xx(0) print,'ny=',frame.ny,' ylab = ',strtrim(frame.ylab) ; print,'yy=' & print,frame.yy print,'yy=',frame.yy(0),' to ',frame.yy(ny-1),' by ',$ frame.yy(1)-frame.yy(0) print,'mtime (day,hr,min)=',frame.mtime fmin = min(frame.f) & fmax = max(frame.f) print,' ' print,'field min,max=',fmin,fmax ; print,'f=' & print,frame.f if iprint gt 1 then begin frmin = { $ min:1.e36, $ ixmin:0, $ xmin:0., $ iymin:0, $ ymin:0. $ } frmax = { $ max:-1.e36, $ ixmax:0, $ xmax:0., $ iymax:0, $ ymax:0. $ } for iy=0,ny-1 do $ print,$ format="('iy=',i3,' ny=',i3,' yy(iy)=',f9.2,' nx=',i3,' f(*,ny)=',/(6E12.4))", $ iy,frame.ny,frame.yy(iy),frame.nx,frame.f(*,iy) ;pro frminmax, f,nx,xx,ny,yy,frmin,frmax,spval frminmax, frame.f,frame.nx,frame.xx,frame.ny,frame.yy,frmin,frmax,!spval print,'field min,max = ',frmin.min,frmax.max help,/struct,frmin help,/struct,frmax endif print,format="(72('-')/)" endif return,frame badio: print,'>>> WARNING rdframe: i/o error on unit ',lu lu = 0 return,0 end ;--------------------------------------------------------------- pro rdxdr tgcmfile='' read,'Enter xdr filename: ',tgcmfile lu = 1 close,lu openr,lu,tgcmfile,/xdr nfr = 0 ans = '' while (lu > 0) do begin frame = rdframe(lu) nfr = nfr+1 print,'Read frame ',nfr contour,frame.f,frame.xx,frame.yy,/fol read,'Next frame? (y/n) ',ans if (ans ne 'y') then stop end return end