This release provides a number of corrections for the ESPResSo 4.1 line. We recommend that this release be used for all production simulations. The interface has not been changed between ESPResSo 4.1.2 and 4.1.3. However, some bugs were discovered which can affect simulation results. Please find the list of changes below. The numbers in brackets refer to ticket numbers on https://github.com/espressomd/espresso
Feature configuration at compile time
- The number of features which need to be defined at compile time in myconfig.hpp has been reduced. Features without performance impact are now always present. These are:
OIF_LOCAL_FORCES
OIF_GLOBAL_FORCES
General corrections and improvements:
- Many bonded interactions were not considered in the bond cutoff calculation: umbrella, OIF local, OIF global, IBM tribend, IBM volcons, angle harmonic, angle cosine, angle cossquare, tabulated angle, bonded Coulomb, subtracted bonded Coulomb, subtracted LJ, quartic, harmonic dumbbell. This can lead to sub-optimal skin values when such bonds are used with an inter-particle distance that is longer than other bonded (FENE, harmonic bond, rigid bond, thermalized distance, tabulated bond, tabulated dihedral, dihedral, IBM triel), non-bonded (LJ, Morse, Buckingham, etc.) and long-range (electrostatics, magnetostatics) interactions in the same system. All bonded interactions are now considered in the cutoff calculation (#3443).
- Fix a bug in a rotation function that resulted in improper treatment of rotation vectors with norm different from unity (#3559); all observable classes inheriting from
CylindricalProfile
are affected - Fix a bug in the LB GPU implementation that lead to incorrect velocity interpolation near LB boundaries (#3593)
- Fix a bug in the LB CPU implementation that lead to incorrect grid sizes (#3678)
- Object-in-fluid bugfixes have been backported from the OIF development branch; in particular, the bending force between two triangles is now torque-free (#3385)
- Rewrite the linear polymer position generator, which was inefficient and frequently rejected valid positions (#3402, #3484, #3491)
- Fix an error in the distance calculation of the
SpheroCylinder
shape (#3629) - Fix a sign flip in the surface normal calculation of the
Torus
shape (#3728) - Fix an
IndexError
when runningsystem.number_of_particles()
without a value for the argumenttype
(#3496, #3494) and fix the range check (#3536) - Fix a
NameError
when runningsystem.analysis.rdf()
without a value for the argumentr_max
(#3496, #3494) - Fix a
NameError
raised by the OpenGL visualizer when drawing bonds in periodic images of the unit cell (#3511) - Correctly calculate the orientation of bonds cut by the faces of the simulation box in the OpenGL visualizer (#3511)
- Fix a memory leak in the OpenGL visualizer when drawing shapes containing cylindrical elements (
Cylinder
,SpheroCylinder
,SimplePore
,Slitpore
) and drawing bonds between particles (#3533) - Fix an issue in the OpenGL visualizer that drew the channel of the
Slitpore
shape at the center of the box, instead of using thedividing_plane
attribute (#3728) - Fix a bug in the ELC algorithm that ignored the Coulomb prefactor (#3731). The same bug is also present in MMM2D but could not be fixed.
- Correctly check the P3M parameter
mesh
(#3676) - The LB checkpointing argument
binary
now takes a boolean value (#3541); integers values 0 and 1 are still accepted (integers are implicitly cast to boolean values) - Reinitialize the P3M and dipolar P3M solvers when the box size or skin changes (#3717)
- Clarify error messages in the Steepest Descent integrator (#3763)
- Fix an incorrect formula in the
tensor_product
mode of theCorrelator
class that always returned an array of 0’s since 4.1.0 (#3781) - Fix a runtime error when calling the
get_params()
method of a ScaFaCoS-based actor (#3784)
Documentation and tutorials corrections and improvements:
- Fix paragraph formatting in Jupyter notebooks and update Sphinx bibliography (#3395).
- The Sphinx documentation generation doesn’t run in parallel any longer due to plugin
sphinxcontrib.bibtex
throwing a warning when executed with more than one thread in Sphinx v2.3.1 (#3393). The slowdown is not significant (less than a second). - Fix compatibility issues with Sphinx 2.4.0 (#3480), 3.0.1 (#3642, #3659) and 1.6.7 (#3743)
- Clarify the quaternion formalism used in ESPResSo (#3392, #3748)
- The
p3m.py
sample showcased an incorrect usage of the ELC actor (the gap region was missing). The actor was removed and a new, stand-alone samplevisualization_elc.py
was created (#3468) - The
visualization_constraints.py
sample showcased an incorrect usage of theSlitpore
andWall
shapes that lead to a discontinuous potential; this is now fixed (#3728) - Correct errors in the documentation of the constructor parameters for shape classes
Cylinder
,SpheroCylinder
,Rhomboid
(#3567), for classSystem
(#3542) and for cylindrical observables (#3569) - Correct an error in the formula of the electrostatic prefactor in the electrostatics documentation, give the full expression of the electrostatic prefactor in tutorials and samples (#3673)
- Improve documentation of the
Slitpore
shape and document theTorus
shape (#3728) - Improve installation instructions (#3673, #3699, #3732)
- Document
BoxGeometry
-related functions (#3747) - Explain release workflow and how to obtain released versions of ESPResSo (#3745)
- Improve citation instructions with examples (#3745)
- General improvements (#3740, #3743)
Build system and platform-related corrections and improvements:
- The benchmarks can now be run with any MPI library supported by ESPResSo (#3412)
- The CMake logic was simplified (#3574, parts of #3582). The minimal required Cython version is now checked. CMake now generates an error message if
WITH_CLANG_TIDY
isON
but no Clang-Tidy can be found with a version matching the Clang version. The CUDA library installed via the Ubuntu packagenvidia-cuda-toolkit
is now correctly detected. - Add support for ROCm versions 3.0 (#3386), 3.1 (#3574) and 3.3 (#3623)
- Fix compiler errors with HDF5 > 1.10.2 (#3604)
- Fix compiler errors with Boost 1.73 (#3725)
- Fix a deprecation warning from the
collections.abc
that will become an error in the upcoming Python 3.9 interpreter (#3568) - Fix a compatibility issue with
pint
0.10.1 in tutorial 12 – constant pH (#3423)
Improved testing:
- Fix a tolerance value that was incorrectly divided by 100, causing unit tests to fail on i586 architectures (#3427)
- Compile CUDA code in the Travis-CI image to detect more compiler errors (#3699). GPU tests are skipped on Travis-CI.
- Add a test for the
Utils::get_n_triangle
function used in OIF (#3391) - Add a test for sample
visualization_constraints.py
(#3533) - Add missing
LENNARD_JONES
andGPU
feature guards in Python tests (#3403, #3676) - Fix a few non-functional Python tests (#3419) and sample tests (#3791)
- Improve testing of ELC (#3731)
- Improve testing of the
Slitpore
shape (#3728) - Fix an issue in a core test (#3677)
- Add cleanup function in the checkpointing tests (#3699)
- Add a test for
fold_position()
(#3747) - Improve testing of observables, correlators and accumulators (#3781, #3783, #3784)
Under the hood changes:
- Remove unused code (#3556, #3738)
- Remove the unused
FindPythonModule
CMake module (#3736) - Update the espresso-ci bot scripts (#3613)