Joshua A. Anderson, Ph.D.


View Joshua A. Anderson's profile on LinkedIn View Joshua A. Anderson's profile on GitHub

Particle Simulation Software

HOOMD-blue

I lead development of the open source software HOOMD-blue. HOOMD-blue is a general purpose particle simulation tool developed from the ground up for GPUs. It executes Molecular Dynamics simulations with a variety of force fields. Performance scales from a single GPU up to thousands of GPUs.

Jobs are defined and controlled with simple python scripts, which enables enormous flexibility:

import hoomd
import hoomd.md
hoomd.context.initialize()
unitcell=hoomd.lattice.sc(a=2.0, type_name='A')
hoomd.init.create_lattice(unitcell=unitcell, n=10)
nl = hoomd.md.nlist.cell()
lj = hoomd.md.pair.lj(r_cut=3.0, nlist=nl)
lj.pair_coeff.set('A', 'A', epsilon=1.0, sigma=1.0)
all = hoomd.group.all();
hoomd.md.integrate.mode_standard(dt=0.005)
hoomd.md.integrate.langevin(group=all, kT=1.2, seed=4)
hoomd.run(10e3)

MD particle update

See the HOOMD-blue homepage for more information.

HPMC

I lead the development of a High Performance hard particle Monte Carlo (HPMC) component of HOOMD-blue. HPMC implements massively parallel updates for off-lattice Monte Carlo, generalized to 3D anisotropic particles in triclinic boxes. HPMC executes in parallel on many CPU cores, on a single GPU, and in parallel on many GPUs. It supports many particle shapes.

HPMC is available open source in HOOMD-blue v2.0.

  • Sphere
  • Ellipsoid
  • Convex (sphero)polygon
  • Simple polygon
  • Convex (sphero)polyhedron
  • General polyhedron

MC particle update


Visualization Software

Fresnel

I designed and implemented Fresnel, a python library that ray traces publication quality images in real time. There are many rendering tools available, but none have exactly all the features set that a soft matter researcher needs. fresnel provides GPU accelerated path tracing to display and interact with simulation output in real time with full publication quality rendering. Using a simple python interface, users can tie fresnel into their workflow easily. fresnel provides many types of geometry primitives for research visualization:

  • Spheres
  • Spherocylinders
  • Convex polyhedra

Here is an example fresnel script and output:

import fresnel, numpy, PIL
data = numpy.load('spheres.npz')
scene = fresnel.Scene()
scene.lights = fresnel.light.cloudy()
geometry = fresnel.geometry.Sphere(
    scene,
    position = data['position'],
    radius = 0.5,
    outline_width = 0.1)
geometry.material = fresnel.material.Material(
    color = fresnel.color.linear([0.1, 0.8, 0.1]),
    roughness = 0.8,
    specular = 0.2)
out = fresnel.pathtrace(scene,
                        samples=64,
                        light_samples=32,
                        w=500, h=500)

Fresnel sphere example


Analysis Software

Freud

Freud is a group effort in Glotzer group that I have contributed to. It is a collection of common data analysis tools written in C++ for performance and wrapped in python to enable flexible workflows through scripting. Here is a list of a few of the quantities Freud can compute:

  • Radial distribution function
  • Hexatic order parameter
  • Spherical harmonic order parameters
  • Particle clustering

Freud is available open source.

GSD

I lead the development of GSD, which is available open source. GSD is a lightweight container file format designed for extremely efficient sequential and random access of named sequences of data arrays. It is the default file format for HOOMD-blue.