diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index a5a874fa8b..bceb174017 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -1,7 +1,7 @@
LAMMPS Users Manual
-
+
@@ -21,7 +21,7 @@
LAMMPS Documentation :c,h3
-11 Apr 2017 version :c,h4
+4 May 2017 version :c,h4
Version info: :h4
@@ -158,12 +158,11 @@ END_RST -->
2.1 "What's in the LAMMPS distribution"_start_1 :ulb,b
2.2 "Making LAMMPS"_start_2 :b
2.3 "Making LAMMPS with optional packages"_start_3 :b
- 2.4 "Building LAMMPS via the Make.py script"_start_4 :b
- 2.5 "Building LAMMPS as a library"_start_5 :b
- 2.6 "Running LAMMPS"_start_6 :b
- 2.7 "Command-line options"_start_7 :b
- 2.8 "Screen output"_start_8 :b
- 2.9 "Tips for users of previous versions"_start_9 :ule,b
+ 2.4 "Building LAMMPS as a library"_start_4 :b
+ 2.5 "Running LAMMPS"_start_5 :b
+ 2.6 "Command-line options"_start_6 :b
+ 2.7 "Screen output"_start_7 :b
+ 2.8 "Tips for users of previous versions"_start_8 :ule,b
"Commands"_Section_commands.html :l
3.1 "LAMMPS input script"_cmd_1 :ulb,b
3.2 "Parsing rules"_cmd_2 :b
diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt
index 3f1d6ff203..c71acfe06f 100644
--- a/doc/src/Section_commands.txt
+++ b/doc/src/Section_commands.txt
@@ -1052,7 +1052,7 @@ package"_Section_start.html#start_3.
"oxdna2/excv"_pair_oxdna2.html,
"oxdna2/stk"_pair_oxdna2.html,
"quip"_pair_quip.html,
-"reax/c (k)"_pair_reax_c.html,
+"reax/c (k)"_pair_reaxc.html,
"smd/hertz"_pair_smd_hertz.html,
"smd/tlsph"_pair_smd_tlsph.html,
"smd/triangulated/surface"_pair_smd_triangulated_surface.html,
diff --git a/doc/src/Section_errors.txt b/doc/src/Section_errors.txt
index 832c5718ab..5e0574b390 100644
--- a/doc/src/Section_errors.txt
+++ b/doc/src/Section_errors.txt
@@ -11171,6 +11171,12 @@ Self-explanatory. :dd
If the fix changes the timestep, the dump dcd file will not
reflect the change. :dd
+{Energy due to X extra global DOFs will be included in minimizer energies} :dt
+
+When using fixes like box/relax, the potential energy used by the minimizer
+is augmented by an additional energy provided by the fix. Thus the printed
+converged energy may be different from the total potential energy. :dd
+
{Energy tally does not account for 'zero yes'} :dt
The energy removed by using the 'zero yes' flag is not accounted
diff --git a/doc/src/Section_intro.txt b/doc/src/Section_intro.txt
index 33c3cf395f..bfb6ef3901 100644
--- a/doc/src/Section_intro.txt
+++ b/doc/src/Section_intro.txt
@@ -249,8 +249,12 @@ Pizza.py WWW site"_pizza. :l
Specialized features :h5
-These are LAMMPS capabilities which you may not think of as typical
-molecular dynamics options:
+LAMMPS can be built with optional packages which implement a variety
+of additional capabilities. An overview of all the packages is "given
+here"_Section_packages.html.
+
+These are some LAMMPS capabilities which you may not think of as
+typical classical molecular dynamics options:
"static"_balance.html and "dynamic load-balancing"_fix_balance.html
"generalized aspherical particles"_body.html
@@ -515,7 +519,7 @@ the packages they have written are somewhat unique to LAMMPS and the
code would not be as general-purpose as it is without their expertise
and efforts.
-Axel Kohlmeyer (Temple U), akohlmey at gmail.com, SVN and Git repositories, indefatigable mail list responder, USER-CG-CMM and USER-OMP packages
+Axel Kohlmeyer (Temple U), akohlmey at gmail.com, SVN and Git repositories, indefatigable mail list responder, USER-CGSDK and USER-OMP packages
Roy Pollock (LLNL), Ewald and PPPM solvers
Mike Brown (ORNL), brownw at ornl.gov, GPU package
Greg Wagner (Sandia), gjwagne at sandia.gov, MEAM package for MEAM potential
diff --git a/doc/src/Section_packages.txt b/doc/src/Section_packages.txt
index b327b7b1ce..2a0a8386e8 100644
--- a/doc/src/Section_packages.txt
+++ b/doc/src/Section_packages.txt
@@ -10,1895 +10,2592 @@ Section"_Section_accelerate.html :c
4. Packages :h3
-This section gives an overview of the add-on optional packages that
-extend LAMMPS functionality. Packages 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
-all packages by typing "make package" from within the src directory of
-the LAMMPS distribution.
+This section gives an overview of the optional packages that extend
+LAMMPS functionality with instructions on how to build LAMMPS with
+each of them. Packages 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 all
+packages and "make" commands to manage them by typing "make package"
+from within the src directory of the LAMMPS distribution. "Section
+2.3"_Section_start.html#start_3 gives general info on how to install
+and un-install packages as part of the LAMMPS build process.
-Here are links for two tables below, which list standard and user
-packages.
+There are two kinds of packages in LAMMPS, standard and user packages:
-4.1 "Standard packages"_#pkg_1
-4.2 "User packages"_#pkg_2 :all(b)
+"Table of standard packages"_#table_standard
+"Table of user packages"_#table_user :ul
-"Section 2.3"_Section_start.html#start_3 of the manual describes
-the difference between standard packages and user packages. It also
-has general details on how to include/exclude specific packages as
-part of the LAMMPS build process, and on how to build auxiliary
-libraries or modify a machine Makefile if a package requires it.
+Standard packages are supported by the LAMMPS developers and are
+written in a syntax and style consistent with the rest of LAMMPS.
+This means the developers will answer questions about them, debug and
+fix them if necessary, and keep them compatible with future changes to
+LAMMPS.
-Following the two tables below, is a sub-section for each package. It
-has a summary of what the package contains. It has specific
-instructions on how to install it, build or obtain any auxiliary
-library it requires, and any Makefile.machine changes it requires. It
-also lists pointers to examples of its use or documentation provided
-in the LAMMPS distribution. If you want to know the complete list of
-commands that a package adds to LAMMPS, simply list the files in its
-directory, e.g. "ls src/GRANULAR". Source files with names that start
-with compute, fix, pair, bond, etc correspond to command styles with
-the same names.
+User packages have been contributed by users, and begin with the
+"user" prefix. If they are a single command (single file), they are
+typically in the user-misc package. User packages don't necessarily
+meet the requirements of the standard packages. If you have problems
+using a feature provided in a user package, you may need to contact
+the contributor directly to get help. Information on how to submit
+additions you make to LAMMPS as single files or as a standard or user
+package are given in "this section"_Section_modify.html#mod_15 of the
+manual.
-NOTE: The USER package sub-sections below are still being filled in,
-as of March 2016.
+Following the next two tables is a sub-section for each package. It
+lists authors (if applicable) and summarizes the package contents. It
+has specific instructions on how to install the package, including (if
+necessary) downloading or building any extra library it requires. It
+also gives links to documentation, example scripts, and
+pictures/movies (if available) that illustrate use of the package.
-Unless otherwise noted below, every package is independent of all the
-others. I.e. any package can be included or excluded in a LAMMPS
-build, independent of all other packages. However, note that some
-packages include commands derived from commands in other packages. If
-the other package is not installed, the derived command from the new
-package will also not be installed when you include the new one.
-E.g. the pair lj/cut/coul/long/omp command from the USER-OMP package
-will not be installed as part of the USER-OMP package if the KSPACE
-package is not also installed, since it contains the pair
-lj/cut/coul/long command. If you later install the KSPACE package and
-the USER-OMP package is already installed, both the pair
-lj/cut/coul/long and lj/cut/coul/long/omp commands will be installed.
+NOTE: To see the complete list of commands a package adds to LAMMPS,
+just look at the files in its src directory, e.g. "ls src/GRANULAR".
+Files with names that start with fix, compute, atom, pair, bond,
+angle, etc correspond to commands with the same style names.
+
+In these two tables, the "Example" column is a sub-directory in the
+examples directory of the distribution which has an input script that
+uses the package. E.g. "peptide" refers to the examples/peptide
+directory; USER/atc refers to the examples/USER/atc directory. The
+"Library" column indicates whether an extra library is needed to build
+and use the package:
+
+dash = no library
+sys = system library: you likely have it on your machine
+int = internal library: provided with LAMMPS, but you may need to build it
+ext = external library: you will need to download and install it on your machine :ul
:line
-
-4.1 Standard packages :h4,link(pkg_1)
-
-The current list of standard packages is as follows. Each package
-name links to a sub-section below with more details.
-
-Package, Description, Author(s), Doc page, Example, Library
-"ASPHERE"_#ASPHERE, aspherical particles, -, "Section 6.6.14"_Section_howto.html#howto_14, ellipse, -
-"BODY"_#BODY, body-style particles, -, "body"_body.html, body, -
-"CLASS2"_#CLASS2, class 2 force fields, -, "pair_style lj/class2"_pair_class2.html, -, -
-"COLLOID"_#COLLOID, colloidal particles, Kumar (1), "atom_style colloid"_atom_style.html, colloid, -
-"COMPRESS"_#COMPRESS, I/O compression, Axel Kohlmeyer (Temple U), "dump */gz"_dump.html, -, -
-"CORESHELL"_#CORESHELL, adiabatic core/shell model, Hendrik Heenen (Technical U of Munich), "Section 6.6.25"_Section_howto.html#howto_25, coreshell, -
-"DIPOLE"_#DIPOLE, point dipole particles, -, "pair_style dipole/cut"_pair_dipole.html, dipole, -
-"GPU"_#GPU, GPU-enabled styles, Mike Brown (ORNL), "Section 5.3.1"_accelerate_gpu.html, gpu, lib/gpu
-"GRANULAR"_#GRANULAR, granular systems, -, "Section 6.6.6"_Section_howto.html#howto_6, pour, -
-"KIM"_#KIM, openKIM potentials, Smirichinski & Elliot & Tadmor (3), "pair_style kim"_pair_kim.html, kim, KIM
-"KOKKOS"_#KOKKOS, Kokkos-enabled styles, Trott & Moore (4), "Section 5.3.3"_accelerate_kokkos.html, kokkos, lib/kokkos
-"KSPACE"_#KSPACE, long-range Coulombic solvers, -, "kspace_style"_kspace_style.html, peptide, -
-"MANYBODY"_#MANYBODY, many-body potentials, -, "pair_style tersoff"_pair_tersoff.html, shear, -
-"MEAM"_#MEAM, modified EAM potential, Greg Wagner (Sandia), "pair_style meam"_pair_meam.html, meam, lib/meam
-"MC"_#MC, Monte Carlo options, -, "fix gcmc"_fix_gcmc.html, -, -
-"MOLECULE"_#MOLECULE, molecular system force fields, -, "Section 6.6.3"_Section_howto.html#howto_3, peptide, -
-"OPT"_#OPT, optimized pair styles, Fischer & Richie & Natoli (2), "Section 5.3.5"_accelerate_opt.html, -, -
-"PERI"_#PERI, Peridynamics models, Mike Parks (Sandia), "pair_style peri"_pair_peri.html, peri, -
-"POEMS"_#POEMS, coupled rigid body motion, Rudra Mukherjee (JPL), "fix poems"_fix_poems.html, rigid, lib/poems
-"PYTHON"_#PYTHON, embed Python code in an input script, -, "python"_python.html, python, lib/python
-"REAX"_#REAX, ReaxFF potential, Aidan Thompson (Sandia), "pair_style reax"_pair_reax.html, reax, lib/reax
-"REPLICA"_#REPLICA, multi-replica methods, -, "Section 6.6.5"_Section_howto.html#howto_5, tad, -
-"RIGID"_#RIGID, rigid bodies, -, "fix rigid"_fix_rigid.html, rigid, -
-"SHOCK"_#SHOCK, shock loading methods, -, "fix msst"_fix_msst.html, -, -
-"SNAP"_#SNAP, quantum-fit potential, Aidan Thompson (Sandia), "pair snap"_pair_snap.html, snap, -
-"SRD"_#SRD, stochastic rotation dynamics, -, "fix srd"_fix_srd.html, srd, -
-"VORONOI"_#VORONOI, Voronoi tesselations, Daniel Schwen (LANL), "compute voronoi/atom"_compute_voronoi_atom.html, -, Voro++
-:tb(ea=c)
-
-The "Authors" column lists a name(s) if a specific person is
-responsible for creating and maintaining the package.
-
-(1) The COLLOID package includes Fast Lubrication Dynamics pair styles
-which were created by Amit Kumar and Michael Bybee from Jonathan
-Higdon's group at UIUC.
-
-(2) The OPT package was created by James Fischer (High Performance
-Technologies), David Richie, and Vincent Natoli (Stone Ridge
-Technolgy).
-
-(3) The KIM package was created by Valeriu Smirichinski, Ryan Elliott,
-and Ellad Tadmor (U Minn).
-
-(4) The KOKKOS package was created primarily by Christian Trott and
-Stan Moore (Sandia). It uses the Kokkos library which was developed
-by Carter Edwards, Christian Trott, and others at Sandia.
-
-The "Doc page" column links to either a sub-section of the
-"Section 6"_Section_howto.html of the manual, or an input script
-command implemented as part of the package, or to additional
-documentation provided within the package.
-
-The "Example" column is a sub-directory in the examples directory of
-the distribution which has an input script that uses the package.
-E.g. "peptide" refers to the examples/peptide directory.
-
-The "Library" column lists an external library which must be built
-first and which LAMMPS links to when it is built. If it is listed as
-lib/package, then the code for the library is under the lib directory
-of the LAMMPS distribution. See the lib/package/README file for info
-on how to build the library. If it is not listed as lib/package, then
-it is a third-party library not included in the LAMMPS distribution.
-See details on all of this below for individual packages.
-
:line
-ASPHERE package :link(ASPHERE),h5
+[Standard packages] :link(table_standard),p
-Contents: Several computes, time-integration fixes, and pair styles
-for aspherical particle models: ellipsoids, 2d lines, 3d triangles.
+Package, Description, Doc page, Example, Library
+"ASPHERE"_#ASPHERE, aspherical particle models, "Section 6.6.14"_Section_howto.html#howto_14, ellipse, -
+"BODY"_#BODY, body-style particles, "body"_body.html, body, -
+"CLASS2"_#CLASS2, class 2 force fields, "pair_style lj/class2"_pair_class2.html, -, -
+"COLLOID"_#COLLOID, colloidal particles, "atom_style colloid"_atom_style.html, colloid, -
+"COMPRESS"_#COMPRESS, I/O compression, "dump */gz"_dump.html, -, sys
+"CORESHELL"_#CORESHELL, adiabatic core/shell model, "Section 6.6.25"_Section_howto.html#howto_25, coreshell, -
+"DIPOLE"_#DIPOLE, point dipole particles, "pair_style dipole/cut"_pair_dipole.html, dipole, -
+"GPU"_#GPU, GPU-enabled styles, "Section 5.3.1"_accelerate_gpu.html, WWW bench, int
+"GRANULAR"_#GRANULAR, granular systems, "Section 6.6.6"_Section_howto.html#howto_6, pour, -
+"KIM"_#KIM, openKIM wrapper, "pair_style kim"_pair_kim.html, kim, ext
+"KOKKOS"_#KOKKOS, Kokkos-enabled styles, "Section 5.3.3"_accelerate_kokkos.html, WWW bench, -
+"KSPACE"_#KSPACE, long-range Coulombic solvers, "kspace_style"_kspace_style.html, peptide, -
+"MANYBODY"_#MANYBODY, many-body potentials, "pair_style tersoff"_pair_tersoff.html, shear, -
+"MC"_#MC, Monte Carlo options, "fix gcmc"_fix_gcmc.html, -, -
+"MEAM"_#MEAM, modified EAM potential, "pair_style meam"_pair_meam.html, meam, int
+"MISC"_#MISC, miscellanous single-file commands, -, -, -
+"MOLECULE"_#MOLECULE, molecular system force fields, "Section 6.6.3"_Section_howto.html#howto_3, peptide, -
+"MPIIO"_#MPIIO, MPI parallel I/O dump and restart, "dump"_dump.html, -, -
+"MSCG"_#MSCG, multi-scale coarse-graining wrapper, "fix mscg"_fix_mscg.html, mscg, ext
+"OPT"_#OPT, optimized pair styles, "Section 5.3.5"_accelerate_opt.html, WWW bench, -
+"PERI"_#PERI, Peridynamics models, "pair_style peri"_pair_peri.html, peri, -
+"POEMS"_#POEMS, coupled rigid body motion, "fix poems"_fix_poems.html, rigid, int
+"PYTHON"_#PYTHON, embed Python code in an input script, "python"_python.html, python, sys
+"QEQ"_#QEQ, QEq charge equilibration, "fix qeq"_fix_qeq.html, qeq, -
+"REAX"_#REAX, ReaxFF potential (Fortran), "pair_style reax"_pair_reax.html, reax, int
+"REPLICA"_#REPLICA, multi-replica methods, "Section 6.6.5"_Section_howto.html#howto_5, tad, -
+"RIGID"_#RIGID, rigid bodies and constraints, "fix rigid"_fix_rigid.html, rigid, -
+"SHOCK"_#SHOCK, shock loading methods, "fix msst"_fix_msst.html, -, -
+"SNAP"_#SNAP, quantum-fitted potential, "pair snap"_pair_snap.html, snap, -
+"SRD"_#SRD, stochastic rotation dynamics, "fix srd"_fix_srd.html, srd, -
+"VORONOI"_#VORONOI, Voronoi tesselation, "compute voronoi/atom"_compute_voronoi_atom.html, -, ext
+:tb(ea=c,ca1=l)
-To install via make or Make.py:
+[USER packages] :link(table_user),p
+
+Package, Description, Doc page, Example, Library
+"USER-ATC"_#USER-ATC, atom-to-continuum coupling, "fix atc"_fix_atc.html, USER/atc, int
+"USER-AWPMD"_#USER-AWPMD, wave-packet MD, "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, int
+"USER-CGDNA"_#USER-CGDNA, coarse-grained DNA force fields, src/USER-CGDNA/README, USER/cgdna, -
+"USER-CGSDK"_#USER-CGSDK, SDK coarse-graining model, "pair_style lj/sdk"_pair_sdk.html, USER/cgsdk, -
+"USER-COLVARS"_#USER-COLVARS, collective variables library, "fix colvars"_fix_colvars.html, USER/colvars, int
+"USER-DIFFRACTION"_#USER-DIFFRACTION, virtual x-ray and electron diffraction,"compute xrd"_compute_xrd.html, USER/diffraction, -
+"USER-DPD"_#USER-DPD, reactive dissipative particle dynamics, src/USER-DPD/README, USER/dpd, -
+"USER-DRUDE"_#USER-DRUDE, Drude oscillators, "tutorial"_tutorial_drude.html, USER/drude, -
+"USER-EFF"_#USER-EFF, electron force field,"pair_style eff/cut"_pair_eff.html, USER/eff, -
+"USER-FEP"_#USER-FEP, free energy perturbation,"compute fep"_compute_fep.html, USER/fep, -
+"USER-H5MD"_#USER-H5MD, dump output via HDF5,"dump h5md"_dump_h5md.html, -, ext
+"USER-INTEL"_#USER-INTEL, optimized Intel CPU and KNL styles,"Section 5.3.2"_accelerate_intel.html, WWW bench, -
+"USER-LB"_#USER-LB, Lattice Boltzmann fluid,"fix lb/fluid"_fix_lb_fluid.html, USER/lb, -
+"USER-MANIFOLD"_#USER-MANIFOLD, motion on 2d surfaces,"fix manifoldforce"_fix_manifoldforce.html, USER/manifold, -
+"USER-MGPT"_#USER-MGPT, fast MGPT multi-ion potentials, "pair_style mgpt"_pair_mgpt.html, USER/mgpt, -
+"USER-MISC"_#USER-MISC, single-file contributions, USER-MISC/README, USER/misc, -
+"USER-MOLFILE"_#USER-MOLFILE, "VMD"_VMD molfile plug-ins,"dump molfile"_dump_molfile.html, -, ext
+"USER-NETCDF"_#USER-NETCDF, dump output via NetCDF,"dump netcdf"_dump_netcdf.html, -, ext
+"USER-OMP"_#USER-OMP, OpenMP-enabled styles,"Section 5.3.4"_accelerate_omp.html, WWW bench, -
+"USER-PHONON"_#USER-PHONON, phonon dynamical matrix,"fix phonon"_fix_phonon.html, USER/phonon, -
+"USER-QMMM"_#USER-QMMM, QM/MM coupling,"fix qmmm"_fix_qmmm.html, USER/qmmm, ext
+"USER-QTB"_#USER-QTB, quantum nuclear effects,"fix qtb"_fix_qtb.html "fix qbmsst"_fix_qbmsst.html, qtb, -
+"USER-QUIP"_#USER-QUIP, QUIP/libatoms interface,"pair_style quip"_pair_quip.html, USER/quip, ext
+"USER-REAXC"_#USER-REAXC, ReaxFF potential (C/C++) ,"pair_style reaxc"_pair_reaxc.html, reax, -
+"USER-SMD"_#USER-SMD, smoothed Mach dynamics,"SMD User Guide"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, ext
+"USER-SMTBQ"_#USER-SMTBQ, second moment tight binding QEq potential,"pair_style smtbq"_pair_smtbq.html, USER/smtbq, -
+"USER-SPH"_#USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, -
+"USER-TALLY"_#USER-TALLY, pairwise tally computes,"compute XXX/tally"_compute_tally.html, USER/tally, -
+"USER-VTK"_#USER-VTK, dump output via VTK, "compute custom/vtk"_dump_custom_vtk.html, -, ext
+:tb(ea=c,ca1=l)
+
+:line
+:line
+
+ASPHERE package :link(ASPHERE),h4
+
+[Contents:]
+
+Computes, time-integration fixes, and pair styles for aspherical
+particle models including ellipsoids, 2d lines, and 3d triangles.
+
+[Install or un-install:]
make yes-asphere
make machine :pre
-Make.py -p asphere -a machine :pre
-
-To un-install via make or Make.py:
-
make no-asphere
make machine :pre
-Make.py -p ^asphere -a machine :pre
+[Supporting info:]
-Supporting info: "Section 6.14"_Section_howto.html#howto_14,
-"pair_style gayberne"_pair_gayberne.html, "pair_style
-resquared"_pair_resquared.html,
-"doc/PDF/pair_gayberne_extra.pdf"_PDF/pair_gayberne_extra.pdf,
-"doc/PDF/pair_resquared_extra.pdf"_PDF/pair_resquared_extra.pdf,
-examples/ASPHERE, examples/ellipse
+src/ASPHERE: filenames -> commands
+"Section 6.14"_Section_howto.html#howto_14
+"pair_style gayberne"_pair_gayberne.html
+"pair_style resquared"_pair_resquared.html
+"doc/PDF/pair_gayberne_extra.pdf"_PDF/pair_gayberne_extra.pdf
+"doc/PDF/pair_resquared_extra.pdf"_PDF/pair_resquared_extra.pdf
+examples/ASPHERE
+examples/ellipse
+http://lammps.sandia.gov/movies.html#line
+http://lammps.sandia.gov/movies.html#tri :ul
:line
-BODY package :link(BODY),h5
+BODY package :link(BODY),h4
-Contents: Support for body-style particles. Computes,
+[Contents:]
+
+Body-style particles with internal structure. Computes,
time-integration fixes, pair styles, as well as the body styles
themselves. See the "body"_body.html doc page for an overview.
-To install via make or Make.py:
+[Install or un-install:]
make yes-body
make machine :pre
-Make.py -p body -a machine :pre
-
-To un-install via make or Make.py:
-
make no-body
make machine :pre
-Make.py -p ^body -a machine :pre
+[Supporting info:]
-Supporting info: "atom_style body"_atom_style.html, "body"_body.html,
-"pair_style body"_pair_body.html, examples/body
+src/BODY filenames -> commands
+"body"_body.html
+"atom_style body"_atom_style.html
+"fix nve/body"_fix_nve_body.html
+"pair_style body"_pair_body.html
+examples/body :ul
:line
-CLASS2 package :link(CLASS2),h5
+CLASS2 package :link(CLASS2),h4
-Contents: Bond, angle, dihedral, improper, and pair styles for the
-COMPASS CLASS2 molecular force field.
+[Contents:]
-To install via make or Make.py:
+Bond, angle, dihedral, improper, and pair styles for the COMPASS
+CLASS2 molecular force field.
+
+[Install or un-install:]
make yes-class2
make machine :pre
-Make.py -p class2 -a machine :pre
-
-To un-install via make or Make.py:
-
make no-class2
make machine :pre
-Make.py -p ^class2 -a machine :pre
+[Supporting info:]
-Supporting info: "bond_style class2"_bond_class2.html, "angle_style
-class2"_angle_class2.html, "dihedral_style
-class2"_dihedral_class2.html, "improper_style
-class2"_improper_class2.html, "pair_style lj/class2"_pair_class2.html
+src/CLASS2: filenames -> commands
+"bond_style class2"_bond_class2.html
+"angle_style class2"_angle_class2.html
+"dihedral_style class2"_dihedral_class2.html
+"improper_style class2"_improper_class2.html
+"pair_style lj/class2"_pair_class2.html :ul
:line
-COLLOID package :link(COLLOID),h5
+COLLOID package :link(COLLOID),h4
-Contents: Support for coarse-grained colloidal particles. Wall fix
-and pair styles that implement colloidal interaction models for
-finite-size particles. This includes the Fast Lubrication Dynamics
-method for hydrodynamic interactions, which is a simplified
-approximation to Stokesian dynamics.
+[Contents:]
-To install via make or Make.py:
+Coarse-grained finite-size colloidal particles. Pair stayle and fix
+wall styles for colloidal interactions. Includes the Fast Lubrication
+Dynamics (FLD) method for hydrodynamic interactions, which is a
+simplified approximation to Stokesian dynamics.
+
+[Authors:] This package includes Fast Lubrication Dynamics pair styles
+which were created by Amit Kumar and Michael Bybee from Jonathan
+Higdon's group at UIUC.
+
+[Install or un-install:]
make yes-colloid
make machine :pre
-Make.py -p colloid -a machine :pre
-
-To un-install via make or Make.py:
-
make no-colloid
make machine :pre
-Make.py -p ^colloid -a machine :pre
+[Supporting info:]
-Supporting info: "fix wall/colloid"_fix_wall.html, "pair_style
-colloid"_pair_colloid.html, "pair_style
-yukawa/colloid"_pair_yukawa_colloid.html, "pair_style
-brownian"_pair_brownian.html, "pair_style
-lubricate"_pair_lubricate.html, "pair_style
-lubricateU"_pair_lubricateU.html, examples/colloid, examples/srd
+src/COLLOID: filenames -> commands
+"fix wall/colloid"_fix_wall.html
+"pair_style colloid"_pair_colloid.html
+"pair_style yukawa/colloid"_pair_yukawa_colloid.html
+"pair_style brownian"_pair_brownian.html
+"pair_style lubricate"_pair_lubricate.html
+"pair_style lubricateU"_pair_lubricateU.html
+examples/colloid
+examples/srd :ul
:line
-COMPRESS package :link(COMPRESS),h5
+COMPRESS package :link(COMPRESS),h4
-Contents: Support for compressed output of dump files via the zlib
-compression library, using dump styles with a "gz" in their style
-name.
+[Contents:]
-Building with the COMPRESS package assumes you have the zlib
-compression library available on your system. The build uses the
-lib/compress/Makefile.lammps file in the compile/link process. You
-should only need to edit this file if the LAMMPS build cannot find the
-zlib info it specifies.
+Compressed output of dump files via the zlib compression library,
+using dump styles with a "gz" in their style name.
-To install via make or Make.py:
+To use this package you must have the zlib compression library
+available on your system.
+
+[Author:] Axel Kohlmeyer (Temple U).
+
+[Install or un-install:]
+
+Note that building with this package assumes you have the zlib
+compression library available on your system. The LAMMPS build uses
+the settings in the lib/compress/Makefile.lammps file in the
+compile/link process. You should only need to edit this file if the
+LAMMPS build fails on your system.
make yes-compress
make machine :pre
-Make.py -p compress -a machine :pre
-
-To un-install via make or Make.py:
-
make no-compress
make machine :pre
-Make.py -p ^compress -a machine :pre
+[Supporting info:]
-Supporting info: src/COMPRESS/README, lib/compress/README, "dump
-atom/gz"_dump.html, "dump cfg/gz"_dump.html, "dump
-custom/gz"_dump.html, "dump xyz/gz"_dump.html
+src/COMPRESS: filenames -> commands
+src/COMPRESS/README
+lib/compress/README
+"dump atom/gz"_dump.html
+"dump cfg/gz"_dump.html
+"dump custom/gz"_dump.html
+"dump xyz/gz"_dump.html :ul
:line
-CORESHELL package :link(CORESHELL),h5
+CORESHELL package :link(CORESHELL),h4
-Contents: Compute and pair styles that implement the adiabatic
-core/shell model for polarizability. The compute temp/cs command
-measures the temperature of a system with core/shell particles. The
-pair styles augment Born, Buckingham, and Lennard-Jones styles with
-core/shell capabilities. See "Section 6.26"_Section_howto.html#howto_26
-for an overview of how to use the package.
+[Contents:]
-To install via make or Make.py:
+Compute and pair styles that implement the adiabatic core/shell model
+for polarizability. The pair styles augment Born, Buckingham, and
+Lennard-Jones styles with core/shell capabilities. The "compute
+temp/cs"_compute_temp_cs.html command calculates the temperature of a
+system with core/shell particles. See "Section
+6.26"_Section_howto.html#howto_26 for an overview of how to use this
+package.
+
+[Author:] Hendrik Heenen (Technical U of Munich).
+
+[Install or un-install:]
make yes-coreshell
make machine :pre
-Make.py -p coreshell -a machine :pre
-
-To un-install via make or Make.py:
-
make no-coreshell
make machine :pre
-Make.py -p ^coreshell -a machine :pre
+[Supporting info:]
-Supporting info: "Section 6.26"_Section_howto.html#howto_26,
-"compute temp/cs"_compute_temp_cs.html,
-"pair_style born/coul/long/cs"_pair_cs.html, "pair_style
-buck/coul/long/cs"_pair_cs.html, pair_style
-lj/cut/coul/long/cs"_pair_lj.html, examples/coreshell
+src/CORESHELL: filenames -> commands
+"Section 6.26"_Section_howto.html#howto_26
+"Section 6.25"_Section_howto.html#howto_25
+"compute temp/cs"_compute_temp_cs.html
+"pair_style born/coul/long/cs"_pair_cs.html
+"pair_style buck/coul/long/cs"_pair_cs.html
+"pair_style lj/cut/coul/long/cs"_pair_lj.html
+examples/coreshell :ul
:line
-DIPOLE package :link(DIPOLE),h5
+DIPOLE package :link(DIPOLE),h4
-Contents: An atom style and several pair styles to support point
-dipole models with short-range or long-range interactions.
+[Contents:]
-To install via make or Make.py:
+An atom style and several pair styles for point dipole models with
+short-range or long-range interactions.
+
+[Install or un-install:]
make yes-dipole
make machine :pre
-Make.py -p dipole -a machine :pre
-
-To un-install via make or Make.py:
-
make no-dipole
make machine :pre
-Make.py -p ^dipole -a machine :pre
+[Supporting info:]
-Supporting info: "atom_style dipole"_atom_style.html, "pair_style
-lj/cut/dipole/cut"_pair_dipole.html, "pair_style
-lj/cut/dipole/long"_pair_dipole.html, "pair_style
-lj/long/dipole/long"_pair_dipole.html, examples/dipole
+src/DIPOLE: filenames -> commands
+"atom_style dipole"_atom_style.html
+"pair_style lj/cut/dipole/cut"_pair_dipole.html
+"pair_style lj/cut/dipole/long"_pair_dipole.html
+"pair_style lj/long/dipole/long"_pair_dipole.html
+examples/dipole :ul
:line
-GPU package :link(GPU),h5
+GPU package :link(GPU),h4
-Contents: Dozens of pair styles and a version of the PPPM long-range
-Coulombic solver for NVIDIA GPUs. All of them have a "gpu" in their
-style name. "Section 5.3.1"_accelerate_gpu.html gives
+[Contents:]
+
+Dozens of pair styles and a version of the PPPM long-range Coulombic
+solver optimized for NVIDIA GPUs. All such styles have a "gpu" as a
+suffix in their style name. "Section 5.3.1"_accelerate_gpu.html gives
details of what hardware and Cuda software is required on your system,
-and how to build and use this package. See the KOKKOS package, which
-also has GPU-enabled styles.
+and details on how to build and use this package. Its styles can be
+invoked at run time via the "-sf gpu" or "-suffix gpu" "command-line
+switches"_Section_start.html#start_7. See also the "KOKKOS"_#KOKKOS
+package, which has GPU-enabled styles.
-Building LAMMPS with the GPU package requires first building the GPU
-library itself, which is a set of C and Cuda files in lib/gpu.
-Details of how to do this are in lib/gpu/README. As illustrated
-below, perform a "make" using one of the Makefile.machine files in
-lib/gpu which should create a lib/reax/libgpu.a file.
-Makefile.linux.* and Makefile.xk7 are examples for different
-platforms. There are 3 important settings in the Makefile.machine you
-use:
+[Authors:] Mike Brown (Intel) while at Sandia and ORNL and Trung Nguyen
+(Northwestern U) while at ORNL.
+
+[Install or un-install:]
+
+Before building LAMMPS with this package, you must first build the GPU
+library in lib/gpu from a set of provided C and Cuda files. You can
+do this manually if you prefer; follow the instructions in
+lib/gpu/README. You can also do it in one step from the lammps/src
+dir, using a command like these, which simply invoke the
+lib/gpu/Install.py script with the specified args:
+
+make lib-gpu # print help message
+make lib-gpu args="-m" # build GPU library with default Makefile.linux
+make lib-gpu args="-i xk7 -p single -o xk7.single" # create new Makefile.xk7.single, altered for single-precision
+make lib-gpu args="-i xk7 -p single -o xk7.single -m" # ditto, also build GPU library
+
+Note that this procedure starts with one of the existing
+Makefile.machine files in lib/gpu. It allows you to alter 4 important
+settings in that Makefile, via the -h, -a, -p, -e switches,
+and save the new Makefile, if desired:
CUDA_HOME = where NVIDIA Cuda software is installed on your system
-CUDA_ARCH = appropriate to your GPU hardware
-CUDA_PREC = precision (double, mixed, single) you desire :ul
+CUDA_ARCH = what GPU hardware you have (see help message for details)
+CUDA_PRECISION = precision (double, mixed, single)
+EXTRAMAKE = which Makefile.lammps.* file to copy to Makefile.lammps :ul
-See example Makefile.machine files in lib/gpu for the syntax of these
-settings. See lib/gpu/Makefile.linux.double for ARCH settings for
-various NVIDIA GPUs. The "make" also creates a
-lib/gpu/Makefile.lammps file. This file has settings that enable
-LAMMPS to link with Cuda libraries. If the settings in
-Makefile.lammps for your machine are not correct, the LAMMPS link will
-fail. Note that the Make.py script has a "-gpu" option to allow the
-GPU library (with several of its options) and LAMMPS to be built in
-one step, with Type "python src/Make.py -h -gpu" to see the details.
+If the library build is successful, 2 files should be created:
+lib/gpu/libgpu.a and lib/gpu/Makefile.lammps. The latter has settings
+that enable LAMMPS to link with Cuda libraries. If the settings in
+Makefile.lammps for your machine are not correct, the LAMMPS build
+will fail.
-To install via make or Make.py:
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
-cd ~/lammps/lib/gpu
-make -f Makefile.linux.mixed # for example
-cd ~/lammps/src
make yes-gpu
make machine :pre
-Make.py -p gpu -gpu mode=mixed arch=35 -a machine :pre
-
-To un-install via make or Make.py:
-
make no-gpu
make machine :pre
-Make.py -p ^gpu -a machine :pre
+NOTE: If you re-build the GPU library in lib/gpu, you should always
+un-install the GPU package, then re-install it and re-build LAMMPS.
+This is because the compilation of files in the GPU package use the
+library settings from the lib/gpu/Makefile.machine used to build the
+GPU library.
-Supporting info: src/GPU/README, lib/gpu/README,
-"Section 5.3"_Section_accelerate.html#acc_3,
-"Section 5.3.1"_accelerate_gpu.html,
-Pair Styles section of "Section 3.5"_Section_commands.html#cmd_5
-for any pair style listed with a (g),
-"kspace_style"_kspace_style.html, "package gpu"_package.html,
-examples/accelerate, bench/FERMI, bench/KEPLER
+[Supporting info:]
+
+src/GPU: filenames -> commands
+src/GPU/README
+lib/gpu/README
+"Section 5.3"_Section_accelerate.html#acc_3
+"Section 5.3.1"_accelerate_gpu.html
+"Section 2.7 -sf gpu"_Section_start.html#start_7
+"Section 2.7 -pk gpu"_Section_start.html#start_7
+"package gpu"_package.html
+Pair Styles section of "Section 3.5"_Section_commands.html#cmd_5 for pair styles followed by (g)
+"Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
:line
-GRANULAR package :link(GRANULAR),h5
+GRANULAR package :link(GRANULAR),h4
-Contents: Fixes and pair styles that support models of finite-size
-granular particles, which interact with each other and boundaries via
-frictional and dissipative potentials.
+[Contents:]
-To install via make or Make.py:
+Pair styles and fixes for finite-size granular particles, which
+interact with each other and boundaries via frictional and dissipative
+potentials.
+
+[Install or un-install:]
make yes-granular
make machine :pre
-Make.py -p granular -a machine :pre
-
-To un-install via make or Make.py:
-
make no-granular
make machine :pre
-Make.py -p ^granular -a machine :pre
+[Supporting info:]
-Supporting info: "Section 6.6"_Section_howto.html#howto_6, "fix
-pour"_fix_pour.html, "fix wall/gran"_fix_wall_gran.html, "pair_style
-gran/hooke"_pair_gran.html, "pair_style
-gran/hertz/history"_pair_gran.html, examples/pour, bench/in.chute
+src/GRANULAR: filenames -> commands
+"Section 6.6"_Section_howto.html#howto_6,
+"fix pour"_fix_pour.html
+"fix wall/gran"_fix_wall_gran.html
+"pair_style gran/hooke"_pair_gran.html
+"pair_style gran/hertz/history"_pair_gran.html
+examples/granregion
+examples/pour
+bench/in.chute
+http://lammps.sandia.gov/pictures.html#jamming
+http://lammps.sandia.gov/movies.html#hopper
+http://lammps.sandia.gov/movies.html#dem
+http://lammps.sandia.gov/movies.html#brazil
+http://lammps.sandia.gov/movies.html#granregion :ul
:line
-KIM package :link(KIM),h5
+KIM package :link(KIM),h4
-Contents: A pair style that interfaces to the Knowledge Base for
-Interatomic Models (KIM) repository of interatomic potentials, so that
-KIM potentials can be used in a LAMMPS simulation.
+[Contents:]
-To build LAMMPS with the KIM package you must have previously
-installed the KIM API (library) on your system. The lib/kim/README
-file explains how to download and install KIM. Building with the KIM
-package also uses the lib/kim/Makefile.lammps file in the compile/link
-process. You should not need to edit this file.
+A "pair_style kim"_pair_kim.html command which is a wrapper on the
+Knowledge Base for Interatomic Models (KIM) repository of interatomic
+potentials, enabling any of them to be used in LAMMPS simulations.
-To install via make or Make.py:
+To use this package you must have the KIM library available on your
+system.
+
+Information about the KIM project can be found at its website:
+https://openkim.org. The KIM project is led by Ellad Tadmor and Ryan
+Elliott (U Minnesota) and James Sethna (Cornell U).
+
+[Authors:] Ryan Elliott (U Minnesota) is the main developer for the KIM
+API which the "pair_style kim"_pair_kim.html command uses. He
+developed the pair style in collaboration with Valeriu Smirichinski (U
+Minnesota).
+
+[Install or un-install:]
+
+Using this package requires the KIM library and its models
+(interatomic potentials) to be downloaded and installed on your
+system. The library can be downloaded and built in lib/kim or
+elsewhere on your system. Details of the download, build, and install
+process for KIM are given in the lib/kim/README file.
+
+Once that process is complete, you can then install/un-install the
+package and build LAMMPS in the usual manner:
make yes-kim
make machine :pre
-Make.py -p kim -a machine :pre
-
-To un-install via make or Make.py:
-
make no-kim
make machine :pre
-Make.py -p ^kim -a machine :pre
+[Supporting info:]
-Supporting info: src/KIM/README, lib/kim/README, "pair_style
-kim"_pair_kim.html, examples/kim
+src/KIM: filenames -> commands
+src/KIM/README
+lib/kim/README
+"pair_style kim"_pair_kim.html
+examples/kim :ul
:line
-KOKKOS package :link(KOKKOS),h5
+KOKKOS package :link(KOKKOS),h4
-Contents: Dozens of atom, pair, bond, angle, dihedral, improper styles
-which run with the Kokkos library to provide optimization for
-multicore CPUs (via OpenMP), NVIDIA GPUs, or the Intel Xeon Phi (in
-native mode). All of them have a "kk" in their style name. "Section
-5.3.3"_accelerate_kokkos.html gives details of what
-hardware and software is required on your system, and how to build and
-use this package. See the GPU, OPT, USER-INTEL, USER-OMP packages,
-which also provide optimizations for the same range of hardware.
+[Contents:]
-Building with the KOKKOS package requires choosing which of 3 hardware
-options you are optimizing for: CPU acceleration via OpenMP, GPU
-acceleration, or Intel Xeon Phi. (You can build multiple times to
-create LAMMPS executables for different hardware.) It also requires a
-C++11 compatible compiler. For GPUs, the NVIDIA "nvcc" compiler is
-used, and an appropriate KOKKOS_ARCH setting should be made in your
-Makefile.machine for your GPU hardware and NVIDIA software.
+Dozens of atom, pair, bond, angle, dihedral, improper, fix, compute
+styles adapted to compile using the Kokkos library which can convert
+them to OpenMP or Cuda code so that they run efficiently on multicore
+CPUs, KNLs, or GPUs. All the styles have a "kk" as a suffix in their
+style name. "Section 5.3.3"_accelerate_kokkos.html gives details of
+what hardware and software is required on your system, and how to
+build and use this package. Its styles can be invoked at run time via
+the "-sf kk" or "-suffix kk" "command-line
+switches"_Section_start.html#start_7. Also see the "GPU"_#GPU,
+"OPT"_#OPT, "USER-INTEL"_#USER-INTEL, and "USER-OMP"_#USER_OMP
+packages, which have styles optimized for CPUs, KNLs, and GPUs.
-The simplest way to do this is to use Makefile.kokkos_cuda or
-Makefile.kokkos_omp or Makefile.kokkos_phi in src/MAKE/OPTIONS, via
-"make kokkos_cuda" or "make kokkos_omp" or "make kokkos_phi". (Check
-the KOKKOS_ARCH setting in Makefile.kokkos_cuda), Or, as illustrated
-below, you can use the Make.py script with its "-kokkos" option to
-choose which hardware to build for. Type "python src/Make.py -h
--kokkos" to see the details. If these methods do not work on your
-system, you will need to read the "Section 5.3.3"_accelerate_kokkos.html
-doc page for details of what Makefile.machine settings are needed.
+You must have a C++11 compatible compiler to use this package.
-To install via make or Make.py for each of 3 hardware options:
+[Authors:] The KOKKOS package was created primarily by Christian Trott
+and Stan Moore (Sandia), with contributions from other folks as well.
+It uses the open-source "Kokkos library"_https://github.com/kokkos
+which was developed by Carter Edwards, Christian Trott, and others at
+Sandia, and which is included in the LAMMPS distribution in
+lib/kokkos.
+
+[Install or un-install:]
+
+For the KOKKOS package, you have 3 choices when building. You can
+build with either CPU or KNL or GPU support. Each choice requires
+additional settings in your Makefile.machine for the KOKKOS_DEVICES
+and KOKKOS_ARCH settings. See the src/MAKE/OPTIONS/Makefile.kokkos*
+files for examples.
+
+For multicore CPUs using OpenMP:
+
+KOKKOS_DEVICES = OpenMP
+KOKKOS_ARCH = HSW # HSW = Haswell, SNB = SandyBridge, BDW = Broadwell, etc
+
+For Intel KNLs using OpenMP:
+
+KOKKOS_DEVICES = OpenMP
+KOKKOS_ARCH = KNL
+
+For NVIDIA GPUs using Cuda:
+
+KOKKOS_DEVICES = Cuda
+KOKKOS_ARCH = Pascal60,Power8 # P100 hosted by an IBM Power8, etc
+KOKKOS_ARCH = Kepler37,Power8 # K80 hosted by an IBM Power8, etc
+
+For GPUs, you also need these 2 lines in your Makefile.machine before
+the CC line is defined, in this case for use with OpenMPI mpicxx. The
+2 lines define a nvcc wrapper compiler, which will use nvcc for
+compiling Cuda files or use a C++ compiler for non-Kokkos, non-Cuda
+files.
+
+KOKKOS_ABSOLUTE_PATH = $(shell cd $(KOKKOS_PATH); pwd)
+export OMPI_CXX = $(KOKKOS_ABSOLUTE_PATH)/config/nvcc_wrapper
+CC = mpicxx
+
+Once you have an appropriate Makefile.machine, you can
+install/un-install the package and build LAMMPS in the usual manner.
+Note that you cannot build one executable to run on multiple hardware
+targets (CPU or KNL or GPU). You need to build LAMMPS once for each
+hardware target, to produce a separate executable. Also note that we
+do not recommend building with other acceleration packages installed
+(GPU, OPT, USER-INTEL, USER-OMP) when also building with KOKKOS.
make yes-kokkos
-make kokkos_omp # for CPUs with OpenMP
-make kokkos_cuda # for GPUs, check the KOKKOS_ARCH setting in Makefile.kokkos_cuda
-make kokkos_phi # for Xeon Phis :pre
-
-Make.py -p kokkos -kokkos omp -a machine # for CPUs with OpenMP
-Make.py -p kokkos -kokkos cuda arch=35 -a machine # for GPUs of style arch
-Make.py -p kokkos -kokkos phi -a machine # for Xeon Phis
-
-To un-install via make or Make.py:
-
+make machine :pre
+
make no-kokkos
make machine :pre
-Make.py -p ^kokkos -a machine :pre
+[Supporting info:]
-Supporting info: src/KOKKOS/README, lib/kokkos/README,
-"Section 5.3"_Section_accelerate.html#acc_3,
-"Section 5.3.3"_accelerate_kokkos.html,
-Pair Styles section of "Section 3.5"_Section_commands.html#cmd_5
-for any pair style listed with a (k), "package kokkos"_package.html,
-examples/accelerate, bench/FERMI, bench/KEPLER
+src/KOKKOS: filenames -> commands
+src/KOKKOS/README
+lib/kokkos/README
+"Section 5.3"_Section_accelerate.html#acc_3
+"Section 5.3.3"_accelerate_kokkos.html
+"Section 2.7 -k on ..."_Section_start.html#start_7
+"Section 2.7 -sf kk"_Section_start.html#start_7
+"Section 2.7 -pk kokkos"_Section_start.html#start_7
+"package kokkos"_package.html
+Styles sections of "Section 3.5"_Section_commands.html#cmd_5 for styles followed by (k)
+"Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
:line
-KSPACE package :link(KSPACE),h5
+KSPACE package :link(KSPACE),h4
-Contents: A variety of long-range Coulombic solvers, and pair styles
-which compute the corresponding short-range portion of the pairwise
-Coulombic interactions. These include Ewald, particle-particle
-particle-mesh (PPPM), and multilevel summation method (MSM) solvers.
+[Contents:]
-Building with the KSPACE package requires a 1d FFT library be present
-on your system for use by the PPPM solvers. This can be the KISS FFT
-library provided with LAMMPS, or 3rd party libraries like FFTW or a
+A variety of long-range Coulombic solvers, as well as pair styles
+which compute the corresponding short-range pairwise Coulombic
+interactions. These include Ewald, particle-particle particle-mesh
+(PPPM), and multilevel summation method (MSM) solvers.
+
+[Install or un-install:]
+
+Building with this package requires a 1d FFT library be present on
+your system for use by the PPPM solvers. This can be the KISS FFT
+library provided with LAMMPS, 3rd party libraries like FFTW, or a
vendor-supplied FFT library. See step 6 of "Section
-2.2.2"_Section_start.html#start_2_2 of the manual for details of how
-to select different FFT options in your machine Makefile. The Make.py
-tool has an "-fft" option which can insert these settings into your
-machine Makefile automatically. Type "python src/Make.py -h -fft" to
-see the details.
-
-To install via make or Make.py:
+2.2.2"_Section_start.html#start_2_2 of the manual for details on how
+to select different FFT options in your machine Makefile.
make yes-kspace
make machine :pre
-Make.py -p kspace -a machine :pre
-
-To un-install via make or Make.py:
-
make no-kspace
make machine :pre
-Make.py -p ^kspace -a machine :pre
+[Supporting info:]
-Supporting info: "kspace_style"_kspace_style.html,
-"doc/PDF/kspace.pdf"_PDF/kspace.pdf,
-"Section 6.7"_Section_howto.html#howto_7,
-"Section 6.8"_Section_howto.html#howto_8,
-"Section 6.9"_Section_howto.html#howto_9,
-"pair_style coul"_pair_coul.html, other pair style command doc pages
-which have "long" or "msm" in their style name,
-examples/peptide, bench/in.rhodo
+src/KSPACE: filenames -> commands
+"kspace_style"_kspace_style.html
+"doc/PDF/kspace.pdf"_PDF/kspace.pdf
+"Section 6.7"_Section_howto.html#howto_7
+"Section 6.8"_Section_howto.html#howto_8
+"Section 6.9"_Section_howto.html#howto_9
+"pair_style coul"_pair_coul.html
+Pair Styles section of "Section 3.5"_Section_commands.html#cmd_5 with "long" or "msm" in pair style name
+examples/peptide
+bench/in.rhodo :ul
:line
-MANYBODY package :link(MANYBODY),h5
+MANYBODY package :link(MANYBODY),h4
-Contents: A variety of many-body and bond-order potentials. These
-include (AI)REBO, EAM, EIM, BOP, Stillinger-Weber, and Tersoff
-potentials. Do a directory listing, "ls src/MANYBODY", to see
-the full list.
+[Contents:]
-To install via make or Make.py:
+A variety of manybody and bond-order potentials. These include
+(AI)REBO, BOP, EAM, EIM, Stillinger-Weber, and Tersoff potentials.
+
+[Install or un-install:]
make yes-manybody
make machine :pre
-Make.py -p manybody -a machine :pre
-
-To un-install via make or Make.py:
-
make no-manybody
make machine :pre
-Make.py -p ^manybody -a machine :pre
+[Supporting info:]
-Supporting info:
-
-Examples: Pair Styles section of "Section
-3.5"_Section_commands.html#cmd_5, examples/comb, examples/eim,
-examples/nb3d, examples/vashishta
+src/MANYBODY: filenames -> commands
+Pair Styles section of "Section 3.5"_Section_commands.html#cmd_5
+examples/comb
+examples/eim
+examples/nb3d
+examples/shear
+examples/streitz
+examples/vashishta
+bench/in.eam :ul
:line
-MC package :link(MC),h5
+MC package :link(MC),h4
-Contents: Several fixes and a pair style that have Monte Carlo (MC) or
-MC-like attributes. These include fixes for creating, breaking, and
-swapping bonds, and for performing atomic swaps and grand-canonical MC
-in conjuction with dynamics.
+[Contents:]
-To install via make or Make.py:
+Several fixes and a pair style that have Monte Carlo (MC) or MC-like
+attributes. These include fixes for creating, breaking, and swapping
+bonds, for performing atomic swaps, and performing grand-canonical MC
+(GCMC) in conjuction with dynamics.
+
+[Install or un-install:]
make yes-mc
make machine :pre
-Make.py -p mc -a machine :pre
-
-To un-install via make or Make.py:
-
make no-mc
make machine :pre
-Make.py -p ^mc -a machine :pre
+[Supporting info:]
-Supporting info: "fix atom/swap"_fix_atom_swap.html, "fix
-bond/break"_fix_bond_break.html, "fix
-bond/create"_fix_bond_create.html, "fix bond/swap"_fix_bond_swap.html,
-"fix gcmc"_fix_gcmc.html, "pair_style dsmc"_pair_dsmc.html
+src/MC: filenames -> commands
+"fix atom/swap"_fix_atom_swap.html
+"fix bond/break"_fix_bond_break.html
+"fix bond/create"_fix_bond_create.html
+"fix bond/swap"_fix_bond_swap.html
+"fix gcmc"_fix_gcmc.html
+"pair_style dsmc"_pair_dsmc.html
+http://lammps.sandia.gov/movies.html#gcmc :ul
:line
-MEAM package :link(MEAM),h5
+MEAM package :link(MEAM),h4
-Contents: A pair style for the modified embedded atom (MEAM)
-potential.
+[Contents:]
-Building LAMMPS with the MEAM package requires first building the MEAM
-library itself, which is a set of Fortran 95 files in lib/meam.
-Details of how to do this are in lib/meam/README. As illustrated
-below, perform a "make" using one of the Makefile.machine files in
-lib/meam which should create a lib/meam/libmeam.a file.
-Makefile.gfortran and Makefile.ifort are examples for the GNU Fortran
-and Intel Fortran compilers. The "make" also copies a
-lib/meam/Makefile.lammps.machine file to lib/meam/Makefile.lammps.
-This file has settings that enable the C++ compiler used to build
-LAMMPS to link with a Fortran library (typically the 2 compilers to be
-consistent e.g. both Intel compilers, or both GNU compilers). If the
-settings in Makefile.lammps for your compilers and machine are not
-correct, the LAMMPS link will fail. Note that the Make.py script has
-a "-meam" option to allow the MEAM library and LAMMPS to be built in
-one step. Type "python src/Make.py -h -meam" to see the details.
+A pair style for the modified embedded atom (MEAM) potential.
-NOTE: The MEAM potential can run dramatically faster if built with the
-Intel Fortran compiler, rather than the GNU Fortran compiler.
+[Author:] Greg Wagner (Northwestern U) while at Sandia.
-To install via make or Make.py:
+[Install or un-install:]
+
+Before building LAMMPS with this package, you must first build the
+MEAM library in lib/meam. You can do this manually if you prefer;
+follow the instructions in lib/meam/README. You can also do it in one
+step from the lammps/src dir, using a command like these, which simply
+invoke the lib/meam/Install.py script with the specified args:
+
+make lib-meam # print help message
+make lib-meam args="-m gfortran" # build with GNU Fortran compiler
+make lib-meam args="-m ifort" # build with Intel ifort compiler :pre
+
+The build should produce two files: lib/meam/libmeam.a and
+lib/meam/Makefile.lammps. The latter is copied from an existing
+Makefile.lammps.* and has settings needed to link C++ (LAMMPS) with
+Fortran (MEAM library). Typically the two compilers used for LAMMPS
+and the MEAM library need to be consistent (e.g. both Intel or both
+GNU compilers). If necessary, you can edit/create a new
+lib/meam/Makefile.machine file for your system, which should define an
+EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
+file.
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
-cd ~/lammps/lib/meam
-make -f Makefile.gfortran # for example
-cd ~/lammps/src
make yes-meam
make machine :pre
-Make.py -p meam -meam make=gfortran -a machine :pre
-
-To un-install via make or Make.py:
-
make no-meam
make machine :pre
-Make.py -p ^meam -a machine :pre
+NOTE: You should test building the MEAM library with both the Intel
+and GNU compilers to see if a simulation runs faster with one versus
+the other on your system.
-Supporting info: lib/meam/README, "pair_style meam"_pair_meam.html,
-examples/meam
+[Supporting info:]
+
+src/MEAM: filenames -> commands
+src/meam/README
+lib/meam/README
+"pair_style meam"_pair_meam.html
+examples/meam :ul
:line
-MISC package :link(MISC),h5
+MISC package :link(MISC),h4
-Contents: A variety of computes, fixes, and pair styles that are not
-commonly used, but don't align with other packages. Do a directory
+[Contents:]
+
+A variety of compute, fix, pair, dump styles with specialized
+capabilities that don't align with other packages. Do a directory
listing, "ls src/MISC", to see the list of commands.
-To install via make or Make.py:
+[Install or un-install:]
make yes-misc
make machine :pre
-Make.py -p misc -a machine :pre
-
-To un-install via make or Make.py:
-
make no-misc
make machine :pre
-Make.py -p ^misc -a machine :pre
+[Supporting info:]
-Supporting info: "compute ti"_compute_ti.html, "fix
-evaporate"_fix_evaporate.html, "fix tmm"_fix_ttm.html, "fix
-viscosity"_fix_viscosity.html, examples/misc
+src/MISC: filenames -> commands
+"compute ti"_compute_ti.html
+"fix evaporate"_fix_evaporate.html
+"fix orient/fcc"_fix_orient.html
+"fix ttm"_fix_ttm.html
+"fix thermal/conductivity"_fix_thermal_conductivity.html
+"fix viscosity"_fix_viscosity.html
+examples/KAPPA
+examples/VISCOSITY
+http://lammps.sandia.gov/pictures.html#ttm
+http://lammps.sandia.gov/movies.html#evaporation :ul
:line
-MOLECULE package :link(MOLECULE),h5
+MOLECULE package :link(MOLECULE),h4
-Contents: A large number of atom, pair, bond, angle, dihedral,
-improper styles that are used to model molecular systems with fixed
-covalent bonds. The pair styles include terms for the Dreiding
-(hydrogen-bonding) and CHARMM force fields, and TIP4P water model.
+[Contents:]
-To install via make or Make.py:
+A large number of atom, pair, bond, angle, dihedral, improper styles
+that are used to model molecular systems with fixed covalent bonds.
+The pair styles include the Dreiding (hydrogen-bonding) and CHARMM
+force fields, and a TIP4P water model.
+
+[Install or un-install:]
make yes-molecule
make machine :pre
-Make.py -p molecule -a machine :pre
-
-To un-install via make or Make.py:
-
make no-molecule
make machine :pre
-Make.py -p ^molecule -a machine :pre
+[Supporting info:]
-Supporting info:"atom_style"_atom_style.html,
-"bond_style"_bond_style.html, "angle_style"_angle_style.html,
-"dihedral_style"_dihedral_style.html,
-"improper_style"_improper_style.html, "pair_style
-hbond/dreiding/lj"_pair_hbond_dreiding.html, "pair_style
-lj/charmm/coul/charmm"_pair_charmm.html,
-"Section 6.3"_Section_howto.html#howto_3,
-examples/micelle, examples/peptide, bench/in.chain, bench/in.rhodo
+src/MOLECULE: filenames -> commands
+"atom_style"_atom_style.html
+"bond_style"_bond_style.html
+"angle_style"_angle_style.html
+"dihedral_style"_dihedral_style.html
+"improper_style"_improper_style.html
+"pair_style hbond/dreiding/lj"_pair_hbond_dreiding.html
+"pair_style lj/charmm/coul/charmm"_pair_charmm.html
+"Section 6.3"_Section_howto.html#howto_3
+examples/cmap
+examples/dreiding
+examples/micelle,
+examples/peptide
+bench/in.chain
+bench/in.rhodo :ul
:line
-MPIIO package :link(MPIIO),h5
+MPIIO package :link(MPIIO),h4
-Contents: Support for parallel output/input of dump and restart files
-via the MPIIO library, which is part of the standard message-passing
-interface (MPI) library. It adds "dump styles"_dump.html with a
-"mpiio" in their style name. Restart files with an ".mpiio" suffix
-are also written and read in parallel.
+[Contents:]
-To install via make or Make.py:
+Support for parallel output/input of dump and restart files via the
+MPIIO library. It adds "dump styles"_dump.html with a "mpiio" in
+their style name. Restart files with an ".mpiio" suffix are also
+written and read in parallel.
+[Install or un-install:]
+
+Note that MPIIO is part of the standard message-passing interface
+(MPI) library, so you should not need any additional compiler or link
+settings, beyond what LAMMPS normally uses for MPI on your system.
+
make yes-mpiio
make machine :pre
-
-Make.py -p mpiio -a machine :pre
-
-To un-install via make or Make.py:
-
+
make no-mpiio
make machine :pre
+
+[Supporting info:]
-Make.py -p ^mpiio -a machine :pre
-
-Supporting info: "dump"_dump.html, "restart"_restart.html,
-"write_restart"_write_restart.html, "read_restart"_read_restart.html
+src/MPIIO: filenames -> commands
+"dump"_dump.html
+"restart"_restart.html
+"write_restart"_write_restart.html
+"read_restart"_read_restart.html :ul
:line
+
+MSCG package :link(MSCG),h4
-OPT package :link(OPT),h5
+[Contents:]
-Contents: A handful of pair styles with an "opt" in their style name
-which are optimized for improved CPU performance on single or multiple
-cores. These include EAM, LJ, CHARMM, and Morse potentials. "Section
-5.3.5"_accelerate_opt.html gives details of how to build and
-use this package. See the KOKKOS, USER-INTEL, and USER-OMP packages,
-which also have styles optimized for CPU performance.
+A "fix mscg"_fix_mscg.html command which can parameterize a
+Mulit-Scale Coarse-Graining (MSCG) model using the open-source "MS-CG
+library"_mscg.
-Some C++ compilers, like the Intel compiler, require the compile flag
-"-restrict" to build LAMMPS with the OPT package. It should be added
-to the CCFLAGS line of your Makefile.machine. Or use Makefile.opt in
-src/MAKE/OPTIONS, via "make opt". For compilers that use the flag,
-the Make.py command adds it automatically to the Makefile.auto file it
-creates and uses.
+:link(mscg,https://github.com/uchicago-voth/MSCG-release)
-To install via make or Make.py:
+To use this package you must have the MS-CG library available on your
+system.
+
+[Authors:] The fix was written by Lauren Abbott (Sandia). The MS-CG
+library was developed by Jacob Wagner in Greg Voth's group at the
+University of Chicago.
+
+[Install or un-install:]
+
+Before building LAMMPS with this package, you must first download and
+build the MS-CG library. Building the MS-CG library and using it from
+LAMMPS requires a C++11 compatible compiler, and that LAPACK and GSL
+(GNU Scientific Library) libraries be installed on your machine. See
+the lib/mscg/README and MSCG/Install files for more details.
+
+Assuming these libraries are in place, you can do the download and
+build of MS-CG manually if you prefer; follow the instructions in
+lib/mscg/README. You can also do it in one step from the lammps/src
+dir, using a command like these, which simply invoke the
+lib/mscg/Install.py script with the specified args:
+
+make lib-mscg # print help message
+make lib-mscg args="-g -b -l" # download and build in default lib/mscg/MSCG-release-master
+make lib-mscg args="-h . MSCG -g -b -l" # download and build in lib/mscg/MSCG
+make lib-mscg args="-h ~ MSCG -g -b -l" # download and build in ~/mscg :pre
+
+Note that the final -l switch is to create 2 symbolic (soft) links,
+"includelink" and "liblink", in lib/mscg to point to the MS-CG src
+dir. When LAMMPS builds it will use these links. You should not need
+to edit the lib/mscg/Makefile.lammps file.
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
+
+make yes-mscg
+make machine :pre
+
+make no-mscg
+make machine :pre
+
+[Supporting info:]
+
+src/MSCG: filenames -> commands
+src/MSCG/README
+lib/mscg/README
+examples/mscg :ul
+
+:line
+
+OPT package :link(OPT),h4
+
+[Contents:]
+
+A handful of pair styles which are optimized for improved CPU
+performance on single or multiple cores. These include EAM, LJ,
+CHARMM, and Morse potentials. The styles have an "opt" suffix in
+their style name. "Section 5.3.5"_accelerate_opt.html gives details
+of how to build and use this package. Its styles can be invoked at
+run time via the "-sf opt" or "-suffix opt" "command-line
+switches"_Section_start.html#start_7. See also the "KOKKOS"_#KOKKOS,
+"USER-INTEL"_#USER-INTEL, and "USER-OMP"_#USER-OMP packages, which
+have styles optimized for CPU performance.
+
+[Authors:] James Fischer (High Performance Technologies), David Richie,
+and Vincent Natoli (Stone Ridge Technolgy).
+
+[Install or un-install:]
make yes-opt
make machine :pre
-Make.py -p opt -a machine :pre
-
-To un-install via make or Make.py:
-
make no-opt
make machine :pre
-Make.py -p ^opt -a machine :pre
+NOTE: The compile flag "-restrict" must be used to build LAMMPS with
+the OPT package. It should be added to the CCFLAGS line of your
+Makefile.machine. See Makefile.opt in src/MAKE/OPTIONS for an
+example.
-Supporting info: "Section 5.3"_Section_accelerate.html#acc_3,
-"Section 5.3.5"_accelerate_opt.html, Pair Styles section of
-"Section 3.5"_Section_commands.html#cmd_5 for any pair style
-listed with an (t), examples/accelerate, bench/KEPLER
+CCFLAGS: add -restrict :ul
+
+[Supporting info:]
+
+src/OPT: filenames -> commands
+"Section 5.3"_Section_accelerate.html#acc_3
+"Section 5.3.5"_accelerate_opt.html
+"Section 2.7 -sf opt"_Section_start.html#start_7
+Pair Styles section of "Section 3.5"_Section_commands.html#cmd_5 for pair styles followed by (t)
+"Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
:line
-PERI package :link(PERI),h5
+PERI package :link(PERI),h4
-Contents: Support for the Peridynamics method, a particle-based
-meshless continuum model. The package includes an atom style, several
-computes which calculate diagnostics, and several Peridynamic pair
-styles which implement different materials models.
+[Contents:]
-To install via make or Make.py:
+An atom style, several pair styles which implement different
+Peridynamics materials models, and several computes which calculate
+diagnostics. Peridynamics is a a particle-based meshless continuum
+model.
+
+[Authors:] The original package was created by Mike Parks (Sandia).
+Additional Peridynamics models were added by Rezwanur Rahman and John
+Foster (UTSA).
+
+[Install or un-install:]
make yes-peri
make machine :pre
-Make.py -p peri -a machine :pre
-
-To un-install via make or Make.py:
-
make no-peri
make machine :pre
-Make.py -p ^peri -a machine :pre
+[Supporting info:]
-Supporting info:
-"doc/PDF/PDLammps_overview.pdf"_PDF/PDLammps_overview.pdf,
-"doc/PDF/PDLammps_EPS.pdf"_PDF/PDLammps_EPS.pdf,
-"doc/PDF/PDLammps_VES.pdf"_PDF/PDLammps_VES.pdf, "atom_style
-peri"_atom_style.html, "compute damage/atom"_compute_damage_atom.html,
-"pair_style peri/pmb"_pair_peri.html, examples/peri
+src/PERI: filenames -> commands
+"doc/PDF/PDLammps_overview.pdf"_PDF/PDLammps_overview.pdf
+"doc/PDF/PDLammps_EPS.pdf"_PDF/PDLammps_EPS.pdf
+"doc/PDF/PDLammps_VES.pdf"_PDF/PDLammps_VES.pdf
+"atom_style peri"_atom_style.html
+"pair_style peri/*"_pair_peri.html
+"compute damage/atom"_compute_damage_atom.html
+"compute plasticity/atom"_compute_plasticity_atom.html
+examples/peri
+http://lammps.sandia.gov/movies.html#peri :ul
:line
-POEMS package :link(POEMS),h5
+POEMS package :link(POEMS),h4
-Contents: A fix that wraps the Parallelizable Open source Efficient
-Multibody Software (POEMS) librar, which is able to simulate the
-dynamics of articulated body systems. These are systems with multiple
-rigid bodies (collections of atoms or particles) whose motion is
-coupled by connections at hinge points.
+[Contents:]
-Building LAMMPS with the POEMS package requires first building the
-POEMS library itself, which is a set of C++ files in lib/poems.
-Details of how to do this are in lib/poems/README. As illustrated
-below, perform a "make" using one of the Makefile.machine files in
-lib/poems which should create a lib/meam/libpoems.a file.
-Makefile.g++ and Makefile.icc are examples for the GNU and Intel C++
-compilers. The "make" also creates a lib/poems/Makefile.lammps file
-which you should not need to change. Note the Make.py script has a
-"-poems" option to allow the POEMS library and LAMMPS to be built in
-one step. Type "python src/Make.py -h -poems" to see the details.
+A fix that wraps the Parallelizable Open source Efficient Multibody
+Software (POEMS) library, which is able to simulate the dynamics of
+articulated body systems. These are systems with multiple rigid
+bodies (collections of particles) whose motion is coupled by
+connections at hinge points.
-To install via make or Make.py:
+[Author:] Rudra Mukherjee (JPL) while at RPI.
+
+[Install or un-install:]
+
+Before building LAMMPS with this package, you must first build the
+POEMS library in lib/poems. You can do this manually if you prefer;
+follow the instructions in lib/poems/README. You can also do it in
+one step from the lammps/src dir, using a command like these, which
+simply invoke the lib/poems/Install.py script with the specified args:
+
+make lib-poems # print help message
+make lib-poems args="-m g++" # build with GNU g++ compiler
+make lib-poems args="-m icc" # build with Intel icc compiler :pre
+
+The build should produce two files: lib/poems/libpoems.a and
+lib/poems/Makefile.lammps. The latter is copied from an existing
+Makefile.lammps.* and has settings needed to build LAMMPS with the
+POEMS library (though typically the settings are just blank). If
+necessary, you can edit/create a new lib/poems/Makefile.machine file
+for your system, which should define an EXTRAMAKE variable to specify
+a corresponding Makefile.lammps.machine file.
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
-cd ~/lammps/lib/poems
-make -f Makefile.g++ # for example
-cd ~/lammps/src
make yes-poems
make machine :pre
-Make.py -p poems -poems make=g++ -a machine :pre
-
-To un-install via make or Make.py:
-
make no-meam
make machine :pre
-Make.py -p ^meam -a machine :pre
+[Supporting info:]
-Supporting info: src/POEMS/README, lib/poems/README,
-"fix poems"_fix_poems.html, examples/rigid
+src/POEMS: filenames -> commands
+src/POEMS/README
+lib/poems/README
+"fix poems"_fix_poems.html
+examples/rigid :ul
:line
-PYTHON package :link(PYTHON),h5
+PYTHON package :link(PYTHON),h4
-Contents: A "python"_python.html command which allow you to execute
-Python code from a LAMMPS input script. The code can be in a separate
-file or embedded in the input script itself. See "Section
+[Contents:]
+
+A "python"_python.html command which allow you to execute Python code
+from a LAMMPS input script. The code can be in a separate file or
+embedded in the input script itself. See "Section
11.2"_Section_python.html#py_2 for an overview of using Python from
-LAMMPS and for other ways to use LAMMPS and Python together.
+LAMMPS in this manner and the entire section for other ways to use
+LAMMPS and Python together.
-Building with the PYTHON package assumes you have a Python shared
-library available on your system, which needs to be a Python 2
-version, 2.6 or later. Python 3 is not yet supported. The build uses
-the contents of the lib/python/Makefile.lammps file to find all the Python
-files required in the build/link process. See the lib/python/README
-file if the settings in that file do not work on your system. Note
-that the Make.py script has a "-python" option to allow an alternate
-lib/python/Makefile.lammps file to be specified and LAMMPS to be built
-in one step. Type "python src/Make.py -h -python" to see the details.
-
-To install via make or Make.py:
+[Install or un-install:]
make yes-python
make machine :pre
-Make.py -p python -a machine :pre
-
-To un-install via make or Make.py:
-
make no-python
make machine :pre
-Make.py -p ^python -a machine :pre
+NOTE: Building with the PYTHON package assumes you have a Python
+shared library available on your system, which needs to be a Python 2
+version, 2.6 or later. Python 3 is not yet supported. See the
+lib/python/README for more details. Note that the build uses the
+lib/python/Makefile.lammps file in the compile/link process. You
+should only need to create a new Makefile.lammps.* file (and copy it
+to Makefile.lammps) if the LAMMPS build fails.
-Supporting info: examples/python
+[Supporting info:]
+
+src/PYTHON: filenames -> commands
+"Section 11"_Section_python.html
+lib/python/README
+examples/python :ul
:line
-QEQ package :link(QEQ),h5
+QEQ package :link(QEQ),h4
-Contents: Several fixes for performing charge equilibration (QEq) via
-severeal different algorithms. These can be used with pair styles
-that use QEq as part of their formulation.
+[Contents:]
-To install via make or Make.py:
+Several fixes for performing charge equilibration (QEq) via different
+algorithms. These can be used with pair styles that perform QEq as
+part of their formulation.
+
+[Install or un-install:]
make yes-qeq
make machine :pre
-Make.py -p qeq -a machine :pre
-
-To un-install via make or Make.py:
-
make no-qeq
make machine :pre
-Make.py -p ^qeq -a machine :pre
+[Supporting info:]
-Supporting info: "fix qeq/*"_fix_qeq.html, examples/qeq
+src/QEQ: filenames -> commands
+"fix qeq/*"_fix_qeq.html
+examples/qeq
+examples/streitz :ul
:line
-REAX package :link(REAX),h5
+REAX package :link(REAX),h4
-Contents: A pair style for the ReaxFF potential, a universal reactive
-force field, as well as a "fix reax/bonds"_fix_reax_bonds.html command
-for monitoring molecules as bonds are created and destroyed.
+[Contents:]
-Building LAMMPS with the REAX package requires first building the REAX
-library itself, which is a set of Fortran 95 files in lib/reax.
-Details of how to do this are in lib/reax/README. As illustrated
-below, perform a "make" using one of the Makefile.machine files in
-lib/reax which should create a lib/reax/libreax.a file.
-Makefile.gfortran and Makefile.ifort are examples for the GNU Fortran
-and Intel Fortran compilers. The "make" also copies a
-lib/reax/Makefile.lammps.machine file to lib/reax/Makefile.lammps.
-This file has settings that enable the C++ compiler used to build
-LAMMPS to link with a Fortran library (typically the 2 compilers to be
-consistent e.g. both Intel compilers, or both GNU compilers). If the
-settings in Makefile.lammps for your compilers and machine are not
-correct, the LAMMPS link will fail. Note that the Make.py script has
-a "-reax" option to allow the REAX library and LAMMPS to be built in
-one step. Type "python src/Make.py -h -reax" to see the details.
+A pair style which wraps a Fortran library which implements the ReaxFF
+potential, which is a universal reactive force field. See the
+"USER-REAXC package"_#USER-REAXC for an alternate implementation in
+C/C++. Also a "fix reax/bonds"_fix_reax_bonds.html command for
+monitoring molecules as bonds are created and destroyed.
-To install via make or Make.py:
+[Author:] Aidan Thompson (Sandia).
+
+[Install or un-install:]
+
+Before building LAMMPS with this package, you must first build the
+REAX library in lib/reax. You can do this manually if you prefer;
+follow the instructions in lib/reax/README. You can also do it in one
+step from the lammps/src dir, using a command like these, which simply
+invoke the lib/reax/Install.py script with the specified args:
+
+make lib-reax # print help message
+make lib-reax args="-m gfortran" # build with GNU Fortran compiler
+make lib-reax args="-m ifort" # build with Intel ifort compiler :pre
+
+The build should produce two files: lib/reax/libreax.a and
+lib/reax/Makefile.lammps. The latter is copied from an existing
+Makefile.lammps.* and has settings needed to link C++ (LAMMPS) with
+Fortran (REAX library). Typically the two compilers used for LAMMPS
+and the REAX library need to be consistent (e.g. both Intel or both
+GNU compilers). If necessary, you can edit/create a new
+lib/reax/Makefile.machine file for your system, which should define an
+EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
+file.
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
-cd ~/lammps/lib/reax
-make -f Makefile.gfortran # for example
-cd ~/lammps/src
make yes-reax
make machine :pre
-Make.py -p reax -reax make=gfortran -a machine :pre
-
-To un-install via make or Make.py:
-
make no-reax
make machine :pre
-Make.py -p ^reax -a machine :pre
+[Supporting info:]
-Supporting info: lib/reax/README, "pair_style reax"_pair_reax.html,
-"fix reax/bonds"_fix_reax_bonds.html, examples/reax
+src/REAX: filenames -> commands
+lib/reax/README
+"pair_style reax"_pair_reax.html
+"fix reax/bonds"_fix_reax_bonds.html
+examples/reax :ul
:line
-REPLICA package :link(REPLICA),h5
+REPLICA package :link(REPLICA),h4
-Contents: A collection of multi-replica methods that are used by
-invoking multiple instances (replicas) of LAMMPS
-simulations. Communication between individual replicas is performed in
-different ways by the different methods. See "Section
+[Contents:]
+
+A collection of multi-replica methods which can be used when running
+multiple LAMMPS simulations (replicas). See "Section
6.5"_Section_howto.html#howto_5 for an overview of how to run
-multi-replica simulations in LAMMPS. Multi-replica methods included
-in the package are nudged elastic band (NEB), parallel replica
-dynamics (PRD), temperature accelerated dynamics (TAD), parallel
-tempering, and a verlet/split algorithm for performing long-range
-Coulombics on one set of processors, and the remainder of the force
-field calculation on another set.
+multi-replica simulations in LAMMPS. Methods in the package include
+nudged elastic band (NEB), parallel replica dynamics (PRD),
+temperature accelerated dynamics (TAD), parallel tempering, and a
+verlet/split algorithm for performing long-range Coulombics on one set
+of processors, and the remainder of the force field calcalation on
+another set.
-To install via make or Make.py:
+[Install or un-install:]
make yes-replica
make machine :pre
-Make.py -p replica -a machine :pre
-
-To un-install via make or Make.py:
-
make no-replica
make machine :pre
-Make.py -p ^replica -a machine :pre
+[Supporting info:]
-Supporting info: "Section 6.5"_Section_howto.html#howto_5,
-"neb"_neb.html, "prd"_prd.html, "tad"_tad.html, "temper"_temper.html,
-"run_style verlet/split"_run_style.html, examples/neb, examples/prd,
-examples/tad
+src/REPLICA: filenames -> commands
+"Section 6.5"_Section_howto.html#howto_5
+"neb"_neb.html
+"prd"_prd.html
+"tad"_tad.html
+"temper"_temper.html,
+"run_style verlet/split"_run_style.html
+examples/neb
+examples/prd
+examples/tad :ul
:line
-RIGID package :link(RIGID),h5
+RIGID package :link(RIGID),h4
-Contents: A collection of computes and fixes which enforce rigid
-constraints on collections of atoms or particles. This includes SHAKE
-and RATTLE, as well as variants of rigid-body time integrators for a
-few large bodies or many small bodies.
+[Contents:]
-To install via make or Make.py:
+Fixes which enforce rigid constraints on collections of atoms or
+particles. This includes SHAKE and RATTLE, as well as varous
+rigid-body integrators for a few large bodies or many small bodies.
+Also several computes which calculate properties of rigid bodies.
+
+To install/build:
make yes-rigid
make machine :pre
-Make.py -p rigid -a machine :pre
-
-To un-install via make or Make.py:
+To un-install/re-build:
make no-rigid
make machine :pre
-Make.py -p ^rigid -a machine :pre
+[Supporting info:]
-Supporting info: "compute erotate/rigid"_compute_erotate_rigid.html,
-"fix shake"_fix_shake.html, "fix rattle"_fix_shake.html, "fix
-rigid/*"_fix_rigid.html, examples/ASPHERE, examples/rigid
+src/RIGID: filenames -> commands
+"compute erotate/rigid"_compute_erotate_rigid.html
+fix shake"_fix_shake.html
+"fix rattle"_fix_shake.html
+"fix rigid/*"_fix_rigid.html
+examples/ASPHERE
+examples/rigid
+bench/in.rhodo
+http://lammps.sandia.gov/movies.html#box
+http://lammps.sandia.gov/movies.html#star :ul
:line
-SHOCK package :link(SHOCK),h5
+SHOCK package :link(SHOCK),h4
-Contents: A small number of fixes useful for running impact
-simulations where a shock-wave passes through a material.
+[Contents:]
-To install via make or Make.py:
+Fixes for running impact simulations where a shock-wave passes through
+a material.
+
+[Install or un-install:]
make yes-shock
make machine :pre
-Make.py -p shock -a machine :pre
-
-To un-install via make or Make.py:
-
make no-shock
make machine :pre
-Make.py -p ^shock -a machine :pre
+[Supporting info:]
-Supporting info: "fix append/atoms"_fix_append_atoms.html, "fix
-msst"_fix_msst.html, "fix nphug"_fix_nphug.html, "fix
-wall/piston"_fix_wall_piston.html, examples/hugoniostat, examples/msst
+src/SHOCK: filenames -> commands
+"fix append/atoms"_fix_append_atoms.html
+"fix msst"_fix_msst.html
+"fix nphug"_fix_nphug.html
+"fix wall/piston"_fix_wall_piston.html
+examples/hugoniostat
+examples/msst :ul
:line
-SNAP package :link(SNAP),h5
+SNAP package :link(SNAP),h4
-Contents: A pair style for the spectral neighbor analysis potential
-(SNAP), which is an empirical potential which can be quantum accurate
-when fit to an archive of DFT data. Computes useful for analyzing
-properties of the potential are also included.
+[Contents:]
-To install via make or Make.py:
+A pair style for the spectral neighbor analysis potential (SNAP).
+SNAP is methodology for deriving a highly accurate classical potential
+fit to a large archive of quantum mechanical (DFT) data. Also several
+computes which analyze attributes of the potential.
+
+[Author:] Aidan Thompson (Sandia).
+
+[Install or un-install:]
make yes-snap
make machine :pre
-Make.py -p snap -a machine :pre
-
-To un-install via make or Make.py:
-
make no-snap
make machine :pre
-Make.py -p ^snap -a machine :pre
+[Supporting info:]
-Supporting info: "pair snap"_pair_snap.html, "compute
-sna/atom"_compute_sna_atom.html, "compute snad/atom"_compute_sna_atom.html,
-"compute snav/atom"_compute_sna_atom.html, examples/snap
+src/SNAP: filenames -> commands
+"pair snap"_pair_snap.html
+"compute sna/atom"_compute_sna_atom.html
+"compute snad/atom"_compute_sna_atom.html
+"compute snav/atom"_compute_sna_atom.html
+examples/snap :ul
:line
-SRD package :link(SRD),h5
+SRD package :link(SRD),h4
-Contents: Two fixes which implement the Stochastic Rotation Dynamics
-(SRD) method for coarse-graining of a solvent, typically around large
-colloidal-scale particles.
+[Contents:]
-To install via make or Make.py:
+A pair of fixes which implement the Stochastic Rotation Dynamics (SRD)
+method for coarse-graining of a solvent, typically around large
+colloidal particles.
+
+To install/build:
make yes-srd
make machine :pre
-Make.py -p srd -a machine :pre
-
-To un-install via make or Make.py:
+To un-install/re-build:
make no-srd
make machine :pre
-Make.py -p ^srd -a machine :pre
+[Supporting info:]
-Supporting info: "fix srd"_fix_srd.html, "fix
-wall/srd"_fix_wall_srd.html, examples/srd, examples/ASPHERE
+src/SRD: filenames -> commands
+"fix srd"_fix_srd.html
+"fix wall/srd"_fix_wall_srd.html
+examples/srd
+examples/ASPHERE
+http://lammps.sandia.gov/movies.html#tri
+http://lammps.sandia.gov/movies.html#line
+http://lammps.sandia.gov/movies.html#poly :ul
:line
-VORONOI package :link(VORONOI),h5
+VORONOI package :link(VORONOI),h4
-Contents: A "compute voronoi/atom"_compute_voronoi_atom.html command
-which computes the Voronoi tesselation of a collection of atoms or
-particles by wrapping the Voro++ lib
+[Contents:]
-To build LAMMPS with the KIM package you must have previously
-installed the KIM API (library) on your system. The lib/kim/README
-file explains how to download and install KIM. Building with the KIM
-package also uses the lib/kim/Makefile.lammps file in the compile/link
-process. You should not need to edit this file.
+A compute command which calculates the Voronoi tesselation of a
+collection of atoms by wrapping the "Voro++ library"_voronoi. This
+can be used to calculate the local volume or each atoms or its near
+neighbors.
+:link(voronoi,http://math.lbl.gov/voro++)
-To build LAMMPS with the VORONOI package you must have previously
-installed the Voro++ library on your system. The lib/voronoi/README
-file explains how to download and install Voro++. There is a
-lib/voronoi/install.py script which automates the process. Type
-"python install.py" to see instructions. The final step is to create
-soft links in the lib/voronoi directory for "includelink" and
-"liblink" which point to installed Voro++ directories. Building with
-the VORONOI package uses the contents of the
-lib/voronoi/Makefile.lammps file in the compile/link process. You
-should not need to edit this file. Note that the Make.py script has a
-"-voronoi" option to allow the Voro++ library to be downloaded and/or
-installed and LAMMPS to be built in one step. Type "python
-src/Make.py -h -voronoi" to see the details.
+To use this package you must have the Voro++ library available on your
+system.
-To install via make or Make.py:
+[Author:] Daniel Schwen (INL) while at LANL. The open-source Voro++
+library was written by Chris Rycroft (Harvard U) while at UC Berkeley
+and LBNL.
+
+[Install or un-install:]
+
+Before building LAMMPS with this package, you must first download and
+build the Voro++ library. You can do this manually if you prefer;
+follow the instructions in lib/voronoi/README. You can also do it in
+one step from the lammps/src dir, using a command like these, which
+simply invoke the lib/voronoi/Install.py script with the specified
+args:
+
+make lib-voronoi # print help message
+make lib-voronoi args="-g -b -l" # download and build in default lib/voronoi/voro++-0.4.6
+make lib-voronoi args="-h . voro++ -g -b -l" # download and build in lib/voronoi/voro++
+make lib-voronoi args="-h ~ voro++ -g -b -l" # download and build in ~/voro++ :pre
+
+Note that the final -l switch is to create 2 symbolic (soft) links,
+"includelink" and "liblink", in lib/voronoi to point to the Voro++ src
+dir. When LAMMPS builds it will use these links. You should not need
+to edit the lib/voronoi/Makefile.lammps file.
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
-cd ~/lammps/lib/voronoi
-python install.py -g -b -l # download Voro++, build in lib/voronoi, create links
-cd ~/lammps/src
make yes-voronoi
make machine :pre
-Make.py -p voronoi -voronoi install="-g -b -l" -a machine :pre
-
-To un-install via make or Make.py:
-
make no-voronoi
make machine :pre
-Make.py -p ^voronoi -a machine :pre
+[Supporting info:]
-Supporting info: src/VORONOI/README, lib/voronoi/README, "compute
-voronoi/atom"_compute_voronoi_atom.html, examples/voronoi
+src/VORONOI: filenames -> commands
+src/VORONOI/README
+lib/voronoi/README
+"compute voronoi/atom"_compute_voronoi_atom.html
+examples/voronoi :ul
:line
-
-4.2 User packages :h4,link(pkg_2)
-
-The current list of user-contributed packages is as follows:
-
-Package, Description, Author(s), Doc page, Example, Pic/movie, Library
-"USER-ATC"_#USER-ATC, atom-to-continuum coupling, Jones & Templeton & Zimmerman (1), "fix atc"_fix_atc.html, USER/atc, "atc"_atc, lib/atc
-"USER-AWPMD"_#USER-AWPMD, wave-packet MD, Ilya Valuev (JIHT), "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, -, lib/awpmd
-"USER-CG-CMM"_#USER-CG-CMM, coarse-graining model, Axel Kohlmeyer (Temple U), "pair_style lj/sdk"_pair_sdk.html, USER/cg-cmm, "cg"_cg, -
-"USER-CGDNA"_#USER-CGDNA, coarse-grained DNA force fields, Oliver Henrich (U Strathclyde Glasgow), src/USER-CGDNA/README, USER/cgdna, -, -
-"USER-COLVARS"_#USER-COLVARS, collective variables, Fiorin & Henin & Kohlmeyer (2), "fix colvars"_fix_colvars.html, USER/colvars, "colvars"_colvars, lib/colvars
-"USER-DIFFRACTION"_#USER-DIFFRACTION, virutal x-ray and electron diffraction, Shawn Coleman (ARL),"compute xrd"_compute_xrd.html, USER/diffraction, -, -
-"USER-DPD"_#USER-DPD, reactive dissipative particle dynamics (DPD), Larentzos & Mattox & Brennan (5), src/USER-DPD/README, USER/dpd, -, -
-"USER-DRUDE"_#USER-DRUDE, Drude oscillators, Dequidt & Devemy & Padua (3), "tutorial"_tutorial_drude.html, USER/drude, -, -
-"USER-EFF"_#USER-EFF, electron force field, Andres Jaramillo-Botero (Caltech), "pair_style eff/cut"_pair_eff.html, USER/eff, "eff"_eff, -
-"USER-FEP"_#USER-FEP, free energy perturbation, Agilio Padua (U Blaise Pascal Clermont-Ferrand), "compute fep"_compute_fep.html, USER/fep, -, -
-"USER-H5MD"_#USER-H5MD, dump output via HDF5, Pierre de Buyl (KU Leuven), "dump h5md"_dump_h5md.html, -, -, lib/h5md
-"USER-INTEL"_#USER-INTEL, Vectorized CPU and Intel(R) coprocessor styles, W. Michael Brown (Intel), "Section 5.3.2"_accelerate_intel.html, examples/intel, -, -
-"USER-LB"_#USER-LB, Lattice Boltzmann fluid, Colin Denniston (U Western Ontario), "fix lb/fluid"_fix_lb_fluid.html, USER/lb, -, -
-"USER-MGPT"_#USER-MGPT, fast MGPT multi-ion potentials, Tomas Oppelstrup & John Moriarty (LLNL), "pair_style mgpt"_pair_mgpt.html, USER/mgpt, -, -
-"USER-MISC"_#USER-MISC, single-file contributions, USER-MISC/README, USER-MISC/README, -, -, -
-"USER-MANIFOLD"_#USER-MANIFOLD, motion on 2d surface, Stefan Paquay (Eindhoven U of Technology), "fix manifoldforce"_fix_manifoldforce.html, USER/manifold, "manifold"_manifold, -
-"USER-MOLFILE"_#USER-MOLFILE, "VMD"_VMD molfile plug-ins, Axel Kohlmeyer (Temple U), "dump molfile"_dump_molfile.html, -, -, VMD-MOLFILE
-"USER-NC-DUMP"_#USER-NC-DUMP, dump output via NetCDF, Lars Pastewka (Karlsruhe Institute of Technology, KIT), "dump nc / dump nc/mpiio"_dump_nc.html, -, -, lib/netcdf
-"USER-OMP"_#USER-OMP, OpenMP threaded styles, Axel Kohlmeyer (Temple U), "Section 5.3.4"_accelerate_omp.html, -, -, -
-"USER-PHONON"_#USER-PHONON, phonon dynamical matrix, Ling-Ti Kong (Shanghai Jiao Tong U), "fix phonon"_fix_phonon.html, USER/phonon, -, -
-"USER-QMMM"_#USER-QMMM, QM/MM coupling, Axel Kohlmeyer (Temple U), "fix qmmm"_fix_qmmm.html, USER/qmmm, -, lib/qmmm
-"USER-QTB"_#USER-QTB, quantum nuclear effects, Yuan Shen (Stanford), "fix qtb"_fix_qtb.html "fix qbmsst"_fix_qbmsst.html, qtb, -, -
-"USER-QUIP"_#USER-QUIP, QUIP/libatoms interface, Albert Bartok-Partay (U Cambridge), "pair_style quip"_pair_quip.html, USER/quip, -, lib/quip
-"USER-REAXC"_#USER-REAXC, C version of ReaxFF, Metin Aktulga (LBNL), "pair_style reaxc"_pair_reax_c.html, reax, -, -
-"USER-SMD"_#USER-SMD, smoothed Mach dynamics, Georg Ganzenmuller (EMI), "SMD User Guide"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, -, -
-"USER-SMTBQ"_#USER-SMTBQ, Second Moment Tight Binding - QEq potential, Salles & Maras & Politano & Tetot (4), "pair_style smtbq"_pair_smtbq.html, USER/smtbq, -, -
-"USER-SPH"_#USER-SPH, smoothed particle hydrodynamics, Georg Ganzenmuller (EMI), "SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, "sph"_sph, -
-"USER-TALLY"_#USER-TALLY, Pairwise tallied computes, Axel Kohlmeyer (Temple U), "compute XXX/tally"_compute_tally.html, USER/tally, -, -
-"USER-VTK"_#USER-VTK, VTK-style dumps, Berger and Queteschiner (6), "compute custom/vtk"_dump_custom_vtk.html, -, -, lib/vtk
-:tb(ea=c)
-
-:link(atc,http://lammps.sandia.gov/pictures.html#atc)
-:link(cg,http://lammps.sandia.gov/pictures.html#cg)
-:link(eff,http://lammps.sandia.gov/movies.html#eff)
-:link(manifold,http://lammps.sandia.gov/movies.html#manifold)
-:link(sph,http://lammps.sandia.gov/movies.html#sph)
-:link(VMD,http://www.ks.uiuc.edu/Research/vmd)
-
-The "Authors" column lists a name(s) if a specific person is
-responsible for creating and maintaining the package.
-
-(1) The ATC package was created by Reese Jones, Jeremy Templeton, and
-Jon Zimmerman (Sandia).
-
-(2) The COLVARS package was created by Axel Kohlmeyer (Temple U) using
-the colvars module library written by Giacomo Fiorin (Temple U) and
-Jerome Henin (LISM, Marseille, France).
-
-(3) The DRUDE package was created by Alain Dequidt (U Blaise Pascal
-Clermont-Ferrand) and co-authors Julien Devemy (CNRS) and Agilio Padua
-(U Blaise Pascal).
-
-(4) The SMTBQ package was created by Nicolas Salles, Emile Maras,
-Olivier Politano, and Robert Tetot (LAAS-CNRS, France).
-
-(5) The USER-DPD package was created by James Larentzos (ARL), Timothy
-Mattox (Engility), and John Brennan (ARL).
-
-(6) The USER-VTK package was created by Richard Berger (JKU) and
-Daniel Queteschiner (DCS Computing).
-
-The "Doc page" column links to either a sub-section of the
-"Section 6"_Section_howto.html of the manual, or an input script
-command implemented as part of the package, or to additional
-documentation provided within the package.
-
-The "Example" column is a sub-directory in the examples directory of
-the distribution which has an input script that uses the package.
-E.g. "peptide" refers to the examples/peptide directory.
-
-The "Library" column lists an external library which must be built
-first and which LAMMPS links to when it is built. If it is listed as
-lib/package, then the code for the library is under the lib directory
-of the LAMMPS distribution. See the lib/package/README file for info
-on how to build the library. If it is not listed as lib/package, then
-it is a third-party library not included in the LAMMPS distribution.
-See details on all of this below for individual packages.
-
:line
-USER-ATC package :link(USER-ATC),h5
+USER-ATC package :link(USER-ATC),h4
-Contents: ATC stands for atoms-to-continuum. This package implements
-a "fix atc"_fix_atc.html command to either couple MD with continuum
-finite element equations or perform on-the-fly post-processing of
-atomic information to continuum fields. See src/USER-ATC/README for
-more details.
+[Contents:]
-To build LAMMPS with this package ...
+ATC stands for atoms-to-continuum. This package implements a "fix
+atc"_fix_atc.html command to either couple molecular dynamics with
+continuum finite element equations or perform on-the-fly conversion of
+atomic information to continuum fields.
-To install via make or Make.py:
+[Authors:] Reese Jones, Jeremy Templeton, Jon Zimmerman (Sandia).
+
+[Install or un-install:]
+
+Before building LAMMPS with this package, you must first build the ATC
+library in lib/atc. You can do this manually if you prefer; follow
+the instructions in lib/atc/README. You can also do it in one step
+from the lammps/src dir, using a command like these, which simply
+invoke the lib/atc/Install.py script with the specified args:
+
+make lib-atc # print help message
+make lib-atc args="-m g++" # build with GNU g++ compiler
+make lib-atc args="-m icc" # build with Intel icc compiler :pre
+
+The build should produce two files: lib/atc/libatc.a and
+lib/atc/Makefile.lammps. The latter is copied from an existing
+Makefile.lammps.* and has settings needed to build LAMMPS with the ATC
+library. If necessary, you can edit/create a new
+lib/atc/Makefile.machine file for your system, which should define an
+EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
+file.
+
+Note that the Makefile.lammps file has settings for the BLAS and
+LAPACK linear algebra libraries. As explained in lib/atc/README these
+can either exist on your system, or you can use the files provided in
+lib/linalg. In the latter case you also need to build the library
+in lib/linalg with a command like these:
+
+make lib-linalg # print help message
+make lib-atc args="-m gfortran" # build with GNU Fortran compiler
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
make yes-user-atc
make machine :pre
-
-Make.py -p atc -a machine :pre
-
-To un-install via make or Make.py:
-
+
make no-user-atc
make machine :pre
+
+[Supporting info:]
-Make.py -p ^atc -a machine :pre
-
-Supporting info:src/USER-ATC/README, "fix atc"_fix_atc.html,
+src/USER-ATC: filenames -> commands
+src/USER-ATC/README
+"fix atc"_fix_atc.html
examples/USER/atc
-
-Authors: Reese Jones (rjones at sandia.gov), Jeremy Templeton (jatempl
-at sandia.gov) and Jon Zimmerman (jzimmer at sandia.gov) at Sandia.
-Contact them directly if you have questions.
+http://lammps.sandia.gov/pictures.html#atc :ul
:line
-USER-AWPMD package :link(USER-AWPMD),h5
+USER-AWPMD package :link(USER-AWPMD),h4
-Contents: AWPMD stands for Antisymmetrized Wave Packet Molecular
-Dynamics. This package implements an atom, pair, and fix style which
-allows electrons to be treated as explicit particles in an MD
-calculation. See src/USER-AWPMD/README for more details.
+[Contents:]
-To build LAMMPS with this package ...
+AWPMD stands for Antisymmetrized Wave Packet Molecular Dynamics. This
+package implements an atom, pair, and fix style which allows electrons
+to be treated as explicit particles in a classical molecular dynamics
+model.
-Supporting info: src/USER-AWPMD/README, "fix
-awpmd/cut"_pair_awpmd.html, examples/USER/awpmd
+[Author:] Ilya Valuev (JIHT, Russia).
-Author: Ilya Valuev at the JIHT in Russia (valuev at
-physik.hu-berlin.de). Contact him directly if you have questions.
+[Install or un-install:]
+
+Before building LAMMPS with this package, you must first build the
+AWPMD library in lib/awpmd. You can do this manually if you prefer;
+follow the instructions in lib/awpmd/README. You can also do it in
+one step from the lammps/src dir, using a command like these, which
+simply invoke the lib/awpmd/Install.py script with the specified args:
+
+make lib-awpmd # print help message
+make lib-awpmd args="-m g++" # build with GNU g++ compiler
+make lib-awpmd args="-m icc" # build with Intel icc compiler :pre
+
+The build should produce two files: lib/awpmd/libawpmd.a and
+lib/awpmd/Makefile.lammps. The latter is copied from an existing
+Makefile.lammps.* and has settings needed to build LAMMPS with the
+AWPMD library. If necessary, you can edit/create a new
+lib/awpmd/Makefile.machine file for your system, which should define
+an EXTRAMAKE variable to specify a corresponding
+Makefile.lammps.machine file.
+
+Note that the Makefile.lammps file has settings for the BLAS and
+LAPACK linear algebra libraries. As explained in lib/awpmd/README
+these can either exist on your system, or you can use the files
+provided in lib/linalg. In the latter case you also need to build the
+library in lib/linalg with a command like these:
+
+make lib-linalg # print help message
+make lib-atc args="-m gfortran" # build with GNU Fortran compiler
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
+
+make yes-user-awpmd
+make machine :pre
+
+make no-user-awpmd
+make machine :pre
+
+[Supporting info:]
+
+src/USER-AWPMD: filenames -> commands
+src/USER-AWPMD/README
+"pair awpmd/cut"_pair_awpmd.html
+"fix nve/awpmd"_fix_nve_awpmd.html
+examples/USER/awpmd :ul
:line
-USER-CG-CMM package :link(USER-CG-CMM),h5
+USER-CGDNA package :link(USER-CGDNA),h4
-Contents: CG-CMM stands for coarse-grained ??. This package
-implements several pair styles and an angle style using the coarse
-grained parametrization of Shinoda, DeVane, Klein, Mol Sim, 33, 27
-(2007) (SDK), with extensions to simulate ionic liquids, electrolytes,
-lipids and charged amino acids. See src/USER-CG-CMM/README for more
-details.
+[Contents:]
-Supporting info: src/USER-CG-CMM/README, "pair lj/sdk"_pair_sdk.html,
-"pair lj/sdk/coul/long"_pair_sdk.html, "angle sdk"_angle_sdk.html,
-examples/USER/cg-cmm
+Several pair styles, a bond style, and integration fixes for
+coarse-grained models of single- and double-stranded DNA based on the
+oxDNA model of Doye, Louis and Ouldridge at the University of Oxford.
+This includes Langevin-type rigid-body integrators with improved
+stability.
-Author: Axel Kohlmeyer at Temple U (akohlmey at gmail.com). Contact
-him directly if you have questions.
+[Author:] Oliver Henrich (University of Edinburgh).
-:line
+[Install or un-install:]
+
+make yes-user-cgdna
+make machine :pre
+
+make no-user-cgdna
+make machine :pre
+
+[Supporting info:]
-USER-CGDNA package :link(USER-CGDNA),h5
-
-Contents: The CGDNA package implements coarse-grained force fields for
-single- and double-stranded DNA. These are at the moment mainly the
-oxDNA and oxDNA2 models, developed by Doye, Louis and Ouldridge at the University
-of Oxford. The package also contains Langevin-type rigid-body
-integrators with improved stability.
-
-See these doc pages to get started:
-
-"bond_style oxdna/fene"_bond_oxdna.html
-"bond_style oxdna2/fene"_bond_oxdna.html
-"pair_style oxdna/..."_pair_oxdna.html
-"pair_style oxdna2/..."_pair_oxdna2.html
+src/USER-CGDNA: filenames -> commands
+/src/USER-CGDNA/README
+"pair_style oxdna/*"_pair_oxdna.html
+"pair_style oxdna2/*"_pair_oxdna2.html
+"bond_style oxdna/*"_bond_oxdna.html
+"bond_style oxdna2/*"_bond_oxdna2.html
"fix nve/dotc/langevin"_fix_nve_dotc_langevin.html :ul
-Supporting info: /src/USER-CGDNA/README, "bond_style
-oxdna/fene"_bond_oxdna.html, "bond_style
-oxdna2/fene"_bond_oxdna.html, "pair_style
-oxdna/..."_pair_oxdna.html, "pair_style
-oxdna2/..."_pair_oxdna2.html, "fix
-nve/dotc/langevin"_fix_nve_dotc_langevin.html
+:line
-Author: Oliver Henrich at the University of Strathclyde, Glasgow
-(oliver.henrich at strath.ac.uk, also ohenrich at ph.ed.ac.uk).
-Contact him directly if you have any questions.
+USER-CGSDK package :link(USER-CGSDK),h4
+
+[Contents:]
+
+Several pair styles and an angle style which implement the
+coarse-grained SDK model of Shinoda, DeVane, and Klein which enables
+simulation of ionic liquids, electrolytes, lipids and charged amino
+acids.
+
+[Author:] Axel Kohlmeyer (Temple U).
+
+[Install or un-install:]
+
+make yes-user-cgsdk
+make machine :pre
+
+make no-user-cgsdk
+make machine :pre
+
+[Supporting info:]
+
+src/USER-CGSDK: filenames -> commands
+src/USER-CGSDK/README
+"pair_style lj/sdk/*"_pair_sdk.html
+"angle_style sdk"_angle_sdk.html
+examples/USER/cgsdk
+http://lammps.sandia.gov/pictures.html#cg :ul
:line
-USER-COLVARS package :link(USER-COLVARS),h5
+USER-COLVARS package :link(USER-COLVARS),h4
-Contents: COLVARS stands for collective variables which can be used to
-implement Adaptive Biasing Force, Metadynamics, Steered MD, Umbrella
-Sampling and Restraints. This package implements a "fix
-colvars"_fix_colvars.html command which wraps a COLVARS library which
-can perform those kinds of simulations. See src/USER-COLVARS/README
-for more details.
+[Contents:]
-Supporting info:
-"doc/PDF/colvars-refman-lammps.pdf"_PDF/colvars-refman-lammps.pdf,
-src/USER-COLVARS/README, lib/colvars/README, "fix
-colvars"_fix_colvars.html, examples/USER/colvars
+COLVARS stands for collective variables, which can be used to
+implement various enhanced sampling methods, including Adaptive
+Biasing Force, Metadynamics, Steered MD, Umbrella Sampling and
+Restraints. A "fix colvars"_fix_colvars.html command is implemented
+which wraps a COLVARS library, which implements these methods.
+simulations.
-Authors: Axel Kohlmeyer at Temple U (akohlmey at gmail.com) wrote the
-fix. The COLVARS library itself is written and maintained by Giacomo
-Fiorin (ICMS, Temple University, Philadelphia, PA, USA) and Jerome
-Henin (LISM, CNRS, Marseille, France). Contact them directly if you
-have questions.
+[Authors:] Axel Kohlmeyer (Temple U). The COLVARS library was written
+by Giacomo Fiorin (ICMS, Temple University, Philadelphia, PA, USA) and
+Jerome Henin (LISM, CNRS, Marseille, France).
+
+[Install or un-install:]
+
+Before building LAMMPS with this package, you must first build the
+COLVARS library in lib/colvars. You can do this manually if you
+prefer; follow the instructions in lib/colvars/README. You can also
+do it in one step from the lammps/src dir, using a command like these,
+which simply invoke the lib/colvars/Install.py script with the
+specified args:
+
+make lib-colvars # print help message
+make lib-colvars args="-m g++" # build with GNU g++ compiler :pre
+
+The build should produce two files: lib/colvars/libcolvars.a and
+lib/colvars/Makefile.lammps. The latter is copied from an existing
+Makefile.lammps.* and has settings needed to build LAMMPS with the
+COLVARS library (though typically the settings are just blank). If
+necessary, you can edit/create a new lib/colvars/Makefile.machine file
+for your system, which should define an EXTRAMAKE variable to specify
+a corresponding Makefile.lammps.machine file.
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
+
+make yes-user-colvars
+make machine :pre
+
+make no-user-colvars
+make machine :pre
+
+[Supporting info:]
+
+src/USER-COLVARS: filenames -> commands
+"doc/PDF/colvars-refman-lammps.pdf"_PDF/colvars-refman-lammps.pdf
+src/USER-COLVARS/README
+lib/colvars/README
+"fix colvars"_fix_colvars.html
+examples/USER/colvars :ul
:line
-USER-DIFFRACTION package :link(USER-DIFFRACTION),h5
+USER-DIFFRACTION package :link(USER-DIFFRACTION),h4
-Contents: This packages implements two computes and a fix for
-calculating x-ray and electron diffraction intensities based on
-kinematic diffraction theory. See src/USER-DIFFRACTION/README for
-more details.
+[Contents:]
-Supporting info: "compute saed"_compute_saed.html, "compute
-xrd"_compute_xrd.html, "fix saed/vtk"_fix_saed_vtk.html,
-examples/USER/diffraction
+Two computes and a fix for calculating x-ray and electron diffraction
+intensities based on kinematic diffraction theory.
-Author: Shawn P. Coleman (shawn.p.coleman8.ctr at mail.mil) while at
-the University of Arkansas. Contact him directly if you have
-questions.
+[Author:] Shawn Coleman while at the U Arkansas.
+
+[Install or un-install:]
+
+make yes-user-diffraction
+make machine :pre
+
+make no-user-diffraction
+make machine :pre
+
+[Supporting info:]
+
+src/USER-DIFFRACTION: filenames -> commands
+"compute saed"_compute_saed.html
+"compute xrd"_compute_xrd.html
+"fix saed/vtk"_fix_saed_vtk.html
+examples/USER/diffraction :ul
:line
-USER-DPD package :link(USER-DPD),h5
+USER-DPD package :link(USER-DPD),h4
-Contents: DPD stands for dissipative particle dynamics, This package
-implements DPD for isothermal, isoenergetic, isobaric and isenthalpic
-conditions. It also has extensions for performing reactive DPD, where
-each particle has internal state for multiple species and a coupled
-set of chemical reaction ODEs are integrated each timestep. The DPD
-equations of motion are integrated efficiently through the Shardlow
-splitting algorithm. See src/USER-DPD/README for more details.
+[Contents:]
-Supporting info: /src/USER-DPD/README, "compute dpd"_compute_dpd.html
+DPD stands for dissipative particle dynamics. This package implements
+coarse-grained DPD-based models for energetic, reactive molecular
+crystalline materials. It includes many pair styles specific to these
+systems, including for reactive DPD, where each particle has internal
+state for multiple species and a coupled set of chemical reaction ODEs
+are integrated each timestep. Highly accurate time intergrators for
+isothermal, isoenergetic, isobaric and isenthalpic conditions are
+included. These enable long timesteps via the Shardlow splitting
+algorithm.
+
+[Authors:] Jim Larentzos (ARL), Tim Mattox (Engility Corp), and and John
+Brennan (ARL).
+
+[Install or un-install:]
+
+make yes-user-dpd
+make machine :pre
+
+make no-user-dpd
+make machine :pre
+
+[Supporting info:]
+
+src/USER-DPD: filenames -> commands
+/src/USER-DPD/README
+"compute dpd"_compute_dpd.html
"compute dpd/atom"_compute_dpd_atom.html
-"fix eos/cv"_fix_eos_table.html "fix eos/table"_fix_eos_table.html
-"fix eos/table/rx"_fix_eos_table_rx.html "fix shardlow"_fix_shardlow.html
-"fix rx"_fix_rx.html "pair table/rx"_pair_table_rx.html
-"pair dpd/fdt"_pair_dpd_fdt.html "pair dpd/fdt/energy"_pair_dpd_fdt.html
-"pair exp6/rx"_pair_exp6_rx.html "pair multi/lucy"_pair_multi_lucy.html
-"pair multi/lucy/rx"_pair_multi_lucy_rx.html, examples/USER/dpd
-
-Authors: James Larentzos (ARL) (james.p.larentzos.civ at mail.mil),
-Timothy Mattox (Engility Corp) (Timothy.Mattox at engilitycorp.com)
-and John Brennan (ARL) (john.k.brennan.civ at mail.mil). Contact them
-directly if you have questions.
+"fix eos/cv"_fix_eos_table.html
+"fix eos/table"_fix_eos_table.html
+"fix eos/table/rx"_fix_eos_table_rx.html
+"fix shardlow"_fix_shardlow.html
+"fix rx"_fix_rx.html
+"pair table/rx"_pair_table_rx.html
+"pair dpd/fdt"_pair_dpd_fdt.html
+"pair dpd/fdt/energy"_pair_dpd_fdt.html
+"pair exp6/rx"_pair_exp6_rx.html
+"pair multi/lucy"_pair_multi_lucy.html
+"pair multi/lucy/rx"_pair_multi_lucy_rx.html
+examples/USER/dpd :ul
:line
-USER-DRUDE package :link(USER-DRUDE),h5
+USER-DRUDE package :link(USER-DRUDE),h4
-Contents: This package contains methods for simulating polarizable
-systems using thermalized Drude oscillators. It has computes, fixes,
-and pair styles for this purpose. See "Section
+[Contents:]
+
+Fixes, pair styles, and a compute to simulate thermalized Drude
+oscillators as a model of polarization. See "Section
6.27"_Section_howto.html#howto_27 for an overview of how to use the
-package. See src/USER-DRUDE/README for additional details. There are
-auxiliary tools for using this package in tools/drude.
+package. There are auxiliary tools for using this package in
+tools/drude.
-Supporting info: "Section 6.27"_Section_howto.html#howto_27,
-src/USER-DRUDE/README, "fix drude"_fix_drude.html, "fix
-drude/transform/*"_fix_drude_transform.html, "compute
-temp/drude"_compute_temp_drude.html, "pair thole"_pair_thole.html,
-"pair lj/cut/thole/long"_pair_thole.html, examples/USER/drude,
-tools/drude
+[Authors:] Alain Dequidt (U Blaise Pascal Clermont-Ferrand), Julien
+Devemy (CNRS), and Agilio Padua (U Blaise Pascal).
-Authors: Alain Dequidt at Universite Blaise Pascal Clermont-Ferrand
-(alain.dequidt at univ-bpclermont.fr); co-authors: Julien Devemy,
-Agilio Padua. Contact them directly if you have questions.
+[Install or un-install:]
+
+make yes-user-drude
+make machine :pre
+
+make no-user-drude
+make machine :pre
+
+[Supporting info:]
+
+src/USER-DRUDE: filenames -> commands
+"Section 6.27"_Section_howto.html#howto_27
+"Section 6.25"_Section_howto.html#howto_25
+src/USER-DRUDE/README
+"fix drude"_fix_drude.html
+"fix drude/transform/*"_fix_drude_transform.html
+"compute temp/drude"_compute_temp_drude.html
+"pair thole"_pair_thole.html
+"pair lj/cut/thole/long"_pair_thole.html
+examples/USER/drude
+tools/drude :ul
:line
-USER-EFF package :link(USER-EFF),h5
+USER-EFF package :link(USER-EFF),h4
-Contents: EFF stands for electron force field. This package contains
-atom, pair, fix and compute styles which implement the eFF as
+[Contents:]
+
+EFF stands for electron force field which allows a classical MD code
+to model electrons as particles of variable radius. This package
+contains atom, pair, fix and compute styles which implement the eFF as
described in A. Jaramillo-Botero, J. Su, Q. An, and W.A. Goddard III,
-JCC, 2010. The eFF potential was first introduced by Su and Goddard,
-in 2007. See src/USER-EFF/README for more details. There are
-auxiliary tools for using this package in tools/eff; see its README
+JCC, 2010. The eFF potential was first introduced by Su and Goddard,
+in 2007. There are auxiliary tools for using this package in
+tools/eff; see its README file.
+
+[Author:] Andres Jaramillo-Botero (CalTech).
+
+[Install or un-install:]
+
+make yes-user-eff
+make machine :pre
+
+make no-user-eff
+make machine :pre
+
+[Supporting info:]
+
+src/USER-EFF: filenames -> commands
+src/USER-EFF/README
+"atom_style electron"_atom_style.html
+"fix nve/eff"_fix_nve_eff.html
+"fix nvt/eff"_fix_nvt_eff.html
+"fix npt/eff"_fix_npt_eff.html
+"fix langevin/eff"_fix_langevin_eff.html
+"compute temp/eff"_compute_temp_eff.html
+"pair eff/cut"_pair_eff.html
+"pair eff/inline"_pair_eff.html
+examples/USER/eff
+tools/eff/README
+tools/eff
+http://lammps.sandia.gov/movies.html#eff :ul
+
+:line
+
+USER-FEP package :link(USER-FEP),h4
+
+[Contents:]
+
+FEP stands for free energy perturbation. This package provides
+methods for performing FEP simulations by using a "fix
+adapt/fep"_fix_adapt_fep.html command with soft-core pair potentials,
+which have a "soft" in their style name. There are auxiliary tools
+for using this package in tools/fep; see its README file.
+
+[Author:] Agilio Padua (Universite Blaise Pascal Clermont-Ferrand)
+
+[Install or un-install:]
+
+make yes-user-fep
+make machine :pre
+
+make no-user-fep
+make machine :pre
+
+[Supporting info:]
+
+src/USER-FEP: filenames -> commands
+src/USER-FEP/README
+"fix adapt/fep"_fix_adapt_fep.html
+"compute fep"_compute_fep.html
+"pair_style */soft"_pair_lj_soft.html
+examples/USER/fep
+tools/fep/README
+tools/fep :ul
+
+:line
+
+USER-H5MD package :link(USER-H5MD),h4
+
+[Contents:]
+
+H5MD stands for HDF5 for MD. "HDF5"_HDF5 is a portable, binary,
+self-describing file format, used by many scientific simulations.
+H5MD is a format for molecular simulations, built on top of HDF5.
+This package implements a "dump h5md"_dump_h5md.html command to output
+LAMMPS snapshots in this format.
+
+:link(HDF5,http://www.hdfgroup.org/HDF5)
+
+To use this package you must have the HDF5 library available on your
+system.
+
+[Author:] Pierre de Buyl (KU Leuven) created both the package and the
+H5MD format.
+
+[Install or un-install:]
+
+Note that to follow these steps to compile and link to the CH5MD
+library, you need the standard HDF5 software package installed on your
+system, which should include the h5cc compiler and the HDF5 library.
+
+Before building LAMMPS with this package, you must first build the
+CH5MD library in lib/h5md. You can do this manually if you prefer;
+follow the instructions in lib/h5md/README. You can also do it in one
+step from the lammps/src dir, using a command like these, which simply
+invoke the lib/h5md/Install.py script with the specified args:
+
+make lib-h5md # print help message
+make lib-hm5d args="-m h5cc" # build with h5cc compiler :pre
+
+The build should produce two files: lib/h5md/libch5md.a and
+lib/h5md/Makefile.lammps. The latter is copied from an existing
+Makefile.lammps.* and has settings needed to build LAMMPS with the
+system HDF5 library. If necessary, you can edit/create a new
+lib/h5md/Makefile.machine file for your system, which should define an
+EXTRAMAKE variable to specify a corresponding Makefile.lammps.machine
file.
-Supporting info:
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
+
+make yes-user-h5md
+make machine :pre
+
+make no-user-h5md
+make machine :pre
+
+[Supporting info:]
-Author: Andres Jaramillo-Botero at CalTech (ajaramil at
-wag.caltech.edu). Contact him directly if you have questions.
+src/USER-H5MD: filenames -> commands
+src/USER-H5MD/README
+lib/h5md/README
+"dump h5md"_dump_h5md.html :ul
:line
-USER-FEP package :link(USER-FEP),h5
+USER-INTEL package :link(USER-INTEL),h4
-Contents: FEP stands for free energy perturbation. This package
-provides methods for performing FEP simulations by using a "fix
-adapt/fep"_fix_adapt_fep.html command with soft-core pair potentials,
-which have a "soft" in their style name. See src/USER-FEP/README for
-more details. There are auxiliary tools for using this package in
-tools/fep; see its README file.
+[Contents:]
-Supporting info: src/USER-FEP/README, "fix
-adapt/fep"_fix_adapt_fep.html, "compute fep"_compute_fep.html,
-"pair_style */soft"_pair_lj_soft.html, examples/USER/fep
+Dozens of pair, fix, bond, angle, dihedral, improper, and kspace
+styles which are optimized for Intel CPUs and KNLs (Knights Landing).
+All of them have an "intel" in their style name. "Section
+5.3.2"_accelerate_intel.html gives details of what hardware and
+compilers are required on your system, and how to build and use this
+package. Its styles can be invoked at run time via the "-sf intel" or
+"-suffix intel" "command-line switches"_Section_start.html#start_7.
+Also see the "KOKKOS"_#KOKKOS, "OPT"_#OPT, and "USER-OMP"_#USER-OMP
+packages, which have styles optimized for CPUs and KNLs.
-Author: Agilio Padua at Universite Blaise Pascal Clermont-Ferrand
-(agilio.padua at univ-bpclermont.fr). Contact him directly if you have
-questions.
+You need to have an Intel compiler, version 14 or higher to take full
+advantage of this package.
-:line
+[Author:] Mike Brown (Intel).
-USER-H5MD package :link(USER-H5MD),h5
-
-Contents: H5MD stands for HDF5 for MD. "HDF5"_HDF5 is a binary,
-portable, self-describing file format, used by many scientific
-simulations. H5MD is a format for molecular simulations, built on top
-of HDF5. This package implements a "dump h5md"_dump_h5md.html command
-to output LAMMPS snapshots in this format. See src/USER-H5MD/README
-for more details.
-
-:link(HDF5,http://www.hdfgroup.org/HDF5/)
-
-Supporting info: src/USER-H5MD/README, lib/h5md/README, "dump
-h5md"_dump_h5md.html
-
-Author: Pierre de Buyl at KU Leuven (see http://pdebuyl.be) created
-this package as well as the H5MD format and library. Contact him
-directly if you have questions.
-
-:line
-
-USER-INTEL package :link(USER-INTEL),h5
-
-Contents: Dozens of pair, bond, angle, dihedral, and improper styles
-that are optimized for Intel CPUs and the Intel Xeon Phi (in offload
-mode). All of them have an "intel" in their style name. "Section
-5.3.2"_accelerate_intel.html gives details of what hardware
-and compilers are required on your system, and how to build and use
-this package. Also see src/USER-INTEL/README for more details. See
-the KOKKOS, OPT, and USER-OMP packages, which also have CPU and
-Phi-enabled styles.
-
-Supporting info: examples/accelerate, src/USER-INTEL/TEST
-
-"Section 5.3"_Section_accelerate.html#acc_3
-
-Author: Mike Brown at Intel (michael.w.brown at intel.com). Contact
-him directly if you have questions.
+[Install or un-install:]
For the USER-INTEL package, you have 2 choices when building. You can
-build with CPU or Phi support. The latter uses Xeon Phi chips in
-"offload" mode. Each of these modes requires additional settings in
-your Makefile.machine for CCFLAGS and LINKFLAGS.
+build with either CPU or KNL support. Each choice requires additional
+settings in your Makefile.machine for CCFLAGS and LINKFLAGS and
+optimized malloc libraries. See the
+src/MAKE/OPTIONS/Makefile.intel_cpu and src/MAKE/OPTIONS/Makefile.knl
+files for examples.
-For CPU mode (if using an Intel compiler):
+For CPUs:
-CCFLAGS: add -fopenmp, -DLAMMPS_MEMALIGN=64, -restrict, -xHost, -fno-alias, -ansi-alias, -override-limits
-LINKFLAGS: add -fopenmp :ul
+OPTFLAGS = -xHost -O2 -fp-model fast=2 -no-prec-div -qoverride-limits
+CCFLAGS = -g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload \
+ -fno-alias -ansi-alias -restrict $(OPTFLAGS)
+LINKFLAGS = -g -qopenmp $(OPTFLAGS)
+LIB = -ltbbmalloc -ltbbmalloc_proxy
-For Phi mode add the following in addition to the CPU mode flags:
+For KNLs:
-CCFLAGS: add -DLMP_INTEL_OFFLOAD and
-LINKFLAGS: add -offload :ul
+OPTFLAGS = -xMIC-AVX512 -O2 -fp-model fast=2 -no-prec-div -qoverride-limits
+CCFLAGS = -g -qopenmp -DLAMMPS_MEMALIGN=64 -no-offload \
+ -fno-alias -ansi-alias -restrict $(OPTFLAGS)
+LINKFLAGS = -g -qopenmp $(OPTFLAGS)
+LIB = -ltbbmalloc
-And also add this to CCFLAGS:
+Once you have an appropriate Makefile.machine, you can
+install/un-install the package and build LAMMPS in the usual manner.
+Note that you cannot build one executable to run on multiple hardware
+targets (Intel CPUs or KNL). You need to build LAMMPS once for each
+hardware target, to produce a separate executable.
--offload-option,mic,compiler,"-fp-model fast=2 -mGLOB_default_function_attrs=\"gather_scatter_loop_unroll=4\"" :pre
+You should also typically install the USER-OMP package, as it can be
+used in tandem with the USER-INTEL package to good effect, as
+explained in "Section 5.3.2"_accelerate_intel.html.
-Examples:
+make yes-user-intel yes-user-omp
+make machine :pre
+
+make no-user-intel no-user-omp
+make machine :pre
+
+[Supporting info:]
+
+src/USER-INTEL: filenames -> commands
+src/USER-INTEL/README
+"Section 5.3"_Section_accelerate.html#acc_3
+"Section 5.3.2"_accelerate_gpu.html
+"Section 2.7 -sf intel"_Section_start.html#start_7
+"Section 2.7 -pk intel"_Section_start.html#start_7
+"package intel"_package.html
+Styles sections of "Section 3.5"_Section_commands.html#cmd_5 for styles followed by (i)
+src/USER-INTEL/TEST
+"Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
:line
-USER-LB package :link(USER-LB),h5
+USER-LB package :link(USER-LB),h4
-Supporting info:
+[Contents:]
-This package contains a LAMMPS implementation of a background
-Lattice-Boltzmann fluid, which can be used to model MD particles
-influenced by hydrodynamic forces.
+Fixes which implement a background Lattice-Boltzmann (LB) fluid, which
+can be used to model MD particles influenced by hydrodynamic forces.
-See this doc page and its related commands to get started:
+[Authors:] Frances Mackay and Colin Denniston (University of Western
+Ontario).
+[Install or un-install:]
+
+make yes-user-lb
+make machine :pre
+
+make no-user-lb
+make machine :pre
+
+[Supporting info:]
+
+src/USER-LB: filenames -> commands
+src/USER-LB/README
"fix lb/fluid"_fix_lb_fluid.html
-
-The people who created this package are Frances Mackay (fmackay at
-uwo.ca) and Colin (cdennist at uwo.ca) Denniston, University of
-Western Ontario. Contact them directly if you have questions.
-
-Examples: examples/USER/lb
+"fix lb/momentum"_fix_lb_momentum.html
+"fix lb/viscous"_fix_lb_viscous.html
+examples/USER/lb :ul
:line
-USER-MGPT package :link(USER-MGPT),h5
+USER-MGPT package :link(USER-MGPT),h4
-Supporting info:
+[Contents:]
-This package contains a fast implementation for LAMMPS of
-quantum-based MGPT multi-ion potentials. The MGPT or model GPT method
-derives from first-principles DFT-based generalized pseudopotential
-theory (GPT) through a series of systematic approximations valid for
-mid-period transition metals with nearly half-filled d bands. The
-MGPT method was originally developed by John Moriarty at Lawrence
-Livermore National Lab (LLNL).
+A pair style which provides a fast implementation of the quantum-based
+MGPT multi-ion potentials. The MGPT or model GPT method derives from
+first-principles DFT-based generalized pseudopotential theory (GPT)
+through a series of systematic approximations valid for mid-period
+transition metals with nearly half-filled d bands. The MGPT method
+was originally developed by John Moriarty at LLNL. The pair style in
+this package calculates forces and energies using an optimized
+matrix-MGPT algorithm due to Tomas Oppelstrup at LLNL.
-In the general matrix representation of MGPT, which can also be
-applied to f-band actinide metals, the multi-ion potentials are
-evaluated on the fly during a simulation through d- or f-state matrix
-multiplication, and the forces that move the ions are determined
-analytically. The {mgpt} pair style in this package calculates forces
-and energies using an optimized matrix-MGPT algorithm due to Tomas
-Oppelstrup at LLNL.
+[Authors:] Tomas Oppelstrup and John Moriarty (LLNL).
-See this doc page to get started:
+[Install or un-install:]
+
+make yes-user-mgpt
+make machine :pre
+
+make no-user-mgpt
+make machine :pre
+
+[Supporting info:]
+src/USER-MGPT: filenames -> commands
+src/USER-MGPT/README
"pair_style mgpt"_pair_mgpt.html
-
-The persons who created the USER-MGPT package are Tomas Oppelstrup
-(oppelstrup2@llnl.gov) and John Moriarty (moriarty2@llnl.gov)
-Contact them directly if you have any questions.
-
-Examples: examples/USER/mgpt
+examples/USER/mgpt :ul
:line
-USER-MISC package :link(USER-MISC),h5
+USER-MISC package :link(USER-MISC),h4
-Supporting info:
+[Contents:]
-The files in this package are a potpourri of (mostly) unrelated
-features contributed to LAMMPS by users. Each feature is a single
-pair of files (*.cpp and *.h).
+A potpourri of (mostly) unrelated features contributed to LAMMPS by
+users. Each feature is a single fix, compute, pair, bond, angle,
+dihedral, improper, or command style.
-More information about each feature can be found by reading its doc
-page in the LAMMPS doc directory. The doc page which lists all LAMMPS
-input script commands is as follows:
-
-"Section 3.5"_Section_commands.html#cmd_5
-
-User-contributed features are listed at the bottom of the fix,
-compute, pair, etc sections.
-
-The list of features and author of each is given in the
+[Authors:] The author for each style in the package is listed in the
src/USER-MISC/README file.
-You should contact the author directly if you have specific questions
-about the feature or its coding.
+[Install or un-install:]
+
+make yes-user-misc
+make machine :pre
+
+make no-user-misc
+make machine :pre
+
+[Supporting info:]
-Examples: examples/USER/misc
+src/USER-MISC: filenames -> commands
+src/USER-MISC/README
+one doc page per individual command listed in src/USER-MISC/README
+examples/USER/misc :ul
:line
-USER-MANIFOLD package :link(USER-MANIFOLD),h5
+USER-MANIFOLD package :link(USER-MANIFOLD),h4
-Supporting info:
+[Contents:]
-This package contains a dump molfile command which uses molfile
-plugins that are bundled with the
-"VMD"_http://www.ks.uiuc.edu/Research/vmd molecular visualization and
-analysis program, to enable LAMMPS to dump its information in formats
-compatible with various molecular simulation tools.
+Several fixes and a "manifold" class which enable simulations of
+particles constrained to a manifold (a 2D surface within the 3D
+simulation box). This is done by applying the RATTLE constraint
+algorithm to formulate single-particle constraint functions
+g(xi,yi,zi) = 0 and their derivative (i.e. the normal of the manifold)
+n = grad(g).
-This package allows LAMMPS to perform MD simulations of particles
-constrained on a manifold (i.e., a 2D subspace of the 3D simulation
-box). It achieves this using the RATTLE constraint algorithm applied
-to single-particle constraint functions g(xi,yi,zi) = 0 and their
-derivative (i.e. the normal of the manifold) n = grad(g).
+[Author:] Stefan Paquay (Eindhoven University of Technology (TU/e), The
+Netherlands)
-See this doc page to get started:
+[Install or un-install:]
+
+make yes-user-manifold
+make machine :pre
+
+make no-user-manifold
+make machine :pre
+
+[Supporting info:]
+src/USER-MANIFOLD: filenames -> commands
+src/USER-MANIFOLD/README
+"doc/manifolds"_manifolds.html
"fix manifoldforce"_fix_manifoldforce.html
-
-The person who created this package is Stefan Paquay, at the Eindhoven
-University of Technology (TU/e), The Netherlands (s.paquay at tue.nl).
-Contact him directly if you have questions.
+"fix nve/manifold/rattle"_fix_nve_manifold/rattle.html
+"fix nvt/manifold/rattle"_fix_nvt_manifold/rattle.html
+examples/USER/manifold
+http://lammps.sandia.gov/movies.html#manifold :ul
:line
-USER-MOLFILE package :link(USER-MOLFILE),h5
+USER-MOLFILE package :link(USER-MOLFILE),h4
-Supporting info:
+[Contents:]
-This package contains a dump molfile command which uses molfile
-plugins that are bundled with the
-"VMD"_http://www.ks.uiuc.edu/Research/vmd molecular visualization and
-analysis program, to enable LAMMPS to dump its information in formats
-compatible with various molecular simulation tools.
+A "dump molfile"_dump_molfile.html command which uses molfile plugins
+that are bundled with the "VMD"_http://www.ks.uiuc.edu/Research/vmd
+molecular visualization and analysis program, to enable LAMMPS to dump
+snapshots in formats compatible with various molecular simulation
+tools.
-The package only provides the interface code, not the plugins. These
-can be obtained from a VMD installation which has to match the
-platform that you are using to compile LAMMPS for. By adding plugins
-to VMD, support for new file formats can be added to LAMMPS (or VMD or
-other programs that use them) without having to recompile the
-application itself.
+To use this package you must have the desired VMD plugins available on
+your system.
-See this doc page to get started:
+Note that this package only provides the interface code, not the
+plugins themselves, which will be accessed when requesting a specific
+plugin via the "dump molfile"_dump_molfile.html command. Plugins can
+be obtained from a VMD installation which has to match the platform
+that you are using to compile LAMMPS for. By adding plugins to VMD,
+support for new file formats can be added to LAMMPS (or VMD or other
+programs that use them) without having to recompile the application
+itself. More information about the VMD molfile plugins can be found
+at
+"http://www.ks.uiuc.edu/Research/vmd/plugins/molfile"_http://www.ks.uiuc.edu/Research/vmd/plugins/molfile.
-"dump molfile"_dump_molfile.html
+[Author:] Axel Kohlmeyer (Temple U).
-The person who created this package is Axel Kohlmeyer at Temple U
-(akohlmey at gmail.com). Contact him directly if you have questions.
+[Install or un-install:]
+
+Note that the lib/molfile/Makefile.lammps file has a setting for a
+dynamic loading library libdl.a that should is typically present on
+all systems, which is required for LAMMPS to link with this package.
+If the setting is not valid for your system, you will need to edit the
+Makefile.lammps file. See lib/molfile/README and
+lib/molfile/Makefile.lammps for details.
+
+make yes-user-molfile
+make machine :pre
+
+make no-user-molfile
+make machine :pre
+
+[Supporting info:]
+
+src/USER-MOLFILE: filenames -> commands
+src/USER-MOLFILE/README
+lib/molfile/README
+"dump molfile"_dump_molfile.html :ul
:line
-USER-NC-DUMP package :link(USER-NC-DUMP),h5
+USER-NETCDF package :link(USER-NETCDF),h4
-Contents: Dump styles for writing NetCDF format files. NetCDF is a binary,
-portable, self-describing file format on top of HDF5. The file format
-contents follow the AMBER NetCDF trajectory conventions
-(http://ambermd.org/netcdf/nctraj.xhtml), but include extensions to this
-convention. This package implements a "dump nc"_dump_nc.html command
-and a "dump nc/mpiio"_dump_nc.html command to output LAMMPS snapshots
-in this format. See src/USER-NC-DUMP/README for more details.
+[Contents:]
-NetCDF files can be directly visualized with the following tools:
+Dump styles for writing NetCDF formatted dump files. NetCDF is a
+portable, binary, self-describing file format developed on top of
+HDF5. The file contents follow the AMBER NetCDF trajectory conventions
+(http://ambermd.org/netcdf/nctraj.xhtml), but include extensions.
-Ovito (http://www.ovito.org/). Ovito supports the AMBER convention
-and all of the above extensions. :ulb,l
-VMD (http://www.ks.uiuc.edu/Research/vmd/) :l
-AtomEye (http://www.libatoms.org/). The libAtoms version of AtomEye contains
-a NetCDF reader that is not present in the standard distribution of AtomEye :l,ule
+To use this package you must have the NetCDF library available on your
+system.
-The person who created these files is Lars Pastewka at
-Karlsruhe Institute of Technology (lars.pastewka at kit.edu).
-Contact him directly if you have questions.
+Note that NetCDF files can be directly visualized with the following
+tools:
+
+"Ovito"_ovito (Ovito supports the AMBER convention and the extensions mentioned above)
+"VMD"_vmd
+"AtomEye"_atomeye (the libAtoms version of AtomEye contains a NetCDF reader not present in the standard distribution) :ul
+
+:link(ovito,http://www.ovito.org)
+:link(atomeye,http://www.libatoms.org)
+
+[Author:] Lars Pastewka (Karlsruhe Institute of Technology).
+
+[Install or un-install:]
+
+Note that to follow these steps, you need the standard NetCDF software
+package installed on your system. The lib/netcdf/Makefile.lammps file
+has settings for NetCDF include and library files that LAMMPS needs to
+compile and linkk with this package. If the settings are not valid
+for your system, you will need to edit the Makefile.lammps file. See
+lib/netcdf/README for details.
+
+make yes-user-netcdf
+make machine :pre
+
+make no-user-netcdf
+make machine :pre
+
+[Supporting info:]
+
+src/USER-NETCDF: filenames -> commands
+src/USER-NETCDF/README
+lib/netcdf/README
+"dump netcdf"_dump_netcdf.html :ul
:line
-USER-OMP package :link(USER-OMP),h5
+USER-OMP package :link(USER-OMP),h4
-Supporting info:
+[Contents:]
-This package provides OpenMP multi-threading support and
-other optimizations of various LAMMPS pair styles, dihedral
-styles, and fix styles.
+Hundreds of pair, fix, compute, bond, angle, dihedral, improper, and
+kspace styles which are altered to enable threading on many-core CPUs
+via OpenMP directives. All of them have an "omp" in their style name.
+"Section 5.3.4"_accelerate_omp.html gives details of what hardware and
+compilers are required on your system, and how to build and use this
+package. Its styles can be invoked at run time via the "-sf omp" or
+"-suffix omp" "command-line switches"_Section_start.html#start_7.
+Also see the "KOKKOS"_#KOKKOS, "OPT"_#OPT, and
+"USER-INTEL"_#USER-INTEL packages, which have styles optimized for
+CPUs.
-See this section of the manual to get started:
+[Author:] Axel Kohlmeyer (Temple U).
-"Section 5.3"_Section_accelerate.html#acc_3
+NOTE: The compile flags "-restrict" and "-fopenmp" must be used to
+build LAMMPS with the USER-OMP package, as well as the link flag
+"-fopenmp". They should be added to the CCFLAGS and LINKFLAGS lines
+of your Makefile.machine. See src/MAKE/OPTIONS/Makefile.omp for an
+example.
-The person who created this package is Axel Kohlmeyer at Temple U
-(akohlmey at gmail.com). Contact him directly if you have questions.
+Once you have an appropriate Makefile.machine, you can
+install/un-install the package and build LAMMPS in the usual manner:
-For the USER-OMP package, your Makefile.machine needs additional
-settings for CCFLAGS and LINKFLAGS.
+[Install or un-install:]
+
+make yes-user-omp
+make machine :pre
+
+make no-user-omp
+make machine :pre
CCFLAGS: add -fopenmp and -restrict
LINKFLAGS: add -fopenmp :ul
-Examples: examples/accelerate, bench/KEPLER
+[Supporting info:]
+
+src/USER-OMP: filenames -> commands
+src/USER-OMP/README
+"Section 5.3"_Section_accelerate.html#acc_3
+"Section 5.3.4"_accelerate_omp.html
+"Section 2.7 -sf omp"_Section_start.html#start_7
+"Section 2.7 -pk omp"_Section_start.html#start_7
+"package omp"_package.html
+Styles sections of "Section 3.5"_Section_commands.html#cmd_5 for styles followed by (o)
+"Benchmarks page"_http://lammps.sandia.gov/bench.html of web site :ul
:line
-USER-PHONON package :link(USER-PHONON),h5
+USER-PHONON package :link(USER-PHONON),h4
-This package contains a fix phonon command that calculates dynamical
+[Contents:]
+
+A "fix phonon"_fix_phonon.html command that calculates dynamical
matrices, which can then be used to compute phonon dispersion
relations, directly from molecular dynamics simulations.
-See this doc page to get started:
+[Author:] Ling-Ti Kong (Shanghai Jiao Tong University).
+[Install or un-install:]
+
+make yes-user-phonon
+make machine :pre
+
+make no-user-phonon
+make machine :pre
+
+[Supporting info:]
+
+src/USER-PHONON: filenames -> commands
+src/USER-PHONON/README
"fix phonon"_fix_phonon.html
-
-The person who created this package is Ling-Ti Kong (konglt at
-sjtu.edu.cn) at Shanghai Jiao Tong University. Contact him directly
-if you have questions.
-
-Examples: examples/USER/phonon
+examples/USER/phonon :ul
:line
-USER-QMMM package :link(USER-QMMM),h5
+USER-QMMM package :link(USER-QMMM),h4
-Supporting info:
+[Contents:]
-This package provides a fix qmmm command which allows LAMMPS to be
-used in a QM/MM simulation, currently only in combination with pw.x
-code from the "Quantum ESPRESSO"_espresso package.
+A "fix qmmm"_fix_qmmm.html command which allows LAMMPS to be used in a
+QM/MM simulation, currently only in combination with the "Quantum
+ESPRESSO"_espresso package.
:link(espresso,http://www.quantum-espresso.org)
+To use this package you must have Quantum ESPRESSO available on your
+system.
+
The current implementation only supports an ONIOM style mechanical
coupling to the Quantum ESPRESSO plane wave DFT package.
Electrostatic coupling is in preparation and the interface has been
written in a manner that coupling to other QM codes should be possible
without changes to LAMMPS itself.
-See this doc page to get started:
+[Author:] Axel Kohlmeyer (Temple U).
-"fix qmmm"_fix_qmmm.html
+[Install or un-install:]
-as well as the lib/qmmm/README file.
+Before building LAMMPS with this package, you must first build the
+QMMM library in lib/qmmm. You can do this manually if you prefer;
+follow the first two steps explained in lib/colvars/README. You can
+also do it in one step from the lammps/src dir, using a command like
+these, which simply invoke the lib/colvars/Install.py script with the
+specified args:
-The person who created this package is Axel Kohlmeyer at Temple U
-(akohlmey at gmail.com). Contact him directly if you have questions.
+make lib-qmmm # print help message
+make lib-qmmm args="-m gfortran" # build with GNU Fortran compiler :pre
+
+The build should produce two files: lib/qmmm/libqmmm.a and
+lib/qmmm/Makefile.lammps. The latter is copied from an existing
+Makefile.lammps.* and has settings needed to build LAMMPS with the
+QMMM library (though typically the settings are just blank). If
+necessary, you can edit/create a new lib/qmmm/Makefile.machine file
+for your system, which should define an EXTRAMAKE variable to specify
+a corresponding Makefile.lammps.machine file.
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
+
+make yes-user-qmmm
+make machine :pre
+
+make no-user-qmmm
+make machine :pre
+
+NOTE: The LAMMPS executable these steps produce is not yet functional
+for a QM/MM simulation. You must also build Quantum ESPRESSO and
+create a new executable which links LAMMPS and Quanutm ESPRESSO
+together. These are steps 3 and 4 described in the lib/qmmm/README
+file.
+
+[Supporting info:]
+
+src/USER-QMMM: filenames -> commands
+src/USER-QMMM/README
+lib/qmmm/README
+"fix phonon"_fix_phonon.html
+lib/qmmm/example-ec/README
+lib/qmmm/example-mc/README :ul
:line
-USER-QTB package :link(USER-QTB),h5
+USER-QTB package :link(USER-QTB),h4
-Supporting info:
+[Contents:]
-This package provides a self-consistent quantum treatment of the
+Two fixes which provide a self-consistent quantum treatment of
vibrational modes in a classical molecular dynamics simulation. By
coupling the MD simulation to a colored thermostat, it introduces zero
-point energy into the system, alter the energy power spectrum and the
-heat capacity towards their quantum nature. This package could be of
-interest if one wants to model systems at temperatures lower than
-their classical limits or when temperatures ramp up across the
-classical limits in the simulation.
+point energy into the system, altering the energy power spectrum and
+the heat capacity to account for their quantum nature. This is useful
+when modeling systems at temperatures lower than their classical
+limits or when temperatures ramp across the classical limits in a
+simulation.
-See these two doc pages to get started:
+[Author:] Yuan Shen (Stanford U).
-"fix qtb"_fix_qtb.html provides quantum nulcear correction through a
-colored thermostat and can be used with other time integration schemes
-like "fix nve"_fix_nve.html or "fix nph"_fix_nh.html.
+[Install or un-install:]
+
+make yes-user-qtb
+make machine :pre
+
+make no-user-qtb
+make machine :pre
+
+[Supporting info:]
-"fix qbmsst"_fix_qbmsst.html enables quantum nuclear correction of a
-multi-scale shock technique simulation by coupling the quantum thermal
-bath with the shocked system.
-
-The person who created this package is Yuan Shen (sy0302 at
-stanford.edu) at Stanford University. Contact him directly if you
-have questions.
-
-Examples: examples/USER/qtb
+src/USER-QTB: filenames -> commands
+src/USER-QTB/README
+"fix qtb"_fix_qtb.html
+"fix qbmsst"_fix_qbmsst.html
+examples/USER/qtb :ul
:line
-USER-QUIP package :link(USER-QUIP),h5
+USER-QUIP package :link(USER-QUIP),h4
-Supporting info:
+[Contents:]
-Examples: examples/USER/quip
+A "pair_style quip"_pair_quip.html command which wraps the "QUIP
+libAtoms library"_quip, which includes a variety of interatomic
+potentials, including Gaussian Approximation Potential (GAP) models
+developed by the Cambridge University group.
+
+:link(quip,https://github.com/libAtoms/QUIP)
+
+To use this package you must have the QUIP libAatoms library available
+on your system.
+
+[Author:] Albert Bartok (Cambridge University)
+
+[Install or un-install:]
+
+Note that to follow these steps to compile and link to the QUIP
+library, you must first download and build QUIP on your systems. It
+can be obtained from GitHub. See step 1 and step 1.1 in the
+lib/quip/README file for details on how to do this. Note that it
+requires setting two environment variables, QUIP_ROOT and QUIP_ARCH,
+which will be accessed by the lib/quip/Makefile.lammps file which is
+used when you compile and link LAMMPS with this package. You should
+only need to edit this file if the LAMMPS build can not use its
+settings to successfully build on your system.
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
+
+make yes-user-quip
+make machine :pre
+
+make no-user-quip
+make machine :pre
+
+[Supporting info:]
+
+src/USER-QUIP: filenames -> commands
+src/USER-QUIP/README
+"pair_style quip"_pair_quip.html
+examples/USER/quip :ul
:line
-USER-REAXC package :link(USER-REAXC),h5
+USER-REAXC package :link(USER-REAXC),h4
-Supporting info:
+[Contents:]
-This package contains a implementation for LAMMPS of the ReaxFF force
-field. ReaxFF uses distance-dependent bond-order functions to
-represent the contributions of chemical bonding to the potential
-energy. It was originally developed by Adri van Duin and the Goddard
-group at CalTech.
+A pair style which implements the ReaxFF potential in C/C++ (in
+contrast to the "REAX package"_#REAX and its Fortran library). ReaxFF
+is universal reactive force field. See the src/USER-REAXC/README file
+for more info on differences between the two packages. Also two fixes
+for monitoring molecules as bonds are created and destroyed.
-The USER-REAXC version of ReaxFF (pair_style reax/c), implemented in
-C, should give identical or very similar results to pair_style reax,
-which is a ReaxFF implementation on top of a Fortran library, a
-version of which library was originally authored by Adri van Duin.
+[Author:] Hasan Metin Aktulga (MSU) while at Purdue University.
-The reax/c version should be somewhat faster and more scalable,
-particularly with respect to the charge equilibration calculation. It
-should also be easier to build and use since there are no complicating
-issues with Fortran memory allocation or linking to a Fortran library.
+[Install or un-install:]
+
+make yes-user-reaxc
+make machine :pre
+
+make no-user-reaxc
+make machine :pre
+
+[Supporting info:]
-For technical details about this implementation of ReaxFF, see
-this paper:
-
-Parallel and Scalable Reactive Molecular Dynamics: Numerical Methods
-and Algorithmic Techniques, H. M. Aktulga, J. C. Fogarty,
-S. A. Pandit, A. Y. Grama, Parallel Computing, in press (2011).
-
-See the doc page for the pair_style reax/c command for details
-of how to use it in LAMMPS.
-
-The person who created this package is Hasan Metin Aktulga (hmaktulga
-at lbl.gov), while at Purdue University. Contact him directly, or
-Aidan Thompson at Sandia (athomps at sandia.gov), if you have
-questions.
-
-Examples: examples/reax
+src/USER-REAXC: filenames -> commands
+src/USER-REAXC/README
+"pair_style reax/c"_pair_reaxc.html
+"fix reax/c/bonds"_fix_reax_bonds.html
+"fix reax/c/species"_fix_reaxc_species.html
+examples/reax :ul
:line
-USER-SMD package :link(USER-SMD),h5
+USER-SMD package :link(USER-SMD),h4
-Supporting info:
+[Contents:]
-This package implements smoothed Mach dynamics (SMD) in
-LAMMPS. Currently, the package has the following features:
+An atom style, fixes, computes, and several pair styles which
+implements smoothed Mach dynamics (SMD) for solids, which is a model
+related to smoothed particle hydrodynamics (SPH) for liquids (see the
+"USER-SPH package"_#USER-SPH).
-* Does liquids via traditional Smooth Particle Hydrodynamics (SPH)
+This package solves solids mechanics problems via a state of the art
+stabilized meshless method with hourglass control. It can specify
+hydrostatic interactions independently from material strength models,
+i.e. pressure and deviatoric stresses are separated. It provides many
+material models (Johnson-Cook, plasticity with hardening,
+Mie-Grueneisen, Polynomial EOS) and allows new material models to be
+added. It implements rigid boundary conditions (walls) which can be
+specified as surface geometries from *.STL files.
-* Also solves solids mechanics problems via a state of the art
- stabilized meshless method with hourglass control.
+[Author:] Georg Ganzenmuller (Fraunhofer-Institute for High-Speed
+Dynamics, Ernst Mach Institute, Germany).
-* Can specify hydrostatic interactions independently from material
- strength models, i.e. pressure and deviatoric stresses are separated.
+[Install or un-install:]
-* Many material models available (Johnson-Cook, plasticity with
- hardening, Mie-Grueneisen, Polynomial EOS). Easy to add new
- material models.
+Before building LAMMPS with this package, you must first download the
+Eigen library. Eigen is a template library, so you do not need to
+build it, just download it. You can do this manually if you prefer;
+follow the instructions in lib/smd/README. You can also do it in one
+step from the lammps/src dir, using a command like these, which simply
+invoke the lib/smd/Install.py script with the specified args:
-* Rigid boundary conditions (walls) can be loaded as surface geometries
- from *.STL files.
+make lib-smd # print help message
+make lib-smd args="-g -l" # download in default lib/smd/eigen-eigen-*
+make lib-smd args="-h . eigen -g -l" # download in lib/smd/eigen
+make lib-smd args="-h ~ eigen -g -l" # download and build in ~/eigen :pre
-See the file doc/PDF/SMD_LAMMPS_userguide.pdf to get started.
+Note that the final -l switch is to create a symbolic (soft) link
+named "includelink" in lib/smd to point to the Eigen dir. When LAMMPS
+builds it will use this link. You should not need to edit the
+lib/smd/Makefile.lammps file.
-There are example scripts for using this package in examples/USER/smd.
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
-The person who created this package is Georg Ganzenmuller at the
-Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in
-Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if
-you have questions.
+make yes-user-smd
+make machine :pre
+
+make no-user-smd
+make machine :pre
+
+[Supporting info:]
-Examples: examples/USER/smd
+src/USER-SMD: filenames -> commands
+src/USER-SMD/README
+doc/PDF/SMD_LAMMPS_userguide.pdf
+examples/USER/smd
+http://lammps.sandia.gov/movies.html#smd :ul
:line
-USER-SMTBQ package :link(USER-SMTBQ),h5
+USER-SMTBQ package :link(USER-SMTBQ),h4
-Supporting info:
+[Contents:]
-This package implements the Second Moment Tight Binding - QEq (SMTB-Q)
-potential for the description of ionocovalent bonds in oxides.
+A pair style which implements a Second Moment Tight Binding model with
+QEq charge equilibration (SMTBQ) potential for the description of
+ionocovalent bonds in oxides.
-There are example scripts for using this package in
-examples/USER/smtbq.
+[Authors:] Nicolas Salles, Emile Maras, Olivier Politano, and Robert
+Tetot (LAAS-CNRS, France).
-See this doc page to get started:
+[Install or un-install:]
+
+make yes-user-smtbq
+make machine :pre
+
+make no-user-smtbq
+make machine :pre
+
+[Supporting info:]
+src/USER-SMTBQ: filenames -> commands
+src/USER-SMTBQ/README
"pair_style smtbq"_pair_smtbq.html
-
-The persons who created the USER-SMTBQ package are Nicolas Salles,
-Emile Maras, Olivier Politano, Robert Tetot, who can be contacted at
-these email addresses: lammps@u-bourgogne.fr, nsalles@laas.fr. Contact
-them directly if you have any questions.
-
-Examples: examples/USER/smtbq
+examples/USER/smtbq :ul
:line
-USER-SPH package :link(USER-SPH),h5
+USER-SPH package :link(USER-SPH),h4
-Supporting info:
+[Contents:]
-This package implements smoothed particle hydrodynamics (SPH) in
-LAMMPS. Currently, the package has the following features:
+An atom style, fixes, computes, and several pair styles which
+implements smoothed particle hydrodynamics (SPH) for liquids. See the
+related "USER-SMD package"_#USER-SMD package for smooth Mach dynamics
+(SMD) for solids.
-* Tait, ideal gas, Lennard-Jones equation of states, full support for
- complete (i.e. internal-energy dependent) equations of state
+This package contains ideal gas, Lennard-Jones equation of states,
+Tait, and full support for complete (i.e. internal-energy dependent)
+equations of state. It allows for plain or Monaghans XSPH integration
+of the equations of motion. It has options for density continuity or
+density summation to propagate the density field. It has
+"set"_set.html command options to set the internal energy and density
+of particles from the input script and allows the same quantities to
+be output with thermodynamic output or to dump files via the "compute
+property/atom"_compute_property_atom.html command.
-* Plain or Monaghans XSPH integration of the equations of motion
+[Author:] Georg Ganzenmuller (Fraunhofer-Institute for High-Speed
+Dynamics, Ernst Mach Institute, Germany).
-* Density continuity or density summation to propagate the density field
+[Install or un-install:]
+
+make yes-user-sph
+make machine :pre
+
+make no-user-sph
+make machine :pre
+
+[Supporting info:]
-* Commands to set internal energy and density of particles from the
- input script
-
-* Output commands to access internal energy and density for dumping and
- thermo output
-
-See the file doc/PDF/SPH_LAMMPS_userguide.pdf to get started.
-
-There are example scripts for using this package in examples/USER/sph.
-
-The person who created this package is Georg Ganzenmuller at the
-Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute in
-Germany (georg.ganzenmueller at emi.fhg.de). Contact him directly if
-you have questions.
-
-Examples: examples/USER/sph
+src/USER-SPH: filenames -> commands
+src/USER-SPH/README
+doc/PDF/SPH_LAMMPS_userguide.pdf
+examples/USER/sph
+http://lammps.sandia.gov/movies.html#sph :ul
:line
-USER-TALLY package :link(USER-TALLY),h5
+USER-TALLY package :link(USER-TALLY),h4
-Supporting info:
+[Contents:]
-Examples: examples/USER/tally
+Several compute styles that can be called when pairwise interactions
+are calculated to tally information (forces, heat flux, energy,
+stress, etc) about individual interactions.
+
+[Author:] Axel Kohlmeyer (Temple U).
+
+[Install or un-install:]
+
+make yes-user-tally
+make machine :pre
+
+make no-user-tally
+make machine :pre
+
+[Supporting info:]
+
+src/USER-TALLY: filenames -> commands
+src/USER-TALLY/README
+"compute */tally"_compute_tally.html
+examples/USER/tally :ul
:line
-USER-VTK package :link(USER-VTK),h5
+USER-VTK package :link(USER-VTK),h4
+[Contents:]
+
+A "dump custom/vtk"_dump_custom_vtk.html command which outputs
+snapshot info in the "VTK format"_vtk, enabling visualization by
+"Paraview"_paraview or other visuzlization packages.
+
+:link(vtk,http://www.vtk.org)
+:link(paraview,http://www.paraview.org)
+
+To use this package you must have VTK library available on your
+system.
+
+[Authors:] Richard Berger (JKU) and Daniel Queteschiner (DCS Computing).
+
+[Install or un-install:]
+
+The lib/vtk/Makefile.lammps file has settings for accessing VTK files
+and its library, which are required for LAMMPS to build and link with
+this package. If the settings are not valid for your system, check if
+one of the other lib/vtk/Makefile.lammps.* files is compatible and
+copy it to Makefile.lammps. If none of the provided files work, you
+will need to edit the Makefile.lammps file.
+
+You can then install/un-install the package and build LAMMPS in the
+usual manner:
+
+make yes-user-vtk
+make machine :pre
+
+make no-user-vtk
+make machine :pre
+
+[Supporting info:]
+
+src/USER-VTK: filenames -> commands
+src/USER-VTK/README
+lib/vtk/README
+"dump custom/vtk"_dump_custom_vtk.html :ul
diff --git a/doc/src/Section_start.txt b/doc/src/Section_start.txt
index 5a5de9ac9b..0a7209765e 100644
--- a/doc/src/Section_start.txt
+++ b/doc/src/Section_start.txt
@@ -14,12 +14,11 @@ experienced users.
2.1 "What's in the LAMMPS distribution"_#start_1
2.2 "Making LAMMPS"_#start_2
2.3 "Making LAMMPS with optional packages"_#start_3
-2.4 "Building LAMMPS via the Make.py script"_#start_4
-2.5 "Building LAMMPS as a library"_#start_5
-2.6 "Running LAMMPS"_#start_6
-2.7 "Command-line options"_#start_7
-2.8 "Screen output"_#start_8
-2.9 "Tips for users of previous versions"_#start_9 :all(b)
+2.5 "Building LAMMPS as a library"_#start_4
+2.6 "Running LAMMPS"_#start_5
+2.7 "Command-line options"_#start_6
+2.8 "Screen output"_#start_7
+2.9 "Tips for users of previous versions"_#start_8 :all(b)
:line
@@ -80,7 +79,7 @@ This section has the following sub-sections:
Read this first :h5,link(start_2_1)
-If you want to avoid building LAMMPS yourself, read the preceding
+If you want to avoid building LAMMPS yourself, read the preceeding
section about options available for downloading and installing
executables. Details are discussed on the "download"_download page.
@@ -96,7 +95,7 @@ make serial :pre
Note that on a facility supercomputer, there are often "modules"
loaded in your environment that provide the compilers and MPI you
should use. In this case, the "mpicxx" compile/link command in
-Makefile.mpi should just work by accessing those modules.
+Makefile.mpi should simply work by accessing those modules.
It may be the case that one of the other Makefile.machine files in the
src/MAKE sub-directories is a better match to your system (type "make"
@@ -107,33 +106,35 @@ make stampede :pre
If any of these builds (with an existing Makefile.machine) works on
your system, then you're done!
+If you need to install an optional package with a LAMMPS command you
+want to use, and the package does not depend on an extra library, you
+can simply type
+
+make name :pre
+
+before invoking (or re-invoking) the above steps. "Name" is the
+lower-case name of the package, e.g. replica or user-misc.
+
If you want to do one of the following:
-use optional LAMMPS features that require additional libraries
-use optional packages that require additional libraries
-use optional accelerator packages that require special compiler/linker settings
-run on a specialized platform that has its own compilers, settings, or other libs to use :ul
+use a LAMMPS command that requires an extra library (e.g. "dump image"_dump_image.html)
+build with a package that requires an extra library
+build with an accelerator package that requires special compiler/linker settings
+run on a machine that has its own compilers, settings, or libraries :ul
then building LAMMPS is more complicated. You may need to find where
-auxiliary libraries exist on your machine or install them if they
-don't. You may need to build additional libraries that are part of
-the LAMMPS package, before building LAMMPS. You may need to edit a
+extra libraries exist on your machine or install them if they don't.
+You may need to build extra libraries that are included in the LAMMPS
+distribution, before building LAMMPS itself. You may need to edit a
Makefile.machine file to make it compatible with your system.
-Note that there is a Make.py tool in the src directory that automates
-several of these steps, but you still have to know what you are doing.
-"Section 2.4"_#start_4 below describes the tool. It is a convenient
-way to work with installing/un-installing various packages, the
-Makefile.machine changes required by some packages, and the auxiliary
-libraries some of them use.
-
Please read the following sections 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 compilation, linking, and run problems that users have are
-often not really LAMMPS issues - they are peculiar to the user's
-system, compilers, libraries, etc. Such questions are better answered
-by a local expert.
+you. Many compilation, linking, and run problems users experience are
+often not LAMMPS issues - 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
@@ -251,7 +252,7 @@ re-compile, after typing "make clean" (which will describe different
clean options).
The LMP_INC variable is used to include options that turn on ifdefs
-within the LAMMPS code. The options that are currently recognized are:
+within the LAMMPS code. The options that are currently recogized are:
-DLAMMPS_GZIP
-DLAMMPS_JPEG
@@ -362,7 +363,7 @@ installed on your platform. If MPI is installed on your system in the
usual place (under /usr/local), you also may not need to specify these
3 variables, assuming /usr/local is in your path. On some large
parallel machines which use "modules" for their compile/link
-environments, you may simply need to include the correct module in
+environements, you may simply need to include the correct module in
your build environment, before building LAMMPS. Or the parallel
machine may have a vendor-provided MPI which the compiler has no
trouble finding.
@@ -430,7 +431,7 @@ use the KISS library described above.
You may also need to set the FFT_INC, FFT_PATH, and FFT_LIB variables,
so the compiler and linker can find the needed FFT header and library
files. Note that on some large parallel machines which use "modules"
-for their compile/link environments, you may simply need to include
+for their compile/link environements, you may simply need to include
the correct module in your build environment. Or the parallel machine
may have a vendor-provided FFT library which the compiler has no
trouble finding.
@@ -450,12 +451,13 @@ you must also manually specify the correct library, namely -lsfftw or
The FFT_INC variable also allows for a -DFFT_SINGLE setting that will
use single-precision FFTs with PPPM, which can speed-up long-range
-calculations, particularly in parallel or on GPUs. Fourier transform
+calulations, particularly in parallel or on GPUs. Fourier transform
and related PPPM operations are somewhat insensitive to floating point
truncation errors and thus do not always need to be performed in
double precision. Using the -DFFT_SINGLE setting trades off a little
accuracy for reduced memory use and parallel communication costs for
-transposing 3d FFT data.
+transposing 3d FFT data. Note that single precision FFTs have only
+been tested with the FFTW3, FFTW2, MKL, and KISS FFT options.
Step 7 :h6
@@ -507,13 +509,13 @@ You should get the executable lmp_foo when the build is complete.
Errors that can occur when making LAMMPS: h5 :link(start_2_3)
-NOTE: If an error occurs when building LAMMPS, the compiler or linker
-will state very explicitly what the problem is. The error message
-should give you a hint as to which of the steps above has failed, and
-what you need to do in order to fix it. Building a code with a
-Makefile is a very logical process. The compiler and linker need to
-find the appropriate files and those files need to be compatible with
-LAMMPS source files. When a make fails, there is usually a very
+If an error occurs when building LAMMPS, the compiler or linker will
+state very explicitly what the problem is. The error message should
+give you a hint as to which of the steps above has failed, and what
+you need to do in order to fix it. Building a code with a Makefile is
+a very logical process. The compiler and linker need to find the
+appropriate files and those files need to be compatible with LAMMPS
+settings and source files. When a make fails, there is usually a very
simple reason, which you or a local expert will need to fix.
Here are two non-obvious errors that can occur:
@@ -556,7 +558,8 @@ Typing "make clean-all" or "make clean-machine" will delete *.o object
files created when LAMMPS is built, for either all builds or for a
particular machine.
-Changing the LAMMPS size limits via -DLAMMPS_SMALLBIG or -DLAMMPS_BIGBIG or -DLAMMPS_SMALLSMALL :h6
+Changing the LAMMPS size limits via -DLAMMPS_SMALLBIG or
+-DLAMMPS_BIGBIG or -DLAMMPS_SMALLSMALL :h6
As explained above, any of these 3 settings can be specified on the
LMP_INC line in your low-level src/MAKE/Makefile.foo.
@@ -655,11 +658,6 @@ This section has the following sub-sections:
2.3.3 "Packages that require extra libraries"_#start_3_3
2.3.4 "Packages that require Makefile.machine settings"_#start_3_4 :all(b)
-Note that the following "Section 2.4"_#start_4 describes the Make.py
-tool which can be used to install/un-install packages and build the
-auxiliary libraries which some of them use. It can also auto-edit a
-Makefile.machine to add settings needed by some packages.
-
:line
Package basics: :h5,link(start_3_1)
@@ -669,235 +667,221 @@ are always included, plus optional packages. Packages are groups of
files that enable a specific set of features. For example, force
fields for molecular systems or granular systems are in packages.
-"Section 4"_Section_packages.html in the manual has details
-about all the packages, including specific instructions for building
-LAMMPS with each package, which are covered in a more general manner
+"Section 4"_Section_packages.html in the manual has details about all
+the packages, which come in two flavors: [standard] and [user]
+packages. It also has specific instructions for building LAMMPS with
+any package which requires an extra library. General instructions are
below.
You can see the list of all packages by typing "make package" from
-within the src directory of the LAMMPS distribution. This also lists
-various make commands that can be used to manipulate packages.
+within the src directory of the LAMMPS distribution. It will also
+list various make commands that can be used to manage packages.
If you use a command in a LAMMPS input script that is part of a
package, you must have built LAMMPS with that package, else you will
get an error that the style is invalid or the command is unknown.
-Every command's doc page specifies if it is part of a package. You can
-also type
+Every command's doc page specfies if it is part of a package. You can
+type
lmp_machine -h :pre
to run your executable with the optional "-h command-line
-switch"_#start_7 for "help", which will simply list the styles and
-commands known to your executable, and immediately exit.
-
-There are two kinds of packages in LAMMPS, standard and user packages.
-More information about the contents of standard and user packages is
-given in "Section 4"_Section_packages.html of the manual. The
-difference between standard and user packages is as follows:
-
-Standard packages, such as molecule or kspace, are supported by the
-LAMMPS developers and are written in a syntax and style consistent
-with the rest of LAMMPS. This means we will answer questions about
-them, debug and fix them if necessary, and keep them compatible with
-future changes to LAMMPS.
-
-User packages, such as user-atc or user-omp, have been contributed by
-users, and always begin with the user prefix. If they are a single
-command (single file), they are typically in the user-misc package.
-Otherwise, they are a set of files grouped together which add a
-specific functionality to the code.
-
-User packages don't necessarily meet the requirements of the standard
-packages. If you have problems using a feature provided in a user
-package, you may need to contact the contributor directly to get help.
-Information on how to submit additions you make to LAMMPS as single
-files or either a standard or user-contributed package are given in
-"this section"_Section_modify.html#mod_15 of the documentation.
+switch"_#start_7 for "help", which will list the styles and commands
+known to your executable, and immediately exit.
:line
Including/excluding packages :h5,link(start_3_2)
-To use (or not use) a package you must include it (or exclude it)
-before building LAMMPS. From the src directory, this is typically as
-simple as:
+To use (or not use) a package you must install it (or un-install it)
+before building LAMMPS. From the src directory, this is as simple as:
make yes-colloid
make mpi :pre
or
-make no-manybody
+make no-user-omp
make mpi :pre
-NOTE: You should NOT include/exclude packages and build LAMMPS in a
+NOTE: You should NOT install/un-install packages and build LAMMPS in a
single make command using multiple targets, e.g. make yes-colloid mpi.
This is because the make procedure creates a list of source files that
will be out-of-date for the build if the package configuration changes
within the same command.
-Some packages have individual files that depend on other packages
-being included. LAMMPS checks for this and does the right thing.
-I.e. individual files are only included if their dependencies are
-already included. Likewise, if a package is excluded, other files
+Any package can be installed or not in a LAMMPS build, independent of
+all other packages. However, some packages include files derived from
+files in other packages. LAMMPS checks for this and does the right
+thing. I.e. individual files are only included if their dependencies
+are already included. Likewise, if a package is excluded, other files
dependent on that package are also excluded.
+NOTE: The one exception is that we do not recommend building with both
+the KOKKOS package installed and any of the other acceleration
+packages (GPU, OPT, USER-INTEL, USER-OMP) also installed. This is
+because of how Kokkos sometimes builds using a wrapper compiler which
+can make it difficult to invoke all the compile/link flags correctly
+for both Kokkos and non-Kokkos files.
+
If you will never run simulations that use the features in a
particular packages, there is no reason to include it in your build.
-For some packages, this will keep you from having to build auxiliary
-libraries (see below), and will also produce a smaller executable
-which may run a bit faster.
+For some packages, this will keep you from having to build extra
+libraries, and will also produce a smaller executable which may run a
+bit faster.
-When you download a LAMMPS tarball, these packages are pre-installed
-in the src directory: KSPACE, MANYBODY,MOLECULE, because they are so
-commonly used. When you download LAMMPS source files from the SVN or
-Git repositories, no packages are pre-installed.
+When you download a LAMMPS tarball, three packages are pre-installed
+in the src directory -- KSPACE, MANYBODY, MOLECULE -- because they are
+so commonly used. When you download LAMMPS source files from the SVN
+or Git repositories, no packages are pre-installed.
-Packages are included or excluded by typing "make yes-name" or "make
-no-name", where "name" is the name of the package in lower-case, e.g.
-name = kspace for the KSPACE package or name = user-atc for the
-USER-ATC package. You can also type "make yes-standard", "make
-no-standard", "make yes-std", "make no-std", "make yes-user", "make
-no-user", "make yes-lib", "make no-lib", "make yes-all", or "make
-no-all" to include/exclude various sets of packages. Type "make
-package" to see all of the package-related make options.
+Packages are installed or un-installed by typing
-NOTE: Inclusion/exclusion of a package works by simply moving files
-back and forth between the main src directory and sub-directories with
-the package name (e.g. src/KSPACE, src/USER-ATC), so that the files
-are seen or not seen when LAMMPS is built. After you have included or
-excluded a package, you must re-build LAMMPS.
+make yes-name
+make no-name :pre
-Additional package-related make options exist to help manage LAMMPS
-files that exist in both the src directory and in package
-sub-directories. You do not normally need to use these commands
-unless you are editing LAMMPS files or have downloaded a patch from
-the LAMMPS WWW site.
+where "name" is the name of the package in lower-case, e.g. name =
+kspace for the KSPACE package or name = user-atc for the USER-ATC
+package. You can also type any of these commands:
-Typing "make package-update" or "make pu" will overwrite src files
-with files from the package sub-directories if the package has been
-included. It should be used after a patch is installed, since patches
-only update the files in the package sub-directory, but not the src
-files. Typing "make package-overwrite" will overwrite files in the
-package sub-directories with src files.
+make yes-all | install all packages
+make no-all | un-install all packages
+make yes-standard or make yes-std | install standard packages
+make no-standard or make no-std| un-install standard packages
+make yes-user | install user packages
+make no-user | un-install user packages
+make yes-lib | install packages that require extra libraries
+make no-lib | un-install packages that require extra libraries
+make yes-ext | install packages that require external libraries
+make no-ext | un-install packages that require external libraries :tb(s=|)
+
+which install/un-install various sets of packages. Typing "make
+package" will list all the these commands.
+
+NOTE: Installing or un-installing a package works by simply moving
+files back and forth between the main src directory and
+sub-directories with the package name (e.g. src/KSPACE, src/USER-ATC),
+so that the files are included or excluded when LAMMPS is built.
+After you have installed or un-installed a package, you must re-build
+LAMMPS for the action to take effect.
+
+The following make commands help manage files that exist in both the
+src directory and in package sub-directories. You do not normally
+need to use these commands unless you are editing LAMMPS files or have
+downloaded a patch from the LAMMPS web site.
Typing "make package-status" or "make ps" will show which packages are
-currently included. For those that are included, it will list any
+currently installed. For those that are installed, it will list any
files that are different in the src directory and package
-sub-directory. Typing "make package-diff" lists all differences
-between these files. Again, type "make package" to see all of the
-package-related make options.
+sub-directory.
+
+Typing "make package-update" or "make pu" will overwrite src files
+with files from the package sub-directories if the package is
+installed. It should be used after a patch has been applied, since
+patches only update the files in the package sub-directory, but not
+the src files.
+
+Typing "make package-overwrite" will overwrite files in the package
+sub-directories with src files.
+
+Typing "make package-diff" lists all differences between these files.
+
+Again, just type "make package" to see all of the package-related make
+options.
:line
Packages that require extra libraries :h5,link(start_3_3)
-A few of the standard and user packages require additional auxiliary
-libraries. Many of them are provided with LAMMPS, in which case they
-must be compiled first, before LAMMPS is built, if you wish to include
-that package. If you get a LAMMPS build error about a missing
-library, this is likely the reason. See the
-"Section 4"_Section_packages.html doc page for a list of
-packages that have these kinds of auxiliary libraries.
+A few of the standard and user packages require extra libraries. See
+"Section 4"_Section_packages.html for two tables of packages which
+indicate which ones require libraries. For each such package, the
+Section 4 doc page gives details on how to build the extra library,
+including how to download it if necessary. The basic ideas are
+summarized here.
-The lib directory in the distribution has sub-directories with package
-names that correspond to the needed auxiliary libs, e.g. lib/gpu.
-Each sub-directory has a README file that gives more details. Code
-for most of the auxiliary libraries is included in that directory.
-Examples are the USER-ATC and MEAM packages.
+[System libraries:]
-A few of the lib sub-directories do not include code, but do include
-instructions (and sometimes scripts) that automate the process of
-downloading the auxiliary library and installing it so LAMMPS can link
-to it. Examples are the KIM, VORONOI, USER-MOLFILE, and USER-SMD
-packages.
+Packages in the tables "Section 4"_Section_packages.html with a "sys"
+in the last column link to system libraries that typically already
+exist on your machine. E.g. the python package links to a system
+Python library. If your machine does not have the required library,
+you will have to download and install it on your machine, in either
+the system or user space.
-The lib/python directory (for the PYTHON package) contains only a
-choice of Makefile.lammps.* files. This is because no auxiliary code
-or libraries are needed, only the Python library and other system libs
-that should already available on your system. However, the
-Makefile.lammps file is needed to tell LAMMPS which libs to use and
-where to find them.
+[Internal libraries:]
-For libraries with provided code, the sub-directory README file
-(e.g. lib/atc/README) has instructions on how to build that library.
-This information is also summarized in "Section
-4"_Section_packages.html. Typically this is done by typing
-something like:
+Packages in the tables "Section 4"_Section_packages.html with an "int"
+in the last column link to internal libraries whose source code is
+included with LAMMPS, in the lib/name directory where name is the
+package name. You must first build the library in that directory
+before building LAMMPS with that package installed. E.g. the gpu
+package links to a library you build in the lib/gpu dir. You can
+often do the build in one step by typing "make lib-name args=..."
+from the src dir, with appropriate arguments. You can leave off the
+args to see a help message. See "Section 4"_Section_packages.html for
+details for each package.
-make -f Makefile.g++ :pre
+[External libraries:]
-If one of the provided Makefiles is not appropriate for your system
-you will need to edit or add one. Note that all the Makefiles have a
-setting for EXTRAMAKE at the top that specifies a Makefile.lammps.*
-file.
+Packages in the tables "Section 4"_Section_packages.html with an "ext"
+in the last column link to exernal libraries whose source code is not
+included with LAMMPS. You must first download and install the library
+before building LAMMPS with that package installed. E.g. the voronoi
+package links to the freely available "Voro++ library"_voronoi. You
+can often do the download/build in one step by typing "make lib-name
+args=..." from the src dir, with appropriate arguments. You can leave
+off the args to see a help message. See "Section
+4"_Section_packages.html for details for each package.
-If the library build is successful, it will produce 2 files in the lib
-directory:
+:link(voronoi,http://math.lbl.gov/voro++)
-libpackage.a
-Makefile.lammps :pre
+[Possible errors:]
-The Makefile.lammps file will typically be a copy of one of the
-Makefile.lammps.* files in the library directory.
+There are various common errors which can occur when building extra
+libraries or when building LAMMPS with packages that require the extra
+libraries.
-Note that you must insure that the settings in Makefile.lammps are
-appropriate for your system. If they are not, the LAMMPS build may
-fail. To fix this, you can edit or create a new Makefile.lammps.*
-file for your system, and copy it to Makefile.lammps.
+If you cannot build the extra library itself successfully, you may
+need to edit or create an appropriate Makefile for your machine, e.g.
+with appropriate compiler or system settings. Provided makefiles are
+typically in the lib/name directory. E.g. see the Makefile.* files in
+lib/gpu.
-As explained in the lib/package/README files, the settings in
-Makefile.lammps are used to specify additional system libraries and
-their locations so that LAMMPS can build with the auxiliary library.
-For example, if the MEAM package is used, the auxiliary library
-consists of F90 code, built with a Fortran complier. To link that
-library with LAMMPS (a C++ code) via whatever C++ compiler LAMMPS is
-built with, typically requires additional Fortran-to-C libraries be
-included in the link. Another example are the BLAS and LAPACK
-libraries needed to use the USER-ATC or USER-AWPMD packages.
+The LAMMPS build often uses settings in a lib/name/Makefile.lammps
+file which either exists in the LAMMPS distribution or is created or
+copied from a lib/name/Makefile.lammps.* file when the library is
+built. If those settings are not correct for your machine you will
+need to edit or create an appropriate Makefile.lammps file.
-For libraries without provided code, the sub-directory README file has
-information on where to download the library and how to build it,
-e.g. lib/voronoi/README and lib/smd/README. The README files also
-describe how you must either (a) create soft links, via the "ln"
-command, in those directories to point to where you built or installed
-the packages, or (b) check or edit the Makefile.lammps file in the
-same directory to provide that information.
+Package-specific details for these steps are given in "Section
+4"_Section_packages.html an in README files in the lib/name
+directories.
-Some of the sub-directories, e.g. lib/voronoi, also have an install.py
-script which can be used to automate the process of
-downloading/building/installing the auxiliary library, and setting the
-needed soft links. Type "python install.py" for further instructions.
+[Compiler options needed for accelerator packages:]
-As with the sub-directories containing library code, if the soft links
-or settings in the lib/package/Makefile.lammps files are not correct,
-the LAMMPS build will typically fail.
+Several packages contain code that is optimized for specific hardware,
+e.g. CPU, KNL, or GPU. These are the OPT, GPU, KOKKOS, USER-INTEL,
+and USER-OMP packages. Compiling and linking the source files in
+these accelerator packages for optimal performance requires specific
+settings in the Makefile.machine file you use.
-:line
-
-Packages that require Makefile.machine settings :h5,link(start_3_4)
-
-A few packages require specific settings in Makefile.machine, to
-either build or use the package effectively. These are the
-USER-INTEL, KOKKOS, USER-OMP, and OPT packages, used for accelerating
-code performance on CPUs or other hardware, as discussed in "Section
-5.3"_Section_accelerate.html#acc_3.
-
-A summary of what Makefile.machine changes are needed for each of
-these packages is given in "Section 4"_Section_packages.html.
-The details are given on the doc pages that describe each of these
-accelerator packages in detail:
+A summary of the Makefile.machine settings needed for each of these
+packages is given in "Section 4"_Section_packages.html. More info is
+given on the doc pages that describe each package in detail:
5.3.1 "USER-INTEL package"_accelerate_intel.html
+5.3.2 "GPU package"_accelerate_intel.html
5.3.3 "KOKKOS package"_accelerate_kokkos.html
5.3.4 "USER-OMP package"_accelerate_omp.html
5.3.5 "OPT package"_accelerate_opt.html :all(b)
-You can also look at the following machine Makefiles in
-src/MAKE/OPTIONS, which include the changes. Note that the USER-INTEL
-and KOKKOS packages allow for settings that build LAMMPS for different
-hardware. The USER-INTEL package builds for CPU and the Xeon Phi, the
-KOKKOS package builds for OpenMP, GPUs (Cuda), and the Xeon Phi.
+You can also use or examine the following machine Makefiles in
+src/MAKE/OPTIONS, which include the settings. Note that the
+USER-INTEL and KOKKOS packages can use settings that build LAMMPS for
+different hardware. The USER-INTEL package can be compiled for Intel
+CPUs and KNLs; the KOKKOS package builds for CPUs (OpenMP), GPUs
+(Cuda), and Intel KNLs.
Makefile.intel_cpu
Makefile.intel_phi
@@ -907,127 +891,9 @@ Makefile.kokkos_phi
Makefile.omp
Makefile.opt :ul
-Also note that the Make.py tool, described in the next "Section
-2.4"_#start_4 can automatically add the needed info to an existing
-machine Makefile, using simple command-line arguments.
-
:line
-2.4 Building LAMMPS via the Make.py tool :h4,link(start_4)
-
-The src directory includes a Make.py script, written in Python, which
-can be used to automate various steps of the build process. It is
-particularly useful for working with the accelerator packages, as well
-as other packages which require auxiliary libraries to be built.
-
-The goal of the Make.py tool is to allow any complex multi-step LAMMPS
-build to be performed as a single Make.py command. And you can
-archive the commands, so they can be re-invoked later via the -r
-(redo) switch. If you find some LAMMPS build procedure that can't be
-done in a single Make.py command, let the developers know, and we'll
-see if we can augment the tool.
-
-You can run Make.py from the src directory by typing either:
-
-Make.py -h
-python Make.py -h :pre
-
-which will give you help info about the tool. For the former to work,
-you may need to edit the first line of Make.py to point to your local
-Python. And you may need to insure the script is executable:
-
-chmod +x Make.py :pre
-
-Here are examples of build tasks you can perform with Make.py:
-
-Install/uninstall packages: Make.py -p no-lib kokkos omp intel
-Build specific auxiliary libs: Make.py -a lib-atc lib-meam
-Build libs for all installed packages: Make.py -p cuda gpu -gpu mode=double arch=31 -a lib-all
-Create a Makefile from scratch with compiler and MPI settings: Make.py -m none -cc g++ -mpi mpich -a file
-Augment Makefile.serial with settings for installed packages: Make.py -p intel -intel cpu -m serial -a file
-Add JPG and FFTW support to Makefile.mpi: Make.py -m mpi -jpg -fft fftw -a file
-Build LAMMPS with a parallel make using Makefile.mpi: Make.py -j 16 -m mpi -a exe
-Build LAMMPS and libs it needs using Makefile.serial with accelerator settings: Make.py -p gpu intel -intel cpu -a lib-all file serial :tb(s=:)
-
-The bench and examples directories give Make.py commands that can be
-used to build LAMMPS with the various packages and options needed to
-run all the benchmark and example input scripts. See these files for
-more details:
-
-bench/README
-bench/FERMI/README
-bench/KEPLER/README
-bench/PHI/README
-examples/README
-examples/accelerate/README
-examples/accelerate/make.list :ul
-
-All of the Make.py options and syntax help can be accessed by using
-the "-h" switch.
-
-E.g. typing "Make.py -h" gives
-
-Syntax: Make.py switch args ...
- switches can be listed in any order
- help switch:
- -h prints help and syntax for all other specified switches
- switch for actions:
- -a lib-all, lib-dir, clean, file, exe or machine
- list one or more actions, in any order
- machine is a Makefile.machine suffix, must be last if used
- one-letter switches:
- -d (dir), -j (jmake), -m (makefile), -o (output),
- -p (packages), -r (redo), -s (settings), -v (verbose)
- switches for libs:
- -atc, -awpmd, -colvars, -cuda
- -gpu, -meam, -poems, -qmmm, -reax
- switches for build and makefile options:
- -intel, -kokkos, -cc, -mpi, -fft, -jpg, -png :pre
-
-Using the "-h" switch with other switches and actions gives additional
-info on all the other specified switches or actions. The "-h" can be
-anywhere in the command-line and the other switches do not need their
-arguments. E.g. type "Make.py -h -d -atc -intel" will print:
-
--d dir
- dir = LAMMPS home dir
- if -d not specified, working dir must be lammps/src :pre
-
--atc make=suffix lammps=suffix2
- all args are optional and can be in any order
- make = use Makefile.suffix (def = g++)
- lammps = use Makefile.lammps.suffix2 (def = EXTRAMAKE in makefile) :pre
-
--intel mode
- mode = cpu or phi (def = cpu)
- build Intel package for CPU or Xeon Phi :pre
-
-Note that Make.py never overwrites an existing Makefile.machine.
-Instead, it creates src/MAKE/MINE/Makefile.auto, which you can save or
-rename if desired. Likewise it creates an executable named
-src/lmp_auto, which you can rename using the -o switch if desired.
-
-The most recently executed Make.py command is saved in
-src/Make.py.last. You can use the "-r" switch (for redo) to re-invoke
-the last command, or you can save a sequence of one or more Make.py
-commands to a file and invoke the file of commands using "-r". You
-can also label the commands in the file and invoke one or more of them
-by name.
-
-A typical use of Make.py is to start with a valid Makefile.machine for
-your system, that works for a vanilla LAMMPS build, i.e. when optional
-packages are not installed. You can then use Make.py to add various
-settings (FFT, JPG, PNG) to the Makefile.machine as well as change its
-compiler and MPI options. You can also add additional packages to the
-build, as well as build the needed supporting libraries.
-
-You can also use Make.py to create a new Makefile.machine from
-scratch, using the "-m none" switch, if you also specify what compiler
-and MPI options to use, via the "-cc" and "-mpi" switches.
-
-:line
-
-2.5 Building LAMMPS as a library :h4,link(start_5)
+2.4 Building LAMMPS as a library :h4,link(start_4)
LAMMPS can be built as either a static or shared library, which can
then be called from another application or a scripting language. See
@@ -1063,7 +929,7 @@ src/MAKE/Makefile.foo and perform the build in the directory
Obj_shared_foo. This is so that each file can be compiled with the
-fPIC flag which is required for inclusion in a shared library. The
build will create the file liblammps_foo.so which another application
-can link to dynamically. It will also create a soft link liblammps.so,
+can link to dyamically. It will also create a soft link liblammps.so,
which will point to the most recently built shared library. This is
the file the Python wrapper loads by default.
@@ -1149,7 +1015,7 @@ interface and how to extend it for your needs.
:line
-2.6 Running LAMMPS :h4,link(start_6)
+2.5 Running LAMMPS :h4,link(start_5)
By default, LAMMPS runs by reading commands from standard input. Thus
if you run the LAMMPS executable by itself, e.g.
@@ -1281,7 +1147,7 @@ more processors or setup a smaller problem.
:line
-2.7 Command-line options :h4,link(start_7)
+2.6 Command-line options :h4,link(start_6)
At run time, LAMMPS recognizes several optional command-line switches
which may be used in any order. Either the full word or a one-or-two
@@ -1415,8 +1281,8 @@ LAMMPS is compiled with CUDA=yes.
numa Nm :pre
This option is only relevant when using pthreads with hwloc support.
-In this case Nm defines the number of NUMA regions (typically sockets)
-on a node which will be utilized by a single MPI rank. By default Nm
+In this case Nm defines the number of NUMA regions (typicaly sockets)
+on a node which will be utilizied by a single MPI rank. By default Nm
= 1. If this option is used the total number of worker-threads per
MPI rank is threads*numa. Currently it is always almost better to
assign at least one MPI rank per NUMA region, and leave numa set to
@@ -1480,7 +1346,7 @@ replica runs on on one or a few processors. Note that with MPI
installed on a machine (e.g. your desktop), you can run on more
(virtual) processors than you have physical processors.
-To run multiple independent simulations from one input script, using
+To run multiple independent simulatoins from one input script, using
multiple partitions, see "Section 6.4"_Section_howto.html#howto_4
of the manual. World- and universe-style "variables"_variable.html
are useful in this context.
@@ -1711,7 +1577,7 @@ negative numeric value. It is OK if the first value1 starts with a
:line
-2.8 LAMMPS screen output :h4,link(start_8)
+2.7 LAMMPS screen output :h4,link(start_7)
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
@@ -1759,7 +1625,7 @@ The first section provides a global loop timing summary. The {loop time}
is the total wall time for the section. The {Performance} line is
provided for convenience to help predicting the number of loop
continuations required and for comparing performance with other,
-similar MD codes. The {CPU use} line provides the CPU utilization per
+similar MD codes. The {CPU use} line provides the CPU utilzation per
MPI task; it should be close to 100% times the number of OpenMP
threads (or 1 of no OpenMP). Lower numbers correspond to delays due
to file I/O or insufficient thread utilization.
@@ -1867,7 +1733,7 @@ communication, roughly 75% in the example above.
:line
-2.9 Tips for users of previous LAMMPS versions :h4,link(start_9)
+2.8 Tips for users of previous LAMMPS versions :h4,link(start_8)
The current C++ began with a complete rewrite of LAMMPS 2001, which
was written in F90. Features of earlier versions of LAMMPS are listed
diff --git a/doc/src/Section_tools.txt b/doc/src/Section_tools.txt
index 03611c7cdb..d95c4f0cd4 100644
--- a/doc/src/Section_tools.txt
+++ b/doc/src/Section_tools.txt
@@ -369,15 +369,18 @@ supports it. It has its own WWW page at
msi2lmp tool :h4,link(msi)
-The msi2lmp sub-directory contains a tool for creating LAMMPS input
-data files from BIOVIA's Materias Studio files (formerly Accelrys'
+The msi2lmp sub-directory contains a tool for creating LAMMPS template
+input and data files from BIOVIA's Materias Studio files (formerly Accelrys'
Insight MD code, formerly MSI/Biosym and its Discover MD code).
This tool was written by John Carpenter (Cray), Michael Peachey
(Cray), and Steve Lustig (Dupont). Several people contributed changes
to remove bugs and adapt its output to changes in LAMMPS.
-See the README file for more information.
+This tool has several known limitations and is no longer under active
+development, so there are no changes except for the occasional bugfix.
+
+See the README file in the tools/msi2lmp folder for more information.
:line
diff --git a/doc/src/angle_sdk.txt b/doc/src/angle_sdk.txt
index 785585f840..0cc535e543 100644
--- a/doc/src/angle_sdk.txt
+++ b/doc/src/angle_sdk.txt
@@ -46,7 +46,7 @@ from the pair_style.
[Restrictions:]
This angle style can only be used if LAMMPS was built with the
-USER-CG-CMM package. See the "Making
+USER-CGSDK package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info on packages.
[Related commands:]
diff --git a/doc/src/bonds.txt b/doc/src/bonds.txt
index 3b50f6482f..169d56ecbe 100644
--- a/doc/src/bonds.txt
+++ b/doc/src/bonds.txt
@@ -16,7 +16,6 @@ Bond Styles :h1
bond_none
bond_nonlinear
bond_oxdna
- bond_oxdna2
bond_quartic
bond_table
bond_zero
diff --git a/doc/src/compute_sna_atom.txt b/doc/src/compute_sna_atom.txt
index e2df706473..f82df0d816 100644
--- a/doc/src/compute_sna_atom.txt
+++ b/doc/src/compute_sna_atom.txt
@@ -24,7 +24,7 @@ twojmax = band limit for bispectrum components (non-negative integer) :l
R_1, R_2,... = list of cutoff radii, one for each type (distance units) :l
w_1, w_2,... = list of neighbor weights, one for each type :l
zero or more keyword/value pairs may be appended :l
-keyword = {diagonal} or {rmin0} or {switchflag} or {bzeroflag} :l
+keyword = {diagonal} or {rmin0} or {switchflag} or {bzeroflag} or {quadraticflag}:l
{diagonal} value = {0} or {1} or {2} or {3}
{0} = all j1, j2, j <= twojmax, j2 <= j1
{1} = subset satisfying j1 == j2
@@ -36,7 +36,10 @@ keyword = {diagonal} or {rmin0} or {switchflag} or {bzeroflag} :l
{1} = use switching function
{bzeroflag} value = {0} or {1}
{0} = do not subtract B0
- {1} = subtract B0 :pre
+ {1} = subtract B0
+ {quadraticflag} value = {0} or {1}
+ {0} = do not generate quadratic terms
+ {1} = generate quadratic terms :pre
:ule
[Examples:]
@@ -151,7 +154,7 @@ linear mapping from radial distance to polar angle {theta0} on the
The argument {twojmax} and the keyword {diagonal} define which
bispectrum components are generated. See section below on output for a
detailed explanation of the number of bispectrum components and the
-ordered in which they are listed
+ordered in which they are listed.
The keyword {switchflag} can be used to turn off the switching
function.
@@ -162,6 +165,14 @@ the calculated bispectrum components. This optional keyword is only
available for compute {sna/atom}, as {snad/atom} and {snav/atom}
are unaffected by the removal of constant terms.
+The keyword {quadraticflag} determines whether or not the
+quadratic analogs to the bispectrum quantities are generated.
+These are formed by taking the outer product of the vector
+of bispectrum components with itself.
+See section below on output for a
+detailed explanation of the number of quadratic terms and the
+ordered in which they are listed.
+
NOTE: If you have a bonded system, then the settings of
"special_bonds"_special_bonds.html command can remove pairwise
interactions between atoms in the same bond, angle, or dihedral. This
@@ -180,7 +191,7 @@ command that includes all pairs in the neighbor list.
Compute {sna/atom} calculates a per-atom array, each column
corresponding to a particular bispectrum component. The total number
-of columns and the identities of the bispectrum component contained in
+of columns and the identity of the bispectrum component contained in
each column depend on the values of {twojmax} and {diagonal}, as
described by the following piece of python code:
@@ -213,6 +224,19 @@ block contains six sub-blocks corresponding to the {xx}, {yy}, {zz},
notation. Each of these sub-blocks contains one column for each
bispectrum component, the same as for compute {sna/atom}
+For example, if {K}=30 and ntypes=1, the number of columns in the per-atom
+arrays generated by {sna/atom}, {snad/atom}, and {snav/atom}
+are 30, 90, and 180, respectively. With {quadratic} value=1,
+the numbers of columns are 930, 2790, and 5580, respectively.
+
+If the {quadratic} keyword value is set to 1, then additional
+columns are appended to each per-atom array, corresponding to
+a matrix of quantities that are products of two bispectrum components. If the
+number of bispectrum components is {K}, then the number of matrix elements
+is {K}^2. These are output in subblocks of {K}^2 columns, using the same
+ordering of columns and sub-blocks as was used for the bispectrum
+components.
+
These values can be accessed by any command that uses per-atom values
from a compute as input. See "Section
6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
@@ -231,7 +255,7 @@ LAMMPS"_Section_start.html#start_3 section for more info.
[Default:]
The optional keyword defaults are {diagonal} = 0, {rmin0} = 0,
-{switchflag} = 1, {bzeroflag} = 0.
+{switchflag} = 1, {bzeroflag} = 1, {quadraticflag} = 0,
:line
diff --git a/doc/src/dump.txt b/doc/src/dump.txt
index cb9a5ba741..69a00eb473 100644
--- a/doc/src/dump.txt
+++ b/doc/src/dump.txt
@@ -7,12 +7,12 @@
:line
dump command :h3
-"dump custom/vtk"_dump_custom_vtk.html command :h3
+"dump vtk"_dump_vtk.html command :h3
"dump h5md"_dump_h5md.html command :h3
+"dump molfile"_dump_molfile.html command :h3
+"dump netcdf"_dump_netcdf.html command :h3
"dump image"_dump_image.html command :h3
"dump movie"_dump_image.html command :h3
-"dump molfile"_dump_molfile.html command :h3
-"dump nc"_dump_nc.html command :h3
[Syntax:]
@@ -20,7 +20,7 @@ dump ID group-ID style N file args :pre
ID = user-assigned name for the dump :ulb,l
group-ID = ID of the group of atoms to be dumped :l
-style = {atom} or {atom/gz} or {atom/mpiio} or {cfg} or {cfg/gz} or {cfg/mpiio} or {dcd} or {xtc} or {xyz} or {xyz/gz} or {xyz/mpiio} or {h5md} or {image} or {movie} or {molfile} or {local} or {custom} or {custom/gz} or {custom/mpiio} :l
+style = {atom} or {atom/gz} or {atom/mpiio} or {cfg} or {cfg/gz} or {cfg/mpiio} or {custom} or {custom/gz} or {custom/mpiio} or {dcd} or {h5md} or {image} or or {local} or {molfile} or {movie} or {netcdf} or {netcdf/mpiio} or {vtk} or {xtc} or {xyz} or {xyz/gz} or {xyz/mpiio} :l
N = dump every this many timesteps :l
file = name of file to write dump info to :l
args = list of arguments for a particular style :l
@@ -30,33 +30,22 @@ args = list of arguments for a particular style :l
{cfg} args = same as {custom} args, see below
{cfg/gz} args = same as {custom} args, see below
{cfg/mpiio} args = same as {custom} args, see below
+ {custom}, {custom/gz}, {custom/mpiio} args = see below
{dcd} args = none
+ {h5md} args = discussed on "dump h5md"_dump_h5md.html doc page
+ {image} args = discussed on "dump image"_dump_image.html doc page
+ {local} args = see below
+ {molfile} args = discussed on "dump molfile"_dump_molfile.html doc page
+ {movie} args = discussed on "dump image"_dump_image.html doc page
+ {netcdf} args = discussed on "dump netcdf"_dump_netcdf.html doc page
+ {netcdf/mpiio} args = discussed on "dump netcdf"_dump_netcdf.html doc page
+ {vtk} args = same as {custom} args, see below, also "dump vtk"_dump_vtk.html doc page
{xtc} args = none
- {xyz} args = none :pre
- {xyz/gz} args = none :pre
+ {xyz} args = none
+ {xyz/gz} args = none
{xyz/mpiio} args = none :pre
- {custom/vtk} args = similar to custom args below, discussed on "dump custom/vtk"_dump_custom_vtk.html doc page :pre
-
- {h5md} args = discussed on "dump h5md"_dump_h5md.html doc page :pre
-
- {image} args = discussed on "dump image"_dump_image.html doc page :pre
-
- {movie} args = discussed on "dump image"_dump_image.html doc page :pre
-
- {molfile} args = discussed on "dump molfile"_dump_molfile.html doc page
-
- {nc} args = discussed on "dump nc"_dump_nc.html doc page :pre
-
- {local} args = list of local attributes
- possible attributes = index, c_ID, c_ID\[I\], f_ID, f_ID\[I\]
- index = enumeration of local values
- c_ID = local vector calculated by a compute with ID
- c_ID\[I\] = Ith column of local array calculated by a compute with ID, I can include wildcard (see below)
- f_ID = local vector calculated by a fix with ID
- f_ID\[I\] = Ith column of local array calculated by a fix with ID, I can include wildcard (see below) :pre
-
- {custom} or {custom/gz} or {custom/mpiio} args = list of atom attributes
+{custom} or {custom/gz} or {custom/mpiio} args = list of atom attributes :l
possible attributes = id, mol, proc, procp1, type, element, mass,
x, y, z, xs, ys, zs, xu, yu, zu,
xsu, ysu, zsu, ix, iy, iz,
@@ -94,6 +83,15 @@ args = list of arguments for a particular style :l
v_name = per-atom vector calculated by an atom-style variable with name
d_name = per-atom floating point vector with name, managed by fix property/atom
i_name = per-atom integer vector with name, managed by fix property/atom :pre
+
+{local} args = list of local attributes :l
+ possible attributes = index, c_ID, c_ID\[I\], f_ID, f_ID\[I\]
+ index = enumeration of local values
+ c_ID = local vector calculated by a compute with ID
+ c_ID\[I\] = Ith column of local array calculated by a compute with ID, I can include wildcard (see below)
+ f_ID = local vector calculated by a fix with ID
+ f_ID\[I\] = Ith column of local array calculated by a fix with ID, I can include wildcard (see below) :pre
+
:ule
[Examples:]
diff --git a/doc/src/dump_custom_vtk.txt b/doc/src/dump_custom_vtk.txt
deleted file mode 100644
index d4c16193d8..0000000000
--- a/doc/src/dump_custom_vtk.txt
+++ /dev/null
@@ -1,347 +0,0 @@
- "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
-
-:link(lws,http://lammps.sandia.gov)
-:link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
-
-:line
-
-dump custom/vtk command :h3
-
-[Syntax:]
-
-dump ID group-ID style N file args :pre
-
-ID = user-assigned name for the dump :ulb,l
-group-ID = ID of the group of atoms to be dumped :l
-style = {custom/vtk} :l
-N = dump every this many timesteps :l
-file = name of file to write dump info to :l
-args = list of arguments for a particular style :l
- {custom/vtk} args = list of atom attributes
- possible attributes = id, mol, proc, procp1, type, element, mass,
- x, y, z, xs, ys, zs, xu, yu, zu,
- xsu, ysu, zsu, ix, iy, iz,
- vx, vy, vz, fx, fy, fz,
- q, mux, muy, muz, mu,
- radius, diameter, omegax, omegay, omegaz,
- angmomx, angmomy, angmomz, tqx, tqy, tqz,
- c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :pre
-
- id = atom ID
- mol = molecule ID
- proc = ID of processor that owns atom
- procp1 = ID+1 of processor that owns atom
- type = atom type
- element = name of atom element, as defined by "dump_modify"_dump_modify.html command
- mass = atom mass
- x,y,z = unscaled atom coordinates
- xs,ys,zs = scaled atom coordinates
- xu,yu,zu = unwrapped atom coordinates
- xsu,ysu,zsu = scaled unwrapped atom coordinates
- ix,iy,iz = box image that the atom is in
- vx,vy,vz = atom velocities
- fx,fy,fz = forces on atoms
- q = atom charge
- mux,muy,muz = orientation of dipole moment of atom
- mu = magnitude of dipole moment of atom
- radius,diameter = radius,diameter of spherical particle
- omegax,omegay,omegaz = angular velocity of spherical particle
- angmomx,angmomy,angmomz = angular momentum of aspherical particle
- tqx,tqy,tqz = torque on finite-size particles
- c_ID = per-atom vector calculated by a compute with ID
- c_ID\[I\] = Ith column of per-atom array calculated by a compute with ID, I can include wildcard (see below)
- f_ID = per-atom vector calculated by a fix with ID
- f_ID\[I\] = Ith column of per-atom array calculated by a fix with ID, I can include wildcard (see below)
- v_name = per-atom vector calculated by an atom-style variable with name
- d_name = per-atom floating point vector with name, managed by fix property/atom
- i_name = per-atom integer vector with name, managed by fix property/atom :pre
-:ule
-
-[Examples:]
-
-dump dmpvtk all custom/vtk 100 dump*.myforce.vtk id type vx fx
-dump dmpvtp flow custom/vtk 100 dump*.%.displace.vtp id type c_myD\[1\] c_myD\[2\] c_myD\[3\] v_ke :pre
-
-The style {custom/vtk} is similar to the "custom"_dump.html style but
-uses the VTK library to write data to VTK simple legacy or XML format
-depending on the filename extension specified. This can be either
-{*.vtk} for the legacy format or {*.vtp} and {*.vtu}, respectively,
-for the XML format; see the "VTK
-homepage"_http://www.vtk.org/VTK/img/file-formats.pdf for a detailed
-description of these formats. Since this naming convention conflicts
-with the way binary output is usually specified (see below),
-"dump_modify binary"_dump_modify.html allows to set the binary
-flag for this dump style explicitly.
-
-[Description:]
-
-Dump a snapshot of atom quantities to one or more files every N
-timesteps in a format readable by the "VTK visualization
-toolkit"_http://www.vtk.org or other visualization tools that use it,
-e.g. "ParaView"_http://www.paraview.org. The timesteps on which dump
-output is written can also be controlled by a variable; see the
-"dump_modify every"_dump_modify.html command for details.
-
-Only information for atoms in the specified group is dumped. The
-"dump_modify thresh and region"_dump_modify.html commands can also
-alter what atoms are included; see details below.
-
-As described below, special characters ("*", "%") in the filename
-determine the kind of output.
-
-IMPORTANT NOTE: Because periodic boundary conditions are enforced only
-on timesteps when neighbor lists are rebuilt, the coordinates of an
-atom written to a dump file may be slightly outside the simulation
-box.
-
-IMPORTANT NOTE: Unless the "dump_modify sort"_dump_modify.html
-option is invoked, the lines of atom information written to dump files
-will be in an indeterminate order for each snapshot. This is even
-true when running on a single processor, if the "atom_modify
-sort"_atom_modify.html option is on, which it is by default. In this
-case atoms are re-ordered periodically during a simulation, due to
-spatial sorting. It is also true when running in parallel, because
-data for a single snapshot is collected from multiple processors, each
-of which owns a subset of the atoms.
-
-For the {custom/vtk} style, sorting is off by default. See the
-"dump_modify"_dump_modify.html doc page for details.
-
-:line
-
-The dimensions of the simulation box are written to a separate file
-for each snapshot (either in legacy VTK or XML format depending on
-the format of the main dump file) with the suffix {_boundingBox}
-appended to the given dump filename.
-
-For an orthogonal simulation box this information is saved as a
-rectilinear grid (legacy .vtk or .vtr XML format).
-
-Triclinic simulation boxes (non-orthogonal) are saved as
-hexahedrons in either legacy .vtk or .vtu XML format.
-
-Style {custom/vtk} allows you to specify a list of atom attributes
-to be written to the dump file for each atom. Possible attributes
-are listed above. In contrast to the {custom} style, the attributes
-are rearranged to ensure correct ordering of vector components
-(except for computes and fixes - these have to be given in the right
-order) and duplicate entries are removed.
-
-You cannot specify a quantity that is not defined for a particular
-simulation - such as {q} for atom style {bond}, since that atom style
-doesn't assign charges. Dumps occur at the very end of a timestep,
-so atom attributes will include effects due to fixes that are applied
-during the timestep. An explanation of the possible dump custom/vtk attributes
-is given below. Since position data is required to write VTK files "x y z"
-do not have to be specified explicitly.
-
-The VTK format uses a single snapshot of the system per file, thus
-a wildcard "*" must be included in the filename, as discussed below.
-Otherwise the dump files will get overwritten with the new snapshot
-each time.
-
-:line
-
-Dumps are performed on timesteps that are a multiple of N (including
-timestep 0) and on the last timestep of a minimization if the
-minimization converges. Note that this means a dump will not be
-performed on the initial timestep after the dump command is invoked,
-if the current timestep is not a multiple of N. This behavior can be
-changed via the "dump_modify first"_dump_modify.html command, which
-can also be useful if the dump command is invoked after a minimization
-ended on an arbitrary timestep. N can be changed between runs by
-using the "dump_modify every"_dump_modify.html command.
-The "dump_modify every"_dump_modify.html command
-also allows a variable to be used to determine the sequence of
-timesteps on which dump files are written. In this mode a dump on the
-first timestep of a run will also not be written unless the
-"dump_modify first"_dump_modify.html command is used.
-
-Dump filenames can contain two wildcard characters. If a "*"
-character appears in the filename, then one file per snapshot is
-written and the "*" character is replaced with the timestep value.
-For example, tmp.dump*.vtk becomes tmp.dump0.vtk, tmp.dump10000.vtk,
-tmp.dump20000.vtk, etc. Note that the "dump_modify pad"_dump_modify.html
-command can be used to insure all timestep numbers are the same length
-(e.g. 00010), which can make it easier to read a series of dump files
-in order with some post-processing tools.
-
-If a "%" character appears in the filename, then each of P processors
-writes a portion of the dump file, and the "%" character is replaced
-with the processor ID from 0 to P-1 preceded by an underscore character.
-For example, tmp.dump%.vtp becomes tmp.dump_0.vtp, tmp.dump_1.vtp, ...
-tmp.dump_P-1.vtp, etc. This creates smaller files and can be a fast
-mode of output on parallel machines that support parallel I/O for output.
-
-By default, P = the number of processors meaning one file per
-processor, but P can be set to a smaller value via the {nfile} or
-{fileper} keywords of the "dump_modify"_dump_modify.html command.
-These options can be the most efficient way of writing out dump files
-when running on large numbers of processors.
-
-For the legacy VTK format "%" is ignored and P = 1, i.e., only
-processor 0 does write files.
-
-Note that using the "*" and "%" characters together can produce a
-large number of small dump files!
-
-If {dump_modify binary} is used, the dump file (or files, if "*" or
-"%" is also used) is written in binary format. A binary dump file
-will be about the same size as a text version, but will typically
-write out much faster.
-
-:line
-
-This section explains the atom attributes that can be specified as
-part of the {custom/vtk} style.
-
-The {id}, {mol}, {proc}, {procp1}, {type}, {element}, {mass}, {vx},
-{vy}, {vz}, {fx}, {fy}, {fz}, {q} attributes are self-explanatory.
-
-{Id} is the atom ID. {Mol} is the molecule ID, included in the data
-file for molecular systems. {Proc} is the ID of the processor (0 to
-Nprocs-1) that currently owns the atom. {Procp1} is the proc ID+1,
-which can be convenient in place of a {type} attribute (1 to Ntypes)
-for coloring atoms in a visualization program. {Type} is the atom
-type (1 to Ntypes). {Element} is typically the chemical name of an
-element, which you must assign to each type via the "dump_modify
-element"_dump_modify.html command. More generally, it can be any
-string you wish to associated with an atom type. {Mass} is the atom
-mass. {Vx}, {vy}, {vz}, {fx}, {fy}, {fz}, and {q} are components of
-atom velocity and force and atomic charge.
-
-There are several options for outputting atom coordinates. The {x},
-{y}, {z} attributes write atom coordinates "unscaled", in the
-appropriate distance "units"_units.html (Angstroms, sigma, etc). Use
-{xs}, {ys}, {zs} if you want the coordinates "scaled" to the box size,
-so that each value is 0.0 to 1.0. If the simulation box is triclinic
-(tilted), then all atom coords will still be between 0.0 and 1.0.
-I.e. actual unscaled (x,y,z) = xs*A + ys*B + zs*C, where (A,B,C) are
-the non-orthogonal vectors of the simulation box edges, as discussed
-in "Section 6.12"_Section_howto.html#howto_12.
-
-Use {xu}, {yu}, {zu} if you want the coordinates "unwrapped" by the
-image flags for each atom. Unwrapped means that if the atom has
-passed thru a periodic boundary one or more times, the value is
-printed for what the coordinate would be if it had not been wrapped
-back into the periodic box. Note that using {xu}, {yu}, {zu} means
-that the coordinate values may be far outside the box bounds printed
-with the snapshot. Using {xsu}, {ysu}, {zsu} is similar to using
-{xu}, {yu}, {zu}, except that the unwrapped coordinates are scaled by
-the box size. Atoms that have passed through a periodic boundary will
-have the corresponding coordinate increased or decreased by 1.0.
-
-The image flags can be printed directly using the {ix}, {iy}, {iz}
-attributes. For periodic dimensions, they specify which image of the
-simulation box the atom is considered to be in. An image of 0 means
-it is inside the box as defined. A value of 2 means add 2 box lengths
-to get the true value. A value of -1 means subtract 1 box length to
-get the true value. LAMMPS updates these flags as atoms cross
-periodic boundaries during the simulation.
-
-The {mux}, {muy}, {muz} attributes are specific to dipolar systems
-defined with an atom style of {dipole}. They give the orientation of
-the atom's point dipole moment. The {mu} attribute gives the
-magnitude of the atom's dipole moment.
-
-The {radius} and {diameter} attributes are specific to spherical
-particles that have a finite size, such as those defined with an atom
-style of {sphere}.
-
-The {omegax}, {omegay}, and {omegaz} attributes are specific to
-finite-size spherical particles that have an angular velocity. Only
-certain atom styles, such as {sphere} define this quantity.
-
-The {angmomx}, {angmomy}, and {angmomz} attributes are specific to
-finite-size aspherical particles that have an angular momentum. Only
-the {ellipsoid} atom style defines this quantity.
-
-The {tqx}, {tqy}, {tqz} attributes are for finite-size particles that
-can sustain a rotational torque due to interactions with other
-particles.
-
-The {c_ID} and {c_ID\[I\]} attributes allow per-atom vectors or arrays
-calculated by a "compute"_compute.html to be output. The ID in the
-attribute should be replaced by the actual ID of the compute that has
-been defined previously in the input script. See the
-"compute"_compute.html command for details. There are computes for
-calculating the per-atom energy, stress, centro-symmetry parameter,
-and coordination number of individual atoms.
-
-Note that computes which calculate global or local quantities, as
-opposed to per-atom quantities, cannot be output in a dump custom/vtk
-command. Instead, global quantities can be output by the
-"thermo_style custom"_thermo_style.html command, and local quantities
-can be output by the dump local command.
-
-If {c_ID} is used as a attribute, then the per-atom vector calculated
-by the compute is printed. If {c_ID\[I\]} is used, then I must be in
-the range from 1-M, which will print the Ith column of the per-atom
-array with M columns calculated by the compute. See the discussion
-above for how I can be specified with a wildcard asterisk to
-effectively specify multiple values.
-
-The {f_ID} and {f_ID\[I\]} attributes allow vector or array per-atom
-quantities calculated by a "fix"_fix.html to be output. The ID in the
-attribute should be replaced by the actual ID of the fix that has been
-defined previously in the input script. The "fix
-ave/atom"_fix_ave_atom.html command is one that calculates per-atom
-quantities. Since it can time-average per-atom quantities produced by
-any "compute"_compute.html, "fix"_fix.html, or atom-style
-"variable"_variable.html, this allows those time-averaged results to
-be written to a dump file.
-
-If {f_ID} is used as a attribute, then the per-atom vector calculated
-by the fix is printed. If {f_ID\[I\]} is used, then I must be in the
-range from 1-M, which will print the Ith column of the per-atom array
-with M columns calculated by the fix. See the discussion above for
-how I can be specified with a wildcard asterisk to effectively specify
-multiple values.
-
-The {v_name} attribute allows per-atom vectors calculated by a
-"variable"_variable.html to be output. The name in the attribute
-should be replaced by the actual name of the variable that has been
-defined previously in the input script. Only an atom-style variable
-can be referenced, since it is the only style that generates per-atom
-values. Variables of style {atom} can reference individual atom
-attributes, per-atom atom attributes, thermodynamic keywords, or
-invoke other computes, fixes, or variables when they are evaluated, so
-this is a very general means of creating quantities to output to a
-dump file.
-
-The {d_name} and {i_name} attributes allow to output custom per atom
-floating point or integer properties that are managed by
-"fix property/atom"_fix_property_atom.html.
-
-See "Section 10"_Section_modify.html of the manual for information
-on how to add new compute and fix styles to LAMMPS to calculate
-per-atom quantities which could then be output into dump files.
-
-:line
-
-[Restrictions:]
-
-The {custom/vtk} style does not support writing of gzipped dump files.
-
-The {custom/vtk} dump style is part of the USER-VTK package. It is
-only enabled if LAMMPS was built with that package. See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
-
-To use this dump style, you also must link to the VTK library. See
-the info in lib/vtk/README and insure the Makefile.lammps file in that
-directory is appropriate for your machine.
-
-The {custom/vtk} dump style neither supports buffering nor custom
-format strings.
-
-[Related commands:]
-
-"dump"_dump.html, "dump image"_dump_image.html,
-"dump_modify"_dump_modify.html, "undump"_undump.html
-
-[Default:]
-
-By default, files are written in ASCII format. If the file extension
-is not one of .vtk, .vtp or .vtu, the legacy VTK file format is used.
-
diff --git a/doc/src/dump_h5md.txt b/doc/src/dump_h5md.txt
index d797e633e6..93c87d85b7 100644
--- a/doc/src/dump_h5md.txt
+++ b/doc/src/dump_h5md.txt
@@ -17,9 +17,7 @@ group-ID = ID of the group of atoms to be imaged :l
h5md = style of dump command (other styles {atom} or {cfg} or {dcd} or {xtc} or {xyz} or {local} or {custom} are discussed on the "dump"_dump.html doc page) :l
N = dump every this many timesteps :l
file.h5 = name of file to write to :l
-args = list of data elements to dump, with their dump "subintervals".
-At least one element must be given and image may only be present if
-position is specified first. :l
+args = list of data elements to dump, with their dump "subintervals"
position options
image
velocity options
@@ -29,15 +27,17 @@ position is specified first. :l
box value = {yes} or {no}
create_group value = {yes} or {no}
author value = quoted string :pre
+:ule
-For the elements {position}, {velocity}, {force} and {species}, one
-may specify a sub-interval to write the data only every N_element
+Note that at least one element must be specified and image may only be
+present if position is specified first.
+
+For the elements {position}, {velocity}, {force} and {species}, a
+sub-interval may be specified to write the data only every N_element
iterations of the dump (i.e. every N*N_element time steps). This is
-specified by the option
+specified by this option directly following the element declaration:
- every N_element :pre
-
-that follows directly the element declaration.
+every N_element :pre
:ule
diff --git a/doc/src/dump_nc.txt b/doc/src/dump_nc.txt
deleted file mode 100644
index 0b81ee6a32..0000000000
--- a/doc/src/dump_nc.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
-
-:link(lws,http://lammps.sandia.gov)
-:link(ld,Manual.html)
-:link(lc,Section_commands.html#comm)
-
-:line
-
-dump nc command :h3
-dump nc/mpiio command :h3
-
-[Syntax:]
-
-dump ID group-ID nc N file.nc args
-dump ID group-ID nc/mpiio N file.nc args :pre
-
-ID = user-assigned name for the dump :ulb,l
-group-ID = ID of the group of atoms to be imaged :l
-{nc} or {nc/mpiio} = style of dump command (other styles {atom} or {cfg} or {dcd} or {xtc} or {xyz} or {local} or {custom} are discussed on the "dump"_dump.html doc page) :l
-N = dump every this many timesteps :l
-file.nc = name of file to write to :l
-args = list of per atom data elements to dump, same as for the 'custom' dump style. :l,ule
-
-[Examples:]
-
-dump 1 all nc 100 traj.nc type x y z vx vy vz
-dump_modify 1 append yes at -1 global c_thermo_pe c_thermo_temp c_thermo_press :pre
-
-dump 1 all nc/mpiio 1000 traj.nc id type x y z :pre
-
-[Description:]
-
-Dump a snapshot of atom coordinates every N timesteps in Amber-style
-NetCDF file format. NetCDF files are binary, portable and
-self-describing. This dump style will write only one file on the root
-node. The dump style {nc} uses the "standard NetCDF
-library"_netcdf-home all data is collected on one processor and then
-written to the dump file. Dump style {nc/mpiio} used the "parallel
-NetCDF library"_pnetcdf-home and MPI-IO; it has better performance on
-a larger number of processors. Note that 'nc' outputs all atoms sorted
-by atom tag while 'nc/mpiio' outputs in order of the MPI rank.
-
-In addition to per-atom data, also global (i.e. not per atom, but per
-frame) quantities can be included in the dump file. This can be
-variables, output from computes or fixes data prefixed with v_, c_ and
-f_, respectively. These properties are included via
-"dump_modify"_dump_modify.html {global}.
-
-:link(netcdf-home,http://www.unidata.ucar.edu/software/netcdf/)
-:link(pnetcdf-home,http://trac.mcs.anl.gov/projects/parallel-netcdf/)
-
-:line
-
-[Restrictions:]
-
-The {nc} and {nc/mpiio} dump styles are part of the USER-NC-DUMP
-package. It is only enabled if LAMMPS was built with that
-package. See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info.
-
-:line
-
-[Related commands:]
-
-"dump"_dump.html, "dump_modify"_dump_modify.html, "undump"_undump.html
-
diff --git a/doc/src/dump_netcdf.txt b/doc/src/dump_netcdf.txt
new file mode 100644
index 0000000000..4e82656698
--- /dev/null
+++ b/doc/src/dump_netcdf.txt
@@ -0,0 +1,82 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+dump netcdf command :h3
+dump netcdf/mpiio command :h3
+
+[Syntax:]
+
+dump ID group-ID netcdf N file args
+dump ID group-ID netcdf/mpiio N file args :pre
+
+ID = user-assigned name for the dump :ulb,l
+group-ID = ID of the group of atoms to be imaged :l
+{netcdf} or {netcdf/mpiio} = style of dump command (other styles {atom} or {cfg} or {dcd} or {xtc} or {xyz} or {local} or {custom} are discussed on the "dump"_dump.html doc page) :l
+N = dump every this many timesteps :l
+file = name of file to write dump info to :l
+args = list of atom attributes, same as for "dump_style custom"_dump.html :l,ule
+
+[Examples:]
+
+dump 1 all netcdf 100 traj.nc type x y z vx vy vz
+dump_modify 1 append yes at -1 global c_thermo_pe c_thermo_temp c_thermo_press
+dump 1 all netcdf/mpiio 1000 traj.nc id type x y z :pre
+
+[Description:]
+
+Dump a snapshot of atom coordinates every N timesteps in Amber-style
+NetCDF file format. NetCDF files are binary, portable and
+self-describing. This dump style will write only one file on the root
+node. The dump style {netcdf} uses the "standard NetCDF
+library"_netcdf-home. All data is collected on one processor and then
+written to the dump file. Dump style {netcdf/mpiio} uses the
+"parallel NetCDF library"_pnetcdf-home and MPI-IO to write to the dump
+file in parallel; it has better performance on a larger number of
+processors. Note that style {netcdf} outputs all atoms sorted by atom
+tag while style {netcdf/mpiio} outputs atoms in order of their MPI
+rank.
+
+NetCDF files can be directly visualized via the following tools:
+
+Ovito (http://www.ovito.org/). Ovito supports the AMBER convention and
+all of the above extensions. :ule,b
+
+VMD (http://www.ks.uiuc.edu/Research/vmd/). :l
+
+AtomEye (http://www.libatoms.org/). The libAtoms version of AtomEye
+contains a NetCDF reader that is not present in the standard
+distribution of AtomEye. :l,ule
+
+In addition to per-atom data, global data can be included in the dump
+file, which are the kinds of values output by the
+"thermo_style"_thermo_style.html command . See "Section howto
+6.15"_Section_howto.html#howto_15 for an explanation of per-atom
+versus global data. The global output written into the dump file can
+be from computes, fixes, or variables, by prefixing the compute/fix ID
+or variable name with "c_" or "f_" or "v_" respectively, as in the
+example above. These global values are specified via the "dump_modify
+global"_dump_modify.html command.
+
+:link(netcdf-home,http://www.unidata.ucar.edu/software/netcdf/)
+:link(pnetcdf-home,http://trac.mcs.anl.gov/projects/parallel-netcdf/)
+
+:line
+
+[Restrictions:]
+
+The {netcdf} and {netcdf/mpiio} dump styles are part of the
+USER-NETCDF package. They are only enabled if LAMMPS was built with
+that package. See the "Making LAMMPS"_Section_start.html#start_3
+section for more info.
+
+:line
+
+[Related commands:]
+
+"dump"_dump.html, "dump_modify"_dump_modify.html, "undump"_undump.html
+
diff --git a/doc/src/dump_vtk.txt b/doc/src/dump_vtk.txt
new file mode 100644
index 0000000000..21502e7f49
--- /dev/null
+++ b/doc/src/dump_vtk.txt
@@ -0,0 +1,179 @@
+ "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+dump vtk command :h3
+
+[Syntax:]
+
+dump ID group-ID vtk N file args :pre
+
+ID = user-assigned name for the dump
+group-ID = ID of the group of atoms to be dumped
+vtk = style of dump command (other styles {atom} or {cfg} or {dcd} or {xtc} or {xyz} or {local} or {custom} are discussed on the "dump"_dump.html doc page)
+N = dump every this many timesteps
+file = name of file to write dump info to
+args = same as arguments for "dump_style custom"_dump.html :ul
+
+[Examples:]
+
+dump dmpvtk all vtk 100 dump*.myforce.vtk id type vx fx
+dump dmpvtp flow vtk 100 dump*.%.displace.vtp id type c_myD\[1\] c_myD\[2\] c_myD\[3\] v_ke :pre
+
+[Description:]
+
+Dump a snapshot of atom quantities to one or more files every N
+timesteps in a format readable by the "VTK visualization
+toolkit"_http://www.vtk.org or other visualization tools that use it,
+e.g. "ParaView"_http://www.paraview.org. The timesteps on which dump
+output is written can also be controlled by a variable; see the
+"dump_modify every"_dump_modify.html command for details.
+
+This dump style is similar to "dump_style custom"_dump.html but uses
+the VTK library to write data to VTK simple legacy or XML format
+depending on the filename extension specified for the dump file. This
+can be either {*.vtk} for the legacy format or {*.vtp} and {*.vtu},
+respectively, for XML format; see the "VTK
+homepage"_http://www.vtk.org/VTK/img/file-formats.pdf for a detailed
+description of these formats. Since this naming convention conflicts
+with the way binary output is usually specified (see below), the
+"dump_modify binary"_dump_modify.html command allows setting of a
+binary option for this dump style explicitly.
+
+Only information for atoms in the specified group is dumped. The
+"dump_modify thresh and region"_dump_modify.html commands can also
+alter what atoms are included; see details below.
+
+As described below, special characters ("*", "%") in the filename
+determine the kind of output.
+
+IMPORTANT NOTE: Because periodic boundary conditions are enforced only
+on timesteps when neighbor lists are rebuilt, the coordinates of an
+atom written to a dump file may be slightly outside the simulation
+box.
+
+IMPORTANT NOTE: Unless the "dump_modify sort"_dump_modify.html option
+is invoked, the lines of atom information written to dump files will
+be in an indeterminate order for each snapshot. This is even true
+when running on a single processor, if the "atom_modify
+sort"_atom_modify.html option is on, which it is by default. In this
+case atoms are re-ordered periodically during a simulation, due to
+spatial sorting. It is also true when running in parallel, because
+data for a single snapshot is collected from multiple processors, each
+of which owns a subset of the atoms.
+
+For the {vtk} style, sorting is off by default. See the
+"dump_modify"_dump_modify.html doc page for details.
+
+:line
+
+The dimensions of the simulation box are written to a separate file
+for each snapshot (either in legacy VTK or XML format depending on the
+format of the main dump file) with the suffix {_boundingBox} appended
+to the given dump filename.
+
+For an orthogonal simulation box this information is saved as a
+rectilinear grid (legacy .vtk or .vtr XML format).
+
+Triclinic simulation boxes (non-orthogonal) are saved as
+hexahedrons in either legacy .vtk or .vtu XML format.
+
+Style {vtk} allows you to specify a list of atom attributes to be
+written to the dump file for each atom. The list of possible attributes
+is the same as for the "dump_style custom"_dump.html command; see
+its doc page for a listing and an explanation of each attribute.
+
+NOTE: Since position data is required to write VTK files the atom
+attributes "x y z" do not have to be specified explicitly; they will
+be included in the dump file regardless. Also, in contrast to the
+{custom} style, the specified {vtk} attributes are rearranged to
+ensure correct ordering of vector components (except for computes and
+fixes - these have to be given in the right order) and duplicate
+entries are removed.
+
+The VTK format uses a single snapshot of the system per file, thus
+a wildcard "*" must be included in the filename, as discussed below.
+Otherwise the dump files will get overwritten with the new snapshot
+each time.
+
+:line
+
+Dumps are performed on timesteps that are a multiple of N (including
+timestep 0) and on the last timestep of a minimization if the
+minimization converges. Note that this means a dump will not be
+performed on the initial timestep after the dump command is invoked,
+if the current timestep is not a multiple of N. This behavior can be
+changed via the "dump_modify first"_dump_modify.html command, which
+can also be useful if the dump command is invoked after a minimization
+ended on an arbitrary timestep. N can be changed between runs by
+using the "dump_modify every"_dump_modify.html command.
+The "dump_modify every"_dump_modify.html command
+also allows a variable to be used to determine the sequence of
+timesteps on which dump files are written. In this mode a dump on the
+first timestep of a run will also not be written unless the
+"dump_modify first"_dump_modify.html command is used.
+
+Dump filenames can contain two wildcard characters. If a "*"
+character appears in the filename, then one file per snapshot is
+written and the "*" character is replaced with the timestep value.
+For example, tmp.dump*.vtk becomes tmp.dump0.vtk, tmp.dump10000.vtk,
+tmp.dump20000.vtk, etc. Note that the "dump_modify pad"_dump_modify.html
+command can be used to insure all timestep numbers are the same length
+(e.g. 00010), which can make it easier to read a series of dump files
+in order with some post-processing tools.
+
+If a "%" character appears in the filename, then each of P processors
+writes a portion of the dump file, and the "%" character is replaced
+with the processor ID from 0 to P-1 preceded by an underscore character.
+For example, tmp.dump%.vtp becomes tmp.dump_0.vtp, tmp.dump_1.vtp, ...
+tmp.dump_P-1.vtp, etc. This creates smaller files and can be a fast
+mode of output on parallel machines that support parallel I/O for output.
+
+By default, P = the number of processors meaning one file per
+processor, but P can be set to a smaller value via the {nfile} or
+{fileper} keywords of the "dump_modify"_dump_modify.html command.
+These options can be the most efficient way of writing out dump files
+when running on large numbers of processors.
+
+For the legacy VTK format "%" is ignored and P = 1, i.e., only
+processor 0 does write files.
+
+Note that using the "*" and "%" characters together can produce a
+large number of small dump files!
+
+If {dump_modify binary} is used, the dump file (or files, if "*" or
+"%" is also used) is written in binary format. A binary dump file
+will be about the same size as a text version, but will typically
+write out much faster.
+
+:line
+
+[Restrictions:]
+
+The {vtk} style does not support writing of gzipped dump files.
+
+The {vtk} dump style is part of the USER-VTK package. It is
+only enabled if LAMMPS was built with that package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info.
+
+To use this dump style, you also must link to the VTK library. See
+the info in lib/vtk/README and insure the Makefile.lammps file in that
+directory is appropriate for your machine.
+
+The {vtk} dump style supports neither buffering or custom format
+strings.
+
+[Related commands:]
+
+"dump"_dump.html, "dump image"_dump_image.html,
+"dump_modify"_dump_modify.html, "undump"_undump.html
+
+[Default:]
+
+By default, files are written in ASCII format. If the file extension
+is not one of .vtk, .vtp or .vtu, the legacy VTK file format is used.
+
diff --git a/doc/src/fix_cmap.txt b/doc/src/fix_cmap.txt
index 5fcac589be..2b14a20c1d 100644
--- a/doc/src/fix_cmap.txt
+++ b/doc/src/fix_cmap.txt
@@ -87,8 +87,11 @@ the note below about how to include the CMAP energy when performing an
[Restart, fix_modify, output, run start/stop, minimize info:]
-No information about this fix is written to "binary restart
-files"_restart.html.
+This fix writes the list of CMAP crossterms to "binary restart
+files"_restart.html. See the "read_restart"_read_restart.html command
+for info on how to re-specify a fix in an input script that reads a
+restart file, so that the operation of the fix continues in an
+uninterrupted fashion.
The "fix_modify"_fix_modify.html {energy} option is supported by this
fix to add the potential "energy" of the CMAP interactions system's
diff --git a/doc/src/fix_gcmc.txt b/doc/src/fix_gcmc.txt
index 53973cdfb8..7ac607a2f1 100644
--- a/doc/src/fix_gcmc.txt
+++ b/doc/src/fix_gcmc.txt
@@ -317,7 +317,7 @@ solution is to start a new simulation after the equilibrium density
has been reached.
With some pair_styles, such as "Buckingham"_pair_buck.html,
-"Born-Mayer-Huggins"_pair_born.html and "ReaxFF"_pair_reax_c.html, two
+"Born-Mayer-Huggins"_pair_born.html and "ReaxFF"_pair_reaxc.html, two
atoms placed close to each other may have an arbitrary large, negative
potential energy due to the functional form of the potential. While
these unphysical configurations are inaccessible to typical dynamical
diff --git a/doc/src/fix_gle.txt b/doc/src/fix_gle.txt
index ca7625e2d0..b8d3cc9b34 100644
--- a/doc/src/fix_gle.txt
+++ b/doc/src/fix_gle.txt
@@ -67,9 +67,10 @@ target value as the {Tstart} and {Tstop} arguments, so that the diffusion
matrix that gives canonical sampling for a given A is computed automatically.
However, the GLE framework also allow for non-equilibrium sampling, that
can be used for instance to model inexpensively zero-point energy
-effects "(Ceriotti2)"_#Ceriotti2. This is achieved specifying the
-{noneq} keyword followed by the name of the file that contains the
-static covariance matrix for the non-equilibrium dynamics.
+effects "(Ceriotti2)"_#Ceriotti2. This is achieved specifying the {noneq}
+ keyword followed by the name of the file that contains the static covariance
+matrix for the non-equilibrium dynamics. Please note, that the covariance
+matrix is expected to be given in [temperature units].
Since integrating GLE dynamics can be costly when used together with
simple potentials, one can use the {every} optional keyword to
@@ -148,7 +149,7 @@ dpd/tstat"_pair_dpd.html, "fix gld"_fix_gld.html
1170-80 (2010)
:link(GLE4MD)
-[(GLE4MD)] "http://epfl-cosmo.github.io/gle4md/"_http://epfl-cosmo.github.io/gle4md/
+[(GLE4MD)] "http://gle4md.org/"_http://gle4md.org/
:link(Ceriotti2)
[(Ceriotti2)] Ceriotti, Bussi and Parrinello, Phys Rev Lett 103,
diff --git a/doc/src/fix_qeq.txt b/doc/src/fix_qeq.txt
index f9c8ecde63..22f4766896 100644
--- a/doc/src/fix_qeq.txt
+++ b/doc/src/fix_qeq.txt
@@ -74,7 +74,7 @@ NOTE: The "fix qeq/comb"_fix_qeq_comb.html command must still be used
to perform charge equilibration with the "COMB
potential"_pair_comb.html. The "fix qeq/reax"_fix_qeq_reax.html
command can be used to perform charge equilibration with the "ReaxFF
-force field"_pair_reax_c.html, although fix qeq/shielded yields the
+force field"_pair_reaxc.html, although fix qeq/shielded yields the
same results as fix qeq/reax if {Nevery}, {cutoff}, and {tolerance}
are the same. Eventually the fix qeq/reax command will be deprecated.
@@ -116,7 +116,7 @@ the shielded Coulomb is given by equation (13) of the "ReaxFF force
field"_#vanDuin paper. The shielding accounts for charge overlap
between charged particles at small separation. This style is the same
as "fix qeq/reax"_fix_qeq_reax.html, and can be used with "pair_style
-reax/c"_pair_reax_c.html. Only the {chi}, {eta}, and {gamma}
+reax/c"_pair_reaxc.html. Only the {chi}, {eta}, and {gamma}
parameters from the {qfile} file are used. This style solves partial
charges on atoms via the matrix inversion method. A tolerance of
1.0e-6 is usually a good number.
diff --git a/doc/src/fix_qeq_reax.txt b/doc/src/fix_qeq_reax.txt
index 76c95e1117..aed043f6c0 100644
--- a/doc/src/fix_qeq_reax.txt
+++ b/doc/src/fix_qeq_reax.txt
@@ -30,7 +30,7 @@ fix 1 all qeq/reax 1 0.0 10.0 1.0e-6 param.qeq :pre
Perform the charge equilibration (QEq) method as described in "(Rappe
and Goddard)"_#Rappe2 and formulated in "(Nakano)"_#Nakano2. It is
typically used in conjunction with the ReaxFF force field model as
-implemented in the "pair_style reax/c"_pair_reax_c.html command, but
+implemented in the "pair_style reax/c"_pair_reaxc.html command, but
it can be used with any potential in LAMMPS, so long as it defines and
uses charges on each atom. The "fix qeq/comb"_fix_qeq_comb.html
command should be used to perform charge equilibration with the "COMB
@@ -42,7 +42,7 @@ The QEq method minimizes the electrostatic energy of the system by
adjusting the partial charge on individual atoms based on interactions
with their neighbors. It requires some parameters for each atom type.
If the {params} setting above is the word "reax/c", then these are
-extracted from the "pair_style reax/c"_pair_reax_c.html command and
+extracted from the "pair_style reax/c"_pair_reaxc.html command and
the ReaxFF force field file it reads in. If a file name is specified
for {params}, then the parameters are taken from the specified file
and the file must contain one line for each atom type. The latter
@@ -106,7 +106,7 @@ be used for periodic cell dimensions less than 10 angstroms.
[Related commands:]
-"pair_style reax/c"_pair_reax_c.html
+"pair_style reax/c"_pair_reaxc.html
[Default:] none
diff --git a/doc/src/fix_reax_bonds.txt b/doc/src/fix_reax_bonds.txt
index 1fd1b3ca5a..d3f1087094 100644
--- a/doc/src/fix_reax_bonds.txt
+++ b/doc/src/fix_reax_bonds.txt
@@ -28,7 +28,7 @@ fix 1 all reax/c/bonds 100 bonds.reaxc :pre
Write out the bond information computed by the ReaxFF potential
specified by "pair_style reax"_pair_reax.html or "pair_style
-reax/c"_pair_reax_c.html in the exact same format as the original
+reax/c"_pair_reaxc.html in the exact same format as the original
stand-alone ReaxFF code of Adri van Duin. The bond information is
written to {filename} on timesteps that are multiples of {Nevery},
including timestep 0. For time-averaged chemical species analysis,
@@ -80,7 +80,7 @@ reax"_pair_reax.html be invoked. This fix is part of the REAX
package. It is only enabled if LAMMPS was built with that package,
which also requires the REAX library be built and linked with LAMMPS.
The fix reax/c/bonds command requires that the "pair_style
-reax/c"_pair_reax_c.html be invoked. This fix is part of the
+reax/c"_pair_reaxc.html be invoked. This fix is part of the
USER-REAXC package. It is only enabled if LAMMPS was built with that
package. See the "Making LAMMPS"_Section_start.html#start_3 section
for more info.
@@ -88,6 +88,6 @@ for more info.
[Related commands:]
"pair_style reax"_pair_reax.html, "pair_style
-reax/c"_pair_reax_c.html, "fix reax/c/species"_fix_reaxc_species.html
+reax/c"_pair_reaxc.html, "fix reax/c/species"_fix_reaxc_species.html
[Default:] none
diff --git a/doc/src/fix_reaxc_species.txt b/doc/src/fix_reaxc_species.txt
index 00db91900e..d43a338a66 100644
--- a/doc/src/fix_reaxc_species.txt
+++ b/doc/src/fix_reaxc_species.txt
@@ -41,7 +41,7 @@ fix 1 all reax/c/species 1 100 100 species.out element Au O H position 1000 AuOH
[Description:]
Write out the chemical species information computed by the ReaxFF
-potential specified by "pair_style reax/c"_pair_reax_c.html.
+potential specified by "pair_style reax/c"_pair_reaxc.html.
Bond-order values (either averaged or instantaneous, depending on
value of {Nrepeat}) are used to determine chemical bonds. Every
{Nfreq} timesteps, chemical species information is written to
@@ -65,7 +65,7 @@ symbol printed for each LAMMPS atom type. The number of symbols must
match the number of LAMMPS atom types and each symbol must consist of
1 or 2 alphanumeric characters. Normally, these symbols should be
chosen to match the chemical identity of each LAMMPS atom type, as
-specified using the "reax/c pair_coeff"_pair_reax_c.html command and
+specified using the "reax/c pair_coeff"_pair_reaxc.html command and
the ReaxFF force field file.
The optional keyword {position} writes center-of-mass positions of
@@ -158,8 +158,8 @@ more instructions on how to use the accelerated styles effectively.
[Restrictions:]
The fix species currently only works with
-"pair_style reax/c"_pair_reax_c.html and it requires that the "pair_style
-reax/c"_pair_reax_c.html be invoked. This fix is part of the
+"pair_style reax/c"_pair_reaxc.html and it requires that the "pair_style
+reax/c"_pair_reaxc.html be invoked. This fix is part of the
USER-REAXC package. It is only enabled if LAMMPS was built with that
package. See the "Making LAMMPS"_Section_start.html#start_3 section
for more info.
@@ -170,7 +170,7 @@ It should be possible to extend it to other reactive pair_styles (such as
[Related commands:]
-"pair_style reax/c"_pair_reax_c.html, "fix
+"pair_style reax/c"_pair_reaxc.html, "fix
reax/bonds"_fix_reax_bonds.html
[Default:]
diff --git a/doc/src/improper_cossq.txt b/doc/src/improper_cossq.txt
index 513f0b3151..e238063a8f 100644
--- a/doc/src/improper_cossq.txt
+++ b/doc/src/improper_cossq.txt
@@ -45,12 +45,9 @@ above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands:
-K (energy/radian^2)
+K (energy)
X0 (degrees) :ul
-X0 is specified in degrees, but LAMMPS converts it to radians
-internally; hence the units of K are in energy/radian^2.
-
:line
Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
diff --git a/doc/src/improper_ring.txt b/doc/src/improper_ring.txt
index 705b1cf742..cba59399e7 100644
--- a/doc/src/improper_ring.txt
+++ b/doc/src/improper_ring.txt
@@ -49,12 +49,9 @@ above, or in the data file or restart files read by the
"read_data"_read_data.html or "read_restart"_read_restart.html
commands:
-K (energy/radian^2)
+K (energy)
theta0 (degrees) :ul
-theta0 is specified in degrees, but LAMMPS converts it to radians
-internally; hence the units of K are in energy/radian^2.
-
:line
Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index 6c68955bc9..b2b42aa7e6 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -469,7 +469,7 @@ pair_peri.html
pair_polymorphic.html
pair_quip.html
pair_reax.html
-pair_reax_c.html
+pair_reaxc.html
pair_resquared.html
pair_sdk.html
pair_smd_hertz.html
diff --git a/doc/src/pair_hybrid.txt b/doc/src/pair_hybrid.txt
index 7ef54e7f07..5166fe1f84 100644
--- a/doc/src/pair_hybrid.txt
+++ b/doc/src/pair_hybrid.txt
@@ -73,7 +73,7 @@ pair_coeff command to assign parameters for the different type pairs.
NOTE: There are two exceptions to this option to list an individual
pair style multiple times. The first is for pair styles implemented
as Fortran libraries: "pair_style meam"_pair_meam.html and "pair_style
-reax"_pair_reax.html ("pair_style reax/c"_pair_reax_c.html is OK).
+reax"_pair_reax.html ("pair_style reax/c"_pair_reaxc.html is OK).
This is because unlike a C++ class, they can not be instantiated
multiple times, due to the manner in which they were coded in Fortran.
The second is for GPU-enabled pair styles in the GPU package. This is
@@ -225,6 +225,12 @@ special_bonds lj/coul 1e-20 1e-20 0.5
pair_hybrid tersoff lj/cut/coul/long 12.0
pair_modify pair tersoff special lj/coul 1.0 1.0 1.0 :pre
+For use with the various "compute */tally"_compute_tally.html
+computes, the "pair_modify compute/tally"_pair_modify.html
+command can be used to selectively turn off processing of
+the compute tally styles, for example, if those pair styles
+(e.g. manybody styles) do not support this feature.
+
See the "pair_modify"_pair_modify.html doc page for details on
the specific syntax, requirements and restrictions.
diff --git a/doc/src/pair_modify.txt b/doc/src/pair_modify.txt
index 03fb80ae5e..34dbb5bc3d 100644
--- a/doc/src/pair_modify.txt
+++ b/doc/src/pair_modify.txt
@@ -15,11 +15,13 @@ pair_modify keyword values ... :pre
one or more keyword/value pairs may be listed :ulb,l
keyword = {pair} or {shift} or {mix} or {table} or {table/disp} or {tabinner} or {tabinner/disp} or {tail} or {compute} :l
{pair} values = sub-style N {special} which wt1 wt2 wt3
+ or sub-style N {compute/tally} flag
sub-style = sub-style of "pair hybrid"_pair_hybrid.html
N = which instance of sub-style (only if sub-style is used multiple times)
- {special} which wt1 wt2 wt3 = override {special_bonds} settings (optional)
- which = {lj/coul} or {lj} or {coul}
- w1,w2,w3 = 1-2, 1-3, and 1-4 weights from 0.0 to 1.0 inclusive
+ {special} which wt1 wt2 wt3 = override {special_bonds} settings (optional)
+ which = {lj/coul} or {lj} or {coul}
+ w1,w2,w3 = 1-2, 1-3, and 1-4 weights from 0.0 to 1.0 inclusive
+ {compute/tally} flag = {yes} or {no}
{mix} value = {geometric} or {arithmetic} or {sixthpower}
{shift} value = {yes} or {no}
{table} value = N
@@ -40,6 +42,7 @@ pair_modify shift yes mix geometric
pair_modify tail yes
pair_modify table 12
pair_modify pair lj/cut compute no
+pair_modify pair tersoff compute/tally no
pair_modify pair lj/cut/coul/long 1 special lj/coul 0.0 0.0 0.0 :pre
[Description:]
@@ -60,9 +63,12 @@ keywords will be applied to. Note that if the {pair} keyword is not
used, and the pair style is {hybrid} or {hybrid/overlay}, then all the
specified keywords will be applied to all sub-styles.
-The {special} keyword can only be used in conjunction with the {pair}
-keyword and must directly follow it. It allows to override the
+The {special} and {compute/tally} keywords can [only] be used in
+conjunction with the {pair} keyword and must directly follow it.
+{special} allows to override the
"special_bonds"_special_bonds.html settings for the specified sub-style.
+{compute/tally} allows to disable or enable registering
+"compute */tally"_compute_tally.html computes for a given sub-style.
More details are given below.
The {mix} keyword affects pair coefficients for interactions between
@@ -231,6 +237,14 @@ setting. Substituting 1.0e-10 for 0.0 and 0.9999999999 for 1.0 is
usually a sufficient workaround in this case without causing a
significant error.
+The {compute/tally} keyword takes exactly 1 argument ({no} or {yes}),
+and allows to selectively disable or enable processing of the various
+"compute */tally"_compute_tally.html styles for a given
+"pair hybrid or hybrid/overlay"_pair_hybrid.html sub-style.
+
+NOTE: Any "pair_modify pair compute/tally" command must be issued
+[before] the corresponding compute style is defined.
+
:line
[Restrictions:] none
@@ -240,8 +254,9 @@ conflicting options. You cannot use {tail} yes with 2d simulations.
[Related commands:]
-"pair_style"_pair_style.html, "pair_coeff"_pair_coeff.html,
-"thermo_style"_thermo_style.html
+"pair_style"_pair_style.html, "pair_style hybrid"_pair_hybrid.html,
+pair_coeff"_pair_coeff.html, "thermo_style"_thermo_style.html,
+"compute */tally"_compute_tally.html
[Default:]
diff --git a/doc/src/pair_reax.txt b/doc/src/pair_reax.txt
index 7215c12cee..1d13f93706 100644
--- a/doc/src/pair_reax.txt
+++ b/doc/src/pair_reax.txt
@@ -36,7 +36,7 @@ supplemental information of the following paper:
the most up-to-date version of ReaxFF as of summer 2010.
WARNING: pair style reax is now deprecated and will soon be retired. Users
-should switch to "pair_style reax/c"_pair_reax_c.html. The {reax} style
+should switch to "pair_style reax/c"_pair_reaxc.html. The {reax} style
differs from the {reax/c} style in the lo-level implementation details.
The {reax} style is a
Fortran library, linked to LAMMPS. The {reax/c} style was initially
@@ -82,7 +82,7 @@ be specified.
Two examples using {pair_style reax} are provided in the examples/reax
sub-directory, along with corresponding examples for
-"pair_style reax/c"_pair_reax_c.html. Note that while the energy and force
+"pair_style reax/c"_pair_reaxc.html. Note that while the energy and force
calculated by both of these pair styles match very closely, the
contributions due to the valence angles differ slightly due to
the fact that with {pair_style reax/c} the default value of {thb_cutoff_sq}
@@ -201,7 +201,7 @@ appropriate units if your simulation doesn't use "real" units.
[Related commands:]
-"pair_coeff"_pair_coeff.html, "pair_style reax/c"_pair_reax_c.html,
+"pair_coeff"_pair_coeff.html, "pair_style reax/c"_pair_reaxc.html,
"fix_reax_bonds"_fix_reax_bonds.html
[Default:]
diff --git a/doc/src/pair_reax_c.txt b/doc/src/pair_reaxc.txt
similarity index 96%
rename from doc/src/pair_reax_c.txt
rename to doc/src/pair_reaxc.txt
index c1d719d22e..76a8e6fd5c 100644
--- a/doc/src/pair_reax_c.txt
+++ b/doc/src/pair_reaxc.txt
@@ -17,6 +17,7 @@ cfile = NULL or name of a control file :ulb,l
zero or more keyword/value pairs may be appended :l
keyword = {checkqeq} or {lgvdw} or {safezone} or {mincap}
{checkqeq} value = {yes} or {no} = whether or not to require qeq/reax fix
+ {enobonds} value = {yes} or {no} = whether or not to tally energy of atoms with no bonds
{lgvdw} value = {yes} or {no} = whether or not to use a low gradient vdW correction
{safezone} = factor used for array allocation
{mincap} = minimum size for array allocation :pre
@@ -127,6 +128,13 @@ recommended value for parameter {thb} is 0.01, which can be set in the
control file. Note: Force field files are different for the original
or lg corrected pair styles, using wrong ffield file generates an error message.
+Using the optional keyword {enobonds} with the value {yes}, the energy
+of atoms with no bonds (i.e. isolated atoms) is included in the total
+potential energy and the per-atom energy of that atom. If the value
+{no} is specified then the energy of atoms with no bonds is set to zero.
+The latter behavior is usual not desired, as it causes discontinuities
+in the potential energy when the bonding of an atom drops to zero.
+
Optional keywords {safezone} and {mincap} are used for allocating
reax/c arrays. Increasing these values can avoid memory problems, such
as segmentation faults and bondchk failed errors, that could occur under
@@ -331,7 +339,7 @@ reax"_pair_reax.html
[Default:]
-The keyword defaults are checkqeq = yes, lgvdw = no, safezone = 1.2,
+The keyword defaults are checkqeq = yes, enobonds = yes, lgvdw = no, safezone = 1.2,
mincap = 50.
:line
diff --git a/doc/src/pair_sdk.txt b/doc/src/pair_sdk.txt
index 212760e03d..1c348eaaf7 100644
--- a/doc/src/pair_sdk.txt
+++ b/doc/src/pair_sdk.txt
@@ -134,7 +134,7 @@ respa"_run_style.html command.
[Restrictions:]
-All of the lj/sdk pair styles are part of the USER-CG-CMM package.
+All of the lj/sdk pair styles are part of the USER-CGSDK package.
The {lj/sdk/coul/long} style also requires the KSPACE package to be
built (which is enabled by default). They are only enabled if LAMMPS
was built with that package. See the "Making
diff --git a/doc/src/pair_srp.txt b/doc/src/pair_srp.txt
index 3f54445ba8..e7f1e00d10 100644
--- a/doc/src/pair_srp.txt
+++ b/doc/src/pair_srp.txt
@@ -150,6 +150,8 @@ hybrid"_pair_hybrid.html.
This pair style requires the "newton"_newton.html command to be {on}
for non-bonded interactions.
+This pair style is not compatible with "rigid body integrators"_fix_rigid.html
+
[Related commands:]
"pair_style hybrid"_pair_hybrid.html, "pair_coeff"_pair_coeff.html,
diff --git a/doc/src/pairs.txt b/doc/src/pairs.txt
index 8694747dad..0898906e7c 100644
--- a/doc/src/pairs.txt
+++ b/doc/src/pairs.txt
@@ -73,7 +73,7 @@ Pair Styles :h1
pair_polymorphic
pair_quip
pair_reax
- pair_reax_c
+ pair_reaxc
pair_resquared
pair_sdk
pair_smd_hertz
diff --git a/doc/src/python.txt b/doc/src/python.txt
index a5003be54c..e8a76c0e3e 100644
--- a/doc/src/python.txt
+++ b/doc/src/python.txt
@@ -305,7 +305,7 @@ which corresponds to SELF in the python command. The first line of
the function imports the Python module lammps.py in the python dir of
the distribution. The second line creates a Python object "lmp" which
wraps the instance of LAMMPS that called the function. The
-"ptr=lmpptr" argument is what makes that happen. The thrid line
+"ptr=lmpptr" argument is what makes that happen. The third line
invokes the command() function in the LAMMPS library interface. It
takes a single string argument which is a LAMMPS input script command
for LAMMPS to execute, the same as if it appeared in your input
diff --git a/examples/USER/cg-cmm/README b/examples/USER/cgsdk/README
similarity index 95%
rename from examples/USER/cg-cmm/README
rename to examples/USER/cgsdk/README
index 6a283114ba..5d3a493779 100644
--- a/examples/USER/cg-cmm/README
+++ b/examples/USER/cgsdk/README
@@ -1,4 +1,4 @@
-LAMMPS USER-CMM-CG example problems
+LAMMPS USER-CGSDK example problems
Each of these sub-directories contains a sample problem for the SDK
coarse grained MD potentials that you can run with LAMMPS.
diff --git a/examples/USER/cg-cmm/peg-verlet/data.pegc12e8.gz b/examples/USER/cgsdk/peg-verlet/data.pegc12e8.gz
similarity index 100%
rename from examples/USER/cg-cmm/peg-verlet/data.pegc12e8.gz
rename to examples/USER/cgsdk/peg-verlet/data.pegc12e8.gz
diff --git a/examples/USER/cg-cmm/peg-verlet/in.pegc12e8 b/examples/USER/cgsdk/peg-verlet/in.pegc12e8
similarity index 100%
rename from examples/USER/cg-cmm/peg-verlet/in.pegc12e8
rename to examples/USER/cgsdk/peg-verlet/in.pegc12e8
diff --git a/examples/USER/cg-cmm/peg-verlet/in.pegc12e8-angle b/examples/USER/cgsdk/peg-verlet/in.pegc12e8-angle
similarity index 100%
rename from examples/USER/cg-cmm/peg-verlet/in.pegc12e8-angle
rename to examples/USER/cgsdk/peg-verlet/in.pegc12e8-angle
diff --git a/examples/USER/cg-cmm/peg-verlet/log.pegc12e8 b/examples/USER/cgsdk/peg-verlet/log.pegc12e8
similarity index 100%
rename from examples/USER/cg-cmm/peg-verlet/log.pegc12e8
rename to examples/USER/cgsdk/peg-verlet/log.pegc12e8
diff --git a/examples/USER/cg-cmm/peg-verlet/log.pegc12e8-angle b/examples/USER/cgsdk/peg-verlet/log.pegc12e8-angle
similarity index 100%
rename from examples/USER/cg-cmm/peg-verlet/log.pegc12e8-angle
rename to examples/USER/cgsdk/peg-verlet/log.pegc12e8-angle
diff --git a/examples/USER/cg-cmm/sds-monolayer/data.sds.gz b/examples/USER/cgsdk/sds-monolayer/data.sds.gz
similarity index 100%
rename from examples/USER/cg-cmm/sds-monolayer/data.sds.gz
rename to examples/USER/cgsdk/sds-monolayer/data.sds.gz
diff --git a/examples/USER/cg-cmm/sds-monolayer/in.sds-hybrid b/examples/USER/cgsdk/sds-monolayer/in.sds-hybrid
similarity index 100%
rename from examples/USER/cg-cmm/sds-monolayer/in.sds-hybrid
rename to examples/USER/cgsdk/sds-monolayer/in.sds-hybrid
diff --git a/examples/USER/cg-cmm/sds-monolayer/in.sds-regular b/examples/USER/cgsdk/sds-monolayer/in.sds-regular
similarity index 100%
rename from examples/USER/cg-cmm/sds-monolayer/in.sds-regular
rename to examples/USER/cgsdk/sds-monolayer/in.sds-regular
diff --git a/examples/USER/cg-cmm/sds-monolayer/log.sds-hybrid b/examples/USER/cgsdk/sds-monolayer/log.sds-hybrid
similarity index 100%
rename from examples/USER/cg-cmm/sds-monolayer/log.sds-hybrid
rename to examples/USER/cgsdk/sds-monolayer/log.sds-hybrid
diff --git a/examples/USER/cg-cmm/sds-monolayer/log.sds-regular b/examples/USER/cgsdk/sds-monolayer/log.sds-regular
similarity index 100%
rename from examples/USER/cg-cmm/sds-monolayer/log.sds-regular
rename to examples/USER/cgsdk/sds-monolayer/log.sds-regular
diff --git a/examples/USER/flow_gauss/README b/examples/USER/misc/flow_gauss/README
similarity index 100%
rename from examples/USER/flow_gauss/README
rename to examples/USER/misc/flow_gauss/README
diff --git a/examples/USER/flow_gauss/in.GD b/examples/USER/misc/flow_gauss/in.GD
similarity index 100%
rename from examples/USER/flow_gauss/in.GD
rename to examples/USER/misc/flow_gauss/in.GD
diff --git a/examples/cmap/log.11Apr17.cmap.g++.1 b/examples/cmap/log.11Apr17.cmap.g++.1
new file mode 100644
index 0000000000..9b4fc29991
--- /dev/null
+++ b/examples/cmap/log.11Apr17.cmap.g++.1
@@ -0,0 +1,205 @@
+LAMMPS (31 Mar 2017)
+# Created by charmm2lammps v1.8.2.6 beta on Thu Mar 3 20:56:57 EST 2016
+
+units real
+neigh_modify delay 2 every 1
+#newton off
+
+boundary p p p
+
+atom_style full
+bond_style harmonic
+angle_style charmm
+dihedral_style charmmfsw
+improper_style harmonic
+
+pair_style lj/charmmfsw/coul/charmmfsh 8 12
+pair_modify mix arithmetic
+
+fix cmap all cmap charmm22.cmap
+Reading potential file charmm22.cmap with DATE: 2016-09-26
+fix_modify cmap energy yes
+
+read_data gagg.data fix cmap crossterm CMAP
+ orthogonal box = (-34.4147 -36.1348 -39.3491) to (45.5853 43.8652 40.6509)
+ 1 by 1 by 1 MPI processor grid
+ reading atoms ...
+ 34 atoms
+ scanning bonds ...
+ 4 = max bonds/atom
+ scanning angles ...
+ 6 = max angles/atom
+ scanning dihedrals ...
+ 12 = max dihedrals/atom
+ scanning impropers ...
+ 1 = max impropers/atom
+ reading bonds ...
+ 33 bonds
+ reading angles ...
+ 57 angles
+ reading dihedrals ...
+ 75 dihedrals
+ reading impropers ...
+ 7 impropers
+ 4 = max # of 1-2 neighbors
+ 7 = max # of 1-3 neighbors
+ 13 = max # of 1-4 neighbors
+ 16 = max # of special neighbors
+
+special_bonds charmm
+fix 1 all nve
+
+#fix 1 all nvt temp 300 300 100.0
+#fix 2 all shake 1e-9 500 0 m 1.0
+
+velocity all create 0.0 12345678 dist uniform
+
+thermo 1000
+thermo_style custom step ecoul evdwl ebond eangle edihed f_cmap eimp
+timestep 2.0
+
+run 100000
+Neighbor list info ...
+ update every 1 steps, delay 2 steps, check yes
+ max neighbors/atom: 2000, page size: 100000
+ master list distance cutoff = 14
+ ghost atom cutoff = 14
+ binsize = 7, bins = 12 12 12
+ 1 neighbor lists, perpetual/occasional/extra = 1 0 0
+ (1) pair lj/charmmfsw/coul/charmmfsh, perpetual
+ attributes: half, newton on
+ pair build: half/bin/newton
+ stencil: half/bin/3d/newton
+ bin: standard
+Per MPI rank memory allocation (min/avg/max) = 14.96 | 14.96 | 14.96 Mbytes
+Step E_coul E_vdwl E_bond E_angle E_dihed f_cmap E_impro
+ 0 16.287573 -0.85933785 1.2470497 4.8441789 4.5432816 -1.473352 0.10453023
+ 1000 18.816462 -0.84379243 0.78931817 2.7554247 4.4371421 -2.7762038 0.12697656
+ 2000 18.091571 -1.045888 0.72306589 3.0951524 4.6725102 -2.3580092 0.22712496
+ 3000 17.835596 -1.2171641 0.72666403 2.6696491 5.4373798 -2.0737041 0.075101693
+ 4000 16.211232 -0.42713611 0.99472642 3.8961462 5.2009895 -2.5626866 0.17356243
+ 5000 17.72183 -0.57081189 0.90733068 3.4376382 4.5457582 -2.3727543 0.12354518
+ 6000 18.753977 -1.5772499 0.81468321 2.9236782 4.6033216 -2.3380859 0.12835782
+ 7000 18.186024 -0.84205608 0.58996182 3.0329585 4.7221473 -2.5733243 0.10047631
+ 8000 18.214306 -1.1360938 0.72597611 3.7493028 4.7319958 -2.8957969 0.2006046
+ 9000 17.248408 -0.48641993 0.90266229 2.9721743 4.7651056 -2.1473354 0.1302043
+ 10000 17.760655 -1.2968444 0.92384663 3.7007455 4.7378947 -2.2147779 0.06940579
+ 11000 17.633929 -0.57368413 0.84872849 3.4277114 4.285393 -2.236944 0.17204973
+ 12000 18.305835 -1.0675148 0.75879532 2.8853173 4.685027 -2.409087 0.087538866
+ 13000 17.391558 -0.9975291 0.66671947 3.8065638 5.2285578 -2.4198822 0.06253594
+ 14000 17.483387 -0.67727643 0.91966477 3.7317031 4.7770445 -2.6080027 0.11487095
+ 15000 18.131749 -1.1918751 1.0025684 3.1238131 4.789742 -2.2546745 0.13782813
+ 16000 16.972343 -0.43926531 0.60644597 3.7551592 4.8658618 -2.2627659 0.12353145
+ 17000 18.080785 -1.2073565 0.7867072 3.5671106 4.43754 -2.5092904 0.17429146
+ 18000 17.474576 -0.97836065 0.8678524 3.7961537 4.3409032 -1.8922572 0.134048
+ 19000 17.000911 -1.2286864 0.83615834 3.9322908 4.9319492 -2.3281576 0.056689619
+ 20000 17.043286 -0.8506561 0.80966589 3.5087339 4.8603878 -2.3365263 0.096794824
+ 21000 17.314495 -1.1430889 0.95363892 4.2446032 4.2756745 -2.1829483 0.17119518
+ 22000 18.954881 -0.998673 0.58688334 2.71536 4.6634319 -2.6862804 0.20328442
+ 23000 17.160427 -0.97803282 0.86894041 4.0897736 4.3146238 -2.1962289 0.075339092
+ 24000 17.602026 -1.0833323 0.94888776 3.7341878 4.3084335 -2.1640414 0.081493681
+ 25000 17.845584 -1.3432612 0.93497086 3.8911043 4.468032 -2.3475883 0.093204333
+ 26000 17.833261 -1.1020534 0.77931087 3.7628141 4.512381 -2.3134761 0.15568465
+ 27000 17.68607 -1.3222026 1.1985872 3.5817624 4.6360755 -2.3492774 0.08427906
+ 28000 18.326649 -1.2669291 0.74809075 3.2624429 4.4698564 -2.3679076 0.14677293
+ 29000 17.720933 -1.0773886 0.83099482 3.7652834 4.6584594 -2.8255303 0.23092596
+ 30000 18.201999 -1.0168706 1.0637455 3.453095 4.3738593 -2.8063214 0.18658217
+ 31000 17.823502 -1.2685768 0.84805585 3.8600661 4.2195821 -2.1169716 0.12517101
+ 32000 16.883133 -0.62062648 0.84434922 3.5042683 5.1264906 -2.2674699 0.030138165
+ 33000 17.805715 -1.679553 1.2430372 4.314677 4.2523894 -2.3008321 0.18591872
+ 34000 16.723767 -0.54189072 1.1282827 3.8542159 4.3026559 -2.2186336 0.05392425
+ 35000 17.976909 -0.72092075 0.5876319 2.9726396 5.0881439 -2.491692 0.17356291
+ 36000 18.782492 -1.514246 0.63237955 3.2777164 4.6077164 -2.502574 0.082537318
+ 37000 17.247716 -0.6344626 0.79885976 3.452491 4.7618281 -2.3902444 0.11450271
+ 38000 17.996494 -1.6712877 1.0111769 4.1689136 4.46963 -2.4076725 0.11875756
+ 39000 17.586857 -0.74508086 0.95970486 3.7395038 4.6011357 -2.9854953 0.30143284
+ 40000 17.494879 -0.30772446 0.72047991 3.2604877 4.7283734 -2.3812495 0.16399034
+ 41000 15.855772 -0.49642605 0.82496448 4.5139653 4.76884 -2.214141 0.10899661
+ 42000 17.898568 -1.3078863 1.1505144 4.0429873 4.3889581 -2.8696559 0.23336417
+ 43000 19.014372 -1.6325979 1.1553166 3.5660772 4.4047997 -2.9302044 0.13672127
+ 44000 18.250782 -0.97211613 0.72714301 3.2258362 4.7257298 -2.5533613 0.11968073
+ 45000 17.335174 0.24746331 1.0415866 3.3220992 4.5251095 -3.0415216 0.24453084
+ 46000 17.72846 -0.9541418 0.88153841 3.7893452 4.5251883 -2.4003613 0.051809816
+ 47000 18.226762 -0.67057787 0.84352989 3.0609522 4.5449078 -2.4694254 0.073703949
+ 48000 17.838074 -0.88768441 1.3812262 3.5890492 4.5827868 -3.0137515 0.21417113
+ 49000 17.973733 -0.75118705 0.69667886 3.3989025 4.7058886 -2.8243945 0.26665792
+ 50000 17.461583 -0.65040016 0.68943524 2.9374743 5.6971777 -2.4438011 0.1697603
+ 51000 16.79766 -0.010684434 0.89795555 3.959039 4.56763 -2.5101098 0.15048853
+ 52000 17.566543 -0.7262764 0.74354418 3.3423185 4.8426523 -2.4187649 0.16908776
+ 53000 17.964274 -0.9270914 1.065952 3.0397181 4.4682262 -2.2179503 0.07873406
+ 54000 17.941256 -0.5807578 0.76516121 3.7262371 4.6975126 -3.179899 0.24433708
+ 55000 17.079478 -0.48559832 0.95364453 3.0414645 5.2811414 -2.7064882 0.30102814
+ 56000 17.632179 -0.75403299 0.97577942 3.3672363 4.4851336 -2.3683659 0.051117638
+ 57000 16.17128 -0.44699325 0.76341543 4.267716 5.0881056 -2.4122329 0.16671692
+ 58000 16.899276 -0.76481024 1.0400825 3.973493 4.8823309 -2.4270284 0.048716383
+ 59000 18.145412 -0.84968335 0.71698306 3.2024358 4.6115739 -2.2520353 0.19466966
+ 60000 17.578258 -1.0067331 0.72822527 3.5375208 4.9110255 -2.2319607 0.11922362
+ 61000 17.434762 -1.0244393 0.90593099 3.8446915 4.8571191 -2.6228357 0.23259208
+ 62000 17.580489 -1.1135917 0.79577432 3.7043524 4.6058114 -2.351492 0.042904152
+ 63000 18.207335 -1.1512268 0.82684507 3.4114738 4.351069 -2.1878441 0.082922105
+ 64000 18.333083 -1.1182287 0.74058959 3.6905164 4.3226172 -2.7110393 0.14721704
+ 65000 16.271579 -0.7122151 1.0200168 4.6983643 4.3681131 -2.194921 0.12831024
+ 66000 17.316444 -0.5729385 0.85254108 3.5769963 4.5526705 -2.3321328 0.040452643
+ 67000 17.19011 -0.8814312 1.1381258 3.8605789 4.4183813 -2.299607 0.091527355
+ 68000 18.223367 -1.362189 0.74472056 3.259165 4.486512 -2.2181134 0.048952796
+ 69000 17.646348 -0.91647162 0.73990335 3.9313692 5.2663097 -3.3816778 0.27769877
+ 70000 18.173493 -1.3107718 0.96484426 3.219728 4.5045124 -2.3349534 0.082327407
+ 71000 17.0627 -0.58509083 0.85964129 3.8490884 4.437895 -2.1673348 0.24151404
+ 72000 17.809764 -0.35128902 0.65479258 3.3945008 4.6160508 -2.5486166 0.10829531
+ 73000 18.27769 -1.0739758 0.80890957 3.6070901 4.6256762 -2.4576547 0.080025736
+ 74000 18.109437 -1.0691837 0.66679323 3.5923203 4.4825716 -2.5048169 0.21372319
+ 75000 17.914569 -1.3500765 1.2993494 3.362421 4.4160377 -2.1278163 0.19397641
+ 76000 16.563928 -0.16539261 1.0067302 3.5742755 4.8581915 -2.1362429 0.059822408
+ 77000 18.130477 -0.38361279 0.43406954 3.4725995 4.7005855 -2.8836242 0.11958174
+ 78000 16.746204 -1.1732959 0.7455507 3.6296638 5.6344113 -2.459208 0.16099803
+ 79000 18.243999 -1.5850155 1.0108545 3.4727867 4.3367411 -2.316686 0.070480814
+ 80000 16.960715 -0.84100929 0.91604996 3.862215 4.780949 -2.3711596 0.073916605
+ 81000 17.697722 -1.1126605 0.952804 3.7114455 4.4216316 -2.2770085 0.091372066
+ 82000 17.835901 -1.3091474 0.71867629 3.8168122 5.0150205 -2.4730634 0.062592852
+ 83000 19.168418 -1.476938 0.75592316 3.2304519 4.3946471 -2.2991395 0.13083324
+ 84000 17.945778 -1.5223622 1.0859941 3.4334011 5.0286682 -2.7550892 0.2476269
+ 85000 17.950251 -0.85843846 0.86888218 3.3101287 4.5511879 -2.3640013 0.12080834
+ 86000 17.480699 -0.97493649 0.85049761 3.4973085 4.6344922 -2.343121 0.2009677
+ 87000 17.980244 -1.114983 0.88796989 3.4113329 4.3535853 -2.2535412 0.14494917
+ 88000 18.023866 -1.226683 0.62339706 3.7649269 4.5923973 -2.3923523 0.10464375
+ 89000 16.362829 -0.311462 1.0265375 4.0101723 4.4184777 -2.0314129 0.056570704
+ 90000 17.533149 -0.41526788 1.0362029 3.4247412 4.2734431 -2.4776658 0.16960663
+ 91000 17.719099 -1.1956801 1.0069945 3.2380672 4.8982805 -2.2154906 0.12950936
+ 92000 17.762654 -1.170027 0.95814525 3.5217717 4.5405343 -2.5983677 0.15037754
+ 93000 17.393958 -0.45641026 0.6579069 3.6002204 4.5942053 -2.5559641 0.12026544
+ 94000 16.8182 -0.92962066 0.86801362 4.2914398 4.659848 -2.5251987 0.18000415
+ 95000 17.642086 -0.7994896 0.7003756 3.8036697 4.5252487 -2.4166307 0.15686517
+ 96000 18.114292 -1.5102104 1.2635908 3.2764427 5.0659496 -2.2777806 0.054309645
+ 97000 18.575765 -1.6015311 0.69500699 3.1649317 4.9945742 -2.4012125 0.067373724
+ 98000 16.578893 -0.78030229 0.91524222 4.4429655 4.4622392 -2.4052655 0.15355705
+ 99000 17.26063 -0.57832833 0.7098846 3.9000046 4.5576484 -2.5333026 0.25517222
+ 100000 18.377235 -0.89109577 0.68988617 2.8751751 4.4115591 -2.3560731 0.12185212
+Loop time of 2.96043 on 1 procs for 100000 steps with 34 atoms
+
+Performance: 5836.990 ns/day, 0.004 hours/ns, 33778.875 timesteps/s
+99.9% CPU use with 1 MPI tasks x no OpenMP threads
+
+MPI task timing breakdown:
+Section | min time | avg time | max time |%varavg| %total
+---------------------------------------------------------------
+Pair | 1.074 | 1.074 | 1.074 | 0.0 | 36.28
+Bond | 1.6497 | 1.6497 | 1.6497 | 0.0 | 55.72
+Neigh | 0.007576 | 0.007576 | 0.007576 | 0.0 | 0.26
+Comm | 0.012847 | 0.012847 | 0.012847 | 0.0 | 0.43
+Output | 0.0010746 | 0.0010746 | 0.0010746 | 0.0 | 0.04
+Modify | 0.16485 | 0.16485 | 0.16485 | 0.0 | 5.57
+Other | | 0.05037 | | | 1.70
+
+Nlocal: 34 ave 34 max 34 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Nghost: 0 ave 0 max 0 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Neighs: 395 ave 395 max 395 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+
+Total # of neighbors = 395
+Ave neighs/atom = 11.6176
+Ave special neighs/atom = 9.52941
+Neighbor list builds = 253
+Dangerous builds = 0
+Total wall time: 0:00:02
diff --git a/examples/cmap/log.11Apr17.cmap.g++.4 b/examples/cmap/log.11Apr17.cmap.g++.4
new file mode 100644
index 0000000000..ec471d5a7e
--- /dev/null
+++ b/examples/cmap/log.11Apr17.cmap.g++.4
@@ -0,0 +1,205 @@
+LAMMPS (31 Mar 2017)
+# Created by charmm2lammps v1.8.2.6 beta on Thu Mar 3 20:56:57 EST 2016
+
+units real
+neigh_modify delay 2 every 1
+#newton off
+
+boundary p p p
+
+atom_style full
+bond_style harmonic
+angle_style charmm
+dihedral_style charmmfsw
+improper_style harmonic
+
+pair_style lj/charmmfsw/coul/charmmfsh 8 12
+pair_modify mix arithmetic
+
+fix cmap all cmap charmm22.cmap
+Reading potential file charmm22.cmap with DATE: 2016-09-26
+fix_modify cmap energy yes
+
+read_data gagg.data fix cmap crossterm CMAP
+ orthogonal box = (-34.4147 -36.1348 -39.3491) to (45.5853 43.8652 40.6509)
+ 1 by 2 by 2 MPI processor grid
+ reading atoms ...
+ 34 atoms
+ scanning bonds ...
+ 4 = max bonds/atom
+ scanning angles ...
+ 6 = max angles/atom
+ scanning dihedrals ...
+ 12 = max dihedrals/atom
+ scanning impropers ...
+ 1 = max impropers/atom
+ reading bonds ...
+ 33 bonds
+ reading angles ...
+ 57 angles
+ reading dihedrals ...
+ 75 dihedrals
+ reading impropers ...
+ 7 impropers
+ 4 = max # of 1-2 neighbors
+ 7 = max # of 1-3 neighbors
+ 13 = max # of 1-4 neighbors
+ 16 = max # of special neighbors
+
+special_bonds charmm
+fix 1 all nve
+
+#fix 1 all nvt temp 300 300 100.0
+#fix 2 all shake 1e-9 500 0 m 1.0
+
+velocity all create 0.0 12345678 dist uniform
+
+thermo 1000
+thermo_style custom step ecoul evdwl ebond eangle edihed f_cmap eimp
+timestep 2.0
+
+run 100000
+Neighbor list info ...
+ update every 1 steps, delay 2 steps, check yes
+ max neighbors/atom: 2000, page size: 100000
+ master list distance cutoff = 14
+ ghost atom cutoff = 14
+ binsize = 7, bins = 12 12 12
+ 1 neighbor lists, perpetual/occasional/extra = 1 0 0
+ (1) pair lj/charmmfsw/coul/charmmfsh, perpetual
+ attributes: half, newton on
+ pair build: half/bin/newton
+ stencil: half/bin/3d/newton
+ bin: standard
+Per MPI rank memory allocation (min/avg/max) = 14.94 | 15.57 | 16.2 Mbytes
+Step E_coul E_vdwl E_bond E_angle E_dihed f_cmap E_impro
+ 0 16.287573 -0.85933785 1.2470497 4.8441789 4.5432816 -1.473352 0.10453023
+ 1000 18.816462 -0.84379243 0.78931817 2.7554247 4.4371421 -2.7762038 0.12697656
+ 2000 18.091571 -1.045888 0.72306589 3.0951524 4.6725102 -2.3580092 0.22712496
+ 3000 17.835596 -1.2171641 0.72666403 2.6696491 5.4373798 -2.0737041 0.075101693
+ 4000 16.211232 -0.42713611 0.99472642 3.8961462 5.2009895 -2.5626866 0.17356243
+ 5000 17.72183 -0.57081189 0.90733068 3.4376382 4.5457582 -2.3727543 0.12354518
+ 6000 18.753977 -1.5772499 0.81468321 2.9236782 4.6033216 -2.3380859 0.12835782
+ 7000 18.186024 -0.84205609 0.58996181 3.0329584 4.7221473 -2.5733244 0.10047631
+ 8000 18.214306 -1.1360934 0.72597583 3.7493032 4.7319959 -2.8957975 0.20060467
+ 9000 17.248415 -0.48642024 0.90266262 2.9721744 4.7651003 -2.1473349 0.13020438
+ 10000 17.760663 -1.2968458 0.92384687 3.7007432 4.7378917 -2.2147799 0.06940514
+ 11000 17.63395 -0.57366075 0.84871737 3.4276851 4.2853865 -2.2369491 0.17205075
+ 12000 18.305713 -1.0672299 0.75876262 2.8852171 4.6850229 -2.4090072 0.087568888
+ 13000 17.383367 -0.99678627 0.66712651 3.8060954 5.233865 -2.4180629 0.062014239
+ 14000 17.510901 -0.68723297 0.92448551 3.7550867 4.7321218 -2.6059088 0.11504409
+ 15000 18.080165 -1.13316 0.99982253 3.09947 4.8171402 -2.2713372 0.14580371
+ 16000 17.383245 -0.4535296 0.57826268 3.6453593 4.6541138 -2.2434512 0.13285609
+ 17000 17.111153 -0.3414839 0.73667584 3.7485311 4.6262965 -2.6166049 0.12635815
+ 18000 16.862046 -1.3592061 1.2371142 4.4878937 4.2937117 -2.2112584 0.066145125
+ 19000 18.313891 -1.654238 0.90644101 3.3934089 4.550735 -2.1862171 0.081267736
+ 20000 19.083561 -1.3081747 0.56257812 2.7633848 4.6211438 -2.5196707 0.13763071
+ 21000 18.23741 -1.051353 0.64408722 3.1735565 4.6912533 -2.2491947 0.099394904
+ 22000 17.914515 -0.89769621 0.61793801 3.1224992 4.8683543 -2.282475 0.14524537
+ 23000 16.756122 -0.98277883 1.2554905 3.7916115 4.7301443 -2.3094994 0.10226772
+ 24000 16.109857 -0.54593177 0.86934462 4.4293574 4.926985 -2.2652264 0.11414331
+ 25000 18.590559 -1.497327 1.1898361 2.9134403 4.7854107 -2.4437918 0.067416154
+ 26000 18.493391 -1.0533797 0.4889578 3.6563013 4.6171721 -2.3240835 0.11607829
+ 27000 18.646522 -1.1229601 0.67956815 2.7937638 4.8991207 -2.4068997 0.10109147
+ 28000 18.545103 -1.7237438 0.72488022 3.8041665 4.6459974 -2.4339333 0.21943258
+ 29000 17.840505 -1.0909667 0.88133248 3.3698456 5.0311644 -2.5116617 0.08102693
+ 30000 17.649527 -0.65409177 0.86781692 3.24112 4.9903073 -2.6234925 0.14799777
+ 31000 18.156812 -0.77476556 0.83192789 2.9620784 4.9160635 -2.8571635 0.22283201
+ 32000 18.251583 -1.3384075 0.8059007 3.2588176 4.4365328 -2.1875071 0.087883637
+ 33000 17.702785 -0.88311587 0.98573641 3.4645713 4.2650091 -2.0909158 0.14233004
+ 34000 17.123413 -1.4873429 1.0419563 4.2628178 4.6318762 -2.2292095 0.105354
+ 35000 18.162061 -1.0136007 0.82436129 3.6365024 4.5801677 -2.6856989 0.28648222
+ 36000 17.65618 -1.094718 0.8872444 3.5075241 4.6382423 -2.3895134 0.18116961
+ 37000 17.336475 -1.0657995 0.98869254 3.9252927 4.4383632 -2.2048244 0.22285949
+ 38000 17.369467 -0.97623132 0.6712095 4.1349304 4.597754 -2.4088341 0.14608514
+ 39000 18.170206 -1.2344285 0.77546195 3.6451049 4.7482287 -2.9895286 0.25768859
+ 40000 16.210866 -0.81407781 0.99246271 4.2676233 5.0253763 -2.2929865 0.13348624
+ 41000 17.641798 -1.0868157 0.80119513 3.4302526 5.280872 -2.4025406 0.22747391
+ 42000 18.349848 -1.613759 1.1497004 3.7800682 4.3237683 -2.8676401 0.2120425
+ 43000 19.130245 -1.196778 0.71845659 2.9325758 4.3684415 -2.433424 0.12240982
+ 44000 18.061321 -1.2410101 1.0329373 3.0751569 4.7138313 -2.2880904 0.075814461
+ 45000 18.162713 -1.4414622 1.009159 4.2298758 4.589593 -2.8502298 0.21606844
+ 46000 18.591574 -0.99730412 1.0955215 3.3965004 4.359466 -3.1049731 0.17322629
+ 47000 18.380259 -1.2717381 0.72291269 3.3958016 4.6099628 -2.4605065 0.19825185
+ 48000 18.130478 -1.5051279 1.2087492 3.2488529 4.6690881 -2.2518174 0.05633061
+ 49000 16.419912 -0.89320635 0.98926144 4.0388252 4.9919488 -2.1699511 0.15646479
+ 50000 16.453196 -1.0433497 0.778346 4.6078069 4.7320614 -2.3760788 0.17161976
+ 51000 18.245221 -0.89550444 0.9310446 3.0758194 4.3944595 -2.3082379 0.19983428
+ 52000 17.839632 -1.0221781 0.76425017 3.3331547 4.5368437 -2.0988773 0.21098435
+ 53000 18.693035 -1.4231915 0.76333082 3.1612761 4.583242 -2.4485762 0.089191206
+ 54000 16.334672 -0.36309884 1.0200365 4.6700448 4.1628702 -2.1713841 0.11431995
+ 55000 17.33842 -0.61522682 0.89847366 3.4970659 4.673495 -2.4743036 0.068004878
+ 56000 17.790294 -1.0150845 0.73697112 3.6000297 4.5988343 -2.4822509 0.11434632
+ 57000 18.913486 -1.0985507 1.0231848 2.7483267 4.4421755 -2.574424 0.1763388
+ 58000 17.586896 -0.98284126 0.96965633 3.3330357 4.5325543 -2.1936869 0.083230915
+ 59000 17.77788 -1.1649953 0.83092298 3.8004148 4.3940176 -2.3136642 0.017207608
+ 60000 17.013042 -0.21728023 1.1688832 3.5374476 4.5462244 -2.4425301 0.15028297
+ 61000 17.236242 -1.1342147 1.0301086 3.685948 4.6842331 -2.328108 0.070210812
+ 62000 17.529852 -1.2961547 1.0323133 3.4474598 5.1435839 -2.4553423 0.060842687
+ 63000 18.754704 -1.1816999 0.51806039 3.140172 4.5832701 -2.2713213 0.06327871
+ 64000 17.54594 -1.3592836 0.9694558 4.1363258 4.3547729 -2.3818433 0.12634448
+ 65000 16.962312 -0.54192775 0.90321315 4.0788618 4.2008255 -2.1376711 0.039504515
+ 66000 18.078619 -1.3552947 1.0716861 3.3285374 4.7229362 -2.3331115 0.21978698
+ 67000 17.132732 -1.4376876 0.91486534 4.4461852 4.6894176 -2.3655045 0.068150385
+ 68000 18.69286 -1.2856207 0.3895394 3.0620063 4.9922992 -2.3459189 0.079879643
+ 69000 18.329552 -1.1545957 0.88632275 3.1741058 4.4562418 -2.7094867 0.25329613
+ 70000 16.681168 -0.94434373 1.2450393 4.5737944 4.4902996 -2.4581775 0.15313095
+ 71000 17.375032 -1.0514442 1.0741595 3.4896146 4.8407713 -2.5302576 0.13640847
+ 72000 17.833013 -0.9047134 0.87067876 3.1658924 4.8825932 -2.4398117 0.2343991
+ 73000 17.421411 -1.2190741 0.73706811 4.2895 4.6464636 -2.3872727 0.19696525
+ 74000 17.383158 -0.34208984 0.71333984 3.2718891 4.2718495 -2.2484281 0.10827022
+ 75000 17.20885 -1.2710479 1.125102 3.8414467 5.3222741 -2.375505 0.12910797
+ 76000 16.811578 -0.545162 0.59076961 3.9118604 4.8031296 -2.2777895 0.063015508
+ 77000 16.679231 -0.080955983 0.7253398 3.4203454 5.0987608 -2.379614 0.12961874
+ 78000 18.164524 -1.3115525 0.92526408 3.5764487 4.3814882 -2.3712488 0.073436724
+ 79000 17.738686 -1.0697859 1.2186866 3.0593848 4.6551053 -2.2505871 0.075340661
+ 80000 16.767483 -0.84777477 1.03128 4.1982958 4.6992227 -2.4146425 0.079774219
+ 81000 16.257265 0.62803774 0.84032194 3.3873471 5.0961071 -2.7219776 0.20467848
+ 82000 18.232082 -1.2129302 0.50746051 3.9207128 4.5073437 -2.599371 0.094522372
+ 83000 16.618985 -0.60917055 0.8825847 3.805497 4.9560959 -2.2194726 0.14852687
+ 84000 17.90762 -0.82336075 0.90504161 3.0324198 4.7444271 -2.5036073 0.15860682
+ 85000 16.699883 -0.50297228 0.83405307 3.8598996 4.7971968 -2.2427788 0.10338668
+ 86000 16.353038 -0.0096880616 0.80705167 4.0865115 4.5364338 -2.4548873 0.098456203
+ 87000 17.887331 -0.75281219 1.0030148 4.0117123 4.3443074 -2.9774392 0.16190152
+ 88000 18.583708 -1.4867053 0.86324814 3.3971237 4.3526221 -2.221239 0.14459352
+ 89000 17.684828 -1.283764 1.0021118 3.5426808 4.9057005 -2.3921967 0.05844702
+ 90000 17.2597 -0.84306489 0.99797936 3.8896866 4.4315457 -2.5662899 0.18270206
+ 91000 16.705581 -0.44704047 0.75239556 3.470805 4.976868 -2.1894571 0.12312848
+ 92000 17.548071 -1.2222664 0.92898812 4.0813773 4.3432647 -2.1631158 0.14071343
+ 93000 17.163675 -0.94994776 0.96876981 3.9137692 4.4388666 -2.1260232 0.13187968
+ 94000 18.842071 -1.2822113 0.58767049 3.1393475 4.5820965 -2.7264682 0.10406266
+ 95000 18.112287 -1.1011381 0.63546648 3.4672667 4.486275 -2.2991936 0.041589685
+ 96000 17.102713 -0.6877313 0.8389032 3.6892719 4.5676004 -2.1905327 0.13507011
+ 97000 16.778253 -1.2902153 1.1588744 4.2820083 4.9537657 -2.4798159 0.35696636
+ 98000 18.34638 -1.2908146 1.185356 3.0739807 4.4575453 -2.3959144 0.22407922
+ 99000 17.995148 -1.3939639 0.7727299 3.8774144 4.4345458 -2.1142776 0.13550099
+ 100000 18.444746 -1.2456693 0.86061526 3.468696 4.5264336 -2.4239851 0.074369539
+Loop time of 2.52011 on 4 procs for 100000 steps with 34 atoms
+
+Performance: 6856.851 ns/day, 0.004 hours/ns, 39680.850 timesteps/s
+98.8% CPU use with 4 MPI tasks x no OpenMP threads
+
+MPI task timing breakdown:
+Section | min time | avg time | max time |%varavg| %total
+---------------------------------------------------------------
+Pair | 0.072506 | 0.28131 | 0.69088 | 46.2 | 11.16
+Bond | 0.050544 | 0.45307 | 0.9416 | 57.6 | 17.98
+Neigh | 0.0060885 | 0.0061619 | 0.0062056 | 0.1 | 0.24
+Comm | 0.44686 | 1.3679 | 2.0111 | 53.5 | 54.28
+Output | 0.0028057 | 0.0029956 | 0.003264 | 0.3 | 0.12
+Modify | 0.028202 | 0.095174 | 0.15782 | 19.8 | 3.78
+Other | | 0.3135 | | | 12.44
+
+Nlocal: 8.5 ave 14 max 2 min
+Histogram: 1 0 1 0 0 0 0 0 0 2
+Nghost: 25.5 ave 32 max 20 min
+Histogram: 2 0 0 0 0 0 0 1 0 1
+Neighs: 98.75 ave 242 max 31 min
+Histogram: 2 0 1 0 0 0 0 0 0 1
+
+Total # of neighbors = 395
+Ave neighs/atom = 11.6176
+Ave special neighs/atom = 9.52941
+Neighbor list builds = 246
+Dangerous builds = 0
+Total wall time: 0:00:02
diff --git a/examples/mscg/log.31Mar17.g++.1 b/examples/mscg/log.31Mar17.g++.1
new file mode 100644
index 0000000000..c67bc483db
--- /dev/null
+++ b/examples/mscg/log.31Mar17.g++.1
@@ -0,0 +1,145 @@
+LAMMPS (13 Apr 2017)
+units real
+atom_style full
+pair_style zero 10.0
+
+read_data data.meoh
+ orthogonal box = (-20.6917 -20.6917 -20.6917) to (20.6917 20.6917 20.6917)
+ 1 by 1 by 1 MPI processor grid
+ reading atoms ...
+ 1000 atoms
+ 0 = max # of 1-2 neighbors
+ 0 = max # of 1-3 neighbors
+ 0 = max # of 1-4 neighbors
+ 1 = max # of special neighbors
+pair_coeff * *
+
+thermo 1
+thermo_style custom step
+
+# Test 1a: range finder functionality
+fix 1 all mscg 1 range on
+rerun dump.meoh first 0 last 4500 every 250 dump x y z fx fy fz
+Neighbor list info ...
+ update every 1 steps, delay 10 steps, check yes
+ max neighbors/atom: 2000, page size: 100000
+ master list distance cutoff = 12
+ ghost atom cutoff = 12
+ binsize = 6, bins = 7 7 7
+ 1 neighbor lists, perpetual/occasional/extra = 1 0 0
+ (1) pair zero, perpetual
+ attributes: half, newton on
+ pair build: half/bin/newton
+ stencil: half/bin/3d/newton
+ bin: standard
+Per MPI rank memory allocation (min/avg/max) = 5.794 | 5.794 | 5.794 Mbytes
+Step
+ 0
+ 250
+ 500
+ 750
+ 1000
+ 1250
+ 1500
+ 1750
+ 2000
+ 2250
+ 2500
+ 2750
+ 3000
+ 3250
+ 3500
+ 3750
+ 4000
+ 4250
+ 4500
+Loop time of 0.581537 on 1 procs for 19 steps with 1000 atoms
+
+Performance: 2.823 ns/day, 8.502 hours/ns, 32.672 timesteps/s
+99.2% CPU use with 1 MPI tasks x no OpenMP threads
+
+MPI task timing breakdown:
+Section | min time | avg time | max time |%varavg| %total
+---------------------------------------------------------------
+Pair | 0 | 0 | 0 | 0.0 | 0.00
+Bond | 0 | 0 | 0 | 0.0 | 0.00
+Neigh | 0 | 0 | 0 | 0.0 | 0.00
+Comm | 0 | 0 | 0 | 0.0 | 0.00
+Output | 0 | 0 | 0 | 0.0 | 0.00
+Modify | 0 | 0 | 0 | 0.0 | 0.00
+Other | | 0.5815 | | |100.00
+
+Nlocal: 1000 ave 1000 max 1000 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Nghost: 2934 ave 2934 max 2934 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Neighs: 50654 ave 50654 max 50654 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+
+Total # of neighbors = 50654
+Ave neighs/atom = 50.654
+Ave special neighs/atom = 0
+Neighbor list builds = 0
+Dangerous builds = 0
+print "TEST_1a mscg range finder"
+TEST_1a mscg range finder
+unfix 1
+
+# Test 1b: force matching functionality
+fix 1 all mscg 1
+rerun dump.meoh first 0 last 4500 every 250 dump x y z fx fy fz
+Per MPI rank memory allocation (min/avg/max) = 5.794 | 5.794 | 5.794 Mbytes
+Step
+ 0
+ 250
+ 500
+ 750
+ 1000
+ 1250
+ 1500
+ 1750
+ 2000
+ 2250
+ 2500
+ 2750
+ 3000
+ 3250
+ 3500
+ 3750
+ 4000
+ 4250
+ 4500
+Loop time of 0.841917 on 1 procs for 19 steps with 1000 atoms
+
+Performance: 1.950 ns/day, 12.309 hours/ns, 22.568 timesteps/s
+99.8% CPU use with 1 MPI tasks x no OpenMP threads
+
+MPI task timing breakdown:
+Section | min time | avg time | max time |%varavg| %total
+---------------------------------------------------------------
+Pair | 0 | 0 | 0 | 0.0 | 0.00
+Bond | 0 | 0 | 0 | 0.0 | 0.00
+Neigh | 0 | 0 | 0 | 0.0 | 0.00
+Comm | 0 | 0 | 0 | 0.0 | 0.00
+Output | 0 | 0 | 0 | 0.0 | 0.00
+Modify | 0 | 0 | 0 | 0.0 | 0.00
+Other | | 0.8419 | | |100.00
+
+Nlocal: 1000 ave 1000 max 1000 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Nghost: 2934 ave 2934 max 2934 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Neighs: 50654 ave 50654 max 50654 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+
+Total # of neighbors = 50654
+Ave neighs/atom = 50.654
+Ave special neighs/atom = 0
+Neighbor list builds = 0
+Dangerous builds = 0
+print "TEST_1b mscg force matching"
+TEST_1b mscg force matching
+
+print TEST_DONE
+TEST_DONE
+Total wall time: 0:00:01
diff --git a/lib/Install.py b/lib/Install.py
new file mode 100644
index 0000000000..18b426f928
--- /dev/null
+++ b/lib/Install.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python
+
+# install.py tool to do a generic build of a library
+# soft linked to by many of the lib/Install.py files
+# used to automate the steps described in the corresponding lib/README
+
+import sys,commands,os
+
+# help message
+
+help = """
+Syntax: python Install.py -m machine -e suffix
+ specify -m and optionally -e, order does not matter
+ -m = peform a clean followed by "make -f Makefile.machine"
+ machine = suffix of a lib/Makefile.* file
+ -e = set EXTRAMAKE variable in Makefile.machine to Makefile.lammps.suffix
+ does not alter existing Makefile.machine
+"""
+
+# print error message or help
+
+def error(str=None):
+ if not str: print help
+ else: print "ERROR",str
+ sys.exit()
+
+# parse args
+
+args = sys.argv[1:]
+nargs = len(args)
+if nargs == 0: error()
+
+machine = None
+extraflag = 0
+
+iarg = 0
+while iarg < nargs:
+ if args[iarg] == "-m":
+ if iarg+2 > nargs: error()
+ machine = args[iarg+1]
+ iarg += 2
+ elif args[iarg] == "-e":
+ if iarg+2 > nargs: error()
+ extraflag = 1
+ suffix = args[iarg+1]
+ iarg += 2
+ else: error()
+
+# set lib from working dir
+
+cwd = os.getcwd()
+lib = os.path.basename(cwd)
+
+# create Makefile.auto as copy of Makefile.machine
+# reset EXTRAMAKE if requested
+
+if not os.path.exists("Makefile.%s" % machine):
+ error("lib/%s/Makefile.%s does not exist" % (lib,machine))
+
+lines = open("Makefile.%s" % machine,'r').readlines()
+fp = open("Makefile.auto",'w')
+
+for line in lines:
+ words = line.split()
+ if len(words) == 3 and extraflag and \
+ words[0] == "EXTRAMAKE" and words[1] == '=':
+ line = line.replace(words[2],"Makefile.lammps.%s" % suffix)
+ print >>fp,line,
+
+fp.close()
+
+# make the library via Makefile.auto
+
+print "Building lib%s.a ..." % lib
+cmd = "make -f Makefile.auto clean; make -f Makefile.auto"
+txt = commands.getoutput(cmd)
+print txt
+
+if os.path.exists("lib%s.a" % lib): print "Build was successful"
+else: error("Build of lib/%s/lib%s.a was NOT successful" % (lib,lib))
+if not os.path.exists("Makefile.lammps"):
+ print "lib/%s/Makefile.lammps was NOT created" % lib
diff --git a/lib/README b/lib/README
index 72ebb0a5f7..3c8f46dd0a 100644
--- a/lib/README
+++ b/lib/README
@@ -33,14 +33,16 @@ kokkos Kokkos package for GPU and many-core acceleration
from Kokkos development team (Sandia)
linalg set of BLAS and LAPACK routines needed by USER-ATC package
from Axel Kohlmeyer (Temple U)
-poems POEMS rigid-body integration package, POEMS package
- from Rudranarayan Mukherjee (RPI)
meam modified embedded atom method (MEAM) potential, MEAM package
from Greg Wagner (Sandia)
molfile hooks to VMD molfile plugins, used by the USER-MOLFILE package
from Axel Kohlmeyer (Temple U) and the VMD development team
mscg hooks to the MSCG library, used by fix_mscg command
from Jacob Wagner and Greg Voth group (U Chicago)
+netcdf hooks to a NetCDF library installed on your system
+ from Lars Pastewka (Karlsruhe Institute of Technology)
+poems POEMS rigid-body integration package, POEMS package
+ from Rudranarayan Mukherjee (RPI)
python hooks to the system Python library, used by the PYTHON package
from the LAMMPS development team
qmmm quantum mechanics/molecular mechanics coupling interface
diff --git a/lib/atc/Install.py b/lib/atc/Install.py
new file mode 100644
index 0000000000..18b426f928
--- /dev/null
+++ b/lib/atc/Install.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python
+
+# install.py tool to do a generic build of a library
+# soft linked to by many of the lib/Install.py files
+# used to automate the steps described in the corresponding lib/README
+
+import sys,commands,os
+
+# help message
+
+help = """
+Syntax: python Install.py -m machine -e suffix
+ specify -m and optionally -e, order does not matter
+ -m = peform a clean followed by "make -f Makefile.machine"
+ machine = suffix of a lib/Makefile.* file
+ -e = set EXTRAMAKE variable in Makefile.machine to Makefile.lammps.suffix
+ does not alter existing Makefile.machine
+"""
+
+# print error message or help
+
+def error(str=None):
+ if not str: print help
+ else: print "ERROR",str
+ sys.exit()
+
+# parse args
+
+args = sys.argv[1:]
+nargs = len(args)
+if nargs == 0: error()
+
+machine = None
+extraflag = 0
+
+iarg = 0
+while iarg < nargs:
+ if args[iarg] == "-m":
+ if iarg+2 > nargs: error()
+ machine = args[iarg+1]
+ iarg += 2
+ elif args[iarg] == "-e":
+ if iarg+2 > nargs: error()
+ extraflag = 1
+ suffix = args[iarg+1]
+ iarg += 2
+ else: error()
+
+# set lib from working dir
+
+cwd = os.getcwd()
+lib = os.path.basename(cwd)
+
+# create Makefile.auto as copy of Makefile.machine
+# reset EXTRAMAKE if requested
+
+if not os.path.exists("Makefile.%s" % machine):
+ error("lib/%s/Makefile.%s does not exist" % (lib,machine))
+
+lines = open("Makefile.%s" % machine,'r').readlines()
+fp = open("Makefile.auto",'w')
+
+for line in lines:
+ words = line.split()
+ if len(words) == 3 and extraflag and \
+ words[0] == "EXTRAMAKE" and words[1] == '=':
+ line = line.replace(words[2],"Makefile.lammps.%s" % suffix)
+ print >>fp,line,
+
+fp.close()
+
+# make the library via Makefile.auto
+
+print "Building lib%s.a ..." % lib
+cmd = "make -f Makefile.auto clean; make -f Makefile.auto"
+txt = commands.getoutput(cmd)
+print txt
+
+if os.path.exists("lib%s.a" % lib): print "Build was successful"
+else: error("Build of lib/%s/lib%s.a was NOT successful" % (lib,lib))
+if not os.path.exists("Makefile.lammps"):
+ print "lib/%s/Makefile.lammps was NOT created" % lib
diff --git a/lib/atc/README b/lib/atc/README
index 106c303dd1..d3adfdafe4 100644
--- a/lib/atc/README
+++ b/lib/atc/README
@@ -15,6 +15,11 @@ links against when using the USER-ATC package.
This library must be built with a C++ compiler, before LAMMPS is
built, so LAMMPS can link against it.
+You can type "make lib-atc" from the src directory to see help on how
+to build this library via make commands, or you can do the same thing
+by typing "python Install.py" from within this directory, or you can
+do it manually by following the instructions below.
+
Build the library using one of the provided Makefile.* files or create
your own, specific to your compiler and system. For example:
@@ -44,16 +49,16 @@ user-atc_SYSINC = leave blank for this package
user-atc_SYSLIB = BLAS and LAPACK libraries needed by this package
user-atc_SYSPATH = path(s) to where those libraries are
-You have several choices for these settings:
+You have 3 choices for these settings:
-If the 2 libraries are already installed on your system, the settings
-in Makefile.lammps.installed should work.
+a) If the 2 libraries are already installed on your system, the
+settings in Makefile.lammps.installed should work.
-If they are not, you can install them yourself, and speficy the
-appropriate settings accordingly.
+b) If they are not, you can install them yourself, and specify the
+appropriate settings accordingly in a Makefile.lammps.* file
+and set the EXTRAMAKE setting in Makefile.* to that file.
-If you want to use the minimalist version of these libraries provided
-with LAMMPS in lib/linalg, then the settings in Makefile.lammps.linalg
-should work. Note that in this case you also need to build the
-linear-algebra in lib/linalg; see the lib/linalg/README for more
-details.
+c) Use the minimalist version of these libraries provided with LAMMPS
+in lib/linalg, by using Makefile.lammps.linalg. In this case you also
+need to build the library in lib/linalg; see the lib/linalg/README
+file for more details.
diff --git a/lib/awpmd/Install.py b/lib/awpmd/Install.py
new file mode 100644
index 0000000000..18b426f928
--- /dev/null
+++ b/lib/awpmd/Install.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python
+
+# install.py tool to do a generic build of a library
+# soft linked to by many of the lib/Install.py files
+# used to automate the steps described in the corresponding lib/README
+
+import sys,commands,os
+
+# help message
+
+help = """
+Syntax: python Install.py -m machine -e suffix
+ specify -m and optionally -e, order does not matter
+ -m = peform a clean followed by "make -f Makefile.machine"
+ machine = suffix of a lib/Makefile.* file
+ -e = set EXTRAMAKE variable in Makefile.machine to Makefile.lammps.suffix
+ does not alter existing Makefile.machine
+"""
+
+# print error message or help
+
+def error(str=None):
+ if not str: print help
+ else: print "ERROR",str
+ sys.exit()
+
+# parse args
+
+args = sys.argv[1:]
+nargs = len(args)
+if nargs == 0: error()
+
+machine = None
+extraflag = 0
+
+iarg = 0
+while iarg < nargs:
+ if args[iarg] == "-m":
+ if iarg+2 > nargs: error()
+ machine = args[iarg+1]
+ iarg += 2
+ elif args[iarg] == "-e":
+ if iarg+2 > nargs: error()
+ extraflag = 1
+ suffix = args[iarg+1]
+ iarg += 2
+ else: error()
+
+# set lib from working dir
+
+cwd = os.getcwd()
+lib = os.path.basename(cwd)
+
+# create Makefile.auto as copy of Makefile.machine
+# reset EXTRAMAKE if requested
+
+if not os.path.exists("Makefile.%s" % machine):
+ error("lib/%s/Makefile.%s does not exist" % (lib,machine))
+
+lines = open("Makefile.%s" % machine,'r').readlines()
+fp = open("Makefile.auto",'w')
+
+for line in lines:
+ words = line.split()
+ if len(words) == 3 and extraflag and \
+ words[0] == "EXTRAMAKE" and words[1] == '=':
+ line = line.replace(words[2],"Makefile.lammps.%s" % suffix)
+ print >>fp,line,
+
+fp.close()
+
+# make the library via Makefile.auto
+
+print "Building lib%s.a ..." % lib
+cmd = "make -f Makefile.auto clean; make -f Makefile.auto"
+txt = commands.getoutput(cmd)
+print txt
+
+if os.path.exists("lib%s.a" % lib): print "Build was successful"
+else: error("Build of lib/%s/lib%s.a was NOT successful" % (lib,lib))
+if not os.path.exists("Makefile.lammps"):
+ print "lib/%s/Makefile.lammps was NOT created" % lib
diff --git a/lib/awpmd/README b/lib/awpmd/README
index 3c02480419..20e142f74c 100644
--- a/lib/awpmd/README
+++ b/lib/awpmd/README
@@ -19,6 +19,11 @@ links against when using the USER-AWPMD package.
This library must be built with a C++ compiler, before LAMMPS is
built, so LAMMPS can link against it.
+You can type "make lib-awpmd" from the src directory to see help on
+how to build this library via make commands, or you can do the same
+thing by typing "python Install.py" from within this directory, or you
+can do it manually by following the instructions below.
+
Build the library using one of the provided Makefile.* files or create
your own, specific to your compiler and system. For example:
@@ -47,16 +52,16 @@ user-awpmd_SYSINC = leave blank for this package
user-awpmd_SYSLIB = BLAS and LAPACK libraries needed by this package
user-awpmd_SYSPATH = path(s) to where those libraries are
-You have several choices for these settings:
+You have 3 choices for these settings:
-If the 2 libraries are already installed on your system, the settings
-in Makefile.lammps.installed should work.
+a) If the 2 libraries are already installed on your system, the
+settings in Makefile.lammps.installed should work.
-If they are not, you can install them yourself, and speficy the
-appropriate settings accordingly.
+b) If they are not, you can install them yourself, and specify the
+appropriate settings accordingly in a Makefile.lammps.* file
+and set the EXTRAMAKE setting in Makefile.* to that file.
-If you want to use the minimalist version of these libraries provided
-with LAMMPS in lib/linalg, then the settings in Makefile.lammps.linalg
-should work. Note that in this case you also need to build the
-linear-algebra in lib/linalg; see the lib/linalg/README for more
-details.
+c) Use the minimalist version of these libraries provided with LAMMPS
+in lib/linalg, by using Makefile.lammps.linalg. In this case you also
+need to build the library in lib/linalg; see the lib/linalg/README
+file for more details.
diff --git a/lib/colvars/Install.py b/lib/colvars/Install.py
new file mode 100644
index 0000000000..18b426f928
--- /dev/null
+++ b/lib/colvars/Install.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python
+
+# install.py tool to do a generic build of a library
+# soft linked to by many of the lib/Install.py files
+# used to automate the steps described in the corresponding lib/README
+
+import sys,commands,os
+
+# help message
+
+help = """
+Syntax: python Install.py -m machine -e suffix
+ specify -m and optionally -e, order does not matter
+ -m = peform a clean followed by "make -f Makefile.machine"
+ machine = suffix of a lib/Makefile.* file
+ -e = set EXTRAMAKE variable in Makefile.machine to Makefile.lammps.suffix
+ does not alter existing Makefile.machine
+"""
+
+# print error message or help
+
+def error(str=None):
+ if not str: print help
+ else: print "ERROR",str
+ sys.exit()
+
+# parse args
+
+args = sys.argv[1:]
+nargs = len(args)
+if nargs == 0: error()
+
+machine = None
+extraflag = 0
+
+iarg = 0
+while iarg < nargs:
+ if args[iarg] == "-m":
+ if iarg+2 > nargs: error()
+ machine = args[iarg+1]
+ iarg += 2
+ elif args[iarg] == "-e":
+ if iarg+2 > nargs: error()
+ extraflag = 1
+ suffix = args[iarg+1]
+ iarg += 2
+ else: error()
+
+# set lib from working dir
+
+cwd = os.getcwd()
+lib = os.path.basename(cwd)
+
+# create Makefile.auto as copy of Makefile.machine
+# reset EXTRAMAKE if requested
+
+if not os.path.exists("Makefile.%s" % machine):
+ error("lib/%s/Makefile.%s does not exist" % (lib,machine))
+
+lines = open("Makefile.%s" % machine,'r').readlines()
+fp = open("Makefile.auto",'w')
+
+for line in lines:
+ words = line.split()
+ if len(words) == 3 and extraflag and \
+ words[0] == "EXTRAMAKE" and words[1] == '=':
+ line = line.replace(words[2],"Makefile.lammps.%s" % suffix)
+ print >>fp,line,
+
+fp.close()
+
+# make the library via Makefile.auto
+
+print "Building lib%s.a ..." % lib
+cmd = "make -f Makefile.auto clean; make -f Makefile.auto"
+txt = commands.getoutput(cmd)
+print txt
+
+if os.path.exists("lib%s.a" % lib): print "Build was successful"
+else: error("Build of lib/%s/lib%s.a was NOT successful" % (lib,lib))
+if not os.path.exists("Makefile.lammps"):
+ print "lib/%s/Makefile.lammps was NOT created" % lib
diff --git a/lib/colvars/README b/lib/colvars/README
index d6efc333a5..a5e5938b20 100644
--- a/lib/colvars/README
+++ b/lib/colvars/README
@@ -35,6 +35,11 @@ links against when using the USER-COLVARS package.
This library must be built with a C++ compiler, before LAMMPS is
built, so LAMMPS can link against it.
+You can type "make lib-colvars" from the src directory to see help on
+how to build this library via make commands, or you can do the same
+thing by typing "python Install.py" from within this directory, or you
+can do it manually by following the instructions below.
+
Build the library using one of the provided Makefile.* files or create
your own, specific to your compiler and system. For example:
diff --git a/lib/gpu/Install.py b/lib/gpu/Install.py
new file mode 100644
index 0000000000..d396be5e1a
--- /dev/null
+++ b/lib/gpu/Install.py
@@ -0,0 +1,146 @@
+#!/usr/bin/env python
+
+# Install.py tool to build the GPU library
+# used to automate the steps described in the README file in this dir
+
+import sys,os,re,commands
+
+# help message
+
+help = """
+Syntax: python Install.py -i isuffix -h hdir -a arch -p precision -e esuffix -m -o osuffix
+ specify one or more options, order does not matter
+ copies an existing Makefile.isuffix in lib/gpu to Makefile.auto
+ optionally edits these variables in Makefile.auto:
+ CUDA_HOME, CUDA_ARCH, CUDA_PRECISION, EXTRAMAKE
+ optionally uses Makefile.auto to build the GPU library -> libgpu.a
+ and to copy a Makefile.lammps.esuffix -> Makefile.lammps
+ optionally copies Makefile.auto to a new Makefile.osuffix
+
+ -i = use Makefile.isuffix as starting point, copy to Makefile.auto
+ default isuffix = linux
+ -h = set CUDA_HOME variable in Makefile.auto to hdir
+ hdir = path to NVIDIA Cuda software, e.g. /usr/local/cuda
+ -a = set CUDA_ARCH variable in Makefile.auto to arch
+ use arch = ?? for K40 (Tesla)
+ use arch = 37 for dual K80 (Tesla)
+ use arch = 60 for P100 (Pascal)
+ -p = set CUDA_PRECISION variable in Makefile.auto to precision
+ use precision = double or mixed or single
+ -e = set EXTRAMAKE variable in Makefile.auto to Makefile.lammps.esuffix
+ -m = make the GPU library using Makefile.auto
+ first performs a "make clean"
+ produces libgpu.a if successful
+ also copies EXTRAMAKE file -> Makefile.lammps
+ -e can set which Makefile.lammps.esuffix file is copied
+ -o = copy final Makefile.auto to Makefile.osuffix
+"""
+
+# print error message or help
+
+def error(str=None):
+ if not str: print help
+ else: print "ERROR",str
+ sys.exit()
+
+# parse args
+
+args = sys.argv[1:]
+nargs = len(args)
+if nargs == 0: error()
+
+isuffix = "linux"
+hflag = aflag = pflag = eflag = 0
+makeflag = 0
+outflag = 0
+
+iarg = 0
+while iarg < nargs:
+ if args[iarg] == "-i":
+ if iarg+2 > nargs: error()
+ isuffix = args[iarg+1]
+ iarg += 2
+ elif args[iarg] == "-h":
+ if iarg+2 > nargs: error()
+ hflag = 1
+ hdir = args[iarg+1]
+ iarg += 2
+ elif args[iarg] == "-a":
+ if iarg+2 > nargs: error()
+ aflag = 1
+ arch = args[iarg+1]
+ iarg += 2
+ elif args[iarg] == "-p":
+ if iarg+2 > nargs: error()
+ pflag = 1
+ precision = args[iarg+1]
+ iarg += 2
+ elif args[iarg] == "-e":
+ if iarg+2 > nargs: error()
+ eflag = 1
+ lmpsuffix = args[iarg+1]
+ iarg += 2
+ elif args[iarg] == "-m":
+ makeflag = 1
+ iarg += 1
+ elif args[iarg] == "-o":
+ if iarg+2 > nargs: error()
+ outflag = 1
+ osuffix = args[iarg+1]
+ iarg += 2
+ else: error()
+
+if pflag:
+ if precision == "double": precstr = "-D_DOUBLE_DOUBLE"
+ elif precision == "mixed": precstr = "-D_SINGLE_DOUBLE"
+ elif precision == "single": precstr = "-D_SINGLE_SINGLE"
+ else: error("Invalid precision setting")
+
+# create Makefile.auto
+# reset EXTRAMAKE, CUDA_HOME, CUDA_ARCH, CUDA_PRECISION if requested
+
+if not os.path.exists("Makefile.%s" % isuffix):
+ error("lib/gpu/Makefile.%s does not exist" % isuffix)
+
+lines = open("Makefile.%s" % isuffix,'r').readlines()
+fp = open("Makefile.auto",'w')
+
+for line in lines:
+ words = line.split()
+ if len(words) != 3:
+ print >>fp,line,
+ continue
+
+ if hflag and words[0] == "CUDA_HOME" and words[1] == '=':
+ line = line.replace(words[2],hdir)
+ if aflag and words[0] == "CUDA_ARCH" and words[1] == '=':
+ line = line.replace(words[2],"-arch=sm_%s" % arch)
+ if pflag and words[0] == "CUDA_PRECISION" and words[1] == '=':
+ line = line.replace(words[2],precstr)
+ if eflag and words[0] == "EXTRAMAKE" and words[1] == '=':
+ line = line.replace(words[2],"Makefile.lammps.%s" % lmpsuffix)
+
+ print >>fp,line,
+
+fp.close()
+
+# perform make
+# make operations copies EXTRAMAKE file to Makefile.lammps
+
+if makeflag:
+ print "Building libgpu.a ..."
+ cmd = "rm -f libgpu.a"
+ commands.getoutput(cmd)
+ cmd = "make -f Makefile.auto clean; make -f Makefile.auto"
+ commands.getoutput(cmd)
+ if not os.path.exists("libgpu.a"):
+ error("Build of lib/gpu/libgpu.a was NOT successful")
+ if not os.path.exists("Makefile.lammps"):
+ error("lib/gpu/Makefile.lammps was NOT created")
+
+# copy new Makefile.auto to Makefile.osuffix
+
+if outflag:
+ print "Creating new Makefile.%s" % osuffix
+ cmd = "cp Makefile.auto Makefile.%s" % osuffix
+ commands.getoutput(cmd)
diff --git a/lib/gpu/Nvidia.makefile b/lib/gpu/Nvidia.makefile
index e02849cfed..660544cfaa 100644
--- a/lib/gpu/Nvidia.makefile
+++ b/lib/gpu/Nvidia.makefile
@@ -43,8 +43,8 @@ OBJS = $(OBJ_DIR)/lal_atom.o $(OBJ_DIR)/lal_ans.o \
$(OBJ_DIR)/lal_coul_long.o $(OBJ_DIR)/lal_coul_long_ext.o \
$(OBJ_DIR)/lal_morse.o $(OBJ_DIR)/lal_morse_ext.o \
$(OBJ_DIR)/lal_charmm_long.o $(OBJ_DIR)/lal_charmm_long_ext.o \
- $(OBJ_DIR)/lal_cg_cmm.o $(OBJ_DIR)/lal_cg_cmm_ext.o \
- $(OBJ_DIR)/lal_cg_cmm_long.o $(OBJ_DIR)/lal_cg_cmm_long_ext.o \
+ $(OBJ_DIR)/lal_lj_sdk.o $(OBJ_DIR)/lal_lj_sdk_ext.o \
+ $(OBJ_DIR)/lal_lj_sdk_long.o $(OBJ_DIR)/lal_lj_sdk_long_ext.o \
$(OBJ_DIR)/lal_eam.o $(OBJ_DIR)/lal_eam_ext.o \
$(OBJ_DIR)/lal_eam_fs_ext.o $(OBJ_DIR)/lal_eam_alloy_ext.o \
$(OBJ_DIR)/lal_buck.o $(OBJ_DIR)/lal_buck_ext.o \
@@ -98,8 +98,8 @@ CBNS = $(OBJ_DIR)/device.cubin $(OBJ_DIR)/device_cubin.h \
$(OBJ_DIR)/coul_long.cubin $(OBJ_DIR)/coul_long_cubin.h \
$(OBJ_DIR)/morse.cubin $(OBJ_DIR)/morse_cubin.h \
$(OBJ_DIR)/charmm_long.cubin $(OBJ_DIR)/charmm_long_cubin.h \
- $(OBJ_DIR)/cg_cmm.cubin $(OBJ_DIR)/cg_cmm_cubin.h \
- $(OBJ_DIR)/cg_cmm_long.cubin $(OBJ_DIR)/cg_cmm_long_cubin.h \
+ $(OBJ_DIR)/lj_sdk.cubin $(OBJ_DIR)/lj_sdk_cubin.h \
+ $(OBJ_DIR)/lj_sdk_long.cubin $(OBJ_DIR)/lj_sdk_long_cubin.h \
$(OBJ_DIR)/eam.cubin $(OBJ_DIR)/eam_cubin.h \
$(OBJ_DIR)/buck.cubin $(OBJ_DIR)/buck_cubin.h \
$(OBJ_DIR)/buck_coul_long.cubin $(OBJ_DIR)/buck_coul_long_cubin.h \
@@ -391,29 +391,29 @@ $(OBJ_DIR)/lal_lj_expand.o: $(ALL_H) lal_lj_expand.h lal_lj_expand.cpp $(OBJ_DIR
$(OBJ_DIR)/lal_lj_expand_ext.o: $(ALL_H) lal_lj_expand.h lal_lj_expand_ext.cpp lal_base_atomic.h
$(CUDR) -o $@ -c lal_lj_expand_ext.cpp -I$(OBJ_DIR)
-$(OBJ_DIR)/cg_cmm.cubin: lal_cg_cmm.cu lal_precision.h lal_preprocessor.h
- $(CUDA) --cubin -DNV_KERNEL -o $@ lal_cg_cmm.cu
+$(OBJ_DIR)/lj_sdk.cubin: lal_lj_sdk.cu lal_precision.h lal_preprocessor.h
+ $(CUDA) --cubin -DNV_KERNEL -o $@ lal_lj_sdk.cu
-$(OBJ_DIR)/cg_cmm_cubin.h: $(OBJ_DIR)/cg_cmm.cubin $(OBJ_DIR)/cg_cmm.cubin
- $(BIN2C) -c -n cg_cmm $(OBJ_DIR)/cg_cmm.cubin > $(OBJ_DIR)/cg_cmm_cubin.h
+$(OBJ_DIR)/lj_sdk_cubin.h: $(OBJ_DIR)/lj_sdk.cubin $(OBJ_DIR)/lj_sdk.cubin
+ $(BIN2C) -c -n lj_sdk $(OBJ_DIR)/lj_sdk.cubin > $(OBJ_DIR)/lj_sdk_cubin.h
-$(OBJ_DIR)/lal_cg_cmm.o: $(ALL_H) lal_cg_cmm.h lal_cg_cmm.cpp $(OBJ_DIR)/cg_cmm_cubin.h $(OBJ_DIR)/lal_base_atomic.o
- $(CUDR) -o $@ -c lal_cg_cmm.cpp -I$(OBJ_DIR)
+$(OBJ_DIR)/lal_lj_sdk.o: $(ALL_H) lal_lj_sdk.h lal_lj_sdk.cpp $(OBJ_DIR)/lj_sdk_cubin.h $(OBJ_DIR)/lal_base_atomic.o
+ $(CUDR) -o $@ -c lal_lj_sdk.cpp -I$(OBJ_DIR)
-$(OBJ_DIR)/lal_cg_cmm_ext.o: $(ALL_H) lal_cg_cmm.h lal_cg_cmm_ext.cpp lal_base_atomic.h
- $(CUDR) -o $@ -c lal_cg_cmm_ext.cpp -I$(OBJ_DIR)
+$(OBJ_DIR)/lal_lj_sdk_ext.o: $(ALL_H) lal_lj_sdk.h lal_lj_sdk_ext.cpp lal_base_atomic.h
+ $(CUDR) -o $@ -c lal_lj_sdk_ext.cpp -I$(OBJ_DIR)
-$(OBJ_DIR)/cg_cmm_long.cubin: lal_cg_cmm_long.cu lal_precision.h lal_preprocessor.h
- $(CUDA) --cubin -DNV_KERNEL -o $@ lal_cg_cmm_long.cu
+$(OBJ_DIR)/lj_sdk_long.cubin: lal_lj_sdk_long.cu lal_precision.h lal_preprocessor.h
+ $(CUDA) --cubin -DNV_KERNEL -o $@ lal_lj_sdk_long.cu
-$(OBJ_DIR)/cg_cmm_long_cubin.h: $(OBJ_DIR)/cg_cmm_long.cubin $(OBJ_DIR)/cg_cmm_long.cubin
- $(BIN2C) -c -n cg_cmm_long $(OBJ_DIR)/cg_cmm_long.cubin > $(OBJ_DIR)/cg_cmm_long_cubin.h
+$(OBJ_DIR)/lj_sdk_long_cubin.h: $(OBJ_DIR)/lj_sdk_long.cubin $(OBJ_DIR)/lj_sdk_long.cubin
+ $(BIN2C) -c -n lj_sdk_long $(OBJ_DIR)/lj_sdk_long.cubin > $(OBJ_DIR)/lj_sdk_long_cubin.h
-$(OBJ_DIR)/lal_cg_cmm_long.o: $(ALL_H) lal_cg_cmm_long.h lal_cg_cmm_long.cpp $(OBJ_DIR)/cg_cmm_long_cubin.h $(OBJ_DIR)/lal_base_atomic.o
- $(CUDR) -o $@ -c lal_cg_cmm_long.cpp -I$(OBJ_DIR)
+$(OBJ_DIR)/lal_lj_sdk_long.o: $(ALL_H) lal_lj_sdk_long.h lal_lj_sdk_long.cpp $(OBJ_DIR)/lj_sdk_long_cubin.h $(OBJ_DIR)/lal_base_atomic.o
+ $(CUDR) -o $@ -c lal_lj_sdk_long.cpp -I$(OBJ_DIR)
-$(OBJ_DIR)/lal_cg_cmm_long_ext.o: $(ALL_H) lal_cg_cmm_long.h lal_cg_cmm_long_ext.cpp lal_base_charge.h
- $(CUDR) -o $@ -c lal_cg_cmm_long_ext.cpp -I$(OBJ_DIR)
+$(OBJ_DIR)/lal_lj_sdk_long_ext.o: $(ALL_H) lal_lj_sdk_long.h lal_lj_sdk_long_ext.cpp lal_base_charge.h
+ $(CUDR) -o $@ -c lal_lj_sdk_long_ext.cpp -I$(OBJ_DIR)
$(OBJ_DIR)/eam.cubin: lal_eam.cu lal_precision.h lal_preprocessor.h
$(CUDA) --cubin -DNV_KERNEL -o $@ lal_eam.cu
diff --git a/lib/gpu/Opencl.makefile b/lib/gpu/Opencl.makefile
index 7ef1dfba0c..4a59595313 100644
--- a/lib/gpu/Opencl.makefile
+++ b/lib/gpu/Opencl.makefile
@@ -32,8 +32,8 @@ OBJS = $(OBJ_DIR)/lal_atom.o $(OBJ_DIR)/lal_answer.o \
$(OBJ_DIR)/lal_coul_long.o $(OBJ_DIR)/lal_coul_long_ext.o \
$(OBJ_DIR)/lal_morse.o $(OBJ_DIR)/lal_morse_ext.o \
$(OBJ_DIR)/lal_charmm_long.o $(OBJ_DIR)/lal_charmm_long_ext.o \
- $(OBJ_DIR)/lal_cg_cmm.o $(OBJ_DIR)/lal_cg_cmm_ext.o \
- $(OBJ_DIR)/lal_cg_cmm_long.o $(OBJ_DIR)/lal_cg_cmm_long_ext.o \
+ $(OBJ_DIR)/lal_lj_sdk.o $(OBJ_DIR)/lal_lj_sdk_ext.o \
+ $(OBJ_DIR)/lal_lj_sdk_long.o $(OBJ_DIR)/lal_lj_sdk_long_ext.o \
$(OBJ_DIR)/lal_eam.o $(OBJ_DIR)/lal_eam_ext.o \
$(OBJ_DIR)/lal_eam_fs_ext.o $(OBJ_DIR)/lal_eam_alloy_ext.o \
$(OBJ_DIR)/lal_buck.o $(OBJ_DIR)/lal_buck_ext.o \
@@ -75,8 +75,8 @@ KERS = $(OBJ_DIR)/device_cl.h $(OBJ_DIR)/atom_cl.h \
$(OBJ_DIR)/lj_coul_long_cl.h $(OBJ_DIR)/lj_dsf_cl.h \
$(OBJ_DIR)/lj_class2_long_cl.h \
$(OBJ_DIR)/coul_long_cl.h $(OBJ_DIR)/morse_cl.h \
- $(OBJ_DIR)/charmm_long_cl.h $(OBJ_DIR)/cg_cmm_cl.h \
- $(OBJ_DIR)/cg_cmm_long_cl.h $(OBJ_DIR)/neighbor_gpu_cl.h \
+ $(OBJ_DIR)/charmm_long_cl.h $(OBJ_DIR)/lj_sdk_cl.h \
+ $(OBJ_DIR)/lj_sdk_long_cl.h $(OBJ_DIR)/neighbor_gpu_cl.h \
$(OBJ_DIR)/eam_cl.h $(OBJ_DIR)/buck_cl.h \
$(OBJ_DIR)/buck_coul_cl.h $(OBJ_DIR)/buck_coul_long_cl.h \
$(OBJ_DIR)/table_cl.h $(OBJ_DIR)/yukawa_cl.h \
@@ -273,23 +273,23 @@ $(OBJ_DIR)/lal_lj_expand.o: $(ALL_H) lal_lj_expand.h lal_lj_expand.cpp $(OBJ_DI
$(OBJ_DIR)/lal_lj_expand_ext.o: $(ALL_H) lal_lj_expand.h lal_lj_expand_ext.cpp lal_base_atomic.h
$(OCL) -o $@ -c lal_lj_expand_ext.cpp -I$(OBJ_DIR)
-$(OBJ_DIR)/cg_cmm_cl.h: lal_cg_cmm.cu $(PRE1_H)
- $(BSH) ./geryon/file_to_cstr.sh cg_cmm $(PRE1_H) lal_cg_cmm.cu $(OBJ_DIR)/cg_cmm_cl.h;
+$(OBJ_DIR)/lj_sdk_cl.h: lal_lj_sdk.cu $(PRE1_H)
+ $(BSH) ./geryon/file_to_cstr.sh lj_sdk $(PRE1_H) lal_lj_sdk.cu $(OBJ_DIR)/lj_sdk_cl.h;
-$(OBJ_DIR)/lal_cg_cmm.o: $(ALL_H) lal_cg_cmm.h lal_cg_cmm.cpp $(OBJ_DIR)/cg_cmm_cl.h $(OBJ_DIR)/cg_cmm_cl.h $(OBJ_DIR)/lal_base_atomic.o
- $(OCL) -o $@ -c lal_cg_cmm.cpp -I$(OBJ_DIR)
+$(OBJ_DIR)/lal_lj_sdk.o: $(ALL_H) lal_lj_sdk.h lal_lj_sdk.cpp $(OBJ_DIR)/lj_sdk_cl.h $(OBJ_DIR)/lj_sdk_cl.h $(OBJ_DIR)/lal_base_atomic.o
+ $(OCL) -o $@ -c lal_lj_sdk.cpp -I$(OBJ_DIR)
-$(OBJ_DIR)/lal_cg_cmm_ext.o: $(ALL_H) lal_cg_cmm.h lal_cg_cmm_ext.cpp lal_base_atomic.h
- $(OCL) -o $@ -c lal_cg_cmm_ext.cpp -I$(OBJ_DIR)
+$(OBJ_DIR)/lal_lj_sdk_ext.o: $(ALL_H) lal_lj_sdk.h lal_lj_sdk_ext.cpp lal_base_atomic.h
+ $(OCL) -o $@ -c lal_lj_sdk_ext.cpp -I$(OBJ_DIR)
-$(OBJ_DIR)/cg_cmm_long_cl.h: lal_cg_cmm_long.cu $(PRE1_H)
- $(BSH) ./geryon/file_to_cstr.sh cg_cmm_long $(PRE1_H) lal_cg_cmm_long.cu $(OBJ_DIR)/cg_cmm_long_cl.h;
+$(OBJ_DIR)/lj_sdk_long_cl.h: lal_lj_sdk_long.cu $(PRE1_H)
+ $(BSH) ./geryon/file_to_cstr.sh lj_sdk_long $(PRE1_H) lal_lj_sdk_long.cu $(OBJ_DIR)/lj_sdk_long_cl.h;
-$(OBJ_DIR)/lal_cg_cmm_long.o: $(ALL_H) lal_cg_cmm_long.h lal_cg_cmm_long.cpp $(OBJ_DIR)/cg_cmm_long_cl.h $(OBJ_DIR)/cg_cmm_long_cl.h $(OBJ_DIR)/lal_base_atomic.o
- $(OCL) -o $@ -c lal_cg_cmm_long.cpp -I$(OBJ_DIR)
+$(OBJ_DIR)/lal_lj_sdk_long.o: $(ALL_H) lal_lj_sdk_long.h lal_lj_sdk_long.cpp $(OBJ_DIR)/lj_sdk_long_cl.h $(OBJ_DIR)/lj_sdk_long_cl.h $(OBJ_DIR)/lal_base_atomic.o
+ $(OCL) -o $@ -c lal_lj_sdk_long.cpp -I$(OBJ_DIR)
-$(OBJ_DIR)/lal_cg_cmm_long_ext.o: $(ALL_H) lal_cg_cmm_long.h lal_cg_cmm_long_ext.cpp lal_base_charge.h
- $(OCL) -o $@ -c lal_cg_cmm_long_ext.cpp -I$(OBJ_DIR)
+$(OBJ_DIR)/lal_lj_sdk_long_ext.o: $(ALL_H) lal_lj_sdk_long.h lal_lj_sdk_long_ext.cpp lal_base_charge.h
+ $(OCL) -o $@ -c lal_lj_sdk_long_ext.cpp -I$(OBJ_DIR)
$(OBJ_DIR)/eam_cl.h: lal_eam.cu $(PRE1_H)
$(BSH) ./geryon/file_to_cstr.sh eam $(PRE1_H) lal_eam.cu $(OBJ_DIR)/eam_cl.h;
diff --git a/lib/gpu/README b/lib/gpu/README
index 45c8ce49ba..b26897e885 100644
--- a/lib/gpu/README
+++ b/lib/gpu/README
@@ -17,6 +17,11 @@ links against when using the GPU package.
This library must be built with a C++ compiler, before LAMMPS is
built, so LAMMPS can link against it.
+You can type "make lib-gpu" from the src directory to see help on how
+to build this library via make commands, or you can do the same thing
+by typing "python Install.py" from within this directory, or you can
+do it manually by following the instructions below.
+
Build the library using one of the provided Makefile.* files or create
your own, specific to your compiler and system. For example:
@@ -164,9 +169,9 @@ this directory).
The gpu library supports 3 precision modes as determined by
the CUDA_PRECISION variable:
- CUDA_PREC = -D_SINGLE_SINGLE # Single precision for all calculations
- CUDA_PREC = -D_DOUBLE_DOUBLE # Double precision for all calculations
- CUDA_PREC = -D_SINGLE_DOUBLE # Accumulation of forces, etc. in double
+ CUDA_PRECISION = -D_SINGLE_SINGLE # Single precision for all calculations
+ CUDA_PRECISION = -D_DOUBLE_DOUBLE # Double precision for all calculations
+ CUDA_PRECISION = -D_SINGLE_DOUBLE # Accumulation of forces, etc. in double
NOTE: PPPM acceleration can only be run on GPUs with compute capability>=1.1.
You will get the error "GPU library not compiled for this accelerator."
diff --git a/lib/gpu/lal_cg_cmm.cpp b/lib/gpu/lal_lj_sdk.cpp
similarity index 85%
rename from lib/gpu/lal_cg_cmm.cpp
rename to lib/gpu/lal_lj_sdk.cpp
index d361e32b09..618555e38a 100644
--- a/lib/gpu/lal_cg_cmm.cpp
+++ b/lib/gpu/lal_lj_sdk.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- cg_cmm.cpp
+ lj_sdk.cpp
-------------------
W. Michael Brown (ORNL)
@@ -14,14 +14,14 @@
***************************************************************************/
#if defined(USE_OPENCL)
-#include "cg_cmm_cl.h"
+#include "lj_sdk_cl.h"
#elif defined(USE_CUDART)
-const char *cg_cmm=0;
+const char *lj_sdk=0;
#else
-#include "cg_cmm_cubin.h"
+#include "lj_sdk_cubin.h"
#endif
-#include "lal_cg_cmm.h"
+#include "lal_lj_sdk.h"
#include
using namespace LAMMPS_AL;
#define CGCMMT CGCMM
@@ -53,33 +53,33 @@ int CGCMMT::init(const int ntypes, double **host_cutsq,
const double gpu_split, FILE *_screen) {
int success;
success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size,gpu_split,
- _screen,cg_cmm,"k_cg_cmm");
+ _screen,lj_sdk,"k_lj_sdk");
if (success!=0)
return success;
// If atom type constants fit in shared memory use fast kernel
- int cmm_types=ntypes;
+ int sdk_types=ntypes;
shared_types=false;
int max_shared_types=this->device->max_shared_types();
- if (cmm_types<=max_shared_types && this->_block_size>=max_shared_types) {
- cmm_types=max_shared_types;
+ if (sdk_types<=max_shared_types && this->_block_size>=max_shared_types) {
+ sdk_types=max_shared_types;
shared_types=true;
}
- _cmm_types=cmm_types;
+ _sdk_types=sdk_types;
// Allocate a host write buffer for data initialization
- UCL_H_Vec host_write(cmm_types*cmm_types*32,*(this->ucl_device),
+ UCL_H_Vec host_write(sdk_types*sdk_types*32,*(this->ucl_device),
UCL_WRITE_ONLY);
- for (int i=0; iucl_device),UCL_READ_ONLY);
- this->atom->type_pack4(ntypes,cmm_types,lj1,host_write,host_cutsq,
+ lj1.alloc(sdk_types*sdk_types,*(this->ucl_device),UCL_READ_ONLY);
+ this->atom->type_pack4(ntypes,sdk_types,lj1,host_write,host_cutsq,
host_cg_type,host_lj1,host_lj2);
- lj3.alloc(cmm_types*cmm_types,*(this->ucl_device),UCL_READ_ONLY);
- this->atom->type_pack4(ntypes,cmm_types,lj3,host_write,host_lj3,host_lj4,
+ lj3.alloc(sdk_types*sdk_types,*(this->ucl_device),UCL_READ_ONLY);
+ this->atom->type_pack4(ntypes,sdk_types,lj3,host_write,host_lj3,host_lj4,
host_offset);
UCL_H_Vec dview;
@@ -143,7 +143,7 @@ void CGCMMT::loop(const bool _eflag, const bool _vflag) {
} else {
this->k_pair.set_size(GX,BX);
this->k_pair.run(&this->atom->x, &lj1, &lj3,
- &_cmm_types, &sp_lj, &this->nbor->dev_nbor,
+ &_sdk_types, &sp_lj, &this->nbor->dev_nbor,
&this->_nbor_data->begin(), &this->ans->force,
&this->ans->engv, &eflag, &vflag, &ainum,
&nbor_pitch, &this->_threads_per_atom);
diff --git a/lib/gpu/lal_cg_cmm.cu b/lib/gpu/lal_lj_sdk.cu
similarity index 97%
rename from lib/gpu/lal_cg_cmm.cu
rename to lib/gpu/lal_lj_sdk.cu
index 70d2ab6092..01b2cdd18d 100644
--- a/lib/gpu/lal_cg_cmm.cu
+++ b/lib/gpu/lal_lj_sdk.cu
@@ -1,5 +1,5 @@
// **************************************************************************
-// cg_cmm.cu
+// lj_sdk.cu
// -------------------
// W. Michael Brown (ORNL)
//
@@ -24,7 +24,7 @@ texture pos_tex;
#define pos_tex x_
#endif
-__kernel void k_cg_cmm(const __global numtyp4 *restrict x_,
+__kernel void k_lj_sdk(const __global numtyp4 *restrict x_,
const __global numtyp4 *restrict lj1,
const __global numtyp4 *restrict lj3,
const int lj_types,
@@ -116,7 +116,7 @@ __kernel void k_cg_cmm(const __global numtyp4 *restrict x_,
} // if ii
}
-__kernel void k_cg_cmm_fast(const __global numtyp4 *restrict x_,
+__kernel void k_lj_sdk_fast(const __global numtyp4 *restrict x_,
const __global numtyp4 *restrict lj1_in,
const __global numtyp4 *restrict lj3_in,
const __global numtyp *restrict sp_lj_in,
diff --git a/lib/gpu/lal_cg_cmm.h b/lib/gpu/lal_lj_sdk.h
similarity index 97%
rename from lib/gpu/lal_cg_cmm.h
rename to lib/gpu/lal_lj_sdk.h
index b7895b5898..ac2b9aafe3 100644
--- a/lib/gpu/lal_cg_cmm.h
+++ b/lib/gpu/lal_lj_sdk.h
@@ -1,5 +1,5 @@
/***************************************************************************
- cg_cmm.h
+ lj_sdk.h
-------------------
W. Michael Brown (ORNL)
@@ -67,7 +67,7 @@ class CGCMM : public BaseAtomic {
bool shared_types;
/// Number of atom types
- int _cmm_types;
+ int _sdk_types;
private:
bool _allocated;
diff --git a/lib/gpu/lal_cg_cmm_ext.cpp b/lib/gpu/lal_lj_sdk_ext.cpp
similarity index 93%
rename from lib/gpu/lal_cg_cmm_ext.cpp
rename to lib/gpu/lal_lj_sdk_ext.cpp
index b6fc110b15..386106161e 100644
--- a/lib/gpu/lal_cg_cmm_ext.cpp
+++ b/lib/gpu/lal_lj_sdk_ext.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- cg_cmm.h
+ lj_sdk.h
-------------------
W. Michael Brown (ORNL)
@@ -17,7 +17,7 @@
#include
#include
-#include "lal_cg_cmm.h"
+#include "lal_lj_sdk.h"
using namespace std;
using namespace LAMMPS_AL;
@@ -27,7 +27,7 @@ static CGCMM CMMMF;
// ---------------------------------------------------------------------------
// Allocate memory on host and device and copy constants to device
// ---------------------------------------------------------------------------
-int cmm_gpu_init(const int ntypes, double **cutsq, int **cg_types,
+int sdk_gpu_init(const int ntypes, double **cutsq, int **cg_types,
double **host_lj1, double **host_lj2, double **host_lj3,
double **host_lj4, double **offset, double *special_lj,
const int inum, const int nall, const int max_nbors,
@@ -89,11 +89,11 @@ int cmm_gpu_init(const int ntypes, double **cutsq, int **cg_types,
return init_ok;
}
-void cmm_gpu_clear() {
+void sdk_gpu_clear() {
CMMMF.clear();
}
-int** cmm_gpu_compute_n(const int ago, const int inum_full,
+int** sdk_gpu_compute_n(const int ago, const int inum_full,
const int nall, double **host_x, int *host_type,
double *sublo, double *subhi, tagint *tag, int **nspecial,
tagint **special, const bool eflag, const bool vflag,
@@ -105,7 +105,7 @@ int** cmm_gpu_compute_n(const int ago, const int inum_full,
vatom, host_start, ilist, jnum, cpu_time, success);
}
-void cmm_gpu_compute(const int ago, const int inum_full, const int nall,
+void sdk_gpu_compute(const int ago, const int inum_full, const int nall,
double **host_x, int *host_type, int *ilist, int *numj,
int **firstneigh, const bool eflag, const bool vflag,
const bool eatom, const bool vatom, int &host_start,
@@ -114,7 +114,7 @@ void cmm_gpu_compute(const int ago, const int inum_full, const int nall,
firstneigh,eflag,vflag,eatom,vatom,host_start,cpu_time,success);
}
-double cmm_gpu_bytes() {
+double sdk_gpu_bytes() {
return CMMMF.host_memory_usage();
}
diff --git a/lib/gpu/lal_cg_cmm_long.cpp b/lib/gpu/lal_lj_sdk_long.cpp
similarity index 96%
rename from lib/gpu/lal_cg_cmm_long.cpp
rename to lib/gpu/lal_lj_sdk_long.cpp
index 14b5b7622c..46caf6bd36 100644
--- a/lib/gpu/lal_cg_cmm_long.cpp
+++ b/lib/gpu/lal_lj_sdk_long.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- cg_cmm_long.cpp
+ lj_sdk_long.cpp
-------------------
W. Michael Brown (ORNL)
@@ -14,14 +14,14 @@
***************************************************************************/
#if defined(USE_OPENCL)
-#include "cg_cmm_long_cl.h"
+#include "lj_sdk_long_cl.h"
#elif defined(USE_CUDART)
-const char *cg_cmm_long=0;
+const char *lj_sdk_long=0;
#else
-#include "cg_cmm_long_cubin.h"
+#include "lj_sdk_long_cubin.h"
#endif
-#include "lal_cg_cmm_long.h"
+#include "lal_lj_sdk_long.h"
#include
using namespace LAMMPS_AL;
#define CGCMMLongT CGCMMLong
@@ -58,7 +58,7 @@ int CGCMMLongT::init(const int ntypes, double **host_cutsq,
const double g_ewald) {
int success;
success=this->init_atomic(nlocal,nall,max_nbors,maxspecial,cell_size,gpu_split,
- _screen,cg_cmm_long,"k_cg_cmm_long");
+ _screen,lj_sdk_long,"k_lj_sdk_long");
if (success!=0)
return success;
diff --git a/lib/gpu/lal_cg_cmm_long.cu b/lib/gpu/lal_lj_sdk_long.cu
similarity index 98%
rename from lib/gpu/lal_cg_cmm_long.cu
rename to lib/gpu/lal_lj_sdk_long.cu
index f6942d1809..5ff64b2254 100644
--- a/lib/gpu/lal_cg_cmm_long.cu
+++ b/lib/gpu/lal_lj_sdk_long.cu
@@ -1,5 +1,5 @@
// **************************************************************************
-// cg_cmm_long.cu
+// lj_sdk_long.cu
// -------------------
// W. Michael Brown (ORNL)
//
@@ -29,7 +29,7 @@ texture q_tex;
#define q_tex q_
#endif
-__kernel void k_cg_cmm_long(const __global numtyp4 *restrict x_,
+__kernel void k_lj_sdk_long(const __global numtyp4 *restrict x_,
const __global numtyp4 *restrict lj1,
const __global numtyp4 *restrict lj3,
const int lj_types,
@@ -154,7 +154,7 @@ __kernel void k_cg_cmm_long(const __global numtyp4 *restrict x_,
} // if ii
}
-__kernel void k_cg_cmm_long_fast(const __global numtyp4 *restrict x_,
+__kernel void k_lj_sdk_long_fast(const __global numtyp4 *restrict x_,
const __global numtyp4 *restrict lj1_in,
const __global numtyp4 *restrict lj3_in,
const __global numtyp *restrict sp_lj_in,
diff --git a/lib/gpu/lal_cg_cmm_long.h b/lib/gpu/lal_lj_sdk_long.h
similarity index 98%
rename from lib/gpu/lal_cg_cmm_long.h
rename to lib/gpu/lal_lj_sdk_long.h
index aa0cbfbaf0..f56687cd7d 100644
--- a/lib/gpu/lal_cg_cmm_long.h
+++ b/lib/gpu/lal_lj_sdk_long.h
@@ -1,5 +1,5 @@
/***************************************************************************
- cg_cmm_long.h
+ lj_sdk_long.h
-------------------
W. Michael Brown (ORNL)
diff --git a/lib/gpu/lal_cg_cmm_long_ext.cpp b/lib/gpu/lal_lj_sdk_long_ext.cpp
similarity index 93%
rename from lib/gpu/lal_cg_cmm_long_ext.cpp
rename to lib/gpu/lal_lj_sdk_long_ext.cpp
index ee0a0269e5..08390d3eeb 100644
--- a/lib/gpu/lal_cg_cmm_long_ext.cpp
+++ b/lib/gpu/lal_lj_sdk_long_ext.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- cg_cmm_long.h
+ lj_sdk_long.h
-------------------
W. Michael Brown (ORNL)
@@ -17,7 +17,7 @@
#include
#include
-#include "lal_cg_cmm_long.h"
+#include "lal_lj_sdk_long.h"
using namespace std;
using namespace LAMMPS_AL;
@@ -27,7 +27,7 @@ static CGCMMLong CMMLMF;
// ---------------------------------------------------------------------------
// Allocate memory on host and device and copy constants to device
// ---------------------------------------------------------------------------
-int cmml_gpu_init(const int ntypes, double **cutsq, int **cg_type,
+int sdkl_gpu_init(const int ntypes, double **cutsq, int **cg_type,
double **host_lj1, double **host_lj2, double **host_lj3,
double **host_lj4, double **offset, double *special_lj,
const int inum, const int nall, const int max_nbors,
@@ -93,11 +93,11 @@ int cmml_gpu_init(const int ntypes, double **cutsq, int **cg_type,
return init_ok;
}
-void cmml_gpu_clear() {
+void sdkl_gpu_clear() {
CMMLMF.clear();
}
-int** cmml_gpu_compute_n(const int ago, const int inum_full,
+int** sdkl_gpu_compute_n(const int ago, const int inum_full,
const int nall, double **host_x, int *host_type,
double *sublo, double *subhi, tagint *tag, int **nspecial,
tagint **special, const bool eflag, const bool vflag,
@@ -111,7 +111,7 @@ int** cmml_gpu_compute_n(const int ago, const int inum_full,
host_q,boxlo,prd);
}
-void cmml_gpu_compute(const int ago, const int inum_full, const int nall,
+void sdkl_gpu_compute(const int ago, const int inum_full, const int nall,
double **host_x, int *host_type, int *ilist, int *numj,
int **firstneigh, const bool eflag, const bool vflag,
const bool eatom, const bool vatom, int &host_start,
@@ -122,7 +122,7 @@ void cmml_gpu_compute(const int ago, const int inum_full, const int nall,
host_q,nlocal,boxlo,prd);
}
-double cmml_gpu_bytes() {
+double sdkl_gpu_bytes() {
return CMMLMF.host_memory_usage();
}
diff --git a/lib/h5md/Install.py b/lib/h5md/Install.py
new file mode 100644
index 0000000000..18b426f928
--- /dev/null
+++ b/lib/h5md/Install.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python
+
+# install.py tool to do a generic build of a library
+# soft linked to by many of the lib/Install.py files
+# used to automate the steps described in the corresponding lib/README
+
+import sys,commands,os
+
+# help message
+
+help = """
+Syntax: python Install.py -m machine -e suffix
+ specify -m and optionally -e, order does not matter
+ -m = peform a clean followed by "make -f Makefile.machine"
+ machine = suffix of a lib/Makefile.* file
+ -e = set EXTRAMAKE variable in Makefile.machine to Makefile.lammps.suffix
+ does not alter existing Makefile.machine
+"""
+
+# print error message or help
+
+def error(str=None):
+ if not str: print help
+ else: print "ERROR",str
+ sys.exit()
+
+# parse args
+
+args = sys.argv[1:]
+nargs = len(args)
+if nargs == 0: error()
+
+machine = None
+extraflag = 0
+
+iarg = 0
+while iarg < nargs:
+ if args[iarg] == "-m":
+ if iarg+2 > nargs: error()
+ machine = args[iarg+1]
+ iarg += 2
+ elif args[iarg] == "-e":
+ if iarg+2 > nargs: error()
+ extraflag = 1
+ suffix = args[iarg+1]
+ iarg += 2
+ else: error()
+
+# set lib from working dir
+
+cwd = os.getcwd()
+lib = os.path.basename(cwd)
+
+# create Makefile.auto as copy of Makefile.machine
+# reset EXTRAMAKE if requested
+
+if not os.path.exists("Makefile.%s" % machine):
+ error("lib/%s/Makefile.%s does not exist" % (lib,machine))
+
+lines = open("Makefile.%s" % machine,'r').readlines()
+fp = open("Makefile.auto",'w')
+
+for line in lines:
+ words = line.split()
+ if len(words) == 3 and extraflag and \
+ words[0] == "EXTRAMAKE" and words[1] == '=':
+ line = line.replace(words[2],"Makefile.lammps.%s" % suffix)
+ print >>fp,line,
+
+fp.close()
+
+# make the library via Makefile.auto
+
+print "Building lib%s.a ..." % lib
+cmd = "make -f Makefile.auto clean; make -f Makefile.auto"
+txt = commands.getoutput(cmd)
+print txt
+
+if os.path.exists("lib%s.a" % lib): print "Build was successful"
+else: error("Build of lib/%s/lib%s.a was NOT successful" % (lib,lib))
+if not os.path.exists("Makefile.lammps"):
+ print "lib/%s/Makefile.lammps was NOT created" % lib
diff --git a/lib/h5md/Makefile b/lib/h5md/Makefile.h5cc
similarity index 95%
rename from lib/h5md/Makefile
rename to lib/h5md/Makefile.h5cc
index 085d21ff69..bd3e8a9784 100644
--- a/lib/h5md/Makefile
+++ b/lib/h5md/Makefile.h5cc
@@ -19,7 +19,7 @@ build/ch5md.o: src/ch5md.c | build
$(CC) $(INC) $(CFLAGS) -c $< -o $@
Makefile.lammps:
- cp Makefile.lammps.empty $@
+ cp $(EXTRAMAKE) $@
.PHONY: all lib clean
diff --git a/lib/h5md/README b/lib/h5md/README
index 62a4979cba..fb7d82bfcc 100644
--- a/lib/h5md/README
+++ b/lib/h5md/README
@@ -3,6 +3,11 @@ LAMMPS under its own BSD license; see below. This library is used
when the USER-H5MD package is included in a LAMMPS build and the dump
h5md command is invoked in a LAMMPS input script.
+You can type "make lib-h5md" from the src directory to see help on how
+to build this library via make commands, or you can do the same thing
+by typing "python Install.py" from within this directory, or you can
+do it manually by following the instructions below.
+
---------------------
ch5md : Read and write H5MD files in C
@@ -17,8 +22,14 @@ molecular data, whose development is found at .
ch5md is developped by Pierre de Buyl and is released under the 3-clause BSD
license that can be found in the file LICENSE.
-To use the h5md dump style in lammps, execute make in this directory then 'make
-yes-user-h5md' in the src directory of lammps. Rebuild lammps.
+To use the h5md dump style in lammps, execute
+make -f Makefile.h5cc
+in this directory then
+make yes-user-h5md
+in the src directory of LAMMPS to rebuild LAMMPS.
+
+Note that you must have the h5cc compiler installed to use
+Makefile.h5cc. It should be part
If HDF5 is not in a standard system location, edit Makefile.lammps accordingly.
diff --git a/lib/kokkos/CHANGELOG.md b/lib/kokkos/CHANGELOG.md
index 4a96e24418..c6fe991b97 100644
--- a/lib/kokkos/CHANGELOG.md
+++ b/lib/kokkos/CHANGELOG.md
@@ -1,5 +1,28 @@
# Change Log
+## [2.03.00](https://github.com/kokkos/kokkos/tree/2.03.00) (2017-04-25)
+[Full Changelog](https://github.com/kokkos/kokkos/compare/2.02.15...2.03.00)
+
+**Implemented enhancements:**
+
+- UnorderedMap: make it accept Devices or MemorySpaces [\#711](https://github.com/kokkos/kokkos/issues/711)
+- sort to accept DynamicView and \[begin,end\) indices [\#691](https://github.com/kokkos/kokkos/issues/691)
+- ENABLE Macros should only be used via \#ifdef or \#if defined [\#675](https://github.com/kokkos/kokkos/issues/675)
+- Remove impl/Kokkos\_Synchronic\_\* [\#666](https://github.com/kokkos/kokkos/issues/666)
+- Turning off IVDEP for Intel 14. [\#638](https://github.com/kokkos/kokkos/issues/638)
+- Using an installed Kokkos in a target application using CMake [\#633](https://github.com/kokkos/kokkos/issues/633)
+- Create Kokkos Bill of Materials [\#632](https://github.com/kokkos/kokkos/issues/632)
+- MDRangePolicy and tagged evaluators [\#547](https://github.com/kokkos/kokkos/issues/547)
+- Add PGI support [\#289](https://github.com/kokkos/kokkos/issues/289)
+
+**Fixed bugs:**
+
+- Output from PerTeam fails [\#733](https://github.com/kokkos/kokkos/issues/733)
+- Cuda: architecture flag not added to link line [\#688](https://github.com/kokkos/kokkos/issues/688)
+- Getting large chunks of memory for a thread team in a universal way [\#664](https://github.com/kokkos/kokkos/issues/664)
+- Kokkos RNG normal\(\) function hangs for small seed value [\#655](https://github.com/kokkos/kokkos/issues/655)
+- Kokkos Tests Errors on Shepard/HSW Builds [\#644](https://github.com/kokkos/kokkos/issues/644)
+
## [2.02.15](https://github.com/kokkos/kokkos/tree/2.02.15) (2017-02-10)
[Full Changelog](https://github.com/kokkos/kokkos/compare/2.02.07...2.02.15)
diff --git a/lib/kokkos/CMakeLists.txt b/lib/kokkos/CMakeLists.txt
index 16854c839a..1c820660ae 100644
--- a/lib/kokkos/CMakeLists.txt
+++ b/lib/kokkos/CMakeLists.txt
@@ -98,10 +98,10 @@ TRIBITS_ADD_OPTION_AND_DEFINE(
)
TRIBITS_ADD_OPTION_AND_DEFINE(
- Kokkos_ENABLE_QTHREAD
- KOKKOS_HAVE_QTHREAD
- "Enable QTHREAD support in Kokkos."
- "${TPL_ENABLE_QTHREAD}"
+ Kokkos_ENABLE_Qthreads
+ KOKKOS_HAVE_QTHREADS
+ "Enable Qthreads support in Kokkos."
+ "${TPL_ENABLE_QTHREADS}"
)
TRIBITS_ADD_OPTION_AND_DEFINE(
@@ -110,7 +110,7 @@ TRIBITS_ADD_OPTION_AND_DEFINE(
"Enable C++11 support in Kokkos."
"${${PROJECT_NAME}_ENABLE_CXX11}"
)
-
+
TRIBITS_ADD_OPTION_AND_DEFINE(
Kokkos_ENABLE_HWLOC
KOKKOS_HAVE_HWLOC
@@ -213,4 +213,3 @@ TRIBITS_EXCLUDE_FILES(
)
TRIBITS_PACKAGE_POSTPROCESS()
-
diff --git a/lib/kokkos/Makefile.kokkos b/lib/kokkos/Makefile.kokkos
index 9d00c19027..5b094dba8c 100644
--- a/lib/kokkos/Makefile.kokkos
+++ b/lib/kokkos/Makefile.kokkos
@@ -1,39 +1,38 @@
-# Default settings common options
+# Default settings common options.
#LAMMPS specific settings:
KOKKOS_PATH=../../lib/kokkos
CXXFLAGS=$(CCFLAGS)
-#Options: OpenMP,Serial,Pthreads,Cuda
+# Options: Cuda,OpenMP,Pthreads,Qthreads,Serial
KOKKOS_DEVICES ?= "OpenMP"
#KOKKOS_DEVICES ?= "Pthreads"
-#Options: KNC,SNB,HSW,Kepler,Kepler30,Kepler32,Kepler35,Kepler37,Maxwell,Maxwell50,Maxwell52,Maxwell53,Pascal61,ARMv80,ARMv81,ARMv8-ThunderX,BGQ,Power7,Power8,Power9,KNL,BDW,SKX
+# Options: KNC,SNB,HSW,Kepler,Kepler30,Kepler32,Kepler35,Kepler37,Maxwell,Maxwell50,Maxwell52,Maxwell53,Pascal60,Pascal61,ARMv80,ARMv81,ARMv8-ThunderX,BGQ,Power7,Power8,Power9,KNL,BDW,SKX
KOKKOS_ARCH ?= ""
-#Options: yes,no
+# Options: yes,no
KOKKOS_DEBUG ?= "no"
-#Options: hwloc,librt,experimental_memkind
+# Options: hwloc,librt,experimental_memkind
KOKKOS_USE_TPLS ?= ""
-#Options: c++11,c++1z
+# Options: c++11,c++1z
KOKKOS_CXX_STANDARD ?= "c++11"
-#Options: aggressive_vectorization,disable_profiling
+# Options: aggressive_vectorization,disable_profiling
KOKKOS_OPTIONS ?= ""
-#Default settings specific options
-#Options: force_uvm,use_ldg,rdc,enable_lambda
+# Default settings specific options.
+# Options: force_uvm,use_ldg,rdc,enable_lambda
KOKKOS_CUDA_OPTIONS ?= "enable_lambda"
-# Check for general settings
-
+# Check for general settings.
KOKKOS_INTERNAL_ENABLE_DEBUG := $(strip $(shell echo $(KOKKOS_DEBUG) | grep "yes" | wc -l))
KOKKOS_INTERNAL_ENABLE_CXX11 := $(strip $(shell echo $(KOKKOS_CXX_STANDARD) | grep "c++11" | wc -l))
KOKKOS_INTERNAL_ENABLE_CXX1Z := $(strip $(shell echo $(KOKKOS_CXX_STANDARD) | grep "c++1z" | wc -l))
-# Check for external libraries
+# Check for external libraries.
KOKKOS_INTERNAL_USE_HWLOC := $(strip $(shell echo $(KOKKOS_USE_TPLS) | grep "hwloc" | wc -l))
KOKKOS_INTERNAL_USE_LIBRT := $(strip $(shell echo $(KOKKOS_USE_TPLS) | grep "librt" | wc -l))
KOKKOS_INTERNAL_USE_MEMKIND := $(strip $(shell echo $(KOKKOS_USE_TPLS) | grep "experimental_memkind" | wc -l))
-# Check for advanced settings
+# Check for advanced settings.
KOKKOS_INTERNAL_OPT_RANGE_AGGRESSIVE_VECTORIZATION := $(strip $(shell echo $(KOKKOS_OPTIONS) | grep "aggressive_vectorization" | wc -l))
KOKKOS_INTERNAL_DISABLE_PROFILING := $(strip $(shell echo $(KOKKOS_OPTIONS) | grep "disable_profiling" | wc -l))
KOKKOS_INTERNAL_CUDA_USE_LDG := $(strip $(shell echo $(KOKKOS_CUDA_OPTIONS) | grep "use_ldg" | wc -l))
@@ -41,21 +40,21 @@ KOKKOS_INTERNAL_CUDA_USE_UVM := $(strip $(shell echo $(KOKKOS_CUDA_OPTIONS) | gr
KOKKOS_INTERNAL_CUDA_USE_RELOC := $(strip $(shell echo $(KOKKOS_CUDA_OPTIONS) | grep "rdc" | wc -l))
KOKKOS_INTERNAL_CUDA_USE_LAMBDA := $(strip $(shell echo $(KOKKOS_CUDA_OPTIONS) | grep "enable_lambda" | wc -l))
-# Check for Kokkos Host Execution Spaces one of which must be on
-
+# Check for Kokkos Host Execution Spaces one of which must be on.
KOKKOS_INTERNAL_USE_OPENMP := $(strip $(shell echo $(KOKKOS_DEVICES) | grep OpenMP | wc -l))
KOKKOS_INTERNAL_USE_PTHREADS := $(strip $(shell echo $(KOKKOS_DEVICES) | grep Pthread | wc -l))
+KOKKOS_INTERNAL_USE_QTHREADS := $(strip $(shell echo $(KOKKOS_DEVICES) | grep Qthreads | wc -l))
KOKKOS_INTERNAL_USE_SERIAL := $(strip $(shell echo $(KOKKOS_DEVICES) | grep Serial | wc -l))
-KOKKOS_INTERNAL_USE_QTHREAD := $(strip $(shell echo $(KOKKOS_DEVICES) | grep Qthread | wc -l))
ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 0)
ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 0)
- KOKKOS_INTERNAL_USE_SERIAL := 1
+ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 0)
+ KOKKOS_INTERNAL_USE_SERIAL := 1
+endif
endif
endif
-# Check for other Execution Spaces
-
+# Check for other Execution Spaces.
KOKKOS_INTERNAL_USE_CUDA := $(strip $(shell echo $(KOKKOS_DEVICES) | grep Cuda | wc -l))
ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1)
@@ -64,27 +63,25 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1)
KOKKOS_INTERNAL_COMPILER_NVCC_VERSION := $(shell nvcc --version 2>&1 | grep release | cut -d' ' -f5 | cut -d',' -f1 | tr -d .)
endif
-# Check OS
-
+# Check OS.
KOKKOS_OS := $(shell uname -s)
KOKKOS_INTERNAL_OS_CYGWIN := $(shell uname -s | grep CYGWIN | wc -l)
KOKKOS_INTERNAL_OS_LINUX := $(shell uname -s | grep Linux | wc -l)
KOKKOS_INTERNAL_OS_DARWIN := $(shell uname -s | grep Darwin | wc -l)
-# Check compiler
-
-KOKKOS_INTERNAL_COMPILER_INTEL := $(shell $(CXX) --version 2>&1 | grep "Intel Corporation" | wc -l)
-KOKKOS_INTERNAL_COMPILER_PGI := $(shell $(CXX) --version 2>&1 | grep PGI | wc -l)
-KOKKOS_INTERNAL_COMPILER_XL := $(shell $(CXX) -qversion 2>&1 | grep XL | wc -l)
-KOKKOS_INTERNAL_COMPILER_CRAY := $(shell $(CXX) -craype-verbose 2>&1 | grep "CC-" | wc -l)
-KOKKOS_INTERNAL_COMPILER_NVCC := $(shell $(CXX) --version 2>&1 | grep "nvcc" | wc -l)
+# Check compiler.
+KOKKOS_INTERNAL_COMPILER_INTEL := $(shell $(CXX) --version 2>&1 | grep "Intel Corporation" | wc -l)
+KOKKOS_INTERNAL_COMPILER_PGI := $(shell $(CXX) --version 2>&1 | grep PGI | wc -l)
+KOKKOS_INTERNAL_COMPILER_XL := $(shell $(CXX) -qversion 2>&1 | grep XL | wc -l)
+KOKKOS_INTERNAL_COMPILER_CRAY := $(shell $(CXX) -craype-verbose 2>&1 | grep "CC-" | wc -l)
+KOKKOS_INTERNAL_COMPILER_NVCC := $(shell $(CXX) --version 2>&1 | grep "nvcc" | wc -l)
ifneq ($(OMPI_CXX),)
KOKKOS_INTERNAL_COMPILER_NVCC := $(shell $(OMPI_CXX) --version 2>&1 | grep "nvcc" | wc -l)
endif
ifneq ($(MPICH_CXX),)
KOKKOS_INTERNAL_COMPILER_NVCC := $(shell $(MPICH_CXX) --version 2>&1 | grep "nvcc" | wc -l)
endif
-KOKKOS_INTERNAL_COMPILER_CLANG := $(shell $(CXX) --version 2>&1 | grep "clang" | wc -l)
+KOKKOS_INTERNAL_COMPILER_CLANG := $(shell $(CXX) --version 2>&1 | grep "clang" | wc -l)
ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 2)
KOKKOS_INTERNAL_COMPILER_CLANG = 1
@@ -95,17 +92,17 @@ endif
ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1)
KOKKOS_INTERNAL_COMPILER_CLANG_VERSION := $(shell clang --version | grep version | cut -d ' ' -f3 | tr -d '.')
+
ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1)
ifeq ($(shell test $(KOKKOS_INTERNAL_COMPILER_CLANG_VERSION) -lt 400; echo $$?),0)
- $(error Compiling Cuda code directly with Clang requires version 4.0.0 or higher)
+ $(error Compiling Cuda code directly with Clang requires version 4.0.0 or higher)
endif
KOKKOS_INTERNAL_CUDA_USE_LAMBDA := 1
endif
endif
-
ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
- KOKKOS_INTERNAL_OPENMP_FLAG := -mp
+ KOKKOS_INTERNAL_OPENMP_FLAG := -mp
else
ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1)
KOKKOS_INTERNAL_OPENMP_FLAG := -fopenmp=libomp
@@ -114,7 +111,7 @@ else
KOKKOS_INTERNAL_OPENMP_FLAG := -qsmp=omp
else
ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
- # OpenMP is turned on by default in Cray compiler environment
+ # OpenMP is turned on by default in Cray compiler environment.
KOKKOS_INTERNAL_OPENMP_FLAG :=
else
KOKKOS_INTERNAL_OPENMP_FLAG := -fopenmp
@@ -138,9 +135,9 @@ else
endif
endif
-# Check for Kokkos Architecture settings
+# Check for Kokkos Architecture settings.
-#Intel based
+# Intel based.
KOKKOS_INTERNAL_USE_ARCH_KNC := $(strip $(shell echo $(KOKKOS_ARCH) | grep KNC | wc -l))
KOKKOS_INTERNAL_USE_ARCH_SNB := $(strip $(shell echo $(KOKKOS_ARCH) | grep SNB | wc -l))
KOKKOS_INTERNAL_USE_ARCH_HSW := $(strip $(shell echo $(KOKKOS_ARCH) | grep HSW | wc -l))
@@ -148,8 +145,8 @@ KOKKOS_INTERNAL_USE_ARCH_BDW := $(strip $(shell echo $(KOKKOS_ARCH) | grep BDW |
KOKKOS_INTERNAL_USE_ARCH_SKX := $(strip $(shell echo $(KOKKOS_ARCH) | grep SKX | wc -l))
KOKKOS_INTERNAL_USE_ARCH_KNL := $(strip $(shell echo $(KOKKOS_ARCH) | grep KNL | wc -l))
-#NVIDIA based
-NVCC_WRAPPER := $(KOKKOS_PATH)/config/nvcc_wrapper
+# NVIDIA based.
+NVCC_WRAPPER := $(KOKKOS_PATH)/config/nvcc_wrapper
KOKKOS_INTERNAL_USE_ARCH_KEPLER30 := $(strip $(shell echo $(KOKKOS_ARCH) | grep Kepler30 | wc -l))
KOKKOS_INTERNAL_USE_ARCH_KEPLER32 := $(strip $(shell echo $(KOKKOS_ARCH) | grep Kepler32 | wc -l))
KOKKOS_INTERNAL_USE_ARCH_KEPLER35 := $(strip $(shell echo $(KOKKOS_ARCH) | grep Kepler35 | wc -l))
@@ -170,46 +167,46 @@ KOKKOS_INTERNAL_USE_ARCH_NVIDIA := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_AR
+ $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL53) | bc))
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_NVIDIA), 0)
-KOKKOS_INTERNAL_USE_ARCH_MAXWELL50 := $(strip $(shell echo $(KOKKOS_ARCH) | grep Maxwell | wc -l))
-KOKKOS_INTERNAL_USE_ARCH_KEPLER35 := $(strip $(shell echo $(KOKKOS_ARCH) | grep Kepler | wc -l))
-KOKKOS_INTERNAL_USE_ARCH_NVIDIA := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_KEPLER30) \
- + $(KOKKOS_INTERNAL_USE_ARCH_KEPLER32) \
- + $(KOKKOS_INTERNAL_USE_ARCH_KEPLER35) \
- + $(KOKKOS_INTERNAL_USE_ARCH_KEPLER37) \
- + $(KOKKOS_INTERNAL_USE_ARCH_PASCAL61) \
- + $(KOKKOS_INTERNAL_USE_ARCH_PASCAL60) \
- + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL50) \
- + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL52) \
- + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL53) | bc))
+ KOKKOS_INTERNAL_USE_ARCH_MAXWELL50 := $(strip $(shell echo $(KOKKOS_ARCH) | grep Maxwell | wc -l))
+ KOKKOS_INTERNAL_USE_ARCH_KEPLER35 := $(strip $(shell echo $(KOKKOS_ARCH) | grep Kepler | wc -l))
+ KOKKOS_INTERNAL_USE_ARCH_NVIDIA := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_KEPLER30) \
+ + $(KOKKOS_INTERNAL_USE_ARCH_KEPLER32) \
+ + $(KOKKOS_INTERNAL_USE_ARCH_KEPLER35) \
+ + $(KOKKOS_INTERNAL_USE_ARCH_KEPLER37) \
+ + $(KOKKOS_INTERNAL_USE_ARCH_PASCAL61) \
+ + $(KOKKOS_INTERNAL_USE_ARCH_PASCAL60) \
+ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL50) \
+ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL52) \
+ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL53) | bc))
endif
-#ARM based
+# ARM based.
KOKKOS_INTERNAL_USE_ARCH_ARMV80 := $(strip $(shell echo $(KOKKOS_ARCH) | grep ARMv80 | wc -l))
KOKKOS_INTERNAL_USE_ARCH_ARMV81 := $(strip $(shell echo $(KOKKOS_ARCH) | grep ARMv81 | wc -l))
KOKKOS_INTERNAL_USE_ARCH_ARMV8_THUNDERX := $(strip $(shell echo $(KOKKOS_ARCH) | grep ARMv8-ThunderX | wc -l))
-#IBM based
+# IBM based.
KOKKOS_INTERNAL_USE_ARCH_BGQ := $(strip $(shell echo $(KOKKOS_ARCH) | grep BGQ | wc -l))
KOKKOS_INTERNAL_USE_ARCH_POWER7 := $(strip $(shell echo $(KOKKOS_ARCH) | grep Power7 | wc -l))
KOKKOS_INTERNAL_USE_ARCH_POWER8 := $(strip $(shell echo $(KOKKOS_ARCH) | grep Power8 | wc -l))
KOKKOS_INTERNAL_USE_ARCH_POWER9 := $(strip $(shell echo $(KOKKOS_ARCH) | grep Power9 | wc -l))
KOKKOS_INTERNAL_USE_ARCH_IBM := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_BGQ)+$(KOKKOS_INTERNAL_USE_ARCH_POWER7)+$(KOKKOS_INTERNAL_USE_ARCH_POWER8)+$(KOKKOS_INTERNAL_USE_ARCH_POWER9) | bc))
-#AMD based
+# AMD based.
KOKKOS_INTERNAL_USE_ARCH_AMDAVX := $(strip $(shell echo $(KOKKOS_ARCH) | grep AMDAVX | wc -l))
-#Any AVX?
+# Any AVX?
KOKKOS_INTERNAL_USE_ARCH_AVX := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_SNB)+$(KOKKOS_INTERNAL_USE_ARCH_AMDAVX) | bc ))
KOKKOS_INTERNAL_USE_ARCH_AVX2 := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_HSW)+$(KOKKOS_INTERNAL_USE_ARCH_BDW) | bc ))
KOKKOS_INTERNAL_USE_ARCH_AVX512MIC := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_KNL) | bc ))
KOKKOS_INTERNAL_USE_ARCH_AVX512XEON := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_SKX) | bc ))
-# Decide what ISA level we are able to support
-KOKKOS_INTERNAL_USE_ISA_X86_64 := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_SNB)+$(KOKKOS_INTERNAL_USE_ARCH_HSW)+$(KOKKOS_INTERNAL_USE_ARCH_BDW)+$(KOKKOS_INTERNAL_USE_ARCH_KNL)+$(KOKKOS_INTERNAL_USE_ARCH_SKX) | bc ))
-KOKKOS_INTERNAL_USE_ISA_KNC := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_KNC) | bc ))
-KOKKOS_INTERNAL_USE_ISA_POWERPCLE := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_POWER8)+$(KOKKOS_INTERNAL_USE_ARCH_POWER9) | bc ))
+# Decide what ISA level we are able to support.
+KOKKOS_INTERNAL_USE_ISA_X86_64 := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_SNB)+$(KOKKOS_INTERNAL_USE_ARCH_HSW)+$(KOKKOS_INTERNAL_USE_ARCH_BDW)+$(KOKKOS_INTERNAL_USE_ARCH_KNL)+$(KOKKOS_INTERNAL_USE_ARCH_SKX) | bc ))
+KOKKOS_INTERNAL_USE_ISA_KNC := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_KNC) | bc ))
+KOKKOS_INTERNAL_USE_ISA_POWERPCLE := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_POWER8)+$(KOKKOS_INTERNAL_USE_ARCH_POWER9) | bc ))
-#Incompatible flags?
+# Incompatible flags?
KOKKOS_INTERNAL_USE_ARCH_MULTIHOST := $(strip $(shell echo "$(KOKKOS_INTERNAL_USE_ARCH_AVX)+$(KOKKOS_INTERNAL_USE_ARCH_AVX2)+$(KOKKOS_INTERNAL_USE_ARCH_KNC)+$(KOKKOS_INTERNAL_USE_ARCH_IBM)+$(KOKKOS_INTERNAL_USE_ARCH_AMDAVX)+$(KOKKOS_INTERNAL_USE_ARCH_ARMV80)+$(KOKKOS_INTERNAL_USE_ARCH_ARMV81)+$(KOKKOS_INTERNAL_USE_ARCH_ARMV8_THUNDERX)>1" | bc ))
KOKKOS_INTERNAL_USE_ARCH_MULTIGPU := $(strip $(shell echo "$(KOKKOS_INTERNAL_USE_ARCH_NVIDIA)>1" | bc))
@@ -220,7 +217,7 @@ ifeq ($(KOKKOS_INTERNAL_USE_ARCH_MULTIGPU), 1)
$(error Defined Multiple GPU architectures: KOKKOS_ARCH=$(KOKKOS_ARCH) )
endif
-#Generating the list of Flags
+# Generating the list of Flags.
KOKKOS_CPPFLAGS = -I./ -I$(KOKKOS_PATH)/core/src -I$(KOKKOS_PATH)/containers/src -I$(KOKKOS_PATH)/algorithms/src
@@ -233,98 +230,96 @@ KOKKOS_CXXFLAGS =
KOKKOS_LIBS = -lkokkos -ldl
KOKKOS_LDFLAGS = -L$(shell pwd)
-KOKKOS_SRC =
+KOKKOS_SRC =
KOKKOS_HEADERS =
-#Generating the KokkosCore_config.h file
+# Generating the KokkosCore_config.h file.
tmp := $(shell echo "/* ---------------------------------------------" > KokkosCore_config.tmp)
tmp := $(shell echo "Makefile constructed configuration:" >> KokkosCore_config.tmp)
tmp := $(shell date >> KokkosCore_config.tmp)
tmp := $(shell echo "----------------------------------------------*/" >> KokkosCore_config.tmp)
-
tmp := $(shell echo "/* Execution Spaces */" >> KokkosCore_config.tmp)
+
+ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1)
+ tmp := $(shell echo "\#define KOKKOS_HAVE_CUDA 1" >> KokkosCore_config.tmp )
+endif
+
ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1)
- tmp := $(shell echo '\#define KOKKOS_HAVE_OPENMP 1' >> KokkosCore_config.tmp)
+ tmp := $(shell echo '\#define KOKKOS_HAVE_OPENMP 1' >> KokkosCore_config.tmp)
endif
ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1)
- tmp := $(shell echo "\#define KOKKOS_HAVE_PTHREAD 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_HAVE_PTHREAD 1" >> KokkosCore_config.tmp )
+endif
+
+ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1)
+ tmp := $(shell echo "\#define KOKKOS_HAVE_QTHREADS 1" >> KokkosCore_config.tmp )
endif
ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1)
- tmp := $(shell echo "\#define KOKKOS_HAVE_SERIAL 1" >> KokkosCore_config.tmp )
-endif
-
-ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1)
- tmp := $(shell echo "\#define KOKKOS_HAVE_CUDA 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_HAVE_SERIAL 1" >> KokkosCore_config.tmp )
endif
ifeq ($(KOKKOS_INTERNAL_USE_ISA_X86_64), 1)
- tmp := $(shell echo "\#ifndef __CUDA_ARCH__" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_USE_ISA_X86_64" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#endif" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#ifndef __CUDA_ARCH__" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_USE_ISA_X86_64" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#endif" >> KokkosCore_config.tmp )
endif
ifeq ($(KOKKOS_INTERNAL_USE_ISA_KNC), 1)
- tmp := $(shell echo "\#ifndef __CUDA_ARCH__" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_USE_ISA_KNC" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#endif" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#ifndef __CUDA_ARCH__" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_USE_ISA_KNC" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#endif" >> KokkosCore_config.tmp )
endif
ifeq ($(KOKKOS_INTERNAL_USE_ISA_POWERPCLE), 1)
- tmp := $(shell echo "\#ifndef __CUDA_ARCH__" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_USE_ISA_POWERPCLE" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#endif" >> KokkosCore_config.tmp )
-endif
-
-ifeq ($(KOKKOS_INTERNAL_USE_QTHREAD), 1)
- KOKKOS_CPPFLAGS += -I$(QTHREAD_PATH)/include
- KOKKOS_LDFLAGS += -L$(QTHREAD_PATH)/lib
- tmp := $(shell echo "\#define KOKKOS_HAVE_QTHREAD 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#ifndef __CUDA_ARCH__" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_USE_ISA_POWERPCLE" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#endif" >> KokkosCore_config.tmp )
endif
tmp := $(shell echo "/* General Settings */" >> KokkosCore_config.tmp)
ifeq ($(KOKKOS_INTERNAL_ENABLE_CXX11), 1)
- KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_CXX11_FLAG)
- tmp := $(shell echo "\#define KOKKOS_HAVE_CXX11 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_CXX11_FLAG)
+ tmp := $(shell echo "\#define KOKKOS_HAVE_CXX11 1" >> KokkosCore_config.tmp )
endif
ifeq ($(KOKKOS_INTERNAL_ENABLE_CXX1Z), 1)
- KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_CXX1Z_FLAG)
- tmp := $(shell echo "\#define KOKKOS_HAVE_CXX11 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_HAVE_CXX1Z 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_CXX1Z_FLAG)
+ tmp := $(shell echo "\#define KOKKOS_HAVE_CXX11 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_HAVE_CXX1Z 1" >> KokkosCore_config.tmp )
endif
ifeq ($(KOKKOS_INTERNAL_ENABLE_DEBUG), 1)
ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1)
- KOKKOS_CXXFLAGS += -lineinfo
+ KOKKOS_CXXFLAGS += -lineinfo
endif
- KOKKOS_CXXFLAGS += -g
- KOKKOS_LDFLAGS += -g -ldl
- tmp := $(shell echo "\#define KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_HAVE_DEBUG 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += -g
+ KOKKOS_LDFLAGS += -g -ldl
+ tmp := $(shell echo "\#define KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_HAVE_DEBUG 1" >> KokkosCore_config.tmp )
endif
ifeq ($(KOKKOS_INTERNAL_USE_HWLOC), 1)
- KOKKOS_CPPFLAGS += -I$(HWLOC_PATH)/include
- KOKKOS_LDFLAGS += -L$(HWLOC_PATH)/lib
- KOKKOS_LIBS += -lhwloc
- tmp := $(shell echo "\#define KOKKOS_HAVE_HWLOC 1" >> KokkosCore_config.tmp )
+ KOKKOS_CPPFLAGS += -I$(HWLOC_PATH)/include
+ KOKKOS_LDFLAGS += -L$(HWLOC_PATH)/lib
+ KOKKOS_LIBS += -lhwloc
+ tmp := $(shell echo "\#define KOKKOS_HAVE_HWLOC 1" >> KokkosCore_config.tmp )
endif
ifeq ($(KOKKOS_INTERNAL_USE_LIBRT), 1)
- tmp := $(shell echo "\#define KOKKOS_USE_LIBRT 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define PREC_TIMER 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_USE_LIBRT 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define PREC_TIMER 1" >> KokkosCore_config.tmp )
tmp := $(shell echo "\#define KOKKOSP_ENABLE_RTLIB 1" >> KokkosCore_config.tmp )
- KOKKOS_LIBS += -lrt
+ KOKKOS_LIBS += -lrt
endif
ifeq ($(KOKKOS_INTERNAL_USE_MEMKIND), 1)
KOKKOS_CPPFLAGS += -I$(MEMKIND_PATH)/include
- KOKKOS_LDFLAGS += -L$(MEMKIND_PATH)/lib
- KOKKOS_LIBS += -lmemkind
+ KOKKOS_LDFLAGS += -L$(MEMKIND_PATH)/lib
+ KOKKOS_LIBS += -lmemkind
tmp := $(shell echo "\#define KOKKOS_HAVE_HBWSPACE 1" >> KokkosCore_config.tmp )
endif
@@ -341,262 +336,286 @@ endif
tmp := $(shell echo "/* Cuda Settings */" >> KokkosCore_config.tmp)
ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1)
+
ifeq ($(KOKKOS_INTERNAL_CUDA_USE_LDG), 1)
- tmp := $(shell echo "\#define KOKKOS_CUDA_USE_LDG_INTRINSIC 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_CUDA_USE_LDG_INTRINSIC 1" >> KokkosCore_config.tmp )
endif
ifeq ($(KOKKOS_INTERNAL_CUDA_USE_UVM), 1)
- tmp := $(shell echo "\#define KOKKOS_CUDA_USE_UVM 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_USE_CUDA_UVM 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_CUDA_USE_UVM 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_USE_CUDA_UVM 1" >> KokkosCore_config.tmp )
endif
ifeq ($(KOKKOS_INTERNAL_CUDA_USE_RELOC), 1)
- tmp := $(shell echo "\#define KOKKOS_CUDA_USE_RELOCATABLE_DEVICE_CODE 1" >> KokkosCore_config.tmp )
- KOKKOS_CXXFLAGS += --relocatable-device-code=true
- KOKKOS_LDFLAGS += --relocatable-device-code=true
+ tmp := $(shell echo "\#define KOKKOS_CUDA_USE_RELOCATABLE_DEVICE_CODE 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += --relocatable-device-code=true
+ KOKKOS_LDFLAGS += --relocatable-device-code=true
endif
ifeq ($(KOKKOS_INTERNAL_CUDA_USE_LAMBDA), 1)
ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1)
ifeq ($(shell test $(KOKKOS_INTERNAL_COMPILER_NVCC_VERSION) -gt 70; echo $$?),0)
- tmp := $(shell echo "\#define KOKKOS_CUDA_USE_LAMBDA 1" >> KokkosCore_config.tmp )
- KOKKOS_CXXFLAGS += -expt-extended-lambda
+ tmp := $(shell echo "\#define KOKKOS_CUDA_USE_LAMBDA 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += -expt-extended-lambda
else
$(warning Warning: Cuda Lambda support was requested but NVCC version is too low. This requires NVCC for Cuda version 7.5 or higher. Disabling Lambda support now.)
endif
endif
+
ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1)
tmp := $(shell echo "\#define KOKKOS_CUDA_USE_LAMBDA 1" >> KokkosCore_config.tmp )
endif
endif
+
endif
-#Add Architecture flags
+# Add Architecture flags.
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_ARMV80), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_ARMV80 1" >> KokkosCore_config.tmp )
- ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
- KOKKOS_CXXFLAGS +=
- KOKKOS_LDFLAGS +=
+ tmp := $(shell echo "\#define KOKKOS_ARCH_ARMV80 1" >> KokkosCore_config.tmp )
+
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
+ KOKKOS_CXXFLAGS +=
+ KOKKOS_LDFLAGS +=
+ else
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
+ KOKKOS_CXXFLAGS +=
+ KOKKOS_LDFLAGS +=
else
- ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
- KOKKOS_CXXFLAGS +=
- KOKKOS_LDFLAGS +=
- else
- KOKKOS_CXXFLAGS += -march=armv8-a
- KOKKOS_LDFLAGS += -march=armv8-a
- endif
+ KOKKOS_CXXFLAGS += -march=armv8-a
+ KOKKOS_LDFLAGS += -march=armv8-a
endif
+ endif
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_ARMV81), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_ARMV81 1" >> KokkosCore_config.tmp )
- ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
- KOKKOS_CXXFLAGS +=
- KOKKOS_LDFLAGS +=
+ tmp := $(shell echo "\#define KOKKOS_ARCH_ARMV81 1" >> KokkosCore_config.tmp )
+
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
+ KOKKOS_CXXFLAGS +=
+ KOKKOS_LDFLAGS +=
+ else
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
+ KOKKOS_CXXFLAGS +=
+ KOKKOS_LDFLAGS +=
else
- ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
- KOKKOS_CXXFLAGS +=
- KOKKOS_LDFLAGS +=
- else
- KOKKOS_CXXFLAGS += -march=armv8.1-a
- KOKKOS_LDFLAGS += -march=armv8.1-a
- endif
+ KOKKOS_CXXFLAGS += -march=armv8.1-a
+ KOKKOS_LDFLAGS += -march=armv8.1-a
endif
+ endif
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_ARMV8_THUNDERX), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_ARMV80 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_ARCH_ARMV8_THUNDERX 1" >> KokkosCore_config.tmp )
- ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
- KOKKOS_CXXFLAGS +=
- KOKKOS_LDFLAGS +=
+ tmp := $(shell echo "\#define KOKKOS_ARCH_ARMV80 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_ARCH_ARMV8_THUNDERX 1" >> KokkosCore_config.tmp )
+
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
+ KOKKOS_CXXFLAGS +=
+ KOKKOS_LDFLAGS +=
+ else
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
+ KOKKOS_CXXFLAGS +=
+ KOKKOS_LDFLAGS +=
else
- ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
- KOKKOS_CXXFLAGS +=
- KOKKOS_LDFLAGS +=
- else
- KOKKOS_CXXFLAGS += -march=armv8-a -mtune=thunderx
- KOKKOS_LDFLAGS += -march=armv8-a -mtune=thunderx
- endif
+ KOKKOS_CXXFLAGS += -march=armv8-a -mtune=thunderx
+ KOKKOS_LDFLAGS += -march=armv8-a -mtune=thunderx
endif
+ endif
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AVX), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_AVX 1" >> KokkosCore_config.tmp )
- ifeq ($(KOKKOS_INTERNAL_COMPILER_INTEL), 1)
- KOKKOS_CXXFLAGS += -mavx
- KOKKOS_LDFLAGS += -mavx
- else
- ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
+ tmp := $(shell echo "\#define KOKKOS_ARCH_AVX 1" >> KokkosCore_config.tmp )
- else
- ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
- KOKKOS_CXXFLAGS += -tp=sandybridge
- KOKKOS_LDFLAGS += -tp=sandybridge
- else
- # Assume that this is a really a GNU compiler
- KOKKOS_CXXFLAGS += -mavx
- KOKKOS_LDFLAGS += -mavx
- endif
- endif
- endif
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_INTEL), 1)
+ KOKKOS_CXXFLAGS += -mavx
+ KOKKOS_LDFLAGS += -mavx
+ else
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
+
+ else
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
+ KOKKOS_CXXFLAGS += -tp=sandybridge
+ KOKKOS_LDFLAGS += -tp=sandybridge
+ else
+ # Assume that this is a really a GNU compiler.
+ KOKKOS_CXXFLAGS += -mavx
+ KOKKOS_LDFLAGS += -mavx
+ endif
+ endif
+ endif
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_POWER8), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_POWER8 1" >> KokkosCore_config.tmp )
- ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
+ tmp := $(shell echo "\#define KOKKOS_ARCH_POWER8 1" >> KokkosCore_config.tmp )
- else
- # Assume that this is a really a GNU compiler or it could be XL on P8
- KOKKOS_CXXFLAGS += -mcpu=power8 -mtune=power8
- KOKKOS_LDFLAGS += -mcpu=power8 -mtune=power8
- endif
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
+
+ else
+ # Assume that this is a really a GNU compiler or it could be XL on P8.
+ KOKKOS_CXXFLAGS += -mcpu=power8 -mtune=power8
+ KOKKOS_LDFLAGS += -mcpu=power8 -mtune=power8
+ endif
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_POWER9), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_POWER9 1" >> KokkosCore_config.tmp )
- ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
+ tmp := $(shell echo "\#define KOKKOS_ARCH_POWER9 1" >> KokkosCore_config.tmp )
- else
- # Assume that this is a really a GNU compiler or it could be XL on P9
- KOKKOS_CXXFLAGS += -mcpu=power9 -mtune=power9
- KOKKOS_LDFLAGS += -mcpu=power9 -mtune=power9
- endif
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
+
+ else
+ # Assume that this is a really a GNU compiler or it could be XL on P9.
+ KOKKOS_CXXFLAGS += -mcpu=power9 -mtune=power9
+ KOKKOS_LDFLAGS += -mcpu=power9 -mtune=power9
+ endif
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AVX2), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_AVX2 1" >> KokkosCore_config.tmp )
- ifeq ($(KOKKOS_INTERNAL_COMPILER_INTEL), 1)
- KOKKOS_CXXFLAGS += -xCORE-AVX2
- KOKKOS_LDFLAGS += -xCORE-AVX2
- else
- ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
+ tmp := $(shell echo "\#define KOKKOS_ARCH_AVX2 1" >> KokkosCore_config.tmp )
- else
- ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
- KOKKOS_CXXFLAGS += -tp=haswell
- KOKKOS_LDFLAGS += -tp=haswell
- else
- # Assume that this is a really a GNU compiler
- KOKKOS_CXXFLAGS += -march=core-avx2 -mtune=core-avx2
- KOKKOS_LDFLAGS += -march=core-avx2 -mtune=core-avx2
- endif
- endif
- endif
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_INTEL), 1)
+ KOKKOS_CXXFLAGS += -xCORE-AVX2
+ KOKKOS_LDFLAGS += -xCORE-AVX2
+ else
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
+
+ else
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
+ KOKKOS_CXXFLAGS += -tp=haswell
+ KOKKOS_LDFLAGS += -tp=haswell
+ else
+ # Assume that this is a really a GNU compiler.
+ KOKKOS_CXXFLAGS += -march=core-avx2 -mtune=core-avx2
+ KOKKOS_LDFLAGS += -march=core-avx2 -mtune=core-avx2
+ endif
+ endif
+ endif
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AVX512MIC), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_AVX512MIC 1" >> KokkosCore_config.tmp )
- ifeq ($(KOKKOS_INTERNAL_COMPILER_INTEL), 1)
- KOKKOS_CXXFLAGS += -xMIC-AVX512
- KOKKOS_LDFLAGS += -xMIC-AVX512
- else
- ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
+ tmp := $(shell echo "\#define KOKKOS_ARCH_AVX512MIC 1" >> KokkosCore_config.tmp )
- else
- ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_INTEL), 1)
+ KOKKOS_CXXFLAGS += -xMIC-AVX512
+ KOKKOS_LDFLAGS += -xMIC-AVX512
+ else
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
- else
- # Asssume that this is really a GNU compiler
- KOKKOS_CXXFLAGS += -march=knl
- KOKKOS_LDFLAGS += -march=knl
- endif
- endif
- endif
+ else
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
+
+ else
+ # Asssume that this is really a GNU compiler.
+ KOKKOS_CXXFLAGS += -march=knl
+ KOKKOS_LDFLAGS += -march=knl
+ endif
+ endif
+ endif
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AVX512XEON), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_AVX512XEON 1" >> KokkosCore_config.tmp )
- ifeq ($(KOKKOS_INTERNAL_COMPILER_INTEL), 1)
- KOKKOS_CXXFLAGS += -xCORE-AVX512
- KOKKOS_LDFLAGS += -xCORE-AVX512
- else
- ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
+ tmp := $(shell echo "\#define KOKKOS_ARCH_AVX512XEON 1" >> KokkosCore_config.tmp )
- else
- ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_INTEL), 1)
+ KOKKOS_CXXFLAGS += -xCORE-AVX512
+ KOKKOS_LDFLAGS += -xCORE-AVX512
+ else
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1)
- else
- # Nothing here yet
- KOKKOS_CXXFLAGS += -march=skylake-avx512
- KOKKOS_LDFLAGS += -march=skylake-avx512
- endif
- endif
- endif
+ else
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1)
+
+ else
+ # Nothing here yet.
+ KOKKOS_CXXFLAGS += -march=skylake-avx512
+ KOKKOS_LDFLAGS += -march=skylake-avx512
+ endif
+ endif
+ endif
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_KNC), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_KNC 1" >> KokkosCore_config.tmp )
- KOKKOS_CXXFLAGS += -mmic
- KOKKOS_LDFLAGS += -mmic
+ tmp := $(shell echo "\#define KOKKOS_ARCH_KNC 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += -mmic
+ KOKKOS_LDFLAGS += -mmic
endif
-#Figure out the architecture flag for Cuda
+# Figure out the architecture flag for Cuda.
ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1)
+
ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1)
KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG=-arch
endif
ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1)
- KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG=-x cuda --cuda-gpu-arch
+ KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG=--cuda-gpu-arch
+ KOKKOS_CXXFLAGS += -x cuda
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_KEPLER30), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER30 1" >> KokkosCore_config.tmp )
- KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_30
+ tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER30 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_30
+ KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_30
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_KEPLER32), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER32 1" >> KokkosCore_config.tmp )
- KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_32
+ tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER32 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_32
+ KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_32
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_KEPLER35), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER35 1" >> KokkosCore_config.tmp )
- KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_35
+ tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER35 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_35
+ KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_35
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_KEPLER37), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER37 1" >> KokkosCore_config.tmp )
- KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_37
+ tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_ARCH_KEPLER37 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_37
+ KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_37
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_MAXWELL50), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_MAXWELL 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_ARCH_MAXWELL50 1" >> KokkosCore_config.tmp )
- KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_50
+ tmp := $(shell echo "\#define KOKKOS_ARCH_MAXWELL 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_ARCH_MAXWELL50 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_50
+ KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_50
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_MAXWELL52), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_MAXWELL 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_ARCH_MAXWELL52 1" >> KokkosCore_config.tmp )
- KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_52
+ tmp := $(shell echo "\#define KOKKOS_ARCH_MAXWELL 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_ARCH_MAXWELL52 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_52
+ KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_52
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_MAXWELL53), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_MAXWELL 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_ARCH_MAXWELL53 1" >> KokkosCore_config.tmp )
- KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_53
+ tmp := $(shell echo "\#define KOKKOS_ARCH_MAXWELL 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_ARCH_MAXWELL53 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_53
+ KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_53
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_PASCAL61), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_PASCAL 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_ARCH_PASCAL61 1" >> KokkosCore_config.tmp )
- KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_61
+ tmp := $(shell echo "\#define KOKKOS_ARCH_PASCAL 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_ARCH_PASCAL61 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_61
+ KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_61
endif
ifeq ($(KOKKOS_INTERNAL_USE_ARCH_PASCAL60), 1)
- tmp := $(shell echo "\#define KOKKOS_ARCH_PASCAL 1" >> KokkosCore_config.tmp )
- tmp := $(shell echo "\#define KOKKOS_ARCH_PASCAL60 1" >> KokkosCore_config.tmp )
- KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_60
+ tmp := $(shell echo "\#define KOKKOS_ARCH_PASCAL 1" >> KokkosCore_config.tmp )
+ tmp := $(shell echo "\#define KOKKOS_ARCH_PASCAL60 1" >> KokkosCore_config.tmp )
+ KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_60
+ KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_COMPILER_CUDA_ARCH_FLAG)=sm_60
endif
+
endif
-
+
KOKKOS_INTERNAL_LS_CONFIG := $(shell ls KokkosCore_config.h)
ifeq ($(KOKKOS_INTERNAL_LS_CONFIG), KokkosCore_config.h)
-KOKKOS_INTERNAL_NEW_CONFIG := $(strip $(shell diff KokkosCore_config.h KokkosCore_config.tmp | grep define | wc -l))
+ KOKKOS_INTERNAL_NEW_CONFIG := $(strip $(shell diff KokkosCore_config.h KokkosCore_config.tmp | grep define | wc -l))
else
-KOKKOS_INTERNAL_NEW_CONFIG := 1
+ KOKKOS_INTERNAL_NEW_CONFIG := 1
endif
ifneq ($(KOKKOS_INTERNAL_NEW_CONFIG), 0)
- tmp := $(shell cp KokkosCore_config.tmp KokkosCore_config.h)
+ tmp := $(shell cp KokkosCore_config.tmp KokkosCore_config.h)
endif
KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/*.hpp)
@@ -609,53 +628,57 @@ KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/impl/*.cpp)
KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/containers/src/impl/*.cpp)
ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1)
- KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/Cuda/*.cpp)
- KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/Cuda/*.hpp)
- KOKKOS_CXXFLAGS += -I$(CUDA_PATH)/include
- KOKKOS_LDFLAGS += -L$(CUDA_PATH)/lib64
- KOKKOS_LIBS += -lcudart -lcuda
-endif
-
-ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1)
- KOKKOS_LIBS += -lpthread
- KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/Threads/*.cpp)
- KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/Threads/*.hpp)
-endif
-
-ifeq ($(KOKKOS_INTERNAL_USE_QTHREAD), 1)
- KOKKOS_LIBS += -lqthread
- KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/Qthread/*.cpp)
- KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/Qthread/*.hpp)
+ KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/Cuda/*.cpp)
+ KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/Cuda/*.hpp)
+ KOKKOS_CXXFLAGS += -I$(CUDA_PATH)/include
+ KOKKOS_LDFLAGS += -L$(CUDA_PATH)/lib64
+ KOKKOS_LIBS += -lcudart -lcuda
endif
ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1)
- KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/OpenMP/*.cpp)
- KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/OpenMP/*.hpp)
- ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1)
- KOKKOS_CXXFLAGS += -Xcompiler $(KOKKOS_INTERNAL_OPENMP_FLAG)
- else
- KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_OPENMP_FLAG)
- endif
- KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_OPENMP_FLAG)
+ KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/OpenMP/*.cpp)
+ KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/OpenMP/*.hpp)
+
+ ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1)
+ KOKKOS_CXXFLAGS += -Xcompiler $(KOKKOS_INTERNAL_OPENMP_FLAG)
+ else
+ KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_OPENMP_FLAG)
+ endif
+
+ KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_OPENMP_FLAG)
endif
-#Explicitly set the GCC Toolchain for Clang
+ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1)
+ KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/Threads/*.cpp)
+ KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/Threads/*.hpp)
+ KOKKOS_LIBS += -lpthread
+endif
+
+ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1)
+ KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/Qthreads/*.cpp)
+ KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/Qthreads/*.hpp)
+ KOKKOS_CPPFLAGS += -I$(QTHREADS_PATH)/include
+ KOKKOS_LDFLAGS += -L$(QTHREADS_PATH)/lib
+ KOKKOS_LIBS += -lqthread
+endif
+
+# Explicitly set the GCC Toolchain for Clang.
ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1)
- KOKKOS_INTERNAL_GCC_PATH = $(shell which g++)
- KOKKOS_INTERNAL_GCC_TOOLCHAIN = $(KOKKOS_INTERNAL_GCC_PATH:/bin/g++=)
- KOKKOS_CXXFLAGS += --gcc-toolchain=$(KOKKOS_INTERNAL_GCC_TOOLCHAIN) -DKOKKOS_CUDA_CLANG_WORKAROUND -DKOKKOS_CUDA_USE_LDG_INTRINSIC
- KOKKOS_LDFLAGS += --gcc-toolchain=$(KOKKOS_INTERNAL_GCC_TOOLCHAIN)
+ KOKKOS_INTERNAL_GCC_PATH = $(shell which g++)
+ KOKKOS_INTERNAL_GCC_TOOLCHAIN = $(KOKKOS_INTERNAL_GCC_PATH:/bin/g++=)
+ KOKKOS_CXXFLAGS += --gcc-toolchain=$(KOKKOS_INTERNAL_GCC_TOOLCHAIN) -DKOKKOS_CUDA_CLANG_WORKAROUND -DKOKKOS_CUDA_USE_LDG_INTRINSIC
+ KOKKOS_LDFLAGS += --gcc-toolchain=$(KOKKOS_INTERNAL_GCC_TOOLCHAIN)
endif
-#With Cygwin functions such as fdopen and fileno are not defined
-#when strict ansi is enabled. strict ansi gets enabled with --std=c++11
-#though. So we hard undefine it here. Not sure if that has any bad side effects
-#This is needed for gtest actually, not for Kokkos itself!
+# With Cygwin functions such as fdopen and fileno are not defined
+# when strict ansi is enabled. strict ansi gets enabled with --std=c++11
+# though. So we hard undefine it here. Not sure if that has any bad side effects
+# This is needed for gtest actually, not for Kokkos itself!
ifeq ($(KOKKOS_INTERNAL_OS_CYGWIN), 1)
KOKKOS_CXXFLAGS += -U__STRICT_ANSI__
endif
-# Setting up dependencies
+# Setting up dependencies.
KokkosCore_config.h:
diff --git a/lib/kokkos/Makefile.targets b/lib/kokkos/Makefile.targets
index a48a5f6eb7..54cacb741b 100644
--- a/lib/kokkos/Makefile.targets
+++ b/lib/kokkos/Makefile.targets
@@ -18,6 +18,8 @@ Kokkos_Serial_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_
$(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_Serial_Task.cpp
Kokkos_TaskQueue.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_TaskQueue.cpp
$(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_TaskQueue.cpp
+Kokkos_HostThreadTeam.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_HostThreadTeam.cpp
+ $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_HostThreadTeam.cpp
Kokkos_spinwait.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_spinwait.cpp
$(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_spinwait.cpp
Kokkos_Profiling_Interface.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_Profiling_Interface.cpp
@@ -43,11 +45,11 @@ Kokkos_ThreadsExec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Threads/Kokk
$(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec.cpp
endif
-ifeq ($(KOKKOS_INTERNAL_USE_QTHREAD), 1)
-Kokkos_QthreadExec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Qthread/Kokkos_QthreadExec.cpp
- $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Qthread/Kokkos_QthreadExec.cpp
-Kokkos_Qthread_TaskPolicy.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Qthread/Kokkos_Qthread_TaskPolicy.cpp
- $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Qthread/Kokkos_Qthread_TaskPolicy.cpp
+ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1)
+Kokkos_QthreadsExec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Qthreads/Kokkos_QthreadsExec.cpp
+ $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Qthreads/Kokkos_QthreadsExec.cpp
+Kokkos_Qthreads_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Qthreads/Kokkos_Qthreads_Task.cpp
+ $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Qthreads/Kokkos_Qthreads_Task.cpp
endif
ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1)
@@ -59,4 +61,3 @@ endif
Kokkos_HBWSpace.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_HBWSpace.cpp
$(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_HBWSpace.cpp
-
diff --git a/lib/kokkos/README b/lib/kokkos/README
index 7ebde23a1f..257a2e5db4 100644
--- a/lib/kokkos/README
+++ b/lib/kokkos/README
@@ -45,31 +45,39 @@ Primary tested compilers on X86 are:
GCC 4.8.4
GCC 4.9.2
GCC 5.1.0
+ GCC 5.2.0
Intel 14.0.4
Intel 15.0.2
Intel 16.0.1
Intel 17.0.098
+ Intel 17.1.132
Clang 3.5.2
Clang 3.6.1
+ Clang 3.7.1
+ Clang 3.8.1
Clang 3.9.0
+ PGI 17.1
Primary tested compilers on Power 8 are:
GCC 5.4.0 (OpenMP,Serial)
IBM XL 13.1.3 (OpenMP, Serial) (There is a workaround in place to avoid a compiler bug)
Primary tested compilers on Intel KNL are:
+ GCC 6.2.0
Intel 16.2.181 (with gcc 4.7.2)
Intel 17.0.098 (with gcc 4.7.2)
+ Intel 17.1.132 (with gcc 4.9.3)
+ Intel 17.2.174 (with gcc 4.9.3)
+ Intel 18.0.061 (beta) (with gcc 4.9.3)
Secondary tested compilers are:
- CUDA 7.0 (with gcc 4.7.2)
- CUDA 7.5 (with gcc 4.7.2)
+ CUDA 7.0 (with gcc 4.8.4)
+ CUDA 7.5 (with gcc 4.8.4)
CUDA 8.0 (with gcc 5.3.0 on X86 and gcc 5.4.0 on Power8)
CUDA/Clang 8.0 using Clang/Trunk compiler
Other compilers working:
X86:
- PGI 15.4
Cygwin 2.1.0 64bit with gcc 4.9.3
Known non-working combinations:
diff --git a/lib/kokkos/algorithms/cmake/Dependencies.cmake b/lib/kokkos/algorithms/cmake/Dependencies.cmake
index 1d71d8af34..c36b62523f 100644
--- a/lib/kokkos/algorithms/cmake/Dependencies.cmake
+++ b/lib/kokkos/algorithms/cmake/Dependencies.cmake
@@ -1,5 +1,5 @@
TRIBITS_PACKAGE_DEFINE_DEPENDENCIES(
- LIB_REQUIRED_PACKAGES KokkosCore
+ LIB_REQUIRED_PACKAGES KokkosCore KokkosContainers
LIB_OPTIONAL_TPLS Pthread CUDA HWLOC
TEST_OPTIONAL_TPLS CUSPARSE
)
diff --git a/lib/kokkos/algorithms/src/Kokkos_Random.hpp b/lib/kokkos/algorithms/src/Kokkos_Random.hpp
index d376173bf1..bd73582362 100644
--- a/lib/kokkos/algorithms/src/Kokkos_Random.hpp
+++ b/lib/kokkos/algorithms/src/Kokkos_Random.hpp
@@ -547,7 +547,7 @@ namespace Kokkos {
KOKKOS_INLINE_FUNCTION
Random_XorShift64 (uint64_t state, int state_idx = 0)
- : state_(state),state_idx_(state_idx){}
+ : state_(state==0?uint64_t(1318319):state),state_idx_(state_idx){}
KOKKOS_INLINE_FUNCTION
uint32_t urand() {
@@ -719,6 +719,9 @@ namespace Kokkos {
}
void init(uint64_t seed, int num_states) {
+ if(seed==0)
+ seed = uint64_t(1318319);
+
num_states_ = num_states;
locks_ = lock_type("Kokkos::Random_XorShift64::locks",num_states_);
@@ -968,8 +971,9 @@ namespace Kokkos {
inline
void init(uint64_t seed, int num_states) {
+ if(seed==0)
+ seed = uint64_t(1318319);
num_states_ = num_states;
-
locks_ = int_view_type("Kokkos::Random_XorShift1024::locks",num_states_);
state_ = state_data_type("Kokkos::Random_XorShift1024::state",num_states_);
p_ = int_view_type("Kokkos::Random_XorShift1024::p",num_states_);
diff --git a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp
index 5b8c65fee1..237de751fe 100644
--- a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp
+++ b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp
@@ -53,69 +53,122 @@ namespace Kokkos {
namespace Impl {
- template
+ template< class DstViewType , class SrcViewType
+ , int Rank = DstViewType::Rank >
struct CopyOp;
- template
- struct CopyOp {
- template
+ template< class DstViewType , class SrcViewType >
+ struct CopyOp {
KOKKOS_INLINE_FUNCTION
- static void copy(DstType& dst, size_t i_dst,
- SrcType& src, size_t i_src ) {
+ static void copy(DstViewType const& dst, size_t i_dst,
+ SrcViewType const& src, size_t i_src ) {
dst(i_dst) = src(i_src);
}
};
- template
- struct CopyOp {
- template
+ template< class DstViewType , class SrcViewType >
+ struct CopyOp {
KOKKOS_INLINE_FUNCTION
- static void copy(DstType& dst, size_t i_dst,
- SrcType& src, size_t i_src ) {
- for(int j = 0;j< (int) dst.dimension_1(); j++)
+ static void copy(DstViewType const& dst, size_t i_dst,
+ SrcViewType const& src, size_t i_src ) {
+ for(int j = 0;j< (int) dst.extent(1); j++)
dst(i_dst,j) = src(i_src,j);
}
};
- template
- struct CopyOp {
- template
+ template< class DstViewType , class SrcViewType >
+ struct CopyOp {
KOKKOS_INLINE_FUNCTION
- static void copy(DstType& dst, size_t i_dst,
- SrcType& src, size_t i_src ) {
- for(int j = 0; j
+//----------------------------------------------------------------------------
+
+template< class KeyViewType
+ , class BinSortOp
+ , class Space = typename KeyViewType::device_type
+ , class SizeType = typename KeyViewType::memory_space::size_type
+ >
class BinSort {
-
-
public:
- template
- struct bin_sort_sort_functor {
- typedef ExecutionSpace execution_space;
- typedef typename ValuesViewType::non_const_type values_view_type;
- typedef typename ValuesViewType::const_type const_values_view_type;
- Kokkos::View > values;
- values_view_type sorted_values;
- typename PermuteViewType::const_type sort_order;
- bin_sort_sort_functor(const_values_view_type values_, values_view_type sorted_values_, PermuteViewType sort_order_):
- values(values_),sorted_values(sorted_values_),sort_order(sort_order_) {}
+
+ template< class DstViewType , class SrcViewType >
+ struct copy_functor {
+
+ typedef typename SrcViewType::const_type src_view_type ;
+
+ typedef Impl::CopyOp< DstViewType , src_view_type > copy_op ;
+
+ DstViewType dst_values ;
+ src_view_type src_values ;
+ int dst_offset ;
+
+ copy_functor( DstViewType const & dst_values_
+ , int const & dst_offset_
+ , SrcViewType const & src_values_
+ )
+ : dst_values( dst_values_ )
+ , src_values( src_values_ )
+ , dst_offset( dst_offset_ )
+ {}
KOKKOS_INLINE_FUNCTION
- void operator() (const int& i) const {
- //printf("Sort: %i %i\n",i,sort_order(i));
- CopyOp::copy(sorted_values,i,values,sort_order(i));
+ void operator() (const int& i) const {
+ // printf("copy: dst(%i) src(%i)\n",i+dst_offset,i);
+ copy_op::copy(dst_values,i+dst_offset,src_values,i);
}
};
- typedef ExecutionSpace execution_space;
+ template< class DstViewType
+ , class PermuteViewType
+ , class SrcViewType
+ >
+ struct copy_permute_functor {
+
+ // If a Kokkos::View then can generate constant random access
+ // otherwise can only use the constant type.
+
+ typedef typename std::conditional
+ < Kokkos::is_view< SrcViewType >::value
+ , Kokkos::View< typename SrcViewType::const_data_type
+ , typename SrcViewType::array_layout
+ , typename SrcViewType::device_type
+ , Kokkos::MemoryTraits
+ >
+ , typename SrcViewType::const_type
+ >::type src_view_type ;
+
+ typedef typename PermuteViewType::const_type perm_view_type ;
+
+ typedef Impl::CopyOp< DstViewType , src_view_type > copy_op ;
+
+ DstViewType dst_values ;
+ perm_view_type sort_order ;
+ src_view_type src_values ;
+
+ copy_permute_functor( DstViewType const & dst_values_
+ , PermuteViewType const & sort_order_
+ , SrcViewType const & src_values_
+ )
+ : dst_values( dst_values_ )
+ , sort_order( sort_order_ )
+ , src_values( src_values_ )
+ {}
+
+ KOKKOS_INLINE_FUNCTION
+ void operator() (const int& i) const {
+ // printf("copy_permute: dst(%i) src(%i)\n",i,sort_order(i));
+ copy_op::copy(dst_values,i,src_values,sort_order(i));
+ }
+ };
+
+ typedef typename Space::execution_space execution_space;
typedef BinSortOp bin_op_type;
struct bin_count_tag {};
@@ -124,84 +177,137 @@ public:
struct bin_sort_bins_tag {};
public:
+
typedef SizeType size_type;
typedef size_type value_type;
- typedef Kokkos::View offset_type;
- typedef Kokkos::View bin_count_type;
+ typedef Kokkos::View offset_type;
+ typedef Kokkos::View bin_count_type;
+ typedef typename KeyViewType::const_type const_key_view_type ;
- typedef Kokkos::View const_key_view_type;
- typedef Kokkos::View > const_rnd_key_view_type;
+ // If a Kokkos::View then can generate constant random access
+ // otherwise can only use the constant type.
+
+ typedef typename std::conditional
+ < Kokkos::is_view< KeyViewType >::value
+ , Kokkos::View< typename KeyViewType::const_data_type,
+ typename KeyViewType::array_layout,
+ typename KeyViewType::device_type,
+ Kokkos::MemoryTraits >
+ , const_key_view_type
+ >::type const_rnd_key_view_type;
typedef typename KeyViewType::non_const_value_type non_const_key_scalar;
typedef typename KeyViewType::const_value_type const_key_scalar;
+ typedef Kokkos::View > bin_count_atomic_type ;
+
private:
+
const_key_view_type keys;
const_rnd_key_view_type keys_rnd;
public:
- BinSortOp bin_op;
- offset_type bin_offsets;
+ BinSortOp bin_op ;
+ offset_type bin_offsets ;
+ bin_count_atomic_type bin_count_atomic ;
+ bin_count_type bin_count_const ;
+ offset_type sort_order ;
- Kokkos::View > bin_count_atomic;
- bin_count_type bin_count_const;
-
- offset_type sort_order;
-
- bool sort_within_bins;
+ int range_begin ;
+ int range_end ;
+ bool sort_within_bins ;
public:
- // Constructor: takes the keys, the binning_operator and optionally whether to sort within bins (default false)
- BinSort(const_key_view_type keys_, BinSortOp bin_op_,
- bool sort_within_bins_ = false)
- :keys(keys_),keys_rnd(keys_), bin_op(bin_op_) {
+ BinSort() {}
- bin_count_atomic = Kokkos::View("Kokkos::SortImpl::BinSortFunctor::bin_count",bin_op.max_bins());
+ //----------------------------------------
+ // Constructor: takes the keys, the binning_operator and optionally whether to sort within bins (default false)
+ BinSort( const_key_view_type keys_
+ , int range_begin_
+ , int range_end_
+ , BinSortOp bin_op_
+ , bool sort_within_bins_ = false
+ )
+ : keys(keys_)
+ , keys_rnd(keys_)
+ , bin_op(bin_op_)
+ , bin_offsets()
+ , bin_count_atomic()
+ , bin_count_const()
+ , sort_order()
+ , range_begin( range_begin_ )
+ , range_end( range_end_ )
+ , sort_within_bins( sort_within_bins_ )
+ {
+ bin_count_atomic = Kokkos::View("Kokkos::SortImpl::BinSortFunctor::bin_count",bin_op.max_bins());
bin_count_const = bin_count_atomic;
bin_offsets = offset_type("Kokkos::SortImpl::BinSortFunctor::bin_offsets",bin_op.max_bins());
- sort_order = offset_type("PermutationVector",keys.dimension_0());
- sort_within_bins = sort_within_bins_;
+ sort_order = offset_type("PermutationVector",range_end-range_begin);
}
+ BinSort( const_key_view_type keys_
+ , BinSortOp bin_op_
+ , bool sort_within_bins_ = false
+ )
+ : BinSort( keys_ , 0 , keys_.extent(0), bin_op_ , sort_within_bins_ ) {}
+
+ //----------------------------------------
// Create the permutation vector, the bin_offset array and the bin_count array. Can be called again if keys changed
void create_permute_vector() {
- Kokkos::parallel_for (Kokkos::RangePolicy (0,keys.dimension_0()),*this);
- Kokkos::parallel_scan(Kokkos::RangePolicy (0,bin_op.max_bins()) ,*this);
+ const size_t len = range_end - range_begin ;
+ Kokkos::parallel_for (Kokkos::RangePolicy (0,len),*this);
+ Kokkos::parallel_scan(Kokkos::RangePolicy (0,bin_op.max_bins()) ,*this);
Kokkos::deep_copy(bin_count_atomic,0);
- Kokkos::parallel_for (Kokkos::RangePolicy (0,keys.dimension_0()),*this);
+ Kokkos::parallel_for (Kokkos::RangePolicy (0,len),*this);
if(sort_within_bins)
- Kokkos::parallel_for (Kokkos::RangePolicy(0,bin_op.max_bins()) ,*this);
+ Kokkos::parallel_for (Kokkos::RangePolicy(0,bin_op.max_bins()) ,*this);
}
// Sort a view with respect ot the first dimension using the permutation array
template
- void sort(ValuesViewType values) {
- ValuesViewType sorted_values = ValuesViewType("Copy",
- values.dimension_0(),
- values.dimension_1(),
- values.dimension_2(),
- values.dimension_3(),
- values.dimension_4(),
- values.dimension_5(),
- values.dimension_6(),
- values.dimension_7());
+ void sort( ValuesViewType const & values)
+ {
+ typedef
+ Kokkos::View< typename ValuesViewType::data_type,
+ typename ValuesViewType::array_layout,
+ typename ValuesViewType::device_type >
+ scratch_view_type ;
- parallel_for(values.dimension_0(),
- bin_sort_sort_functor >(values,sorted_values,sort_order));
+ const size_t len = range_end - range_begin ;
- deep_copy(values,sorted_values);
+ scratch_view_type
+ sorted_values("Scratch",
+ len,
+ values.extent(1),
+ values.extent(2),
+ values.extent(3),
+ values.extent(4),
+ values.extent(5),
+ values.extent(6),
+ values.extent(7));
+
+ {
+ copy_permute_functor< scratch_view_type /* DstViewType */
+ , offset_type /* PermuteViewType */
+ , ValuesViewType /* SrcViewType */
+ >
+ functor( sorted_values , sort_order , values );
+
+ parallel_for( Kokkos::RangePolicy(0,len),functor);
+ }
+
+ {
+ copy_functor< ValuesViewType , scratch_view_type >
+ functor( values , range_begin , sorted_values );
+
+ parallel_for( Kokkos::RangePolicy(0,len),functor);
+ }
}
// Get the permutation vector
@@ -217,9 +323,11 @@ public:
bin_count_type get_bin_count() const {return bin_count_const;}
public:
+
KOKKOS_INLINE_FUNCTION
void operator() (const bin_count_tag& tag, const int& i) const {
- bin_count_atomic(bin_op.bin(keys,i))++;
+ const int j = range_begin + i ;
+ bin_count_atomic(bin_op.bin(keys,j))++;
}
KOKKOS_INLINE_FUNCTION
@@ -232,10 +340,11 @@ public:
KOKKOS_INLINE_FUNCTION
void operator() (const bin_binning_tag& tag, const int& i) const {
- const int bin = bin_op.bin(keys,i);
+ const int j = range_begin + i ;
+ const int bin = bin_op.bin(keys,j);
const int count = bin_count_atomic(bin)++;
- sort_order(bin_offsets(bin) + count) = i;
+ sort_order(bin_offsets(bin) + count) = j ;
}
KOKKOS_INLINE_FUNCTION
@@ -262,13 +371,19 @@ public:
}
};
+//----------------------------------------------------------------------------
+
template
struct BinOp1D {
- const int max_bins_;
- const double mul_;
+ int max_bins_;
+ double mul_;
typename KeyViewType::const_value_type range_;
typename KeyViewType::const_value_type min_;
+ BinOp1D():max_bins_(0),mul_(0.0),
+ range_(typename KeyViewType::const_value_type()),
+ min_(typename KeyViewType::const_value_type()) {}
+
//Construct BinOp with number of bins, minimum value and maxuimum value
BinOp1D(int max_bins__, typename KeyViewType::const_value_type min,
typename KeyViewType::const_value_type max )
@@ -302,12 +417,14 @@ struct BinOp3D {
typename KeyViewType::non_const_value_type range_[3];
typename KeyViewType::non_const_value_type min_[3];
+ BinOp3D() {}
+
BinOp3D(int max_bins__[], typename KeyViewType::const_value_type min[],
typename KeyViewType::const_value_type max[] )
{
- max_bins_[0] = max_bins__[0]+1;
- max_bins_[1] = max_bins__[1]+1;
- max_bins_[2] = max_bins__[2]+1;
+ max_bins_[0] = max_bins__[0];
+ max_bins_[1] = max_bins__[1];
+ max_bins_[2] = max_bins__[2];
mul_[0] = 1.0*max_bins__[0]/(max[0]-min[0]);
mul_[1] = 1.0*max_bins__[1]/(max[1]-min[1]);
mul_[2] = 1.0*max_bins__[2]/(max[2]-min[2]);
@@ -364,7 +481,7 @@ bool try_std_sort(ViewType view) {
possible = possible && (ViewType::Rank == 1);
possible = possible && (stride[0] == 1);
if(possible) {
- std::sort(view.ptr_on_device(),view.ptr_on_device()+view.dimension_0());
+ std::sort(view.data(),view.data()+view.extent(0));
}
return possible;
}
@@ -386,7 +503,8 @@ struct min_max_functor {
}
template
-void sort(ViewType view, bool always_use_kokkos_sort = false) {
+void sort( ViewType const & view , bool const always_use_kokkos_sort = false)
+{
if(!always_use_kokkos_sort) {
if(Impl::try_std_sort(view)) return;
}
@@ -394,14 +512,37 @@ void sort(ViewType view, bool always_use_kokkos_sort = false) {
Kokkos::Experimental::MinMaxScalar result;
Kokkos::Experimental::MinMax reducer(result);
- parallel_reduce(Kokkos::RangePolicy(0,view.dimension_0()),
+ parallel_reduce(Kokkos::RangePolicy(0,view.extent(0)),
Impl::min_max_functor(view),reducer);
if(result.min_val == result.max_val) return;
- BinSort bin_sort(view,CompType(view.dimension_0()/2,result.min_val,result.max_val),true);
+ BinSort bin_sort(view,CompType(view.extent(0)/2,result.min_val,result.max_val),true);
bin_sort.create_permute_vector();
bin_sort.sort(view);
}
+template
+void sort( ViewType view
+ , size_t const begin
+ , size_t const end
+ )
+{
+ typedef Kokkos::RangePolicy range_policy ;
+ typedef BinOp1D CompType;
+
+ Kokkos::Experimental::MinMaxScalar result;
+ Kokkos::Experimental::MinMax reducer(result);
+
+ parallel_reduce( range_policy( begin , end )
+ , Impl::min_max_functor(view),reducer );
+
+ if(result.min_val == result.max_val) return;
+
+ BinSort
+ bin_sort(view,begin,end,CompType((end-begin)/2,result.min_val,result.max_val),true);
+
+ bin_sort.create_permute_vector();
+ bin_sort.sort(view);
+}
}
#endif
diff --git a/lib/kokkos/algorithms/unit_tests/TestSort.hpp b/lib/kokkos/algorithms/unit_tests/TestSort.hpp
index 03e4fb691e..61ffa6f43a 100644
--- a/lib/kokkos/algorithms/unit_tests/TestSort.hpp
+++ b/lib/kokkos/algorithms/unit_tests/TestSort.hpp
@@ -44,6 +44,7 @@
#include
#include
+#include
#include
#include
@@ -192,17 +193,81 @@ void test_3D_sort(unsigned int n) {
double epsilon = 1e-10;
unsigned int equal_sum = (ratio > (1.0-epsilon)) && (ratio < (1.0+epsilon)) ? 1 : 0;
- printf("3D Sort Sum: %f %f Fails: %u\n",sum_before,sum_after,sort_fails);
+ if ( sort_fails )
+ printf("3D Sort Sum: %f %f Fails: %u\n",sum_before,sum_after,sort_fails);
+
ASSERT_EQ(sort_fails,0);
ASSERT_EQ(equal_sum,1);
}
+//----------------------------------------------------------------------------
+
+template
+void test_dynamic_view_sort(unsigned int n )
+{
+ typedef typename ExecutionSpace::memory_space memory_space ;
+ typedef Kokkos::Experimental::DynamicView KeyDynamicViewType;
+ typedef Kokkos::View KeyViewType;
+
+ const size_t upper_bound = 2 * n ;
+
+ typename KeyDynamicViewType::memory_pool
+ pool( memory_space() , 2 * n * sizeof(KeyType) );
+
+ KeyDynamicViewType keys("Keys",pool,upper_bound);
+
+ keys.resize_serial(n);
+
+ KeyViewType keys_view("KeysTmp", n );
+
+ // Test sorting array with all numbers equal
+ Kokkos::deep_copy(keys_view,KeyType(1));
+ Kokkos::Experimental::deep_copy(keys,keys_view);
+ Kokkos::sort(keys, 0 /* begin */ , n /* end */ );
+
+ Kokkos::Random_XorShift64_Pool g(1931);
+ Kokkos::fill_random(keys_view,g,Kokkos::Random_XorShift64_Pool::generator_type::MAX_URAND);
+
+ Kokkos::Experimental::deep_copy(keys,keys_view);
+
+ double sum_before = 0.0;
+ double sum_after = 0.0;
+ unsigned int sort_fails = 0;
+
+ Kokkos::parallel_reduce(n,sum(keys_view),sum_before);
+
+ Kokkos::sort(keys, 0 /* begin */ , n /* end */ );
+
+ Kokkos::Experimental::deep_copy( keys_view , keys );
+
+ Kokkos::parallel_reduce(n,sum(keys_view),sum_after);
+ Kokkos::parallel_reduce(n-1,is_sorted_struct(keys_view),sort_fails);
+
+ double ratio = sum_before/sum_after;
+ double epsilon = 1e-10;
+ unsigned int equal_sum = (ratio > (1.0-epsilon)) && (ratio < (1.0+epsilon)) ? 1 : 0;
+
+ if ( sort_fails != 0 || equal_sum != 1 ) {
+ std::cout << " N = " << n
+ << " ; sum_before = " << sum_before
+ << " ; sum_after = " << sum_after
+ << " ; ratio = " << ratio
+ << std::endl ;
+ }
+
+ ASSERT_EQ(sort_fails,0);
+ ASSERT_EQ(equal_sum,1);
+}
+
+//----------------------------------------------------------------------------
+
template
void test_sort(unsigned int N)
{
test_1D_sort(N*N*N, true);
test_1D_sort(N*N*N, false);
test_3D_sort(N);
+ test_dynamic_view_sort(N*N);
}
}
diff --git a/lib/kokkos/bin/nvcc_wrapper b/lib/kokkos/bin/nvcc_wrapper
index cb206cf88b..09fa5d500a 100755
--- a/lib/kokkos/bin/nvcc_wrapper
+++ b/lib/kokkos/bin/nvcc_wrapper
@@ -140,6 +140,9 @@ do
#strip of pedantic because it produces endless warnings about #LINE added by the preprocessor
-pedantic|-Wpedantic|-ansi)
;;
+ #strip of -Woverloaded-virtual to avoid "cc1: warning: command line option ‘-Woverloaded-virtual’ is valid for C++/ObjC++ but not for C"
+ -Woverloaded-virtual)
+ ;;
#strip -Xcompiler because we add it
-Xcompiler)
if [ $first_xcompiler_arg -eq 1 ]; then
@@ -190,7 +193,7 @@ do
object_files_xlinker="$object_files_xlinker -Xlinker $1"
;;
#Handle object files which always need to use "-Xlinker": -x cu applies to all input files, so give them to linker, except if only linking
- *.dylib)
+ @*|*.dylib)
object_files="$object_files -Xlinker $1"
object_files_xlinker="$object_files_xlinker -Xlinker $1"
;;
diff --git a/lib/kokkos/cmake/deps/QTHREAD.cmake b/lib/kokkos/cmake/deps/QTHREADS.cmake
similarity index 98%
rename from lib/kokkos/cmake/deps/QTHREAD.cmake
rename to lib/kokkos/cmake/deps/QTHREADS.cmake
index 994b72b200..c312f2590b 100644
--- a/lib/kokkos/cmake/deps/QTHREAD.cmake
+++ b/lib/kokkos/cmake/deps/QTHREADS.cmake
@@ -63,8 +63,7 @@
# Source: https://code.google.com/p/qthreads
#
-TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES( QTHREAD
+TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES( QTHREADS
REQUIRED_HEADERS qthread.h
REQUIRED_LIBS_NAMES "qthread"
)
-
diff --git a/lib/kokkos/cmake/tpls/FindTPLQTHREAD.cmake b/lib/kokkos/cmake/tpls/FindTPLQTHREADS.cmake
similarity index 98%
rename from lib/kokkos/cmake/tpls/FindTPLQTHREAD.cmake
rename to lib/kokkos/cmake/tpls/FindTPLQTHREADS.cmake
index 994b72b200..c312f2590b 100644
--- a/lib/kokkos/cmake/tpls/FindTPLQTHREAD.cmake
+++ b/lib/kokkos/cmake/tpls/FindTPLQTHREADS.cmake
@@ -63,8 +63,7 @@
# Source: https://code.google.com/p/qthreads
#
-TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES( QTHREAD
+TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES( QTHREADS
REQUIRED_HEADERS qthread.h
REQUIRED_LIBS_NAMES "qthread"
)
-
diff --git a/lib/kokkos/config/kokkos_dev/config-core-all.sh b/lib/kokkos/config/kokkos_dev/config-core-all.sh
index fa588c778f..d4fb25a8e1 100755
--- a/lib/kokkos/config/kokkos_dev/config-core-all.sh
+++ b/lib/kokkos/config/kokkos_dev/config-core-all.sh
@@ -6,7 +6,7 @@
#-----------------------------------------------------------------------------
# Building on 'kokkos-dev.sandia.gov' with enabled capabilities:
#
-# Cuda, OpenMP, Threads, Qthread, hwloc
+# Cuda, OpenMP, Threads, Qthreads, hwloc
#
# module loaded on 'kokkos-dev.sandia.gov' for this build
#
@@ -82,13 +82,13 @@ CMAKE_CONFIGURE="${CMAKE_CONFIGURE} -D Trilinos_ENABLE_OpenMP:BOOL=ON"
CMAKE_CONFIGURE="${CMAKE_CONFIGURE} -D Kokkos_ENABLE_OpenMP:BOOL=ON"
#-----------------------------------------------------------------------------
-# Qthread
+# Qthreads
-QTHREAD_BASE_DIR="/home/projects/qthreads/2014-07-08/host/gnu/4.7.3"
+QTHREADS_BASE_DIR="/home/projects/qthreads/2014-07-08/host/gnu/4.7.3"
-CMAKE_CONFIGURE="${CMAKE_CONFIGURE} -D TPL_ENABLE_QTHREAD:BOOL=ON"
-CMAKE_CONFIGURE="${CMAKE_CONFIGURE} -D QTHREAD_INCLUDE_DIRS:FILEPATH=${QTHREAD_BASE_DIR}/include"
-CMAKE_CONFIGURE="${CMAKE_CONFIGURE} -D QTHREAD_LIBRARY_DIRS:FILEPATH=${QTHREAD_BASE_DIR}/lib"
+CMAKE_CONFIGURE="${CMAKE_CONFIGURE} -D TPL_ENABLE_QTHREADS:BOOL=ON"
+CMAKE_CONFIGURE="${CMAKE_CONFIGURE} -D QTHREADS_INCLUDE_DIRS:FILEPATH=${QTHREADS_BASE_DIR}/include"
+CMAKE_CONFIGURE="${CMAKE_CONFIGURE} -D QTHREADS_LIBRARY_DIRS:FILEPATH=${QTHREADS_BASE_DIR}/lib"
#-----------------------------------------------------------------------------
# C++11
@@ -108,6 +108,3 @@ rm -rf CMake* Trilinos* packages Dart* Testing cmake_install.cmake MakeFile*
echo cmake ${CMAKE_CONFIGURE} ${TRILINOS_SOURCE_DIR}
cmake ${CMAKE_CONFIGURE} ${TRILINOS_SOURCE_DIR}
-
-#-----------------------------------------------------------------------------
-
diff --git a/lib/kokkos/config/master_history.txt b/lib/kokkos/config/master_history.txt
index 446cbb0216..9eaecb5031 100644
--- a/lib/kokkos/config/master_history.txt
+++ b/lib/kokkos/config/master_history.txt
@@ -4,4 +4,5 @@ tag: 2.01.10 date: 09:27:2016 master: e4119325 develop: e6cda11e
tag: 2.02.00 date: 10:30:2016 master: 6c90a581 develop: ca3dd56e
tag: 2.02.01 date: 11:01:2016 master: 9c698c86 develop: b0072304
tag: 2.02.07 date: 12:16:2016 master: 4b4cc4ba develop: 382c0966
-tag: 2.02.15 date: 02:10:2017 master: 8c64cd93 develop: 28dea8b6
+tag: 2.02.15 date: 02:10:2017 master: 8c64cd93 develop: 28dea8b6
+tag: 2.03.00 date: 04:25:2017 master: 120d9ce7 develop: 015ba641
diff --git a/lib/kokkos/config/test_all_sandia b/lib/kokkos/config/test_all_sandia
index 2c15e951ba..6909606643 100755
--- a/lib/kokkos/config/test_all_sandia
+++ b/lib/kokkos/config/test_all_sandia
@@ -6,29 +6,29 @@
set -o pipefail
-# Determine current machine
+# Determine current machine.
MACHINE=""
HOSTNAME=$(hostname)
PROCESSOR=`uname -p`
if [[ "$HOSTNAME" =~ (white|ride).* ]]; then
- MACHINE=white
+ MACHINE=white
elif [[ "$HOSTNAME" =~ .*bowman.* ]]; then
- MACHINE=bowman
+ MACHINE=bowman
elif [[ "$HOSTNAME" =~ node.* ]]; then # Warning: very generic name
- if [[ "$PROCESSOR" = "aarch64" ]]; then
- MACHINE=sullivan
- else
- MACHINE=shepard
- fi
+ if [[ "$PROCESSOR" = "aarch64" ]]; then
+ MACHINE=sullivan
+ else
+ MACHINE=shepard
+ fi
elif [[ "$HOSTNAME" =~ apollo ]]; then
- MACHINE=apollo
+ MACHINE=apollo
elif [ ! -z "$SEMS_MODULEFILES_ROOT" ]; then
- MACHINE=sems
+ MACHINE=sems
else
- echo "Unrecognized machine" >&2
- exit 1
+ echo "Unrecognized machine" >&2
+ exit 1
fi
GCC_BUILD_LIST="OpenMP,Pthread,Serial,OpenMP_Serial,Pthread_Serial"
@@ -45,10 +45,11 @@ CLANG_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limi
INTEL_WARNING_FLAGS="-Wall,-Wshadow,-pedantic,-Werror,-Wsign-compare,-Wtype-limits,-Wuninitialized"
CUDA_WARNING_FLAGS=""
-# Default. Machine specific can override
+# Default. Machine specific can override.
DEBUG=False
ARGS=""
CUSTOM_BUILD_LIST=""
+QTHREADS_PATH=""
DRYRUN=False
BUILD_ONLY=False
declare -i NUM_JOBS_TO_RUN_IN_PARALLEL=3
@@ -60,86 +61,90 @@ PRINT_HELP=False
OPT_FLAG=""
KOKKOS_OPTIONS=""
-
#
-# Handle arguments
+# Handle arguments.
#
while [[ $# > 0 ]]
do
-key="$1"
-case $key in
---kokkos-path*)
-KOKKOS_PATH="${key#*=}"
-;;
---build-list*)
-CUSTOM_BUILD_LIST="${key#*=}"
-;;
---debug*)
-DEBUG=True
-;;
---build-only*)
-BUILD_ONLY=True
-;;
---test-script*)
-TEST_SCRIPT=True
-;;
---skip-hwloc*)
-SKIP_HWLOC=True
-;;
---num*)
-NUM_JOBS_TO_RUN_IN_PARALLEL="${key#*=}"
-;;
---dry-run*)
-DRYRUN=True
-;;
---spot-check*)
-SPOT_CHECK=True
-;;
---arch*)
-ARCH_FLAG="--arch=${key#*=}"
-;;
---opt-flag*)
-OPT_FLAG="${key#*=}"
-;;
---with-cuda-options*)
-KOKKOS_CUDA_OPTIONS="--with-cuda-options=${key#*=}"
-;;
---help*)
-PRINT_HELP=True
-;;
-*)
-# args, just append
-ARGS="$ARGS $1"
-;;
-esac
-shift
+ key="$1"
+
+ case $key in
+ --kokkos-path*)
+ KOKKOS_PATH="${key#*=}"
+ ;;
+ --qthreads-path*)
+ QTHREADS_PATH="${key#*=}"
+ ;;
+ --build-list*)
+ CUSTOM_BUILD_LIST="${key#*=}"
+ ;;
+ --debug*)
+ DEBUG=True
+ ;;
+ --build-only*)
+ BUILD_ONLY=True
+ ;;
+ --test-script*)
+ TEST_SCRIPT=True
+ ;;
+ --skip-hwloc*)
+ SKIP_HWLOC=True
+ ;;
+ --num*)
+ NUM_JOBS_TO_RUN_IN_PARALLEL="${key#*=}"
+ ;;
+ --dry-run*)
+ DRYRUN=True
+ ;;
+ --spot-check*)
+ SPOT_CHECK=True
+ ;;
+ --arch*)
+ ARCH_FLAG="--arch=${key#*=}"
+ ;;
+ --opt-flag*)
+ OPT_FLAG="${key#*=}"
+ ;;
+ --with-cuda-options*)
+ KOKKOS_CUDA_OPTIONS="--with-cuda-options=${key#*=}"
+ ;;
+ --help*)
+ PRINT_HELP=True
+ ;;
+ *)
+ # args, just append
+ ARGS="$ARGS $1"
+ ;;
+ esac
+
+ shift
done
SCRIPT_KOKKOS_ROOT=$( cd "$( dirname "$0" )" && cd .. && pwd )
-# set kokkos path
+# Set kokkos path.
if [ -z "$KOKKOS_PATH" ]; then
- KOKKOS_PATH=$SCRIPT_KOKKOS_ROOT
+ KOKKOS_PATH=$SCRIPT_KOKKOS_ROOT
else
- # Ensure KOKKOS_PATH is abs path
- KOKKOS_PATH=$( cd $KOKKOS_PATH && pwd )
+ # Ensure KOKKOS_PATH is abs path.
+ KOKKOS_PATH=$( cd $KOKKOS_PATH && pwd )
fi
#
-# Machine specific config
+# Machine specific config.
#
if [ "$MACHINE" = "sems" ]; then
- source /projects/sems/modulefiles/utils/sems-modules-init.sh
+ source /projects/sems/modulefiles/utils/sems-modules-init.sh
- BASE_MODULE_LIST="sems-env,kokkos-env,sems-/,kokkos-hwloc/1.10.1/base"
- CUDA_MODULE_LIST="sems-env,kokkos-env,kokkos-/,sems-gcc/4.8.4,kokkos-hwloc/1.10.1/base"
- CUDA8_MODULE_LIST="sems-env,kokkos-env,kokkos-/,sems-gcc/5.3.0,kokkos-hwloc/1.10.1/base"
+ BASE_MODULE_LIST="sems-env,kokkos-env,sems-/,kokkos-hwloc/1.10.1/base"
+ CUDA_MODULE_LIST="sems-env,kokkos-env,kokkos-/,sems-gcc/4.8.4,kokkos-hwloc/1.10.1/base"
+ CUDA8_MODULE_LIST="sems-env,kokkos-env,kokkos-/,sems-gcc/5.3.0,kokkos-hwloc/1.10.1/base"
- if [ -z "$ARCH_FLAG" ]; then
- ARCH_FLAG=""
- fi
+ if [ -z "$ARCH_FLAG" ]; then
+ ARCH_FLAG=""
+ fi
if [ "$SPOT_CHECK" = "True" ]; then
# Format: (compiler module-list build-list exe-name warning-flag)
@@ -153,120 +158,118 @@ if [ "$MACHINE" = "sems" ]; then
# Format: (compiler module-list build-list exe-name warning-flag)
COMPILERS=("gcc/4.7.2 $BASE_MODULE_LIST $GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS"
"gcc/4.8.4 $BASE_MODULE_LIST $GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS"
- "gcc/4.9.2 $BASE_MODULE_LIST $GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS"
- "gcc/5.1.0 $BASE_MODULE_LIST $GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS"
"intel/14.0.4 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS"
"intel/15.0.2 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS"
"intel/16.0.1 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS"
"clang/3.6.1 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS"
"clang/3.7.1 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS"
"clang/3.8.1 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS"
- "clang/3.9.0 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS"
"cuda/7.0.28 $CUDA_MODULE_LIST $CUDA_BUILD_LIST $KOKKOS_PATH/config/nvcc_wrapper $CUDA_WARNING_FLAGS"
"cuda/7.5.18 $CUDA_MODULE_LIST $CUDA_BUILD_LIST $KOKKOS_PATH/config/nvcc_wrapper $CUDA_WARNING_FLAGS"
"cuda/8.0.44 $CUDA8_MODULE_LIST $CUDA_BUILD_LIST $KOKKOS_PATH/config/nvcc_wrapper $CUDA_WARNING_FLAGS"
)
fi
-
elif [ "$MACHINE" = "white" ]; then
- source /etc/profile.d/modules.sh
- SKIP_HWLOC=True
- export SLURM_TASKS_PER_NODE=32
+ source /etc/profile.d/modules.sh
+ SKIP_HWLOC=True
+ export SLURM_TASKS_PER_NODE=32
- BASE_MODULE_LIST="/"
- IBM_MODULE_LIST="/xl/"
- CUDA_MODULE_LIST="/,gcc/5.4.0"
+ BASE_MODULE_LIST="/"
+ IBM_MODULE_LIST="/xl/"
+ CUDA_MODULE_LIST="/,gcc/5.4.0"
- # Don't do pthread on white
- GCC_BUILD_LIST="OpenMP,Serial,OpenMP_Serial"
+ # Don't do pthread on white.
+ GCC_BUILD_LIST="OpenMP,Serial,OpenMP_Serial"
- # Format: (compiler module-list build-list exe-name warning-flag)
- COMPILERS=("gcc/5.4.0 $BASE_MODULE_LIST $IBM_BUILD_LIST g++ $GCC_WARNING_FLAGS"
- "ibm/13.1.3 $IBM_MODULE_LIST $IBM_BUILD_LIST xlC $IBM_WARNING_FLAGS"
- "cuda/8.0.44 $CUDA_MODULE_LIST $CUDA_IBM_BUILD_LIST ${KOKKOS_PATH}/config/nvcc_wrapper $CUDA_WARNING_FLAGS"
- )
- if [ -z "$ARCH_FLAG" ]; then
- ARCH_FLAG="--arch=Power8,Kepler37"
- fi
- NUM_JOBS_TO_RUN_IN_PARALLEL=2
+ # Format: (compiler module-list build-list exe-name warning-flag)
+ COMPILERS=("gcc/5.4.0 $BASE_MODULE_LIST $IBM_BUILD_LIST g++ $GCC_WARNING_FLAGS"
+ "ibm/13.1.3 $IBM_MODULE_LIST $IBM_BUILD_LIST xlC $IBM_WARNING_FLAGS"
+ "cuda/8.0.44 $CUDA_MODULE_LIST $CUDA_IBM_BUILD_LIST ${KOKKOS_PATH}/config/nvcc_wrapper $CUDA_WARNING_FLAGS"
+ )
+
+ if [ -z "$ARCH_FLAG" ]; then
+ ARCH_FLAG="--arch=Power8,Kepler37"
+ fi
+
+ NUM_JOBS_TO_RUN_IN_PARALLEL=2
elif [ "$MACHINE" = "bowman" ]; then
- source /etc/profile.d/modules.sh
- SKIP_HWLOC=True
- export SLURM_TASKS_PER_NODE=32
+ source /etc/profile.d/modules.sh
+ SKIP_HWLOC=True
+ export SLURM_TASKS_PER_NODE=32
- BASE_MODULE_LIST="/compilers/"
+ BASE_MODULE_LIST="/compilers/"
- OLD_INTEL_BUILD_LIST="Pthread,Serial,Pthread_Serial"
+ OLD_INTEL_BUILD_LIST="Pthread,Serial,Pthread_Serial"
- # Format: (compiler module-list build-list exe-name warning-flag)
- COMPILERS=("intel/16.2.181 $BASE_MODULE_LIST $OLD_INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS"
- "intel/17.0.098 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS"
- )
+ # Format: (compiler module-list build-list exe-name warning-flag)
+ COMPILERS=("intel/16.2.181 $BASE_MODULE_LIST $OLD_INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS"
+ "intel/17.0.098 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS"
+ )
- if [ -z "$ARCH_FLAG" ]; then
- ARCH_FLAG="--arch=KNL"
- fi
+ if [ -z "$ARCH_FLAG" ]; then
+ ARCH_FLAG="--arch=KNL"
+ fi
- NUM_JOBS_TO_RUN_IN_PARALLEL=2
+ NUM_JOBS_TO_RUN_IN_PARALLEL=2
elif [ "$MACHINE" = "sullivan" ]; then
- source /etc/profile.d/modules.sh
- SKIP_HWLOC=True
- export SLURM_TASKS_PER_NODE=96
+ source /etc/profile.d/modules.sh
+ SKIP_HWLOC=True
+ export SLURM_TASKS_PER_NODE=96
- BASE_MODULE_LIST="/"
+ BASE_MODULE_LIST="/"
- # Format: (compiler module-list build-list exe-name warning-flag)
- COMPILERS=("gcc/5.3.0 $BASE_MODULE_LIST $ARM_GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS")
+ # Format: (compiler module-list build-list exe-name warning-flag)
+ COMPILERS=("gcc/5.3.0 $BASE_MODULE_LIST $ARM_GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS")
- if [ -z "$ARCH_FLAG" ]; then
- ARCH_FLAG="--arch=ARMv8-ThunderX"
- fi
+ if [ -z "$ARCH_FLAG" ]; then
+ ARCH_FLAG="--arch=ARMv8-ThunderX"
+ fi
- NUM_JOBS_TO_RUN_IN_PARALLEL=2
+ NUM_JOBS_TO_RUN_IN_PARALLEL=2
elif [ "$MACHINE" = "shepard" ]; then
- source /etc/profile.d/modules.sh
- SKIP_HWLOC=True
- export SLURM_TASKS_PER_NODE=32
+ source /etc/profile.d/modules.sh
+ SKIP_HWLOC=True
+ export SLURM_TASKS_PER_NODE=32
- BASE_MODULE_LIST="/compilers/"
+ BASE_MODULE_LIST="/compilers/"
- OLD_INTEL_BUILD_LIST="Pthread,Serial,Pthread_Serial"
+ OLD_INTEL_BUILD_LIST="Pthread,Serial,Pthread_Serial"
- # Format: (compiler module-list build-list exe-name warning-flag)
- COMPILERS=("intel/16.2.181 $BASE_MODULE_LIST $OLD_INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS"
- "intel/17.0.098 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS"
- )
+ # Format: (compiler module-list build-list exe-name warning-flag)
+ COMPILERS=("intel/16.2.181 $BASE_MODULE_LIST $OLD_INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS"
+ "intel/17.0.098 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS"
+ )
- if [ -z "$ARCH_FLAG" ]; then
- ARCH_FLAG="--arch=HSW"
- fi
- NUM_JOBS_TO_RUN_IN_PARALLEL=2
+ if [ -z "$ARCH_FLAG" ]; then
+ ARCH_FLAG="--arch=HSW"
+ fi
+ NUM_JOBS_TO_RUN_IN_PARALLEL=2
elif [ "$MACHINE" = "apollo" ]; then
- source /projects/sems/modulefiles/utils/sems-modules-init.sh
- module use /home/projects/modulefiles/local/x86-64
- module load kokkos-env
+ source /projects/sems/modulefiles/utils/sems-modules-init.sh
+ module use /home/projects/modulefiles/local/x86-64
+ module load kokkos-env
- module load sems-git
- module load sems-tex
- module load sems-cmake/3.5.2
- module load sems-gdb
+ module load sems-git
+ module load sems-tex
+ module load sems-cmake/3.5.2
+ module load sems-gdb
- SKIP_HWLOC=True
+ SKIP_HWLOC=True
- BASE_MODULE_LIST="sems-env,kokkos-env,sems-/,kokkos-hwloc/1.10.1/base"
- CUDA_MODULE_LIST="sems-env,kokkos-env,kokkos-/,sems-gcc/4.8.4,kokkos-hwloc/1.10.1/base"
- CUDA8_MODULE_LIST="sems-env,kokkos-env,kokkos-/,sems-gcc/5.3.0,kokkos-hwloc/1.10.1/base"
+ BASE_MODULE_LIST="sems-env,kokkos-env,sems-/,kokkos-hwloc/1.10.1/base"
+ CUDA_MODULE_LIST="sems-env,kokkos-env,kokkos-/,sems-gcc/4.8.4,kokkos-hwloc/1.10.1/base"
+ CUDA8_MODULE_LIST="sems-env,kokkos-env,kokkos-/,sems-gcc/5.3.0,kokkos-hwloc/1.10.1/base"
- CLANG_MODULE_LIST="sems-env,kokkos-env,sems-git,sems-cmake/3.5.2,/,cuda/8.0.44"
- NVCC_MODULE_LIST="sems-env,kokkos-env,sems-git,sems-cmake/3.5.2,/,sems-gcc/5.3.0"
+ CLANG_MODULE_LIST="sems-env,kokkos-env,sems-git,sems-cmake/3.5.2,/,cuda/8.0.44"
+ NVCC_MODULE_LIST="sems-env,kokkos-env,sems-git,sems-cmake/3.5.2,/,sems-gcc/5.3.0"
- BUILD_LIST_CUDA_NVCC="Cuda_Serial,Cuda_OpenMP"
- BUILD_LIST_CUDA_CLANG="Cuda_Serial,Cuda_Pthread"
- BUILD_LIST_CLANG="Serial,Pthread,OpenMP"
+ BUILD_LIST_CUDA_NVCC="Cuda_Serial,Cuda_OpenMP"
+ BUILD_LIST_CUDA_CLANG="Cuda_Serial,Cuda_Pthread"
+ BUILD_LIST_CLANG="Serial,Pthread,OpenMP"
if [ "$SPOT_CHECK" = "True" ]; then
# Format: (compiler module-list build-list exe-name warning-flag)
@@ -297,17 +300,17 @@ elif [ "$MACHINE" = "apollo" ]; then
)
fi
- if [ -z "$ARCH_FLAG" ]; then
- ARCH_FLAG="--arch=SNB,Kepler35"
- fi
- NUM_JOBS_TO_RUN_IN_PARALLEL=2
+ if [ -z "$ARCH_FLAG" ]; then
+ ARCH_FLAG="--arch=SNB,Kepler35"
+ fi
+
+ NUM_JOBS_TO_RUN_IN_PARALLEL=2
+
else
- echo "Unhandled machine $MACHINE" >&2
- exit 1
+ echo "Unhandled machine $MACHINE" >&2
+ exit 1
fi
-
-
export OMP_NUM_THREADS=4
declare -i NUM_RESULTS_TO_KEEP=7
@@ -315,119 +318,149 @@ declare -i NUM_RESULTS_TO_KEEP=7
RESULT_ROOT_PREFIX=TestAll
if [ "$PRINT_HELP" = "True" ]; then
-echo "test_all_sandia :"
-echo "--kokkos-path=/Path/To/Kokkos: Path to the Kokkos root directory"
-echo " Defaults to root repo containing this script"
-echo "--debug: Run tests in debug. Defaults to False"
-echo "--test-script: Test this script, not Kokkos"
-echo "--skip-hwloc: Do not do hwloc tests"
-echo "--num=N: Number of jobs to run in parallel"
-echo "--spot-check: Minimal test set to issue pull request"
-echo "--dry-run: Just print what would be executed"
-echo "--build-only: Just do builds, don't run anything"
-echo "--opt-flag=FLAG: Optimization flag (default: -O3)"
-echo "--arch=ARCHITECTURE: overwrite architecture flags"
-echo "--with-cuda-options=OPT: set KOKKOS_CUDA_OPTIONS"
-echo "--build-list=BUILD,BUILD,BUILD..."
-echo " Provide a comma-separated list of builds instead of running all builds"
-echo " Valid items:"
-echo " OpenMP, Pthread, Serial, OpenMP_Serial, Pthread_Serial"
-echo " Cuda_OpenMP, Cuda_Pthread, Cuda_Serial"
-echo ""
+ echo "test_all_sandia :"
+ echo "--kokkos-path=/Path/To/Kokkos: Path to the Kokkos root directory"
+ echo " Defaults to root repo containing this script"
+ echo "--debug: Run tests in debug. Defaults to False"
+ echo "--test-script: Test this script, not Kokkos"
+ echo "--skip-hwloc: Do not do hwloc tests"
+ echo "--num=N: Number of jobs to run in parallel"
+ echo "--spot-check: Minimal test set to issue pull request"
+ echo "--dry-run: Just print what would be executed"
+ echo "--build-only: Just do builds, don't run anything"
+ echo "--opt-flag=FLAG: Optimization flag (default: -O3)"
+ echo "--arch=ARCHITECTURE: overwrite architecture flags"
+ echo "--with-cuda-options=OPT: set KOKKOS_CUDA_OPTIONS"
+ echo "--build-list=BUILD,BUILD,BUILD..."
+ echo " Provide a comma-separated list of builds instead of running all builds"
+ echo " Valid items:"
+ echo " OpenMP, Pthread, Qthreads, Serial, OpenMP_Serial, Pthread_Serial"
+ echo " Qthreads_Serial, Cuda_OpenMP, Cuda_Pthread, Cuda_Serial"
+ echo ""
-echo "ARGS: list of expressions matching compilers to test"
-echo " supported compilers sems"
-for COMPILER_DATA in "${COMPILERS[@]}"; do
+ echo "ARGS: list of expressions matching compilers to test"
+ echo " supported compilers sems"
+ for COMPILER_DATA in "${COMPILERS[@]}"; do
ARR=($COMPILER_DATA)
COMPILER=${ARR[0]}
echo " $COMPILER"
-done
-echo ""
+ done
+ echo ""
-echo "Examples:"
-echo " Run all tests"
-echo " % test_all_sandia"
-echo ""
-echo " Run all gcc tests"
-echo " % test_all_sandia gcc"
-echo ""
-echo " Run all gcc/4.7.2 and all intel tests"
-echo " % test_all_sandia gcc/4.7.2 intel"
-echo ""
-echo " Run all tests in debug"
-echo " % test_all_sandia --debug"
-echo ""
-echo " Run gcc/4.7.2 and only do OpenMP and OpenMP_Serial builds"
-echo " % test_all_sandia gcc/4.7.2 --build-list=OpenMP,OpenMP_Serial"
-echo ""
-echo "If you want to kill the tests, do:"
-echo " hit ctrl-z"
-echo " % kill -9 %1"
-echo
-exit 0
+ echo "Examples:"
+ echo " Run all tests"
+ echo " % test_all_sandia"
+ echo ""
+ echo " Run all gcc tests"
+ echo " % test_all_sandia gcc"
+ echo ""
+ echo " Run all gcc/4.7.2 and all intel tests"
+ echo " % test_all_sandia gcc/4.7.2 intel"
+ echo ""
+ echo " Run all tests in debug"
+ echo " % test_all_sandia --debug"
+ echo ""
+ echo " Run gcc/4.7.2 and only do OpenMP and OpenMP_Serial builds"
+ echo " % test_all_sandia gcc/4.7.2 --build-list=OpenMP,OpenMP_Serial"
+ echo ""
+ echo "If you want to kill the tests, do:"
+ echo " hit ctrl-z"
+ echo " % kill -9 %1"
+ echo
+ exit 0
fi
-# set build type
+# Set build type.
if [ "$DEBUG" = "True" ]; then
- BUILD_TYPE=debug
+ BUILD_TYPE=debug
else
- BUILD_TYPE=release
+ BUILD_TYPE=release
fi
-# If no args provided, do all compilers
+# If no args provided, do all compilers.
if [ -z "$ARGS" ]; then
- ARGS='?'
+ ARGS='?'
fi
-# Process args to figure out which compilers to test
+# Process args to figure out which compilers to test.
COMPILERS_TO_TEST=""
+
for ARG in $ARGS; do
- for COMPILER_DATA in "${COMPILERS[@]}"; do
- ARR=($COMPILER_DATA)
- COMPILER=${ARR[0]}
- if [[ "$COMPILER" = $ARG* ]]; then
- if [[ "$COMPILERS_TO_TEST" != *${COMPILER}* ]]; then
- COMPILERS_TO_TEST="$COMPILERS_TO_TEST $COMPILER"
- else
- echo "Tried to add $COMPILER twice"
- fi
- fi
- done
+ for COMPILER_DATA in "${COMPILERS[@]}"; do
+ ARR=($COMPILER_DATA)
+ COMPILER=${ARR[0]}
+
+ if [[ "$COMPILER" = $ARG* ]]; then
+ if [[ "$COMPILERS_TO_TEST" != *${COMPILER}* ]]; then
+ COMPILERS_TO_TEST="$COMPILERS_TO_TEST $COMPILER"
+ else
+ echo "Tried to add $COMPILER twice"
+ fi
+ fi
+ done
done
+# Check if Qthreads build requested.
+HAVE_QTHREADS_BUILD="False"
+if [ -n "$CUSTOM_BUILD_LIST" ]; then
+ if [[ "$CUSTOM_BUILD_LIST" = *Qthreads* ]]; then
+ HAVE_QTHREADS_BUILD="True"
+ fi
+else
+ for COMPILER_DATA in "${COMPILERS[@]}"; do
+ ARR=($COMPILER_DATA)
+ BUILD_LIST=${ARR[2]}
+ if [[ "$BUILD_LIST" = *Qthreads* ]]; then
+ HAVE_QTHREADS_BUILD="True"
+ fi
+ done
+fi
+
+# Ensure Qthreads path is set if Qthreads build is requested.
+if [ "$HAVE_QTHREADS_BUILD" = "True" ]; then
+ if [ -z "$QTHREADS_PATH" ]; then
+ echo "Need to supply Qthreads path (--qthreads-path) when testing Qthreads backend." >&2
+ exit 1
+ else
+ # Strip trailing slashes from path.
+ QTHREADS_PATH=$(echo $QTHREADS_PATH | sed 's/\/*$//')
+ fi
+fi
+
#
-# Functions
+# Functions.
#
# get_compiler_name
get_compiler_name() {
- echo $1 | cut -d/ -f1
+ echo $1 | cut -d/ -f1
}
# get_compiler_version
get_compiler_version() {
- echo $1 | cut -d/ -f2
+ echo $1 | cut -d/ -f2
}
-# Do not call directly
+# Do not call directly.
get_compiler_data() {
- local compiler=$1
- local item=$2
- local compiler_name=$(get_compiler_name $compiler)
- local compiler_vers=$(get_compiler_version $compiler)
+ local compiler=$1
+ local item=$2
+ local compiler_name=$(get_compiler_name $compiler)
+ local compiler_vers=$(get_compiler_version $compiler)
- local compiler_data
- for compiler_data in "${COMPILERS[@]}" ; do
- local arr=($compiler_data)
- if [ "$compiler" = "${arr[0]}" ]; then
- echo "${arr[$item]}" | tr , ' ' | sed -e "s//$compiler_name/g" -e "s//$compiler_vers/g"
- return 0
- fi
- done
+ local compiler_data
+ for compiler_data in "${COMPILERS[@]}" ; do
+ local arr=($compiler_data)
- # Not found
- echo "Unreconized compiler $compiler" >&2
- exit 1
+ if [ "$compiler" = "${arr[0]}" ]; then
+ echo "${arr[$item]}" | tr , ' ' | sed -e "s//$compiler_name/g" -e "s//$compiler_vers/g"
+ return 0
+ fi
+ done
+
+ # Not found.
+ echo "Unreconized compiler $compiler" >&2
+ exit 1
}
#
@@ -435,227 +468,232 @@ get_compiler_data() {
#
get_compiler_modules() {
- get_compiler_data $1 1
+ get_compiler_data $1 1
}
get_compiler_build_list() {
- get_compiler_data $1 2
+ get_compiler_data $1 2
}
get_compiler_exe_name() {
- get_compiler_data $1 3
+ get_compiler_data $1 3
}
get_compiler_warning_flags() {
- get_compiler_data $1 4
+ get_compiler_data $1 4
}
run_cmd() {
- echo "RUNNING: $*"
- if [ "$DRYRUN" != "True" ]; then
- eval "$* 2>&1"
- fi
+ echo "RUNNING: $*"
+ if [ "$DRYRUN" != "True" ]; then
+ eval "$* 2>&1"
+ fi
}
# report_and_log_test_results
report_and_log_test_result() {
- # Use sane var names
- local success=$1; local desc=$2; local comment=$3;
+ # Use sane var names.
+ local success=$1; local desc=$2; local comment=$3;
- if [ "$success" = "0" ]; then
- echo " PASSED $desc"
- echo $comment > $PASSED_DIR/$desc
- else
- # For failures, comment should be the name of the phase that failed
- echo " FAILED $desc" >&2
- echo $comment > $FAILED_DIR/$desc
- cat ${desc}.${comment}.log
- fi
+ if [ "$success" = "0" ]; then
+ echo " PASSED $desc"
+ echo $comment > $PASSED_DIR/$desc
+ else
+ # For failures, comment should be the name of the phase that failed.
+ echo " FAILED $desc" >&2
+ echo $comment > $FAILED_DIR/$desc
+ cat ${desc}.${comment}.log
+ fi
}
setup_env() {
- local compiler=$1
- local compiler_modules=$(get_compiler_modules $compiler)
+ local compiler=$1
+ local compiler_modules=$(get_compiler_modules $compiler)
- module purge
+ module purge
- local mod
- for mod in $compiler_modules; do
- echo "Loading module $mod"
- module load $mod 2>&1
- # It is ridiculously hard to check for the success of a loaded
- # module. Module does not return error codes and piping to grep
- # causes module to run in a subshell.
- module list 2>&1 | grep "$mod" >& /dev/null || return 1
- done
+ local mod
+ for mod in $compiler_modules; do
+ echo "Loading module $mod"
+ module load $mod 2>&1
+ # It is ridiculously hard to check for the success of a loaded
+ # module. Module does not return error codes and piping to grep
+ # causes module to run in a subshell.
+ module list 2>&1 | grep "$mod" >& /dev/null || return 1
+ done
- return 0
+ return 0
}
# single_build_and_test
single_build_and_test() {
- # Use sane var names
- local compiler=$1; local build=$2; local build_type=$3;
+ # Use sane var names.
+ local compiler=$1; local build=$2; local build_type=$3;
- # set up env
- mkdir -p $ROOT_DIR/$compiler/"${build}-$build_type"
- cd $ROOT_DIR/$compiler/"${build}-$build_type"
- local desc=$(echo "${compiler}-${build}-${build_type}" | sed 's:/:-:g')
- setup_env $compiler >& ${desc}.configure.log || { report_and_log_test_result 1 ${desc} configure && return 0; }
+ # Set up env.
+ mkdir -p $ROOT_DIR/$compiler/"${build}-$build_type"
+ cd $ROOT_DIR/$compiler/"${build}-$build_type"
+ local desc=$(echo "${compiler}-${build}-${build_type}" | sed 's:/:-:g')
+ setup_env $compiler >& ${desc}.configure.log || { report_and_log_test_result 1 ${desc} configure && return 0; }
- # Set up flags
- local compiler_warning_flags=$(get_compiler_warning_flags $compiler)
- local compiler_exe=$(get_compiler_exe_name $compiler)
+ # Set up flags.
+ local compiler_warning_flags=$(get_compiler_warning_flags $compiler)
+ local compiler_exe=$(get_compiler_exe_name $compiler)
+ if [[ "$build_type" = hwloc* ]]; then
+ local extra_args=--with-hwloc=$(dirname $(dirname $(which hwloc-info)))
+ fi
+
+ if [[ "$build" = *Qthreads* ]]; then
if [[ "$build_type" = hwloc* ]]; then
- local extra_args=--with-hwloc=$(dirname $(dirname $(which hwloc-info)))
- fi
-
- if [[ "$OPT_FLAG" = "" ]]; then
- OPT_FLAG="-O3"
- fi
-
- if [[ "$build_type" = *debug* ]]; then
- local extra_args="$extra_args --debug"
- local cxxflags="-g $compiler_warning_flags"
+ local extra_args="$extra_args --qthreads-path=${QTHREADS_PATH}_hwloc"
else
- local cxxflags="$OPT_FLAG $compiler_warning_flags"
+ local extra_args="$extra_args --qthreads-path=$QTHREADS_PATH"
fi
+ fi
- if [[ "$compiler" == cuda* ]]; then
- cxxflags="--keep --keep-dir=$(pwd) $cxxflags"
- export TMPDIR=$(pwd)
+ if [[ "$OPT_FLAG" = "" ]]; then
+ OPT_FLAG="-O3"
+ fi
+
+ if [[ "$build_type" = *debug* ]]; then
+ local extra_args="$extra_args --debug"
+ local cxxflags="-g $compiler_warning_flags"
+ else
+ local cxxflags="$OPT_FLAG $compiler_warning_flags"
+ fi
+
+ if [[ "$KOKKOS_CUDA_OPTIONS" != "" ]]; then
+ local extra_args="$extra_args $KOKKOS_CUDA_OPTIONS"
+ fi
+
+ echo " Starting job $desc"
+
+ local comment="no_comment"
+
+ if [ "$TEST_SCRIPT" = "True" ]; then
+ local rand=$[ 1 + $[ RANDOM % 10 ]]
+ sleep $rand
+
+ if [ $rand -gt 5 ]; then
+ run_cmd ls fake_problem >& ${desc}.configure.log || { report_and_log_test_result 1 $desc configure && return 0; }
fi
+ else
+ run_cmd ${KOKKOS_PATH}/generate_makefile.bash --with-devices=$build $ARCH_FLAG --compiler=$(which $compiler_exe) --cxxflags=\"$cxxflags\" $extra_args &>> ${desc}.configure.log || { report_and_log_test_result 1 ${desc} configure && return 0; }
+ local -i build_start_time=$(date +%s)
+ run_cmd make build-test >& ${desc}.build.log || { report_and_log_test_result 1 ${desc} build && return 0; }
+ local -i build_end_time=$(date +%s)
+ comment="build_time=$(($build_end_time-$build_start_time))"
- if [[ "$KOKKOS_CUDA_OPTIONS" != "" ]]; then
- local extra_args="$extra_args $KOKKOS_CUDA_OPTIONS"
+ if [[ "$BUILD_ONLY" == False ]]; then
+ run_cmd make test >& ${desc}.test.log || { report_and_log_test_result 1 ${desc} test && return 0; }
+ local -i run_end_time=$(date +%s)
+ comment="$comment run_time=$(($run_end_time-$build_end_time))"
fi
+ fi
- echo " Starting job $desc"
+ report_and_log_test_result 0 $desc "$comment"
- local comment="no_comment"
-
- if [ "$TEST_SCRIPT" = "True" ]; then
- local rand=$[ 1 + $[ RANDOM % 10 ]]
- sleep $rand
- if [ $rand -gt 5 ]; then
- run_cmd ls fake_problem >& ${desc}.configure.log || { report_and_log_test_result 1 $desc configure && return 0; }
- fi
- else
- run_cmd ${KOKKOS_PATH}/generate_makefile.bash --with-devices=$build $ARCH_FLAG --compiler=$(which $compiler_exe) --cxxflags=\"$cxxflags\" $extra_args &>> ${desc}.configure.log || { report_and_log_test_result 1 ${desc} configure && return 0; }
- local -i build_start_time=$(date +%s)
- run_cmd make build-test >& ${desc}.build.log || { report_and_log_test_result 1 ${desc} build && return 0; }
- local -i build_end_time=$(date +%s)
- comment="build_time=$(($build_end_time-$build_start_time))"
- if [[ "$BUILD_ONLY" == False ]]; then
- run_cmd make test >& ${desc}.test.log || { report_and_log_test_result 1 ${desc} test && return 0; }
- local -i run_end_time=$(date +%s)
- comment="$comment run_time=$(($run_end_time-$build_end_time))"
- fi
- fi
-
- report_and_log_test_result 0 $desc "$comment"
-
- return 0
+ return 0
}
# wait_for_jobs
wait_for_jobs() {
- local -i max_jobs=$1
- local -i num_active_jobs=$(jobs | wc -l)
- while [ $num_active_jobs -ge $max_jobs ]
- do
- sleep 1
- num_active_jobs=$(jobs | wc -l)
- jobs >& /dev/null
- done
+ local -i max_jobs=$1
+ local -i num_active_jobs=$(jobs | wc -l)
+ while [ $num_active_jobs -ge $max_jobs ]
+ do
+ sleep 1
+ num_active_jobs=$(jobs | wc -l)
+ jobs >& /dev/null
+ done
}
# run_in_background
run_in_background() {
- local compiler=$1
+ local compiler=$1
- local -i num_jobs=$NUM_JOBS_TO_RUN_IN_PARALLEL
- # don't override command line input
- # if [[ "$BUILD_ONLY" == True ]]; then
- # num_jobs=8
- # else
- if [[ "$compiler" == cuda* ]]; then
- num_jobs=1
- fi
- # fi
- wait_for_jobs $num_jobs
+ local -i num_jobs=$NUM_JOBS_TO_RUN_IN_PARALLEL
+ # Don't override command line input.
+ # if [[ "$BUILD_ONLY" == True ]]; then
+ # num_jobs=8
+ # else
+ if [[ "$compiler" == cuda* ]]; then
+ num_jobs=1
+ fi
+ # fi
+ wait_for_jobs $num_jobs
- single_build_and_test $* &
+ single_build_and_test $* &
}
# build_and_test_all
build_and_test_all() {
- # Get compiler data
- local compiler=$1
- if [ -z "$CUSTOM_BUILD_LIST" ]; then
- local compiler_build_list=$(get_compiler_build_list $compiler)
- else
- local compiler_build_list=$(echo "$CUSTOM_BUILD_LIST" | tr , ' ')
+ # Get compiler data.
+ local compiler=$1
+ if [ -z "$CUSTOM_BUILD_LIST" ]; then
+ local compiler_build_list=$(get_compiler_build_list $compiler)
+ else
+ local compiler_build_list=$(echo "$CUSTOM_BUILD_LIST" | tr , ' ')
+ fi
+
+ # Do builds.
+ local build
+ for build in $compiler_build_list
+ do
+ run_in_background $compiler $build $BUILD_TYPE
+
+ # If not cuda, do a hwloc test too.
+ if [[ "$compiler" != cuda* && "$SKIP_HWLOC" == False ]]; then
+ run_in_background $compiler $build "hwloc-$BUILD_TYPE"
fi
+ done
- # do builds
- local build
- for build in $compiler_build_list
- do
- run_in_background $compiler $build $BUILD_TYPE
-
- # If not cuda, do a hwloc test too
- if [[ "$compiler" != cuda* && "$SKIP_HWLOC" == False ]]; then
- run_in_background $compiler $build "hwloc-$BUILD_TYPE"
- fi
- done
-
- return 0
+ return 0
}
get_test_root_dir() {
- local existing_results=$(find . -maxdepth 1 -name "$RESULT_ROOT_PREFIX*" | sort)
- local -i num_existing_results=$(echo $existing_results | tr ' ' '\n' | wc -l)
- local -i num_to_delete=${num_existing_results}-${NUM_RESULTS_TO_KEEP}
+ local existing_results=$(find . -maxdepth 1 -name "$RESULT_ROOT_PREFIX*" | sort)
+ local -i num_existing_results=$(echo $existing_results | tr ' ' '\n' | wc -l)
+ local -i num_to_delete=${num_existing_results}-${NUM_RESULTS_TO_KEEP}
- if [ $num_to_delete -gt 0 ]; then
- /bin/rm -rf $(echo $existing_results | tr ' ' '\n' | head -n $num_to_delete)
- fi
+ if [ $num_to_delete -gt 0 ]; then
+ /bin/rm -rf $(echo $existing_results | tr ' ' '\n' | head -n $num_to_delete)
+ fi
- echo $(pwd)/${RESULT_ROOT_PREFIX}_$(date +"%Y-%m-%d_%H.%M.%S")
+ echo $(pwd)/${RESULT_ROOT_PREFIX}_$(date +"%Y-%m-%d_%H.%M.%S")
}
wait_summarize_and_exit() {
- wait_for_jobs 1
+ wait_for_jobs 1
- echo "#######################################################"
- echo "PASSED TESTS"
- echo "#######################################################"
+ echo "#######################################################"
+ echo "PASSED TESTS"
+ echo "#######################################################"
- local passed_test
- for passed_test in $(\ls -1 $PASSED_DIR | sort)
- do
- echo $passed_test $(cat $PASSED_DIR/$passed_test)
- done
+ local passed_test
+ for passed_test in $(\ls -1 $PASSED_DIR | sort)
+ do
+ echo $passed_test $(cat $PASSED_DIR/$passed_test)
+ done
- echo "#######################################################"
- echo "FAILED TESTS"
- echo "#######################################################"
+ echo "#######################################################"
+ echo "FAILED TESTS"
+ echo "#######################################################"
- local failed_test
- local -i rv=0
- for failed_test in $(\ls -1 $FAILED_DIR | sort)
- do
- echo $failed_test "("$(cat $FAILED_DIR/$failed_test)" failed)"
- rv=$rv+1
- done
+ local failed_test
+ local -i rv=0
+ for failed_test in $(\ls -1 $FAILED_DIR | sort)
+ do
+ echo $failed_test "("$(cat $FAILED_DIR/$failed_test)" failed)"
+ rv=$rv+1
+ done
- exit $rv
+ exit $rv
}
#
-# Main
+# Main.
#
ROOT_DIR=$(get_test_root_dir)
@@ -669,8 +707,8 @@ mkdir -p $FAILED_DIR
echo "Going to test compilers: " $COMPILERS_TO_TEST
for COMPILER in $COMPILERS_TO_TEST; do
- echo "Testing compiler $COMPILER"
- build_and_test_all $COMPILER
+ echo "Testing compiler $COMPILER"
+ build_and_test_all $COMPILER
done
wait_summarize_and_exit
diff --git a/lib/kokkos/containers/src/Kokkos_DynamicView.hpp b/lib/kokkos/containers/src/Kokkos_DynamicView.hpp
index 3277c007d0..53e0eab693 100644
--- a/lib/kokkos/containers/src/Kokkos_DynamicView.hpp
+++ b/lib/kokkos/containers/src/Kokkos_DynamicView.hpp
@@ -60,7 +60,7 @@ class DynamicView : public Kokkos::ViewTraits< DataType , P ... >
{
public:
- typedef ViewTraits< DataType , P ... > traits ;
+ typedef Kokkos::ViewTraits< DataType , P ... > traits ;
private:
@@ -123,30 +123,41 @@ public:
enum { Rank = 1 };
- KOKKOS_INLINE_FUNCTION constexpr size_t size() const
+ KOKKOS_INLINE_FUNCTION
+ size_t size() const noexcept
{
- return
- Kokkos::Impl::MemorySpaceAccess
- < Kokkos::Impl::ActiveExecutionMemorySpace
- , typename traits::memory_space
- >::accessible
- ? // Runtime size is at the end of the chunk pointer array
- (*reinterpret_cast( m_chunks + m_chunk_max ))
- << m_chunk_shift
- : 0 ;
+ uintptr_t n = 0 ;
+
+ if ( Kokkos::Impl::MemorySpaceAccess
+ < Kokkos::Impl::ActiveExecutionMemorySpace
+ , typename traits::memory_space
+ >::accessible ) {
+ n = *reinterpret_cast( m_chunks + m_chunk_max );
+ }
+#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST )
+ else {
+ Kokkos::Impl::DeepCopy< Kokkos::HostSpace
+ , typename traits::memory_space
+ , Kokkos::HostSpace::execution_space >
+ ( & n
+ , reinterpret_cast( m_chunks + m_chunk_max )
+ , sizeof(uintptr_t) );
+ }
+#endif
+ return n << m_chunk_shift ;
}
template< typename iType >
- KOKKOS_INLINE_FUNCTION constexpr
+ KOKKOS_INLINE_FUNCTION
size_t extent( const iType & r ) const
{ return r == 0 ? size() : 1 ; }
template< typename iType >
- KOKKOS_INLINE_FUNCTION constexpr
+ KOKKOS_INLINE_FUNCTION
size_t extent_int( const iType & r ) const
{ return r == 0 ? size() : 1 ; }
- KOKKOS_INLINE_FUNCTION constexpr size_t dimension_0() const { return size(); }
+ KOKKOS_INLINE_FUNCTION size_t dimension_0() const { return size(); }
KOKKOS_INLINE_FUNCTION constexpr size_t dimension_1() const { return 1 ; }
KOKKOS_INLINE_FUNCTION constexpr size_t dimension_2() const { return 1 ; }
KOKKOS_INLINE_FUNCTION constexpr size_t dimension_3() const { return 1 ; }
@@ -270,10 +281,18 @@ public:
}
/** \brief Resizing in serial can grow or shrink the array size, */
+ template< typename IntType >
inline
- void resize_serial( size_t n )
+ typename std::enable_if
+ < std::is_integral::value &&
+ Kokkos::Impl::MemorySpaceAccess< Kokkos::HostSpace
+ , typename traits::memory_space
+ >::accessible
+ >::type
+ resize_serial( IntType const & n )
{
- DynamicView::template verify_space< Kokkos::Impl::ActiveExecutionMemorySpace >::check();
+ typedef typename traits::value_type value_type ;
+ typedef value_type * pointer_type ;
const uintptr_t NC = ( n + m_chunk_mask ) >> m_chunk_shift ;
@@ -286,8 +305,8 @@ public:
if ( *pc < NC ) {
while ( *pc < NC ) {
- m_chunks[*pc] =
- m_pool.allocate( sizeof(traits::value_type) << m_chunk_shift );
+ m_chunks[*pc] = reinterpret_cast
+ ( m_pool.allocate( sizeof(value_type) << m_chunk_shift ) );
++*pc ;
}
}
@@ -295,12 +314,90 @@ public:
while ( NC + 1 <= *pc ) {
--*pc ;
m_pool.deallocate( m_chunks[*pc]
- , sizeof(traits::value_type) << m_chunk_shift );
+ , sizeof(value_type) << m_chunk_shift );
m_chunks[*pc] = 0 ;
}
}
}
+ //----------------------------------------
+
+ struct ResizeSerial {
+ memory_pool m_pool ;
+ typename traits::value_type ** m_chunks ;
+ uintptr_t * m_pc ;
+ uintptr_t m_nc ;
+ unsigned m_chunk_shift ;
+
+ KOKKOS_INLINE_FUNCTION
+ void operator()( int ) const
+ {
+ typedef typename traits::value_type value_type ;
+ typedef value_type * pointer_type ;
+
+ if ( *m_pc < m_nc ) {
+ while ( *m_pc < m_nc ) {
+ m_chunks[*m_pc] = reinterpret_cast
+ ( m_pool.allocate( sizeof(value_type) << m_chunk_shift ) );
+ ++*m_pc ;
+ }
+ }
+ else {
+ while ( m_nc + 1 <= *m_pc ) {
+ --*m_pc ;
+ m_pool.deallocate( m_chunks[*m_pc]
+ , sizeof(value_type) << m_chunk_shift );
+ m_chunks[*m_pc] = 0 ;
+ }
+ }
+ }
+
+ ResizeSerial( memory_pool const & arg_pool
+ , typename traits::value_type ** arg_chunks
+ , uintptr_t * arg_pc
+ , uintptr_t arg_nc
+ , unsigned arg_chunk_shift
+ )
+ : m_pool( arg_pool )
+ , m_chunks( arg_chunks )
+ , m_pc( arg_pc )
+ , m_nc( arg_nc )
+ , m_chunk_shift( arg_chunk_shift )
+ {}
+ };
+
+ template< typename IntType >
+ inline
+ typename std::enable_if
+ < std::is_integral::value &&
+ ! Kokkos::Impl::MemorySpaceAccess< Kokkos::HostSpace
+ , typename traits::memory_space
+ >::accessible
+ >::type
+ resize_serial( IntType const & n )
+ {
+ const uintptr_t NC = ( n + m_chunk_mask ) >> m_chunk_shift ;
+
+ if ( m_chunk_max < NC ) {
+ Kokkos::abort("DynamicView::resize_serial exceeded maximum size");
+ }
+
+ // Must dispatch kernel
+
+ typedef Kokkos::RangePolicy< typename traits::execution_space > Range ;
+
+ uintptr_t * const pc =
+ reinterpret_cast( m_chunks + m_chunk_max );
+
+ Kokkos::Impl::ParallelFor
+ closure( ResizeSerial( m_pool, m_chunks, pc, NC, m_chunk_shift )
+ , Range(0,1) );
+
+ closure.execute();
+
+ traits::execution_space::fence();
+ }
+
//----------------------------------------------------------------------
~DynamicView() = default ;
@@ -311,15 +408,17 @@ public:
DynamicView & operator = ( const DynamicView & ) = default ;
template< class RT , class ... RP >
- KOKKOS_INLINE_FUNCTION
DynamicView( const DynamicView