  Many-body dispersion (MBD) is a powerful framework to treat van der Waals
(vdW) dispersion interactions in density-functional theory and related
atomistic modeling methods. Several independent implementations of MBD with
varying degree of functionality exist across a number of electronic structure
codes, which both limits the current users of those codes and complicates
dissemination of new variants of MBD. Here, we develop and document libMBD, a
library implementation of MBD that is functionally complete, efficient, easy to
integrate with any electronic structure code, and already integrated in
FHI-aims, DFTB+, VASP, Q-Chem, CASTEP, and Quantum ESPRESSO. libMBD is written
in modern Fortran with bindings to C and Python, uses MPI/ScaLAPACK for
parallelization, and implements MBD for both finite and periodic systems, with
analytical gradients with respect to all input parameters. The computational
cost has asymptotic cubic scaling with system size, and evaluation of gradients
only changes the prefactor of the scaling law, with libMBD exhibiting strong
scaling up to 256 processor cores. Other MBD properties beyond energy and
gradients can be calculated with libMBD, such as the charge-density
polarization, first-order Coulomb correction, the dielectric function, or the
order-by-order expansion of the energy in the dipole interaction. Calculations
on supramolecular complexes with MBD-corrected electronic structure methods and
a meta-review of previous applications of MBD demonstrate the broad
applicability of the libMBD package to treat vdW interactions.
