Ignore:
Timestamp:
Aug 2, 2017, 9:40:02 PM (8 years ago)
Author:
Frederik Heber <frederik.heber@…>
Branches:
ForceAnnealing_with_BondGraph_continued
Children:
bef5b3
Parents:
f10066
git-author:
Frederik Heber <frederik.heber@…> (08/02/17 21:40:00)
git-committer:
Frederik Heber <frederik.heber@…> (08/02/17 21:40:02)
Message:

tempcommit: Further fixing to how steps are treated.

  • last but two is the old step
  • last but one is the current step (we use its position and gradient).
  • last is the on we updated (we assume position has been copied).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Dynamics/ForceAnnealing.hpp

    rf10066 r5f18f1  
    102102  {
    103103    // make sum of forces equal zero
    104     AtomicForceManipulator<T>::correctForceMatrixForFixedCenterOfMass(_offset, _CurrentTimeStep);
     104    AtomicForceManipulator<T>::correctForceMatrixForFixedCenterOfMass(
     105        _offset,
     106        _CurrentTimeStep-1>=0 ? _CurrentTimeStep - 1 : 0);
    105107
    106108    // are we in initial step? Then set static entities
     
    151153                        // atom's force vector gives steepest descent direction
    152154                        const Vector oldPosition = (*iter)->getPositionAtStep(CurrentTimeStep-2 >= 0 ? CurrentTimeStep - 2 : 0);
    153                         const Vector currentPosition = (*iter)->getPositionAtStep(CurrentTimeStep);
     155                        const Vector currentPosition = (*iter)->getPositionAtStep(CurrentTimeStep-1>=0 ? CurrentTimeStep - 1 : 0);
    154156                        const Vector oldGradient = (*iter)->getAtomicForceAtStep(CurrentTimeStep-2 >= 0 ? CurrentTimeStep - 2 : 0);
    155                         const Vector currentGradient = (*iter)->getAtomicForceAtStep(CurrentTimeStep);
     157                        const Vector currentGradient = (*iter)->getAtomicForceAtStep(CurrentTimeStep-1>=0 ? CurrentTimeStep - 1 : 0);
    156158      LOG(4, "DEBUG: oldPosition for atom " << **iter << " is " << oldPosition);
    157159      LOG(4, "DEBUG: currentPosition for atom " << **iter << " is " << currentPosition);
     
    314316    RemnantGradient_per_atom_t RemnantGradient_per_atom;
    315317    for (size_t timestep = 0; timestep <= 1; ++timestep) {
    316       const size_t CurrentStep = CurrentTimeStep-2*timestep >= 0 ? CurrentTimeStep - 2*timestep : 0;
     318      const size_t CurrentStep = CurrentTimeStep-timestep-1 >= 0 ? CurrentTimeStep-timestep-1 : 0;
    317319      LOG(2, "DEBUG: CurrentTimeStep is " << CurrentTimeStep
    318320          << ", timestep is " << timestep
     
    427429            << (side == leftside ? "left" : "right") << " side of bond is " << currentGradient);
    428430        const Vector &oldPosition = bondatom[side]->getPositionAtStep(CurrentTimeStep-2 >= 0 ? CurrentTimeStep - 2 : 0);
    429         const Vector &currentPosition = bondatom[side]->getPositionAtStep(CurrentTimeStep);
     431        const Vector &currentPosition = bondatom[side]->getPositionAtStep(CurrentTimeStep-1>=0 ? CurrentTimeStep - 1 : 0);
    430432        const Vector PositionDifference = currentPosition - oldPosition;
    431433        LOG(4, "DEBUG: old position is " << oldPosition);
     
    476478      atom &walker = *(*iter);
    477479      // extract largest components for showing progress of annealing
    478       const Vector currentGradient = walker.getAtomicForceAtStep(CurrentTimeStep);
     480      const Vector currentGradient = walker.getAtomicForceAtStep(CurrentTimeStep-1>=0 ? CurrentTimeStep-1 : 0);
    479481      for(size_t i=0;i<NDIM;++i)
    480482        if (currentGradient[i] > maxComponents[i])
     
    503505      LOG(3, "DEBUG: Applying update " << update << " to atom #" << atomid
    504506          << ", namely " << *walker);
    505       walker->setPosition( walker->getPosition() + update - CommonTranslation);
     507      walker->setPosition(
     508          walker->getPositionAtStep(CurrentTimeStep-1>=0 ? CurrentTimeStep - 1 : 0)
     509          + update - CommonTranslation);
    506510//      walker->setAtomicForce( RemnantGradient_per_atom[walker->getId()] );
    507511    }
Note: See TracChangeset for help on using the changeset viewer.