rmgpy.statmech.LinearRotor¶
- class rmgpy.statmech.LinearRotor(inertia=None, symmetry=1, quantum=False, rotationalConstant=None)¶
A statistical mechanical model of a two-dimensional (linear) rigid 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
quantum
True
to use the quantum mechanical model,False
to use the classical modelNote 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.
In the majority of chemical applications, the energies involved in the rigid rotor place it very nearly in the classical limit at all relevant temperatures; therefore, the classical model is used by default.
A linear rigid rotor is modeled as a pair of point masses \(m_1\) and \(m_2\) separated by a distance \(R\). Since we are modeling the rotation of this system, we choose to work in spherical coordinates. Following the physics convention – where \(0 \le \theta \le \pi\) is the zenith angle and \(0 \le \phi \le 2\pi\) is the azimuth – the Schrodinger equation for the rotor is given by
\[-\frac{\hbar^2}{2I} \left[ \frac{1}{\sin \theta} \frac{\partial}{\partial \theta} \left( \sin \theta \frac{\partial}{\partial \theta} \right) + \frac{1}{\sin^2 \theta} \frac{\partial^2}{\partial \phi^2} \right] \Psi(\theta, \phi) &= E \Psi(\theta, \phi)\]where \(I \equiv \mu R^2\) is the moment of inertia of the rotating body, and \(\mu \equiv m_1 m_2 / (m_1 + m_2)\) is the reduced mass. Note that there is no potential term in the above expression; for this reason, a rigid rotor is often referred to as a free rotor. Solving the Schrodinger equation gives the energy levels \(E_J\) and corresponding degeneracies \(g_J\) for the linear rigid rotor as
\[\begin{split}E_J &= B J (J + 1) \hspace{2em} J = 0, 1, 2, \ldots \\ g_J &= 2J + 1\end{split}\]where \(J\) is the quantum number for the rotor – sometimes called the total angular momentum quantum number – and \(B \equiv \hbar^2/2I\) is the rotational constant.
Using these expressions for the energy levels and corresponding degeneracies, we can evaluate the partition function for the linear rigid rotor:
\[Q_\mathrm{rot}(T) = \frac{1}{\sigma} \sum_{J=0}^\infty (2J + 1) e^{- B J (J + 1) / k_\mathrm{B} T}\]In many cases the temperature of interest is large relative to the energy spacing; in this limit we can obtain a closed-form analytical expression for the linear rotor partition function in the classical limit:
\[Q_\mathrm{rot}^\mathrm{cl}(T) = \frac{1}{\sigma} \frac{8 \pi^2 I k_\mathrm{B} T}{h^2}\]Above we have also introduced \(\sigma\) as the symmetry number of the rigid rotor.
- as_dict()¶
A helper function for dumping objects as dictionaries for YAML files
- Returns:
A dictionary representation of the object
- Return type:
dict
- 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_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 kJ/mol.
- get_partition_function(self, double T) double ¶
Return the value of the partition function \(Q(T)\) at the specified temperature T in K.
- 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.
- symmetry¶
‘int’
- Type:
symmetry