--- branches/new_design/OOPSE-3.0/src/brains/Thermo.cpp 2004/12/02 00:09:35 1820 +++ branches/new_design/OOPSE-3.0/src/brains/Thermo.cpp 2004/12/05 22:02:42 1854 @@ -1,8 +1,8 @@ #include #include -using namespace std; + #ifdef IS_MPI #include #endif //is_mpi @@ -36,7 +36,7 @@ double Thermo::getKinetic() { double mass = integrableObject->getMass(); Vector3d vel = integrableObject->getVel(); - kinetic = mass * (vel[0]*vel[0] + vel[1]*vel[1] + vel[2]*vel[2]); + kinetic += mass * (vel[0]*vel[0] + vel[1]*vel[1] + vel[2]*vel[2]); if (integrableObject->isDirectional()) { angMom = integrableObject->getJ(); @@ -122,18 +122,18 @@ double Thermo::getPressure() { Mat3x3d tensor; double pressure; - this->getPressureTensor(tensor); + tensor = getPressureTensor(); pressure = OOPSEConstant::pressureConvert * (tensor(0, 0) + tensor(1, 1) + tensor(2, 2)) / 3.0; return pressure; } -void Thermo::getPressureTensor(Mat3x3d pressureTensor) { +Mat3x3d Thermo::getPressureTensor() { // returns pressure tensor in units amu*fs^-2*Ang^-1 // routine derived via viral theorem description in: // Paci, E. and Marchi, M. J.Phys.Chem. 1996, 100, 4314-4322 - + Mat3x3d pressureTensor; Mat3x3d p_local(0.0); Mat3x3d p_global(0.0); @@ -161,7 +161,9 @@ void Thermo::getPressureTensor(Mat3x3d pressureTensor) Snapshot* curSnapshot = info_->getSnapshotManager()->getCurrentSnapshot(); Mat3x3d tau = curSnapshot->statData.getTau(); - pressureTensor = p_global + OOPSEConstant::energyConvert/volume * tau; + pressureTensor = (p_global + OOPSEConstant::energyConvert* tau)/volume; + + return pressureTensor; } void Thermo::saveStat(){ @@ -173,7 +175,7 @@ void Thermo::saveStat(){ stat[Stats::TOTAL_ENERGY] = stat[Stats::KINETIC_ENERGY] + stat[Stats::POTENTIAL_ENERGY] ; stat[Stats::TEMPERATURE] = getTemperature(); stat[Stats::PRESSURE] = getPressure(); - stat[Stats::VOLUME] = currSnapshot->getVolume(); + stat[Stats::VOLUME] = getVolume(); /**@todo need refactorying*/ //Conserved Quantity is set by integrator and time is set by setTime