Running MD Simulations with a Librascal Model

Once you have fitted a model with librascal (see Fitting a Model with Librascal), you will probably want to use it to do something interesting – for example, running a molecular dynamics (MD) simulation. Librascal is not an MD code, so it provides interfaces to other codes that specialize in running molecular simulations; librascal only calculates descriptors (and usually also energies and forces) given an atomic configuration. Below is a list of codes that can currently use librascal to run MD simulations.

i-PI

The i-PI universal force engine (ipi-code.org) is a powerful and flexible simulation engine, capable of many advanced simulation techniques such as REMD and PIMD and parallel execution of multiple system replicas. It is possible to use librascal as a “force driver” within i-PI’s socket calculator interface: Use this driver script (on github) to initialize a saved librascal model, then run i-PI to connect to the socket and run dynamics. Please consult the i-PI documentation for further information on setting up a simulation and using socket calculators.

ASE (Python)

Librascal also provides a Python Calculator compatible with the ASE package, which is capable of running serial MD (librascal does not yet parallelize the energy or force calculation). The Calculator can be used for parallel evaluation of energies/forces for a set of existing structures with the help of a standard Python parallelism tool, such as ipyparallel.

LAMMPS (under construction)

LAMMPS is one of the most widely used MD codes and supports a wide array of energy and force models (including several machine learning potentials), as well as parallel MD via spatial domain decomposition. An interface to LAMMPS is currently in the works; stay tuned for more!

Others

If you would like librascal to support another MD code, please let us know! The best way to do this is open an issue on our github with the enhancement label.

In the meantime, if you can make your MD code call Python code, you may be able to use the GenericMDCalculator class defined in bindings/rascal/models/IP_generic_md.py – which can be used as-is or as the starting point for a more specialized, optimized interface.