--- trunk/OOPSE/libmdtools/mpiSimulation.cpp 2003/04/03 20:21:54 447 +++ trunk/OOPSE/libmdtools/mpiSimulation.cpp 2004/04/22 03:29:30 1129 @@ -1,8 +1,8 @@ #ifdef IS_MPI #include -#include -#include -#include +#include +#include +#include #include #include "mpiSimulation.hpp" @@ -10,8 +10,6 @@ #include "fortranWrappers.hpp" #include "randomSPRNG.hpp" -#define BASE_SEED 123456789 - mpiSimulation* mpiSim; mpiSimulation::mpiSimulation(SimInfo* the_entryPlug) @@ -42,10 +40,8 @@ mpiSimulation::~mpiSimulation(){ } -int* mpiSimulation::divideLabor( void ){ +void mpiSimulation::divideLabor( ){ - int* globalIndex; - int nComponents; MoleculeStamp** compStamps; randomSPRNG *myRandom; @@ -59,17 +55,13 @@ int* mpiSimulation::divideLabor( void ){ int old_atoms, add_atoms, new_atoms; int nTarget; - int molIndex, atomIndex, compIndex, compStart; + int molIndex, atomIndex; int done; - int nLocal, molLocal; int i, j, loops, which_proc, nmol_local, natoms_local; int nmol_global, natoms_global; - int local_index, index; - int smallDiff, bigDiff; - int baseSeed = BASE_SEED; + int local_index; + int baseSeed = entryPlug->getSeed(); - int testSum; - nComponents = entryPlug->nComponents; compStamps = entryPlug->compStamps; componentsNmol = entryPlug->componentsNmol; @@ -279,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); - return globalIndex; + 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; + } + }