Category: News

ESPResSo 4.1.1 released

This release provides a number of corrections for Espresso 4.1. We recommend that this release be used for all production simulations. The interface is mostly unchanged between Espresso 4.1 and 4.1.1; the two exceptions are limited to these experimental features:

  • Integrator.set_isotropic_npt(): input value direction=[0,0,0] now throws an error instead of being silently changed to [1,1,1]
  • ParticleHandle.swimming: deprecated value 'rotational_friction' is now disabled

These changes are unlikely to affect production simulations. However, some bugs were discovered which can affect simulation results. Below, please find the list of changes. The numbers in brackets refer to ticket numbers on

General corrections and improvements:

  • Restore checkpointing mechanism for the steepest descent and NPT integrators, LB and NPT thermostats (#3245)
  • Increase the minimum MPI version to 3.0; OpenMPI versions 1.6.5 and lower are no longer supported (#3236)
  • Fix Integrator.set_isotropic_npt(): remove the silent conversion of the incorrect input parameter direction=[0,0,0] to [1,1,1] in the core; the function now throws an exception for fixed-volume boxes; this change is unlikely to break pypresso scripts since not providing a value to direction or providing [1,1,1] were the two standard ways to set up a box with all directions allowed to rescale (#3253)
  • Fix Integrator.set_vv(): this function failed to set the velocity Verlet integrator if the NPT integrator was active; this is now resolved (#3274)
  • Fix the random segmentation fault triggered by the removal of a particle with a bond or a virtual site relationship to another particle (#3288)
  • Fix system.part.writevtk(): the function now writes down all particles when using types="all" (#3290)
  • Disable the deprecated and broken ENGINE shear torque calculation feature; the feature will be completely removed from the core in the upcoming 4.2 release (#3277)
  • Fix unit conversion for the LB fluid viscosity (#3287)

Documentation and tutorials corrections and improvements:

  • Add more detailed installation instructions for ESPResSo and its Python dependencies on MacOS X (#3236)
  • Add links to Dockerfiles providing installation instructions for ESPResSo and its Python dependencies on CentOS 7, Fedora 30, Debian 10 and OpenSUSE Leap 15.1 (#3244)
  • Add instructions to read PDB files with MDAnalysis, which is one of the recommended tools to read/write molecular dynamics topologies and trajectories in ESPResSo; the PdbParser feature will be removed in the upcoming 4.2 release (#3257)
  • Add a new tutorial on the constant pH method; the reaction ensemble tutorial will be removed in the upcoming 4.2 release (#3184)

Build system and platform-related corrections and improvements:

  • Fix a PYTHONPATH error when ESPResSo is built in a directory containing whitespace characters (#3238)
  • Fix several issues with the command make install that lead to import errors in Python (incorrect runtime path, missing shared objects, name collision for submodule cluster_analysis) and deprecate the make install DESTDIR=/path/to/espresso command in favor of the standard cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/espresso command (#3228), install espressomd module in a platform-dependent python path, typically lib{,64}/python3.X/{dist,site}-packages (#3258)
  • Fix an issue in mpiio that triggered an assertion in systems with no bonds when ESPResSo is built with stdlibc++ range checking enabled (#3234)
  • Fix the pypresso script to correctly parse filepaths containing whitespaces passed after a pypresso flag, such as --gdb, and make conditional statements cross-platform (#3292)

Improved testing:

  • Test checkpointing of integrators and thermostats (#3245)
  • Fix and improve check_cmake_install test (#3228, #3258) and add a new CI job to test an installed version of ESPResSo (#3228)
  • Test engine LB (#3277)
  • Add more LB tests (#2748)

ESPResSo 4.1 released

This is a feature release, i.e., new functionality is added to Espresso. An additional focus of this release is quality assurance and modernization. The testing of Espresso’s functionality has been extended considerably. Also, sample and tutorial scripts are now automatically tested. Moreover, a large effort was put into modernizing the C++ simulation core. Work has been done, e.g., on particle sorting, the MPI communication infrastructure, and the lattice-Boltzmann implementations. Electrostatic and magnetostatic methods now have a clear and common interface. These changes will facilitate future extensions of Espresso and make the code more understandable to new developers.

We recommend that this release be used for all production simulations. No further bug fix releases will be provided for the 4.0 line, and not all fixes are present in Espresso 4.0.2.

Please carefully read the detailed list of changes below before using this release. The numbers in brackets refer to ticket numbers on

Get it in the Download area

Changed requirements

  • Python 2 support has been dropped. Espresso now requires Python 3. For additional information, please see
  • Espresso now needs a C++14-capable compiler, such as GCC 4.9 and later or Clang 4 and later.
  • It is discouraged to use Espresso with Boost versions below 1.67.

Added functionality and documentation

  • The distance between a shape (such as sphere) and a position can now be queried via shape.calc_distance().
  • The lattice nodes of a lattice-Boltzmann fluid can now be iterated using LBFluid.nodes().
  • A tutorial on magnetic fluids has been added.
  • The stress created by the dissipative particle dynamics interaction (DPD) can now be obtained via the DPDStress observable.
  • The stress of a lattice-Boltzmann fluid can now be obtained via the LBFluidStress observable.
  • A torus shape has been added.
  • Two new accumulators for observables have been added: MeanVarianceCalculator and TimeSeries.
  • An ElectricPlaneWave constraint was added.
  • Experimental support for AMD GPUs via HIP. The future of this feature is unclear. Please do not base hardware buying decisions on its presence.
  • Visualization of slit pores in the OpenGL visualizer.
  • A Weeks-Chandler-Anderson short-range potential has been added (WCA).
  • The external force density applied to a lattice-Boltzmann fluid can now be changed during the simulation.
  • Sanity checks for Mach limits and unequal MD and lattice-Boltzmann time steps have been added.
  • The system.cell_system.tune_skin() method now has a keyword argument adjust_max_skin. If set to True, the maximum skin to be tested will be reduced such that it is compatible with the local box size.
  • For the CPU lattice-Boltzmann implementation, the limit on the Verlet list skin (<0.5 agrid) has been lifted.
  • A new observable CosPersistenceAngles has been added for the bond angles of a polymer (needed, e.g., for determining the persistence length).

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:
    • LB
    • LB_GPU (for builds with CUDA)
  • For most compilers, it is checked that only known features are declared in myconfig.hpp.
  • The default feature configuration applied when no myconfig.hpp is present has been extended significantly. In particular, all tutorials can now be run with the default feature configuration. For production simulations, it is still recommended to use a custom myconfig.hpp containing only necessary features. This is true in particular, if particle rotation is not needed.
  • Features that do not have automated tests now require EXPERIMENTAL_FEATURES to be defined in myconfig.hpp.

Interface changes

Changed and removed functionality

  • The remove_total_momentum() method for lattice-Boltzmann fluids has been removed. The overall velocity of a fluid can be changed using the lb_fluid.nodes() iterator.
  • The CATALYTIC_REACTIONS feature has been removed.
  • The method for creating a polymer has been replaced. espressomd.polymer.positions() can now be used to obtain particle positions for one or more polymer chains.
  • Checkpointing has been added for the electrokinetics method.
  • The global random number seed has been partly replaced by method-specific ones. These are specified when activating the relevant feature such as the Langevin, DPD and lattice-Boltzmann thermostats via a seed keyword argument.
  • The random number generator has been switched to Philox for most algorithms requiring random numbers.
  • Limitations on the exclusion radius have been relaxed in the reaction ensemble method.
  • A new observable CosPersistenceAngles has been added for the bond angles of a polymer (needed, e.g., for determining the persistence length).
  • ELC has been disabled for non-neutral systems with constant potential.
  • The calculation of the linear particle momentum included the forces of the last time step. The function system.analysis.linear_momentum() now returns the sum of the product of mass and velocity of all particles, if no lattice-Boltzmann fluid is coupled.

Performance enhancements

  • Speedup in the short-range force calculation in situations where the short-range cutoff varies strongly for different pairs of particles, e.g., in a bidisperse fluid.
  • Speedup in particle resorting triggered when particles have moved by more than a skin.
  • Significantly faster back-transfer of particle forces from GPU-based methods such as the GPU implementations of lattice-Boltzmann and P3M.

Bug fixes

  • Lattice-Boltzmann boundaries, constraints and auto_update_accumulators are now included in checkpointing. (#2915)
  • Collision detection is now checkpointed. (#2342)
  • The rhomboid shape was fixed. (#2756)
  • Deadlocks on certain GPUs have been resolved for the dipolar Barnes-Hut method. (#2719)
  • The visualization of dihedrals has been fixed. (#2677)
  • The ENGINE implementation for CPU LB has been fixed. (#3025)
  • The external force density in lattice-Boltzmann fluids is no longer ignored in the first integration step after setting the force density. (#3144)
  • The positions of virtual sites and the charges of ICC particles are now updated before observable calculation. (#3128)
  • The forces and torques for the Gay-Berne potential have been corrected. (#3091)
  • Remove undocumented behaviour in the case of using a cylindrical sampling area in the reaction ensemble, constant pH ensemble, Wang-Landau ensemble, Widom-Insertion method. (#3174)
  • The ELC tuning error calculation has been rearranged to produce correct results for higher accuracies. (#3123)

New tutorials

  • Tutorials for simulating ferrofluids and for using the constant-pH method have been added.

Under the hood changes

  • Automated testing has been enhanced. It now also includes samples and tutorials. The overall test coverage for the simulation core has increased by ~12% since Espresso 4.0.2.
  • The CPU LB and LB-particle coupling have been refactored.
  • Particle resorting has been simplified and sped-up.
  • The MPI callback mechanism has been simplified. Furthermore, reduction operations such as summing values from all MPI ranks can now be performed.
  • Nearly all manual memory management and C-style arrays have been removed.
  • The rotation-related code has been simplified.
  • Long-range electrostatic and magnetostatic methods now have a common interface.
  • The kernels for short-range and bonded interactions have been simplified.
  • The CMake build system has been refactored and dependencies between different parts of the code have been made clear.
  • Python code formatting: the autopep8 version now matches the one in Ubuntu 18.04 (autopep8 v1.3.4 with pycodestyle v2.3.1).

ESPResSo 4.0.2 released

This release provides a number of corrections for the Espresso 4.0 line.
We recommend that this release be used for all production simulations.
Please note that a sign error in tabulated interactions was fixed.
Simulation scripts which worked around this problem might have to be changed.
Below, please find the list of changes. The numbers in brackets refer to
ticket numbers on 

Get it in the Download area

Corrections for bugs that may harm simulation results:

  • A sign error in tabulated interactions was corrected such that
    the force equals the negative gradient of the potential (#2519,2520).
  • The flow field of the CPU lattice-Boltzmann implementation was deleted
    when aspects of the molecular dynamics cell grid were changed; E.g., when
    interactions, the skin or the parallelization setup were changed.
    ESPResSo now terminates with an error, when this happens.
    To avoid this, please setup the CPU lattice-Boltzmann after all
    other aspects of the system. The GPU LB is not affected in the 4.0
    release, but was affected in the current development branch (#2728, #2736).
  • Corrected the force acting on LB Boundaries for the case of
    agrid and density not equal to 1 (#2624).
  • Corrected the cutoff calculation for the soft sphere interaction. In the
    previous implementation, the offset parameter was ignored (#2505).
  • The “three point coupling” of particles to the lattice-Boltzmann method
    has been removed. While it works in most environments, for some compilers
    the calculation gives wrong values. This is likely caused by undefined
    behavior. A corrected implementation is available in
    ESPResSo’s development branch. It cannot be safely backported to 4.0.2,
    because the code has diverged too far (#2516, #2517).
    Users who did not explicitly activate this coupling via couple=”3pt” are
    not affected.
  • The velocity of existing particles was changed when setting or changing
    the simulation time step (#2480).

Further changes:

  • Fixed the electrokinetic Python interface (#2486)
  • Correction to the installation instructions for mac (#2510)
  • Corrected file permissions (#2470)
  • Minor corrections and extensions to the test suite (#2477, #2552)
  • Fixed a dead-lock in the dipolar Barnes Hutt method on the GPU for
    recent NVIDIA cards such as RTX 2080 (#2719).

Invitation to the ESPResSo Summer School 2019

Active, Charged, and Magnetic Soft Matter Simulations with ESPResSo

Oct 7-11, 2019

ICP, University of Stuttgart, Germany


Program (PDF)

Learn to simulate soft matter systems using ESPResSo and Python:

In this school, you have the opportunity to learn to conduct simulations in the fields of statistical physics as well as soft and active matter using the software ESPResSo (  After an introduction to particle-based simulations and the simulation software, a wide range of topics will be covered. These include colloids, polymers, magnetic fluids, and active matter. Lectures will provide an introduction to the physics and simulation model building as well as an overview of the necessary simulation algorithms such as electrostatics and hydrodynamics solvers. During the afternoon, you will practice running your own simulations in hands-on sessions.  Many of the lectures and hands-on sessions will be taught by developers of the software.
The school will also provide a platform for discussion between developers and users about the future of the software. Also, users can get advice on their specific simulation projects.  The final day of the school will be dedicated to research talks on projects that have been conducted using ESPResSo.

Espresso is an open-source particle-based simulation package with a focus on coarse-grained molecular dynamics models. In addition, it offers a wide range of schemes for solving electrostatics and magnetostatics, hydrodynamics, electrokinetics, as well as algorithms for active matter, rigid bodies, and chemical reactions. ESPResSo consists of an MPI parallelized simulation core written in C/C++ and a scripting interface in Python. This allows for good interoperability with other scientific and visualization tools for Python.

Attendance to the summer school is free. Unfortunately, we cannot offer travel stipends. We recommend that you book your accommodation early, since there is a fair (Canstatter Volksfest) at the same time. We have blocked a few inexpensive rooms in Stuttgart. If you are interested, please contact Henriette Patzelt (

Online Documentation

We are switching from the document based User Guide  to a Online Documentation with examples, development instructions and cross references to the python interface code.

Soft Matter, Issue 18, 2017

The Cover of Soft Matter, Issue 18, 2017 shows a

polyelectrolyte gel simulated with ESPResSo .

Find details in the article:

“A self-consistent mean-field model for polyelectrolyte gels”
by Oleg Rud, Tobias Richter, Oleg Borisov, Christian Holm
and Peter Košovan

Recent publications citing ESPResSo

Check the Publications section for highlight publications and the complete Scopus RSS feed.