8 #ifndef MOLECULARMECHANICS_ANGLETERM_H
9 #define MOLECULARMECHANICS_ANGLETERM_H
11 #include "../Topology/AngleType.h"
21 class AtomicSecondDerivativeCollection;
24 namespace MolecularMechanics {
31 using AtomIndex = int;
34 AngleTerm(AtomIndex firstAtom, AtomIndex secondAtom, AtomIndex thirdAtom,
const Angle& angle,
const AngleType& typeOfAngle);
67 const Eigen::Vector3d& a,
const Eigen::Vector3d& b,
72 const Eigen::Vector3d& a,
const Eigen::Vector3d& b,
77 AtomIndex firstAtom_, secondAtom_, thirdAtom_;
80 static constexpr
double singularityCriterion_ = 0.00001;
86 #endif // MOLECULARMECHANICS_ANGLETERM_H
AngleTerm(AtomIndex firstAtom, AtomIndex secondAtom, AtomIndex thirdAtom, const Angle &angle, const AngleType &typeOfAngle)
Constructor from three atom types and instances of Angle and AngleType classes.
Definition: AngleTerm.cpp:22
Class evaluating angle interaction for three given atoms.
Definition: AngleTerm.h:29
This class evaluates the energy and its derivatives for one hydrogen bond term.
Definition: HydrogenBondTerm.h:27
Base class for all interaction terms.
Definition: InteractionTermBase.h:18
Class treating an angle interaction,based solely on the angle (in rad), i.e. in 1 dimension...
Definition: Angle.h:19
int getThirdAtom() const
Getter for third atom.
Definition: AngleTerm.cpp:151
Describes a bond uniquely for given atom types. (useful for maps/unordered_maps)
Definition: AngleType.h:24
int getFirstAtom() const
Getter for first atom.
Definition: AngleTerm.cpp:143
int getSecondAtom() const
Getter for second atom.
Definition: AngleTerm.cpp:147
double evaluateAngleTerm(const Utils::PositionCollection &positions, Utils::AtomicSecondDerivativeCollection &derivatives) const
Evaluates energy contribution and adds the derivatives.
Definition: AngleTerm.cpp:28
AngleType getTypeOfAngle() const
Getter for angle type.
Definition: AngleTerm.cpp:139