-
Notifications
You must be signed in to change notification settings - Fork 187
es 430 release notes
These are the draft release notes for ESPResSo 4.3.0 (milestone).
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.
-
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 featureDIPOLE_FIELD_TRACKING
. -
The OpenGL visualizer now uses different colors for arrows representing fluid velocities and slip velocities (#4252).
-
Particle-based observables
ParticleDirectors
andParticleDipoleFields
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).
-
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).
-
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 variableCUDACXX
(#4642).
-
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).
-
The original LB classes
LBFluid
andLBFluidGPU
were removed in favor ofLBFluidWalberla
andLBFluidWalberlaGPU
(#2701). Their arguments have also changed, e.g.dens
becamedensity
andvisc
becameviscosity
. Thepressure_tensor_neq
property was removed. -
The original EK class
Electrokinetics
was removed in favor ofEKRoutines
(#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
andparticle.rotation
with e.g.[1, 1, 1]
or[0, 0, 1]
. -
ReactionAlgorithm.reaction() now takes
steps
instead ofreaction_steps
as argument for consistency with the MD integrator (#4666)
-
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 theDipolarDirectSumCpu
method now supports replicas (#4559).
-
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)
-
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).