File HessianUtilities.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
HessianUtilities
- #include <HessianUtilities.h>
A utility class for Hessians allowing easier access to eigenvalues and eigenvectors of transformed versions.
Public Functions
-
HessianUtilities
(const Eigen::MatrixXd &hessian, const ElementTypeCollection &elements, const PositionCollection &positions)¶
-
void
hessianUpdate
() Brief signals that the referenced Hessian has changed and deletes cached data.
-
void
hessianUpdate
(const HessianMatrix &hessian) Replaces the current Hessian and deletes cached data.
- Parameters
hessian
: The new Hessian reference.
-
const Eigen::MatrixXd &
getTransformationMatrix
() const Get the transformation matrix removing rotational and translational contributions.
- Return
const Eigen::MatrixXd& The transformation matrix.
-
const Eigen::VectorXd &
getInternalEigenvalues
(bool massWeighted = false) Getter for the eigenvalues of the transformed Matrix.
The eigenvalues are lazily evaluated and cached internally.
- Return
const Eigen::VectorXd&
- Parameters
massWeighted
: If true returns the massweighted transformed eigenvalues.
-
const Eigen::MatrixXd &
getInternalEigenvectors
() Getter for the eigenvectors of the transformed Matrix.
The eigenvectors are lazily evaluated and cached internally.
- Return
const Eigen::MatrixXd&
-
Eigen::MatrixXd
getBackTransformedInternalEigenvectors
(bool massWeighted) Get the back-transformed internal eigenvectors without rotation and translation modes.
- Return
Eigen::MatrixXd
- Parameters
massWeighted
: If true returns the massweighted backtransformed eigenvectors (without rotational and translational degrees of freedom).
-
Eigen::MatrixXd
getInternalHessian
(bool massWeighted = false) const Returns the transformed (pseudo-internal coordinates) Hessian.
- Return
const Eigen::MatrixXd& The Hessian.
- Parameters
massWeighted
: If true returns the massweighted transformed Hessian.
Private Functions
-
void
calculateInternal
(bool massWeighted = false)¶
Private Members
-
std::reference_wrapper<const Eigen::MatrixXd>
_hessian
¶
-
const ElementTypeCollection &
_elements
¶
-
const PositionCollection &
_positions
¶
-
Eigen::MatrixXd
_transformation
¶
-
std::unique_ptr<Eigen::VectorXd>
_mwinternalEValues
¶
-
std::unique_ptr<Eigen::MatrixXd>
_mwinternalEVectors
¶
-
std::unique_ptr<Eigen::VectorXd>
_internalEValues
¶
-
std::unique_ptr<Eigen::MatrixXd>
_internalEVectors
¶
-
-
class
-
namespace