message<<"ShakeCluster::addAtom: "<<"atom "<<id<<" has more than 3 constraints!."<<std::endl;
throwOpenMMException(message.str());
}
if(_size>0&&dist!=_distance){
std::stringstreammessage;
message<<"ShakeCluster::addAtom: "<<"atom "<<id<<" has different constraint distances: "<<dist<<" and "<<_distance<<std::endl;
throwOpenMMException(message.str());
}
if(_size>0&&invMass!=_peripheralInvMass){
std::stringstreammessage;
message<<"ShakeCluster::addAtom: "<<" constrainted atoms associated w/ atom "<<id<<" have different masses: "<<invMass<<" and "<<_peripheralInvMass<<std::endl;
throwOpenMMException(message.str());
}
_peripheralID[_size++]=id;
_distance=dist;
_peripheralInvMass=invMass;
}
};
/**
/**
*
*
* Constructor
* Constructor
...
@@ -496,7 +461,6 @@ int BrookShakeAlgorithm::_setShakeStreams( const std::vector<double>& masses, co
...
@@ -496,7 +461,6 @@ int BrookShakeAlgorithm::_setShakeStreams( const std::vector<double>& masses, co
// Find clusters consisting of a central atom with up to three peripheral atoms.
// Find clusters consisting of a central atom with up to three peripheral atoms.
message<<"ShakeCluster::addAtom: "<<"atom "<<id<<" has more than 3 constraints!."<<std::endl;
throwOpenMMException(message.str());
}
if(_size>0&&dist!=_distance){
std::stringstreammessage;
message<<"ShakeCluster::addAtom: "<<"atom "<<id<<" has different constraint distances: "<<dist<<" and "<<_distance<<std::endl;
throwOpenMMException(message.str());
}
if(_size>0&&invMass!=_peripheralInvMass){
std::stringstreammessage;
message<<"ShakeCluster::addAtom: "<<" constrainted atoms associated w/ atom "<<id<<" have different masses: "<<invMass<<" and "<<_peripheralInvMass<<std::endl;
throwOpenMMException(message.str());
}
_peripheralID[_size++]=id;
_distance=dist;
_peripheralInvMass=invMass;
}
};
/**
/**
*
*
* Encapsulates stochastic dynamics algorithm
* Encapsulates stochastic dynamics algorithm
...
@@ -260,6 +297,19 @@ class BrookShakeAlgorithm : public BrookCommon {
...
@@ -260,6 +297,19 @@ class BrookShakeAlgorithm : public BrookCommon {