10#ifndef __RD_MMFFANGLEBEND_H__
11#define __RD_MMFFANGLEBEND_H__
37 void addTerm(
unsigned int idx1,
unsigned int idx2,
38 unsigned int idx3,
const MMFFAngle *mmffAngleParams,
39 const MMFFProp *mmffPropParamsCentralAtom);
42 void getGrad(
double *pos,
double *grad)
const override;
48 std::vector<bool> d_isLinear;
49 std::vector<int16_t> d_at1Idxs, d_at2Idxs, d_at3Idxs;
50 std::vector<double> d_ka, d_theta0;
68 const double cosTheta);
70 double **g,
double &dE_dTheta,
AngleBendContrib * copy() const override
return a copy
void getGrad(double *pos, double *grad) const override
calculates our contribution to the gradients of a position
AngleBendContrib(ForceField *owner)
Constructor.
double getEnergy(double *pos) const override
returns our contribution to the energy of a position
void addTerm(unsigned int idx1, unsigned int idx2, unsigned int idx3, const MMFFAngle *mmffAngleParams, const MMFFProp *mmffPropParamsCentralAtom)
class to store MMFF parameters for angle bending
class to store MMFF parameters for bond stretching
class to store MMFF Properties
#define RDKIT_FORCEFIELD_EXPORT
RDKIT_FORCEFIELD_EXPORT double calcAngleForceConstant(const MMFFAngle *mmffAngleParams)
returns the MMFF force constant for an angle
RDKIT_FORCEFIELD_EXPORT double calcCosTheta(RDGeom::Point3D p1, RDGeom::Point3D p2, RDGeom::Point3D p3, double dist1, double dist2)
calculates and returns the cosine of the angle between points p1, p2, p3
RDKIT_FORCEFIELD_EXPORT double calcAngleRestValue(const MMFFAngle *mmffAngleParams)
returns the MMFF rest value for an angle
RDKIT_FORCEFIELD_EXPORT double calcAngleBendEnergy(const double theta0, const double ka, bool isLinear, const double cosTheta)
calculates and returns the angle bending MMFF energy
RDKIT_FORCEFIELD_EXPORT void calcAngleBendGrad(RDGeom::Point3D *r, double *dist, double **g, double &dE_dTheta, double &cosTheta, double &sinTheta)