Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/boundary.cpp

    r1f91f4 ra5028f  
    4040#include "LinearAlgebra/Plane.hpp"
    4141#include "LinearAlgebra/RealSpaceMatrix.hpp"
     42#include "RandomNumbers/RandomNumberGeneratorFactory.hpp"
     43#include "RandomNumbers/RandomNumberGenerator.hpp"
    4244#include "Box.hpp"
    4345
     
    831833
    832834  // initialize seed of random number generator to current time
    833   srand ( time(NULL) );
     835  RandomNumberGenerator &random = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator();
     836  const double rng_min = random.min();
     837  const double rng_max = random.max();
     838  //srand ( time(NULL) );
    834839
    835840  // go over [0,1]^3 filler grid
     
    841846        // create molecule random translation vector ...
    842847        for (int i=0;i<NDIM;i++)
    843           FillerTranslations[i] = RandomMolDisplacement*(rand()/(RAND_MAX/2.) - 1.);
     848          FillerTranslations[i] = RandomMolDisplacement*(random()/((rng_max-rng_min)/2.) - 1.);
    844849        DoLog(2) && (Log() << Verbose(2) << "INFO: Current Position is " << CurrentPosition << "+" << FillerTranslations << "." << endl);
    845850
     
    851856        if (DoRandomRotation)
    852857          for (int i=0;i<NDIM;i++)
    853             phi[i] = (rand()/RAND_MAX)*(2.*M_PI);
     858            phi[i] = (random()/(rng_max-rng_min))*(2.*M_PI);
    854859
    855860        for(molecule::const_iterator iter = filler->begin(); iter !=filler->end();++iter){
     
    857862          // create atomic random translation vector ...
    858863          for (int i=0;i<NDIM;i++)
    859             AtomTranslations[i] = RandomAtomDisplacement*(rand()/(RAND_MAX/2.) - 1.);
     864            AtomTranslations[i] = RandomAtomDisplacement*(random()/((rng_max-rng_min)/2.) - 1.);
    860865
    861866          // ... and rotation matrix
     
    939944    molecule *&Filling,
    940945    double RandomAtomDisplacement,
    941     RealSpaceMatrix &Rotations
     946    RealSpaceMatrix &Rotations,
     947    RandomNumberGenerator &random
    942948    )
    943949{
     950  const double rng_min = random.min();
     951  const double rng_max = random.max();
     952
    944953  Vector AtomTranslations;
    945954  for(molecule::iterator miter = Filling->begin(); miter != Filling->end(); ++miter) {
     
    949958    // create atomic random translation vector ...
    950959    for (int i=0;i<NDIM;i++)
    951       AtomTranslations[i] = RandomAtomDisplacement*(rand()/(RAND_MAX/2.) - 1.);
     960      AtomTranslations[i] = RandomAtomDisplacement*(random()/((rng_max-rng_min)/2.) - 1.);
    952961    (*miter)->setPosition((*miter)->getPosition() + AtomTranslations);
    953962  }
     
    10901099
    10911100  // initialize seed of random number generator to current time
    1092   srand ( time(NULL) );
     1101  RandomNumberGenerator &random = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator();
     1102  const double rng_min = random.min();
     1103  const double rng_max = random.max();
     1104  //srand ( time(NULL) );
    10931105
    10941106  // go over [0,1]^3 filler grid
     
    10991111        CurrentPosition = M * Vector((double)n[0]/(double)N[0], (double)n[1]/(double)N[1], (double)n[2]/(double)N[2]);
    11001112        // create molecule random translation vector ...
    1101         for (int i=0;i<NDIM;i++)
    1102           FillerTranslations[i] = RandomMolDisplacement*(rand()/(RAND_MAX/2.) - 1.);
     1113        for (int i=0;i<NDIM;i++) // have the random values [-1,1]*RandomMolDisplacement
     1114          FillerTranslations[i] = RandomMolDisplacement*(random()/((rng_max-rng_min)/2.) - 1.);
    11031115        DoLog(2) && (Log() << Verbose(2) << "INFO: Current Position is " << CurrentPosition << "+" << FillerTranslations << "." << endl);
    11041116
     
    11301142          // fill!
    11311143          Filling = filler->CopyMolecule();
    1132           RandomizeMoleculePositions(Filling, RandomAtomDisplacement, Rotations);
     1144          RandomizeMoleculePositions(Filling, RandomAtomDisplacement, Rotations, random);
    11331145          // translation
    11341146          Filling->Translate(&Inserter);
     
    11681180    else
    11691181      Rotations.setIdentity();
    1170     RandomizeMoleculePositions(filler, RandomAtomDisplacement, Rotations);
     1182    RandomizeMoleculePositions(filler, RandomAtomDisplacement, Rotations, random);
    11711183    // translation
    11721184    filler->Translate(&firstInserter);
Note: See TracChangeset for help on using the changeset viewer.