10#ifndef __RD_MMFFNONBONDED_H__
11#define __RD_MMFFNONBONDED_H__
27 void addTerm(
unsigned int idx1,
unsigned int idx2,
29 double chargeTerm, std::uint8_t dielModel,
bool is1_4);
31 void getGrad(
double *pos,
double *grad)
const override;
39 ELECTROSTATIC = 1 << 1
41 std::vector<int16_t> d_at1Idxs;
42 std::vector<int16_t> d_at2Idxs;
43 std::vector<std::uint8_t>
45 std::vector<double> d_R_ij_stars;
48 std::vector<double> d_chargeTerms;
49 std::vector<std::uint8_t> d_is_1_4s;
50 std::vector<std::uint8_t>
60 void addTerm(
unsigned int idx1,
unsigned int idx2,
63 void getGrad(
double *pos,
double *grad)
const override;
67 std::vector<int16_t> d_at1Idxs;
68 std::vector<int16_t> d_at2Idxs;
69 std::vector<double> d_R_ij_stars;
87 void addTerm(
unsigned int idx1,
unsigned int idx2,
double chargeTerm,
88 std::uint8_t dielModel,
bool is1_4);
90 void getGrad(
double *pos,
double *grad)
const override;
95 std::vector<int16_t> d_at1Idxs;
96 std::vector<int16_t> d_at2Idxs;
97 std::vector<double> d_chargeTerms;
98 std::vector<std::uint8_t> d_is_1_4s;
99 std::vector<std::uint8_t>
108 const MMFFVdW *mmffVdWParamsAtom2);
112 double R_star_ij,
const MMFFVdW *mmffVdWParamsIAtom,
113 const MMFFVdW *mmffVdWParamsJAtom);
118 const MMFFVdW *mmffVdWParamsIAtom,
119 const MMFFVdW *mmffVdWParamsJAtom);
122 const double R_star_ij,
123 const double wellDepth);
127 unsigned int idx2,
double dist,
129 std::uint8_t dielModel,
pulls in the core RDKit functionality
EleContrib * copy() const override
return a copy
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
EleContrib(ForceField *owner)
Constructor.
void addTerm(unsigned int idx1, unsigned int idx2, double chargeTerm, std::uint8_t dielModel, bool is1_4)
class to store MMFF parameters for non-bonded Van der Waals
NonbondedContrib(ForceField *owner)
NonbondedContrib * copy() const override
return a copy
void getGrad(double *pos, double *grad) const override
calculates our contribution to the gradients of a position
double getEnergy(double *pos) const override
returns our contribution to the energy of a position
void addTerm(unsigned int idx1, unsigned int idx2, const MMFFVdWRijstarEps *mmffVdWConstants, bool includeCharge, double chargeTerm, std::uint8_t dielModel, bool is1_4)
Track a new VdW pair.
void addTerm(unsigned int idx1, unsigned int idx2, const MMFFVdWRijstarEps *mmffVdWConstants)
Track a new VdW pair.
double getEnergy(double *pos) const override
returns our contribution to the energy of a position
VdWContrib * copy() const override
return a copy
VdWContrib(ForceField *owner)
void getGrad(double *pos, double *grad) const override
calculates our contribution to the gradients of a position
#define RDKIT_FORCEFIELD_EXPORT
RDKIT_FORCEFIELD_EXPORT double calcUnscaledVdWMinimum(const MMFFVdWCollection *mmffVdW, const MMFFVdW *mmffVdWParamsAtom1, const MMFFVdW *mmffVdWParamsAtom2)
RDKIT_FORCEFIELD_EXPORT double calcVdWEnergy(const double dist, const double R_star_ij, const double wellDepth)
calculates and returns the Van der Waals MMFF energy
RDKIT_FORCEFIELD_EXPORT void scaleVdWParams(double &R_star_ij, double &wellDepth, const MMFFVdWCollection *mmffVdW, const MMFFVdW *mmffVdWParamsIAtom, const MMFFVdW *mmffVdWParamsJAtom)
scales the VdW parameters
RDKIT_FORCEFIELD_EXPORT double calcUnscaledVdWWellDepth(double R_star_ij, const MMFFVdW *mmffVdWParamsIAtom, const MMFFVdW *mmffVdWParamsJAtom)
RDKIT_FORCEFIELD_EXPORT double calcEleEnergy(unsigned int idx1, unsigned int idx2, double dist, double chargeTerm, std::uint8_t dielModel, bool is1_4)
calculates and returns the electrostatic MMFF energy