File EdiisDiisModifier.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 EdiisDiisModifier : public Scine::Utils::ScfModifier
#include <EdiisDiisModifier.h>

Class to use the EDIIS + DIIS combination as in Gaussian. Garza, Scuseria, J Chem Phys 137 (2012) 054110: “In the default EDIIS + DIIS procedure in Gaussian, EDIIS is used when the largest DIIS error (errMax) is greater than 10^-1 a.u. but DIIS is employed when this error goes below 10^-4 a.u. In between these values, the EDIIS and DIIS coefficients are weighted such that c = 10(errorMax) C(EDIIS) + (1-10(errorMax))c(DIIS); however, if the error of the last cycle is 10% greater than the minimum error, pure EDIIS is used.”

Public Functions

EdiisDiisModifier()
void onOverlapCalculated()
void onFockCalculated()
void setSpaceSize(unsigned n)
void initialize()

Initialize the SCF Modifier, to be overridden if necessary by the derived class.

Private Functions

bool sameNumberOfElectronsInMethodAndInDensityMatrix()
void setOrthogonal(bool o)
SpinAdaptedMatrix getCombinedFockMatrix()
SpinAdaptedMatrix mixedFockMatrix(double errMax)

Private Members

FockDiis diis_
Ediis ediis_
bool initialized