forked from lijiext/lammps
606 lines
27 KiB
Plaintext
606 lines
27 KiB
Plaintext
"Previous Section"_Section_intro.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_commands.html :c
|
|
|
|
:link(lws,http://lammps.sandia.gov)
|
|
:link(ld,Manual.html)
|
|
:link(lc,Section_commands.html#comm)
|
|
|
|
:line
|
|
|
|
2. Getting Started :h3
|
|
|
|
This section describes how to unpack, make, and run LAMMPS, for both
|
|
new and experienced users.
|
|
|
|
2.1 "What's in the LAMMPS distribution"_#2_1
|
|
2.2 "Making LAMMPS"_#2_2
|
|
2.3 "Running LAMMPS"_#2_3
|
|
2.4 "Command-line options"_#2_4
|
|
2.5 "Screen output"_#2_5
|
|
2.6 "Tips for users of previous versions"_#2_6 :all(b)
|
|
|
|
:line
|
|
|
|
2.1 What's in the LAMMPS distribution :h4,link(2_1)
|
|
|
|
When you download LAMMPS you will need to unzip and untar the
|
|
downloaded file with the following commands, after placing the file in
|
|
an appropriate directory.
|
|
|
|
gunzip lammps*.tar.gz
|
|
tar xvf lammps*.tar :pre
|
|
|
|
This will create a LAMMPS directory containing two files and several
|
|
sub-directories:
|
|
|
|
README: text file
|
|
LICENSE: the GNU General Public License (GPL)
|
|
bench: benchmark problems
|
|
doc: documentation
|
|
examples: simple test problems
|
|
potentials: embedded atom method (EAM) potential files
|
|
src: source files
|
|
tools: pre- and post-processing tools :tb(s=:)
|
|
|
|
:line
|
|
|
|
2.2 Making LAMMPS :h4,link(2_2)
|
|
|
|
[{Read this first:}]
|
|
|
|
Building LAMMPS can be non-trivial. You will likely need to edit a
|
|
makefile, there are compiler options, additional libraries can be used
|
|
(MPI, FFT), etc. Please read this section carefully. If you are not
|
|
comfortable with makefiles, or building codes on a Unix platform, or
|
|
running an MPI job on your machine, please find a local expert to help
|
|
you. Many of the emails we get about build and run problems are not
|
|
really about LAMMPS - they are peculiar to the user's system,
|
|
compilers, libraries, etc. Such questions are better answered by a
|
|
local expert.
|
|
|
|
If you have a build problem that you are convinced is a LAMMPS issue
|
|
(e.g. the compiler complains about a line of LAMMPS source code), then
|
|
please send an email to the
|
|
"developers"_http://lammps.sandia.gov/authors.html. Note that doesn't
|
|
include linking problems - that's a question for a local expert!
|
|
|
|
Also, if you succeed in building LAMMPS on a new kind of machine
|
|
(which there isn't a similar Makefile for in the distribution), send
|
|
it to the developers and we'll include it in future LAMMPS releases.
|
|
|
|
[{Building a LAMMPS executable:}]
|
|
|
|
The src directory contains the C++ source and header files for LAMMPS.
|
|
It also contains a top-level Makefile and a MAKE directory with
|
|
low-level Makefile.* files for several machines. From within the src
|
|
directory, type "make" or "gmake". You should see a list of available
|
|
choices. If one of those is the machine and options you want, you can
|
|
type a command like:
|
|
|
|
make linux
|
|
gmake mac :pre
|
|
|
|
If you get no errors and an executable like lmp_linux or lmp_mac is
|
|
produced, you're done; it's your lucky day. The remainder of this
|
|
section addressed the following topics: errors that occur when making
|
|
LAMMPS, editing a new low-level Makefile.foo, how to make LAMMPS with
|
|
and without packages, and additional build tips.
|
|
|
|
[{Errors that occur when making LAMMPS:}]
|
|
|
|
(1) If the make command breaks immediately with errors that indicate
|
|
it can't find files with a "*" in their names, this can be because
|
|
your machine's make doesn't support wildcard expansion in a makefile.
|
|
Try gmake instead of make. If that doesn't work, try using a -f
|
|
switch with your make command to use Makefile.list which explicitly
|
|
lists all the needed files, e.g.
|
|
|
|
make makelist
|
|
make -f Makefile.list linux
|
|
gmake -f Makefile.list mac :pre
|
|
|
|
The first "make" command will create a current Makefile.list with all
|
|
the file names in your src dir. The 2nd "make" command (make or
|
|
gmake) will use it to build LAMMPS.
|
|
|
|
(2) Other errors typically occur because the low-level Makefile isn't
|
|
setup correctly for your machine. If your platform is named "foo",
|
|
you need to create a Makefile.foo in the MAKE directory. Use whatever
|
|
existing file is closest to your platform as a starting point. See
|
|
the next section for more instructions.
|
|
|
|
[{Editing a new low-level Makefile.foo:}]
|
|
|
|
These are the issues you need to address when editing a low-level
|
|
Makefile for your machine. With a couple exceptions, the only portion
|
|
of the file you should need to edit is the "System-specific Settings"
|
|
section.
|
|
|
|
(1) Change the first line of Makefile.foo to include the word "foo"
|
|
and whatever other options you set. This is the line you will see if
|
|
you just type "make".
|
|
|
|
(2) Set the paths and flags for your C++ compiler, including
|
|
optimization flags. You can use g++, the open-source GNU compiler,
|
|
which is available on all Unix systems. Vendor compilers often
|
|
produce faster code. On boxes with Intel CPUs, I use the free Intel
|
|
icc compiler, which you can download from "Intel's compiler
|
|
site"_intel.
|
|
|
|
:link(intel,http://www.intel.com/software/products/noncom)
|
|
|
|
(3) If you want LAMMPS to run in parallel, you must have an MPI
|
|
library installed on your platform. Makefile.foo needs to specify
|
|
where the mpi.h file (-I switch) and the libmpi.a library (-L switch)
|
|
is found. On my Linux box, I use Argonne's MPICH 1.2 which can be
|
|
downloaded from the "Argonne MPI
|
|
site"_http://www-unix.mcs.anl.gov/mpi. LAM MPI should also work. If
|
|
you are running on a big parallel platform, your system people or the
|
|
vendor should have already installed a version of MPI, which will be
|
|
faster than MPICH or LAM, so find out how to link against it. If you
|
|
use MPICH or LAM, you will have to configure and build it for your
|
|
platform. The MPI configure script should have compiler options to
|
|
enable you to use the same compiler you are using for the LAMMPS
|
|
build, which can avoid problems that may arise when linking LAMMPS to
|
|
the MPI library.
|
|
|
|
(4) If you just want LAMMPS to run on a single processor, you can use
|
|
the STUBS library in place of MPI, since you don't need an MPI library
|
|
installed on your system. See the Makefile.serial file for how to
|
|
specify the -I and -L switches. You will also need to build the STUBS
|
|
library for your platform before making LAMMPS itself. From the STUBS
|
|
dir, type "make" and it will hopefully create a libmpi.a suitable for
|
|
linking to LAMMPS. If the build fails, you will need to edit the
|
|
STUBS/Makefile for your platform.
|
|
|
|
The file STUBS/mpi.cpp has a CPU timer function MPI_Wtime() that calls
|
|
gettimeofday() . If your system doesn't support gettimeofday() ,
|
|
you'll need to insert code to call another timer. Note that the
|
|
ANSI-standard function clock() rolls over after an hour or so, and is
|
|
therefore insufficient for timing long LAMMPS runs.
|
|
|
|
(5) If you want to use the particle-particle particle-mesh (PPPM)
|
|
option in LAMMPS for long-range Coulombics, you must have a 1d FFT
|
|
library installed on your platform. This is specified by a switch of
|
|
the form -DFFT_XXX where XXX = INTEL, DEC, SGI, SCSL, or FFTW. All
|
|
but the last one are native vendor-provided libraries. FFTW is a
|
|
fast, portable library that should work on any platform. You can
|
|
download it from "www.fftw.org"_http://www.fftw.org. Use version
|
|
2.1.X, not the newer 3.0.X. Building FFTW for my box was as simple as
|
|
./configure; make. Whichever FFT library you have on your platform,
|
|
you'll need to set the appropriate -I and -L switches in Makefile.foo.
|
|
|
|
If you examine fft3d.c and fft3d.h you'll see it's possible to add
|
|
other vendor FFT libraries via #ifdef statements in the appropriate
|
|
places. If you successfully add a new FFT option, like -DFFT_IBM,
|
|
please send the "developers"_http://lammps.sandia.gov an email; we'd
|
|
like to add it to LAMMPS.
|
|
|
|
(6) If you don't plan to use PPPM, you don't need an FFT library. Use
|
|
a -DFFT_NONE switch in the CCFLAGS setting of Makefile.foo, or exclude
|
|
the KSPACE package (see below).
|
|
|
|
(7) There are a few other -D compiler switches you can set as part of
|
|
CCFLAGS. The read_data and dump commands will read/write gzipped
|
|
files if you compile with -DGZIP. It requires that your Unix support
|
|
the "popen" command. Using one of the -DPACK_ARRAY, -DPACK_POINTER,
|
|
and -DPACK_MEMCPY options can make for faster parallel FFTs (in the
|
|
PPPM solver) on some platforms. The -DPACK_ARRAY setting is the
|
|
default.
|
|
|
|
(8) The DEPFLAGS setting is how the C++ compiler creates a dependency
|
|
file for each source file. This speeds re-compilation when source
|
|
(*.cpp) or header (*.h) files are edited. Some compilers do not
|
|
support dependency file creation, or may use a different switch than
|
|
-D. GNU g++ works with -D. If your compiler can't create dependency
|
|
files (a long list of errors involving *.d files), then you'll need to
|
|
create a Makefile.foo patterned after Makefile.tflop, which uses
|
|
different rules that do not involve dependency files.
|
|
|
|
That's it. Once you have a correct Makefile.foo and you have
|
|
pre-built the MPI and FFT libraries it will use, all you need to do
|
|
from the src directory is type one of these 2 commands:
|
|
|
|
make foo
|
|
gmake foo :pre
|
|
|
|
You should get the executable lmp_foo when the build is complete.
|
|
|
|
[{How to make LAMMPS with and without packages:}]
|
|
|
|
The source code for LAMMPS is structured as a large set of core files
|
|
that are always used plus additional packages, which are groups of
|
|
files that enable a specific set of features. For example, force
|
|
fields for molecular systems or granular systems are in packages. You
|
|
can see the list of packages by typing "make package". The current
|
|
list of packages is as follows:
|
|
|
|
class2 : class 2 force fields
|
|
dpd : dissipative particle dynamics (DPD) force field
|
|
granular : force fields and boundary conditions for granular systems
|
|
kspace : long-range Ewald and particle-mesh (PPPM) solvers
|
|
manybody : metal, 3-body, bond-order potentials
|
|
molecule : force fields for molecular systems
|
|
poems : coupled rigid body motion
|
|
xtc : dump atom snapshots in XTC format :tb(s=:)
|
|
|
|
Any or all of these packages can be included or excluded when LAMMPS
|
|
is built. The default is to include only the kspace, manybody, and
|
|
molecule packages. You may wish to exclude certain packages if you
|
|
will never run certain kinds of simulations. This will produce a
|
|
smaller executable which in some cases will also run a bit faster.
|
|
|
|
Packages are included or excluded by typing "make yes-name" or "make
|
|
no-name", where "name" is the name of the package. You can also type
|
|
"make yes-all" or "make no-all" to include/exclude all optional
|
|
packages. These commands work by simply moving files back and forth
|
|
between the main src directory and sub-directories with the package
|
|
name, so that the files are not seen when LAMMPS is built. After you
|
|
have included or excluded a package, you must re-make LAMMPS.
|
|
|
|
Additional make options exist to help manage LAMMPS files that exist
|
|
in both the src directory and in package sub-directories. Typing
|
|
"make package-update" will overwrite src files with files from the
|
|
package directories if the package has been included. Typing "make
|
|
package-overwrite" will overwrite files in the package directories
|
|
with src files. Typing "make package-check" will list differences
|
|
between src and package versions of the same files.
|
|
|
|
To use the poems package you must build LAMMPS with the POEMS library,
|
|
which computes the constrained rigid-body motion of articulated
|
|
(jointed) multibody systems. POEMS was written and is distributed by
|
|
Prof Kurt Anderson's group at Rensselaer Polytechnic Institute (RPI).
|
|
It is included in the LAMMPS distribution. To build LAMMPS with
|
|
POEMS, you must use a low-level LAMMPS Makefile that includes the
|
|
POEMS directory in its paths. See Makefile.g++.poems as an example.
|
|
You must also build POEMS itself as a library before building LAMMPS,
|
|
so that LAMMPS can link against it. The POEMS library is built by
|
|
typing "make" from within the poems directory in the LAMMPS
|
|
distribution. By default this uses Makefile which uses the gcc
|
|
compiler. If you need to use another compiler (so that the POEMS
|
|
library and LAMMPS are consistent), use another poems/Makefile.* or
|
|
create your own and invoke it as "make -f Makefile.*".
|
|
|
|
[{Building LAMMPS as a library:}]
|
|
|
|
LAMMPS can be built as a library, which can then be called from
|
|
another application or a scripting language. See "this
|
|
section"_Section_howto.html#4_10 for more info on coupling LAMMPS to
|
|
other codes. Building LAMMPS as a library is done by typing
|
|
|
|
make makelib
|
|
make -f Makefile.lib foo :pre
|
|
|
|
where foo is the machine name. The first "make" command will create a
|
|
current Makefile.lib with all the file names in your src dir. The 2nd
|
|
"make" command will use it to build LAMMPS as a library. This
|
|
requires that Makefile.foo have a library target (lib) and
|
|
system-specific settings for ARCHIVE and ARFLAGS. See Makefile.linux
|
|
for an example. The build will create the file liblmp_foo.a which
|
|
another application can link to. The callable functions in the
|
|
library are listed in library.h, but you can add as many functions as
|
|
you wish to library.h and library.cpp, which can access LAMMPS data
|
|
and return it to the caller or set LAMMPS data values as specified by
|
|
the caller. These 3 functions are included in the library:
|
|
|
|
void lammps_open(int, char **, MPI_Comm);
|
|
void lammps_close();
|
|
int lammps_command(char *); :pre
|
|
|
|
The lammps_open() function is used to initialize LAMMPS, passing in a
|
|
list of strings as if they were "command-line arguments"_#2_4 when
|
|
LAMMPS is run from the command line and a MPI communicator for LAMMPS
|
|
to run under. The lammps_close() function is used to shut down LAMMPS
|
|
and free all its memory. The lammps_command() function is used to
|
|
pass a string to LAMMPS as if it were an input command read from an
|
|
input script. See the library.h file for more information about the
|
|
arguments and return values for these 3 functions.
|
|
|
|
[{Additional build tips:}]
|
|
|
|
(1) Building LAMMPS for multiple platforms.
|
|
|
|
You can make LAMMPS for multiple platforms from the same src
|
|
directory. Each target creates its own object sub-dir called Obj_name
|
|
where it stores the system-specific *.o files.
|
|
|
|
(2) Cleaning up.
|
|
|
|
Typing "make clean" will delete all *.o object files created when
|
|
LAMMPS is built.
|
|
|
|
(3) On some 64-bit machines, compiling with -O3 appears to break the
|
|
Coulombic tabling option used by the "pair_style"_pair_style.html
|
|
{lj/cut/coul/long} and {lj/charmm/coul/long} styles. By default,
|
|
tabling is used by these styles since it can offer a 2x speed-up. It
|
|
can be disabled via the "pair_modify"_pair_modify.html command.
|
|
Alternatively, the associated files (e.g. pair_lj_cut_coul_long.cpp)
|
|
can be compiled with -O2, or with the compiler flag
|
|
{-fno-strict-aliasing}. Either of those build changes seems to fix
|
|
the problem.
|
|
|
|
(4) Building for a Macintosh.
|
|
|
|
OS X is BSD Unix, so it already works. See the Makefile.mac file.
|
|
|
|
(5) Building for MicroSoft Windows.
|
|
|
|
I've never done this, but LAMMPS is just standard C++ with MPI and FFT
|
|
calls. You should be able to use cygwin to build LAMMPS with a Unix
|
|
make. Or you should be able to pull all the source files into Visual
|
|
C++ (ugh) or some similar development environment and build it. In
|
|
the src/MAKE/Windows directory are some notes from users on how they
|
|
built LAMMPS under Windows, so you can look at their instructions for
|
|
tips. Good luck - I can't help you on this one.
|
|
|
|
:line
|
|
|
|
2.3 Running LAMMPS :h4,link(2_3)
|
|
|
|
By default, LAMMPS runs by reading commands from stdin; e.g. lmp_linux
|
|
< in.file. This means you first create an input script (e.g. in.file)
|
|
containing the desired commands. "This section"_Section_commands.html
|
|
describes how input scripts are structured and what commands they
|
|
contain.
|
|
|
|
You can test LAMMPS on any of the sample inputs provided in the
|
|
examples directory. Input scripts are named in.* and sample outputs
|
|
are named log.*.name.P where name is a machine and P is the number of
|
|
processors it was run on.
|
|
|
|
Here is how you might run one of the Lennard-Jones tests on a Linux
|
|
box, using mpirun to launch a parallel job:
|
|
|
|
cd src
|
|
make linux
|
|
cp lmp_linux ../examples/lj
|
|
cd ../examples/lj
|
|
mpirun -np 4 lmp_linux < in.lj.nve :pre
|
|
|
|
The screen output from LAMMPS is described in the next section. As it
|
|
runs, LAMMPS also writes a log.lammps file with the same information.
|
|
Note that this sequence of commands copied the LAMMPS executable
|
|
(lmp_linux) to the directory with the input files. If you don't do
|
|
this, LAMMPS may look for input files or create output files in the
|
|
directory where the executable is, rather than where you run it from.
|
|
|
|
If LAMMPS encounters errors in the input script or while running a
|
|
simulation it will print an ERROR message and stop or a WARNING
|
|
message and continue. See "this section"_Section_errors.html for a
|
|
discussion of the various kinds of errors LAMMPS can or can't detect,
|
|
a list of all ERROR and WARNING messages, and what to do about them.
|
|
|
|
LAMMPS can run a problem on any number of processors, including a
|
|
single processor. In theory you should get identical answers on any
|
|
number of processors and on any machine. In practice, numerical
|
|
round-off can cause slight differences and eventual divergence of
|
|
molecular dynamics phase space trajectories.
|
|
|
|
LAMMPS can run as large a problem as will fit in the physical memory
|
|
of one or more processors. If you run out of memory, you must run on
|
|
more processors or setup a smaller problem.
|
|
|
|
:line
|
|
|
|
2.4 Command-line options :h4,link(2_4)
|
|
|
|
At run time, LAMMPS recognizes several optional command-line switches
|
|
which may be used in any order. For example, lmp_ibm might be
|
|
launched as follows:
|
|
|
|
mpirun -np 16 lmp_ibm -var f tmp.out -log my.log -screen none < in.alloy :pre
|
|
|
|
These are the command-line options:
|
|
|
|
-echo style :pre
|
|
|
|
Set the style of command echoing. The style can be {none} or {screen}
|
|
or {log} or {both}. Depending on the style, each command read from
|
|
the input script will be echoed to the screen and/or logfile. This
|
|
can be useful to figure out which line of your script is causing an
|
|
input error. The default value is {log}. The echo style can also be
|
|
set by using the "echo"_echo.html command in the input script itself.
|
|
|
|
-partition 8x2 4 5 ... :pre
|
|
|
|
Invoke LAMMPS in multi-partition mode. When LAMMPS is run on P
|
|
processors and this switch is not used, LAMMPS runs in one partition,
|
|
i.e. all P processors run a single simulation. If this switch is
|
|
used, the P processors are split into separate partitions and each
|
|
partition runs its own simulation. The arguments to the switch
|
|
specify the number of processors in each partition. Arguments of the
|
|
form MxN mean M partitions, each with N processors. Arguments of the
|
|
form N mean a single partition with N processors. The sum of
|
|
processors in all partitions must equal P. Thus the command
|
|
"-partition 8x2 4 5" has 10 partitions and runs on a total of 25
|
|
processors.
|
|
|
|
The input script specifies what simulation is run on which partition;
|
|
see the "variable"_variable.html and "next"_next.html commands.
|
|
Simulations running on different partitions can also communicate with
|
|
each other; see the "temper"_temper.html command.
|
|
|
|
-in file :pre
|
|
|
|
Specify a file to use as an input script. This is an optional switch
|
|
when running LAMMPS in one-partition mode. If it is not specified,
|
|
LAMMPS reads its input script from stdin - e.g. lmp_linux < in.run.
|
|
This is a required switch when running LAMMPS in multi-partition mode,
|
|
since multiple processors cannot all read from stdin.
|
|
|
|
-log file :pre
|
|
|
|
Specify a log file for LAMMPS to write status information to. In
|
|
one-partition mode, if the switch is not used, LAMMPS writes to the
|
|
file log.lammps. If this switch is used, LAMMPS writes to the
|
|
specified file. In multi-partition mode, if the switch is not used, a
|
|
log.lammps file is created with hi-level status information. Each
|
|
partition also writes to a log.lammps.N file where N is the partition
|
|
ID. If the switch is specified in multi-partition mode, the hi-level
|
|
logfile is named "file" and each partition also logs information to a
|
|
file.N. For both one-partition and multi-partition mode, if the
|
|
specified file is "none", then no log files are created. Using a
|
|
"log"_log.html command in the input script will override this setting.
|
|
|
|
-screen file :pre
|
|
|
|
Specify a file for LAMMPS to write its screen information to. In
|
|
one-partition mode, if the switch is not used, LAMMPS writes to the
|
|
screen. If this switch is used, LAMMPS writes to the specified file
|
|
instead and you will see no screen output. In multi-partition mode,
|
|
if the switch is not used, hi-level status information is written to
|
|
the screen. Each partition also writes to a screen.N file where N is
|
|
the partition ID. If the switch is specified in multi-partition mode,
|
|
the hi-level screen dump is named "file" and each partition also
|
|
writes screen information to a file.N. For both one-partition and
|
|
multi-partition mode, if the specified file is "none", then no screen
|
|
output is performed.
|
|
|
|
-var name value :pre
|
|
|
|
Specify a variable that will be defined for substitution purposes when
|
|
the input script is read. "Name" is the variable name which can be a
|
|
single character (referenced as $x in the input script) or a full
|
|
string (referenced as $\{abc\}). The value can be any string. Using
|
|
this command-line option is equivalent to putting the line "variable
|
|
name index value" at the beginning of the input script. See the
|
|
"variable"_variable.html command for more info on defining variables
|
|
and "this section"_Section_commands.html#3_2 for more info on using
|
|
variables in scripts.
|
|
|
|
:line
|
|
|
|
2.5 LAMMPS screen output :h4,link(2_5)
|
|
|
|
As LAMMPS reads an input script, it prints information to both the
|
|
screen and a log file about significant actions it takes to setup a
|
|
simulation. When the simulation is ready to begin, LAMMPS performs
|
|
various initializations and prints the amount of memory (in MBytes per
|
|
processor) that the simulation requires. It also prints details of
|
|
the initial thermodynamic state of the system. During the run itself,
|
|
thermodynamic information is printed periodically, every few
|
|
timesteps. When the run concludes, LAMMPS prints the final
|
|
thermodynamic state and a total run time for the simulation. It then
|
|
appends statistics about the CPU time and storage requirements for the
|
|
simulation. An example set of statistics is shown here:
|
|
|
|
Loop time of 49.002 on 2 procs for 2004 atoms :pre
|
|
|
|
Pair time (%) = 35.0495 (71.5267)
|
|
Bond time (%) = 0.092046 (0.187841)
|
|
Kspce time (%) = 6.42073 (13.103)
|
|
Neigh time (%) = 2.73485 (5.5811)
|
|
Comm time (%) = 1.50291 (3.06703)
|
|
Outpt time (%) = 0.013799 (0.0281601)
|
|
Other time (%) = 2.13669 (4.36041) :pre
|
|
|
|
Nlocal: 1002 ave, 1015 max, 989 min
|
|
Histogram: 1 0 0 0 0 0 0 0 0 1
|
|
Nghost: 8720 ave, 8724 max, 8716 min
|
|
Histogram: 1 0 0 0 0 0 0 0 0 1
|
|
Neighs: 354141 ave, 361422 max, 346860 min
|
|
Histogram: 1 0 0 0 0 0 0 0 0 1 :pre
|
|
|
|
Total # of neighbors = 708282
|
|
Ave neighs/atom = 353.434
|
|
Ave special neighs/atom = 2.34032
|
|
Number of reneighborings = 42
|
|
Dangerous reneighborings = 2 :pre
|
|
|
|
The first section gives the breakdown of the CPU run time (in seconds)
|
|
into major categories. The second section lists the number of owned
|
|
atoms (Nlocal), ghost atoms (Nghost), and pair-wise neighbors stored
|
|
per processor. The max and min values give the spread of these values
|
|
across processors with a 10-bin histogram showing the distribution.
|
|
The total number of histogram counts is equal to the number of
|
|
processors.
|
|
|
|
The last section gives aggregate statistics for pair-wise neighbors
|
|
and special neighbors that LAMMPS keeps track of (see the
|
|
"special_bonds"_special_bonds.html command). The number of times
|
|
neighbor lists were rebuilt during the run is given as well as the
|
|
number of potentially "dangerous" rebuilds. If atom movement
|
|
triggered neighbor list rebuilding (see the
|
|
"neigh_modify"_neigh_modify.html command), then dangerous
|
|
reneighborings are those that were triggered on the first timestep
|
|
atom movement was checked for. If this count is non-zero you may wish
|
|
to reduce the delay factor to insure no force interactions are missed
|
|
by atoms moving beyond the neighbor skin distance before a rebuild
|
|
takes place.
|
|
|
|
If an energy minimization was performed via the
|
|
"minimize"_minimize.html command, additional information is printed,
|
|
e.g.
|
|
|
|
Minimization stats:
|
|
E initial, next-to-last, final = -0.895962 -2.94193 -2.94342
|
|
Gradient 2-norm init/final= 1920.78 20.9992
|
|
Gradient inf-norm init/final= 304.283 9.61216
|
|
Iterations = 36
|
|
Force evaluations = 177 :pre
|
|
|
|
The first line lists the initial and final energy, as well as the
|
|
energy on the next-to-last iteration. The next 2 lines give a measure
|
|
of the gradient of the energy (force on all atoms). The 2-norm is the
|
|
"length" of this force vector; the inf-norm is the largest component.
|
|
The last 2 lines are statistics on how many iterations and
|
|
force-evaluations the minimizer required. Multiple force evaluations
|
|
are typically done at each iteration to perform a 1d line minimization
|
|
in the search direction.
|
|
|
|
If a "kspace_style"_kspace_style.html long-range Coulombics solve was
|
|
performed during the run (PPPM, Ewald), then additional information is
|
|
printed, e.g.
|
|
|
|
FFT time (% of Kspce) = 0.200313 (8.34477)
|
|
FFT Gflps 3d 1d-only = 2.31074 9.19989 :pre
|
|
|
|
The first line gives the time spent doing 3d FFTs (4 per timestep) and
|
|
the fraction it represents of the total KSpace time (listed above).
|
|
Each 3d FFT requires computation (3 sets of 1d FFTs) and communication
|
|
(transposes). The total flops performed is 5Nlog_2(N), where N is the
|
|
number of points in the 3d grid. The FFTs are timed with and without
|
|
the communication and a Gflop rate is computed. The 3d rate is with
|
|
communication; the 1d rate is without (just the 1d FFTs). Thus you
|
|
can estimate what fraction of your FFT time was spent in
|
|
communication, roughly 75% in the example above.
|
|
|
|
:line
|
|
|
|
2.6 Tips for users of previous LAMMPS versions :h4,link(2_6)
|
|
|
|
LAMMPS 2003 is a complete C++ rewrite of LAMMPS 2001, which was
|
|
written in F90. Features of earlier versions of LAMMPS are listed in
|
|
"this section"_Section_history.html. The F90 and F77 versions (2001
|
|
and 99) are also freely distributed as open-source codes; check the
|
|
"LAMMPS WWW Site"_lws for distribution information if you prefer those
|
|
versions. The 99 and 2001 versions are no longer under active
|
|
development; they do not have all the features of LAMMPS 2003.
|
|
|
|
If you are a previous user of LAMMPS 2001, these are the most
|
|
significant changes you will notice in LAMMPS 2003:
|
|
|
|
(1) The names and arguments of many input script commands have
|
|
changed. All commands are now a single word (e.g. read_data instead
|
|
of read data).
|
|
|
|
(2) All the functionality of LAMMPS 2001 is included in LAMMPS 2003,
|
|
but you may need to specify the relevant commands in different ways.
|
|
|
|
(3) The format of the data file can be streamlined for some problems.
|
|
See the "read_data"_read_data.html command for details. The data file
|
|
section "Nonbond Coeff" has been renamed to "Pair Coeff" in LAMMPS
|
|
2003.
|
|
|
|
(4) Binary restart files written by LAMMPS 2001 cannot be read by
|
|
LAMMPS 2003 with a "read_restart"_read_restart.html command. This is
|
|
because they were output by F90 which writes in a different binary
|
|
format than C or C++ writes or reads. Use the {restart2data} tool
|
|
provided with LAMMPS 2001 to convert the 2001 restart file to a text
|
|
data file. Then edit the data file as necessary before using the
|
|
LAMMPS 2003 "read_data"_read_data.html command to read it in.
|
|
|
|
(5) There are numerous small numerical changes in LAMMPS 2003 that
|
|
mean you will not get identical answers when comparing to a 2001 run.
|
|
However, your initial thermodynamic energy and MD trajectory should be
|
|
close if you have setup the problem for both codes the same.
|