# Welcome to i-PI’s documentation!¶

i-PI is a interface for advanced molecular simulations written in
Python, designed to be used together with an *ab initio* 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. i-PI was initially developed for Path Integral Molecular
Dynamics (PIMD) simulations, and contains probably the most
comprehensive array of PIMD techniques. Since v2.0, however, it also
contains several general-purpose methods for molecular simulations,
ranging from phonon calculators to replica exchange molecular dynamics.

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. Since the main focus
is on performing *ab initio* PIMD – where the cost of the force
evaluation is overwhelming relative to the ionic dynamics – clarity has
been privileged over speed. Still, 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 empirical forcefields with
tens of thousands of atoms with only a small overhead.

This documentation is structured as follows:

- Introduction
- Core features
- Bosonic and Fermionic Path Integral Molecular Dynamics
- Cavity Molecular Dynamics for Polaritonics
- Committee models
- Replica Exchange MD
- Thermodynamic integrations
- Finite-differences Suzuki-Chin PIMD
- Reweighting-based high-order PIMD
- Perturbed Path Integrals
- Open Path Integrals
- Geometry Optimization
- Finite-differences Vibrational Analysis
- Multiple Time Step integrators
- Ring-polymer instantons
- Thermostatted RPMD
- Fast-Forward Langevin Thermostat
- Ring-Polymer Contraction
- Direct Estimators for Isotope Fractionation
- Free-energy Perturbation Estimators for Isotope Fractionation
- Quantum Alchemical Transformation
- Langevin Sampling for Noisy or Dissipative Forces
- Path Integral GLEs
- Generalized Langevin Equation Thermostats
- Path-Integral Langevin Equation Thermostats
- Path Integrals at Constant Pressure
- Path Integral 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
- 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