ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/Integrator.hpp
Revision: 548
Committed: Wed Jun 4 21:06:45 2003 UTC (21 years, 1 month ago) by mmeineke
File size: 1975 byte(s)
Log Message:
added constrainA and constrainB to the Symplectic integrator

File Contents

# Content
1 #ifndef _INTEGRATOR_H_
2 #define _INTEGRATOR_H_
3
4 #include "Atom.hpp"
5 #include "SRI.hpp"
6 #include "AbstractClasses.hpp"
7 #include "SimInfo.hpp"
8 #include "ForceFields.hpp"
9 #include "Thermo.hpp"
10 #include "ReadWrite.hpp"
11
12 class Integrator : public BaseIntegrator {
13
14 public:
15 Integrator( SimInfo &theInfo, ForceFields* the_ff );
16 virtual ~Integrator();
17 void integrate( void );
18
19
20 protected:
21
22
23 virtual void integrateStep( int calcPot, int calcStress );
24 virtual void preMove( void );
25 virtual void moveA( void );
26 virtual void moveB( void );
27 virtual void constrainA( void );
28 virtual void constrainB( void );
29
30
31 void checkConstraints( void );
32 void rotate( int axes1, int axes2, double angle, double j[3],
33 double A[3][3] );
34
35
36 ForceFields* myFF;
37
38 SimInfo *info; // all the info we'll ever need
39 int nAtoms; /* the number of atoms */
40 int oldAtoms;
41 Atom **atoms; /* array of atom pointers */
42 Molecule* molecules;
43 int nMols;
44
45 int isConstrained; // boolean to know whether the systems contains
46 // constraints.
47 int nConstrained; // counter for number of constraints
48 int *constrainedA; // the i of a constraint pair
49 int *constrainedB; // the j of a constraint pair
50 double *constrainedDsqr; // the square of the constraint distance
51
52 int* moving; // tells whether we are moving atom i
53 int* moved; // tells whether we have moved atom i
54 double* prePos; // pre constrained positions
55
56 short isFirst; /*boolean for the first time integrate is called */
57
58 double dt;
59 double dt2;
60 const double eConvert = 4.184e-4; // converts kcal/mol -> amu*A^2/fs^2
61
62 const int maxIteration = 300;
63 const double tol = 1.0e-6;
64
65
66 double* pos;
67 double* vel;
68 double* frc;
69 double* trq;
70 double* Amat;
71
72
73
74 Thermo *tStats;
75 StatWriter* statOut;
76 DumpWriter* dumpOut;
77
78 };
79
80
81 class NVT : public Integrator{
82
83 NVT ( void );
84 virtual ~NVT();
85
86 protected:
87 virtual moveA( void );
88 virtual moveB( void );
89
90 };
91
92
93
94
95 #endif