--- trunk/OOPSE/libmdtools/mpiSimulation.cpp 2003/09/25 19:27:15 787 +++ trunk/OOPSE/libmdtools/mpiSimulation.cpp 2004/04/14 15:37:41 1108 @@ -1,8 +1,8 @@ #ifdef IS_MPI #include -#include -#include -#include +#include +#include +#include #include #include "mpiSimulation.hpp" @@ -40,9 +40,7 @@ mpiSimulation::~mpiSimulation(){ } -int* mpiSimulation::divideLabor( void ){ - - int* globalIndex; +void mpiSimulation::divideLabor( ){ int nComponents; MoleculeStamp** compStamps; @@ -76,7 +74,6 @@ int* mpiSimulation::divideLabor( void ){ mpiPlug->nSRIGlobal = entryPlug->n_SRI; mpiPlug->nMolGlobal = entryPlug->n_mol; - myRandom = new randomSPRNG( baseSeed ); a = 3.0 * (double)mpiPlug->nMolGlobal / (double)mpiPlug->nAtomsGlobal; @@ -274,16 +271,32 @@ int* mpiSimulation::divideLabor( void ){ mpiPlug->myNMol = nmol_local; mpiPlug->myNlocal = natoms_local; - globalIndex = new int[mpiPlug->myNlocal]; + globalAtomIndex.resize(mpiPlug->myNlocal); local_index = 0; for (i = 0; i < mpiPlug->nAtomsGlobal; i++) { if (AtomToProcMap[i] == mpiPlug->myNode) { - globalIndex[local_index] = i; + globalAtomIndex[local_index] = i; + + globalToLocalAtom[i] = local_index; local_index++; + } + else + globalToLocalAtom[i] = -1; } + + globalMolIndex.resize(mpiPlug->myNMol); + local_index = 0; + for (i = 0; i < mpiPlug->nMolGlobal; i++) { + if (MolToProcMap[i] == mpiPlug->myNode) { + globalMolIndex[local_index] = i; + globalToLocalMol[i] = local_index; + local_index++; + } + else + globalToLocalMol[i] = -1; + } - return globalIndex; }