tardis.energy_input.util module¶
- tardis.energy_input.util.angle_aberration_gamma(direction_vector, position_vector, time)[source]¶
Angle aberration formula for photons in 3D
- Parameters:
- direction_vectorarray
- position_vectorarray
- timefloat
- Returns:
- array
New direction after aberration
- tardis.energy_input.util.compton_theta_distribution(energy, sample_resolution=100)[source]¶
Calculates the cumulative distribution function of theta angles for Compton Scattering
- Parameters:
- energyfloat
- sample_resolutionint
- Returns:
- theta_anglesOne dimensional Numpy array, dtype float
- norm_theta_distributionOne dimensional Numpy array, dtype float
- tardis.energy_input.util.convert_half_life_to_astropy_units(half_life_string)[source]¶
Converts input half-life to use astropy units
- Parameters:
- half_life_stringstr
Half-life as a string
- Returns:
- astropy Quantity
Half-life in seconds
- tardis.energy_input.util.doppler_factor_3d(direction_vector, position_vector, time)[source]¶
Doppler shift for photons in 3D
- Parameters:
- direction_vectorarray
- position_vectorarray
- timefloat
- Returns:
- float
Doppler factor
- tardis.energy_input.util.euler_rodrigues(theta, direction)[source]¶
Calculates the Euler-Rodrigues rotation matrix
- Parameters:
- thetafloat
angle of rotation in radians
- directionOne dimensional Numpy array, dtype float
x, y, z direction vector
- Returns:
- rotation matrixTwo dimensional Numpy array, dtype float
- tardis.energy_input.util.get_index(value, array)[source]¶
Get the index that places a value at array[i] < array <= vec[i+1]
- Parameters:
- valuefloat
Value to locate
- arrayarray
Array to search
- Returns:
- int
Index
- tardis.energy_input.util.get_perpendicular_vector(original_direction)[source]¶
Computes a random vector which is perpendicular to the input vector
- Parameters:
- original_directionarray
- Returns:
- numpy.ndarray
Perpendicular vector to the input
- tardis.energy_input.util.get_random_phi_photon()[source]¶
Get a random phi direction between 0 and 2 * pi
- Returns:
- float
Random phi direction
- tardis.energy_input.util.get_random_theta_photon()[source]¶
Get a random theta direction between 0 and pi
- Returns:
- float
Random theta direction
- tardis.energy_input.util.get_random_unit_vector()[source]¶
Generate a random unit vector
- Returns:
- array: random unit vector
- tardis.energy_input.util.klein_nishina(energy, theta_C)[source]¶
Calculates the Klein-Nishina equation
https://en.wikipedia.org/wiki/Klein%E2%80%93Nishina_formula
\[\]rac{r_e}{2} [1 + kappa (1 - cos heta_C)]^{-2} left( 1 + cos^2 heta_C + rac{kappa^2 (1 - cos heta_C)^2}{1 + kappa(1 - cos heta_C)} ight)
where \(\kappa = E / (m_e c^2)\)
- Parameters:
- energyfloat
Packet energy
- theta_Cfloat
Compton angle
- Returns:
- float
Klein-Nishina solution
- tardis.energy_input.util.normalize_vector(vector)[source]¶
Normalizes a vector in Cartesian coordinates
- Parameters:
- vectorOne-dimensional Numpy Array, dtype float
Input vector
- Returns:
- One-dimensional Numpy Array, dtype float
Normalized vector
- tardis.energy_input.util.solve_quadratic_equation(position, direction, radius)[source]¶
Solves the quadratic equation for the distance to the shell boundary
- Parameters:
- positionarray
- directionarray
- radiusfloat
- Returns:
- solution_1float
- solution_2float