sf.apps.qchem.duschinsky¶
-
duschinsky
(Li, Lf, ri, rf, wf, m)[source]¶ Generate the Duschinsky rotation matrix \(U\) and displacement vector \(\delta\).
The Duschinsky transformation relates the normal coordinates of the initial and final states in a vibronic transition, \(q_i\) and \(q_f\) respectively, as:
\[q_f = U q_i + d,\]where \(U\) is the Duschinsky rotation matrix and \(d\) is a vector giving the displacement between the equilibrium structures of the two states involved in the vibronic transition. The normal coordinates of a molecule can be represented in terms of atomic displacements as:
\[q = L^T \sqrt{m} (r -r_e),\]where \(r_e\) represents the equilibrium geometry of the molecule, \(m\) represents atomic masses and \(L\) is a matrix containing the eigenvectors of the mass-weighted Hessian. The Duschinsky parameters \(U\) and \(d\) can be obtained as:
\[U = L_f^T L_i,\]\[d = L_f^T \sqrt{m} (r_e^i-r_e^f).\]Note that \(i\) and \(f\) refer to the initial and final states, respectively. The parameter \(d\) is usually represented as a dimensionless parameter \(\delta\) as:
\[\delta = l^{-1} d,\]where \(l\) is a diagonal matrix containing the vibrational frequencies \(\omega\) of the final state:
\[l_{kk} = \left ( \frac{\hbar }{2 \pi \omega_k c} \right )^{1/2},\]where \(\hbar\) is the reduced Planck constant and \(c\) is the speed of light.
The vibrational normal mode matrix for a molecule with \(M\) vibrational modes and \(N\) atoms is a \(3N \times M\) matrix where \(M = 3N - 6\) for nonlinear molecules and \(M = 3N - 5\) for linear molecules. The Duschinsky rotation matrix of a molecule is an \(M \times M\) matrix and the Duschinsky displacement vector has \(M\) components.
Example usage:
>>> Li = np.array([[-0.28933191], [0.0], [0.0], [0.95711104], [0.0], [0.0]]) >>> Lf = np.array([[-0.28933191], [0.0], [0.0], [0.95711104], [0.0], [0.0]]) >>> ri = np.array([-0.0236, 0.0, 0.0, 1.2236, 0.0, 0.0]) >>> rf = np.array([0.0, 0.0, 0.0, 1.4397, 0.0, 0.0]) >>> wf = np.array([1363.2]) >>> m = np.array([11.0093] * 3 + [1.0078] * 3) >>> U, delta = duschinsky(Li, Lf, ri, rf, wf, m) >>> U, delta (array([[0.99977449]]), array([-1.17623073]))
- Parameters
Li (array) – mass-weighted normal modes of the initial electronic state
Lf (array) – mass-weighted normal modes of the final electronic state
ri (array) – equilibrium molecular geometry of the initial electronic state
rf (array) – equilibrium molecular geometry of the final electronic state
wf (array) – normal mode frequencies of the final electronic state in units of \(\mbox{cm}^{-1}\)
m (array) – atomic masses in unified atomic mass units
- Returns
Duschinsky rotation matrix \(U\), Duschinsky displacement vector \(\delta\)
- Return type
tuple[array, array]