From eca30b68da79a3840f290aa1d2ec6eecd1f3e78c Mon Sep 17 00:00:00 2001
From: Gabriel Studer <gabriel.studer@unibas.ch>
Date: Mon, 2 Mar 2015 22:36:59 +0100
Subject: [PATCH] do not expect atom to be at the right position if its already
 there

---
 modules/mol/mm/src/gromacs_block_modifiers.cc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/modules/mol/mm/src/gromacs_block_modifiers.cc b/modules/mol/mm/src/gromacs_block_modifiers.cc
index 55ce401c4..083b0b842 100644
--- a/modules/mol/mm/src/gromacs_block_modifiers.cc
+++ b/modules/mol/mm/src/gromacs_block_modifiers.cc
@@ -260,9 +260,8 @@ void GromacsHydrogenConstructor::ApplyOnResidue(ost::mol::ResidueHandle& res, os
     for(int b=0;b<number;++b){
       //only add hydrogen if not already present!
       atom = res.FindAtom(hydrogen_names[b]);
-      if(!atom.IsValid()){
-        atom = ed.InsertAtom(res,hydrogen_names[b],hydrogen_positions[b],"H");
-      }
+      if(!atom.IsValid()) atom = ed.InsertAtom(res,hydrogen_names[b],hydrogen_positions[b],"H");
+      else ed.SetAtomPos(atom,hydrogen_positions[b]);  
     }
   }
 }
@@ -416,6 +415,7 @@ void GromacsBlockModifier::ApplyOnResidue(ost::mol::ResidueHandle& res, ost::mol
     for(int j=0; j<number; ++j){
       ost::mol::AtomHandle at = res.FindAtom(names[j]);
       if(!at.IsValid()) at = ed.InsertAtom(res,names[j],positions[j],ele);
+      else ed.SetAtomPos(at,positions[j]);
       ed.Connect(at, anchor_atoms[0]);
     }
   }
-- 
GitLab