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']¶