From 5e6dff36e4e12ff93228009abba034607a6d4734 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer
Date: Thu, 1 Sep 2016 02:01:47 -0400
Subject: [PATCH 01/52] add new commands to lammps.book
---
doc/lammps.book | 2 ++
1 file changed, 2 insertions(+)
diff --git a/doc/lammps.book b/doc/lammps.book
index f768cdc7d3..f28bb48b56 100644
--- a/doc/lammps.book
+++ b/doc/lammps.book
@@ -148,6 +148,7 @@ fix_bond_create.html
fix_bond_swap.html
fix_box_relax.html
fix_colvars.html
+fix_controller.html
fix_deform.html
fix_deposit.html
fix_drag.html
@@ -162,6 +163,7 @@ fix_eos_table.html
fix_eos_table_rx.html
fix_evaporate.html
fix_external.html
+fix_flow_gauss.html
fix_freeze.html
fix_gcmc.html
fix_gld.html
--
GitLab
From fc093a0aab1760e1edf30c968516f9b95f6720d6 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer
Date: Thu, 1 Sep 2016 02:07:16 -0400
Subject: [PATCH 02/52] replace :ule,l and :ole,l with :l
:ule and
:l
:ole
---
doc/src/Manual.txt | 3 ++-
doc/src/Section_accelerate.txt | 5 +++--
doc/src/Section_intro.txt | 3 ++-
doc/src/Section_perf.txt | 3 ++-
doc/src/dihedral_harmonic.txt | 3 ++-
doc/src/dump_image.txt | 3 ++-
doc/src/suffix.txt | 3 ++-
doc/src/tutorial_drude.txt | 6 ++++--
8 files changed, 19 insertions(+), 10 deletions(-)
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index adf6b5c47e..f4ff4542aa 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -47,7 +47,8 @@ it to be part of every patch. :l
There is also a "Developer.pdf"_Developer.pdf file in the doc
directory, which describes the internal structure and algorithms of
-LAMMPS. :ule,l
+LAMMPS. :l
+:ule
LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel
Simulator.
diff --git a/doc/src/Section_accelerate.txt b/doc/src/Section_accelerate.txt
index 9977853b43..e002cbb5f9 100644
--- a/doc/src/Section_accelerate.txt
+++ b/doc/src/Section_accelerate.txt
@@ -28,8 +28,9 @@ multi-core CPUs, GPUs, and Intel Xeon Phi coprocessors.
5.3.2 "USER-INTEL package"_accelerate_intel.html :l
5.3.3 "KOKKOS package"_accelerate_kokkos.html :l
5.3.4 "USER-OMP package"_accelerate_omp.html :l
- 5.3.5 "OPT package"_accelerate_opt.html :l,ule
-5.4 "Comparison of various accelerator packages"_#acc_4 :l,ule
+ 5.3.5 "OPT package"_accelerate_opt.html :l
+5.4 "Comparison of various accelerator packages"_#acc_4 :l
+:ule
The "Benchmark page"_http://lammps.sandia.gov/bench.html of the LAMMPS
web site gives performance results for the various accelerator
diff --git a/doc/src/Section_intro.txt b/doc/src/Section_intro.txt
index 99751a13ff..089921d45d 100644
--- a/doc/src/Section_intro.txt
+++ b/doc/src/Section_intro.txt
@@ -460,7 +460,8 @@ Site"_lws. It might be added to the page. No promises. :l
Cash. Small denominations, unmarked bills preferred. Paper sack OK.
Leave on desk. VISA also accepted. Chocolate chip cookies
-encouraged. :ule,l
+encouraged. :l
+:ule
:line
diff --git a/doc/src/Section_perf.txt b/doc/src/Section_perf.txt
index d1cafa0bda..fc59dbe1dc 100644
--- a/doc/src/Section_perf.txt
+++ b/doc/src/Section_perf.txt
@@ -36,7 +36,8 @@ sigma cutoff (7 neighbors per atom), NVE integration :l
Rhodo = rhodopsin protein in solvated lipid bilayer, CHARMM force
field with a 10 Angstrom LJ cutoff (440 neighbors per atom),
particle-particle particle-mesh (PPPM) for long-range Coulombics, NPT
-integration :ole,l
+integration :l
+:ole
Input files for these 5 problems are provided in the bench directory
of the LAMMPS distribution. Each has 32,000 atoms and runs for 100
diff --git a/doc/src/dihedral_harmonic.txt b/doc/src/dihedral_harmonic.txt
index ac124ffd48..1de4370a46 100644
--- a/doc/src/dihedral_harmonic.txt
+++ b/doc/src/dihedral_harmonic.txt
@@ -45,7 +45,8 @@ in some force fields trans = 0 degrees. :ulb,l
Some force fields reverse the sign convention on {d}. :l
Some force fields let {n} be positive or negative which corresponds to
-{d} = 1 or -1 for the harmonic style. :ule,l
+{d} = 1 or -1 for the harmonic style. :l
+:ule
:line
diff --git a/doc/src/dump_image.txt b/doc/src/dump_image.txt
index 826c3f992b..2f2ca4809b 100644
--- a/doc/src/dump_image.txt
+++ b/doc/src/dump_image.txt
@@ -598,7 +598,8 @@ obviously play movie files directly. Similarly for corresponding tools
bundled with Linux desktop environments. However, due to licensing
issues with some file formats, the formats may require installing
additional libraries, purchasing a license, or may not be
-supported. :ule,l
+supported. :l
+:ule
:line
diff --git a/doc/src/suffix.txt b/doc/src/suffix.txt
index 51aead3f37..7450d27baf 100644
--- a/doc/src/suffix.txt
+++ b/doc/src/suffix.txt
@@ -59,7 +59,8 @@ multi-threading :l
OPT = a handful of pair styles, cache-optimized for faster CPU
performance :l
-HYBRID = a combination of two packages can be specified (see below) :ule,l
+HYBRID = a combination of two packages can be specified (see below) :l
+:ule
As an example, all of the packages provide a "pair_style
lj/cut"_pair_lj.html variant, with style names lj/cut/opt, lj/cut/omp,
diff --git a/doc/src/tutorial_drude.txt b/doc/src/tutorial_drude.txt
index 3ab8afcae3..a6080fef27 100644
--- a/doc/src/tutorial_drude.txt
+++ b/doc/src/tutorial_drude.txt
@@ -67,7 +67,8 @@ for all Drude particles, and to calculate the force constant for each \
type of core-Drude bond from equation (1). The timesteps used by these \
authors are between 0.5 and 2 fs, with the degrees of freedom of the \
Drude oscillators kept cold at 1 K. :l
-In both these force fields hydrogen atoms are treated as non-polarizable. :ule,l
+In both these force fields hydrogen atoms are treated as non-polarizable. :l
+:ule
The motion of of the Drude particles can be calculated by minimizing
@@ -104,7 +105,8 @@ due to the short distances, so an atom may capture the Drude particle \
(shell) of a neighbor, or the induced dipoles within the same molecule \
may align too much. To avoid this, damping at short of the \
interactions between the point charges composing the induced dipole \
-can be done by "Thole"_#Thole functions. :ole,l
+can be done by "Thole"_#Thole functions. :l
+:ole
:line
--
GitLab
From ab84acc2cdfc77a9018014d22eb7a632d1afa7f2 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer
Date: Thu, 1 Sep 2016 02:26:49 -0400
Subject: [PATCH 03/52] synchronize LAMMPS developer list with webpage and move
ray to "past"
---
doc/html/Manual.html | 15 ++++++++++-----
doc/src/Manual.txt | 17 ++++++++++++-----
2 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/doc/html/Manual.html b/doc/html/Manual.html
index 5c7ec2f31d..7c9ef3678f 100644
--- a/doc/html/Manual.html
+++ b/doc/html/Manual.html
@@ -166,11 +166,16 @@ run efficiently on parallel computers. It was developed at Sandia
National Laboratories, a US Department of Energy facility, with
funding from the DOE. It is an open-source code, distributed freely
under the terms of the GNU Public License (GPL).
-The primary developers of LAMMPS are Steve Plimpton, Aidan
-Thompson, and Paul Crozier who can be contacted at
-sjplimp,athomps,pscrozi at sandia.gov. The LAMMPS WWW Site at
-http://lammps.sandia.gov has more information about the code and its
-uses.
+The core group of LAMMPS developers is at Sandia National Labs and Temple University:
+
+- Steve Plimpton, sjplimp at sandia.gov
+- Aidan Thompson, athomps at sandia.gov
+- Stan Moore, stamoore at sandia.gov
+- Axel Kohlmeyer, akohlmey at gmail.com
+
+Past core developers include Paul Crozier, Ray Shan and Mark Stevens, all at Sandia.
+The LAMMPS WWW Site at “http://lammps.sandia.gov:_http://lammps.sandia.gov
+has more information about the code and its uses.
The LAMMPS documentation is organized into the following sections. If
you find errors or omissions in this manual or have suggestions for
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index f4ff4542aa..6b6760c3dc 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -59,14 +59,21 @@ National Laboratories, a US Department of Energy facility, with
funding from the DOE. It is an open-source code, distributed freely
under the terms of the GNU Public License (GPL).
-The primary developers of LAMMPS are "Steve Plimpton"_sjp, Aidan
-Thompson, and Paul Crozier who can be contacted at
-sjplimp,athomps,pscrozi at sandia.gov. The "LAMMPS WWW Site"_lws at
-http://lammps.sandia.gov has more information about the code and its
-uses.
+The core group of LAMMPS developers is at Sandia National Labs and Temple University:
+
+"Steve Plimpton"_sjp, sjplimp at sandia.gov :ulb,l
+Aidan Thompson, athomps at sandia.gov :l
+Stan Moore, stamoore at sandia.gov :l
+"Axel Kohlmeyer"_ako, akohlmey at gmail.com :l
+:ulb
+
+Past core developers include Paul Crozier, Ray Shan and Mark Stevens, all at Sandia.
+The "LAMMPS WWW Site"_lws at "http://lammps.sandia.gov:_http://lammps.sandia.gov
+has more information about the code and its uses.
:link(bug,http://lammps.sandia.gov/bug.html)
:link(sjp,http://www.sandia.gov/~sjplimp)
+:link(ako,http://goo.gl/1wk0)
:line
--
GitLab
From 431d1a6dae03584491ae2194717492400d57f185 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer
Date: Thu, 1 Sep 2016 02:37:55 -0400
Subject: [PATCH 04/52] mention stable releases
---
doc/html/Manual.html | 6 ++++--
doc/src/Manual.txt | 7 +++++--
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/doc/html/Manual.html b/doc/html/Manual.html
index 7c9ef3678f..bcee2c07fd 100644
--- a/doc/html/Manual.html
+++ b/doc/html/Manual.html
@@ -141,7 +141,9 @@
Version info:
The LAMMPS “version” is the date when it was released, such as 1 May
2010. LAMMPS is updated continuously. Whenever we fix a bug or add a
-feature, we release it immediately, and post a notice on this page of the WWW site. Each dated copy of LAMMPS contains all the
+feature, we release it immediately, and post a notice on this page of the WWW site. Every 2-4 months one of the incremental releases
+is subjected to more thorough testing and labeled as a stable version.
+Each dated copy of LAMMPS contains all the
features and bug-fixes up to and including that version date. The
version date is printed to the screen and logfile every time you run
LAMMPS. It is also in the file src/version.h and in the LAMMPS
@@ -174,7 +176,7 @@ under the terms of the GNU Public License (GPL).
Axel Kohlmeyer, akohlmey at gmail.com
Past core developers include Paul Crozier, Ray Shan and Mark Stevens, all at Sandia.
-The LAMMPS WWW Site at “http://lammps.sandia.gov:_http://lammps.sandia.gov
+The LAMMPS home page at http://lammps.sandia.gov
has more information about the code and its uses.
The LAMMPS documentation is organized into the following sections. If
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 6b6760c3dc..e53fddef7d 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -28,7 +28,10 @@ Version info: :h4
The LAMMPS "version" is the date when it was released, such as 1 May
2010. LAMMPS is updated continuously. Whenever we fix a bug or add a
feature, we release it immediately, and post a notice on "this page of
-the WWW site"_bug. Each dated copy of LAMMPS contains all the
+the WWW site"_bug. Every 2-4 months one of the incremental releases
+is subjected to more thorough testing and labeled as a {stable} version.
+
+Each dated copy of LAMMPS contains all the
features and bug-fixes up to and including that version date. The
version date is printed to the screen and logfile every time you run
LAMMPS. It is also in the file src/version.h and in the LAMMPS
@@ -68,7 +71,7 @@ Stan Moore, stamoore at sandia.gov :l
:ulb
Past core developers include Paul Crozier, Ray Shan and Mark Stevens, all at Sandia.
-The "LAMMPS WWW Site"_lws at "http://lammps.sandia.gov:_http://lammps.sandia.gov
+The [LAMMPS home page] at "http://lammps.sandia.gov"_http://lammps.sandia.gov
has more information about the code and its uses.
:link(bug,http://lammps.sandia.gov/bug.html)
--
GitLab
From 4314299be91001cdce758d041476c9507d7b56b3 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer
Date: Tue, 6 Sep 2016 14:50:04 -0400
Subject: [PATCH 05/52] harden fix shear/history against use-after-delete and
from incorrect use of reverse communication
---
src/fix_shear_history.cpp | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/fix_shear_history.cpp b/src/fix_shear_history.cpp
index 2577c16be8..8e8c1bb53b 100644
--- a/src/fix_shear_history.cpp
+++ b/src/fix_shear_history.cpp
@@ -29,13 +29,13 @@
using namespace LAMMPS_NS;
using namespace FixConst;
-enum{NPARTNER,PERPARTNER};
+enum{DEFAULT,NPARTNER,PERPARTNER};
/* ---------------------------------------------------------------------- */
FixShearHistory::FixShearHistory(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg),
- npartner(NULL), partner(NULL), shearpartner(NULL), ipage(NULL), dpage(NULL)
+ npartner(NULL), partner(NULL), shearpartner(NULL), pair(NULL), ipage(NULL), dpage(NULL)
{
if (narg != 4) error->all(FLERR,"Illegal fix SHEAR_HISTORY commmand");
@@ -71,6 +71,7 @@ FixShearHistory::FixShearHistory(LAMMPS *lmp, int narg, char **arg) :
maxtouch = 0;
nlocal_neigh = nall_neigh = 0;
+ commflag = DEFAULT;
}
/* ---------------------------------------------------------------------- */
@@ -87,6 +88,14 @@ FixShearHistory::~FixShearHistory()
memory->destroy(npartner);
memory->sfree(partner);
memory->sfree(shearpartner);
+
+ // to better detect use-after-delete errors
+
+ pair = NULL;
+ npartner = NULL;
+ partner = NULL;
+ shearpartner = NULL;
+
delete [] ipage;
delete [] dpage;
}
@@ -609,7 +618,7 @@ int FixShearHistory::pack_reverse_comm(int n, int first, double *buf)
m += dnum;
}
}
- }
+ } else error->all(FLERR,"Unsupported comm mode in shear history");
return m;
}
@@ -640,7 +649,7 @@ void FixShearHistory::unpack_reverse_comm(int n, int *list, double *buf)
m += dnum;
}
}
- }
+ } else error->all(FLERR,"Unsupported comm mode in shear history");
}
/* ----------------------------------------------------------------------
--
GitLab
From fc2d878305382c1760c71422f093cc7f49fdb6d6 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer
Date: Tue, 6 Sep 2016 21:20:47 -0400
Subject: [PATCH 06/52] update manual introduction to represent current status.
correct some markup to better pass through sphinx
---
doc/html/Manual.html | 12 ++++---
doc/html/Section_accelerate.html | 54 +++++++++++---------------------
doc/html/Section_howto.html | 2 +-
doc/src/Manual.txt | 12 ++++---
doc/src/Section_accelerate.txt | 31 +++++++++---------
doc/src/Section_howto.txt | 8 +++--
6 files changed, 55 insertions(+), 64 deletions(-)
diff --git a/doc/html/Manual.html b/doc/html/Manual.html
index 84440161a1..2281f57fbd 100644
--- a/doc/html/Manual.html
+++ b/doc/html/Manual.html
@@ -168,16 +168,20 @@ run efficiently on parallel computers. It was developed at Sandia
National Laboratories, a US Department of Energy facility, with
funding from the DOE. It is an open-source code, distributed freely
under the terms of the GNU Public License (GPL).
-The core group of LAMMPS developers is at Sandia National Labs and Temple University:
+The current core group of LAMMPS developers is at Sandia National
+Labs and Temple University:
- Steve Plimpton, sjplimp at sandia.gov
- Aidan Thompson, athomps at sandia.gov
- Stan Moore, stamoore at sandia.gov
- Axel Kohlmeyer, akohlmey at gmail.com
-Past core developers include Paul Crozier, Ray Shan and Mark Stevens, all at Sandia.
-The LAMMPS home page at http://lammps.sandia.gov
-has more information about the code and its uses.
+Past core developers include Paul Crozier, Ray Shan and Mark Stevens,
+all at Sandia. The LAMMPS home page at
+http://lammps.sandia.gov has more information
+about the code and its uses. Interaction with external LAMMPS developers,
+bug reports and feature requests are mainly coordinated through the
+LAMMPS project on GitHub.
The LAMMPS documentation is organized into the following sections. If
you find errors or omissions in this manual or have suggestions for
diff --git a/doc/html/Section_accelerate.html b/doc/html/Section_accelerate.html
index 9fcd094369..331ea71448 100644
--- a/doc/html/Section_accelerate.html
+++ b/doc/html/Section_accelerate.html
@@ -346,8 +346,8 @@ package and are explained in the individual accelerator doc pages,
listed above:
-
-
+
+
| build the accelerator library |
@@ -356,40 +356,24 @@ listed above:
| install the accelerator package |
make yes-opt, make yes-user-intel, etc |
-
-
-
-
install the accelerator package | make yes-opt, make yes-user-intel, etc |
-
-
-only for USER-INTEL, KOKKOS, USER-OMP, OPT packages |
-
-
-
-
-
-
-| re-build LAMMPS |
+
| add compile/link flags to Makefile.machine in src/MAKE |
+only for USER-INTEL, KOKKOS, USER-OMP, OPT packages |
+
+| re-build LAMMPS |
make machine |
-
-
-
-
re-build LAMMPS | make machine |
-
-
-mpirun -np 32 lmp_machine -in in.script |
-
-only for KOKKOS package |
-
-package command, <br>
-only if defaults need to be changed |
-
-
-
-
-
-
+| prepare and test a regular LAMMPS simulation |
+lmp_machine -in in.script; mpirun -np 32 lmp_machine -in in.script |
+
+| enable specific accelerator support via ‘-k on’ command-line switch, |
+only needed for KOKKOS package |
+
+| set any needed options for the package via “-pk” command-line switch or package command, |
+only if defaults need to be changed |
+
+| use accelerated styles in your input via “-sf” command-line switch or suffix command |
+lmp_machine -in in.script -sf gpu |
+
Note that the first 4 steps can be done as a single command, using the
@@ -528,7 +512,7 @@ full 16 lanes to each of the PCIe 2.0 16x slots.
The GPU package accelerates only pair force, neighbor list, and PPPM
calculations.
The GPU package requires neighbor lists to be built on the CPU when using
-exclusion lists or a triclinic simulation box.
+exclusion lists, hybrid pair styles, or a triclinic simulation box.
diff --git a/doc/html/Section_howto.html b/doc/html/Section_howto.html
index d29a4556f4..9ea709012e 100644
--- a/doc/html/Section_howto.html
+++ b/doc/html/Section_howto.html
@@ -933,7 +933,7 @@ vectors of a general parallelepiped, where there is no restriction on
A x B . C > 0. The equivalent LAMMPS a,b,c are a linear
rotation of A, B, and C and can be computed as follows:
-where A = |A| indicates the scalar length of A. The ^ hat symbol
+
where A = |A| indicates the scalar length of A. The hat symbol
indicates the corresponding unit vector. beta and gamma are angles
between the vectors described below. Note that by construction,
a, b, and c have strictly positive x, y, and z components, respectively.
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index afbb824fd7..ab82bb0716 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -62,7 +62,8 @@ National Laboratories, a US Department of Energy facility, with
funding from the DOE. It is an open-source code, distributed freely
under the terms of the GNU Public License (GPL).
-The core group of LAMMPS developers is at Sandia National Labs and Temple University:
+The current core group of LAMMPS developers is at Sandia National
+Labs and Temple University:
"Steve Plimpton"_sjp, sjplimp at sandia.gov :ulb,l
Aidan Thompson, athomps at sandia.gov :l
@@ -70,9 +71,12 @@ Stan Moore, stamoore at sandia.gov :l
"Axel Kohlmeyer"_ako, akohlmey at gmail.com :l
:ulb
-Past core developers include Paul Crozier, Ray Shan and Mark Stevens, all at Sandia.
-The [LAMMPS home page] at "http://lammps.sandia.gov"_http://lammps.sandia.gov
-has more information about the code and its uses.
+Past core developers include Paul Crozier, Ray Shan and Mark Stevens,
+all at Sandia. The [LAMMPS home page] at
+"http://lammps.sandia.gov"_http://lammps.sandia.gov has more information
+about the code and its uses. Interaction with external LAMMPS developers,
+bug reports and feature requests are mainly coordinated through the
+"LAMMPS project on GitHub."_https://github.com/lammps/lammps
:link(bug,http://lammps.sandia.gov/bug.html)
:link(sjp,http://www.sandia.gov/~sjplimp)
diff --git a/doc/src/Section_accelerate.txt b/doc/src/Section_accelerate.txt
index e002cbb5f9..9489dee160 100644
--- a/doc/src/Section_accelerate.txt
+++ b/doc/src/Section_accelerate.txt
@@ -206,24 +206,18 @@ build the accelerator library |
only for GPU package |
install the accelerator package |
make yes-opt, make yes-user-intel, etc |
-add compile/link flags to Makefile.machine |
- in src/MAKE,
+add compile/link flags to Makefile.machine in src/MAKE |
only for USER-INTEL, KOKKOS, USER-OMP, OPT packages |
re-build LAMMPS |
make machine |
-run a LAMMPS simulation |
- lmp_machine < in.script
- mpirun -np 32 lmp_machine -in in.script |
-enable the accelerator package |
- via "-c on" and "-k on" "command-line switches"_Section_start.html#start_7,
- only for KOKKOS package |
-set any needed options for the package |
- via "-pk" "command-line switch"_Section_start.html#start_7 or
- "package"_package.html command,
+prepare and test a regular LAMMPS simulation |
+ lmp_machine -in in.script; mpirun -np 32 lmp_machine -in in.script |
+enable specific accelerator support via '-k on' "command-line switch"_Section_start.html#start_7, |
+ only needed for KOKKOS package |
+set any needed options for the package via "-pk" "command-line switch"_Section_start.html#start_7 or "package"_package.html command, |
only if defaults need to be changed |
-use accelerated styles in your input script |
- via "-sf" "command-line switch"_Section_start.html#start_7 or
- "suffix"_suffix.html command :tb(c=2,s=|)
+use accelerated styles in your input via "-sf" "command-line switch"_Section_start.html#start_7 or "suffix"_suffix.html command | lmp_machine -in in.script -sf gpu
+:tb(c=2,s=|)
Note that the first 4 steps can be done as a single command, using the
src/Make.py tool. This tool is discussed in "Section
@@ -303,7 +297,8 @@ overload the available bandwidth for communication. :l
Styles with an "opt" suffix are part of the OPT package and typically
speed-up the pairwise calculations of your simulation by 5-25% on a
-CPU. :l,ule
+CPU. :l
+:ule
The individual accelerator package doc pages explain:
@@ -369,7 +364,8 @@ and the GPU. Hence its performance is affected if full 16 PCIe lanes
are not available for each GPU. In HPC environments this can be the
case if S2050/70 servers are used, where two devices generally share
one PCIe 2.0 16x slot. Also many multi-GPU mainboards do not provide
-full 16 lanes to each of the PCIe 2.0 16x slots. :l,ule
+full 16 lanes to each of the PCIe 2.0 16x slots. :l
+:ule
[Differences between the two packages:]
@@ -377,4 +373,5 @@ The GPU package accelerates only pair force, neighbor list, and PPPM
calculations. :ulb,l
The GPU package requires neighbor lists to be built on the CPU when using
-exclusion lists or a triclinic simulation box. :l,ule
+exclusion lists, hybrid pair styles, or a triclinic simulation box. :l
+:ule
diff --git a/doc/src/Section_howto.txt b/doc/src/Section_howto.txt
index 13798f8f88..f3283c8360 100644
--- a/doc/src/Section_howto.txt
+++ b/doc/src/Section_howto.txt
@@ -695,7 +695,8 @@ MD with quantum forces calculated by a density functional code :l
lammps_spparks: coupling of LAMMPS and "SPPARKS"_spparks, to couple
a kinetic Monte Carlo model for grain growth using MD to calculate
-strain induced across grain boundaries :l,ule
+strain induced across grain boundaries :l
+:ule
:link(quest,http://dft.sandia.gov/Quest)
:link(spparks,http://www.sandia.gov/~sjplimp/spparks.html)
@@ -829,7 +830,7 @@ rotation of [A], [B], and [C] and can be computed as follows:
:c,image(Eqs/transform.jpg)
-where A = |[A]| indicates the scalar length of [A]. The ^ hat symbol
+where A = |[A]| indicates the scalar length of [A]. The hat symbol
indicates the corresponding unit vector. {beta} and {gamma} are angles
between the vectors described below. Note that by construction,
[a], [b], and [c] have strictly positive x, y, and z components, respectively.
@@ -1286,7 +1287,8 @@ print"_fix_print.html for single-line output of
"variables"_variable.html. Fix print can also output to the
screen. :l
-"Restart files"_restart.html. :l,ule
+"Restart files"_restart.html. :l
+:ule
A simulation prints one set of thermodynamic output and (optionally)
restart files. It can generate any number of dump files and fix
--
GitLab
From f56c41eec047868f3f3ddfb20d995ce4f654384a Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer
Date: Tue, 6 Sep 2016 21:21:28 -0400
Subject: [PATCH 07/52] update with correct error description. sync with
manual.
---
src/SHOCK/fix_append_atoms.h | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/SHOCK/fix_append_atoms.h b/src/SHOCK/fix_append_atoms.h
index 1368d164b6..d9885998be 100644
--- a/src/SHOCK/fix_append_atoms.h
+++ b/src/SHOCK/fix_append_atoms.h
@@ -79,8 +79,7 @@ must be of type m (shrink/minimum).
E: Bad fix ID in fix append/atoms command
-The value of the fix_id for keyword spatial must start with the suffix
-f_.
+The value of the fix_id for keyword spatial must start with 'f_'.
E: Invalid basis setting in fix append/atoms command
--
GitLab
From 77620106a43edce0b41849b0edcb0225b4bfa683 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer
Date: Tue, 6 Sep 2016 21:26:50 -0400
Subject: [PATCH 08/52] update colvars library to version 2016-08-05
(cherry picked from commit 459db2eb6b7b5cb93a6479452ca5959a9a73b112)
# Conflicts:
# doc/src/PDF/colvars-refman-lammps.pdf
---
lib/colvars/colvar.cpp | 65 +++++++++++------------
lib/colvars/colvarbias_abf.cpp | 78 ++++++++++++++++++++++++----
lib/colvars/colvarbias_abf.h | 2 +
lib/colvars/colvarbias_histogram.cpp | 7 ++-
lib/colvars/colvargrid.cpp | 4 +-
lib/colvars/colvargrid.h | 44 ++++++++++++++++
lib/colvars/colvarmodule.h | 2 +-
7 files changed, 152 insertions(+), 50 deletions(-)
diff --git a/lib/colvars/colvar.cpp b/lib/colvars/colvar.cpp
index eec49d1fad..344a9a1301 100644
--- a/lib/colvars/colvar.cpp
+++ b/lib/colvars/colvar.cpp
@@ -1187,40 +1187,6 @@ cvm::real colvar::update_forces_energy()
f -= fj;
}
- if (is_enabled(f_cv_extended_Lagrangian)) {
-
- cvm::real dt = cvm::dt();
- cvm::real f_ext;
-
- // the total force is applied to the fictitious mass, while the
- // atoms only feel the harmonic force
- // fr: bias force on extended coordinate (without harmonic spring), for output in trajectory
- // f_ext: total force on extended coordinate (including harmonic spring)
- // f: - initially, external biasing force
- // - after this code block, colvar force to be applied to atomic coordinates, ie. spring force
- // (note: wall potential is added to f after this block)
- fr = f;
- f_ext = f + (-0.5 * ext_force_k) * this->dist2_lgrad(xr, x);
- f = (-0.5 * ext_force_k) * this->dist2_rgrad(xr, x);
-
- // leapfrog: starting from x_i, f_i, v_(i-1/2)
- vr += (0.5 * dt) * f_ext / ext_mass;
- // Because of leapfrog, kinetic energy at time i is approximate
- kinetic_energy = 0.5 * ext_mass * vr * vr;
- potential_energy = 0.5 * ext_force_k * this->dist2(xr, x);
- // leap to v_(i+1/2)
- if (is_enabled(f_cv_Langevin)) {
- vr -= dt * ext_gamma * vr.real_value;
- vr += dt * ext_sigma * cvm::rand_gaussian() / ext_mass;
- }
- vr += (0.5 * dt) * f_ext / ext_mass;
- xr += dt * vr;
- xr.apply_constraints();
- if (this->b_periodic) this->wrap(xr);
- }
-
-
- // Adding wall potential to "true" colvar force, whether or not an extended coordinate is in use
if (is_enabled(f_cv_lower_wall) || is_enabled(f_cv_upper_wall)) {
// Wall force
@@ -1257,6 +1223,37 @@ cvm::real colvar::update_forces_energy()
}
}
+ if (is_enabled(f_cv_extended_Lagrangian)) {
+
+ cvm::real dt = cvm::dt();
+ cvm::real f_ext;
+
+ // the total force is applied to the fictitious mass, while the
+ // atoms only feel the harmonic force
+ // fr: bias force on extended coordinate (without harmonic spring), for output in trajectory
+ // f_ext: total force on extended coordinate (including harmonic spring)
+ // f: - initially, external biasing force
+ // - after this code block, colvar force to be applied to atomic coordinates, ie. spring force
+ fr = f;
+ f_ext = f + (-0.5 * ext_force_k) * this->dist2_lgrad(xr, x);
+ f = (-0.5 * ext_force_k) * this->dist2_rgrad(xr, x);
+
+ // leapfrog: starting from x_i, f_i, v_(i-1/2)
+ vr += (0.5 * dt) * f_ext / ext_mass;
+ // Because of leapfrog, kinetic energy at time i is approximate
+ kinetic_energy = 0.5 * ext_mass * vr * vr;
+ potential_energy = 0.5 * ext_force_k * this->dist2(xr, x);
+ // leap to v_(i+1/2)
+ if (is_enabled(f_cv_Langevin)) {
+ vr -= dt * ext_gamma * vr.real_value;
+ vr += dt * ext_sigma * cvm::rand_gaussian() / ext_mass;
+ }
+ vr += (0.5 * dt) * f_ext / ext_mass;
+ xr += dt * vr;
+ xr.apply_constraints();
+ if (this->b_periodic) this->wrap(xr);
+ }
+
f_accumulated += f;
if (is_enabled(f_cv_fdiff_velocity)) {
diff --git a/lib/colvars/colvarbias_abf.cpp b/lib/colvars/colvarbias_abf.cpp
index 648ef9e721..475e4ecef0 100644
--- a/lib/colvars/colvarbias_abf.cpp
+++ b/lib/colvars/colvarbias_abf.cpp
@@ -12,6 +12,7 @@ colvarbias_abf::colvarbias_abf(char const *key)
samples(NULL),
z_gradients(NULL),
z_samples(NULL),
+ czar_gradients(NULL),
last_gradients(NULL),
last_samples(NULL)
{
@@ -144,6 +145,7 @@ int colvarbias_abf::init(std::string const &conf)
z_gradients->request_actual_value();
z_gradients->samples = z_samples;
z_samples->has_parent_data = true;
+ czar_gradients = new colvar_grid_gradient(colvars);
}
// For shared ABF, we store a second set of grids.
@@ -178,6 +180,21 @@ colvarbias_abf::~colvarbias_abf()
gradients = NULL;
}
+ if (z_samples) {
+ delete z_samples;
+ z_samples = NULL;
+ }
+
+ if (z_gradients) {
+ delete z_gradients;
+ z_gradients = NULL;
+ }
+
+ if (czar_gradients) {
+ delete czar_gradients;
+ czar_gradients = NULL;
+ }
+
// shared ABF
// We used to only do this if "shared" was defined,
// but now we can call shared externally
@@ -237,7 +254,11 @@ int colvarbias_abf::update()
z_bin[i] = z_samples->current_bin_scalar(i);
}
if ( z_samples->index_ok(z_bin) ) {
- // Set increment flag to 0 to only increment
+ for (size_t i=0; isystem_force();
+ }
z_gradients->acc_force(z_bin, force);
}
}
@@ -404,14 +425,10 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
{
std::string samples_out_name = prefix + ".count";
std::string gradients_out_name = prefix + ".grad";
- std::string z_gradients_out_name = prefix + ".zgrad";
- std::string z_samples_out_name = prefix + ".zcount";
std::ios::openmode mode = (append ? std::ios::app : std::ios::out);
cvm::ofstream samples_os;
cvm::ofstream gradients_os;
- cvm::ofstream z_samples_os;
- cvm::ofstream z_gradients_os;
if (!append) cvm::backup_file(samples_out_name.c_str());
samples_os.open(samples_out_name.c_str(), mode);
@@ -442,6 +459,14 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
}
if (z_gradients) {
+ // Write eABF-related quantities
+ std::string z_samples_out_name = prefix + ".zcount";
+ std::string z_gradients_out_name = prefix + ".zgrad";
+ std::string czar_gradients_out_name = prefix + ".czar";
+ cvm::ofstream z_samples_os;
+ cvm::ofstream z_gradients_os;
+ cvm::ofstream czar_gradients_os;
+
if (!append) cvm::backup_file(z_samples_out_name.c_str());
z_samples_os.open(z_samples_out_name.c_str(), mode);
if (!z_samples_os.is_open()) {
@@ -458,6 +483,24 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
z_gradients->write_multicol(z_gradients_os);
z_gradients_os.close();
+ // Calculate CZAR estimator of gradients
+ for (std::vector ix = czar_gradients->new_index();
+ czar_gradients->index_ok(ix); czar_gradients->incr(ix)) {
+ for (size_t n = 0; n < czar_gradients->multiplicity(); n++) {
+ czar_gradients->set_value(ix, z_gradients->value_output(ix, n)
+ - cvm::temperature() * cvm::boltzmann() * z_samples->log_gradient_finite_diff(ix, n),
+ n);
+ }
+ }
+
+ if (!append) cvm::backup_file(czar_gradients_out_name.c_str());
+ czar_gradients_os.open(czar_gradients_out_name.c_str(), mode);
+ if (!czar_gradients_os.is_open()) {
+ cvm::error("Error opening CZAR gradient file " + czar_gradients_out_name + " for writing");
+ }
+ czar_gradients->write_multicol(czar_gradients_os);
+ czar_gradients_os.close();
+
if (colvars.size() == 1) {
std::string z_pmf_out_name = prefix + ".zpmf";
if (!append) cvm::backup_file(z_pmf_out_name.c_str());
@@ -468,6 +511,16 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
z_gradients->write_1D_integral(z_pmf_os);
z_pmf_os << std::endl;
z_pmf_os.close();
+
+ std::string czar_pmf_out_name = prefix + ".czarpmf";
+ if (!append) cvm::backup_file(czar_pmf_out_name.c_str());
+ cvm::ofstream czar_pmf_os;
+ // Do numerical integration and output a PMF
+ czar_pmf_os.open(czar_pmf_out_name.c_str(), mode);
+ if (!czar_pmf_os.is_open()) cvm::error("Error opening CZAR pmf file " + czar_pmf_out_name + " for writing");
+ czar_gradients->write_1D_integral(czar_pmf_os);
+ czar_pmf_os << std::endl;
+ czar_pmf_os.close();
}
}
@@ -545,24 +598,27 @@ std::ostream & colvarbias_abf::write_restart(std::ostream& os)
{
std::ios::fmtflags flags(os.flags());
- os.setf(std::ios::fmtflags(0), std::ios::floatfield); // default floating-point format
os << "abf {\n"
<< " configuration {\n"
<< " name " << this->name << "\n";
os << " }\n";
- os << "samples\n";
+ os.setf(std::ios::fmtflags(0), std::ios::floatfield); // default floating-point format
+ os << "\nsamples\n";
samples->write_raw(os, 8);
+ os.flags(flags);
os << "\ngradient\n";
- gradients->write_raw(os);
+ gradients->write_raw(os, 8);
if (z_gradients) {
- os << "z_samples\n";
+ os.setf(std::ios::fmtflags(0), std::ios::floatfield); // default floating-point format
+ os << "\nz_samples\n";
z_samples->write_raw(os, 8);
+ os.flags(flags);
os << "\nz_gradient\n";
- z_gradients->write_raw(os);
+ z_gradients->write_raw(os, 8);
}
os << "}\n\n";
@@ -638,7 +694,7 @@ std::istream & colvarbias_abf::read_restart(std::istream& is)
}
if (z_gradients) {
- if ( !(is >> key) || !(key == "z_samples")) {
+ if ( !(is >> key) || !(key == "z_samples")) {
cvm::log("Error: in reading restart configuration for ABF bias \""+
this->name+"\" at position "+
cvm::to_str(is.tellg())+" in stream.\n");
diff --git a/lib/colvars/colvarbias_abf.h b/lib/colvars/colvarbias_abf.h
index 3527eeb63a..18b9a463b5 100644
--- a/lib/colvars/colvarbias_abf.h
+++ b/lib/colvars/colvarbias_abf.h
@@ -60,6 +60,8 @@ private:
colvar_grid_gradient *z_gradients;
/// n-dim grid of number of samples on "real" coordinate for eABF z-based estimator
colvar_grid_count *z_samples;
+ /// n-dim grid contining CZAR estimator of "real" free energy gradients
+ colvar_grid_gradient *czar_gradients;
// shared ABF
bool shared_on;
diff --git a/lib/colvars/colvarbias_histogram.cpp b/lib/colvars/colvarbias_histogram.cpp
index 0d52c18361..542dde2017 100644
--- a/lib/colvars/colvarbias_histogram.cpp
+++ b/lib/colvars/colvarbias_histogram.cpp
@@ -75,13 +75,12 @@ int colvarbias_histogram::init(std::string const &conf)
}
grid = new colvar_grid_scalar();
+ grid->init_from_colvars(colvars);
{
std::string grid_conf;
if (key_lookup(conf, "grid", grid_conf)) {
grid->parse_params(grid_conf);
- } else {
- grid->init_from_colvars(colvars);
}
}
@@ -256,6 +255,9 @@ std::istream & colvarbias_histogram::read_restart(std::istream& is)
std::ostream & colvarbias_histogram::write_restart(std::ostream& os)
{
+ std::ios::fmtflags flags(os.flags());
+ os.setf(std::ios::fmtflags(0), std::ios::floatfield);
+
os << "histogram {\n"
<< " configuration {\n"
<< " name " << this->name << "\n";
@@ -266,5 +268,6 @@ std::ostream & colvarbias_histogram::write_restart(std::ostream& os)
os << "}\n\n";
+ os.flags(flags);
return os;
}
diff --git a/lib/colvars/colvargrid.cpp b/lib/colvars/colvargrid.cpp
index 3b07a0b3d5..ca2d935e1c 100644
--- a/lib/colvars/colvargrid.cpp
+++ b/lib/colvars/colvargrid.cpp
@@ -35,13 +35,13 @@ colvar_grid_scalar::colvar_grid_scalar(colvar_grid_scalar const &g)
}
colvar_grid_scalar::colvar_grid_scalar(std::vector const &nx_i)
- : colvar_grid(nx_i, 0.0, 1), samples(NULL)
+ : colvar_grid(nx_i, 0.0, 1), samples(NULL), grad(NULL)
{
grad = new cvm::real[nd];
}
colvar_grid_scalar::colvar_grid_scalar(std::vector &colvars, bool margin)
- : colvar_grid(colvars, 0.0, 1, margin), samples(NULL)
+ : colvar_grid(colvars, 0.0, 1, margin), samples(NULL), grad(NULL)
{
grad = new cvm::real[nd];
}
diff --git a/lib/colvars/colvargrid.h b/lib/colvars/colvargrid.h
index e00405d278..473348d3e7 100644
--- a/lib/colvars/colvargrid.h
+++ b/lib/colvars/colvargrid.h
@@ -1160,6 +1160,50 @@ public:
}
has_data = true;
}
+
+ /// \brief Return the log-gradient from finite differences
+ /// on the *same* grid for dimension n
+ inline const cvm::real log_gradient_finite_diff( const std::vector &ix0,
+ int n = 0)
+ {
+ cvm::real A0, A1;
+ std::vector ix;
+
+ // factor for mesh width, 2.0 for central finite difference
+ // but only 1.0 on edges for non-PBC coordinates
+ cvm::real factor;
+
+ if (periodic[n]) {
+ factor = 2.;
+ ix = ix0;
+ ix[n]--; wrap(ix);
+ A0 = data[address(ix)];
+ ix = ix0;
+ ix[n]++; wrap(ix);
+ A1 = data[address(ix)];
+ } else {
+ factor = 0.;
+ ix = ix0;
+ if (ix[n] > 0) { // not left edge
+ ix[n]--;
+ factor += 1.;
+ }
+ A0 = data[address(ix)];
+ ix = ix0;
+ if (ix[n]+1 < nx[n]) { // not right edge
+ ix[n]++;
+ factor += 1.;
+ }
+ A1 = data[address(ix)];
+ }
+ if (A0 == 0 || A1 == 0) {
+ // can't handle empty bins
+ return 0.;
+ } else {
+ return (std::log((cvm::real)A1) - std::log((cvm::real)A0))
+ / (widths[n] * factor);
+ }
+ }
};
diff --git a/lib/colvars/colvarmodule.h b/lib/colvars/colvarmodule.h
index e6d21af85b..b8fc01be9e 100644
--- a/lib/colvars/colvarmodule.h
+++ b/lib/colvars/colvarmodule.h
@@ -4,7 +4,7 @@
#define COLVARMODULE_H
#ifndef COLVARS_VERSION
-#define COLVARS_VERSION "2016-08-01"
+#define COLVARS_VERSION "2016-08-05"
#endif
#ifndef COLVARS_DEBUG
--
GitLab
From ec2a6b9f0de31700481738b7de1af93d8f97d992 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer
Date: Tue, 6 Sep 2016 21:27:41 -0400
Subject: [PATCH 09/52] update colvars to version 2016-08-10
(cherry picked from commit f2ddf828e4855f7626f129a00f30be2191a28f16)
---
doc/src/PDF/colvars-refman-lammps.pdf | Bin 533229 -> 533480 bytes
lib/colvars/colvar.cpp | 178 +++++++++-----------------
lib/colvars/colvaratoms.cpp | 12 +-
lib/colvars/colvarbias.cpp | 2 +-
lib/colvars/colvarbias_histogram.cpp | 4 +-
lib/colvars/colvarcomp.cpp | 6 +-
lib/colvars/colvardeps.cpp | 8 +-
lib/colvars/colvardeps.h | 19 ++-
lib/colvars/colvarmodule.cpp | 65 ++++------
lib/colvars/colvarmodule.h | 27 ++--
lib/colvars/colvarparse.cpp | 99 ++++++++++----
lib/colvars/colvarparse.h | 6 +
lib/colvars/colvarproxy.h | 10 +-
lib/colvars/colvarscript.cpp | 27 ++--
14 files changed, 222 insertions(+), 241 deletions(-)
diff --git a/doc/src/PDF/colvars-refman-lammps.pdf b/doc/src/PDF/colvars-refman-lammps.pdf
index d1349fd42439be910d3177c5453da5a6e45ca655..0dd82d47947628d5c55c0481499dcc8b79a4598d 100644
GIT binary patch
delta 41952
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[8WYEtuezhi^&
zf40Iko>#I$LOGUv4xVGgs_eDv%RYv?yNfG{9a4o
zWP0_|wA(yP`IBD@u3BDk!ZxDTc;^rKxnE{0LZ;gHm#`+)=jO|77yMVZze)bKzRfwF
zc4sEH29>tkOu7jwY`>CzG(YB8dC|cuRodf!?fjc_t?znXo2#>4tmDkx=yx9;o;h5(
z+dEr#>XEG~f3D9`$zCa``l=~VDEj#2SuHhhJhwb9zQZs7G3;yQw5W%^*~*gI?@Yfw
zd+ZUyrS_$X`%Fq|Oi6wHR#l~Atk)DZBX%cW^r~2$trU7F<;+FL+1EaX347%_^gRrG
z&DPRzQK6gLP_8g3C}-)z{x)uz&PXpKkMx7rZmkgTsxT4xyd~#W#*K#sC#O|(*dLPX
z&Rr1xV-;`W%oO#Kqt+YKjiNI%=65~`&aW8A~ao1ZBytvzeW!_wFFGm+|3Bn!|g8Hj|psb!FzJ
zgFI>qO_q1K4$rd4+`#;KujG!Trmyw8emd&cDcO4Q5f!#Zs>
zDY^0o2UwTi<5p`ntld$;A-nXajBj(>`Akm#jAVl|D{>D_YU7)4bLqodsT&5nRXHu|G!thPh~1!%=zB!m|#(AyaDPW`xgCSf&tVc%7lcKXnI}$QHJ_jZ87hN(SOw
z^#`UN$YRrR5#7KuML8&3P{->@n3)Xso`Aon{10r{RrxJvbM3r1b04jj?OXmHxBt&N
zIZ5)g>>)k-zrSA3K5KrzrcTb^&3@MBN3T95SAEmTjZbiX@Y3ctYnjr8)H@BAg^J=D
z-ZD)oWM+E&=NIpj-1xZoy}v&`O0Jr_O@ID=kK5t(;`{4;elLyt`+hsOO~voiN7H`W
zPTRZV&kx4*>Zqd4e;+uA-~adBtM6ZK+0TeD{=qw~vbwk2
z(P!2(**Di-Bt}`zI{vP@XzAzA1sgUWYEXZ^F>Bhxdmft~eYn5)9rM+@mp*KK$G^5{
zP4yn;`Ih$|Jm8*_UvDFLC*n>*@2W4QYOl(Duk1VFaywsNf4#!1(xUC}Bck5?y>{vH
zp0nSM``g#fdH4U;D]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