A discrete integral transform for rapid spectral synthesis. (March 2021) - van den Bekerom, D.C.M.; Pannier, E.
Highlights: Novel approach for spectral synthesis resulting in typical performance increase of 2 3 orders of magnitude. Generic approach that can be applied to any spectral code or database. Arbitrary accuracy: Voigt function is approximated as accurately as needed. Additional performance increase for line-of-sight spectra. Easy to parallelize: GPU implementation yields further 2 3 orders improvement. Graphical abstract: Image, graphical abstract Abstract: Accurate synthetic spectra that rely on large Line-By-Line (LBL)-databases are used in a wide range of applications such as high temperature combustion, atmospheric re-entry, planetary surveillance and laboratory plasmas. Conventionally synthetic spectra are calculated by computing a lineshape for every spectral line in the database and adding those together, which may take multiple hours for large databases. In this paper we propose a new approach for spectral synthesis based on an integral transform: the synthetic spectrum is calculated as the integral over the product of a Voigt profile and a newly proposed three-dimensional " lineshape distribution function ", which is a function of spectral position and Gaussian- & Lorentzian width coordinates. A fast discrete version of this transform based on the Fast Fourier Transform (FFT) is proposed, which improves performance compared to the conventional approach by several orders of magnitude while maintaining accuracy. Strategies that minimize the discretization error are discussed. A Python implementation of the method is compared against state-of-the-art spectral code RADIS, and is since adopted as RADIS's default synthesis method. The synthesis of a benchmark CO2 spectrum consisting of 1.8 M spectral lines and 200k spectral points took only 3.1 s using the proposed method (10 11 lines × spectral points/s), a factor ∼ 300 improvement over the state-of-the-art, with the relative improvement generally increasing for higher number of lines and/or number of spectral points. An experimental GPU-implementation of the method was also benchmarked, which demonstrated another 2 3 orders performance increase, achieving up to 5 ⋅ 10 14 lines × spectral points/s.