LAMMPS engine for SimPhoNy

The SimPhoNy engine for LAMMPS is available in the SimPhoNy through the engine plugin named lammps

After installation, the user should be able to import the lammps engine plugin module:

from simphony.engine import lammps
  engine = lammps.LammpsWrapper()

Interface to LAMMPS

The SimPhoNy LAMMPS engine (see LammpsWrapper) can be configured to interface with LAMMPS in two separate ways:

  • FILE-IO - input and output files are used to configure and run LAMMPS engine
  • INTERNAL - the LAMMPS library interface is used to run LAMMPS and access the internal state.

Despite performance differences, it should not matter whether the user is using the File-IO or the INTERNAL interface as the API is the same.

# wrapper defaults to FILE-IO
from simphony.engine import lammps
    engine = lammps.LammpsWrapper()
# or use INTERNAL wrapper
from simphony.engine import lammps
    engine = lammps.LammpsWrapper(use_internal_interface=true)

Installation of LAMMPS

This engine-wrapper uses LAMMPS Molecular Dynamics Simulator. A recent stable version (9 Dec 2014, tagged r12824) of LAMMPS is supported and has been tested. See install_lammps.sh for an example installation instructions. For general LAMMPS install information, see http://lammps.sandia.gov/index.html

The installation of LAMMPS differs depending on what interface is used:

  • FILE-IO: There needs to be an executable called “lammps” that can be found in the PATH.
  • INTERNAL: The LAMMPS-provided Python wrapper to LAMMPS needs to be installed.Instructions on building LAMMPS as a shared library and installing the Python wrapper can be found on LAMMPS website (http://lammps.sandia.gov/doc/Section_python.html#py_3)

Limitations of the INTERNAL interface

The following are known limitations when using the INTERNAL interface to LAMMPS:
  • Deletion of particles (i.e. delete_particle) is not yet supported
  • Adding particles to the LAMMPSParticleContainer can fail when coordinates of the added particles is outside of the simulation box configured by the user.
  • Currently an upper limit of particle types (CUBA.MATERIAL_TYPE) is set due to the fact that LAMMPS only allows the number of types be configured at start (and not changed later)
  • No notification is provided to the user when an internal error occurs in the LAMMPS shared library as the library calls exit(1) and the process immediately exists (without an exception or writing to standard output/error).