Changeset c459c4


Ignore:
Timestamp:
Nov 5, 2017, 1:55:28 AM (7 years ago)
Author:
Frederik Heber <frederik.heber@…>
Branches:
ForceAnnealing_with_BondGraph_continued_betteresults
Children:
1c8a80
Parents:
d79ef32
git-author:
Frederik Heber <frederik.heber@…> (06/27/17 21:02:47)
git-committer:
Frederik Heber <frederik.heber@…> (11/05/17 01:55:28)
Message:

Sorting given selected atoms by ids in ForceAnnealing.

Location:
src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/MoleculeAction/ForceAnnealingAction.cpp

    rd79ef32 rc459c4  
    7171    return Action::failure;
    7272  }
     73  // first, we need to sort the mixin according to their ids (as selected atoms are sorted
     74  // according to their arbitrary address in memory)
     75  set.sortByIds();
     76
     77  // create undo state for all selected atoms (undo info)
     78  std::vector<AtomicInfo> UndoInfo;
     79  UndoInfo.reserve(set.size());
     80  {
     81    for (World::AtomSelectionConstIterator iter = World::getInstance().beginAtomSelection();
     82        iter != World::getInstance().endAtomSelection();
     83        ++iter)
     84      UndoInfo.push_back(AtomicInfo(*(iter->second)));
     85  }
     86
    7387  // we always operate relative to current time step, except on single debug output
    7488  size_t CurrentStep = WorldTime::getInstance().getTime();
     
    103117    else
    104118      LOG(2, "File " << params.forcesfile.get() << " found and parsed.");
    105   }
    106 
    107   // create undo state for all selected atoms (undo info)
    108   std::vector<AtomicInfo> UndoInfo;
    109   UndoInfo.reserve(set.size());
    110   {
    111     for (World::AtomSelectionConstIterator iter = World::getInstance().beginAtomSelection();
    112         iter != World::getInstance().endAtomSelection();
    113         ++iter)
    114       UndoInfo.push_back(AtomicInfo(*(iter->second)));
    115119  }
    116120
  • src/Dynamics/AtomicForceManipulator.hpp

    rd79ef32 rc459c4  
    8282    Vector tempVector;
    8383    size_t i=0;
     84
    8485    for(typename AtomSetMixin<T>::iterator iter = atoms.begin(); iter != atoms.end(); ++iter,++i) {
    8586      for(size_t d=0;d<NDIM;d++) {
    8687        tempVector[d] = Force.Matrix[0][i][d+offset]*(IsAngstroem ? AtomicLengthToAngstroem : 1.);
    8788      }
     89      LOG(3, "DEBUG: Adding force vector " << tempVector << " to atom " << **iter);
     90      ASSERT( ((*iter)->getId()+1) == Force.Matrix[0][i][0],
     91          "AtomicForceManipulator::addForceMatrixToAtomicForce() - mismatch in ids "
     92          +toString(((*iter)->getId()+1))+" and file "+toString(Force.Matrix[0][i][0])+".");
    8893      tempVector += (*iter)->getAtomicForceAtStep(TimeStep);
    8994      (*iter)->setAtomicForceAtStep(TimeStep, tempVector);
Note: See TracChangeset for help on using the changeset viewer.