Change Log¶
5.x¶
5.1.1 (2025-03-19)¶
Fixed
Prevent warnings about forces that provide torques (or not) (#2015).
Compile without errors or warnings with CUDA 12.8 (#2019).
force.Active
applies torques correctly when the filter is notAll
(#2020).MD integrators no longer integrate the z degree of freedom in 2D simulation boxes (#2021).
HPMC integrators no longer miss pairwise interactions when updaters, such as
RemoveDrift
move particles (#2022).
5.1.0 (2025-02-20)¶
Added
The
WangFrenkel
potential (#1970).mpcd.update.ReverseNonequilibriumShearFlow
(#1983).Support rocm 6 (#2002).
Fixed
Correctly reference
TriggeredOperation
in inherited documentation (#1990).
Removed
Support for rocm5 (#2002).
5.0.1 (2025-01-20)¶
Fixed
5.0.0 (2024-12-02)¶
Fixed
Ensure that users set unique seeds on all partitions when performing Gibbs ensemble simulations (#1925)
Mesh potentials return only one volume or area when
ignore_type == True
(#1928)Ensure correct methods are used by
hoomd.mpcd.fill.VirtualParticleFiller
for certain geometries, improving performance on the GPU in these cases (#1934).Correctly apply
HPMCIntegrator.external_potentials
inhoomd.hpmc.update.MuVT
(#1941).Ensure GPU autotuners for MPCD methods are included in
hoomd.Operations.is_tuning_complete
andhoomd.Operations.tune_kernel_parameters
throughhoomd.mpcd.Integrator
(#1951).Read after write hazard in the GPU implementation of
Dipole
,ALJ
, and allPatchy
potentials inhoomd.md.pair.ansiso
(#1944).Read after write hazard in the GPU implementation of
hoomd.md.mesh.conservation.Volume
(#1953).hoomd.hpmc.pair.Pair.energy
now computes the correct energy when there are multiple pair potentials with differentr_cut
values (#1955).Initializing large numbers (~100+ million) of MPCD particles with domain decomposition no longer causes a segmentation fault (#1897).
Added
mpcd.geometry.ConcentricCylinders
(#1894).kT
parameter to all HPMC integrators. All HPMC-related operations respect the setkT
(#1869).P
property ofhoomd.hpmc.compute.SDF
(#1869).MPCD supports non-cubic collision cells, including both orthorhombic and triclinic cell shapes. The cell size is controlled by the number of cells along each lattice vector that defines the simulation box (#1950).
Changed
betaP
is replaced byP
inhoomd.hpmc.update.BoxMC
(#1869)hoomd.update.Clusters
is nowhoomd.update.GCA
(#1926)hoomd.hpmc.external.wall.WallPotential
is nowhoomd.hpmc.external.WallPotential
and can be added toIntegratorHPMC.external_potentials
(#1941)hoomd.hpmc.external.field.Harmonic
is nowhoomd.hpmc.external.Harmonic
and can be added toIntegratorHPMC.external_potentials
(#1941).Document one class per html page and show inherited members in class documentation (#1952).
Removed
_InternalCustomUpdater.update
. (#1699)._InternalCustomTuner.tune
. (#1699)._InternalCustomWriter.write
. (#1699).HDF5Log.write
. (#1699).hoomd.util.GPUNotAvailableError
(#1708).Snapshot.from_gsd_snapshot
(#1888).box1
,box2
, andvariant
arguments tohoomd.update.BoxResize
(#1888).hpmc.pair.user.CPPPotentialBase
,hpmc.pair.user.CPPPotential
,hpmc.pair.user.CPPPotentialUnion
, andhpmc.integrate.HPMCIntegrator.pair_potential
(#1888).hoomd.hpmc.external.user.CPPExternalPotential
(#1888).Implicit depletants from HPMC. (#1931).
Device.num_cpu_threads
. (#1932).Device.gpu_ids
and the single-process multi-GPU feature (#1936).[c++]
GlobalArray
andGlobalVector
(#1938).IntegratorHPMC.external_potential
(#1941).
4.x¶
4.9.1 (2024-10-31)¶
Fixed
Correct compile errors with
-DENABLE_GPU=on -DHOOMD_GPU_PLATFORM=HIP
(#1920)
4.9.0 (2024-10-29)¶
Added
Support Python 3.13 (#1915)
Patchy potentials for MD simulations:
hoomd.md.pair.aniso.PatchyExpandedGaussian
,hoomd.md.pair.aniso.PatchyExpandedLJ
,hoomd.md.pair.aniso.PatchyExpandedMie
,hoomd.md.pair.aniso.PatchyGaussian
,hoomd.md.pair.aniso.PatchyLJ
,hoomd.md.pair.aniso.PatchyMie
, andhoomd.md.pair.aniso.PatchyYukawa
(#1412).Double-well potentials in HPMC:
hoomd.hpmc.pair.LJGauss
andhoomd.hpmc.pair.OPP
(#1889).Mesh potentials:
hoomd.md.mesh.bending.BendingRigidity
,hoomd.md.mesh.bending.Helfrich
,hoomd.md.mesh.conservation.Area
,hoomd.md.mesh.conservation.TriangleArea
, andhoomd.md.mesh.conservation.Volume
(#1792, #1793, #1794, #1795).start
andend
arguments tohoomd.write.Burst.dump
(#1870)hoomd.mpcd.geometry.CosineChannel
for a serpentine (cosine) channel (#1836).hoomd.mpcd.geometry.CosineExpansionContraction
for an expansion-contraction channel (#1836).
Fixed
Errors in the documentation (#1830, #1861, #1872, #1884, #1896).
Thermalize momenta of particles with floppy body tags (#1891).
Spheropolyhedra with two vertices can now be saved as a valid
gsd_shape_spec
(#1898).
Changed
Improved build instructions (#1909).
4.8.2 (2024-07-23)¶
Fixed
Correct citation to Langevin piston paper (#1849).
External walls, external fields, and constrains can now be implemented via external plugins (#1849).
Prevent compile errors with
-DENABLE_GPU=on -DHOOMD_GPU_PLATFORM=HIP
(#1851).Prevent
/usr/lib64/slurm/auth_munge.so: undefined symbol: slurm_conf
error on Purdue Anvil (#1850).
4.8.1 (2024-07-18)¶
Fixed
4.8.0 (2024-07-11)¶
Added
hoomd.mpcd
reimplements the MPCD method for simulating hydrodynamic interactions. See the migrating page for an overview and individual class and method documentation for more information (#1784).MPCD tutorial.
Support numpy 2.0 (#1797)
hoomd.hpmc.external.External
provides an abstract interface to external potentials (#1811).hoomd.hpmc.external.Linear
computes the potential as a linear function of the distance from a point to a plane (#1811).HPMCIntegrator.external_potentials
sets the list of external potentials applied to the system (#1811).hpmc.pair.ExpandedGaussian
computes the expanded Gaussian pair potential in HPMC (#1817).
Changed
Miscellaneous documentation improvements (#1786, #1800, #1820).
Provide an error message for invalid Ellipsoid shape parameters (#1785).
Provide the full CUDA error message when scanning devices (#1803).
Test with gcc14, clang17, and clang18. No longer test with clang10, clang11, or clang12. (#1798, #1816).
Ensure that Gaussian-type pair potentials have positive sigma values (#1810).
Demonstrate
Step
andAngularStep
in the tutorial “Modelling Patchy Particles”.Fixed typographical errors in all tutorials.
Fixed
Issue the proper error message when
ALJ.shape
is not set for all particle types (#1808).Correctly apply Brownian torque when elements of the inertia tensor are 0 (#1825).
Deprecated
HPMCIntegrator.external_potential
- useHPMCIntegrator.external_potentials
(#1811).hoomd.hpmc.external.user.CPPExternalPotential
- usehoomd.hpmc.external.Linear
or write a custom component in C++ (#1811).
Removed
Support for Python 3.8 (#1797).
4.7.0 (2024-05-16)¶
Fixed
md.methods.rattle.Brownian
executes without causing a segmentation fault on the CPU with domain decomposition (#1748).Compile
BoxDim.h
without warnings (#1756).Do not compute dipole-dipole interactions that are not necessary (#1758).
Correctly define the units of gamma in
md.methods.Langevin
(#1771).Fix compile errors with external components that use the Expanded Mie potential (#1781).
Allow HPMC pair potentials to be subclassed in external components (#1780).
Added
“How to tune move sizes in multicomponent HPMC systems” documentation page (#1750).
hoomd.box.from_basis_vectors
- construct a box from arbitrary basis vectors (#1769).
Changed
Make readthedocs builds more reproducible (#1758).
4.6.0 (2024-03-19)¶
Fixed
create_state_from_gsd
reads bond/angle/dihedral/improper/pair types when there are no corresponding groups (#1729).
Added
hoomd.variant.box.BoxVariant
- Describe boxes that change as a function of timestep (#1685).hoomd.variant.box.Constant
- A constant box (#1685).hoomd.variant.box.Interpolate
- Linearly interpolate between two boxes (#1685).hoomd.variant.box.InverseVolumeRamp
- Linearly ramp the inverse volume of the system (#1685).hoomd.hpmc.update.QuickCompress
now accepts ahoomd.variant.box.BoxVariant
object fortarget_box
(#1736).box
argument tohoomd.update.BoxResize
that accepts ahoomd.variant.box.BoxVariant
(#1740).hoomd.hpmc.pair.Union
computes pair potentials between unions of points. ReplacesCPPPotentialUnion
(#1725).hoomd.hpmc.pair.Step
- A step function potential (#1732).hoomd.hpmc.pair.AngularStep
- Angular patches on particles with step function interactions (e.g. Kern-Frenkel) (#1728).
Changed
Use
FindPython
on modern CMake installations. You may need to adjust build scripts in cases where the new behavior does not exactly match the old (i.e. use-DPython_EXECUTABLE
in place of-DPYTHON_EXECUTABLE
) (#1730).External components must switch from
pybind11_add_module
tohoomd_add_module
(#1730).
Deprecated
box1
,box2
, andvariant
arguments tohoomd.update.BoxResize
(#1740).
4.5.0 (2024-02-13)¶
Fixed
hoomd.hpmc.update.Shape
properly restores shape alchemy parameters on rejected trial moves (#1696).hoomd.hpmc.update.Shape
now functions withhoomd.device.GPU
(#1696).hoomd.hpmc.update.MuVT
applies external potentials (#1711).hoomd.hpmc.update.QuickCompress
can now reshape boxes with tilt factors <= 0 (#1709).
Added
Improve component build documentation and link to the
hoomd-component-template
repository (#1668).hoomd.md.improper.Periodic
- CHARMM-like periodic improper potential (#1662).allow_unsafe_resize
flag tohoomd.hpmc.update.QuickCompress
(#1678).hoomd.error.GPUNotAvailableError
(#1694).HPMC compile time pair potential framework (CPU only). Allows potential energy in HPMC simulations without
CPPPotential
.
Deprecated
_InternalCustomUpdater.update
. (#1692)._InternalCustomTuner.tune
. (#1692)._InternalCustomWriter.write
. (#1692).HDF5Log.write
. (#1692).hoomd.util.GPUNotAvailableError
(#1694).hoomd.hpmc.pair.user.CPPPotentialBase
(#1676).hoomd.hpmc.pair.user.CPPPotential
- Use a built-in potential or compile your code in a component (#1676).hoomd.hpmc.pair.user.CPPPotentialUnion
- Use a built-in potential or compile your code in a component (#1676).HPMCIntegrator.pair_potential
- Use compiled potentials withpair_potentials
(#1676).Single-process multi-gpu code path (#1706).
Changed
4.4.1 (2023-12-18)¶
Fixed
Correct
net_virial
values in local snapshots (#1672).Improve HPMC performance on the CPU when using a pair potential (#1679).
Improve HPMC performance with 3D hard shapes (#1679).
Improve HPMC performance on the CPU (#1687).
Changed
Provide support via GitHub discussions (#1671).
4.4.0 (2023-12-04)¶
Added
hoomd.md.external.field.Magnetic
computes forces and torques on particles from an external magnetic field (#1637).Tutorial on placing barriers (hoomd-examples/#111).
Fixed
Use
mpirun
specific local ranks to select GPUs before checkingSLURM_LOCALID
(#1647).Fix typographical errors in
RevCross
documentation (#1642).Use standards compliant
thrust::get
(#1660).
Changed
Removed unused code (#1646).
No longer issue a warning when
hoomd.md.Integrator
is used without an integration method (#1659).Increase performance of
Force.forces
,Force.torques
,Force.energies
, andForce.virials
(#1654).
Deprecated
4.3.0 (2023-10-24)¶
Fixed
md.alchemy.methods.NVT
now evolves the elements provided inalchemical_dof
(#1633).More consistent notice messages regarding MPI ranks used in GPU selection (#1635).
hoomd.hpmc.compute.SDF
computes correct pressures with patchy potentials. (#1636).
Added
Support GCC 13 (#1634).
Support Python 3.12 (#1634).
tau
parameter tohoomd.md.methods.thermostats.Bussi
(#1619).
Changed
4.2.1 (2023-10-02)¶
Fixed
hoomd.write.Table
correctly displays floating point values that are exactly 0.0 (#1625).hoomd.write.HDF5Log
defaults to"f8"
formatting except when the value is anint
, or anumpy.number
(#1620).Attempt to workaround
PMI_Init returned 1
error on OLCF Frontier (#1629).Apple clang 15 compiles HOOMD-blue without errors (#1626).
4.2.0 (2023-09-20)¶
Fixed
Make
HDF5Log
example more visible (#1602).Access valid GPU memory in
hoomd.hpmc.update.Clusters
(#1607).Test suite passes on the ROCm GPU platform (#1607).
Provide an error message when using
md.external.field.Periodic
in 2D (#1603).hoomd.write.GSD
reports “File exists” in the exception description when using the'xb'
mode and the file exists (#1609).Write small numbers correctly in
hoomd.write.Table
(#1617).Make examples in
hoomd.md.methods.NVE
andhoomd.md.methods.DisplacementCapped
more visible (#1601).
Added
Documentation page: “How to apply arbitrary forces in MD” (#1610).
Documentation page: “How to prevent particles from moving” (#1611).
Documentation page: “How to minimize the potential energy of a system” (#1614).
Documentation page: “How to continuously vary potential parameters” (#1612).
Documentation page: “How to determine the most efficient device” (#1616).
Documentation page: “How to choose the neighbor list buffer distance” (#1615).
Documentation page: “How to compute the free energy of solids” (#1613).
MPCD particle data is now available included in
Snapshot
(#1580).Add variable parameters to
hpmc.external.user.CPPExternalPotential
(#1608).
Changed
Removed the unused
ExternalFieldComposite.h
and all the relatedExternalFieldComposite*
(#1604).
4.1.0 (2023-08-07)¶
Fixed
Improved documentation (#1585).
Update mesh documentation (#1587).
Follow detailed balance in
hoomd.hpmc.update.Shape
(#1595).pre-commit
environment installs correctly on macos-arm64 (#1597).Install all HPMC headers for use by plugins (#1573).
Bond potentials can now be implemented via external plugins (#1591).
Added
Tested example code snippets in select modules (#1574) (#1586).
hoomd.util.make_example_simulation
- create an example Simulation object (#1574) (#1586).hoomd.write.Burst
now has a__len__
method (#1575).Support clang 15 and 16 on Linux (#1593).
hoomd.write.HDF5Logger
- write log quantities to HDF5 files (#1588).default_gamma
anddefault_gamma_r
arguments tohoomd.md.methods.rattle.Brownian
hoomd.md.methods.rattle.Langevin
, andhoomd.md.methods.rattle.OverdampedViscous
(#1589).
4.0.1 (2023-06-27)¶
Fixed
Prevent
ValueError: signal only works in main thread of the main interpreter
when importing hoomd in a non-main thread (#1576).The recommended conda install commands find the documented version (#1578).
CMake completes without error when
HOOMD_GPU_PLATFORM=HIP
(#1579).Tests pass with GSD 3.0.0 installed (#1577).
Provide full CUDA error message when possible (#1581).
Notice level 4 gives additional GPU initialization details (#1581).
Show particle out of bounds error messages in exception description (#1581).
Changed
Package source in
hoomd-x.y.z.tar.gz
(previouslyhoomd-vx.y.z.tar.gz
) (#1572).
4.0.0 (2023-06-06)¶
Fixed
Fix error with
MPI_Allreduce
on OLCF Frontier (#1547).Correct equations in virial pressure documentation (#1548).
Work around cases where Python’s garbage collector fails to collect
Operation
objects (#1457).Incorrect behavior with
hpmc.external.user.CPPExternalPotential
in MPI domain decomposition simulations (#1562).
Added
hoomd.md.ConstantVolume
integration method (#1419).hoomd.md.ConstantPressure
integration method, implementing the Langevin piston barostat (#1419).Thermostats in
hoomd.md.methods.thermostats
that work withConstantVolume
andConstantPressure
, including the new Bussi-Donadio-Parrinello thermostat (#1419).hoomd.md.external.wall.Gaussian
(#1499).hoomd.write.GSD.maximum_write_buffer_size
- Set the maximum size of the GSD write buffer (#1541).hoomd.write.GSD.flush
- flush the write buffer of an open GSD file (#1541).On importing
hoomd
, install aSIGTERM
handler that callssys.exit(1)
(#1541).More descriptive error messages when calling
Simulation.run
(#1552).hoomd.Snapshot.from_gsd_frame
- convert agsd.hoomd.Frame
object tohoomd.Snapshot
(#1559).hoomd.device.NoticeFile
- a file-like object that writes tohoomd.device.Device.notice
(#1449).hoomd.write.Burst
- selective high-frequency frame writing to GSD files (#1543).Support LLVM 16 (#1568).
More detailed status message for found CUDA libraries (#1566).
Changed
hoomd.md.constrain.Rigid
no longer takesdiameters
orcharges
as keys in thebody
parameters.create_bodies
method now takes an optionalcharges
argument to set charges (#1350).Control the precision with the CMake options
HOOMD_LONGREAL_SIZE
(default: 64) andHOOMD_SHORTREAL_SIZE
(default: 32) (#355).[developers]
ShortReal
andLongReal
types enable mixed precision implementations (#355).hoomd.md.constrain.Rigid
now updates constituent particle types each step (#1440).Moved
hoomd.mesh.Mesh.triangles
tohoomd.mesh.Mesh.triangulation
(#1464).hoomd.write.GSD
does not writeparticles/diameter
by default (#1266).Updated tutorials to use HOOMD-blue v4 API, work with up to date releases of freud, gsd, and signac. Also make general improvements to the tutorials.
Document changes needed to migrate from v3 to v4 in the migration guide.
More descriptive error messages when calling
Simulation.run
(#1552).Increase performance of
hoomd.write.GSD
(#1538).Increase performance of
hoomd.State.get_snapshot
in serial (#1538).hoomd.write.GSD.dynamic
now allows fine grained control over individual particle fields (#1538).No longer test with GCC 7-8, Python 3.6-3.7, or Clang 6-9) (#1544).
Improved error messages with NVRTC compiled code (#1567).
Deprecated
Scalar
,Scalar2
,Scalar3
, andScalar4
data types. UseLongReal[N]
instead in new code (#355).hoomd.Snapshot.from_gsd_snapshot
- usehoomd.Snapshot.from_gsd_frame
(#1559).
Removed
fix_cudart_rpath
CMake macro (#1383).ENABLE_MPI_CUDA
CMake option (#1401).Berendsen
,NPH
,NPT
,NVE
,NVT
MD integration methods (#1419).hoomd.write.GSD.log
(#1480).CMake option and compiler definition
SINGLE_PRECISION
(#355).charges
key inhoomd.md.constrain.Rigid.body
(#1496).diameter
key inhoomd.md.constrain.Rigid.body
. (#1496).hoomd.md.dihedral.Harmonic
. (#1496).hoomd.device.GPU.memory_traceback parameter
. (#1496).hoomd.md.pair.aniso.Dipole.mode
parameter. (#1496).hoomd.md.pair.aniso.ALJ.mode
parameter (#1496).hoomd.md.pair.Gauss
(#1499).hoomd.md.external.wall.Gauss
(#1499).msg_file
property and argument inhoomd.device.Device
. (#1499).The
sdf
attribute ofhoomd.hpmc.compute.SDF
- usesdf_compression
(#1523).alpha
parameter and attribute inLangevin
,BD
, andOverdampedViscous
integration methods (#1266).needsDiameter
andsetDiameter
API in C++ potential evaluators (#1266).
v3.x¶
v3.11.0 (2023-04-14)¶
Added:
hoomd.md.Integrator.validate_groups
verifies that MD integration methods are applied to distinct subsets of the system and that those subsets consist of integrable particles (automatically called when attached) (#1466).
Changed:
hoomd.hpmc.compute.SDF
computes pressures for systems of concave and non-monotonic patch interactions (#1391).Reorganize documentation contents to fit in the sidebar, including landing pages for tutorials and how-to guides (#1526).
Fixed:
Improved readability of images in the documentation (#1521).
hoomd.write.Table
now raises a meaningful error when given incorrect logger categories (#1510).Correctly document the 1/2 scaling factor in the pairwise virial computation (#1525).
thermalize_particle_momenta
now sets 0 velocity and angular momentum for rigid constituent particles (#1472).Reduce likelihood of data corruption when writing GSD files (#1531).
Clarify migration process for
hoomd.md.pair.ExpandedLJ
(#1501).
Deprecated:
The
sdf
attribute ofhoomd.hpmc.compute.SDF
- usesdf_compression
(#1391).
v3.10.0 (2023-03-14)¶
Added:
The
message_filename
property and argument toDevice
,CPU
, andGPU
to replacemsg_file
(#1497).hoomd.md.pair.Gaussian
to replacehoomd.md.pair.Gauss
(#1497).hoomd.md.pair.ExpandedGaussian
- the expanded Gaussian pair force (#1493).Guide: How to apply arbitrary pair potentials in HPMC (#1505).
Changed:
Use
furo
style for HTML documentation (#1498).
Fixed:
The
hoomd.md.pair
potentialsExpandedLJ
,ExpandedMie
,LJGauss
, andTWF
now shiftV(r_cut)
to 0 properly whenmode == 'shift'
(#1504).Corrected errors in the pair potential documentation (#1504).
Note that the
'body'
exclusion should be used withhoomd.md.constrain.Rigid
(#1465).Correctly identify the
'xyz'
mode inhoomd.md.methods.NPH
(#1509).
Deprecated:
The
msg_file
property and argument toDevice
,CPU
, andGPU
.hoomd.md.pair.Gauss
.
v3.9.0 (2023-02-15)¶
Added:
GPU code path for
hoomd.update.BoxResize
(#1462).logger
keyword argument and property tohoomd.write.GSD
(#1481).
Changed:
Issue
FutureWarning
warnings when using deprecated APIs (#1485).Reformat the list of deprecated features. (#1490).
In simulations with rigid bodies, remove D degrees of freedom when the system is momentum conserving (#1467).
Fixed:
Compile without errors using
hipcc
and ROCM 5.1.0 (#1478).Document that
hoomd.md.force.Force
can be added toOperations.computes
(#1489).hoomd.md.constrain.Rigid.create_bodies
completes without segmentation faults when particle body tags are not -1 (#1476).hoomd.hpmc.compute.FreeVolume
computes the free area correctly in 2D simulations (#1473).
Deprecated:
Deprecate
write.GSD
log
keyword argument and property in favor oflogger
(#1481).
v3.8.1 (2023-01-27)¶
Fixed:
#1468: Conserve linear momentum in simulations using
hoomd.md.constrain.Rigid
on more than 1 MPI rank.
v3.8.0 (2023-01-12)¶
Added
Support Python 3.11.
Support CUDA 11.8.
Support CUDA 12.0.0 final.
Fixed
Improve numerical stability of orientation quaternions when using
hoomd.md.update.ActiveRotationalDiffusion
Reduced memory usage and fix spurious failures in
test_nlist.py
.Avoid triggering
TypeError("expected x and y to have same length")
inhoomd.hpmc.compute.SDF.betaP
.
Deprecated
The following integration methods are deprecated. Starting in v4.0.0, the same functionalities will be available via
hoomd.md.methods.ConstantVolume
/hoomd.md.methods.ConstantPressure
with an appropriately chosenthermostat
argument.hoomd.md.methods.NVE
hoomd.md.methods.NVT
hoomd.md.methods.Berendsen
hoomd.md.methods.NPH
hoomd.md.methods.NPT
Removed
Support for CUDA 10.
v3.7.0 (2022-11-29)¶
Added
Neighborlist.r_cut
sets the base cutoff radius for neighbor search - for use when the neighbor list is used for analysis or custom Python code.Neighborlist.cpu_local_nlist_arrays
provides zero-copy access to the computed neighbor list.Neighborlist.gpu_local_nlist_arrays
provides zero-copy access to the computed neighbor list.Neighborlist.local_pair_list
provides the rank local pair list by index.Neighborlist.pair_list
provides the global pair list by tag on rank 0.hoomd.md.dihedral.Periodic
- a new name for the previousHarmonic
potential.default_gamma
anddefault_gamma_r
arguments to thehoomd.md.methods
:Brownian
,Langevin
, andOverdampedViscous
.reservoir_energy
loggable inhoomd.md.methods.Langevin
.hoomd.md.force.Constant
applies constant forces and torques to particles.
Changed
[plugin developers] Refactored the
LocalDataAccess
C++ classes to add flexibility.
Fixed
hoomd.hpmc.nec
integrators compute non-infinite virial pressures for 2D simulations.Raise an exception when attempting to get the shape specification of shapes with 0 elements.
Box conversion error message now names
hoomd.Box
.
Deprecated
hoomd.md.dihedral.Harmonic
- use the functionally equivalenthoomd.md.dihedral.Periodic
.charges
key inhoomd.md.constrain.Rigid.body
.diameters
key inhoomd.md.constrain.Rigid.body
.
v3.6.0 (2022-10-25)¶
Changed
In
hoomd.md.pair.aniso.ALJ
,shape.rounding_radii
now defaults to (0.0, 0.0, 0.0).Revise
hoomd.md.pair.aniso.ALJ
documentation.hoomd.md.force.Force
instances can now be added to theOperations
list allowing users to compute force, torque, energy, and virials of forces that are not included in the dynamics of the system.[developers]: Removed internal methods
_remove
and_add
from the data model.
Fixed
Increase the performance of
md.pair.Table
on the CPU.Improve accuracy of
hoomd.hpmc.update.BoxMC
when used with patch potentials.Provide an accurate warning message when creating the state with many bond/angle/… types.
Add missing documentation for
hoomd.md.methods.Berendsen
.CVE-2007-4559
v3.5.0 (2022-09-14)¶
Added
Example plugin that demonstrates how to add a MD pair potential.
Support a large number of particle and bond types (subject to available GPU memory and user patience) for the
Cell
neighbor list, MD pair potentials, MD bond potentials, Brownian, and Langevin integration methods.
Changed
Raise an error when initializing with duplicate types.
hpmc.compute.SDF
now computes pressures of systems with patch interactions.Raise descriptive error messages when the shared memory request exceeds that available on the GPU.
Fixed
Include all
Neighborlist
attributes in the documentation.Memory allocation errors in C++ now result in
MemoryError
exceptions in Python.Add missing
Autotuned.h
header file.External components build correctly when
ENABLE_MPI=on
orENABLE_GPU=on
.Type parameter validation when items contain
numpy.ndarray
elements.Compile with CUDA 12.0.
Deprecated
Device.memory_traceback
attribute. This attribute has no effect.
v3.4.0 (2022-08-15)¶
Added
The new HOOMD-blue logo is now available in the documentation.
hoomd.md.methods.DisplacementCapped
class for relaxing configurations with overlaps.hoomd.md.methods.rattle.DisplacementCapped
class for relaxing configurations with overlaps.hoomd.device.Device.notice
- print user-defined messages to the configured message output stream.Tutorial: Modelling Rigid Bodies.
AutotunedObject
class that provides an interface to read and write tuned kernel parameters, query whether tuning is complete, and start tuning again at the object level.is_tuning_complete
method toOperations
. Check whether kernel parameter tuning is complete for all operations.tune_kernel_parameters
methods toOperations
and many other classes. Start tuning kernel parameters in all operations.hoomd.md.HalfStepHook
- extensible hook class called between step 1 and 2 of MD integration.hoomd.md.Integrator.half_step_hook
- property to get/set the half step hook.
Fixed
Active forces on manifolds now attach to the
Simulation
correctly.hoomd.update.FilterUpdater
now acceptshoomd.filter.CustomFilter
subclasses.Correct error message is given when a sequence like parameter is not given to a type parameter.
Fix non-axis-aligned Cylinder walls in MD.
hoomd.md.constrain.Constraint
now hashoomd.md.force.Force
as a base class.Provide a warning instead of an error when passing an out of range seed to the
Simulation
constructor.Compile with current versions of HIP and ROCm.
Compilation errors with CUDA >=11.8.
v3.3.0 (2022-07-08)¶
Added
A decorator that modifies the namespace of operation and custom action classes
hoomd.logging.modify_namespace
.Tuner for the neighbor list buffer size
hoomd.md.tune.NeighborListBuffer
.Solver infrastructure for optimization problems.
Simulation.initial_timestep
: the timestep on which the last call torun
started.variant_like
,trigger_like
, andfilter_like
typing objects for documentation.
Changed
Removed
"__main__"
from some user custom action logging namespaces.
Fixed
Improve documentation.
Non-default loggables can now be explicitly specified with
Logger.add
.Iteration of
Logger
instances.The logging category of
hoomd.md.Integrate.linear_momentum
v3.2.0 (2022-05-18)¶
Added
hoomd.md.nlist.Neighborlist.num_builds
property - The number of neighbor list builds since the last call toSimulation.run
.hoomd.md.nlist.Cell.dimensions
property - The dimensions of the cell list.hoomd.md.nlist.Cell.allocated_particles_per_cell
property - The number of particle slots allocated per cell.hoomd.mesh.Mesh
- Triangular mesh data structure.hoomd.md.mesh.bond
- Bond potentials on mesh edges.Support gcc 12.
Support clang 14.
Set
ENABLE_LLVM=on
in conda binary builds.
Fixed
Clarify documentation.
Box.dimension
reports the correct value when reading in 2D boxes from GSD files generated in HOOMD v2.Improve performance of run time compiled HPMC potentials on the CPU.
Pressing Ctrl-C or interrupting the kernel in Jupyter stops the run at the end of the current timestep.
v3.1.0 (2022-04-27)¶
Added
Support LLVM 13 when
ENABLE_LLVM=on
.hoomd.md.pair.LJGauss
- Lennard-Jones-Gaussian pair potential.hoomd.md.alchemy.methods.NVT
- Alchemical molecular dynamics integration method.hoomd.md.alchemy.pair.LJGauss
- Lennard-Jones-Gaussian pair potential with alchemical degrees of freedom.hoomd.hpmc.update.Shape
- Alchemical hard particle Monte Carlo through shape change moves.hoomd.hpmc.shape_move.Elastic
- Shape move with elastic potential energy penalty.hoomd.hpmc.shape_move.ShapeSpace
- Moves in a user defined shape space.hoomd.hpmc.shape_move.Vertex
- Translate shape vertices.
Changed
HPMC fugacity is now a per-type quantity.
Improved documentation.
[developers] Reduced the time needed for incremental builds.
[developers] Reduced memory needed to compile HOOMD.
Fixed
ALJ unit test passes in Debug builds.
Add quotes to conda-forge gpu package installation example.
hoomd.md.force.Custom
zeroes forces, torques, energies, and virials before callingset_forces
.Point tarball download link to https://github.com/glotzerlab/hoomd-blue/releases.
Deprecated
hoomd.md.pair.aniso.ALJ.mode
- parameter has no effect.hoomd.md.pair.aniso.Dipole.mode
- parameter has no effect.
v3.0.1 (2022-04-08)¶
Fixed
Display status of
trunk-patch
branch in the GitHub actions badge.Add
EvaluatorPairTable.h
to installation directory.Add
hoomd.filter.Rigid
to the documentation.Prevent
TypeError: 'bool' object is not iterable
errors when comparingTag
filters with different lengths arrays.Simulation.tps
andSimulation.walltime
update every step of the run.
v3.0.0 (2022-03-22)¶
Overview
HOOMD-blue v3.0.0 is the first production release with the new API that has been developed and implemented over more than 2 years. Those still using v2.x will need to make changes to their scripts to use v3. See the Migrating to the latest version page for an overview and individual class and method documentation for more information. To summarize, the new API is object oriented, allows HOOMD-blue to work effectively as a Python package, and provides more hooks for Python code to directly interface with the simulation.
New features in v3 since v2.9.7:
Zero-copy data access through numpy and cupy.
Triggers determine what timesteps operations execute on.
User-defined operations, triggers, particle filters, variants, and forces.
Logging subsystem supports array quantities.
Implicit depletants for 2D shapes in HPMC.
Harmonically mapped averaging for MD thermodynamic quantities of crystals.
TWF and OPP pair potentials.
Tether bond potential.
Manifold constraints for MD integration methods (using RATTLE) and active forces.
Document code architecture in
ARCHITECTURE.md
.Overdamped viscous MD integration method.
User-defined pair potentials work with HPMC on the GPU.
Long range tail correction for Lennard-Jones potential.
Anisotropic Lennard-Jones-like pair potential for polyhedra and ellipsoids.
Newtownian event chain Monte Carlo for spheres and convex polyhedra.
See the full change log below for all v3 beta releases.
Changes from v3.0.0-beta.14:
Added
hoomd.hpmc.tune.BoxMCMoveSize
- TuneBoxMC
move sizes to meet target acceptance ratios.hoomd.hpmc.nec.integrate.Sphere
- Newtonian event chain Monte Carlo for hard spheres.hoomd.hpmc.nec.integrate.ConvexPolyhedron
- Newtonian event chain Monte Carlo for hard convex polyhedra.hoomd.hpmc.nec.tune.ChainTime
- Tune chain times in newtonian event chain Monte Carlo method.
Changed
Improve documentation.
[breaking] Renamed the
hoomd.md.bond.Table
energy parameter fromV
toU
.[breaking] Renamed the
hoomd.md.pair.Table
energy parameter fromV
toU
.[breaking] Renamed the
hoomd.md.angle.Table
energy parameter fromV
toU
.[breaking] Renamed the
hoomd.md.dihedral.Table
energy parameter fromV
toU
.[breaking] Renamed
hoomd.md.nlist.Nlist
tohoomd.md.nlist.NeighborList
.[developer]
Updater
andAnalyzer
in C++ have am_trigger
member now.[developer]
_TriggeredOperation
has been moved toTriggeredOperation
and custom trigger setting and getting logic removed.
Fixed
FIRE.converged
may be queried before callingSimulation.run
.Bug where using
__iadd__
to certain attributes would fail with an exception.Bug where
hoomd.md.pair.LJ.additional_energy
isNaN
whentail_correction
is enabled and some pairs haver_cut=0
.Compile error with CUDA 11.7.
Compile errors on native ubuntu 20.04 systems.
Compile errors with
ENABLE_GPU=on
andclang
as a host compiler.
Removed
[developers] Removed
IntegratorData
class. It is replaced by structs that are defined in the integrator classes.get_ordered_vertices
fromhoomd.md.pair.aniso.ALJ
.Removed optional coxeter dependency.
The
limit
parameter fromhoomd.md.methods.NVE
.The
limit
parameter fromhoomd.md.methods.rattle.NVE
.The
diameter_shift
parameter fromhoomd.md.nlist.NeighborList
.The
max_diameter
parameter fromhoomd.md.nlist.NeighborList
.
v3.0.0-beta.14 (2022-02-18)¶
Added
hoomd.hpmc.external.field.Harmonic
- harmonic potential of particles to specific sites in the simulation box and orientations.Support
cereal
1.3.1Guide on how to model molecular systems.
version.floating_point_precision
- Floating point width in bits for the particle properties and local calculations.hoomd.md.pair.LJ.tail_correction
- Option to enable the isotropic integrated long range tail correction.hoomd.md.Integrator.linear_momentum
- Compute the total system linear momentum. Loggable.hoomd.md.bond.Table
- Tabulated bond potential.hoomd.md.angle.Table
- Tabulated angle potential.hoomd.md.dihedral.Table
- Tabulated dihedral potential.hoomd.md.improper.Harmonic
- Compute the harmonic improper potential and forces.Tutorial on Organizing and executing simulations.
C++ and build system overview in
ARCHITECTURE.md
.hoomd.hpmc.external.wall
- Overlap checks between particles and wall surfaces.hoomd.md.pair.ansio.ALJ
- an anisotropic Lennard-Jones-like pair potential for polyhedra and ellipsoids.New optional dependency:
coxeter
, needed for someALJ
methods.
Changed
Support variant translational and rotational spring constants in
hoomd.hpmc.external.field.Harmonic
.[breaking] Renamed
hoomd.md.angle.Cosinesq
tohoomd.md.angle.CosineSquared
.[breaking]
hoomd.Box
no longer has amatrix
property useto_matrix
andfrom_matrix
.
Fixed
Compilation errors on FreeBSD.
TypeError
when instantiating special pair forces.Inconsistent state when using the
walls
setter of ahoomd.md.external.wall.WallPotential
.
Removed
[breaking] Removed
hoomd.md.pair.SLJ
potential and wall. Usehoomd.md.pair.ExpandedLJ
.[breaking]
hoomd.Box.lattice_vectors
property no longer exists.
v3.0.0-beta.13 (2022-01-18)¶
Added
md.pair.ExpandedLJ
- A Lennard-Jones potential wherer
is replaced withr-delta
.Support nested modification of operation parameters.
wall
- Define wall surfaces in the simulation box.md.external.wall
- Pair interactions between particles and wall surfaces.Communicator.walltime
- the wall clock time since creating theCommunicator
.md.force.Custom
- user defined forces in Python.
Changed
Call
update_group_dof
implicitly inset_snapshot
, when changing integrators or integration methods, and on steps whereFilterUpdater
acts on the system.[breaking]
update_group_dof
defers counting the degrees of freedom until the next timestep or the next call toSimulation.run
.[breaking] Renamed
md.bond.FENE
tomd.bond.FENEWCA
.md.bond.FENEWCA
takes a user provideddelta
parameter and ignores the particle diameters.[breaking]
md.pair.DLVO
takes user provideda1
anda2
parameters and ignores the particle diameters.Removed invalid linker options when using gcc on Apple systems.
Removed the
r_on
attribute anddefault_r_on
constructor argument from pair potentials that do not use it.Building from source requires a C++17 compatible compiler.
Fixed
Compile error with
Apple clang clang-1300.0.29.30
.Incorrect OPLS dihedral forces when compiled with
Apple clang clang-1300.0.29.30
.
Deprecated
md.pair.SLJ
- Replaced withmd.pair.ExpandedLJ
.
Removed
Leftover
state
logging category.
v3.0.0-beta.12 (2021-12-14)¶
Added
Support simulations with arbitrarily large or small scales (within the limits of the floating point representation).
Changed
Report full error details in the exception message.
Improved documentation.
[breaking]:
buffer
is now a required argument when constructing a neighbor list.[breaking]:
force_tol
,angmom_tol
, andenergy_tol
are now required arguments tomd.minimize.FIRE
Fixed
Allow neighbor lists to store more than
2**32-1
total neighbors.Return expected parameter values instead of
NaN
when potential parameters are set to 0.
v3.0.0-beta.11 (2021-11-18)¶
Added
Support Python 3.10.
Support clang 13.
Changed
[developers] Place all all HOOMD C++ classes in the
hoomd
and nested namespaces.[developers] Use official pre-commit clang-format repository.
v3.0.0-beta.10 (2021-10-25)¶
Added
md.minimize.FIRE
- MD integrator that minimizes the system’s potential energy.Include example AKMA and MD unit conversion factors in the documentation.
BUILD_LLVM
CMake option (defaults off) to enable features that require LLVM.hpmc.pair.user.CPPPotential
- user-defined pair potentials between particles in HPMC.hpmc.pair.user.CPPPotentialUnion
- user-defined site-site pair potentials between shapes in HPMC.hpmc.external.user.CPPExternalPotential
- user-defined external potentials in HPMC.Support user-defined pair potentials in HPMC on the GPU.
Changed
Improved documentation.
Improved error messages when setting operation parameters.
Noted some dependencies of dependencies for building documentation.
[developers] Removed
m_comm
from most classes. Usem_sysdef->isDomainDecomposed()
instead.Add support for LLVM 12
ENABLE_LLVM=on
requires the clang development libraries.[breaking] Renamed the Integrator attribute
aniso
tointegrate_rotational_dof
and removed the'auto'
option. Users must now explicitly chooseintegrate_rotational_dof=True
to integrate the rotational degrees of freedom in the system.
Fixed
Calling
Operations.__len__
no longer raises aRecursionError
.RATTLE integration methods execute on the GPU.
Include
EvaluatorPairDLVO.h
in the installation for plugins.Bug in setting zero sized
ManagedArrays
.Kernel launch errors when one process uses different GPU devices.
Race condition that lead to incorrect simulations with
md.pair.Table
.Bug where some particle filers would have 0 rotational degrees of freedom.
Removed
The
BUILD_JIT
CMake option.Support for LLVM <= 9.
v3.0.0-beta.9 (2021-09-08)¶
Added
Communicator.num_partitions
- the number of partitions in the communicator.domain_decomposition
argument toState
factory methods - set the parameters of the MPI domain decompositionState.domain_decomposition
- number of domains in the x, y, and z directions in the domain decomposition.State.domain_decomposition_split_fractions
- the fractional positions of the split planes in the domain decomposition.hoomd.update.FilterUpdater
- an updater that evaluates the particles associated with ahoomd.filter.ParticleFilter
instance.hoomd.update.RemoveDrift
- Remove the average drift from a system restrained on a lattice.Developer documentation for HOOMD-blue’s Python object data model in
ARCHITECTURE.md
.Autocomplete support for interactive notebooks.
hoomd.md.methods.OverdampedViscous
- Overdamped integrator with a drag force but no random force .MutabilityError
exception when setting read-only operation parameters.
Changed
Improved documentation.
[breaking] Moved
manifold_constrant
to separate integration method classes inhoomd.md.methods.rattle
.[breaking] Moved
trigger
to first argument position inhoomd.update.BoxResize
,hoomd.write.DCD
, andhoomd.write.GSD
.[breaking]
hoomd.data.LocalSnapshot
particle data API now matchesSnapshot
. Changes to angular momentum, moment of intertia, and rigid body id attributes.hoomd.write.CustomWriter
now exposes action through thewriter
attribute.[breaking] Active force rotational diffusion is managed by
hoomd.md.update.ActiveRotationalDiffusion
.
Fixed
TypeParameter
can set multiple parameters after callinghoomd.Simulation.run
.tune.LoadBalancer
can be used in a simulation.hoomd.md.pair.Pair
r_cut
type parameter can be set to 0.MD integration methods can be removed from the integrator’s method list.
Neighborlist exclusions update when the number of bonds change.
Errors related to equality checks between HOOMD operations.
The integrator can be removed from a simulation after running.
hoomd.md.constrain.Rigid.create_bodies
method correctly assigns the body attribute.Setting rigid attribute of a MD integrator to
None
is allowed.
Deprecated
Removed
Snapshot.exists
- usesnapshot.communicator.rank == 0
State.snapshot
- useget_snapshot
andset_snapshot
The
State.box
property setter - useState.set_box
v3.0.0-beta.8 (2021-08-03)¶
Added
Consistent documentation of parameter dimensions and units reference documentation.
md.update.ReversePerturbationFlow
- implementation ofmueller_plathe_flow
from v2.md.pair.ExpandedMie
- Mie potential wherer
is replaced withr - delta
.md.pair.Table
- Pair potential evaluated using the given tabulated values.md.constrain.Distance
- fix distances between pairs of particles.hpmc.compute.SDF
- compute the pressure of convex hard particle systems.Snapshot.wrap()
- wrap snapshot particles back into the box.Support gcc11.
md.bond.Tether
- A bond with minimum and maximum lengths.State.get_snapshot
andState.set_snapshot
- methods to access the global snapshot.State.set_box
set a new simulation box without modifying particle properties.md.long_range.pppm.make_pppm_coulomb_forces
- Long range electrostatics evaluated by PPPM.md.long_range.pppm.Coulomb
- The reciprocal part of PPPM electrostatics.md.force.ActiveOnManifold
- Active forces constrained to manifolds.
Changed
Improved documentation.
[breaking] Constructor arguments that set a default value per type or pair of types now have default in their name (e.g.
r_cut
todefault_r_cut
for pair potentials anda
todefault_a
for HPMC integrators).[developer] Support git worktree checkouts.
[breaking] Rename
nrank
toranks_per_partition
inCommunicator
.rowan is now an optional dependency when running unit tests.
Snapshot
andBox
methods that make in-place modifications return the object.
Fixed
Bug where
ThermdynamicQuantities.volume
returned 0 in 2D simulations.Update neighbor list exclusions after the number of particles changes.
Test failures with the CMake option
BUILD_MD=off
.write.Table
can now display MD pressures.
Deprecated
State.snapshot
- useget_snapshot
andset_snapshot
.The ability to set boxes with the property
State.box
- useset_box
.
Removed
[breaking]
Simulation.write_debug_data
.[breaking]
shared_msg_file
option toDevice
.msg_file
now has the same behavior asshared_msg_file
.[developers] C++ and Python implementations of
constraint_ellipsoid
, fromhoomd.md.update
andsphere
andoneD
fromhoomd.md.constrain
.[developers] Doxygen configuration files.
v3.0.0-beta.7 (2021-06-16)¶
Added
md.constrain.Rigid
- Rigid body constraints.dem_built
,hpmc_built
,md_built
, andmpcd_built
tohoomd.version
- flags that indicate when optional submodules have been built.GPU.compute_capability
property.[developers] pre-commit enforced style guidelines for the codebase.
[developers] Validation tests for MD Lennard-Jones simulations.
[developers] Unit tests for bond, angle, and dihedral potentials.
Changed
Improved documentation on compiling HOOMD.
Operations raise a
DataAccessError
when accessing properties that are not available becauseSimulation.run
has not been called.TypeConversionError
is now in thehoomd.error
package.from_gsd_snapshot
only accesses the GSD snapshot on MPI rank 0.
Fixed
Some broken references in the documentation.
Missing documentation for
md.pair.TWF
.Inconsistent documentation in
md.pair
.Correctly identify GPUs by ID in
GPU.devices
.Don’t initialize contexts on extra GPUs on MPI ranks.
Support 2D inputs in
from_gsd_snapshot
.
Deprecated
Snapshot.exists
- useSnapshot.communicator.rank == 0
instead.
Removed
[developers] C++ implementations of
rescale_temp
andenforce2d
.[developers] Unused methods of
Integrator
.
v3.0.0-beta.6 (2021-05-17)¶
Added
md.pair.LJ0804
- 8,4 Lennard-Jones pair potential.md.nlist.Stencil
- Stencil algorithm to generate neighbor lists.md.nlist.Tree
- BVH algorithm to generate neighbor lists.hoomd.md.Force
,hoomd.md.Operation
, andhoomd.md.Operations
objects are now picklable.Manifold constraints using RATTLE with
md.methods.NVE
,md.methods.Langevin
andmd.methods.Brownian
- Supporting sphere, ellipsoid, plane, cylinder, gyroid, diamond, and primitive manifolds.md.compute.HarmonicAveragedThermodynamicQuantities
- More accurate thermodynamic quantities for crystals
Changed
Raise an exception when initializing systems with invalid particle type ids.
Fixed
Setting the operations attribute in
Simulation
objects in specific circumstances.Misc documentation updates.
'sim' is not defined
error when usingmd.dihedral
potentials.
Removed
C++ implemtation of v2 logging infrastructure.
v3.0.0-beta.5 (2021-03-23)¶
Added
filter
parameter toupdate.BoxResize
- AParticleFilter
that identifies the particles to scale with the box.Simulation.seed
- one place to set random number seeds for all operations.net_force
,net_torque
, andnet_energy
per-particle arrays in local snapshots.Support
hpmc.update.Clusters
on the GPU.hpmc.update.MuVT
- Gibbs ensemble simulations with HPMC.md.update.ZeroMomentum
- Remove linear momentum from the system.hpmc.compute.FreeVolume
- Compute free volume available to test particles.Custom action tutorials.
Changed
[breaking] Removed the parameter
scale_particles
inupdate.BoxResize
[internal] Modified signature of
data.typeconverter.OnlyTypes
Remove use of deprecated numpy APIs.
Added more details to the migration guide.
Support timestep values in the range [0,2**64-1].
[breaking] Removed seed argument from
State.thermalize_particle_momenta
[breaking] Removed seed argument from
md.methods.NVT.thermalize_thermostat_dof
[breaking] Removed seed argument from
md.methods.NPT.thermalize_thermostat_and_barostat_dof
[breaking] Removed seed argument from
md.methods.NPH.thermalize_barostat_dof
[breaking] Removed seed argument from
md.methods.Langevin
[breaking] Removed seed argument from
md.methods.Brownian
[breaking] Removed seed argument from
md.force.Active
[breaking] Removed seed argument from
md.pair.DPD
[breaking] Removed seed argument from
md.pair.DPDLJ
[breaking] Removed seed argument from all HPMC integrators.
[breaking] Removed seed argument from
hpmc.update.Clusters
[breaking] Removed seed argument from
hpmc.update.BoxMC
[breaking] Removed seed argument from
hpmc.update.QuickCompress
Use latest version of getar library.
Improve documentation.
Improve performance of
md.pair.Mie
.[breaking]
hpmc.update.Clusters
re-implemented with a rejection free, but not ergodic, algorithm for anisotropic particles. The new algorithm does not run in parallel over MPI ranks.[breaking] HPMC depletion algorithm rewritten.
[breaking, temporary] HPMC depletant fugacity is now set for type pairs. This change will be reverted in a future release.
Tutorials require fresnel 0.13.
Support TBB 2021.
Fixed
Install
ParticleFilter
header files for external plugins.md.force.Active
keeps floating point values set foractive_force
andactive_torque
.create_state_from_snapshot
acceptsgsd.hoomd.Snapshot
objects without error.HOOMD compiles on Apple silicon macOS systems.
Memory leak in PPPM force compute.
Segmentation fault that occurred when dumping GSD shapes for spheropolygons and spheropolyhedra with 0 vertices.
Incorrect MD neighbor lists in MPI simulations with more than 1 rank.
md.bond.FENE
accepts parameters.
Removed
Testing with CUDA 9, GCC 4.8, GCC 5.x, GCC 6.x, clang 5
v3.0.0-beta.4 (2021-02-16)¶
Added
hoomd.write.DCD
- DCD trajectory writer.hoomd.md.many_body
- RevCross, SquareDensity, and Tersoff triplet potentials.hoomd.md.methods.Berendsen
- Berendsen integration method.hoomd.md.methods.NPH
- Constant pressure constant enthalpy integration method.hoomd.md.pair.TWF
- Potential for modeling globular proteins by Pieter Rein ten Wolde and Daan Frenkel.Custom particle filters in Python via
hoomd.filter.CustomFilter
.
Changed
Documentation improvements.
Fixed
Correctly determine the maximum
r_cut
in simulations with more than one pair potential and more than one type.
v3.0.0-beta.3 (2021-01-11)¶
Added
hoomd.variant.Variant
objects are picklable.hoomd.filter.ParticleFilter
objects are picklable.hoomd.trigger.Trigger
objects are picklable.hoomd.Snapshot.from_gsd_snapshot
- Convert GSD snapshots to HOOMD.hoomd.md.pair.aniso.GayBerne
- Uniaxial ellipsoid pair potential.hoomd.md.pair.aniso.Dipole
- Dipole pair potential.hoomd.md.pair.OPP
- Oscillating pair potential.
Changed
Improved compilation docs.
Box equality checking now returns
NotImplemented
for non-hoomd.Box
objects.Simulation.create_state_from_snapshot
now acceptsgsd.hoomd.Snapshot
objects.Attempting to run in a local snapshot context manager will now raise a
RuntimeError
.Attempting to set the state to a new snapshot in a local snapshot context manager will now raise a
RuntimeError
.
Fixed
hoomd.variant.Power
objects now have at_ramp
attribute as documented.Enable memory buffers larger than 2-4 GiB.
Correctly write large image flags to GSD files.
Support more than 26 default type names.
Correctly represent fractional degrees of freedom.
Compute the minimum image in double precision.
v3.0.0-beta.2 (2020-12-15)¶
Added
Support pybind11 2.6.0
Exclusive creation file mode for
write.GSD
.hpmc.update.BoxMC
.walltime
andfinal_timestep
loggable properties inSimulation
.Null
particle filter.Logging tutorial.
Changed
[breaking] Replace
write.GSD
argumentoverwrite
withmode
.[breaking] Rename
flags
tocategories
inLogger
hoomd.snapshot.ConfigurationData.dimensions
is not settable and is determined by the snapshot box. Ifbox.Lz == 0
, the dimensions are 2 otherwise 3.Building from source requires a C++14 compatible compiler.
Improved documentation.
hpmc.integrate.FacetedEllipsoid
’s shape specification now has a default origin of (0, 0, 0).Document loggable quantities in property docstrings.
Skip GPU tests when no GPU is present.
write.Table
writes integers with integer formatting.
Fixed
Simulation.run
now ends with aKeyboardInterrupt
exception when Jupyter interrupts the kernel.Logging the state of specific objects with nested attributes.
Broken relative RPATHs.
Add missing documentation for
version.version
Error when removing specific operations from a simulation’s operations attribute.
Find CUDA libraries on additional Linux distributions.
hpmc.update.Clusters
now works with all HPMC integrators.Simulation.timestep
reports the correct value when analyzers are called.Logger
names quantities with the documented namespace name.
v3.0.0-beta.1 (2020-10-15)¶
Overview
v3 has a completely new Python API. See the tutorials, migration guide and new API documentation learn about it. The API documentation serves as the complete list of all features currently implemented in v3.0.0-beta.1. Not all features in v2 have been ported in v3.0.0-beta.1. Future beta releases will add additional functionality.
Added
Zero-copy data access through numpy (CPU) and cupy (GPU).
User-defined operations in Python.
User-defined triggers determine what time steps operations execute on.
New logging subsystem supports array quantities and binary log files.
Implicit depletants are now supported by any hpmc integrator through
mc.set_fugacity('type', fugacity)
.Enable implicit depletants for two-dimensional shapes in hpmc.
jit.patch.user()
andjit.patch.user_union()
now support GPUs via NVRTC.Add harmonically mapped averaging.
Add Visual Studio Code workspace
Changed
The
run
method has minimal overheadAll loggable quantities are directly accessible as object properties.
Operation parameters are always synchronized.
Operations can be instantiated without a device or MPI communicator.
Writers write output for
step+1
at the bottom of therun
loop.HOOMD writes minimal output to stdout/stderr by default.
CMake >=3.9, cereal, eigen, and pybind11 are required to compile HOOMD.
Plugins must be updated to build against v3.
By default, HOOMD installs to the
site-packages
directory associated with thepython
executable given, which may be inside a virtual environment.Refactored CMake code.
git submodule update
no longer runs when during CMake configuration.Use
random123
library for implicit depletants in hpmc.HOOMD requires a GPU that supports concurrent managed memory access (Pascal or newer).
Bug fixes
Improved accuracy of DLVO potential on the GPU.
Improved performance of HPMC simulations on the CPU in non-cubic boxes.
Removed
HOOMD-blue no longer parses command line options.
Type swap moves in
hpmc.update.muvt()
are no longer supported (transfer_ratio
option tomuvt.set_params()
)The option
implicit=True
tohpmc.integrate.*
is no longer available (useset_fugacity
).static
parameter indump.gsd
util.quiet_status
andutil.unquiet_status
.deprecated.analyze.msd
.deprecated.dump.xml
.deprecated.dump.pos
.deprecated.init.read_xml
.deprecated.init.create_random
.deprecated.init.create_random_polymers
.hpmc
ignore_overlaps
parameter.hpmc
sphere_union::max_members
parameter.hpmc
convex_polyhedron_union
.hpmc
setup_pos_writer
method.hpmc
depletant_mode='circumsphere'
.hpmc
max_verts
parameter.hpmc
depletant_mode
parameter.hpmc
ntrial
parameter.hpmc
implicit
boolean parameter.group
parameter tomd.integrate.mode_minimize_fire
cgcmm.angle.cgcmm
cgcmm.pair.cgcmm
COPY_HEADERS
CMake option.Many other python modules have been removed or re-implemented with new names. See the migration guide and new API documentation for a complete list.
Support for NVIDIA GPUS with compute capability < 6.0.
v2.x¶
v2.9.7 (2021-08-03)¶
Bug fixes
Support CUDA 11.5. A bug in CUDA 11.4 may result in the error
__global__ function call is not configured
when running HOOMD.
v2.9.6 (2021-03-16)¶
Bug fixes
Support TBB 2021.
v2.9.5 (2021-03-15)¶
Bug fixes
Support macos-arm64.
Support TBB 2021.
Fix memory leak in PPPM.
v2.9.4 (2021-02-05)¶
Bug fixes
Support thrust 1.10
Support LLVM11
Fix Python syntax warnings
Fix compile errors with gcc 10
v2.9.3 (2020-08-05)¶
Bug fixes
Fix a compile error with CUDA 11
v2.9.2 (2020-06-26)¶
Bug fixes
Fix a bug where repeatedly using objects with
period=None
would use significant amounts of memory.Support CUDA 11.
Reccomend citing the 2020 Computational Materials Science paper 10.1016/j.commatsci.2019.109363.
v2.9.1 (2020-05-28)¶
Bug fixes
Fixed a minor bug where the variable period timestep would be off by one when the timestep got sufficiently large.
Updated collections API to hide
DeprecationWarning
.Fix scaling of cutoff in Gay-Berne potential to scale the current maximum distance based on the orientations of the particles, ensuring ellipsoidal energy isocontours.
Misc documentation fixes.
v2.9.0 (2020-02-03)¶
New features
General
Read and write GSD 2.0 files.
HOOMD >=2.9 can read and write GSD files created by HOOMD <= 2.8 or GSD 1.x. HOOMD <= 2.8 cannot read GSD files created by HOOMD >=2.9 or GSD >= 2.0.
OVITO >=3.0.0-dev652 reads GSD 2.0 files.
A future release of the
gsd-vmd
plugin will read GSD 2.0 files.
HPMC
User-settable parameters in
jit.patch
.2D system support in muVT updater.
Fix bug in HPMC where overlaps were not checked after adding new particle types.
MD
The performance of
nlist.tree
has been drastically improved for a variety of systems.
v2.8.2 (2019-12-20)¶
Bug fixes
Fix randomization of barostat and thermostat velocities with
randomize_velocities()
for non-unit temperatures.Improve MPCD documentation.
Fix uninitialized memory in some locations which could have led to unreproducible results with HPMC in MPI, in particular with
ALWAYS_USE_MANAGED_MEMORY=ON
.Fix calculation of cell widths in HPMC (GPU) and
nlist.cell()
with MPI.Fix potential memory-management issue in MPI for migrating MPCD particles and cell energy.
Fix bug where exclusions were sometimes ignored when
charge.pppm()
is the only potential using the neighbor list.Fix bug where exclusions were not accounted for properly in the
pppm_energy
log quantity.Fix a bug where MD simulations with MPI start off without a ghost layer, leading to crashes or dangerous builds shortly after
run()
.hpmc.update.remove_drift
now communicates particle positions after updating them.
v2.8.1 (2019-11-26)¶
Bug fixes
Fix a rare divide-by-zero in the
collide.srd
thermostat.Improve performance of first frame written by
dump.gsd
.Support Python 3.8.
Fix an error triggering migration of embedded particles for MPCD with MPI + GPU configurations.
v2.8.0 (2019-10-30)¶
New Features
MD:
hoomd.md.dihedral.harmonic
now accepts phase offsets,phi_0
, for CHARMM-style periodic dihedrals.Enable per-type shape information for anisotropic pair potentials that complements the existing pair parameters struct.
HPMC:
Enable the use of an array with adjustable parameters within the user defined pair potential.
Add muVT updater for 2D systems.
Bug fixes
Fix missing header in external plugin builds.
Enable
couple='none'
option tomd.integrate.npt()
when randomly initializing velocities.Documentation improvements.
Skip gsd shape unit test when required modules are not compiled.
Fix default particle properties when new particles are added to the system (e.g., via the muVT updater).
Fix
charge.pppm()
execution on multiple GPUs.Enable
with SimulationContext() as c
.Fix a bug for
mpcd.collide.at
with embedded particles, which may have given incorrect results or simulation crashes.
v2.7.0 (2019-10-01)¶
New features
General:
Allow components to use
Logger
at the C++ level.Drop support for python 2.7.
User-defined log quantities in
dump.gsd
.Add
hoomd.dump.gsd.dump_shape
to save particle shape information in GSD files.
HPMC:
Add
get_type_shapes
toellipsoid
.
MPCD:
mpcd.stream.slit_pore
allows for simulations through parallel-plate (lamellar) pores.mpcd.integrate
supports integration of MD (solute) particles with bounce-back rules in MPCD streaming geometries.
Bug fixes
hoomd.hdf5.log.query
works with matrix quantities.test_group_rigid.py
is run out of themd
module.Fix a bug in
md.integrate.langevin()
andmd.integrate.bd()
where on the GPU the value ofgamma
would be ignored.Fix documentation about interoperability between
md.mode_minimize_fire()
and MPI.Clarify
dump.gsd
documentation.Improve documentation of
lattice_field
andfrenkel_ladd_energy
classes.Clarify singularity image download documentation.
Correctly document the functional form of the Buckingham pair potential.
Correct typos in HPMC example snippets.
Support compilation in WSL.
v2.6.0 (2019-05-28)¶
New features
General:
Enable
HPMC
plugins.Fix plug-in builds when
ENABLE_TBB
orALWAYS_USE_MANAGED_MEMORY
CMake parameters are set.Remove support for compute 3.0 GPUs.
Report detailed CUDA errors on initialization.
Document upcoming feature removals and API changes.
MD:
Exclude neighbors that belong to the same floppy molecule.
Add fourier potential.
HPMC:
New shape class:
hpmc.integrate.faceted_ellipsoid_union()
.Store the orientable shape state.
MPCD:
mpcd.stream.slit
allows for simulations in parallel-plate channels. Users can implement other geometries as a plugin.MPCD supports virtual particle filling in bounded geometries through the
set_filler
method ofmpcd.stream
classes.mpcd.stream
includes an externalmpcd.force
acting on the MPCD particles. A block force, a constant force, and a sine force are implemented.
Bug fixes
Fix compile errors with LLVM 8 and
-DBUILD_JIT=on
.Allow simulations with 0 bonds to specify bond potentials.
Fix a problem where HOOMD could not be imported in
mpi4py
jobs.Validate snapshot input in
restore_snapshot
.Fix a bug where rigid body energy and pressure deviated on the first time step after
run()
.Fix a bug which could lead to invalid MPI simulations with
nlist.cell()
andnlist.stencil()
.
C++ API changes
Refactor handling of
MPI_Comm
inside libraryUse
random123
for random number generationCMake version 2.8.10.1 is now a minimum requirement for compiling from source
v2.5.2 (2019-04-30)¶
Bug fixes
Support LLVM 9 in
jit
Fix error when importing
jit
beforehpmc
HPMC integrators raise errors when
restore_state=True
and state information is missingSend messages to replaced
sys.stdout
andsys.stderr
streamsAdd
hpmc.update.clusters
to documentation indexFix a bug in the MPCD Gaussian random number generator that could lead to NaN values
Fix issue where an initially cubic box can become non-cubic with
integrate.npt()
andrandomize_velocities()
Fix illegal memory access in NeighborListGPU with
-DALWAYS_USE_MANAGED_MEMORY=ON
on single GPUsImprove
pair.table
performance with multi-GPU executionImprove
charge.pppm
performance with multi-GPU executionImprove rigid body performance with multi-GPU execution
Display correct cell list statistics with the
-DALWAYS_USE_MANAGED_MEMORY=ON
compile optionFix a sporadic data corruption / bus error issue when data structures are dynamically resized in simulations that use unified memory (multi-GPU, or with -DALWAYS_USE_MANAGED_MEMORY=ON compile time option)
Improve
integrate.nve
andintegrate.npt
performance with multi-GPU executionImprove some angular degrees of freedom integrators with multi-GPU execution
Improve rigid body pressure calculation performance with multi-GPU execution
v2.5.1 (2019-03-14)¶
Bug fixes
fix out-of-range memory access in
hpmc.integrate.convex_polyheron
Remove support for clang3.8 and 4.0
Documentation improvements
Fix a segfault when using
SLURM_LOCALID
v2.5.0 (2019-02-05)¶
New features
General:
Fix BondedGroupData and CommunicatorGPU compile errors in certain build configurations
MD:
Generalize
md.integrate.brownian
andmd.integrate.langevin
to support anisotropic friction coefficients for rotational Brownian motion.Improve NVLINK performance with rigid bodies
randomize_velocities
now chooses random values for the internal integrator thermostat and barostat variables.get_net_force
returns the net force on a group of particles due to a specific force compute
HPMC:
Fix a bug where external fields were ignored with the HPMC implicit integrator unless a patch potential was also in use.
JIT:
Add
jit.external.user
to specify user-defined external fields in HPMC.Use
-DHOOMD_LLVMJIT_BUILD
now instead of-DHOOMD_NOPYTHON
v2.4.2 (2018-12-20)¶
Bug fixes
Miscellaneous documentation updates
Fix compile error with
with -DALWAYS_USE_MANAGED_MEMORY=ON
Fix MuellerPlatheFlow, cast input parameter to int to avoid C++ constructor type mismatch
Improve startup time with multi-GPU simulations
Correctly assign GPUs to MPI processes on Summit when launching with more than one GPU per resource set
Optimize multi-GPU performance with NVLINK
Do not use mapped memory with MPI/GPU anymore
Fix some cases where a multi-GPU simulation fails with an alignment error
Eliminate remaining instance of unsafe
__shfl
Hide CMake warnings regarding missing CPU math libraries
Hide CMake warning regarding missing MPI<->CUDA interoperability
Refactor memory management to fix linker errors with some compilers
C++ API Changes
May break some plug-ins which rely on
GPUArray
data type being returned fromParticleData
and other classes (replace byGlobalArray
)
v2.4.1 (2018-11-27)¶
Bug fixes
Install
WarpTools.cuh
for use by pluginsFix potential violation of detailed balance with anisotropic particles with
hpmc.update.clusters
in periodic boundary conditionsSupport llvm 7.0
v2.4.0 (2018-11-07)¶
New features
General:
Misc documentation updates
Accept
mpi4py
communicators incontext.initialize
.CUDA 10 support and testing
Sphinx 1.8 support
Flush message output so that
python -u
is no longer required to obtain output on some batch job systemsSupport multi-GPU execution on dense nodes using CUDA managed memory. Execute with
--gpu=0,1,..,n-1
command line option to run on the first n GPUs (Pascal and above).Node-local acceleration is implemented for a subset of kernels. Performance improvements may vary.
Improvements are only expected with NVLINK hardware. Use MPI when NVLINK is not available.
Combine the
--gpu=..
command line option with mpirun to execute on many dense nodes
Bundle
libgetar
v0.7.0 and removesqlite3
dependencyWhen building with ENABLE_CUDA=on, CUDA 8.0 is now a minimum requirement
MD:
no changes.
HPMC:
Add
convex_spheropolyhedron_union
shape class.Correctly count acceptance rate when maximum particle move is is zero in
hpmc.integrate.*
.Correctly count acceptance rate when maximum box move size is zero in
hpmc.update.boxmc
.Fix a bug that may have led to overlaps between polygon soups with
hpmc.integrate.polyhedron
.Improve performance in sphere trees used in
hpmc.integrate.sphere_union
.Add
test_overlap
method to python API
API:
Allow external callers of HOOMD to set the MPI communicator
Removed all custom warp reduction and scan operations. These are now performed by CUB.
Separate compilation of pair potentials into multiple files.
Removed compute 2.0 workaround implementations. Compute 3.0 is now a hard minimum requirement to run HOOMD.
Support and enable compilation for sm70 with CUDA 9 and newer.
Deprecated:
HPMC: The implicit depletant mode
circumsphere
withntrial > 0
does not support compute 7.0 (Volta) and newer GPUs and is now disabled by default. To enable this functionality, configure HOOMD with option the-DENABLE_HPMC_REINSERT=ON
, which will not function properly on compute 7.0 (Volta) and newer GPUs.HPMC:
convex_polyhedron_union
is replaced byconvex_spheropolyhedron_union
(when sweep_radii are 0 for all particles)
v2.3.5 (2018-10-07)¶
Bug fixes
Document
--single-mpi
command line option.HPMC: Fix a bug where
hpmc.field.lattice_field
did not resize 2D systems properly in combination withupdate.box_resize
.
v2.3.4 (2018-07-30)¶
Bug fixes
init.read_gsd
no longer applies the time_step override when reading the restart fileHPMC: Add
hpmc_patch_energy
andhpmc_patch_rcut
loggable quantities to the documentation
v2.3.3 (2018-07-03)¶
Bug fixes
Fix
libquickhull.so
not found regression on Mac OS X
v2.3.2 (2018-06-29)¶
Bug fixes
Fix a bug where gsd_snapshot would segfault when called without an execution context.
Compile warning free with gcc8.
Fix compile error when TBB include files are in non-system directory.
Fix
libquickhull.so
not found error on additional platforms.HOOMD-blue is now available on conda-forge and the docker hub.
MPCD: Default value for
kT
parameter is removed formpcd.collide.at
. Scripts that are correctly running are not affected by this change.MPCD:
mpcd
notifies the user of the appropriate citation.MD: Correct force calculation between dipoles and point charge in
pair.dipole
Deprecated
The anaconda channel glotzer will no longer be updated. Use conda-forge to upgrade to v2.3.2 and newer versions.
v2.3.1 (2018-05-25)¶
Bug fixes
Fix doxygen documentation syntax errors
Fix libquickhull.so not found error on some platforms
HPMC: Fix bug that allowed particles to pas through walls
HPMC: Check spheropolyhedra with 0 vertices against walls correctly
HPMC: Fix plane wall/spheropolyhedra overlap test
HPMC: Restore detailed balance in implicit depletant integrator
HPMC: Correctly choose between volume and lnV moves in
hpmc.update.boxmc
HPMC: Fix name of log quantity
hpmc_clusters_pivot_acceptance
MD: Fix image list for tree neighbor lists in 2d
v2.3.0 (2018-04-25)¶
New features
General:
Store
BUILD_*
CMake variables in the hoomd cmake cache for use in external plugins.init.read_gsd
anddata.gsd_snapshot
now accept negative frame indices to index from the end of the trajectory.Faster reinitialization from snapshots when done frequently.
New command line option
--single-mpi
allows non-mpi builds of hoomd to launch within mpirun (i.e. for use with mpi4py managed pools of jobs)For users of the University of Michigan Flux system: A
--mode
option is no longer required to run hoomd.
MD:
Improve performance with
md.constrain.rigid
in multi-GPU simulations.New command
integrator.randomize_velocities()
sets a particle group’s linear and angular velocities to random values consistent with a given kinetic temperature.md.force.constant()
now supports setting the force per particle and inside a callback
HPMC:
Enabled simulations involving spherical walls and convex spheropolyhedral particle shapes.
Support patchy energetic interactions between particles (CPU only)
New command
hpmc.update.clusters()
supports geometric cluster moves with anisotropic particles and/or depletants and/or patch potentials. Supported move types: pivot and line reflection (geometric), and AB type swap.
JIT:
Add new experimental
jit
module that uses LLVM to compile and execute user provided C++ code at runtime. (CPU only)Add
jit.patch.user
: Compute arbitrary patch energy between particles in HPMC (CPU only)Add
jit.patch.user_union
: Compute arbitrary patch energy between rigid unions of points in HPMC (CPU only)Patch energies operate with implicit depletant and normal HPMC integration modes.
jit.patch.user_union
operates efficiently with additive contributions to the cutoff.
MPCD:
The
mpcd
component adds support for simulating hydrodynamics using the multiparticle collision dynamics method.
Beta feature
Node local parallelism (optional, build with
ENABLE_TBB=on
):The Intel TBB library is required to enable this feature.
The command line option
--nthreads
limits the number of threads HOOMD will use. The default is all CPU cores in the system.Only the following methods in HOOMD will take advantage of multiple threads:
hpmc.update.clusters()
HPMC integrators with implicit depletants enabled
jit.patch.user_union
Node local parallelism is still under development. It is not enabled in builds by default and only a few methods utilize multiple threads. In future versions, additional methods in HOOMD may support multiple threads.
To ensure future workflow compatibility as future versions enable threading in more components, explicitly set –nthreads=1.
Bug fixes
Fixed a problem with periodic boundary conditions and implicit depletants when
depletant_mode=circumsphere
Fixed a rare segmentation fault with
hpmc.integrate.*_union()
andhpmc.integrate.polyhedron
md.force.active
andmd.force.dipole
now record metadata properly.Fixed a bug where HPMC restore state did not set ignore flags properly.
hpmc_boxmc_ln_volume_acceptance
is now available for logging.
Other changes
Eigen is now provided as a submodule. Plugins that use Eigen headers need to update include paths.
HOOMD now builds with pybind 2.2. Minor changes to source and cmake scripts in plugins may be necessary. See the updated example plugin.
HOOMD now builds without compiler warnings on modern compilers (gcc6, gcc7, clang5, clang6).
HOOMD now uses pybind11 for numpy arrays instead of
num_util
.HOOMD versions v2.3.x will be the last available on the anaconda channel
glotzer
.
v2.2.5 (2018-04-20)¶
Bug fixes
Pin cuda compatible version in conda package to resolve
libcu*.so
not found errors in conda installations.
v2.2.4 (2018-03-05)¶
Bug fixes
Fix a rare error in
md.nlist.tree
when particles are very close to each other.Fix deadlock when
`init.read_getar`
is given different file names on different ranks.Sample from the correct uniform distribution of depletants in a sphere cap with
depletant_mode='overlap_regions'
on the CPUFix a bug where ternary (or higher order) mixtures of small and large particles were not correctly handled with
depletant_mode='overlap_regions'
on the CPUImprove acceptance rate in depletant simulations with
depletant_mode='overlap_regions'
v2.2.3 (2018-01-25)¶
Bug fixes
Write default values to gsd frames when non-default values are present in frame 0.
md.wall.force_shifted_lj
now works.Fix a bug in HPMC where
run()
would not start afterrestore_state
unless shape parameters were also set from python.Fix a bug in HPMC Box MC updater where moves were attempted with zero weight.
dump.gsd()
now writeshpmc
shape state correctly when there are multiple particle types.hpmc.integrate.polyhedron()
now produces correct results on the GPU.Fix binary compatibility across python minor versions.
v2.2.2 (2017-12-04)¶
Bug fixes
md.dihedral.table.set_from_file
now works.Fix a critical bug where forces in MPI simulations with rigid bodies or anisotropic particles were incorrectly calculated
Ensure that ghost particles are updated after load balancing.
meta.dump_metadata
no longer reports an error when used withmd.constrain.rigid
Miscellaneous documentation fixes
dump.gsd
can now write GSD files with 0 particles in a frameExplicitly report MPI synchronization delays due to load imbalance with
profile=True
Correctly compute net torque of rigid bodies with anisotropic constituent particles in MPI execution on multiple ranks
Fix
PotentialPairDPDThermoGPU.h
for use in external pluginsUse correct ghost region with
constrain.rigid
in MPI execution on multiple rankshpmc.update.muvt()
now works withdepletant_mode='overlap_regions'
Fix the sampling of configurations with in
hpmc.update.muvt
with depletantsFix simulation crash after modifying a snapshot and re-initializing from it
The pressure in simulations with rigid bodies (
md.constrain.rigid()
) and MPI on multiple ranks is now computed correctly
v2.2.1 (2017-10-04)¶
Bug fixes
Add special pair headers to install target
Fix a bug where
hpmc.integrate.convex_polyhedron
,hpmc.integrate.convex_spheropolyhedron
,hpmc.integrate.polyedron
,hpmc.integrate.faceted_sphere
,hpmc.integrate.sphere_union
andhpmc.integrate.convex_polyhedron_union
produced spurious overlaps on the GPU
v2.2.0 (2017-09-08)¶
New features
General:
Add
hoomd.hdf5.log
to log quantities in hdf5 format. Matrix quantities can be logged.dump.gsd
can now save internal state to gsd files. Calldump_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.gsd
to 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.
MD:
Added support for a 3 body potential that is harmonic in the local density.
force.constant
andforce.active
can now apply torques.quiet
option tonlist.tune
to quiet the output of the embeddedrun()
commands.Add special pairs as exclusions from neighbor lists.
Add cosine squared angle potential
md.angle.cosinesq
.Add
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 methodsmd.integrate.npt()/md.integrate.nph()
now accept a friction parameter (gamma) for damping out box fluctuations during minimization runsAdd new command
integrate.mode_standard.reset_methods()
to clear NVT and NPT integrator variables
HPMC:
hpmc.integrate.sphere_union()
takes new capacity parameter to optimize performance for different shape sizeshpmc.integrate.polyhedron()
takes new capacity parameter to optimize performance for different shape sizeshpmc.integrate.convex_polyhedron
andconvex_spheropolyhedron
now support arbitrary numbers of vertices, subject only to memory limitations (max_verts
is now ignored).HPMC integrators restore state from a gsd file read by
init.read_gsd
when the optionrestore_state
isTrue
.Deterministic HPMC integration on the GPU (optional):
mc.set_params(deterministic=True)
.New
hpmc.update.boxmc.ln_volume()
move allows logarithmic volume moves for fast equilibration.New shape:
hpmc.integrate.convex_polyhedron_union
performs simulations of unions of convex polyhedra.hpmc.field.callback()
now enables MC energy evaluation in a python functionThe option
depletant_mode='overlap_regions'
forhpmc.integrate.*
allows the selection of a new depletion algorithm that restores the diffusivity of dilute colloids in dense depletant baths
Deprecated
HPMC:
hpmc.integrate.sphere_union()
no longer needs themax_members
parameter.HPMC:
hpmc.integrate.convex_polyhedron
andconvex_spheropolyhedron
no longer needs themax_verts
parameter.The static argument to
hoomd.dump.gsd
should no longer be used. Use dynamic instead.
Bug fixes
HPMC:
hpmc.integrate.sphere_union()
andhpmc.integrate.polyhedron()
missed overlaps.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
hpmc.integrate.faceted_sphere()
MD:
charge.pppm()
withorder=7
now gives correct resultsThe PPPM energy for particles excluded as part of rigid bodies now correctly takes into account the periodic boundary conditions
EAM:
metal.pair.eam
now produces correct results.
Other changes
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
constrain.rigid
-march=native
is no longer set by default (this is now a suggestion in the documentation)Compiler flags now default to CMake defaults
ENABLE_CUDA
andENABLE_MPI
CMake 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
hpmc.integrate.sphere_union()
v2.1.9 (2017-08-22)¶
Bug fixes
Fix a bug where the log quantity
momentum
was incorrectly reported in MPI simulations.Raise an error when the user provides inconsistent
charge
ordiameter
lists tomd.constrain.rigid
.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
v2.1.8 (2017-07-19)¶
Bug fixes
`init.read_getar`
now correctly restores static quantities when given a particular frame.Fix bug where many short calls to
run()
caused incorrect results when usingmd.integrate.langevin
.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.
Other changes
The Saru generator has been moved into
hoomd/Saru.h
, and plugins depending on Saru or SaruGPU will need to update their includes. TheSaruGPU
class has been removed. Usehoomd::detail::Saru
instead for both CPU and GPU plugins.
v2.1.7 (2017-05-11)¶
Bug fixes
Fix PPM exclusion handling on the CPU
Handle
r_cut
for special pairs correctlyFix tauP reference in NPH documentation
Fixed
constrain.rigid
on compute 5.x.Fixed random seg faults when using sqlite getar archives with LZ4 compression
Fixed XZ coupling with
hoomd.md.integrate.npt
integrationFixed aspect ratio with non-cubic boxes in
hoomd.hpmc.update.boxmc
v2.1.6 (2017-04-12)¶
Bug fixes
Document
hpmc.util.tune_npt
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.
v2.1.5 (2017-03-09)¶
Bug fixes
Fixed a compile error on Mac
v2.1.4 (2017-03-09)¶
Bug fixes
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
v2.1.3 (2017-02-07)¶
Bug fixes
Fixed a bug where the WalltimeLimitReached was ignored
v2.1.2 (2017-01-11)¶
Bug fixes
(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 ensemblesFix 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
Other changes *
Drop support for compute 2.0 GPU devices
Support cusolver with CUDA 8.0
v2.1.1 (2016-10-23)¶
Bug fixes
Fix
force.active
memory allocation bugQuiet Python.h warnigns when building (python 2.7)
Allow multi-character particle types in HPMC (python 2.7)
Enable
dump.getar.writeJSON
in MPIAllow the flow to change directions in
md.update.mueller_plathe_flow
Fix critical bug in MPI communication when using HPMC integrators
v2.1.0 (2016-10-04)¶
New features
enable/disable overlap checks between pairs of constituent particles for
hpmc.integrate.sphere_union()
Support for non-additive mixtures in HPMC, overlap checks can now be enabled/disabled per type-pair
Add
md.constrain.oned
to constrain particles to move in one dimensionhpmc.integrate.sphere_union()
now takes max_members as an optional argument, allowing to use GPU memory more efficientlyAdd
md.special_pair.lj()
to support scaled 1-4 (or other) exclusions in all-atom force fieldsmd.update.mueller_plathe_flow()
: Method to create shear flows in MD simulationsuse_charge
option formd.pair.reaction_field
md.charge.pppm()
takes a Debye screening length as an optional parametermd.charge.pppm()
now computes the rigid body correction to the PPPM energy
Deprecated
HPMC: the
ignore_overlaps
flag is replaced byhpmc.integrate.interaction_matrix
Other changes
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
Bug fixes
fix invalid mesh energy in non-neutral systems with
md.charge.pppm()
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 simulationsfix a bug where the potential energy is misreported on the first step with
md.constrain.rigid()
Fix a bug where the potential energy is misreported in MPI simulations with
md.constrain.rigid()
Fix a bug where the potential energy is misreported on the first step with
md.constrain.rigid()
md.charge.pppm()
computed invalid forcesFix 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
md.pair.dpd
andmd.pair.dpdlj
set_params
Fix diameter handling in DEM shifted WCA potential
Correctly handle particle type names in lattice.unitcell
Validate
md.group.tag_list
is consistent across MPI ranks
v2.0.3 (2016-08-30)¶
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
v2.0.2 (2016-08-09)¶
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
v2.0.1 (2016-07-15)¶
Bug fixes
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
init.read_gsd
ignored therestart
argument.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.
v2.0.0 (2016-06-22)¶
HOOMD-blue v2.0 is released under a clean BSD 3-clause license.
New packages
dem
- simulate faceted shapes with dynamicshpmc
- hard particle Monte Carlo of a variety of shape classes.
Bug fixes
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
New features
Distance constraints
constrain.distance
- constrain pairs of particles to a fixed separation distanceRigid body constraints
constrain.rigid
- rigid bodies now have central particles, and support MPI and replicationMulti-GPU electrostatics
charge.pppm
- the long range electrostatic forces are now supported in MPI runscontext.initialize()
can now be called multiple times - useful in jupyter notebooksManage multiple simulations in a single job script with
SimulationContext
as 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.log
can now register python callback functions as sources for logged quantities.The GSD file format (https://gsd.readthedocs.io) is fully implemented in hoomd
dump.gsd
writes GSD trajectories and restart files (usetruncate=true
for restarts).init.read_gsd
reads GSD file and initializes the system, and can start the simulation from any frame in the GSD file.data.gsd_snapshot
reads a GSD file into a snapshot which can be modified before system initialization withinit.read_snapshot
.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.active
applies an active force (optionally with rotational diffusion) to a group of particlesupdate.constrain_ellipsoid
constrains particles to an ellipsoidintegrate.langevin
andintegrate.brownian
now apply rotational noise and damping to anisotropic particlesSupport 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_field
implements a pair force for a screened electrostatic interaction of a charge pair in a dielectric medium.force.get_energy
allows querying the potential energy of a particle group for a specific forceinit.create_lattice
initializes particles on a lattice.lattice.unitcell
provides a generic unit cell definition forcreate_lattice
Convenience functions for common lattices: sq, hex, sc, bcc, fcc.
Dump and initialize commands for the GTAR file format (https://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.npt
can now apply a constant stress tensor to the simulation box.Faceted shapes can now be simulated through the
dem
component.
Changes that require job script modifications
context.initialize()
is now required before any other hoomd script command.init.reset()
no longer exists. Usecontext.initialize()
or activate aSimulationContext
.Any scripts that relied on undocumented members of the
globals
module will fail. These variables have been moved to thecontext
module and members of the currently activeSimulationContext
.bonds, angles, dihedrals, and impropers no longer use the
set_coeff
syntax. Usebond_coeff.set
,angle_coeff.set
,dihedral_coeff.set
, andimproper_coeff.set
instead.hoomd_script
no longer exists, python commands are now spread acrosshoomd
,hoomd.md
, and other sub packages.integrate.\*_rigid()
no longer exists. Use a standard integrator ongroup.rigid_center()
, and define rigid bodies usingconstrain.rigid()
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
kT
arguments for temperature instead ofT
to 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.
Other changes
CMake minimum version is now 2.8
Convert particle type names to
str
to allow unicode type name input__version__
is now available in the top level packageboost::iostreams
is no longer a build dependencyboost::filesystem
is no longer a build dependencyNew 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.stencil
is significantly reducedA C++11 compliant compiler is now required to build HOOMD-blue
Removed
Removed
integrate.bdnvt
: useintegrate.langevin
Removed
mtk=False
option fromintegrate.nvt
- The MTK NVT integrator is now the only implementation.Removed
integrate.\*_rigid()
: rigid body functionality is now contained in the standard integration methodsRemoved the global neighbor list, and thin wrappers to the neighbor list in
nlist
.Removed PDB and MOL2 dump writers.
Removed init.create_empty
Deprecated
Deprecated analyze.msd.
Deprecated dump.xml.
Deprecated dump.pos.
Deprecated init.read_xml.
Deprecated init.create_random.
Deprecated init.create_random_polymers.
v1.x¶
v1.3.3 (2016-03-06)¶
Bug fixes
Fix problem incluing
hoomd.h
in pluginsFix random memory errors when using walls
v1.3.2 (2016-02-08)¶
Bug fixes
Fix wrong access to system.box
Fix kinetic energy logging in MPI
Fix particle out of box error if particles are initialized on the boundary in MPI
Add integrate.brownian to the documentation index
Fix misc doc typos
Fix runtime errors with boost 1.60.0
Fix corrupt metadata dumps in MPI runs
v1.3.1 (2016-1-14)¶
Bug fixes
Fix invalid MPI communicator error with Intel MPI
Fix python 3.5.1 seg fault
v1.3.0 (2015-12-8)¶
New features
Automatically load balanced domain decomposition simulations.
Anisotropic particle integrators.
Gay-Berne pair potential.
Dipole pair potential.
Brownian dynamics
integrate.brownian
Langevin dynamics
integrate.langevin
(formerlybdnvt
)nlist.stencil
to compute neighbor lists using stencilled cell lists.Add single value scale,
min_image
, andmake_fraction
todata.boxdim
analyze.log
can optionally not write a file and now supports querying current quantity values.Rewritten wall potentials.
Walls are now sums of planar, cylindrical, and spherical half-spaces.
Walls are defined and can be modified in job scripts.
Walls execute on the GPU.
Walls support per type interaction parameters.
Implemented for: lj, gauss, slj, yukawa, morse, force_shifted_lj, and mie potentials.
External electric field potential:
external.e_field
Bug fixes
Fixed a bug where NVT integration hung when there were 0 particles in some domains.
Check SLURM environment variables for local MPI rank identification
Fixed a typo in the box math documentation
Fixed a bug where exceptions weren’t properly passed up to the user script
Fixed a bug in the velocity initialization example
Fixed an openmpi fork() warning on some systems
Fixed segfaults in PPPM
Fixed a bug where compute.thermo failed after reinitializing a system
Support list and dict-like objects in init.create_random_polymers.
Fall back to global rank to assign GPUs if local rank is not available
Deprecated commands
integrate.bdnvt
is deprecated. Useintegrate.langevin
instead.dump.bin
andinit.bin
are now removed. Use XML files for restartable jobs.
Changes that may break existing scripts
boxdim.wrap
now returns the position and image in a tuple, where it used to return just the position.wall.lj
has a new APIdump.bin
andinit.bin
have been removed.
v1.2.1 (2015-10-22)¶
Bug fixes
Fix a crash when adding or removing particles and reinitializing
Fix a bug where simulations hung on sm 5.x GPUs with CUDA 7.5
Fix compile error with long tests enabled
Issue a warning instead of an error for memory allocations greater than 4 GiB.
Fix invalid RPATH when building inside
zsh
.Fix incorrect simulations with
integrate.npt_rigid
Label mie potential correctly in user documentation
v1.2.0 (2015-09-30)¶
New features
Performance improvements for systems with large particle size disparity
Bounding volume hierarchy (tree) neighbor list computation
Neighbor lists have separate
r_cut
values for each pair of typesaddInfo callback for dump.pos allows user specified information in pos files
Bug fixes
Fix
test_pair_set_energy
unit test, which failed on numpy < 1.9.0Analyze.log now accepts unicode strings.
Fixed a bug where calling
restore_snapshot()
during a run zeroed potential parameters.Fix segfault on exit with python 3.4
Add
cite.save()
to documentationFix a problem were bond forces are computed incorrectly in some MPI configurations
Fix bug in pair.zbl
Add pair.zbl to the documentation
Use
HOOMD_PYTHON_LIBRARY
to avoid problems with modified CMake builds that presetPYTHON_LIBRARY
v1.1.1 (2015-07-21)¶
Bug fixes
dump.xml(restart=True)
now works with MPI executionAdded missing documentation for
meta.dump_metadata
Build all unit tests by default
Run all script unit tests through
mpirun -n 1
v1.1.0 (2015-07-14)¶
New features
Allow builds with ninja.
Allow K=0 FENE bonds.
Allow number of particles types to change after initialization.
system.particles.types.add('newtype')
Allow number of particles to change after initialization.
system.particles.add(‘A’) del system.particles[0]
OPLS dihedral
Add
phase
keyword to analyzers and dumps to make restartable jobs easier.HOOMD_WALLTIME_STOP
environment 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.
cite.save()
writes.bib
files 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()``and
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
dump.xml()
Bug fixes
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.
Enable
-march=native
builds in OS X clang builds.Fix
group.rigid()
andgroup.nonrigid()
.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 anycomm
method that queries the MPI rank. Call it as early as possible in your job script (right after importinghoomd_script
) to avoid problems.
Deprecated
init.create_empty()
is deprecated and will be removed in a future version. Usedata.make_snapshot()
andinit.read_snapshot()
instead.Job scripts that do not call
context.initialize()
will result in a warning message. A future version of HOOMD will require that you callcontext.initialize()
.
Removed
Several
option
commands for controlling the execution configuration. Replaced withcontext.initialize
.
v1.0.5 (2015-05-19)¶
Bug fixes
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
v1.0.4 (2015-04-07)¶
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
Other
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
v1.0.3 (2015-03-18)¶
Bug fixes
Enable builds with intel MPI
Silence warnings coming from boost and python headers
v1.0.2 (2015-01-21)¶
Bug fixes
Fixed a bug where
linear_interp
would not take a floating point value for zeroProvide more useful error messages when cuda drivers are not present
Assume device count is 0 when
cudaGetDeviceCount()
returns an errorLink to python statically when
ENABLE_STATIC=on
Misc documentation updates
v1.0.1 (2014-09-09)¶
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 ofrun()
) would hang in MPI runsSearch 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 r0_fileFixed typos in
pair.gauss
documentationFixed 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 integrator. 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.
Version 1.0.0 (2014-05-25)¶
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 acceptsperiod=None
to trigger an immediate update of the box without creating a periodic updaterupdate.box_resize
now replaces None arguments with the current box parametersinit.create_random
andinit.create_random_polymers
can now create random configurations in triclinc and 2D boxesinit.create_empty
can now create triclinic boxesparticle, 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 scaletau_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 temperatureT_0 = 1
, and it is related to the internally used (Andersen) Barostat mass W viaW = d N T_0 tau_p^2
, where d is the dimensionsality and N the number of particles.sorter
andnlist
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 theL=...
shorthand for cubic box updates.All
init.*
commands now takedata.boxdim
objects, instead ofhoomd.boxdim
(or 3-tuples). We strongly encourage the use of explicit argument names fordata.boxdim()
. In particular, ifhoomd.boxdim(123)
was previously used to create a cubic box, it is now required to usedata.boxdim(L=123)
(CORRECT) instead ofdata.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 thedata.boxdim
interface. The dimensionality of the system can now be queried throughsystem.box
.system.box
no longer accepts 3-tuples. It takesdata.boxdim
objects.system.dimensions
no longer exists. Query the dimensionality of the system fromsystem.box
. Set the dimensionality of the system by passing an appropriatedata.boxdim
to aninit
method.init.create_empty
no longer acceptsn_*_types
. Instead, it now takes a list of strings to name the types.
Deprecated
Support for G80, G200 GPUs.
dump.bin
andread.bin
. These will be removed in v1.1 and replaced with a new binary format.
Removed
OpenMP mult-core execution (replaced with MPI domain decomposition)
tune.find_optimal_block_size
(replaced by Autotuner)
v0.x¶
Version 0.11.3 (2013-05-10)¶
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
Version 0.11.2 (2012-12-19)¶
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
Version 0.11.1 (2012-11-2)¶
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
Version 0.11.0 (2012-07-27)¶
New features
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 https://dx.doi.org/10.1063/1.3558787
Bug fixes
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.
API changes
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.
Testing changes
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)
Version 0.10.1 (2012-02-10)¶
Add missing entries to credits page
Add
dist_check
option to neighbor list. Can be used to force neighbor list builds at a specified frequency (useful in profiling runs with nvvp).Fix typos in ubuntu compile documentation
Add missing header files to hoomd.h
Add torque to the python particle data access API
Support boost::filesystem API v3
Expose name of executing gpu, n_cpu, hoomd version, git sha1, cuda version, and compiler version to python
Fix a bug where multiple
nvt_rigid
ornpt_rigid
integrators didn’t work correctlyFix missing pages in developer documentation
Version 0.10.0 (2011-12-14)¶
New features
Added pair.dpdlj which uses the DPD thermostat and the Lennard-Jones potential. In previous versions, this could be accomplished by using two pair commands but at the cost of reduced performance.
Additional example scripts are now present in the documentation. The example scripts are cross-linked to the commands that are used in them.
Most dump commands now accept the form: dump.ext(filename=“filename.ext”) which immediately writes out filename.ext.
Added vis parameter to dump.xml which enables output options commonly used in files written for the purposes of visulization. dump.xml also now accepts parameters on the instantiation line. Combined with the previous feature, dump.xml(filename=“file.xml”, vis=True) is now a convenient short hand for what was previously
xml = dump.xml() xml.set_params(position = True, mass = True, diameter = True, type = True, bond = True, angle = True, dihedral = True, improper = True, charge = True) xml.write(filename="file.xml")
Specify rigid bodies in XML input files
Simulations that contain rigid body constraints applied to groups of particles in BDNVT, NVE, NVT, and NPT ensembles.
integrate.bdnvt_rigid
integrate.nve_rigid
integrate.nvt_rigid
integrate.npt_rigid
Energy minimization of rigid bodies (integrate.mode_minimize_rigid_fire)
Existing commands are now rigid-body aware
update.rescale_temp
update.box_resize
update.enforce2d
update.zero_momentum
NVT integration using the Berendsen thermostat (integrate.berendsen)
Bonds, angles, dihedrals, and impropers can now be created and deleted with the python data access API.
Attribution clauses added to the HOOMD-blue license.
Changes that may break existing job scripts
The wrap option to dump.dcd has been changed to unwrap_full and its meaning inverted. dump.dcd now offers two options for unwrapping particles, unwrap_full fully unwraps particles into their box image and unwrap_rigid unwraps particles in rigid bodies so that bodies are not broken up across a box boundary.
Bug/fixes small enhancements
Fixed a bug where launching hoomd on mac os X 10.5 always resulted in a bus error.
Fixed a bug where DCD output restricted to a group saved incorrect data.
force.constant may now be applied to a group of particles, not just all particles
Added C++ plugin example that demonstrates how to add a pair potential in a plugin
Fixed a bug where box.resize would always transfer particle data even in a flat portion of the variant
OpenMP builds re-enabled on Mac OS X
Initial state of integrate.nvt and integrate.npt changed to decrease oscillations at startup.
Fixed a bug where the polymer generator would fail to initialize very long polymers
Fixed a bug where images were passed to python as unsigned ints.
Fixed a bug where dump.pdb wrote coordinates in the wrong order.
Fixed a rare problem where a file written by dump.xml would not be read by init.read_xml due to round-off errors.
Increased the number of significant digits written out to dump.xml to make them more useful for ad-hoc restart files.
Potential energy and pressure computations that slow performance are now only performed on those steps where the values are actually needed.
Fixed a typo in the example C++ plugin
Mac build instructions updated to work with the latest version of macports
Fixed a bug where set_period on any dump was ineffective.
print_status_line now handles multiple lines
Fixed a bug where using bdnvt tally with per type gammas resulted in a race condition.
Fix an issue where ENABLE_CUDA=off builds gave nonsense errors when –mode=gpu was requested.
Fixed a bug where dumpl.xml could produce files that init.xml would not read
Fixed a typo in the example plugin
Fix example that uses hoomd as a library so that it compiles.
Update maintainer lines
Added message to nlist exclusions that notifies if diameter or body exclusions are set.
HOOMD-blue is now hosted in a git repository
Added bibtex bibliography to the user documentation
Converted user documentation examples to use doxygen auto cross-referencing
\example
commandsFix a bug where particle data is not released in dump.binary
ENABLE_OPENMP can now be set in the ctest builds
Tuned block sizes for CUDA 4.0
Removed unsupported GPUS from CUDA_ARCH_LIST
Version 0.9.2 (2011-04-04)¶
Note: only major changes are listed here.
New features
New exclusion option: Particles can now be excluded from the neighbor list based on diameter consistent with pair.slj.
New pair coeff syntax: Coefficients for multiple type pairs can be specified conveniently on a single line.
coeff.set(['A', 'B', 'C', 'D'], ['A', 'B', 'C', 'D'], epsilon=1.0)
New documentation: HOOMD-blue’s system of units is now fully documented, and every coefficient in the documentation is labeled with the appropriate unit.
Performance improvements: Performance has been significantly boosted for simulations of medium sized systems (5,000-20,000 particles). Smaller performance boosts were made to larger runs.
CUDA 3.2 support: HOOMD-blue is now fully tested and performance tuned for use with CUDA 3.2.
CUDA 4.0 support: HOOMD-blue compiles with CUDA 4.0 and passes initial tests.
New command: tune.r_buff performs detailed auto-tuning of the r_buff neighborlist parameter.
New installation method: RPM, DEB, and app bundle packages are now built for easier installation
New command: charge.pppm computes the full long range electrostatic interaction using the PPPM method
Bug/fixes small enhancements
Fixed a bug where the python library was linked statically.
Added the PYTHON_SITEDIR setting to allow hoomd builds to install into the native python site directory.
FIRE energy minimization convergence criteria changed to require both energy and force to converge
Clarified that groups are static in the documentation
Updated doc comments for compatibility with Doxygen#7.3
system.particles.types now lists the particle types in the simulation
Creating a group of a non-existant type is no longer an error
Mention XML file format for walls in wall.lj documentation
Analyzers now profile themselves
Use
\n
for newlines in dump.xml - improves performance when writing many XML files on a NFS file systemFixed a bug where the neighbor list build could take an exceptionally long time (several seconds) to complete the first build.
Fixed a bug where certain logged quantities always reported as 0 on the first step of the simulation.
system.box can now be used to read and set the simulation box size from python
Numerous internal API updates
Fixed a bug the resulted in incorrect behavior when using integrate.npt on the GPU.
Removed hoomd launcher shell script. In non-sitedir installs, ${HOOMD_ROOT}/bin/hoomd is now the executable itself
Creating unions of groups of non-existent types no longer produces a seg fault
hoomd now builds on all cuda architectures. Modify CUDA_ARCH_LIST in cmake to add or remove architectures from the build
hoomd now builds with boost#46.0
Updated hoomd icons to maize/blue color scheme
hoomd xml file format bumped to#3, adds support for charge.
FENE and harmonic bonds now handle 0 interaction parameters and 0 length bonds more gracefully
The packaged plugin template now actually builds and installs into a recent build of hoomd
Version 0.9.1 (2010-10-08)¶
Note: only major changes are listed here.
New features
New constraint: constrain.sphere constrains a group of particles to the surface of a sphere
New pair potential/thermostat: pair.dpd implements the standard DPD conservative, random, and dissipative forces
New pair potential: pair.dpd_conservative applies just the conservative DPD potential
New pair potential: pair.eam implements the Embedded Atom Method (EAM) and supports both alloy and FS type computations.
Faster performance: Cell list and neighbor list code has been rewritten for performance.
In our benchmarks, performance increases ranged from 10-50% over HOOMD-blue 0.9.0. Simulations with shorter cutoffs tend to attain a higher performance boost than those with longer cutoffs.
We recommended that you re-tune r_buff values for optimal performance with 0.9.1.
Due to the nature of the changes, identical runs may produce different trajectories.
Removed limitation: The limit on the number of neighbor list exclusions per particle has been removed. Any number of exclusions can now be added per particle. Expect reduced performance when adding excessive numbers of exclusions.
Bug/fixes small enhancements
Pressure computation is now correct when constraints are applied.
Removed missing files from hoomd.h
pair.yukawa is no longer referred to by “gaussian” in the documentation
Fermi GPUs are now prioritized over per-Fermi GPUs in systems where both are present
HOOMD now compiles against CUDA 3.1
Momentum conservation significantly improved on compute#x hardware
hoomd plugins can now be installed into user specified directories
Setting r_buff=0 no longer triggers exclusion list updates on every step
CUDA 2.2 and older are no longer supported
Workaround for compiler bug in 3.1 that produces extremely high register usage
Disabled OpenMP compile checks on Mac OS X
Support for compute 2.1 devices (such as the GTX 460)
Version 0.9.0 (2010-05-18)¶
Note: only major changes are listed here.
New features
New pair potential: Shifted LJ potential for particles of varying diameters (pair.slj)
New pair potential: Tabulated pair potential (pair.table)
New pair potential: Yukawa potential (pair.yukawa)
Update to pair potentials: Most pair potentials can now accept different values of r_cut for different type pairs. The r_cut specified in the initial pair.*** command is now treated as the default r_cut, so no changes to scripts are necessary.
Update to pair potentials: Default pair coeff values are now supported. The parameter alpha for lj now defaults to#0, so there is no longer a need to specify it for a majority of simulations.
Update to pair potentials: The maximum r_cut needed for the neighbor list is now determined at the start of each run(). In simulations where r_cut may decrease over time, increased performance will result.
Update to pair potentials: Pair potentials are now specified via template evaluator classes. Adding a new pair potential to hoomd now only requires a small amount of additional code.
Plugin API : Advanced users/developers can now write, install, and use plugins for hoomd without needing to modify core hoomd source code
Particle data access: User-level hoomd scripts can now directly access the particle data. For example, one can change all particles in the top half of the box to be type B:
top = group.cuboid(name="top", zmin=0) for p in top: p.type = 'B'
. All particle data including position, velocity, type, ‘’et cetera’’, can be read and written in this manner. Computed forces and energies can also be accessed in a similar way.
New script command: init.create_empty() can be used in conjunction with the particle data access above to completely initialize a system within the hoomd script.
New script command: dump.bin() writes full binary restart files with the entire system state, including the internal state of integrators.
File output can be gzip compressed (if zlib is available) to save space
Output can alternate between two different output files for safe crash recovery
New script command: init.read_bin() reads restart files written by dump.bin()
New option: run() now accepts a quiet option. When True, it eliminates the status information printouts that go to stdout.
New example script: Example 6 demonstrates the use of the particle data access routines to initialize a system. It also demonstrates how to initialize velocities from a gaussian distribution
New example script: Example 7 plots the pair.lj potential energy and force as evaluated by hoomd. It can trivially be modified to plot any potential in hoomd.
New feature: Two dimensional simulations can now be run in hoomd: #259
New pair potential: Morse potential for particles of varying diameters (pair.morse)
New command: run_upto will run a simulation up to a given time step number (handy for breaking long simulations up into many independent jobs)
New feature: HOOMD on the CPU is now accelerated with OpenMP.
New feature: integrate.mode_minimize_fire performs energy minimization using the FIRE algorithm
New feature: analyze.msd can now accept an xml file specifying the initial particle positions (for restarting jobs)
Improved feature: analyze.imd now supports all IMD commands that VMD sends (pause, kill, change trate, etc.)
New feature: Pair potentials can now be given names, allowing multiple potentials of the same type to be logged separately. Additionally, potentials that are disabled and not applied to the system dynamics can be optionally logged.
Performance improvements: Simulation performance has been increased across the board, but especially when running systems with very low particle number densities.
New hardware support: 0.9.0 and newer support Fermi GPUs
Deprecated hardware support: 0.9.x might continue run on compute#1 GPUs but that hardware is no longer officially supported
New script command: group.tag_list() takes a python list of particle tags and creates a group
New script command: compute.thermo() computes thermodynamic properties of a group of particles for logging
New feature: dump.dcd can now optionally write out only those particles that belong to a specified group
Changes that will break jobs scripts written for 0.8.x
Integration routines have changed significantly to enable new use cases. Where scripts previously had commands like:
integrate.nve(dt=0.005)
they now need
all = group.all() integrate.mode_standard(dt=0.005) integrate.nve(group=all)
. Integrating only specific groups of particles enables simulations to fix certain particles in place or integrate different parts of the system at different temperatures, among many other possibilities.
sorter.set_params no longer takes the ‘’bin_width’’ argument. It is replaced by a new ‘’grid’’ argument, see the documentation for details.
conserved_quantity is no longer a quantity available for logging. Instead log the nvt reservoir energy and compute the total conserved quantity in post processing.
Bug/fixes small enhancements
Fixed a bug where boost#38 is not found on some machines
dump.xml now has an option to write particle accelerations
Fixed a bug where periods like 1e6 were not accepted by updaters
Fixed a bug where bond.fene forces were calculated incorrectly between particles of differing diameters
Fixed a bug where bond.fene energies were computed incorrectly when running on the GPU
Fixed a bug where comments in hoomd xml files were not ignored as they aught to be: #331
It is now possible to prevent bond exclusions from ever being added to the neighbor list: #338
init.create_random_polymers can now generate extremely dense systems and will warn the user about large memory usage
variant.linear_interp now accepts a user-defined zero (handy for breaking long simulations up into many independent jobs)
Improved installation and compilation documentation
Integration methods now silently ignore when they are given an empty group
Fixed a bug where disabling all forces resulted in some forces still being applied
Integrators now behave in a reasonable way when given empty groups
Analyzers now accept a floating point period
run() now aborts immediately if limit_hours=0 is specified.
Pair potentials that diverge at r=0 will no longer result in invalid simulations when the leading coefficients are set to zero.
integrate.bdnvt can now tally the energy transferred into/out of the “reservoir”, allowing energy conservation to be monitored during bd simulation runs.
Most potentials now prevent NaN results when computed for overlapping particles
Stopping a simulation from a callback or time limit no longer produces invalid simulations when continued
run() commands limited with limit_hours can now be set to only stop on given timestep multiples
Worked around a compiler bug where pair.morse would crash on Fermi GPUs
ULF stability improvements for G200 GPUs.
Version 0.8.2 (2009-09-10)¶
Note: only major changes are listed here.
New features
Quantities that vary over time can now be specified easily in scripts with the variant.linear_interp command.
Box resizing updater (update.box_resize) command that uses the time varying quantity command to grow or shrink the simulation box.
Individual run() commands can be limited by wall-clock time
Angle forces can now be specified
Dihedral forces can now be specified
Improper forces can now be specified
1-3 and 1-4 exclusions from the cutoff pair force can now be chosen
New command line option: –minimize-cpu-usage cuts the CPU usage of HOOMD down to 10% of one CPU core while only decreasing overall performance by 10%
Major changes have been made in the way HOOMD chooses the device on which to run (all require CUDA 2.2 or newer)
there are now checks that an appropriate NVIDIA drivers is installed
running without any command line options will now correctly revert to running on the CPU if no capable GPUs are installed
when no gpu is explicitly specified, the default choice is now prioritized to choose the fastest GPU and one that is not attached to a display first
new command line option: –ignore-display-gpu will prevent HOOMD from executing on any GPU attached to a display
HOOMD now prints out a short description of the GPU(s) it is running on
on linux, devices can be set to compute-exclusive mode and HOOMD will then automatically choose the first free GPU (see the documentation for details)
nlist.reset_exclusions command to control the particles that are excluded from the neighbor list
Bug/fixes small enhancements
Default block size change to improve stability on compute#3 devices
ULF workaround on GTX 280 now works with CUDA 2.2
Standalone benchmark executables have been removed and replaced by in script benchmarking commands
Block size tuning runs can now be performed automatically using the python API and results can be saved on the local machine
Fixed a bug where GTX 280 bug workarounds were not properly applied in CUDA 2.2
The time step read in from the XML file can now be optionally overwritten with a user-chosen one
Added support for CUDA 2.2
Fixed a bug where the WCA forces included in bond.fene had an improper cutoff
Added support for a python callback to be executed periodically during a run()
Removed demos from the hoomd downloads. These will be offered separately on the webpage now to keep the required download size small.
documentation improvements
Significantly increased performance of dual-GPU runs when build with CUDA 2.2 or newer
Numerous stability and performance improvements
Temperatures are now calculated based on 3N-3 degrees of freedom. See #283 for a more flexible system that is coming in the future.
Emulation mode builds now work on systems without an NVIDIA card (CUDA 2.2 or newer)
HOOMD now compiles with CUDA 2.3
Fixed a bug where uninitialized memory was written to dcd files
Fixed a bug that prevented the neighbor list on the CPU from working properly with non-cubic boxes
There is now a compile time hack to allow for more than 4 exclusions per particle
Documentation added to aid users in migrating from LAMMPS
hoomd_script now has an internal version number useful for third party scripts interfacing with it
VMD#8.7 is now found by the live demo scripts
live demos now run in vista 64-bit
init.create_random_polymers can now create polymers with more than one type of bond
Version 0.8.1 (2009-03-24)¶
Note: only major changes are listed here.
New features
Significant performance enhancements
New build option for compiling on UMich CAC clusters: ENABLE_CAC_GPU_ID compiles HOOMD to read in the $CAC_GPU_ID environment variable and use it to determine which GPUs to execute on. No –gpu command line required in job scripts any more.
Particles can now be assigned a non-unit mass
init.reset() command added to allow for the creation of a looped series of simulations all in python
dump.pdb() command for writing PDB files
pair.lj now comes with an option to shift the potential energy to 0 at the cutoff
pair.lj now comes with an opiton to smoothly switch both the potential and force to 0 at the cutoff with the XPLOR smoothing function
Gaussian pair potential computation added (pair.gauss)
update and analyze commands can now be given a function to determine a non-linear rate to run at
analyze.log, and dump.dcd can now append to existing files
Changes that will break scripts from 0.8.0
dump.mol2() has been changed to be more consistent with other dump commands. In order to get the same result as the previous behavior, replace
dump.mol2(filename="file.mol2")
with
mol2 = dump.mol2() mol2.write(filename="file.mol2")
Grouping commands have been moved to their own package for organizational purposes. group_all() must now be called as group.all() and similarly for tags and type.
Bug/fixes small enhancements
Documentation updates
DCD file writing no longer crashes HOOMD in windows
!FindBoost.cmake is patched upstream. Use CMake 2.6.3 if you need BOOST_ROOT to work correctly
Validation tests now run with –gpu_error_checking
ULF bug workarounds are now enabled only on hardware where they are needed. This boosts performance on C1060 and newer GPUs.
!FindPythonLibs now always finds the shared python libraries, if they exist
“make package” now works fine on mac os x
Fixed erroneously reported dangerous neighbor list builds when using –mode=cpu
Small tweaks to the XML file format.
Numerous performance enhancements
Workaround for ULF on compute#1 devices in place
dump.xml can now be given the option “all=true” to write all fields
total momentum can now be logged by analyze.log
HOOMD now compiles with boost#38 (and hopefully future versions)
Updaters can now be given floating point periods such as 1e5
Additional warnings are now printed when HOOMD is about to allocate a large amount of memory due to the specification of an extremely large box size
run() now shows up in the documentation index
Default sorter period is now 100 on CPUs to improve performance on chips with small caches
Version 0.8.0 (2008-12-22)¶
Note: only major changes are listed here.
New features
Addition of FENE bond potential
Addition of update.zero_momentum command to zero a system’s linear momentum
Brownian dynamics integration implemented
Multi-GPU simulations
Particle image flags are now tracked. analyze.msd command added to calculate the mean squared displacement.
Changes that will break scripts from 0.7.x
analyze.log quantity names have changed
Bug/fixes small enhancements
Performance of the neighbor list has been increased significantly on the GPU (overall performance improvements are approximately 10%)
Profile option added to the run() command
Warnings are now correctly printed when negative coefficients are given to bond forces
Simulations no longer fail on G200 cards
Mac OS X binaries will be provided for download: new documentation for installing on Mac OS x has been written
Two new demos showcasing large systems
Particles leaving the simulation box due to bad initial conditions now generate an error
win64 installers will no longer attempt to install on win32 and vice-versa
neighborlist check_period now defaults to 1
The elapsed time counter in run() now continues counting time over multiple runs.
init.create_random_polymers now throws an error if the bond length is too small given the specified separation radii
Fixed a bug where a floating point value for the count field in init.create_random_polymers produced an error
Additional error checking to test if particles go NaN
Much improved status line printing for identifying hoomd_script commands
Numerous documentation updates
The VS redistributable package no longer needs to be installed to run HOOMD on windows (these files are distributed with HOOMD)
Now using new features in doxygen#5.7 to build pdf user documentation for download.
Performance enhancements of the Lennard-Jones pair force computation, thanks to David Tarjan
A header prefix can be added to log files to make them more gnuplot friendly
Log quantities completely revamped. Common quantities (i.e. kinetic energy, potential energy can now be logged in any simulation)
Particle groups can now be created. Currently only analyze.msd makes use of them.
The CUDA toolkit no longer needs to be installed to run a packaged HOOMD binary in windows.
User documentation can now be downloaded as a pdf.
Analyzers and updaters now count time 0 as being the time they were created, instead of time step 0.
Added job test scripts to aid in validating HOOMD
HOOMD will now build with default settings on a linux/unix-like OS where the boost static libraries are not installed, but the dynamic ones are.
Version 0.7.1 (2008-09-12)¶
Fixed bug where extremely large box dimensions resulted in an argument error - ticket:118
Fixed bug where simulations ran incorrectly with extremely small box dimensions - ticket:138
Version 0.7.0 (2008-08-12)¶
Note: only major changes are listed here.
Stability and performance improvements.
Cleaned up the hoomd_xml file format.
Improved detection of errors in hoomd_xml files significantly.
Users no longer need to manually specify HOOMD_ROOT, unless their installation is non-standard
Particle charge can now be read in from a hoomd_xml file
Consistency changes in the hoomd_xml file format: HOOMD 0.6.0 XML files are not compatible. No more compatibility breaking changes are planned after 0.7.0
Enabled parallel builds in MSVC for faster compilation times on multicore systems
Numerous small bug fixes
New force compute for implementing walls
Documentation updates
Support for CUDA 2.0
Bug fixed allowing simulations with no integrator
Support for boost#35.0
Cleaned up GPU code interface
NVT integrator now uses tau (period) instead of Q (the mass of the extra degree of freedom).
Added option to NVE integration to limit the distance a particle moves in a single time step
Added code to dump system snapshots in the DCD file format
Particle types can be named by strings
A snapshot of the initial configuration can now be written in the .mol2 file format
The default build settings now enable most of the optional features
Separated the user and developer documentation
Mixed polymer systems can now be generated inside HOOMD
Support for CMake 2.6.0
Wrote the user documentation
GPU selection from the command line
Implementation of the job scripting system
GPU can now handle neighbor lists that overflow
Energies are now calculated
Added a logger for logging energies during a simulation run
Code now actually compiles on Mac OS X
Benchmark and demo scripts now use the new scripting system
Consistent error message format that is more visible.
Multiple types of bonds each with the own coefficients are now supported
Added python scripts to convert from HOOMD’s XML file format to LAMMPS input and dump files
Fixed a bug where empty xml nodes in input files resulted in an error message
Fixed a bug where HOOMD seg faulted when a particle left the simulation , vis=True)* is now a convenient short hand for what was previously box now works fine on mac os x
Fixed erroneously reported dangerous neighbor list builds when using –mode=cpu
Small tweaks to the XML file format.
Numerous performance enhancements
Workaround for ULF on compute#1 devices in place
dump.xml can now be given the option