tardis.spectrum.formal_integral.formal_integral_solver module

class tardis.spectrum.formal_integral.formal_integral_solver.FormalIntegralSolver(points: int, interpolate_shells: int, method: str | None = None)[source]

Bases: object

Formal integral solver for TARDIS spectra.

Attributes:
pointsint

Number of points for the formal integral calculation

interpolate_shellsint

Number of shells to interpolate to. If > 0, interpolation is performed to the specified number of shells. If <= 0, no interpolation is performed and original shell structure is used.

methodstr or None

Method to use for the formal integral solver (‘numba’ or ‘cuda’)

Initialize the formal integral solver.

Parameters:
pointsint

Number of points for the formal integral calculation

interpolate_shellsint

Number of shells to interpolate to. If > 0, interpolation is performed to the specified number of shells. If <= 0, no interpolation is performed and original shell structure is used.

methodstr, optional

Method to use for the formal integral solver (‘numba’ or ‘cuda’). If None, will be determined based on GPU availability.

interpolate_integrator_quantities(r_inner_original: ndarray, r_outer_original: ndarray, r_inner_interpolated: ndarray, r_outer_interpolated: ndarray, source_function_state, simulation_state, opacity_state, electron_densities) tuple[ndarray, ndarray, ndarray, ndarray, ndarray, ndarray, ndarray][source]

Interpolate the integrator quantities to interpolate_shells.

Parameters:
r_inner_originalnp.ndarray

Original inner radii of the shells

r_outer_originalnp.ndarray

Original outer radii of the shells

r_inner_interpolatednp.ndarray

Pre-computed inner radii for interpolation

r_outer_interpolatednp.ndarray

Pre-computed outer radii for interpolation

source_function_statetardis.spectrum.formal_integral.source_function.SourceFunctionState

Data class that holds the computed source function values which will be interpolated

simulation_statetardis.model.SimulationState

The simulation state object

opacity_statetardis.opacities.opacity_state.OpacityState

The opacity state object (regular, non-numba)

electron_densitiespd.Series

Electron densities for each shell

Returns:
tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray]

Interpolated values of att_S_ul_interpolated, Jred_lu_interpolated, Jblue_lu_interpolated, r_inner_interpolated, r_outer_interpolated, tau_sobolevs_interpolated, and electron_densities_interpolated

interpolate_shells: int
method: str | None
points: int
setup(transport, opacity_state=None, macro_atom_state=None) object[source]

Prepare the necessary data for the formal integral solver.

Parameters:
transporttardis.transport.montecarlo.MontecarloTransport

The transport configuration object

opacity_statetardis.opacities.opacity_state.OpacityState

The regular (non-numba) opacity state object to be converted

macro_atom_statetardis.opacities.macro_atom.macroatom_state.MacroAtomState, optional

The macro atom state object

Returns:
opacity_state_numbatardis.opacities.opacity_state.OpacityStateNumba

The opacity state converted to numba format

setup_integrator(opacity_state_numba, time_explosion: Quantity, r_inner: ndarray, r_outer: ndarray) None[source]

Set up the integrator depending on the choice of method.

Parameters:
opacity_state_numbatardis.opacities.opacity_state.OpacityStateNumba

The opacity state (numba format) to use for the formal integral

time_explosionu.Quantity

The time of the explosion

r_innernp.ndarray

The inner radii of the shells

r_outernp.ndarray

The outer radii of the shells

solve(frequencies: Quantity, simulation_state, transport_solver, opacity_state, atomic_data, electron_densities, macro_atom_state=None) TARDISSpectrum[source]

Solve the formal integral.

Parameters:
frequenciesu.Quantity

The frequency grid for the formal integral

simulation_statetardis.model.SimulationState

State which holds information about each shell

transport_solvertardis.transport.montecarlo.MonteCarloTransportSolver

The transport solver

opacity_statetardis.opacities.opacity_state.OpacityState

Regular (non-numba) opacity state; will be converted to numba via setup

atomic_datatardis.atomic.AtomicData

Atomic data containing atomic properties

electron_densitiespd.Series

Electron densities for each shell

macro_atom_statetardis.opacities.macro_atom.macroatom_state.MacroAtomState, optional

State of the macro atom (required for converting opacity_state to numba)

Returns:
TARDISSpectrum

The formal integral spectrum