Building Opacity Tables

From Planets
Revision as of 12:13, 30 April 2025 by Martin.turbet (talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This page describes the main steps required to build new opacity tables for the Generic PCM.

There are three important steps to consider:

  • (1) calculate high-resolution spectra for a grid of pressures, temperatures and mixing ratios.
  • (2) convert these high-resolution spectra into correlated-k tables
  • (3) add continuum opacity tables

Calculation of high-resolution spectra

Line Lists

The first thing you need to compute high-resolution spectra is to get line lists of the molecules (and/or atoms) that you want to simulate in your atmosphere.

For temperate planets (Earth, Mars, etc.), the best line lists are usually provided in HITRAN: https://hitran.org For hot planets (Venus, etc.), the best line lists are usually provided in HITEMP: https://hitran.org/hitemp/

These two databases (HITRAN and HITEMP) however often miss some molecules, or some line list parameters (broadening coefficients, temperature dependencies, etc.). If you reach such problem, ExoMOL (https://www.exomol.com) can be a good resource to look at. It is less reliable than HITRAN and HITEMP because it is based on theoretical calculations, but it can be extremely useful to get line list/parameters where HITRAN and HITEMP have no data. For instance and for this reason, ExoMOL is often used to simulate opacity tables for hot, gas giant exoplanets.

Tools to generate high-resolution absorption spectra

Once you have your line lists for all the molecules/atoms you want to simulate, you need to use tools to compute high-resolution absorption spectra.

Historically, we have been using the code k-spectrum to compute high-resolution spectra. We have stored an historical version of the code here: http://svn.lmd.jussieu.fr/KSPECTRUM/trunk/kspectrum/

More recently, we have developed (Guillaume Chaverot et al.) a new tool, called speCT (linked to be added here soon), to produce high-resolution spectra. Compared to k-spectrum, this new code is much more efficient (written and parallelized more efficiently) and include more subtle spectroscopic effects (broadening coefficients for multiple collisional partners), which is essential if you want to use big line lists like HITEMP (that contain many, and more more lines and parameters).

As of April 2025, speCT should be the reference code to use to compute high-resolution spectra for H2O, CO2 and N2. For the other gases, you should use kspectrum. In the coming years, speCT should be able to handle more and more gases so it is intended to eventually replace kspectrum.

These tools (speCT, kspectrum, ...) should be used to compute grids of high-resolution spectra depending on temperature, pressure and mixing ratio values that encompass the expected pressure/temperature/mixing ratio that you want to simulate in your atmosphere.

Databases of high-resolution spectra

Some people have calculated high-resolution spectra and provided them to the community. Below, we provide a list of the available databases:

- ExoMOL : https://www.exomol.com

- petitradtrans : https://petitradtrans.readthedocs.io/en/latest/content/available_opacities.html

ps: careful when you use these databases to check that the assumptions (e.g. line list, etc.) that were made are compatible with the type of atmospheres you want to simulate in the model.

Building correlated-k tables

Once you have your grid of high-resolution spectra (for a grid of temperatures, pressures and possibly mixing ratios), you need to post-process the spectra to generate so-called "correlated-k" opacity tables. HERE WE NEED TO WRITE A PARAGRAPH (maybe a dedicated page?) to explain the motivations for using correlated-k tables

Tools

Historically, we have been using home-made scripts (kdistribution / generate_kmatrix) to convert high-resolution spectra into correlated-k tables, provided here: https://svn.lmd.jussieu.fr/Planeto/trunk/LMDZ.GENERIC/utilities/correlatedk_utilities/

Since 2020, we now have a dedicated, reference python package developed by Jeremy Leconte, called exo-k, that we routinely use to do this operation. We recommend all user to use exo-k for this step. Tutorials are provided on the exo-k webpage: https://perso.astrophy.u-bordeaux.fr/~jleconte/exo_k-doc/index.html

Correlated-k table data unit and organization

  • The units of correlated-k tables (corrk_gcm_IR.dat and corrk_gcm_VI.dat file) is cm^2/molec.
  • The format of correlated-k tables is (n_temperature, n_pressure, n_vmr, n_band, n_gauss)
  • narrowbands_IR.in and narrowbands_VI.in files contain the wavenumber grid (in cm-1 units)
  • temperatures in T.dat are in Kelvin units
  • pressures in P.dat are in millibar units
  • mixing ratios in Q.dat are in VMR (volume mixing ratio) units
  • The sum of all gauss points in g.dat should be equal to 1

Note on how to modify existing correlated-k tables

You can use exo-k to modify existing correlated-k tables. You can also use home-made Fortran or Python scripts to do that, provided here: https://svn.lmd.jussieu.fr/Planeto/trunk/LMDZ.GENERIC/utilities/correlatedk_utilities/scripts_read_corrk/