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
- 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