GENSPECT: A LINE-BY-LINE RADIATIVE TRANSFER CODE WITH AN INTERPOLATION ERROR TOLERANCE

BEN M. QUINE, JAMES R. DRUMMOND and \underline{JOHN G. CORMIER}, Department of Physics, University of Toronto, 60 St. George Street, Toronto, Ontario, M5S 1A7.

GENSPECT is a new line-by-line code to calculate gas absorption and emissivity, emission and transmission for a wide range of atmospheric gases. GENSPECT has been developed with a web-based interface (www.genspect.com) and as a toolbox of components under MATLAB. Radiative transfer codes commonly model the spectroscopic properties of gases by summing contributions from individual absorption lines as parameterised in large databases such as HITRAN. These line-by-line calculations tend to be extraordinarily computationally intensive as all significant lines must be accounted for at every spectral point, for every gas, temperature and pressure. As a consequence, radiative transfer codes often accelerate calculations by interpolating the line function where it varies slowly. This can increase calculation performance by a factor of 10 or more but causes an unspecified reduction in calculation accuracy. GENSPECT employs a new computation algorithm that maintains a specified percentage-error tolerance for every computed absorption coefficient over the whole spectral domain of the computation. The approach employs a binary division of the spectral range, and calculations are performed on a cascaded series of grids, each with approximately twice the spectral interval of the previous one. Calculations are accelerated by employing linear interpolation and dividing line-function evaluations piecewise across this series of grids. Each line-function section is computed on the grid with the coarsest interval spacing, consistent with the specified error tolerance. The algorithm is coded in MATLAB as part of a freely available toolbox of radiative transfer functions for the analysis of planetary atmospheres and laboratory experiments. We describe the new algorithm and its implementation, discuss the importance of establishing a calculation error tolerance, and illustrate its performance with some common applications.