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 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 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