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
dump.xml(restart=True)now works with MPI execution
- Added missing documentation for
- Build all unit tests by default
- Run all script unit tests through
mpirun -n 1
- Allow builds with ninja.
- Allow K=0 FENE bonds.
- Allow number of particles types to change after initialization.
- Allow number of particles to change after initialization.
system.particles.add('A') del system.particles
- OPLS dihedral
phasekeyword to analyzers and dumps to make restartable jobs easier.
HOOMD_WALLTIME_STOPenvironment variable to stop simulation runs before they hit a wall clock limit.
init.read_xml()Now accepts an initialization and restart file.
dump.xml()can now write restart files.
- Added documentation concepts page on writing restartable jobs.
- New citation management infrastructure.
.bibfiles with a list of references to features actively used in the current job script.
- Snapshots expose data as numpy arrays for high performance access to particle properties.
data.make_snapshot()makes a new empty snapshot.
analyze.callback()allows multiple python callbacks to operate at different periods.
comm.barrier_all()allow users to insert barriers into their scripts.
- Mie pair potential.
meta.dump_metadata()writes job metadata information out to a json file.
context.initialize()initializes the execution context.
- Restart option for
- Fix slow performance when initializing
pair.slj()in MPI runs.
- Properly update particle image when setting position from python.
- PYTHON_SITEDIR hoomd shell launcher now calls the python interpreter used at build time.
- Fix compile error on older gcc versions.
- Fix a bug where rigid bodies had 0 velocity when restarting jobs.
-march=nativebuilds in OS X clang builds.
- Fix image access from the python data access proxies.
- Gracefully exit when launching MPI jobs with mixed execution configurations.
Changes that may require updated job scripts
context.initialize()must be called before any
commmethod that queries the MPI rank. Call it as early as possible in your job script (right after importing
hoomd_script) to avoid problems.
init.create_empty()is deprecated and will be removed in a future version. Use
- Job scripts that do not call
context.initialize()will result in a warning message. A future version of HOOMD will require that you call
optioncommands for controlling the execution configuration. Replaced with
- 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)