# scf

> The scf program performs Restricted Hartree-Fock calculations (the spatial part of the MOs is common for alpha and beta spinorbitals).

> It performs the following actions:

> 1. Compute/Read all the one- and two-electron integrals, and store them in memory
> 2. Check in the EZFIO database if there is a set of MOs. If there is, it will read them as initial guess. Otherwise, it will create a guess.
> 3. Perform the SCF iterations

> For the keywords related to the SCF procedure, see the `scf_utils` directory where you will find all options.

> At each iteration, the MOs are saved in the EZFIO database. Hence, if the calculation crashes for any unexpected reason, the calculation can be restarted by running again the SCF with the same EZFIO database.

> To start again a fresh SCF calculation, the MOs can be reset by running the qp_reset command.

> The DIIS algorithm is implemented, as well as the level-shifting method. If the SCF does not converge, try again with a higher value of `level_shift`.

> Calls:

> `create_guess()` | `orthonormalize_mos()` | `run()`

> Touches:

> `fock_matrix_ao_alpha` `fock_matrix_ao_alpha` `fock_matrix_ao_alpha` | `fock_matrix_ao_alpha` `mo_coef` `level_shift` | `mo_coef` `mo_label`