forked from lijiext/lammps
118 lines
4.4 KiB
Plaintext
118 lines
4.4 KiB
Plaintext
This dir contains scripts that demonstrate how to use LAMMPS as both a
|
|
client and server code to run a simple MD simulation. LAMMPS as a
|
|
client performs the MD timestepping. LAMMPS as a server provides the
|
|
energy and forces between interacting particles. Every timestep the
|
|
LAMMPS client sends a message to the LAMMPS server and receives a
|
|
response message in return.
|
|
|
|
Another code could replace LAMMPS as the client, e.g. another MD code
|
|
which wants to use a LAMMPS potential. Another code could replace
|
|
LAMMPS as the server, e.g. a quantum code computing quantum forces, so
|
|
that ab initio MD could be performed. See an example of the latter in
|
|
examples/COUPLE/lammps_vasp.
|
|
|
|
See the doc pages for the "MESSAGE package"
|
|
(Package_details.html#PKG-MESSAGE) and "Howto client/server"
|
|
(Howto_client_server.html) for more details on how client/server
|
|
coupling works in LAMMPS.
|
|
|
|
--------------
|
|
|
|
Note that you can adjust the problem size run by these scripts by
|
|
setting "x,y,z" variables when you run LAMMPS. The default problem size
|
|
is x = y = z = 5, which is 500 particles.
|
|
|
|
lmp_mpi -v x 10 -v y 10 -v z 20 # 8000 particles
|
|
|
|
This applies to either in.message or in.message.client
|
|
|
|
You can also run the in.message scripts with an NPT integrator
|
|
instead of NVE, if you comment/uncomment the correct lines.
|
|
|
|
The client and server script define a "mode" variable
|
|
which can be set to file, zmq, mpi/one, or mpi/two,
|
|
as illustrated below.
|
|
|
|
--------------
|
|
|
|
To run this problem in the traditional way (no client/server coupling)
|
|
do one of these:
|
|
|
|
% lmp_serial < in.message
|
|
% mpirun -np 4 lmp_mpi < in.message
|
|
|
|
Or run with in.message.tilt.
|
|
|
|
--------------
|
|
|
|
To run in client/server mode:
|
|
|
|
Both the client and server script must use the same messaging mode.
|
|
This can be selected by setting the "mode" variable when you run
|
|
LAMMPS. The default mode = file. The other options for the mode
|
|
variable are zmq, mpione, mpitwo.
|
|
|
|
Here we assume LAMMPS was built to run in parallel, and the MESSAGE
|
|
package was installed with socket (ZMQ) support. This means any of
|
|
the 4 messaging modes can be used.
|
|
|
|
The next sections illustrate how to launch LAMMPS twice, once as a
|
|
client, once as a server, for each of the messaging modes.
|
|
|
|
In all cases, the client should print out thermodynamic info for 50
|
|
steps. The server should print out setup info, print nothing until
|
|
the client exits, at which point the server should also exit.
|
|
|
|
The examples below show launching LAMMPS twice from the same window
|
|
(or batch script), using the "&" character to launch the first time in
|
|
the background. For all modes except {mpi/one}, you could also launch
|
|
twice in separate windows on your desktop machine. It does not matter
|
|
whether you launch the client or server first.
|
|
|
|
In these examples either the client or server can be run on one or
|
|
more processors. If running in a non-MPI mode (file or zmq) you can
|
|
launch LAMMPS on a single processor without using mpirun.
|
|
|
|
IMPORTANT: If you run in mpi/two mode, you must launch LAMMPS both
|
|
times via mpirun, even if one or both of them runs on a single
|
|
processor. This is so that MPI can figure out how to connect both MPI
|
|
processes together to exchange MPI messages between them.
|
|
|
|
--------------
|
|
|
|
NOTE: the Script.sh file has comands to perform all the
|
|
runs listed below.
|
|
|
|
--------------
|
|
|
|
File or ZMQ or mpi/two modes of messaging:
|
|
|
|
% mpirun -np 1 lmp_mpi -v mode file -log log.client < in.message.client &
|
|
% mpirun -np 2 lmp_mpi -v mode file -log log.server < in.message.server
|
|
|
|
% mpirun -np 4 lmp_mpi -v mode zmq -log log.client < in.message.client &
|
|
% mpirun -np 1 lmp_mpi -v mode zmq -log log.server < in.message.server
|
|
|
|
% mpirun -np 2 lmp_mpi -v mode mpitwo -log log.client < in.message.client &
|
|
% mpirun -np 4 lmp_mpi -v mode mpitwo -log log.server < in.message.server
|
|
|
|
Or run with in.message.tilt.client/server.
|
|
Don't run the tilt files with the "file" mode; they run too slow.
|
|
|
|
--------------
|
|
|
|
Mpi/one mode of messaging:
|
|
|
|
Launch LAMMPS twice in a single mpirun command:
|
|
|
|
% mpirun -np 2 lmp_mpi -mpicolor 0 -in in.message.client -v mode mpione -log log.client : -np 4 lmp_mpi -mpicolor 1 -in in.message.server -v mode mpione -log log.server
|
|
|
|
Or run with in.message.tilt.client/server.
|
|
|
|
The two -np values determine how many procs the client and the server
|
|
run on.
|
|
|
|
A LAMMPS executable run in this manner must use the -mpicolor color
|
|
command-line option as its first option, where color is set to one
|
|
integer value for the 1st app, and another value for the 2nd app.
|