tardis.plasma.equilibrium.rate_matrix module
- class tardis.plasma.equilibrium.rate_matrix.AnalyticIonRateMatrix(radiative_ionization_rate_solver: AnalyticPhotoionizationRateSolver, collisional_ionization_rate_solver: CollisionalIonizationRateSolver)[source]
Bases:
objectBuild ionization matrices from analytic radiative rates.
- solve(radiation_field: DilutePlanckianRadiationField | PlanckianRadiationField, thermal_electron_energy_distribution: ThermalElectronEnergyDistribution, lte_level_population: DataFrame, level_population: DataFrame, lte_ion_population: DataFrame, ion_population: DataFrame, partition_function: DataFrame, boltzmann_factor: DataFrame, level_to_continuum_saha_factor: DataFrame | None = None, lte_ionization_factor: DataFrame | None = None) DataFrame[source]
Compute the ionization rate matrix.
- Parameters:
- radiation_fieldRadiationField
A radiation field that can compute its mean intensity.
- thermal_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_factorpandas.DataFrame, optional
Density-independent Lucy level-to-continuum Saha factor. When omitted, retain the existing LTE-population-derived behavior.
- Returns:
- pandas.DataFrame
Rate matrices indexed by atomic number, with each column being a shell.
- class tardis.plasma.equilibrium.rate_matrix.EstimatedIonRateMatrix(radiative_ionization_rate_solver: EstimatedPhotoionizationRateSolver, collisional_ionization_rate_solver: CollisionalIonizationRateSolver, lte_ionization_factor: DataFrame | None = None)[source]
Bases:
objectBuild ionization matrices from fixed Monte Carlo estimator rates.
- solve(radiation_field: DilutePlanckianRadiationField | PlanckianRadiationField, thermal_electron_energy_distribution: ThermalElectronEnergyDistribution, lte_level_population: DataFrame, level_population: DataFrame, lte_ion_population: DataFrame, ion_population: DataFrame, partition_function: DataFrame, boltzmann_factor: DataFrame, level_to_continuum_saha_factor: DataFrame, lte_ionization_factor: DataFrame | None = None) DataFrame[source]
Compute the ionization rate matrix from fixed estimators.
- class tardis.plasma.equilibrium.rate_matrix.RateMatrix(radiative_rate_solver: RadiativeRatesSolver, electron_rate_solver: ThermalCollisionalRateSolver, levels: DataFrame)[source]
Bases:
objectBuild bound-bound rate matrices from rate solvers.
Construct a rate matrix from explicit bound-bound rate owners.
- Parameters:
- radiative_rate_solverRadiativeRatesSolver
Solver for radiative transition rates.
- electron_rate_solverThermalCollisionalRateSolver
Solver for electron-dependent transition rates.
- levelspd.DataFrame
DataFrame of energy levels.
- assemble_matrices(j_blues: DataFrame, thermal_electron_energy_distribution: ThermalElectronEnergyDistribution, beta_sobolev: DataFrame | None = None) DataFrame[source]
Assemble column-conserving bound-bound rate matrices.
The returned matrices contain the rate equations, including their column-conserving diagonals, but do not contain the normalization row used by
solve().j_bluesandbeta_sobolevare used together for radiative transitions, so a residual evaluation can rebuild the matrix at a candidate Sobolev state.
- solve(radiation_field: DilutePlanckianRadiationField | PlanckianRadiationField, thermal_electron_energy_distribution: ThermalElectronEnergyDistribution) DataFrame[source]
Construct the compiled rate matrix dataframe.
- Parameters:
- radiation_fieldRadiationField
Radiation field containing radiative temperature.
- thermal_electron_energy_distributionThermalElectronEnergyDistribution
Distribution of electrons in the plasma, containing electron energies, temperatures and number densities.
- Returns:
- pd.DataFrame
A DataFrame of rate matrices indexed by atomic number and ion number, with each column being a cell.
- tardis.plasma.equilibrium.rate_matrix.assemble_ion_rate_matrices(photoion_rates_df: DataFrame, recombination_rates_df: DataFrame, collisional_ionization_rates_df: DataFrame, collisional_recombination_rates_df: DataFrame, lte_ionization_factor: DataFrame | None = None, electron_density: ndarray[tuple[Any, ...], dtype[float64]] | None = None) tuple[DataFrame, MultiIndex][source]
Assemble normalized ionization matrices from collected rates.