# Welcome to i-PI’s documentation!¶

i-PI is a force engine written in Python 3 with the goal of performing standard and advanced molecular simulations. The implementation is based on a client-server paradigm, where i-PI acts as the server and deals with the propagation of the nuclear dynamics, 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. Thus, i-PI effectively decouples the problem of evolving the ionic positions and the problem of computing the system-specific properties

i-PI was initially developed for Path Integral Molecular Dynamics (PIMD) simulations, and contains probably the most comprehensive array of PIMD techniques. However, it has evolved over time to become a general-purpose code with methods ranging from phonon calculators to replica exchange molecular dynamics.

The implementation of i-PI is efficient enough that, by tuning the socket parameters and avoiding excessive I/O, it can be used to run simulations using empirical forcefields or machine learning interatomic potentials with tens of thousands of atoms with only a small overhead.

This documentation is structured as follows:

- Program Overview
- On-line resources
- Core features
- Bosonic and Fermionic Path Integral Molecular Dynamics
- Cavity Molecular Dynamics for Polaritonics
- Committee models
- Direct Estimators for Isotope Fractionation
- Fast-Forward Langevin Thermostat
- Finite-differences Suzuki-Chin PIMD
- Finite-differences Vibrational Analysis
- Free-energy Perturbation Estimators for Isotope Fractionation
- Generalized Langevin Equation Thermostats
- Geometry Optimization
- Langevin Sampling for Noisy or Dissipative Forces
- Multiple Time Step integrators
- Open Path Integrals
- Path Integral GLEs
- Path Integral Molecular Dynamics
- Path Integrals Molecular Dynamics at Constant Pressure
- Path Integral Langevin Equation Thermostats
- Perturbed Path Integrals
- Replica Exchange MD
- Quantum Alchemical Transformation
- Reweighting-based high-order PIMD
- Ring-Polymer Contraction
- Ring-polymer Instantons
- Thermodynamic Integrations
- Thermostatted Ring-polymer Molecular Dynamics

- Getting started
- Internal units and conventions
- Input files
- Input file tags
- al6xxx_kmc
- alchemy
- atoms
- atomswap
- barostat
- beads
- bias
- bosons
- cell
- checkpoint
- constrained_dynamics
- constraint
- csolver
- dmd
- driven_dynamics
- dynamics
- ensemble
- ffcavphsocket
- ffcommittee
- ffdebye
- ffdmd
- fflj
- ffplumed
- ffsgdml
- ffsocket
- ffyaff
- file
- force
- forcefield
- forces
- frequencies
- gle
- h0
- init_cell
- initialize
- instanton
- labels
- masses
- metad
- momenta
- motion
- neb_optimizer
- normal_modes
- normalmodes
- optimizer
- output
- p_ramp
- planetary
- positions
- prng
- properties
- remd
- scp
- simulation
- smotion
- string_optimizer
- system
- system_template
- t_ramp
- thermostat
- trajectory
- velocities
- vibrations

- Output files
- Output file tags
- Distributed execution
- A simple tutorial
- Frequently asked questions
- Troubleshooting
- Contributing
- Bibliography