Quantum Systems
A quantum system is here taken to be a collection of single-particle orbitals $\vec{P}$, arranged into multiple configurations, and a set of mixing coefficients $\vec{c}$. As an example, the helium ground state 1s² may be approximated a linear combination of Slater determinants:
\[\begin{equation} \Psi(\textrm{1s²}) \approx \sum_i c_i \Phi(\gamma_i), \end{equation}\]
where $\gamma_i$ denotes a configuration of single-electron orbitals and $c_i$ its associated mixing coefficient. A low-order approximation may be achieved with the three Slater determinants formed from the 1s and 2s orbitals:
\[\begin{equation} \Phi(\textrm{1s²}), \quad \Phi(\textrm{1s 2s}), \quad \Phi(\textrm{2s²}). \end{equation}\]
Similar ideas can be employed for molecules, etc.
SCF.AbstractQuantumSystem — TypeAbstractQuantumSystemAny implementation of the AbstractQuantumSystem interface, used for self-consistent field calculations, must implement the functions coefficients, orbitals, diff, normalize!.
SCF.coefficients — Methodcoefficients(quantum_system)Retrieves the mixing coefficients of quantum_system. Must return a view that the scf! routine can modify. To be overloaded by the implementation of AbstractQuantumSystem.
SCF.orbitals — Methodorbitals(quantum_system)Retrieves the orbitals of quantum_system. Must return a view that the scf! routine can modify. To be overloaded by the implementation of AbstractQuantumSystem.
Base.diff — Methoddiff(quantum_system[; kwargs...])Varies the the quantum_system with respect to all orbitals. Used to derive the multi-configurational Hartree–Fock equations. To be overloaded by the implementation of AbstractQuantumSystem.
LinearAlgebra.normalize! — Methodnormalize!(quantum_system, v)Normalize the orbital v of quantum_system. To be overloaded by the implementation of AbstractQuantumSystem.