Changeset 5a289c for src/Dynamics


Ignore:
Timestamp:
Nov 7, 2017, 7:34:54 AM (7 years ago)
Author:
Frederik Heber <frederik.heber@…>
Branches:
ForceAnnealing_with_BondGraph_continued_betteresults
Children:
0f9726
Parents:
645bed
git-author:
Frederik Heber <frederik.heber@…> (09/11/17 17:03:27)
git-committer:
Frederik Heber <frederik.heber@…> (11/07/17 07:34:54)
Message:

Readded step-world-time to StructuralOptimization.

  • adapted ForceAnnealing and its Action accordingly, i.e. they receive the old time step as the current step.
  • TESTFIX: needed to add "--step-world-time 1" to ForceAnnealing regression test, results then remained exactly the same.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Dynamics/ForceAnnealing.hpp

    r645bed r5a289c  
    139139        iter != AtomicForceManipulator<T>::atoms.end(); ++iter) {
    140140      // atom's force vector gives steepest descent direction
    141       const Vector oldPosition = (*iter)->getPositionAtStep(CurrentTimeStep-2 >= 0 ? CurrentTimeStep - 2 : 0);
    142       const Vector currentPosition = (*iter)->getPosition();
    143       const Vector oldGradient = (*iter)->getAtomicForceAtStep(CurrentTimeStep-2 >= 0 ? CurrentTimeStep - 2 : 0);
    144       const Vector currentGradient = (*iter)->getAtomicForce();
     141      const Vector oldPosition = (*iter)->getPositionAtStep(CurrentTimeStep-1 >= 0 ? CurrentTimeStep - 1 : 0);
     142      const Vector currentPosition = (*iter)->getPositionAtStep(CurrentTimeStep);
     143      const Vector oldGradient = (*iter)->getAtomicForceAtStep(CurrentTimeStep-1 >= 0 ? CurrentTimeStep - 1 : 0);
     144      const Vector currentGradient = (*iter)->getAtomicForceAtStep(CurrentTimeStep);
    145145      LOG(4, "DEBUG: oldPosition for atom " << **iter << " is " << oldPosition);
    146146      LOG(4, "DEBUG: currentPosition for atom " << **iter << " is " << currentPosition);
     
    197197   *
    198198   *
    199    * \param CurrentTimeStep current time step (i.e. \f$ t + \Delta t \f$ in the sense of the velocity verlet)
     199   * \param CurrentTimeStep current time step (i.e. t where \f$ t + \Delta t \f$ is in the sense of the velocity verlet)
    200200   * \param offset offset in matrix file to the first force component
    201201   * \param maxComponents to be filled with maximum force component over all atoms
     
    226226        iter != AtomicForceManipulator<T>::atoms.end(); ++iter) {
    227227      // atom's force vector gives steepest descent direction
    228       const Vector oldPosition = (*iter)->getPositionAtStep(CurrentTimeStep-2 >= 0 ? CurrentTimeStep - 2 : 0);
    229       const Vector currentPosition = (*iter)->getPosition();
    230       const Vector oldGradient = (*iter)->getAtomicForceAtStep(CurrentTimeStep-2 >= 0 ? CurrentTimeStep - 2 : 0);
    231       const Vector currentGradient = (*iter)->getAtomicForce();
     228      const Vector oldPosition = (*iter)->getPositionAtStep(CurrentTimeStep-1 >= 0 ? CurrentTimeStep - 1 : 0);
     229      const Vector currentPosition = (*iter)->getPositionAtStep(CurrentTimeStep);
     230      const Vector oldGradient = (*iter)->getAtomicForceAtStep(CurrentTimeStep-1 >= 0 ? CurrentTimeStep - 1 : 0);
     231      const Vector currentGradient = (*iter)->getAtomicForceAtStep(CurrentTimeStep);
    232232      LOG(4, "DEBUG: Force for atom " << **iter << " is " << currentGradient);
    233233
     
    269269        const bond &current_bond = *(*bonditer);
    270270        LOG(2, "DEBUG: Looking at bond " << current_bond);
    271         Vector BondVector = (*iter)->getPosition();
     271        Vector BondVector = (*iter)->getPositionAtStep(CurrentTimeStep);
    272272        BondVector -= ((*iter)->getId() == current_bond.rightatom->getId())
    273             ? current_bond.rightatom->getPosition() : current_bond.leftatom->getPosition();
     273            ? current_bond.rightatom->getPositionAtStep(CurrentTimeStep) : current_bond.leftatom->getPositionAtStep(CurrentTimeStep);
    274274        BondVector.Normalize();
    275275        if (BondVector.ScalarProduct(currentGradient) < 0) {
Note: See TracChangeset for help on using the changeset viewer.