--- branches/development/src/nonbonded/InteractionManager.cpp 2011/06/21 06:34:35 1586 +++ branches/development/src/nonbonded/InteractionManager.cpp 2011/07/08 20:25:32 1587 @@ -271,6 +271,7 @@ namespace OpenMD { } void InteractionManager::setCutoffRadius(RealType rcut) { + electrostatic_->setCutoffRadius(rcut); eam_->setCutoffRadius(rcut); } @@ -283,6 +284,9 @@ namespace OpenMD { if (!initialized_) initialize(); + // excluded interaction, so just return + if (idat.excluded) return; + set::iterator it; for (it = interactions_[ idat.atypes ].begin(); @@ -314,26 +318,17 @@ namespace OpenMD { void InteractionManager::doPair(InteractionData idat){ if (!initialized_) initialize(); - + set::iterator it; for (it = interactions_[ idat.atypes ].begin(); - it != interactions_[ idat.atypes ].end(); ++it) - (*it)->calcForce(idat); - - return; - } + it != interactions_[ idat.atypes ].end(); ++it) { - void InteractionManager::doSkipCorrection(InteractionData idat){ + // electrostatics still has to worry about indirect + // contributions from excluded pairs of atoms: - if (!initialized_) initialize(); - - set::iterator it; - - for (it = interactions_[ idat.atypes ].begin(); - it != interactions_[ idat.atypes ].end(); ++it){ - if ((*it)->getFamily() == ELECTROSTATIC_FAMILY) { - dynamic_cast(*it)->calcSkipCorrection(idat); + if (!idat.excluded || (*it)->getFamily() == ELECTROSTATIC_FAMILY) { + (*it)->calcForce(idat); } }