ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/Molecule.hpp
Revision: 658
Committed: Thu Jul 31 15:35:07 2003 UTC (20 years, 11 months ago) by tim
File size: 2823 byte(s)
Log Message:
 Added Z constraint.

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 416 #include "Exclude.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     int nOriented; // .. . . . .. . oriented atoms . . .
17 mmeineke 425 int nExcludes; // . . .. . . . .exclude pairs.. . . .
18 gezelter 446
19 mmeineke 412 Atom** myAtoms; // the array of atoms
20     Exclude** myExcludes;// the array of Excluded pairs
21 mmeineke 407 Bond** myBonds; // arrays of all the short range interactions
22     Bend** myBends;
23     Torsion** myTorsions;
24    
25    
26     } molInit;
27    
28 mmeineke 377 class Molecule{
29    
30     public:
31    
32 mmeineke 407 Molecule( void );
33     ~Molecule( void );
34 mmeineke 377
35 mmeineke 407 void initialize( molInit &theInit );
36 chuckv 438
37     void setMyIndex( int theIndex ){ myIndex = theIndex;}
38 gezelter 490 void setGlobalIndex( int theIndex ) { globalIndex = theIndex; }
39 mmeineke 489
40     int getMyIndex( void ) { return myIndex; }
41     int getGlobalIndex( void ) { return globalIndex; }
42 mmeineke 423
43     int getNAtoms ( void ) {return nAtoms;}
44     int getNBonds ( void ) {return nBonds;}
45     int getNBends ( void ) {return nBends;}
46     int getNTorsions( void ) {return nTorsions;}
47     int getNOriented( void ) {return nOriented;}
48     int getNExcludes( void ) {return nExcludes;}
49     int getNMembers ( void ) {return nMembers;}
50     int getStampID ( void ) {return stampID;}
51 mmeineke 407
52 mmeineke 423 Atom** getMyAtoms ( void ) {return myAtoms;}
53     Bond** getMyBonds ( void ) {return myBonds;}
54     Bend** getMyBends ( void ) {return myBends;}
55 mmeineke 424 Torsion** getMyTorsions( void ) {return myTorsions;}
56     Exclude** getMyExcludes( void ) {return myExcludes;}
57 mmeineke 377
58 mmeineke 423 void setStampID( int info ) {stampID = info;}
59 mmeineke 489
60 mmeineke 423
61 mmeineke 489
62    
63 mmeineke 423 void calcForces( void );
64     double getPotential( void );
65 mmeineke 377
66 mmeineke 435 void printMe( void );
67 mmeineke 377
68 mmeineke 449 void getCOM( double COM[3] );
69 mmeineke 452 void moveCOM( double delta[3] );
70 gezelter 475 double getCOMvel( double COMvel[3] );
71 tim 658
72     double getTotalMass();
73 gezelter 446
74 mmeineke 377 private:
75    
76 mmeineke 407 int stampID; // the ID in the BASS component stamp array
77     int nAtoms; // the number of atoms in the molecule
78     int nBonds; // ... .. .. . .bonds .. .. . . . .
79     int nBends; // . . . . .. . .bends . . . . .. .
80 gezelter 416 int nTorsions; // .. . . .. . . torsions . . .. . .
81     int nOriented; // .. . . . .. . oriented atoms . . .
82 mmeineke 423 int nMembers; // .. . . . . . .atoms (legacy code) . . .
83     int nExcludes; // . . . . .. .. excludes .. . .
84 mmeineke 407
85 gezelter 483 int myIndex; // mostly just for debug (and for making pressure calcs work)
86 mmeineke 489 int globalIndex;
87 chuckv 438
88 mmeineke 407 Atom** myAtoms; // the array of atoms
89 mmeineke 423 Bond** myBonds; // arrays of all the short range interactions
90 mmeineke 407 Bend** myBends;
91     Torsion** myTorsions;
92 mmeineke 423 Exclude** myExcludes; // array of the excluded pairs of long range forces
93 mmeineke 407
94 mmeineke 377 };
95    
96     #endif