Atomic Data Format Description

The atomic data for tardis is stored in HDF5 files. TARDIS ships with a relatively simple atomic dataset that only contains silicon lines and levels. TARDIS also has a full atomic dataset which contains the complete Kurucz dataset (http://kurucz.harvard.edu/LINELISTS/GFALL/). This full dataset also contains recombination coefficients from the ground state (\(\zeta-\textrm{factor}\) used in Calculating Zeta) and data for calculating the branching or macro atom line interaction (Macro Atom).

HDF5 Dataset

As mentioned previously, all atomic data is stored in HDF5 files that contain tables that include mass, ionization, levels and lines data. The atom data that ships with TARDIS is located in data/atom.

The dataset basic_atom_set contains the Atomic Number, Symbol of the elements and average mass of the elements.

Basic Atomic Data

Name

Description

Unit

atomic_number

Atomic Number (e.g. He = 2)

z

symbol

Symbol (e.g. He, Fe, Ca, etc.)

None

mass

Average mass of atom

u

The ionization data is stored in ionization_data.

Ionization Data

Name

Description

Unit

atomic_number(z)

Atomic Number

1

ion_number

Ion Number

1

ionization_energy

Ionization Energy of atom

eV

Note

In TARDIS, Ion 0 is neutral.

Levels Data

The levels data is stored in levels_data.

Name

Description

Unit

atomic_number(z)

Atomic Number

1

ion_number

Ion Number

1

level_number

Level Number

1

energy

Energy of a particular level

eV

g

1

metastable

bool

All lines are stored in lines_data.

Lines Data

Name

Description

Unit

wavelength

Waveslength

angstrom

atomic_number(z)

Atomic Number

1

ion_number

Ion Number

1

f_ul

Upper level probability

1

f_lu

Lower level probability

1

level_id_lower

Upper level id

1

level_id_upper

Lower level id

1

The next three datasets are only contained in the full dataset available upon request from the authors.

The factor correcting for photo-ionization from excited levels (needed in Calculating Zeta) is stored in the dataset zeta_data. The data is stored in a special way as one large numpy.ndarray where the first two columns are Atomic Number and Ion Number. All further columns are the \(\zeta-\textrm{factors}\) for different temperatures. The temperatures are stored in the attribute t_rads.

Name

Description

Unit

atomic_number(z)

Atomic Number

1

ion_number

Ion Number

1

T_XXXX

Temperature for column

K

T_XXXX

Temperature for column

K

There are two datasets for using the macro atom and branching line interactions. The macro_atom_data and macro_atom_references:

The macro_atom_data contains blocks of transition probabilities, several indices and flags. The Transition Type flag has three states:

  • -1 for downwards emitting

  • 0 for downwards internal

  • 1 for upwards internal (for more explanations, please refer to Macro Atom).

Macro Atom Data

Name

Description

Unit

atomic_number(z)

Atomic Number

1

ion_number

Ion Number

1

source_level_number

Source Level Number

1

destination_level_number

Destination Level Number

1

transition_type

Transition Type

1

transition_probability

Transition Probability

1

transition_line_id

Transition Line ID

1

Here’s the structure of the probability block. The atomic number, ion number and source level number are the same within each block, the destination level number the transition type and transition probability are changing. The transition probabilities are only part of the final probability and will be changed during the calculation. For details on the macro atom, please refer to Macro Atom.

Atomic Number

Ion Number

Source Level Number

Destination Level Number

Transition Type

Transition probabilities

Transition Line ID

Z1

I1

i1

j1

-1

Pemission down 1

k1

Z1

I1

i1

j2

-1

Pemission down 2

k2

Z1

I1

i1

jn

-1

Pemission down n

kn

Z1

I1

i1

j1

0

Pinternal down 1

k1

Z1

I1

i1

j2

0

Pinternal down 2

k2

Z1

I1

i1

jn

0

Pinternal down n

kn

Z1

I1

i1

j1

1

Pinternal up 1

k1

Z1

I1

i1

j2

1

Pinternal up 2

k2

Z1

I1

i1

jn

1

Pinternal up n

kn

The macro_references dataset contains the numbers for each block:

Macro Atom References

Name

Description

Unit

atomic_number(z)

Atomic Number

1

ion_number

Ion Number

1

source_level_number

Source Level Number

1

count_down

Number of down transitions

1

count_up

Number of up transitions

1

count_total

Total number of transitions

1

The Atom Data Class

Atom Data is stored inside TARDIS in the AtomData-class. The class method AtomData.from_hdf() will instantiate a new AtomData-class from an HDF5 file. If none is given it will automatically take the default HDF5-dataset shipped with TARDIS. A second function AtomData.prepare_atom_data() will cut the levels and lines data to only the required atoms and ions. In addition, it will create the intricate system of references needed by macro atom or branching line interactions.

Indexing fun

The main problem with the atomic data is indexing. Most of these references require multiple numbers, e.g. atomic number, ion number and level number. The pandas framework provides the ideal functions to accomplish this. In TARDIS, we extensively use pandas.MultiIndex, pandas.Series and pandas.DataFrame.

TO BE BETTER DOCUMENTED …