Skip to content

AtmosphericAbsorption.jlGPU-accelerated molecular absorption

Line-by-line absorption cross-sections for atmospheric radiative transfer — HITRAN & ExoMol, Voigt → Hartmann-Tran, line mixing, MT_CKD/CIA continuum, on CPU, CUDA and Metal. Validated against HAPI.

AtmosphericAbsorption logo

What it does

AtmosphericAbsorption.jl computes molecular absorption cross-sections σ(ν) [cm²/molecule] from spectroscopic line lists, the engine that turns a HITRAN or ExoMol database into the optical properties a radiative-transfer model needs.

julia
using AtmosphericAbsorption

# download CO2 lines for the 1.6 µm band straight from hitran.org
db    = load_hitran(:CO2; numin = 6300, numax = 6400)
model = LineByLineModel(db, TIPS2021PF(); profile = Voigt(), wing_cutoff = 40.0)

grid  = collect(6300.0:0.01:6400.0)          # cm⁻¹
σ     = compute_cross_section(model, grid, 500.0, 250.0)   # pressure [hPa], temperature [K]

Install

julia
pkg> add AtmosphericAbsorption

Julia 1.10+. GPU support loads automatically when CUDA.jl (NVIDIA) or Metal.jl (Apple Silicon) is available.

Highlights

  • HITRAN & ExoMol line lists behind a single load_lines interface, with on-demand downloads cached and version-tracked — plus tabulated HITRAN .xsc cross-sections for heavy molecules (CFCs, SF₆, …) that have no line list.

  • Voigt → speed-dependent Voigt → Rautian → Hartmann-Tran line shapes and line mixing, all validated against HAPI.

  • Authenticated non-Voigt parameters (Hartmann-Tran / speed-dependent / line-mixing) from HITRANonline.

  • MT_CKD water-vapor continuum and CIA collision-induced absorption.

  • CPU / CUDA / Metal from one kernel; Float32 & Float64 to machine precision.

  • Partition functions (latest TIPS-2021, with TIPS-2017, and ExoMol) driving the line-strength temperature dependence.

This package is a clean-slate successor to the absorption module of vSmartMOM.jl.