i-PI is a universal force engine interface written in Python, designed to be used together with an ab-initio, machine-learned, or force-field based evaluation of the interactions between the atoms. The main goal is to decouple the problem of evolving the ionic positions to sample the appropriate thermodynamic ensemble and the problem of computing the inter-atomic forces.

iPi-logo

The implementation is based on a client-server paradigm, where i-PI acts as the server and deals with the propagation of the nuclear motion, whereas the calculation of the potential energy, forces and the potential energy part of the pressure virial is delegated to one or more instances of an external code, acting as clients. Other types of electronic-structure information can also be communicated for performing advanced types of dynamics.

i-PI is free software, distributed under a dual MIT/GPLv3 licence. You are welcome to dowload, use, modify and redistribute it. To get the most up-to-date version, fetch it from the official i-PI repo. If you find it useful for your research, please cite us:

Kapil et al., Comp. Phys. Comm. 236, 214–223 (2018)

As of today, the following electronic-structure codes provide out-of-the-box an i-PI interface: CP2K, DFTB+, LAMMPS, Quantum ESPRESSO, Siesta, FHI-aims, Yaff, deMonNano, plumed, ASE, TBE, CASTEP, AMS. If you know a code that is missing in this list, please contact the developers. If you are interested in interfacing your code to i-PI please get in touch, we are always glad to help!

A few machine-learning potentials are also interfaced with i-PI, such as n2p2 (interface through LAMMPS), sGDML, AMS, and others.

If you have questions about running i-PI calculations, or including new features into the code, you can get help on the user forum, or on the github pages.