Changes in src/molecule_dynamics.cpp [920c70:1513a74]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/molecule_dynamics.cpp
r920c70 r1513a74 10 10 #include "config.hpp" 11 11 #include "element.hpp" 12 #include "info.hpp"13 12 #include "log.hpp" 14 13 #include "memoryallocator.hpp" … … 190 189 { 191 190 stringstream zeile1, zeile2; 192 int *DoubleList = new int[AtomCount]; 193 for(int i=0;i<AtomCount;i++) 194 DoubleList[i] = 0; 191 int *DoubleList = Calloc<int>(AtomCount, "PrintPermutationMap: *DoubleList"); 195 192 int doubles = 0; 196 193 zeile1 << "PermutationMap: "; … … 206 203 if (doubles >0) 207 204 DoLog(2) && (Log() << Verbose(2) << "Found " << doubles << " Doubles." << endl); 208 delete[](DoubleList);205 Free(&DoubleList); 209 206 // Log() << Verbose(2) << zeile1.str() << endl << zeile2.str() << endl; 210 207 }; … … 341 338 double Potential, OldPotential, OlderPotential; 342 339 struct EvaluatePotential Params; 343 Params.PermutationMap = new atom *[AtomCount];344 Params.DistanceList = new DistanceMap *[AtomCount];345 Params.DistanceIterators = new DistanceMap::iterator[AtomCount];346 Params.DoubleList = new int[AtomCount];347 Params.StepList = new DistanceMap::iterator[AtomCount];340 Params.PermutationMap = Calloc<atom*>(AtomCount, "molecule::MinimiseConstrainedPotential: Params.**PermutationMap"); 341 Params.DistanceList = Malloc<DistanceMap*>(AtomCount, "molecule::MinimiseConstrainedPotential: Params.**DistanceList"); 342 Params.DistanceIterators = Malloc<DistanceMap::iterator>(AtomCount, "molecule::MinimiseConstrainedPotential: Params.*DistanceIterators"); 343 Params.DoubleList = Calloc<int>(AtomCount, "molecule::MinimiseConstrainedPotential: Params.*DoubleList"); 344 Params.StepList = Malloc<DistanceMap::iterator>(AtomCount, "molecule::MinimiseConstrainedPotential: Params.*StepList"); 348 345 int round; 349 346 atom *Walker = NULL, *Runner = NULL, *Sprinter = NULL; 350 347 DistanceMap::iterator Rider, Strider; 351 352 // set to zero353 for (int i=0;i<AtomCount;i++) {354 Params.PermutationMap[i] = NULL;355 Params.DoubleList[i] = 0;356 }357 348 358 349 /// Minimise the potential … … 371 362 DoLog(1) && (Log() << Verbose(1) << "Making the PermutationMap injective ... " << endl); 372 363 MakeInjectivePermutation(this, Params); 373 delete[](Params.DoubleList);364 Free(&Params.DoubleList); 374 365 375 366 // argument minimise the constrained potential in this injective PermutationMap … … 453 444 for (int i=AtomCount; i--;) 454 445 Params.DistanceList[i]->clear(); 455 delete[](Params.DistanceList);456 delete[](Params.DistanceIterators);446 Free(&Params.DistanceList); 447 Free(&Params.DistanceIterators); 457 448 return ConstrainedPotential(Params); 458 449 }; … … 496 487 MinimiseConstrainedPotential(PermutationMap, startstep, endstep, configuration.GetIsAngstroem()); 497 488 else { 498 PermutationMap = new atom *[AtomCount];489 PermutationMap = Malloc<atom *>(AtomCount, "molecule::LinearInterpolationBetweenConfiguration: **PermutationMap"); 499 490 SetIndexedArrayForEachAtomTo( PermutationMap, &atom::nr ); 500 491 } … … 531 522 532 523 // store the list to single step files 533 int *SortIndex = new int[AtomCount];524 int *SortIndex = Malloc<int>(AtomCount, "molecule::LinearInterpolationBetweenConfiguration: *SortIndex"); 534 525 for (int i=AtomCount; i--; ) 535 526 SortIndex[i] = i; 536 527 status = MoleculePerStep->OutputConfigForListOfFragments(&configuration, SortIndex); 537 delete[](SortIndex);538 528 539 529 // free and return 540 delete[](PermutationMap);530 Free(&PermutationMap); 541 531 delete(MoleculePerStep); 542 532 return status; … … 558 548 bool molecule::VerletForceIntegration(char *file, config &configuration) 559 549 { 560 Info FunctionInfo(__func__);561 550 ifstream input(file); 562 551 string token; … … 599 588 ConstrainedPotentialEnergy = MinimiseConstrainedPotential(PermutationMap,configuration.DoConstrainedMD, 0, configuration.GetIsAngstroem()); 600 589 EvaluateConstrainedForces(configuration.DoConstrainedMD, 0, PermutationMap, &Force); 601 delete[](PermutationMap);590 Free(&PermutationMap); 602 591 } 603 592 604 593 // and perform Verlet integration for each atom with position, velocity and force vector 605 594 // check size of vectors 606 //ActOnAllAtoms( &atom::ResizeTrajectory, MDSteps+10 );607 608 ActOnAllAtoms( &atom::VelocityVerletUpdate, MDSteps +1, &configuration, &Force);595 ActOnAllAtoms( &atom::ResizeTrajectory, MDSteps+10 ); 596 597 ActOnAllAtoms( &atom::VelocityVerletUpdate, MDSteps, &configuration, &Force); 609 598 } 610 599 // correct velocities (rather momenta) so that center of mass remains motionless 611 600 Velocity.Zero(); 612 601 IonMass = 0.; 613 ActOnAllAtoms ( &atom::SumUpKineticEnergy, MDSteps +1, &IonMass, &Velocity );602 ActOnAllAtoms ( &atom::SumUpKineticEnergy, MDSteps, &IonMass, &Velocity ); 614 603 615 604 // correct velocities (rather momenta) so that center of mass remains motionless 616 605 Velocity.Scale(1./IonMass); 617 606 ActualTemp = 0.; 618 ActOnAllAtoms ( &atom::CorrectVelocity, &ActualTemp, MDSteps +1, &Velocity );607 ActOnAllAtoms ( &atom::CorrectVelocity, &ActualTemp, MDSteps, &Velocity ); 619 608 Thermostats(configuration, ActualTemp, Berendsen); 620 609 MDSteps++;
Note:
See TracChangeset
for help on using the changeset viewer.