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 coefficient

  • a_2 (float) – Dunham potential coefficient

  • m (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, O2

  • vibrational_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, O2

  • vibrational_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, O2

  • vibrational_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’)

haot.reduced_mass_kg(molecule_1, molecule_2)[source]

Calculates the reduced mass in [kg]

Parameters:
  • molecule_1 (str) – name of molecule one

  • molecule_2 (str) – name of molecule two

Return type:

float

Returns:

reduced mass in [kg]

Examples

>> reduced_mass_kg(‘N’, ‘O’)

haot.molecular_spring_constant(molecule)[source]

Calculates the molecular spring constant in [N/m]

Parameters:

molecule (str) – NO+, N2+, O2+, NO, N2, O2, H2

Return type:

float

Returns:

spring force constant in [N/m]

Examples

>> molecular_spring_constant(‘N2’)