--- trunk/OOPSE/libmdtools/Molecule.cpp 2003/07/15 15:50:55 610 +++ trunk/OOPSE/libmdtools/Molecule.cpp 2004/04/14 16:32:15 1109 @@ -1,4 +1,4 @@ -#include +#include #include "Molecule.hpp" @@ -15,8 +15,6 @@ Molecule::Molecule( void ){ } - - Molecule::~Molecule( void ){ int i; @@ -40,10 +38,6 @@ Molecule::~Molecule( void ){ delete[] myTorsions; } - if( myExcludes != NULL ){ - for(i=0; iupdateAtoms(); + } + for(i=0; icalc_forces(); } @@ -80,6 +80,9 @@ void Molecule::calcForces( void ){ for(i=0; icalc_forces(); } + + // Rigid Body forces and torques are done after the fortran force loop + } @@ -87,6 +90,10 @@ double Molecule::getPotential( void ){ int i; double myPot = 0.0; + + for(i=0; iupdateAtoms(); + } for(i=0; iget_potential(); @@ -118,6 +125,7 @@ void Molecule::printMe( void ){ for(i=0; iprintMe(); } + } void Molecule::moveCOM(double delta[3]){ @@ -135,8 +143,25 @@ void Molecule::moveCOM(double delta[3]){ myAtoms[i]->setPos( aPos ); } } + + for(i=0; igetPos( aPos ); + + for (j=0; j< 3; j++) + aPos[j] += delta[j]; + + myRigidBodies[i]->setPos( aPos ); + } } +void Molecule::atoms2rigidBodies( void ) { + int i; + for (i = 0; i < myRigidBodies.size(); i++) { + myRigidBodies[i]->calcForcesAndTorques(); + } +} + void Molecule::getCOM( double COM[3] ) { double mass, mtot; @@ -198,3 +223,19 @@ double Molecule::getCOMvel( double COMvel[3] ) { return mtot; } + +double Molecule::getTotalMass() +{ + int natoms; + Atom** atoms; + double totalMass; + + natoms = getNAtoms(); + atoms = getMyAtoms(); + totalMass = 0; + for(int i =0; i < natoms; i++){ + totalMass += atoms[i]->getMass(); + } + + return totalMass; +}