Changeset 7294dc for src/World.cpp


Ignore:
Timestamp:
Jun 21, 2017, 9:51:24 PM (8 years ago)
Author:
Frederik Heber <frederik.heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_SelectAtomByNameAction, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_StructOpt_integration_tests, AutomationFragmentation_failures, Candidate_v1.6.1, ChangeBugEmailaddress, ChemicalSpaceEvaluator, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph_documentation, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, ForceAnnealing_oldresults, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, Gui_displays_atomic_force_velocity, IndependentFragmentGrids_IntegrationTest, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, StoppableMakroAction, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps
Children:
101d2d
Parents:
9f2071
git-author:
Frederik Heber <heber@…> (03/23/17 17:11:47)
git-committer:
Frederik Heber <frederik.heber@…> (06/21/17 21:51:24)
Message:

FIX: Fixing the use of the trajectories that were changed to maps.

  • as the atom's trajectories are now stored inside a map, i.e. not every step necessarily needs to be present, there will still some places in the code that were meant for the old vector storing.
  • Atom::UpdateStep() updates the current step, not the future step.
  • AtomInfo::append/removeTrajectoryStep() now no longer ASSERT that the step is not the current one. Due to the trajectory in map concept (with current it simply sought by lower_bound()) this is no longer necessary.
  • HydrogenPool no longer adds all trajectory steps till current time.
  • World has commented out code for also copying the current atom positions in case a new time step is added, but this is not used as so far we do not recognize whether it is a new time step ... and also it is not really necessary.
  • TESTS: Removed XFAILs from tests of previous commit. They are all working again.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/World.cpp

    r9f2071 r7294dc  
    221221}
    222222
    223 bool areBondsPresent(const unsigned int _step)
     223static bool areBondsPresent(const unsigned int _step)
    224224{
    225225  bool status = false;
     
    229229    const atom * const Walker = *iter;
    230230    status |= !Walker->getListOfBondsAtStep(_step).empty();
     231  }
     232
     233  return status;
     234}
     235
     236static bool areAtomsPresent(const unsigned int _step)
     237{
     238  bool status = false;
     239
     240  for (World::AtomConstIterator iter = const_cast<const World &>(World::getInstance()).getAtomIter();
     241      (!status) && (iter != const_cast<const World &>(World::getInstance()).atomEnd()); ++iter) {
     242    const atom * const Walker = *iter;
     243    status |= (Walker->getTrajectorySize() >= _step);
    231244  }
    232245
     
    259272}
    260273
    261 static void copyAtoms(const unsigned int _srcstep, const unsigned int _deststep)
    262 {
    263   for (World::AtomIterator iter = World::getInstance().getAtomIter();
    264       iter != World::getInstance().atomEnd(); ++iter) {
    265     atom * const Walker = *iter;
    266     Walker->UpdateStep(_deststep);
    267     Walker->setPositionAtStep(_deststep, Walker->getPositionAtStep(_srcstep));
    268     Walker->setAtomicVelocityAtStep(_deststep, Walker->getAtomicVelocityAtStep(_srcstep));
    269     Walker->setAtomicForceAtStep(_deststep, Walker->getAtomicForceAtStep(_srcstep));
    270   }
    271 }
     274//static void copyAtoms(const unsigned int _srcstep, const unsigned int _deststep)
     275//{
     276//  for (World::AtomIterator iter = World::getInstance().getAtomIter();
     277//      iter != World::getInstance().atomEnd(); ++iter) {
     278//    atom * const Walker = *iter;
     279//    Walker->UpdateStep(_deststep);
     280//    Walker->setPositionAtStep(_deststep, Walker->getPositionAtStep(_srcstep));
     281//    Walker->setAtomicVelocityAtStep(_deststep, Walker->getAtomicVelocityAtStep(_srcstep));
     282//    Walker->setAtomicForceAtStep(_deststep, Walker->getAtomicForceAtStep(_srcstep));
     283//  }
     284//}
    272285
    273286void World::setTime(const unsigned int _step)
     
    276289    const unsigned int oldstep = WorldTime::getTime();
    277290
    278     copyAtoms(oldstep, _step);
     291//    if (!areAtomsPresent(_step))
     292//      copyAtoms(oldstep, _step);
     293
    279294    // 1. copy bond graph (such not each addBond causes GUI update)
    280295    if (!areBondsPresent(_step)) {
Note: See TracChangeset for help on using the changeset viewer.