Scale Linestrengths of carbon-monoxideΒΆ

This example scales the linestrengths of CO to Tgas=300 from Tref = 296 and then plots the linestrengths against the wavenumbers. We are using fetch_hitemp() function to retrieve the dataframe from the HITEMP-CO databank.

ReferencesΒΆ

\[S(T) = S_0 \frac{Q_{ref}}{Q_{gas}} \operatorname{exp}\left(-E_l \left(\frac{1}{T_{gas}}-\frac{1}{T_{ref}}\right)\right) \frac{1-\operatorname{exp}\left(\frac{-\omega_0}{Tgas}\right)}{1-\operatorname{exp}\left(\frac{-\omega_0}{T_{ref}}\right)}\]

See Eq.(A11) in [Rothman-1998]

Similar functions are used directly at the hearth of RADIS’s SpectrumFactory in the calc_linestrength_eq() and calc_linestrength_noneq() methods

plot linestrengths
Login successful.
Your HITRAN credentials will be saved securely in /home/docs/radis.json. You can delete the credentials section if you wish but you will have to prompt your credentials at next download.

Downloading:   0%|          | 0.00/14.1M [00:00<?, ?B/s]
Downloading:   1%|▏         | 208k/14.1M [00:00<00:07, 1.89MB/s]
Downloading:  23%|β–ˆβ–ˆβ–Ž       | 3.25M/14.1M [00:00<00:00, 18.7MB/s]
Downloading:  69%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 9.80M/14.1M [00:00<00:00, 38.5MB/s]
Downloading: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 14.1M/14.1M [00:00<00:00, 41.0MB/s]
- Downloading 05_HITEMP2019.par.bz2 (1/1)
Login successful.

Downloading:   0%|          | 0.00/14.1M [00:00<?, ?B/s]
Downloading:   3%|β–Ž         | 408k/14.1M [00:00<00:03, 3.65MB/s]
Downloading:  31%|β–ˆβ–ˆβ–ˆ       | 4.40M/14.1M [00:00<00:00, 24.9MB/s]
Downloading:  86%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 12.1M/14.1M [00:00<00:00, 49.6MB/s]
Downloading: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 14.1M/14.1M [00:00<00:00, 38.8MB/s]
Download complete. Parsing CO database to /home/docs/.radisdb/hitemp/CO-05_HITEMP2019.h5
The parsing/conversion is usually very fast (e.g., HITEMP OH takes only a few seconds) but can be slightly longer in some cases (e.g., a single HITEMP 2010 COβ‚‚ file takes about 1 minute).
Added HITEMP-CO database in /home/docs/radis.json
Scaling equilibrium linestrength

from matplotlib import pyplot as plt
from numpy import exp

from radis.db.classes import get_molecule, get_molecule_identifier
from radis.io.hitemp import fetch_hitemp
from radis.levels.partfunc import PartFuncTIPS
from radis.phys.constants import hc_k


def get_Qgas(molecule, iso, T):

    M = get_molecule_identifier(molecule)

    Q = PartFuncTIPS(M, iso)
    return Q.at(T=T)


def scale_linestrength_eq(df, Tref, Tgas):

    print("Scaling equilibrium linestrength")

    # %% Load partition function values

    def _calc_Q(molecule, iso, T_ref, T_gas):

        Qref = get_Qgas(molecule, iso, T_ref)
        Qgas = get_Qgas(molecule, iso, T_gas)

        return Qref, Qgas

    id_set = df.id.unique()
    id = list(id_set)[0]
    molecule = get_molecule(id)  # retrieve the molecule
    iso_set = set(df.iso)  # df1.iso.unique()

    Qref_Qgas_ratio = {}

    for iso in iso_set:
        Qref, Qgas = _calc_Q(molecule, iso, Tref, Tgas)
        Qref_Qgas_ratio[iso] = Qref / Qgas

    # Scaling linestrength with the equations from Rothman's paper
    line_strength = df.int * df["iso"].map(Qref_Qgas_ratio)
    line_strength *= exp(-hc_k * df.El * (1 / Tgas - 1 / Tref))
    line_strength *= (1 - exp(-hc_k * df.wav / Tgas)) / (1 - exp(-hc_k * df.wav / Tref))
    # Add a fresh columns with the scaled linestrength
    df["S"] = line_strength  # [cm-1/(molecules/cm-2)]

    # Just to make sure linestrength is indeed added
    assert "S" in df

    return df


if __name__ == "__main__":
    Tref = 296
    df = fetch_hitemp(
        molecule="CO",
        isotope="1, 2, 3",
        load_wavenum_min=2000,
        load_wavenum_max=2250,
    )

    Tgas = 450

    df = scale_linestrength_eq(df, Tref, Tgas)
    plt.bar(df["wav"], df["S"])
    plt.xlabel("Wavenumbers in cm-1")
    plt.ylabel("Linestrengths in cm-1/(molecules/cm-2)")
    plt.show()

Total running time of the script: (0 minutes 16.635 seconds)