openmaterials.ai / codes / i-PI
A Python force engine that moves the nuclei, classical or as ring polymers, while an external code returns energies and forces over a socket.
i-PI is the server. It sends positions and cell vectors to clients, receives energy, forces and stress, and moves the atoms. With several beads, one forcefield serves several clients in parallel (Litman 2024).
MD and PIMD in the NVE, NVT, NPT and NsT ensembles, GLE and PIGLET thermostats, RPMD, CMD, TRPMD, ring polymer instantons, replica exchange, metadynamics (Litman 2024).
UNIX domain sockets on one host or TCP/IP across a network. Clients start on their own and must keep the atom count and order fixed for the whole run (Litman 2024).
Examples ship for ASE, CASTEP, CP2K, LAMMPS, DFTB+, FHI-aims, Quantum ESPRESSO and VASP. A new Python interface is one small file under drivers/py/pes/ (Litman 2024).
i-PI 3.0 cut the base NVE overhead from 0.47 ms to 0.09 ms per step and the TCP/IP constant from 21.54 ms to 1.26 ms by disabling Nagle's algorithm (Litman 2024).
An ffcommittee block averages several potentials and reports their spread as the error, with a weighted baseline model and a store of high-error structures (Litman 2024).
Thermostatted RPMD in i-PI with LAMMPS, 216 q-TIP4P/F waters and 32 beads, washes out the RPMD resonances. The OH stretch peak sits about 75 cm-1 below the classical one (Rossi 2014). Rossi 2014
Finite-difference Suzuki-Chin PIMD, implemented in i-PI, reaches an error of a few meV per molecule for hexagonal ice at 100 K with 48 beads. Trotter PIMD needs more than 128 (Kapil 2016). Kapil 2016
i-PI with LAMMPS and a revPBE0-D3 neural network potential gives Tm = 267(2) K for H2O and 275(2) K for D2O, against 273.15 K and 276.97 K measured (Cheng 2019). Cheng 2019
One XML file with <system>, <ensemble>, <ffsocket> blocks and a <motion> mode.
i-PI opens its sockets and waits for clients to connect.
Start the force code (LAMMPS fix_ipi, the ASE driver, a DFT code) at the socket address.
Each step trades positions for energy, forces and stress. Restart files are written.
Print properties and trajectories (x_centroid, f_centroid) and run the i-pi tools.