Changes in src/molecule_dynamics.cpp [e138de:a67d19]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/molecule_dynamics.cpp
re138de ra67d19 207 207 doubles++; 208 208 if (doubles >0) 209 Log() << Verbose(2) << "Found " << doubles << " Doubles." << endl;209 DoLog(2) && (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 Log() << Verbose(2) << *Walker << " starts with distance " << Params.DistanceList[Walker->nr]->begin()->first << "." << endl;251 DoLog(2) && (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 Log() << Verbose(3) << "Found a new permutation, new potential is " << OldPotential << "." << endl;279 DoLog(3) && (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 eLog() << Verbose(0) << "Failed to create an injective PermutationMap!" << endl;309 exit(1);310 } 311 Log() << Verbose(1) << "done." << endl;308 DoeLog(0) && (eLog()<< Verbose(0) << "Failed to create an injective PermutationMap!" << endl); 309 performCriticalExit(); 310 } 311 DoLog(1) && (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 Log() << Verbose(1) << "Allocating, initializting and filling the distance list ... " << endl;360 DoLog(1) && (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 Log() << Verbose(1) << "Making the PermutationMap injective ... " << endl;367 DoLog(1) && (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 Log() << Verbose(1) << "Argument minimising the PermutationMap, at current potential " << OldPotential << " ... " << endl;372 DoLog(1) && (Log() << Verbose(1) << "Argument minimising the PermutationMap." << endl); 373 373 OldPotential = 1e+10; 374 374 round = 0; 375 375 do { 376 Log() << Verbose(2) << "Starting round " << ++round << " ... " << endl;376 DoLog(2) && (Log() << Verbose(2) << "Starting round " << ++round << ", at current potential " << OldPotential << " ... " << 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 Log() << Verbose(3) << "Found a better permutation, new potential is " << Potential << " vs." << OldPotential << "." << endl;426 DoLog(3) && (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 eLog() << Verbose(0) << "ERROR: The two-step permutation procedure did not maintain injectivity!" << endl;430 DoeLog(1) && (eLog()<< Verbose(1) << "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 eLog() << Verbose(0) << "ERROR: " << *Runner << " was not the owner of " << *Sprinter << "!" << endl;435 DoeLog(1) && (eLog()<< Verbose(1) << *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 Log() << Verbose(1) << "done." << endl;445 DoLog(1) && (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 Log() << Verbose(1) << "Calculating forces and adding onto ForceMatrix ... " << endl;468 DoLog(1) && (Log() << Verbose(1) << "Calculating forces and adding onto ForceMatrix ... " << endl); 469 469 ActOnAllAtoms( &atom::EvaluateConstrainedForce, startstep, endstep, PermutationMap, Force ); 470 Log() << Verbose(1) << "done." << endl;470 DoLog(1) && (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 Log() << Verbose(1) << "Filling intermediate " << MaxSteps << " steps with MDSteps of " << MDSteps << "." << endl;505 DoLog(1) && (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 eLog() << Verbose(0) << "Could not parse Force Matrix file " << file << "." << endl; 570 DoeLog(0) && (eLog()<< Verbose(0) << "Could not parse Force Matrix file " << file << "." << endl); 571 performCriticalExit(); 571 572 return false; 572 573 } 573 574 if (Force.RowCounter[0] != AtomCount) { 574 eLog() << Verbose(0) << "Mismatch between number of atoms in file " << Force.RowCounter[0] << " and in molecule " << AtomCount << "." << endl; 575 DoeLog(0) && (eLog()<< Verbose(0) << "Mismatch between number of atoms in file " << Force.RowCounter[0] << " and in molecule " << AtomCount << "." << endl); 576 performCriticalExit(); 575 577 return false; 576 578 } … … 650 652 switch(Thermostat) { 651 653 case None: 652 Log() << Verbose(2) << "Applying no thermostat..." << endl;654 DoLog(2) && (Log() << Verbose(2) << "Applying no thermostat..." << endl); 653 655 break; 654 656 case Woodcock: 655 657 if ((configuration.ScaleTempStep > 0) && ((MDSteps-1) % configuration.ScaleTempStep == 0)) { 656 Log() << Verbose(2) << "Applying Woodcock thermostat..." << endl;658 DoLog(2) && (Log() << Verbose(2) << "Applying Woodcock thermostat..." << endl); 657 659 ActOnAllAtoms( &atom::Thermostat_Woodcock, sqrt(ScaleTempFactor), MDSteps, &ekin ); 658 660 } 659 661 break; 660 662 case Gaussian: 661 Log() << Verbose(2) << "Applying Gaussian thermostat..." << endl;663 DoLog(2) && (Log() << Verbose(2) << "Applying Gaussian thermostat..." << endl); 662 664 ActOnAllAtoms( &atom::Thermostat_Gaussian_init, MDSteps, &G, &E ); 663 665 664 Log() << Verbose(1) << "Gaussian Least Constraint constant is " << G/E << "." << endl;666 DoLog(1) && (Log() << Verbose(1) << "Gaussian Least Constraint constant is " << G/E << "." << endl); 665 667 ActOnAllAtoms( &atom::Thermostat_Gaussian_least_constraint, MDSteps, G/E, &ekin, &configuration); 666 668 667 669 break; 668 670 case Langevin: 669 Log() << Verbose(2) << "Applying Langevin thermostat..." << endl;671 DoLog(2) && (Log() << Verbose(2) << "Applying Langevin thermostat..." << endl); 670 672 // init random number generator 671 673 gsl_rng_env_setup(); … … 677 679 678 680 case Berendsen: 679 Log() << Verbose(2) << "Applying Berendsen-VanGunsteren thermostat..." << endl;681 DoLog(2) && (Log() << Verbose(2) << "Applying Berendsen-VanGunsteren thermostat..." << endl); 680 682 ActOnAllAtoms( &atom::Thermostat_Berendsen, MDSteps, ScaleTempFactor, &ekin, &configuration ); 681 683 break; 682 684 683 685 case NoseHoover: 684 Log() << Verbose(2) << "Applying Nose-Hoover thermostat..." << endl;686 DoLog(2) && (Log() << Verbose(2) << "Applying Nose-Hoover thermostat..." << endl); 685 687 // dynamically evolve alpha (the additional degree of freedom) 686 688 delta_alpha = 0.; … … 688 690 delta_alpha = (delta_alpha - (3.*AtomCount+1.) * configuration.TargetTemp)/(configuration.HooverMass*Units2Electronmass); 689 691 configuration.alpha += delta_alpha*configuration.Deltat; 690 Log() << Verbose(3) << "alpha = " << delta_alpha << " * " << configuration.Deltat << " = " << configuration.alpha << "." << endl;692 DoLog(3) && (Log() << Verbose(3) << "alpha = " << delta_alpha << " * " << configuration.Deltat << " = " << configuration.alpha << "." << endl); 691 693 // apply updated alpha as additional force 692 694 ActOnAllAtoms( &atom::Thermostat_NoseHoover_scale, MDSteps, &ekin, &configuration ); 693 695 break; 694 696 } 695 Log() << Verbose(1) << "Kinetic energy is " << ekin << "." << endl;696 }; 697 DoLog(1) && (Log() << Verbose(1) << "Kinetic energy is " << ekin << "." << endl); 698 };
Note:
See TracChangeset
for help on using the changeset viewer.