tardis.plasma.properties.atomic module¶
- class tardis.plasma.properties.atomic.ContinuumInteractionHandler(plasma_parent)[source]¶
Bases:
ProcessingPlasmaProperty
- 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.
- 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.
- 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
- 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
- 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).
- 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.
- 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
- 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.
- 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.
- 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',)¶