Torsional degrees of freedom¶

class
rmgpy.statmech.
HinderedRotor
(inertia=None, symmetry=1, barrier=None, fourier=None, rotationalConstant=None, quantum=False, semiclassical=True)¶ A statistical mechanical model of a onedimensional 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 modelsemiclassical True
to use the semiclassical correction,False
otherwiseNote 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 onedimensional 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 closedform 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}}\]
barrier
¶ The barrier height of the cosine potential.

energies
¶ energies – numpy.ndarray

fitCosinePotentialToData
(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.

fitFourierPotentialToData
(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
¶ frequency – ‘double’

getDensityOfStates
(self, ndarray Elist, ndarray densStates0=None) → ndarray¶ Return the density of states \(\rho(E) \ dE\) at the specified energies Elist in J/mol above the ground state. If an initial density of states densStates0 is given, the rotor density of states will be convoluted into these states.

getEnthalpy
(self, double T) → double¶ Return the enthalpy in J/mol for the degree of freedom at the specified temperature T in K.

getEntropy
(self, double T) → double¶ Return the entropy in J/mol*K for the degree of freedom at the specified temperature T in K.

getFrequency
(self) → double¶ Return the frequency of vibration in cm^1 corresponding to the limit of harmonic oscillation.

getHamiltonian
(self, int Nbasis) → ndarray¶ Return the to the Hamiltonian matrix for the hindered rotor for the given number of basis functions Nbasis. The Hamiltonian matrix is returned in banded lower triangular form and with units of J/mol.

getHeatCapacity
(self, double T) → double¶ Return the heat capacity in J/mol*K for the degree of freedom at the specified temperature T in K.

getLevelDegeneracy
(self, int J) → int¶ Return the degeneracy of level J.

getLevelEnergy
(self, int J) → double¶ Return the energy of level J in J.

getPartitionFunction
(self, double T) → double¶ Return the value of the partition function \(Q(T)\) at the specified temperature T in K.

getPotential
(self, double phi) → double¶ Return the value of the hindered rotor potential \(V(\phi)\) in J/mol at the angle phi in radians.

getSumOfStates
(self, ndarray Elist, ndarray sumStates0=None) → ndarray¶ Return the sum of states \(N(E)\) at the specified energies Elist in J/mol above the ground state. If an initial sum of states sumStates0 is given, the rotor sum of states will be convoluted into these states.

inertia
¶ The moment of inertia of the rotor.

quantum
¶ quantum – ‘bool’

rotationalConstant
¶ The rotational constant of the rotor.

semiclassical
¶ semiclassical – ‘bool’

solveSchrodingerEquation
(self, int Nbasis=401) → ndarray¶ Solves the onedimensional timeindependent Schrodinger equation to determine the energy levels of a onedimensional hindered rotor with a Fourier series potential using Nbasis 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
¶ symmetry – ‘int’
