File ConvergenceChecker.h

Copyright

This code is licensed under the 3-clause BSD license.

Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.

See LICENSE.txt for details.

namespace Scine

This header file contains functions that allow for common notation for common things that can be done at a different degree of derivatives.

This header contains alias definitions defining which classes to use for the different degrees of derivatives.

namespace Utils
class ConvergenceChecker
#include <ConvergenceChecker.h>

Class for a density matrix based convergence checker. It looks at the RMS change in density matrix elements.

Public Functions

ConvergenceChecker(const ScfMethod &method)
void setThreshold(double v)

Set the threshold under which the convergence criterion is satisfied. Corresponds to the rmsd in the density matrix change.

double getThreshold() const

Get the currently applied threshold.

void updateDensityMatrix()

Gets the current density matrix from the assigned SCF method. Performs no check of convergence and is useful if the starting density matrix in the SCF cycle is not the last one of the previous cycle.

void checkConvergence()

Check if the convergence criterion is met. Implicitly calls updateDensityMatrix().

bool isConverged() const

Private Functions

double calculateRMSD()

Private Members

const ScfMethod &m_
bool converged_
double threshold_
Eigen::MatrixXd oldMatrix_
Eigen::MatrixXd newMatrix_