# Fock Operators

The Fock operator consists of an AbstractQuantumSystem and a set of coupled integro-differential equations, the solution of which is the objective of the self-consistent field procedure. For the solution process to work, the set of equations need to implement a few methods:

1. It must fulfil Julia's iteration interface, i.e. each element must be the equation for a single orbital, which is solved independently from the other equations, but with the other orbitals as inputs.
2. energy_matrix! which calculates the energy matrix $\mat{H}_i$ for orbital equation $i$, where $\vec{c}^H\mat{H}_i\vec{c}$ gives the orbital energy for the correspond orbital. The overall energy matrix $\mat{H}=\sum_i\mat{H}_i$ is used to solve the secular problem for the mixing coefficients.
3. hamiltonian which returns the Hamiltonian corresponding to one orbital equation.
4. update! which recomputes all orbital-dependent integrals, shared among the equations of the equation system.
SCF.FockType
Fock(quantum_system, equations, S, symmetries)

A Fock operator consists of a quantum_system, from which equations are variationally derived, via an overload of diff(quantum_system). quantum_system must also provide an overload for overlap_matrix -> S.

equations must provide an overload for energy_matrix!. equations must be iterable, where each element corresponds to the equation for one orbital, and must provide an overload for hamiltonian and energy. Additionally, update! must be provided for equations, to prepare the equation system for the next iteration.

source
SCF.norm_rot!Function
norm_rot!(fock, v)

Normalize and rotate the eigenvector v such that the first lobe has positive sign.

source
SCF.energy_matrix!Function
energy_matrix!(H::AbstractMatrix, equations[, which=:total_energy])

Calculates the energy matrix of the system of equations. This overwrites the entries of H. To be overloaded by the user; must support which=:totalenergy,which=:doublecountedenergy, andwhich=:kineticenergy.

source
energy_matrix!(H::AbstractMatrix, fock::Fock[, which=:total_energy])

Calculates the energy matrix of the quantum system of fock. This overwrites the entries of H.

source
SCF.hamiltonianFunction
hamiltonian(equation::Equation)

Returns the orbital Hamiltonian of equation. To be overloaded by the user.

source
SCF.update!Function
update!(eqs; kwargs...)

Update the equation system eqs, for the current iteration. To be overloaded by the user.

source
update!(eqs, quantum_system; kwargs...)

Update the equation system eqs with respect to quantum_system, for the current iteration. To be overloaded by the user.

source