Calculate non-LTE spectra of carbon-monoxide

Compute a CO spectrum with the temperature of the vibrational mode different from the temperature of the rotational mode.

This example uses the calc_spectrum() function, the [HITRAN-2016] line database to derive the line positions and intensities, and the default RADIS spectroscopic constants to compute nonequilibrium energies and populations, but it can be extended to other line databases and other sets of spectroscopic constants.

plot nonequilibrium co spectrum
--------------------------------------------------------------------------------
CO - HITRAN - Downloading database
--------------------------------------------------------------------------------

Download:
- All files already downloaded.

Caching to HDF5/H5 format:
- All files already cached.
Calculating energy levels with Dunham expansion for CO(X1Σ+)(iso1)
Database generated up to v=48, J=238
Calculating energy levels with Dunham expansion for CO(X1Σ+)(iso2)
Database generated up to v=48, J=243
Calculating energy levels with Dunham expansion for CO(X1Σ+)(iso3)
Database generated up to v=48, J=243
0.50s - Loaded database
Calculating Non-Equilibrium Spectrum
Physical Conditions
----------------------------------------
   Tgas                 300.0 K
   Trot                 300.0 K
   Tvib                 700.0 K
   isotope              1,2,3
   medium               air
   mole_fraction        0.1
   path_length          1.0 cm
   pressure             1.01325 bar
   rot_distribution     boltzmann
   self_absorption      True
   species              CO
   state                X
   vib_distribution     boltzmann
   wavenum_max          2300.0000 cm-1
   wavenum_min          1900.0000 cm-1
Computation Parameters
----------------------------------------
   Tref                 296 K
   add_at_used
   broadening_method    voigt_poly
   cutoff               1e-27 cm-1/(#.cm-2)
   dbformat             hitran
   dbpath               /home/docs/.radisdb/hitran/CO.h5
   diluent              air
   folding_thresh       1e-06
   include_neighbouring_lines  True
   isatom               False
   isneutral            None
   lbfunc               None
   memory_mapping_engine  auto
   neighbour_lines      0 cm-1
   optimization         simple
   parsum_mode          full summation
   pfsource             default
   potential_lowering   None
   pseudo_continuum_threshold  0
   sparse_ldm           auto
   truncation           50 cm-1
   waveunit             cm-1
   wstep                0.01 cm-1
   zero_padding         -1
----------------------------------------
Fetching Evib & Erot.
/home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/misc/warning.py:434: NegativeEnergiesWarning: There are negative rotational energies in the database
  warnings.warn(WarningType(message))
/home/docs/checkouts/readthedocs.org/user_builds/radis/checkouts/latest/radis/misc/warning.py:434: PerformanceWarning: 'gu' was recomputed although 'gp' already in DataFrame. All values are equal
  warnings.warn(WarningType(message))
... sorting lines by vibrational bands
... lines sorted in 0.0s
0.14s - Spectrum calculated

<matplotlib.lines.Line2D object at 0x73c594a45940>

from astropy import units as u

from radis import calc_spectrum

s2 = calc_spectrum(
    1900 / u.cm,
    2300 / u.cm,
    molecule="CO",
    isotope="1,2,3",
    pressure=1.01325 * u.bar,
    Tvib=700 * u.K,
    Trot=300 * u.K,
    mole_fraction=0.1,
    path_length=1 * u.cm,
    databank="hitran",  # or use 'hitemp'
)
s2.plot("radiance_noslit")

# Apply a (large) instrumental slit function :
s2.apply_slit(10, "nm")
s2.plot("radiance", nfig="same", lw=2)  # compare with previous

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