Skip to content

Absorption Module Overview ​

RT pipeline uses AtmosphericAbsorption.jl (since externalAbsorption merge)

Since the externalAbsorption merge, the RT production pipeline (model_from_parameters → rt_run) computes line-by-line gas absorption via the external AtmosphericAbsorption.jl package (AtmosphericAbsorption.load_lines + LineByLineModel; uses TIPS-2021 partition functions). The internal Absorption module documented on this page remains the supported standalone API for direct cross-section work: read_hitran / make_hitran_model / absorption_cross_section (TIPS-2017), plus the CIA / MT-CKD continuum and LUT paths. Users who call rt_run do not need to interact with the internal Absorption module directly; users who need standalone σ(ν, T, p) queries should use this module.

This module enables absorption cross-section calculations of atmospheric gases at different pressures, temperatures, and broadeners (Doppler, Lorentzian, Voigt). It uses the HITRAN energy transition database for calculations.

While it enables lineshape calculations from scratch, the module also allows users to create and save an interpolator object at specified wavelength, pressure, and temperature grids.

The module also supports auto-differentiation (AD) of the profile, with respect to pressure and temperature. Calculations can be computed either on CPU or GPU (CUDA).

Users can calculate an absorption cross-section in a few simple steps:

  1. First, obtain HITRAN line transition data. vSmartMOM supports two pathways: legacy pre-packaged HITRAN 2016 artifacts (the default) or direct download from hitran.org for the latest edition (currently HITRAN 2024). See the HITRAN Data Management page for details.

  2. Use read_hitran to read in the HITRAN database file

  3. Use make_hitran_model or make_interpolation_model to set up model parameters for the cross-section calculation

  4. Use absorption_cross_section to perform the cross-section calculation using the defined model settings

For a full runnable walkthrough, see the absorption tutorial. Public docstrings are grouped in the Absorption API.

Architecture ​

The Absorption.jl architecture closely follows the user's workflow to calculate the absorption cross-section. There are functions for loading a HITRAN line-list, defining profile parameters, and performing the calculation.

Please note that calculating an absorption cross-section from scratch and creating an interpolation model relies on the same underlying compute_absorption_section function. This is where the main broadening equations are implemented. The interpolation model simply calls this function for all points on the pressure-temperature grids, and produces the interpolator object. This function was mainly designed for internal use, so users should generally use the absorption_cross_section function instead.