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

Container class for full second derivatives (Hessian matrix + first derivatives).

Public Functions

FullSecondDerivativeCollection(int N = 0)

Constructor.

Parameters
  • N: Size of the container (number of atoms).

const FullSecondDerivativeCollection &operator+=(const FullSecondDerivativeCollection &dc)

Add another FullSecondDerivativeCollection.

void setZero()

Reset all the derivatives to zero.

GradientCollection generateGradients(const DisplacementCollection &displacements) const

Generate a GradientCollection from the full second derivatives and the displacements.

Gradient generateGradient(int idx, const DisplacementCollection &displacements) const

Generate a Gradient from the full second derivatives and the displacements.

void addDerivative(int a, int b, const AutomaticDifferentiation::Second3D &v)

Add a derivative object for the pair a->b.

const HessianMatrix &getHessianMatrix() const

Getter for the Hessian Matrix.

Return

HessianMatrix This ist just a type alias for Eigen::MatrixXd.

const GradientCollection &getReferenceGradients() const

Return the reference gradients.

Return

GradientCollection This ist just a type alias for Eigen::Matrix<double, Eigen::Dynamic, 3, Eigen::RowMajor>.

Private Functions

Eigen::MatrixXd &hessian()

Private Members

HessianMatrix hessianMatrix_
GradientCollection referenceGradients_
int nAtoms_