Skip to content
Petru-Milev edited this page Sep 20, 2023 · 2 revisions

Welcome to the HF_project wiki!

This code is reproducing the SCF procedure described in the book Modern Quantum Chemistry: Introduction to Advanced Electronic Structure Theory by Attila Szabo and Neil S. Ostlund (pages 145 - 146), and expands it over the polyatomic systems (the book presents example only for diatomic systems). The following text is reproduced from the book in order to describe what this program is doing. The text can be deleted upon request.

(Start of citation. pages 145-146)
We describe the actual computational procedure for the obtaining restricted closed-shell Hartree-Fock wave function $\left| \psi_0 \right\rangle$. The SCF procedure is as following:

  1. Specify a molecule (a set of nuclear coordinates $\vec{R_A}$, atomic numbers $Z_A$, and number of electrons N and a basis set $\phi_{\mu}$
  2. Calculate all required molecular integrals, $S_{\mu \nu}$, ${H^{core}_{\mu \nu}}$, and $(\mu \nu | \lambda \sigma)$
  3. Diagonalize the overlap matrix $S$ and obtain a transformation matrix $X$
  4. Obtain a guess at the density matrix $P$
  5. Calculate the matrix $G$ from the density matrix $P$ and the two electron integrals $(\mu \nu | \lambda \sigma)$
  6. Add G to the core-Hamiltonian to obtain the Fock matrix $F=H^{core} + G$
  7. Calculate the transformed Fock matrix $F'=X^{\dagger}FX$
  8. Diagonalizing $F'$ to obtain $C'$ and $\epsilon$
  9. Calculate $C=XC'$
  10. Form a new density matrix $P$ from $C$
  11. Determine if the whether the procedure has converged., i.e., determine if the new density matrix of step 10 is the same as previous density matrix within a specified criterion. If the procedure did not converge return to step 5 with the new density matrix.
  12. If the procedure has converged, use the calculated quantities to get desired properties.

(End of citation)

The results have been checked with Gaussian software and they are identical. In future I plan on adding calculating of different features to this code, in order to calculate different properties and to implement different methods.

The main scope of this code is to better the physics behind the implemented features.

Clone this wiki locally