The usage of the Kielkopf (Ref. 1) and other "closed-form expresions" for the Voigt function (see Ref. 2, and the Introduction in Ref. 3) are not recommended due to their low accuracy (see Ref. 4) but can be useful for evaluation purposes where high calculation precision is not required and higher calculation speed is preferable.
The description below outilnes the steps to implement the Kielkopf algorithm (Ref. 1) using the nonation given by Schreier (see Ref. 2 and the Appendix in Ref. 5).   If this approximation is used in conjunction with the HITRAN database simulations, the preceding calculation steps can be found at this link.
The Voigt profile function in the Kielkopf algorithm approximation may be written (Ref. 2 and the Appendix in Ref. 5) as follows:
$$ Voigt(x,y) = K(x,y) = K(0, y) \cdot \left[ \left( 1 - \eta(y) \right) \cdot G(x) + \eta(y) \cdot L(x) \right] $$and with an additional correction term this becomes
$$ Voigt(x,y) = K(x, y) + C(x, y) $$where according to the Appendix in Ref. 5  $G(x)$ and $L(x)$ are
$$ G(x) = exp \left( - \sqrt{ln(2)} \cdot \left( \frac {x}{x_{h}} \right)^{2} \right) ; \qquad L(x) = \left( 1 + \left( \frac {x}{x_{h}} \right)^{2} \right)^{-1} $$the correction term $C(x)$ according to Ref. 2, Equation 17 is
$$ C(x) = \eta \left( 1 - \eta \right) \cdot \left( G(x) - L(x) \right) \cdot \frac{k_{1} + k_{2}x^{2}}{1 + k_{3}x^{2} + k_{4}x^{4}} $$where (see the Appendix to Ref. 2)
$$ k_{1} = 0.8029; \qquad k_{2} = -0.4207 $$ $$ k_{3} = 0.2030; \qquad k_{4} = 0.07335 $$and (see Ref. 2 or the Appendix in Ref. 5)
$$ \eta = \eta(y) = \frac{y \cdot x_{h}}{1 + y \cdot x_{h}} $$ $$ x_{h} = \frac{y}{2} \cdot \left(1 + \epsilon \cdot ln(2) + \sqrt{ \left( 1 - \epsilon \cdot ln(2) \right)^{2} + 4 \cdot \frac{ln(2)}{y^{2}} } \right) $$ $$ \epsilon = 0.0990 $$please note that in the equation for $x_{h}$ the last $y$ in the denominator is squared in Ref. 2 as opposed to the Appendix in Ref. 5 where it is not which apparently was a typo.
According to Equation 2 in Ref. 2 the $K(0, y)$ term in the Voigt function may be further repesented as follows
$$ K(0, y) = exp(y^{2}) \cdot \left( 1 - erf(y) \right) $$where $ erf(y) $ is the error function which may be numerically approximated with elementary functions.  The Kielkopf algorithm is stated to have an accuracy of 0.0001, as such the approximation formula with a maximum stated error of 1.5x10-7 can be used (see this link)
$$ erf(y) \approx 1 - \left( a_{1}t + a_{2}t^{2} + ... + a_{5}t^{5} \right) \cdot e^{-y^{2}} ; \qquad t = \frac{1}{1 + p \cdot y} $$where
$$ a_{1} = 0.254829592 \qquad a_{2} = −0.284496736 \qquad a_{3} = 1.421413741 $$ $$ a_{4} = −1.453152027 \qquad a_{5} = 1.061405429 \qquad p = 0.3275911 $$which after substitution into the equation for $K(0, y)$ results in the cancelation of the exponential term to become
$$ K(0, y) = a_{1}t + a_{2}t^{2} + ... + a_{5}t^{5}; \qquad t = \frac{1}{1 + p \cdot y} $$The $x$ and $y$ in the above equations (if used in spectroscopy i.e. HITRAN database calculations, see this link) are
$$ x = \frac { \sqrt{ln(2)} \cdot (\nu - \nu_{ij}^{*}) }{ \alpha_{doppler} } ; \qquad y = \frac { \sqrt{ln(2)} \cdot \gamma }{ \alpha_{doppler} } $$where $\alpha_{doppler}$ is the Doppler half width at half maximum (HWHM), $\gamma$ is the Lorentz HWHM, $ \nu$ is the wavenumber to perform the calculation for, and $ \nu_{ij}^{*}$ is the pressure-shifted spectral line center.
www.bytran.org -|- 2019  
✉  Email:  bytran@bytran.org
© 2019 - 2022 Dzianis Pliutau