From 16f9a310681801db3917ed6c7de1a52074d1c716 Mon Sep 17 00:00:00 2001
From: Gabriel Studer <gabriel.studer@unibas.ch>
Date: Tue, 25 Nov 2014 08:04:49 +0100
Subject: [PATCH] the position list in set position should be const

---
 modules/mol/mm/src/simulation.cc | 26 ++++++++++++++++++--------
 modules/mol/mm/src/simulation.hh |  2 +-
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/modules/mol/mm/src/simulation.cc b/modules/mol/mm/src/simulation.cc
index 64aba2ddb..fe15d7329 100644
--- a/modules/mol/mm/src/simulation.cc
+++ b/modules/mol/mm/src/simulation.cc
@@ -180,19 +180,29 @@ geom::Vec3List Simulation::GetForces(){
   return return_vec;
 }
 
-void Simulation::SetPositions(geom::Vec3List& positions, bool in_angstrom){
+void Simulation::SetPositions(const geom::Vec3List& positions, bool in_angstrom){
   if(top_->GetNumAtoms() != positions.size()){
     throw ost::Error("Number of positions does not correspond to number of atoms in topology!");
   }
-  if(in_angstrom) positions /= 10;
   std::vector<OpenMM::Vec3> openmm_positions;
   OpenMM::Vec3 open_mm_vec;
-  for(geom::Vec3List::iterator i = positions.begin();
-      i != positions.end(); ++i){
-    open_mm_vec[0] = (*i)[0];
-    open_mm_vec[1] = (*i)[1];
-    open_mm_vec[2] = (*i)[2];
-    openmm_positions.push_back(open_mm_vec);
+  if(in_angstrom){
+    for(geom::Vec3List::const_iterator i = positions.begin();
+        i != positions.end(); ++i){
+      open_mm_vec[0] = (*i)[0]*0.1;
+      open_mm_vec[1] = (*i)[1]*0.1;
+      open_mm_vec[2] = (*i)[2]*0.1;
+      openmm_positions.push_back(open_mm_vec);
+    }
+  }
+  else{
+    for(geom::Vec3List::const_iterator i = positions.begin();
+        i != positions.end(); ++i){
+      open_mm_vec[0] = (*i)[0];
+      open_mm_vec[1] = (*i)[1];
+      open_mm_vec[2] = (*i)[2];
+      openmm_positions.push_back(open_mm_vec);
+    }
   }
   context_->setPositions(openmm_positions);
 }
diff --git a/modules/mol/mm/src/simulation.hh b/modules/mol/mm/src/simulation.hh
index c17c6e901..3b9182868 100644
--- a/modules/mol/mm/src/simulation.hh
+++ b/modules/mol/mm/src/simulation.hh
@@ -59,7 +59,7 @@ public:
 
   geom::Vec3List GetForces();
 
-  void SetPositions(geom::Vec3List& positions, bool in_angstrom = true);
+  void SetPositions(const geom::Vec3List& positions, bool in_angstrom = true);
 
   void SetVelocities(geom::Vec3List& velocities);
 
-- 
GitLab