Levels
Once the element and ion data has been read into textsc{Python}, the next step is to read in the level information.
Source:
Level information can be derived from a variety of sources, by:
deriving it from a line list such as that of Kurucz, or
more commonly, for data abstracted from TopBase or Chianti
Translation to python:
Various Formats of Level Files
The original format:
Comment-- Ion H 1
# There are 17 unique levels for 1 1
Level 1 1 0 2 0.000000
Level 1 1 1 2 10.200121
Level 1 1 2 4 10.200166
Level 1 1 3 2 12.089051
where the colums are z, istate (in conventional notation), a unique level no, the multiplicity of the level and the excitation energy of the level in eV
Level files with this type of format are used in files such as levels_kur.dat, when the levels are derived from linelists such as Kurucz. It is only allowable when dealing with simple atoms.
The current format:
# Maximum excitation above ground (in Ryd) for inclusion 4.000000
# Miniumum excitation below continuum (in Ryd) for inclusion -0.100000
# Topbase levels: Order changed to move config to end of line
#LevTop z ion iSLP iLV iCONF E(eV) Te(eV) gi RL(s) eqn RL(s)
# ======================================================================================
# i NZ NE iSLP iLV iCONF E(RYD) TE(RYD) gi EQN RL(NS)
# ======================================================================================
# ======================================================================================
LevTop 1 1 200 1 -13.605698 0.000000 2 1.0000 1.00e+21 () 1s
LevTop 1 1 200 2 -3.401425 10.204273 2 2.0000 1.00e+21 () 2s
LevTop 1 1 211 1 -3.401425 10.204273 6 2.0000 1.60e-09 () 2p
whereas the for Macro Atoms we have:
# z ion lvl ion_pot ex_energy g rad_rate
LevMacro 1 1 1 -13.59843 0.000000 2 1.00e+21 () n=1
LevMacro 1 1 2 -3.39960 10.19883 8 1.00e-09 () n=2
LevMacro 1 1 3 -1.51093 12.08750 18 1.00e-09 () n=3
The columns are similar in the two cases.
Each level is described by an element number and ion number and a level number. In the macro-atom case the level number is unique; in the simple atom case the combination of iSLP and the level number are unique.
For the Topbase case for simple atoms, the columns are:
the atomic number
the ion number in the usual astronomical convention
iSLP
the level number
the energy in eV relative to the continuum
the energy in eV relative to the ground state
the multiplicity (g) of the level, usually 2J+1
the equivalent quantum number
the radiative lifetime
the configuration
There are some specific differences. In particular, for LevMacro levels, the excitation energy needs need to be on an absolute scale between ions, and so it includes the ionization energy of the lower level ionization states. Note that the radiative rates are not used. The original intention was to use this to define the difference between metastable and normal levels, with the expectation that if the level was metastable it would be put in Boltzmann equilibrium with the ground state. Right now python uses 10**15 seconds, essentially a Hubble time to do this, but this portion of the code is not, according to ss, tested.
The primary source for this is usually the NIST database, although similar information is usually available in Chianti. One normally wants text output, and eV to describe the levels, and then one needs to put things in energy order. Since they quote J, one converts to g = 2J+1
The ionization potential is not used, as it is redundant with the excitation energy which is, and the last column giving the configuration is also for information only.
Python structure:
This data is held in Python in various fields in structure config.