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

Comparing trunk/src/brains/SimCreator.cpp (file contents):
Revision 1277 by gezelter, Mon Jul 14 12:35:58 2008 UTC vs.
Revision 1313 by gezelter, Wed Oct 22 20:01:49 2008 UTC

# Line 108 | Line 108 | namespace oopse {
108        } else {
109          //get stream size
110          commStatus = MPI_Bcast(&streamSize, 1, MPI_LONG, masterNode, MPI_COMM_WORLD);  
111 <                
111 >
112          char* buf = new char[streamSize];
113          assert(buf);
114                  
# Line 116 | Line 116 | namespace oopse {
116          commStatus = MPI_Bcast(buf, streamSize, MPI_CHAR, masterNode, MPI_COMM_WORLD);
117                  
118          ppStream.str(buf);
119 <        delete buf;
119 >        delete [] buf;
120  
121        }
122   #endif            
# Line 263 | Line 263 | namespace oopse {
263        ++lineNo;
264        std::string line = trimLeftCopy(buffer);
265        i = CaseInsensitiveFind(line, "<OOPSE");
266 <      if (i == string::npos) {
266 >      if (static_cast<size_t>(i) == string::npos) {
267          sprintf(painCave.errMsg,
268                  "SimCreator: File: %s is not an OOPSE file!\n",
269                  mdFileName.c_str());
# Line 393 | Line 393 | namespace oopse {
393      //responsibility to LocalIndexManager.
394      setGlobalIndex(info);
395      
396 <    //Although addExcludePairs is called inside SimInfo's addMolecule
396 >    //Although addInteractionPairs is called inside SimInfo's addMolecule
397      //method, at that point atoms don't have the global index yet
398      //(their global index are all initialized to -1).  Therefore we
399 <    //have to call addExcludePairs explicitly here. A way to work
399 >    //have to call addInteractionPairs explicitly here. A way to work
400      //around is that we can determine the beginning global indices of
401      //atoms before they get created.
402      SimInfo::MoleculeIterator mi;
403      Molecule* mol;
404      for (mol= info->beginMolecule(mi); mol != NULL; mol = info->nextMolecule(mi)) {
405 <      info->addExcludePairs(mol);
405 >      info->addInteractionPairs(mol);
406      }
407      
408      if (loadInitCoords)
# Line 722 | Line 722 | namespace oopse {
722      // to get the full globalGroupMembership array (We think).
723      // This would be prettier if we could use MPI_IN_PLACE like the MPI-2
724      // docs said we could.
725 <    std::vector<int> tmpGroupMembership(nGlobalAtoms, 0);
725 >    std::vector<int> tmpGroupMembership(info->getNGlobalAtoms(), 0);
726      MPI_Allreduce(&globalGroupMembership[0], &tmpGroupMembership[0], nGlobalAtoms,
727                    MPI_INT, MPI_SUM, MPI_COMM_WORLD);
728      info->setGlobalGroupMembership(tmpGroupMembership);
# Line 734 | Line 734 | namespace oopse {
734      std::vector<int> globalMolMembership(info->getNGlobalAtoms(), 0);
735      
736      for(mol = info->beginMolecule(mi); mol != NULL; mol = info->nextMolecule(mi)) {
737      
737        for(atom = mol->beginAtom(ai); atom != NULL; atom = mol->nextAtom(ai)) {
738          globalMolMembership[atom->getGlobalIndex()] = mol->getGlobalIndex();
739        }
740      }
741      
742   #ifdef IS_MPI
743 <    std::vector<int> tmpMolMembership(nGlobalAtoms, 0);
743 >    std::vector<int> tmpMolMembership(info->getNGlobalAtoms(), 0);
744      
745      MPI_Allreduce(&globalMolMembership[0], &tmpMolMembership[0], nGlobalAtoms,
746                    MPI_INT, MPI_SUM, MPI_COMM_WORLD);
# Line 767 | Line 766 | namespace oopse {
766      std::vector<int> numIntegrableObjectsPerMol = nIOPerMol;
767   #endif    
768  
769 < std::vector<int> startingIOIndexForMol(info->getNGlobalMolecules());
770 <
771 < int startingIndex = 0;
772 < for (int i = 0; i < info->getNGlobalMolecules(); i++) {
773 <  startingIOIndexForMol[i] = startingIndex;
774 <  startingIndex += numIntegrableObjectsPerMol[i];
775 < }
776 <
777 < std::vector<StuntDouble*> IOIndexToIntegrableObject(info->getNGlobalIntegrableObjects(), (StuntDouble*)NULL);
778 < for (mol = info->beginMolecule(mi); mol != NULL; mol = info->nextMolecule(mi)) {
769 >    std::vector<int> startingIOIndexForMol(info->getNGlobalMolecules());
770 >    
771 >    int startingIndex = 0;
772 >    for (int i = 0; i < info->getNGlobalMolecules(); i++) {
773 >      startingIOIndexForMol[i] = startingIndex;
774 >      startingIndex += numIntegrableObjectsPerMol[i];
775 >    }
776 >    
777 >    std::vector<StuntDouble*> IOIndexToIntegrableObject(info->getNGlobalIntegrableObjects(), (StuntDouble*)NULL);
778 >    for (mol = info->beginMolecule(mi); mol != NULL; mol = info->nextMolecule(mi)) {
779        int myGlobalIndex = mol->getGlobalIndex();
780        int globalIO = startingIOIndexForMol[myGlobalIndex];
781        for (StuntDouble* integrableObject = mol->beginIntegrableObject(ioi); integrableObject != NULL;
782             integrableObject = mol->nextIntegrableObject(ioi)) {
783 <            integrableObject->setGlobalIntegrableObjectIndex(globalIO);
784 <            IOIndexToIntegrableObject[globalIO] = integrableObject;
785 <            globalIO++;
783 >        integrableObject->setGlobalIntegrableObjectIndex(globalIO);
784 >        IOIndexToIntegrableObject[globalIO] = integrableObject;
785 >        globalIO++;
786        }
787      }
788 <
789 <  info->setIOIndexToIntegrableObject(IOIndexToIntegrableObject);
790 <  
788 >    
789 >    info->setIOIndexToIntegrableObject(IOIndexToIntegrableObject);
790 >    
791    }
792    
793    void SimCreator::loadCoordinates(SimInfo* info, const std::string& mdFileName) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines