Changes in src/molecule_dynamics.cpp [a67d19:e138de]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/molecule_dynamics.cpp
ra67d19 re138de 207 207 doubles++; 208 208 if (doubles >0) 209 DoLog(2) && (Log() << Verbose(2) << "Found " << doubles << " Doubles." << endl);209 Log() << Verbose(2) << "Found " << doubles << " Doubles." << endl; 210 210 Free(&DoubleList); 211 211 // Log() << Verbose(2) << zeile1.str() << endl << zeile2.str() << endl; … … 249 249 Params.DoubleList[Params.DistanceList[Walker->nr]->begin()->second->nr]++; // increase this target's source count (>1? not injective) 250 250 Params.DistanceIterators[Walker->nr] = Params.DistanceList[Walker->nr]->begin(); // and remember which one we picked 251 DoLog(2) && (Log() << Verbose(2) << *Walker << " starts with distance " << Params.DistanceList[Walker->nr]->begin()->first << "." << endl);251 Log() << Verbose(2) << *Walker << " starts with distance " << Params.DistanceList[Walker->nr]->begin()->first << "." << endl; 252 252 } 253 253 }; … … 277 277 Params.DistanceIterators[Walker->nr] = NewBase; 278 278 OldPotential = Potential; 279 DoLog(3) && (Log() << Verbose(3) << "Found a new permutation, new potential is " << OldPotential << "." << endl);279 Log() << Verbose(3) << "Found a new permutation, new potential is " << OldPotential << "." << endl; 280 280 } 281 281 } … … 306 306 for (int i=mol->AtomCount; i--;) // now each single entry in the DoubleList should be <=1 307 307 if (Params.DoubleList[i] > 1) { 308 DoeLog(0) && (eLog()<< Verbose(0) << "Failed to create an injective PermutationMap!" << endl);309 performCriticalExit();310 } 311 DoLog(1) && (Log() << Verbose(1) << "done." << endl);308 eLog() << Verbose(0) << "Failed to create an injective PermutationMap!" << endl; 309 exit(1); 310 } 311 Log() << Verbose(1) << "done." << endl; 312 312 }; 313 313 … … 358 358 Params.PenaltyConstants[2] = 1e+7; // just a huge penalty 359 359 // generate the distance list 360 DoLog(1) && (Log() << Verbose(1) << "Allocating, initializting and filling the distance list ... " << endl);360 Log() << Verbose(1) << "Allocating, initializting and filling the distance list ... " << endl; 361 361 FillDistanceList(this, Params); 362 362 … … 365 365 366 366 // make the PermutationMap injective by checking whether we have a non-zero constants[2] term in it 367 DoLog(1) && (Log() << Verbose(1) << "Making the PermutationMap injective ... " << endl);367 Log() << Verbose(1) << "Making the PermutationMap injective ... " << endl; 368 368 MakeInjectivePermutation(this, Params); 369 369 Free(&Params.DoubleList); 370 370 371 371 // argument minimise the constrained potential in this injective PermutationMap 372 DoLog(1) && (Log() << Verbose(1) << "Argument minimising the PermutationMap." << endl);372 Log() << Verbose(1) << "Argument minimising the PermutationMap, at current potential " << OldPotential << " ... " << endl; 373 373 OldPotential = 1e+10; 374 374 round = 0; 375 375 do { 376 DoLog(2) && (Log() << Verbose(2) << "Starting round " << ++round << ", at current potential " << OldPotential << " ... " << endl);376 Log() << Verbose(2) << "Starting round " << ++round << " ... " << endl; 377 377 OlderPotential = OldPotential; 378 378 do { … … 424 424 } else { 425 425 Params.DistanceIterators[Runner->nr] = Rider; // if successful also move the pointer in the iterator list 426 DoLog(3) && (Log() << Verbose(3) << "Found a better permutation, new potential is " << Potential << " vs." << OldPotential << "." << endl);426 Log() << Verbose(3) << "Found a better permutation, new potential is " << Potential << " vs." << OldPotential << "." << endl; 427 427 OldPotential = Potential; 428 428 } 429 429 if (Potential > Params.PenaltyConstants[2]) { 430 DoeLog(1) && (eLog()<< Verbose(1) << "The two-step permutation procedure did not maintain injectivity!" << endl);430 eLog() << Verbose(0) << "ERROR: The two-step permutation procedure did not maintain injectivity!" << endl; 431 431 exit(255); 432 432 } 433 433 //Log() << Verbose(0) << endl; 434 434 } else { 435 DoeLog(1) && (eLog()<< Verbose(1) << *Runner << " was not the owner of " << *Sprinter << "!" << endl);435 eLog() << Verbose(0) << "ERROR: " << *Runner << " was not the owner of " << *Sprinter << "!" << endl; 436 436 exit(255); 437 437 } … … 443 443 } while (Walker->next != end); 444 444 } while ((OlderPotential - OldPotential) > 1e-3); 445 DoLog(1) && (Log() << Verbose(1) << "done." << endl);445 Log() << Verbose(1) << "done." << endl; 446 446 447 447 … … 466 466 { 467 467 /// evaluate forces (only the distance to target dependent part) with the final PermutationMap 468 DoLog(1) && (Log() << Verbose(1) << "Calculating forces and adding onto ForceMatrix ... " << endl);468 Log() << Verbose(1) << "Calculating forces and adding onto ForceMatrix ... " << endl; 469 469 ActOnAllAtoms( &atom::EvaluateConstrainedForce, startstep, endstep, PermutationMap, Force ); 470 DoLog(1) && (Log() << Verbose(1) << "done." << endl);470 Log() << Verbose(1) << "done." << endl; 471 471 }; 472 472 … … 503 503 504 504 // go through all steps and add the molecular configuration to the list and to the Trajectories of \a this molecule 505 DoLog(1) && (Log() << Verbose(1) << "Filling intermediate " << MaxSteps << " steps with MDSteps of " << MDSteps << "." << endl);505 Log() << Verbose(1) << "Filling intermediate " << MaxSteps << " steps with MDSteps of " << MDSteps << "." << endl; 506 506 for (int step = 0; step <= MaxSteps; step++) { 507 507 mol = new molecule(elemente); … … 568 568 // parse file into ForceMatrix 569 569 if (!Force.ParseMatrix(file, 0,0,0)) { 570 DoeLog(0) && (eLog()<< Verbose(0) << "Could not parse Force Matrix file " << file << "." << endl); 571 performCriticalExit(); 570 eLog() << Verbose(0) << "Could not parse Force Matrix file " << file << "." << endl; 572 571 return false; 573 572 } 574 573 if (Force.RowCounter[0] != AtomCount) { 575 DoeLog(0) && (eLog()<< Verbose(0) << "Mismatch between number of atoms in file " << Force.RowCounter[0] << " and in molecule " << AtomCount << "." << endl); 576 performCriticalExit(); 574 eLog() << Verbose(0) << "Mismatch between number of atoms in file " << Force.RowCounter[0] << " and in molecule " << AtomCount << "." << endl; 577 575 return false; 578 576 } … … 652 650 switch(Thermostat) { 653 651 case None: 654 DoLog(2) && (Log() << Verbose(2) << "Applying no thermostat..." << endl);652 Log() << Verbose(2) << "Applying no thermostat..." << endl; 655 653 break; 656 654 case Woodcock: 657 655 if ((configuration.ScaleTempStep > 0) && ((MDSteps-1) % configuration.ScaleTempStep == 0)) { 658 DoLog(2) && (Log() << Verbose(2) << "Applying Woodcock thermostat..." << endl);656 Log() << Verbose(2) << "Applying Woodcock thermostat..." << endl; 659 657 ActOnAllAtoms( &atom::Thermostat_Woodcock, sqrt(ScaleTempFactor), MDSteps, &ekin ); 660 658 } 661 659 break; 662 660 case Gaussian: 663 DoLog(2) && (Log() << Verbose(2) << "Applying Gaussian thermostat..." << endl);661 Log() << Verbose(2) << "Applying Gaussian thermostat..." << endl; 664 662 ActOnAllAtoms( &atom::Thermostat_Gaussian_init, MDSteps, &G, &E ); 665 663 666 DoLog(1) && (Log() << Verbose(1) << "Gaussian Least Constraint constant is " << G/E << "." << endl);664 Log() << Verbose(1) << "Gaussian Least Constraint constant is " << G/E << "." << endl; 667 665 ActOnAllAtoms( &atom::Thermostat_Gaussian_least_constraint, MDSteps, G/E, &ekin, &configuration); 668 666 669 667 break; 670 668 case Langevin: 671 DoLog(2) && (Log() << Verbose(2) << "Applying Langevin thermostat..." << endl);669 Log() << Verbose(2) << "Applying Langevin thermostat..." << endl; 672 670 // init random number generator 673 671 gsl_rng_env_setup(); … … 679 677 680 678 case Berendsen: 681 DoLog(2) && (Log() << Verbose(2) << "Applying Berendsen-VanGunsteren thermostat..." << endl);679 Log() << Verbose(2) << "Applying Berendsen-VanGunsteren thermostat..." << endl; 682 680 ActOnAllAtoms( &atom::Thermostat_Berendsen, MDSteps, ScaleTempFactor, &ekin, &configuration ); 683 681 break; 684 682 685 683 case NoseHoover: 686 DoLog(2) && (Log() << Verbose(2) << "Applying Nose-Hoover thermostat..." << endl);684 Log() << Verbose(2) << "Applying Nose-Hoover thermostat..." << endl; 687 685 // dynamically evolve alpha (the additional degree of freedom) 688 686 delta_alpha = 0.; … … 690 688 delta_alpha = (delta_alpha - (3.*AtomCount+1.) * configuration.TargetTemp)/(configuration.HooverMass*Units2Electronmass); 691 689 configuration.alpha += delta_alpha*configuration.Deltat; 692 DoLog(3) && (Log() << Verbose(3) << "alpha = " << delta_alpha << " * " << configuration.Deltat << " = " << configuration.alpha << "." << endl);690 Log() << Verbose(3) << "alpha = " << delta_alpha << " * " << configuration.Deltat << " = " << configuration.alpha << "." << endl; 693 691 // apply updated alpha as additional force 694 692 ActOnAllAtoms( &atom::Thermostat_NoseHoover_scale, MDSteps, &ekin, &configuration ); 695 693 break; 696 694 } 697 DoLog(1) && (Log() << Verbose(1) << "Kinetic energy is " << ekin << "." << endl);698 }; 695 Log() << Verbose(1) << "Kinetic energy is " << ekin << "." << endl; 696 };
Note:
See TracChangeset
for help on using the changeset viewer.