Документ взят из кэша поисковой машины. Адрес оригинального документа : http://star.arm.ac.uk/~csj/idl/IDLINES/readlines.pro
Дата изменения: Wed Apr 29 21:01:16 2009
Дата индексирования: Tue Oct 2 07:57:37 2012
Кодировка:
;----------------------------------------------------------------------------
;
; 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