forked from lijiext/lammps
86 lines
2.8 KiB
Plaintext
86 lines
2.8 KiB
Plaintext
"Higher level section"_Build.html - "LAMMPS WWW Site"_lws - "LAMMPS
|
|
Documentation"_ld - "LAMMPS Commands"_lc :c
|
|
|
|
:link(lws,http://lammps.sandia.gov)
|
|
:link(ld,Manual.html)
|
|
:link(lc,Commands_all.html)
|
|
|
|
:line
|
|
|
|
Link LAMMPS as a library to another code :h3
|
|
|
|
LAMMPS can be used as a library by another application, including
|
|
Python scripts. The files src/library.cpp and library.h define the
|
|
C-style API for using LAMMPS as a library. See the "Howto
|
|
library"_Howto_library.html doc page for a description of the
|
|
interface and how to extend it for your needs.
|
|
|
|
The "Build basics"_Build_basics.html doc page explains how to build
|
|
LAMMPS as either a shared or static library. This results in one of
|
|
these 2 files:
|
|
|
|
liblammps.so # shared library
|
|
liblammps.a # static library
|
|
|
|
:line
|
|
|
|
[Link with LAMMPS as a static library]:
|
|
|
|
The calling application can link to LAMMPS as a static library with a
|
|
link command like this:
|
|
|
|
g++ caller.o -L/home/sjplimp/lammps/src -llammps -o caller
|
|
|
|
The -L argument is the path to where the liblammps.a file is. The
|
|
-llammps argument is shorthand for the file liblammps.a.
|
|
|
|
:line
|
|
|
|
[Link with LAMMPS as a shared library]:
|
|
|
|
If you wish to link to liblammps.so, the operating system finds shared
|
|
libraries to load at run-time using the environment variable
|
|
LD_LIBRARY_PATH. To enable this you can do one of two things:
|
|
|
|
(1) Copy the liblammps.so file to a location the system can find it,
|
|
such as /usr/local/lib. I.e. a directory already listed in your
|
|
LD_LIBRARY_PATH variable. You can type
|
|
|
|
printenv LD_LIBRARY_PATH :pre
|
|
|
|
to see what directories are in that list.
|
|
|
|
(2) Add the LAMMPS src directory (or the directory you perform CMake
|
|
build in) to your LD_LIBRARY_PATH, so that the current version of the
|
|
shared library is always available to programs that use it.
|
|
|
|
For the csh or tcsh shells, you would add something like this to your
|
|
~/.cshrc file:
|
|
|
|
setenv LD_LIBRARY_PATH $\{LD_LIBRARY_PATH\}:/home/sjplimp/lammps/src :pre
|
|
|
|
:line
|
|
|
|
[Calling the LAMMPS library]:
|
|
|
|
Either flavor of library (static or shared) allows one or more LAMMPS
|
|
objects to be instantiated from the calling program.
|
|
|
|
When used from a C++ program, all of LAMMPS is wrapped in a LAMMPS_NS
|
|
namespace; you can safely use any of its classes and methods from
|
|
within the calling code, as needed.
|
|
|
|
When used from a C or Fortran program, the library has a simple
|
|
C-style interface, provided in src/library.cpp and src/library.h.
|
|
|
|
See the "Python library"_Python_library.html doc page for a
|
|
description of the Python interface to LAMMPS, which wraps the C-style
|
|
interface.
|
|
|
|
See the sample codes in examples/COUPLE/simple for examples of C++ and
|
|
C and Fortran codes that invoke LAMMPS through its library interface.
|
|
Other examples in the COUPLE directory use coupling ideas discussed on
|
|
the "Howto couple"_Howto_couple.html doc page.
|
|
|
|
|