Latest stable release
See the user manual for system requirements and build instructions.
HOOMD-blue's license requires that you cite certain papers in works that used HOOMD-blue. See the citation page for instructions.
On linux distros
- Fix segfault when changing integrators
- Fix system.box to indicate the correct number of dimensions
- Fix syntax error in comm.get_rank with --nrank
- Enable CUDA enabled builds with the intel compiler
- Use CMake builtin FindCUDA on recent versions of CMake
- GCC_ARCH env var sets the -march command line option to gcc at configure time
- Auto-assign GPU-ids on non-compute exclusive systems even with --mode=gpu
- Support python 3.5 alpha
- Fix a bug where particle types were doubled with boost 1.58.0
- Fix a bug where angle_z=true dcd output was inaccurate near 0 angles
- Properly handle lj.wall potentials with epsilon=0.0 and particles on top of the walls
- 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
- Enable builds with intel MPI
- Silence warnings coming from boost and python headers
- 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
- 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
- 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 analyze.msd ignored images in the
- 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.
import hoomd_script as ...
- 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.
- 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
- 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 system.box.
- system.box no longer accepts 3-tuples. It takes data.boxdim objects.
- system.dimensions no longer exists. Query the dimensionality of the system from system.box. 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)
- 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
- Block sizes tuned for K20
- 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
- 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
- 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
- Support for Kepler GPUs (GTX 680)
- NPH integration (*integrate.nph*)
- Compute full pressure tensor
- Example plugin for new bond potentials
- New syntax for bond coefficients: bond.bond_coeff.set('type', params)
- New external potential: external.periodic applies a periodic potential along one direction (uses include inducing lamellar phases in copolymer systems)
- Significant performance increases when running analyze.log, analyze.msd, update.box_resize, update.rescale_temp, or update.zero_momentum with a small period
- Command line options may now be overwritten by scripts, ex: options.set_gpu(2)
- Added --user command line option to allow user defined options to be passed into job scripts, ex: --user="-N=5 -phi=0.56"
- Added table.set_from_file method to enable reading table based pair potentials from a file
- 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.
- Added --msg-file command line option which redirects the message output to a file
- New pair potential pair.force_shifted_lj : Implements http://dx.doi.org/10.1063/1.3558787
- Fixed a bug where FENE bonds were sometimes computed incorrectly
- Fixed a bug where pressure was computed incorrectly when using pair.dpd or pair.dpdlj
- Fixed a bug where using OpenMP and CUDA at the same time caused invalid memory accesses
- Fixed a bug where RPM packages did not work on systems where the CUDA toolkit was not installed
- Fixed a bug where rigid body velocities were not set from python
- Disabled OpenMP builds on Mac OS X. HOOMD-blue w/ openmp enabled crashes due to bugs in Apple's OpenMP implementation.
- Fixed a bug that allowed users to provide invalid rigid body data and cause a seg fault.
- Fixed a bug where using PPPM resulted in error messages on program exit.
- Bond potentials rewritten with template evaluators
- External potentials use template evaluators
- Complete rewrite of ParticleData - may break existing plugins
- Bond/Angle/Dihedral data structures rewritten
- The GPU specific data structures are now generated on the GPU
- DPDThermo and DPDLJThermo are now processed by the same template class
- Headers that cannot be included by nvcc now throw an error when they are
- CUDA 4.0 is the new minimum requirement
- Rewrote BoxDim to internally handle minimum image conventions
- HOOMD now only compiles ptx code for the newest architecture, this halves the executable file size
- New Messenger class for global control of messages printed to the screen / directed to a file.
- Automated test suite now performs tests on OpenMPI + CUDA builds
- Valgrind tests added back into automated test suite
- Added CPU test in bd_ridid_updater_tests
- ctest -S scripts can now set parallel makes (with cmake > 2.8.2)