University of Michigan Logo

Latest stable release

Download: Source, Documentation

See the user manual for system requirements and build instructions.

On linux distros

All Releases


Released 2015/04/07

Source, Documentation

Bug fixes

  • Fix invalid virials computed in rigid body simulations when multi-particle bodies crossed box boundaries
  • Fix invalid forces/torques for rigid body simulations caused by race conditions
  • Fix compile errors on Mac OS X 10.10
  • Fix invalid pair force computations caused by race conditions
  • Fix invalid neighbour list computations caused by race conditions on Fermi generation GPUs


  • Extremely long running unit tests are now off by default. Enable with -DHOOMD_SKIP_LONG_TESTS=OFF
  • Add additional tests to detect race conditions and memory errors in kernels


Released 2015/03/18

Download: Source, Documentation

Bug fixes

  • Enable builds with intel MPI
  • Silence warnings coming from boost and python headers


Released 2015/01/27

Download: Source, Documentation

Bug fixes

  • Fixed a bug where `linear_interp` would not take a floating point value for zero
  • Provide more useful error messages when cuda drivers are not present
  • Assume device count is 0 when `cudaGetDeviceCount()` returns an error
  • Link to python statically when `ENABLE_STATIC=on`
  • Misc documentation updates


Released 2014/09/09

Download: Source, Documentation

Bug fixes

  • Fixed bug where error messages were truncated and HOOMD exited with a segmentation fault instead (e.g. on Blue Waters)
  • Fixed bug where plug-ins did not load on Blue Waters
  • Fixed compile error with gcc4.4 and cuda5.0
  • Fixed syntax error in read_snapshot()
  • Fixed a bug where init.read_xml throwing an error (or any other command outside of run()) would hang in MPI runs
  • Search the install path for hoomd_script - enable the hoomd executable to be outside of the install tree (useful with cray aprun)
  • Fixed CMake 3.0 warnings
  • Removed dependancy on tr1/random
  • Fixed a bug where ignored images in the r0_file
  • Fixed typos in pair.gauss documentation
  • Fixed compile errors on Ubuntu 12.10
  • Fix failure of integrate.nvt to reach target temperature in analyze.log. The fix is a new symplectic MTK integrate.nvt *ntegrator. Simulation results in hoomd v1.0.0 are correct, just the temperature and velocity outputs are off slightly.
  • Remove MPI from Mac OS X dmg build.
  • Enable import hoomd_script as ...

Other changes

  • Added default compile flag -march=native
  • Support CUDA 6.5
  • Binary builds for CentOS/RHEL 6, Fedora 20, Ubuntu 14.04 LTS, and Ubuntu 12.04 LTS.


Released 2014/05/25

Download: Source, Documentation

New features

  • Support for python 3
  • New NPT integrator capable of flexible coupling schemes
  • Triclinic unit cell support
  • MPI domain decomposition
  • Snapshot save/restore
  • Autotune block sizes at run time
  • Improve performance in small simulation boxes
  • Improve performance with smaller numbers of particles per GPU
  • Full double precision computations on the GPU (compile time option must be enabled, binary builds provided on the download page are single precision)
  • Tabulated bond potential bond.table
  • Tabulated angle potential angle.table
  • Tabulated dihedral potental dihedral.table
  • update.box_resize now accepts period=None to trigger an immediate update of the box without creating a periodic updater
  • update.box_resize now replaces None arguments with the current box parameters
  • init.create_random and init.create_random_polymers can now create random configurations in triclinc and 2D boxes
  • init.create_empty can now create triclinic boxes
  • particle, bond, angle, dihedral, and impropers types can now be named in init.create_empty
  • system.replicate command replicates the simulation box

Bug fixes

  • Fixed a bug where init.create_random_polymers failed when lx,ly,lz were not equal.
  • Fixed a bug in init.create_random_polymers and init.create_random where the separation radius was not accounted for correctly
  • Fixed a bug in bond.* where random crashes would occur when more than one bond type was defined
  • Fixed a bug where dump.dcd did not write the period to the file

Changes that may require updated job scripts

  • integrate.nph: A time scale tau p for the relaxation of the barostat is now required instead of the barostat mass W of the previous release.
    The time scale is the relaxation time the barostat would have at an average temperature T 0 =1, and it is related to the internally used (Andersen) Barostat mass W via W= d N T 0 tau 2 p, where d is the dimensionality and N the number of particles.
  • sorter and nlist are now modules, not variables in the main namespace.
  • Data proxies function correctly in MPI simulations, but are extremely slow. If you use init.create_empty, consider separating the generation step out to a single rank short execution that writes an XML file for the main run.
  • update.box_resize(Lx=...) no longer makes cubic box updates, instead it will keep the current Ly and Lz. Use the L=... shorthand for cubic box updates.
  • All init.** commands now take *data.boxdim objects, instead of hoomd.boxdim (or 3-tuples). We strongly encourage the use of explicit argument names for data.boxdim(). In particular, if hoomd.boxdim(123) was previously used to create a cubic box, it is now required to use data.boxdim(L=123) (CORRECT) instead of data.boxdim(123) (INCORRECT), otherwise a box with unit dimensions along the y and z axes will be created.
  • system.dimensions can no longer be set after initialization. System dimensions are now set during initialization via the data.boxdim interface. The dimensionality of the system can now be queried through
  • no longer accepts 3-tuples. It takes data.boxdim objects.
  • system.dimensions no longer exists. Query the dimensionality of the system from Set the dimensionality of the system by passing an appropriate data.boxdim to an init method.
  • init.create_empty no longer accepts n_*_types. Instead, it now takes a list of strings to name the types.


  • Support for G80, G200 GPUs.
  • dump.bin and read.bin. These will be removed in v1.1 and replaced with a new binary format.


  • OpenMP mult-core execution (replaced with MPI domain decomposition)
  • tune.find_optimal_block_size (replaced by Autotuner)


Released 2013/05/10

Download: Source, Documentation

Bug fixes

  • Fixed a bug where charge.pppm could not be used after init.reset()
  • Data proxies can now set body angular momentum before the first run()
  • Fixed a bug where PPPM forces were incorrect on the GPU


Released 2012/12/19

Download: Source, Documentation

New features

  • Block sizes tuned for K20

Bug fixes

  • Warn user that PPPM ignores rigid body exclusions
  • Document that proxy iterators need to be deleted before init.reset()
  • Fixed a bug where body angular momentum could not be set
  • Fixed a bug where analyze.log would report nan for the pressure tensor in nve and nvt simulations


Released 2012/11/2

Download: Source, Documentation

New features

  • Support for CUDA 5.0
  • Binary builds for Fedora 16 and OpenSUSE 12.1
  • Automatically specify /usr/bin/gcc to nvcc when the configured gcc is not supported

Bug fixes

  • Fixed a compile error with gcc 4.7
  • Fixed a bug where PPPM forces were incorrect with neighborlist exclusions
  • Fixed an issue where boost 1.50 and newer were not detected properly when BOOST_ROOT is set
  • Fixed a bug where accessing force data in python prevented init.reset() from working
  • Fixed a bug that prevented pair.external from logging energy
  • Fixed a unit test that failed randomly


Released 2012/07/27

Download: Source, Documentation

New features

  1. Support for Kepler GPUs (GTX 680)
  2. NPH integration (*integrate.nph*)
  3. Compute full pressure tensor
  4. Example plugin for new bond potentials
  5. New syntax for bond coefficients: bond.bond_coeff.set('type', params)
  6. New external potential: external.periodic applies a periodic potential along one direction (uses include inducing lamellar phases in copolymer systems)
  7. Significant performance increases when running analyze.log,, update.box_resize, update.rescale_temp, or update.zero_momentum with a small period
  8. Command line options may now be overwritten by scripts, ex: options.set_gpu(2)
  9. Added --user command line option to allow user defined options to be passed into job scripts, ex: --user="-N=5 -phi=0.56"
  10. Added table.set_from_file method to enable reading table based pair potentials from a file
  11. Added --notice-level command line option to control how much extra information is printed during a run. Set to 0 to disable, or any value up to 10. At 10, verbose debugging information is printed.
  12. Added --msg-file command line option which redirects the message output to a file
  13. New pair potential pair.force_shifted_lj : Implements

Bug fixes

  1. Fixed a bug where FENE bonds were sometimes computed incorrectly
  2. Fixed a bug where pressure was computed incorrectly when using pair.dpd or pair.dpdlj
  3. Fixed a bug where using OpenMP and CUDA at the same time caused invalid memory accesses
  4. Fixed a bug where RPM packages did not work on systems where the CUDA toolkit was not installed
  5. Fixed a bug where rigid body velocities were not set from python
  6. Disabled OpenMP builds on Mac OS X. HOOMD-blue w/ openmp enabled crashes due to bugs in Apple's OpenMP implementation.
  7. Fixed a bug that allowed users to provide invalid rigid body data and cause a seg fault.
  8. Fixed a bug where using PPPM resulted in error messages on program exit.

API changes

  1. Bond potentials rewritten with template evaluators
  2. External potentials use template evaluators
  3. Complete rewrite of ParticleData - may break existing plugins
  4. Bond/Angle/Dihedral data structures rewritten
    1. The GPU specific data structures are now generated on the GPU
  5. DPDThermo and DPDLJThermo are now processed by the same template class
  6. Headers that cannot be included by nvcc now throw an error when they are
  7. CUDA 4.0 is the new minimum requirement
  8. Rewrote BoxDim to internally handle minimum image conventions
  9. HOOMD now only compiles ptx code for the newest architecture, this halves the executable file size
  10. New Messenger class for global control of messages printed to the screen / directed to a file.

Testing changes

  1. Automated test suite now performs tests on OpenMPI + CUDA builds
  2. Valgrind tests added back into automated test suite
  3. Added CPU test in bd_ridid_updater_tests
  4. ctest -S scripts can now set parallel makes (with cmake > 2.8.2)

Older versions

Archived source is available in the downloads directory or via the HOOMD-blue git repository. Older change log entries are available in the project wiki