votca 2026-dev
Loading...
Searching...
No Matches
votca::xtp::ConvergenceAcc Class Reference

#include <convergenceacc.h>

Collaboration diagram for votca::xtp::ConvergenceAcc:

Classes

struct  options
struct  SpinDensity
 Spin-resolved density matrices returned for open-shell SCF updates. More...

Public Types

enum  KSmode { closed , open , fractional , restricted_open }
 Occupation model used when constructing density matrices. More...

Public Member Functions

void Configure (const ConvergenceAcc::options &opt)
void setLogger (Logger *log)
 Attach the logger used for convergence diagnostics.
void PrintConfigOptions () const
 Print the active convergence-acceleration settings to the logger.
bool isConverged () const
double getDeltaE () const
 Return the total-energy change between the two most recent SCF iterations.
void setOverlap (AOOverlap &S, double etol)
 Precompute overlap-dependent quantities used when solving the Fock matrix.
double getDIIsError () const
 Return the DIIS commutator norm from the latest iteration.
bool getUseMixing () const
Eigen::MatrixXd Iterate (const Eigen::MatrixXd &dmat, Eigen::MatrixXd &H, tools::EigenSystem &MOs, double totE)
tools::EigenSystem SolveFockmatrix (const Eigen::MatrixXd &H) const
 Solve the generalized eigenvalue problem for the current Fock matrix.
void Levelshift (Eigen::MatrixXd &H, const Eigen::MatrixXd &MOs_old) const
 Apply a virtual-space level shift in the molecular-orbital basis.
Eigen::MatrixXd DensityMatrix (const tools::EigenSystem &MOs) const
SpinDensity DensityMatrixSpinResolved (const tools::EigenSystem &MOs) const

Private Member Functions

Eigen::MatrixXd DensityMatrixGroundState (const Eigen::MatrixXd &MOs) const
Eigen::MatrixXd DensityMatrixGroundState_unres (const Eigen::MatrixXd &MOs) const
Eigen::MatrixXd DensityMatrixGroundState_frac (const tools::EigenSystem &MOs) const
 Construct a fractional-occupation density matrix from orbital occupations.
SpinDensity DensityMatrixGroundState_restricted_open (const Eigen::MatrixXd &MOs) const

Private Attributes

options opt_
bool usedmixing_ = true
double diiserror_ = std::numeric_limits<double>::max()
Loggerlog_
const AOOverlapS_
Eigen::MatrixXd Sminusahalf
std::vector< Eigen::MatrixXd > mathist_
std::vector< Eigen::MatrixXd > dmatHist_
std::vector< double > totE_
Index nocclevels_
Index maxerrorindex_ = 0
double maxerror_ = 0.0
ADIIS adiis_
DIIS diis_

Detailed Description

SCF convergence accelerator for Kohn-Sham iterations.

The class stores the Fock and density history needed for linear mixing, Pulay DIIS, and ADIIS, and provides the density construction matching the selected occupation model.

Definition at line 43 of file convergenceacc.h.

Member Enumeration Documentation

◆ KSmode

Occupation model used when constructing density matrices.

Enumerator
closed 
open 
fractional 
restricted_open 

Definition at line 46 of file convergenceacc.h.

Member Function Documentation

◆ Configure()

void votca::xtp::ConvergenceAcc::Configure ( const ConvergenceAcc::options & opt)
inline

Store SCF acceleration settings and derive the number of occupied levels for the selected KS mode.

Definition at line 82 of file convergenceacc.h.

◆ DensityMatrix()

Eigen::MatrixXd votca::xtp::ConvergenceAcc::DensityMatrix ( const tools::EigenSystem & MOs) const

Build the density matrix corresponding to the configured KS occupation model.

Definition at line 381 of file convergenceacc.cc.

◆ DensityMatrixGroundState()

Eigen::MatrixXd votca::xtp::ConvergenceAcc::DensityMatrixGroundState ( const Eigen::MatrixXd & MOs) const
private

Construct a closed-shell ground-state density matrix from occupied orbitals.

Definition at line 256 of file convergenceacc.cc.

◆ DensityMatrixGroundState_frac()

Eigen::MatrixXd votca::xtp::ConvergenceAcc::DensityMatrixGroundState_frac ( const tools::EigenSystem & MOs) const
private

Construct a fractional-occupation density matrix from orbital occupations.

Definition at line 290 of file convergenceacc.cc.

◆ DensityMatrixGroundState_restricted_open()

ConvergenceAcc::SpinDensity votca::xtp::ConvergenceAcc::DensityMatrixGroundState_restricted_open ( const Eigen::MatrixXd & MOs) const
private

Construct alpha and beta densities for a restricted open-shell determinant.

Definition at line 335 of file convergenceacc.cc.

◆ DensityMatrixGroundState_unres()

Eigen::MatrixXd votca::xtp::ConvergenceAcc::DensityMatrixGroundState_unres ( const Eigen::MatrixXd & MOs) const
private

Construct a fully occupied unrestricted density matrix from the supplied orbitals.

Definition at line 268 of file convergenceacc.cc.

◆ DensityMatrixSpinResolved()

ConvergenceAcc::SpinDensity votca::xtp::ConvergenceAcc::DensityMatrixSpinResolved ( const tools::EigenSystem & MOs) const

Build separate alpha and beta density matrices for spin-resolved SCF modes.

Definition at line 364 of file convergenceacc.cc.

◆ getDeltaE()

double votca::xtp::ConvergenceAcc::getDeltaE ( ) const
inline

Return the total-energy change between the two most recent SCF iterations.

Definition at line 114 of file convergenceacc.h.

◆ getDIIsError()

double votca::xtp::ConvergenceAcc::getDIIsError ( ) const
inline

Return the DIIS commutator norm from the latest iteration.

Definition at line 125 of file convergenceacc.h.

◆ getUseMixing()

bool votca::xtp::ConvergenceAcc::getUseMixing ( ) const
inline

Report whether plain density mixing is currently used instead of extrapolation.

Definition at line 129 of file convergenceacc.h.

◆ isConverged()

bool votca::xtp::ConvergenceAcc::isConverged ( ) const
inline

Check whether both the total-energy change and DIIS error are below their thresholds.

Definition at line 104 of file convergenceacc.h.

◆ Iterate()

Eigen::MatrixXd votca::xtp::ConvergenceAcc::Iterate ( const Eigen::MatrixXd & dmat,
Eigen::MatrixXd & H,
tools::EigenSystem & MOs,
double totE )

Advance the SCF accelerator by one step and return the updated density matrix.

Definition at line 60 of file convergenceacc.cc.

◆ Levelshift()

void votca::xtp::ConvergenceAcc::Levelshift ( Eigen::MatrixXd & H,
const Eigen::MatrixXd & MOs_old ) const

Apply a virtual-space level shift in the molecular-orbital basis.

Definition at line 217 of file convergenceacc.cc.

◆ PrintConfigOptions()

void votca::xtp::ConvergenceAcc::PrintConfigOptions ( ) const

Print the active convergence-acceleration settings to the logger.

Definition at line 157 of file convergenceacc.cc.

◆ setLogger()

void votca::xtp::ConvergenceAcc::setLogger ( Logger * log)
inline

Attach the logger used for convergence diagnostics.

Definition at line 97 of file convergenceacc.h.

◆ setOverlap()

void votca::xtp::ConvergenceAcc::setOverlap ( AOOverlap & S,
double etol )

Precompute overlap-dependent quantities used when solving the Fock matrix.

Convergence acceleration for the SCF cycle.

The central residual is the AO-metric commutator R = F P S - S P F, which vanishes at self-consistency in a non-orthogonal basis. This file provides the orthogonalized residual, DIIS or ADIIS extrapolation, level shifting, and occupation-model-specific density construction.

Definition at line 37 of file convergenceacc.cc.

◆ SolveFockmatrix()

tools::EigenSystem votca::xtp::ConvergenceAcc::SolveFockmatrix ( const Eigen::MatrixXd & H) const

Solve the generalized eigenvalue problem for the current Fock matrix.

Definition at line 192 of file convergenceacc.cc.

Member Data Documentation

◆ adiis_

ADIIS votca::xtp::ConvergenceAcc::adiis_
private

Definition at line 180 of file convergenceacc.h.

◆ diis_

DIIS votca::xtp::ConvergenceAcc::diis_
private

Definition at line 181 of file convergenceacc.h.

◆ diiserror_

double votca::xtp::ConvergenceAcc::diiserror_ = std::numeric_limits<double>::max()
private

Definition at line 168 of file convergenceacc.h.

◆ dmatHist_

std::vector<Eigen::MatrixXd> votca::xtp::ConvergenceAcc::dmatHist_
private

Definition at line 174 of file convergenceacc.h.

◆ log_

Logger* votca::xtp::ConvergenceAcc::log_
private

Definition at line 169 of file convergenceacc.h.

◆ mathist_

std::vector<Eigen::MatrixXd> votca::xtp::ConvergenceAcc::mathist_
private

Definition at line 173 of file convergenceacc.h.

◆ maxerror_

double votca::xtp::ConvergenceAcc::maxerror_ = 0.0
private

Definition at line 179 of file convergenceacc.h.

◆ maxerrorindex_

Index votca::xtp::ConvergenceAcc::maxerrorindex_ = 0
private

Definition at line 178 of file convergenceacc.h.

◆ nocclevels_

Index votca::xtp::ConvergenceAcc::nocclevels_
private

Definition at line 177 of file convergenceacc.h.

◆ opt_

options votca::xtp::ConvergenceAcc::opt_
private

Definition at line 149 of file convergenceacc.h.

◆ S_

const AOOverlap* votca::xtp::ConvergenceAcc::S_
private

Definition at line 170 of file convergenceacc.h.

◆ Sminusahalf

Eigen::MatrixXd votca::xtp::ConvergenceAcc::Sminusahalf
private

Definition at line 172 of file convergenceacc.h.

◆ totE_

std::vector<double> votca::xtp::ConvergenceAcc::totE_
private

Definition at line 175 of file convergenceacc.h.

◆ usedmixing_

bool votca::xtp::ConvergenceAcc::usedmixing_ = true
private

Definition at line 167 of file convergenceacc.h.


The documentation for this class was generated from the following files: