ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/Molecule.hpp
Revision: 1104
Committed: Tue Apr 13 16:26:03 2004 UTC (20 years, 2 months ago) by gezelter
File size: 2955 byte(s)
Log Message:
Now molecules can keep track of their own IntegrableObjects (and
RigidBodies).  Also a bug-fix so that SimInfo can keep track of
RigidBodies (which was done incorrectly before).

File Contents

# User Rev Content
1 mmeineke 377 #ifndef _MOLECULE_H_
2     #define _MOLECULE_H_
3    
4     #include "Atom.hpp"
5     #include "SRI.hpp"
6 mmeineke 407 #include "MoleculeStamp.hpp"
7 gezelter 1097 #include "RigidBody.hpp"
8 mmeineke 377
9 mmeineke 407 typedef struct{
10    
11     int stampID; // the ID in the BASS component stamp array
12     int nAtoms; // the number of atoms in the molecule
13     int nBonds; // ... .. .. . .bonds .. .. . . . .
14     int nBends; // . . . . .. . .bends . . . . .. .
15 gezelter 416 int nTorsions; // .. . . .. . . torsions . . .. . .
16 gezelter 1097 int nRigidBodies; // .. .. .. . rigid bodies ... ..
17 gezelter 416 int nOriented; // .. . . . .. . oriented atoms . . .
18 gezelter 446
19 mmeineke 412 Atom** myAtoms; // the array of atoms
20 mmeineke 407 Bond** myBonds; // arrays of all the short range interactions
21     Bend** myBends;
22     Torsion** myTorsions;
23 gezelter 1104 vector<RigidBody*> myRigidBodies;
24     vector<StuntDouble*> myIntegrableObjects;
25 mmeineke 407 } molInit;
26    
27 mmeineke 377 class Molecule{
28    
29     public:
30    
31 mmeineke 407 Molecule( void );
32     ~Molecule( void );
33 mmeineke 377
34 mmeineke 407 void initialize( molInit &theInit );
35 chuckv 438
36     void setMyIndex( int theIndex ){ myIndex = theIndex;}
37 gezelter 490 void setGlobalIndex( int theIndex ) { globalIndex = theIndex; }
38 mmeineke 489
39     int getMyIndex( void ) { return myIndex; }
40     int getGlobalIndex( void ) { return globalIndex; }
41 mmeineke 423
42 gezelter 1097 int getNAtoms ( void ) {return nAtoms;}
43     int getNBonds ( void ) {return nBonds;}
44     int getNBends ( void ) {return nBends;}
45     int getNTorsions( void ) {return nTorsions;}
46 gezelter 1104 int getNRigidBodies( void ) {return myRigidBodies.size();}
47 gezelter 1097 int getNOriented( void ) {return nOriented;}
48     int getNMembers ( void ) {return nMembers;}
49     int getStampID ( void ) {return stampID;}
50 mmeineke 407
51 gezelter 1097 Atom** getMyAtoms ( void ) {return myAtoms;}
52     Bond** getMyBonds ( void ) {return myBonds;}
53     Bend** getMyBends ( void ) {return myBends;}
54     Torsion** getMyTorsions( void ) {return myTorsions;}
55 gezelter 1104 vector<RigidBody*> getMyRigidBodies( void ) {return myRigidBodies;}
56 mmeineke 377
57 gezelter 1097 void setStampID( int info ) {stampID = info;}
58 mmeineke 423
59     void calcForces( void );
60 gezelter 1097 void atoms2rigidBodies( void );
61 mmeineke 423 double getPotential( void );
62 mmeineke 377
63 mmeineke 435 void printMe( void );
64 mmeineke 377
65 mmeineke 449 void getCOM( double COM[3] );
66 mmeineke 452 void moveCOM( double delta[3] );
67 gezelter 475 double getCOMvel( double COMvel[3] );
68 tim 658
69     double getTotalMass();
70 gezelter 446
71 mmeineke 377 private:
72    
73 mmeineke 407 int stampID; // the ID in the BASS component stamp array
74     int nAtoms; // the number of atoms in the molecule
75     int nBonds; // ... .. .. . .bonds .. .. . . . .
76     int nBends; // . . . . .. . .bends . . . . .. .
77 gezelter 416 int nTorsions; // .. . . .. . . torsions . . .. . .
78 gezelter 1097 int nRigidBodies; // .. . . .. .rigid bodies . . .. . .
79 gezelter 416 int nOriented; // .. . . . .. . oriented atoms . . .
80 mmeineke 423 int nMembers; // .. . . . . . .atoms (legacy code) . . .
81 mmeineke 407
82 gezelter 483 int myIndex; // mostly just for debug (and for making pressure calcs work)
83 mmeineke 489 int globalIndex;
84 chuckv 438
85 mmeineke 407 Atom** myAtoms; // the array of atoms
86 mmeineke 423 Bond** myBonds; // arrays of all the short range interactions
87 mmeineke 407 Bend** myBends;
88     Torsion** myTorsions;
89 gezelter 1104 vector<RigidBody*> myRigidBodies;
90     vector<StuntDouble*> myIntegrableObjects;
91    
92 mmeineke 377 };
93    
94     #endif