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

Class to calculate the normal modes of a molecule from its hessian matrix.

Public Functions

NormalModeAnalyzer(const HessianMatrix &hessian, const ElementTypeCollection &elements, const PositionCollection &positions)

Construct a new NormalModeAnalyzer object.

Parameters
  • hessian: The hessian (non-mass weighted, in cartesian coordinates).

  • elements: The elements of the underlying structure.

  • positions: The atom positions of the underlying structure.

NormalModesContainer calculateNormalModes()

Getter for the normal modes.

Return

NormalModesContainer The mass weighted normalmodes.

Private Members

const HessianMatrix &hessian_
const ElementTypeCollection &elements_
const PositionCollection &positions_
int nAtoms_
Eigen::MatrixXd cartesianDisplacements_
Eigen::VectorXd eigenvalues_

Private Static Functions

static double getWaveNumber(double value)

Returns the wave number in cm^-1 from a eigenvalue of the hessian matrix. If the eigenvalue is negative, will return a negative wave number instead of a complex number.