tardis.plasma.equilibrium.rates.photoionization_rates module

class tardis.plasma.equilibrium.rates.photoionization_rates.AnalyticPhotoionizationRateSolver(photoionization_cross_sections)[source]

Bases: object

Solve analytic photoionization and spontaneous recombination rates.

Initialize an analytic photoionization rate solver.

Parameters:
photoionization_cross_sectionspandas.DataFrame

Photoionization cross sections indexed by atomic level.

solve(radiation_field: DilutePlanckianRadiationField | PlanckianRadiationField, electron_energy_distribution: ThermalElectronEnergyDistribution, lte_level_population: DataFrame, level_population: DataFrame, lte_ion_population: DataFrame, ion_population: DataFrame, partition_function: DataFrame, level_boltzmann_factor: DataFrame, level_to_continuum_saha_factor: DataFrame | None = None) → tuple[DataFrame, DataFrame][source]

Solve analytic photoionization and recombination rates.

This case is used when the radiation field is not estimated.

Parameters:
radiation_fieldRadiationField

A radiation field that can compute its mean intensity.

electron_energy_distributionThermalElectronEnergyDistribution

Electron properties.

lte_level_populationpd.DataFrame

LTE level number density. Columns are cells.

level_populationpd.DataFrame

Estimated level number density. Columns are cells.

lte_ion_populationpd.DataFrame

LTE ion number density. Columns are cells.

ion_populationpd.DataFrame

Estimated ion number density. Columns are cells.

level_to_continuum_saha_factorpd.DataFrame, optional

Density-independent Lucy level-to-continuum Saha factor.

partition_functionpandas.DataFrame

Partition functions by ion and shell.

level_boltzmann_factorpandas.DataFrame

Level Boltzmann factors by shell.

Returns:
pd.DataFrame

Photoionization rate. Columns are cells.

pd.DataFrame

Spontaneous recombination rate. Columns are cells.

class tardis.plasma.equilibrium.rates.photoionization_rates.EstimatedPhotoionizationRateSolver(photoionization_cross_sections, level2continuum_edge_idx, estimators_continuum=None, time_simulation=None, volume=None)[source]

Bases: object

Solve fixed-estimator photoionization and recombination rates.

Initialize a fixed-estimator photoionization rate solver.

Parameters:
photoionization_cross_sectionspandas.DataFrame

Photoionization cross sections indexed by atomic level.

level2continuum_edge_idxpandas.Series

Mapping from levels to continuum edge indices.

estimators_continuumobject, optional

Monte Carlo continuum estimators.

time_simulationastropy.units.Quantity, optional

Simulation time used to normalize estimators.

volumeastropy.units.Quantity, optional

Cell volume used to normalize estimators.

solve(electron_energy_distribution: ThermalElectronEnergyDistribution, level_population: DataFrame, ion_population: DataFrame, level_to_continuum_saha_factor: DataFrame) → tuple[DataFrame, DataFrame][source]

Solve rates using fixed Monte Carlo estimators.

The estimator supplies the photoionization and stimulated- recombination factors. The returned rates are the coefficients used by the ionization rate matrix, following Lucy (2003), Eqs. 44–45.

Parameters:
electron_energy_distributionThermalElectronEnergyDistribution

Electron properties.

level_populationpd.DataFrame

Estimated bound-level number densities. Columns are cells.

ion_populationpd.DataFrame

Estimated ion number densities. Columns are cells.

level_to_continuum_saha_factorpd.DataFrame

Density-independent Lucy level-to-continuum Saha factors.

Returns:
tuple[pd.DataFrame, pd.DataFrame]

Photoionization and recombination rates used by the ionization rate matrix.

solve_coefficients(electron_temperature: Quantity) → tuple[DataFrame, DataFrame, DataFrame][source]

Solve fixed-estimator photoionization coefficients.