Changelog¶
Version 1.0.2¶
Bug fixes
- external potential
planar_wall
: build also a GPU variant for double-single precision, which was missing (Felix Höfling) - computation of thermodynamic observables (e.g., density): allow the user to pass the correct volume when restricting the particle group to a sub-domain of the simulation box (Felix Höfling)
Improvements
- observables: let
thermodynamics
write the reference volume by default to the output file (Felix Höfling) - add function
volume
to thegeometry modules
(Felix Höfling)
Version 1.0.1¶
Bug fixes
- example script
liquid/shear_viscosity.lua
: fixed the truncation of the Lennard-Jones potential, which was missing due to the use of an outdated Lua interface of the potential module (Felix Höfling)
Improvements
- documentation: minor amendments and corrections (Felix Höfling)
- some improvements to example scripts (Felix Höfling)
- benchmarks: optimise neighbour list parameters, add results for RTX 2080 Super (Felix Höfling)
- improve stability of build process (Jaslo Ziska, Felix Höfling)
Version 1.0.0¶
Breaking changes
- fix misspelled keyword
acquire
in Lua API, it wasaquire
before (Felix Höfling) - rename particle group
from_range
toid_range
(Roya Ebrahimi Viand)
Bug fixes
- correctly support GPUs of compute capability ≥ 7.0 (Volta). Since the Volta architecture, Nvidia dropped the CUDA paradigm of executing threads within a warp in lock-step fashion, which led to wrong results in some algorithms. (Felix Höfling)
- fix wrong output of particle data to a file, which happened if several
phase space
samplers, e.g., for different groups, were operating on the sameparticle
instance. (Roya Ebrahimi Viand) - fix wrong output of wavenumbers to a file in case of discarded values, e.g.,
if a non-cubic box and a wavevector filter were passed to
halmd.observables.utility.wavevector
(Felix Höfling) - various small fixes in example scripts, corrected and more robust unit tests (Jaslo Ziska, Felix Höfling)
New features
- select particles in a region of the simulation box through the new particle
group
region
. The selection can be inside or outside of a cuboid or a sphere. Further, the new particle groupregion_species
restricts this selection to a certain particle species. (Nicolas Höft, Roya Ebrahimi Viand) - support fluctuating particle number in file writer of
halmd.observables.thermodynamics
. It needs the new propertyfluctuating
of theparticle group
to be set. (Felix Höfling) - support for
external, one-body potentials
. The list of potential functions is easily extensible, currently we have a harmonic trap and a set of planar Lennard-Jones walls to form, e.g., a slit pore or a wedge (Felix Höfling, Sutapa Roy) - signals
prepend_apply
andappend_apply
of the force modules, which can be used e.g., to read out the force partially when adding up contributions from different potentials (Sutapa Roy) - wavevectors can be restricted to an axis or plane aligned with the coordinate
frame, using the new
filter
keyword ofhalmd.observables.utility.wavevector
. In addition, adense
grid of wavevectors can be generated from the reciprocal lattice. (Felix Höfling)
Improvements
- usage documentation: add tutorial on diffusion in a simple liquid (Jake Atwell)
- examples: simplify scripts for basic simulations of a one-component Lennard-Jones fluid (Felix Höfling)
- developer’s guide: describe programme flow, data dependencies between modules, and the signal/slot mechanism (Felix Höfling)
- support multiple calls to
sampler:run()
. With the default simulation engine, the signalson_start
andon_finish
are triggered only upon first invocation ofrun()
and upon return frommain()
of the simulation script, respectively. Theprofiler
output function is connected to theon_finish
signal, removing the need to call it explicitly. (Felix Höfling) - forward non-default neighbour list parameters to
forces.pair_trunc
, which in many cases removes the need to construct a custom neighbour list module (Felix Höfling) - simple substitution of environment variables in filename pattern using a new
argument parser action from
halmd.utility.program_options
(Felix Höfling) halmd.mdsim.clock
can be advanced explicitly in the simulation script (for experienced users only) (Felix Höfling)- support the CUDA SDK up to version 10.2, the HDF5 library up to version 1.10.6, and the Boost C++ library up to version 1.72.0 (Jaslo Ziska)
Version 1.0-alpha6¶
Breaking changes
- simplifications of the simulation script: essential setup (e.g. logger) is no
longer the user’s responsibility, merely routines
main()
and optionallydefine_args()
are needed. Provide argument parser actions (Daniel Kirchner) - pair potentials are truncated or modified by generic potential adapters (Daniel Kirchner)
Bug fixes
- remove velocity rescaling from
halmd.mdsim.velocities.boltzmann
, shifting of the velocities to zero centre of mass is retained. This fixes also the integratorhalmd.mdsim.integrators.verlet_nvt_boltzmann
, which now samples correctly from a Maxwell-Boltzmann distribution (except for the mentioned constraint). (Felix Höfling, Daniel Kirchner) - host backend compiles with single floating-point precision again (Daniel Kirchner)
- support very large particle numbers on the GPU (more than 10⁷) by improved choice of the CUDA configuration dimensions (Daniel Kirchner)
Improvements
- more flexible interfaces of
halmd.mdsim.particle
andhalmd.observables.phase_space
using string-based identifiers of data arrays (Daniel Kirchner) - specify floating-point precision in the simulation script (see construction
of
halmd.mdsim.particle
). Use CMake flags to control for which precisions GPU and host backends are built. (Daniel Kirchner) - overwrite output files only if forced to do so, add command line flag
--overwrite
. (Daniel Kirchner)
Internal changes
- switch to extensible and generic data arrays in
halmd.mdsim.particle
, unified implementation of single and mixed precision arrays (Daniel Kirchner)
Version 1.0-alpha5¶
Breaking changes
- increase minimal required version of the CUDA SDK to 5.0 (Nicolas Höft)
Bug fixes
- fix build with up-to-date versions of build tools and third-party libraries: (Daniel Kirchner, Nicolas Höft)
- minor fixes in exemplary simulation scripts (Felix Höfling, Nicolas Höft)
New features
- release the software under the terms of the LGPL-3+ license (Felix Höfling)
- find additional Lua scripts in the directory of the simulation script, which allows factoring out common functions or definitions, e.g., of interaction potentials (Felix Höfling)
- add function
to_particle()
to particle groups, which convert the selected particles to an instance ofhalmd.mdsim.particle
(Nicolas Höft)
Improvements
- drop restriction on minimal number of Verlet neighbour cells (fall back to no binning upon neighbour list construction) (Nicolas Höft)
- builds with standard CMake ≥ 2.8.12, the patch for native CUDA support is not needed anymore (Daniel Kirchner)
- support version 7.5 of the CUDA SDK (Daniel Kirchner)
- increase default CUDA compute capability to 2.0 (older hardware is still supported with CUDA SDK ≤ 6.0) (Daniel Kirchner)
Version 1.0-alpha4¶
Breaking changes
- Lua scripts in
examples/liquid
: rename option “–trajectory” to “–input” (Felix Höfling)
Bug fixes
- fix native build for Fermi and Kepler GPUs (compute capability ≥ 2.0) (Nicolas Höft)
- fix build with Boost ≥ 1.57.0 (Nicolas Höft)
- compatibility with HDF5 ≥ 1.8.14 (Nicolas Höft, Felix Höfling)
New features
- add function
halmd.random.shuffle()
, which allows one, e.g., to setup well-stirred fluid mixtures (Felix Höfling)
Improvements
- documentation: new sections “Recipes” and “Publications” (Felix Höfling)
- support version 6.0 of the CUDA SDK (Nicolas Höft)
- support both Lua 5.1 and Lua 5.2 (built without compatibility flags) (Nicolas Höft)
Version 1.0-alpha3¶
Breaking changes
- mdsim/particle: make space dimension mandatory (Felix Höfling)
- mdsim/potentials: move to sub-namespace “pair” (Felix Höfling)
Bug fixes
- potentials: fix uninitialised memory for energy shift (host only) (Nicolas Höft)
- integrators: make Nosé–Hoover thermostat working again (Felix Höfling)
- compile and build against Boost C++ 1.56 (Felix Höfling)
New features
- tensor-valued custom dynamic correlation functions (Felix Höfling)
Improvements
- packages.mk: more robust installation of prerequisites (Felix Höfling)
- documentation: installation instructions, minor fixes (Felix Höfling)
Internal changes
- move from boost::{array,tuple} to std::{array,tuple} (Nicolas Höft)
- mdsim/box: fix failing unit test (Nicolas Höft)
Version 1.0-alpha2¶
Improvements
- drop submodule Boost.Log and use library shipped with Boost ≥ 1.55 (Nicolas Höft)
- integrators: reduce memory access gives a 10-20% performance gain (GPU only) (Felix Höfling)
- documentation: new benchmark results, minor fixes and updates (Felix Höfling, Nicolas Höft)
Bug fixes
- integrators: fix missing update of box image data (GPU only) (Felix Höfling)
Version 1.0-alpha1¶
Substantial development (1225 commits!) happened since version 0.2.1 with contributions from Peter Colberg, Felix Höfling, and Nicolas Höft.
Most important changes
- completed the switch from a monolithic to a modular design
- modules are exposed through a Lua API
- simulations are defined and steered by either custom or shipped Lua scripts
- dynamic correlation functions can be customised
- H5MD format (version 1.0) for input and output files
- face lift of the website
Version 0.2.1¶
Improvements
- improve performance of force kernel for truncated pair interactions by about 10% due to inefficient use of the texture cache
Bug fixes
- fix regex benchmark scripts
- fix build failure with Boost C++ 1.53.0
- fix build failure with nvcc option -arch=sm_20 and CMake switch VERLET_DSFUN=FALSE
Version 0.2.0¶
Version 0.2.0 is a complete rewrite of branch 0.1.x, aiming at a modular code base. Most algorithms, in particular the actual MD simulation algorithms, have been kept.
This version features a slightly larger choice of potentials and NVT integrators, but it brings only rudimentary support for dynamic correlations functions.
Version 0.1.1¶
New features
- computation of shear viscosity
- displacement/mobility filters for dynamic correlation functions
Bug fixes
- fix build failure with CUDA 3.2
- fix build failure with Boost C++ 1.42
Version 0.1.0¶
The first release of HAL’s MD package, forming the basis for the preprint at http://arxiv.org/abs/0912.3824, later published in Comput. Phys. Commun. 182, 1120 (2011).