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']
espressomd.assert_features(required_features)

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

# Use a random seed
system.set_random_state_PRNG()

# 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(
   epsilon=1.0,
   sigma=1.0,
   cutoff=2**(1./6.),
   shift='auto')

# Steepest descent energy minimization for warmup
Etot = system.analysis.energy()['total']
print('Energy before minimization: {} '.format(Etot))
system.minimize_energy.init(
   f_max=1.0,
   gamma=10.0,
   max_steps=100,
   max_displacement=0.01)
system.minimize_energy.minimize()
Etot = system.analysis.energy()['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
print('Starting...')
visualizer = visualization.openGLLive(system, background_color = [1, 1, 1])
visualizer.run(1)