forked from lijiext/lammps
117 lines
3.9 KiB
Plaintext
117 lines
3.9 KiB
Plaintext
"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
|
|
|
|
server mc command :h3
|
|
|
|
[Syntax:]
|
|
|
|
server mc :pre
|
|
|
|
mc = the protocol argument to the "server"_server.html command
|
|
|
|
[Examples:]
|
|
|
|
server mc :pre
|
|
|
|
[Description:]
|
|
|
|
This command starts LAMMPS running in "server" mode, where it will
|
|
expect messages from a separate "client" code that match the {mc}
|
|
protocol for format and content explained below. For each message
|
|
LAMMPS receives it will send a message back to the client.
|
|
|
|
The "Howto client/server"_Howto_client_server.html doc page gives an
|
|
overview of client/server coupling of LAMMPS with another code where
|
|
one code is the "client" and sends request messages to a "server"
|
|
code. The server responds to each request with a reply message. This
|
|
enables the two codes to work in tandem to perform a simulation.
|
|
|
|
When this command is invoked, LAMMPS will run in server mode in an
|
|
endless loop, waiting for messages from the client code. The client
|
|
signals when it is done sending messages to LAMMPS, at which point the
|
|
loop will exit, and the remainder of the LAMMPS script will be
|
|
processed.
|
|
|
|
The "server"_server.html doc page gives other options for using LAMMPS
|
|
See an example of how this command is used in
|
|
examples/COUPLE/lammps_mc/in.server.
|
|
|
|
:line
|
|
|
|
When using this command, LAMMPS (as the server code) receives
|
|
instructions from a Monte Carlo (MC) driver to displace random atoms,
|
|
compute the energy before and after displacement, and run dynamics to
|
|
equilibrate the system.
|
|
|
|
The MC driver performs the random displacements on random atoms,
|
|
accepts or rejects the move in an MC sense, and orchestrates the MD
|
|
runs.
|
|
|
|
The format and content of the exchanged messages are explained here in
|
|
a conceptual sense. Python-style pseudo code for the library calls to
|
|
the CSlib is shown, which performs the actual message exchange between
|
|
the two codes. See the "CSlib website"_http://cslib.sandia.gov doc
|
|
pages for more details on the actual library syntax. The "cs" object
|
|
in this pseudo code is a pointer to an instance of the CSlib.
|
|
|
|
See the src/MESSAGE/server_mc.cpp file for details on how LAMMPS uses
|
|
these messages. See the examples/COUPLE/lammps_mc/mc.cpp file for an
|
|
example of how an MC driver code can use these messages.
|
|
|
|
Define NATOMS=1, EINIT=2, DISPLACE=3, ACCEPT=4, RUN=5.
|
|
|
|
[Client sends one of these kinds of message]:
|
|
|
|
cs->send(NATOMS,0) # msgID = 1 with no fields :pre
|
|
|
|
cs->send(EINIT,0) # msgID = 2 with no fields :pre
|
|
|
|
cs->send(DISPLACE,2) # msgID = 3 with 2 fields
|
|
cs->pack_int(1,ID) # 1st field = ID of atom to displace
|
|
cs->pack(2,3,xnew) # 2nd field = new xyz coords of displaced atom :pre
|
|
|
|
cs->send(ACCEPT,1) # msgID = 4 with 1 field
|
|
cs->pack_int(1,flag) # 1st field = accept/reject flag :pre
|
|
|
|
cs->send(RUN,1) # msgID = 5 with 1 field
|
|
cs->pack_int(1,nsteps) # 1st field = # of timesteps to run MD :pre
|
|
|
|
[Server replies]:
|
|
|
|
cs->send(NATOMS,1) # msgID = 1 with 1 field
|
|
cs->pack_int(1,natoms) # 1st field = number of atoms :pre
|
|
|
|
cs->send(EINIT,2) # msgID = 2 with 2 fields
|
|
cs->pack_double(1,poteng) # 1st field = potential energy of system
|
|
cs->pack(2,3*natoms,x) # 2nd field = 3N coords of Natoms :pre
|
|
|
|
cs->send(DISPLACE,1) # msgID = 3 with 1 field
|
|
cs->pack_double(1,poteng) # 1st field = new potential energy of system :pre
|
|
|
|
cs->send(ACCEPT,0) # msgID = 4 with no fields :pre
|
|
|
|
cs->send(RUN,0) # msgID = 5 with no fields :pre
|
|
|
|
:line
|
|
|
|
[Restrictions:]
|
|
|
|
This command is part of the MESSAGE package. It is only enabled if
|
|
LAMMPS was built with that package. See the "Build
|
|
package"_Build_package.html doc page for more info.
|
|
|
|
A script that uses this command must also use the
|
|
"message"_message.html command to setup the messaging protocol with
|
|
the other client code.
|
|
|
|
[Related commands:]
|
|
|
|
"message"_message.html
|
|
|
|
[Default:] none
|