7#ifndef BALL_MOLMEC_MMFF94_MMFF94STRETCHBEND_H
8#define BALL_MOLMEC_MMFF94_MMFF94STRETCHBEND_H
10#ifndef BALL_MOLMEC_COMMON_FORCEFIELDCOMPONENT_H
14#ifndef BALL_MOLMEC_MMFF94_MMFF94PARAMETERS_H
84 #define MMFF94_BENDS_ENABLED "enable Bends"
87 #define MMFF94_STRETCHES_ENABLED "enable Stretches"
90 #define MMFF94_STRETCHBENDS_ENABLED "enable StrechBends"
113 virtual
bool setup();
116 virtual
double updateEnergy();
119 virtual
double updateBendEnergy();
122 virtual
double updateStretchEnergy();
125 virtual
double updateStretchBendEnergy();
128 double getStretchEnergy() const;
131 double getBendEnergy() const;
134 double getStretchBendEnergy() const;
137 virtual
void updateForces();
140 virtual
void updateBendForces();
143 virtual
void updateStretchForces();
146 virtual
void updateStretchBendForces();
149 const vector<
Bend>& getBends()
const {
return bends_;}
181 void calculateDeltas_();
183 bool setupStretches_();
184 bool setupStretchBends_();
186 void errorOccurred_(
const String&
string,
190 vector<Stretch> stretches_;
191 vector<StretchBend> stretch_bends_;
197 static double bend_z_[];
198 static double bend_c_[];
199 static String bend_elements_[];
201 double stretch_energy_;
203 double stretch_bend_energy_;
206 bool stretch_enabled_, bend_enabled_, stretchbend_enabled_;
#define BALL_CREATE(name)
const vector< Stretch > & getStretches() const
Position getBendType(const Bond &bond1, const Bond &bond2, Atom &atom1, Atom &atom2, Atom &atom3) const
const vector< StretchBend > & getStretchBends() const
double calculateBendEmpiricalReferenceAngle(Atom &atom1, Atom &atom2, Atom &atom3) const
Bend emperical reference angle.
double calculateStretchConstant(const Bond &bond, double r0)
Index calculateSBTIJK(Position angle_type, bool bond_type1, bool bond_type2)
double calculateBendEmpiricalForceConstant(Atom &atom1, Atom &atom2, Atom &atom3, double angle_0) const
Bend emperical force constant.
double calculateStretchR0(const Bond &bond)
Calculate the radius value per Schomaker-Stevenson Rule.