radis.db.classes module¶
Created on Tue Jul 18 16:15:03 2017.
@author: erwan
Summary¶
Define Molecule, Isotope
and ElectronicState classes
ElectronicState has:
Molecular parameters (read from HITRAN molparams.txt)
Vibrational and rotational energies
Calculate Vibrational and Rotational energies for some database molecules
Molecules¶
Shortcut to some molecules ground states are defined at the end of the file
in the dictionary Molecules, with the following structure:
{molecule_name: {isotope_number: {electronic_state_name: ElectronicState object}}}
Import with:
from radis.db.molecules import Molecules
CO2_X = Molecules['CO2'][1]['X'] # 1 for first isotope
Or:
from radis import getMolecule # directly
CO2_2 = getMolecule('CO2', 1, 'X') # better KeyError messages
Routine Listing¶
- EXOMOL_ONLY_ISOTOPES_NAMES = {('AlCl', 1): '27Al-35Cl', ('AlCl', 2): '27Al-37Cl', ('AlF', 1): '27Al-19F', ('AlH', 1): '27Al-1H', ('AlH', 2): '27Al-2H', ('AlH', 3): '26Al-1H', ('AlO', 1): '27Al-16O', ('AlO', 2): '27Al-18O', ('AlO', 3): '27Al-17O', ('AlO', 4): '26Al-16O', ('AsH3', 1): '75As-1H3', ('BeH', 1): '9Be-1H', ('BeH', 2): '9Be-2H', ('BeH', 3): '9Be-3H', ('C2', 1): '12C2', ('C2', 2): '12C-13C', ('C2', 3): '13C2', ('CH', 1): '12C-1H', ('CH', 2): '13C-1H', ('CH3', 1): '12C-1H3', ('CH3F', 1): '12C-1H3-19F', ('CN', 1): '12C-14N', ('CN', 2): '13C-14N', ('CN', 3): '12C-15N', ('CN', 4): '13C-15N', ('CO', 7): '14C-16O', ('CO', 8): '14C-18O', ('CO', 9): '14C-17O', ('CO2', 13): '13C-17O2', ('CP', 1): '12C-31P', ('CS', 5): '13C-34S', ('CS', 6): '12C-36S', ('CS', 7): '13C-33S', ('CS', 8): '13C-36S', ('CaF', 1): '40Ca-19F', ('CaF', 2): '44Ca-19F', ('CaF', 3): '42Ca-19F', ('CaF', 4): '48Ca-19F', ('CaF', 5): '43Ca-19F', ('CaF', 6): '46Ca-19F', ('CaH', 1): '40Ca-1H', ('CaO', 1): '40Ca-16O', ('CrH', 1): '52Cr-1H', ('FeH', 1): '56Fe-1H', ('H2_p', 1): '1H-2H_p', ('H3O_p', 1): '1H3-16O_p', ('H3_p', 1): '1H3_p', ('H3_p', 2): '1H2-2H_p', ('HeH_p', 1): '4He-1H_p', ('HeH_p', 2): '4He-2H_p', ('HeH_p', 3): '3He-1H_p', ('HeH_p', 4): '3He-2H_p', ('KCl', 1): '39K-35Cl', ('KCl', 2): '39K-37Cl', ('KCl', 3): '41K-35Cl', ('KCl', 4): '41K-37Cl', ('KF', 1): '39K-19F', ('KF', 2): '41K-19F', ('KOH', 1): '39K-16O-1H', ('LiCl', 1): '7Li-35Cl', ('LiCl', 2): '7Li-37Cl', ('LiCl', 3): '6Li-35Cl', ('LiCl', 4): '6Li-37Cl', ('LiF', 1): '7Li-19F', ('LiF', 2): '6Li-19F', ('LiH', 1): '7Li-1H', ('LiH_p', 1): '7Li-1H_p', ('MgF', 1): '24Mg-19F', ('MgF', 2): '26Mg-19F', ('MgF', 3): '25Mg-19F', ('MgH', 1): '24Mg-1H', ('MgH', 2): '26Mg-1H', ('MgH', 3): '25Mg-1H', ('MgO', 1): '24Mg-16O', ('MgO', 2): '26Mg-16O', ('MgO', 3): '25Mg-16O', ('MgO', 4): '24Mg-18O', ('MgO', 5): '24Mg-17O', ('NH', 1): '14N-1H', ('NO', 4): '14N-17O', ('NO', 5): '15N-18O', ('NO', 6): '15N-17O', ('NS', 1): '14N-32S', ('NS', 2): '14N-34S', ('NS', 3): '14N-33S', ('NS', 4): '15N-32S', ('NS', 5): '14N-36S', ('NaCl', 1): '23Na-35Cl', ('NaCl', 2): '23Na-37Cl', ('NaF', 1): '23Na-19F', ('NaH', 1): '23Na-1H', ('NaH', 2): '23Na-2H', ('NaOH', 1): '23Na-16O-1H', ('NiH', 1): '58Ni-1H', ('NiH', 2): '60Ni-1H', ('NiH', 3): '62Ni-1H', ('OH_p', 1): '16O-1H_p', ('PF3', 1): '31P-19F3', ('PH', 1): '31P-1H', ('PN', 1): '31P-14N', ('PN', 2): '31P-15N', ('PO', 1): '31P-16O', ('PS', 1): '31P-32S', ('SH', 1): '32S-1H', ('SH', 2): '34S-1H', ('SH', 3): '33S-1H', ('SH', 4): '32S-2H', ('SH', 5): '36S-1H', ('ScH', 1): '45Sc-1H', ('SiH', 1): '28Si-1H', ('SiH', 2): '29Si-1H', ('SiH', 3): '30Si-1H', ('SiH', 4): '28Si-2H', ('SiH2', 1): '28Si-1H2', ('SiH4', 1): '28Si-1H4', ('SiO', 1): '28Si-16O', ('SiO', 2): '29Si-16O', ('SiO', 3): '30Si-16O', ('SiO', 4): '28Si-18O', ('SiO', 5): '28Si-17O', ('SiO2', 1): '28Si-16O2', ('SiS', 1): '28Si-32S', ('SiS', 2): '29Si-32S', ('SiS', 3): '28Si-34S', ('SiS', 4): '30Si-32S', ('SiS', 5): '28Si-33S', ('SiS', 6): '29Si-34S', ('SiS', 7): '30Si-34S', ('SiS', 8): '29Si-33S', ('SiS', 9): '30Si-33S', ('SiS', 10): '28Si-36S', ('SiS', 11): '29Si-36S', ('SiS', 12): '30Si-36S', ('TiH', 1): '48Ti-1H', ('TiO', 1): '48Ti-16O', ('TiO', 2): '46Ti-16O', ('TiO', 3): '47Ti-16O', ('TiO', 4): '49Ti-16O', ('TiO', 5): '50Ti-16O', ('VO', 1): '51V-16O', ('YO', 1): '89Y-16O', ('cis-P2H2', 1): 'cis-31P2-1H2', ('trans-P2H2', 1): 'trans-31P2-1H2', ('trans-P2H2', 2): 'trans-31P2-1H-2H'}[source]¶
All
HITRAN_MOLECULESare also converted to their ExoMol full-name format inget_exomol_full_isotope_name()
- class ElectronicState(molecule_name, isotope, state, term_symbol='', g_e=None, spectroscopic_constants='default', spectroscopic_constants_type='herzberg', Erovib=None, Ehaj=None, vmax=None, vmax_morse=None, Jmax=None, Ediss=None, **kwargs)[source]¶
Bases:
IsotopeDefine an electronic state of an
Isotopeof aMolecule- Parameters:
molecule_name (str, int) – molecule name, or HITRAN identifier
isotope (int) – isotope number of the molecule (sorted by abundance on Earth, HITRAN convention).
state (str) – Electronic state name
term_symbol (str) – Term symbol. Default ‘’
g_e (int) – Degeneracy. Default
Nonespectroscopic_constants (str,
'default', or dict) – filename of spectroscopic constants under Herzberg or Dunham format.Expected in the file:
- Yij: cm-1
rovibrational coefficients in Dunham convention
or
- wexe, Be, etc.cm-1
rovibrational coefficients in Herzberg convention
or
- Te: cm-1
electronic energy. Default
Noneif not given
If
default, the constants defined in spectroscopic constants are used.One can also directly give a dictionary directly:
spectroscopic_constants = {'we':2300, 'wexe':20}
spectroscopic_constants_type (
'herzberg','dunham') – convention for spectroscopic constants. Default'herzberg'Erovib (function) – Rovibrational energy of the molecule. Accessible with, typically, Mol.Erovib(v,J)
Ehaj (function) – To return vibrational energy in harmonic and anharmonic component, plus rotational energy. Used to build Treanor distributions
vmax, vmax_morse (int, or
None) – maximum vibrational number (required for partition function calculation) to be calculated with Dunham expansion, and Morse potential If None, number will be inferred from dissociation energyJmax (int, or
None) – maximum rotational number (required for partition function calculation) If None, number will be inferred from dissociation energyEdiss (cm-1) – dissociation energy. Required for partition function calculation if neither vmax nor Jmax are given
kwargs (**dict) – forwarded to parent class
Examples
Examples using
radis.db.classes.ElectronicState¶See also
- Ehaj[source]¶
overwritten by Erovib if given, or by default Dunham developments if spectroscopic_constants are given
- Type:
func
- Erovib(v, J, remove_ZPE=True)[source]¶
Calculate rovibrational energy of molecule
\[E(v,J) = G(v) + F(v,J)\]Works with Herzberg convention for the spectroscopic coefficients used in
Gv(),Fv():Parameters: * **v** (*int*) -- vibrational state
For polyatomic molecules, use
v1, v2, v3, etc.instead ofv.J (int) – rotational state
remove_ZPE (boolean) – if
True, removes energy of v=0,J=0 vibrational level (zero-point-energy) DefaultTrue
- Return type:
energy of state in cm-1
Notes
Method is overwritten on molecule creation for polyatomic molecules. Refer to the correct method below:
CO2:
EvJ_co2()
- get_Morse_inc()[source]¶
Get Morse potential energy increment correction for given molecule
Examples
inc = ElecState.get_Morse_inc() Delta_E(vi, vi+1) = Delta_E0 - (vi+1-vi0)*inc
for the energy gap between vibrational level vi and vi+1, where vi0 is the last vibrational level calculated with Dunham expansion, and and Delta_E0 = DeltaE(vi0-1, vi0)
See also
- HITRAN_CLASS1 = ['CO', 'HF', 'HCl', 'HBr', 'HI', 'N2', 'NO+'][source]¶
Diatomic molecules with ?
- Type:
str
- HITRAN_CLASS10 = ['CH4', 'CH3Cl', 'C2H6', 'HNO3', 'SF6', 'HCOOH', 'ClONO2', 'C2H4', 'CH3OH'][source]¶
Pentatomic or greater polyatomic
- Type:
str
- HITRAN_CLASS3 = ['NO', 'OH', 'ClO'][source]¶
Diatomic molecules with doublet-Pi electronic state
- Type:
str
- HITRAN_CLASS6 = ['H2O', 'O3', 'SO2', 'NO2', 'HOCl', 'H2S', 'HO2', 'HOBr'][source]¶
Non-linear triatomic
- Type:
str
- HITRAN_GROUP1 = ['H2O', 'O3', 'SO2', 'NO2', 'HNO3', 'H2CO', 'HOCl', 'H2O2', 'COF2', 'H2S', 'HO2', 'HCOOH', 'ClONO2', 'HOBr', 'C2H4'][source]¶
asymmetric rotors
- Type:
str
- HITRAN_GROUP2 = ['CO2', 'N2O', 'CO', 'HF', 'HCl', 'HBr', 'HI', 'OCS', 'N2', 'HCN', 'C2H2', 'NO+'][source]¶
diatomic and linear molecules
- Type:
str
- HITRAN_GROUP4 = ['CH3D', 'CH3Cl', 'C2H6', 'NH3', 'PH3', 'CH3OH'][source]¶
symmetric rotors
- Type:
str
- HITRAN_MOLECULES = ['H2O', 'CO2', 'O3', 'N2O', 'CO', 'CH4', 'O2', 'NO', 'SO2', 'NO2', 'NH3', 'HNO3', 'OH', 'HF', 'HCl', 'HBr', 'HI', 'ClO', 'OCS', 'H2CO', 'HOCl', 'N2', 'HCN', 'CH3Cl', 'H2O2', 'C2H2', 'C2H6', 'PH3', 'COF2', 'SF6', 'H2S', 'HCOOH', 'HO2', 'O', 'ClONO2', 'NO+', 'HOBr', 'C2H4', 'CH3OH', 'CH3Br', 'CH3CN', 'CF4', 'C4H2', 'HC3N', 'H2', 'CS', 'SO3', 'C2N2', 'COCl2', 'SO', 'CH3F', 'GeH4', 'CS2', 'CH3I', 'NF3', 'H3+', 'CH3', 'S2', 'COFCl', 'HONO', 'ClNO2'][source]¶
list of [HITRAN-2020] molecules.
- Type:
str
- class Isotope(molecule_name, isotope, isotope_name='', abundance=None, **kwargs)[source]¶
Bases:
MoleculeCreate an isotope of a given
Molecule- Parameters:
molecule_name (str, or int) – molecule name or HITRAN identifier
isotope (int) – isotope identifier, sorted by decreasing abundance (cf HITRAN nomenclature)
- Other Parameters:
isotope_name (str) – (optional) isotope name. Default ‘’
abundance (float) – isotopologue abundance. Default
None
See also
- class Molecule(name, verbose=True)[source]¶
Bases:
objectDefine a new molecule
- Parameters:
name (str, int) – molecule name, or HITRAN identifier
- Other Parameters:
verbose (boolean) – more blabla
See also
- get_element_symbol(species)[source]¶
Extracts the element symbol from the species given in spectroscopic notation
- get_ielem_charge(species)[source]¶
return the atomic number xx and the charge yy of a positive or neutral atomic species input in the form of a
str‘xx.yy’
- get_molecule(molecule_id)[source]¶
For a given input molecular identifier, return the corresponding
HITRAN_MOLECULESname [1]_.- Parameters:
molecular_id (str) – Hitran identifier of the molecule.
References
- get_molecule_identifier(molecule_name)[source]¶
For a given input molecular formula, return the corresponding
HITRAN_MOLECULESidentifier number [1]_.- Parameters:
molecular_formula (str) – The string describing the molecule.
- Returns:
M – The HITRAN molecular identified number.
- Return type:
int
References
[1] Function is from https://github.com/nzhagen/hitran/blob/master/hitran.py
- roman_to_int(roman)[source]¶
A function to convert a
strof roman numerals to anintShould support ‘Standard form’, ‘Other additive forms’, and ‘Other subtractive forms’ mentioned here: https://en.wikipedia.org/wiki/Roman_numerals
- to_conventional_name(species)[source]¶
To convert an atomic species given in any of the following forms to spectroscopic notation (with an underscore rather than whitespace):
as a
strin spectroscopic notation with a space separating the symbol and ionisation level (e.g. ‘O II’ for singly ionised oxygen)as an
intcomposed of the atomic number xx multiplied by 100 and then added to the charge (801 for O_II, 2600 for Fe_I)as a ``str`` (not a float) in the form ‘xx.yy’, i.e. the charge divided by 100 and then added to the atomic number
For neutrals, as a
strwith just the atomic symbolFor ions, as a
strcomposed of the atomic symbol followed by a string of + signs the number of which matches the charge on the ion
If given a molecule name or HITRAN ID, it is returned unchanged