Non-air broadening

Originally, HITRAN/HITEMP assumed the terrestrial atmosphere of the Earth. This atmosphere is called “air”. In contrast, gas giants have hydrogen/helium atmospheres, and rocky planets may have other types of atmospheres. The difference in the background atmosphere affects in particular the properties of pressure broadening. The non-air broadening parameters are provided by the HITRAN team (https://github.com/hitranonline/planetary-broadeners). Currently, we have two options for including non-air broadening.

Non-air broadening in MdbHitran

In MdbHitran we have an option for non-air broadening which uses a built-in option in radis.api. We can directly use non-air broadening coefficients for some molecules using the “nonair_broadening” option in MdbHitran.

    >>> nus, wav, res = wavenumber_grid(22920.0,
                                23100.0,
                                100000,
                                unit='AA',
                                xsmode="modit")
>>> mdb = api.MdbHitran("CO",nus, nonair_broadening=True)
>>> print(mdb.n_h2)

background atmosphere

attribute

hydrogen

n_h2

helium

n_he

CO2

n_co2

H2O

n_h2o

Manual calculation of non-air broadening parameters

ExoJAX has a built-in calculator of the non-air broadening parameters for CO, given the rotational quantum states of the transition. The formula is from Y. Tan et al (2022). Here is an example. We use the dataframe to use Jlower and branch (Jupper - Jlower).

>>> from exojax.spec import api
>>> from exojax.utils.grids import wavenumber_grid
>>>
>>> nus, wav, r = wavenumber_grid(24000.0, 26000.0, 1000, unit="AA", xsmode="premodit")
>>> mdb = api.MdbHitemp("CO", nus, inherit_dataframe=True)
>>>
>>> # manual non-air broadening
>>> from exojax.spec.qstate import m_transition_state
>>> from exojax.spec.nonair import gamma_nonair, temperature_exponent_nonair
>>> from exojax.spec.nonair import nonair_coeff_CO_in_H2
>>>
>>> df_mask = mdb.df[mdb.df_load_mask] # wavenumber masking
>>> m = m_transition_state(df_mask["jl"],df_mask["branch"])
>>> n_Texp_H2 = temperature_exponent_nonair(m, nonair_coeff_CO_in_H2).values
>>> gamma_ref_H2 = gamma_nonair(m, nonair_coeff_CO_in_H2).values

We can also check if the pressure shift can be ignored in terms of velocity as follows.

>>> from exojax.utils.constants import ccgs
>>> df_mask = mdb.df[mdb.df_load_mask]
>>> dnu = df_mask["delta_h2"].values/mdb.nu_lines
>>> maxdv = np.max(dnu * ccgs*1.e-5)
>>> print("maximum velocity shift by nonair shift = ", maxdv, "km/s")
>>> # maximum velocity shift by nonair shift =  -0.26374224782584194 km