Equation systems

AtomicStructure.AtomicEquationsType
AtomicEquations(atom, equations, integrals)

Structure representing the (e.g. Hartree–Fock) equations for atom, along with all integrals that are shared between the equations.

source
AtomicStructure.SCF.update!Method
update!(eqs; kwargs...)

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

source
SCF.update!(p::DirectPotential)

Update the direct potential p by solving the Poisson problem with the current values of the orbitals forming the mutual density.

source
SCF.update!(p::DirectPotential, atom::Atom)

Update the direct potential p by solving the Poisson problem with the current values of the orbitals of atom forming the mutual density.

source
update!(equations::AtomicEquations[, atom::Atom])

Recompute all integrals using the current values for the radial orbitals (optionally specifying which atom from which the orbitals are taken).

source
AtomicStructure.SCF.energy_matrix!Method
energy_matrix!(H, hfeqs::AtomicEquations[, which=:energy])

Compute the energy matrix by computing the energy observable and storing it in H. Requires that hfeqs has the :energy and :kinetic_energy Observables registered (this is the default).

source
AtomicStructure.find_symmetriesFunction
find_symmetries(orbitals)

Group all orbitals according to their symmetries, e.g. ℓ for Orbitals. This is used to determine which off-diagonal Lagrange multipliers are necessary to maintain orthogonality.

source
Base.diffFunction
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.

source
diff(atom; H=atomic_hamiltonian(atom), overlaps=[], selector=outsidecoremodel, verbosity=0)

Differentiate the energy expression of the Hamiltonian H associated with the atom's configurations(s) with respect to the atomic orbitals to derive the Hartree–Fock equations for the orbitals.

By default, the Hamiltonian H=FieldFreeOneBodyHamiltonian()+CoulombInteraction().

Non-orthogonality between orbitals can be specified by providing OrbitalOverlaps between these pairs. Only those electrons not modelled by atom.potential of each configuration are considered for generating the energy expression, this can be changed by choosing another value for selector.

source

Common integrals

When deriving the equations of motion from an energy expression, the same integral may appear many times in the equations for different orbitals, multiplied by different factors, etc. To minimize the reevaluation of integrals, AtomicEquations keeps track of all the common integrals, and they are recomputed exactly once, when SCF.update! is called. The routines below are used when setting up the equation system.

AtomicStructure.pushterms!Function
pushterms!(terms, operator, equation_terms,
           integrals, integral_map, symbolic_integrals)

For each term in equation_terms, push a term, located at CI coordinates i,j, of the overall orbital Hamiltonian to terms, constructed from operator and a product of orbital integrals, multiplied by an overall factor given by expression and multipole expansions. integrals contain common OrbitalIntegrals and integral_map maps from symbolic_integrals to integrals.

source