tardis.plasma.properties.atomic module

class tardis.plasma.properties.atomic.ContinuumInteractionHandler(plasma_parent)[source]

Bases: ProcessingPlasmaProperty

calculate(photo_ion_cross_sections, level2continuum_idx, photo_ion_idx, k_packet_idx)[source]
outputs = ('get_current_bound_free_continua', 'determine_bf_macro_activation_idx', 'determine_continuum_macro_activation_idx')
class tardis.plasma.properties.atomic.IonizationData(plasma_parent)[source]

Bases: BaseAtomicDataProperty

Attributes:
ionization_datapandas.Series

Holding ionization energies Indexed by atomic number, ion number.

outputs = ('ionization_data',)
class tardis.plasma.properties.atomic.LevelIdxs2LineIdx(plasma_parent)[source]

Bases: HiddenPlasmaProperty

Attributes:
level_idxs2line_idxpandas.Series, dtype int

Maps a source_level_idx destination_level_idx pair to a line_idx.

calculate(atomic_data)[source]
outputs = ('level_idxs2line_idx',)
class tardis.plasma.properties.atomic.LevelIdxs2TransitionIdx(plasma_parent)[source]

Bases: HiddenPlasmaProperty

Attributes:
level_idxs2transition_idxpandas.DataFrame, dtype int

Maps a source_level_idx destination_level_idx pair to a transition_idx and transition type.

calculate(level_idxs2line_idx, level_idxs2continuum_idx)[source]
outputs = ('level_idxs2transition_idx',)
class tardis.plasma.properties.atomic.Levels(plasma_parent)[source]

Bases: BaseAtomicDataProperty

Attributes:
levelspandas.MultiIndex

(atomic_number, ion_number, level_number) Index of filtered atomic data. Index used for all other attribute dataframes for this class

excitation_energypandas.DataFrame, dtype float

Excitation energies of atomic levels. Index is levels.

metastabilitypandas.DataFrame, dtype bool

Records whether atomic levels are metastable. Index is levels.

gpandas.DataFrame (index=levels), dtype float

Statistical weights of atomic levels.

latex_name = ('\\textrm{levels}', '\\epsilon_{\\textrm{k}}', '\\textrm{metastability}', 'g')
outputs = ('levels', 'excitation_energy', 'metastability', 'g')
class tardis.plasma.properties.atomic.Lines(plasma_parent)[source]

Bases: BaseAtomicDataProperty

Attributes:
linespandas.DataFrame

Atomic lines data. Columns are wavelength, atomic_number,ion_number, f_ul, f_lu, level_number_lower, level_number_upper, nu, B_lu, B_ul, A_ul, wavelength. Index is line_id.

nupandas.DataFrame, dtype float

Line frequency data. Index is line_id.

f_lupandas.DataFrame, dtype float

Transition probability data. Index is line_id.

wavelength_cmpandas.DataFrame, dtype float

Line wavelengths in cm. Index is line_id.

latex_name = ('\\textrm{lines}', '\\nu', 'f_lu', '\\lambda_{cm}')
outputs = ('lines', 'nu', 'f_lu', 'wavelength_cm')
class tardis.plasma.properties.atomic.LinesLowerLevelIndex(plasma_parent)[source]

Bases: HiddenPlasmaProperty

Attributes:
lines_lower_level_indexnumpy.ndrarray, dtype int

Levels data for lower levels of particular lines

calculate(levels, lines)[source]
outputs = ('lines_lower_level_index',)
class tardis.plasma.properties.atomic.LinesUpperLevelIndex(plasma_parent)[source]

Bases: HiddenPlasmaProperty

Attributes:
lines_upper_level_indexnumpy.ndarray, dtype int

Levels data for upper levels of particular lines

calculate(levels, lines)[source]
outputs = ('lines_upper_level_index',)
class tardis.plasma.properties.atomic.MacroAtomData(plasma_parent)[source]

Bases: BaseAtomicDataProperty

outputs = ('macro_atom_data',)
class tardis.plasma.properties.atomic.NLTEData(plasma_parent)[source]

Bases: ProcessingPlasmaProperty

Attributes:
nlte_data

#Finish later (need atomic dataset with NLTE data).

calculate(atomic_data)[source]
outputs = ('nlte_data',)
class tardis.plasma.properties.atomic.PhotoIonizationData(plasma_parent)[source]

Bases: ProcessingPlasmaProperty

Attributes:
photo_ion_cross_sectionspandas.DataFrame, dtype float

Photoionization cross sections as a function of frequency. Columns are nu, x_sect, index=(‘atomic_number’,’ion_number’,’level_number’)

photo_ion_block_referencesnumpy.ndarray, dtype int

Indices where the photoionization data for a given level starts. Needed for calculation of recombination rates.

nu_ipandas.Series, dtype float

Threshold frequencies for ionization

energy_ipandas.Series, dtype float

Energies of levels with bound-free transitions. Needed to calculate for example internal transition probabilities in the macro atom scheme.

photo_ion_indexpandas.MultiIndex, dtype int

Atomic, ion and level numbers for which photoionization data exists.

level2continuum_idxpandas.Series, dtype int

Maps a level MultiIndex (atomic_number, ion_number, level_number) to the continuum_idx of the corresponding bound-free continuum (which are sorted by decreasing frequency).

level_idxs2continuum_idxpandas.DataFrame, dtype int

Maps a source_level_idx destination_level_idx pair to a continuum_idx.

calculate(atomic_data, continuum_interaction_species)[source]
latex_name = ('\\xi_{\\textrm{i}}(\\nu)', '', '', '\\nu_i', '\\epsilon_i', '', '')
outputs = ('photo_ion_cross_sections', 'photo_ion_block_references', 'photo_ion_index', 'nu_i', 'energy_i', 'photo_ion_idx', 'level2continuum_idx', 'level_idxs2continuum_idx')
class tardis.plasma.properties.atomic.TwoPhotonData(plasma_parent)[source]

Bases: ProcessingPlasmaProperty

calculate(atomic_data, continuum_interaction_species)[source]
outputs = ('two_photon_data', 'two_photon_idx')
Attributes:
two_photon_datapandas.DataFrame, dtype float
A DataFrame containing the *two photon decay data* with:

index: atomic_number, ion_number, level_number_lower, level_number_upper columns: A_ul[1/s], nu0[Hz], alpha, beta, gamma alpha, beta, gamma are fit coefficients for the frequency dependent transition probability A(y) of the two photon decay. See Eq. 2 in Nussbaumer & Schmutz (1984).

two_photon_idxpandas.DataFrame, dtype int
class tardis.plasma.properties.atomic.YgData(plasma_parent)[source]

Bases: ProcessingPlasmaProperty

Attributes:
yg_datapandas.DataFrame

Table of thermally averaged effective collision strengths (divided by the statistical weight of the lower level) Y_ij / g_i . Columns are temperatures.

t_ygnumpy.ndarray

Temperatures at which collision strengths are tabulated.

yg_indexPandas MultiIndex
delta_E_ygpandas.DataFrame

Energy difference between upper and lower levels coupled by collisions.

yg_idxpandas.DataFrame

Source_level_idx and destination_level_idx of collision transitions. Indexed by atomic_number, ion_number, level_number_lower, level_number_upper.

calculate(atomic_data, continuum_interaction_species)[source]
classmethod calculate_yg_van_regemorter(atomic_data, t_electrons, continuum_interaction_species)[source]

Calculate collision strengths in the van Regemorter approximation.

This function calculates thermally averaged effective collision strengths (divided by the statistical weight of the lower level) Y_ij / g_i using the van Regemorter approximation.

Parameters:
atomic_datatardis.io.atom_data.AtomData
t_electronsnumpy.ndarray
continuum_interaction_speciespandas.MultiIndex
Returns:
pandas.DataFrame

Thermally averaged effective collision strengths (divided by the statistical weight of the lower level) Y_ij / g_i

Notes

See Eq. 9.58 in [2].

References

[1]

van Regemorter, H., “Rate of Collisional Excitation in Stellar Atmospheres.”, The Astrophysical Journal, vol. 136, p. 906, 1962. doi:10.1086/147445.

[2]

Hubeny, I. and Mihalas, D., “Theory of Stellar Atmospheres”. 2014.

static exp1_times_exp(x)[source]

Product of the Exponential integral E1 and an exponential.

This function calculates the product of the Exponential integral E1 and an exponential in a way that also works for large values.

Parameters:
xarray_like

Input values.

Returns:
array_like

Output array.

latex_name = ('\\frac{Y_{ij}}{g_i}', 'T_\\textrm{Yg}', '\\textrm{yg_index}', '\\delta E_{ij}', '\\textrm{yg_idx}')
outputs = ('yg_data', 't_yg', 'yg_index', 'delta_E_yg', 'yg_idx')
class tardis.plasma.properties.atomic.YgInterpolator(plasma_parent)[source]

Bases: ProcessingPlasmaProperty

Attributes:
yg_interpscipy.interpolate.PchipInterpolator

Interpolates the thermally averaged effective collision strengths (divided by the statistical weight of the lower level) Y_ij / g_i as a function of electron temperature.

calculate(yg_data, t_yg)[source]
latex_name = ('\\frac{Y_ij}{g_i}_{\\textrm{interp}}',)
outputs = ('yg_interp',)
class tardis.plasma.properties.atomic.ZetaData(plasma_parent)[source]

Bases: BaseAtomicDataProperty

Attributes:
zeta_datapandas.DataFrame, dtype float

Zeta data for the elements used. Indexed by atomic number, ion number. Columns are temperature values up to 40,000 K in iterations of 2,000 K. The zeta value represents the fraction of recombination events from the ionized state that go directly to the ground state.

outputs = ('zeta_data',)