;---------------------------------------------------------------------------- ; ; read lines from a linelist and returns them as an array of wavelengths, ; labels, and ion identifications ; ;---------------------------------------------------------------------------- PRO readlines, file, listn, listwav, listlab, listion, listmlt, listgf, listep, listfr ; Data for constructing labels elem = StrArr(93) elem( 1: 2) = [ 'H ', 'He' ] elem( 3:10) = [ 'Be', 'Li', 'B ', 'C ', 'N ', 'O ', 'F ', 'Ne' ] elem(11:18) = [ 'Na', 'Mg', 'Al', 'Si', 'P ', 'S ', 'Cl', 'A ' ] elem(19:20) = [ 'K ', 'Ca' ] elem(31:36) = [ 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr' ] elem(21:30) = [ 'Sc', 'Ti', 'V ', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn' ] elem(31:36) = [ 'Ga','Ge','As','Se','Br','Kr' ] elem(37:48) = [ 'Rb','Sr','Y ', 'Zr','Nb','Mo','Tc','Ru','Rh','Pd','Ag','Cd' ] elem(49:54) = [ 'In','Sn','Sb','Te','I ','Xe' ] elem(55:71) = [ 'Cs','Ba','La','Ce','Pr','Nd','Pm','Sm','Eu','Gd','Tb','Dy','Ho','Er','Tm','Yb','Lu' ] elem(72:80) = [ 'Hf','Ta','W ','Re','Os','Ir','Pt','Au','Hg' ] elem(81:86) = [ 'Tl','Pb','Bi','Po','At','Rn' ] elem(87:92) = [ 'Fr','Ra','Ac','Th','Pa','U ' ] ion = StrArr(6) ion = [ ' I', ' II', 'III', ' IV', ' V', ' VI' ] ; Data array definitions nmax = 100000L listwav = FltArr(nmax) listlab = StrArr(nmax) listion = FltArr(nmax) listmlt = FltArr(nmax) listgf = FltArr(nmax) listep = FltArr(nmax) listfr = FltArr(nmax) ; --- ; open the data file OPENR, lulist, file, /get_lun ; skip over atomic data element = '' ; read individual lines in list i = 0L & valid = 0 & nz = 999 WHILE nz NE -1 DO BEGIN ON_IOERROR, end_of_data READF, lulist, nz, ni, wl, gf, ed, rd, wd, ep, mult, nfrac IF nz GT 0 THEN BEGIN listwav(i) = wl listion(i) = nz + (ni-1)/100. listlab(i) = elem(nz) + ion(ni-1) listmlt(i) = mult listgf(i) = gf listep(i) = ep listfr(i) = nfrac ; print, i, ' ', listlab(i), listmlt(i), listwav(i), listfr(i) i = i + 1 ENDIF ENDWHILE ; end of data, close file end_of_data: CLOSE, lulist FREE_LUN, lulist ; tidy up output arrays IF i GE 1 THEN BEGIN listn = i listwav = listwav(0:i-1) listion = listion(0:i-1) listlab = listlab(0:i-1) listmlt = listmlt(0:i-1) listgf = listgf(0:i-1) listep = listep(0:i-1) listfr = listfr(0:i-1) ENDIF print,i,' lines read from ',file END