def calculate_free_free_loss(self, **kwargs):
"""
Calculate the free-free energy loss rate of an ion. The result is returned to the
`free_free_loss` attribute.
The free-free radiative loss rate is given by Eq. 5.15a of [1]_. Writing the numerical
constant in terms of the fine structure constant :math:`\\alpha`,
.. math::
\\frac{dW}{dtdV} = \\frac{4\\alpha^3h^2}{3\pi^2m_e}\left(\\frac{2\pi k_B}{3m_e}\\right)^{1/2}Z^2T^{1/2}\\bar{g}_B
where where :math:`Z` is the nuclear charge, :math:`T` is the electron temperature, and
:math:`\\bar{g}_{B}` is the wavelength-averaged and velocity-averaged Gaunt factor. The
Gaunt factor is calculated using the methods of [2]_. Note that this expression for the
loss rate is just the integral over wavelength of Eq. 5.14a of [1]_, the free-free emission, and
is expressed in units of erg :math:`\mathrm{cm}^3\,\mathrm{s}^{-1}`.
References
----------
.. [1] Rybicki and Lightman, 1979, Radiative Processes in Astrophysics,
`(Wiley-VCH) <http://adsabs.harvard.edu/abs/1986rpa..book.....R>`_
.. [2] Karzas and Latter, 1961, ApJSS, `6, 167
<http://adsabs.harvard.edu/abs/1961ApJS....6..167K>`_
"""
# interpolate wavelength-averaged K&L gaunt factors
gf_kl_info = ch_io.gffintRead()
gamma_squared = self.ionization_potential/ch_const.boltzmann/self.Temperature
for i, atemp in enumerate(self.Temperature):
print('%s T: %10.2e gamma_squared %10.2e'%(self.ion_string, atemp, gamma_squared[i]))
gaunt_factor = splev(np.log(gamma_squared),
splrep(gf_kl_info['g2'],gf_kl_info['gffint']), ext=3)
# calculate numerical constant
prefactor = (4.*(ch_const.fine**3)*(ch_const.planck**2)/3./(np.pi**2)/ch_const.emass
* np.sqrt(2.*np.pi*ch_const.boltzmann/3./ch_const.emass))
# include abundance and ionization equilibrium
prefactor *= self.abundance*self.ioneq_one(self.stage, **kwargs)
self.free_free_loss = prefactor*(self.Z**2)*np.sqrt(self.Temperature)*gaunt_factor
评论列表
文章目录