File Gdiis.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 Gdiis
#include <Gdiis.h>

An implementation of the GDIIS optimization acceleration algorithm.

Public Functions

Gdiis(const Eigen::MatrixXd &hessianInverse, unsigned int maxm)

Construct a new GDIIS.

Parameters
  • hessianInverse: A reference to the Hessian inverse to be used for the generation of an actual step. The content of the reference can continuosly be updated using e.g. the BFGS scheme or it can also just remain the identity.

  • maxm: The maximum number of old steps to be stored and to be extrapolated from. Upon reaching the maximum number of points, the oldest one will be replaced with the newly given one.

void store(Eigen::VectorXd &parameters, Eigen::VectorXd &gradients)

Store data into the GDIIS without extrapolation.

Parameters
  • parameters: The current parameters.

  • gradients: The current gradients (for the current parameters).

void flush()

Resets the storage of the GDIIS.

Eigen::VectorXd update(Eigen::VectorXd &parameters, Eigen::VectorXd &gradients)

Stores the new data and extrapolates to optimum parameters using all stored data.

Return

Eigen::VectorXd The extrapolated best parameters.

Parameters
  • parameters: The current parameters.

  • gradients: The current gradients (for the current parameters).

Private Members

const Eigen::MatrixXd &_invH
const unsigned int _maxm
const unsigned int _nParam
unsigned int _cycle = 0
Eigen::MatrixXd _parmeters
Eigen::MatrixXd _gradients
Eigen::MatrixXd _errors