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
73 #define MMFF94_BENDS_ENABLED "enable Bends"
76 #define MMFF94_STRETCHES_ENABLED "enable Stretches"
79 #define MMFF94_STRETCHBENDS_ENABLED "enable StrechBends"
89 MMFF94StretchBend(ForceField& force_field);
93 MMFF94StretchBend(const MMFF94StretchBend& to_copy);
97 virtual ~MMFF94StretchBend();
102 throw(Exception::TooManyErrors);
105 virtual
double updateEnergy();
108 virtual
double updateBendEnergy();
111 virtual
double updateStretchEnergy();
114 virtual
double updateStretchBendEnergy();
117 double getStretchEnergy() const;
120 double getBendEnergy() const;
123 double getStretchBendEnergy() const;
126 virtual
void updateForces();
129 virtual
void updateBendForces();
132 virtual
void updateStretchForces();
135 virtual
void updateStretchBendForces();
138 const vector<
Bend>& getBends()
const {
return bends_;}
156 double calculateBendEmpiricalReferenceAngle(
Atom& atom1,
Atom& atom2,
Atom& atom3)
const;
159 double calculateBendEmpiricalForceConstant(
Atom& atom1,
Atom& atom2,
Atom& atom3,
double angle_0)
const;
162 double calculateStretchR0(
const Bond& bond);
165 double calculateStretchConstant(
const Bond& bond,
double r0);
170 void calculateDeltas_();
172 bool setupStretches_();
173 bool setupStretchBends_();
175 void errorOccured_(
const String&
string,
179 vector<Stretch> stretches_;
180 vector<StretchBend> stretch_bends_;
186 static double bend_z_[];
187 static double bend_c_[];
188 static String bend_elements_[];
190 double stretch_energy_;
192 double stretch_bend_energy_;
195 bool stretch_enabled_, bend_enabled_, stretchbend_enabled_;
199 #endif // BALL_MOLMEC_MMFF94_MMFF94STRETCHBEND_H
#define BALL_CREATE(name)
const vector< StretchBend > & getStretchBends() const
const vector< Stretch > & getStretches() const