tardis.transport.montecarlo.packet_source.black_body module¶
- class tardis.transport.montecarlo.packet_source.black_body.BlackBodySimpleSource(*args: Any, **kwargs: Any)[source]¶
Bases:
BasePacketSource,HDFWriterMixinSimple 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']¶