Functions | |
std::pair< Vec, bool > | sampleAtomVelocity (double lambda, double T, double nH, Direction kin, Configuration *config, Random *random) |
double | section (double lambda, double T) |
double | shiftWavelength (double lambda, const Vec &vatom, const Direction &kin, const Direction &kout) |
This namespace offers utility functions related to the treatment of Lyman-alpha (Lya) line transfer.
When a Lya photon is absorbed by a neutral hydrogen atom in the ground state, the atom is excited to the 2p energy level and a new Lya photon is emitted almost immediately as a result of the subsequent downward transition. This happens fast enough that we can consider the combined process as a scattering event.
Scattering cross section
The cross section for a single hydrogen atom of the Lya scattering of a photon can be derived using quantum mechanical considerations, resulting in a sharply peaked profile as a function of the photon wavelength in the atom's rest frame. Because each atom has its own velocity, a photon with a given wavelength in the gas rest frame will appear Doppler shifted to a slightly different wavelength for each atom in the gas. To compute the Lya absorption cross section for a collection of moving atoms, we must therefore convolve the single-atom cross section with the atom velocity distribution, which in turn depends on the gas temperature.
Assuming a Maxwell-Boltzmann velocity distribution, we define the characteristic thermal velocity
where
where
where the approximate equality holds for
After neglecting some higher order terms, the convolution of the single-atom profile with the Maxwell-Boltzmann velocity distribution yields the following expression for the velocity-weighted Lya scattering cross section
where the cross section at the line center
the Voigt parameter
with
which is normalized so that
Frequency shift due to atom velocity
In most astrophysical conditions, the energy of the Lyman-alpha photon before and after scattering is identical in the frame of the interacting atom. This is because the life time of the atom in its 2p state is very short so that it is not perturbed over this short time interval. Because of the random thermal motion of the atom, energy conservation in the atom's frame translates to a change in the energy of the incoming and outgoing photon that depends on the velocity of the atom and the scattering direction. Given the velocity of the atom
This analysis ignores the energy transferred from the photon to the atom through recoil, an approximation that is justified in regular astrophysical conditions.
Assuming a Maxwell-Boltzmann velocity distribution for the atoms, the two components of the dimensionless atom velocity
Scattering phase function
Lyman-alpha scattering takes one of two forms: isotropic scattering or dipole scattering; the latter is also called Rayleigh scattering. The corresponding phase functions depend only on the cosine of the scattering angle
and
Quantum mechanical considerations lead to a simple recipe for selecting the appropriate phase function depending on whether the incoming photon frequency is in the core or in the wings of the cross section. The recipe prescribes to treat 1/3 of all core scattering events as dipole, and the remaining 2/3 as isotropic; and to treat all wing scattering events as dipole. For the purpose of this recipe, the scattering event is considered to occur in the core if the incoming dimensionless photon frequency in the rest frame of the interacting atom is smaller than a critical value,
std::pair< Vec, bool > LyaUtils::sampleAtomVelocity | ( | double | lambda, |
double | T, | ||
double | nH, | ||
Direction | kin, | ||
Configuration * | config, | ||
Random * | random | ||
) |
This function draws a random hydrogen atom velocity as seen by an incoming photon from the appropriate probability distributions, reflecting the preference for photons to be scattered by atoms to which they appear close to resonance. In addition, it determines whether the photon scatters through the isotropic or dipole phase function.
The function arguments include the photon packet wavelength as it is perceived in the local gas frame and the hydrogen temperature and number density in the current spatial cell. The latter two values are used in the variable acceleration scheme. The return value is a pair: the first item is the atom velocity and the second item is true for the dipole phase function and false for isotropic scattering.
The function proceeds as follows:
double LyaUtils::section | ( | double | lambda, |
double | T | ||
) |
This function returns the Lyman-alpha scattering cross section per hydrogen atom
double LyaUtils::shiftWavelength | ( | double | lambda, |
const Vec & | vatom, | ||
const Direction & | kin, | ||
const Direction & | kout | ||
) |
This function returns the Doppler-shifted wavelength in the gas bulk rest frame after a Lyman-alpha scattering event, given the incoming wavelength in the gas bulk rest frame, the velocity of the interacting atom, and the incoming and outgoing photon packet directions.