Analytic Functions (astropy.analytic_functions
)¶
Introduction¶
The astropy.analytic_functions
subpackage provides analytic functions that
are commonly used in astronomy. These already understand
Quantity
, i.e., they can handle units of input and output
parameters.
In future versions of astropy
, many of these might be accessible as
Model
.
Getting Started¶
>>> from astropy import units as u
>>> from astropy.analytic_functions import blackbody_lambda, blackbody_nu
Calculate blackbody flux for 10000 K at 6000 Angstrom:
>>> blackbody_lambda(6000 * u.AA, 10000 * u.K)
<Quantity 15315791.836941158 erg / (Angstrom cm2 s sr)>
>>> blackbody_nu(6000 * u.AA, 10000 * u.K)
<Quantity 0.00018391673686797075 erg / (cm2 Hz s sr)
Using astropy.analytic_functions
¶
Blackbody Radiation¶
Blackbody flux is calculated with Planck law (Rybicki & Lightman 1979):
B_{\lambda}(T) = \frac{2 h c^{2} / \lambda^{5}}{exp(h c / \lambda k T) - 1} B_{\nu}(T) = \frac{2 h \nu^{3} / c^{2}}{exp(h \nu / k T) - 1}
where the unit of B_{\lambda}(T) is
erg \; s^{-1} cm^{-2} \AA^{-1} sr^{-1}, and B_{\nu}(T) is
erg \; s^{-1} cm^{-2} Hz^{-1} sr^{-1}.
blackbody_lambda()
and
blackbody_nu()
calculate the
blackbody flux for B_{\lambda}(T) and B_{\nu}(T), respectively.
Examples¶
>>> import numpy as np
>>> from astropy import units as u
>>> from astropy.analytic_functions import blackbody_lambda, blackbody_nu
Calculate blackbody flux for 5000 K at 100 and 10000 Angstrom while suppressing any Numpy warnings:
>>> wavelengths = [100, 10000] * u.AA
>>> temperature = 5000 * u.K
>>> with np.errstate(all='ignore'):
... flux_lam = blackbody_lambda(wavelengths, temperature)
... flux_nu = blackbody_nu(wavelengths, temperature)
>>> flux_lam
Quantity [1.27452545e-108, 7.10190526e+005] erg / (Angstrom cm2 s sr)>
>>> flux_nu
<Quantity [4.25135927e-123, 2.36894060e-005] erg / (cm2 Hz s sr)>
Plot a blackbody spectrum for 5000 K:
(Source code, png, hires.png, pdf)

Note that an array of temperatures can also be given instead of a single
temperature. In this case, the Numpy broadcasting rules apply: for instance, if
the frequency and temperature have the same shape, the output will have this
shape too, while if the frequency is a 2-d array with shape (n, m)
and the
temperature is an array with shape (m,)
, the output will have a shape (n, m)
.
See Also¶
Rybicki, G. B., & Lightman, A. P. 1979, Radiative Processes in Astrophysics (New York, NY: Wiley)
Reference/API¶
astropy.analytic_functions.blackbody Module¶
Functions related to blackbody radiation.
Functions¶
blackbody_nu (in_x, temperature) |
Calculate blackbody flux per steradian, B_{\nu}(T). |
blackbody_lambda (in_x, temperature) |
Like blackbody_nu() but for B_{\lambda}(T). |