# 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`

— Type`AbstractQuantumSystem`

Any implementation of the `AbstractQuantumSystem`

interface, used for self-consistent field calculations, must implement the functions `coefficients`

, `orbitals`

, `diff`

, `normalize!`

.

`SCF.coefficients`

— Method`coefficients(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`

— Method`orbitals(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`

— Method`diff(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!`

— Method`normalize!(quantum_system, v)`

Normalize the orbital `v`

of `quantum_system`

. To be overloaded by the implementation of `AbstractQuantumSystem`

.