Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Thermostats/Langevin.cpp

    rad011c ra5028f  
    1919#include "CodePatterns/Log.hpp"
    2020#include "ThermoStatContainer.hpp"
     21
     22#include "RandomNumbers/RandomNumberGeneratorFactory.hpp"
     23#include "RandomNumbers/RandomNumberGenerator.hpp"
    2124
    2225Langevin::Langevin(double _TempFrequency,double _alpha) :
     
    7376double Langevin::doScaleAtoms(unsigned int step,double ActualTemp,ForwardIterator begin, ForwardIterator end){
    7477  DoLog(2) && (Log() << Verbose(2) <<  "Applying Langevin thermostat..." << endl);
     78  RandomNumberGenerator &random = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator();
     79  const double rng_min = random.min();
     80  const double rng_max = random.max();
    7581  double ekin=0;
    7682  for(ForwardIterator iter=begin;iter!=end;++iter){
     
    7985    if ((*iter)->FixedIon == 0) { // even FixedIon moves, only not by other's forces
    8086      // throw a dice to determine whether it gets hit by a heat bath particle
    81       if (((((rand()/(double)RAND_MAX))*TempFrequency) < 1.)) {
     87      if (((((random()/(rng_max-rng_min)))*TempFrequency) < 1.)) {
    8288        DoLog(3) && (Log() << Verbose(3) << "Particle " << (**iter) << " was hit (sigma " << sigma << "): " << U.Norm() << " -> ");
    8389        // pick three random numbers from a Boltzmann distribution around the desired temperature T for each momenta axis
Note: See TracChangeset for help on using the changeset viewer.