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:
- 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.
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.hamiltonianwhich returns the Hamiltonian corresponding to one orbital equation.update!which recomputes all orbital-dependent integrals, shared among the equations of the equation system.
SCF.Fock — TypeFock(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.
SCF.norm_rot! — Functionnorm_rot!(fock, v)Normalize and rotate the eigenvector v such that the first lobe has positive sign.
SCF.rotate_first_lobe! — Functionrotate_first_lobe!(v)Rotate the vector v such that the first lobe has positive sign.
SCF.energy_matrix! — Functionenergy_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`.
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.
SCF.hamiltonian — Functionhamiltonian(equation::Equation)Returns the orbital Hamiltonian of equation. To be overloaded by the user.
SCF.update! — Functionupdate!(eqs; kwargs...)Update the equation system eqs, for the current iteration. To be overloaded by the user.
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.