ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/restraints/RestraintForceManager.cpp
(Generate patch)

Comparing trunk/src/restraints/RestraintForceManager.cpp (file contents):
Revision 1973 by gezelter, Thu Mar 6 19:34:22 2014 UTC vs.
Revision 2071 by gezelter, Sat Mar 7 21:41:51 2015 UTC

# Line 225 | Line 225 | namespace OpenMD {
225          evaluator.loadScriptString(objectSelection);
226          seleMan.setSelectionSet(evaluator.evaluate());        
227          int selectionCount = seleMan.getSelectionCount();
228 <        
228 >
229 > #ifdef IS_MPI    
230 >        MPI_Allreduce(MPI_IN_PLACE, &selectionCount, 1, MPI_INT, MPI_SUM,
231 >                      MPI_COMM_WORLD);
232 > #endif
233 >                
234          sprintf(painCave.errMsg,
235                  "Restraint Info: The specified restraint objectSelection,\n"
236                  "\t\t%s\n"
# Line 314 | Line 319 | namespace OpenMD {
319    void RestraintForceManager::calcForces(){
320  
321      ForceManager::calcForces();    
322 <    RealType restPot_local, restPot;
322 >    RealType restPot(0.0);
323  
324 <    restPot_local = doRestraints(1.0);
324 >    restPot = doRestraints(1.0);
325  
326   #ifdef IS_MPI    
327 <    MPI_Allreduce(&restPot_local, &restPot, 1,
328 <                  MPI_REALTYPE, MPI_SUM, MPI_COMM_WORLD);
324 < #else
325 <    restPot = restPot_local;
327 >    MPI_Allreduce(MPI_IN_PLACE, &restPot, 1, MPI_REALTYPE, MPI_SUM,
328 >                  MPI_COMM_WORLD);
329   #endif
330 +
331      currSnapshot_ = info_->getSnapshotManager()->getCurrentSnapshot();
328    RealType pot = currSnapshot_->getLongRangePotential();
329    pot += restPot;
330    currSnapshot_->setLongRangePotential(pot);
332      currSnapshot_->setRestraintPotential(restPot);
333  
334      //write out forces and current positions of restrained molecules    
# Line 341 | Line 342 | namespace OpenMD {
342      std::vector<Molecule*>::const_iterator rm;
343      GenericData* data;
344      Molecule::IntegrableObjectIterator ioi;
345 <    MolecularRestraint* mRest;
345 >    MolecularRestraint* mRest = NULL;
346      StuntDouble* sd;
347  
348      std::vector<StuntDouble*>::const_iterator ro;
349 <    ObjectRestraint* oRest;
349 >    ObjectRestraint* oRest = NULL;
350  
351      std::map<int, Restraint::RealPair> restInfo;
352  
# Line 411 | Line 412 | namespace OpenMD {
412          index++;
413        }
414        
415 <      unscaledPotential_ += mRest->getUnscaledPotential();
415 >      unscaledPotential_ += mRest->getUnscaledPotential();      
416  
416      restInfo = mRest->getRestraintInfo();
417
417        // only collect data on restraints that we're going to print:
418        if (mRest->getPrintRestraint())
419 +        restInfo = mRest->getRestraintInfo();
420          restInfo_.push_back(restInfo);
421      }
422  
# Line 476 | Line 476 | namespace OpenMD {
476  
477        unscaledPotential_ += oRest->getUnscaledPotential();
478  
479      restInfo = oRest->getRestraintInfo();
480
479        // only collect data on restraints that we're going to print:
480        if (oRest->getPrintRestraint())
481 +        restInfo = oRest->getRestraintInfo();      
482          restInfo_.push_back(restInfo);
483      }
484  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines