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 446 by gezelter, Thu Apr 3 20:19:50 2003 UTC vs.
Revision 610 by gezelter, Tue Jul 15 15:50:55 2003 UTC

# Line 120 | Line 120 | void Molecule::moveCOM(double* delta){
120    }
121   }
122  
123 < void Molecule::moveCOM(double* delta){
124 <  double x, y, z;
125 <  int i;
123 > void Molecule::moveCOM(double delta[3]){
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];
136 <      y = myAtoms[i]->getY() + delta[1];
137 <      z = myAtoms[i]->getZ() + delta[2];
135 >      myAtoms[i]->setPos( aPos );
136 >    }
137 >  }
138 > }
139  
140 <      myAtoms[i]->setX(x);
141 <      myAtoms[i]->setY(y);
142 <      myAtoms[i]->setZ(z);
140 > void Molecule::getCOM( double COM[3] ) {
141 >
142 >  double mass, mtot;
143 >  double aPos[3];
144 >  int i, j;
145 >
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++) {
152 >    if (myAtoms[i] != NULL) {
153 >
154 >      mass = myAtoms[i]->getMass();
155 >      mtot   += 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 +  for (j = 0; j < 3; j++)
166 +    COM[j] /= mtot;
167   }
168  
169 < double* Molecule::getCOM() {
169 > double Molecule::getCOMvel( double COMvel[3] ) {
170  
171    double mass, mtot;
172 <  int i;
172 >  double aVel[3];
173 >  int i, j;
174  
175 <  COM[0] = 0.0;
176 <  COM[1] = 0.0;
177 <  COM[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++) {
# Line 153 | Line 183 | double* Molecule::getCOM() {
183  
184        mass = myAtoms[i]->getMass();
185        mtot   += mass;
156      COM[0] += myAtoms[i]->getX() * mass;
157      COM[1] += myAtoms[i]->getY() * mass;
158      COM[2] += myAtoms[i]->getZ() * 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 <  COM[0] /= mtot;
196 <  COM[1] /= mtot;
165 <  COM[2] /= mtot;
195 >  for (j=0; j<3; j++)
196 >    COMvel[j] /= mtot;
197  
198 <  return COM;
198 >  return mtot;
199 >
200   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines