def test_convex_polyhedron(self): context.initialize() self.system = hoomd.init.read_gsd(filename='init.gsd') with self.assertRaises(RuntimeError): self.mc = hpmc.integrate.convex_polyhedron(seed=2234, d=0.3, a=0.4, restore_state=True);
def setUp(self): self._name = None; hexuc = hoomd.lattice.hex(a=2.0); system = init.read_snapshot(hexuc.get_snapshot()); system.replicate(nx=8, ny=8, nz=1); self.snapshot2d = system.take_snapshot(particles=True); context.initialize(); bccuc = hoomd.lattice.bcc(a=4.0); system = init.read_snapshot(bccuc.get_snapshot()); system.replicate(nx=4, ny=4, nz=4); self.snapshot3d = system.take_snapshot(particles=True); # self.snapshot3d = data.make_snapshot(N=20, box=system.box, particle_types=['A']); context.initialize(); v2d = 0.33*np.array([(-1,-1), (1,-1), (1,1), (-1,1)]); v2dup = v2d+0.1*np.array([(1,-1), (-1,-1), (1,-1), (1,1)]); r = 0.1234; rup = 0.3; v3d = 0.33*np.array([(1,1,1), (1,-1,1), (-1,-1,1), (-1,1,1),(1,1,-1), (1,-1,-1), (-1,-1,-1), (-1,1,-1)]); v3dup = v3d + 0.1*np.array([(-1,1,-1), (1,1,1), (1,-1,-1), (-1,1,-1),(-1,-1,-1), (1,1,1), (-1,1,-1), (-1,1,1)]); self.a = 0.5; self.d = 0.5; self.params = dict( sphere=dict(first=dict(diameter=1.5), second=dict(diameter=3.0)), ellipsoid=dict(first=dict(a=0.5, b=0.54, c=0.35), second=dict(a=0.98*0.5, b=1.05*0.54, c=1.1*0.35)), convex_polygon=dict(first=dict(vertices=v2d), second=dict(vertices=v2dup)), convex_spheropolygon=dict(first=dict(vertices=v2d, sweep_radius=r), second=dict(vertices=v2dup, sweep_radius=rup)), simple_polygon=dict(first=dict(vertices=v2d), second=dict(vertices=v2dup)), convex_polyhedron=dict(first=dict(vertices=v3d), second=dict(vertices=v3dup)), convex_spheropolyhedron=dict(first=dict(vertices=v3d, sweep_radius=r), second=dict(vertices=v3dup, sweep_radius=rup)) )
def tearDown(self): del self.mc del self.patch del self.snapshot del self.log context.initialize() context.current.device.gpu_error_checking = True
def setUp(self): self._name = None; hexuc = hoomd.lattice.hex(a=2.0); system = init.read_snapshot(hexuc.get_snapshot()); system.replicate(nx=8, ny=8, nz=1); self.snapshot2d = system.take_snapshot(particles=True); context.initialize(); bccuc = hoomd.lattice.bcc(a=4.0); system = init.read_snapshot(bccuc.get_snapshot()); system.replicate(nx=4, ny=4, nz=4); self.snapshot3d = system.take_snapshot(particles=True); # self.snapshot3d = data.make_snapshot(N=20, box=system.box, particle_types=['A']); context.initialize(); v2d = 0.33*np.array([(-1,-1), (1,-1), (1,1), (-1,1)]); v2dup = v2d+0.1*np.array([(1,-1), (-1,-1), (1,-1), (1,1)]); r = 0.1234; rup = 0.3; v3d = 0.33*np.array([(1,1,1), (1,-1,1), (-1,-1,1), (-1,1,1),(1,1,-1), (1,-1,-1), (-1,-1,-1), (-1,1,-1)]); v3dup = v3d + 0.1*np.array([(-1,1,-1), (1,1,1), (1,-1,-1), (-1,1,-1),(-1,-1,-1), (1,1,1), (-1,1,-1), (-1,1,1)]); self.a = 0.5; self.d = 0.5; self.params = dict( sphere=dict(first=dict(diameter=1.5,orientable=False), second=dict(diameter=3.0,orientable=True)), ellipsoid=dict(first=dict(a=0.5, b=0.54, c=0.35), second=dict(a=0.98*0.5, b=1.05*0.54, c=1.1*0.35)), convex_polygon=dict(first=dict(vertices=v2d), second=dict(vertices=v2dup)), convex_spheropolygon=dict(first=dict(vertices=v2d, sweep_radius=r), second=dict(vertices=v2dup, sweep_radius=rup)), simple_polygon=dict(first=dict(vertices=v2d), second=dict(vertices=v2dup)), convex_polyhedron=dict(first=dict(vertices=v3d), second=dict(vertices=v3dup)), convex_spheropolyhedron=dict(first=dict(vertices=v3d, sweep_radius=r), second=dict(vertices=v3dup, sweep_radius=rup)) )
def tearDown(self): del self.lattice del self.gsd del self.system filename = "init.gsd" if hoomd.comm.get_rank() == 0 and os.path.exists(filename): os.remove(filename); context.initialize()
def setUp(self): context.initialize() self.lattice = hoomd.lattice.sc(a=1.5, type_name='A'); self.system = hoomd.init.create_lattice(self.lattice, n=3); self.gsd = hoomd.dump.gsd('init.gsd', period=100, group=hoomd.group.all(), overwrite=True); self.gsd.write_restart();
def tearDown(self): del self.lattice del self.gsd del self.system filename = "init.gsd" if hoomd.context.current.device.comm.rank == 0 and os.path.exists(filename): os.remove(filename); context.initialize()
def tearDown(self): del self.lattice del self.gsd del self.system filename = "init.gsd" if hoomd.comm.get_rank() == 0 and os.path.exists(filename): os.remove(filename) context.initialize()
def tearDown(self): del self.mc del self.patch del self.snapshot del self.log context.initialize()
def test_access(self): N = 2 L = 10 context.initialize() self.snapshot = data.make_snapshot(N=N, box=data.boxdim(L=L, dimensions=2), particle_types=['A']) # sphere diam = 1.125 self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.sphere(seed=2398, d=0.0) self.mc.shape_param.set('A', diameter=diam) self.assertAlmostEqual(self.mc.shape_param['A'].diameter, diam) del self.mc del self.system context.initialize() # ellipsoid a = 1.125 b = 0.238 c = 2.25 self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.ellipsoid(seed=2398, d=0.0) self.mc.shape_param.set('A', a=a, b=b, c=c) self.assertAlmostEqual(self.mc.shape_param['A'].a, a) self.assertAlmostEqual(self.mc.shape_param['A'].b, b) self.assertAlmostEqual(self.mc.shape_param['A'].c, c) del self.mc del self.system context.initialize() # convex_polygon v = [(-1, -1), (1, -1), (1, 1), (-1, 1)] self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.convex_polygon(seed=2398, d=0.1, a=0.1) self.mc.shape_param.set('A', vertices=v) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) del self.mc del self.system context.initialize() # convex_spheropolygon v = [(-1, -1), (1, -1), (1, 1), (-1, 1)] r = 0.1234 self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.convex_spheropolygon(seed=2398, d=0.1, a=0.1) self.mc.shape_param.set('A', vertices=v, sweep_radius=r) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) self.assertAlmostEqual(self.mc.shape_param['A'].sweep_radius, r) del self.mc del self.system context.initialize() #simple_polygon v = [(-1, -1), (1, -1), (1, 1), (-1, 1)] self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.simple_polygon(seed=2398, d=0.1, a=0.1) self.mc.shape_param.set('A', vertices=v) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) del self.mc del self.system context.initialize() # polyhedron import math v = [(-0.5, -0.5, 0), (-0.5, 0.5, 0), (0.5, -0.5, 0), (0.5, 0.5, 0), (0, 0, 1.0 / math.sqrt(2)), (0, 0, -1.0 / math.sqrt(2))] f = [(0, 4, 1), (1, 4, 2), (2, 4, 3), (3, 4, 0), (0, 5, 1), (1, 5, 2), (2, 5, 3), (3, 5, 0)] r = 0.0 self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.polyhedron(seed=10) self.mc.shape_param.set('A', vertices=v, faces=f, sweep_radius=r) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) diff = (np.array(f) - np.array(self.mc.shape_param['A'].faces)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) self.assertAlmostEqual(self.mc.shape_param['A'].sweep_radius, r) del self.mc del self.system context.initialize() # convex_polyhedron v = [(1, 1, 1), (1, -1, 1), (-1, -1, 1), (-1, 1, 1), (1, 1, -1), (1, -1, -1), (-1, -1, -1), (-1, 1, -1)] self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.convex_polyhedron(seed=2398, d=0.1, a=0.1) self.mc.shape_param.set('A', vertices=v) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) del self.mc del self.system context.initialize() # convex_spheropolyhedron v = [(1, 1, 1), (1, -1, 1), (-1, -1, 1), (-1, 1, 1), (1, 1, -1), (1, -1, -1), (-1, -1, -1), (-1, 1, -1)] r = 0.1234 self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.convex_spheropolyhedron(seed=2398, d=0.1, a=0.1) self.mc.shape_param.set('A', vertices=v, sweep_radius=r) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) self.assertAlmostEqual(self.mc.shape_param['A'].sweep_radius, r) del self.mc del self.system context.initialize() # faceted_sphere v = [(-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] offs = [-1] * 6 norms = [(-1, 0, 0), (1, 0, 0), ( 0, 1, 0, ), (0, -1, 0), (0, 0, 1), (0, 0, -1)] diam = 2 orig = (0, 0, 0) self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.faceted_sphere(seed=10) self.mc.shape_param.set('A', normals=norms, offsets=offs, vertices=v, diameter=diam, origin=orig) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) diff = (np.array(offs) - np.array(self.mc.shape_param['A'].offsets)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) diff = (np.array(norms) - np.array(self.mc.shape_param['A'].normals)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) diff = (np.array(orig) - np.array(self.mc.shape_param['A'].origin)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) self.assertAlmostEqual(self.mc.shape_param['A'].diameter, diam) del self.mc del self.system context.initialize() # sphinx # GPU Sphinx is not built on most the time if not hoomd.context.current.device.cpp_exec_conf.isCUDAEnabled(): cent = [(0, 0, 0), (0, 0, 1.15), (0, 0, -1.15)] diams = [2, -2.2, -2.2] self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.sphinx(seed=10) self.mc.shape_param.set('A', diameters=diams, centers=cent) diff = (np.array(cent) - np.array(self.mc.shape_param['A'].centers)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) diff = (np.array(diams) - np.array(self.mc.shape_param['A'].diameters)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) del self.mc del self.system context.initialize() # sphere_union cent = [(0, 0, 0), (0, 0, 1.15), (0, 0, -1.15)] diams = [2, 2.2, 1.75] self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.sphere_union(seed=10) self.mc.shape_param.set('A', diameters=diams, centers=cent) diff = (np.array(cent) - np.array(self.mc.shape_param['A'].centers)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) for i, m in enumerate(self.mc.shape_param['A'].members): self.assertAlmostEqual(m.diameter, diams[i]) del self.mc del self.system del self.snapshot context.initialize()
try: from hoomd import context import hoomd except ImportError: from hoomd_script import context HOOMD_v1 = True else: HOOMD_v1 = False hoomd.util.quiet_status() except ImportError: HOOMD = False else: HOOMD = True if HOOMD: context.initialize('--mode=cpu') if not HOOMD_v1: hoomd.option.set_notice_level(0) try: if HOOMD_v1: from hoomd_plugins import hpmc else: from hoomd import hpmc except ImportError: HPMC = False else: HPMC = True else: HPMC = False
def tearDown(self): context.initialize()
from __future__ import division from __future__ import print_function import hoomd from hoomd import context, data, init from hoomd import hpmc import unittest import numpy as np import math context.initialize() class map_overlaps_test(unittest.TestCase): def setUp(self): snap = data.make_snapshot(N=0,box=data.boxdim(Lx = 10, Ly = 10, Lz = 10)) self.system = init.read_snapshot(snap) self.mc = hpmc.integrate.convex_polyhedron(seed=123) def tearDown(self): context.initialize() def test_single_overlap(self): # two cubes, with one rotated by 45 degrees around two axes qi = [1,0,0,0] #alpha = math.pi/4.0; #q1 = (math.cos(alpha/2),math.sin(alpha/2),0,0) #q2 = (math.cos(alpha/2),0,0,math.sin(alpha/2))
def test_lattice(self): N = 128 latticeq = [[1, 0, 0, 0] for i in range(N)] k = 10.0 kalt = np.exp(15) dx2d = np.array([0.1, 0.1, 0.0]) theta = np.pi / 6 eng_check2d = round(N * k * dx2d.dot(dx2d), 3) dx3d = np.array([0.1, 0.1, 0.1]) eng_check3d = round(N * k * dx3d.dot(dx3d), 3) dq = np.array([np.cos(theta / 2.0), 0., 0., np.sin(theta / 2)]) ddq = np.array([1., 0., 0., 0.]) - dq eng_checkq = round(10.0 * k * N * ddq.dot(ddq), 3) hexuc = hoomd.lattice.hex(a=2.0) self.system = init.read_snapshot(hexuc.get_snapshot()) self.system.replicate(nx=8, ny=8, nz=1) self.snapshot2d = self.system.take_snapshot(particles=True) #data.make_snapshot(N=N, box=data.boxdim(L=L, dimensions=3), particle_types=['A']) lattice2d = [] if hoomd.comm.get_rank() == 0: lattice2d = self.snapshot2d.particles.position[:] self.snapshot2d_s = data.make_snapshot(N=N, box=self.system.box, particle_types=['A']) if hoomd.comm.get_rank() == 0: self.snapshot2d_s.particles.position[:] = self.snapshot2d.particles.position[:] + dx2d self.snapshot2d_s.particles.orientation[:] = np.array( [dq for _ in range(N)]) del self.system context.initialize() bccuc = hoomd.lattice.bcc(a=2.0) self.system = init.read_snapshot(bccuc.get_snapshot()) self.system.replicate(nx=4, ny=4, nz=4) self.snapshot3d = self.system.take_snapshot(particles=True) #data.make_snapshot(N=N, box=data.boxdim(L=L, dimensions=3), particle_types=['A']) lattice3d = [] if hoomd.comm.get_rank() == 0: lattice3d = self.snapshot3d.particles.position[:] self.snapshot3d_s = data.make_snapshot(N=N, box=self.system.box, particle_types=['A']) if hoomd.comm.get_rank() == 0: self.snapshot3d_s.particles.position[:] = self.snapshot3d.particles.position[:] + dx3d self.snapshot3d_s.particles.orientation[:] = np.array( [dq for _ in range(N)]) del self.system context.initialize() # sphere print("****************************************") print("* sphere *") print("****************************************") # d = 0.0014284726343172743, p = 0.20123046875 uein = 1.5 # kT diam = 1.0 self.system = init.read_snapshot(self.snapshot3d) self.mc = hpmc.integrate.sphere(seed=2398, d=0.0) self.mc.shape_param.set('A', diameter=diam) self.run_test(latticep=lattice3d, latticeq=[], k=k, kalt=kalt, q=0, qalt=0, uein=1.5, snapshot_s=self.snapshot3d_s, eng_check=eng_check3d, d=0.001428) self.tear_down() # ellipsoid print("****************************************") print("* ellipsoid *") print("****************************************") # a = 0.00038920117896296716, p = 0.2035860456051452 # d = 0.0014225507698958867, p = 0.19295361127422195 a = 0.5 b = 0.54 c = 0.35 uein = 3.0 # kT self.system = init.read_snapshot(self.snapshot3d) self.mc = hpmc.integrate.ellipsoid(seed=2398, d=0.0, a=0.0) self.mc.shape_param.set('A', a=a, b=b, c=c) self.run_test(latticep=lattice3d, latticeq=latticeq, k=k, kalt=kalt, q=k * 10.0, qalt=kalt * 10.0, uein=3.0, snapshot_s=self.snapshot3d_s, eng_check=(eng_check3d + eng_checkq), a=0.000389, d=0.001423) self.tear_down() # convex_polygon print("****************************************") print("* convex_polygon *") print("****************************************") # a = 0.001957745443687172, p = 0.19863574351978172 # d = 0.0017185407622231329, p = 0.2004306126443531 self.system = init.read_snapshot(self.snapshot2d) v = 0.33 * np.array([(-1, -1), (1, -1), (1, 1), (-1, 1)]) self.mc = hpmc.integrate.convex_polygon(seed=2398, d=0.0, a=0.0) self.mc.shape_param.set('A', vertices=v) self.run_test(latticep=lattice2d, latticeq=latticeq, k=k, kalt=kalt, q=k * 10.0, qalt=kalt * 10.0, uein=1.5, snapshot_s=self.snapshot2d_s, eng_check=(eng_check2d + eng_checkq), a=0.001958, d=0.001719) self.tear_down() # convex_spheropolygon print("****************************************") print("* convex_spheropolygon *") print("****************************************") self.system = init.read_snapshot(self.snapshot2d) v = 0.33 * np.array([(-1, -1), (1, -1), (1, 1), (-1, 1)]) r = 0.1234 self.mc = hpmc.integrate.convex_spheropolygon(seed=2398, d=0.0, a=0.0) self.mc.shape_param.set('A', vertices=v, sweep_radius=r) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten() self.run_test(latticep=lattice2d, latticeq=latticeq, k=k, kalt=kalt, q=k * 10.0, qalt=kalt * 10.0, uein=None, snapshot_s=self.snapshot2d_s, eng_check=(eng_check2d + eng_checkq)) self.tear_down() #simple_polygon print("****************************************") print("* simple_polygon *") print("****************************************") self.system = init.read_snapshot(self.snapshot2d) v = 0.33 * np.array([(-1, -1), (1, -1), (1, 1), (-1, 1)]) self.mc = hpmc.integrate.simple_polygon(seed=2398, d=0.0, a=0.0) self.mc.shape_param.set('A', vertices=v) self.run_test(latticep=lattice2d, latticeq=latticeq, k=k, kalt=kalt, q=k * 10.0, qalt=kalt * 10.0, uein=None, snapshot_s=self.snapshot2d_s, eng_check=(eng_check2d + eng_checkq)) self.tear_down() # polyhedron print("****************************************") print("* polyhedron *") print("****************************************") self.system = init.read_snapshot(self.snapshot3d) v = 0.33 * np.array([(-0.5, -0.5, -0.5), (-0.5, -0.5, 0.5), (-0.5, 0.5, -0.5), (-0.5, 0.5, 0.5), (0.5, -0.5, -0.5), (0.5, -0.5, 0.5), (0.5, 0.5, -0.5), (0.5, 0.5, 0.5)]) f = [(7, 3, 1, 5), (7, 5, 4, 6), (7, 6, 2, 3), (3, 2, 0, 1), (0, 2, 6, 4), (1, 0, 4, 5)] r = 0.0 self.mc = hpmc.integrate.polyhedron(seed=10) self.mc.shape_param.set('A', vertices=v, faces=f, sweep_radius=r) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) diff = (np.array(f) - np.array(self.mc.shape_param['A'].faces)).flatten() self.assertAlmostEqual(diff.dot(diff), 0) self.assertAlmostEqual(self.mc.shape_param['A'].sweep_radius, r) del self.mc del self.system context.initialize() # convex_polyhedron print("****************************************") print("* convex_polyhedron *") print("****************************************") #a = 0.00038920117896296716, p = 0.2035860456051452 #d = 0.0014225507698958867, p = 0.19295361127422195 self.system = init.read_snapshot(self.snapshot3d) v = 0.33 * np.array([(1, 1, 1), (1, -1, 1), (-1, -1, 1), (-1, 1, 1), (1, 1, -1), (1, -1, -1), (-1, -1, -1), (-1, 1, -1)]) self.mc = hpmc.integrate.convex_polyhedron(seed=2398, d=0.0, a=0.0) self.mc.shape_param.set('A', vertices=v) self.run_test(latticep=lattice3d, latticeq=latticeq, k=k, kalt=kalt, q=k * 10.0, qalt=kalt * 10.0, uein=3.0, snapshot_s=self.snapshot3d_s, eng_check=(eng_check3d + eng_checkq), a=0.0003892, d=0.00142255) self.tear_down() # convex_spheropolyhedron print("****************************************") print("* convex_spheropolyhedron *") print("****************************************") self.system = init.read_snapshot(self.snapshot3d) v = 0.33 * np.array([(1, 1, 1), (1, -1, 1), (-1, -1, 1), (-1, 1, 1), (1, 1, -1), (1, -1, -1), (-1, -1, -1), (-1, 1, -1)]) r = 0.1234 self.mc = hpmc.integrate.convex_spheropolyhedron(seed=2398, d=0.0, a=0.0) self.mc.shape_param.set('A', vertices=v, sweep_radius=r) self.run_test(latticep=lattice3d, latticeq=latticeq, k=k, kalt=kalt, q=k * 10.0, qalt=kalt * 10.0, uein=None, snapshot_s=self.snapshot3d_s, eng_check=(eng_check3d + eng_checkq)) self.tear_down() # faceted_sphere print("****************************************") print("* faceted_sphere *") print("****************************************") self.system = init.read_snapshot(self.snapshot3d) v = 0.33 * np.array([(-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]) offs = [-1] * 6 norms = [(-1, 0, 0), (1, 0, 0), ( 0, 1, 0, ), (0, -1, 0), (0, 0, 1), (0, 0, -1)] diam = 1.0 orig = (0, 0, 0) self.mc = hpmc.integrate.faceted_sphere(seed=10, d=0.0, a=0.0) self.mc.shape_param.set('A', normals=norms, offsets=offs, vertices=v, diameter=diam, origin=orig) self.run_test(latticep=lattice3d, latticeq=latticeq, k=k, kalt=kalt, q=k * 10.0, qalt=kalt * 10.0, uein=None, snapshot_s=self.snapshot3d_s, eng_check=(eng_check3d + eng_checkq)) self.tear_down() # sphinx print("****************************************") print("* sphinx *") print("****************************************") self.system = init.read_snapshot(self.snapshot3d) cent = [(0, 0, 0), (0, 0, 1.15), (0, 0, -1.15)] diams = [1, -1.2, -1.2] self.mc = hpmc.integrate.sphinx(seed=10, d=0.0, a=0.0) self.mc.shape_param.set('A', diameters=diams, centers=cent) self.run_test(latticep=lattice3d, latticeq=latticeq, k=k, kalt=kalt, q=k * 10.0, qalt=kalt * 10.0, uein=None, snapshot_s=self.snapshot3d_s, eng_check=(eng_check3d + eng_checkq)) self.tear_down() # sphere_union print("****************************************") print("* sphere_union *") print("****************************************") self.system = init.read_snapshot(self.snapshot3d) cent = [(0, 0, 0), (0, 0, 0.15), (0, 0, -0.15)] diams = [1, 1, 1] self.mc = hpmc.integrate.sphere_union(seed=10, d=0.0, a=0.0) self.mc.shape_param.set('A', diameters=diams, centers=cent) self.run_test(latticep=lattice3d, latticeq=latticeq, k=k, kalt=kalt, q=k * 10.0, qalt=kalt * 10.0, uein=None, snapshot_s=self.snapshot3d_s, eng_check=(eng_check3d + eng_checkq)) self.tear_down()
def tear_down(self): del self.gsd del self.mc del self.system context.initialize()
from __future__ import division from __future__ import print_function import hoomd from hoomd import context, data, init from hoomd import hpmc import unittest import os import numpy as np import itertools import sys context.initialize() def create_empty(**kwargs): snap = data.make_snapshot(**kwargs) return init.read_snapshot(snap) class hpmc_gsd_state(unittest.TestCase): def setUp(self): self._name = None hexuc = hoomd.lattice.hex(a=2.0) system = init.read_snapshot(hexuc.get_snapshot()) system.replicate(nx=8, ny=8, nz=1) self.snapshot2d = system.take_snapshot(particles=True) context.initialize() bccuc = hoomd.lattice.bcc(a=4.0) system = init.read_snapshot(bccuc.get_snapshot())
def tearDown(self): del self.logger del self.patch context.initialize() context.current.device.gpu_error_checking = True
def tear_down(self): del self.mc del self.system del self.lattice del self.remove_drift context.initialize()
def tearDown(self): del self.logger del self.patch context.initialize()
def test_access(self): N=2 L=10 context.initialize() self.snapshot = data.make_snapshot(N=N, box=data.boxdim(L=L, dimensions=2), particle_types=['A']) # sphere diam = 1.125; self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.sphere(seed=2398, d=0.0) self.mc.shape_param.set('A', diameter=diam) self.assertAlmostEqual(self.mc.shape_param['A'].diameter, diam); del self.mc del self.system context.initialize() # ellipsoid a = 1.125; b = 0.238; c = 2.25; self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.ellipsoid(seed=2398, d=0.0) self.mc.shape_param.set('A', a=a, b=b, c=c) self.assertAlmostEqual(self.mc.shape_param['A'].a, a); self.assertAlmostEqual(self.mc.shape_param['A'].b, b); self.assertAlmostEqual(self.mc.shape_param['A'].c, c); del self.mc del self.system context.initialize() # convex_polygon v = [(-1,-1), (1,-1), (1,1), (-1,1)]; self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.convex_polygon(seed=2398, d=0.1, a=0.1) self.mc.shape_param.set('A', vertices=v) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); del self.mc del self.system context.initialize() # convex_spheropolygon v = [(-1,-1), (1,-1), (1,1), (-1,1)]; r = 0.1234; self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.convex_spheropolygon(seed=2398, d=0.1, a=0.1) self.mc.shape_param.set('A', vertices=v, sweep_radius=r) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); self.assertAlmostEqual(self.mc.shape_param['A'].sweep_radius, r); del self.mc del self.system context.initialize() #simple_polygon v = [(-1,-1), (1,-1), (1,1), (-1,1)]; self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.simple_polygon(seed=2398, d=0.1, a=0.1) self.mc.shape_param.set('A', vertices=v) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); del self.mc del self.system context.initialize() # polyhedron import math v = [(-0.5, -0.5, 0), (-0.5, 0.5, 0), (0.5, -0.5, 0), (0.5, 0.5, 0), (0,0, 1.0/math.sqrt(2)),(0,0,-1.0/math.sqrt(2))]; f = [(0,4,1),(1,4,2),(2,4,3),(3,4,0),(0,5,1),(1,5,2),(2,5,3),(3,5,0)] r = 0.0; self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.polyhedron(seed=10); self.mc.shape_param.set('A', vertices=v, faces =f, sweep_radius=r); diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); diff = (np.array(f) - np.array(self.mc.shape_param['A'].faces)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); self.assertAlmostEqual(self.mc.shape_param['A'].sweep_radius, r); del self.mc del self.system context.initialize() # convex_polyhedron v = [(1,1,1), (1,-1,1), (-1,-1,1), (-1,1,1),(1,1,-1), (1,-1,-1), (-1,-1,-1), (-1,1,-1)]; self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.convex_polyhedron(seed=2398, d=0.1, a=0.1) self.mc.shape_param.set('A', vertices=v) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); del self.mc del self.system context.initialize() # convex_spheropolyhedron v = [(1,1,1), (1,-1,1), (-1,-1,1), (-1,1,1),(1,1,-1), (1,-1,-1), (-1,-1,-1), (-1,1,-1)]; r = 0.1234; self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.convex_spheropolyhedron(seed=2398, d=0.1, a=0.1) self.mc.shape_param.set('A', vertices=v, sweep_radius=r) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); self.assertAlmostEqual(self.mc.shape_param['A'].sweep_radius, r); del self.mc del self.system context.initialize() # faceted_sphere v = [(-1,-1,-1),(-1,-1,1),(-1,1,-1),(-1,1,1),(1,-1,-1),(1,-1,1),(1,1,-1),(1,1,1)]; offs = [-1]*6; norms =[(-1,0,0), (1,0,0), (0,1,0,), (0,-1,0), (0,0,1), (0,0,-1)]; diam = 2; orig = (0,0,0); self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.faceted_sphere(seed=10); self.mc.shape_param.set('A', normals=norms, offsets=offs, vertices=v, diameter=diam, origin=orig); diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); diff = (np.array(offs) - np.array(self.mc.shape_param['A'].offsets)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); diff = (np.array(norms) - np.array(self.mc.shape_param['A'].normals)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); diff = (np.array(orig) - np.array(self.mc.shape_param['A'].origin)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); self.assertAlmostEqual(self.mc.shape_param['A'].diameter, diam); del self.mc del self.system context.initialize() # sphinx # GPU Sphinx is not built on most the time if not hoomd.context.exec_conf.isCUDAEnabled(): cent = [(0,0,0), (0,0,1.15), (0,0,-1.15)] diams = [2,-2.2,-2.2]; self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.sphinx(seed=10); self.mc.shape_param.set('A', diameters=diams, centers=cent); diff = (np.array(cent) - np.array(self.mc.shape_param['A'].centers)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); diff = (np.array(diams) - np.array(self.mc.shape_param['A'].diameters)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); del self.mc del self.system context.initialize() # sphere_union cent = [(0,0,0), (0,0,1.15), (0,0,-1.15)] diams = [2,2.2,1.75]; self.system = init.read_snapshot(self.snapshot) self.mc = hpmc.integrate.sphere_union(seed=10); self.mc.shape_param.set('A', diameters=diams, centers=cent); diff = (np.array(cent) - np.array(self.mc.shape_param['A'].centers)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); for i,m in enumerate(self.mc.shape_param['A'].members): self.assertAlmostEqual(m.diameter, diams[i]); del self.mc del self.system del self.snapshot context.initialize()
def test_lattice(self): N=128; latticeq = [[1,0,0,0] for i in range(N)]; k = 10.0; kalt = np.exp(15); dx2d = np.array([0.1, 0.1, 0.0]); theta = np.pi/6; eng_check2d = round(N*k*dx2d.dot(dx2d), 3); dx3d = np.array([0.1, 0.1, 0.1]); eng_check3d = round(N*k*dx3d.dot(dx3d), 3); dq = np.array([np.cos(theta/2.0),0.,0.,np.sin(theta/2)]) ddq = np.array([1.,0.,0.,0.]) - dq; eng_checkq = round(10.0*k*N*ddq.dot(ddq), 3); hexuc = hoomd.lattice.hex(a=2.0); self.system = init.read_snapshot(hexuc.get_snapshot()); self.system.replicate(nx=8, ny=8, nz=1); self.snapshot2d = self.system.take_snapshot(particles=True); #data.make_snapshot(N=N, box=data.boxdim(L=L, dimensions=3), particle_types=['A']) lattice2d = []; if hoomd.comm.get_rank() == 0: lattice2d = self.snapshot2d.particles.position[:]; self.snapshot2d_s = data.make_snapshot(N=N, box=self.system.box, particle_types=['A']); if hoomd.comm.get_rank() == 0: self.snapshot2d_s.particles.position[:] = self.snapshot2d.particles.position[:]+dx2d; self.snapshot2d_s.particles.orientation[:] = np.array([dq for _ in range(N)]); del self.system context.initialize(); bccuc = hoomd.lattice.bcc(a=2.0); self.system = init.read_snapshot(bccuc.get_snapshot()); self.system.replicate(nx=4, ny=4, nz=4); self.snapshot3d = self.system.take_snapshot(particles=True); #data.make_snapshot(N=N, box=data.boxdim(L=L, dimensions=3), particle_types=['A']) lattice3d = []; if hoomd.comm.get_rank() == 0: lattice3d = self.snapshot3d.particles.position[:]; self.snapshot3d_s = data.make_snapshot(N=N, box=self.system.box, particle_types=['A']); if hoomd.comm.get_rank() == 0: self.snapshot3d_s.particles.position[:] = self.snapshot3d.particles.position[:]+dx3d; self.snapshot3d_s.particles.orientation[:] = np.array([dq for _ in range(N)]); del self.system context.initialize(); # sphere print("****************************************") print("* sphere *") print("****************************************") # d = 0.0014284726343172743, p = 0.20123046875 uein = 1.5 # kT diam = 1.0; self.system = init.read_snapshot(self.snapshot3d) self.mc = hpmc.integrate.sphere(seed=2398, d=0.0) self.mc.shape_param.set('A', diameter=diam) self.run_test(latticep=lattice3d, latticeq=[], k=k, kalt=kalt, q=0, qalt=0, uein=1.5, snapshot_s=self.snapshot3d_s, eng_check=eng_check3d, d=0.001428 ); self.tear_down() # ellipsoid print("****************************************") print("* ellipsoid *") print("****************************************") # a = 0.00038920117896296716, p = 0.2035860456051452 # d = 0.0014225507698958867, p = 0.19295361127422195 a = 0.5; b = 0.54; c = 0.35; uein = 3.0 # kT self.system = init.read_snapshot(self.snapshot3d) self.mc = hpmc.integrate.ellipsoid(seed=2398, d=0.0, a=0.0) self.mc.shape_param.set('A', a=a, b=b, c=c) self.run_test(latticep=lattice3d, latticeq=latticeq, k=k, kalt=kalt, q=k*10.0, qalt=kalt*10.0, uein=3.0, snapshot_s=self.snapshot3d_s, eng_check=(eng_check3d+eng_checkq), a = 0.000389, d = 0.001423); self.tear_down() # convex_polygon print("****************************************") print("* convex_polygon *") print("****************************************") # a = 0.001957745443687172, p = 0.19863574351978172 # d = 0.0017185407622231329, p = 0.2004306126443531 self.system = init.read_snapshot(self.snapshot2d) v = 0.33*np.array([(-1,-1), (1,-1), (1,1), (-1,1)]); self.mc = hpmc.integrate.convex_polygon(seed=2398, d=0.0, a=0.0) self.mc.shape_param.set('A', vertices=v) self.run_test(latticep=lattice2d, latticeq=latticeq, k=k, kalt=kalt, q=k*10.0, qalt=kalt*10.0, uein=1.5, snapshot_s=self.snapshot2d_s, eng_check=(eng_check2d+eng_checkq), a = 0.001958, d = 0.001719); self.tear_down() # convex_spheropolygon print("****************************************") print("* convex_spheropolygon *") print("****************************************") self.system = init.read_snapshot(self.snapshot2d) v = 0.33*np.array([(-1,-1), (1,-1), (1,1), (-1,1)]); r = 0.1234; self.mc = hpmc.integrate.convex_spheropolygon(seed=2398, d=0.0, a=0.0) self.mc.shape_param.set('A', vertices=v, sweep_radius=r) diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten(); self.run_test(latticep=lattice2d, latticeq=latticeq, k=k, kalt=kalt, q=k*10.0, qalt=kalt*10.0, uein=None, snapshot_s=self.snapshot2d_s, eng_check=(eng_check2d+eng_checkq)); self.tear_down() #simple_polygon print("****************************************") print("* simple_polygon *") print("****************************************") self.system = init.read_snapshot(self.snapshot2d) v = 0.33*np.array([(-1,-1), (1,-1), (1,1), (-1,1)]); self.mc = hpmc.integrate.simple_polygon(seed=2398, d=0.0, a=0.0) self.mc.shape_param.set('A', vertices=v) self.run_test(latticep=lattice2d, latticeq=latticeq, k=k, kalt=kalt, q=k*10.0, qalt=kalt*10.0, uein=None, snapshot_s=self.snapshot2d_s, eng_check=(eng_check2d+eng_checkq)); self.tear_down() # polyhedron print("****************************************") print("* polyhedron *") print("****************************************") self.system = init.read_snapshot(self.snapshot3d) v = 0.33*np.array([(-0.5, -0.5, -0.5), (-0.5, -0.5, 0.5), (-0.5, 0.5, -0.5), (-0.5, 0.5, 0.5), (0.5, -0.5, -0.5), (0.5, -0.5, 0.5), (0.5, 0.5, -0.5), (0.5, 0.5, 0.5)]); f = [(7, 3, 1, 5), (7, 5, 4, 6), (7, 6, 2, 3), (3, 2, 0, 1), (0, 2, 6, 4), (1, 0, 4, 5)]; r = 0.0; self.mc = hpmc.integrate.polyhedron(seed=10); self.mc.shape_param.set('A', vertices=v, faces =f, sweep_radius=r); diff = (np.array(v) - np.array(self.mc.shape_param['A'].vertices)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); diff = (np.array(f) - np.array(self.mc.shape_param['A'].faces)).flatten(); self.assertAlmostEqual(diff.dot(diff), 0); self.assertAlmostEqual(self.mc.shape_param['A'].sweep_radius, r); del self.mc del self.system context.initialize() # convex_polyhedron print("****************************************") print("* convex_polyhedron *") print("****************************************") #a = 0.00038920117896296716, p = 0.2035860456051452 #d = 0.0014225507698958867, p = 0.19295361127422195 self.system = init.read_snapshot(self.snapshot3d) v = 0.33*np.array([(1,1,1), (1,-1,1), (-1,-1,1), (-1,1,1),(1,1,-1), (1,-1,-1), (-1,-1,-1), (-1,1,-1)]); self.mc = hpmc.integrate.convex_polyhedron(seed=2398, d=0.0, a=0.0) self.mc.shape_param.set('A', vertices=v) self.run_test(latticep=lattice3d, latticeq=latticeq, k=k, kalt=kalt, q=k*10.0, qalt=kalt*10.0, uein=3.0, snapshot_s=self.snapshot3d_s, eng_check=(eng_check3d+eng_checkq), a = 0.0003892, d = 0.00142255); self.tear_down() # convex_spheropolyhedron print("****************************************") print("* convex_spheropolyhedron *") print("****************************************") self.system = init.read_snapshot(self.snapshot3d) v = 0.33*np.array([(1,1,1), (1,-1,1), (-1,-1,1), (-1,1,1),(1,1,-1), (1,-1,-1), (-1,-1,-1), (-1,1,-1)]); r = 0.1234; self.mc = hpmc.integrate.convex_spheropolyhedron(seed=2398, d=0.0, a=0.0) self.mc.shape_param.set('A', vertices=v, sweep_radius=r) self.run_test(latticep=lattice3d, latticeq=latticeq, k=k, kalt=kalt, q=k*10.0, qalt=kalt*10.0, uein=None, snapshot_s=self.snapshot3d_s, eng_check=(eng_check3d+eng_checkq)); self.tear_down() # faceted_sphere print("****************************************") print("* faceted_sphere *") print("****************************************") self.system = init.read_snapshot(self.snapshot3d) v = 0.33*np.array([(-1,-1,-1),(-1,-1,1),(-1,1,-1),(-1,1,1),(1,-1,-1),(1,-1,1),(1,1,-1),(1,1,1)]); offs = [-1]*6; norms =[(-1,0,0), (1,0,0), (0,1,0,), (0,-1,0), (0,0,1), (0,0,-1)]; diam = 1.0; orig = (0,0,0); self.mc = hpmc.integrate.faceted_sphere(seed=10, d=0.0, a=0.0); self.mc.shape_param.set('A', normals=norms, offsets=offs, vertices=v, diameter=diam, origin=orig); self.run_test(latticep=lattice3d, latticeq=latticeq, k=k, kalt=kalt, q=k*10.0, qalt=kalt*10.0, uein=None, snapshot_s=self.snapshot3d_s, eng_check=(eng_check3d+eng_checkq)); self.tear_down() # sphinx print("****************************************") print("* sphinx *") print("****************************************") self.system = init.read_snapshot(self.snapshot3d) cent = [(0,0,0), (0,0,1.15), (0,0,-1.15)] diams = [1,-1.2,-1.2]; self.mc = hpmc.integrate.sphinx(seed=10, d=0.0, a=0.0); self.mc.shape_param.set('A', diameters=diams, centers=cent); self.run_test(latticep=lattice3d, latticeq=latticeq, k=k, kalt=kalt, q=k*10.0, qalt=kalt*10.0, uein=None, snapshot_s=self.snapshot3d_s, eng_check=(eng_check3d+eng_checkq)); self.tear_down() # sphere_union print("****************************************") print("* sphere_union *") print("****************************************") self.system = init.read_snapshot(self.snapshot3d) cent = [(0,0,0), (0,0,0.15), (0,0,-0.15)] diams = [1,1,1]; self.mc = hpmc.integrate.sphere_union(seed=10, d=0.0, a=0.0); self.mc.shape_param.set('A', diameters=diams, centers=cent); self.run_test(latticep=lattice3d, latticeq=latticeq, k=k, kalt=kalt, q=k*10.0, qalt=kalt*10.0, uein=None, snapshot_s=self.snapshot3d_s, eng_check=(eng_check3d+eng_checkq)); self.tear_down()
for name, shapedef in frame.shapedef.items(): shapedef.color = None self.assertEqual(frame0, frame1) def test_hpmc_dialect(self): self.read_write_injavis(garnett.samples.POS_HPMC) def test_incsim_dialect(self): self.read_write_injavis(garnett.samples.POS_INCSIM) def test_monotype_dialect(self): self.read_write_injavis(garnett.samples.POS_MONOTYPE) def test_injavis_dialect(self): self.read_write_injavis(garnett.samples.POS_INJAVIS) def test_hpmc_dialect_2d(self): self.read_write_injavis(garnett.samples.POS_HPMC_2D) def test_incsim_dialect_2d(self): self.read_write_injavis(garnett.samples.POS_INCSIM_2D) def test_monotype_dialect_2d(self): self.read_write_injavis(garnett.samples.POS_MONOTYPE_2D) if __name__ == '__main__': context.initialize("--mode=cpu") hoomd.option.set_notice_level(0) unittest.main()