This bugfix release provides a number of corrections for the ESPResSo 5.0 line.
Bug fixes
- The Lees-Edwards shear velocity is now properly handled in the simulation engine (#5282). A sign error was introduced in 5.0.0.
- Electrokinetics unit conversion was fixed (#5304). This required introducing a new parameter
tautoEKNoneandEKFFT. In previous ESPResSo releases, thetauparameter was factored into theprefactorargument. - EK node and slice getters now return the imposed value for nodes with boundary conditions (#5327).
- EK GPU and EK CPU objects can no longer be mixed in the same EK container (#5327).
- Dihedral bonds checkpointing was fixed (#5279). A regression introduced in 5.0.0 prevented the checkpointing mechanism from reloading dihedral bonds.
- Interpolation-based constraints built from a grid now properly check the input grid is larger than the simulation box (#5324). This prevents segmentation faults when the input grid is too small.
- A few missing feature checks were added to particle property setters (#5326) and thermostat setters (#5320).
- Features in the
myconfig.hppfile are now evaluated transitively (#5297). All ESPResSo versions since 4.0.0 would only activate implied features up to one degree of separation, leading to inconsistent feature activation. For example, if feature A is requested inmyconfig.hpp, and A depends on B, and B depends on C, only A and B would be activated. This issue can be encountered when a small number of high-level features are enabled inmyconfig.hpp, for example requesting magnetodynamics would activate dipoles but not rotation, preventing ESPResSo from being compiled. Starting with release 5.0.1, the entire dependency tree is evaluated. - Missing feature guards in the short-range loop were added (#5274). Their absence prevented compiling ESPResSo in a build configured with
-D ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM=ONand with a custommyconfig.hppfile containing a small number of features. - Configuring ESPResSo with
-D ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM=ONno longer enables hardware-specific optimizations as a side-effect (#5286). - Floating-point exceptions (FPE) instrumentation is now temporarily disabled when calling third-party libraries known to raise FPE flags (#5286). In addition, user-requested hardware-specific optimization flags that introduce FPE as a side-effect of speculative execution are automatically disabled when FPE instrumentation is enabled.
- A source of undefined behavior that would cause a double free when ESPResSo was built with the nvc++ compiler version up to and including 26.3 was resolved (#5302).
- The VTK reader can now parse unstructured VTK files that contain boundaries (#5303).
Improved functionality
- The Lees-Edwards boundary conditions restriction was lifted from the cluster analysis function (#4965).
- The ELC error formula now follows the original paper and allows for ELC and ELCIC to tune to slightly larger summation limits (#5280).
- The Electrokinetics
EKNonesolver is now available on the GPU (#5304).
Improved performance
- The electrokinetics CPU kernels now support OpenMP (#5287).
- The LB/EK GPU VTK writers now carry out a single CUDA memcopy per local domain (#5283). This removes a performance regression introduced in 5.0.0.
- The EK indexed reactions now support slice assignment (#5325). This reduces the overhead of setting up indexed reactions on a GPU lattice.
- The DPD pair force is now optimized for the standard ramps k=1 and k=2 (#5300).
Improved documentation
- The user guide now better documents new features introduced in 5.0 (#5319, #5272).
- A finite-size effect was removed from the GCMC tutorial (#5288).
- The bibliography of the GCMC, Widom insertion, and TIP4P tutorials was improved (#5288).
Under the hood changes
- A few harmless compiler diagnostics are now silenced (#5274, #5283, #5286).
- NVHPC compiler toolchain support was improved (#5302, #5320).
- The LB/EK GPU kernels are now compiled with OpenMP support (#5292).
- Library hdf5 version 2.0 is now fully supported (#5296).
- Library Kokkos is no longer built in-place with features deprecated in Kokkos version 4.0 (#5313).