THE GLOTZER GROUP
Particle Simulations with HOOMD-blue
Joshua A. Anderson
NVIDIA GTC April 7, 2016 9:00-9:50am
S6256
Particle Simulations with HOOMD-blue Joshua A. Anderson S6256 - - PowerPoint PPT Presentation
Particle Simulations with HOOMD-blue Joshua A. Anderson S6256 NVIDIA GTC April 7, 2016 9:00-9:50am T HE G LOTZER G ROUP HOOMD-blue General purpose particle simulation toolkit Molecular dynamics, hard particle Monte Carlo Executes
THE GLOTZER GROUP
NVIDIA GTC April 7, 2016 9:00-9:50am
S6256
THE GLOTZER GROUP
2
THE GLOTZER GROUP
3
THE GLOTZER GROUP
4
THE GLOTZER GROUP
5
Quasicrystal formation Microspheres Shape allophiles Active particles Digital alchemy Hexatic phases
THE GLOTZER GROUP
6
Compute interactions
THE GLOTZER GROUP
7
Random trial move Accept or reject
Joshua A Anderson, M Eric Irrgang, Sharon C Glotzer (2016) Scalable Metropolis Monte Carlo for simulation of hard shapes, Computer Physics Communications
THE GLOTZER GROUP
8
+ See GTC 2014 talk
THE GLOTZER GROUP
9
(a) (b) Time (0.5 ms total) Thread
Initialization Trial move Circumsphere check Overlap check Overlap divergence Early exit divergence
THE GLOTZER GROUP
10
THE GLOTZER GROUP
11
THE GLOTZER GROUP
12
THE GLOTZER GROUP
13
THE GLOTZER GROUP
14
THE GLOTZER GROUP
15
THE GLOTZER GROUP
16
import hoomd from hoomd import md hoomd.context.initialize(); hoomd.init.read_gsd(filename='polymers.gsd') nl = hoomd.md.nlist.cell() dpd = md.pair.dpd(r_cut=1.0, T=1.0, nlist=nl) nl.reset_exclusions() dpd.pair_coeff.set('A', 'A', A=25.0, gamma = 4.5) dpd.pair_coeff.set('A', 'B', A=80.0, gamma = 4.5) dpd.pair_coeff.set('B', 'B', A=25.0, gamma = 4.5) harmonic = hoomd.md.bond.harmonic() harmonic.bond_coeff.set('polymer', k=330.0, r0=0.84) md.integrate.mode_standard(dt=0.02) md.integrate.nve(group=hoomd.group.all()) hoomd.run(10000)
THE GLOTZER GROUP
17
THE GLOTZER GROUP
THE GLOTZER GROUP
19
import hoomd, numpy from hoomd import md hoomd.context.initialize() hoomd.init.read_gsd('active.gsd') all = hoomd.group.all() N = len(all) nl = hoomd.md.nlist.cell() lj = md.pair.lj(r_cut=1.0, nlist=nl) lj.pair_coeff.set('A', 'A', epsilon=1.0, sigma=1.0/2**(1.0/6.0)) activity = [ (((numpy.random.rand(3)
for i in range(N): activity[i][2] = 0; activity[i] = tuple(activity[i]) active_force = md.force.active(group=all, seed=123, f_lst=activity, rotation_diff=0.005,
md.integrate.mode_standard(dt=0.001) bd = md.integrate.brownian(group=all, T=0.0, seed=123, dscale=1.0) hoomd.run(100000)
THE GLOTZER GROUP
20
THE GLOTZER GROUP
21
Panagiotopoulos, Comput. Phys. Commun., Mar. 2016.
THE GLOTZER GROUP
22
import hoomd, numpy from hoomd import md hoomd.context.initialize() hoomd.init.read_gsd('bigsmall.gsd') nl = md.nlist.tree() lj = md.pair.slj(r_cut=2**(1.0/6.0), nlist=nl) lj.pair_coeff.set('A', 'A', epsilon=1.0, sigma=1.0) md.integrate.mode_standard(dt=0.005) lvn = md.integrate.langevin(group=hoomd.group.all(), T=1.0, seed=123) lvn.set_gamma('A', 1.0) hoomd.run(3000000)
THE GLOTZER GROUP
23
THE GLOTZER GROUP
24
THE GLOTZER GROUP
25
THE GLOTZER GROUP
26
THE GLOTZER GROUP
27
THE GLOTZER GROUP
28
THE GLOTZER GROUP
THE GLOTZER GROUP
THE GLOTZER GROUP
31
THE GLOTZER GROUP
32