DOI: 10.5281/zenodo.4458189
title: EXOPLINES: Molecular Absorption Cross-Section Database for Brown Dwarf and Giant Exoplanet Atmospheres

description: <strong>Citing the Data </strong> If you use this data be sure to cite the paper that describes the work, as well as this Zenodo DOI. <strong>Paper Abstract</strong> Stellar, substellar, and planetary atmosphere models are all highly sensitive to the input opacities and subject to errors arising from incomplete line lists and the lack of appropriate pressure-broadening parameters. Generational differences between various state-of-the-art stellar/planetary models are primarily because of incomplete and outdated atomic and molecular line lists. Addressing this, here we present a database of pre-computed molecular absorption cross-sections for all isotopologues of key atmospheric absorbers relevant to late-type stellar, brown dwarf, and planetary atmospheres: MgH, AlH, CaH, TiH, CrH, FeH, SiO, TiO, VO, and H2O. The pressure and temperature ranges of the computed opacities are between 10<sup>-6</sup>--3000 bar and 75--4000 K, and their spectral ranges are 0.25--330 micron for many cases where possible. For cases with no published pressure-broadening data, we use collision theory to bridge the gap. We also probe the effect of absorption cross-sections calculated from different line lists in the context of Ultra-Hot Jupiter and M-dwarf atmospheres. Using 1-D self-consistent radiative-convective thermochemical equilibrium models, we report significant variations in the theoretical spectra and thermal profiles of substellar atmospheres. With a 2000 K representative Ultra-Hot Jupiter, we report variations of up to 320 and 80 ppm in transmission and thermal emission spectra, respectively, and differences of up to 130 K in the thermal profile between 0.1 mbar and 10 bars. For a 3000 K M-dwarf, we find differences of up to 125% in the spectra and 60 K in the thermal profiles between 1 mbar and 100 bars. We find that the most significant differences arise due to the choice of TiO line lists, primarily below 1 micron, with minor variations because of metal hydride differences in the near-infrared. In sum, we present (1) a database of pre-computed molecular absorption cross-sections to mitigate shortcomings for pre-existing incomplete line lists, and (2) quantify biases that arise when characterizing substellar/exoplanet atmospheres due to line list differences, therefore highlighting the importance of correct and complete opacities for eventual applications to high precision spectroscopy and photometry. <strong>About the Data</strong> All the molecules, except H2O, are computed on a 1460 pressure-temperature (P-T) grid. H2O is computed on a 1060 pressure-temperature grid. Each filename has an associated number that corresponds to a P-T point. You can find the grid information in <strong>grid1060.txt</strong>, and <strong>grid1460.txt</strong>. <strong>Reading Data on a 1460 Grid Python</strong> <pre><code class="language-python">import pandas as pd import numpy as np g1460 = pd.read_csv('grid1460.csv') #example reading in P-T point T=1400 K , P=1.e-03 bar file_number = g1460.loc[((g1460['pressure_bar']==1e-3) & (g1460['temperature_K']==1400)) ,'file_number'].values[0] numw = g1460.loc[(g1460['file_number']==file_number) ,'number_wave_pts'].values[0] delwn = g1460.loc[(g1460['file_number']==file_number) ,'delta_wavenumber'].values[0] start = g1460.loc[(g1460['file_number']==file_number) ,'start_wavenumber'].values[0] file_to_read = '/data/weighted_cxs/weighted_AlH_1460/p_{0}'.format(file_number) cx_data = np.fromfile(file_to_read) wavenumber_grid = np.arange(numw)*delwn + start</code></pre> <strong>Reading Data on a 1060 Grid with Python</strong> <pre><code class="language-python">import pandas as pd import numpy as np g1060 = pd.read_csv('grid1060.csv') #example reading in P-T point T=1400 K , P=1.e-03 bar file_number = g1060.loc[((g1060['pressure_bar']==1e-3) & (g1060['temperature_K']==1400)) ,'file_number'].values[0] file_to_read = '/data/weighted_cxs/weighted_H2O_1060/H2O_H2HE_POKAZATEL_1060.{0}'.format(file_number) data = pd.read_csv(file_to_read, delim_whitespace=True, header=None, names = ['wavenumber','cx']) cx_data = data['cx'] wavenumber_grid = data['wavenumber'] </code></pre>