--- trunk/src/brains/SimInfo.cpp 2005/01/12 22:41:40 246 +++ trunk/src/brains/SimInfo.cpp 2005/02/13 21:18:27 331 @@ -56,6 +56,7 @@ #include "UseTheForce/notifyCutoffs_interface.h" #include "utils/MemoryUtils.hpp" #include "utils/simError.h" +#include "selection/SelectionManager.hpp" #ifdef IS_MPI #include "UseTheForce/mpiComponentPlan.h" @@ -72,7 +73,7 @@ SimInfo::SimInfo(std::vector >::iterator i; @@ -108,7 +109,7 @@ SimInfo::SimInfo(std::vectorgetNCutoffGroups(); + int nRigidBodiesInStamp = molStamp->getNRigidBodies(); for (int j=0; j < nRigidBodiesInStamp; j++) { rbStamp = molStamp->getRigidBody(j); @@ -137,7 +138,9 @@ SimInfo::SimInfo(std::vectorselectAll(); } SimInfo::~SimInfo() { @@ -148,7 +151,7 @@ SimInfo::~SimInfo() { delete sman_; delete simParams_; delete forceField_; - + delete selectMan_; } int SimInfo::getNGlobalConstraints() { @@ -751,9 +754,7 @@ double SimInfo::calcMaxCutoffRadius() { return maxCutoffRadius; } -void SimInfo::setupCutoff() { - double rcut_; //cutoff radius - double rsw_; //switching radius +void SimInfo::getCutoff(double& rcut, double& rsw) { if (fInfo_.SIM_uses_Charges | fInfo_.SIM_uses_Dipoles | fInfo_.SIM_uses_RF) { @@ -764,9 +765,9 @@ void SimInfo::setupCutoff() { "\tfor the cutoffRadius.\n"); painCave.isFatal = 0; simError(); - rcut_ = 15.0; + rcut = 15.0; } else{ - rcut_ = simParams_->getRcut(); + rcut = simParams_->getRcut(); } if (!simParams_->haveRsw()){ @@ -776,9 +777,9 @@ void SimInfo::setupCutoff() { "\t0.95 * cutoffRadius for the switchingRadius\n"); painCave.isFatal = 0; simError(); - rsw_ = 0.95 * rcut_; + rsw = 0.95 * rcut; } else{ - rsw_ = simParams_->getRsw(); + rsw = simParams_->getRsw(); } } else { @@ -786,20 +787,23 @@ void SimInfo::setupCutoff() { //meta-data file, the maximum cutoff radius calculated from forcefiled will be used if (simParams_->haveRcut()) { - rcut_ = simParams_->getRcut(); + rcut = simParams_->getRcut(); } else { //set cutoff radius to the maximum cutoff radius based on atom types in the whole system - rcut_ = calcMaxCutoffRadius(); + rcut = calcMaxCutoffRadius(); } if (simParams_->haveRsw()) { - rsw_ = simParams_->getRsw(); + rsw = simParams_->getRsw(); } else { - rsw_ = rcut_; + rsw = rcut; } } - +} + +void SimInfo::setupCutoff() { + getCutoff(rcut_, rsw_); double rnblist = rcut_ + 1; // skin of neighbor list //Pass these cutoff radius etc. to fortran. This function should be called once and only once @@ -831,6 +835,11 @@ void SimInfo::setSnapshotManager(SnapshotManager* sman } void SimInfo::setSnapshotManager(SnapshotManager* sman) { + if (sman_ == sman_) { + return; + } + + delete sman_; sman_ = sman; Molecule* mol;