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 1969 by gezelter, Wed Feb 26 14:14:50 2014 UTC vs.
Revision 2020 by gezelter, Mon Sep 22 19:18:35 2014 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"
237                  "\twill result in %d integrable objects being\n"
238                  "\trestrained.\n", objectSelection.c_str(), selectionCount);
239 +        painCave.severity = OPENMD_INFO;
240          painCave.isFatal = 0;
241          simError();                    
242  
# Line 313 | 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);
323 < #else
324 <    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();
332      RealType pot = currSnapshot_->getLongRangePotential();
333      pot += restPot;
# Line 391 | Line 396 | namespace OpenMD {
396  
397        std::vector<Vector3d> struc;
398        std::vector<Vector3d> forces;
399 +
400        
401        for(sd = (*rm)->beginIntegrableObject(ioi); sd != NULL;
402            sd = (*rm)->nextIntegrableObject(ioi)) {
# Line 409 | Line 415 | namespace OpenMD {
415          index++;
416        }
417        
418 <      unscaledPotential_ += mRest->getUnscaledPotential();
418 >      unscaledPotential_ += mRest->getUnscaledPotential();      
419  
414      restInfo = mRest->getRestraintInfo();
415
420        // only collect data on restraints that we're going to print:
421        if (mRest->getPrintRestraint())
422 +        restInfo = mRest->getRestraintInfo();
423          restInfo_.push_back(restInfo);
424      }
425  
# Line 451 | Line 456 | namespace OpenMD {
456        
457        // phew.  At this point, we should have the pointer to the
458        // correct Object restraint in the variable oRest.
454
459        oRest->setScaleFactor(scalingFactor);
460        
461        Vector3d pos = (*ro)->getPos();
# Line 475 | Line 479 | namespace OpenMD {
479  
480        unscaledPotential_ += oRest->getUnscaledPotential();
481  
478      restInfo = oRest->getRestraintInfo();
479
482        // only collect data on restraints that we're going to print:
483        if (oRest->getPrintRestraint())
484 +        restInfo = oRest->getRestraintInfo();      
485          restInfo_.push_back(restInfo);
486      }
487  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines