Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/molecule_dynamics.cpp

    r1513a74 r920c70  
    1010#include "config.hpp"
    1111#include "element.hpp"
     12#include "info.hpp"
    1213#include "log.hpp"
    1314#include "memoryallocator.hpp"
     
    189190{
    190191  stringstream zeile1, zeile2;
    191   int *DoubleList = Calloc<int>(AtomCount, "PrintPermutationMap: *DoubleList");
     192  int *DoubleList = new int[AtomCount];
     193  for(int i=0;i<AtomCount;i++)
     194    DoubleList[i] = 0;
    192195  int doubles = 0;
    193196  zeile1 << "PermutationMap: ";
     
    203206  if (doubles >0)
    204207    DoLog(2) && (Log() << Verbose(2) << "Found " << doubles << " Doubles." << endl);
    205   Free(&DoubleList);
     208  delete[](DoubleList);
    206209//  Log() << Verbose(2) << zeile1.str() << endl << zeile2.str() << endl;
    207210};
     
    338341  double Potential, OldPotential, OlderPotential;
    339342  struct EvaluatePotential Params;
    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");
     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];
    345348  int round;
    346349  atom *Walker = NULL, *Runner = NULL, *Sprinter = NULL;
    347350  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  }
    348357
    349358  /// Minimise the potential
     
    362371  DoLog(1) && (Log() << Verbose(1) << "Making the PermutationMap injective ... " << endl);
    363372  MakeInjectivePermutation(this, Params);
    364   Free(&Params.DoubleList);
     373  delete[](Params.DoubleList);
    365374
    366375  // argument minimise the constrained potential in this injective PermutationMap
     
    444453  for (int i=AtomCount; i--;)
    445454    Params.DistanceList[i]->clear();
    446   Free(&Params.DistanceList);
    447   Free(&Params.DistanceIterators);
     455  delete[](Params.DistanceList);
     456  delete[](Params.DistanceIterators);
    448457  return ConstrainedPotential(Params);
    449458};
     
    487496    MinimiseConstrainedPotential(PermutationMap, startstep, endstep, configuration.GetIsAngstroem());
    488497  else {
    489     PermutationMap = Malloc<atom *>(AtomCount, "molecule::LinearInterpolationBetweenConfiguration: **PermutationMap");
     498    PermutationMap = new atom *[AtomCount];
    490499    SetIndexedArrayForEachAtomTo( PermutationMap, &atom::nr );
    491500  }
     
    522531
    523532  // store the list to single step files
    524   int *SortIndex = Malloc<int>(AtomCount, "molecule::LinearInterpolationBetweenConfiguration: *SortIndex");
     533  int *SortIndex = new int[AtomCount];
    525534  for (int i=AtomCount; i--; )
    526535    SortIndex[i] = i;
    527536  status = MoleculePerStep->OutputConfigForListOfFragments(&configuration, SortIndex);
     537  delete[](SortIndex);
    528538
    529539  // free and return
    530   Free(&PermutationMap);
     540  delete[](PermutationMap);
    531541  delete(MoleculePerStep);
    532542  return status;
     
    548558bool molecule::VerletForceIntegration(char *file, config &configuration)
    549559{
     560  Info FunctionInfo(__func__);
    550561  ifstream input(file);
    551562  string token;
     
    588599      ConstrainedPotentialEnergy = MinimiseConstrainedPotential(PermutationMap,configuration.DoConstrainedMD, 0, configuration.GetIsAngstroem());
    589600      EvaluateConstrainedForces(configuration.DoConstrainedMD, 0, PermutationMap, &Force);
    590       Free(&PermutationMap);
     601      delete[](PermutationMap);
    591602    }
    592603
    593604    // and perform Verlet integration for each atom with position, velocity and force vector
    594605    // check size of vectors
    595     ActOnAllAtoms( &atom::ResizeTrajectory, MDSteps+10 );
    596 
    597     ActOnAllAtoms( &atom::VelocityVerletUpdate, MDSteps, &configuration, &Force);
     606    //ActOnAllAtoms( &atom::ResizeTrajectory, MDSteps+10 );
     607
     608    ActOnAllAtoms( &atom::VelocityVerletUpdate, MDSteps+1, &configuration, &Force);
    598609  }
    599610  // correct velocities (rather momenta) so that center of mass remains motionless
    600611  Velocity.Zero();
    601612  IonMass = 0.;
    602   ActOnAllAtoms ( &atom::SumUpKineticEnergy, MDSteps, &IonMass, &Velocity );
     613  ActOnAllAtoms ( &atom::SumUpKineticEnergy, MDSteps+1, &IonMass, &Velocity );
    603614
    604615  // correct velocities (rather momenta) so that center of mass remains motionless
    605616  Velocity.Scale(1./IonMass);
    606617  ActualTemp = 0.;
    607   ActOnAllAtoms ( &atom::CorrectVelocity, &ActualTemp, MDSteps, &Velocity );
     618  ActOnAllAtoms ( &atom::CorrectVelocity, &ActualTemp, MDSteps+1, &Velocity );
    608619  Thermostats(configuration, ActualTemp, Berendsen);
    609620  MDSteps++;
Note: See TracChangeset for help on using the changeset viewer.