diff --git a/src/openmmio.py b/src/openmmio.py index 038f2efa3..66be55a7e 100644 --- a/src/openmmio.py +++ b/src/openmmio.py @@ -1288,12 +1288,15 @@ def normal_modes(self, shot=0, optimize=True, for_hessian_target=False): def _update_positions(self, X1, disable_vsite): """A convenience method for updating the positions of the simulation context.""" + # check if we have units + if isinstance(X1, numpy.ndarray): + X1 = X1 * angstrom if disable_vsite: - self.simulation.context.setPositions(X1 * angstrom) + self.simulation.context.setPositions(X1) else: # Create virtual sites before setting positions - mod = Modeller(self.pdb.topology, X1*angstrom) + mod = Modeller(self.pdb.topology, X1) mod.addExtraParticles(self.forcefield) self.simulation.context.setPositions(ResetVirtualSites_fast(mod.getPositions(), self.vsinfo)) diff --git a/src/smirnoffio.py b/src/smirnoffio.py index dab32d84e..19376900b 100644 --- a/src/smirnoffio.py +++ b/src/smirnoffio.py @@ -534,7 +534,7 @@ def _update_positions(self, X1, disable_vsite): else: X1 = (X1 + [Vec3(0.0, 0.0, 0.0)] * n_v_sites) * angstrom - self.simulation.context.setPositions(X1 * angstrom) + self.simulation.context.setPositions(X1) self.simulation.context.computeVirtualSites() def interaction_energy(self, fraga, fragb):