Category: News

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.