tardis.opacities.macro_atom.macroatom_solver module

class tardis.opacities.macro_atom.macroatom_solver.BoundBoundMacroAtomSolver(levels, lines)[source]

Bases: object

levels: DataFrame
lines: DataFrame
solve(mean_intensities_blue_wing, beta_sobolevs, stimulated_emission_factors)[source]

Solves the transition probabilities and returns a DataFrame with the probabilities and a DataFrame with the macro atom transition metadata. Referenced as $p_i$ in Lucy 2003, https://doi.org/10.1051/0004-6361:20030357

Parameters:
mean_intensities_blue_wingpd.DataFrame

Mean intensity of the radiation field of each line in the blue wing for each shell. For more detail see Lucy 2003, https://doi.org/10.1051/0004-6361:20030357 Referenced as ‘J^b_{lu}’ internally, or ‘J^b_{ji}’ in the original paper.

beta_sobolevspd.DataFrame

Escape probabilites for the Sobolev approximation.

stimulated_emission_factorspd.DataFrame

Stimulated emission factors for the lines.

Returns:
MacroAtomState

A MacroAtomState object containing the transition probabilities, transition metadata, and a mapping from line IDs to macro atom level upper indices.

class tardis.opacities.macro_atom.macroatom_solver.LegacyMacroAtomSolver(initialize=True, normalize=True)[source]

Bases: object

Solver class for Macro Atom related opacities

Parameters:
initialize: bool

Whether or not to initialize the transition probabilitiy coefficients and block references when solving the first time (default True)

normalize: bool

Whether or not to normalize the transition probabilities to unity. Default True

initialize: bool = True
initialize_transition_probabilities(atomic_data)[source]

initialize the transition probability coefficients and block references when solving the first time

Parameters:
atomic_datatardis.io.atom_data.AtomData

Atomic Data

normalize: bool = True
solve(mean_intensities_lines_blue_wing, atomic_data, tau_sobolev, stimulated_emission_factor, beta_sobolev=None)[source]

Solved the Macro Atom State

Parameters:
mean_intensities_lines_blue_wingpd.DataFrame

Mean intensity of the radiation field of each line in the blue wing for each shell

atomic_datatardis.io.atom_data.AtomData

Atomic Data

tau_sobolevpd.DataFrame

Expansion Optical Depths

stimulated_emission_factorpd.DataFrame
beta_sobolevpd.DataFrame
Returns:
tardis.opacities.macroatom_state.MacroAtomState

State of the macro atom ready to be placed into the OpacityState

solve_transition_probabilities(atomic_data, mean_intensities_lines_blue_wing, tau_sobolev, beta_sobolev, stimulated_emission_factor)[source]

Solve the basic transition probabilities for the macroatom

Parameters:
atomic_datatardis.io.atom_data.AtomData

Atomic Data

mean_intensities_lines_blue_wingpd.DataFrame

Mean intensity of the radiation field of each line in the blue wing for each shell For more detail see Lucy 2003, https://doi.org/10.1051/0004-6361:20030357

tau_sobolevpd.DataFrame

Expansion Optical Depths

beta_sobolevpd.DataFrame

Modified expansion Optical Depths

stimulated_emission_factornp.ndarray
Returns:
pd.DataFrame

Transition Probabilities

tardis.opacities.macro_atom.macroatom_solver.create_line2macro_level_upper(macro_atom_transition_metadata, lines_level_upper)[source]

Create a mapping from line transitions to macro atom level indices for upper levels. This method creates a mapping that connects line transition upper levels to their corresponding macro atom level indices. It first extracts unique source levels from the macro atom transition metadata and assigns sequential indices to them, then maps the line upper levels to these indices.

Parameters:
macro_atom_transition_metadatapandas.DataFrame
lines_level_upperpandas.MultiIndex or array-like
Returns:
pandas.Series
tardis.opacities.macro_atom.macroatom_solver.normalize_transition_probabilities(probabilities_df)[source]

Normalize transition probabilities by their source levels.

Parameters:
probabilities_dfpandas.DataFrame

DataFrame containing transition probabilities with a ‘source’ column for grouping.

Returns:
pandas.DataFrame

Normalized probabilities where each source group sums to 1.0. NaN values are replaced with 0.0 for cases where all transition probabilities are zero (typically ground levels in macroatom).

tardis.opacities.macro_atom.macroatom_solver.reindex_sort_and_clean_probabilities_and_metadata(normalized_probabilities, macro_atom_transition_metadata)[source]

Reindex and sort macro atom transition probabilities and metadata.

Parameters:
normalized_probabilitiespandas.DataFrame

DataFrame containing normalized transition probabilities.

macro_atom_transition_metadatapandas.DataFrame

DataFrame containing metadata for macro atom transitions.

Returns:
tuple of pandas.DataFrame

Reindexed normalized probabilities and cleaned metadata sorted by atomic number, ion number, and source level.