Releases: glotzerlab/hoomd-blue
v3.0.1
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
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]{.title-ref} 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 from
V
toU
. - [breaking] Renamed the
hoomd.md.pair.Table
energy parameter from
V
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
to
hoomd.md.nlist.NeighborList
. - [developer]
Updater
andAnalyzer
in C++ have am_trigger
member now. - [developer]
_TriggeredOperation
has been moved to
TriggeredOperation
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
when
tail_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
Added
hoomd.hpmc.external.field.Harmonic
- harmonic potential of
particles to specific sites in the simulation box and orientations.- Support
cereal
1.3.1 - Guide 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
to
hoomd.md.angle.CosineSquared
. - [breaking]
hoomd.Box
no longer has amatrix
property use
to_matrix
andfrom_matrix
.
Fixed
- Compilation errors on FreeBSD.
TypeError
when instantiating special pair forces.- Inconsistent state when using the
walls
setter of a
hoomd.md.external.wall.WallPotential
.
Removed
- [breaking] Removed
hoomd.md.pair.SLJ
potential and wall. Use
hoomd.md.pair.ExpandedLJ
. - [breaking]
hoomd.Box.lattice_vectors
property no longer exists.
v3.0.0-beta.13
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 the
Communicator
.hoomd.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 where
FilterUpdater
acts on the system. - [breaking]
update_group_dof
defers counting the degrees of
freedom until the next timestep or the next call to
Simulation.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.
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
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
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
Added
hoomd.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.hoomd.hpmc.pair.user.CPPPotential
- user-defined pair potentials
between particles in HPMC.hoomd.hpmc.pair.user.CPPPotentialUnion
- user-defined site-site
pair potentials between shapes in HPMC.hoomd.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 dependecies for building documentation.
- [devlopers] Removed
m_comm
from most classes. Use
m_sysdef->isDomainDecomposed()
instead. - Add support for LLVM 12
ENABLE_LLVM=on
requires the clang development libraries.- [breaking] Renamed the Integrator attribute
aniso
to
integrate_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
hoomd.Operations.__len__
no longer raises a
RecursionError
. - 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
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 a
[hoomd.filter.ParticleFilter]{.title-ref} 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
inARCHITECTURE.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 in
[hoomd.update.BoxResize]{.title-ref}, [hoomd.write.DCD]{.title-ref},
and [hoomd.write.GSD]{.title-ref}. - [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 calling
hoomd.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
Added
- Consistent documentation of parameter dimensions and units reference
documentation. md.update.ReversePerturbationFlow
- implementation of
mueller_plathe_flow
from v2.md.pair.ExpandedMie
- Mie potential wherer
is replaced with
r - 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
to
default_r_cut
for pair potentials anda
todefault_a
for HPMC
integrators). - [developer] Support git worktree checkouts.
- [breaking] Rename
nrank
toranks_per_partition
in
Communicator
. - 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
- use
set_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
and
oneD
fromhoomd.md.constrain
. - [developers] Doxygen configuration files.