pmutt.statmech.vib.QRRHOVib

class pmutt.statmech.vib.QRRHOVib(vib_wavenumbers, Bav=1e-44, v0=100.0, alpha=4, imaginary_substitute=None)

Bases: _ModelBase

Vibrational modes using the Quasi Rigid Rotor Harmonic Oscillator approximation. Equations source from:

  • Li, Y. P.; Gomes, J.; Sharada, S. M.; Bell, A. T.; Head-Gordon, M. J. Phys. Chem. C 2015, 119 (4), 1840–1850.

  • Grimme, S. Chem. - A Eur. J. 2012, 18 (32), 9955–9964.

vib_wavenumber

Vibrational wavenumbers (\(\tilde{\nu}\)) in 1/cm

Type:

list of float

Bav

Average molecular moment of inertia as a limiting value of small wavenumbers. Default is 1.e-44 kg m2

Type:

float, optional

v0

Wavenumber to scale vibrations. Default is 100 cm -1

Type:

float, optional

alpha

Power to raise ratio of wavenumbers. Default is 4

Type:

int, optional

imaginary_substitute

If this value is set, imaginary frequencies are substituted with this value for calculations. Otherwise, imaginary frequencies are ignored. Default is None

Type:

float, optional

__init__(vib_wavenumbers, Bav=1e-44, v0=100.0, alpha=4, imaginary_substitute=None)

Methods

__init__(vib_wavenumbers[, Bav, v0, alpha, ...])

from_dict(json_obj)

Recreate an object from the JSON representation.

get_Cp(units, **kwargs)

Calculate the heat capacity (constant P)

get_CpoR(T)

Calculates the dimensionless heat capacity at constant pressure

get_Cv(units, **kwargs)

Calculate the heat capacity (constant V)

get_CvoR(T)

Calculates the dimensionless heat capacity at constant volume

get_F(units[, T])

Calculate the Helmholtz energy

get_FoRT(T)

Calculates the dimensionless Helmholtz energy

get_G(units[, T])

Calculate the Gibbs energy

get_GoRT(T)

Calculates the dimensionless Gibbs energy

get_H(units[, T])

Calculate the enthalpy

get_HoRT(T)

Calculates the dimensionless enthalpy

get_S(units, **kwargs)

Calculate the entropy

get_SoR(T)

Calculates the dimensionless entropy

get_U(units[, T])

Calculate the internal energy

get_UoRT(T)

Calculates the dimensionless internal energy

get_ZPE()

Calculates the zero point energy

get_q()

Calculates the partition function

print_calc_wavenumbers()

Prints the wavenumbers that will be used in a thermodynamic calculation.

to_dict()

Represents object as dictionary with JSON-accepted datatypes

Attributes

vib_wavenumbers

classmethod from_dict(json_obj)

Recreate an object from the JSON representation.

Parameters:

json_obj (dict) – JSON representation

Returns:

QRRHOVib

Return type:

QRRHOVib object

get_Cp(units, **kwargs)

Calculate the heat capacity (constant P)

Parameters:
  • units (str) – Units as string. See R() for accepted units.

  • kwargs (keyword arguments) – Parameters needed by get_CpoR

Returns:

Cp – Heat capacity (constant P) in appropriate units

Return type:

float

get_CpoR(T)

Calculates the dimensionless heat capacity at constant pressure

\(\frac{C_{P}^{qRRHO}} {R} = \frac{C_{V}^{qRRHO}} {R}\)

Parameters:

T (float) – Temperature in K

Returns:

CpoR_vib – Vibrational dimensionless heat capacity at constant pressure

Return type:

float

get_Cv(units, **kwargs)

Calculate the heat capacity (constant V)

Parameters:
  • units (str) – Units as string. See R() for accepted units.

  • kwargs (keyword arguments) – Parameters needed by get_CvoR

Returns:

Cv – Heat capacity (constant V) in appropriate units

Return type:

float

get_CvoR(T)

Calculates the dimensionless heat capacity at constant volume

\(\frac {C_{v}^{qRRHO}}{R} = \sum_{i}\omega_i\frac{C_{v,i} ^{RRHO}}{R} + \frac{1}{2}(1-\omega_i)\)

\(\frac{C_{v}^{RRHO}}{R} = \sum_{i}\exp \bigg(-\frac{ \Theta_i}{T}\bigg) \bigg(\frac{\Theta_i}{T}\frac{1}{1-\exp(- \frac{\Theta_i}{T})}\bigg)^2\)

Parameters:

T (float) – Temperature in K

Returns:

CvoR_vib – Vibrational dimensionless heat capacity at constant volume

Return type:

float

get_F(units, T=298.15, **kwargs)

Calculate the Helmholtz energy

Parameters:
  • units (str) – Units as string. See R() for accepted units but omit the ‘/K’ (e.g. J/mol).

  • T (float, optional) – Temperature in K. Default is 298.15 K

  • kwargs (keyword arguments) – Parameters needed by get_FoRT

Returns:

F – Hemholtz energy in appropriate units

Return type:

float

get_FoRT(T)

Calculates the dimensionless Helmholtz energy

\(\frac{A^{qRRHO}}{RT} = \frac{U^{qRRHO}}{RT}- \frac{S^{qRRHO}}{R}\)

Parameters:

T (float) – Temperature in K

Returns:

FoRT_vib – Vibrational dimensionless Helmholtz energy

Return type:

float

get_G(units, T=298.15, **kwargs)

Calculate the Gibbs energy

Parameters:
  • units (str) – Units as string. See R() for accepted units but omit the ‘/K’ (e.g. J/mol).

  • T (float, optional) – Temperature in K. Default is 298.15 K

  • kwargs (keyword arguments) – Parameters needed by get_GoRT

Returns:

G – Gibbs energy in appropriate units

Return type:

float

get_GoRT(T)

Calculates the dimensionless Gibbs energy

\(\frac{G^{qRRHO}}{RT} = \frac{H^{qRRHO}}{RT}- \frac{S^{qRRHO}}{R}\)

Parameters:

T (float) – Temperature in K

Returns:

GoRT_vib – Vibrational dimensionless Gibbs energy

Return type:

float

get_H(units, T=298.15, **kwargs)

Calculate the enthalpy

Parameters:
  • units (str) – Units as string. See R() for accepted units but omit the ‘/K’ (e.g. J/mol).

  • T (float, optional) – Temperature in K. Default is 298.15 K

  • kwargs (keyword arguments) – Parameters needed by get_HoRT

Returns:

H – Enthalpy in appropriate units

Return type:

float

get_HoRT(T)

Calculates the dimensionless enthalpy

\(\frac{H^{qRRHO}} {RT} = \frac{U^{qRRHO}} {RT}\)

Parameters:

T (float) – Temperature in K

Returns:

HoRT_vib – Vibrational dimensionless enthalpy

Return type:

float

get_S(units, **kwargs)

Calculate the entropy

Parameters:
  • units (str) – Units as string. See R() for accepted units.

  • kwargs (keyword arguments) – Parameters needed by get_SoR

Returns:

S – Entropy in appropriate units

Return type:

float

get_SoR(T)

Calculates the dimensionless entropy

\(\frac{S^{qRRHO}}{R}=\sum_i\omega_i\frac{S_i^{H}}{R}+(1- \omega_i)\frac{S_i^{RRHO}}{R}\)

\(\frac {S^{RRHO}_i}{R} = \frac{1}{2} + \log \bigg(\bigg[ \frac{8\pi^3\mu'_ik_BT}{h^2}\bigg]^{\frac{1}{2}}\bigg)\)

\(\frac {S^{H}_i}{R}=\bigg(\frac{\Theta_i}{T}\bigg)\frac{1} {\exp(\frac{\Theta_i}{T})-1}-\log\bigg(1-\exp(\frac{-\Theta_i} {T})\bigg)\)

Parameters:

T (float) – Temperature in K

Returns:

SoR_vib – Vibrational dimensionless entropy

Return type:

float

get_U(units, T=298.15, **kwargs)

Calculate the internal energy

Parameters:
  • units (str) – Units as string. See R() for accepted units but omit the ‘/K’ (e.g. J/mol).

  • T (float, optional) – Temperature in K. Default is 298.15 K

  • kwargs (keyword arguments) – Parameters needed by get_UoRT

Returns:

U – Internal energy in appropriate units

Return type:

float

get_UoRT(T)

Calculates the dimensionless internal energy

\(\frac {U^{qRRHO}}{RT} = \sum_{i}\omega_i\frac{U^{RRHO}}{RT} + \frac{1}{2}(1-\omega_i)\)

\(\frac {U^{RRHO}_{i}}{RT} = \frac{\Theta_i}{T} \bigg( \frac{1}{2} + \frac{\exp(-\frac{\Theta_i}{T})}{1-\exp(-\frac{ \Theta_i}{T})}\bigg)\)

Parameters:

T (float) – Temperature in K

Returns:

UoRT_vib – Vibrational dimensionless internal energy

Return type:

float

get_ZPE()

Calculates the zero point energy

\(ZPE=\frac{1}{2}k_b\sum_i \omega_i\Theta_{V,i}\)

Returns:

zpe – Zero point energy in eV

Return type:

float

get_q()

Calculates the partition function

Returns:

q_vib – Vibrational partition function

Return type:

float

print_calc_wavenumbers()

Prints the wavenumbers that will be used in a thermodynamic calculation. If self.imaginary_substitute is a float, then imaginary frequencies are replaced with that value. Otherwise, imaginary frequencies are ignored.

to_dict()

Represents object as dictionary with JSON-accepted datatypes

Returns:

obj_dict

Return type:

dict

property vib_wavenumbers