RDKit
Open-source cheminformatics and machine learning.
Toggle main menu visibility
Loading...
Searching...
No Matches
MMFF/AngleBend.h
Go to the documentation of this file.
1
// Copyright (C) 2013-2025 Paolo Tosco and other RDKit contributors
2
//
3
// @@ All Rights Reserved @@
4
// This file is part of the RDKit.
5
// The contents are covered by the terms of the BSD license
6
// which is included in the file license.txt, found at the root
7
// of the RDKit source tree.
8
//
9
#include <
RDGeneral/export.h
>
10
#ifndef __RD_MMFFANGLEBEND_H__
11
#define __RD_MMFFANGLEBEND_H__
12
13
#include <
ForceField/ForceField.h
>
14
#include <
ForceField/Contrib.h
>
15
16
namespace
ForceFields
{
17
namespace
MMFF
{
18
class
MMFFBond
;
19
class
MMFFAngle
;
20
class
MMFFProp
;
21
22
//! The angle-bend term for MMFF
23
class
RDKIT_FORCEFIELD_EXPORT
AngleBendContrib
:
public
ForceFieldContrib
{
24
public
:
25
AngleBendContrib
() {}
26
//! Constructor
27
AngleBendContrib
(
ForceField
*owner);
28
/*! Adds an angle to the contrib
29
The angle is between atom1 - atom2 - atom3
30
31
\param idx1 index of atom1 in the ForceField's positions
32
\param idx2 index of atom2 in the ForceField's positions
33
\param idx3 index of atom3 in the ForceField's positions
34
\param angleType MMFF type of the angle (as an unsigned int)
35
36
*/
37
void
addTerm
(
unsigned
int
idx1,
unsigned
int
idx2,
38
unsigned
int
idx3,
const
MMFFAngle
*mmffAngleParams,
39
const
MMFFProp
*mmffPropParamsCentralAtom);
40
41
double
getEnergy
(
double
*pos)
const override
;
42
void
getGrad
(
double
*pos,
double
*grad)
const override
;
43
AngleBendContrib
*
copy
()
const override
{
44
return
new
AngleBendContrib
(*
this
);
45
}
46
47
private
:
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;
51
};
52
namespace
Utils
{
53
//! returns the MMFF rest value for an angle
54
RDKIT_FORCEFIELD_EXPORT
double
calcAngleRestValue
(
55
const
MMFFAngle
*mmffAngleParams);
56
//! returns the MMFF force constant for an angle
57
RDKIT_FORCEFIELD_EXPORT
double
calcAngleForceConstant
(
58
const
MMFFAngle
*mmffAngleParams);
59
//! calculates and returns the cosine of the angle between points p1, p2, p3
60
RDKIT_FORCEFIELD_EXPORT
double
calcCosTheta
(
RDGeom::Point3D
p1,
61
RDGeom::Point3D
p2,
62
RDGeom::Point3D
p3,
double
dist1,
63
double
dist2);
64
//! calculates and returns the angle bending MMFF energy
65
RDKIT_FORCEFIELD_EXPORT
double
calcAngleBendEnergy
(
const
double
theta0,
66
const
double
ka,
67
bool
isLinear,
68
const
double
cosTheta);
69
RDKIT_FORCEFIELD_EXPORT
void
calcAngleBendGrad
(
RDGeom::Point3D
*r,
double
*dist,
70
double
**g,
double
&dE_dTheta,
71
double
&cosTheta,
72
double
&sinTheta);
73
}
// namespace Utils
74
}
// namespace MMFF
75
}
// namespace ForceFields
76
#endif
Contrib.h
ForceField.h
ForceFields::ForceFieldContrib::ForceField
friend class ForceField
Definition
Contrib.h:20
ForceFields::ForceFieldContrib::ForceFieldContrib
ForceFieldContrib()
Definition
Contrib.h:22
ForceFields::MMFF::AngleBendContrib::copy
AngleBendContrib * copy() const override
return a copy
Definition
MMFF/AngleBend.h:43
ForceFields::MMFF::AngleBendContrib::getGrad
void getGrad(double *pos, double *grad) const override
calculates our contribution to the gradients of a position
ForceFields::MMFF::AngleBendContrib::AngleBendContrib
AngleBendContrib(ForceField *owner)
Constructor.
ForceFields::MMFF::AngleBendContrib::AngleBendContrib
AngleBendContrib()
Definition
MMFF/AngleBend.h:25
ForceFields::MMFF::AngleBendContrib::getEnergy
double getEnergy(double *pos) const override
returns our contribution to the energy of a position
ForceFields::MMFF::AngleBendContrib::addTerm
void addTerm(unsigned int idx1, unsigned int idx2, unsigned int idx3, const MMFFAngle *mmffAngleParams, const MMFFProp *mmffPropParamsCentralAtom)
ForceFields::MMFF::MMFFAngle
class to store MMFF parameters for angle bending
Definition
MMFF/Params.h:104
ForceFields::MMFF::MMFFBond
class to store MMFF parameters for bond stretching
Definition
MMFF/Params.h:80
ForceFields::MMFF::MMFFProp
class to store MMFF Properties
Definition
MMFF/Params.h:53
RDGeom::Point3D
Definition
point.h:53
export.h
RDKIT_FORCEFIELD_EXPORT
#define RDKIT_FORCEFIELD_EXPORT
Definition
export.h:251
ForceFields::MMFF::Utils
Definition
MMFF/AngleBend.h:52
ForceFields::MMFF::Utils::calcAngleForceConstant
RDKIT_FORCEFIELD_EXPORT double calcAngleForceConstant(const MMFFAngle *mmffAngleParams)
returns the MMFF force constant for an angle
ForceFields::MMFF::Utils::calcCosTheta
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
ForceFields::MMFF::Utils::calcAngleRestValue
RDKIT_FORCEFIELD_EXPORT double calcAngleRestValue(const MMFFAngle *mmffAngleParams)
returns the MMFF rest value for an angle
ForceFields::MMFF::Utils::calcAngleBendEnergy
RDKIT_FORCEFIELD_EXPORT double calcAngleBendEnergy(const double theta0, const double ka, bool isLinear, const double cosTheta)
calculates and returns the angle bending MMFF energy
ForceFields::MMFF::Utils::calcAngleBendGrad
RDKIT_FORCEFIELD_EXPORT void calcAngleBendGrad(RDGeom::Point3D *r, double *dist, double **g, double &dE_dTheta, double &cosTheta, double &sinTheta)
ForceFields::MMFF
Definition
MMFF/AngleBend.h:17
ForceFields
Definition
GaussianTorsionAngleContribs.h:22
ForceField
MMFF
AngleBend.h
Generated on
for RDKit by
1.17.0