function haloe_read_mission,file ;---------------------------------------------------------------------------------- ; ; Purpose: ; Routine reads a HALOE mission file and returns a structure. ; ; Input: ; file......complete path + name of the file ; ; Output: ; date.....julian date, yyddd ; time.....milliseconds past midnight ; lat......event latitude, 30 km altitude ; lon...... " longitude " ; mode.....8=set, 10=rise ; ztrop....tropopause height, km ; nrec.....# of events retrieved ; z........altitude, km, common grid if optv=1, arr(z,record) if optv=2 ; ; one of the below, depending on the file, all are arr(Z,event) ; t........temperature, K ; h2o......water vapor, ppmv ; no2......no2, ppbv ; o3.......ozone, ppmv ; no.......nitric oxide, ppbv ; ch4......methane, ppmv ; hcl......hcl, ppbv ; hf.......hf, ppvv ; a245.....aerosol extinction, 2.45 microns, 1/km ; a340.....aerosol extinction, 3.40 microns, 1/km ; a346.....aerosol extinction, 3.46 microns, 1/km ; a526.....aerosol extinction, 5.26 microns, 1/km ; ; Source: Mark Hervig, GATS ; ;---------------------------------------------------------------------------------- ;- open the file id = ncdf_open(file,/nowrite) glob = ncdf_inquire(id) ;- echo the file contents idump = 0 glob = ncdf_inquire(id) varname = strarr(glob.nvars) ; this will contain the variable names for i = 0,glob.nvars-1 do begin info = ncdf_varinq(id, i) varname(i) = info.name if (idump eq 1) then print,info.name endfor ;- get the global attributes ncdf_diminq,id,'altitude',name,nz ; number of points in profiles ;- Read the data ncdf_varget,id,'date' , date ncdf_varget,id,'mode' , mode ncdf_varget,id,'time' , time ; UT ncdf_varget,id,'longitude', lon ncdf_varget,id,'latitude' , lat ncdf_varget,id,'tropopause_altitude', ztr ncdf_varget,id,'altitude' , z ; ncdf_varget,id,'pressure' , p ; ncdf_varget,id,'temperature', t ; ncdf_varget,id,'H2O_vmr', h2o k = where(varname eq 'temperature',nk) if nk gt 0 then begin ncdf_varget,id,'temperature', data vout = 't' endif k = where(varname eq 'pressure',nk) if nk gt 0 then begin ncdf_varget,id,'pressure', data vout = 'p' endif k = where(varname eq 'a245',nk) if nk gt 0 then begin ncdf_varget,id,'a245', data vout = 'a245' endif k = where(varname eq 'a340',nk) if nk gt 0 then begin ncdf_varget,id,'a340', data vout = 'a340' endif k = where(varname eq 'a346',nk) if nk gt 0 then begin ncdf_varget,id,'a346', data vout = 'a346' endif k = where(varname eq 'a526',nk) if nk gt 0 then begin ncdf_varget,id,'a526', data vout = 'a526' endif k = where(varname eq 'H2O_vmr',nk) if nk gt 0 then begin ncdf_varget,id,'H2O_vmr', data vout = 'h2o' endif k = where(varname eq 'O3_vmr',nk) if nk gt 0 then begin ncdf_varget,id,'O3_vmr', data vout = 'o3' endif k = where(varname eq 'NO_vmr',nk) if nk gt 0 then begin ncdf_varget,id,'NO_vmr', data vout = 'no' endif k = where(varname eq 'NO2_vmr',nk) if nk gt 0 then begin ncdf_varget,id,'NO2_vmr', data vout = 'no2' endif k = where(varname eq 'CH4_vmr',nk) if nk gt 0 then begin ncdf_varget,id,'CH4_vmr', data vout = 'ch4' endif k = where(varname eq 'HCl_vmr',nk) if nk gt 0 then begin ncdf_varget,id,'HCl_vmr', data vout = 'hcl' endif k = where(varname eq 'HF_vmr',nk) if nk gt 0 then begin ncdf_varget,id,'HF_vmr', data vout = 'hf' endif ;- Close the file ncdf_close,id ;- output a structure k = where(data gt 1e20 or data lt 0,n) if n gt 0 then data(k) = -1e20 nr = n_elements(date) nz = n_elements(z) doy = yyyydoy_2_doy(date) yrd = yyyydoy_2_decyr(date) ;+ (time_ut/24.) / 365. h = create_struct( $ 'name', 'HALOE',$ 'nrec',nr,$ 'nz',nz,$ 'date',date,$ 'yrd',yrd,$ 'doy',doy,$ 'time',time,$ 'mode',mode,$ 'lat',lat,$ 'lon',lon,$ 'ztrop',ztr,$ 'z',z,$ vout, data) ;- done return,h end