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:   0%|          | 32.0k/14.1M [00:00<00:47, 311kB/s]
Downloading:   1%|          | 88.0k/14.1M [00:00<00:33, 446kB/s]
Downloading:   1%|          | 152k/14.1M [00:00<00:27, 526kB/s]
Downloading:   2%|▏         | 232k/14.1M [00:00<00:23, 624kB/s]
Downloading:   2%|▏         | 320k/14.1M [00:00<00:20, 706kB/s]
Downloading:   3%|β–Ž         | 432k/14.1M [00:00<00:17, 834kB/s]
Downloading:   4%|▍         | 568k/14.1M [00:00<00:14, 992kB/s]
Downloading:   5%|▍         | 720k/14.1M [00:00<00:12, 1.14MB/s]
Downloading:   6%|β–‹         | 920k/14.1M [00:00<00:10, 1.37MB/s]
Downloading:   8%|β–Š         | 1.13M/14.1M [00:01<00:08, 1.66MB/s]
Downloading:  10%|β–ˆ         | 1.42M/14.1M [00:01<00:06, 2.03MB/s]
Downloading:  12%|β–ˆβ–        | 1.77M/14.1M [00:01<00:05, 2.45MB/s]
Downloading:  15%|β–ˆβ–Œ        | 2.19M/14.1M [00:01<00:04, 2.97MB/s]
Downloading:  19%|β–ˆβ–‰        | 2.70M/14.1M [00:01<00:03, 3.59MB/s]
Downloading:  23%|β–ˆβ–ˆβ–Ž       | 3.32M/14.1M [00:01<00:02, 4.38MB/s]
Downloading:  29%|β–ˆβ–ˆβ–‰       | 4.09M/14.1M [00:01<00:01, 5.34MB/s]
Downloading:  35%|β–ˆβ–ˆβ–ˆβ–Œ      | 5.00M/14.1M [00:01<00:01, 6.42MB/s]
Downloading:  43%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 6.12M/14.1M [00:01<00:01, 7.80MB/s]
Downloading:  53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 7.48M/14.1M [00:02<00:00, 9.49MB/s]
Downloading:  65%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 9.13M/14.1M [00:02<00:00, 11.6MB/s]
Downloading:  79%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š  | 11.1M/14.1M [00:02<00:00, 14.3MB/s]
Downloading:  96%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ| 13.6M/14.1M [00:02<00:00, 17.4MB/s]
Downloading: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 14.1M/14.1M [00:02<00:00, 6.31MB/s]
- Downloading 05_HITEMP2019.par.bz2 (1/1)
Login successful.

Downloading:   0%|          | 0.00/14.1M [00:00<?, ?B/s]
Downloading:   3%|β–Ž         | 416k/14.1M [00:00<00:03, 3.73MB/s]
Downloading:  29%|β–ˆβ–ˆβ–Š       | 4.06M/14.1M [00:00<00:00, 23.0MB/s]
Downloading:  64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 9.05M/14.1M [00:00<00:00, 36.0MB/s]
Downloading:  97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 13.7M/14.1M [00:00<00:00, 40.7MB/s]
Downloading: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 14.1M/14.1M [00:00<00:00, 34.7MB/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 19.375 seconds)