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 468 by gezelter, Mon Apr 7 16:56:38 2003 UTC vs.
Revision 610 by gezelter, Tue Jul 15 15:50:55 2003 UTC

# Line 121 | Line 121 | void Molecule::moveCOM(double delta[3]){
121   }
122  
123   void Molecule::moveCOM(double delta[3]){
124 <  double x, y, z;
125 <  int i;
124 >  double aPos[3];
125 >  int i, j;
126  
127    for(i=0; i<nAtoms; i++) {
128      if(myAtoms[i] != NULL ) {
129 +      
130 +      myAtoms[i]->getPos( aPos );
131 +      
132 +      for (j=0; j< 3; j++)
133 +        aPos[j] += delta[j];
134  
135 <      x = myAtoms[i]->getX() + delta[0];
131 <      y = myAtoms[i]->getY() + delta[1];
132 <      z = myAtoms[i]->getZ() + delta[2];
133 <
134 <      myAtoms[i]->setX(x);
135 <      myAtoms[i]->setY(y);
136 <      myAtoms[i]->setZ(z);
135 >      myAtoms[i]->setPos( aPos );
136      }
137    }
138   }
# Line 141 | Line 140 | void Molecule::getCOM( double COM[3] ) {
140   void Molecule::getCOM( double COM[3] ) {
141  
142    double mass, mtot;
143 <  int i;
143 >  double aPos[3];
144 >  int i, j;
145  
146 <  COM[0] = 0.0;
147 <  COM[1] = 0.0;
148 <  COM[2] = 0.0;
146 >  for (j=0; j<3; j++)
147 >    COM[j] = 0.0;
148 >
149    mtot   = 0.0;
150  
151    for (i=0; i < nAtoms; i++) {
# Line 153 | Line 153 | void Molecule::getCOM( double COM[3] ) {
153  
154        mass = myAtoms[i]->getMass();
155        mtot   += mass;
156 <      COM[0] += myAtoms[i]->getX() * mass;
157 <      COM[1] += myAtoms[i]->getY() * mass;
158 <      COM[2] += myAtoms[i]->getZ() * mass;
156 >      
157 >      myAtoms[i]->getPos( aPos );
158  
159 +      for( j = 0; j < 3; j++)
160 +        COM[j] += aPos[j] * mass;
161 +
162      }
163    }
164  
165 <  COM[0] /= mtot;
166 <  COM[1] /= mtot;
165 <  COM[2] /= mtot;
166 <
165 >  for (j = 0; j < 3; j++)
166 >    COM[j] /= mtot;
167   }
168  
169 < void Molecule::getCOMvel( double mtot, double COMvel[3] ) {
169 > double Molecule::getCOMvel( double COMvel[3] ) {
170  
171 <  double mass;
172 <  int i;
171 >  double mass, mtot;
172 >  double aVel[3];
173 >  int i, j;
174  
175 <  COMvel[0] = 0.0;
176 <  COMvel[1] = 0.0;
177 <  COMvel[2] = 0.0;
175 >
176 >  for (j=0; j<3; j++)
177 >    COMvel[j] = 0.0;
178 >
179    mtot   = 0.0;
180  
181    for (i=0; i < nAtoms; i++) {
182      if (myAtoms[i] != NULL) {
183 <      
183 >
184        mass = myAtoms[i]->getMass();
185        mtot   += mass;
184      COMvel[0] += myAtoms[i]->get_vx() * mass;
185      COMvel[1] += myAtoms[i]->get_vy() * mass;
186      COMvel[2] += myAtoms[i]->get_vz() * mass;
186  
187 +      myAtoms[i]->getVel(aVel);
188 +
189 +      for (j=0; j<3; j++)
190 +        COMvel[j] += aVel[j]*mass;
191 +
192      }
193    }
194  
195 <  COMvel[0] /= mtot;
196 <  COMvel[1] /= mtot;
193 <  COMvel[2] /= mtot;
195 >  for (j=0; j<3; j++)
196 >    COMvel[j] /= mtot;
197  
198 +  return mtot;
199 +
200   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines