tardis.transport.montecarlo.packet_source.black_body module

class tardis.transport.montecarlo.packet_source.black_body.BlackBodySimpleSource(*args: Any, **kwargs: Any)[source]

Bases: BasePacketSource, HDFWriterMixin

Simple packet source that generates blackbody packets for Monte Carlo simulations.

This class creates packets with properties derived from blackbody radiation, including appropriate frequency distribution, uniform radii, and cosine-weighted direction distribution.

Parameters:
radiusastropy.units.Quantity, optional

Initial packet radius. Default is None.

temperatureastropy.units.Quantity, optional

Blackbody temperature. Default is None.

**kwargs

Additional keyword arguments passed to the parent class.

Attributes:
radiusastropy.units.Quantity

Initial packet radius.

temperatureastropy.units.Quantity

Blackbody temperature.

Initialize BlackBodySimpleSource.

Parameters:
radiusastropy.units.Quantity, optional

Initial packet radius. Default is None.

temperatureastropy.units.Quantity, optional

Absolute temperature. Default is None.

**kwargsAny

Additional keyword arguments passed to parent class.

create_packet_energies(no_of_packets: int) Quantity[source]

Create packet energies with uniform distribution.

Uniformly distribute energy in arbitrary units where the ensemble of packets has total energy of 1 erg.

Parameters:
no_of_packetsint

Number of packets to create.

Returns:
astropy.units.Quantity

Array of packet energies in erg.

create_packet_mus(no_of_packets: int) ndarray[source]

Create zero-limb-darkening packet direction cosines.

Direction cosines are distributed according to \(\mu=\sqrt{z}\), where \(z \in [0, 1]\) is uniformly distributed.

Parameters:
no_of_packetsint

Number of packets to create.

Returns:
numpy.ndarray

Array of direction cosines for packets.

create_packet_nus(no_of_packets: int, l_samples: int = 1000) Quantity[source]

Create packet \(\nu\) distributed using the algorithm described in Bjorkman & Wood 2001 (page 4) which references Carter & Cashwell 1975: First, generate a uniform random number, \(\xi_0 \in [0, 1]\) and determine the minimum value of \(l, l_{\rm min}\), that satisfies the condition .. math:

\sum_{i=1}^{l} i^{-4} \ge {{\pi^4}\over{90}} m_0 \;.

Next obtain four additional uniform random numbers (in the range 0 to 1) \(\xi_1, \xi_2, \xi_3, {\rm and } \xi_4\). Finally, the packet frequency is given by .. math:

x = -\ln{(\xi_1\xi_2\xi_3\xi_4)}/l_{\rm min}\;.

where \(x=h\nu/kT\)

Parameters:
no_of_packetsint
l_samplesint

number of l_samples needed in the algorithm

Returns:
array of frequencies

numpy.ndarray

create_packet_radii(no_of_packets: int) Quantity[source]

Create packet radii.

All packets are created at the same radius (inner boundary).

Parameters:
no_of_packetsint

Number of packets to create.

Returns:
astropy.units.Quantity

Array of packet radii in CGS units.

create_packets(no_of_packets: int, *args: Any, **kwargs: Any) PacketCollection[source]

Create packet collection.

Parameters:
no_of_packetsint

Number of packets to create.

*argsAny

Additional positional arguments.

**kwargsAny

Additional keyword arguments.

Returns:
PacketCollection

Collection of packets.

Raises:
ValueError

If radius or temperature is not set.

classmethod from_simulation_state(simulation_state, *args: Any, **kwargs: Any) BlackBodySimpleSource[source]

Create BlackBodySimpleSource from simulation state.

Parameters:
simulation_stateSimulationState

The simulation state object containing inner radius and temperature.

*args

Additional positional arguments.

**kwargs

Additional keyword arguments.

Returns:
BlackBodySimpleSource

New instance initialized with simulation state parameters.

hdf_name = 'black_body_simple_source'
hdf_properties = ['radius', 'temperature', 'base_seed']
set_temperature_from_luminosity(luminosity: Quantity) None[source]

Set blackbody packet source temperature from luminosity.

Uses the Stefan-Boltzmann law to derive temperature from the given luminosity and the source radius.

Parameters:
luminosityastropy.units.Quantity

Total luminosity to match.