AtomicEquations(atom, equations, integrals)
Structure representing the (e.g. Hartree–Fock)
atom, along with all
integrals that are shared between the
Update the direct potential
p by solving the Poisson problem with the current values of the orbitals forming the mutual density.
Update the direct potential
p by solving the Poisson problem with the current values of the orbitals of
atom forming the mutual density.
Recompute all integrals using the current values for the radial orbitals (optionally specifying which
atom from which the orbitals are taken).
Update the equation system
eqs, for the current iteration. To be overloaded by the user.
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
Observables registered (this is the default).
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.
generate_atomic_orbital_equations(atom::Atom, eqs::MCEquationSystem, integrals, integral_map)
For each variationally derived orbital equation in
eqs, generate the corresponding
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
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
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
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.
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
integral_map maps from