From 9655895b90948062980e4889d6c23bbe2a1edb4b Mon Sep 17 00:00:00 2001
From: Gabriel Studer <gabriel.studer@unibas.ch>
Date: Sat, 9 Jul 2016 15:07:38 +0200
Subject: [PATCH] Resolve Bug... problems with Angstrom/Nanometer

---
 modules/mol/mm/src/simulation.cc     | 6 +++---
 modules/mol/mm/src/system_creator.cc | 4 ++++
 modules/mol/mm/src/topology.cc       | 2 +-
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/modules/mol/mm/src/simulation.cc b/modules/mol/mm/src/simulation.cc
index d4e411bec..570bbaf80 100644
--- a/modules/mol/mm/src/simulation.cc
+++ b/modules/mol/mm/src/simulation.cc
@@ -718,9 +718,9 @@ void Simulation::ResetHarmonicPositionRestraint(uint index, const geom::Vec3& re
   int particle;
   std::vector<double> parameters;
   restraint_ptr->getParticleParameters(index,particle,parameters);
-  parameters[0] = ref_position[0];
-  parameters[1] = ref_position[1];
-  parameters[2] = ref_position[2];
+  parameters[0] = ref_position[0] * 0.1;
+  parameters[1] = ref_position[1] * 0.1;
+  parameters[2] = ref_position[2] * 0.1;
   parameters[3] = k;
   parameters[4] = x_scale;
   parameters[5] = y_scale;
diff --git a/modules/mol/mm/src/system_creator.cc b/modules/mol/mm/src/system_creator.cc
index 223f7ea9e..aa365ee29 100644
--- a/modules/mol/mm/src/system_creator.cc
+++ b/modules/mol/mm/src/system_creator.cc
@@ -221,6 +221,10 @@ SystemPtr SystemCreator::Create(const TopologyPtr top,
           j != i->second.end(); ++j){
         parameters.push_back(*j);
       }
+      parameters[0] *= 0.1;
+      parameters[1] *= 0.1;
+      parameters[2] *= 0.1;
+      
       position_restraint_force.addParticle(i->first[0], parameters);
     }
   } 
diff --git a/modules/mol/mm/src/topology.cc b/modules/mol/mm/src/topology.cc
index 819d2d500..58a72827d 100644
--- a/modules/mol/mm/src/topology.cc
+++ b/modules/mol/mm/src/topology.cc
@@ -1238,7 +1238,7 @@ void Topology::MergeTop(TopologyPtr other){
   if(!harmonic_position_restraints.empty()){
     for(std::vector<std::pair<Index<1>,std::vector<Real> > >::const_iterator i = harmonic_position_restraints.begin();
         i != harmonic_position_restraints.end(); ++i){
-      geom::Vec3 ref_pos(i->second[0],i->second[1],i->second[2]);
+      geom::Vec3 ref_pos(i->second[0], i->second[1], i->second[2]);
       this->AddHarmonicPositionRestraint(old_num_particles + i->first[0],
                                          ref_pos,
                                          i->second[3],
-- 
GitLab