Changeset a5028f
- Timestamp:
- Feb 3, 2011, 9:59:58 AM (14 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- 5817ef
- Parents:
- 63839f
- git-author:
- Frederik Heber <heber@…> (01/07/11 15:38:52)
- git-committer:
- Frederik Heber <heber@…> (02/03/11 09:59:58)
- Location:
- src
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
src/LinearAlgebra/RealSpaceMatrix.cpp
r63839f ra5028f 28 28 #include "LinearAlgebra/Vector.hpp" 29 29 #include "LinearAlgebra/VectorContent.hpp" 30 #include "RandomNumbers/RandomNumberGeneratorFactory.hpp" 31 #include "RandomNumbers/RandomNumberGenerator.hpp" 30 32 31 33 #include <gsl/gsl_blas.h> … … 125 127 { 126 128 double phi[NDIM]; 129 RandomNumberGenerator &random = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator(); 130 const double rng_min = random.min(); 131 const double rng_max = random.max(); 132 127 133 128 134 for (int i=0;i<NDIM;i++) { 129 phi[i] = rand()/(RAND_MAX/(2.*M_PI)); 135 phi[i] = (random()/(rng_max-rng_min))*(2.*M_PI); 136 std::cout << "Random angle is " << phi[i] << std::endl; 130 137 } 131 138 -
src/SubspaceFactorizer.cpp
r63839f ra5028f 36 36 #include "LinearAlgebra/Subspace.hpp" 37 37 #include "LinearAlgebra/VectorContent.hpp" 38 39 #include "RandomNumbers/RandomNumberGeneratorFactory.hpp" 40 #include "RandomNumbers/RandomNumberGenerator.hpp" 38 41 39 42 typedef std::set<std::set<size_t> > SetofIndexSets; … … 203 206 } 204 207 208 // RandomNumberGenerator &random = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator(); 209 // const double rng_min = rng->min(); 210 // const double rng_max = rng->max(); 205 211 MatrixContent *matrix = new MatrixContent(matrixdimension,matrixdimension); 206 212 matrix->setZero(); 207 213 for (size_t i=0; i<matrixdimension ; i++) { 208 214 for (size_t j=0; j<= i; ++j) { 209 //const double value = 10. * rand () / (double)RAND_MAX;215 //const double value = 10. * random() / (rng_max-rng_min); 210 216 //const double value = i==j ? 2. : 1.; 211 217 if (i==j) -
src/Thermostats/Langevin.cpp
r63839f 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 -
src/boundary.cpp
r63839f ra5028f 40 40 #include "LinearAlgebra/Plane.hpp" 41 41 #include "LinearAlgebra/RealSpaceMatrix.hpp" 42 #include "RandomNumbers/RandomNumberGeneratorFactory.hpp" 43 #include "RandomNumbers/RandomNumberGenerator.hpp" 42 44 #include "Box.hpp" 43 45 … … 831 833 832 834 // 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) ); 834 839 835 840 // go over [0,1]^3 filler grid … … 841 846 // create molecule random translation vector ... 842 847 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.); 844 849 DoLog(2) && (Log() << Verbose(2) << "INFO: Current Position is " << CurrentPosition << "+" << FillerTranslations << "." << endl); 845 850 … … 851 856 if (DoRandomRotation) 852 857 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); 854 859 855 860 for(molecule::const_iterator iter = filler->begin(); iter !=filler->end();++iter){ … … 857 862 // create atomic random translation vector ... 858 863 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.); 860 865 861 866 // ... and rotation matrix … … 939 944 molecule *&Filling, 940 945 double RandomAtomDisplacement, 941 RealSpaceMatrix &Rotations 946 RealSpaceMatrix &Rotations, 947 RandomNumberGenerator &random 942 948 ) 943 949 { 950 const double rng_min = random.min(); 951 const double rng_max = random.max(); 952 944 953 Vector AtomTranslations; 945 954 for(molecule::iterator miter = Filling->begin(); miter != Filling->end(); ++miter) { … … 949 958 // create atomic random translation vector ... 950 959 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.); 952 961 (*miter)->setPosition((*miter)->getPosition() + AtomTranslations); 953 962 } … … 1090 1099 1091 1100 // 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) ); 1093 1105 1094 1106 // go over [0,1]^3 filler grid … … 1099 1111 CurrentPosition = M * Vector((double)n[0]/(double)N[0], (double)n[1]/(double)N[1], (double)n[2]/(double)N[2]); 1100 1112 // 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.); 1103 1115 DoLog(2) && (Log() << Verbose(2) << "INFO: Current Position is " << CurrentPosition << "+" << FillerTranslations << "." << endl); 1104 1116 … … 1130 1142 // fill! 1131 1143 Filling = filler->CopyMolecule(); 1132 RandomizeMoleculePositions(Filling, RandomAtomDisplacement, Rotations );1144 RandomizeMoleculePositions(Filling, RandomAtomDisplacement, Rotations, random); 1133 1145 // translation 1134 1146 Filling->Translate(&Inserter); … … 1168 1180 else 1169 1181 Rotations.setIdentity(); 1170 RandomizeMoleculePositions(filler, RandomAtomDisplacement, Rotations );1182 RandomizeMoleculePositions(filler, RandomAtomDisplacement, Rotations, random); 1171 1183 // translation 1172 1184 filler->Translate(&firstInserter); -
src/ellipsoid.cpp
r63839f ra5028f 36 36 #include "LinearAlgebra/RealSpaceMatrix.hpp" 37 37 #include "CodePatterns/Verbose.hpp" 38 39 #include "RandomNumbers/RandomNumberGeneratorFactory.hpp" 40 #include "RandomNumbers/RandomNumberGenerator.hpp" 38 41 39 42 /** Determines squared distance for a given point \a x to surface of ellipsoid. … … 258 261 } 259 262 263 RandomNumberGenerator &random = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator("mt19937", "uniform_int"); 264 // check that random number generator's bounds are ok 265 ASSERT(random.min() == 0, 266 "PickRandomNeighbouredPointSet: Chosen RandomNumberGenerator's min " 267 +toString(random.min())+" is not 0!"); 268 ASSERT(random.max() >= LC->N[0], 269 "PickRandomNeighbouredPointSet: Chosen RandomNumberGenerator's max " 270 +toString(random.max())+" is too small"+toString(LC->N[0]) 271 +" for axis 0!"); 272 ASSERT(random.max() >= LC->N[1], 273 "PickRandomNeighbouredPointSet: Chosen RandomNumberGenerator's max " 274 +toString(random.max())+" is too small"+toString(LC->N[1]) 275 +" for axis 1!"); 276 ASSERT(random.max() >= LC->N[2], 277 "PickRandomNeighbouredPointSet: Chosen RandomNumberGenerator's max " 278 +toString(random.max())+" is too small"+toString(LC->N[2]) 279 +" for axis 2!"); 280 260 281 do { 261 282 for(int i=0;i<NDIM;i++) // pick three random indices 262 LC->n[i] = ( rand() % LC->N[i]);283 LC->n[i] = ((int)random() % LC->N[i]); 263 284 DoLog(2) && (Log() << Verbose(2) << "INFO: Center cell is " << LC->n[0] << ", " << LC->n[1] << ", " << LC->n[2] << " ... "); 264 285 // get random cell … … 293 314 PickedAtomNrs.clear(); 294 315 do { 295 index = ( rand() % PointsLeft);316 index = (((int)random()) % PointsLeft); 296 317 current = PickedAtomNrs.find(index); // not present? 297 318 if (current == PickedAtomNrs.end()) { … … 358 379 } 359 380 381 RandomNumberGenerator &random = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator("mt19937", "uniform_int"); 382 const double rng_min = random.min(); 383 const double rng_max = random.max(); 360 384 if (List != NULL) 361 385 for (PointMap::iterator Runner = List->begin(); Runner != List->end(); Runner++) { 362 386 threshold = 1. - (double)(PointsToPick - PointsPicked)/(double)PointsLeft; 363 value = (double)rand ()/(double)RAND_MAX;387 value = (double)random()/(double)(rng_max-rng_min); 364 388 //Log() << Verbose(3) << "Current node is " << *Runner->second->node << " with " << value << " ... " << threshold << ": "; 365 389 if (value > threshold) { -
src/unittests/SubspaceFactorizerUnitTest.cpp
r63839f ra5028f 39 39 #include "LinearAlgebra/VectorContent.hpp" 40 40 41 #include "RandomNumbers/RandomNumberGeneratorFactory.hpp" 42 #include "RandomNumbers/RandomNumberGenerator.hpp" 43 41 44 #include "SubspaceFactorizerUnitTest.hpp" 42 45 … … 49 52 50 53 void SubspaceFactorizerUnittest::setUp(){ 54 // RandomNumberGenerator &random = RandomNumberGeneratorFactory::getInstance().makeRandomNumberGenerator(); 55 // const double rng_min = rng->min(); 56 // const double rng_max = rng->max(); 51 57 matrix = new MatrixContent(matrixdimension,matrixdimension); 52 58 matrix->setZero(); 53 59 for (size_t i=0; i<matrixdimension ; i++) { 54 60 for (size_t j=0; j<= i; ++j) { 55 //const double value = 10. * rand () / (double)RAND_MAX;61 //const double value = 10. * random() / (rng_max-rng_min); 56 62 //const double value = i==j ? 2. : 1.; 57 63 if (i==j)
Note:
See TracChangeset
for help on using the changeset viewer.