Changes in src/Thermostats/Langevin.cpp [ad011c:a5028f]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Thermostats/Langevin.cpp
rad011c ra5028f 19 19 #include "CodePatterns/Log.hpp" 20 20 #include "ThermoStatContainer.hpp" 21 22 #include "RandomNumbers/RandomNumberGeneratorFactory.hpp" 23 #include "RandomNumbers/RandomNumberGenerator.hpp" 21 24 22 25 Langevin::Langevin(double _TempFrequency,double _alpha) : … … 73 76 double Langevin::doScaleAtoms(unsigned int step,double ActualTemp,ForwardIterator begin, ForwardIterator end){ 74 77 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(); 75 81 double ekin=0; 76 82 for(ForwardIterator iter=begin;iter!=end;++iter){ … … 79 85 if ((*iter)->FixedIon == 0) { // even FixedIon moves, only not by other's forces 80 86 // 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.)) { 82 88 DoLog(3) && (Log() << Verbose(3) << "Particle " << (**iter) << " was hit (sigma " << sigma << "): " << U.Norm() << " -> "); 83 89 // 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.