Roothaan equation is the matrix version of Hartree-Fock equations. The derivation is direct as follow.
- Hartree-Fock equation for the \(i^\mathrm{th}\) spatial orbital \(\varphi_{i}\)
- \(\hat{f}(1)\varphi_{i}(1)=\epsilon_{i}\varphi_{i}(1)\)
- Given a set of basis functions \(\left\{\chi_{\nu}\right\},\nu=1,2,\dots,m\), the HF orbitals can be expanded as
- \(\varphi_{i}=\sum_{\nu=1}^{m}{C_{{\nu}i}\chi_{\nu},i=1,2,\dots,m}\)
- Denote overlap matrix and Fock matrix as follows
- \(S_{\mu\nu}=\langle\chi_{\mu}|\chi_{\nu}\rangle\)
- \(F_{\mu\nu}=\left\langle\chi_{\mu}\left|\hat{f}\right|\chi_{\nu}\right\rangle\)
- HF equations are then transformed into
- \(\sum_{\nu=1}^{m}{F_{\mu\nu}C_{{\nu}i}}=\epsilon_{i}\sum_{\nu=1}^{m}{S_{\mu\nu}C_{{\nu}i}},i=1,2,\dots,m\)
- Now we get the Roothaan equation
- \(\mathbf{F}\mathbf{C}=\mathbf{S}\mathbf{C}\mathbf{\epsilon}\)
It’s obvious that \(\mathbf{S}\) is real-symmetric positive-definite matrix. Thus, it can be Cholesky decomposed into product of upper triangular matrix and its transpose using dpotrf provided by lapack:
\(\mathbf{S}=\mathbf{U}^\dagger\mathbf{U}\)
After straight forwards linear algebra, one can get the orthogonalised Roothaan equation \(\mathbf{F}’\mathbf{C}’=\mathbf{C}’\mathbf{\epsilon}\) with these transformations: \(\mathbf{C}’=\mathbf{U}\mathbf{C}\) and \(\mathbf{F}’=\left(\mathbf{U}^{\dagger}\right)^{-1}\mathbf{F}\mathbf{U}^{-1}\).
To get \(\mathbf{C}’\), we merely need to diagonalise \(\mathbf{F}’\). This process can be done by calling dsyev (for symmetric matrices) or dgeev (for general matrices) provided by lapack. Then the original molecular orbitals \(\mathbf{C}\) can be obtained by a backwards transformation \(\mathbf{C}=\mathbf{U}^{-1}\mathbf{C}’\).
Noted herein that \(\mathbf{C}\) itself is NOT normalised but the resulting molecular orbitals are orthonormal. The reason is atomic bases are not orthogonal, so that \(\mathbf{C}\) is normalised with weight \(\mathbf{S}\). We can make a checking calculation to show this fact.
- The output from dsyev is orthonormalised as
- \(\mathbf{C}’^{\dagger}\mathbf{C}’=\mathbf{I}\)
- Plug \(\mathbf{C}’=\mathbf{U}\mathbf{C}\) into above equation and remember \(\mathbf{S}=\mathbf{U}^\dagger\mathbf{U}\)
- \(\mathbf{C}^{\dagger}\mathbf{S}\mathbf{C}=\mathbf{I}\)
- Molecular orbitals \(\varphi_{i}\) are orthonormal since
- \(\langle \varphi_{i} | \varphi_{j} \rangle = \sum_{\alpha, \beta}{C_{i\alpha}^{\ast}\langle \chi_{\alpha}|\chi_{\beta} \rangle C_{\beta j}} = \mathbf{C}^{\dagger}\mathbf{S}\mathbf{C} = \mathbf{I}\)
Lapack provides more convenient tools dsygv (for symmetric matrices) or dggev (for general matrices) to solve such generalised eigenvalue problems as Roothaan equation. Nevertheless, the algorithm lying in these tools is the same as stated above, so that the output eigenvectors are NOT normalised without weight \(\mathbf{S}\) either.
1 thought on “Molecular Orbitals from Roothaan Equation”