11#ifndef RD_TORSIONANGLEM6_H
12#define RD_TORSIONANGLEM6_H
24class ForceFieldContrib;
50 unsigned int idx2,
unsigned int idx3,
unsigned int idx4,
51 std::vector<double> V, std::vector<int> signs);
53 void getGrad(
double *pos,
double *grad)
const override;
59 int d_at1Idx{-1}, d_at2Idx{-1}, d_at3Idx{-1}, d_at4Idx{-1};
60 std::vector<double> d_V;
61 std::vector<int> d_sign;
66 const std::vector<double> &V,
const std::vector<int> &signs,
the torsion term for multiplicity m = 1 - 6
double getEnergy(double *pos) const override
returns our contribution to the energy of a position
void getGrad(double *pos, double *grad) const override
calculates our contribution to the gradients of a position
TorsionAngleContribM6 * copy() const override
return a copy
TorsionAngleContribM6(ForceFields::ForceField *owner, unsigned int idx1, unsigned int idx2, unsigned int idx3, unsigned int idx4, std::vector< double > V, std::vector< int > signs)
Constructor.
abstract base class for contributions to ForceFields
A class to store forcefields and handle minimization.
#define RDKIT_FORCEFIELDHELPERS_EXPORT
RDKIT_FORCEFIELDHELPERS_EXPORT double calcTorsionEnergyM6(const std::vector< double > &V, const std::vector< int > &signs, const double cosPhi)
calculates and returns the torsional energy