Cross Sections

This page shows the full list of cross sections (also named opacities) that can be included in Pyrat Bay runs.


Sampled cross sections

Sampled cross sections are 3D arrays that provide the cross section for a given species (in cm2 molecule-1 units), sampled over a grid of temperature (K), pressure (bar), and wavenumber (cm-1) arrays. Sampled cross sections in Pyrat Bay are Numpy .npz files, see write_opacity() in the API for more details.

The Zenodo repositories doi.org/10.5281/zenodo.16965390 and doi.org/10.5281/zenodo.17060936 provide pre-computed cross-section files, intended for a broad range of applications. See the list below for direct links to the files for each molecule.

These cross sections have been computed assuming an H₂/He-dominated atmosphere, and terrestrial isotopic ratios. The lines have Voigt profiles with a wing cut-off at 300 HWHM and at 25 cm-1. The grids sampling are:

  • Wavelength: \(0.15-33\) μm, at a constant resolution of \(R=25.000\)

  • Temperature: \(200-5000\) K, with \(\Delta T = 150\) K

  • Pressure: \(1.0^{-9}-1.0^{3}\) bar, equally sampled in log(p) with 4 samples per dex.

Cross section files

Species

Source

References

AlF

Exomol, mollist

[Bernath2020]

C2H2

Exomol, acety

[Chubb2020]

CH4

Exomol, mm

[Yurchenko2024a]

CaH

Exomol, xab

[Owens2022]

CO

HITEMP, li

[Li2015]

CO2

ames, ai3000k

[Huang2023]

CS

Exomol, jnk

[Paulose2015]

CS2

HITRAN, 2020

[Gordon2022]

FeH

Exomol, mollist

[Dulic2003] [Bernath2020]

HCl

Exomol, hitran

[Dulic2003] [Bernath2020]

H2O

Exomol, pokazatel

[Polyansky2018]

H2S

Exomol, ayt2

[Azzam2016] [Chubb2018]

HCN

Exomol, harris larner

[Harris2008] [Barber2014]

HF

Exomol, coxon-hajig

[Li2013] [Coxon2015] [Somogyi2021]

KCl

Exomol, barton

[Barton2014]

KOH

Exomol, oyt4

[Owens2021]

NaCl

Exomol, barton

[Barton2014]

NaH

Exomol, rivlin

[Rivlin2015]

NH3

Exomol, coyute

[Coles2019] [Yurchenko2024b]

OCS

Exomol, oyt8

[Owens2024]

OH

HITEMP, 2022

[Gordon2022]

PH

Exomol, laty

[Langleben2019]

PH3

Exomol, salty

[Sousa-Silva2014]

PN

Exomol, pain

[Semenov2025]

PO

Exomol, pops

[Prajapat2017]

SH

Exomol, gyt

[Gorman2019]

SiH

Exomol, sightly

[Yurchenko2018]

SiH4

Exomol, oy2t

[Owens2017]

SiO

Exomol, siouvenir

[Yurchenko2022]

SiS

Exomol, ucty

[Upadhyay2018]

SO

Exomol, solis

[Brady2023]

SO2

Exomol, exoames

[Underwood2016]

TiO

Exomol, toto

[McKemmish2019]

VO

Exomol, hyvo

[Bowesman2024]

Other sources

  • If this sampling (e.g., different ranges or higher resolution) is not suitable for a project or if cross sections for other species are needed, users can compute their own cross sections from line lists from Exomol or HITRAN/HITEMP. More details in this section: line sampling.

  • Alternatively, Pyrat Bay is also compatible with petitRADTRANS cross-section files [Molliere2019].

Usage

In a configuration file, use the sampled_cross_sec key to list the cross sections to be included in a run:

# Line-sampled cross sections
sampled_cross_sec =
    inputs/cross_section_0.15-33.0um_0200-5000K_R025K_H2O_exomol_pokazatel.npz
    inputs/cross_section_0.15-33.0um_0200-5000K_R025K_CO_hitemp_2019.npz
    inputs/cross_section_0.15-33.0um_0200-5000K_R025K_CO2_ames_ai3000k.npz
    inputs/cross_section_0.15-33.0um_0200-5000K_R025K_CH4_exomol_mm.npz
    inputs/cross_section_0.15-33.0um_0200-5000K_R025K_SO2_exomol_exoames.npz
    inputs/cross_section_0.15-33.0um_0200-5000K_R025K_H2S_exomol_ayt2.npz

Whenever sampled cross sections are used in Pyrat Bay, output spectra will be computed at the given wavelength sampling of the cross sections. This samping can be trimmed down or down sampled (if desired) with the following keys:

# Wavelength sampling (keep every second point between boundaries)
wl_low = 1.0 um
wl_high = 12.0 um
wl_thinning = 2

Lastly, cross sections can also be used in stand-alone scripts. See the following notebook for details:


Continuum cross sections

This input is intended for continuum cross sections that vary slowly with wavelength and temperature (and no dependency on pressure). In practice, continuum cross sections are used for collision induced absorptions (CIA).

Pyrat Bay provides CIA continuum opacities for the H₂–H₂ and H₂–He pairs, the two most relevant CIA sources for primary atmospheres:

CIA

T range (K)

\(\lambda\) range (μm)

References

H₂–H₂

60 – 7000

0.6 – 500.0

[Borysow2001] [Borysow2002]

H₂–He

50 – 7000

0.5 – 31.0

[Borysow1988] [Borysow1989a] [Borysow1989b] [Jorgensen2000]

Usage

In a configuration file, use the continuum_cross_sec key to list the CIA files to be included:

# CIA cross sections
continuum_cross_sec =
    {ROOT}pyratbay/data/CIA/CIA_Borysow_H2H2_0060-7000K_0.6-500um.dat
    {ROOT}pyratbay/data/CIA/CIA_Borysow_H2He_0050-7000K_0.5-031um.dat

Note the {ROOT} in the path indicates the code to find the CIA file provided by Pyrat Bay (so, no need to ever edit this path).

For other CIA pairs, e.g., from HITRAN [Karman2019], Pyrat Bay provides these shell commands to re-format the downloaded CIA files. Here’s one example (to run from the prompt):

# Download and format HITRAN H2-H2 CIA file for Pyrat Bay:
wget https://hitran.org/data/CIA/main/H2-H2_2011.cia
pbay -cs hitran H2-H2_2011.cia

Lastly, cross sections can also be created and used in stand-alone scripts. See the following notebook for details: CIA cross sections notebook


Alkali

For the sodium and potasium alkali resonant doublets, Pyrat Bay provides the line-profile models from [Burrows2000].

Models

Species

References

sodium_vdw

Na

[Burrows2000]

potassium_vdw

K

[Burrows2000]

These profiles are based on van der Waals and statistical theory, adopting the line parameters from VALD [Piskunov1995] and collisional-broadening half-width from [Iro2005].

Usage

In a configuration file, use the alkali key to list the cross sections to be included in a run. the optional alkali_cutoff key sets a cutoff from the line centers (in cm-1 units) at which to stop computing the profiles:

# Alkali cross sections [sodium_vdw potassium_vdw]
alkali =
    sodium_vdw
    potassium_vdw

# Alkali profile cutoff (defaulted to 4500 cm-1)
alkali_cutoff = 4500.0

Lastly, alkali cross sections can also be used in stand-alone scripts. See the following notebook for details: Alkali cross sections notebook.


Rayleigh

The rayleigh key sets Rayleigh opacity models. The following table lists the available Rayleigh model names:

Models

Species

References

rayleigh_H

H

[Kurucz1970] [Dalgarno1962]

rayleigh_He

He

[Kurucz1970] [Dalgarno1962]

rayleigh_H2

H₂

[Kurucz1970] [Dalgarno1962]

These models are tailored for H, He, and H₂ species, and thus req

Usage

  • In a configuration file, use the rayleigh key to list the cross sections to be included in a run:

# Rayleigh cross sections
rayleigh =
    rayleigh_H2
    rayleigh_He
    rayleigh_H

H⁻ opacity

H⁻ absorption becomes significant at the high temperatures expected for ultra Hot Jupiters, where molecular hydrogen dissociates to give way to atomic and ionic hydrogen as the most abundant species. Pyrat Bay implements the H⁻ cross-section model from [John1988], which accounts for bound-free photo-ionization and free-free scattering.

Usage

  • In a configuration file, use the h_ion key to include the H⁻ cross section:

# H- bound-free and free-free opacity
h_ion = h_ion_john1988

Clouds

The clouds key sets cloud opacity models. The table below lists the available models:

Model

Parameter names

Comments

lecavelier

log_k_ray, alpha_ray

[Lecavelier2008]

deck

log_p_cl

Opaque gray cloud deck

ccsgray

log_k_gray, log_p_top, log_p_bot

Constant gray cross-section

The lecavelier model implements a parametric power-law cross section (i.e., non-gray), allowing users to simulate Rayleigh-like absorption:

\[k(\lambda) = \kappa_{\rm ray}\ \kappa_0 \left(\frac{\lambda}{\lambda_0}\right)^{\alpha_{\rm ray}}.\]

Two model parameters modify the strength (log_k_ray = \(\log_{10}(\kappa_{\rm ray})\)) and slope (alpha_ray = \(\alpha_{\rm ray}\)) of the cross section. Given the constants \(\lambda_0=0.35\) um and \(\kappa_0=5.31 \times 10^{-27}\) cm2 molecule-1, evaluating at log_k_ray = 0.0 and alpha_ray = -4.0 results in a cross section similar to H₂ Rayleigh for a primary atmosphere.

The deck model imposes an opaque gray cloud deck at a pressure defined by the model parameter log_p_cl = \(\log(p_{\rm cl}/{\rm bar})\).

Note

A technical note. To avoid computing spectra that depend on the pressure sampling, this cloud model does not simply apply a large opacity at the atmospheric layer closest to log_p_cl. Rather, the code interpolates the atmospheric profile, to define a ‘surface’ located exactly at log_p_cl.

The ccsgray model creates a constant cross-section opacity (\(k = \kappa_{\rm gray}\ \kappa_0\)) between two pressures, with \(\kappa_0=5.31 \times 10^{-27}\) cm2 molecule-1 a constant.

Three model parametes define the cross section, log_k_gray = \(\log10 (\kappa_{\rm gray})\), and the log-pressure ranges: log_p_top and log_p_bot (in bar units).

Usage

In a configuration file, use the clouds key to include cloud-opacity models. Each row includes the name of the model, followed by their parameters.

# Cloud cross sections and parameters [lecavelier deck ccsgray]
clouds =
    lecavelier  1.0 -4.0
    deck       -2.0

Patchy cloud fraction

The optional fpatchy key will produce spectra from a linear combination of a clear and cloudy spectrum (i.e., spectra including and excluding the cloud opacities listed above). For example, for a 40% cloudy / 60% clear atmosphere, set:

# Patchy fraction, value between [0--1]:
fpatchy = 0.4