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 438 by chuckv, Mon Mar 31 21:50:59 2003 UTC vs.
Revision 658 by tim, Thu Jul 31 15:35:07 2003 UTC

# Line 119 | Line 119 | void Molecule::printMe( void ){
119      myTorsions[i]->printMe();
120    }
121   }
122 +
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 +      myAtoms[i]->setPos( aPos );
136 +    }
137 +  }
138 + }
139 +
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::getCOMvel( double COMvel[3] ) {
170 +
171 +  double mass, mtot;
172 +  double aVel[3];
173 +  int i, j;
174 +
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 +
184 +      mass = myAtoms[i]->getMass();
185 +      mtot   += 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 +  for (j=0; j<3; j++)
196 +    COMvel[j] /= mtot;
197 +
198 +  return mtot;
199 +
200 + }
201 +
202 + double Molecule::getTotalMass()
203 + {
204 +  int natoms;
205 +  Atom** atoms;
206 +  double totalMass;
207 +  
208 +  natoms = getNAtoms();
209 +  atoms = getMyAtoms();
210 +  totalMass = 0;
211 +  for(int i =0; i < natoms; i++){
212 +    totalMass += atoms[i]->getMass();
213 +  }
214 +
215 +  return totalMass;
216 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines