|
votca 2026-dev
|
Electronic ground-state via Density-Functional Theory. More...
#include <dftengine.h>

Classes | |
| struct | SpinDensity |
| struct | CDFTConstraintSpec |
Public Member Functions | |
| void | Initialize (tools::Property &options) |
| Read DFT, grid, and SCF settings from the user options tree. | |
| void | setLogger (Logger *pLog) |
| Attach the logger used for SCF progress and diagnostics. | |
| void | setExternalcharges (std::vector< std::unique_ptr< StaticSite > > *externalsites) |
| void | setEwaldgrid (const Vxc_Grid &ewaldgrid) |
| void | setEwaldNuclearEnergy (double energy) |
| void | setWarmStart (bool warm_start) |
| void | setSetupCache (DFTSetupCache *cache) |
| void | setSCFToleranceFloor (double energy, double error) |
| void | ReturnSetupCache () |
| bool | Evaluate (Orbitals &orb) |
| bool | RunCDFT (Orbitals &orb, HirshfeldPartition::Constraint &constraint) |
| bool | EvaluateActiveRegion (Orbitals &orb) |
| bool | EvaluateTruncatedActiveRegion (Orbitals &trunc_orb) |
| std::string | getDFTBasisName () const |
| Return the configured AO basis-set name for the DFT calculation. | |
| bool | IsRestrictedOpenShell () const |
| Index | NumberOfRestrictedOccupiedOrbitals () const |
| SpinDensity | BuildSpinDensity (const tools::EigenSystem &MOs) const |
| ConvergenceAcc::options | BuildConvergenceOptions () const |
| void | setForceUKSPath (bool force) |
Private Member Functions | |
| void | Prepare (Orbitals &orb, Index numofelectrons=-1) |
| Vxc_Potential< Vxc_Grid > | SetupVxc (const QMMolecule &mol) |
| Eigen::MatrixXd | OrthogonalizeGuess (const Eigen::MatrixXd &GuessMOs) const |
| Orthonormalize an initial MO guess with respect to the AO overlap matrix. | |
| void | PrintMOs (const Eigen::VectorXd &MOEnergies, Log::Level level) |
| Print a one-spin list of orbital energies and occupations to the logger. | |
| void | PrintMOsUKS (const Eigen::VectorXd &alpha_energies, const Eigen::VectorXd &beta_energies, Log::Level level) const |
| Print separate alpha and beta orbital energies for a UKS calculation. | |
| void | CalcElDipole (const Orbitals &orb) const |
| Evaluate and print the electronic dipole moment from the final density. | |
| std::array< Eigen::MatrixXd, 2 > | CalcERIs_EXX (const Eigen::MatrixXd &MOCoeff, const Eigen::MatrixXd &Dmat, double error) const |
| Eigen::MatrixXd | CalcERIs (const Eigen::MatrixXd &Dmat, double error) const |
| Build the Coulomb matrix contribution from the current density matrix. | |
| bool | EvaluateAndTime (Orbitals &orb) |
| Evaluate() without the timing report. | |
| void | ReportDimensionsAndMemory () const |
| Basis dimensions and the memory of the large intermediates. | |
| void | ConfigOrbfile (Orbitals &orb) |
| Propagate basis-set, XC, and metadata settings into the orbital container. | |
| void | SetupInvariantMatrices () |
| Precompute AO matrices that remain unchanged throughout the SCF procedure. | |
| Eigen::MatrixXd | McWeenyPurification (Eigen::MatrixXd &Dmat_in, AOOverlap &overlap) |
| Mat_p_Energy | SetupH0 (const QMMolecule &mol) const |
| Assemble the one-electron core Hamiltonian for the current molecule. | |
| Mat_p_Energy | IntegrateExternalMultipoles (const QMMolecule &mol, const std::vector< std::unique_ptr< StaticSite > > &multipoles) const |
| Mat_p_Energy | IntegrateExternalDensity (const QMMolecule &mol, const Orbitals &extdensity) const |
| Eigen::MatrixXd | IntegrateExternalField (const QMMolecule &mol) const |
| Integrate a homogeneous external electric field into the AO basis. | |
| tools::EigenSystem | IndependentElectronGuess (const Mat_p_Energy &H0) const |
| Generate an initial guess by diagonalizing the core Hamiltonian only. | |
| tools::EigenSystem | ModelPotentialGuess (const Mat_p_Energy &H0, const QMMolecule &mol, const Vxc_Potential< Vxc_Grid > &vxcpotential) const |
| Eigen::MatrixXd | AtomicGuess (const QMMolecule &mol) const |
| Build an atomic-density based initial guess in the AO basis. | |
| Eigen::VectorXd | BuildEHTOrbitalEnergies (const QMMolecule &mol) const |
| Build orbital energies used in the extended-Hückel starting guess. | |
| Eigen::MatrixXd | BuildEHTHamiltonian (const QMMolecule &mol) const |
| Build the extended-Hückel Hamiltonian for the current molecule. | |
| tools::EigenSystem | ExtendedHuckelGuess (const QMMolecule &mol) const |
| tools::EigenSystem | ExtendedHuckelDFTGuess (const Mat_p_Energy &H0, const QMMolecule &mol, const Vxc_Potential< Vxc_Grid > &vxcpotential) const |
| Orbitals | BuildDimerGuessFromMonomerFiles (const QMMolecule &dimer_mol) const |
| Eigen::MatrixXd | RunAtomicDFT_unrestricted (const QMAtom &uniqueAtom, bool use_hunds_rule_occupation=false) const |
| std::map< std::string, Eigen::MatrixXd > | ComputeHirshfeldReferenceDensities (const QMMolecule &mol) const |
| HirshfeldPartition::Constraint | BuildCDFTConstraint (const QMMolecule &mol, const CDFTConstraintSpec &spec) const |
| double | NuclearRepulsion (const QMMolecule &mol) const |
| Compute the classical nucleus-nucleus repulsion energy. | |
| double | ExternalRepulsion (const QMMolecule &mol, const std::vector< std::unique_ptr< StaticSite > > &multipoles) const |
| Eigen::MatrixXd | SphericalAverageShells (const Eigen::MatrixXd &dmat, const AOBasis &dftbasis) const |
| void | TruncateBasis (Orbitals &orb, std::vector< Index > &activeatoms, Mat_p_Energy &H0, Eigen::MatrixXd InitialActiveDensityMatrix, Eigen::MatrixXd v_embedding, Eigen::MatrixXd InitialInactiveMOs) |
| void | TruncMOsFullBasis (Orbitals &orb, std::vector< Index > activeatoms, std::vector< Index > numfuncpatom) |
| Eigen::MatrixXd | InsertZeroCols (Eigen::MatrixXd MOsMatrix, Index startidx, Index numofzerocols) |
| Eigen::MatrixXd | InsertZeroRows (Eigen::MatrixXd MOsMatrix, Index startidx, Index numofzerorows) |
| Insert zero rows into an MO coefficient matrix at the requested position. | |
| bool | EvaluateClosedShell (Orbitals &orb, const Mat_p_Energy &H0, const Vxc_Potential< Vxc_Grid > &vxcpotential) |
| Run the restricted closed-shell SCF loop and store the converged result. | |
| bool | EvaluateUKS (Orbitals &orb, const Mat_p_Energy &H0, const Vxc_Potential< Vxc_Grid > &vxcpotential) |
| void | ComputeAndStoreForces (Orbitals &orb, const Eigen::MatrixXd &Dmat, const Vxc_Potential< Vxc_Grid > &vxcpotential) const |
| Eigen::MatrixXd | ComputeOverlapPulayGradientUKS (const QMMolecule &mol, const tools::EigenSystem &MOs_alpha, const tools::EigenSystem &MOs_beta) const |
| Eigen::MatrixXd | ComputeNonXCGradientUKS (const QMMolecule &mol, const UKSConvergenceAcc::SpinDensity &Dspin, const tools::EigenSystem &MOs_alpha, const tools::EigenSystem &MOs_beta) const |
| void | ComputeAndStoreForcesUKS (Orbitals &orb, const UKSConvergenceAcc::SpinDensity &Dspin, const tools::EigenSystem &MOs_alpha, const tools::EigenSystem &MOs_beta, const Vxc_Potential< Vxc_Grid > &vxcpotential) const |
| std::string | RISetupKey () const |
| bool | UsableAsWarmStart (const Orbitals &orb, const std::string &previous_basis, std::string &reason) const |
Friends | |
| class | DFTEngineTestAccess |
Electronic ground-state via Density-Functional Theory.
This class assembles the one- and two-electron matrix contributions needed for self-consistent Kohn-Sham calculations in a Gaussian AO basis. The SCF machinery supports restricted closed-shell calculations and unrestricted spin-polarized calculations, while reusing the same integral and numerical XC infrastructure whenever possible.
Definition at line 95 of file dftengine.h.
|
private |
Build an atomic-density based initial guess in the AO basis.
Definition at line 2833 of file dftengine.cc.
|
private |
Converts a parsed CDFTConstraintSpec (atom indices + relative target charge, from Initialize()'s own <cdft> options parsing) into a fully-built HirshfeldPartition::Constraint, given the real molecule this calculation is actually running on. Builds the weight matrix as the SUM of BuildWeightMatrix over every atom in spec.atom_indices – Hirshfeld weights are additive across atoms in a fragment (w_fragment(r) = sum_{i in fragment} w_i(r)), so this generalizes correctly to a multi-atom region, not just a single atom. The absolute target_population is computed as (sum of the fragment atoms' own nuclear charges) - spec.target_charge, matching CP2K's own internal (absolute) TARGET convention – only the OPTIONS-file syntax is charge-relative, per the earlier design discussion on this; the underlying Constraint/RunCDFT machinery itself was never changed and still only ever deals in absolute populations.
Definition at line 2896 of file dftengine.cc.
| ConvergenceAcc::options votca::xtp::DFTEngine::BuildConvergenceOptions | ( | ) | const |
Assemble SCF acceleration settings consistent with the current spin treatment and occupation model.
|
private |
Build a dimer guess (both alpha and beta MOs, genuinely different from each other in general) by loading two independently-converged monomer .orb files (dimer_guess_orbA_name_/dimer_guess_orbB_name_) and combining them via Orbitals::PrepareDimerGuessMixedSpin.
Runs two sanity checks against dimer_mol (this calculation's own, real molecule) before trusting either monomer file at all: (1) element-sequence match – monomer A's own elements, in order, must exactly match dimer_mol's first N_A atoms, and monomer B's must match the remaining atoms; (2) internal-geometry match – every pairwise interatomic distance WITHIN monomer A must match the corresponding pairwise distance within dimer_mol's own first N_A atoms, to a tight numerical tolerance (and likewise for monomer B against the remaining atoms). Deliberately NOT an absolute-position comparison: after being optimized as a standalone monomer and then placed into the dimer, a monomer's atoms are expected to be translated/rotated relative to their own, independent optimization – only the INTERNAL geometry (bond lengths/angles, which no translation or rotation changes) should still match if the supplied file genuinely corresponds to that fragment.
Definition at line 3501 of file dftengine.cc.
|
private |
Build the extended-Hückel Hamiltonian for the current molecule.
Definition at line 3444 of file dftengine.cc.
|
private |
Build orbital energies used in the extended-Hückel starting guess.
Definition at line 3416 of file dftengine.cc.
| SpinDensity votca::xtp::DFTEngine::BuildSpinDensity | ( | const tools::EigenSystem & | MOs | ) | const |
Construct alpha and beta density matrices from a shared MO coefficient matrix and the current occupation metadata.
|
private |
Evaluate and print the electronic dipole moment from the final density.
Definition at line 396 of file dftengine.cc.
|
private |
Build the Coulomb matrix contribution from the current density matrix.
Definition at line 887 of file dftengine.cc.
|
private |
Build Coulomb and exact-exchange matrix contributions from the current MO coefficients and density.
Definition at line 861 of file dftengine.cc.
|
private |
Assemble the total ground-state nuclear gradient (one-electron [kinetic + nuclear attraction] + overlap "Pulay force" + nuclear repulsion + RI-J Coulomb + RI-K exact exchange [hybrid functionals]
The one-electron term and the overlap Pulay force were initially MISSING entirely – discovered by the first genuine end-to-end SCF+forces test (test_dftengine_forces.cc), since every earlier gradient test in this branch validated individual terms against fixed density matrices without ever checking the complete gradient against a real total SCF energy. The overlap Pulay force (arising because the MO orthonormality constraint C^T S C = I depends on geometry through the moving basis functions, weighted by orbital energies rather than occupation) is a standard part of any Gaussian-basis SCF gradient, distinct from the "PulayGradient" naming used elsewhere in this codebase for the XC-integral basis-function term.
RI-K/hybrid-functional support was added after DFTGradient:: RIKGradient's energy convention was fixed (a self-introduced regression during that work: a plausible-looking hand-algebra "correction" to a half-transformed structure was wrong, caught by directly, numerically simulating ERIs::CalculateEXX_mos's real algorithm before committing to it – the original fully-MO- transformed structure was correct, needing only a missing factor of 2) and then verified via a real C++ finite-difference test against ERIs::CalculateEXX_mos itself, not just a self-consistent formula. Also confirmed (numerically, to machine precision): CalculateEXX_mos's symmetric V^-1/2 RI fitting and RIKGradient's simpler asymmetric V^-1 fitting give IDENTICAL exchange energies (an exact algebraic identity for symmetric positive-definite V), so no matrix square root derivative was ever actually needed.
SCOPE, explicitly checked and logged rather than silently producing a wrong result: only supported when RI is actually in use for the SCF (auxbasis_name_ non-empty – DFTGradient::RIJGradient/RIKGradient only implement the RI path, not conventional 4-center ERIs).
OPT-IN: only called at all if compute_forces_ is true (see its declaration below), settable via <xtpdft><compute_forces>true</compute_forces></xtpdft> in the options tree, defaulting to false. Computing forces adds real, non-trivial cost to every converged SCF, so this is deliberately not silently always-on – added after this was pointed out as an unflagged side effect of the original, unconditional wiring.
Definition at line 434 of file dftengine.cc.
|
private |
UKS (open-shell) analog of ComputeAndStoreForces.
STATUS: PARTIAL, deliberately. Four of the five non-XC-adjacent terms generalize cleanly to UKS and are implemented here: nuclear repulsion (unchanged), one-electron [kinetic + nuclear attraction] (uses D_total = Dspin.alpha + Dspin.beta, exactly the same convention RKS's Dmat already uses), the overlap Pulay force (W = W_alpha + W_beta, each WITHOUT the factor of 2 RKS uses, since UKS spin densities are not pre-doubled), and RI-K exact exchange for hybrids (0.5 * ScaHFX_ * [RIKGradient(C_alpha_occ,...) + RIKGradient(C_beta_occ,...)] – the extra factor of 0.5 relative to the naive guess of ScaHFX_*(...) confirmed both algebraically and numerically: ERIs::CalculateEXX_dmat(P) == 0.5 * ERIs::CalculateEXX_mos(C) when P = C*C^T, checked directly rather than assumed, since UKS's exact exchange goes through CalculateEXX_dmat, a different code path than the one RIKGradient/CalculateEXX_mos were validated against).
The XC gradient (PulayGradientUKS + GridWeightGradientUKS, LDA and GGA) is now included too – initially deferred as new derivation work (spin-polarized rho_alpha/rho_beta, and for GGA a genuinely new sigma_alpha-alpha/alpha-beta/beta-beta cross-term structure with no analog in the spin-restricted case), then completed and validated (Python-verified formulas first, then a real C++ finite- difference test against IntegrateVXCSpin – caught and fixed one real transcription bug, a missing factor of 2 in the GGA sigma term's Hessian contraction, found by careful line-by-line comparison against the verified Python once the first real test run showed a partial, non-catastrophic discrepancy). With XC now included, this function DOES call Orbitals::setForces(), same as the RKS ComputeAndStoreForces.
Definition at line 756 of file dftengine.cc.
|
private |
Build one isolated-atom reference density per unique element in mol, keyed by element symbol – the promolecular densities Hirshfeld-based CDFT constraints need. Mirrors AtomicGuess's own "find unique elements, run RunAtomicDFT_unrestricted once each, cache by element" structure exactly, but (a) always passes use_hunds_rule_occupation=true (unlike AtomicGuess's own call, which never does), and (b) returns the per-element densities directly rather than assembling them into one combined, molecule-sized AO-basis matrix – Hirshfeld only ever needs each reference density evaluated as a real-space scalar function, using that element's own (small, atom-only) basis re-centered on each real atom's actual position, never embedded into the full molecule's AO basis at all, so there is no molecule-sized object to assemble here in the first place.
Definition at line 2875 of file dftengine.cc.
|
private |
The four non-XC-adjacent gradient terms that generalize cleanly to UKS – see the detailed derivation on ComputeAndStoreForcesUKS below, which calls this and then decides whether/how to report the result (currently: never stores it, since XC is missing). Returns the (natoms x 3) dE/dR gradient directly (NOT negated to the physical force convention – that flip, if/when this becomes part of a complete, storable UKS gradient, belongs at the point of storage, same as the RKS path).
Definition at line 703 of file dftengine.cc.
|
private |
UKS overlap Pulay force – W = W_alpha + W_beta, each WITHOUT the factor of 2 RKS uses. Split out as its own method (rather than inlined in ComputeNonXCGradientUKS) because it needs a genuinely DIFFERENT validation strategy than the other four terms: it is NOT checkable against a fixed-C finite difference (confirmed directly by a failed attempt to do exactly that – see git history), since it specifically corrects for C's implicit R-dependence through the orthonormality constraint, valid only at a genuine SCF stationary point. See test_dftengine_private.cc for how this is actually validated instead (reduction to the already-validated RKS formula when alpha==beta).
Definition at line 655 of file dftengine.cc.
|
private |
Propagate basis-set, XC, and metadata settings into the orbital container.
Definition at line 2958 of file dftengine.cc.
| bool votca::xtp::DFTEngine::Evaluate | ( | Orbitals & | orb | ) |
Run a full ground-state DFT calculation and store the results in the orbital container.
Definition at line 971 of file dftengine.cc.
| bool votca::xtp::DFTEngine::EvaluateActiveRegion | ( | Orbitals & | orb | ) |
Run an embedded active-region DFT calculation for the supplied orbital container.
Definition at line 63 of file embeddingengine.cc.
|
private |
Evaluate() without the timing report.
Definition at line 984 of file dftengine.cc.
|
private |
Run the restricted closed-shell SCF loop and store the converged result.
Definition at line 1315 of file dftengine.cc.
| bool votca::xtp::DFTEngine::EvaluateTruncatedActiveRegion | ( | Orbitals & | trunc_orb | ) |
Run the truncated active-region workflow used for reduced embedded calculations.
Definition at line 354 of file embeddingengine.cc.
|
private |
Run the unrestricted Kohn-Sham SCF loop and store alpha and beta orbitals separately.
Definition at line 1547 of file dftengine.cc.
|
private |
Generate an extended-Hückel based guess refined with the one-electron DFT Hamiltonian.
Definition at line 3477 of file dftengine.cc.
|
private |
Generate an initial guess by diagonalizing the extended-Hückel Hamiltonian.
Definition at line 3464 of file dftengine.cc.
|
private |
Compute the classical interaction energy between nuclei and external multipoles.
Definition at line 3219 of file dftengine.cc.
|
inline |
Return the configured AO basis-set name for the DFT calculation.
Definition at line 182 of file dftengine.h.
|
private |
Generate an initial guess by diagonalizing the core Hamiltonian only.
Definition at line 933 of file dftengine.cc.
| void votca::xtp::DFTEngine::Initialize | ( | tools::Property & | options | ) |
Read DFT, grid, and SCF settings from the user options tree.
Self-consistent Kohn-Sham implementation.
The SCF cycle solves F C = S C eps in a Gaussian AO basis. In the restricted branch a single density matrix is iterated, whereas in the UKS branch separate alpha and beta densities are propagated while sharing the same one-electron Hamiltonian, Coulomb term, and AO overlap matrix.
Relative to the earlier restricted implementation, the UKS extension keeps the spin channels separate only where the equations require it: exchange, spin-resolved XC potentials, occupations, and convergence acceleration.
Definition at line 103 of file dftengine.cc.
|
private |
Insert zero columns into an MO coefficient matrix at the requested position.
|
private |
Insert zero rows into an MO coefficient matrix at the requested position.
Definition at line 687 of file embeddingengine.cc.
|
private |
Integrate an external electron density represented by another orbital container.
Definition at line 3366 of file dftengine.cc.
|
private |
Integrate a homogeneous external electric field into the AO basis.
Definition at line 3284 of file dftengine.cc.
|
private |
Integrate the electrostatic potential generated by external multipoles into the AO basis.
Definition at line 3297 of file dftengine.cc.
|
inline |
Report whether the current electron counts define a spin-polarized reference.
Definition at line 198 of file dftengine.h.
|
private |
Apply McWeeny purification to improve the idempotency of a density-matrix guess.
Definition at line 649 of file embeddingengine.cc.
|
private |
Generate an initial guess from a model potential including numerical XC contributions.
Definition at line 944 of file dftengine.cc.
|
private |
Compute the classical nucleus-nucleus repulsion energy.
Definition at line 3172 of file dftengine.cc.
|
inline |
Return the number of spatial orbitals occupied by at least one electron in a restricted open-shell reference.
Definition at line 204 of file dftengine.h.
|
private |
Orthonormalize an initial MO guess with respect to the AO overlap matrix.
Definition at line 3404 of file dftengine.cc.
Initialize basis sets, integral engines, and electron counts before entering the SCF loop.
Definition at line 3031 of file dftengine.cc.
|
private |
Print a one-spin list of orbital energies and occupations to the logger.
Definition at line 316 of file dftengine.cc.
|
private |
Print separate alpha and beta orbital energies for a UKS calculation.
Definition at line 336 of file dftengine.cc.
|
private |
Basis dimensions and the memory of the large intermediates.
Definition at line 898 of file dftengine.cc.
| void votca::xtp::DFTEngine::ReturnSetupCache | ( | ) |
Definition at line 2101 of file dftengine.cc.
|
private |
Identifies what the RI integrals depend on: basis sets (shell types, primitives, centres) and the pair threshold.
Definition at line 2074 of file dftengine.cc.
|
private |
Run an unrestricted atomic reference calculation used in open-shell atomic guesses.
use_hunds_rule_occupation (default false, preserving all EXISTING callers' behavior exactly): when true, use a small, explicit Hund's-rule ground-state alpha/beta electron-count table for common main-group (s/p-block) elements, instead of the simpler parity-based split (odd nuclear charge -> one extra alpha electron; even -> alpha == beta) used by default. That default split is wrong for many real ground states – e.g. carbon (true ground state alpha=4,beta=2, a triplet) gets alpha=beta=3 (an artificial singlet) – but this does not matter for a SAD initial-guess starting DENSITY MATRIX SHAPE (AtomicGuess, this function's only existing caller), since the full molecule's own SCF reshapes the density regardless of the isolated reference atom's spin state. It DOES matter for promolecular reference densities used in Hirshfeld-based CDFT constraints, which is what this parameter exists for. Falls back to the default, parity-based split (with a logged warning) for any element not covered by the table – currently d/f-block only, where the ground-state configuration is genuinely ambiguous/functional-dependent rather than a simple, textbook Hund's-rule case; see HundsRuleAlphaBetaElectrons's own comment in dftengine.cc.
Definition at line 2541 of file dftengine.cc.
| bool votca::xtp::DFTEngine::RunCDFT | ( | Orbitals & | orb, |
| HirshfeldPartition::Constraint & | constraint ) |
Run a single, charge-constrained DFT (CDFT) calculation: finds the Lagrange multiplier lambda such that Tr[(P_alpha + P_beta) * constraint.weight_matrix] equals constraint.target_population, then converges the SCF at that lambda – the standard Wu-Van Voorhis outer loop, warm-started (matching CP2K's own documented approach: each new trial's SCF is restarted from the PREVIOUS trial's converged density, not a cold start) via the existing "orbfile" initial-guess mechanism, reusing it exactly as written rather than building new warm-start machinery. Only ever wires through EvaluateUKS (never EvaluateClosedShell) – CDFT charge constraints are built on UKS from the start, per the design discussion that preceded this: a localized extra charge is almost always naturally an open-shell/ radical situation regardless of whether spin constraints are ever added later.
constraint.lambda is used as the initial guess for the bisection search (0.0 is a reasonable default for most systems) and is left holding the converged value on return. Returns false (with constraints_ left populated, holding the last-attempted lambda) if EITHER a root cannot be bracketed at all, OR the outer bisection loop exhausts max_cdft_iterations_ without reaching cdft_population_tolerance_. If any individual INNER SCF call itself fails to converge, this throws std::runtime_error instead (does not return false) – an inner SCF failure means something more fundamental than "the outer loop needs more iterations" is wrong (e.g. a genuinely bad initial guess, or too tight an SCF convergence threshold for this system), and silently returning false would look identical to the ordinary "ran out of outer iterations" case, which it is not.
Definition at line 1174 of file dftengine.cc.
|
inline |
Definition at line 110 of file dftengine.h.
|
inline |
Definition at line 120 of file dftengine.h.
|
inline |
Provide external static sites whose electrostatic potential enters the Hamiltonian.
Definition at line 105 of file dftengine.h.
|
inline |
Definition at line 217 of file dftengine.h.
|
inline |
Attach the logger used for SCF progress and diagnostics.
Definition at line 101 of file dftengine.h.
| void votca::xtp::DFTEngine::setSCFToleranceFloor | ( | double | energy, |
| double | error ) |
Raise the SCF convergence thresholds (energy in Hartree, DIIS error) to at least these values; call after Initialize.
Definition at line 2089 of file dftengine.cc.
|
inline |
Reuse setup from, and keep it in, this cache (see DFTSetupCache). The RI integrals are taken out of the cache while the engine runs; call ReturnSetupCache() afterwards to put them back.
Definition at line 131 of file dftengine.h.
|
private |
Assemble the one-electron core Hamiltonian for the current molecule.
Definition at line 1873 of file dftengine.cc.
|
private |
Precompute AO matrices that remain unchanged throughout the SCF procedure.
Definition at line 2114 of file dftengine.cc.
|
private |
Build the numerical exchange-correlation integration object for the current molecule.
Definition at line 3152 of file dftengine.cc.
|
inline |
Use the MOs already in the Orbitals passed to Evaluate as the SCF guess when they fit this calculation (same basis set and size, same electron counts); otherwise the configured initial_guess is used. Set by QM/MM for iterations after the first, where only the environment changed.
Definition at line 126 of file dftengine.h.
|
private |
Average density-matrix elements over functions belonging to the same atomic shell.
Definition at line 3197 of file dftengine.cc.
|
private |
Project the full-system Hamiltonian and densities onto the selected truncated active basis.
Definition at line 496 of file embeddingengine.cc.
|
private |
Expand truncated active-region orbitals back into the full AO basis with zero padding.
Definition at line 670 of file embeddingengine.cc.
|
private |
Whether orb's MOs (computed in previous_basis) can serve as the guess for this calculation; if not, why not.
Definition at line 1149 of file dftengine.cc.
|
friend |
Definition at line 220 of file dftengine.h.
|
private |
Definition at line 664 of file dftengine.h.
|
private |
Definition at line 651 of file dftengine.h.
|
private |
Definition at line 660 of file dftengine.h.
|
private |
Definition at line 652 of file dftengine.h.
|
private |
Definition at line 645 of file dftengine.h.
|
private |
Definition at line 583 of file dftengine.h.
|
private |
Definition at line 579 of file dftengine.h.
|
private |
Definition at line 722 of file dftengine.h.
|
private |
Definition at line 721 of file dftengine.h.
|
private |
Definition at line 719 of file dftengine.h.
|
private |
Definition at line 677 of file dftengine.h.
|
private |
Definition at line 691 of file dftengine.h.
|
private |
Definition at line 708 of file dftengine.h.
|
private |
Definition at line 615 of file dftengine.h.
|
private |
Definition at line 613 of file dftengine.h.
|
private |
Definition at line 600 of file dftengine.h.
|
private |
Definition at line 582 of file dftengine.h.
|
private |
Definition at line 580 of file dftengine.h.
|
private |
Definition at line 607 of file dftengine.h.
|
private |
Definition at line 608 of file dftengine.h.
|
private |
Definition at line 662 of file dftengine.h.
|
private |
Definition at line 584 of file dftengine.h.
|
private |
Definition at line 581 of file dftengine.h.
|
private |
Definition at line 617 of file dftengine.h.
|
private |
Definition at line 623 of file dftengine.h.
|
private |
Definition at line 670 of file dftengine.h.
|
private |
Definition at line 668 of file dftengine.h.
|
private |
Definition at line 633 of file dftengine.h.
|
private |
Definition at line 648 of file dftengine.h.
|
private |
Definition at line 586 of file dftengine.h.
|
private |
Definition at line 678 of file dftengine.h.
|
private |
Definition at line 597 of file dftengine.h.
|
private |
Definition at line 642 of file dftengine.h.
|
private |
Definition at line 656 of file dftengine.h.
|
private |
Definition at line 669 of file dftengine.h.
|
private |
Definition at line 602 of file dftengine.h.
|
private |
Definition at line 657 of file dftengine.h.
|
private |
Definition at line 639 of file dftengine.h.
|
private |
Definition at line 649 of file dftengine.h.
|
private |
Definition at line 653 of file dftengine.h.
|
private |
Definition at line 718 of file dftengine.h.
|
private |
Definition at line 612 of file dftengine.h.
|
private |
Definition at line 672 of file dftengine.h.
|
private |
Definition at line 673 of file dftengine.h.
|
private |
Definition at line 674 of file dftengine.h.
|
private |
Definition at line 675 of file dftengine.h.
|
private |
Definition at line 665 of file dftengine.h.
|
private |
Definition at line 611 of file dftengine.h.
|
private |
Definition at line 641 of file dftengine.h.
|
private |
Definition at line 591 of file dftengine.h.
|
private |
Definition at line 576 of file dftengine.h.
|
private |
Definition at line 594 of file dftengine.h.
|
private |
Definition at line 636 of file dftengine.h.
|
private |
Definition at line 588 of file dftengine.h.
|
private |
Definition at line 622 of file dftengine.h.
|
private |
Definition at line 676 of file dftengine.h.
|
private |
Definition at line 643 of file dftengine.h.
|
mutableprivate |
Definition at line 619 of file dftengine.h.
|
private |
Definition at line 661 of file dftengine.h.
|
private |
Definition at line 659 of file dftengine.h.
|
private |
Definition at line 663 of file dftengine.h.
|
private |
Definition at line 658 of file dftengine.h.
|
private |
Definition at line 620 of file dftengine.h.
|
private |
Definition at line 621 of file dftengine.h.
|
private |
Definition at line 637 of file dftengine.h.