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 ago) by mmeineke
File size: 1975 byte(s)
Log Message:
added constrainA and constrainB to the Symplectic integrator

File Contents

# User Rev Content
1 mmeineke 377 #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 mmeineke 540 #include "Thermo.hpp"
10     #include "ReadWrite.hpp"
11 mmeineke 377
12 mmeineke 540 class Integrator : public BaseIntegrator {
13 mmeineke 377
14     public:
15 mmeineke 548 Integrator( SimInfo &theInfo, ForceFields* the_ff );
16     virtual ~Integrator();
17 mmeineke 377 void integrate( void );
18    
19    
20 mmeineke 540 protected:
21 mmeineke 377
22    
23 mmeineke 540 virtual void integrateStep( int calcPot, int calcStress );
24 mmeineke 548 virtual void preMove( void );
25 mmeineke 540 virtual void moveA( void );
26     virtual void moveB( void );
27     virtual void constrainA( void );
28     virtual void constrainB( void );
29 mmeineke 377
30 mmeineke 540
31     void checkConstraints( void );
32 mmeineke 377 void rotate( int axes1, int axes2, double angle, double j[3],
33     double A[3][3] );
34    
35 mmeineke 540
36 mmeineke 377 ForceFields* myFF;
37    
38 mmeineke 540 SimInfo *info; // all the info we'll ever need
39     int nAtoms; /* the number of atoms */
40 mmeineke 548 int oldAtoms;
41 mmeineke 540 Atom **atoms; /* array of atom pointers */
42 mmeineke 423 Molecule* molecules;
43     int nMols;
44    
45 mmeineke 548 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 mmeineke 540 short isFirst; /*boolean for the first time integrate is called */
57    
58     double dt;
59 mmeineke 541 double dt2;
60 mmeineke 542 const double eConvert = 4.184e-4; // converts kcal/mol -> amu*A^2/fs^2
61 mmeineke 377
62 mmeineke 548 const int maxIteration = 300;
63     const double tol = 1.0e-6;
64    
65 mmeineke 541
66     double* pos;
67     double* vel;
68     double* frc;
69     double* trq;
70     double* Amat;
71    
72 mmeineke 377
73 mmeineke 541
74 mmeineke 540 Thermo *tStats;
75     StatWriter* statOut;
76     DumpWriter* dumpOut;
77 mmeineke 377
78     };
79    
80 mmeineke 540
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 mmeineke 377 #endif