ESPResSo 4.0.1 released

This release provides a number of corrections for Espresso 4.0.
We recommend that this release be used for all production simulations.
The interface has not been changed between Espresso 4.0 and 4.0.1
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 

Get in the Download area

Physics related corrections:

  • The GPU lattice Boltzmann method produced incorrect results when EXTERNAL_FORCES was not declared in myconfig.hpp. This issue was present since around June 2018 (#2241)
  • The temperature fluctuations for the GPU lattice Boltzmann implementation were larger than the ones for the Cpu lattice Boltzmann implementation. The cause was likely weak or incorrect random number generation. It is not clear since when this issue existed. It has been resolved by using library code for a counter-based random number generator (Philox) rather than the existing custom code.
  • Particles which were moved with the configuration changing moves (MC) implemented in the reaction ensemble module did not get assigned a random velocity. This was not a problem if you were looking at observables which do not depend on velocity.
  • Particles which were created in the Reaction Ensemble module were assigned a random velocity which was not distributed according to the Maxwell-Boltzmann distribution. This was not a problem if you were looking at observables which do not depend on velocity. If you looked at velocity dependent observables but used a thermostat for thermalization before taking a sample you are also fine. (#2377).
  • Under some conditions, the torque on self-propelled particles in a lattice-Boltzmann fluid was incorrect due to a sign error in the ENGINE feature. This was the case since the introduction of the feature (#2383)
  • The SimplePore shape was incorrect (#2379)
  • The parameters passed from Python to some features were narrowed to single precision. I.e., the values used were only accurate up to the 7th-8th significant digit. Further calculations with those values still were done using double precision. Classes backed by the script interface were affected. This includes
    shapes, LB boundaries, pair criteria and the collision detection. This issue was likely present since the introduction of Python support for the relevant features. (#2379)
  • Forces on LB boundaries retrieved via the LbBoundary.get_force() method in a Python script were incorrect for the CPU LB implementation. The GPU implementation was not affected. It is not clear, when the issue was introduced. (#2366)
  • In highly dense systems, the Widdom insertion scheme reported wrong values (#2294)
  • Fixed the Gay-Berne potential for sigma != 1. Downgraded the GAY_BERNE feature to an experimental feature due to insufficient testing (#2424)

Further general corrections and improvements:

  • Fix restoring checkpointed simulations which contain exclusions (#2418)
  • Allow neutral systems in reaction ensemble (#2378)
  • Support re-tuning the dipolar P3M method (#2351, #1937)
  • Support checkpointing of the collision detection parameters (#2342)
  • Virtual sites tracers: don’t complain about missing lb for non-virtual part (#2341)
  • Prevent access to non-existent lb nodes from Python
  • Opengl wildcard imports + mac fix (#2295)
  • Fix segfaults in virtual sites based collision detection schemes on more than one processor core (#2195)
  • Fixed find_current_cell() and particle deletion (#2410, #2441)
  • Fixed coordinate folding for corner cases (0 – epsilon on 32 bit architectures) (#2415)

Documentation and tutorials corrections and improvements:

  • Mention how to read h5md files in the docs (#2353)
  • Correct docs for setting the skin (#2340)
  • Corrections to the Lennard-Jones tutorial (#2339)
  • doc: Fixed Gay-Bern formula (#2234)
  • Update PDF of tutorial 6 with bibliography (#2285)

Build system and platform related corrections and improvements:

  • Fix Cython detection on Fedora 29 (#2371)
  • Properly detect CUDA libraries if multiple are available (#2352)
  • Guard tests and compilation for different feature sets in myconfig.hpp (#2344, #2326, #2350, #2349, #2335, #2337, #2266)
  • install libH5mdCore (#2277)
  • Fix MPI on Ubuntu 18.04 with CUDA (#2271)
  • Fix PARTIAL_PERIODIC on big-endian platforms (#2259)
  • Fixes for OpenSUSE rpm build (#2255)
  • ctest: add ARGS option to custom ‘make check’ (#2252)
  • cmake: workaround for cmake bug#18349 (#2244)
  • Remove some superfluous executable bits (#2242)
  • Silence arm32 warnings (#2267)
  • Fix unit test without SSE instructions (#2265)
  • Turn off ScaFaCoS support by default. Has to be enabled explicitly using -DWITH_SCAFACOS=on in CMake. (#2417)
  • Fix builds with the Gnu Scientific Library in non-standard locations (#2429)
  • Resolve some floating point rounding issues on I386 32-bit (#2454)

Improved testing:

  • Test the LB thermostat (#2391, #2362)
  • Better stability of the LB test (#2360)
  • testsuite: fix checkpoint test (#2336)
  • Test the installation routine (#2268)
  • Improved testing of the cylindrical lb profile observables (#2272)
  • testsuite: Check planar shear profile of LB (#2263)
  • Test builds without optional dependencies (#2406)
  • Test builds on non-Amd64 architectures (#2401)
  • Improved test coverage of the Wang-Landau reaction ensemble (#2404)
  • Testing of the electrostatic pressure (#2409)

ESPResSo 4.0 released

The ESPResSo team is proud to announce that we have just released version 4.0!

Download ESPResSo 4.0

ESPResSo 4.0 is the first release of ESPResSo with a Python interface. I.e., the language in which simulation scripts are written is now Python, and support for the TCL-interface has been dropped. We recommend all users switch to ESPResSo 4.0, there will be no more fixes to TCL-based versions.

Transitioning from TCL-based versions

Please note that, starting from ESPResSo 4.0, enabling additional features in myconfig.hpp no longer changes the behavior of a simulation scripts. Features such as particle rotation and virtual sites have to be activated explicitly in the simulation scripts.

New features

  • Reaction ensemble methods for the modelling of chemical reactions, including constant pH and Wang-Landau schemes.
  • Polarisable particles via the Drude-oscillator scheme.
  • Steepest-descent energy minimization scheme.
  • Methods for active particles (swimmer_reaction, dipolar swimmers).
  • GPU-accelerated P3M method for electrostatic interactions.
  • GPU-accelerated direct summation and Barnes-Hutt schemes for dipolar interactions under open boundary conditions.
  • Support for the electrostatic and magnetostatics method provided by the ScaFaCoS library.
    Immersed boundary method for soft immersed objects in an LB fluid.
  • Virtual sites acting as inertialess tracers in an LB fluid usable as part of the immersed boundary method or independently.
  • New bonded quartic and Coulomb interactions.
  • Possibility to tune the skin parameter.
  • Support for saving to the h5md file format for molecular dynamics data.
  • Connection to the MD Analysis Python package.
  • A rotate_system command was added, which rotates the particle positions around the system’s center of mass.

User-visible changes

  • When the ROTATION feature is compiled in, the rotation of a particle around each of its Cartesian axes in the body-fixed frame can be enabled.
  • The rotational degrees of freedom of virtual sites is now integrated. Virtual sites no longer use the quaternion attributes to store their relative orientation.
  • Alternatively, the orientation of the virtual site can be specified relative to that of the particle it is derived from.
  • The random number generator was changed to Mersenne Twister as implemented by C++11.
  • Espresso now depends on the Boost library including Boost-Mpi and a C++11 capable compiler
  • The build system is now based on CMake.

Removed features

The following features will not be part of the ESPResSo 4.0 release, but support will be re-added in a subsequent release:
  • Generalized hybrid Monte Carlo thermostat.
  • Virtual sites located at the center of mass of a group of particles.
  • Metadynamics, umbrella sampling and parallel tempering.
  • Non-equilibrium molecular dynamics (shear boundary conditions implemented by moving slabs of particles at the boundaries).
  • The memd/maggs electrostatic solver.
  • The com_force feature.
  • The Shan Chen lattice Boltzmann extension.
  • Lees-Edwards (shear) boundary conditions.
  • The chain rdf analysis.
The following functionality is removed permanently:
  • Blockfile support, which is replaced by support for the h5md format as well as checkpointing based on the pickle Python module.
  • Some of the convenience functions for particle creation such as salt and counterions, as these can be replaced by a very few lines of Python in the simulation script.
  • The lj_angle and angledist (not-quite)-pair potentials.
  • The following analysis methods:
    diffusion_profile, cwvac, p_inst, …_mol, cel_gpb, dipmom_normal, MSD, angularmomentum, cluster_size_dist, mol, lipid_orient_order, get_lipid_orients, current, wall_stuff, necklace, bilayer, modes2d.
  • The uwerr error estimator

ESPResSo 4.0 in action

The following python script demonstrates how a simple particle simulation with Lennard-Jones interaction and Langevin thermostat is set up and visualized in ESPResSo .

import espressomd
from espressomd import visualization
import numpy as np

# Check that the Lennard-jones feature is compiled in
required_features = ['LENNARD_JONES']

# System setup
system = espressomd.System(box_l = [10, 10, 10], time_step = 0.0001)

# Use a random seed

# Add particles at random positions
for i in range(100):
   system.part.add(pos = np.random.random(3) * system.box_l, type = 0)

# Setup the Lennard-Jones interaction between particles of type 0
system.non_bonded_inter[0, 0].lennard_jones.set_params(

# Steepest descent energy minimization for warmup
Etot =['total']
print('Energy before minimization: {} '.format(Etot))
Etot =['total']
print('Energy after minimization: {} '.format(Etot))

# Activate the Langevin thermostat
system.thermostat.set_langevin(kT=1.0, gamma=1.0)

# Initialize the OpenGL visualizer and start the simulation loop
visualizer = visualization.openGLLive(system, background_color = [1, 1, 1])

Invitation to the ESPResSo Summer School 2018

Our cecam school Particle-based Simulations for Hard and Soft Matter will take place on October 8-12, 2018 at the Institute for Computational Physics, University of Stuttgart.

The school focuses on the introduction of particle based coarse-grained Molecular Dynamics simulation techniques for Hard and Soft Matter systems with the freely available software packages ESPResSo and IMD.  It is intended to introduce the participants into specific methods like Lattice-Boltzmann, Smooth Particle Hydrodynamics, advanced electrostatic algorithms, force field development, finding optimal transition states, and coarse-grained model building, as well as visualization methods with the program MegaMol. This visualization middleware focuses on GPU-accelerated visualization of particle-based data with the scope of interactive exploratory analysis of molecular dynamics simulations.

In addition to lectures, hands-on-tutorials will help to illustrate the usage of all packages as well as to understand the discussed topics. The school will cover examples from soft matter as well as from solid state physics and engineering applications. The MegaMol framework includes also scenarios from thermodynamics and structural biology. It is planned that the participants will present their research by posters. Moreover, invited speakers will give talks on topics like scientific programming with Python, the methodology of multiscale methods, and advanced scientific visualization. Therefore the main aim of the school is given by a broad introduction into modern simulation techniques for Soft and Hard Matter and related topics in terms of practical tutorials, discussion rounds as well as lectures.

For details and for registration, please see:

More information about the software packages can be found at: (ESPResSo) (IMD) (MegaMol)


ESPResSo Summer School 2017 Slides

Here are the slides of the ESPResSo summer school 2017:

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.