--- trunk/mdtools/md_code/randomSPRNG.cpp 2003/01/02 20:14:08 221 +++ trunk/mdtools/md_code/randomSPRNG.cpp 2003/01/03 22:04:50 223 @@ -3,6 +3,8 @@ #include "randomSPRNG.hpp" #include "simError.h" +#include "sprng.h" + #ifdef IS_MPI #include "mpiSimulation.hpp" #endif @@ -10,26 +12,31 @@ int randomSPRNG::nStreamsInitialized; /* randomStreamSPRNF creates a new SPRNG stream for random numbers */ -int randomSPRNG::nStreamsInitialized; +int randomSPRNG::nStreamsInitialized = 0; randomSPRNG::randomSPRNG(iseed){ -#ifdef IS_MPI + int newSeed; nStreamsInitialized++; - //Fix this -#error "Fix instance of mpiSimulation in randomSPRNG" - nSPRNGStreams = getnumberProcessors(); - myStreamNumber = nStreamsInitialized*(getMyNode() + nSPRNGStreams); + newSeed = abs(iseed) + nStreamsInitialized; + if( newSeed < 0 ) newSeed = abs( newSeed ); +#ifdef IS_MPI + nSPRNGStreams = mpiSim->getNumberProcessors(); + + myStreamNumber = mpiSim->getMyNode(); + + + #else - nStreamsInitialized++; + nSPRNGStreams = 1; - myStreamNumber = nSPRNGStreams; + myStreamNumber = nStreamsInitialized; #endif thisStream = init_sprng(GTYPE,myStreamNumber,nSPRNGStreams, - iseed,SPRNG_DEFAULT); + newSeed,SPRNG_DEFAULT); } randomSPRNG::~randomSPRNG(){ @@ -41,28 +48,16 @@ double randomSPRNG::getRandom(){ double randomSPRNG::getRandom(){ - double ranNum; - ranNum = sprng(thisStream); - return ranNum; + return sprng(thisStream); } // Gaussian SPRNG class... -gaussianSPRNG::gaussianSPRNG() : randomSPRNG() -{ -} - -gaussianSPRNG::~gaussianSPRNG() : ~randomSPRNG() -{ -} - double gaussianSPRNG::getGaussian(){ double ranNum1; double ranNum2; double gaussianNumber; - double R1; - double R2; ranNum1 = getRandom(); ranNum2 = getRandom();