Source code for superbol.luminosity
import math
from superbol.bc_polynomial import calc_bolometric_correction as bc
from superbol.bc_polynomial import quadrature_sum
from superbol.constants import mbol_zeropoint
[docs]def calc_Fbol(color_value, color_err, color_type, v_magnitude,
v_magnitude_err):
"""Calculates the bolometric flux of a Type II-P supernova.
Args:
color_value (float): B-V, V-I, or B-I color of the supernova in
magnitudes (corrected for reddening and extinction from
the host and MWG.)
color_err (float): Uncertainty in the photometric color.
color_type (str): String signifying which color color_value
represents. Valid values are "BminusV" for B-V, "VminusI"
for V-I, and "BminusI" for B-I.
v_magnitude (float): Photometric magnitude in the V band, corrected for
host + MWG extinction.
v_magnitude_err (float): Uncertainty in the V band magnitude after
correction for host + MWG extinction.
Returns:
tuple: A tuple containing the bolometric flux used when calculating the
bolometric luminosity, and the uncertainty in that number.
(Fbol, uncertainty)
(-999, -999) if the bolometric correction calculated from the
color_value and color_type is -999 (which means the observed
color is outside the range of validity of the polynomial fit.)
"""
bolometric_correction, bc_err = bc(color_value, color_err, color_type)
if bolometric_correction == -999:
Fbol = -999
Fbol_uncertainty = -999
else:
Fbol = 10**(-0.4 *
(bolometric_correction + v_magnitude + mbol_zeropoint))
Fbol_uncertainty = (0.4 * math.log(10) * Fbol *
math.sqrt(bc_err**2 + v_magnitude_err**2))
return Fbol, Fbol_uncertainty
[docs]def calc_4piDsquared(distance, distance_err):
"""Calculates :math:`4\\pi D^2`, to convert flux to luminosity.
Args:
distance (float): The distance to the supernova in centimeters.
distance_err (float): The uncertainty in the distance to the supernova.
Returns:
tuple: A tuple containing the :math:`4 \\pi D^2`, and the uncertainty of this number.
(4piDsquared, uncertainty)
"""
fourPiDsquared = 4.0 * math.pi * distance**2.0
fourPiDsquared_uncertainty = 8.0 * math.pi * distance * distance_err
return fourPiDsquared, fourPiDsquared_uncertainty
[docs]def calc_Lbol(color_value, color_err, color_type, v_magnitude, v_magnitude_err,
distance, distance_err):
"""Calculates the bolometric luminosity of a Type II-P Supernova.
Args:
color_value (float): B-V, V-I, or B-I color of the supernova in
magnitudes (corrected for reddening and extinction from
the host and MWG.)
color_err (float): Uncertainty in the photometric color.
color_type (str): String signifying which color color_value
represents. Valid values are "BminusV" for B-V, "VminusI"
for V-I, and "BminusI" for B-I.
v_magnitude (float): Photometric magnitude in the V band, corrected for
host + MWG extinction.
v_magnitude_err (float): Uncertainty in the V band magnitude after
correction for host + MWG extinction.
distance (float): The distance to the supernova in centimeters.
distance_err (float): The uncertainty in the distance to the supernova.
Returns:
tuple: A tuple containing the bolometric luminosity in ergs per second,
and the uncertainty in that value.
(Lbol, uncertainty)
(-999, -999) if the bolometric correction is -999 (which means
the observed color value is outside the range of vaidity of the
polynomial fit used to determine the bolometric correction.)
"""
Fbol, Fbol_err = calc_Fbol(color_value, color_err, color_type, v_magnitude,
v_magnitude_err)
fourPiDsquared, fourPiDsquared_err = calc_4piDsquared(distance,
distance_err)
if Fbol == -999:
Lbol = -999
Lbol_uncertainty = -999
else:
Lbol = Fbol * fourPiDsquared
Lbol_uncertainty = quadrature_sum(fourPiDsquared * Fbol_err,
Fbol * fourPiDsquared_err)
return Lbol, Lbol_uncertainty