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]