Skip to content

es 430 release notes

Jean-Noël Grad edited this page Jun 20, 2023 · 10 revisions

These are the draft release notes for ESPResSo 4.3.0 (milestone).

ESPResSo 4.3

This is a feature release, i.e., new functionality is added to ESPResSo.

An additional focus of this release is replacing the original lattice-Boltzmann and electrokinetics codes by the waLBerla library. This structural change will allow the community to develop new LB and EK methods via pystencils and lbmpy and couple them to ESPResSo's molecular dynamics engine with relative ease.

Added functionality

  • The original LB and EK methods have been completely replaced with equivalent implementations based on the high-performance waLBerla library (#4726). This is a major API change that requires adapting all LB and EK scripts to use the new classes and arguments.

  • LB and EK methods now support setting boundary slip velocities on individual nodes (#4252).

  • LB now supports per-particle gamma (#4743). Only works for isotropic particles.

  • The DipolarDirectSumCpu magnetostatic method now supports replicas and works in a MPI-parallel simulation (#4559).

  • The DipolarDirectSumCpu magnetostatic method can now calculate the total dipole field experienced by each particle (#4626). Requires feature DIPOLE_FIELD_TRACKING.

  • The OpenGL visualizer now uses different colors for arrows representing fluid velocities and slip velocities (#4252).

  • Particle-based observables ParticleDirectors and ParticleDipoleFields were added (#4627, #4626).

  • It is now possible to extract particle neighbor lists with system.analysis.particle_neighbor_pids() (#4662). This feature will help prototyping simulations that interface with machine-learned potentials, which take a list of particle positions as input and output the force on the central particle.

  • The bond breakage feature now supports angle bonds (#4716).

Changed requirements

  • The project now requires a C++17-capable compiler (#4612).

  • The Intel oneAPI C++ Compiler is now recognized by the CMake build system (#4532).

  • The minimal version of all dependencies was increased (#4532, #4612, #4717): CMake >= 3.20, Python >= 3.9, Cython >= 0.29.21, Boost >= 1.74, CUDA >= 11.0, OpenMPI >= 4.0, MPICH >= 3.4.1, GCC >= 8.0, Clang >= 9.0.0, AppleClang >= 11.0.0, Intel C++ Compiler Classic >= 18.0, Intel oneAPI C++ Compiler >= 2021.0, and Python packages versions are pinned on versions available in the Ubuntu 22.04 repository.

  • All project-specific CMake options have been renamed (#4612). This change was required to avoid name collisions with external projects. Please refer to the user guide chapter on installing ESPResSo to find out the new option names. Using the old option names will generate warnings, but CMake will carry on and use default values instead of the values you provided. Please don't ignore these warnings when adapting your build scripts.

  • The waLBerla package is now a dependency of ESPResSo for all LB and EK methods (#2701).

Feature configuration at compile time

  • A Gitpod config file is now available to build the code automatically in a remote Gitpod workspace (#4531).

  • waLBerla support is opt-in and can be requested with the -DWITH_WALBERLA=ON CMake flag (#2701).

  • The CMake option ESPRESSO_CUDA_COMPILER was removed in favor of the environment variable CUDACXX (#4642).

Improved documentation

  • A Widom insertion tutorial was added (#4546)

  • A lattice-Boltzmann sedimentation tutorial was added (#4570)

  • The CUDA 11 circular dependency in Ubuntu 22.04 packages is documented (#4642).

Interface changes

  • The original LB classes LBFluid and LBFluidGPU were removed in favor of LBFluidWalberla and LBFluidWalberlaGPU (#2701). Their arguments have also changed, e.g. dens became density and visc became viscosity. The pressure_tensor_neq property was removed.

  • The original EK class Electrokinetics was removed in favor of EKRoutines (#2701).

  • Self-propelled particles (swimmers) have been completely re-implemented (#4745). The propulsion mechanism can now only be set up with a force. When coupling to a LB fluid, a real particle and a virtual site are used to create the dipole.

  • Class attributes expecting 3 boolean values no longer accept integer values (#4541). It is no longer possible to set properties system.periodicity, particle.fix and particle.rotation with e.g. [1, 1, 1] or [0, 0, 1].

  • ReactionAlgorithm.reaction() now takes steps instead of reaction_steps as argument for consistency with the MD integrator (#4666)

Removed functionality

  • The LBBoundaries framework was removed (#4381). Shapes can now be passed directly to LB and EK objects.

  • The MDAnalysis bindings were removed (#4535)

  • The DipolarDirectSumWithReplicaCpu method was removed, since the DipolarDirectSumCpu method now supports replicas (#4559).

Improved testing

Performance enhancements

Bug fixes

  • Updating an active non-bonded interactions with interaction.set_params() now uses the default arguments when optional arguments are missing and raises an error when required arguments are missing (#4558). In previous ESPResSo versions, missing optional and required arguments would be recycled from the previous state of the non-bonded interaction.

  • it is no longer possible to change the reaction constant of an existing reaction with a gamma value less or equal to 0 (#4666)

  • when setting up a reaction method with two or more reactions, a runtime error is raised if a reaction accidentally overwrites the default charge of a specific type with a different value (#4666)

Under the hood changes

  • Most Cython files have been converted to Python files (#4541, #4713).

  • Reaction methods are now fully MPI-parallel and now only invalidate the system state after a batch of particle changes have been applied (#4666).

  • At system exit, GPU algorithms no longer leak device memory (#4741).

  • Project-specific compiler diagnostics are no longer propagated to external projects like waLBerla (#4642).

  • The build system now relies on CMake's native CUDA support (#4642).