File SCFMethod.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
SCFMethod
: public Scine::Utils::LCAOMethod - #include <SCFMethod.h>
Base class for self-consistent-field methods.
Steps of SCF calculations
-
void
calculateDensityDependentQuantities
(Utils::derivativeType d = Utils::derivativeType::first)¶
-
void
finalizeCalculation
(Utils::derivativeType d = Utils::derivativeType::first)¶
Public Functions
-
SCFMethod
(bool unrestrictedCalculationPossible, Utils::derivOrder maximalOrder, bool orthogonalBasisSet = false)¶
-
~SCFMethod
()¶
-
void
initialize
() Initialize the method after the parameters have been set or loaded.
-
void
calculate
(Utils::derivativeType d) Performs one single-point calculation of the energy.
- Parameters
derivativesOrder
: which derivative to calculate up to, if possible.
Adds a modifier to the SCF method. First checks whether the SCFModifier already exists. Will call the functions setMethod(…) and initialize of modifier.
- Parameters
priority
: Number from 0 (early) to 10 (late) to set when the modifier will be called compared to other ones.
Removes the SCF modifier.
-
void
convergedCalculation
(Utils::derivativeType d = Utils::derivativeType::first) Performs a converged calculation of the energy (NB: will stop after max number of cycles).
-
void
performIteration
(Utils::derivativeType d = Utils::derivativeType::first)¶
-
bool
hasConverged
() const¶
-
int
getNumberIterations
() const Returns the number of iterations that were performed for the energy calculation.
-
void
setScfMixer
(scf_mixer_t mixer)¶
-
scf_mixer_t
getScfMixer
() const¶
-
void
setConvergenceCriteria
(double c) Set the convergence threshold for a SCF calculation (RMSD of density matrix)
-
double
getConvergenceThreshold
() const Get the currently applied threshold for SCF calculation.
-
void
setMaxIterations
(int max)¶
-
void
resetConvergenceCheck
() Reset the convergence check; is useful if the starting density matrix in the SCF cycle is not the last one of the previous cycle.
-
int
getMaxNumberIterations
() const¶
-
void
reinitializeDensityMatrixGuess
() Reset the density matrix.
-
DensityMatrix
getDensityMatrixGuess
() const Returns the density matrix guess for the vurrent system
-
void
evaluateDensity
(Utils::derivativeType derivativeOrder) Perform a calculation for the current density matrix without optimizing it.
Protected Attributes
-
std::shared_ptr<DensityMatrixGuessCalculator>
densityMatrixGuess_
¶
-
bool
converged
¶
-
int
performedIterations_
¶
-
int
maxIterations
¶
Private Types
-
using
ModifierContainer
= std::multimap<int, std::shared_ptr<SCFModifier>>¶
Private Members
-
ModifierContainer
modifiers
¶
-
ConvergenceChecker
convergenceChecker_
¶
-
ScfConvergenceAccelerator
convergenceAccelerator_
¶
-
void
-
class
-
namespace