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