Документ взят из кэша поисковой машины. Адрес оригинального документа : http://star.arm.ac.uk/~csj/idl/IDLINES/markspec.pro
Дата изменения: Wed Apr 29 01:05:00 2009
Дата индексирования: Tue Oct 2 07:54:49 2012
Кодировка:

Поисковые слова: запрещенные спектральные линии
PRO markspec, zel, xlo, xhi, listn, listwav, listion, listlab, listmlt, listgf, listfr

; Data for constructing labels

; Assesses lines in linelsit by the strength values "listfr".
; Positions of all lines are plotted for each element, relative to the strongest line
; due to each element in each spectral region. Note that these strengths are independent
; of abundance. The scale is logarithmic, such that the a line with 1/1000 strength
; of the the strongest line will not appear, ie if full scale = 0, the axis is at -3.
; Elements for which there are no lines in the spectral range are omitted.


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 ' ]

yzel = FltArr(93) ; position of each atom
yzel( 1: 2) = [ 0.00, 0.02 ]
yzel( 3:10) = [ 0.04, 0.05, 0.06, 0.08, 0.12, 0.16, 0.18, 0.20 ]
yzel(11:18) = [ 0.22, 0.24, 0.26, 0.28, 0.30, 0.32, 0.34, 0.36 ]
yzel(19:20) = [ 0.38, 0.40 ]
yzel(31:36) = [ 1.04, 1.06, 1.08, 1.10, 1.12, 1.14 ]
yzel(21:30) = [ 0.42, 0.44, 0.48, 0.50, 0.52, 0.56, 0.58, 0.60, 0.62, 0.64 ]

lzel = IntArr(93) ; linestyles for each atom
lzel( 1: 2) = [ 0, 0 ]
lzel( 3:10) = [ 1, 1, 1, 0, 0, 0, 1, 0 ]
lzel(11:18) = [ 1, 0, 1, 0, 1, 0, 1, 0 ]
lzel(19:20) = [ 1, 0 ]
lzel(31:36) = [ 1, 1, 1, 1, 1, 1 ]
lzel(21:30) = [ 1, 0, 1, 0, 1, 0, 1, 0, 1, 1 ]

; level at which this ion is to be marked
yb = -yzel(zel)
yb = -0.04 * fix(zel) + 0.4
ysc = 0.1
nid = 0


colors = GetColor(/Load)


frmax = -99.
msk = WHERE ( xlo LT listwav AND listwav LT xhi AND FIX(listion) EQ zel, cnt )

IF ( cnt GT 0 ) THEN BEGIN
frmax = max ( listfr(msk) )

FOR i = 0,listn-1 DO BEGIN
IF zel EQ FIX (listion(i)) THEN BEGIN
wl = listwav(i)
IF xlo LT wl AND wl LT xhi THEN BEGIN
dy = ysc * MAX( [(alog10(listfr(i)/frmax) + 3.),0.] ) / 3.
xel = FIX ( 100 * (listion(i)-zel) )
xcol = colors.darkgreen
IF xel EQ 1 THEN xcol = colors.limegreen
IF xel EQ 2 THEN xcol = colors.seagreen
IF xel EQ 3 THEN xcol = colors.forestgreen
oplot, [wl,wl], [yb,yb+dy], linestyle = 0, color=colors.green
nid = nid + 1
ENDIF
ENDIF
ENDFOR

IF nid GT 0 THEN BEGIN
oplot, [xlo,xhi], [yb,yb], linestyle = 0,color=colors.navy
dx = (xhi-xlo)/20.
xyouts, xhi-(1+lzel(zel))*dx , yb+0.005, elem(zel), noclip=0, color=colors.cyan
ENDIF
ENDIF

END