Larry: I have made an ascii file of data for ut 0. It contains 90 "frames" as follows: 01-18: tn at ht=35 to 120 by 5km. (deg K) 19-36: un at ht=35 to 120 by 5km. (m/s +east) 37-54: vn at ht=35 to 120 by 5km. (m/s +north) 55-72: wn at ht=35 to 120 by 5km. (m/s +up) 73-90: rho at ht=35 to 120 by 5km. (o2+o+n2 number densities (cm3)) Each "frame" has a few lines of header, then the x values (73 longitudes from -180 to +180 by 5), and the y values (36 latitudes -87.5 to +87.5 by 5), immediately followed by the data (2-d array with longitude varying first (73,36)). The x and y values are redundant, so you can remove them if you want. The file is on the machine hao.hao.ucar.edu in the dir /pub/foster, and is named connor.ut0.dat.Z. You can get it via anonymous ftp, with mode set to binary. Then uncompress it on your local disk (its about 3.3Mb uncompressed). Let me know when you've got it so I can remove it from our disk, but no hurry. I got every 5km for now to save on space, hope that's ok. I guess a similiar file with every km would be roughly 16.5Mb uncompressed. I could do that if you really need every km. Rho (density) is in cm3 -- let me know if you would prefer mass mixing ratios, or number density mixing ratios, or even mass density. If this works ok for you, let me know, and I will do the same for the remaining 23 ut's. I could even tar a number of ut files together, depending on how much local disk you have. --Ben Here's a little fortran program that reads these files, to speed up your work a bit: program rdascii c character*40 fname character*80 histvol,field,lab,labx,laby character*1 ans dimension xx(100),yy(100),f(100,100) data lurd/9/ c do 200 iii=1,1000 write(6,"(' ')") write(6,"('Enter file name (zzz to stop): ',$)") read(5,*) fname if (fname(1:3).eq.'zzz') stop 'bye' open(lurd,file=fname,status='OLD',err=901) write(6,"('Ask about printing for every frame in the', + ' file? (y/n): ',$)") read(5,*) ans iprompt = 0 if (ans.eq.'y') iprompt = 1 nfr = 0 c c Read data from each frame: c 100 continue read(lurd,"(a)",end=900) histvol read(lurd,"(a)") field read(lurd,"(6x,i4)") iframe read(lurd,"(a)") lab read(lurd,"(a)") labx read(labx,"(3x,i4)") nx if (nx.gt.1) read(lurd,"(6e13.5)") (xx(i),i=1,nx) read(lurd,"(a)") laby read(laby,"(3x,i4)") ny if (ny.gt.1) read(lurd,"(6e13.5)") (yy(i),i=1,ny) c if (nx.gt.1.and.ny.gt.1) then read(lurd,"(6e13.5)") ((f(i,ii),i=1,nx),ii=1,ny) elseif (nx.eq.1.and.ny.gt.1) then read(lurd,"(6e13.5)") (f(1,i),i=1,ny) elseif (ny.eq.1.and.nx.gt.1) then read(lurd,"(6e13.5)") (f(i,1),i=1,nx) endif nfr = nfr+1 c c Conditionally echo to stdout: c write(6,"(' ')") write(6,"(a)") histvol(1:lenstr(histvol)) write(6,"(a)") field(1:lenstr(field)) write(6,"('Frame ',i4)") iframe write(6,"(a)") lab(1:lenstr(lab)) write(6,"(a)") labx(1:lenstr(labx)) if (nx.gt.1) then if (nfr.eq.1.or.iprompt.gt.0) then write(6,"('Print x-axis values? (y/n/q): ',$)") read(5,*) ans else ans = 'n' endif if (ans.eq.'y') write(6,"(6e13.5)") (xx(i),i=1,nx) if (ans.eq.'q') goto 902 endif write(6,"(a)") laby(1:lenstr(laby)) if (ny.gt.1) then if (nfr.eq.1.or.iprompt.gt.0) then write(6,"('Print y-axis values? (y/n/q): ',$)") read(5,*) ans else ans = 'n' endif if (ans.eq.'y') write(6,"(6e13.5)") (yy(i),i=1,ny) if (ans.eq.'q') goto 902 endif if (nfr.eq.1.or.iprompt.gt.0) then write(6,"('Print data values? (y/n/q): ',$)") read(5,*) ans else ans = 'n' endif if (ans.eq.'y') then if (nx.gt.1.and.ny.gt.1) then write(6,"(6e13.5)") ((f(i,ii),i=1,nx),ii=1,ny) elseif (nx.eq.1.and.ny.gt.1) then write(6,"(6e13.5)") (f(1,i),i=1,ny) elseif (ny.eq.1.and.nx.gt.1) then write(6,"(6e13.5)") (f(i,1),i=1,nx) endif endif if (ans.eq.'q') goto 902 goto 100 c stop 900 continue write(6,"('EOF encountered on file ',a,' (lu ',i3,')')") + fname,lurd 902 close(lurd) goto 200 901 write(6,"('Error opening file ',a)") fname 200 continue stop end c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c function lenstr(str) character*(*) str c c Return index to last non-blank char in str c length = len(str) do i=length,1,-1 if (str(i:i).ne.' ') then lenstr = i return endif enddo lenstr = 0 return end c subroutine clearstr(str) c c Set given string to all blanks c character*(*) str length = len(str) do i=1,length str(i:i) = ' ' enddo return end c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c