| 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 |