1 /* -*- c++ -*- */ 2 #ifndef STANDARDINTEGRATOR_H 3 #define STANDARDINTEGRATOR_H 4 5 #include "Integrator.h" 6 7 namespace ProtoMol { 8 //_________________________________________________________________ StandardIntegrator 9 class GenericTopology; 10 class ScalarStructure; 11 class Vector3DBlock; 12 class ForceGroup; 13 14 class StandardIntegrator: public Integrator { 15 16 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 17 // Constructors, destructors, assignment 18 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 19 friend class MTSIntegrator; 20 public: 21 StandardIntegrator(); 22 StandardIntegrator(ForceGroup* forceGroup); 23 24 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 25 // New methods of class StandardIntegrator 26 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 27 protected: 28 virtual void doHalfKick(); 29 virtual void doKick(); 30 virtual void initializeForces(); 31 virtual void doDriftOrNextIntegrator() = 0; 32 33 virtual void calculateForces(); 34 35 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 36 // From class Integrator 37 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 38 public: 39 virtual void run (int numTimesteps); 40 virtual void initialize(GenericTopology *topo, 41 Vector3DBlock *positions, 42 Vector3DBlock *velocities, 43 ScalarStructure *energies); 44 45 virtual Integrator* previous(); 46 virtual const Integrator* previous() const; 47 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 48 // My data members 49 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 50 protected: 51 StandardIntegrator *myPreviousIntegrator; 52 }; 53 //______________________________________________________________________ INLINES 54 55 } 56 #endif 57