radis.levels.partfunc_cdsd module

Variants of default Partition function tabulators and calculators, based on CDSD-4000 format, specifically for CO2.

Routine Listing

Partition functions:

Which inherit from:

class PartFuncCO2_CDSDcalc(energy_levels, isotope, levelsfmt, use_cached=True, use_json=None, verbose=True, mode='full summation')[source]

Bases: RovibParFuncCalculator

Calculate Partition Function from energy levels (and maybe export a tabulated database).


ZPE (zero point energy) must be the same in the Line Database and the Energy levels database. See the Configuration file.

  • energy_levels (filename) – path to energy levels (to calculate Partition Function) for isotope

  • isotope (int) – which isotope we’re dealing with. Default 1. In the current implementation only isotope 1 and 2 are defined.

  • levelsfmt ('cdsd-p', 'cdsd-pc', 'cdsd-pcN', 'cdsd-hamil', or None) – the format of the Energy Database, and in particular how Evib and Erot have been calculated. A vibrational level in the CDSD (p,c,J,N) nomenclature can be defined for levels that share a same (p), (p,c) or (p,c,N), where p is the polyad number, c is the Wang symmetry number, and N is the ranking index of a (p,c,J) group. Default 'cdsd-pc'.

    If None, dont label the levels. Wont be able to use the EnergyDatabase to fetch vibrational energies for lines, however it can still be used to calculate Partition functions independently from a Spectrum calculation

Other Parameters:
  • use_cached (True, False, or 'regen', 'force') – if True, use (and generate if doesnt exist) a .h5 file. If 'regen', regenerate cache file. If 'force', raise an error if file doesnt exist. Default True

  • mode (‘full summation’, ‘tabulation’) – calculation mode. 'tabulation' is much faster but not all possible distributions are implemented. Default 'full-summation'

  • use_json (boolean) – deprecated. Better use h5 now.


Database format:

Tashkun database updated with ranking number (n) & total rank (N) of block, Evib and Erot (cm-1) and jref

For nonequilibrium, different strategies exist so as how to assign rotational and vibrational energies in a CDSD database. See the E. Pannier “Limits on CO2 Nonequilibrium model” article for a discussion on that.

Example of table format:

# calculated rovibrational energy levels of 12C16O2
# =================================================
# S.Tashkun, Zuev Institute of Atmospheric Optics, Tomsk, Russia
# date: 17.03.2017
# zero point energy ZPE (cm-1) =  2531.828
# p = 2v1 + v2 + 3v3 - polyad number
# j - rotational quantum number
# c - Wang symmetry (1-'e'; 2-'f')
# N - ranking number of energy levels of (p,j,c) blocks
# n - total rank of (p,j,c) blocks
# Calculation limitations:
# pmax = 40
# jmax = 300
# Ecut = 44600 cm-1
# ---------------
p   c   j   N   n   E   Evib    Erot    jref
0   1   0   1   1   0.000   0.000   0.000   0
0   1   2   1   1   2.341   0.000   2.341   0
0   1   4   1   1   7.804   0.000   7.804   0
0   1   6   1   1   16.389  0.000   16.389  0
0   1   8   1   1   28.095  0.000   28.095  0

See an example in test/files/co2_cdsd_hamiltonian_fragment.levels

class PartFuncCO2_CDSDtab(isotope, database)[source]

Bases: RovibParFuncTabulator

Return partition function of CO2 using a spline interpolation of tabulated values used in [CDSD-4000]


T (temperature (K)) – gas temperature (equilibrium)


Partition function calculated in CDSD by direct summation (Jmax=300)

The CDSD partition_functions.txt can be downloaded from the [CDSD-4000] FTP : ftp://ftp.iao.ru/pub/CDSD-4000/