Skip to content

Instantly share code, notes, and snippets.

@mpharrigan
Created April 2, 2015 21:43
Show Gist options
  • Save mpharrigan/fa983085a469feb79711 to your computer and use it in GitHub Desktop.
Save mpharrigan/fa983085a469feb79711 to your computer and use it in GitHub Desktop.
Compare energy
from __future__ import print_function
import simtk.openmm as mm
import simtk.openmm.app as app
d = dict(base_dir="RUN2",
state='state.xml')
with open("{base_dir}/system.xml".format(**d)) as f:
system = mm.XmlSerializer.deserialize(f.read())
with open("{base_dir}/{state}".format(**d)) as f:
state = mm.XmlSerializer.deserialize(f.read())
e_serial = state.getPotentialEnergy()
print("Serialized:", e_serial)
with open("{base_dir}/integrator.xml".format(**d)) as f:
integrator = mm.XmlSerializer.deserialize(f.read())
platform = mm.Platform.getPlatformByName("Reference")
context = mm.Context(system, integrator, platform)
context.setState(state)
platform = context.getPlatform()
e_ref = context.getState(getEnergy=True).getPotentialEnergy()
print(platform.getName(), e_ref)
del context, platform, integrator
with open("{base_dir}/integrator.xml".format(**d)) as f:
integrator = mm.XmlSerializer.deserialize(f.read())
platform = mm.Platform.getPlatformByName("OpenCL")
context = mm.Context(system, integrator, platform, {'OpenCLDeviceIndex': '0'})
dev_name = platform.getPropertyValue(context, 'OpenCLDeviceName')
context.setState(state)
platform = context.getPlatform()
e_cl0 = context.getState(getEnergy=True).getPotentialEnergy()
print(platform.getName(), dev_name, e_cl0)
del context, platform, integrator
with open("{base_dir}/integrator.xml".format(**d)) as f:
integrator = mm.XmlSerializer.deserialize(f.read())
platform = mm.Platform.getPlatformByName("OpenCL")
context = mm.Context(system, integrator, platform, {'OpenCLDeviceIndex': '1'})
dev_name = platform.getPropertyValue(context, 'OpenCLDeviceName')
context.setState(state)
platform = context.getPlatform()
e_cl1 = context.getState(getEnergy=True).getPotentialEnergy()
print(platform.getName(), dev_name, e_cl1)
del context, platform, integrator
diff = e_cl0 - e_ref
print("Diff:", diff)
diff = e_cl1 - e_ref
print("Diff:", diff)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment