tardis.spectrum.virtual_packet module

Virtual-packet spectrum post-processing.

tardis.spectrum.virtual_packet.add_vpacket_collection_to_histogram(v_packets_energy_hist: ndarray[tuple[Any, ...], dtype[float64]], vpacket_collection: VPacketCollection, spectrum_frequency_grid: ndarray[tuple[Any, ...], dtype[float64]], delta_nu: float) → None[source]

Add virtual packet collection energies to a spectrum histogram.

Parameters:
v_packets_energy_histnumpy.ndarray

Energy histogram to update in place.

vpacket_collectionVPacketCollection

Finalized virtual packet collection.

spectrum_frequency_gridnumpy.ndarray

Frequency-bin edges for the virtual-packet histogram.

delta_nufloat

Frequency bin width.

tardis.spectrum.virtual_packet.calculate_virtual_packet_spectrum(geometry_state_numba: NumbaHomologousRadial1DGeometry | NumbaRadial1DGeometry, time_explosion: float, opacity_state_numba: OpacityStateNumba, montecarlo_configuration: MonteCarloConfiguration, spectrum_frequency_grid: ndarray[tuple[Any, ...], dtype[float64]], tracker_events: TrackerEventArrays, vpacket_collections: List[VPacketCollection], tau_russian: float, survival_probability: float, trace_vpacket_volley_function: Callable[[...], None]) → ndarray[tuple[Any, ...], dtype[float64]][source]

Calculate a virtual-packet spectrum from real-packet histories.

Parameters:
geometry_state_numba

Numba geometry object used for real-packet transport.

time_explosionfloat

Time since explosion in seconds. Non-homologous mode accepts but does not use this value.

opacity_state_numba

Frozen opacity state used for real-packet transport.

montecarlo_configurationMonteCarloConfiguration

Monte Carlo transport configuration.

spectrum_frequency_gridnumpy.ndarray

Frequency-bin edges for the virtual-packet histogram.

tracker_eventsTrackerEventArrays

Completed real-packet event histories, e.g. from tracker_full_df_to_event_arrays.

vpacket_collectionsnumba.typed.List

Unused virtual packet collection for each real packet, in the order of tracker_events.packet_id, e.g. from create_vpacket_collections. Filled and finalized in place.

tau_russianfloat

Optical depth above which virtual packets survive by survival_probability.

survival_probabilityfloat

Probability that a tau_russian virtual packet survives.

trace_vpacket_volley_function

Mode-specific virtual-packet propagation function.

Returns:
numpy.ndarray

Virtual-packet energy histogram on spectrum_frequency_grid.

Raises:
ValueError

If there is not exactly one unused collection per real packet.

tardis.spectrum.virtual_packet.create_vpacket_collections(no_of_packets: int, spectrum_frequency_grid: ndarray[tuple[Any, ...], dtype[float64]], vpacket_spawn_start_frequency: float, vpacket_spawn_end_frequency: float, number_of_vpackets: int) → List[VPacketCollection][source]

Create per-packet virtual packet collections.

Parameters:
no_of_packetsint

Number of real packets.

spectrum_frequency_gridnumpy.ndarray

Frequency-bin edges for the real- and virtual-packet histograms. n + 1 edges for n bins, with uniform spacing.

vpacket_spawn_start_frequencyfloat

Lowest real-packet frequency that spawns virtual packets [Hz].

vpacket_spawn_end_frequencyfloat

Highest real-packet frequency that spawns virtual packets [Hz].

number_of_vpacketsint

Number of virtual packets spawned per real packet interaction.

Returns:
numba.typed.List

Per-packet virtual packet collections.