Changeset 10b1ef
- Timestamp:
- Nov 7, 2017, 7:34:56 AM (7 years ago)
- Branches:
- ForceAnnealing_with_BondGraph_continued_betteresults
- Children:
- 03d40df
- Parents:
- 38ac25
- git-author:
- Frederik Heber <frederik.heber@…> (11/04/17 10:00:15)
- git-committer:
- Frederik Heber <frederik.heber@…> (11/07/17 07:34:56)
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/MoleculeAction/ForceAnnealingAction.cpp
r38ac25 r10b1ef 90 90 iter != World::getInstance().endAtomSelection(); 91 91 ++iter) 92 UndoInfo[i].push_back(AtomicInfo(*(iter->second), CurrentStep-i));92 UndoInfo[i].push_back(AtomicInfo(*(iter->second), CurrentStep-i)); 93 93 } 94 94 } 95 std::vector<int> UndoTrajectorySize; 96 UndoTrajectorySize.reserve(set.size()); 97 for (World::AtomSelectionConstIterator iter = World::getInstance().beginAtomSelection(); 98 iter != World::getInstance().endAtomSelection(); 99 ++iter) 100 UndoTrajectorySize.push_back(iter->second->getTrajectorySize()); 95 101 96 102 // instantiate optimizer … … 129 135 130 136 MoleculeForceAnnealingState *UndoState = 131 new MoleculeForceAnnealingState(UndoInfo, RedoInfo, params);137 new MoleculeForceAnnealingState(UndoInfo, UndoTrajectorySize, RedoInfo, params); 132 138 133 139 return ActionState::ptr(UndoState); … … 139 145 const size_t CurrentStep = WorldTime::getInstance().getTime(); 140 146 141 // set stored old state 142 for (int i=0;i<2;++i) 143 SetAtomsFromAtomicInfo(state->UndoInfo[i], CurrentStep-i); 147 // set stored old state and remove current one from trajectory if we set it 148 for (int i=0;i<2;++i) { 149 for(size_t j=0;j<state->UndoInfo[i].size();++j) { 150 const AtomicInfo &_atominfo = state->UndoInfo[i][j]; 151 const atomId_t id = _atominfo.getId(); 152 atom * const _atom = World::getInstance().getAtom(AtomById(id)); 153 ASSERT( _atom != NULL, 154 "MoleCuilder::SetAtomsFromAtomicInfo() - cannot find atom with id " 155 +toString(id)+" in the world."); 156 if (state->UndoTrajectorySize[j] > CurrentStep-i) 157 _atominfo.setAtom( *_atom, CurrentStep-i ); 158 else 159 _atom->removeSteps(state->UndoTrajectorySize[j], CurrentStep-i); 160 } 161 } 144 162 145 163 return ActionState::ptr(_state); -
src/Actions/MoleculeAction/ForceAnnealingAction.def
r38ac25 r10b1ef 32 32 (DummyValidator<bool>()) 33 33 34 #define statetypes (std::vector< std::vector<AtomicInfo> >)(std::vector< std::vector<AtomicInfo> >)35 #define statereferences (UndoInfo)( RedoInfo)34 #define statetypes (std::vector< std::vector<AtomicInfo> >)(std::vector<int>)(std::vector< std::vector<AtomicInfo> >) 35 #define statereferences (UndoInfo)(UndoTrajectorySize)(RedoInfo) 36 36 37 37 // some defines for all the names, you may use ACTION, STATE and PARAMS -
tests/regression/Molecules/ForceAnnealing/post/test-undo.conf
r38ac25 r10b1ef 82 82 Ion_Type2_2 8.532785963 4.158586027 3.535886037 0 1.000000e-01 0.000000e+00 0.000000e+00 # molecule nr 9 83 83 Ion_Type2_3 7.283585982 3.275186040 3.535886037 0 1.000000e-01 0.000000e+00 0.000000e+00 # molecule nr 10 84 85 Ion_Type1_1 9.782085945 2.645886050 2.645886050 0 # molecule nr 086 Ion_Type1_2 9.782085945 2.645886050 4.425886024 0 # molecule nr 187 Ion_Type1_3 10.672039608 3.904536878 3.535886037 0 # molecule nr 288 Ion_Type1_4 8.532785963 4.787886018 2.645886050 0 # molecule nr 389 Ion_Type1_5 8.532785963 4.787886018 4.425886024 0 # molecule nr 490 Ion_Type1_6 6.393632318 3.904536877 3.535886037 0 # molecule nr 591 Ion_Type1_7 7.283585982 2.645886050 2.645886050 0 # molecule nr 692 Ion_Type1_8 7.283585982 2.645886050 4.425886024 0 # molecule nr 793 Ion_Type2_1 9.782085945 3.275186040 3.535886037 0 # molecule nr 894 Ion_Type2_2 8.532785963 4.158586027 3.535886037 0 # molecule nr 995 Ion_Type2_3 7.283585982 3.275186040 3.535886037 0 # molecule nr 10 -
tests/regression/Molecules/ForceAnnealing/testsuite-molecules-force-annealing.at
r38ac25 r10b1ef 31 31 32 32 33 AT_SETUP([Molecules - Force Annealing with Undo]) 33 # here, we have only one step in the trajectories 34 AT_SETUP([Molecules - Force Annealing with Undo I]) 34 35 AT_KEYWORDS([molecules force-annealing undo]) 35 36 … … 40 41 AT_CHECK([../../molecuilder -i $file --select-all-atoms --step-world-time 1 --force-annealing --forces-file test.forces --steps 1 --undo], 0, [stdout], [stderr]) 41 42 AT_CHECK([diff $file ${abs_top_srcdir}/tests/regression/Molecules/ForceAnnealing/post/test-undo.conf], 0, [ignore], [ignore]) 43 44 AT_CLEANUP 45 46 47 # here two steps are present already 48 AT_SETUP([Molecules - Force Annealing with Undo II]) 49 AT_KEYWORDS([molecules force-annealing undo]) 50 51 file=test2.conf 52 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/tests/regression/Molecules/ForceAnnealing/pre/test2.conf $file], 0) 53 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/tests/regression/Molecules/ForceAnnealing/pre/test.forces .], 0) 54 AT_CHECK([chmod u+w $file], 0) 55 AT_CHECK([../../molecuilder -i $file --select-all-atoms --set-world-time 1 --force-annealing --forces-file test.forces --steps 1 --undo], 0, [stdout], [stderr]) 56 AT_CHECK([diff $file ${abs_top_srcdir}/tests/regression/Molecules/ForceAnnealing/post/test-undo2.conf], 0, [ignore], [ignore]) 42 57 43 58 AT_CLEANUP
Note:
See TracChangeset
for help on using the changeset viewer.