\(\renewcommand{\AA}{\text{Å}}\)
8.1.5. Library interface to LAMMPS
As described on the Build basics doc page, LAMMPS can be built as a static or shared library, so that it can be called by another code, used in a coupled manner with other codes, or driven through a Python interface.
At the core of LAMMPS is the LAMMPS
class, which encapsulates the
state of the simulation program through the state of the various class
instances that it is composed of. So a calculation using LAMMPS
requires creating an instance of the LAMMPS
class and then send it
(text) commands, either individually or from a file, or perform other
operations that modify the state stored inside that instance or drive
simulations. This is essentially what the src/main.cpp
file does as
well for the standalone LAMMPS executable, reading commands either from
an input file or the standard input.
Creating a LAMMPS instance can be done by using C++ code directly or
through a C-style interface library to LAMMPS that is provided in the
files src/library.cpp
and src/library.h
. This C language
API, can be used from C and C++, and is also the basis
for the Python and Fortran
interfaces or the SWIG based wrappers included in the
LAMMPS source code.
The examples/COUPLE
and python/examples
directories contain some
example programs written in C++, C, Fortran, and Python, which show how
a driver code can link to LAMMPS as a library, run LAMMPS on a subset of
processors (so the others are available to run some other code
concurrently), grab data from LAMMPS, change it, and send it back into
LAMMPS.
A detailed documentation of the available APIs and examples of how to use them can be found in the Programmer Guide section of this manual.