ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/Molecule.cpp
(Generate patch)

Comparing trunk/OOPSE/libmdtools/Molecule.cpp (file contents):
Revision 829 by gezelter, Tue Oct 28 16:03:37 2003 UTC vs.
Revision 1097 by gezelter, Mon Apr 12 20:32:20 2004 UTC

# Line 12 | Line 12 | Molecule::Molecule( void ){
12    myBonds = NULL;
13    myBends = NULL;
14    myTorsions = NULL;
15 +  myRigidBodies = NULL;
16  
17   }
18  
# Line 40 | Line 41 | Molecule::~Molecule( void ){
41      delete[] myTorsions;
42    }
43  
44 <  if( myExcludes != NULL ){
45 <    for(i=0; i<nExcludes; i++) if(myExcludes[i] != NULL ) delete myExcludes[i];
46 <    delete[] myExcludes;
44 >  if( myRigidBodies != NULL ){
45 >    for(i=0; i<nRigidBodies; i++) if(myRigidBodies[i] != NULL )
46 >      delete myRigidBodies[i];
47 >    delete[] myRigidBodies;
48    }
49 +  
50   }
51  
52  
# Line 54 | Line 57 | void Molecule::initialize( molInit &theInit ){
57    nBonds = theInit.nBonds;
58    nBends = theInit.nBends;
59    nTorsions = theInit.nTorsions;
60 <  nExcludes = theInit.nExcludes;
60 >  nRigidBodies = theInit.nRigidBodies;
61    nOriented = theInit.nOriented;
62  
63    myAtoms = theInit.myAtoms;
64    myBonds = theInit.myBonds;
65    myBends = theInit.myBends;
66    myTorsions = theInit.myTorsions;
67 <  myExcludes = theInit.myExcludes;
67 >  myRigidBodies = theInit.myRigidBodies;
68      
69   }
70  
# Line 69 | Line 72 | void Molecule::calcForces( void ){
72    
73    int i;
74  
75 +  for(i=0; i<nRigidBodies; i++) {
76 +    myRigidBodies[i]->updateAtoms();
77 +  }
78 +
79    for(i=0; i<nBonds; i++){
80      myBonds[i]->calc_forces();
81    }
# Line 80 | Line 87 | void Molecule::calcForces( void ){
87    for(i=0; i<nTorsions; i++){
88      myTorsions[i]->calc_forces();
89    }
90 +
91 +  // Rigid Body forces and torques are done after the fortran force loop
92 +
93   }
94  
95  
# Line 118 | Line 128 | void Molecule::printMe( void ){
128    for(i=0; i<nTorsions; i++){
129      myTorsions[i]->printMe();
130    }
131 +
132   }
133  
134   void Molecule::moveCOM(double delta[3]){
# Line 135 | Line 146 | void Molecule::moveCOM(double delta[3]){
146        myAtoms[i]->setPos( aPos );
147      }
148    }
149 +
150 +  for(i=0; i<nRigidBodies; i++) {
151 +
152 +    if (myRigidBodies[i] != NULL) {
153 +      
154 +      myRigidBodies[i]->getPos( aPos );
155 +
156 +      for (j=0; j< 3; j++)
157 +        aPos[j] += delta[j];
158 +      
159 +      myRigidBodies[i]->setPos( aPos );
160 +    }
161 +  }  
162   }
163  
164 + void Molecule::atoms2rigidBodies( void ) {
165 +  int i;
166 +  for (i = 0; i < nRigidBodies; i++) {
167 +    if (myRigidBodies[i] != NULL) {
168 +      myRigidBodies[i]->calcForcesAndTorques();  
169 +    }
170 +  }
171 + }
172 +
173   void Molecule::getCOM( double COM[3] ) {
174  
175    double mass, mtot;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines