13#ifndef __RD_MMFFANGLEBEND_H__
14#define __RD_MMFFANGLEBEND_H__
41 unsigned int idx3,
const MMFFAngle *mmffAngleParams,
42 const MMFFProp *mmffPropParamsCentralAtom);
44 void getGrad(
double *pos,
double *grad)
const override;
51 int d_at1Idx{-1}, d_at2Idx{-1}, d_at3Idx{-1};
52 double d_ka, d_theta0;
70 const double cosTheta);
72 double **g,
double &dE_dTheta,
abstract base class for contributions to ForceFields
A class to store forcefields and handle minimization.
The angle-bend term for MMFF.
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, unsigned int idx1, unsigned int idx2, unsigned int idx3, const MMFFAngle *mmffAngleParams, const MMFFProp *mmffPropParamsCentralAtom)
Constructor.
double getEnergy(double *pos) const override
returns our contribution to the energy of a position
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)