--- trunk/src/constraints/Rattle.cpp 2014/04/15 12:12:23 1982 +++ trunk/src/constraints/Rattle.cpp 2014/09/26 22:22:28 2022 @@ -45,11 +45,15 @@ namespace OpenMD { #include "utils/simError.h" namespace OpenMD { - Rattle::Rattle(SimInfo* info) : info_(info), maxConsIteration_(10), consTolerance_(1.0e-6), doRattle_(false) { + Rattle::Rattle(SimInfo* info) : info_(info), maxConsIteration_(10), + consTolerance_(1.0e-6), doRattle_(false), + currConstraintTime_(0.0) { if (info_->getNGlobalConstraints() > 0) doRattle_ = true; + if (!doRattle_) return; + Globals* simParams = info_->getSimParams(); if (simParams->haveDt()) { @@ -68,10 +72,13 @@ namespace OpenMD { constraintTime_ = simParams->getStatusTime(); } - constraintOutputFile_ = getPrefix(info_->getFinalConfigFileName()) + ".constraintForces"; + constraintOutputFile_ = getPrefix(info_->getFinalConfigFileName()) + + ".constraintForces"; + // create ConstraintWriter - constraintWriter_ = new ConstraintWriter(info_, constraintOutputFile_.c_str()); + constraintWriter_ = new ConstraintWriter(info_, + constraintOutputFile_.c_str()); if (!constraintWriter_){ sprintf(painCave.errMsg, "Failed to create ConstraintWriter\n"); @@ -102,7 +109,6 @@ namespace OpenMD { constraints.push_back(consPair); } } - constraintWriter_->writeConstraintForces(constraints); currConstraintTime_ += constraintTime_; } @@ -217,13 +223,14 @@ namespace OpenMD { RealType rabsq = consPair->getConsDistSquare(); RealType diffsq = rabsq - pabsq; + // the original rattle code from alan tidesley if (fabs(diffsq) > (consTolerance_ * rabsq * 2)){ Vector3d oldPosA = consElem1->getPrevPos(); Vector3d oldPosB = consElem2->getPrevPos(); - Vector3d rab = oldPosA - oldPosB; + Vector3d rab = oldPosA - oldPosB; currentSnapshot_->wrapVector(rab);