Quantum Mechanics
This page provides a detailed description of the quantum mechanics functions implemented in the HAOT package. For additional clarity, these descriptions can also be accessed and explored interactively in a Python session using the help() function.
- haot.zero_point_energy(molecule)[source]
Calculates zero-point energy (ZPE) using spectroscopy constants for diatomic molecules
- Parameters:
molecule (
str) – NO+, N2+, O2+, NO, N2, O2, H2- Return type:
float- Returns:
zero point energy in [cm^-1]
Examples
>> zero_point_energy(‘O2’)
- Reference:
Experimental Vibrational Zero-Point Energies Diatomic Molecules (https://doi.org/10.1063/1.2436891)
- haot.vibrational_partition_function(vibrational_number, temperature_K, molecule)[source]
Calculates the vibrational partition function base in the harmonic terms only for diatomic molecules
- Parameters:
vibrational_number (
int) – vibrational quantum number (has to be positive)temperature_K (
float) – reference temperature in [K]molecule (
str) – NO+, N2+, O2+, NO, N2, O2
- Return type:
float- Returns:
vibrational partition function
Examples
>> vibrational_partition_function(2, 350.0, ‘N2’)
- haot.rotational_partition_function(rotational_number, temperature_K, molecule)[source]
Calculates the rotational partition function base in the harmonic terms only for diatomic molecules
- Parameters:
rotational_number (
int) – rotational quantum number (has to be positive)temperature_K (
float) – reference temperature in [K]molecule (
str) – NO+, N2+, O2+, NO, N2, O2
- Return type:
float- Returns:
rotational partition function
Examples
>> rotational_partition_function(2, 350.0, ‘N2’)
- haot.born_oppenheimer_partition_function(vibrational_number, rotational_number, temperature_K, molecule)[source]
Calculates the partition function using the Born-Oppenheimer approximation
- Parameters:
vibrational_number (
int) – vibrational quantum number (has to be positive)rotational_number (
int) – rotational quantum number (has to be positive)temperature_K (
float) – reference temperature in [K]molecule (
str) – NO+, N2+, O2+, NO, N2, O2
- Return type:
float- Returns:
partition function using the Born-Oppenheimer approximations
Examples
>> born_oppenheimer_partition_function(2, 4, 500.0, ‘O2’)
- haot.potential_dunham_coef_012(molecule)[source]
Calculates the 0th, 1st, and 2nd Dunham potential coefficients for diatomic molecules
- Parameters:
molecule (
str) – NO+, N2+, O2+, NO, N2, O2- Return type:
tuple[float,float,float]- Returns:
Dunham potential coefficients 0, 1, and 2
Examples
>> [a_0, a_1, a_2] = potential_dunham_coef_012(‘N2’)
- Reference:
Dunham potential energy coefficients of the hydrogen halides and carbon monoxide (https://doi.org/10.1016/0022-2852(76)90323-4)
Anharmonic Potential Constants and Their Dependence upon Bond Length (https://doi.org/10.1063/1.1731952)
- haot.potential_dunham_coeff_m(a_1, a_2, m)[source]
Calculates higher order Dunham potential coefficients
- Parameters:
a_1 (
float) – Dunham potential coefficienta_2 (
float) – Dunham potential coefficientm (
int) – desired Dunham potential coefficient
- Return type:
float- Returns:
Dunham potential coefficient at m
Examples
>> a_3 = potential_dunham_coef_m(a_1, a_2, 3)
- Reference:
A recursion formula for the coefficients of Dunham potential (https://doi.org/10.1016/j.theochem.2003.12.003)
- haot.boltzmann_factor(temperature_K, molecule, vibrational_number=None, rotational_number=None, born_opp_flag=False)[source]
Calculates the Boltzmann factor at a given vibrational quantum number, and/or rotational quantum number. If the born_opp_flag is provided, it will calculate the Boltzmann factor using the Born-Oppenheimer approximation
- Parameters:
temperature_K (
float) – reference temperature in [K]molecule (
str) – NO+, N2+, O2+, NO, N2, O2vibrational_number (
int) – vibrational quantum number (has to be positive)rotational_number (
int) – rotational quantum number (has to be positive)born_opp_flag (
bool) – uses the Born-Oppenheimer approximation, False (default)
- Return type:
float- Returns:
Boltzmann factor at given temperature, rotational and/or vibrational quantum number
Examples
>> boltzmann_factor(500.0, ‘O2’, 3)
>> boltzmann_factor(500.0, ‘O2’, 3, 2)
>> boltzmann_factor(500.0, ‘O2’, 3, 1, True)
- haot.boltzmann_distribution(temperature_K, molecule, vibrational_number=None, rotational_number=None, born_opp_flag=False)[source]
Calculates the Boltzmann distribution function at a given vibrational quantum number, and/or rotational quantum number. If the born_opp_flag is provided, it will calculate the Boltzmann factor using the Born-Oppenheimer approximation
- Parameters:
temperature_K (
float) – reference temperature in [K]molecule (
str) – NO+, N2+, O2+, NO, N2, O2vibrational_number (
int) – vibrational quantum number (has to be positive)rotational_number (
int) – rotational quantum number (has to be positive)born_opp_flag (
bool) – uses the Born-Oppenheimer approximation, False (default)
- Return type:
ndarray- Returns:
Boltzmann distribution [vibrational_number, rotational_number]
Examples
>> boltzmann_distribution(500.0, ‘O2’, 3, 2, true)
- haot.born_oppenheimer_approximation(vibrational_number, rotational_number, molecule)[source]
Calculates the energy at a rotational and vibrational quantum number, using the Born-Oppenheimer approximation
- Parameters:
molecule (
str) – NO+, N2+, O2+, NO, N2, O2vibrational_number (
int) – vibrational quantum number (has to be positive),rotational_number (
int) – rotational quantum number (has to be positive)
- Return type:
float- Returns:
Vibro-rotational energy at given vibrational and rotational quantum numbers in [cm^-1]
Examples
>> born_oppenheimer_approximation(2,3,’N2’)
- haot.vibrational_energy_k(vibrational_number, molecule)[source]
Calculates the vibrational energy at a given vibrational quantum number, using for the harmonic terms
- Parameters:
vibrational_number (
int) – vibrational quantum number (has to be positive)molecule (
str) – NO+, N2+, O2+, NO, N2, O2
- Return type:
float- Returns:
harmonic terms of the vibrational energy in [cm^-1]
Examples
>> vibrational_energy_k(2, ‘N2’)
- haot.rotational_energy_k(rotational_number, molecule)[source]
Calculates the rotational energy at a given rotational quantum number, using for the harmonic terms
- Parameters:
rotational_number (
int) – rotational quantum number (has to be positive)molecule (
str) – NO+, N2+, O2+, NO, N2, O2
- Return type:
float- Returns:
harmonic terms of the rotational energy in [cm^-1]
Examples
>> rotational_energy_k(2, ‘N2’)
- haot.characteristic_temperatures_K(molecule)[source]
Calculates the Translational and Vibrational temperature for diatomic molecules
- Parameters:
molecule (
str) – NO+, N2+, O2+, NO, N2, O2, H2- Return type:
tuple[float,float]- Returns:
Translation and Vibrational characteristic temperatures in [K]
- Reference:
Statistical Thermodynamics An Engineering Approach (John W. Daily), DOI: 10.1017/9781108233194
Examples
>> [T_tr, T_vib] = characteristic_temperatures_K(‘N2’)