--- trunk/OOPSE/libmdtools/mpiSimulation.cpp 2003/10/28 16:03:37 829 +++ trunk/OOPSE/libmdtools/mpiSimulation.cpp 2004/04/22 03:29:30 1129 @@ -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,35 @@ int* mpiSimulation::divideLabor( void ){ mpiPlug->myNMol = nmol_local; mpiPlug->myNlocal = natoms_local; - globalIndex = new int[mpiPlug->myNlocal]; + globalAtomIndex.resize(mpiPlug->myNlocal); + globalToLocalAtom.resize(mpiPlug->nAtomsGlobal); 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); + globalToLocalMol.resize(mpiPlug->nMolGlobal); + + 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; }