7 #ifndef BALL_MOLMEC_COMMON_FORCEFIELD_H
8 #define BALL_MOLMEC_COMMON_FORCEFIELD_H
14 #ifndef BALL_KERNEL_SYSTEM_H
18 #ifndef BALL_DATATYPE_OPTIONS_H
22 #ifndef BALL_CONCEPT_TIMESTAMP_H
26 #ifndef BALL_MOLMEC_PARAMETER_FORCEFIELDPARAMETERS_H
30 #ifndef BALL_MOLMEC_PARAMETER_ATOMTYPES_H
34 #ifndef BALL_MOLMEC_COMMON_PERIODIC_BOUNDARY_H
38 #ifndef BALL_MOLMEC_COMMON_ATOMVECTOR_H
46 class ForceFieldComponent;
99 typedef std::vector<std::pair<Atom*, Atom*> >
PairVector;
167 bool setup(
System& system);
177 virtual bool specificSetup();
183 void setMaximumNumberOfErrors(
Size nr);
188 Size getMaximumNumberOfErrors()
const;
200 void setName(
const String& name);
208 Size getNumberOfAtoms()
const;
217 Size getNumberOfMovableAtoms()
const;
232 const System* getSystem()
const ;
237 bool getUseSelection()
const ;
242 void disableSelection() ;
247 void enableSelection() ;
251 bool isSelectionEnabled()
const ;
259 Size countComponents()
const;
294 void removeComponent(
const String& name);
313 double getEnergy()
const;
317 double updateEnergy();
325 double getRMSGradient()
const;
331 virtual Size getUpdateFrequency()
const;
342 virtual void update();
348 {
return "undefined";}
351 std::ostream& error();
371 void collectAtoms_(
const System& system);
375 void sortSelectedAtomVector_();
380 virtual void performRequiredUpdates_();
445 # ifndef BALL_NO_INLINE_FUNCTIONS
446 # include <BALL/MOLMEC/COMMON/forceField.iC>
451 #endif // BALL_MOLMEC_COMMON_FORCEFIELD_H