# | Line 1 | Line 1 | |
---|---|---|
1 | < | #include <cstdlib> |
1 | > | #include <stdlib.h> |
2 | ||
3 | ||
4 | #include "Molecule.hpp" | |
# | Line 120 | Line 120 | void Molecule::printMe( void ){ | |
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 | } | |
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 | + | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |