Official binaries of HOOMD-blue are available via conda through
the glotzer channel. Conda is a python-centric packaging system
targeted at computational researchers. The default package database includes many useful packages
scikit-learn. Many more user-provided packages are available through
channels on anaconda.org.
$ conda config --add channels glotzer $ conda install hoomd
If you have already installed hoomd in conda, you can upgrade to the latest version:
$ conda update --all
If you find HOOMD-blue useful in your research, please cite it. See the citation page for instructions.
- On Linux (64-bit):
- A recent linux distribution (such as CentOS/RHEL 6, ubuntu 14.04, or newer)
- [optional] NVIDIA drivers 375.26 or newer
- [optional] CUDA capable NVIDIA GPU, compute 3.0 or newer.
- On Mac:
- OSX 10.8 or newer
- Note: Mac builds are not MPI or GPU enabled.
git to clone from HOOMD-blue's bitbucket repository.
See the user manual for system requirements and build instructions.
hoomd.hdf5.logto log quantities in hdf5 format. Matrix quantities can be logged.
dump.gsdcan now save internal state to gsd files. Call
dump_state(object)to save the state for a particular object. The following objects are supported:
- HPMC integrators save shape and trial move size state.
- Add dynamic argument to
hoomd.dump.gsdto specify which quantity categories should be written every frame.
- HOOMD now inter-operates with other python libraries that set the active CUDA device.
- Add generic capability for bidirectional ghost communication, enabling multi body potentials in MPI simulation.
- Added support for a 3 body potential that is harmonic in the local density.
force.activecan now apply torques.
nlist.tuneto quiet the output of the embedded
- Add special pairs as exclusions from neighbor lists.
- Add cosine squared angle potential
md.pair.DLVO()for evaluation of colloidal dispersion and electrostatic forces.
- Add Lennard-Jones 12-8 pair potential.
- Add Buckingham (exp-6) pair potential.
- Add Coulomb 1-4 special_pair potential.
- Check that composite body dimensions are consistent with minimum image convention and generate an error if they are not.
md.integrate.mode.minimize_fire()now supports anisotropic particles (i.e. composite bodies)
md.integrate.mode.minimize_fire()now supports flexible specification of integration methods
md.integrate.npt()/md.integrate.nph()now accept a friction parameter (gamma) for damping out box fluctuations during minimization runs
- Add new command
integrate.mode_standard.reset_methods()to clear NVT and NPT integrator variables
hpmc.integrate.sphere_union()takes new capacity parameter to optimize performance for different shape sizes
hpmc.integrate.polyhedron()takes new capacity parameter to optimize performance for different shape sizes
convex_spheropolyhedronnow support arbitrary numbers of vertices, subject only to memory limitations (
max_vertsis now ignored).
- HPMC integrators restore state from a gsd file read by
init.read_gsdwhen the option
- Deterministic HPMC integration on the GPU (optional):
hpmc.update.boxmc.ln_volume()move allows logarithmic volume moves for fast equilibration.
- New shape:
hpmc.integrate.convex_polyhedron_unionperforms simulations of unions of convex polyhedra.
hpmc.field.callback()now enables MC energy evaluation in a python function
- The option
hpmc.integrate.*allows the selection of a new depletion algorithm that restores the diffusivity of dilute colloids in dense depletant baths
hpmc.integrate.sphere_union()no longer needs the
convex_spheropolyhedronno longer needs the
- The static argument to
hoomd.dump.gsdshould no longer be used. Use dynamic instead.
- Fix alignment error when running implicit depletants on GPU with ntrial > 0.
- HPMC integrators now behave correctly when the user provides different RNG seeds on different ranks.
- Fix a bug where overlapping configurations were produced with
order=7now gives correct results
- The PPPM energy for particles excluded as part of rigid bodies now correctly takes into account the periodic boundary conditions
metal.pair.eamnow produces correct results.
- Optimized performance of HPMC sphere union overlap check and polyhedron shape
- Improved performance of rigid bodies in MPI simulations
- Support triclinic boxes with rigid bodies
- Raise an error when an updater is given a period of 0
- Revised compilation instructions
- Misc documentation improvements
- Fully document
-march=nativeis no longer set by default (this is now a suggestion in the documentation)
- Compiler flags now default to CMake defaults
ENABLE_MPICMake options default OFF. User must explicitly choose to enable optional dependencies.
- HOOMD now builds on powerpc+CUDA platforms (tested on summitdev)
- Improve performance of GPU PPPM force calculation
- Use sphere tree to further improve performance of
- Fix a bug where the log quantity
momentumwas incorrectly reported in MPI simulations.
- Raise an error when the user provides inconsistent
- Fix a bug where
pair.compute_energy()did not report correct results in MPI parallel simulations.
- Fix a bug where make rigid bodies with anisotropic constituent particles did not work on the GPU.
- Fix hoomd compilation after the rebase in the cub repository.
deprecated.dump.xml()now writes correct results when particles have been added or deleted from the simulation.
- Fix a critical bug where
charge.pppm()calculated invalid forces on the GPU
init.read_getarnow correctly restores static quantities when given a particular frame.
- Fix bug where many short calls to
run()caused incorrect results when using
- Fix a bug in the Saru pseudo-random number generator that caused some double-precision values to be drawn outside the valid range [0,1) by a small amount. Both floats and doubles are now drawn on [0,1).
- Fix a bug where coefficients for multi-character unicode type names failed to process in Python 2.
- The Saru generator has been moved into
hoomd/Saru.h, and plugins depending on Saru or SaruGPU will need to update their includes. The
SaruGPUclass has been removed. Use
hoomd::detail::Saruinstead for both CPU and GPU plugins.
- Fix PPM exclusion handling on the CPU
r_cutfor special pairs correctly
- Fix tauP reference in NPH documentation
constrain.rigidon compute 5.x.
- Fixed random seg faults when using sqlite getar archives with LZ4 compression
- Fixed XZ coupling with
- Fixed aspect ratio with non-cubic boxes in
- Fix dump.getar.writeJSON usage with MPI execution
- Fix a bug where integrate.langevin and integrate.brownian correlated RNGs between ranks in multiple CPU execution
- Bump CUB to version 1.6.4 for improved performance on Pascal architectures. CUB is now embedded using a git submodule. Users upgrading existing git repositories should reinitialize their git submodules with
git submodule update --init
- CMake no longer complains when it finds a partial MKL installation.
- Fixed a compile error on Mac
- Fixed a bug re-enabling disabled integration methods
- Fixed a bug where adding particle types to the system failed for anisotropic pair potentials
- scipy is no longer required to execute DEM component unit tests
- Issue a warning when a subsequent call to context.initialize is given different arguments
- DPD now uses the seed from rank 0 to avoid incorrect simulations when users provide different seeds on different ranks
- Miscellaneous documentation updates
- Defer initialization message until context.initialize
- Fixed a problem where a momentary dip in TPS would cause walltime limited jobs to exit prematurely
- HPMC and DEM components now correctly print citation notices
- Fixed a bug where the WalltimeLimitReached was ignored
- (HPMC) Implicit depletants with spheres and faceted spheres now produces correct ensembles
- (HPMC) Implicit depletants with ntrial > 0 now produces correct ensembles
- (HPMC) NPT ensemble in HPMC (
hpmc.update.boxmc) now produces correct ensembles
- Fix a bug where multiple nvt/npt integrators caused warnings from analyze.log.
- update.balance() is properly ignored when only one rank is available
- Add missing headers to plugin install build
- Fix a bug where charge.pppm calculated an incorrect pressure
- Drop support for compute 2.0 GPU devices
- Support cusolver with CUDA 8.0
force.activememory allocation bug
- Quiet Python.h warnigns when building (python 2.7)
- Allow multi-character particle types in HPMC (python 2.7)
- Allow the flow to change directions in
- Fix critical bug in MPI communication when using HPMC integrators
- enable/disable overlap checks between pairs of constituent particles for
- Support for non-additive mixtures in HPMC, overlap checks can now be enabled/disabled per type-pair
md.constrain.onedto constrain particles to move in one dimension
hpmc.integrate.sphere_union()now takes max_members as an optional argument, allowing to use GPU memory more efficiently
md.special_pair.lj()to support scaled 1-4 (or other) exclusions in all-atom force fields
md.update.mueller_plathe_flow(): Method to create shear flows in MD simulations
md.charge.pppm()takes a Debye screening length as an optional parameter
md.charge.pppm()now computes the rigid body correction to the PPPM energy
- HPMC: the
ignore_overlapsflag is replaced by
- Optimized MPI simulations of mixed systems with rigid and non-rigid bodies
- Removed dependency on all boost libraries. Boost is no longer needed to build hoomd
- Intel compiler builds are no longer supported due to c++11 bugs
- Shorter compile time for HPMC GPU kernels
- Include symlinked external components in the build process
- Add template for external components
- Optimized dense depletant simulations with HPMC on CPU
- fix invalid mesh energy in non-neutral systems with
- Fix invalid forces in simulations with many bond types (on GPU)
- fix rare cases where analyze.log() would report a wrong pressure
- fix possible illegal memory access when using
md.constrain.rigid()in GPU MPI simulations
- fix a bug where the potential energy is misreported on the first step with
- Fix a bug where the potential energy is misreported in MPI simulations with
- Fix a bug where the potential energy is misreported on the first step with
md.charge.pppm()computed invalid forces
- Fix a bug where PPPM interactions on CPU where not computed correctly
- Match logged quantitites between MPI and non-MPI runs on first time step
- Fix diameter handling in DEM shifted WCA potential
- Correctly handle particle type names in lattice.unitcell
md.group.tag_listis consistent across MPI ranks
- hpmc.util.tune now works with particle types as documented
- Fix pressure computation with pair.dpd() on the GPU
- Fix a bug where dump.dcd corrupted files on job restart
- Fix a bug where HPMC walls did not work correctly with MPI
- Fix a bug where stdout/stderr did not appear in MPI execution
- HOOMD will now report an human readable error when users forget context.initialize()
- Fix syntax errors in frenkel ladd field
- Support CUDA Toolkit 8.0
- group.rigid()/nonrigid() did not work in MPI simulations
- Fix builds with ENABLE_DOXYGEN=on
- Always add -std=c++11 to the compiler command line arguments
- Fix rare infinite loops when using hpmc.integrate.faceted_sphere
- Fix hpmc.util.tune to work with more than one tunable
- Fix a bug where dump.gsd() would write invalid data in simulations with changing number of particles
- replicate() sometimes did not work when restarting a simulation
- Fix acceptance criterion in mu-V-T simulations with implicit depletants (HPMC).
- References to disabled analyzers, computes, updaters, etc. are properly freed from the simulation context.
- Fix a bug where
- Report an error when HPMC kernels run out of memory.
- Fix ghost layer when using rigid constraints in MPI runs.
- Clarify definition of the dihedral angle.
HOOMD-blue v2.0 is released under a clean BSD 3-clause license.
dem- simulate faceted shapes with dynamics
hpmc- hard particle Monte Carlo of a variety of shape classes.
- Angles, dihedrals, and impropers no longer initialize with one default type.
- Fixed a bug where integrate.brownian gave the same x,y, and z velocity components.
- Data proxies verify input types and vector lengths.
- dump.dcd no longer generates excessive metadata traffic on lustre file systems
- Distance constraints
constrain.distance- constrain pairs of particles to a fixed separation distance
- Rigid body constraints
constrain.rigid- rigid bodies now have central particles, and support MPI and replication
- Multi-GPU electrostatics
charge.pppm- the long range electrostatic forces are now supported in MPI runs
context.initialize()can now be called multiple times - useful in jupyter notebooks
- Manage multiple simulations in a single job script with
SimulationContextas a python context manager.
util.quiet_status() / util.unquiet_status()allow users to control if line status messages are output.
- Support executing hoomd in Jupyter (ipython) notebooks. Notice, warning, and error messages now show up in the notebook output blocks.
analyze.logcan now register python callback functions as sources for logged quantities.
- The GSD file format (http://gsd.readthedocs.io) is fully implemented in hoomd
dump.gsdwrites GSD trajectories and restart files (use
init.read_gsdreads GSD file and initializes the system, and can start the simulation from any frame in the GSD file.
data.gsd_snapshotreads a GSD file into a snapshot which can be modified before system initialization with
- The GSD file format is capable of storing all particle and topology data fields in hoomd, either static at frame 0, or varying over the course of the trajectory. The number of particles, types, bonds, etc. can also vary over the trajectory.
force.activeapplies an active force (optionally with rotational diffusion) to a group of particles
update.constrain_ellipsoidconstrains particles to an ellipsoid
integrate.browniannow apply rotational noise and damping to anisotropic particles
- Support dynamically updating groups.
group.force_update()forces the group to rebuild according to the original selection criteria. For example, this can be used to periodically update a cuboid group to include particles only in the specified region.
pair.reaction_fieldimplements a pair force for a screened electrostatic interaction of a charge pair in a dielectric medium.
force.get_energyallows querying the potential energy of a particle group for a specific force
init.create_latticeinitializes particles on a lattice.
lattice.unitcellprovides a generic unit cell definition for
- Convenience functions for common lattices: sq, hex, sc, bcc, fcc.
- Dump and initialize commands for the GTAR file format (http://libgetar.readthedocs.io).
- GTAR can store trajectory data in zip, tar, sqlite, or bare directories
- The current version stores system properties, later versions will be able to capture log, metadata, and other output to reduce the number of files that a job script produces.
integrate.nptcan now apply a constant stress tensor to the simulation box.
- Faceted shapes can now be simulated through the
Changes that require job script modifications
context.initialize()is now required before any other hoomd script command.
init.reset()no longer exists. Use
context.initialize()or activate a
- Any scripts that relied on undocumented members of the
globalsmodule will fail. These variables have been moved to the
contextmodule and members of the currently active
- bonds, angles, dihedrals, and impropers no longer use the
hoomd_scriptno longer exists, python commands are now spread across
hoomd.md, and other sub packages.
integrate.\*_rigid()no longer exists. Use a standard integrator on
group.rigid_center(), and define rigid bodies using
- All neighbor lists must be explicitly created using
nlist.\*, and each pair potential must be attached explicitly to a neighbor list. A default global neighbor list is no longer created.
- Moved cgcmm into its own package.
- Moved eam into the metal package.
- Integrators now take
kTarguments for temperature instead of
Tto avoid confusion on the units of temperature.
- phase defaults to 0 for updaters and analyzers so that restartable jobs are more easily enabled by default.
dump.xml(deprecated) requires a particle group, and can dump subsets of particles.
- CMake minimum version is now 2.8
- Convert particle type names to
strto allow unicode type name input
__version__is now available in the top level package
boost::iostreamsis no longer a build dependency
boost::filesystemis no longer a build dependency
- New concepts page explaining the different styles of neighbor lists
- Default neighbor list buffer radius is more clearly shown to be r_buff = 0.4
- Memory usage of
nlist.stencilis significantly reduced
- A C++11 compliant compiler is now required to build HOOMD-blue
integrate.nvt- The MTK NVT integrator is now the only implementation.
integrate.\*_rigid(): rigid body functionality is now contained in the standard integration methods
- Removed the global neighbor list, and thin wrappers to the neighbor list in
- Removed PDB and MOL2 dump writers.
- Removed init.create_empty
- Deprecated analyze.msd.
- Deprecated dump.xml.
- Deprecated dump.pos.
- Deprecated init.read_xml.
- Deprecated init.create_random.
- Deprecated init.create_random_polymers.
Older change log entries are available in the source file ChangeLog.md.