8 #ifndef MMIMPROPERDIHEDRALTERM_H
9 #define MMIMPROPERDIHEDRALTERM_H
11 #include "../Topology/ImproperDihedralType.h"
20 class AtomicSecondDerivativeCollection;
24 namespace MolecularMechanics {
35 using AtomIndex = int;
40 ImproperDihedralTerm(AtomIndex firstAtom, AtomIndex secondAtom, AtomIndex centralAtom, AtomIndex fourthAtom,
56 static double getTheta(
const Eigen::Vector3d& A,
const Eigen::Vector3d& B,
const Eigen::Vector3d& G);
87 double derSecond)
const;
89 AtomIndex firstAtom_, secondAtom_, centralAtom_, fourthAtom_;
97 #endif // MMIMPROPERDIHEDRALTERM_H
int getFirstAtom() const
Getter for first atom.
Definition: ImproperDihedralTerm.cpp:163
int getFourthAtom() const
Getter for fourth atom.
Definition: ImproperDihedralTerm.cpp:175
int getCentralAtom() const
Getter for central atom.
Definition: ImproperDihedralTerm.cpp:171
Class treating an improper dihedral interaction, based solely on the angle (in rad), i.e. in 1 dimension.
Definition: ImproperDihedral.h:19
int getSecondAtom() const
Getter for second atom.
Definition: ImproperDihedralTerm.cpp:167
double evaluateImproperDihedralTerm(const Utils::PositionCollection &positions, Utils::AtomicSecondDerivativeCollection &derivatives) const
Evaluates energy contribution and adds the derivatives.
Definition: ImproperDihedralTerm.cpp:30
Base class for all interaction terms.
Definition: InteractionTermBase.h:18
ImproperDihedralType getTypeOfImproperDihedral() const
Getter for the improper dihedral type.
Definition: ImproperDihedralTerm.cpp:159
Class evaluating improper dihedral interaction for four given atoms.
Definition: ImproperDihedralTerm.h:33
static double getTheta(const Eigen::Vector3d &A, const Eigen::Vector3d &B, const Eigen::Vector3d &G)
Calculates and returns the improper dihedral angle theta from the three essential vectors A...
Definition: ImproperDihedralTerm.cpp:140
~ImproperDihedralTerm()
Destructor.
Unique descriptor an improper dihedral for given atom types. (useful for maps/unordered_maps) ...
Definition: ImproperDihedralType.h:24
ImproperDihedralTerm(AtomIndex firstAtom, AtomIndex secondAtom, AtomIndex centralAtom, AtomIndex fourthAtom, const ImproperDihedral &improperDihedral, const ImproperDihedralType &typeOfImproperDihedral)
Constructor from four atoms and instances of an ImproperDihedral and an ImproperDihedralType.
Definition: ImproperDihedralTerm.cpp:17