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

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