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 the geometry 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 was aquire before (Felix Höfling)
  • rename particle group from_range to id_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 same particle 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 group region_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 property fluctuating of the particle 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 and append_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 of halmd.observables.utility.wavevector. In addition, a dense 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 signals on_start and on_finish are triggered only upon first invocation of run() and upon return from main() of the simulation script, respectively. The profiler output function is connected to the on_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 optionally define_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 integrator halmd.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 and halmd.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 of halmd.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.3

Improvements

  • fully support mobility filters for the VACF

Version 0.1.2

Improvements

  • revise documentation

Bug fixes

  • fix build failure with Boost C++ 1.46

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).