# | 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 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) { |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |