# Torsional degrees of freedom¶

class rmgpy.statmech.HinderedRotor(inertia=None, symmetry=1, barrier=None, fourier=None, rotationalConstant=None, quantum=True, semiclassical=True, frequency=None, energies=None)

A statistical mechanical model of a one-dimensional hindered rotor. The attributes are:

Attribute

Description

inertia

The moment of inertia of the rotor

rotationalConstant

The rotational constant of the rotor

symmetry

The symmetry number of the rotor

fourier

The $$2 x N$$ array of Fourier series coefficients

barrier

The barrier height of the cosine potential

quantum

True to use the quantum mechanical model, False to use the classical model

semiclassical

True to use the semiclassical correction, False otherwise

Note that the moment of inertia and the rotational constant are simply two ways of representing the same quantity; only one of these can be specified independently.

The Schrodinger equation for a one-dimensional hindered rotor is given by

$-\frac{\hbar^2}{2I} \frac{d^2}{d \phi^2} \Psi(\phi) + V(\phi) \Psi(\phi) &= E \Psi(\phi)$

where $$I$$ is the reduced moment of inertia of the torsion and $$V(\phi)$$ describes the potential of the torsion. There are two common forms for the potential: a simple cosine of the form

$V(\phi) = \frac{1}{2} V_0 \left( 1 - \cos \sigma \phi \right)$

where $$V_0$$ is the barrier height and $$\sigma$$ is the symmetry number, or a more general Fourier series of the form

$V(\phi) = A + \sum_{k=1}^C \left( a_k \cos k \phi + b_k \sin k \phi \right)$

where $$A$$, $$a_k$$ and $$b_k$$ are fitted coefficients. Both potentials are typically defined such that the minimum of the potential is zero and is found at $$\phi = 0$$.

For either the cosine or Fourier series potentials, the energy levels of the quantum hindered rotor must be determined numerically. The cosine potential does permit a closed-form representation of the classical partition function, however:

$Q_\mathrm{hind}^\mathrm{cl}(T) = \left( \frac{2 \pi I k_\mathrm{B} T}{h^2} \right)^{1/2} \frac{2 \pi}{\sigma} \exp \left( -\frac{V_0}{2 k_\mathrm{B} T} \right) I_0 \left( \frac{V_0}{2 k_\mathrm{B} T} \right)$

A semiclassical correction to the above is usually required to provide a reasonable estiamate of the partition function:

$\begin{split}Q_\mathrm{hind}^\mathrm{semi}(T) &= \frac{Q_\mathrm{vib}^\mathrm{quant}(T)}{Q_\mathrm{vib}^\mathrm{cl}(T)} Q_\mathrm{hind}^\mathrm{cl}(T) \\ &= \frac{h \nu}{k_\mathrm{B} T} \frac{1}{1 - \exp \left(- h \nu / k_\mathrm{B} T \right)} \left( \frac{2 \pi I k_\mathrm{B} T}{h^2} \right)^{1/2} \frac{2 \pi}{\sigma} \exp \left( -\frac{V_0}{2 k_\mathrm{B} T} \right) I_0 \left( \frac{V_0}{2 k_\mathrm{B} T} \right)\end{split}$

Above we have defined $$\nu$$ as the vibrational frequency of the hindered rotor:

$\nu \equiv \frac{\sigma}{2 \pi} \sqrt{\frac{V_0}{2 I}}$
as_dict(self) dict

A helper function for dumping objects as dictionaries for YAML files

Returns:

A dictionary representation of the object

Return type:

dict

barrier

The barrier height of the cosine potential.

energies

numpy.ndarray

Type:

energies

fit_cosine_potential_to_data(self, ndarray angle, ndarray V)

Fit the given angles in radians and corresponding potential energies in J/mol to the cosine potential. For best results, the angle should begin at zero and end at $$2 \pi$$, with the minimum energy conformation having a potential of zero be placed at zero angle. The fit is attempted at several possible values of the symmetry number in order to determine which one is correct.

fit_fourier_potential_to_data(self, ndarray angle, ndarray V)

Fit the given angles in radians and corresponding potential energies in J/mol to the Fourier series potential. For best results, the angle should begin at zero and end at $$2 \pi$$, with the minimum energy conformation having a potential of zero be placed at zero angle.

fourier

The $$2 x N$$ array of Fourier series coefficients.

frequency

‘double’

Type:

frequency

get_density_of_states(self, ndarray e_list, ndarray dens_states_0=None) ndarray

Return the density of states $$\rho(E) \ dE$$ at the specified energies e_list in J/mol above the ground state. If an initial density of states dens_states_0 is given, the rotor density of states will be convoluted into these states.

get_enthalpy(self, double T) double

Return the enthalpy in J/mol for the degree of freedom at the specified temperature T in K.

get_entropy(self, double T) double

Return the entropy in J/mol*K for the degree of freedom at the specified temperature T in K.

get_frequency(self) double

Return the frequency of vibration in cm^-1 corresponding to the limit of harmonic oscillation.

get_hamiltonian(self, int n_basis) ndarray

Return the to the Hamiltonian matrix for the hindered rotor for the given number of basis functions n_basis. The Hamiltonian matrix is returned in banded lower triangular form and with units of J/mol.

get_heat_capacity(self, double T) double

Return the heat capacity in J/mol*K for the degree of freedom at the specified temperature T in K.

get_level_degeneracy(self, int J) int

Return the degeneracy of level J.

get_level_energy(self, int J) double

Return the energy of level J in J.

get_partition_function(self, double T) double

Return the value of the partition function $$Q(T)$$ at the specified temperature T in K.

get_potential(self, double phi) double

Return the value of the hindered rotor potential $$V(\phi)$$ in J/mol at the angle phi in radians.

get_sum_of_states(self, ndarray e_list, ndarray sum_states_0=None) ndarray

Return the sum of states $$N(E)$$ at the specified energies e_list in J/mol above the ground state. If an initial sum of states sum_states_0 is given, the rotor sum of states will be convoluted into these states.

inertia

The moment of inertia of the rotor.

make_object(self, dict data, dict class_dict)
quantum

‘bool’

Type:

quantum

rotationalConstant

The rotational constant of the rotor.

semiclassical

‘bool’

Type:

semiclassical

solve_schrodinger_equation(self, int n_basis=401) ndarray

Solves the one-dimensional time-independent Schrodinger equation to determine the energy levels of a one-dimensional hindered rotor with a Fourier series potential using n_basis basis functions. For the purposes of this function it is usually sufficient to use 401 basis functions (the default). Returns the energy eigenvalues of the Hamiltonian matrix in J/mol.

symmetry

‘int’

Type:

symmetry