mbpol is a plugin for the OpenMM toolkit for molecular simulations using the MB-pol, a many-body potential for water.
C++ Cuda XSLT Objective-C Python C Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.


MB-pol plugin for OpenMM

Build Status Anaconda Badge

mbpol is a plugin for the OpenMM toolkit for molecular simulations using the MB-pol many-body water potential. Currently, the mbpol plugin is available within the “reference implementation” of the OpenMM toolkit, which is appropriate for energy calculations for both clusters and systems in periodic boundary conditions. Multicore and GPU implementations for actual molecular dynamics production runs within OpenMM will become available in the near future.

The development of MB-pol started with a detailed analysis of the two- and three-body water interactions evaluated at the CCSD(T) level to quantitatively assess the accuracy of current force fields, DFT models, and ab initio based interaction potentials that are commonly used in molecular simulations [1]. On the basis of this analysis, the full-dimensional MB-pol potential was developed entirely from "first principles" building upon the many-body expansion of the interaction energy of water molecules [2,3].

MB-pol explicitly treats the one-body (intramolecular distortion energy) term and the short-ranged two- and three-body terms. MB-pol can thus be viewed as a classical polarizable potential supplemented by short-range two- and three-body terms that effectively represent quantum-mechanical interactions arising from the overlap of the monomer electron densities. Specifically, at all separations, the total MB-pol two-body term includes (damped) dispersion forces derived from ab initio computed asymptotic expansions of the dispersion energy along with electrostatic contributions due to the interactions between the molecular permanent and induced moments. At short-range, this two-body term is supplemented by a 4th-degree permutationally invariant polynomial that smoothly switches to zero as the oxygen-oxygen separation in the dimer approaches 6.5 Angstrom. Similarly, the MB-pol three-body term includes a three-body polarization term at all separations, which is supplemented by a short-range 4th-degree permutationally invariant polynomial that effectively corrects for the deficiencies of a purely classical representation of the three-body interactions in regions where the electron densities of the three monomers overlap. This short-range three-body contribution is smoothly switched off once the oxygen-oxygen separation between any water molecule and the other two water molecules of a trimer reaches a value of 4.5 Angstrom. In MB-pol, all induced interactions are described through many-body polarization. MB-pol thus contains many-body effects at all monomer separations as well as at all orders, in an explicit way up to the third order and in a mean-field fashion at all higher orders.

Without containing any empirical parameters, MB-pol accurately describes the properties of gas-phase clusters, including the dimer vibration-rotation tunneling spectrum [2], the second and third virial coefficients [2,3], and cluster structures and energies [3]. Simulations carried out with path-integral molecular dynamics (PIMD) and centroid molecular dynamics (CMD) demonstrate that MB-pol provides a highly accurate description of the liquid phase of water at ambient conditions in comparison with experiment for several structural, thermodynamic, and dynamical properties [4]. Many-body molecular dynamics (MB-MD) simulations carried out with MB-pol in combination with many-body representations of the dipole moment (MB-mu) and polarizability (MB-alpha), built upon the convergence of the many-body expansion of the electrostatic properties of water [5], predict infrared (IR) and Raman spectra of liquid water in agreement with the experimental results [6].


  1. G.R. Medders, V. Babin, and F. Paesani, J. Chem. Theory Comput. 9, 1103–1114 (2013).
  2. V. Babin, C. Leforestier, and F. Paesani, J. Chem. Theory Comput. 9, 5395–5403 (2013).
  3. V. Babin, G.R. Medders, and F. Paesani, J. Chem. Theory Comput. 10, 1599–1607 (2014).
  4. G.R. Medders, V. Babin, and F. Paesani, J. Chem. Theory Comput. 10, 2906–2910 (2014).
  5. G.R. Medders, and F. Paesani, J. Chem. Theory Comput. 9, 4844–4852 (2013).
  6. G.R. Medders, and F. Paesani, J. Chem. Theory Comput. 11, 1145–1154 (2015).

available components are:

  • MBPolReferenceElectrostaticsForce
  • MBPolReferenceOneBodyForce
  • MBPolReferenceTwoBodyForce
  • MBPolReferenceThreeBodyForce
  • MBPolReferenceDispersionForce

The parameters of each component are defined in python/mbpol.xml. As of version 1.0, only the Reference platform, i.e. single threaded C++ on CPU, is supported. It currently can simulate clusters of water molecules and water systems in periodic boundary conditions using with particle mesh Ewald (PME).

How to install

See the INSTALL.md file in the package.

Automated script builder

OpenMM uses a framework approach, users need to create a Python script for setting up and running simulations, the easiest way is to create a script with the online configuration tool http://builder.openmm.org, however the builder does not support MBPol. In order to simplify running MBPol for new OpenMM users we created a tool, mbpol_builder that loads a configuration file and outputs a Python script ready to be run.

The script covers these use-cases:

  • Cluster simulations: energy computation, geometry optimization and constant energy simulations
  • Bulk simulations: cubic box Periodic Mesh Ewald energy computation, constant energy, constant temperature and constant pressure simulations

How to use mbpol_builder:

  • Create a new folder for the simulation
  • Copy a pdb format initial positions file in the folder, this plugin provides a sample water14_cluster.pdb and water256_bulk.pdb in the python/ folder
  • Copy a sample configuration file in the folder, the plugin provides mbpol_config.ini
  • Customize the configuration file parameters, see the comments
  • run mbpol_builder mbpol_config.ini generated_script_filename.py
  • run python generated_script_filename.py to run the simulation

Example simulation

Simulation of a cluster of 14 water molecules: