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"
100 MMFF94StretchBend(ForceField& force_field);
104 MMFF94StretchBend(
const MMFF94StretchBend& to_copy);
108 virtual ~MMFF94StretchBend();
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_;}
167 double calculateBendEmpiricalReferenceAngle(
Atom& atom1,
Atom& atom2,
Atom& atom3)
const;
170 double calculateBendEmpiricalForceConstant(
Atom& atom1,
Atom& atom2,
Atom& atom3,
double angle_0)
const;
173 double calculateStretchR0(
const Bond& bond);
176 double calculateStretchConstant(
const Bond& bond,
double r0);
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_;
210 #endif // BALL_MOLMEC_MMFF94_MMFF94STRETCHBEND_H