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

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)