Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/molecule_dynamics.cpp

    r920c70 r1513a74  
    1010#include "config.hpp"
    1111#include "element.hpp"
    12 #include "info.hpp"
    1312#include "log.hpp"
    1413#include "memoryallocator.hpp"
     
    190189{
    191190  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");
    195192  int doubles = 0;
    196193  zeile1 << "PermutationMap: ";
     
    206203  if (doubles >0)
    207204    DoLog(2) && (Log() << Verbose(2) << "Found " << doubles << " Doubles." << endl);
    208   delete[](DoubleList);
     205  Free(&DoubleList);
    209206//  Log() << Verbose(2) << zeile1.str() << endl << zeile2.str() << endl;
    210207};
     
    341338  double Potential, OldPotential, OlderPotential;
    342339  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");
    348345  int round;
    349346  atom *Walker = NULL, *Runner = NULL, *Sprinter = NULL;
    350347  DistanceMap::iterator Rider, Strider;
    351 
    352   // set to zero
    353   for (int i=0;i<AtomCount;i++) {
    354     Params.PermutationMap[i] = NULL;
    355     Params.DoubleList[i] = 0;
    356   }
    357348
    358349  /// Minimise the potential
     
    371362  DoLog(1) && (Log() << Verbose(1) << "Making the PermutationMap injective ... " << endl);
    372363  MakeInjectivePermutation(this, Params);
    373   delete[](Params.DoubleList);
     364  Free(&Params.DoubleList);
    374365
    375366  // argument minimise the constrained potential in this injective PermutationMap
     
    453444  for (int i=AtomCount; i--;)
    454445    Params.DistanceList[i]->clear();
    455   delete[](Params.DistanceList);
    456   delete[](Params.DistanceIterators);
     446  Free(&Params.DistanceList);
     447  Free(&Params.DistanceIterators);
    457448  return ConstrainedPotential(Params);
    458449};
     
    496487    MinimiseConstrainedPotential(PermutationMap, startstep, endstep, configuration.GetIsAngstroem());
    497488  else {
    498     PermutationMap = new atom *[AtomCount];
     489    PermutationMap = Malloc<atom *>(AtomCount, "molecule::LinearInterpolationBetweenConfiguration: **PermutationMap");
    499490    SetIndexedArrayForEachAtomTo( PermutationMap, &atom::nr );
    500491  }
     
    531522
    532523  // store the list to single step files
    533   int *SortIndex = new int[AtomCount];
     524  int *SortIndex = Malloc<int>(AtomCount, "molecule::LinearInterpolationBetweenConfiguration: *SortIndex");
    534525  for (int i=AtomCount; i--; )
    535526    SortIndex[i] = i;
    536527  status = MoleculePerStep->OutputConfigForListOfFragments(&configuration, SortIndex);
    537   delete[](SortIndex);
    538528
    539529  // free and return
    540   delete[](PermutationMap);
     530  Free(&PermutationMap);
    541531  delete(MoleculePerStep);
    542532  return status;
     
    558548bool molecule::VerletForceIntegration(char *file, config &configuration)
    559549{
    560   Info FunctionInfo(__func__);
    561550  ifstream input(file);
    562551  string token;
     
    599588      ConstrainedPotentialEnergy = MinimiseConstrainedPotential(PermutationMap,configuration.DoConstrainedMD, 0, configuration.GetIsAngstroem());
    600589      EvaluateConstrainedForces(configuration.DoConstrainedMD, 0, PermutationMap, &Force);
    601       delete[](PermutationMap);
     590      Free(&PermutationMap);
    602591    }
    603592
    604593    // and perform Verlet integration for each atom with position, velocity and force vector
    605594    // 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);
    609598  }
    610599  // correct velocities (rather momenta) so that center of mass remains motionless
    611600  Velocity.Zero();
    612601  IonMass = 0.;
    613   ActOnAllAtoms ( &atom::SumUpKineticEnergy, MDSteps+1, &IonMass, &Velocity );
     602  ActOnAllAtoms ( &atom::SumUpKineticEnergy, MDSteps, &IonMass, &Velocity );
    614603
    615604  // correct velocities (rather momenta) so that center of mass remains motionless
    616605  Velocity.Scale(1./IonMass);
    617606  ActualTemp = 0.;
    618   ActOnAllAtoms ( &atom::CorrectVelocity, &ActualTemp, MDSteps+1, &Velocity );
     607  ActOnAllAtoms ( &atom::CorrectVelocity, &ActualTemp, MDSteps, &Velocity );
    619608  Thermostats(configuration, ActualTemp, Berendsen);
    620609  MDSteps++;
Note: See TracChangeset for help on using the changeset viewer.