--- trunk/OOPSE/libmdtools/Molecule.cpp 2003/03/31 21:50:59 438 +++ trunk/OOPSE/libmdtools/Molecule.cpp 2003/04/03 20:19:50 446 @@ -119,3 +119,50 @@ void Molecule::printMe( void ){ myTorsions[i]->printMe(); } } + +void Molecule::moveCOM(double* delta){ + double x, y, z; + int i; + + for(i=0; igetX() + delta[0]; + y = myAtoms[i]->getY() + delta[1]; + z = myAtoms[i]->getZ() + delta[2]; + + myAtoms[i]->setX(x); + myAtoms[i]->setY(y); + myAtoms[i]->setZ(z); + } + } +} + +double* Molecule::getCOM() { + + double mass, mtot; + int i; + + COM[0] = 0.0; + COM[1] = 0.0; + COM[2] = 0.0; + mtot = 0.0; + + for (i=0; i < nAtoms; i++) { + if (myAtoms[i] != NULL) { + + mass = myAtoms[i]->getMass(); + mtot += mass; + COM[0] += myAtoms[i]->getX() * mass; + COM[1] += myAtoms[i]->getY() * mass; + COM[2] += myAtoms[i]->getZ() * mass; + + } + } + + COM[0] /= mtot; + COM[1] /= mtot; + COM[2] /= mtot; + + return COM; +}