Joshua A. Anderson, Ph.D.

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

Particle Simulation Software


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
hoomd.context.initialize(), type_name='A')
hoomd.init.create_lattice(unitcell=unitcell, n=10)
nl =
lj =, nlist=nl)
lj.pair_coeff.set('A', 'A', epsilon=1.0, sigma=1.0)
all =;, kT=1.2, seed=4)

MD particle update

See the HOOMD-blue homepage for more information.


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


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(
    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,
                        w=500, h=500)

Fresnel sphere example

Analysis Software


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.


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.