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