Ionized Hydrogen models¶
Hydrogen Models¶
Hydrogen in HII regions is typically assumed to follow Case B recombination theory.
The values for the Case B recombination coefficients are given by Hummer & Storey (1987). They are also computed in Hummer (1994) and tabulated at a wiki. I had to OCR and pull out by hand some of the coefficients.
However, Storey & Hummer 1995 might be a better resource now? https://cdsarc.unistra.fr/viz-bin/cat/VI/64
Module API¶
- pyspeckit.spectrum.models.hydrogen.add_to_registry(sp)[source] [github] [bitbucket]¶
Add the Hydrogen model to the Spectrum’s fitter registry
- pyspeckit.spectrum.models.hydrogen.find_lines(xarr)[source] [github] [bitbucket]¶
Given a
pyspeckit.units.SpectrosopicAxis
instance, finds all the lines that are in bounds. Returns a list of line names.
- pyspeckit.spectrum.models.hydrogen.hydrogen_fitter(sp, temperature=10000, tiedwidth=False)[source] [github] [bitbucket]¶
Generate a set of parameters identifying the hydrogen lines in your spectrum. These come in groups of 3 assuming you’re fitting a gaussian to each. You can tie the widths or choose not to.
- temperature [ 5000, 10000, 20000 ]
The case B coefficients are computed for 3 temperatures
- tiedwidth [ bool ]
Should the widths be tied?
Returns a list of
tied
andguesses
in the xarr’s units
- pyspeckit.spectrum.models.hydrogen.hydrogen_model(xarr, amplitude=1.0, width=0.0, velocity=0.0, a_k=0.0, temperature=10000)[source] [github] [bitbucket]¶
Generate a set of parameters identifying the hydrogen lines in your spectrum. These come in groups of 3 assuming you’re fitting a gaussian to each. You can tie the widths or choose not to.
- Parameters
sp : pyspeckit.Spectrum
The spectrum to fit
temperature : [ 5000, 10000, 20000 ]
The case B coefficients are computed for 3 temperatures
a_k : float
The K-band extinction normalized to 2.2 microns. Simple exponential.
width : float
Line width in km/s
velocity : float
Line center in km/s
amplitude : float
arbitrary amplitude of the first line (all other lines will be scaled to this value)
- Returns
np.ndarray with same shape as sp.xarr :
- pyspeckit.spectrum.models.hydrogen.parse_storey1995(data, e_or_r='E')[source] [github] [bitbucket]¶
Returns a dictionary with keys like:” (100.0, 1, 1000.0, ‘B’, 2, 124)
where the keys are
dens, Z, temp, case, nmin, nc
dens is the density in cm^-3, Z is the number of electrons, temp is the temperature in K, case is case A or B recombination (Case B, no transitions into n=1, no Lyman transitions, are included) nmin and nc - I don’t know what these are
Each entry contains a mapping from [NU,NL] -> emissivity, where the emissivity is in erg/s/cm^3 and NU, NL are the upper and lower electronic levels
- pyspeckit.spectrum.models.hydrogen.retrieve_storey1995(temperature=10000, case='b')[source] [github] [bitbucket]¶
Retrieve the Hummer and Storey tables from Vizier: https://cdsarc.cds.unistra.fr/viz-bin/cat/VI/64
based on the temperature and recombination case.
The data are parsed into a dictionary using the function parse_storey1995 below
- pyspeckit.spectrum.models.hydrogen.rrl(n, dn=1, amu=1.007825, Z=1)[source] [github] [bitbucket]¶
compute Radio Recomb Line freqs in GHz from Brown, Lockman & Knapp ARAA 1978 16 445
- UPDATED:
Gordon & Sorochenko 2009, eqn A6
- Parameters
n : int
The number of the lower level of the recombination line (H1a is Lyman alpha, for example)
dn : int
The delta-N of the transition. alpha=1, beta=2, etc.
amu : float
The mass of the central atom
Z : int
The ionization parameter for the atom. Z=1 is neutral, Z=2 is singly ionized, etc. For hydrogen, only z=1 makes sense, since ionized hydrogen has no electrons and therefore cannot have recombination lines.
- Returns
frequency in GHz :