src.RadiativeTransfer.Profile.Voigt

src.RadiativeTransfer.Profile.Voigt(*args, **kwargs)

Calculate Doppler width normalized voigt function using polynomial fitting formula.

voigt(a,x) function itself is not a vectorized function, only available to scalar operation. so we applied

nb.vectorize([nb.float64(nb.float64,nb.float64)],nopython=True).

Parameters
  • a (np.double or array-like) – damping constant normalized by Doppler width, [-]

  • x (np.double or array-like) – Doppler width normalized mesh, [-]

Returns

res – voigt function, normalized to 1, [-]

Return type

np.double or array-like

Notes

The Voigt function is not normalized but has area \(\sqrt{\pi}\) in x unit

This is a combination of Humlicek(1982) 1 and Hui et al.(1978) 2 methods.

When \(a > 0.1\), one can not ignore the wing component of Voigt function. That is, to guarantee its normalization, one has to take care of whether the mesh points are wide enough.

References

1

J.Humlicek, ‘Optimized computation of the voigt and complex probability functions’, Journal of Quantitative Spectroscopy and Radiative Transfer (JQSRT), Volume 27, Issue 4, April 1982, Pages 437-444.

2

A.K.Hui, B.H.Armstrong, A.A.Wray, ‘Rapid computation of the Voigt and complex error functions’, Journal of Quantitative Spectroscopy and Radiative Transfer (JQSRT), Volume 19, Issue 5, May 1978, Pages 509-516.