tardis.plasma.properties.ion_population module

class tardis.plasma.properties.ion_population.IonNumberDensity(plasma_parent, ion_zero_threshold=1e-20, electron_densities=None)[source]

Bases: tardis.plasma.properties.base.ProcessingPlasmaProperty

Convergence process to find the correct solution. A trial value for the electron density is initiated in a particular zone. The ion number densities are then calculated using the Saha equation. The electron density is then re-calculated by using the ion number densities to sum over the number of free electrons. If the two values for the electron densities are not similar to within the threshold value, a new guess for the value of the electron density is chosen and the process is repeated.

Attributes
ion_number_densitypandas.DataFrame, dtype float

Index atom number, ion number. Columns zones.

electron_densitiesnumpy.ndarray, dtype float
calculate(phi, partition_function, number_density)[source]
static calculate_with_n_electron(phi, partition_function, number_density, n_electron, block_ids, ion_zero_threshold)[source]
latex_name = ('N_{i,j}', 'n_{e}')
outputs = ('ion_number_density', 'electron_densities')
class tardis.plasma.properties.ion_population.IonNumberDensityHeNLTE(plasma_parent, ion_zero_threshold=1e-20, electron_densities=None)[source]

Bases: tardis.plasma.properties.base.ProcessingPlasmaProperty

Convergence process to find the correct solution. A trial value for the electron density is initiated in a particular zone. The ion number densities are then calculated using the Saha equation. The electron density is then re-calculated by using the ion number densities to sum over the number of free electrons. If the two values for the electron densities are not similar to within the threshold value, a new guess for the value of the electron density is chosen and the process is repeated.

Attributes
ion_number_densitypandas.DataFrame, dtype float

Index atom number, ion number. Columns zones.

electron_densitiesnumpy.ndarray, dtype float
calculate(phi, partition_function, number_density, helium_population)[source]
latex_name = ('N_{i,j}', 'n_{e}')
outputs = ('ion_number_density', 'electron_densities', 'helium_population_updated')
update_he_population(helium_population, n_electron, number_density)[source]
class tardis.plasma.properties.ion_population.PhiSahaLTE(plasma_parent)[source]

Bases: tardis.plasma.properties.base.ProcessingPlasmaProperty

Attributes
phipandas.DataFrame, dtype float

Used for LTE ionization (at the radiation temperature). Indexed by atomic number, ion number. Columns are zones.

broadcast_ionization_energy = None
static calculate(g_electron, beta_rad, partition_function, ionization_data)[source]
latex_formula = ('\\dfrac{2Z_{i,j+1}}{Z_{i,j}}\\Big(\\\n                     dfrac{2\\pi m_{e}/\\beta_{\\textrm{rad}}}{h^2}\\\n                     Big)^{3/2}e^{\\dfrac{-\\chi_{i,j}}{kT_{\\textrm{rad}}}}',)
latex_name = ('\\Phi',)
outputs = ('phi',)
class tardis.plasma.properties.ion_population.PhiSahaNebular(plasma_parent)[source]

Bases: tardis.plasma.properties.base.ProcessingPlasmaProperty

Attributes
phipandas.DataFrame, dtype float

Used for nebular ionization. Indexed by atomic number, ion number. Columns are zones.

static calculate(t_rad, w, zeta_data, t_electrons, delta, g_electron, beta_rad, partition_function, ionization_data)[source]
static get_zeta_values(zeta_data, ion_index, t_rad)[source]
latex_formula = ('W(\\delta\\zeta_{i,j}+W(1-\\zeta_{i,j}))\\left(\\\n                     dfrac{T_{\\textrm{electron}}}{T_{\\textrm{rad}}}\\right)^{1/2}',)
latex_name = ('\\Phi',)
outputs = ('phi',)
class tardis.plasma.properties.ion_population.RadiationFieldCorrection(plasma_parent=None, departure_coefficient=None, chi_0_species=(20, 2), delta_treatment=None)[source]

Bases: tardis.plasma.properties.base.ProcessingPlasmaProperty

Attributes
deltapandas.DataFrame, dtype float

Calculates the radiation field correction (see Mazzali & Lucy, 1993) if not given as input in the config. file. The default chi_0_species is Ca II, which is good for type Ia supernovae. For type II supernovae, (1, 1) should be used. Indexed by atomic number, ion number. The columns are zones.

calculate(w, ionization_data, beta_rad, t_electrons, t_rad, beta_electron)[source]
latex_name = ('\\delta',)
outputs = ('delta',)
class tardis.plasma.properties.ion_population.SahaFactor(plasma_parent)[source]

Bases: tardis.plasma.properties.base.ProcessingPlasmaProperty

Calculates the ‘Saha factor’ Phi_ik = n_i* / (n_k* n_e), i.e., the ratio of the LTE level population n_i*, and the product of the LTE ion density n_k* and the actual electron density n_e.

Attributes
phi_ikpandas.DataFrame, dtype float

Indexed by atom number, ion number, level number. Columns are zones.

calculate(thermal_phi_lte, thermal_lte_level_boltzmann_factor, thermal_lte_partition_function)[source]
latex_name = ('\\Phi_{i,\\kappa}',)
outputs = ('phi_ik',)
class tardis.plasma.properties.ion_population.ThermalPhiSahaLTE(plasma_parent)[source]

Bases: tardis.plasma.properties.ion_population.PhiSahaLTE

Attributes
phipandas.DataFrame, dtype float

Used for LTE ionization (at the electron temperature). Indexed by atomic number, ion number. Columns are zones.

static calculate(thermal_g_electron, beta_electron, thermal_lte_partition_function, ionization_data)[source]
latex_formula = ('\\dfrac{2Z_{i,j+1}}{Z_{i,j}}\\Big(\\\n                     dfrac{2\\pi m_{e}/\\beta_{\\textrm{electron}}}{h^2}\\\n                     Big)^{3/2}e^{\\dfrac{-\\chi_{i,j}}{kT_{\\textrm{electron}}}}',)
latex_name = ('\\Phi^{*}(T_\\mathrm{e})',)
outputs = ('thermal_phi_lte',)