diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 8590e33acec4e03028a9078392b81f992122067c..30e12dea6d6b7daf89e487776c40b25812751476 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -1,7 +1,7 @@
 <!-- HTML_ONLY -->
 <HEAD>
 <TITLE>LAMMPS Users Manual</TITLE>
-<META NAME="docnumber" CONTENT="27 Oct 2016 version">
+<META NAME="docnumber" CONTENT="5 Nov 2016 version">
 <META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
 <META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation.  This software and manual is distributed under the GNU General Public License.">
 </HEAD>
@@ -21,7 +21,7 @@
 <H1></H1>
 
 LAMMPS Documentation :c,h3
-27 Oct 2016 version :c,h4
+5 Nov 2016 version :c,h4
 
 Version info: :h4
 
diff --git a/doc/src/Section_howto.txt b/doc/src/Section_howto.txt
index 33cbfa95865b8a2222abf94f7a7f4529459cd08e..33bba562edcd398b52626d47bfb418366c109573 100644
--- a/doc/src/Section_howto.txt
+++ b/doc/src/Section_howto.txt
@@ -2729,7 +2729,7 @@ production runs and is only required during equilibration. This way one
 is consistent with literature (based on the code packages DL_POLY or
 GULP for instance).
 
-The mentioned energy transfer will typically lead to a a small drift
+The mentioned energy transfer will typically lead to a small drift
 in total energy over time.  This internal energy can be monitored
 using the "compute chunk/atom"_compute_chunk_atom.html and "compute
 temp/chunk"_compute_temp_chunk.html commands.  The internal kinetic
@@ -2830,7 +2830,7 @@ temp/drude"_compute_temp_drude.html. This requires also to use the
 command {comm_modify vel yes}.
 
 Short-range damping of the induced dipole interactions can be achieved
-using Thole functions through the the "pair style
+using Thole functions through the "pair style
 thole"_pair_thole.html in "pair_style hybrid/overlay"_pair_hybrid.html
 with a Coulomb pair style. It may be useful to use {coul/long/cs} or
 similar from the CORESHELL package if the core and Drude particle come
diff --git a/doc/src/Section_start.txt b/doc/src/Section_start.txt
index a0cc792455564ce06057789b5444fd4bd44eda79..ee122e0a7266fbef10658d6d30552675b0a6ea75 100644
--- a/doc/src/Section_start.txt
+++ b/doc/src/Section_start.txt
@@ -706,7 +706,7 @@ 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 a set of files grouped together which add a
+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
diff --git a/doc/src/angle_charmm.txt b/doc/src/angle_charmm.txt
index e8217d655697b6e50ae5f59048876800d58e3046..a02e60425807db521855880ddaaa1aa51402738a 100644
--- a/doc/src/angle_charmm.txt
+++ b/doc/src/angle_charmm.txt
@@ -74,7 +74,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/angle_cosine.txt b/doc/src/angle_cosine.txt
index 50b9c9dbb643f2e6129eca078d96196f94a4611b..4fb2ccaf7cf5e4fcea86ed4a3d5d11a4ca438ad9 100644
--- a/doc/src/angle_cosine.txt
+++ b/doc/src/angle_cosine.txt
@@ -61,7 +61,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/angle_cosine_delta.txt b/doc/src/angle_cosine_delta.txt
index c4e634ad3a80f8f46aacea25d97efa2911b87704..6ab214508cbecf3e8d89866238361872d1693511 100644
--- a/doc/src/angle_cosine_delta.txt
+++ b/doc/src/angle_cosine_delta.txt
@@ -66,7 +66,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/angle_cosine_periodic.txt b/doc/src/angle_cosine_periodic.txt
index 6e62ba56c36a025de0c8f35373f91e7c0ee842c5..c6cd57e419aca9d435482b31839c94bd9df81237 100644
--- a/doc/src/angle_cosine_periodic.txt
+++ b/doc/src/angle_cosine_periodic.txt
@@ -74,7 +74,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/angle_cosine_squared.txt b/doc/src/angle_cosine_squared.txt
index e06c0208bf6fe83f0cb5fe6b4cbb59a9f62967d5..23e1b150a86eb8f87b60bd3c8c6abcb22bd54fd3 100644
--- a/doc/src/angle_cosine_squared.txt
+++ b/doc/src/angle_cosine_squared.txt
@@ -66,7 +66,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/angle_harmonic.txt b/doc/src/angle_harmonic.txt
index f7c5550733720603f63e83f8f04669f19677833c..12ee805218979c7af1f2f07de68a75e4de4a7afb 100644
--- a/doc/src/angle_harmonic.txt
+++ b/doc/src/angle_harmonic.txt
@@ -65,11 +65,11 @@ more instructions on how to use the accelerated styles effectively.
 
 :line
 
-[Restrictions:] none
+[Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info on packages.
+MOLECULE package.  See the "Making LAMMPS"_Section_start.html#start_3
+section for more info on packages.
 
 [Related commands:]
 
diff --git a/doc/src/angle_hybrid.txt b/doc/src/angle_hybrid.txt
index 901f157a89d1b4dfccfc403516606efccba54d8e..8c90e1fd3a53f0ab5d05ced017f7122fecbf75d8 100644
--- a/doc/src/angle_hybrid.txt
+++ b/doc/src/angle_hybrid.txt
@@ -76,7 +76,7 @@ for specific angle types.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 Unlike other angle styles, the hybrid angle style does not store angle
diff --git a/doc/src/angle_table.txt b/doc/src/angle_table.txt
index 70f4746ec7664362f5c7583611641e7670e262c2..61dd7b041eadefca56b123959d685dc9b618070c 100644
--- a/doc/src/angle_table.txt
+++ b/doc/src/angle_table.txt
@@ -147,7 +147,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This angle style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/bond_fene.txt b/doc/src/bond_fene.txt
index a4dd393d8d82afa1ca8194d25c4ff7f8f6dbc455..80d2a805c53124a72c95195e917a619cca399e11 100644
--- a/doc/src/bond_fene.txt
+++ b/doc/src/bond_fene.txt
@@ -70,7 +70,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This bond style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 You typically should specify "special_bonds fene"_special_bonds.html
diff --git a/doc/src/bond_fene_expand.txt b/doc/src/bond_fene_expand.txt
index 6ddd6d4876a343cb53525cdaf351a81386e60d54..3908c16a7e9c43bdcb20ecfb7e0ed82e5f9d7b17 100644
--- a/doc/src/bond_fene_expand.txt
+++ b/doc/src/bond_fene_expand.txt
@@ -73,7 +73,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This bond style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 You typically should specify "special_bonds fene"_special_bonds.html
diff --git a/doc/src/bond_harmonic.txt b/doc/src/bond_harmonic.txt
index dbcc83ccc4c9fdf576c7eb61b5e36db7bb608a2d..1cbd897dacc79c33a958995f48133237cf4045a5 100644
--- a/doc/src/bond_harmonic.txt
+++ b/doc/src/bond_harmonic.txt
@@ -65,7 +65,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This bond style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/bond_hybrid.txt b/doc/src/bond_hybrid.txt
index 05cb03c5e32b11276f0eb519e38544eabb805ae8..0b5731dcb41d007f07f37a2b4801a28bedf6b5de 100644
--- a/doc/src/bond_hybrid.txt
+++ b/doc/src/bond_hybrid.txt
@@ -59,7 +59,7 @@ bond types.
 [Restrictions:]
 
 This bond style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 Unlike other bond styles, the hybrid bond style does not store bond
diff --git a/doc/src/bond_morse.txt b/doc/src/bond_morse.txt
index 0572555c071a9cb55e0e779a22f6d9a323e067b6..12e51f9bef6f375a66f407721a0e323c7c98bc12 100644
--- a/doc/src/bond_morse.txt
+++ b/doc/src/bond_morse.txt
@@ -64,7 +64,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This bond style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/bond_nonlinear.txt b/doc/src/bond_nonlinear.txt
index 5830eb229dc655edf422d841999837d31d5726b6..ac9f3369c22b86e4c3c691e39d8a59542c016ad0 100644
--- a/doc/src/bond_nonlinear.txt
+++ b/doc/src/bond_nonlinear.txt
@@ -64,7 +64,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This bond style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/bond_quartic.txt b/doc/src/bond_quartic.txt
index 86d9ed08367340b77e1c3f2a216bcf625726bbb7..e61f4f034364b1552824649e4b95df9fe2f36d2a 100644
--- a/doc/src/bond_quartic.txt
+++ b/doc/src/bond_quartic.txt
@@ -99,7 +99,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This bond style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 The {quartic} style requires that "special_bonds"_special_bonds.html
diff --git a/doc/src/bond_table.txt b/doc/src/bond_table.txt
index aa0e3c8249bddabb2aac7b3c7b8802c7b4d7123a..cb096fba1116ac3e7ac486e1666ab5ce70b7734f 100644
--- a/doc/src/bond_table.txt
+++ b/doc/src/bond_table.txt
@@ -144,7 +144,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This bond style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/compute_centro_atom.txt b/doc/src/compute_centro_atom.txt
index 2a3ae15aaf5a75c36c2ae768cfb666a0d63698ea..0a48ccb5be3080fdd201cc0834371f6f3843f553 100644
--- a/doc/src/compute_centro_atom.txt
+++ b/doc/src/compute_centro_atom.txt
@@ -114,7 +114,7 @@ local defects surrounding the central atom, as described above.  For
 the {axes yes} case, the vector components are also unitless, since
 they represent spatial directions.
 
-Here are typical centro-symmetry values, from a a nanoindentation
+Here are typical centro-symmetry values, from a nanoindentation
 simulation into gold (FCC).  These were provided by Jon Zimmerman
 (Sandia):
 
diff --git a/doc/src/compute_chunk_atom.txt b/doc/src/compute_chunk_atom.txt
index 2778be4f6ba675245c8ab3490d429594c57e5b0a..60516fe421de9809c2b8af18893d312dbb75ef71 100644
--- a/doc/src/compute_chunk_atom.txt
+++ b/doc/src/compute_chunk_atom.txt
@@ -536,7 +536,7 @@ For the {bin/cylinder} style the details are as follows.  If {discard}
 is set to {yes}, an out-of-domain atom will have its chunk ID set to
 0.  If {discard} is set to {no}, the atom will have its chunk ID set
 to the first or last bin in both the radial and axis dimensions.  If
-{discard} is set to {mixed}, which is the default, the the radial
+{discard} is set to {mixed}, which is the default, the radial
 dimension is treated the same as for {discard} = no.  But for the axis
 dimensinon, it will only have its chunk ID set to the first or last
 bin if bins extend to the simulation box boundary in the axis
diff --git a/doc/src/compute_stress_atom.txt b/doc/src/compute_stress_atom.txt
index dcfdee9f85ae0f78005b0fcf36aea24b886c2c8b..3dc642da3296b654bc4e19c25b8366d24fe1ca59 100644
--- a/doc/src/compute_stress_atom.txt
+++ b/doc/src/compute_stress_atom.txt
@@ -60,7 +60,7 @@ produced by a small set of atoms (e.g. 4 atoms in a dihedral or 3
 atoms in a Tersoff 3-body interaction) is assigned in equal portions
 to each atom in the set.  E.g. 1/4 of the dihedral virial to each of
 the 4 atoms, or 1/3 of the fix virial due to SHAKE constraints applied
-to atoms in a a water molecule via the "fix shake"_fix_shake.html
+to atoms in a water molecule via the "fix shake"_fix_shake.html
 command.
 
 If no extra keywords are listed, all of the terms in this formula are
diff --git a/doc/src/compute_temp_profile.txt b/doc/src/compute_temp_profile.txt
index fedbd5cb325b5c13dfa7b658370ed20a7bb1d504..54eebd6d8fd3c96fcb6ad5b3e61a801d5b5141c6 100644
--- a/doc/src/compute_temp_profile.txt
+++ b/doc/src/compute_temp_profile.txt
@@ -69,8 +69,8 @@ velocity for each atom.  Note that if there is only one atom in the
 bin, its thermal velocity will thus be 0.0.
 
 After the spatially-averaged velocity field has been subtracted from
-each atom, the temperature is calculated by the formula KE = (dim/2 N
-- dim*Nx*Ny*Nz) k T, where KE = total kinetic energy of the group of
+each atom, the temperature is calculated by the formula KE = (dim*N
+- dim*Nx*Ny*Nz) k T/2, where KE = total kinetic energy of the group of
 atoms (sum of 1/2 m v^2), dim = 2 or 3 = dimensionality of the
 simulation, N = number of atoms in the group, k = Boltzmann constant,
 and T = temperature.  The dim*Nx*Ny*Nz term are degrees of freedom
diff --git a/doc/src/dihedral_charmm.txt b/doc/src/dihedral_charmm.txt
index d0a3ae6b38c94223196d738791bbafee332a699a..87322cb0af29ad9b55b668821f4f2510c994806c 100644
--- a/doc/src/dihedral_charmm.txt
+++ b/doc/src/dihedral_charmm.txt
@@ -109,7 +109,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/dihedral_harmonic.txt b/doc/src/dihedral_harmonic.txt
index 2bff2547050f93b1c651fc3c2cf4448922cc2684..c763dcce22c27c904332d42311beba49218e356a 100644
--- a/doc/src/dihedral_harmonic.txt
+++ b/doc/src/dihedral_harmonic.txt
@@ -76,7 +76,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/dihedral_helix.txt b/doc/src/dihedral_helix.txt
index 59bc1407a44c7b87d3b31e26684f56c88aa84b06..fced983db034a7eb52d93fd612903a62154636ff 100644
--- a/doc/src/dihedral_helix.txt
+++ b/doc/src/dihedral_helix.txt
@@ -69,7 +69,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/dihedral_hybrid.txt b/doc/src/dihedral_hybrid.txt
index ba33701a8a0b9e9c2c6e66506834807f5cd11a21..bddc0c0ec8ab56aaf2af6a4cb32cdcce28a16634 100644
--- a/doc/src/dihedral_hybrid.txt
+++ b/doc/src/dihedral_hybrid.txt
@@ -77,7 +77,7 @@ for specific dihedral types.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 Unlike other dihedral styles, the hybrid dihedral style does not store
diff --git a/doc/src/dihedral_multi_harmonic.txt b/doc/src/dihedral_multi_harmonic.txt
index 8504bdc0ae7da23e23497fcd72f1221e72a81fb5..5774a67685e3e78fda3985ea847d9df57374a20c 100644
--- a/doc/src/dihedral_multi_harmonic.txt
+++ b/doc/src/dihedral_multi_harmonic.txt
@@ -63,7 +63,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/dihedral_opls.txt b/doc/src/dihedral_opls.txt
index ac1ab706828ec0c817cee4d724ac14a16b5a8d30..afcc5d3514e6b19752ddca18beeabafdd9783849 100644
--- a/doc/src/dihedral_opls.txt
+++ b/doc/src/dihedral_opls.txt
@@ -71,7 +71,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This dihedral style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/dihedral_table.txt b/doc/src/dihedral_table.txt
index f34b22f4352439b6d6a6160d83fca34287781ec0..0b88f26a61076c6b10750ea419b947fb88a0dd8f 100644
--- a/doc/src/dihedral_table.txt
+++ b/doc/src/dihedral_table.txt
@@ -154,7 +154,7 @@ radians instead of degrees.  (Note: This changes the way the forces
 are scaled in the 4th column of the data file.)
 
 The optional "CHECKU" keyword is followed by a filename.  This allows
-the user to save all of the the {Ntable} different entries in the
+the user to save all of the {Ntable} different entries in the
 interpolated energy table to a file to make sure that the interpolated
 function agrees with the user's expectations.  (Note: You can
 temporarily increase the {Ntable} parameter to a high value for this
diff --git a/doc/src/dump_modify.txt b/doc/src/dump_modify.txt
index e2f5f1eb8ddc08cc7ee0bb24bcbc93eee94dcd54..0cf30e3c920ab92754aeef9a9a69cb13fdad97f4 100644
--- a/doc/src/dump_modify.txt
+++ b/doc/src/dump_modify.txt
@@ -165,7 +165,7 @@ extra buffering.
 
 :line
 
-The {element} keyword applies only to the the dump {cfg}, {xyz}, and
+The {element} keyword applies only to the dump {cfg}, {xyz}, and
 {image} styles.  It associates element names (e.g. H, C, Fe) with
 LAMMPS atom types.  See the list of element names at the bottom of
 this page.
@@ -574,7 +574,7 @@ e.g. its x-component of velocity if the atom-attribute "vx" was
 specified.
 
 The basic idea of a color map is that the atom-attribute will be
-within a range of values, and that range is associated with a a series
+within a range of values, and that range is associated with a series
 of colors (e.g. red, blue, green).  An atom's specific value (vx =
 -3.2) can then mapped to the series of colors (e.g. halfway between
 red and blue), and a specific color is determined via an interpolation
diff --git a/doc/src/fix_cmap.txt b/doc/src/fix_cmap.txt
index 88d6aac83c88a51f7083167ff5bfe48e7faf5160..9edd660b046860df36fbc82369cfa4ced6eafb1f 100644
--- a/doc/src/fix_cmap.txt
+++ b/doc/src/fix_cmap.txt
@@ -113,7 +113,7 @@ quantity being minimized), you MUST enable the
 [Restrictions:]
 
 This fix can only be used if LAMMPS was built with the MOLECULE
-package (which it is by default).  See the "Making
+package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/fix_deform.txt b/doc/src/fix_deform.txt
index ffda84bf18376a43487c46e04cab5ef30d07b067..1478d47df1fcce46676b521707e43466b1aa3436 100644
--- a/doc/src/fix_deform.txt
+++ b/doc/src/fix_deform.txt
@@ -150,7 +150,7 @@ initial box length is 100 Angstroms, and V is 10 Angstroms/psec, then
 after 10 psec, the box length will have doubled.  After 20 psec, it
 will have tripled.
 
-The {erate} style changes a dimension of the the box at a "constant
+The {erate} style changes a dimension of the box at a "constant
 engineering strain rate".  The units of the specified strain rate are
 1/time.  See the "units"_units.html command for the time units
 associated with different choices of simulation units,
diff --git a/doc/src/fix_langevin.txt b/doc/src/fix_langevin.txt
index 9dba4da3751223140397d5d7b0f4983c526bf680..b387117d8340958ae80c8d1a762af31b3161cb43 100644
--- a/doc/src/fix_langevin.txt
+++ b/doc/src/fix_langevin.txt
@@ -237,7 +237,7 @@ described in the papers cited below, the purpose of this method is to
 enable longer timesteps to be used (up to the numerical stability
 limit of the integrator), while still producing the correct Boltzmann
 distribution of atom positions.  It is implemented within LAMMPS, by
-changing how the the random force is applied so that it is composed of
+changing how the random force is applied so that it is composed of
 the average of two random forces representing half-contributions from
 the previous and current time intervals.
 
diff --git a/doc/src/fix_lb_fluid.txt b/doc/src/fix_lb_fluid.txt
index b4447b65c25e4c6a00d702e043b0459bc835f860..62265a3bc17f0568e8e72cd0ea3e4292fd2ed28d 100644
--- a/doc/src/fix_lb_fluid.txt
+++ b/doc/src/fix_lb_fluid.txt
@@ -233,7 +233,7 @@ present, the speed of sound squared is set equal to (1/3)*(dx/dt)^2.
 Setting a0 > (dx/dt)^2 is not allowed, as this may lead to
 instabilities.
 
-If the {noise} keyword is used, followed by a a positive temperature
+If the {noise} keyword is used, followed by a positive temperature
 value, and a positive integer random number seed, a thermal
 lattice-Boltzmann algorithm is used.  If {LBtype} is set equal to 1
 (i.e. the standard LB integrator is chosen), the thermal LB algorithm
diff --git a/doc/src/fix_reax_bonds.txt b/doc/src/fix_reax_bonds.txt
index a0396ce210545baa5f1db3f6b5d9e86252763fd4..a85e140b62c42fa9936c1f4e1882757da02fe7c5 100644
--- a/doc/src/fix_reax_bonds.txt
+++ b/doc/src/fix_reax_bonds.txt
@@ -8,6 +8,7 @@
 
 fix reax/bonds command :h3
 fix reax/c/bonds command :h3
+fix reax/c/bonds/kk command :h3
 
 [Syntax:]
 
@@ -47,6 +48,31 @@ commands"_Section_howto.html#howto_15.  No parameter of this fix can
 be used with the {start/stop} keywords of the "run"_run.html command.
 This fix is not invoked during "energy minimization"_minimize.html.
 
+:line
+
+Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
+functionally the same as the corresponding style without the suffix.
+They have been optimized to run faster, depending on your available
+hardware, as discussed in "Section_accelerate"_Section_accelerate.html
+of the manual.  The accelerated styles take the same arguments and
+should produce the same results, except for round-off and precision
+issues.
+
+These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
+USER-OMP and OPT packages, respectively.  They are only enabled if
+LAMMPS was built with those packages.  See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info.
+
+You can specify the accelerated styles explicitly in your input script
+by including their suffix, or you can use the "-suffix command-line
+switch"_Section_start.html#start_7 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
+
+See "Section_accelerate"_Section_accelerate.html of the manual for
+more instructions on how to use the accelerated styles effectively.
+
+:line
+
 [Restrictions:]
 
 The fix reax/bonds command requires that the "pair_style
diff --git a/doc/src/fix_reaxc_species.txt b/doc/src/fix_reaxc_species.txt
index 630c802a830232c9b87f1d7a331e92f3a8f86e2c..00db91900e1dcb01a032413a742184374465f45a 100644
--- a/doc/src/fix_reaxc_species.txt
+++ b/doc/src/fix_reaxc_species.txt
@@ -7,6 +7,7 @@
 :line
 
 fix reax/c/species command :h3
+fix reax/c/species/kk command :h3
 
 [Syntax:]
 
@@ -129,6 +130,31 @@ No parameter of this fix can be used with the {start/stop} keywords of
 the "run"_run.html command.  This fix is not invoked during "energy
 minimization"_minimize.html.
 
+:line
+
+Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
+functionally the same as the corresponding style without the suffix.
+They have been optimized to run faster, depending on your available
+hardware, as discussed in "Section_accelerate"_Section_accelerate.html
+of the manual.  The accelerated styles take the same arguments and
+should produce the same results, except for round-off and precision
+issues.
+
+These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
+USER-OMP and OPT packages, respectively.  They are only enabled if
+LAMMPS was built with those packages.  See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info.
+
+You can specify the accelerated styles explicitly in your input script
+by including their suffix, or you can use the "-suffix command-line
+switch"_Section_start.html#start_7 when you invoke LAMMPS, or you can
+use the "suffix"_suffix.html command in your input script.
+
+See "Section_accelerate"_Section_accelerate.html of the manual for
+more instructions on how to use the accelerated styles effectively.
+
+:line
+
 [Restrictions:]
 
 The fix species currently only works with
diff --git a/doc/src/fix_rx.txt b/doc/src/fix_rx.txt
index 4e26274b35251320c6e7d12b4905c9273a93040a..c0deedfa6305a22449e73efc9c88b0c742ebc09d 100644
--- a/doc/src/fix_rx.txt
+++ b/doc/src/fix_rx.txt
@@ -87,7 +87,7 @@ end of each run. A positive value N means that the diagnostics are reported once
 per N time-steps.
 
 The diagnostics report the average # of integrator steps and RHS function evaluations
-and run-time per ODE as well as the the average/RMS/min/max per process. If the
+and run-time per ODE as well as the average/RMS/min/max per process. If the
 reporting frequency is 1, the RMS/min/max per ODE are also reported. The per ODE
 statistics can be used to adjust the tolerance and min/max step parameters. The
 statistics per MPI process can be useful to examine any load imbalance caused by the
diff --git a/doc/src/fix_smd_adjust_dt.txt b/doc/src/fix_smd_adjust_dt.txt
index 6567c2c151c92c173d2a7987d3aff1eab1b10987..04a0a7becd0442578c09833b89f8bf0075ac16ae 100644
--- a/doc/src/fix_smd_adjust_dt.txt
+++ b/doc/src/fix_smd_adjust_dt.txt
@@ -28,7 +28,7 @@ fix 1 all smd/adjust_dt 0.1 :pre
 The fix calculates a new stable time increment for use with the SMD time integrators.
 
 The stable time increment is based on multiple conditions. For the SPH pair styles, a
-CFL criterion (Courant, Friedrichs & Lewy, 1928) is evaluated, which determines the the speed of
+CFL criterion (Courant, Friedrichs & Lewy, 1928) is evaluated, which determines the speed of
 sound cannot propagate further than a typical spacing between particles within a single time step to ensure
 no information is lost. For the contact pair styles, a linear analysis of the pair potential determines a
 stable maximum time step.
diff --git a/doc/src/fix_srd.txt b/doc/src/fix_srd.txt
index e76871dfe1582a0b0998cec8aab2db4b32f725c1..13519ecfad94728a00fe5aa3b5b130d3436ab4dc 100644
--- a/doc/src/fix_srd.txt
+++ b/doc/src/fix_srd.txt
@@ -101,7 +101,7 @@ particles move in the normal way via a time integration "fix"_fix.html
 with a short timestep dt.  SRD particles advect with a large timestep
 dt_SRD >= dt.
 
-If the {lamda} keyword is not specified, the the SRD temperature
+If the {lamda} keyword is not specified, the SRD temperature
 {Tsrd} is used in the above formula to compute lamda.  If the {lamda}
 keyword is specified, then the {Tsrd} setting is ignored and the above
 equation is used to compute the SRD temperature.
diff --git a/doc/src/fix_ttm.txt b/doc/src/fix_ttm.txt
index 586a06d5256944c53393ad305d476fe97cd9f5b5..2e7318da146fcf91f682d3d1410a48f71a1dc41f 100644
--- a/doc/src/fix_ttm.txt
+++ b/doc/src/fix_ttm.txt
@@ -107,7 +107,7 @@ specified as parameters to the fix.  The other quantities are derived.
 The form of the heat diffusion equation used here is almost the same
 as that in equation 6 of "(Duffy)"_#Duffy, with the exception that the
 electronic density is explicitly reprensented, rather than being part
-of the the specific heat parameter.
+of the specific heat parameter.
 
 Currently, fix ttm assumes that none of the user-supplied parameters
 will vary with temperature. Note that "(Duffy)"_#Duffy used a tanh()
diff --git a/doc/src/improper_cvff.txt b/doc/src/improper_cvff.txt
index 98be3129aeab69f1ace090491ab48dedb9c21ef2..72f346ba04ce1792c54f9f9b518bd3d9596c253b 100644
--- a/doc/src/improper_cvff.txt
+++ b/doc/src/improper_cvff.txt
@@ -77,7 +77,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This improper style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/improper_harmonic.txt b/doc/src/improper_harmonic.txt
index 175feb424309a28d2c6b9590c047c7dd7ec878ba..b47b0ca41f16aa796e0d7a47273ee48aa30e1b15 100644
--- a/doc/src/improper_harmonic.txt
+++ b/doc/src/improper_harmonic.txt
@@ -81,7 +81,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This improper style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/improper_hybrid.txt b/doc/src/improper_hybrid.txt
index 8f7269b5c958e8ed53da646b11d868be30b82dcb..a3bd9a973a45291bc6e995acd02aebf9019a5bc7 100644
--- a/doc/src/improper_hybrid.txt
+++ b/doc/src/improper_hybrid.txt
@@ -55,7 +55,7 @@ types.
 [Restrictions:]
 
 This improper style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 Unlike other improper styles, the hybrid improper style does not store
diff --git a/doc/src/improper_style.txt b/doc/src/improper_style.txt
index 0bd1c10b58b434c634c649c3c045e608983e4dbb..861701590fedcfce745e2542fd7c69c943e4e5a3 100644
--- a/doc/src/improper_style.txt
+++ b/doc/src/improper_style.txt
@@ -27,7 +27,7 @@ between quadruplets of atoms, which remain in force for the duration
 of the simulation.  The list of improper quadruplets is read in by a
 "read_data"_read_data.html or "read_restart"_read_restart.html command
 from a data or restart file.  Note that the ordering of the 4 atoms in
-an improper quadruplet determines the the definition of the improper
+an improper quadruplet determines the definition of the improper
 angle used in the formula for each style.  See the doc pages of
 individual styles for details.
 
diff --git a/doc/src/improper_umbrella.txt b/doc/src/improper_umbrella.txt
index e8616ef01cf153cd95b9fb59984a0983728bf3e5..fafa2e7e4cf29acf51fdb899963a0c49df51433c 100644
--- a/doc/src/improper_umbrella.txt
+++ b/doc/src/improper_umbrella.txt
@@ -74,7 +74,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This improper style can only be used if LAMMPS was built with the
-MOLECULE package (which it is by default).  See the "Making
+MOLECULE package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/neb.txt b/doc/src/neb.txt
index 17bd8544b780ad44ad12dfaa1e6833875f7f979d..649e521eee87d1948b1f5dbef8dd6dd002b5e9d6 100644
--- a/doc/src/neb.txt
+++ b/doc/src/neb.txt
@@ -284,7 +284,7 @@ ID2 x2 y2 z2
 ...
 IDN xN yN zN :pre
 
-The fields are the the atom ID, followed by the x,y,z coordinates.
+The fields are the atom ID, followed by the x,y,z coordinates.
 The lines can be listed in any order.  Additional trailing information
 on the line is OK, such as a comment.
 
diff --git a/doc/src/next.txt b/doc/src/next.txt
index 69bffe8bbf665a1a763a23c24fa657fdf50d263d..fe9dc975423858269a8fbb3f7f776be83ad7c033 100644
--- a/doc/src/next.txt
+++ b/doc/src/next.txt
@@ -44,7 +44,7 @@ one value from their respective list of values.  A {file}-style
 variable reads the next line from its associated file.  An
 {atomfile}-style variable reads the next set of lines (one per atom)
 from its associated file.  {String-} or {atom}- or {equal}- or
-{world}-style variables cannot be used with the the next command,
+{world}-style variables cannot be used with the next command,
 since they only store a single value.
 
 When any of the variables in the next command has no more values, a
diff --git a/doc/src/pair_adp.txt b/doc/src/pair_adp.txt
index b8902e0196d6a3b92b62e35c570253487757babc..c9dd31d57bede8a0714b2568ad3c01cd8d600a5a 100644
--- a/doc/src/pair_adp.txt
+++ b/doc/src/pair_adp.txt
@@ -168,7 +168,7 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the MANYBODY package.  It is only enabled
-if LAMMPS was built with that package (which it is by default).
+if LAMMPS was built with that package.
 
 [Related commands:]
 
diff --git a/doc/src/pair_airebo.txt b/doc/src/pair_airebo.txt
index 527563bae89dbdf94ddc654879d3d413561331cd..6d0b1b00884cc72825bbb54ba8f9ad8460e04465 100644
--- a/doc/src/pair_airebo.txt
+++ b/doc/src/pair_airebo.txt
@@ -203,9 +203,8 @@ These pair styles can only be used via the {pair} keyword of the
 [Restrictions:]
 
 These pair styles are part of the MANYBODY package.  They are only
-enabled if LAMMPS was built with that package (which it is by
-default).  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info.
+enabled if LAMMPS was built with that package.  See the
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 These pair potentials require the "newton"_newton.html setting to be
 "on" for pair interactions.
diff --git a/doc/src/pair_bop.txt b/doc/src/pair_bop.txt
index b5444ee0017459f2d55d2f48d43cf1074472b7c2..0dbd1fc5dd9a4ecf3d8a7f38092237919fab1f97 100644
--- a/doc/src/pair_bop.txt
+++ b/doc/src/pair_bop.txt
@@ -382,7 +382,7 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 These pair styles are part of the MANYBODY package.  They are only
-enabled if LAMMPS was built with that package (which it is by default).
+enabled if LAMMPS was built with that package.
 See the "Making LAMMPS"_Section_start.html#start_3 section for more
 info.
 
diff --git a/doc/src/pair_born.txt b/doc/src/pair_born.txt
index 06a2f5c94f94b988b05ca7c44b6db50d4433b0fa..398b9b1717e7cdccee94dd7e4bc7f9356a43f614 100644
--- a/doc/src/pair_born.txt
+++ b/doc/src/pair_born.txt
@@ -174,9 +174,8 @@ respa"_run_style.html command.  They do not support the {inner},
 [Restrictions:]
 
 The {born/coul/long} style is part of the KSPACE package.  It is only
-enabled if LAMMPS was built with that package (which it is by
-default).  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info.
+enabled if LAMMPS was built with that package.  See the
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_buck.txt b/doc/src/pair_buck.txt
index 1cad05870d01e61063616c69349d774bb6def456..1b9f333376afd295143f5f5dfdda163b4c6a6e99 100644
--- a/doc/src/pair_buck.txt
+++ b/doc/src/pair_buck.txt
@@ -186,9 +186,8 @@ respa"_run_style.html command.  They do not support the {inner},
 
 The {buck/coul/long} style is part of the KSPACE package.  The
 {buck/coul/long/cs} style is part of the CORESHELL package.  They are
-only enabled if LAMMPS was built with that package (which it is by
-default).  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info.
+only enabled if LAMMPS was built with that package.  See the
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 [Related commands:]
 
diff --git a/doc/src/pair_comb.txt b/doc/src/pair_comb.txt
index 0e252e548131cba63db6fff1de55e0e1c8fc212c..c060856d60c22d6db732747bf92acea5c6441938 100644
--- a/doc/src/pair_comb.txt
+++ b/doc/src/pair_comb.txt
@@ -156,7 +156,7 @@ These pair styles can only be used via the {pair} keyword of the
 [Restrictions:]
 
 These pair styles are part of the MANYBODY package.  It is only enabled
-if LAMMPS was built with that package (which it is by default).  See
+if LAMMPS was built with that package.  See
 the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 These pair styles requires the "newton"_newton.html setting to be "on"
diff --git a/doc/src/pair_coul.txt b/doc/src/pair_coul.txt
index 9b6fcce49791fbd04cc43db5fa43e92e3bc995a8..b3d5fdef27c66de8b8d32a03980d628708c28775 100644
--- a/doc/src/pair_coul.txt
+++ b/doc/src/pair_coul.txt
@@ -313,9 +313,8 @@ This pair style can only be used via the {pair} keyword of the
 
 The {coul/long}, {coul/msm} and {tip4p/long} styles are part of the
 KSPACE package.  The {coul/long/cs} style is part of the CORESHELL
-package.  They are only enabled if LAMMPS was built with that package
-(which it is by default).  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+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.
 
 [Related commands:]
 
diff --git a/doc/src/pair_eam.txt b/doc/src/pair_eam.txt
index 9042f21ec15086cbf39c74090ab83a28f89eda43..ff535b2a643ace724cd795bb9d9d13de7c5042b8 100644
--- a/doc/src/pair_eam.txt
+++ b/doc/src/pair_eam.txt
@@ -412,9 +412,8 @@ The eam pair styles can only be used via the {pair} keyword of the
 [Restrictions:]
 
 All of these styles except the {eam/cd} style are part of the MANYBODY
-package.  They are only enabled if LAMMPS was built with that package
-(which it is by default).  See the "Making
-LAMMPS"_Section_start.html#start_3 section for more info.
+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.
 
 The {eam/cd} style is part of the USER-MISC package and also requires
 the MANYBODY package.  It is only enabled if LAMMPS was built with
diff --git a/doc/src/pair_eim.txt b/doc/src/pair_eim.txt
index 7acc7e316b1998fded03e68980c51d607aa57f95..47078f9a8fe924103e31e8d5372f8da1098f7514 100644
--- a/doc/src/pair_eim.txt
+++ b/doc/src/pair_eim.txt
@@ -159,7 +159,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This style is part of the MANYBODY package.  It is only enabled if
-LAMMPS was built with that package (which it is by default).
+LAMMPS was built with that package.
 
 [Related commands:]
 
diff --git a/doc/src/pair_lcbop.txt b/doc/src/pair_lcbop.txt
index e05f2a556f3919f3d2cd63e5678008314ca87b73..148a1d47a067c014d193b14eb3647bbe9c2cd3be 100644
--- a/doc/src/pair_lcbop.txt
+++ b/doc/src/pair_lcbop.txt
@@ -72,7 +72,7 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair styles is part of the MANYBODY package.  It is only enabled
-if LAMMPS was built with that package (which it is by default).  See
+if LAMMPS was built with that package.  See
 the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 This pair potential requires the "newton"_newton.html setting to be
diff --git a/doc/src/pair_nb3b_harmonic.txt b/doc/src/pair_nb3b_harmonic.txt
index b87c56a9a62e83ea97fe3b3b2ae7a552db52e804..86a535acf3c691e206bdadda9df52de0ff59a9a0 100644
--- a/doc/src/pair_nb3b_harmonic.txt
+++ b/doc/src/pair_nb3b_harmonic.txt
@@ -113,7 +113,7 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 This pair style can only be used if LAMMPS was built with the MANYBODY
-package (which it is by default).  See the "Making
+package.  See the "Making
 LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 [Related commands:]
diff --git a/doc/src/pair_polymorphic.txt b/doc/src/pair_polymorphic.txt
index f5278133eb09d7fc8612dfc8e1884a0f6962956d..1e75518273ca6e8504b0d7bd3ffba83bddd17185 100644
--- a/doc/src/pair_polymorphic.txt
+++ b/doc/src/pair_polymorphic.txt
@@ -191,7 +191,7 @@ input script. If using read_data, atomic masses must be defined in the
 atomic structure data file.
 
 This pair style is part of the MANYBODY package. It is only enabled if
-LAMMPS was built with that package (which it is by default). See the
+LAMMPS was built with that package. See the
 "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 This pair potential requires the "newtion"_newton.html setting to be
diff --git a/doc/src/pair_snap.txt b/doc/src/pair_snap.txt
index 734cdaa9942f957cdcc4ab975f46a860537a3646..cb2289259d767893cdd21f65ecbd1d8b7a35fc21 100644
--- a/doc/src/pair_snap.txt
+++ b/doc/src/pair_snap.txt
@@ -15,7 +15,7 @@ pair_style snap :pre
 [Examples:]
 
 pair_style snap
-pair_coeff * * snap InP.snapcoeff In P InP.snapparam In In P P :pre
+pair_coeff * * InP.snapcoeff In P InP.snapparam In In P P :pre
 
 [Description:]
 
@@ -27,9 +27,9 @@ it uses bispectrum components
 to characterize the local neighborhood of each atom
 in a very general way. The mathematical definition of the
 bispectrum calculation used by SNAP is identical
-to that used of "compute sna/atom"_compute_sna_atom.html.
+to that used by "compute sna/atom"_compute_sna_atom.html.
 In SNAP, the total energy is decomposed into a sum over
-atom energies. The energy of atom {i} is
+atom energies. The energy of atom {i } is
 expressed as a weighted sum over bispectrum components.
 
 :c,image(Eqs/pair_snap.jpg)
@@ -183,8 +183,7 @@ LAMMPS"_Section_start.html#start_3 section for more info.
 :line
 
 :link(Thompson2014)
-[(Thompson)] Thompson, Swiler, Trott, Foiles, Tucker, under review, preprint
-available at "arXiv:1409.3880"_http://arxiv.org/abs/1409.3880
+[(Thompson)] Thompson, Swiler, Trott, Foiles, Tucker, J Comp Phys, 285, 316 (2015).
 
 :link(Bartok2010)
 [(Bartok2010)] Bartok, Payne, Risi, Csanyi, Phys Rev Lett, 104, 136403 (2010).
diff --git a/doc/src/pair_srp.txt b/doc/src/pair_srp.txt
index f2b6e6e769bac2cec1e1d1b5601f041d7fc0723c..a951cccbc33d86ef40a06790aad4fad1714eaf6a 100644
--- a/doc/src/pair_srp.txt
+++ b/doc/src/pair_srp.txt
@@ -99,7 +99,7 @@ The optional {exclude} keyword determines if forces are computed
 between first neighbor (directly connected) bonds.  For a setting of
 {no}, first neighbor forces are computed; for {yes} they are not
 computed. A setting of {no} cannot be used with the {min} option for
-distance calculation because the the minimum distance between directly
+distance calculation because the minimum distance between directly
 connected bonds is zero.
 
 Pair style {srp} turns off normalization of thermodynamic properties
diff --git a/doc/src/pair_sw.txt b/doc/src/pair_sw.txt
index 9ca7cb6b9280cb242572b84917f1036ab88e7ba4..ccb7c9c96b7fad35400b1f1e4097cb2963510f3f 100644
--- a/doc/src/pair_sw.txt
+++ b/doc/src/pair_sw.txt
@@ -192,7 +192,7 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the MANYBODY package.  It is only enabled
-if LAMMPS was built with that package (which it is by default).  See
+if LAMMPS was built with that package.  See
 the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 This pair style requires the "newton"_newton.html setting to be "on"
diff --git a/doc/src/pair_tersoff.txt b/doc/src/pair_tersoff.txt
index 7bbe719803f019bef9581b026b902e43e5035585..52e056dfd887c285d8155f74be6667b2ddd40fd3 100644
--- a/doc/src/pair_tersoff.txt
+++ b/doc/src/pair_tersoff.txt
@@ -222,7 +222,7 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the MANYBODY package.  It is only enabled
-if LAMMPS was built with that package (which it is by default).  See
+if LAMMPS was built with that package.  See
 the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 This pair style requires the "newton"_newton.html setting to be "on"
diff --git a/doc/src/pair_tersoff_mod.txt b/doc/src/pair_tersoff_mod.txt
index 42b22dd8bf52f5bcdbd85ebd55b95d1668841d7b..fe3cd6135d2b3849346133957a86d422593afaa1 100644
--- a/doc/src/pair_tersoff_mod.txt
+++ b/doc/src/pair_tersoff_mod.txt
@@ -156,7 +156,7 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the MANYBODY package.  It is only enabled
-if LAMMPS was built with that package (which it is by default).  See
+if LAMMPS was built with that package.  See
 the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 This pair style requires the "newton"_newton.html setting to be "on"
diff --git a/doc/src/pair_tersoff_zbl.txt b/doc/src/pair_tersoff_zbl.txt
index 014805c872c412383e2db6d5aee1e3ddbbf20426..f19ac6ad42acc53b3304bfac3792fd14d8617355 100644
--- a/doc/src/pair_tersoff_zbl.txt
+++ b/doc/src/pair_tersoff_zbl.txt
@@ -232,7 +232,7 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 This pair style is part of the MANYBODY package.  It is only enabled
-if LAMMPS was built with that package (which it is by default).  See
+if LAMMPS was built with that package.  See
 the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 This pair style requires the "newton"_newton.html setting to be "on"
diff --git a/doc/src/pair_vashishta.txt b/doc/src/pair_vashishta.txt
index dfa2aeb86d66319f556a249eac21cf4df05b6923..7bd5a06aa8339ef63c66790b1e45a5ffdb0f4ea6 100644
--- a/doc/src/pair_vashishta.txt
+++ b/doc/src/pair_vashishta.txt
@@ -212,9 +212,8 @@ This pair style can only be used via the {pair} keyword of the
 [Restrictions:]
 
 These pair style are part of the MANYBODY package.  They is only
-enabled if LAMMPS was built with that package (which it is by
-default).  See the "Making LAMMPS"_Section_start.html#start_3 section
-for more info.
+enabled if LAMMPS was built with that package.  See the
+"Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 These pair styles requires the "newton"_newton.html setting to be "on"
 for pair interactions.
diff --git a/doc/src/prd.txt b/doc/src/prd.txt
index 832239de98ec2198af93cc8f722bc44299faae9a..1ad66ee441e99a6f3006c08b8c97cc81da0e500a 100644
--- a/doc/src/prd.txt
+++ b/doc/src/prd.txt
@@ -214,7 +214,7 @@ when a correlated event occurs during the third stage of the loop
 listed above, i.e. when only one replica is running dynamics.
 
 When more than one replica detects an event at the end of the same
-event check (every {t_event} steps) during the the second stage, then
+event check (every {t_event} steps) during the second stage, then
 one of them is chosen at random.  The number of coincident events is
 the number of replicas that detected an event.  Normally, this value
 should be 1.  If it is often greater than 1, then either the number of
@@ -241,7 +241,7 @@ time was spent in each stage (dephasing, dynamics, quenching, etc).
 
 Any "dump files"_dump.html defined in the input script, will be
 written to during a PRD run at timesteps corresponding to both
-uncorrelated and correlated events.  This means the the requested dump
+uncorrelated and correlated events.  This means the requested dump
 frequency in the "dump"_dump.html command is ignored.  There will be
 one dump file (per dump command) created for all partitions.
 
diff --git a/doc/src/python.txt b/doc/src/python.txt
index 9d6dbdcb695ebb6e33c18a1a9349d2263ae7c961..773992bdddcc64b8d3026d5c5e31e307f4ab5d71 100644
--- a/doc/src/python.txt
+++ b/doc/src/python.txt
@@ -188,7 +188,7 @@ is assumed to have been previously loaded by another python command.
 
 Note that the Python code that is loaded and run must contain a
 function with the specified {func} name.  To operate properly when
-later invoked, the the function code must match the {input} and
+later invoked, the function code must match the {input} and
 {return} and {format} keywords specified by the python command.
 Otherwise Python will generate an error.
 
diff --git a/doc/src/read_dump.txt b/doc/src/read_dump.txt
index f6424f65291793443f54707bfac985c20fb431bd..531e78aca51809599b5dd2c2cd0269c88fcbbaa7 100644
--- a/doc/src/read_dump.txt
+++ b/doc/src/read_dump.txt
@@ -185,7 +185,7 @@ For dump files in {xyz} format, only the {x}, {y}, and {z} fields are
 supported.  The dump file does not store atom IDs, so these are
 assigned consecutively to the atoms as they appear in the dump file,
 starting from 1.  Thus you should insure that order of atoms is
-consistent from snapshot to snapshot in the the XYZ dump file.  See
+consistent from snapshot to snapshot in the XYZ dump file.  See
 the "dump_modify sort"_dump_modify.html command if the XYZ dump file
 was written by LAMMPS.
 
@@ -195,7 +195,7 @@ velocities, or their respective plugins may not support reading of
 velocities.  The molfile dump files do not store atom IDs, so these
 are assigned consecutively to the atoms as they appear in the dump
 file, starting from 1.  Thus you should insure that order of atoms are
-consistent from snapshot to snapshot in the the molfile dump file.
+consistent from snapshot to snapshot in the molfile dump file.
 See the "dump_modify sort"_dump_modify.html command if the dump file
 was written by LAMMPS.
 
diff --git a/doc/src/suffix.txt b/doc/src/suffix.txt
index 669d483f00ee01b89cfb03fbaa97407abb83a563..70c6a3031b6a26984d0f8026ee9062bb51ca0af5 100644
--- a/doc/src/suffix.txt
+++ b/doc/src/suffix.txt
@@ -94,6 +94,13 @@ Of course this is also possible by not using any suffix commands, and
 explictly appending or not appending the suffix to the relevant
 commands in your input script.
 
+NOTE: The default "run_style"_run_style.html verlet is invoked prior to
+reading the input script and is therefore not affected by a suffix command
+in the input script. The KOKKOS package requires "run_style verlet/kk",
+so when using the KOKKOS package it is necessary to either use the command
+line "-sf kk" command or add an explicit "run_style verlet" command to the
+input script.
+
 [Restrictions:] none
 
 [Related commands:]
diff --git a/doc/src/tad.txt b/doc/src/tad.txt
index 056ab73e56334411209416c61e09c22f71bbee97..5b0f5a006ce02d9eab48e55a90ef9567a4aaa2d8 100644
--- a/doc/src/tad.txt
+++ b/doc/src/tad.txt
@@ -231,7 +231,7 @@ time was spent in each stage (NEB, dynamics, quenching, etc).
 
 Any "dump files"_dump.html defined in the input script will be written
 to during a TAD run at timesteps when an event is executed.  This
-means the the requested dump frequency in the "dump"_dump.html command
+means the requested dump frequency in the "dump"_dump.html command
 is ignored.  There will be one dump file (per dump command) created
 for all partitions.  The atom coordinates of the dump snapshot are
 those of the minimum energy configuration resulting from quenching
diff --git a/doc/src/tutorial_drude.txt b/doc/src/tutorial_drude.txt
index 58a3fae5c5176dd1187349bde189a98f106389d3..c2f4a16207e395b7c5c8406862f006fa1a5a29bf 100644
--- a/doc/src/tutorial_drude.txt
+++ b/doc/src/tutorial_drude.txt
@@ -33,7 +33,7 @@ created by the surrounding particles.  Drude oscillators represent
 these dipoles by two fixed charges: the core (DC) and the Drude
 particle (DP) bound by a harmonic potential. The Drude particle can be
 thought of as the electron cloud whose center can be displaced from
-the position of the the corresponding nucleus.
+the position of the corresponding nucleus.
 
 The sum of the masses of a core-Drude pair should be the mass of the
 initial (unsplit) atom, \(m_C + m_D = m\).  The sum of their charges
diff --git a/examples/threebody/BNC.tersoff b/examples/threebody/BNC.tersoff
new file mode 100644
index 0000000000000000000000000000000000000000..163006252427944c2a14b35bfcd2b1561910e33e
--- /dev/null
+++ b/examples/threebody/BNC.tersoff
@@ -0,0 +1,74 @@
+# DATE: 2013-03-21 CONTRIBUTOR: Cem Sevik CITATION: Kinaci, Haskins, Sevik and Cagin,  Phys Rev B, 86, 115410 (2012) 
+# Tersoff parameters for B, C, and BN-C hybrid based graphene like nano structures
+# multiple entries can be added to this file, LAMMPS reads the ones it needs
+
+# these entries are in LAMMPS "metal" units:
+#   A,B = eV; lambda1,lambda2,lambda3 = 1/Angstroms; R,D = Angstroms
+#   other quantities are unitless
+
+# Cem Sevik (csevik at anadolu.edu.tr) takes full blame for this
+# file.  It specifies B-N, B-C, and N-C interaction parameters 
+# generated and published by the reseacrh group of Prof. Tahir Cagin.
+
+# 1. Physical Review B 84, 085409 2011
+#    Characterization of thermal transport in low-dimensional boron nitride nanostructures, 
+#
+
+# 2. Physical Review B 86, 075403 2012
+#    Influence of disorder on thermal transport properties of boron nitride nanostructures
+#
+
+# 3. Physical Review B 86, 075403 2012, Please see for further information about B-C and N-C parameters
+#    Thermal conductivity of BN-C nanostructures
+#
+
+# The file also specifies C-C, interaction parameters 
+# generated and published by the reseacrh group of Dr. D. A. Broido
+# Physical Review B 81, 205441 2010
+# Optimized Tersoff and Brenner empirical potential parameters for 
+# lattice dynamics and phonon thermal transport in carbon nanotubes and graphene
+
+# Users in referring the full parameters can cite the full parameter paper (3) as:
+#      A. Kinaci, J. B. Haskins, C. Sevik, T. Cagin,  Physical Review B 86, 115410 (2012) 
+#      Thermal conductivity of BN-C nanostructures
+#
+
+# format of a single entry (one or more lines):
+#   element 1, element 2, element 3,
+#   m, gamma, lambda3, c, d, costheta0, n, beta, lambda2, B, R, D, lambda1, A
+
+N      B       B         3.0 1.0 0.0 25000    4.3484 -0.89000 0.72751   1.25724e-7      2.199        340.00          1.95    0.05    3.568       1380.0
+N      B       N         3.0 1.0 0.0 25000    4.3484 -0.89000 0.72751   1.25724e-7      2.199        340.00          1.95    0.05    3.568       1380.0    
+N      B       C         3.0 1.0 0.0 25000    4.3484 -0.89000 0.72751   1.25724e-7      2.199        340.00          1.95    0.05    3.568       1380.0
+
+B      N       B         3.0 1.0 0.0 25000    4.3484 -0.89000 0.72751   1.25724e-7      2.199        340.00          1.95    0.05    3.568       1380.0
+B      N       N         3.0 1.0 0.0 25000    4.3484 -0.89000 0.72751   1.25724e-7      2.199        340.00          1.95    0.05    3.568       1380.0    
+B      N       C         3.0 1.0 0.0 25000    4.3484 -0.89000 0.72751   1.25724e-7      2.199        340.00          1.95    0.05    3.568       1380.0
+
+N      N       B         3.0 1.0 0.0 17.7959  5.9484  0.00000 0.6184432 0.019251        2.6272721    138.77866       2.0     0.1     2.8293093    128.86866
+N      N       N         3.0 1.0 0.0 17.7959  5.9484  0.00000 0.6184432 0.019251        2.6272721    138.77866       2.0     0.1     2.8293093    128.86866
+N      N       C         3.0 1.0 0.0 17.7959  5.9484  0.00000 0.6184432 0.019251        2.6272721    138.77866       2.0     0.1     2.8293093    128.86866
+
+B      B       B         3.0 1.0 0.0 0.52629  0.001587  0.5    3.9929061  1.6e-6     2.0774982    43.132016       2.0     0.1     2.2372578   40.0520156
+B      B       N         3.0 1.0 0.0 0.52629  0.001587  0.5    3.9929061  1.6e-6     2.0774982    43.132016       2.0     0.1     2.2372578   40.0520156
+B      B       C         3.0 1.0 0.0 0.52629  0.001587  0.5    3.9929061  1.6e-6     2.0774982    43.132016       2.0     0.1     2.2372578   40.0520156
+
+C      C       C         3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7  2.2119  430.00    1.95    0.15   3.4879  1393.6
+C      C       B         3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7  2.2119  430.00    1.95    0.15   3.4879  1393.6
+C      C       N         3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7  2.2119  430.00    1.95    0.15   3.4879  1393.6
+
+C      B       B         3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7  2.2054  339.068910     1.95    0.10   3.5279  1386.78
+C      B       N         3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7  2.2054  339.068910     1.95    0.10   3.5279  1386.78
+C      B       C         3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7  2.2054  339.068910     1.95    0.10   3.5279  1386.78
+
+C      N       B         3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7  2.2054  387.575152     1.95    0.10   3.5279  1386.78
+C      N       N         3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7  2.2054  387.575152     1.95    0.10   3.5279  1386.78
+C      N       C         3.0 1.0 0.0 3.8049e4 4.3484 -0.93000 0.72751 1.5724e-7  2.2054  387.575152     1.95    0.10   3.5279  1386.78
+
+B      C       C         3.0 1.0 0.0 25000    4.3484 -0.89000 0.72751 1.25724e-7 2.2054  339.068910     1.95    0.10   3.5279  1386.78
+B      C       B         3.0 1.0 0.0 25000    4.3484 -0.89000 0.72751 1.25724e-7 2.2054  339.068910     1.95    0.10   3.5279  1386.78
+B      C       N         3.0 1.0 0.0 25000    4.3484 -0.89000 0.72751 1.25724e-7 2.2054  339.068910     1.95    0.10   3.5279  1386.78
+
+N      C       C         3.0 1.0 0.0 25000    4.3484 -0.89000 0.72751 1.25724e-7 2.2054  387.575152     1.95    0.10   3.5279  1386.78
+N      C       B         3.0 1.0 0.0 25000    4.3484 -0.89000 0.72751 1.25724e-7 2.2054  387.575152     1.95    0.10   3.5279  1386.78
+N      C       N         3.0 1.0 0.0 25000    4.3484 -0.89000 0.72751 1.25724e-7 2.2054  387.575152     1.95    0.10   3.5279  1386.78
diff --git a/examples/threebody/CdTeZnSeHgS0.sw b/examples/threebody/CdTeZnSeHgS0.sw
new file mode 100644
index 0000000000000000000000000000000000000000..d6f05d41df7ce44e05b2ba0700f1fb35d6b0450e
--- /dev/null
+++ b/examples/threebody/CdTeZnSeHgS0.sw
@@ -0,0 +1,233 @@
+### DATE: 2013-08-09 CONTRIBUTOR: X. W. Zhou, xzhou@sandia.gov, CITATION: Zhou, Ward, Martin, van Swol, Cruz-Campa, and D. Zubia, Phys. Rev. B, 88, 085309 (2013).
+#
+# Note that the way the parameters can be entered is not unique.
+# As one way, we assume that eps_ijk is equal to eps_ik and
+# lambda_ijk is equal to sqrt(lambda_ij*eps_ij*lambda_ik*eps_ik)/eps_ik,
+# and all other parameters in the ijk line are for ik.
+#
+# The twobody ik pair parameters are entered on the i*k lines, where *
+# can be any species. This is consistent with the LAMMPS requirement
+# that twobody ik parameters be defined on the ikk line. Entries on all
+# the other i*k lines are ignored by LAMMPS
+#  
+# These entries are in LAMMPS "metal" units: epsilon = eV;
+# sigma = Angstroms; other quantities are unitless
+#
+# cutoff distance = 4.632
+#               eps          sigma            a            lambda          gamma       cos(theta)         A              B              p              q             tol
+Cd Cd Cd   1.182358e+00   2.663951e+00   1.527956e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.674460e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Cd Te   1.385284e+00   2.352141e+00   1.810919e+00   3.002537e+01   1.200000e+00  -3.333333e-01   7.049600e+00   8.861252e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Cd Zn   6.908179e-01   2.238699e+00   1.812616e+00   4.251831e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.010632e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Cd Se   1.352371e+00   2.045165e+00   1.953387e+00   3.038855e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.116149e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Cd Hg   4.881231e-01   2.432694e+00   1.677987e+00   5.058167e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.250999e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Cd S   1.300376e+00   1.804151e+00   2.124568e+00   3.099013e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.540087e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Te Cd   1.182358e+00   2.663951e+00   1.527956e+00   3.517858e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.674460e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Te Te   1.385284e+00   2.352141e+00   1.810919e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   8.861252e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Te Zn   6.908179e-01   2.238699e+00   1.812616e+00   4.602259e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.010632e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Te Se   1.352371e+00   2.045165e+00   1.953387e+00   3.289311e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.116149e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Te Hg   4.881231e-01   2.432694e+00   1.677987e+00   5.475051e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.250999e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Te S   1.300376e+00   1.804151e+00   2.124568e+00   3.354428e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.540087e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Zn Cd   1.182358e+00   2.663951e+00   1.527956e+00   2.484224e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.674460e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Zn Te   1.385284e+00   2.352141e+00   1.810919e+00   2.295069e+01   1.200000e+00  -3.333333e-01   7.049600e+00   8.861252e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Zn Zn   6.908179e-01   2.238699e+00   1.812616e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.010632e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Zn Se   1.352371e+00   2.045165e+00   1.953387e+00   2.322829e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.116149e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Zn Hg   4.881231e-01   2.432694e+00   1.677987e+00   3.866344e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.250999e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Zn S   1.300376e+00   1.804151e+00   2.124568e+00   2.368813e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.540087e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Se Cd   1.182358e+00   2.663951e+00   1.527956e+00   3.475816e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.674460e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Se Te   1.385284e+00   2.352141e+00   1.810919e+00   3.211159e+01   1.200000e+00  -3.333333e-01   7.049600e+00   8.861252e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Se Zn   6.908179e-01   2.238699e+00   1.812616e+00   4.547256e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.010632e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Se Se   1.352371e+00   2.045165e+00   1.953387e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.116149e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Se Hg   4.881231e-01   2.432694e+00   1.677987e+00   5.409618e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.250999e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Se S   1.300376e+00   1.804151e+00   2.124568e+00   3.314338e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.540087e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Hg Cd   1.182358e+00   2.663951e+00   1.527956e+00   2.088207e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.674460e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Hg Te   1.385284e+00   2.352141e+00   1.810919e+00   1.929206e+01   1.200000e+00  -3.333333e-01   7.049600e+00   8.861252e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Hg Zn   6.908179e-01   2.238699e+00   1.812616e+00   2.731909e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.010632e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Hg Se   1.352371e+00   2.045165e+00   1.953387e+00   1.952541e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.116149e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Hg Hg   4.881231e-01   2.432694e+00   1.677987e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.250999e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd Hg S   1.300376e+00   1.804151e+00   2.124568e+00   1.991194e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.540087e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd S Cd   1.182358e+00   2.663951e+00   1.527956e+00   3.408343e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.674460e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd S Te   1.385284e+00   2.352141e+00   1.810919e+00   3.148823e+01   1.200000e+00  -3.333333e-01   7.049600e+00   8.861252e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd S Zn   6.908179e-01   2.238699e+00   1.812616e+00   4.458985e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.010632e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd S Se   1.352371e+00   2.045165e+00   1.953387e+00   3.186911e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.116149e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Cd S Hg   4.881231e-01   2.432694e+00   1.677987e+00   5.304605e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.250999e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Cd S S   1.300376e+00   1.804151e+00   2.124568e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.540087e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Cd Cd   1.385284e+00   2.352141e+00   1.810919e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   8.861252e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Cd Te   1.849775e+00   2.905254e+00   1.594353e+00   2.812506e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.307283e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Cd Zn   1.546239e+00   2.056363e+00   1.907922e+00   3.076200e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.255846e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Cd Se   1.295053e+00   2.231716e+00   1.809645e+00   3.361313e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.005396e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Cd Hg   1.204715e+00   2.135591e+00   1.892491e+00   3.485063e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.445180e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Cd S   1.450015e+00   2.297301e+00   1.726905e+00   3.176630e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.794685e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Te Cd   1.385284e+00   2.352141e+00   1.810919e+00   3.755548e+01   1.200000e+00  -3.333333e-01   7.049600e+00   8.861252e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Te Te   1.849775e+00   2.905254e+00   1.594353e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.307283e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Te Zn   1.546239e+00   2.056363e+00   1.907922e+00   3.554713e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.255846e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Te Se   1.295053e+00   2.231716e+00   1.809645e+00   3.884177e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.005396e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Te Hg   1.204715e+00   2.135591e+00   1.892491e+00   4.027176e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.445180e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Te S   1.450015e+00   2.297301e+00   1.726905e+00   3.670765e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.794685e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Zn Cd   1.385284e+00   2.352141e+00   1.810919e+00   3.433620e+01   1.200000e+00  -3.333333e-01   7.049600e+00   8.861252e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Zn Te   1.849775e+00   2.905254e+00   1.594353e+00   2.971408e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.307283e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Zn Zn   1.546239e+00   2.056363e+00   1.907922e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.255846e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Zn Se   1.295053e+00   2.231716e+00   1.809645e+00   3.551222e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.005396e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Zn Hg   1.204715e+00   2.135591e+00   1.892491e+00   3.681964e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.445180e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Zn S   1.450015e+00   2.297301e+00   1.726905e+00   3.356105e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.794685e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Se Cd   1.385284e+00   2.352141e+00   1.810919e+00   3.142373e+01   1.200000e+00  -3.333333e-01   7.049600e+00   8.861252e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Se Te   1.849775e+00   2.905254e+00   1.594353e+00   2.719366e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.307283e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Se Zn   1.546239e+00   2.056363e+00   1.907922e+00   2.974328e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.255846e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Se Se   1.295053e+00   2.231716e+00   1.809645e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.005396e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Se Hg   1.204715e+00   2.135591e+00   1.892491e+00   3.369652e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.445180e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Se S   1.450015e+00   2.297301e+00   1.726905e+00   3.071433e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.794685e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Hg Cd   1.385284e+00   2.352141e+00   1.810919e+00   3.030791e+01   1.200000e+00  -3.333333e-01   7.049600e+00   8.861252e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Hg Te   1.849775e+00   2.905254e+00   1.594353e+00   2.622805e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.307283e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te Hg Zn   1.546239e+00   2.056363e+00   1.907922e+00   2.868714e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.255846e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Hg Se   1.295053e+00   2.231716e+00   1.809645e+00   3.134597e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.005396e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Hg Hg   1.204715e+00   2.135591e+00   1.892491e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.445180e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te Hg S   1.450015e+00   2.297301e+00   1.726905e+00   2.962370e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.794685e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te S Cd   1.385284e+00   2.352141e+00   1.810919e+00   3.325065e+01   1.200000e+00  -3.333333e-01   7.049600e+00   8.861252e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te S Te   1.849775e+00   2.905254e+00   1.594353e+00   2.877465e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.307283e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Te S Zn   1.546239e+00   2.056363e+00   1.907922e+00   3.147250e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.255846e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te S Se   1.295053e+00   2.231716e+00   1.809645e+00   3.438949e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.005396e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te S Hg   1.204715e+00   2.135591e+00   1.892491e+00   3.565557e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.445180e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Te S S   1.450015e+00   2.297301e+00   1.726905e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.794685e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Cd Cd   6.908179e-01   2.238699e+00   1.812616e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.010632e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Cd Te   1.546239e+00   2.056363e+00   1.907922e+00   2.172335e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.255846e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Cd Zn   1.392961e+00   2.367650e+00   1.525521e+00   2.288736e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.676279e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Cd Se   1.691181e+00   2.028827e+00   1.836907e+00   2.077161e+01   1.200000e+00  -3.333333e-01   7.049600e+00   9.510930e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Cd Hg   4.951616e-01   2.239186e+00   1.761363e+00   3.838766e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.461167e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Cd S   2.208390e+00   2.323783e+00   1.589241e+00   1.817721e+01   1.200000e+00  -3.333333e-01   7.049600e+00   4.643181e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Te Cd   6.908179e-01   2.238699e+00   1.812616e+00   4.862279e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.010632e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Te Te   1.546239e+00   2.056363e+00   1.907922e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.255846e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Te Zn   1.392961e+00   2.367650e+00   1.525521e+00   3.424146e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.676279e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Te Se   1.691181e+00   2.028827e+00   1.836907e+00   3.107611e+01   1.200000e+00  -3.333333e-01   7.049600e+00   9.510930e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Te Hg   4.951616e-01   2.239186e+00   1.761363e+00   5.743124e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.461167e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Te S   2.208390e+00   2.323783e+00   1.589241e+00   2.719467e+01   1.200000e+00  -3.333333e-01   7.049600e+00   4.643181e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Zn Cd   6.908179e-01   2.238699e+00   1.812616e+00   4.614993e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.010632e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Zn Te   1.546239e+00   2.056363e+00   1.907922e+00   3.084711e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.255846e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Zn Zn   1.392961e+00   2.367650e+00   1.525521e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.676279e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Zn Se   1.691181e+00   2.028827e+00   1.836907e+00   2.949563e+01   1.200000e+00  -3.333333e-01   7.049600e+00   9.510930e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Zn Hg   4.951616e-01   2.239186e+00   1.761363e+00   5.451040e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.461167e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Zn S   2.208390e+00   2.323783e+00   1.589241e+00   2.581160e+01   1.200000e+00  -3.333333e-01   7.049600e+00   4.643181e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Se Cd   6.908179e-01   2.238699e+00   1.812616e+00   5.085067e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.010632e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Se Te   1.546239e+00   2.056363e+00   1.907922e+00   3.398914e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.255846e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Se Zn   1.392961e+00   2.367650e+00   1.525521e+00   3.581039e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.676279e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Se Se   1.691181e+00   2.028827e+00   1.836907e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   9.510930e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Se Hg   4.951616e-01   2.239186e+00   1.761363e+00   6.006272e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.461167e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Se S   2.208390e+00   2.323783e+00   1.589241e+00   2.844072e+01   1.200000e+00  -3.333333e-01   7.049600e+00   4.643181e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Hg Cd   6.908179e-01   2.238699e+00   1.812616e+00   2.751535e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.010632e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Hg Te   1.546239e+00   2.056363e+00   1.907922e+00   1.839156e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.255846e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Hg Zn   1.392961e+00   2.367650e+00   1.525521e+00   1.937704e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.676279e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Hg Se   1.691181e+00   2.028827e+00   1.836907e+00   1.758578e+01   1.200000e+00  -3.333333e-01   7.049600e+00   9.510930e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Hg Hg   4.951616e-01   2.239186e+00   1.761363e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.461167e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn Hg S   2.208390e+00   2.323783e+00   1.589241e+00   1.538930e+01   1.200000e+00  -3.333333e-01   7.049600e+00   4.643181e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn S Cd   6.908179e-01   2.238699e+00   1.812616e+00   5.810847e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.010632e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Zn S Te   1.546239e+00   2.056363e+00   1.907922e+00   3.884033e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.255846e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Zn S Zn   1.392961e+00   2.367650e+00   1.525521e+00   4.092153e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.676279e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn S Se   1.691181e+00   2.028827e+00   1.836907e+00   3.713865e+01   1.200000e+00  -3.333333e-01   7.049600e+00   9.510930e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn S Hg   4.951616e-01   2.239186e+00   1.761363e+00   6.863534e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.461167e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Zn S S   2.208390e+00   2.323783e+00   1.589241e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   4.643181e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Cd Cd   1.352371e+00   2.045165e+00   1.953387e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.116149e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Cd Te   1.295053e+00   2.231716e+00   1.809645e+00   3.321142e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.005396e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Cd Zn   1.691181e+00   2.028827e+00   1.836907e+00   2.906271e+01   1.200000e+00  -3.333333e-01   7.049600e+00   9.510930e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Cd Se   2.400781e+00   2.789002e+00   1.544925e+00   2.439242e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.672131e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Cd Hg   1.299758e+00   2.113406e+00   1.831821e+00   3.315126e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.150200e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Cd S   1.307592e+00   2.229392e+00   1.747782e+00   3.305180e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.932325e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Te Cd   1.352371e+00   2.045165e+00   1.953387e+00   3.180382e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.116149e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Te Te   1.295053e+00   2.231716e+00   1.809645e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.005396e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Te Zn   1.691181e+00   2.028827e+00   1.836907e+00   2.844016e+01   1.200000e+00  -3.333333e-01   7.049600e+00   9.510930e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Te Se   2.400781e+00   2.789002e+00   1.544925e+00   2.386992e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.672131e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Te Hg   1.299758e+00   2.113406e+00   1.831821e+00   3.244113e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.150200e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Te S   1.307592e+00   2.229392e+00   1.747782e+00   3.234380e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.932325e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Zn Cd   1.352371e+00   2.045165e+00   1.953387e+00   3.634382e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.116149e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Zn Te   1.295053e+00   2.231716e+00   1.809645e+00   3.713938e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.005396e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Zn Zn   1.691181e+00   2.028827e+00   1.836907e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   9.510930e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Zn Se   2.400781e+00   2.789002e+00   1.544925e+00   2.727735e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.672131e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Zn Hg   1.299758e+00   2.113406e+00   1.831821e+00   3.707211e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.150200e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Zn S   1.307592e+00   2.229392e+00   1.747782e+00   3.696088e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.932325e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Se Cd   1.352371e+00   2.045165e+00   1.953387e+00   4.330238e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.116149e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Se Te   1.295053e+00   2.231716e+00   1.809645e+00   4.425026e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.005396e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Se Zn   1.691181e+00   2.028827e+00   1.836907e+00   3.872260e+01   1.200000e+00  -3.333333e-01   7.049600e+00   9.510930e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Se Se   2.400781e+00   2.789002e+00   1.544925e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.672131e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Se Hg   1.299758e+00   2.113406e+00   1.831821e+00   4.417011e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.150200e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Se S   1.307592e+00   2.229392e+00   1.747782e+00   4.403758e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.932325e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Hg Cd   1.352371e+00   2.045165e+00   1.953387e+00   3.186153e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.116149e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Hg Te   1.295053e+00   2.231716e+00   1.809645e+00   3.255898e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.005396e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Hg Zn   1.691181e+00   2.028827e+00   1.836907e+00   2.849177e+01   1.200000e+00  -3.333333e-01   7.049600e+00   9.510930e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Hg Se   2.400781e+00   2.789002e+00   1.544925e+00   2.391323e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.672131e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se Hg Hg   1.299758e+00   2.113406e+00   1.831821e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.150200e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se Hg S   1.307592e+00   2.229392e+00   1.747782e+00   3.240249e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.932325e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se S Cd   1.352371e+00   2.045165e+00   1.953387e+00   3.195742e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.116149e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se S Te   1.295053e+00   2.231716e+00   1.809645e+00   3.265696e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.005396e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se S Zn   1.691181e+00   2.028827e+00   1.836907e+00   2.857751e+01   1.200000e+00  -3.333333e-01   7.049600e+00   9.510930e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se S Se   2.400781e+00   2.789002e+00   1.544925e+00   2.398520e+01   1.200000e+00  -3.333333e-01   7.917000e+00   7.672131e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Se S Hg   1.299758e+00   2.113406e+00   1.831821e+00   3.259780e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.150200e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Se S S   1.307592e+00   2.229392e+00   1.747782e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.932325e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Cd Cd   4.881231e-01   2.432694e+00   1.677987e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.250999e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Cd Te   1.204715e+00   2.135591e+00   1.892491e+00   2.068740e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.445180e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Cd Zn   4.951616e-01   2.239186e+00   1.761363e+00   3.226819e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.461167e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Cd Se   1.299758e+00   2.113406e+00   1.831821e+00   1.991668e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.150200e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Cd Hg   1.272807e+00   2.699097e+00   1.498503e+00   2.012643e+01   1.200000e+00  -3.333333e-01   7.917000e+00   1.211532e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Cd S   1.531211e+00   2.025045e+00   1.833708e+00   1.834976e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.184541e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Te Cd   4.881231e-01   2.432694e+00   1.677987e+00   5.105765e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.250999e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Te Te   1.204715e+00   2.135591e+00   1.892491e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.445180e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Te Zn   4.951616e-01   2.239186e+00   1.761363e+00   5.069347e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.461167e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Te Se   1.299758e+00   2.113406e+00   1.831821e+00   3.128919e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.150200e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Te Hg   1.272807e+00   2.699097e+00   1.498503e+00   3.161872e+01   1.200000e+00  -3.333333e-01   7.917000e+00   1.211532e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Te S   1.531211e+00   2.025045e+00   1.833708e+00   2.882756e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.184541e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Zn Cd   4.881231e-01   2.432694e+00   1.677987e+00   3.273348e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.250999e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Zn Te   1.204715e+00   2.135591e+00   1.892491e+00   2.083602e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.445180e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Zn Zn   4.951616e-01   2.239186e+00   1.761363e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.461167e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Zn Se   1.299758e+00   2.113406e+00   1.831821e+00   2.005976e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.150200e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Zn Hg   1.272807e+00   2.699097e+00   1.498503e+00   2.027102e+01   1.200000e+00  -3.333333e-01   7.917000e+00   1.211532e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Zn S   1.531211e+00   2.025045e+00   1.833708e+00   1.848159e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.184541e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Se Cd   4.881231e-01   2.432694e+00   1.677987e+00   5.303345e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.250999e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Se Te   1.204715e+00   2.135591e+00   1.892491e+00   3.375766e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.445180e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Se Zn   4.951616e-01   2.239186e+00   1.761363e+00   5.265518e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.461167e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Se Se   1.299758e+00   2.113406e+00   1.831821e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.150200e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Se Hg   1.272807e+00   2.699097e+00   1.498503e+00   3.284228e+01   1.200000e+00  -3.333333e-01   7.917000e+00   1.211532e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Se S   1.531211e+00   2.025045e+00   1.833708e+00   2.994311e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.184541e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Hg Cd   4.881231e-01   2.432694e+00   1.677987e+00   5.248074e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.250999e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Hg Te   1.204715e+00   2.135591e+00   1.892491e+00   3.340584e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.445180e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Hg Zn   4.951616e-01   2.239186e+00   1.761363e+00   5.210641e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.461167e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Hg Se   1.299758e+00   2.113406e+00   1.831821e+00   3.216129e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.150200e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Hg Hg   1.272807e+00   2.699097e+00   1.498503e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.917000e+00   1.211532e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg Hg S   1.531211e+00   2.025045e+00   1.833708e+00   2.963105e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.184541e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg S Cd   4.881231e-01   2.432694e+00   1.677987e+00   5.756205e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.250999e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Hg S Te   1.204715e+00   2.135591e+00   1.892491e+00   3.664028e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.445180e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg S Zn   4.951616e-01   2.239186e+00   1.761363e+00   5.715148e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.461167e-01   4.000000e+00   0.000000e+00   0.000000e+00
+Hg S Se   1.299758e+00   2.113406e+00   1.831821e+00   3.527522e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.150200e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg S Hg   1.272807e+00   2.699097e+00   1.498503e+00   3.564673e+01   1.200000e+00  -3.333333e-01   7.917000e+00   1.211532e+00   4.000000e+00   0.000000e+00   0.000000e+00
+Hg S S   1.531211e+00   2.025045e+00   1.833708e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.184541e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Cd Cd   1.300376e+00   1.804151e+00   2.124568e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.540087e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Cd Te   1.450015e+00   2.297301e+00   1.726905e+00   3.077737e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.794685e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Cd Zn   2.208390e+00   2.323783e+00   1.589241e+00   2.493905e+01   1.200000e+00  -3.333333e-01   7.049600e+00   4.643181e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Cd Se   1.307592e+00   2.229392e+00   1.747782e+00   3.241019e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.932325e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Cd Hg   1.531211e+00   2.025045e+00   1.833708e+00   2.995023e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.184541e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Cd S   2.434871e+00   2.423171e+00   1.711097e+00   2.375088e+01   1.200000e+00  -3.333333e-01   7.917000e+00   1.049688e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Te Cd   1.300376e+00   1.804151e+00   2.124568e+00   3.431904e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.540087e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Te Te   1.450015e+00   2.297301e+00   1.726905e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.794685e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Te Zn   2.208390e+00   2.323783e+00   1.589241e+00   2.633490e+01   1.200000e+00  -3.333333e-01   7.049600e+00   4.643181e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Te Se   1.307592e+00   2.229392e+00   1.747782e+00   3.422421e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.932325e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Te Hg   1.531211e+00   2.025045e+00   1.833708e+00   3.162656e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.184541e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Te S   2.434871e+00   2.423171e+00   1.711097e+00   2.508023e+01   1.200000e+00  -3.333333e-01   7.917000e+00   1.049688e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Zn Cd   1.300376e+00   1.804151e+00   2.124568e+00   4.235326e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.540087e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Zn Te   1.450015e+00   2.297301e+00   1.726905e+00   4.010837e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.794685e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Zn Zn   2.208390e+00   2.323783e+00   1.589241e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   4.643181e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Zn Se   1.307592e+00   2.229392e+00   1.747782e+00   4.223622e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.932325e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Zn Hg   1.531211e+00   2.025045e+00   1.833708e+00   3.903046e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.184541e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Zn S   2.434871e+00   2.423171e+00   1.711097e+00   3.095161e+01   1.200000e+00  -3.333333e-01   7.917000e+00   1.049688e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Se Cd   1.300376e+00   1.804151e+00   2.124568e+00   3.259006e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.540087e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Se Te   1.450015e+00   2.297301e+00   1.726905e+00   3.086266e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.794685e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Se Zn   2.208390e+00   2.323783e+00   1.589241e+00   2.500815e+01   1.200000e+00  -3.333333e-01   7.049600e+00   4.643181e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Se Se   1.307592e+00   2.229392e+00   1.747782e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.932325e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Se Hg   1.531211e+00   2.025045e+00   1.833708e+00   3.003322e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.184541e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Se S   2.434871e+00   2.423171e+00   1.711097e+00   2.381670e+01   1.200000e+00  -3.333333e-01   7.917000e+00   1.049688e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Hg Cd   1.300376e+00   1.804151e+00   2.124568e+00   3.526684e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.540087e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Hg Te   1.450015e+00   2.297301e+00   1.726905e+00   3.339756e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.794685e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Hg Zn   2.208390e+00   2.323783e+00   1.589241e+00   2.706220e+01   1.200000e+00  -3.333333e-01   7.049600e+00   4.643181e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Hg Se   1.307592e+00   2.229392e+00   1.747782e+00   3.516939e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.932325e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S Hg Hg   1.531211e+00   2.025045e+00   1.833708e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.184541e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S Hg S   2.434871e+00   2.423171e+00   1.711097e+00   2.577288e+01   1.200000e+00  -3.333333e-01   7.917000e+00   1.049688e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S S Cd   1.300376e+00   1.804151e+00   2.124568e+00   4.447203e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.540087e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S S Te   1.450015e+00   2.297301e+00   1.726905e+00   4.211484e+01   1.200000e+00  -3.333333e-01   7.049600e+00   7.794685e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S S Zn   2.208390e+00   2.323783e+00   1.589241e+00   3.412585e+01   1.200000e+00  -3.333333e-01   7.049600e+00   4.643181e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S S Se   1.307592e+00   2.229392e+00   1.747782e+00   4.434914e+01   1.200000e+00  -3.333333e-01   7.049600e+00   6.932325e-01   4.000000e+00   0.000000e+00   0.000000e+00
+S S Hg   1.531211e+00   2.025045e+00   1.833708e+00   4.098300e+01   1.200000e+00  -3.333333e-01   7.049600e+00   1.184541e+00   4.000000e+00   0.000000e+00   0.000000e+00
+S S S   2.434871e+00   2.423171e+00   1.711097e+00   3.250000e+01   1.200000e+00  -3.333333e-01   7.917000e+00   1.049688e+00   4.000000e+00   0.000000e+00   0.000000e+00
diff --git a/examples/threebody/InP.vashishta b/examples/threebody/InP.vashishta
new file mode 100644
index 0000000000000000000000000000000000000000..9fefd4ef195d7c2c48e116cf10aa44b725715c8a
--- /dev/null
+++ b/examples/threebody/InP.vashishta
@@ -0,0 +1,38 @@
+# DATE: 2015-10-14 CONTRIBUTOR: Aidan Thompson, athomps@sandia.gov CITATION: Branicio, Rino, Gan and Tsuzuki, J. Phys Condensed Matter 21 (2009) 095002
+#
+# Vashishta potential file for InP, Branicio, Rino, Gan and Tsuzuki, 
+# J. Phys Condensed Matter 21 (2009) 095002
+#
+# These entries are in LAMMPS "metal" units:
+#   H = eV*Angstroms^eta; Zi, Zj = |e| (e = electronic charge); 
+#   lambda1, lambda4, rc, r0, gamma = Angstroms; 
+#   D = eV*Angstroms^4; W = eV*Angstroms^6; B = eV; 
+#   other quantities are unitless
+
+# element1  element2  element3
+#           H  eta  Zi  Zj  lambda1  D  lambda4
+#           W  rc  B  gamma  r0  C  cos(theta)
+
+In  In  In  273.584  7  -1.21  -1.21  4.5  0.0  2.75
+            0.0  6.0  0.0  0.0  0.0  0.0  0.0
+
+P   P   P   1813.06  7  1.21  1.21  4.5  52.7067  2.75
+            0.0  6.0  0.0  0.0  0.0  0.0  -0.333333333333
+
+In  P   P   4847.09  9  1.21  -1.21  4.5  26.3533  2.75
+            270.105  6.0  4.34967  1.0  3.55  7.0  -0.333333333333
+
+P   In  In  4847.09  9  1.21  -1.21  4.5  26.3533  2.75
+            270.105  6.0  4.34967  1.0  3.55  7.0  -0.333333333333
+
+In  In  P   0.0  0.0  0.0  0.0  0.0  0.0  0.0
+            0.0  0.0  0.0  0.0  0.0  0.0  0.0
+
+In  P   In  0.0  0.0  0.0  0.0  0.0  0.0  0.0
+            0.0  0.0  0.0  0.0  0.0  0.0  0.0
+
+P   In  P   0.0  0.0  0.0  0.0  0.0  0.0  0.0
+            0.0  0.0  0.0  0.0  0.0  0.0  0.0
+
+P   P   In  0.0  0.0  0.0  0.0  0.0  0.0  0.0
+            0.0  0.0  0.0  0.0  0.0  0.0  0.0
diff --git a/examples/threebody/Si.sw b/examples/threebody/Si.sw
new file mode 100644
index 0000000000000000000000000000000000000000..db4be100ef47f7d5732186b68bcc263d36f67b41
--- /dev/null
+++ b/examples/threebody/Si.sw
@@ -0,0 +1,18 @@
+# DATE: 2007-06-11 CONTRIBUTOR: Aidan Thompson, athomps@sandia.gov CITATION: Stillinger and Weber,  Phys Rev B, 31, 5262, (1985)
+# Stillinger-Weber parameters for various elements and mixtures
+# multiple entries can be added to this file, LAMMPS reads the ones it needs
+# these entries are in LAMMPS "metal" units:
+#   epsilon = eV; sigma = Angstroms
+#   other quantities are unitless
+
+# format of a single entry (one or more lines):
+#   element 1, element 2, element 3, 
+#   epsilon, sigma, a, lambda, gamma, costheta0, A, B, p, q, tol
+
+# Here are the original parameters in metal units, for Silicon from:
+#
+# Stillinger and Weber,  Phys. Rev. B, v. 31, p. 5262, (1985)
+#
+
+Si Si Si 2.1683  2.0951  1.80  21.0  1.20  -0.333333333333
+         7.049556277  0.6022245584  4.0  0.0 0.0
diff --git a/examples/threebody/in.threebody b/examples/threebody/in.threebody
new file mode 100644
index 0000000000000000000000000000000000000000..6eff77d6d67b7d5ff6ea0a41cac289c9ad547c7b
--- /dev/null
+++ b/examples/threebody/in.threebody
@@ -0,0 +1,116 @@
+# Simple regression tests for threebody potentials
+
+# NOTE: These are not intended to represent real materials
+
+units           metal
+
+atom_style      atomic
+atom_modify     map array
+boundary        p p p
+atom_modify	sort 0 0.0
+
+# temperature
+
+variable t equal 1800.0
+
+# cubic diamond unit cell
+
+variable a equal 5.431
+lattice         custom $a               &
+                a1 1.0 0.0 0.0          &
+                a2 0.0 1.0 0.0          &
+                a3 0.0 0.0 1.0          &
+                basis 0.0 0.0 0.0       &
+                basis 0.0 0.5 0.5       &
+                basis 0.5 0.0 0.5       &
+                basis 0.5 0.5 0.0       &
+                basis 0.25 0.25 0.25    &
+                basis 0.25 0.75 0.75    &
+                basis 0.75 0.25 0.75    &
+                basis 0.75 0.75 0.25
+
+region          myreg block     0 4 &
+                                0 4 &
+                                0 4
+
+create_box      8 myreg
+create_atoms    1 region myreg &
+		basis 1 1  &
+		basis 2 2  &
+		basis 3 3  &
+		basis 4 4  &
+		basis 5 5  &
+		basis 6 6  &
+		basis 7 7  &
+		basis 8 8
+
+mass            *       28.06
+
+velocity 	all create $t 5287287 mom yes rot yes dist gaussian
+
+# Equilibrate using Stillinger-Weber model for silicon
+
+pair_style      sw
+pair_coeff 	* * Si.sw Si Si Si Si Si Si Si Si
+
+thermo          10
+fix             1 all nvt temp $t $t 0.1
+fix_modify 	1 energy yes
+timestep        1.0e-3
+neighbor        1.0 bin
+neigh_modify    every 1 delay 10 check yes
+run             100
+
+write_restart	restart.equil
+
+# Test Stillinger-Weber model for Cd/Te/Zn/Se/Hg/S
+
+clear
+read_restart	restart.equil
+
+pair_style      sw
+pair_coeff 	* * CdTeZnSeHgS0.sw Cd Zn Hg Cd Te S Se Te
+
+thermo          10
+fix             1 all nvt temp $t $t 0.1
+fix_modify 	1 energy yes
+timestep        1.0e-3
+neighbor        1.0 bin
+neigh_modify    every 1 delay 10 check yes
+run             100
+
+# Test Vashishta model for In/P
+
+clear
+read_restart	restart.equil
+
+pair_style      vashishta
+pair_coeff 	* * InP.vashishta In In In In P P P P
+
+thermo          10
+fix             1 all nvt temp $t $t 0.1
+fix_modify 	1 energy yes
+timestep        1.0e-3
+neighbor        1.0 bin
+neigh_modify    every 1 delay 10 check yes
+run             100
+
+# Test Tersoff model for B/N/C 
+
+clear
+read_restart	restart.equil
+
+variable	fac equal 0.6
+change_box 	all x scale ${fac} y scale ${fac} z scale ${fac} remap
+
+pair_style      tersoff
+pair_coeff 	* * BNC.tersoff N N N C B B C B
+
+thermo          10
+fix             1 all nvt temp $t $t 0.1
+fix_modify 	1 energy yes
+timestep        1.0e-3
+neighbor        1.0 bin
+neigh_modify    every 1 delay 10 check yes
+run             100
+
diff --git a/potentials/CdTe.sw b/potentials/CdTe.sw
index ed79f7d384a56a26f584887b9cbaa15c96239074..3259657d069d02ea02c81fa7bb8535b3d6f75d66 100644
--- a/potentials/CdTe.sw
+++ b/potentials/CdTe.sw
@@ -18,9 +18,11 @@
 # sqrt(lambda_ij*epsilon_ij*lambda_ik*epsilon_ik)/lambda_ik, and the
 # results are directly entered in this table. Obviously, this
 # conversion does not change the two-body parameters epsilon_ijj. 
-# All other ik pair parameters are entered on the i*k line, where *
-# can be any species. This is consistent with the requirement of
-# the ik parameter being on the ikk line.
+
+# The twobody ik pair parameters are entered on the i*k lines, where *
+# can be any species. This is consistent with the LAMMPS requirement
+# that twobody ik parameters be defined on the ikk line. Entries on all
+# the other i*k lines are ignored by LAMMPS
 
 # These entries are in LAMMPS "metal" units: epsilon = eV;
 # sigma = Angstroms; other quantities are unitless
diff --git a/potentials/CdTeZnSeHgS0.sw b/potentials/CdTeZnSeHgS0.sw
index cae54097ddbef706cdc5e5a72ee91f000d886843..d6f05d41df7ce44e05b2ba0700f1fb35d6b0450e 100644
--- a/potentials/CdTeZnSeHgS0.sw
+++ b/potentials/CdTeZnSeHgS0.sw
@@ -1,9 +1,17 @@
 ### DATE: 2013-08-09 CONTRIBUTOR: X. W. Zhou, xzhou@sandia.gov, CITATION: Zhou, Ward, Martin, van Swol, Cruz-Campa, and D. Zubia, Phys. Rev. B, 88, 085309 (2013).
 #
-# Note that the way the parameters can be entered is not unique. As one way, we assume that eps_ijk is equal to eps_ik and lambda_ijk is equal to
-# sqrt(lambda_ij*eps_ij*lambda_ik*eps_ik)/eps_ik, and all other parameters in the ijk line are for ik.
+# Note that the way the parameters can be entered is not unique.
+# As one way, we assume that eps_ijk is equal to eps_ik and
+# lambda_ijk is equal to sqrt(lambda_ij*eps_ij*lambda_ik*eps_ik)/eps_ik,
+# and all other parameters in the ijk line are for ik.
+#
+# The twobody ik pair parameters are entered on the i*k lines, where *
+# can be any species. This is consistent with the LAMMPS requirement
+# that twobody ik parameters be defined on the ikk line. Entries on all
+# the other i*k lines are ignored by LAMMPS
 #  
-# These entries are in LAMMPS "metal" units: epsilon = eV; sigma = Angstroms; other quantities are unitless;
+# These entries are in LAMMPS "metal" units: epsilon = eV;
+# sigma = Angstroms; other quantities are unitless
 #
 # cutoff distance = 4.632
 #               eps          sigma            a            lambda          gamma       cos(theta)         A              B              p              q             tol
diff --git a/src/ASPHERE/pair_gayberne.cpp b/src/ASPHERE/pair_gayberne.cpp
index 4aae7177dae1c01ccd883413b39f0d8122a0c339..bdff7a5cd684e7481832aaae8ed7cdea3db4408e 100644
--- a/src/ASPHERE/pair_gayberne.cpp
+++ b/src/ASPHERE/pair_gayberne.cpp
@@ -297,8 +297,8 @@ void PairGayBerne::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/ASPHERE/pair_line_lj.cpp b/src/ASPHERE/pair_line_lj.cpp
index aa3493ef47c1511424d284c236d628c654631943..4e3df473a385bc92d635ae66406613bd061382dc 100644
--- a/src/ASPHERE/pair_line_lj.cpp
+++ b/src/ASPHERE/pair_line_lj.cpp
@@ -371,8 +371,8 @@ void PairLineLJ::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double size_itype = force->numeric(FLERR,arg[2]);
   double size_jtype = force->numeric(FLERR,arg[3]);
diff --git a/src/ASPHERE/pair_resquared.cpp b/src/ASPHERE/pair_resquared.cpp
index 870ec95740eb0d0f314653953ec6cff584b0eebb..172516aa49021691de908ca9b24cfcff3db156eb 100644
--- a/src/ASPHERE/pair_resquared.cpp
+++ b/src/ASPHERE/pair_resquared.cpp
@@ -269,8 +269,8 @@ void PairRESquared::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/ASPHERE/pair_tri_lj.cpp b/src/ASPHERE/pair_tri_lj.cpp
index ef5123dc11b3f3da24bb0ab0f58908eda9a3cbc2..773ad2d6a3737707d53112462818d4ebec33aea9 100644
--- a/src/ASPHERE/pair_tri_lj.cpp
+++ b/src/ASPHERE/pair_tri_lj.cpp
@@ -442,8 +442,8 @@ void PairTriLJ::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/BODY/pair_body.cpp b/src/BODY/pair_body.cpp
index 86fea7e859c43bdad3f51192db3261398d34e29e..2a9edb37cc5fc365e0d9391440950535286a57ce 100644
--- a/src/BODY/pair_body.cpp
+++ b/src/BODY/pair_body.cpp
@@ -388,8 +388,8 @@ void PairBody::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/CLASS2/angle_class2.cpp b/src/CLASS2/angle_class2.cpp
index ceeba556787ad08471d158c8139410912c919642..0315e6601f65033e9185f19eba39ec2eab9c70f6 100644
--- a/src/CLASS2/angle_class2.cpp
+++ b/src/CLASS2/angle_class2.cpp
@@ -271,7 +271,7 @@ void AngleClass2::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   int count = 0;
 
diff --git a/src/CLASS2/bond_class2.cpp b/src/CLASS2/bond_class2.cpp
index b87deed5a65b41217c973c8c19a571060fac2e51..f358720e7f77b074820e80c3e4cf4bea72b43427 100644
--- a/src/CLASS2/bond_class2.cpp
+++ b/src/CLASS2/bond_class2.cpp
@@ -132,7 +132,7 @@ void BondClass2::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nbondtypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi);
 
   double r0_one = force->numeric(FLERR,arg[1]);
   double k2_one = force->numeric(FLERR,arg[2]);
diff --git a/src/CLASS2/dihedral_class2.cpp b/src/CLASS2/dihedral_class2.cpp
index d18d75b155fdf038aec42508b5fe3dfefa9fa31e..78be10fbcac7554c7686702d1de1ea6a636096f5 100644
--- a/src/CLASS2/dihedral_class2.cpp
+++ b/src/CLASS2/dihedral_class2.cpp
@@ -640,7 +640,7 @@ void DihedralClass2::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   int count = 0;
 
diff --git a/src/CLASS2/improper_class2.cpp b/src/CLASS2/improper_class2.cpp
index 6c599276ca1b27c1fa2c168c53ed4aef45ae7cc2..618e20f6c38a320103642a6d5e9426eb5c17fc45 100644
--- a/src/CLASS2/improper_class2.cpp
+++ b/src/CLASS2/improper_class2.cpp
@@ -529,7 +529,7 @@ void ImproperClass2::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nimpropertypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nimpropertypes,ilo,ihi);
 
   int count = 0;
 
diff --git a/src/CLASS2/pair_lj_class2.cpp b/src/CLASS2/pair_lj_class2.cpp
index 0974769b9c7c3464b3306b488f9e329e8c480a2b..ee61aaae1fdcc905bf4d8ad6ed811547f29afc25 100644
--- a/src/CLASS2/pair_lj_class2.cpp
+++ b/src/CLASS2/pair_lj_class2.cpp
@@ -189,8 +189,8 @@ void PairLJClass2::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/CLASS2/pair_lj_class2_coul_cut.cpp b/src/CLASS2/pair_lj_class2_coul_cut.cpp
index c7c473868947b11ade979bb966625ef773bfd08d..45f0ccfe2788069aa47d5473195545127aef4d63 100644
--- a/src/CLASS2/pair_lj_class2_coul_cut.cpp
+++ b/src/CLASS2/pair_lj_class2_coul_cut.cpp
@@ -220,8 +220,8 @@ void PairLJClass2CoulCut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/CLASS2/pair_lj_class2_coul_long.cpp b/src/CLASS2/pair_lj_class2_coul_long.cpp
index 62ffdab6e1226a7edfbdfcabf173c2751045dd59..b58094713f79ff181c72504b5497ce91831d44cd 100644
--- a/src/CLASS2/pair_lj_class2_coul_long.cpp
+++ b/src/CLASS2/pair_lj_class2_coul_long.cpp
@@ -256,8 +256,8 @@ void PairLJClass2CoulLong::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/COLLOID/pair_brownian.cpp b/src/COLLOID/pair_brownian.cpp
index c1cc523d3262c1885a1dcb485a907b8f36094f5c..84fda485a036b0f93a1997335be4f73f2c78f5f8 100644
--- a/src/COLLOID/pair_brownian.cpp
+++ b/src/COLLOID/pair_brownian.cpp
@@ -423,8 +423,8 @@ void PairBrownian::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double cut_inner_one = cut_inner_global;
   double cut_one = cut_global;
diff --git a/src/COLLOID/pair_colloid.cpp b/src/COLLOID/pair_colloid.cpp
index b5d83233ab9ca1713609d6a2096428fdfae08d53..440d6f9d4f8f86da23ab16e97ffb3f693b20d563 100644
--- a/src/COLLOID/pair_colloid.cpp
+++ b/src/COLLOID/pair_colloid.cpp
@@ -272,8 +272,8 @@ void PairColloid::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a12_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/COLLOID/pair_lubricate.cpp b/src/COLLOID/pair_lubricate.cpp
index ea398c340a9467711ad95fb19cab7573b5eae20e..71e08f3f1993501268402885d61530e422a60c9e 100644
--- a/src/COLLOID/pair_lubricate.cpp
+++ b/src/COLLOID/pair_lubricate.cpp
@@ -509,8 +509,8 @@ void PairLubricate::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double cut_inner_one = cut_inner_global;
   double cut_one = cut_global;
diff --git a/src/COLLOID/pair_lubricateU.cpp b/src/COLLOID/pair_lubricateU.cpp
index 214bc3c2f3ed68e71fb87d2d234087582d6165f0..eafa57973ca135404c90fdbe086d28acc93f38f1 100644
--- a/src/COLLOID/pair_lubricateU.cpp
+++ b/src/COLLOID/pair_lubricateU.cpp
@@ -1739,8 +1739,8 @@ void PairLubricateU::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double cut_inner_one = cut_inner_global;
   double cut_one = cut_global;
diff --git a/src/DIPOLE/pair_lj_cut_dipole_cut.cpp b/src/DIPOLE/pair_lj_cut_dipole_cut.cpp
index 53c977f876ede3268d7d75946a166042843e0148..c57eb09e52e2f8fca83b4dac4aefe09fb8af7d1a 100644
--- a/src/DIPOLE/pair_lj_cut_dipole_cut.cpp
+++ b/src/DIPOLE/pair_lj_cut_dipole_cut.cpp
@@ -326,8 +326,8 @@ void PairLJCutDipoleCut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/DIPOLE/pair_lj_cut_dipole_long.cpp b/src/DIPOLE/pair_lj_cut_dipole_long.cpp
index 3f44579b8f265615ec61e1dd9dcb1dcfcaced593..ae85b55ff7063089c10067e04ce4eea1e9b834c4 100644
--- a/src/DIPOLE/pair_lj_cut_dipole_long.cpp
+++ b/src/DIPOLE/pair_lj_cut_dipole_long.cpp
@@ -376,8 +376,8 @@ void PairLJCutDipoleLong::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/DIPOLE/pair_lj_long_dipole_long.cpp b/src/DIPOLE/pair_lj_long_dipole_long.cpp
index 248865ef728ca04fb658a0929397d11094d6c31c..ef865b66cd50efd89d75a8c5b5d5e24770d99d07 100644
--- a/src/DIPOLE/pair_lj_long_dipole_long.cpp
+++ b/src/DIPOLE/pair_lj_long_dipole_long.cpp
@@ -194,8 +194,8 @@ void PairLJLongDipoleLong::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/GPU/pair_eam_alloy_gpu.cpp b/src/GPU/pair_eam_alloy_gpu.cpp
index 4ba784da28da24efaed3dcc1cef4a4fc41167130..ab0f499a98e6813a875753d63302cfe34bd8fa67 100644
--- a/src/GPU/pair_eam_alloy_gpu.cpp
+++ b/src/GPU/pair_eam_alloy_gpu.cpp
@@ -336,7 +336,7 @@ void PairEAMAlloyGPU::coeff(int narg, char **arg)
     for (j = i; j <= n; j++) {
       if (map[i] >= 0 && map[j] >= 0) {
         setflag[i][j] = 1;
-        if (i == j) atom->set_mass(i,setfl->mass[map[i]]);
+        if (i == j) atom->set_mass(FLERR,i,setfl->mass[map[i]]);
         count++;
       }
     }
diff --git a/src/GPU/pair_eam_fs_gpu.cpp b/src/GPU/pair_eam_fs_gpu.cpp
index c64a7d7e91ee802b2c7cca4a483d8fff3b7c28b5..a2b339db9ac6ce197b19ad7705edfb24ea132599 100644
--- a/src/GPU/pair_eam_fs_gpu.cpp
+++ b/src/GPU/pair_eam_fs_gpu.cpp
@@ -336,7 +336,7 @@ void PairEAMFSGPU::coeff(int narg, char **arg)
     for (j = i; j <= n; j++) {
       if (map[i] >= 0 && map[j] >= 0) {
         setflag[i][j] = 1;
-        if (i == j) atom->set_mass(i,fs->mass[map[i]]);
+        if (i == j) atom->set_mass(FLERR,i,fs->mass[map[i]]);
         count++;
       }
     }
diff --git a/src/GRANULAR/pair_gran_hooke_history.cpp b/src/GRANULAR/pair_gran_hooke_history.cpp
index 2652381c966c8c3a7c93ae164ce35681a9b8a114..edd12b4b2720ef4df54c46598b6e6efa2524e226 100644
--- a/src/GRANULAR/pair_gran_hooke_history.cpp
+++ b/src/GRANULAR/pair_gran_hooke_history.cpp
@@ -371,8 +371,8 @@ void PairGranHookeHistory::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   int count = 0;
   for (int i = ilo; i <= ihi; i++) {
diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp
index 9140b73f3b6ef324e875d55c9c5fcb5c30058043..b35e90511f64bfa954f16ddd1de84a02f6df1c16 100644
--- a/src/KIM/pair_kim.cpp
+++ b/src/KIM/pair_kim.cpp
@@ -343,8 +343,8 @@ void PairKIM::coeff(int narg, char **arg)
       error->all(FLERR,"Incorrect args for pair coefficients");
 
    int ilo,ihi,jlo,jhi;
-   force->bounds(arg[0],atom->ntypes,ilo,ihi);
-   force->bounds(arg[1],atom->ntypes,jlo,jhi);
+   force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+   force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
    // read args that map atom species to KIM elements
    // lmps_map_species_to_unique[i] =
diff --git a/src/KOKKOS/fix_qeq_reax_kokkos.cpp b/src/KOKKOS/fix_qeq_reax_kokkos.cpp
index d39d5cc84a2b8ff322fc411a3246c364bfe6c6f1..0c0039a18a5c35988ec94df44beaf668e3fcc354 100644
--- a/src/KOKKOS/fix_qeq_reax_kokkos.cpp
+++ b/src/KOKKOS/fix_qeq_reax_kokkos.cpp
@@ -37,7 +37,7 @@
 #include "math_const.h"
 #include "memory.h"
 #include "error.h"
-#include "pair_kokkos.h"
+#include "pair_reax_c_kokkos.h"
 
 using namespace LAMMPS_NS;
 using namespace FixConst;
@@ -62,6 +62,11 @@ FixQEqReaxKokkos<DeviceType>::FixQEqReaxKokkos(LAMMPS *lmp, int narg, char **arg
 
   nmax = nmax = m_cap = 0;
   allocated_flag = 0;
+
+  reaxc = (PairReaxC *) force->pair_match("reax/c/kk",1);
+  use_pair_list = 0;
+  if (reaxc->execution_space == this->execution_space)
+    use_pair_list = 1;
 }
 
 /* ---------------------------------------------------------------------- */
@@ -80,29 +85,54 @@ void FixQEqReaxKokkos<DeviceType>::init()
   atomKK->k_q.modify<LMPHostType>();
   atomKK->k_q.sync<LMPDeviceType>();
 
-  FixQEqReax::init();
+  //FixQEqReax::init();
+  {
+    if (!atom->q_flag) error->all(FLERR,"Fix qeq/reax requires atom attribute q");
+
+    ngroup = group->count(igroup);
+    if (ngroup == 0) error->all(FLERR,"Fix qeq/reax group has no atoms");
+
+    // need a half neighbor list w/ Newton off and ghost neighbors
+    // built whenever re-neighboring occurs
+
+    if (!use_pair_list) {
+      int irequest = neighbor->request(this,instance_me);
+      neighbor->requests[irequest]->pair = 0;
+      neighbor->requests[irequest]->fix = 1;
+      neighbor->requests[irequest]->newton = 2;
+      neighbor->requests[irequest]->ghost = 1;
+    }
+    
+    init_shielding();
+    init_taper();
+    
+    if (strstr(update->integrate_style,"respa"))
+      nlevels_respa = ((Respa *) update->integrate)->nlevels;
+  }
 
   neighflag = lmp->kokkos->neighflag;
-  int irequest = neighbor->nrequest - 1;
-
-  neighbor->requests[irequest]->
-    kokkos_host = Kokkos::Impl::is_same<DeviceType,LMPHostType>::value &&
-    !Kokkos::Impl::is_same<DeviceType,LMPDeviceType>::value;
-  neighbor->requests[irequest]->
-    kokkos_device = Kokkos::Impl::is_same<DeviceType,LMPDeviceType>::value;
-
-  if (neighflag == FULL) {
-    neighbor->requests[irequest]->fix = 1;
-    neighbor->requests[irequest]->pair = 0;
-    neighbor->requests[irequest]->full = 1;
-    neighbor->requests[irequest]->half = 0;
-    neighbor->requests[irequest]->full_cluster = 0;
-  } else { //if (neighflag == HALF || neighflag == HALFTHREAD)
-    neighbor->requests[irequest]->fix = 1;
-    neighbor->requests[irequest]->full = 0;
-    neighbor->requests[irequest]->half = 1;
-    neighbor->requests[irequest]->full_cluster = 0;
-    neighbor->requests[irequest]->ghost = 1;
+
+  if (!use_pair_list) {
+    int irequest = neighbor->nrequest - 1;
+    neighbor->requests[irequest]->
+      kokkos_host = Kokkos::Impl::is_same<DeviceType,LMPHostType>::value &&
+      !Kokkos::Impl::is_same<DeviceType,LMPDeviceType>::value;
+    neighbor->requests[irequest]->
+      kokkos_device = Kokkos::Impl::is_same<DeviceType,LMPDeviceType>::value;
+    
+    if (neighflag == FULL) {
+      neighbor->requests[irequest]->fix = 1;
+      neighbor->requests[irequest]->pair = 0;
+      neighbor->requests[irequest]->full = 1;
+      neighbor->requests[irequest]->half = 0;
+      neighbor->requests[irequest]->full_cluster = 0;
+    } else { //if (neighflag == HALF || neighflag == HALFTHREAD)
+      neighbor->requests[irequest]->fix = 1;
+      neighbor->requests[irequest]->full = 0;
+      neighbor->requests[irequest]->half = 1;
+      neighbor->requests[irequest]->full_cluster = 0;
+      neighbor->requests[irequest]->ghost = 1;
+    }
   }
 
   int ntypes = atom->ntypes;
@@ -213,6 +243,8 @@ void FixQEqReaxKokkos<DeviceType>::pre_force(int vflag)
   k_shield.template sync<DeviceType>();
   k_tap.template sync<DeviceType>();
 
+  if (use_pair_list)
+    list = reaxc->list;
   NeighListKokkos<DeviceType>* k_list = static_cast<NeighListKokkos<DeviceType>*>(list);
   d_numneigh = k_list->d_numneigh;
   d_neighbors = k_list->d_neighbors;
diff --git a/src/KOKKOS/fix_qeq_reax_kokkos.h b/src/KOKKOS/fix_qeq_reax_kokkos.h
index eca0d761b7701d2c2248f373538be2093ed21fc1..fcfc28fa74879cd593714c75821facb17d0f502b 100644
--- a/src/KOKKOS/fix_qeq_reax_kokkos.h
+++ b/src/KOKKOS/fix_qeq_reax_kokkos.h
@@ -146,7 +146,7 @@ class FixQEqReaxKokkos : public FixQEqReax {
   double memory_usage();
 
  protected:
-  int inum;
+  int inum,use_pair_list;
   int allocated_flag;
 
   typedef Kokkos::DualView<int***,DeviceType> tdual_int_1d;
diff --git a/src/KOKKOS/fix_reaxc_species_kokkos.cpp b/src/KOKKOS/fix_reaxc_species_kokkos.cpp
index d3de0c998c31b937cdebb2c4876bcd972879feb7..17b42174c6a2460920535da39bd331dd0c6c5b1b 100644
--- a/src/KOKKOS/fix_reaxc_species_kokkos.cpp
+++ b/src/KOKKOS/fix_reaxc_species_kokkos.cpp
@@ -71,12 +71,6 @@ void FixReaxCSpeciesKokkos::init()
                   "pair_style reax/c/kk");
 
   FixReaxCSpecies::init();
-
-  int irequest = neighbor->request(this,instance_me);
-  neighbor->requests[irequest]->pair = 0;
-  neighbor->requests[irequest]->fix = 1;
-  neighbor->requests[irequest]->newton = 2;
-  neighbor->requests[irequest]->ghost = 1;
 }
 
 /* ---------------------------------------------------------------------- */
@@ -86,12 +80,20 @@ void FixReaxCSpeciesKokkos::FindMolecule()
   int i,j,ii,jj,inum,itype,jtype,loop,looptot;
   int change,done,anychange;
   int *mask = atom->mask;
-  int *ilist;
   double bo_tmp,bo_cut;
   double **spec_atom = f_SPECBOND->array_atom;
 
-  inum = list->inum;
-  ilist = list->ilist;
+  inum = reaxc->list->inum;
+  typename ArrayTypes<LMPHostType>::t_int_1d ilist;
+  if (reaxc->execution_space == Host) {
+    NeighListKokkos<LMPHostType>* k_list = static_cast<NeighListKokkos<LMPHostType>*>(reaxc->list);
+    k_list->k_ilist.sync<LMPHostType>();
+    ilist = k_list->k_ilist.h_view;
+  } else {
+    NeighListKokkos<LMPDeviceType>* k_list = static_cast<NeighListKokkos<LMPDeviceType>*>(reaxc->list);
+    k_list->k_ilist.sync<LMPHostType>();
+    ilist = k_list->k_ilist.h_view;
+  }
 
   for (ii = 0; ii < inum; ii++) {
     i = ilist[ii];
diff --git a/src/KOKKOS/fix_wall_reflect_kokkos.h b/src/KOKKOS/fix_wall_reflect_kokkos.h
index f5e28796fda8100c53d9984122885c9e63c9c1e9..d59088b592cd408ee7b1b5dc1e43c8e9bd90576e 100644
--- a/src/KOKKOS/fix_wall_reflect_kokkos.h
+++ b/src/KOKKOS/fix_wall_reflect_kokkos.h
@@ -41,8 +41,6 @@ class FixWallReflectKokkos : public FixWallReflect {
   void operator()(TagFixWallReflectPostIntegrate, const int&) const;
 
  protected:
-  class AtomKokkos *atomKK;
-
   typename AT::t_x_array x;
   typename AT::t_v_array v;
   typename AT::t_int_1d_randomread mask;
diff --git a/src/KOKKOS/neigh_full_kokkos.h b/src/KOKKOS/neigh_full_kokkos.h
index 883b6dc115b4e39f1728924792e3b22640cc39ea..9125b5fbe23946436b0585cb56bd659df4f8d4c7 100644
--- a/src/KOKKOS/neigh_full_kokkos.h
+++ b/src/KOKKOS/neigh_full_kokkos.h
@@ -164,6 +164,7 @@ if (GHOST) {
     list->gnum = 0;
   }
 
+  list->k_ilist.template modify<DeviceType>();
 }
 
 /* ---------------------------------------------------------------------- */
diff --git a/src/KOKKOS/neigh_list_kokkos.cpp b/src/KOKKOS/neigh_list_kokkos.cpp
index 5fe796f84de9ad0c82d3edbe6e660c8e604c8df7..cbba2120bdae3a1eb0b2b3a2888ee3be0963addc 100644
--- a/src/KOKKOS/neigh_list_kokkos.cpp
+++ b/src/KOKKOS/neigh_list_kokkos.cpp
@@ -49,8 +49,9 @@ void NeighListKokkos<Device>::grow(int nmax)
   if (nmax <= maxatoms) return;
   maxatoms = nmax;
 
-  d_ilist =
-    typename ArrayTypes<Device>::t_int_1d("neighlist:ilist",maxatoms);
+  k_ilist =
+    DAT::tdual_int_1d("neighlist:ilist",maxatoms);
+  d_ilist = k_ilist.view<Device>();
   d_numneigh =
     typename ArrayTypes<Device>::t_int_1d("neighlist:numneigh",maxatoms);
   d_neighbors =
diff --git a/src/KOKKOS/neigh_list_kokkos.h b/src/KOKKOS/neigh_list_kokkos.h
index 5200b24595549d6dfdf6c789a9415f8f5d6dca69..85f0f38d2cfca9b7fd0150220553442342139114 100644
--- a/src/KOKKOS/neigh_list_kokkos.h
+++ b/src/KOKKOS/neigh_list_kokkos.h
@@ -71,7 +71,8 @@ public:
   void clean_copy();
   void grow(int nmax);
   typename ArrayTypes<Device>::t_neighbors_2d d_neighbors;
-  typename ArrayTypes<Device>::t_int_1d d_ilist;   // local indices of I atoms
+  typename DAT::tdual_int_1d k_ilist;   // local indices of I atoms
+  typename ArrayTypes<Device>::t_int_1d d_ilist;
   typename ArrayTypes<Device>::t_int_1d d_numneigh; // # of J neighs for each I
   typename ArrayTypes<Device>::t_int_1d d_stencil;  // # of J neighs for each I
   typename ArrayTypes<LMPHostType>::t_int_1d h_stencil; // # of J neighs per I
diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.cpp b/src/KOKKOS/pair_eam_alloy_kokkos.cpp
index 88b16d1d19d47d14ff0d302f9fc759a4819914af..151d89d2b0e58390b52c18e936f385bad4c8546a 100644
--- a/src/KOKKOS/pair_eam_alloy_kokkos.cpp
+++ b/src/KOKKOS/pair_eam_alloy_kokkos.cpp
@@ -936,7 +936,7 @@ void PairEAMAlloyKokkos<DeviceType>::coeff(int narg, char **arg)
     for (j = i; j <= n; j++) {
       if (map[i] >= 0 && map[j] >= 0) {
         setflag[i][j] = 1;
-        if (i == j) atom->set_mass(i,setfl->mass[map[i]]);
+        if (i == j) atom->set_mass(FLERR,i,setfl->mass[map[i]]);
         count++;
       }
     }
diff --git a/src/KOKKOS/pair_eam_fs_kokkos.cpp b/src/KOKKOS/pair_eam_fs_kokkos.cpp
index 83b65e8fdc2281174c43b1a6c2da03c5b7e6c420..b503d1e83a73cd38ad3d71e952c039d86bd33738 100644
--- a/src/KOKKOS/pair_eam_fs_kokkos.cpp
+++ b/src/KOKKOS/pair_eam_fs_kokkos.cpp
@@ -941,7 +941,7 @@ void PairEAMFSKokkos<DeviceType>::coeff(int narg, char **arg)
     for (j = i; j <= n; j++) {
       if (map[i] >= 0 && map[j] >= 0) {
         setflag[i][j] = 1;
-        if (i == j) atom->set_mass(i,fs->mass[map[i]]);
+        if (i == j) atom->set_mass(FLERR,i,fs->mass[map[i]]);
         count++;
       }
     }
diff --git a/src/KOKKOS/pair_reax_c_kokkos.h b/src/KOKKOS/pair_reax_c_kokkos.h
index 204ad7732f9cd56d54b30b6d442f9b0f32e2c2fa..2d746dee0d88e1f084fc0643c81ad5d90096662e 100644
--- a/src/KOKKOS/pair_reax_c_kokkos.h
+++ b/src/KOKKOS/pair_reax_c_kokkos.h
@@ -426,8 +426,6 @@ class PairReaxCKokkos : public PairReaxC {
   typename AT::t_ffloat_2d_dl d_sum_ovun;
   typename AT::t_ffloat_2d_dl d_dBOpx, d_dBOpy, d_dBOpz;
 
-  class AtomKokkos *atomKK;
-
   int neighflag,newton_pair, maxnumneigh, maxhb, maxbo;
   int nlocal,nall,eflag,vflag;
   F_FLOAT cut_nbsq, cut_hbsq, cut_bosq, bo_cut, thb_cut, thb_cutsq;
diff --git a/src/KOKKOS/pair_sw_kokkos.cpp b/src/KOKKOS/pair_sw_kokkos.cpp
index bb81a29c0a016c9c11e51436b14d6c55b8293b62..d2cda316bee0b5778dc32fde362d44b6d6bd5083 100644
--- a/src/KOKKOS/pair_sw_kokkos.cpp
+++ b/src/KOKKOS/pair_sw_kokkos.cpp
@@ -121,6 +121,18 @@ void PairSWKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
   EV_FLOAT ev;
   EV_FLOAT ev_all;
 
+  // build short neighbor list
+
+  int max_neighs = d_neighbors.dimension_1();
+
+  if ((d_neighbors_short.dimension_1() != max_neighs) ||
+     (d_neighbors_short.dimension_0() != ignum)) {
+    d_neighbors_short = Kokkos::View<int**,DeviceType>("SW::neighbors_short",ignum,max_neighs);
+  }
+  if (d_numneigh_short.dimension_0()!=ignum)
+    d_numneigh_short = Kokkos::View<int*,DeviceType>("SW::numneighs_short",ignum);
+  Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType,TagPairSWComputeShortNeigh>(0,neighflag==FULL?ignum:inum), *this);
+
   // loop over neighbor list of my atoms
 
   if (neighflag == HALF) {
@@ -174,6 +186,38 @@ void PairSWKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
   copymode = 0;
 }
 
+
+/* ---------------------------------------------------------------------- */
+
+template<class DeviceType>
+KOKKOS_INLINE_FUNCTION
+void PairSWKokkos<DeviceType>::operator()(TagPairSWComputeShortNeigh, const int& ii) const {
+    const int i = d_ilist[ii];
+    const X_FLOAT xtmp = x(i,0);
+    const X_FLOAT ytmp = x(i,1);
+    const X_FLOAT ztmp = x(i,2);
+
+    const int jnum = d_numneigh[i];
+    int inside = 0;
+    for (int jj = 0; jj < jnum; jj++) {
+      int j = d_neighbors(i,jj);
+      j &= NEIGHMASK;
+
+      const X_FLOAT delx = xtmp - x(j,0);
+      const X_FLOAT dely = ytmp - x(j,1);
+      const X_FLOAT delz = ztmp - x(j,2);
+      const F_FLOAT rsq = delx*delx + dely*dely + delz*delz;
+
+      if (rsq < cutmax*cutmax) {
+        d_neighbors_short(i,inside) = j;
+        inside++;
+      }
+    }
+    d_numneigh_short(i) = inside;
+}
+
+/* ---------------------------------------------------------------------- */
+
 template<class DeviceType>
 template<int NEIGHFLAG, int EVFLAG>
 KOKKOS_INLINE_FUNCTION
@@ -196,14 +240,14 @@ void PairSWKokkos<DeviceType>::operator()(TagPairSWComputeHalf<NEIGHFLAG,EVFLAG>
 
   // two-body interactions, skip half of them
 
-  const int jnum = d_numneigh[i];
+  const int jnum = d_numneigh_short[i];
 
   F_FLOAT fxtmpi = 0.0;
   F_FLOAT fytmpi = 0.0;
   F_FLOAT fztmpi = 0.0;
 
   for (int jj = 0; jj < jnum; jj++) {
-    int j = d_neighbors(i,jj);
+    int j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     const tagint jtag = tag[j];
 
@@ -245,7 +289,7 @@ void PairSWKokkos<DeviceType>::operator()(TagPairSWComputeHalf<NEIGHFLAG,EVFLAG>
   const int jnumm1 = jnum - 1;
 
   for (int jj = 0; jj < jnumm1; jj++) {
-    int j = d_neighbors(i,jj);
+    int j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     const int jtype = d_map[type[j]];
     const int ijparam = d_elem2param(itype,jtype,jtype);
@@ -260,7 +304,7 @@ void PairSWKokkos<DeviceType>::operator()(TagPairSWComputeHalf<NEIGHFLAG,EVFLAG>
     F_FLOAT fztmpj = 0.0;
 
     for (int kk = jj+1; kk < jnum; kk++) {
-      int k = d_neighbors(i,kk);
+      int k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
       const int ktype = d_map[type[k]];
       const int ikparam = d_elem2param(itype,ktype,ktype);
@@ -331,14 +375,14 @@ void PairSWKokkos<DeviceType>::operator()(TagPairSWComputeFullA<NEIGHFLAG,EVFLAG
 
   // two-body interactions
 
-  const int jnum = d_numneigh[i];
+  const int jnum = d_numneigh_short[i];
 
   F_FLOAT fxtmpi = 0.0;
   F_FLOAT fytmpi = 0.0;
   F_FLOAT fztmpi = 0.0;
 
   for (int jj = 0; jj < jnum; jj++) {
-    int j = d_neighbors(i,jj);
+    int j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     const tagint jtag = tag[j];
 
@@ -368,7 +412,7 @@ void PairSWKokkos<DeviceType>::operator()(TagPairSWComputeFullA<NEIGHFLAG,EVFLAG
   const int jnumm1 = jnum - 1;
 
   for (int jj = 0; jj < jnumm1; jj++) {
-    int j = d_neighbors(i,jj);
+    int j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     const int jtype = d_map[type[j]];
     const int ijparam = d_elem2param(itype,jtype,jtype);
@@ -380,7 +424,7 @@ void PairSWKokkos<DeviceType>::operator()(TagPairSWComputeFullA<NEIGHFLAG,EVFLAG
     if (rsq1 >= d_params[ijparam].cutsq) continue;
 
     for (int kk = jj+1; kk < jnum; kk++) {
-      int k = d_neighbors(i,kk);
+      int k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
       const int ktype = d_map[type[k]];
       const int ikparam = d_elem2param(itype,ktype,ktype);
@@ -438,14 +482,14 @@ void PairSWKokkos<DeviceType>::operator()(TagPairSWComputeFullB<NEIGHFLAG,EVFLAG
   const X_FLOAT ytmpi = x(i,1);
   const X_FLOAT ztmpi = x(i,2);
 
-  const int jnum = d_numneigh[i];
+  const int jnum = d_numneigh_short[i];
 
   F_FLOAT fxtmpi = 0.0;
   F_FLOAT fytmpi = 0.0;
   F_FLOAT fztmpi = 0.0;
 
   for (int jj = 0; jj < jnum; jj++) {
-    int j = d_neighbors(i,jj);
+    int j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     if (j >= nlocal) continue;
     const int jtype = d_map[type[j]];
@@ -461,10 +505,10 @@ void PairSWKokkos<DeviceType>::operator()(TagPairSWComputeFullB<NEIGHFLAG,EVFLAG
 
     if (rsq1 >= d_params[jiparam].cutsq) continue;
 
-    const int j_jnum = d_numneigh[j];
+    const int j_jnum = d_numneigh_short[j];
 
     for (int kk = 0; kk < j_jnum; kk++) {
-      int k = d_neighbors(j,kk);
+      int k = d_neighbors_short(j,kk);
       k &= NEIGHMASK;
       if (k == i) continue;
       const int ktype = d_map[type[k]];
diff --git a/src/KOKKOS/pair_sw_kokkos.h b/src/KOKKOS/pair_sw_kokkos.h
index cec240e06413900ced4f68d88a9d3347b75da06b..c722d9d52cabb7dbe93098792312352a25f41f7f 100644
--- a/src/KOKKOS/pair_sw_kokkos.h
+++ b/src/KOKKOS/pair_sw_kokkos.h
@@ -34,6 +34,8 @@ struct TagPairSWComputeFullA{};
 template<int NEIGHFLAG, int EVFLAG>
 struct TagPairSWComputeFullB{};
 
+struct TagPairSWComputeShortNeigh{};
+
 namespace LAMMPS_NS {
 
 template<class DeviceType>
@@ -75,6 +77,9 @@ class PairSWKokkos : public PairSW {
   KOKKOS_INLINE_FUNCTION
   void operator()(TagPairSWComputeFullB<NEIGHFLAG,EVFLAG>, const int&) const;
 
+  KOKKOS_INLINE_FUNCTION
+  void operator()(TagPairSWComputeShortNeigh, const int&) const;
+
   template<int NEIGHFLAG>
   KOKKOS_INLINE_FUNCTION
   void ev_tally(EV_FLOAT &ev, const int &i, const int &j,
@@ -136,6 +141,9 @@ class PairSWKokkos : public PairSW {
   int nlocal,nall,eflag,vflag;
 
   int inum;
+  Kokkos::View<int**,DeviceType> d_neighbors_short;
+  Kokkos::View<int*,DeviceType> d_numneigh_short;
+
 
   friend void pair_virial_fdotr_compute<PairSWKokkos>(PairSWKokkos*);
 };
diff --git a/src/KOKKOS/pair_table_kokkos.cpp b/src/KOKKOS/pair_table_kokkos.cpp
index fec6512a331d474935529a0542cdaf0ee33a68e2..278c5b0a2fd40d1f6739306738d3c4fccdc3f77d 100644
--- a/src/KOKKOS/pair_table_kokkos.cpp
+++ b/src/KOKKOS/pair_table_kokkos.cpp
@@ -488,8 +488,8 @@ void PairTableKokkos<DeviceType>::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   int me;
   MPI_Comm_rank(world,&me);
diff --git a/src/KOKKOS/pair_tersoff_kokkos.cpp b/src/KOKKOS/pair_tersoff_kokkos.cpp
index cf9b510ed659c2120e0609d689097bc3d3d4aa1c..162661430b728d33feaa20ffe52bd5420f2e7ba1 100644
--- a/src/KOKKOS/pair_tersoff_kokkos.cpp
+++ b/src/KOKKOS/pair_tersoff_kokkos.cpp
@@ -12,7 +12,7 @@
 ------------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
-   Contributing author: Ray Shan (SNL)
+   Contributing author: Ray Shan (SNL) and Christian Trott (SNL)
 ------------------------------------------------------------------------- */
 
 #include <math.h>
@@ -191,7 +191,7 @@ void PairTersoffKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
   nall = atom->nlocal + atom->nghost;
   newton_pair = force->newton_pair;
 
-  const int inum = list->inum;
+  inum = list->inum;
   const int ignum = inum + list->gnum;
   NeighListKokkos<DeviceType>* k_list = static_cast<NeighListKokkos<DeviceType>*>(list);
   d_numneigh = k_list->d_numneigh;
@@ -204,6 +204,18 @@ void PairTersoffKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
   EV_FLOAT ev;
   EV_FLOAT ev_all;
 
+  // build short neighbor list
+
+  int max_neighs = d_neighbors.dimension_1();
+
+  if ((d_neighbors_short.dimension_1() != max_neighs) ||
+     (d_neighbors_short.dimension_0() != ignum)) {
+    d_neighbors_short = Kokkos::View<int**,DeviceType>("Tersoff::neighbors_short",ignum,max_neighs);
+  }
+  if (d_numneigh_short.dimension_0()!=ignum)
+    d_numneigh_short = Kokkos::View<int*,DeviceType>("Tersoff::numneighs_short",ignum);
+  Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType,TagPairTersoffComputeShortNeigh>(0,neighflag==FULL?ignum:inum), *this);
+
   if (neighflag == HALF) {
     if (evflag)
       Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagPairTersoffComputeHalf<HALF,1> >(0,inum),*this,ev);
@@ -257,6 +269,35 @@ void PairTersoffKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
 
 /* ---------------------------------------------------------------------- */
 
+template<class DeviceType>
+KOKKOS_INLINE_FUNCTION
+void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeShortNeigh, const int& ii) const {
+    const int i = d_ilist[ii];
+    const X_FLOAT xtmp = x(i,0);
+    const X_FLOAT ytmp = x(i,1);
+    const X_FLOAT ztmp = x(i,2);
+
+    const int jnum = d_numneigh[i];
+    int inside = 0;
+    for (int jj = 0; jj < jnum; jj++) {
+      int j = d_neighbors(i,jj);
+      j &= NEIGHMASK;
+
+      const X_FLOAT delx = xtmp - x(j,0);
+      const X_FLOAT dely = ytmp - x(j,1);
+      const X_FLOAT delz = ztmp - x(j,2);
+      const F_FLOAT rsq = delx*delx + dely*dely + delz*delz;
+
+      if (rsq < cutmax*cutmax) {
+        d_neighbors_short(i,inside) = j;
+        inside++;
+      }
+    }
+    d_numneigh_short(i) = inside;
+}
+
+/* ---------------------------------------------------------------------- */
+
 template<class DeviceType>
 template<int NEIGHFLAG, int EVFLAG>
 KOKKOS_INLINE_FUNCTION
@@ -273,21 +314,22 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeHalf<NEIGHFL
   const int itype = type(i);
   const int itag = tag(i);
 
-  int j,k,jj,kk,jtag,jtype,ktype;
-  F_FLOAT rsq1, cutsq1, rsq2, cutsq2, rij, rik, bo_ij;
   F_FLOAT fi[3], fj[3], fk[3];
-  X_FLOAT delx1, dely1, delz1, delx2, dely2, delz2;
 
   //const AtomNeighborsConst d_neighbors_i = k_list.get_neighbors_const(i);
-  const int jnum = d_numneigh[i];
+  const int jnum = d_numneigh_short[i];
 
   // repulsive
 
-  for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+  F_FLOAT f_x = 0.0;
+  F_FLOAT f_y = 0.0;
+  F_FLOAT f_z = 0.0;
+
+  for (int jj = 0; jj < jnum; jj++) {
+    int j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
-    jtype = type(j);
-    jtag = tag(j);
+    const int jtype = type(j);
+    const int jtag = tag(j);
 
     if (itag > jtag) {
       if ((itag+jtag) % 2 == 0) continue;
@@ -315,9 +357,9 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeHalf<NEIGHFL
 	    		  (tmp_fcd - tmp_fce*paramskk(itype,jtype,jtype).lam1) / r;
     const F_FLOAT eng = tmp_fce * paramskk(itype,jtype,jtype).biga * tmp_exp;
 
-    a_f(i,0) += delx*frep;
-    a_f(i,1) += dely*frep;
-    a_f(i,2) += delz*frep;
+    f_x += delx*frep;
+    f_y += dely*frep;
+    f_z += delz*frep;
     a_f(j,0) -= delx*frep;
     a_f(j,1) -= dely*frep;
     a_f(j,2) -= delz*frep;
@@ -330,35 +372,35 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeHalf<NEIGHFL
 
   // attractive: bond order
 
-  for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+  for (int jj = 0; jj < jnum; jj++) {
+    int j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
-    jtype = type(j);
+    const int jtype = type(j);
 
-    delx1 = xtmp - x(j,0);
-    dely1 = ytmp - x(j,1);
-    delz1 = ztmp - x(j,2);
-    rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1;
-    cutsq1 = paramskk(itype,jtype,jtype).cutsq;
+    const F_FLOAT delx1 = xtmp - x(j,0);
+    const F_FLOAT dely1 = ytmp - x(j,1);
+    const F_FLOAT delz1 = ztmp - x(j,2);
+    const F_FLOAT rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1;
+    const F_FLOAT cutsq1 = paramskk(itype,jtype,jtype).cutsq;
 
-    bo_ij = 0.0;
+    F_FLOAT bo_ij = 0.0;
     if (rsq1 > cutsq1) continue;
-    rij = sqrt(rsq1);
+    const F_FLOAT rij = sqrt(rsq1);
 
-    for (kk = 0; kk < jnum; kk++) {
+    for (int kk = 0; kk < jnum; kk++) {
       if (jj == kk) continue;
-      k = d_neighbors(i,kk);
+      int k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
-      ktype = type(k);
+      const int ktype = type(k);
 
-      delx2 = xtmp - x(k,0);
-      dely2 = ytmp - x(k,1);
-      delz2 = ztmp - x(k,2);
-      rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
-      cutsq2 = paramskk(itype,jtype,ktype).cutsq;
+      const F_FLOAT delx2 = xtmp - x(k,0);
+      const F_FLOAT dely2 = ytmp - x(k,1);
+      const F_FLOAT delz2 = ztmp - x(k,2);
+      const F_FLOAT rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
+      const F_FLOAT cutsq2 = paramskk(itype,jtype,ktype).cutsq;
 
       if (rsq2 > cutsq2) continue;
-      rik = sqrt(rsq2);
+      const F_FLOAT rik = sqrt(rsq2);
       bo_ij += bondorder(itype,jtype,ktype,rij,delx1,dely1,delz1,rik,delx2,dely2,delz2);
     }
 
@@ -369,58 +411,64 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeHalf<NEIGHFL
     const F_FLOAT bij = ters_bij_k(itype,jtype,jtype,bo_ij);
     const F_FLOAT fatt = -0.5*bij * dfa / rij;
     const F_FLOAT prefactor = 0.5*fa * ters_dbij(itype,jtype,jtype,bo_ij);
-    const F_FLOAT eng = 0.5*bij * fa;
 
-    a_f(i,0) += delx1*fatt;
-    a_f(i,1) += dely1*fatt;
-    a_f(i,2) += delz1*fatt;
-    a_f(j,0) -= delx1*fatt;
-    a_f(j,1) -= dely1*fatt;
-    a_f(j,2) -= delz1*fatt;
+    f_x += delx1*fatt;
+    f_y += dely1*fatt;
+    f_z += delz1*fatt;
+    F_FLOAT fj_x = -delx1*fatt;
+    F_FLOAT fj_y = -dely1*fatt;
+    F_FLOAT fj_z = -delz1*fatt;
 
     if (EVFLAG) {
+      const F_FLOAT eng = 0.5*bij * fa;
       if (eflag) ev.evdwl += eng;
       if (vflag_either || eflag_atom)
-	this->template ev_tally<NEIGHFLAG>(ev,i,j,eng,fatt,delx1,dely1,delz1);
+        this->template ev_tally<NEIGHFLAG>(ev,i,j,eng,fatt,delx1,dely1,delz1);
     }
 
     // attractive: three-body force
 
-    for (kk = 0; kk < jnum; kk++) {
+    for (int kk = 0; kk < jnum; kk++) {
       if (jj == kk) continue;
-      k = d_neighbors(i,kk);
+      int k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
-      ktype = type(k);
+      const int ktype = type(k);
 
-      delx2 = xtmp - x(k,0);
-      dely2 = ytmp - x(k,1);
-      delz2 = ztmp - x(k,2);
-      rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
-      cutsq2 = paramskk(itype,jtype,ktype).cutsq;
+      const F_FLOAT delx2 = xtmp - x(k,0);
+      const F_FLOAT dely2 = ytmp - x(k,1);
+      const F_FLOAT delz2 = ztmp - x(k,2);
+      const F_FLOAT rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
+      const F_FLOAT cutsq2 = paramskk(itype,jtype,ktype).cutsq;
 
       if (rsq2 > cutsq2) continue;
-      rik = sqrt(rsq2);
+      const F_FLOAT rik = sqrt(rsq2);
       ters_dthb(itype,jtype,ktype,prefactor,rij,delx1,dely1,delz1,
-		rik,delx2,dely2,delz2,fi,fj,fk);
-
-      a_f(i,0) += fi[0];
-      a_f(i,1) += fi[1];
-      a_f(i,2) += fi[2];
-      a_f(j,0) += fj[0];
-      a_f(j,1) += fj[1];
-      a_f(j,2) += fj[2];
+                rik,delx2,dely2,delz2,fi,fj,fk);
+
+      f_x += fi[0];
+      f_y += fi[1];
+      f_z += fi[2];
+      fj_x += fj[0];
+      fj_y += fj[1];
+      fj_z += fj[2];
       a_f(k,0) += fk[0];
       a_f(k,1) += fk[1];
       a_f(k,2) += fk[2];
 
       if (vflag_atom) {
-	F_FLOAT delrij[3], delrik[3];
-	delrij[0] = -delx1; delrij[1] = -dely1; delrij[2] = -delz1;
-	delrik[0] = -delx2; delrik[1] = -dely2; delrik[2] = -delz2;
-	if (vflag_either) this->template v_tally3<NEIGHFLAG>(ev,i,j,k,fj,fk,delrij,delrik);
+        F_FLOAT delrij[3], delrik[3];
+        delrij[0] = -delx1; delrij[1] = -dely1; delrij[2] = -delz1;
+        delrik[0] = -delx2; delrik[1] = -dely2; delrik[2] = -delz2;
+        if (vflag_either) this->template v_tally3<NEIGHFLAG>(ev,i,j,k,fj,fk,delrij,delrik);
       }
     }
+    a_f(j,0) += fj_x;
+    a_f(j,1) += fj_y;
+    a_f(j,2) += fj_z;
   }
+  a_f(i,0) += f_x;
+  a_f(i,1) += f_y;
+  a_f(i,2) += f_z;
 }
 
 template<class DeviceType>
@@ -450,12 +498,15 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullA<NEIGHF
   X_FLOAT delx1, dely1, delz1, delx2, dely2, delz2;
 
   //const AtomNeighborsConst d_neighbors_i = k_list.get_neighbors_const(i);
-  const int jnum = d_numneigh[i];
+  const int jnum = d_numneigh_short[i];
 
   // repulsive
 
+  F_FLOAT f_x = 0.0;
+  F_FLOAT f_y = 0.0;
+  F_FLOAT f_z = 0.0;
   for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+    j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     const int jtype = type(j);
 
@@ -475,9 +526,9 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullA<NEIGHF
 	    		  (tmp_fcd - tmp_fce*paramskk(itype,jtype,jtype).lam1) / r;
     const F_FLOAT eng = tmp_fce * paramskk(itype,jtype,jtype).biga * tmp_exp;
 
-    f(i,0) += delx*frep;
-    f(i,1) += dely*frep;
-    f(i,2) += delz*frep;
+    f_x += delx*frep;
+    f_y += dely*frep;
+    f_z += delz*frep;
 
     if (EVFLAG) {
       if (eflag)
@@ -490,7 +541,7 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullA<NEIGHF
   // attractive: bond order
 
   for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+    j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     jtype = type(j);
 
@@ -506,7 +557,7 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullA<NEIGHF
 
     for (kk = 0; kk < jnum; kk++) {
       if (jj == kk) continue;
-      k = d_neighbors(i,kk);
+      k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
       ktype = type(k);
 
@@ -530,9 +581,9 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullA<NEIGHF
     const F_FLOAT prefactor = 0.5*fa * ters_dbij(itype,jtype,jtype,bo_ij);
     const F_FLOAT eng = 0.5*bij * fa;
 
-    f(i,0) += delx1*fatt;
-    f(i,1) += dely1*fatt;
-    f(i,2) += delz1*fatt;
+    f_x += delx1*fatt;
+    f_y += dely1*fatt;
+    f_z += delz1*fatt;
 
     if (EVFLAG) {
       if (eflag) ev.evdwl += 0.5*eng;
@@ -544,7 +595,7 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullA<NEIGHF
 
     for (kk = 0; kk < jnum; kk++) {
       if (jj == kk) continue;
-      k = d_neighbors(i,kk);
+      k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
       ktype = type(k);
 
@@ -559,9 +610,9 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullA<NEIGHF
       ters_dthb(itype,jtype,ktype,prefactor,rij,delx1,dely1,delz1,
 		rik,delx2,dely2,delz2,fi,fj,fk);
 
-      f(i,0) += fi[0];
-      f(i,1) += fi[1];
-      f(i,2) += fi[2];
+      f_x += fi[0];
+      f_y += fi[1];
+      f_z += fi[2];
 
       if (vflag_atom) {
 	F_FLOAT delrij[3], delrik[3];
@@ -571,6 +622,9 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullA<NEIGHF
       }
     }
   }
+  f(i,0) += f_x;
+  f(i,1) += f_y;
+  f(i,2) += f_z;
 }
 
 template<class DeviceType>
@@ -599,12 +653,16 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullB<NEIGHF
   F_FLOAT fj[3], fk[3];
   X_FLOAT delx1, dely1, delz1, delx2, dely2, delz2;
 
-  const int jnum = d_numneigh[i];
+  const int jnum = d_numneigh_short[i];
+
+  F_FLOAT f_x = 0.0;
+  F_FLOAT f_y = 0.0;
+  F_FLOAT f_z = 0.0;
 
   // attractive: bond order
 
   for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+    j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     if (j >= nlocal) continue;
     jtype = type(j);
@@ -619,10 +677,10 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullB<NEIGHF
     if (rsq1 > cutsq1) continue;
     rij = sqrt(rsq1);
 
-    j_jnum = d_numneigh[j];
+    j_jnum = d_numneigh_short[j];
 
     for (kk = 0; kk < j_jnum; kk++) {
-      k = d_neighbors(j,kk);
+      k = d_neighbors_short(j,kk);
       if (k == i) continue;
       k &= NEIGHMASK;
       ktype = type(k);
@@ -648,9 +706,9 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullB<NEIGHF
     const F_FLOAT prefactor = 0.5*fa * ters_dbij(jtype,itype,itype,bo_ij);
     const F_FLOAT eng = 0.5*bij * fa;
 
-    f(i,0) -= delx1*fatt;
-    f(i,1) -= dely1*fatt;
-    f(i,2) -= delz1*fatt;
+    f_x -= delx1*fatt;
+    f_y -= dely1*fatt;
+    f_z -= delz1*fatt;
 
     if (EVFLAG) {
       if (eflag)
@@ -662,7 +720,7 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullB<NEIGHF
     // attractive: three-body force
 
     for (kk = 0; kk < j_jnum; kk++) {
-      k = d_neighbors(j,kk);
+      k = d_neighbors_short(j,kk);
       if (k == i) continue;
       k &= NEIGHMASK;
       ktype = type(k);
@@ -677,9 +735,9 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullB<NEIGHF
       rik = sqrt(rsq2);
       ters_dthbj(jtype,itype,ktype,prefactor,rij,delx1,dely1,delz1,
 		rik,delx2,dely2,delz2,fj,fk);
-      f(i,0) += fj[0];
-      f(i,1) += fj[1];
-      f(i,2) += fj[2];
+      f_x += fj[0];
+      f_y += fj[1];
+      f_z += fj[2];
 
       if (vflag_atom) {
 	F_FLOAT delrji[3], delrjk[3];
@@ -692,11 +750,14 @@ void PairTersoffKokkos<DeviceType>::operator()(TagPairTersoffComputeFullB<NEIGHF
       const F_FLOAT prefactor_jk = 0.5*fa_jk * ters_dbij(jtype,ktype,itype,bo_ij);
       ters_dthbk(jtype,ktype,itype,prefactor_jk,rik,delx2,dely2,delz2,
 		rij,delx1,dely1,delz1,fk);
-      f(i,0) += fk[0];
-      f(i,1) += fk[1];
-      f(i,2) += fk[2];
+      f_x += fk[0];
+      f_y += fk[1];
+      f_z += fk[2];
     }
   }
+  f(i,0) += f_x;
+  f(i,1) += f_y;
+  f(i,2) += f_z;
 }
 
 template<class DeviceType>
@@ -749,8 +810,9 @@ double PairTersoffKokkos<DeviceType>::bondorder(const int &i, const int &j, cons
 
   const F_FLOAT costheta = (dx1*dx2 + dy1*dy2 + dz1*dz2)/(rij*rik);
 
-  if (int(paramskk(i,j,k).powerm) == 3) arg = pow(paramskk(i,j,k).lam3 * (rij-rik),3.0);
-  else arg = paramskk(i,j,k).lam3 * (rij-rik);
+  const F_FLOAT param = paramskk(i,j,k).lam3 * (rij-rik);
+  if (int(paramskk(i,j,k).powerm) == 3) arg = param*param*param;//pow(paramskk(i,j,k).lam3 * (rij-rik),3.0);
+  else arg = param;
 
   if (arg > 69.0776) ex_delr = 1.e30;
   else if (arg < -69.0776) ex_delr = 0.0;
@@ -780,7 +842,6 @@ KOKKOS_INLINE_FUNCTION
 double PairTersoffKokkos<DeviceType>::
 	ters_dgijk(const int &i, const int &j, const int &k, const F_FLOAT &cos) const
 {
-
   const F_FLOAT ters_c = paramskk(i,j,k).c * paramskk(i,j,k).c;
   const F_FLOAT ters_d = paramskk(i,j,k).d * paramskk(i,j,k).d;
   const F_FLOAT hcth = paramskk(i,j,k).h - cos;
@@ -838,9 +899,9 @@ double PairTersoffKokkos<DeviceType>::ters_dbij(const int &i, const int &j,
 		const int &k, const F_FLOAT &bo) const
 {
   const F_FLOAT tmp = paramskk(i,j,k).beta * bo;
-  if (tmp > paramskk(i,j,k).c1) return paramskk(i,j,k).beta * -0.5*pow(tmp,-1.5);
+  if (tmp > paramskk(i,j,k).c1) return paramskk(i,j,k).beta * -0.5/sqrt(tmp*tmp);//*pow(tmp,-1.5);
   if (tmp > paramskk(i,j,k).c2)
-    return paramskk(i,j,k).beta * (-0.5*pow(tmp,-1.5) *
+    return paramskk(i,j,k).beta * (-0.5/sqrt(tmp*tmp) * //*pow(tmp,-1.5) *
            (1.0 - 0.5*(1.0 +  1.0/(2.0*paramskk(i,j,k).powern)) *
            pow(tmp,-paramskk(i,j,k).powern)));
   if (tmp < paramskk(i,j,k).c4) return 0.0;
@@ -883,15 +944,16 @@ void PairTersoffKokkos<DeviceType>::ters_dthb(
 
   fc = ters_fc_k(i,j,k,rik);
   dfc = ters_dfc(i,j,k,rik);
-  if (int(paramskk(i,j,k).powerm) == 3) tmp = pow(paramskk(i,j,k).lam3 * (rij-rik),3.0);
-  else tmp = paramskk(i,j,k).lam3 * (rij-rik);
+  const F_FLOAT param = paramskk(i,j,k).lam3 * (rij-rik);
+  if (int(paramskk(i,j,k).powerm) == 3) tmp = param*param*param;//pow(paramskk(i,j,k).lam3 * (rij-rik),3.0);
+  else tmp = param;
 
   if (tmp > 69.0776) ex_delr = 1.e30;
   else if (tmp < -69.0776) ex_delr = 0.0;
   else ex_delr = exp(tmp);
 
   if (int(paramskk(i,j,k).powerm) == 3)
-    dex_delr = 3.0*pow(paramskk(i,j,k).lam3,3.0) * pow(rij-rik,2.0)*ex_delr;
+    dex_delr = 3.0*param*param*paramskk(i,j,k).lam3*ex_delr;//pow(rij-rik,2.0)*ex_delr;
   else dex_delr = paramskk(i,j,k).lam3 * ex_delr;
 
   cos = vec3_dot(rij_hat,rik_hat);
@@ -951,15 +1013,16 @@ void PairTersoffKokkos<DeviceType>::ters_dthbj(
 
   fc = ters_fc_k(i,j,k,rik);
   dfc = ters_dfc(i,j,k,rik);
-  if (int(paramskk(i,j,k).powerm) == 3) tmp = pow(paramskk(i,j,k).lam3 * (rij-rik),3.0);
-  else tmp = paramskk(i,j,k).lam3 * (rij-rik);
+  const F_FLOAT param = paramskk(i,j,k).lam3 * (rij-rik);
+  if (int(paramskk(i,j,k).powerm) == 3) tmp = param*param*param;//pow(paramskk(i,j,k).lam3 * (rij-rik),3.0);
+  else tmp = param;//paramskk(i,j,k).lam3 * (rij-rik);
 
   if (tmp > 69.0776) ex_delr = 1.e30;
   else if (tmp < -69.0776) ex_delr = 0.0;
   else ex_delr = exp(tmp);
 
   if (int(paramskk(i,j,k).powerm) == 3)
-    dex_delr = 3.0*pow(paramskk(i,j,k).lam3,3.0) * pow(rij-rik,2.0)*ex_delr;
+    dex_delr = 3.0*param*param*paramskk(i,j,k).lam3*ex_delr;//pow(paramskk(i,j,k).lam3,3.0) * pow(rij-rik,2.0)*ex_delr;
   else dex_delr = paramskk(i,j,k).lam3 * ex_delr;
 
   cos = vec3_dot(rij_hat,rik_hat);
@@ -1012,15 +1075,16 @@ void PairTersoffKokkos<DeviceType>::ters_dthbk(
 
   fc = ters_fc_k(i,j,k,rik);
   dfc = ters_dfc(i,j,k,rik);
-  if (int(paramskk(i,j,k).powerm) == 3) tmp = pow(paramskk(i,j,k).lam3 * (rij-rik),3.0);
-  else tmp = paramskk(i,j,k).lam3 * (rij-rik);
+  const F_FLOAT param = paramskk(i,j,k).lam3 * (rij-rik);
+  if (int(paramskk(i,j,k).powerm) == 3) tmp = param*param*param;//pow(paramskk(i,j,k).lam3 * (rij-rik),3.0);
+  else tmp = param;//paramskk(i,j,k).lam3 * (rij-rik);
 
   if (tmp > 69.0776) ex_delr = 1.e30;
   else if (tmp < -69.0776) ex_delr = 0.0;
   else ex_delr = exp(tmp);
 
   if (int(paramskk(i,j,k).powerm) == 3)
-    dex_delr = 3.0*pow(paramskk(i,j,k).lam3,3.0) * pow(rij-rik,2.0)*ex_delr;
+    dex_delr = 3.0*param*param*paramskk(i,j,k).lam3*ex_delr;//pow(paramskk(i,j,k).lam3,3.0) * pow(rij-rik,2.0)*ex_delr;
   else dex_delr = paramskk(i,j,k).lam3 * ex_delr;
 
   cos = vec3_dot(rij_hat,rik_hat);
diff --git a/src/KOKKOS/pair_tersoff_kokkos.h b/src/KOKKOS/pair_tersoff_kokkos.h
index c810a052dceffa622231dfa4f3845662d0b36ad2..7490d3f45ae6b5bdc07a6ae70b035a5a1a0d69d9 100644
--- a/src/KOKKOS/pair_tersoff_kokkos.h
+++ b/src/KOKKOS/pair_tersoff_kokkos.h
@@ -39,6 +39,8 @@ struct TagPairTersoffComputeFullA{};
 template<int NEIGHFLAG, int EVFLAG>
 struct TagPairTersoffComputeFullB{};
 
+struct TagPairTersoffComputeShortNeigh{};
+
 template<class DeviceType>
 class PairTersoffKokkos : public PairTersoff {
  public:
@@ -77,6 +79,9 @@ class PairTersoffKokkos : public PairTersoff {
   KOKKOS_INLINE_FUNCTION
   void operator()(TagPairTersoffComputeFullB<NEIGHFLAG,EVFLAG>, const int&) const;
 
+  KOKKOS_INLINE_FUNCTION
+  void operator()(TagPairTersoffComputeShortNeigh, const int&) const;
+
   KOKKOS_INLINE_FUNCTION
   double ters_fc_k(const int &i, const int &j, const int &k, const F_FLOAT &r) const;
 
@@ -184,6 +189,7 @@ class PairTersoffKokkos : public PairTersoff {
   // hardwired to space for 15 atom types
   //params_ters m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1];
 
+  int inum; 
   typename AT::t_x_array_randomread x;
   typename AT::t_f_array f;
   typename AT::t_int_1d_randomread type;
@@ -203,10 +209,12 @@ class PairTersoffKokkos : public PairTersoff {
   typename ArrayTypes<DeviceType>::t_int_1d_randomread d_numneigh;
   //NeighListKokkos<DeviceType> k_list;
 
-  class AtomKokkos *atomKK;
   int neighflag,newton_pair;
   int nlocal,nall,eflag,vflag;
 
+  Kokkos::View<int**,DeviceType> d_neighbors_short;
+  Kokkos::View<int*,DeviceType> d_numneigh_short;
+
   friend void pair_virial_fdotr_compute<PairTersoffKokkos>(PairTersoffKokkos*);
 };
 
diff --git a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp
index 8cfaa63e7aedbf367665cf3eedb0d6e1cb8d9b8f..0c8f46a30d89a88328d9be4881b5a8135df6ed58 100644
--- a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp
+++ b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp
@@ -191,7 +191,7 @@ void PairTersoffMODKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
   nall = atom->nlocal + atom->nghost;
   newton_pair = force->newton_pair;
 
-  const int inum = list->inum;
+  inum = list->inum;
   const int ignum = inum + list->gnum;
   NeighListKokkos<DeviceType>* k_list = static_cast<NeighListKokkos<DeviceType>*>(list);
   d_numneigh = k_list->d_numneigh;
@@ -204,6 +204,18 @@ void PairTersoffMODKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
   EV_FLOAT ev;
   EV_FLOAT ev_all;
 
+  // build short neighbor list
+
+  int max_neighs = d_neighbors.dimension_1();
+
+  if ((d_neighbors_short.dimension_1() != max_neighs) ||
+     (d_neighbors_short.dimension_0() != ignum)) {
+    d_neighbors_short = Kokkos::View<int**,DeviceType>("Tersoff::neighbors_short",ignum,max_neighs);
+  }
+  if (d_numneigh_short.dimension_0()!=ignum)
+    d_numneigh_short = Kokkos::View<int*,DeviceType>("Tersoff::numneighs_short",ignum);
+  Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType,TagPairTersoffMODComputeShortNeigh>(0,neighflag==FULL?ignum:inum), *this);
+
   if (neighflag == HALF) {
     if (evflag)
       Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagPairTersoffMODComputeHalf<HALF,1> >(0,inum),*this,ev);
@@ -257,6 +269,35 @@ void PairTersoffMODKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
 
 /* ---------------------------------------------------------------------- */
 
+template<class DeviceType>
+KOKKOS_INLINE_FUNCTION
+void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeShortNeigh, const int& ii) const {
+    const int i = d_ilist[ii];
+    const X_FLOAT xtmp = x(i,0);
+    const X_FLOAT ytmp = x(i,1);
+    const X_FLOAT ztmp = x(i,2);
+
+    const int jnum = d_numneigh[i];
+    int inside = 0;
+    for (int jj = 0; jj < jnum; jj++) {
+      int j = d_neighbors(i,jj);
+      j &= NEIGHMASK;
+
+      const X_FLOAT delx = xtmp - x(j,0);
+      const X_FLOAT dely = ytmp - x(j,1);
+      const X_FLOAT delz = ztmp - x(j,2);
+      const F_FLOAT rsq = delx*delx + dely*dely + delz*delz;
+
+      if (rsq < cutmax*cutmax) {
+        d_neighbors_short(i,inside) = j;
+        inside++;
+      }
+    }
+    d_numneigh_short(i) = inside;
+}
+
+/* ---------------------------------------------------------------------- */
+
 template<class DeviceType>
 template<int NEIGHFLAG, int EVFLAG>
 KOKKOS_INLINE_FUNCTION
@@ -273,21 +314,22 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeHalf<N
   const int itype = type(i);
   const int itag = tag(i);
 
-  int j,k,jj,kk,jtag,jtype,ktype;
-  F_FLOAT rsq1, cutsq1, rsq2, cutsq2, rij, rik, bo_ij;
   F_FLOAT fi[3], fj[3], fk[3];
-  X_FLOAT delx1, dely1, delz1, delx2, dely2, delz2;
 
   //const AtomNeighborsConst d_neighbors_i = k_list.get_neighbors_const(i);
-  const int jnum = d_numneigh[i];
+  const int jnum = d_numneigh_short[i];
 
   // repulsive
 
-  for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+  F_FLOAT f_x = 0.0;
+  F_FLOAT f_y = 0.0;
+  F_FLOAT f_z = 0.0;
+
+  for (int jj = 0; jj < jnum; jj++) {
+    int j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
-    jtype = type(j);
-    jtag = tag(j);
+    const int jtype = type(j);
+    const int jtag = tag(j);
 
     if (itag > jtag) {
       if ((itag+jtag) % 2 == 0) continue;
@@ -315,9 +357,9 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeHalf<N
 	    		  (tmp_fcd - tmp_fce*paramskk(itype,jtype,jtype).lam1) / r;
     const F_FLOAT eng = tmp_fce * paramskk(itype,jtype,jtype).biga * tmp_exp;
 
-    a_f(i,0) += delx*frep;
-    a_f(i,1) += dely*frep;
-    a_f(i,2) += delz*frep;
+    f_x += delx*frep;
+    f_y += dely*frep;
+    f_z += delz*frep;
     a_f(j,0) -= delx*frep;
     a_f(j,1) -= dely*frep;
     a_f(j,2) -= delz*frep;
@@ -330,35 +372,35 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeHalf<N
 
   // attractive: bond order
 
-  for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+  for (int jj = 0; jj < jnum; jj++) {
+    int j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
-    jtype = type(j);
+    const int jtype = type(j);
 
-    delx1 = xtmp - x(j,0);
-    dely1 = ytmp - x(j,1);
-    delz1 = ztmp - x(j,2);
-    rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1;
-    cutsq1 = paramskk(itype,jtype,jtype).cutsq;
+    const F_FLOAT delx1 = xtmp - x(j,0);
+    const F_FLOAT dely1 = ytmp - x(j,1);
+    const F_FLOAT delz1 = ztmp - x(j,2);
+    const F_FLOAT rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1;
+    const F_FLOAT cutsq1 = paramskk(itype,jtype,jtype).cutsq;
 
-    bo_ij = 0.0;
+    F_FLOAT bo_ij = 0.0;
     if (rsq1 > cutsq1) continue;
-    rij = sqrt(rsq1);
+    const F_FLOAT rij = sqrt(rsq1);
 
-    for (kk = 0; kk < jnum; kk++) {
+    for (int kk = 0; kk < jnum; kk++) {
       if (jj == kk) continue;
-      k = d_neighbors(i,kk);
+      int k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
-      ktype = type(k);
+      const int ktype = type(k);
 
-      delx2 = xtmp - x(k,0);
-      dely2 = ytmp - x(k,1);
-      delz2 = ztmp - x(k,2);
-      rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
-      cutsq2 = paramskk(itype,jtype,ktype).cutsq;
+      const F_FLOAT delx2 = xtmp - x(k,0);
+      const F_FLOAT dely2 = ytmp - x(k,1);
+      const F_FLOAT delz2 = ztmp - x(k,2);
+      const F_FLOAT rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
+      const F_FLOAT cutsq2 = paramskk(itype,jtype,ktype).cutsq;
 
       if (rsq2 > cutsq2) continue;
-      rik = sqrt(rsq2);
+      const F_FLOAT rik = sqrt(rsq2);
       bo_ij += bondorder(itype,jtype,ktype,rij,delx1,dely1,delz1,rik,delx2,dely2,delz2);
     }
 
@@ -369,58 +411,64 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeHalf<N
     const F_FLOAT bij = ters_bij_k(itype,jtype,jtype,bo_ij);
     const F_FLOAT fatt = -0.5*bij * dfa / rij;
     const F_FLOAT prefactor = 0.5*fa * ters_dbij(itype,jtype,jtype,bo_ij);
-    const F_FLOAT eng = 0.5*bij * fa;
 
-    a_f(i,0) += delx1*fatt;
-    a_f(i,1) += dely1*fatt;
-    a_f(i,2) += delz1*fatt;
-    a_f(j,0) -= delx1*fatt;
-    a_f(j,1) -= dely1*fatt;
-    a_f(j,2) -= delz1*fatt;
+    f_x += delx1*fatt;
+    f_y += dely1*fatt;
+    f_z += delz1*fatt;
+    F_FLOAT fj_x = -delx1*fatt;
+    F_FLOAT fj_y = -dely1*fatt;
+    F_FLOAT fj_z = -delz1*fatt;
 
     if (EVFLAG) {
+      const F_FLOAT eng = 0.5*bij * fa;
       if (eflag) ev.evdwl += eng;
       if (vflag_either || eflag_atom)
-	this->template ev_tally<NEIGHFLAG>(ev,i,j,eng,fatt,delx1,dely1,delz1);
+          this->template ev_tally<NEIGHFLAG>(ev,i,j,eng,fatt,delx1,dely1,delz1);
     }
 
     // attractive: three-body force
 
-    for (kk = 0; kk < jnum; kk++) {
+    for (int kk = 0; kk < jnum; kk++) {
       if (jj == kk) continue;
-      k = d_neighbors(i,kk);
+      int k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
-      ktype = type(k);
+      const int ktype = type(k);
 
-      delx2 = xtmp - x(k,0);
-      dely2 = ytmp - x(k,1);
-      delz2 = ztmp - x(k,2);
-      rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
-      cutsq2 = paramskk(itype,jtype,ktype).cutsq;
+      const F_FLOAT delx2 = xtmp - x(k,0);
+      const F_FLOAT dely2 = ytmp - x(k,1);
+      const F_FLOAT delz2 = ztmp - x(k,2);
+      const F_FLOAT rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
+      const F_FLOAT cutsq2 = paramskk(itype,jtype,ktype).cutsq;
 
       if (rsq2 > cutsq2) continue;
-      rik = sqrt(rsq2);
+      const F_FLOAT rik = sqrt(rsq2);
       ters_dthb(itype,jtype,ktype,prefactor,rij,delx1,dely1,delz1,
-		rik,delx2,dely2,delz2,fi,fj,fk);
-
-      a_f(i,0) += fi[0];
-      a_f(i,1) += fi[1];
-      a_f(i,2) += fi[2];
-      a_f(j,0) += fj[0];
-      a_f(j,1) += fj[1];
-      a_f(j,2) += fj[2];
+                rik,delx2,dely2,delz2,fi,fj,fk);
+
+      f_x += fi[0];
+      f_y += fi[1];
+      f_z += fi[2];
+      fj_x += fj[0];
+      fj_y += fj[1];
+      fj_z += fj[2];
       a_f(k,0) += fk[0];
       a_f(k,1) += fk[1];
       a_f(k,2) += fk[2];
 
       if (vflag_atom) {
-	F_FLOAT delrij[3], delrik[3];
-	delrij[0] = -delx1; delrij[1] = -dely1; delrij[2] = -delz1;
-	delrik[0] = -delx2; delrik[1] = -dely2; delrik[2] = -delz2;
-	if (vflag_either) this->template v_tally3<NEIGHFLAG>(ev,i,j,k,fj,fk,delrij,delrik);
+        F_FLOAT delrij[3], delrik[3];
+        delrij[0] = -delx1; delrij[1] = -dely1; delrij[2] = -delz1;
+        delrik[0] = -delx2; delrik[1] = -dely2; delrik[2] = -delz2;
+        if (vflag_either) this->template v_tally3<NEIGHFLAG>(ev,i,j,k,fj,fk,delrij,delrik);
       }
     }
+    a_f(j,0) += fj_x;
+    a_f(j,1) += fj_y;
+    a_f(j,2) += fj_z;
   }
+  a_f(i,0) += f_x;
+  a_f(i,1) += f_y;
+  a_f(i,2) += f_z;
 }
 
 template<class DeviceType>
@@ -450,12 +498,15 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullA<
   X_FLOAT delx1, dely1, delz1, delx2, dely2, delz2;
 
   //const AtomNeighborsConst d_neighbors_i = k_list.get_neighbors_const(i);
-  const int jnum = d_numneigh[i];
+  const int jnum = d_numneigh_short[i];
 
   // repulsive
 
+  F_FLOAT f_x = 0.0;
+  F_FLOAT f_y = 0.0;
+  F_FLOAT f_z = 0.0;
   for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+    j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     const int jtype = type(j);
 
@@ -475,9 +526,9 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullA<
 	    		  (tmp_fcd - tmp_fce*paramskk(itype,jtype,jtype).lam1) / r;
     const F_FLOAT eng = tmp_fce * paramskk(itype,jtype,jtype).biga * tmp_exp;
 
-    f(i,0) += delx*frep;
-    f(i,1) += dely*frep;
-    f(i,2) += delz*frep;
+    f_x += delx*frep;
+    f_y += dely*frep;
+    f_z += delz*frep;
 
     if (EVFLAG) {
       if (eflag)
@@ -490,7 +541,7 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullA<
   // attractive: bond order
 
   for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+    j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     jtype = type(j);
 
@@ -506,7 +557,7 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullA<
 
     for (kk = 0; kk < jnum; kk++) {
       if (jj == kk) continue;
-      k = d_neighbors(i,kk);
+      k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
       ktype = type(k);
 
@@ -530,9 +581,9 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullA<
     const F_FLOAT prefactor = 0.5*fa * ters_dbij(itype,jtype,jtype,bo_ij);
     const F_FLOAT eng = 0.5*bij * fa;
 
-    f(i,0) += delx1*fatt;
-    f(i,1) += dely1*fatt;
-    f(i,2) += delz1*fatt;
+    f_x += delx1*fatt;
+    f_y += dely1*fatt;
+    f_z += delz1*fatt;
 
     if (EVFLAG) {
       if (eflag) ev.evdwl += 0.5*eng;
@@ -544,7 +595,7 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullA<
 
     for (kk = 0; kk < jnum; kk++) {
       if (jj == kk) continue;
-      k = d_neighbors(i,kk);
+      k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
       ktype = type(k);
 
@@ -559,9 +610,9 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullA<
       ters_dthb(itype,jtype,ktype,prefactor,rij,delx1,dely1,delz1,
 		rik,delx2,dely2,delz2,fi,fj,fk);
 
-      f(i,0) += fi[0];
-      f(i,1) += fi[1];
-      f(i,2) += fi[2];
+      f_x += fi[0];
+      f_y += fi[1];
+      f_z += fi[2];
 
       if (vflag_atom) {
 	F_FLOAT delrij[3], delrik[3];
@@ -571,6 +622,9 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullA<
       }
     }
   }
+  f(i,0) += f_x;
+  f(i,1) += f_y;
+  f(i,2) += f_z;
 }
 
 template<class DeviceType>
@@ -599,12 +653,16 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullB<
   F_FLOAT fj[3], fk[3];
   X_FLOAT delx1, dely1, delz1, delx2, dely2, delz2;
 
-  const int jnum = d_numneigh[i];
+  const int jnum = d_numneigh_short[i];
+
+  F_FLOAT f_x = 0.0;
+  F_FLOAT f_y = 0.0;
+  F_FLOAT f_z = 0.0;
 
   // attractive: bond order
 
   for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+    j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     if (j >= nlocal) continue;
     jtype = type(j);
@@ -619,10 +677,10 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullB<
     if (rsq1 > cutsq1) continue;
     rij = sqrt(rsq1);
 
-    j_jnum = d_numneigh[j];
+    j_jnum = d_numneigh_short[j];
 
     for (kk = 0; kk < j_jnum; kk++) {
-      k = d_neighbors(j,kk);
+      k = d_neighbors_short(j,kk);
       if (k == i) continue;
       k &= NEIGHMASK;
       ktype = type(k);
@@ -648,9 +706,9 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullB<
     const F_FLOAT prefactor = 0.5*fa * ters_dbij(jtype,itype,itype,bo_ij);
     const F_FLOAT eng = 0.5*bij * fa;
 
-    f(i,0) -= delx1*fatt;
-    f(i,1) -= dely1*fatt;
-    f(i,2) -= delz1*fatt;
+    f_x -= delx1*fatt;
+    f_y -= dely1*fatt;
+    f_z -= delz1*fatt;
 
     if (EVFLAG) {
       if (eflag)
@@ -662,7 +720,7 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullB<
     // attractive: three-body force
 
     for (kk = 0; kk < j_jnum; kk++) {
-      k = d_neighbors(j,kk);
+      k = d_neighbors_short(j,kk);
       if (k == i) continue;
       k &= NEIGHMASK;
       ktype = type(k);
@@ -677,9 +735,9 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullB<
       rik = sqrt(rsq2);
       ters_dthbj(jtype,itype,ktype,prefactor,rij,delx1,dely1,delz1,
 		rik,delx2,dely2,delz2,fj,fk);
-      f(i,0) += fj[0];
-      f(i,1) += fj[1];
-      f(i,2) += fj[2];
+      f_x += fj[0];
+      f_y += fj[1];
+      f_z += fj[2];
 
       if (vflag_atom) {
 	F_FLOAT delrji[3], delrjk[3];
@@ -692,11 +750,14 @@ void PairTersoffMODKokkos<DeviceType>::operator()(TagPairTersoffMODComputeFullB<
       const F_FLOAT prefactor_jk = 0.5*fa_jk * ters_dbij(jtype,ktype,itype,bo_ij);
       ters_dthbk(jtype,ktype,itype,prefactor_jk,rik,delx2,dely2,delz2,
 		rij,delx1,dely1,delz1,fk);
-      f(i,0) += fk[0];
-      f(i,1) += fk[1];
-      f(i,2) += fk[2];
+      f_x += fk[0];
+      f_y += fk[1];
+      f_z += fk[2];
     }
   }
+  f(i,0) += f_x;
+  f(i,1) += f_y;
+  f(i,2) += f_z;
 }
 
 template<class DeviceType>
diff --git a/src/KOKKOS/pair_tersoff_mod_kokkos.h b/src/KOKKOS/pair_tersoff_mod_kokkos.h
index 07a76b4e660275b7eb23cdb1d1db3e4c1ddc0f5b..5a26fa1557309bd070856a62b9270c62f859460e 100644
--- a/src/KOKKOS/pair_tersoff_mod_kokkos.h
+++ b/src/KOKKOS/pair_tersoff_mod_kokkos.h
@@ -39,6 +39,8 @@ struct TagPairTersoffMODComputeFullA{};
 template<int NEIGHFLAG, int EVFLAG>
 struct TagPairTersoffMODComputeFullB{};
 
+struct TagPairTersoffMODComputeShortNeigh{};
+
 template<class DeviceType>
 class PairTersoffMODKokkos : public PairTersoffMOD {
  public:
@@ -77,6 +79,9 @@ class PairTersoffMODKokkos : public PairTersoffMOD {
   KOKKOS_INLINE_FUNCTION
   void operator()(TagPairTersoffMODComputeFullB<NEIGHFLAG,EVFLAG>, const int&) const;
 
+  KOKKOS_INLINE_FUNCTION
+  void operator()(TagPairTersoffMODComputeShortNeigh, const int&) const;
+
   KOKKOS_INLINE_FUNCTION
   double ters_fc_k(const int &i, const int &j, const int &k, const F_FLOAT &r) const;
 
@@ -184,6 +189,7 @@ class PairTersoffMODKokkos : public PairTersoffMOD {
   // hardwired to space for 15 atom types
   //params_ters m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1];
 
+  int inum; 
   typename AT::t_x_array_randomread x;
   typename AT::t_f_array f;
   typename AT::t_int_1d_randomread type;
@@ -203,10 +209,12 @@ class PairTersoffMODKokkos : public PairTersoffMOD {
   typename ArrayTypes<DeviceType>::t_int_1d_randomread d_numneigh;
   //NeighListKokkos<DeviceType> k_list;
 
-  class AtomKokkos *atomKK;
   int neighflag,newton_pair;
   int nlocal,nall,eflag,vflag;
 
+  Kokkos::View<int**,DeviceType> d_neighbors_short;
+  Kokkos::View<int*,DeviceType> d_numneigh_short;
+
   friend void pair_virial_fdotr_compute<PairTersoffMODKokkos>(PairTersoffMODKokkos*);
 };
 
diff --git a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp
index 382cff8ef54bb5d3fd5eda2b93f95e7fd972c294..6f011aecf46d79d4224a29a03026ec405559d7ec 100644
--- a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp
+++ b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp
@@ -205,7 +205,7 @@ void PairTersoffZBLKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
   nall = atom->nlocal + atom->nghost;
   newton_pair = force->newton_pair;
 
-  const int inum = list->inum;
+  inum = list->inum;
   const int ignum = inum + list->gnum;
   NeighListKokkos<DeviceType>* k_list = static_cast<NeighListKokkos<DeviceType>*>(list);
   d_numneigh = k_list->d_numneigh;
@@ -218,6 +218,18 @@ void PairTersoffZBLKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
   EV_FLOAT ev;
   EV_FLOAT ev_all;
 
+  // build short neighbor list
+
+  int max_neighs = d_neighbors.dimension_1();
+
+  if ((d_neighbors_short.dimension_1() != max_neighs) ||
+     (d_neighbors_short.dimension_0() != ignum)) {
+    d_neighbors_short = Kokkos::View<int**,DeviceType>("Tersoff::neighbors_short",ignum,max_neighs);
+  }
+  if (d_numneigh_short.dimension_0()!=ignum)
+    d_numneigh_short = Kokkos::View<int*,DeviceType>("Tersoff::numneighs_short",ignum);
+  Kokkos::parallel_for(Kokkos::RangePolicy<DeviceType,TagPairTersoffZBLComputeShortNeigh>(0,neighflag==FULL?ignum:inum), *this);
+
   if (neighflag == HALF) {
     if (evflag)
       Kokkos::parallel_reduce(Kokkos::RangePolicy<DeviceType, TagPairTersoffZBLComputeHalf<HALF,1> >(0,inum),*this,ev);
@@ -271,6 +283,35 @@ void PairTersoffZBLKokkos<DeviceType>::compute(int eflag_in, int vflag_in)
 
 /* ---------------------------------------------------------------------- */
 
+template<class DeviceType>
+KOKKOS_INLINE_FUNCTION
+void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeShortNeigh, const int& ii) const {
+    const int i = d_ilist[ii];
+    const X_FLOAT xtmp = x(i,0);
+    const X_FLOAT ytmp = x(i,1);
+    const X_FLOAT ztmp = x(i,2);
+
+    const int jnum = d_numneigh[i];
+    int inside = 0;
+    for (int jj = 0; jj < jnum; jj++) {
+      int j = d_neighbors(i,jj);
+      j &= NEIGHMASK;
+
+      const X_FLOAT delx = xtmp - x(j,0);
+      const X_FLOAT dely = ytmp - x(j,1);
+      const X_FLOAT delz = ztmp - x(j,2);
+      const F_FLOAT rsq = delx*delx + dely*dely + delz*delz;
+
+      if (rsq < cutmax*cutmax) {
+        d_neighbors_short(i,inside) = j;
+        inside++;
+      }
+    }
+    d_numneigh_short(i) = inside;
+}
+
+/* ---------------------------------------------------------------------- */
+
 template<class DeviceType>
 template<int NEIGHFLAG, int EVFLAG>
 KOKKOS_INLINE_FUNCTION
@@ -287,21 +328,22 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeHalf<N
   const int itype = type(i);
   const int itag = tag(i);
 
-  int j,k,jj,kk,jtag,jtype,ktype;
-  F_FLOAT rsq1, cutsq1, rsq2, cutsq2, rij, rik, bo_ij;
   F_FLOAT fi[3], fj[3], fk[3];
-  X_FLOAT delx1, dely1, delz1, delx2, dely2, delz2;
 
   //const AtomNeighborsConst d_neighbors_i = k_list.get_neighbors_const(i);
-  const int jnum = d_numneigh[i];
+  const int jnum = d_numneigh_short[i];
 
   // repulsive
 
-  for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+  F_FLOAT f_x = 0.0;
+  F_FLOAT f_y = 0.0;
+  F_FLOAT f_z = 0.0;
+
+  for (int jj = 0; jj < jnum; jj++) {
+    int j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
-    jtype = type(j);
-    jtag = tag(j);
+    const int jtype = type(j);
+    const int jtag = tag(j);
 
     if (itag > jtag) {
       if ((itag+jtag) % 2 == 0) continue;
@@ -359,9 +401,9 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeHalf<N
       eng = (1.0 - fermi_k(itype,jtype,jtype,r)) * eng_z +
 	      fermi_k(itype,jtype,jtype,r) * eng_t;
 
-    a_f(i,0) += delx*frep;
-    a_f(i,1) += dely*frep;
-    a_f(i,2) += delz*frep;
+    f_x += delx*frep;
+    f_y += dely*frep;
+    f_z += delz*frep;
     a_f(j,0) -= delx*frep;
     a_f(j,1) -= dely*frep;
     a_f(j,2) -= delz*frep;
@@ -374,35 +416,35 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeHalf<N
 
   // attractive: bond order
 
-  for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+  for (int jj = 0; jj < jnum; jj++) {
+    int j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
-    jtype = type(j);
+    const int jtype = type(j);
 
-    delx1 = xtmp - x(j,0);
-    dely1 = ytmp - x(j,1);
-    delz1 = ztmp - x(j,2);
-    rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1;
-    cutsq1 = paramskk(itype,jtype,jtype).cutsq;
+    const F_FLOAT delx1 = xtmp - x(j,0);
+    const F_FLOAT dely1 = ytmp - x(j,1);
+    const F_FLOAT delz1 = ztmp - x(j,2);
+    const F_FLOAT rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1;
+    const F_FLOAT cutsq1 = paramskk(itype,jtype,jtype).cutsq;
 
-    bo_ij = 0.0;
+    F_FLOAT bo_ij = 0.0;
     if (rsq1 > cutsq1) continue;
-    rij = sqrt(rsq1);
+    const F_FLOAT rij = sqrt(rsq1);
 
-    for (kk = 0; kk < jnum; kk++) {
+    for (int kk = 0; kk < jnum; kk++) {
       if (jj == kk) continue;
-      k = d_neighbors(i,kk);
+      int k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
-      ktype = type(k);
+      const int ktype = type(k);
 
-      delx2 = xtmp - x(k,0);
-      dely2 = ytmp - x(k,1);
-      delz2 = ztmp - x(k,2);
-      rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
-      cutsq2 = paramskk(itype,jtype,ktype).cutsq;
+      const F_FLOAT delx2 = xtmp - x(k,0);
+      const F_FLOAT dely2 = ytmp - x(k,1);
+      const F_FLOAT delz2 = ztmp - x(k,2);
+      const F_FLOAT rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
+      const F_FLOAT cutsq2 = paramskk(itype,jtype,ktype).cutsq;
 
       if (rsq2 > cutsq2) continue;
-      rik = sqrt(rsq2);
+      const F_FLOAT rik = sqrt(rsq2);
       bo_ij += bondorder(itype,jtype,ktype,rij,delx1,dely1,delz1,rik,delx2,dely2,delz2);
     }
 
@@ -413,58 +455,64 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeHalf<N
     const F_FLOAT bij = ters_bij_k(itype,jtype,jtype,bo_ij);
     const F_FLOAT fatt = -0.5*bij * dfa / rij;
     const F_FLOAT prefactor = 0.5*fa * ters_dbij(itype,jtype,jtype,bo_ij);
-    const F_FLOAT eng = 0.5*bij * fa;
 
-    a_f(i,0) += delx1*fatt;
-    a_f(i,1) += dely1*fatt;
-    a_f(i,2) += delz1*fatt;
-    a_f(j,0) -= delx1*fatt;
-    a_f(j,1) -= dely1*fatt;
-    a_f(j,2) -= delz1*fatt;
+    f_x += delx1*fatt;
+    f_y += dely1*fatt;
+    f_z += delz1*fatt;
+    F_FLOAT fj_x = -delx1*fatt;
+    F_FLOAT fj_y = -dely1*fatt;
+    F_FLOAT fj_z = -delz1*fatt;
 
     if (EVFLAG) {
+      const F_FLOAT eng = 0.5*bij * fa;
       if (eflag) ev.evdwl += eng;
       if (vflag_either || eflag_atom)
-	this->template ev_tally<NEIGHFLAG>(ev,i,j,eng,fatt,delx1,dely1,delz1);
+        this->template ev_tally<NEIGHFLAG>(ev,i,j,eng,fatt,delx1,dely1,delz1);
     }
 
     // attractive: three-body force
 
-    for (kk = 0; kk < jnum; kk++) {
+    for (int kk = 0; kk < jnum; kk++) {
       if (jj == kk) continue;
-      k = d_neighbors(i,kk);
+      int k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
-      ktype = type(k);
+      const int ktype = type(k);
 
-      delx2 = xtmp - x(k,0);
-      dely2 = ytmp - x(k,1);
-      delz2 = ztmp - x(k,2);
-      rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
-      cutsq2 = paramskk(itype,jtype,ktype).cutsq;
+      const F_FLOAT delx2 = xtmp - x(k,0);
+      const F_FLOAT dely2 = ytmp - x(k,1);
+      const F_FLOAT delz2 = ztmp - x(k,2);
+      const F_FLOAT rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
+      const F_FLOAT cutsq2 = paramskk(itype,jtype,ktype).cutsq;
 
       if (rsq2 > cutsq2) continue;
-      rik = sqrt(rsq2);
+      const F_FLOAT rik = sqrt(rsq2);
       ters_dthb(itype,jtype,ktype,prefactor,rij,delx1,dely1,delz1,
-		rik,delx2,dely2,delz2,fi,fj,fk);
-
-      a_f(i,0) += fi[0];
-      a_f(i,1) += fi[1];
-      a_f(i,2) += fi[2];
-      a_f(j,0) += fj[0];
-      a_f(j,1) += fj[1];
-      a_f(j,2) += fj[2];
+                rik,delx2,dely2,delz2,fi,fj,fk);
+
+      f_x += fi[0];
+      f_y += fi[1];
+      f_z += fi[2];
+      fj_x += fj[0];
+      fj_y += fj[1];
+      fj_z += fj[2];
       a_f(k,0) += fk[0];
       a_f(k,1) += fk[1];
       a_f(k,2) += fk[2];
 
       if (vflag_atom) {
-	F_FLOAT delrij[3], delrik[3];
-	delrij[0] = -delx1; delrij[1] = -dely1; delrij[2] = -delz1;
-	delrik[0] = -delx2; delrik[1] = -dely2; delrik[2] = -delz2;
-	if (vflag_either) this->template v_tally3<NEIGHFLAG>(ev,i,j,k,fj,fk,delrij,delrik);
+        F_FLOAT delrij[3], delrik[3];
+        delrij[0] = -delx1; delrij[1] = -dely1; delrij[2] = -delz1;
+        delrik[0] = -delx2; delrik[1] = -dely2; delrik[2] = -delz2;
+        if (vflag_either) this->template v_tally3<NEIGHFLAG>(ev,i,j,k,fj,fk,delrij,delrik);
       }
     }
+    a_f(j,0) += fj_x;
+    a_f(j,1) += fj_y;
+    a_f(j,2) += fj_z;
   }
+  a_f(i,0) += f_x;
+  a_f(i,1) += f_y;
+  a_f(i,2) += f_z;
 }
 
 template<class DeviceType>
@@ -498,8 +546,11 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullA<
 
   // repulsive
 
+  F_FLOAT f_x = 0.0;
+  F_FLOAT f_y = 0.0;
+  F_FLOAT f_z = 0.0;
   for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+    j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     const int jtype = type(j);
 
@@ -549,9 +600,9 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullA<
       eng = (1.0 - fermi_k(itype,jtype,jtype,r)) * eng_z +
 	      fermi_k(itype,jtype,jtype,r) * eng_t;
 
-    f(i,0) += delx*frep;
-    f(i,1) += dely*frep;
-    f(i,2) += delz*frep;
+    f_x += delx*frep;
+    f_y += dely*frep;
+    f_z += delz*frep;
 
     if (EVFLAG) {
       if (eflag)
@@ -564,7 +615,7 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullA<
   // attractive: bond order
 
   for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+    j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     jtype = type(j);
 
@@ -580,7 +631,7 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullA<
 
     for (kk = 0; kk < jnum; kk++) {
       if (jj == kk) continue;
-      k = d_neighbors(i,kk);
+      k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
       ktype = type(k);
 
@@ -604,9 +655,9 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullA<
     const F_FLOAT prefactor = 0.5*fa * ters_dbij(itype,jtype,jtype,bo_ij);
     const F_FLOAT eng = 0.5*bij * fa;
 
-    f(i,0) += delx1*fatt;
-    f(i,1) += dely1*fatt;
-    f(i,2) += delz1*fatt;
+    f_x += delx1*fatt;
+    f_y += dely1*fatt;
+    f_z += delz1*fatt;
 
     if (EVFLAG) {
       if (eflag) ev.evdwl += 0.5*eng;
@@ -618,7 +669,7 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullA<
 
     for (kk = 0; kk < jnum; kk++) {
       if (jj == kk) continue;
-      k = d_neighbors(i,kk);
+      k = d_neighbors_short(i,kk);
       k &= NEIGHMASK;
       ktype = type(k);
 
@@ -633,9 +684,9 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullA<
       ters_dthb(itype,jtype,ktype,prefactor,rij,delx1,dely1,delz1,
 		rik,delx2,dely2,delz2,fi,fj,fk);
 
-      f(i,0) += fi[0];
-      f(i,1) += fi[1];
-      f(i,2) += fi[2];
+      f_x += fi[0];
+      f_y += fi[1];
+      f_z += fi[2];
 
       if (vflag_atom) {
 	F_FLOAT delrij[3], delrik[3];
@@ -645,6 +696,9 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullA<
       }
     }
   }
+  f(i,0) += f_x;
+  f(i,1) += f_y;
+  f(i,2) += f_z;
 }
 
 template<class DeviceType>
@@ -673,12 +727,16 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullB<
   F_FLOAT fj[3], fk[3];
   X_FLOAT delx1, dely1, delz1, delx2, dely2, delz2;
 
-  const int jnum = d_numneigh[i];
+  const int jnum = d_numneigh_short[i];
+
+  F_FLOAT f_x = 0.0;
+  F_FLOAT f_y = 0.0;
+  F_FLOAT f_z = 0.0;
 
   // attractive: bond order
 
   for (jj = 0; jj < jnum; jj++) {
-    j = d_neighbors(i,jj);
+    j = d_neighbors_short(i,jj);
     j &= NEIGHMASK;
     if (j >= nlocal) continue;
     jtype = type(j);
@@ -693,10 +751,10 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullB<
     if (rsq1 > cutsq1) continue;
     rij = sqrt(rsq1);
 
-    j_jnum = d_numneigh[j];
+    j_jnum = d_numneigh_short[j];
 
     for (kk = 0; kk < j_jnum; kk++) {
-      k = d_neighbors(j,kk);
+      k = d_neighbors_short(j,kk);
       if (k == i) continue;
       k &= NEIGHMASK;
       ktype = type(k);
@@ -722,9 +780,9 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullB<
     const F_FLOAT prefactor = 0.5*fa * ters_dbij(jtype,itype,itype,bo_ij);
     const F_FLOAT eng = 0.5*bij * fa;
 
-    f(i,0) -= delx1*fatt;
-    f(i,1) -= dely1*fatt;
-    f(i,2) -= delz1*fatt;
+    f_x -= delx1*fatt;
+    f_y -= dely1*fatt;
+    f_z -= delz1*fatt;
 
     if (EVFLAG) {
       if (eflag)
@@ -736,7 +794,7 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullB<
     // attractive: three-body force
 
     for (kk = 0; kk < j_jnum; kk++) {
-      k = d_neighbors(j,kk);
+      k = d_neighbors_short(j,kk);
       if (k == i) continue;
       k &= NEIGHMASK;
       ktype = type(k);
@@ -751,9 +809,9 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullB<
       rik = sqrt(rsq2);
       ters_dthbj(jtype,itype,ktype,prefactor,rij,delx1,dely1,delz1,
 		rik,delx2,dely2,delz2,fj,fk);
-      f(i,0) += fj[0];
-      f(i,1) += fj[1];
-      f(i,2) += fj[2];
+      f_x += fj[0];
+      f_y += fj[1];
+      f_z += fj[2];
 
       if (vflag_atom) {
 	F_FLOAT delrji[3], delrjk[3];
@@ -766,11 +824,14 @@ void PairTersoffZBLKokkos<DeviceType>::operator()(TagPairTersoffZBLComputeFullB<
       const F_FLOAT prefactor_jk = 0.5*fa_jk * ters_dbij(jtype,ktype,itype,bo_ij);
       ters_dthbk(jtype,ktype,itype,prefactor_jk,rik,delx2,dely2,delz2,
 		rij,delx1,dely1,delz1,fk);
-      f(i,0) += fk[0];
-      f(i,1) += fk[1];
-      f(i,2) += fk[2];
+      f_x += fk[0];
+      f_y += fk[1];
+      f_z += fk[2];
     }
   }
+  f(i,0) += f_x;
+  f(i,1) += f_y;
+  f(i,2) += f_z;
 }
 
 template<class DeviceType>
diff --git a/src/KOKKOS/pair_tersoff_zbl_kokkos.h b/src/KOKKOS/pair_tersoff_zbl_kokkos.h
index d580634197964ad6a11cf7620ba64ec5c1d4033b..136366d3fa3ec9ca503067e916e4dafb87120e25 100644
--- a/src/KOKKOS/pair_tersoff_zbl_kokkos.h
+++ b/src/KOKKOS/pair_tersoff_zbl_kokkos.h
@@ -39,6 +39,8 @@ struct TagPairTersoffZBLComputeFullA{};
 template<int NEIGHFLAG, int EVFLAG>
 struct TagPairTersoffZBLComputeFullB{};
 
+struct TagPairTersoffZBLComputeShortNeigh{};
+
 template<class DeviceType>
 class PairTersoffZBLKokkos : public PairTersoffZBL {
  public:
@@ -77,6 +79,8 @@ class PairTersoffZBLKokkos : public PairTersoffZBL {
   KOKKOS_INLINE_FUNCTION
   void operator()(TagPairTersoffZBLComputeFullB<NEIGHFLAG,EVFLAG>, const int&) const;
 
+  KOKKOS_INLINE_FUNCTION
+  void operator()(TagPairTersoffZBLComputeShortNeigh, const int&) const;
   KOKKOS_INLINE_FUNCTION
   double ters_fc_k(const int &i, const int &j, const int &k, const F_FLOAT &r) const;
 
@@ -190,6 +194,7 @@ class PairTersoffZBLKokkos : public PairTersoffZBL {
   // hardwired to space for 15 atom types
   //params_ters m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1];
 
+  int inum; 
   typename AT::t_x_array_randomread x;
   typename AT::t_f_array f;
   typename AT::t_int_1d_randomread type;
@@ -209,10 +214,12 @@ class PairTersoffZBLKokkos : public PairTersoffZBL {
   typename ArrayTypes<DeviceType>::t_int_1d_randomread d_numneigh;
   //NeighListKokkos<DeviceType> k_list;
 
-  class AtomKokkos *atomKK;
   int neighflag,newton_pair;
   int nlocal,nall,eflag,vflag;
 
+  Kokkos::View<int**,DeviceType> d_neighbors_short;
+  Kokkos::View<int*,DeviceType> d_numneigh_short;
+
   // ZBL
   F_FLOAT global_a_0;                // Bohr radius for Coulomb repulsion
   F_FLOAT global_epsilon_0;        // permittivity of vacuum for Coulomb repulsion
diff --git a/src/KSPACE/ewald_disp.cpp b/src/KSPACE/ewald_disp.cpp
index 49b7cde12e4db32e5560e8036aaee151101a7a78..2a4cc4b70c3ea190640ceab346fe9e852db0c88d 100644
--- a/src/KSPACE/ewald_disp.cpp
+++ b/src/KSPACE/ewald_disp.cpp
@@ -141,6 +141,7 @@ void EwaldDisp::init()
   init_coeffs();
   init_coeff_sums();
   if (function[0]) qsum_qsq();
+  else qsqsum = qsum = 0.0;
   natoms_original = atom->natoms;
 
   // turn off coulombic if no charge
@@ -152,6 +153,7 @@ void EwaldDisp::init()
   }
 
   double bsbsum = 0.0;
+  M2 = 0.0;
   if (function[1]) bsbsum = sum[1].x2;
   if (function[2]) bsbsum = sum[2].x2;
 
@@ -489,8 +491,9 @@ void EwaldDisp::init_coeffs()
     double **b = (double **) force->pair->extract("B",tmp);
     delete [] B;
     B = new double[n+1];
+    B[0] = 0.0;
     bytes += (n+1)*sizeof(double);
-    for (int i=0; i<=n; ++i) B[i] = sqrt(fabs(b[i][i]));
+    for (int i=1; i<=n; ++i) B[i] = sqrt(fabs(b[i][i]));
   }
   if (function[2]) {                                        // arithmetic 1/r^6
     double **epsilon = (double **) force->pair->extract("epsilon",tmp);
@@ -502,7 +505,9 @@ void EwaldDisp::init_coeffs()
     if (!(epsilon&&sigma))
       error->all(
           FLERR,"Epsilon or sigma reference not set by pair style in ewald/n");
-    for (int i=0; i<=n; ++i) {
+    for (int j=0; j<7; ++j)
+      *(bi++) = 0.0;
+    for (int i=1; i<=n; ++i) {
       eps_i = sqrt(epsilon[i][i]);
       sigma_i = sigma[i][i];
       sigma_n = 1.0;
@@ -523,6 +528,7 @@ void EwaldDisp::init_coeff_sums()
   Sum sum_local[EWALD_MAX_NSUMS];
 
   memset(sum_local, 0, EWALD_MAX_NSUMS*sizeof(Sum));
+  memset(sum,       0, EWALD_MAX_NSUMS*sizeof(Sum));
 
   // now perform qsum and qsq via parent qsum_qsq()
 
diff --git a/src/KSPACE/pair_born_coul_long.cpp b/src/KSPACE/pair_born_coul_long.cpp
index 15bcd1081b892a610383b8d33c5ef9e1953c698c..14d43f4c6383fcb1dcc82e9fbbb89f6823f62ba7 100644
--- a/src/KSPACE/pair_born_coul_long.cpp
+++ b/src/KSPACE/pair_born_coul_long.cpp
@@ -265,8 +265,8 @@ void PairBornCoulLong::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a_one = force->numeric(FLERR,arg[2]);
   double rho_one = force->numeric(FLERR,arg[3]);
diff --git a/src/KSPACE/pair_buck_coul_long.cpp b/src/KSPACE/pair_buck_coul_long.cpp
index 683e5bf0045e17f979e9d44e489576ec1fe762aa..9cd8485e5ccbcc849e26543f5fbcbea516317ac4 100644
--- a/src/KSPACE/pair_buck_coul_long.cpp
+++ b/src/KSPACE/pair_buck_coul_long.cpp
@@ -256,8 +256,8 @@ void PairBuckCoulLong::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a_one = force->numeric(FLERR,arg[2]);
   double rho_one = force->numeric(FLERR,arg[3]);
diff --git a/src/KSPACE/pair_buck_long_coul_long.cpp b/src/KSPACE/pair_buck_long_coul_long.cpp
index 52d250fbe180c8d9284d8f8b6eaa804bab777e1f..6504af57d92a71705023a488fa9ef14035b507c1 100644
--- a/src/KSPACE/pair_buck_long_coul_long.cpp
+++ b/src/KSPACE/pair_buck_long_coul_long.cpp
@@ -51,8 +51,6 @@ PairBuckLongCoulLong::PairBuckLongCoulLong(LAMMPS *lmp) : Pair(lmp)
   dispersionflag = ewaldflag = pppmflag = 1;
   respa_enable = 1;
   writedata = 1;
-  ftable = NULL;
-  fdisptable = NULL;
 }
 
 /* ----------------------------------------------------------------------
@@ -134,6 +132,7 @@ PairBuckLongCoulLong::~PairBuckLongCoulLong()
     memory->destroy(offset);
   }
   if (ftable) free_tables();
+  if (fdisptable) free_disp_tables();
 }
 
 /* ----------------------------------------------------------------------
@@ -197,8 +196,8 @@ void PairBuckLongCoulLong::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(*(arg++),atom->ntypes,ilo,ihi);
-  force->bounds(*(arg++),atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,*(arg++),atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,*(arg++),atom->ntypes,jlo,jhi);
 
   double buck_a_one = force->numeric(FLERR,*(arg++));
   double buck_rho_one = force->numeric(FLERR,*(arg++));
@@ -288,8 +287,8 @@ void PairBuckLongCoulLong::init_style()
   if (ewald_order&(1<<6)) g_ewald_6 = force->kspace->g_ewald_6;
   // setup force tables
 
-  if (ncoultablebits) init_tables(cut_coul,cut_respa);
-  if (ndisptablebits) init_tables_disp(cut_buck_global);
+  if (ncoultablebits && (ewald_order&(1<<1))) init_tables(cut_coul,cut_respa);
+  if (ndisptablebits && (ewald_order&(1<<6))) init_tables_disp(cut_buck_global);
 }
 
 /* ----------------------------------------------------------------------
diff --git a/src/KSPACE/pair_coul_long.cpp b/src/KSPACE/pair_coul_long.cpp
index c1cd14523e59b50b204f6b41821a2a460c635a53..988694153afa952e71a403f859a0106860496a5a 100644
--- a/src/KSPACE/pair_coul_long.cpp
+++ b/src/KSPACE/pair_coul_long.cpp
@@ -215,8 +215,8 @@ void PairCoulLong::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   int count = 0;
   for (int i = ilo; i <= ihi; i++) {
diff --git a/src/KSPACE/pair_lj_charmm_coul_long.cpp b/src/KSPACE/pair_lj_charmm_coul_long.cpp
index 7fad9c5eef45dc79b4ee47a49671da08a173c2e9..bd020a439a67b95c99820bc95a229999eed5a55d 100644
--- a/src/KSPACE/pair_lj_charmm_coul_long.cpp
+++ b/src/KSPACE/pair_lj_charmm_coul_long.cpp
@@ -650,8 +650,8 @@ void PairLJCharmmCoulLong::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/KSPACE/pair_lj_cut_coul_long.cpp b/src/KSPACE/pair_lj_cut_coul_long.cpp
index 866db6ba659120ab6b17da7a864bea10088c13b9..0d0649fe6a2d4b757b864335f2ec896b58684023 100644
--- a/src/KSPACE/pair_lj_cut_coul_long.cpp
+++ b/src/KSPACE/pair_lj_cut_coul_long.cpp
@@ -624,8 +624,8 @@ void PairLJCutCoulLong::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/KSPACE/pair_lj_long_coul_long.cpp b/src/KSPACE/pair_lj_long_coul_long.cpp
index 3675ea76dc36668ff2865f61a59d5c26483c03aa..5ae607a2f055471cb5eb22be454ed5fa6a6fdfa8 100644
--- a/src/KSPACE/pair_lj_long_coul_long.cpp
+++ b/src/KSPACE/pair_lj_long_coul_long.cpp
@@ -130,6 +130,7 @@ PairLJLongCoulLong::~PairLJLongCoulLong()
     memory->destroy(offset);
   }
   if (ftable) free_tables();
+  if (fdisptable) free_disp_tables();
 }
 
 /* ----------------------------------------------------------------------
@@ -192,8 +193,8 @@ void PairLJLongCoulLong::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
@@ -282,8 +283,8 @@ void PairLJLongCoulLong::init_style()
 
   // setup force tables
 
-  if (ncoultablebits) init_tables(cut_coul,cut_respa);
-  if (ndisptablebits) init_tables_disp(cut_lj_global);
+  if (ncoultablebits && (ewald_order&(1<<1))) init_tables(cut_coul,cut_respa);
+  if (ndisptablebits && (ewald_order&(1<<6))) init_tables_disp(cut_lj_global);
 
 }
 
diff --git a/src/KSPACE/pppm_disp.cpp b/src/KSPACE/pppm_disp.cpp
index b7ec188150e51752eb962c9b90f66a6d51339751..6bdf8a2d07da8127336c70853695b5327f72a0e4 100644
--- a/src/KSPACE/pppm_disp.cpp
+++ b/src/KSPACE/pppm_disp.cpp
@@ -1357,7 +1357,8 @@ void PPPMDisp::init_coeffs()				// local pair coeffs
   if (function[1]) {					// geometric 1/r^6
     double **b = (double **) force->pair->extract("B",tmp);
     B = new double[n+1];
-    for (int i=0; i<=n; ++i) B[i] = sqrt(fabs(b[i][i]));
+    B[0] = 0.0;
+    for (int i=1; i<=n; ++i) B[i] = sqrt(fabs(b[i][i]));
   }
   if (function[2]) {					// arithmetic 1/r^6
     //cannot use epsilon, because this has not been set yet
diff --git a/src/MAKE/OPTIONS/Makefile.kokkos_phi b/src/MAKE/OPTIONS/Makefile.kokkos_phi
index 8fc5591cd0a94dd64e0e8d3e867c779724a7413e..7e69cc033fdda9bb4191c158254afd8ca12f0c4d 100644
--- a/src/MAKE/OPTIONS/Makefile.kokkos_phi
+++ b/src/MAKE/OPTIONS/Makefile.kokkos_phi
@@ -6,12 +6,12 @@ SHELL = /bin/sh
 # compiler/linker settings
 # specify flags and libraries needed for your compiler
 
-CC =		mpiicpc
+CC =		mpicxx
 CCFLAGS =	-g -O3
 SHFLAGS =	-fPIC
 DEPFLAGS =	-M
 
-LINK =		mpiicpc
+LINK =		mpicxx
 LINKFLAGS =	-g -O3
 LIB = 
 SIZE =		size
@@ -20,7 +20,7 @@ ARCHIVE =	ar
 ARFLAGS =	-rc
 SHLIBFLAGS =	-shared
 KOKKOS_DEVICES = OpenMP
-KOKKOS_ARCH = KNC
+KOKKOS_ARCH = KNL
 
 # ---------------------------------------------------------------------
 # LAMMPS-specific settings, all OPTIONAL
diff --git a/src/MANYBODY/pair_adp.cpp b/src/MANYBODY/pair_adp.cpp
index ce1c382da93876fa2652f37ca91ad47e1e19e0aa..579675c4a020a1d08c60bb39b785a250e3edd8e8 100644
--- a/src/MANYBODY/pair_adp.cpp
+++ b/src/MANYBODY/pair_adp.cpp
@@ -493,7 +493,7 @@ void PairADP::coeff(int narg, char **arg)
     for (j = i; j <= n; j++) {
       if (map[i] >= 0 && map[j] >= 0) {
         setflag[i][j] = 1;
-        if (i == j) atom->set_mass(i,setfl->mass[map[i]]);
+        if (i == j) atom->set_mass(FLERR,i,setfl->mass[map[i]]);
         count++;
       }
     }
diff --git a/src/MANYBODY/pair_eam.cpp b/src/MANYBODY/pair_eam.cpp
index 53fbef60e85af97803706f52679675cf8c9d872c..a610ca1bf15548070c9389f4c81a8dffe6a2e9c0 100644
--- a/src/MANYBODY/pair_eam.cpp
+++ b/src/MANYBODY/pair_eam.cpp
@@ -366,8 +366,8 @@ void PairEAM::coeff(int narg, char **arg)
   // parse pair of atom types
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   // read funcfl file if hasn't already been read
   // store filename in Funcfl data struct
@@ -395,7 +395,7 @@ void PairEAM::coeff(int narg, char **arg)
       if (i == j) {
         setflag[i][i] = 1;
         map[i] = ifuncfl;
-        atom->set_mass(i,funcfl[ifuncfl].mass);
+        atom->set_mass(FLERR,i,funcfl[ifuncfl].mass);
         count++;
       }
       scale[i][j] = 1.0;
diff --git a/src/MANYBODY/pair_eam_alloy.cpp b/src/MANYBODY/pair_eam_alloy.cpp
index 899526f338d7a6bd33b862ce6ffcfadffa0310bb..d3ed404a0b969ea870ab4b24440b1c0f9fe42110 100644
--- a/src/MANYBODY/pair_eam_alloy.cpp
+++ b/src/MANYBODY/pair_eam_alloy.cpp
@@ -99,7 +99,7 @@ void PairEAMAlloy::coeff(int narg, char **arg)
     for (j = i; j <= n; j++) {
       if (map[i] >= 0 && map[j] >= 0) {
         setflag[i][j] = 1;
-        if (i == j) atom->set_mass(i,setfl->mass[map[i]]);
+        if (i == j) atom->set_mass(FLERR,i,setfl->mass[map[i]]);
         count++;
       }
       scale[i][j] = 1.0;
diff --git a/src/MANYBODY/pair_eam_fs.cpp b/src/MANYBODY/pair_eam_fs.cpp
index 8b4c86703fddf970061a2e0775d03f7a572be47f..f0f1814dc2eed4a73b9ce1306ef57beaefe966b1 100644
--- a/src/MANYBODY/pair_eam_fs.cpp
+++ b/src/MANYBODY/pair_eam_fs.cpp
@@ -99,7 +99,7 @@ void PairEAMFS::coeff(int narg, char **arg)
     for (j = i; j <= n; j++) {
       if (map[i] >= 0 && map[j] >= 0) {
         setflag[i][j] = 1;
-        if (i == j) atom->set_mass(i,fs->mass[map[i]]);
+        if (i == j) atom->set_mass(FLERR,i,fs->mass[map[i]]);
         count++;
       }
       scale[i][j] = 1.0;
diff --git a/src/MANYBODY/pair_eim.cpp b/src/MANYBODY/pair_eim.cpp
index a2807eb78cf03e5d18902eabceb44d0cf28ab4a8..e2d8a88aee67c9ddb852865d29b095097145f14a 100644
--- a/src/MANYBODY/pair_eim.cpp
+++ b/src/MANYBODY/pair_eim.cpp
@@ -415,7 +415,7 @@ void PairEIM::coeff(int narg, char **arg)
     for (j = i; j <= n; j++)
       if (map[i] >= 0 && map[j] >= 0) {
         setflag[i][j] = 1;
-        if (i == j) atom->set_mass(i,setfl->mass[map[i]]);
+        if (i == j) atom->set_mass(FLERR,i,setfl->mass[map[i]]);
         count++;
       }
 
diff --git a/src/MANYBODY/pair_sw.cpp b/src/MANYBODY/pair_sw.cpp
index 666230362c3f25b90d7f19a5a4d2793dd6fc1bae..da2f5da37e003119d2f77521f883bbb28630bc20 100644
--- a/src/MANYBODY/pair_sw.cpp
+++ b/src/MANYBODY/pair_sw.cpp
@@ -51,6 +51,9 @@ PairSW::PairSW(LAMMPS *lmp) : Pair(lmp)
   params = NULL;
   elem2param = NULL;
   map = NULL;
+
+  maxshort = 10;
+  neighshort = NULL;
 }
 
 /* ----------------------------------------------------------------------
@@ -70,6 +73,7 @@ PairSW::~PairSW()
   if (allocated) {
     memory->destroy(setflag);
     memory->destroy(cutsq);
+    memory->destroy(neighshort);
     delete [] map;
   }
 }
@@ -102,6 +106,8 @@ void PairSW::compute(int eflag, int vflag)
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
+  double fxtmp,fytmp,fztmp;
+
   // loop over full neighbor list of my atoms
 
   for (ii = 0; ii < inum; ii++) {
@@ -111,17 +117,36 @@ void PairSW::compute(int eflag, int vflag)
     xtmp = x[i][0];
     ytmp = x[i][1];
     ztmp = x[i][2];
+    fxtmp = fytmp = fztmp = 0.0;
 
     // two-body interactions, skip half of them
 
     jlist = firstneigh[i];
     jnum = numneigh[i];
+    int numshort = 0;
 
     for (jj = 0; jj < jnum; jj++) {
       j = jlist[jj];
       j &= NEIGHMASK;
-      jtag = tag[j];
 
+      delx = xtmp - x[j][0];
+      dely = ytmp - x[j][1];
+      delz = ztmp - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
+
+      jtype = map[type[j]];
+      ijparam = elem2param[itype][jtype][jtype];
+      if (rsq >= params[ijparam].cutsq) {
+        continue;
+      } else {
+        neighshort[numshort++] = j;
+        if (numshort >= maxshort) {
+          maxshort += maxshort/2;
+          memory->grow(neighshort,maxshort,"pair:neighshort");
+        }
+      }
+
+      jtag = tag[j];
       if (itag > jtag) {
         if ((itag+jtag) % 2 == 0) continue;
       } else if (itag < jtag) {
@@ -132,21 +157,11 @@ void PairSW::compute(int eflag, int vflag)
         if (x[j][2] == ztmp && x[j][1] == ytmp && x[j][0] < xtmp) continue;
       }
 
-      jtype = map[type[j]];
-
-      delx = xtmp - x[j][0];
-      dely = ytmp - x[j][1];
-      delz = ztmp - x[j][2];
-      rsq = delx*delx + dely*dely + delz*delz;
-
-      ijparam = elem2param[itype][jtype][jtype];
-      if (rsq >= params[ijparam].cutsq) continue;
-
       twobody(&params[ijparam],rsq,fpair,eflag,evdwl);
 
-      f[i][0] += delx*fpair;
-      f[i][1] += dely*fpair;
-      f[i][2] += delz*fpair;
+      fxtmp += delx*fpair;
+      fytmp += dely*fpair;
+      fztmp += delz*fpair;
       f[j][0] -= delx*fpair;
       f[j][1] -= dely*fpair;
       f[j][2] -= delz*fpair;
@@ -155,22 +170,22 @@ void PairSW::compute(int eflag, int vflag)
                            evdwl,0.0,fpair,delx,dely,delz);
     }
 
-    jnumm1 = jnum - 1;
+    jnumm1 = numshort - 1;
 
     for (jj = 0; jj < jnumm1; jj++) {
-      j = jlist[jj];
-      j &= NEIGHMASK;
+      j = neighshort[jj];
       jtype = map[type[j]];
       ijparam = elem2param[itype][jtype][jtype];
       delr1[0] = x[j][0] - xtmp;
       delr1[1] = x[j][1] - ytmp;
       delr1[2] = x[j][2] - ztmp;
       rsq1 = delr1[0]*delr1[0] + delr1[1]*delr1[1] + delr1[2]*delr1[2];
-      if (rsq1 >= params[ijparam].cutsq) continue;
 
-      for (kk = jj+1; kk < jnum; kk++) {
-        k = jlist[kk];
-        k &= NEIGHMASK;
+      double fjxtmp,fjytmp,fjztmp;
+      fjxtmp = fjytmp = fjztmp = 0.0;
+
+      for (kk = jj+1; kk < numshort; kk++) {
+        k = neighshort[kk];
         ktype = map[type[k]];
         ikparam = elem2param[itype][ktype][ktype];
         ijkparam = elem2param[itype][jtype][ktype];
@@ -179,24 +194,29 @@ void PairSW::compute(int eflag, int vflag)
         delr2[1] = x[k][1] - ytmp;
         delr2[2] = x[k][2] - ztmp;
         rsq2 = delr2[0]*delr2[0] + delr2[1]*delr2[1] + delr2[2]*delr2[2];
-        if (rsq2 >= params[ikparam].cutsq) continue;
 
         threebody(&params[ijparam],&params[ikparam],&params[ijkparam],
                   rsq1,rsq2,delr1,delr2,fj,fk,eflag,evdwl);
 
-        f[i][0] -= fj[0] + fk[0];
-        f[i][1] -= fj[1] + fk[1];
-        f[i][2] -= fj[2] + fk[2];
-        f[j][0] += fj[0];
-        f[j][1] += fj[1];
-        f[j][2] += fj[2];
+        fxtmp -= fj[0] + fk[0];
+        fytmp -= fj[1] + fk[1];
+        fztmp -= fj[2] + fk[2];
+        fjxtmp += fj[0];
+        fjytmp += fj[1];
+        fjztmp += fj[2];
         f[k][0] += fk[0];
         f[k][1] += fk[1];
         f[k][2] += fk[2];
 
         if (evflag) ev_tally3(i,j,k,evdwl,0.0,fj,fk,delr1,delr2);
       }
+      f[j][0] += fjxtmp;
+      f[j][1] += fjytmp;
+      f[j][2] += fjztmp;
     }
+    f[i][0] += fxtmp;
+    f[i][1] += fytmp;
+    f[i][2] += fztmp;
   }
 
   if (vflag_fdotr) virial_fdotr_compute();
@@ -211,7 +231,7 @@ void PairSW::allocate()
 
   memory->create(setflag,n+1,n+1,"pair:setflag");
   memory->create(cutsq,n+1,n+1,"pair:cutsq");
-
+  memory->create(neighshort,maxshort,"pair:neighshort");
   map = new int[n+1];
 }
 
diff --git a/src/MANYBODY/pair_sw.h b/src/MANYBODY/pair_sw.h
index ee1fc123ff5bccb70c117aa15a1d20734a0a4772..8d921a26e81a6cdbf20ce0b16af59ac603b5b2e8 100644
--- a/src/MANYBODY/pair_sw.h
+++ b/src/MANYBODY/pair_sw.h
@@ -55,6 +55,8 @@ class PairSW : public Pair {
   int nparams;                  // # of stored parameter sets
   int maxparam;                 // max # of parameter sets
   Param *params;                // parameter set for an I-J-K interaction
+  int maxshort;                 // size of short neighbor list array
+  int *neighshort;              // short neighbor list array
 
   virtual void allocate();
   void read_file(char *);
diff --git a/src/MANYBODY/pair_tersoff.cpp b/src/MANYBODY/pair_tersoff.cpp
index 4481685ec157686382d48c3acf21aa1586d386e9..062eed3f999f01237b7a4702e59a50a87ee27f68 100644
--- a/src/MANYBODY/pair_tersoff.cpp
+++ b/src/MANYBODY/pair_tersoff.cpp
@@ -52,6 +52,9 @@ PairTersoff::PairTersoff(LAMMPS *lmp) : Pair(lmp)
   params = NULL;
   elem2param = NULL;
   map = NULL;
+
+  maxshort = 10;
+  neighshort = NULL;
 }
 
 /* ----------------------------------------------------------------------
@@ -71,6 +74,7 @@ PairTersoff::~PairTersoff()
   if (allocated) {
     memory->destroy(setflag);
     memory->destroy(cutsq);
+    memory->destroy(neighshort);
     delete [] map;
   }
 }
@@ -98,12 +102,15 @@ void PairTersoff::compute(int eflag, int vflag)
   int *type = atom->type;
   int nlocal = atom->nlocal;
   int newton_pair = force->newton_pair;
+  const double cutshortsq = cutmax*cutmax;
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
+  double fxtmp,fytmp,fztmp;
+
   // loop over full neighbor list of my atoms
 
   for (ii = 0; ii < inum; ii++) {
@@ -113,17 +120,32 @@ void PairTersoff::compute(int eflag, int vflag)
     xtmp = x[i][0];
     ytmp = x[i][1];
     ztmp = x[i][2];
+    fxtmp = fytmp = fztmp = 0.0;
 
     // two-body interactions, skip half of them
 
     jlist = firstneigh[i];
     jnum = numneigh[i];
+    int numshort = 0;
 
     for (jj = 0; jj < jnum; jj++) {
       j = jlist[jj];
       j &= NEIGHMASK;
-      jtag = tag[j];
 
+      delx = xtmp - x[j][0];
+      dely = ytmp - x[j][1];
+      delz = ztmp - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
+
+      if (rsq < cutshortsq) {
+        neighshort[numshort++] = j;
+        if (numshort >= maxshort) {
+          maxshort += maxshort/2;
+          memory->grow(neighshort,maxshort,"pair:neighshort");
+        }
+      }
+
+      jtag = tag[j];
       if (itag > jtag) {
         if ((itag+jtag) % 2 == 0) continue;
       } else if (itag < jtag) {
@@ -135,20 +157,14 @@ void PairTersoff::compute(int eflag, int vflag)
       }
 
       jtype = map[type[j]];
-
-      delx = xtmp - x[j][0];
-      dely = ytmp - x[j][1];
-      delz = ztmp - x[j][2];
-      rsq = delx*delx + dely*dely + delz*delz;
-
       iparam_ij = elem2param[itype][jtype][jtype];
-      if (rsq > params[iparam_ij].cutsq) continue;
+      if (rsq >= params[iparam_ij].cutsq) continue;
 
       repulsive(&params[iparam_ij],rsq,fpair,eflag,evdwl);
 
-      f[i][0] += delx*fpair;
-      f[i][1] += dely*fpair;
-      f[i][2] += delz*fpair;
+      fxtmp += delx*fpair;
+      fytmp += dely*fpair;
+      fztmp += delz*fpair;
       f[j][0] -= delx*fpair;
       f[j][1] -= dely*fpair;
       f[j][2] -= delz*fpair;
@@ -159,10 +175,10 @@ void PairTersoff::compute(int eflag, int vflag)
 
     // three-body interactions
     // skip immediately if I-J is not within cutoff
+    double fjxtmp,fjytmp,fjztmp;
 
-    for (jj = 0; jj < jnum; jj++) {
-      j = jlist[jj];
-      j &= NEIGHMASK;
+    for (jj = 0; jj < numshort; jj++) {
+      j = neighshort[jj];
       jtype = map[type[j]];
       iparam_ij = elem2param[itype][jtype][jtype];
 
@@ -170,16 +186,16 @@ void PairTersoff::compute(int eflag, int vflag)
       delr1[1] = x[j][1] - ytmp;
       delr1[2] = x[j][2] - ztmp;
       rsq1 = delr1[0]*delr1[0] + delr1[1]*delr1[1] + delr1[2]*delr1[2];
-      if (rsq1 > params[iparam_ij].cutsq) continue;
+      if (rsq1 >= params[iparam_ij].cutsq) continue;
 
       // accumulate bondorder zeta for each i-j interaction via loop over k
 
+      fjxtmp = fjytmp = fjztmp = 0.0;
       zeta_ij = 0.0;
 
-      for (kk = 0; kk < jnum; kk++) {
+      for (kk = 0; kk < numshort; kk++) {
         if (jj == kk) continue;
-        k = jlist[kk];
-        k &= NEIGHMASK;
+        k = neighshort[kk];
         ktype = map[type[k]];
         iparam_ijk = elem2param[itype][jtype][ktype];
 
@@ -187,7 +203,7 @@ void PairTersoff::compute(int eflag, int vflag)
         delr2[1] = x[k][1] - ytmp;
         delr2[2] = x[k][2] - ztmp;
         rsq2 = delr2[0]*delr2[0] + delr2[1]*delr2[1] + delr2[2]*delr2[2];
-        if (rsq2 > params[iparam_ijk].cutsq) continue;
+        if (rsq2 >= params[iparam_ijk].cutsq) continue;
 
         zeta_ij += zeta(&params[iparam_ijk],rsq1,rsq2,delr1,delr2);
       }
@@ -196,22 +212,21 @@ void PairTersoff::compute(int eflag, int vflag)
 
       force_zeta(&params[iparam_ij],rsq1,zeta_ij,fpair,prefactor,eflag,evdwl);
 
-      f[i][0] += delr1[0]*fpair;
-      f[i][1] += delr1[1]*fpair;
-      f[i][2] += delr1[2]*fpair;
-      f[j][0] -= delr1[0]*fpair;
-      f[j][1] -= delr1[1]*fpair;
-      f[j][2] -= delr1[2]*fpair;
+      fxtmp += delr1[0]*fpair;
+      fytmp += delr1[1]*fpair;
+      fztmp += delr1[2]*fpair;
+      fjxtmp -= delr1[0]*fpair;
+      fjytmp -= delr1[1]*fpair;
+      fjztmp -= delr1[2]*fpair;
 
       if (evflag) ev_tally(i,j,nlocal,newton_pair,
                            evdwl,0.0,-fpair,-delr1[0],-delr1[1],-delr1[2]);
 
       // attractive term via loop over k
 
-      for (kk = 0; kk < jnum; kk++) {
+      for (kk = 0; kk < numshort; kk++) {
         if (jj == kk) continue;
-        k = jlist[kk];
-        k &= NEIGHMASK;
+        k = neighshort[kk];
         ktype = map[type[k]];
         iparam_ijk = elem2param[itype][jtype][ktype];
 
@@ -219,24 +234,30 @@ void PairTersoff::compute(int eflag, int vflag)
         delr2[1] = x[k][1] - ytmp;
         delr2[2] = x[k][2] - ztmp;
         rsq2 = delr2[0]*delr2[0] + delr2[1]*delr2[1] + delr2[2]*delr2[2];
-        if (rsq2 > params[iparam_ijk].cutsq) continue;
+        if (rsq2 >= params[iparam_ijk].cutsq) continue;
 
         attractive(&params[iparam_ijk],prefactor,
                    rsq1,rsq2,delr1,delr2,fi,fj,fk);
 
-        f[i][0] += fi[0];
-        f[i][1] += fi[1];
-        f[i][2] += fi[2];
-        f[j][0] += fj[0];
-        f[j][1] += fj[1];
-        f[j][2] += fj[2];
+        fxtmp += fi[0];
+        fytmp += fi[1];
+        fztmp += fi[2];
+        fjxtmp += fj[0];
+        fjytmp += fj[1];
+        fjztmp += fj[2];
         f[k][0] += fk[0];
         f[k][1] += fk[1];
         f[k][2] += fk[2];
 
         if (vflag_atom) v_tally3(i,j,k,fj,fk,delr1,delr2);
       }
+      f[j][0] += fjxtmp;
+      f[j][1] += fjytmp;
+      f[j][2] += fjztmp;
     }
+    f[i][0] += fxtmp;
+    f[i][1] += fytmp;
+    f[i][2] += fztmp;
   }
 
   if (vflag_fdotr) virial_fdotr_compute();
@@ -251,7 +272,7 @@ void PairTersoff::allocate()
 
   memory->create(setflag,n+1,n+1,"pair:setflag");
   memory->create(cutsq,n+1,n+1,"pair:cutsq");
-
+  memory->create(neighshort,maxshort,"pair:neighshort");
   map = new int[n+1];
 }
 
diff --git a/src/MANYBODY/pair_tersoff.h b/src/MANYBODY/pair_tersoff.h
index dd78bb2eb91fa90a24237e438fe8fff342e40524..f44d9f3c5dfa40c854714f17f5005b2f1a45cc78 100644
--- a/src/MANYBODY/pair_tersoff.h
+++ b/src/MANYBODY/pair_tersoff.h
@@ -59,6 +59,8 @@ class PairTersoff : public Pair {
   int nelements;                // # of unique elements
   int nparams;                  // # of stored parameter sets
   int maxparam;                 // max # of parameter sets
+  int maxshort;                 // size of short neighbor list array
+  int *neighshort;              // short neighbor list array
 
   virtual void allocate();
   virtual void read_file(char *);
diff --git a/src/MANYBODY/pair_vashishta.cpp b/src/MANYBODY/pair_vashishta.cpp
index cc28632f60e3abb5a0b739df14ac9f45033d54d8..2b867bc04640e27f7a79cff14a17d8888466d3ba 100644
--- a/src/MANYBODY/pair_vashishta.cpp
+++ b/src/MANYBODY/pair_vashishta.cpp
@@ -52,6 +52,10 @@ PairVashishta::PairVashishta(LAMMPS *lmp) : Pair(lmp)
   params = NULL;
   elem2param = NULL;
   map = NULL;
+
+  r0max = 0.0;
+  maxshort = 10;
+  neighshort = NULL;
 }
 
 /* ----------------------------------------------------------------------
@@ -71,6 +75,7 @@ PairVashishta::~PairVashishta()
   if (allocated) {
     memory->destroy(setflag);
     memory->destroy(cutsq);
+    memory->destroy(neighshort);
     delete [] map;
   }
 }
@@ -97,12 +102,15 @@ void PairVashishta::compute(int eflag, int vflag)
   int *type = atom->type;
   int nlocal = atom->nlocal;
   int newton_pair = force->newton_pair;
+  const double cutshortsq = r0max*r0max;
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
+  double fxtmp,fytmp,fztmp;
+
   // loop over full neighbor list of my atoms
 
   for (ii = 0; ii < inum; ii++) {
@@ -112,17 +120,32 @@ void PairVashishta::compute(int eflag, int vflag)
     xtmp = x[i][0];
     ytmp = x[i][1];
     ztmp = x[i][2];
+    fxtmp = fytmp = fztmp = 0.0;
 
     // two-body interactions, skip half of them
 
     jlist = firstneigh[i];
     jnum = numneigh[i];
+    int numshort = 0;
 
     for (jj = 0; jj < jnum; jj++) {
       j = jlist[jj];
       j &= NEIGHMASK;
-      jtag = tag[j];
 
+      delx = xtmp - x[j][0];
+      dely = ytmp - x[j][1];
+      delz = ztmp - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
+
+      if (rsq < cutshortsq) {
+        neighshort[numshort++] = j;
+        if (numshort >= maxshort) {
+          maxshort += maxshort/2;
+          memory->grow(neighshort,maxshort,"pair:neighshort");
+        }
+      }
+
+      jtag = tag[j];
       if (itag > jtag) {
         if ((itag+jtag) % 2 == 0) continue;
       } else if (itag < jtag) {
@@ -134,20 +157,14 @@ void PairVashishta::compute(int eflag, int vflag)
       }
 
       jtype = map[type[j]];
-
-      delx = xtmp - x[j][0];
-      dely = ytmp - x[j][1];
-      delz = ztmp - x[j][2];
-      rsq = delx*delx + dely*dely + delz*delz;
-
       ijparam = elem2param[itype][jtype][jtype];
-      if (rsq > params[ijparam].cutsq) continue;
+      if (rsq >= params[ijparam].cutsq) continue;
 
       twobody(&params[ijparam],rsq,fpair,eflag,evdwl);
 
-      f[i][0] += delx*fpair;
-      f[i][1] += dely*fpair;
-      f[i][2] += delz*fpair;
+      fxtmp += delx*fpair;
+      fytmp += dely*fpair;
+      fztmp += delz*fpair;
       f[j][0] -= delx*fpair;
       f[j][1] -= dely*fpair;
       f[j][2] -= delz*fpair;
@@ -156,11 +173,10 @@ void PairVashishta::compute(int eflag, int vflag)
       			   evdwl,0.0,fpair,delx,dely,delz);
     }
 
-    jnumm1 = jnum - 1;
+    jnumm1 = numshort - 1;
 
     for (jj = 0; jj < jnumm1; jj++) {
-      j = jlist[jj];
-      j &= NEIGHMASK;
+      j = neighshort[jj];
       jtype = map[type[j]];
       ijparam = elem2param[itype][jtype][jtype];
       delr1[0] = x[j][0] - xtmp;
@@ -169,9 +185,11 @@ void PairVashishta::compute(int eflag, int vflag)
       rsq1 = delr1[0]*delr1[0] + delr1[1]*delr1[1] + delr1[2]*delr1[2];
       if (rsq1 >= params[ijparam].cutsq2) continue;
 
-      for (kk = jj+1; kk < jnum; kk++) {
-        k = jlist[kk];
-        k &= NEIGHMASK;
+      double fjxtmp,fjytmp,fjztmp;
+      fjxtmp = fjytmp = fjztmp = 0.0;
+
+      for (kk = jj+1; kk < numshort; kk++) {
+        k = neighshort[kk];
         ktype = map[type[k]];
         ikparam = elem2param[itype][ktype][ktype];
         ijkparam = elem2param[itype][jtype][ktype];
@@ -185,19 +203,25 @@ void PairVashishta::compute(int eflag, int vflag)
         threebody(&params[ijparam],&params[ikparam],&params[ijkparam],
                   rsq1,rsq2,delr1,delr2,fj,fk,eflag,evdwl);
 
-        f[i][0] -= fj[0] + fk[0];
-        f[i][1] -= fj[1] + fk[1];
-        f[i][2] -= fj[2] + fk[2];
-        f[j][0] += fj[0];
-        f[j][1] += fj[1];
-        f[j][2] += fj[2];
+        fxtmp -= fj[0] + fk[0];
+        fytmp -= fj[1] + fk[1];
+        fztmp -= fj[2] + fk[2];
+        fjxtmp += fj[0];
+        fjytmp += fj[1];
+        fjztmp += fj[2];
         f[k][0] += fk[0];
         f[k][1] += fk[1];
         f[k][2] += fk[2];
 
-	if (evflag) ev_tally3(i,j,k,evdwl,0.0,fj,fk,delr1,delr2);
+        if (evflag) ev_tally3(i,j,k,evdwl,0.0,fj,fk,delr1,delr2);
       }
+      f[j][0] += fjxtmp;
+      f[j][1] += fjytmp;
+      f[j][2] += fjztmp;
     }
+    f[i][0] += fxtmp;
+    f[i][1] += fytmp;
+    f[i][2] += fztmp;
   }
 
   if (vflag_fdotr) virial_fdotr_compute();
@@ -212,6 +236,7 @@ void PairVashishta::allocate()
 
   memory->create(setflag,n+1,n+1,"pair:setflag");
   memory->create(cutsq,n+1,n+1,"pair:cutsq");
+  memory->create(neighshort,maxshort,"pair:neighshort");
 
   map = new int[n+1];
 }
@@ -531,14 +556,15 @@ void PairVashishta::setup_params()
     params[m].c0 = params[m].cut*params[m].dvrc - params[m].vrc;
   }
 
-  // set cutmax to max of all params
-  cutmax_3body = 0.0;
+  // set cutmax to max of all cutoff params. r0max only for r0
+
   cutmax = 0.0;
+  r0max = 0.0;
   for (m = 0; m < nparams; m++) {
     if (params[m].cut > cutmax) cutmax = params[m].cut;
-    if (params[m].r0 > cutmax) cutmax = params[m].r0;
-    if (params[m].r0 > cutmax_3body) cutmax_3body = params[m].r0;
+    if (params[m].r0 > r0max) r0max = params[m].r0;
   }
+  if (r0max > cutmax) cutmax = r0max;
 }
 
 /* ---------------------------------------------------------------------- */
diff --git a/src/MANYBODY/pair_vashishta.h b/src/MANYBODY/pair_vashishta.h
index 3fa5a3e1854f7c01293a63dea7b42c3763a4caca..e365ba2ecce8abea28d256c86d3578c8fd07c3a2 100644
--- a/src/MANYBODY/pair_vashishta.h
+++ b/src/MANYBODY/pair_vashishta.h
@@ -1,4 +1,4 @@
-/* ----------------------------------------------------------------------
+/* -*- c++ -*- ----------------------------------------------------------
    LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
    http://lammps.sandia.gov, Sandia National Laboratories
    Steve Plimpton, sjplimp@sandia.gov
@@ -54,6 +54,9 @@ class PairVashishta : public Pair {
   int nparams;                  // # of stored parameter sets
   int maxparam;                 // max # of parameter sets
   Param *params;                // parameter set for an I-J-K interaction
+  double r0max;                 // largest value of r0
+  int maxshort;                 // size of short neighbor list array
+  int *neighshort;              // short neighbor list array
 
   void allocate();
   void read_file(char *);
diff --git a/src/MANYBODY/pair_vashishta_table.cpp b/src/MANYBODY/pair_vashishta_table.cpp
index 9ba2f258a59691b525898911671ffd06a8a1b1d2..c58f1286d8c741c9f77c2cf22ea3168b0e8fdb9d 100644
--- a/src/MANYBODY/pair_vashishta_table.cpp
+++ b/src/MANYBODY/pair_vashishta_table.cpp
@@ -37,9 +37,6 @@ using namespace LAMMPS_NS;
 
 PairVashishtaTable::PairVashishtaTable(LAMMPS *lmp) : PairVashishta(lmp)
 {
-  neigh3BodyMax = 0;
-  neigh3BodyCount = NULL; 
-  neigh3Body = NULL;
   forceTable = NULL;
   potentialTable = NULL;
 }
@@ -52,8 +49,6 @@ PairVashishtaTable::~PairVashishtaTable()
 {
   memory->destroy(forceTable);
   memory->destroy(potentialTable);
-  memory->destroy(neigh3BodyCount);
-  memory->destroy(neigh3Body);
 }
 
 /* ---------------------------------------------------------------------- */
@@ -78,25 +73,14 @@ void PairVashishtaTable::compute(int eflag, int vflag)
   int *type = atom->type;
   int nlocal = atom->nlocal;
   int newton_pair = force->newton_pair;
+  const double cutshortsq = r0max*r0max;
 
   inum = list->inum;
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
 
-  // reallocate 3-body neighbor list if necessary
-  // NOTE: using 1000 is inefficient
-  //       could make this a LAMMPS paged neighbor list
-
-  if (nlocal > neigh3BodyMax) {
-    neigh3BodyMax = atom->nmax;
-    memory->destroy(neigh3BodyCount);
-    memory->destroy(neigh3Body);
-    memory->create(neigh3BodyCount,neigh3BodyMax,
-                   "pair:vashishta:neigh3BodyCount");
-    memory->create(neigh3Body,neigh3BodyMax,1000,
-                   "pair:vashishta:neigh3Body");
-  }
+  double fxtmp,fytmp,fztmp;
 
   // loop over full neighbor list of my atoms
 
@@ -107,36 +91,32 @@ void PairVashishtaTable::compute(int eflag, int vflag)
     xtmp = x[i][0];
     ytmp = x[i][1];
     ztmp = x[i][2];
-
-    // reset the 3-body neighbor list
-
-    neigh3BodyCount[i] = 0;
+    fxtmp = fytmp = fztmp = 0.0;
 
     // two-body interactions, skip half of them
 
     jlist = firstneigh[i];
     jnum = numneigh[i];
+    int numshort = 0;
 
     for (jj = 0; jj < jnum; jj++) {
       j = jlist[jj];
       j &= NEIGHMASK;
-      jtag = tag[j];
-
-      jtype = map[type[j]];
 
       delx = xtmp - x[j][0];
       dely = ytmp - x[j][1];
       delz = ztmp - x[j][2];
       rsq = delx*delx + dely*dely + delz*delz;
-      ijparam = elem2param[itype][jtype][jtype];
 
-      if (rsq <= params[ijparam].cutsq2) {
-        neigh3Body[i][neigh3BodyCount[i]] = j;
-        neigh3BodyCount[i]++;
+      if (rsq < cutshortsq) {
+        neighshort[numshort++] = j;
+        if (numshort >= maxshort) {
+          maxshort += maxshort/2;
+          memory->grow(neighshort,maxshort,"pair:neighshort");
+        }
       }
 
-      if (rsq > params[ijparam].cutsq) continue;
-
+      jtag = tag[j];
       if (itag > jtag) {
         if ((itag+jtag) % 2 == 0) continue;
       } else if (itag < jtag) {
@@ -147,11 +127,15 @@ void PairVashishtaTable::compute(int eflag, int vflag)
         if (x[j][2] == ztmp && x[j][1] == ytmp && x[j][0] < xtmp) continue;
       }
 
+      jtype = map[type[j]];
+      ijparam = elem2param[itype][jtype][jtype];
+      if (rsq >= params[ijparam].cutsq) continue;
+
       twobody_table(params[ijparam],rsq,fpair,eflag,evdwl);
 
-      f[i][0] += delx*fpair;
-      f[i][1] += dely*fpair;
-      f[i][2] += delz*fpair;
+      fxtmp += delx*fpair;
+      fytmp += dely*fpair;
+      fztmp += delz*fpair;
       f[j][0] -= delx*fpair;
       f[j][1] -= dely*fpair;
       f[j][2] -= delz*fpair;
@@ -160,13 +144,10 @@ void PairVashishtaTable::compute(int eflag, int vflag)
       			   evdwl,0.0,fpair,delx,dely,delz);
     }
 
-    jlist = neigh3Body[i];
-    jnum = neigh3BodyCount[i];
-    jnumm1 = jnum - 1;
+    jnumm1 = numshort - 1;
 
     for (jj = 0; jj < jnumm1; jj++) {
-      j = jlist[jj];
-      j &= NEIGHMASK;
+      j = neighshort[jj];
       jtype = map[type[j]];
       ijparam = elem2param[itype][jtype][jtype];
       delr1[0] = x[j][0] - xtmp;
@@ -175,9 +156,11 @@ void PairVashishtaTable::compute(int eflag, int vflag)
       rsq1 = delr1[0]*delr1[0] + delr1[1]*delr1[1] + delr1[2]*delr1[2];
       if (rsq1 >= params[ijparam].cutsq2) continue;
 
-      for (kk = jj+1; kk < jnum; kk++) {
-        k = jlist[kk];
-        k &= NEIGHMASK;
+      double fjxtmp,fjytmp,fjztmp;
+      fjxtmp = fjytmp = fjztmp = 0.0;
+
+      for (kk = jj+1; kk < numshort; kk++) {
+        k = neighshort[kk];
         ktype = map[type[k]];
         ikparam = elem2param[itype][ktype][ktype];
         ijkparam = elem2param[itype][jtype][ktype];
@@ -191,19 +174,25 @@ void PairVashishtaTable::compute(int eflag, int vflag)
         threebody(&params[ijparam],&params[ikparam],&params[ijkparam],
                   rsq1,rsq2,delr1,delr2,fj,fk,eflag,evdwl);
 
-        f[i][0] -= fj[0] + fk[0];
-        f[i][1] -= fj[1] + fk[1];
-        f[i][2] -= fj[2] + fk[2];
-        f[j][0] += fj[0];
-        f[j][1] += fj[1];
-        f[j][2] += fj[2];
+        fxtmp -= fj[0] + fk[0];
+        fytmp -= fj[1] + fk[1];
+        fztmp -= fj[2] + fk[2];
+        fjxtmp += fj[0];
+        fjytmp += fj[1];
+        fjztmp += fj[2];
         f[k][0] += fk[0];
         f[k][1] += fk[1];
         f[k][2] += fk[2];
 
         if (evflag) ev_tally3(i,j,k,evdwl,0.0,fj,fk,delr1,delr2);
       }
+      f[j][0] += fjxtmp;
+      f[j][1] += fjytmp;
+      f[j][2] += fjztmp;
     }
+    f[i][0] += fxtmp;
+    f[i][1] += fytmp;
+    f[i][2] += fztmp;
   }
 
   if (vflag_fdotr) virial_fdotr_compute();
diff --git a/src/MANYBODY/pair_vashishta_table.h b/src/MANYBODY/pair_vashishta_table.h
index 8f96829142a0bba12cbc032a020cbbd493ee0e10..a45cac5ae1c719407c3faeaf0885f5f2aa7ef1b4 100644
--- a/src/MANYBODY/pair_vashishta_table.h
+++ b/src/MANYBODY/pair_vashishta_table.h
@@ -39,11 +39,6 @@ class PairVashishtaTable : public PairVashishta {
   double ***forceTable;         // table of forces per element pair
   double ***potentialTable;     // table of potential energies
 
-  int neigh3BodyMax;            // max size of short neighborlist
-  int *neigh3BodyCount;         // # of neighbors in short range 
-                                // 3 particle forces neighbor list
-  int **neigh3Body;             // neighlist for short range 3 particle forces
-
   void twobody_table(const Param &, double, double &, int, double &);
   void setup_params();
   void create_tables();
diff --git a/src/MC/pair_dsmc.cpp b/src/MC/pair_dsmc.cpp
index 7aa0237a91ffea889079984f185de897567c2a81..344faf87f62bff5da684c9b77f694877782513e4 100644
--- a/src/MC/pair_dsmc.cpp
+++ b/src/MC/pair_dsmc.cpp
@@ -245,8 +245,8 @@ void PairDSMC::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double sigma_one = force->numeric(FLERR,arg[2]);
 
diff --git a/src/MEAM/pair_meam.cpp b/src/MEAM/pair_meam.cpp
index cc2102c2b01cecb516f1312699e6a9686f26026a..46c3792f7c890a25e85f8167d4c5d0452a080899 100644
--- a/src/MEAM/pair_meam.cpp
+++ b/src/MEAM/pair_meam.cpp
@@ -397,7 +397,7 @@ void PairMEAM::coeff(int narg, char **arg)
     for (int j = i; j <= n; j++)
       if (map[i] >= 0 && map[j] >= 0) {
         setflag[i][j] = 1;
-        if (i == j) atom->set_mass(i,mass[map[i]]);
+        if (i == j) atom->set_mass(FLERR,i,mass[map[i]]);
         count++;
       }
 
diff --git a/src/MISC/compute_ti.cpp b/src/MISC/compute_ti.cpp
index 02f16085057bd82c3dc29f0789907e3a586ab0ce..eca136c9359c388566ac8342552df6f61a0cb98d 100644
--- a/src/MISC/compute_ti.cpp
+++ b/src/MISC/compute_ti.cpp
@@ -79,7 +79,7 @@ ComputeTI::ComputeTI(LAMMPS *lmp, int narg, char **arg) :
     int n = strlen(arg[iarg]) + 1;
     pstyle[nterms] = new char[n];
     strcpy(pstyle[nterms],arg[iarg]);
-    force->bounds(arg[iarg+1],atom->ntypes,ilo[nterms],ihi[nterms]);
+    force->bounds(FLERR,arg[iarg+1],atom->ntypes,ilo[nterms],ihi[nterms]);
     iarg += 1;
 
     if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) {
diff --git a/src/MISC/pair_nm_cut.cpp b/src/MISC/pair_nm_cut.cpp
index f0c9806fb8183722a0188e2bbb6028117ca9da9c..467be1b7bedb369c86d93bced6f0f28e365f8bcb 100644
--- a/src/MISC/pair_nm_cut.cpp
+++ b/src/MISC/pair_nm_cut.cpp
@@ -203,8 +203,8 @@ void PairNMCut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double e0_one = force->numeric(FLERR,arg[2]);
   double r0_one = force->numeric(FLERR,arg[3]);
diff --git a/src/MISC/pair_nm_cut_coul_cut.cpp b/src/MISC/pair_nm_cut_coul_cut.cpp
index 61326ee1eb1d3f947414edba1929eb889774ebfc..86fa09f176700239016bfca52e83f4e7859c0349 100644
--- a/src/MISC/pair_nm_cut_coul_cut.cpp
+++ b/src/MISC/pair_nm_cut_coul_cut.cpp
@@ -232,8 +232,8 @@ void PairNMCutCoulCut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double e0_one = force->numeric(FLERR,arg[2]);
   double r0_one = force->numeric(FLERR,arg[3]);
diff --git a/src/MISC/pair_nm_cut_coul_long.cpp b/src/MISC/pair_nm_cut_coul_long.cpp
index 0cd12ac0358d08db8b55ad25a9e62c500b3307ec..c186d19539da00ec8448b1d7e8e5e1724ccb7b93 100644
--- a/src/MISC/pair_nm_cut_coul_long.cpp
+++ b/src/MISC/pair_nm_cut_coul_long.cpp
@@ -271,8 +271,8 @@ void PairNMCutCoulLong::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double e0_one = force->numeric(FLERR,arg[2]);
   double r0_one = force->numeric(FLERR,arg[3]);
diff --git a/src/MOLECULE/angle_charmm.cpp b/src/MOLECULE/angle_charmm.cpp
index c2d44b26dde801fbf23be044c62dd2beeb5b1f7f..c7284add8ccfa765b96a70e27d861b454de67cc2 100644
--- a/src/MOLECULE/angle_charmm.cpp
+++ b/src/MOLECULE/angle_charmm.cpp
@@ -196,7 +196,7 @@ void AngleCharmm::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double theta0_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/angle_cosine.cpp b/src/MOLECULE/angle_cosine.cpp
index 135d4bbf8f103edbb936ef4c2eb099f90c52daa0..f064a34f20d17aa02f07c90ef152ab87246d8357 100644
--- a/src/MOLECULE/angle_cosine.cpp
+++ b/src/MOLECULE/angle_cosine.cpp
@@ -156,7 +156,7 @@ void AngleCosine::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
 
diff --git a/src/MOLECULE/angle_cosine_periodic.cpp b/src/MOLECULE/angle_cosine_periodic.cpp
index dbd93b3b7b2da57486766f1fb4353f793f108481..77fb335b785c769c6494012e2e5798b29ca44555 100644
--- a/src/MOLECULE/angle_cosine_periodic.cpp
+++ b/src/MOLECULE/angle_cosine_periodic.cpp
@@ -201,7 +201,7 @@ void AngleCosinePeriodic::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   double c_one = force->numeric(FLERR,arg[1]);
   int b_one = force->inumeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/angle_cosine_squared.cpp b/src/MOLECULE/angle_cosine_squared.cpp
index 6d073f156eb1035d7f3bf1bd3456160e257e7c21..bc38d76dcdb4fded224f9994d08f756c8532255b 100644
--- a/src/MOLECULE/angle_cosine_squared.cpp
+++ b/src/MOLECULE/angle_cosine_squared.cpp
@@ -168,7 +168,7 @@ void AngleCosineSquared::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double theta0_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/angle_harmonic.cpp b/src/MOLECULE/angle_harmonic.cpp
index cffc3182ddf8e20374ea3649c4d634a8b7fa0fbf..7e8b57b04fad7748eeaf0ce0f1ee75a743992425 100644
--- a/src/MOLECULE/angle_harmonic.cpp
+++ b/src/MOLECULE/angle_harmonic.cpp
@@ -168,7 +168,7 @@ void AngleHarmonic::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double theta0_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/angle_table.cpp b/src/MOLECULE/angle_table.cpp
index 9dd9925725f0540503554d8cef23051b9c6df3b4..4d9007adb7263014f9ed1c795e7bf40afa274683 100644
--- a/src/MOLECULE/angle_table.cpp
+++ b/src/MOLECULE/angle_table.cpp
@@ -215,7 +215,7 @@ void AngleTable::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   int me;
   MPI_Comm_rank(world,&me);
diff --git a/src/MOLECULE/bond_fene.cpp b/src/MOLECULE/bond_fene.cpp
index 66c5c08174f42c69c7ad7cc2ec18c0194046da5b..5d58f2683a0a4969663776323761d101d50bb31b 100644
--- a/src/MOLECULE/bond_fene.cpp
+++ b/src/MOLECULE/bond_fene.cpp
@@ -154,7 +154,7 @@ void BondFENE::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nbondtypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double r0_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/bond_fene_expand.cpp b/src/MOLECULE/bond_fene_expand.cpp
index f65632cc3f3400df7555ab1c9aa8838a8ddc432c..033f8d6502ef91d2fcb53b9b25a972bfa01eb391 100644
--- a/src/MOLECULE/bond_fene_expand.cpp
+++ b/src/MOLECULE/bond_fene_expand.cpp
@@ -160,7 +160,7 @@ void BondFENEExpand::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nbondtypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double r0_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/bond_harmonic.cpp b/src/MOLECULE/bond_harmonic.cpp
index 8c5663bf79c1a97f70c857568979b6dbd1ff8572..f164a51de4309d57cff2d06a90ffa6b67c203639 100644
--- a/src/MOLECULE/bond_harmonic.cpp
+++ b/src/MOLECULE/bond_harmonic.cpp
@@ -121,7 +121,7 @@ void BondHarmonic::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nbondtypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double r0_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/bond_morse.cpp b/src/MOLECULE/bond_morse.cpp
index da2717899a670b60f206d8809585c40c84da011b..3204a0ca6183b003e0ec012083a8cd817f6e6f2c 100644
--- a/src/MOLECULE/bond_morse.cpp
+++ b/src/MOLECULE/bond_morse.cpp
@@ -126,7 +126,7 @@ void BondMorse::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nbondtypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi);
 
   double d0_one = force->numeric(FLERR,arg[1]);
   double alpha_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/bond_nonlinear.cpp b/src/MOLECULE/bond_nonlinear.cpp
index 9da2993c54b3b048cd2de44595e05429ad03dd0d..edd9dcd4e5c9e8e8be20a2ea85c1ee5b3fb13a3a 100644
--- a/src/MOLECULE/bond_nonlinear.cpp
+++ b/src/MOLECULE/bond_nonlinear.cpp
@@ -123,7 +123,7 @@ void BondNonlinear::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nbondtypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi);
 
   double epsilon_one = force->numeric(FLERR,arg[1]);
   double r0_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/bond_quartic.cpp b/src/MOLECULE/bond_quartic.cpp
index c92048b2ca354349adb4690516514fb17a5fbcc1..2a3e395a77f81f9c92b59f6137d0cfbdc6c13a26 100644
--- a/src/MOLECULE/bond_quartic.cpp
+++ b/src/MOLECULE/bond_quartic.cpp
@@ -203,7 +203,7 @@ void BondQuartic::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nbondtypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double b1_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/bond_table.cpp b/src/MOLECULE/bond_table.cpp
index 858bc83a3665fb0b324221b80b99034e91430efa..38cbe7e406823af76b118c6eb0529515e8d7971d 100644
--- a/src/MOLECULE/bond_table.cpp
+++ b/src/MOLECULE/bond_table.cpp
@@ -168,7 +168,7 @@ void BondTable::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nbondtypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi);
 
   int me;
   MPI_Comm_rank(world,&me);
diff --git a/src/MOLECULE/dihedral_charmm.cpp b/src/MOLECULE/dihedral_charmm.cpp
index 8b6909f1ad3df52c3f6ce18a61f9280ced338771..b9d1c440d44cbb7ef5acb06a219ef1007191be9b 100644
--- a/src/MOLECULE/dihedral_charmm.cpp
+++ b/src/MOLECULE/dihedral_charmm.cpp
@@ -330,7 +330,7 @@ void DihedralCharmm::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   // require integer values of shift for backwards compatibility
   // arbitrary phase angle shift could be allowed, but would break
diff --git a/src/MOLECULE/dihedral_harmonic.cpp b/src/MOLECULE/dihedral_harmonic.cpp
index f9ea31ac7cfcb521064151eec30444abfa7f3ca2..82c5fe31507d667359a208a00bb43056af1eef6a 100644
--- a/src/MOLECULE/dihedral_harmonic.cpp
+++ b/src/MOLECULE/dihedral_harmonic.cpp
@@ -276,7 +276,7 @@ void DihedralHarmonic::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   int sign_one = force->inumeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/dihedral_helix.cpp b/src/MOLECULE/dihedral_helix.cpp
index b0565e29fb090fc57f54fba7cc9af2e107a9a278..43794bd6aabfacca837f8b9a57e10452b46f2a70 100644
--- a/src/MOLECULE/dihedral_helix.cpp
+++ b/src/MOLECULE/dihedral_helix.cpp
@@ -284,7 +284,7 @@ void DihedralHelix::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   double aphi_one = force->numeric(FLERR,arg[1]);
   double bphi_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/dihedral_multi_harmonic.cpp b/src/MOLECULE/dihedral_multi_harmonic.cpp
index 0842595fba01c500aeb8ea9e308b22ed1e640c24..3a4be46fc7876360636365724968ca6fc007a710 100644
--- a/src/MOLECULE/dihedral_multi_harmonic.cpp
+++ b/src/MOLECULE/dihedral_multi_harmonic.cpp
@@ -273,7 +273,7 @@ void DihedralMultiHarmonic::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   double a1_one = force->numeric(FLERR,arg[1]);
   double a2_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/dihedral_opls.cpp b/src/MOLECULE/dihedral_opls.cpp
index 609fac74bdd21c05d2e2b179eb9fecb6f0327b55..c3a7ee6aa7f9a4388f058b39587b4e695702020b 100644
--- a/src/MOLECULE/dihedral_opls.cpp
+++ b/src/MOLECULE/dihedral_opls.cpp
@@ -289,7 +289,7 @@ void DihedralOPLS::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   double k1_one = force->numeric(FLERR,arg[1]);
   double k2_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/improper_cvff.cpp b/src/MOLECULE/improper_cvff.cpp
index 28b3612c7838ca497356b5cab562f2d4dc24f445..45740d7880f0b57409d8de9c73872d7176861cf7 100644
--- a/src/MOLECULE/improper_cvff.cpp
+++ b/src/MOLECULE/improper_cvff.cpp
@@ -298,7 +298,7 @@ void ImproperCvff::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nimpropertypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nimpropertypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   int sign_one = force->inumeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/improper_harmonic.cpp b/src/MOLECULE/improper_harmonic.cpp
index 56ddce6f5bc772b1fc99a28f547441f22a8ea69d..c482055c76f8c57b4acb7e1dee7af71066663d11 100644
--- a/src/MOLECULE/improper_harmonic.cpp
+++ b/src/MOLECULE/improper_harmonic.cpp
@@ -240,7 +240,7 @@ void ImproperHarmonic::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nimpropertypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nimpropertypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double chi_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/improper_umbrella.cpp b/src/MOLECULE/improper_umbrella.cpp
index a2f176e732d1e05482ba7e0d1754eb1174e0c139..8a9b0b44345711174b26c84799ac13b7793c5081 100644
--- a/src/MOLECULE/improper_umbrella.cpp
+++ b/src/MOLECULE/improper_umbrella.cpp
@@ -278,7 +278,7 @@ void ImproperUmbrella::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nimpropertypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nimpropertypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double w_one = force->numeric(FLERR,arg[2]);
diff --git a/src/MOLECULE/pair_hbond_dreiding_lj.cpp b/src/MOLECULE/pair_hbond_dreiding_lj.cpp
index af54c9bdfa736b7d51cb4bd6476ff3c28b20292d..ecb4883cb364b07afbb56208e62c73afe91c50b2 100644
--- a/src/MOLECULE/pair_hbond_dreiding_lj.cpp
+++ b/src/MOLECULE/pair_hbond_dreiding_lj.cpp
@@ -321,9 +321,9 @@ void PairHbondDreidingLJ::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi,klo,khi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
-  force->bounds(arg[2],atom->ntypes,klo,khi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[2],atom->ntypes,klo,khi);
 
   int donor_flag;
   if (strcmp(arg[3],"i") == 0) donor_flag = 0;
diff --git a/src/MOLECULE/pair_hbond_dreiding_morse.cpp b/src/MOLECULE/pair_hbond_dreiding_morse.cpp
index ab793405dde71defb98c792fdfe9ef26e1252a32..5c61ea4a45316c50933e9dc37ccfbf4f7e71aa0c 100644
--- a/src/MOLECULE/pair_hbond_dreiding_morse.cpp
+++ b/src/MOLECULE/pair_hbond_dreiding_morse.cpp
@@ -245,9 +245,9 @@ void PairHbondDreidingMorse::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi,klo,khi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
-  force->bounds(arg[2],atom->ntypes,klo,khi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[2],atom->ntypes,klo,khi);
 
   int donor_flag;
   if (strcmp(arg[3],"i") == 0) donor_flag = 0;
diff --git a/src/MOLECULE/pair_lj_charmm_coul_charmm.cpp b/src/MOLECULE/pair_lj_charmm_coul_charmm.cpp
index f12bc8f3b833acbde215c404dc12a486888e7ae1..3700de00b0fe380a96abaf358ab0e06f0416ab5a 100644
--- a/src/MOLECULE/pair_lj_charmm_coul_charmm.cpp
+++ b/src/MOLECULE/pair_lj_charmm_coul_charmm.cpp
@@ -247,8 +247,8 @@ void PairLJCharmmCoulCharmm::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/MOLECULE/pair_lj_cut_tip4p_cut.cpp b/src/MOLECULE/pair_lj_cut_tip4p_cut.cpp
index 0f5a1f68d11565f7e86463c4959eb886397c04cc..a9e00e80b40cbf73faf80628194f2bba121e4504 100644
--- a/src/MOLECULE/pair_lj_cut_tip4p_cut.cpp
+++ b/src/MOLECULE/pair_lj_cut_tip4p_cut.cpp
@@ -447,8 +447,8 @@ void PairLJCutTIP4PCut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/MOLECULE/pair_tip4p_cut.cpp b/src/MOLECULE/pair_tip4p_cut.cpp
index 47aa7730474d9f81004b63ee525b2e78656ac00f..dd48637f23037f5c47174684b79aeb5bafcf6d9c 100644
--- a/src/MOLECULE/pair_tip4p_cut.cpp
+++ b/src/MOLECULE/pair_tip4p_cut.cpp
@@ -387,8 +387,8 @@ void PairTIP4PCut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   int count = 0;
   for (int i = ilo; i <= ihi; i++) {
diff --git a/src/PERI/pair_peri_eps.cpp b/src/PERI/pair_peri_eps.cpp
index ecf6f0a3fa8d9c40bf6fdd0326fd488fab8c2f63..b5807c0e3c19c2c148e6b8f43033bb36a145722d 100644
--- a/src/PERI/pair_peri_eps.cpp
+++ b/src/PERI/pair_peri_eps.cpp
@@ -450,8 +450,8 @@ void PairPeriEPS::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double bulkmodulus_one = atof(arg[2]);
   double shearmodulus_one = atof(arg[3]);
diff --git a/src/PERI/pair_peri_lps.cpp b/src/PERI/pair_peri_lps.cpp
index 7b2ccec92cce19f3e29c84669eb2a7dab94a96e9..cd88b41825d3b15125116f9ed0d85640c5c76e86 100644
--- a/src/PERI/pair_peri_lps.cpp
+++ b/src/PERI/pair_peri_lps.cpp
@@ -375,8 +375,8 @@ void PairPeriLPS::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double bulkmodulus_one = force->numeric(FLERR,arg[2]);
   double shearmodulus_one = force->numeric(FLERR,arg[3]);
diff --git a/src/PERI/pair_peri_pmb.cpp b/src/PERI/pair_peri_pmb.cpp
index bc971cb2442ff175a9e01433701fea438dd2a974..9e598289bd01842bb255a5501f5163fad9488d0e 100644
--- a/src/PERI/pair_peri_pmb.cpp
+++ b/src/PERI/pair_peri_pmb.cpp
@@ -312,8 +312,8 @@ void PairPeriPMB::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double kspring_one = force->numeric(FLERR,arg[2]);
   double cut_one = force->numeric(FLERR,arg[3]);
diff --git a/src/PERI/pair_peri_ves.cpp b/src/PERI/pair_peri_ves.cpp
index c34fb87e20f2f0f6df8009d7c1199694396f240e..87213b5b59c10de830ae0e131335f5f99779b0f9 100644
--- a/src/PERI/pair_peri_ves.cpp
+++ b/src/PERI/pair_peri_ves.cpp
@@ -426,8 +426,8 @@ void PairPeriVES::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double bulkmodulus_one = atof(arg[2]);
   double shearmodulus_one = atof(arg[3]);
diff --git a/src/REPLICA/prd.cpp b/src/REPLICA/prd.cpp
index 91f7425fe4f973920a33c39e7764d3a9184fc78a..cc1d93a9ae290f541f85857bb3e90d4243a15be9 100644
--- a/src/REPLICA/prd.cpp
+++ b/src/REPLICA/prd.cpp
@@ -165,7 +165,7 @@ void PRD::command(int narg, char **arg)
   // create Velocity class for velocity creation in dephasing
   // pass it temperature compute, loop_setting, dist_setting settings
 
-  atom->check_mass();
+  atom->check_mass(FLERR);
   velocity = new Velocity(lmp);
   velocity->init_external("all");
 
diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp
index 2f2f84570e0b438566618e12dd4397350d011e61..8c1ecdacc9a2b1047fc21647ea3b598af57ce959 100644
--- a/src/RIGID/fix_rigid.cpp
+++ b/src/RIGID/fix_rigid.cpp
@@ -282,7 +282,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) :
       if (iarg+5 > narg) error->all(FLERR,"Illegal fix rigid command");
 
       int mlo,mhi;
-      force->bounds(arg[iarg+1],nbody,mlo,mhi);
+      force->bounds(FLERR,arg[iarg+1],nbody,mlo,mhi);
 
       double xflag,yflag,zflag;
       if (strcmp(arg[iarg+2],"off") == 0) xflag = 0.0;
@@ -313,7 +313,7 @@ FixRigid::FixRigid(LAMMPS *lmp, int narg, char **arg) :
       if (iarg+5 > narg) error->all(FLERR,"Illegal fix rigid command");
 
       int mlo,mhi;
-      force->bounds(arg[iarg+1],nbody,mlo,mhi);
+      force->bounds(FLERR,arg[iarg+1],nbody,mlo,mhi);
 
       double xflag,yflag,zflag;
       if (strcmp(arg[iarg+2],"off") == 0) xflag = 0.0;
diff --git a/src/RIGID/fix_shake.cpp b/src/RIGID/fix_shake.cpp
index c71fefc63b54d5213945d74463efe0294f83329e..fe9116e4461bd491f5af6635c530487e7d3b353e 100644
--- a/src/RIGID/fix_shake.cpp
+++ b/src/RIGID/fix_shake.cpp
@@ -112,7 +112,7 @@ FixShake::FixShake(LAMMPS *lmp, int narg, char **arg) :
     else if (strcmp(arg[next],"t") == 0) mode = 't';
     else if (strcmp(arg[next],"m") == 0) {
       mode = 'm';
-      atom->check_mass();
+      atom->check_mass(FLERR);
 
     // break if keyword that is not b,a,t,m
 
diff --git a/src/USER-AWPMD/pair_awpmd_cut.cpp b/src/USER-AWPMD/pair_awpmd_cut.cpp
index 29feb37ca15eeea7f20701cad24a45fa21642aa2..cd89c3984d536b9373e51c0ee868dac30b68e3d5 100644
--- a/src/USER-AWPMD/pair_awpmd_cut.cpp
+++ b/src/USER-AWPMD/pair_awpmd_cut.cpp
@@ -494,8 +494,8 @@ void PairAWPMDCut::coeff(int narg, char **arg)
   }
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double cut_one = cut_global;
   if (narg == 3) cut_one = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-CG-CMM/angle_sdk.cpp b/src/USER-CG-CMM/angle_sdk.cpp
index 31136e5cd93e9392b8bf59fbd93790be5232779f..cc54985991008fccc7ec04081f45931a7df745b4 100644
--- a/src/USER-CG-CMM/angle_sdk.cpp
+++ b/src/USER-CG-CMM/angle_sdk.cpp
@@ -240,7 +240,7 @@ void AngleSDK::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double theta0_one = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-CG-CMM/pair_lj_sdk.cpp b/src/USER-CG-CMM/pair_lj_sdk.cpp
index 1ab93447f4bd6d17f8b56d157d4e3c555df83262..665f188ce9d740d50a86fdc879f91420c15875f6 100644
--- a/src/USER-CG-CMM/pair_lj_sdk.cpp
+++ b/src/USER-CG-CMM/pair_lj_sdk.cpp
@@ -263,8 +263,8 @@ void PairLJSDK::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   int lj_type_one = find_lj_type(arg[2],lj_type_list);
   if (lj_type_one == LJ_NOT_SET)
diff --git a/src/USER-CG-CMM/pair_lj_sdk_coul_long.cpp b/src/USER-CG-CMM/pair_lj_sdk_coul_long.cpp
index 1549acfc283ae4a5004a5d506417cb791b90273b..5e4a0db31c721b19f262c99396f6915cd7c8d789 100644
--- a/src/USER-CG-CMM/pair_lj_sdk_coul_long.cpp
+++ b/src/USER-CG-CMM/pair_lj_sdk_coul_long.cpp
@@ -324,8 +324,8 @@ void PairLJSDKCoulLong::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   int lj_type_one = find_lj_type(arg[2],lj_type_list);
   if (lj_type_one == LJ_NOT_SET)
diff --git a/src/USER-DPD/pair_dpd_fdt.cpp b/src/USER-DPD/pair_dpd_fdt.cpp
index d151b77c8565a82c28fc4d81bad688097b6fe00b..3b5804ff8ec0fb44d70cdfcf9446c778310a6806 100644
--- a/src/USER-DPD/pair_dpd_fdt.cpp
+++ b/src/USER-DPD/pair_dpd_fdt.cpp
@@ -280,8 +280,8 @@ void PairDPDfdt::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a0_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-DPD/pair_dpd_fdt_energy.cpp b/src/USER-DPD/pair_dpd_fdt_energy.cpp
index 902ca005256829733278855d204b53ab4baeeb85..84fa352a45548c9b655da83e3e13f26b1ca93702 100644
--- a/src/USER-DPD/pair_dpd_fdt_energy.cpp
+++ b/src/USER-DPD/pair_dpd_fdt_energy.cpp
@@ -364,8 +364,8 @@ void PairDPDfdtEnergy::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a0_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-DPD/pair_exp6_rx.cpp b/src/USER-DPD/pair_exp6_rx.cpp
index ad2dbf14657287953de18426381b5184996765e7..9af28026ae166e2c984e66cdb647c0d6d3aca814 100644
--- a/src/USER-DPD/pair_exp6_rx.cpp
+++ b/src/USER-DPD/pair_exp6_rx.cpp
@@ -558,8 +558,8 @@ void PairExp6rx::coeff(int narg, char **arg)
 
   int ilo,ihi,jlo,jhi;
   int n;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   nspecies = atom->nspecies_dpd;
   if(nspecies==0) error->all(FLERR,"There are no rx species specified.");
diff --git a/src/USER-DPD/pair_multi_lucy.cpp b/src/USER-DPD/pair_multi_lucy.cpp
index a063eff1958435b90cc45160a1b597f6840a37a2..a4ea8cad229946605eb8b904842cefa47b822bd4 100644
--- a/src/USER-DPD/pair_multi_lucy.cpp
+++ b/src/USER-DPD/pair_multi_lucy.cpp
@@ -267,8 +267,8 @@ void PairMultiLucy::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   int me;
   MPI_Comm_rank(world,&me);
diff --git a/src/USER-DPD/pair_multi_lucy_rx.cpp b/src/USER-DPD/pair_multi_lucy_rx.cpp
index cf10a70756f663295ebbace3121cb39ab7c5abe2..586e58908da4292a3b0d0e041e2bc80163922611 100644
--- a/src/USER-DPD/pair_multi_lucy_rx.cpp
+++ b/src/USER-DPD/pair_multi_lucy_rx.cpp
@@ -353,8 +353,8 @@ void PairMultiLucyRX::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   int me;
   MPI_Comm_rank(world,&me);
diff --git a/src/USER-DPD/pair_table_rx.cpp b/src/USER-DPD/pair_table_rx.cpp
index 74b9222a0b7f290fd86a8d46dc781eb6dd9df82b..902d0e5bb4397144599637f8c03c977b7784ba6c 100644
--- a/src/USER-DPD/pair_table_rx.cpp
+++ b/src/USER-DPD/pair_table_rx.cpp
@@ -326,8 +326,8 @@ void PairTableRX::coeff(int narg, char **arg)
   if (!rx_flag) error->all(FLERR,"PairTableRX requires a fix rx command.");
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   int me;
   MPI_Comm_rank(world,&me);
diff --git a/src/USER-DRUDE/pair_lj_cut_thole_long.cpp b/src/USER-DRUDE/pair_lj_cut_thole_long.cpp
index efa11c6c5e5d00322f0b95a4b2a54b1ce31c2058..726baae2400c077075159c2b95cc666cf70124c3 100644
--- a/src/USER-DRUDE/pair_lj_cut_thole_long.cpp
+++ b/src/USER-DRUDE/pair_lj_cut_thole_long.cpp
@@ -314,8 +314,8 @@ void PairLJCutTholeLong::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-DRUDE/pair_thole.cpp b/src/USER-DRUDE/pair_thole.cpp
index 13b1265a7edfc3109533aa8cb1d835693f9eabf6..0ed94ebbc919b3b5be5d691caa15d86edede5989 100644
--- a/src/USER-DRUDE/pair_thole.cpp
+++ b/src/USER-DRUDE/pair_thole.cpp
@@ -218,8 +218,8 @@ void PairThole::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double polar_one = force->numeric(FLERR,arg[2]);
   double thole_one = thole_global;
diff --git a/src/USER-EFF/pair_eff_cut.cpp b/src/USER-EFF/pair_eff_cut.cpp
index b12e1f43b3e28741290881c1035a09cf4db0d950..66f59c86c31aee1fe3b1d6ffc0f4bc352b16000e 100644
--- a/src/USER-EFF/pair_eff_cut.cpp
+++ b/src/USER-EFF/pair_eff_cut.cpp
@@ -891,8 +891,8 @@ void PairEffCut::coeff(int narg, char **arg)
 
   if ((strcmp(arg[0],"*") == 0) || (strcmp(arg[1],"*") == 0)) {
     int ilo,ihi,jlo,jhi;
-    force->bounds(arg[0],atom->ntypes,ilo,ihi);
-    force->bounds(arg[1],atom->ntypes,jlo,jhi);
+    force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+    force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
     double cut_one = cut_global;
     if (narg == 3) cut_one = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-FEP/compute_fep.cpp b/src/USER-FEP/compute_fep.cpp
index d3c3bf9409ec0946761ac5112633f174431df4ad..bfa3bf7e2c91648cb08b74cca10e394da9a4a9e9 100644
--- a/src/USER-FEP/compute_fep.cpp
+++ b/src/USER-FEP/compute_fep.cpp
@@ -95,9 +95,9 @@ ComputeFEP::ComputeFEP(LAMMPS *lmp, int narg, char **arg) :
       n = strlen(arg[iarg+2]) + 1;
       perturb[npert].pparam = new char[n];
       strcpy(perturb[npert].pparam,arg[iarg+2]);
-      force->bounds(arg[iarg+3],atom->ntypes,
+      force->bounds(FLERR,arg[iarg+3],atom->ntypes,
                     perturb[npert].ilo,perturb[npert].ihi);
-      force->bounds(arg[iarg+4],atom->ntypes,
+      force->bounds(FLERR,arg[iarg+4],atom->ntypes,
                     perturb[npert].jlo,perturb[npert].jhi);
       if (strstr(arg[iarg+5],"v_") == arg[iarg+5]) {
         n = strlen(&arg[iarg+5][2]) + 1;
@@ -112,7 +112,7 @@ ComputeFEP::ComputeFEP(LAMMPS *lmp, int narg, char **arg) :
         perturb[npert].aparam = CHARGE;
         chgflag = 1;
       } else error->all(FLERR,"Illegal atom argument in compute fep");
-      force->bounds(arg[iarg+2],atom->ntypes,
+      force->bounds(FLERR,arg[iarg+2],atom->ntypes,
                     perturb[npert].ilo,perturb[npert].ihi);
       if (strstr(arg[iarg+3],"v_") == arg[iarg+3]) {
         int n = strlen(&arg[iarg+3][2]) + 1;
diff --git a/src/USER-FEP/fix_adapt_fep.cpp b/src/USER-FEP/fix_adapt_fep.cpp
index 3e0e950cb777ebcde5869a65aec3b8e9e3926ac5..1b7fc559420f2ee6bd932d872c50524cebe208d9 100644
--- a/src/USER-FEP/fix_adapt_fep.cpp
+++ b/src/USER-FEP/fix_adapt_fep.cpp
@@ -95,9 +95,9 @@ FixAdaptFEP::FixAdaptFEP(LAMMPS *lmp, int narg, char **arg) :
       n = strlen(arg[iarg+2]) + 1;
       adapt[nadapt].pparam = new char[n];
       strcpy(adapt[nadapt].pparam,arg[iarg+2]);
-      force->bounds(arg[iarg+3],atom->ntypes,
+      force->bounds(FLERR,arg[iarg+3],atom->ntypes,
                     adapt[nadapt].ilo,adapt[nadapt].ihi);
-      force->bounds(arg[iarg+4],atom->ntypes,
+      force->bounds(FLERR,arg[iarg+4],atom->ntypes,
                     adapt[nadapt].jlo,adapt[nadapt].jhi);
       if (strstr(arg[iarg+5],"v_") == arg[iarg+5]) {
         n = strlen(&arg[iarg+5][2]) + 1;
@@ -126,7 +126,7 @@ FixAdaptFEP::FixAdaptFEP(LAMMPS *lmp, int narg, char **arg) :
         adapt[nadapt].aparam = CHARGE;
         chgflag = 1;
       } else error->all(FLERR,"Illegal fix adapt/fep command");
-      force->bounds(arg[iarg+2],atom->ntypes,
+      force->bounds(FLERR,arg[iarg+2],atom->ntypes,
                     adapt[nadapt].ilo,adapt[nadapt].ihi);
       if (strstr(arg[iarg+3],"v_") == arg[iarg+3]) {
         int n = strlen(&arg[iarg+3][2]) + 1;
diff --git a/src/USER-FEP/pair_coul_cut_soft.cpp b/src/USER-FEP/pair_coul_cut_soft.cpp
index b82abc1ed165ee2d6bc5eae94a64c0bef66fd2a6..2c675c607f4fee76bc93a8830a640e4c6f4a0941 100644
--- a/src/USER-FEP/pair_coul_cut_soft.cpp
+++ b/src/USER-FEP/pair_coul_cut_soft.cpp
@@ -184,8 +184,8 @@ void PairCoulCutSoft::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double lambda_one = force->numeric(FLERR,arg[2]);
 
diff --git a/src/USER-FEP/pair_coul_long_soft.cpp b/src/USER-FEP/pair_coul_long_soft.cpp
index d20962810497339d133a56a595390d5985783e5d..3d24a997ddf0162af51b1a89a93dc0e525d4cf30 100644
--- a/src/USER-FEP/pair_coul_long_soft.cpp
+++ b/src/USER-FEP/pair_coul_long_soft.cpp
@@ -206,8 +206,8 @@ void PairCoulLongSoft::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double lambda_one = force->numeric(FLERR,arg[2]);
 
diff --git a/src/USER-FEP/pair_lj_charmm_coul_long_soft.cpp b/src/USER-FEP/pair_lj_charmm_coul_long_soft.cpp
index d2a9a04ba61eddab1029a2e8f8d0a15d80719e65..81b82e97743c2c8c088c6b036cea040d15be6df4 100644
--- a/src/USER-FEP/pair_lj_charmm_coul_long_soft.cpp
+++ b/src/USER-FEP/pair_lj_charmm_coul_long_soft.cpp
@@ -651,8 +651,8 @@ void PairLJCharmmCoulLongSoft::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-FEP/pair_lj_cut_coul_cut_soft.cpp b/src/USER-FEP/pair_lj_cut_coul_cut_soft.cpp
index 631d608afb03a4945f65d0c3cc0ffd9c8f17c89e..16da07a657214b2b3be32010ea058dfe4a029d3a 100644
--- a/src/USER-FEP/pair_lj_cut_coul_cut_soft.cpp
+++ b/src/USER-FEP/pair_lj_cut_coul_cut_soft.cpp
@@ -230,8 +230,8 @@ void PairLJCutCoulCutSoft::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-FEP/pair_lj_cut_coul_long_soft.cpp b/src/USER-FEP/pair_lj_cut_coul_long_soft.cpp
index 1b3c2b5eceba08f9d2af7bdd2907e9c037264ee3..6636e727159be3c3a85c69a5e57a48d08305b72c 100644
--- a/src/USER-FEP/pair_lj_cut_coul_long_soft.cpp
+++ b/src/USER-FEP/pair_lj_cut_coul_long_soft.cpp
@@ -598,8 +598,8 @@ void PairLJCutCoulLongSoft::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-FEP/pair_lj_cut_soft.cpp b/src/USER-FEP/pair_lj_cut_soft.cpp
index 7f04158c1775adc23c2eafd46b9aba65085066ca..3798b279369e56a98cf5584b5eb6c3483e3af7e3 100644
--- a/src/USER-FEP/pair_lj_cut_soft.cpp
+++ b/src/USER-FEP/pair_lj_cut_soft.cpp
@@ -478,8 +478,8 @@ void PairLJCutSoft::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-FEP/pair_morse_soft.cpp b/src/USER-FEP/pair_morse_soft.cpp
index 877fa74d69d43c419035869d0c066c4919c35df7..6c86d8916fb1611c001f7f13c8fff46fe5390b37 100644
--- a/src/USER-FEP/pair_morse_soft.cpp
+++ b/src/USER-FEP/pair_morse_soft.cpp
@@ -178,8 +178,8 @@ void PairMorseSoft::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double d0_one     = force->numeric(FLERR,arg[2]);
   double alpha_one  = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-LB/fix_lb_rigid_pc_sphere.cpp b/src/USER-LB/fix_lb_rigid_pc_sphere.cpp
index 54637ce349f1fa2ae834a96a7fdc8558913fecc8..b5383fe1a6743dcb987e8912367ab9afb7c1675f 100644
--- a/src/USER-LB/fix_lb_rigid_pc_sphere.cpp
+++ b/src/USER-LB/fix_lb_rigid_pc_sphere.cpp
@@ -235,7 +235,7 @@ FixLbRigidPCSphere::FixLbRigidPCSphere(LAMMPS *lmp, int narg, char **arg) :
       if (iarg+5 > narg) error->all(FLERR,"Illegal fix lb/rigid/pc/sphere command");
 
       int mlo,mhi;
-      force->bounds(arg[iarg+1],nbody,mlo,mhi);
+      force->bounds(FLERR,arg[iarg+1],nbody,mlo,mhi);
 
       double xflag,yflag,zflag;
       if (strcmp(arg[iarg+2],"off") == 0) xflag = 0.0;
@@ -262,7 +262,7 @@ FixLbRigidPCSphere::FixLbRigidPCSphere(LAMMPS *lmp, int narg, char **arg) :
       if (iarg+5 > narg) error->all(FLERR,"Illegal fix lb/rigid/pc/sphere command");
 
       int mlo,mhi;
-      force->bounds(arg[iarg+1],nbody,mlo,mhi);
+      force->bounds(FLERR,arg[iarg+1],nbody,mlo,mhi);
 
       double xflag,yflag,zflag;
       if (strcmp(arg[iarg+2],"off") == 0) xflag = 0.0;
diff --git a/src/USER-MGPT/pair_mgpt.cpp b/src/USER-MGPT/pair_mgpt.cpp
index 83524107c8d07cc688245306bd47d055851b7556..97c5c16e70a15398b4c425597a4fb100fc8ab0d5 100644
--- a/src/USER-MGPT/pair_mgpt.cpp
+++ b/src/USER-MGPT/pair_mgpt.cpp
@@ -1983,7 +1983,7 @@ void PairMGPT::coeff(int narg, char **arg)
 
   // Set atomic mass.
   for(int i = 1; i <= atom->ntypes; i++)
-    atom->set_mass(i, splinepot.mass);
+    atom->set_mass(FLERR,i, splinepot.mass);
 
   // Initialize linear algebra routines.
   linalg = mgpt_linalg(lmax,single_precision);
diff --git a/src/USER-MISC/angle_cosine_shift.cpp b/src/USER-MISC/angle_cosine_shift.cpp
index 8e7c67fd70b1dd9e20ef74873c062c7581bd4ce5..66f5c82c8445185b07e618d77fcace93f03cba32 100644
--- a/src/USER-MISC/angle_cosine_shift.cpp
+++ b/src/USER-MISC/angle_cosine_shift.cpp
@@ -172,7 +172,7 @@ void AngleCosineShift::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   double umin   = force->numeric(FLERR,arg[1]);
   double theta0 = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-MISC/angle_cosine_shift_exp.cpp b/src/USER-MISC/angle_cosine_shift_exp.cpp
index e19b9e20efaf5ed67c8d68dcb90a3221122b77c6..6d11c6894e0b7d1734b6393b582b8373c82f2c2d 100644
--- a/src/USER-MISC/angle_cosine_shift_exp.cpp
+++ b/src/USER-MISC/angle_cosine_shift_exp.cpp
@@ -194,7 +194,7 @@ void AngleCosineShiftExp::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   double umin_   = force->numeric(FLERR,arg[1]);
   double theta0_ = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-MISC/angle_dipole.cpp b/src/USER-MISC/angle_dipole.cpp
index 52e94ad3f9cc976fbb30bbf827072083a32026ef..990096ae7fce5cf63ccc9ed1797804f4f018b924 100644
--- a/src/USER-MISC/angle_dipole.cpp
+++ b/src/USER-MISC/angle_dipole.cpp
@@ -156,7 +156,7 @@ void AngleDipole::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double gamma0_one = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-MISC/angle_fourier.cpp b/src/USER-MISC/angle_fourier.cpp
index dee6ed1301be486e968a85ef3851ded0410a0ebf..c4dbf3f08b4343b0ea3de63c1ae461706a3550d4 100644
--- a/src/USER-MISC/angle_fourier.cpp
+++ b/src/USER-MISC/angle_fourier.cpp
@@ -173,7 +173,7 @@ void AngleFourier::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   double k_one =  force->numeric(FLERR,arg[1]);
   double C0_one = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-MISC/angle_fourier_simple.cpp b/src/USER-MISC/angle_fourier_simple.cpp
index 63991f320e1e6cb675dd61d4df93b2a4420218e4..bd4322fe78ca77e385d4c3668b1594408f9a55b9 100644
--- a/src/USER-MISC/angle_fourier_simple.cpp
+++ b/src/USER-MISC/angle_fourier_simple.cpp
@@ -188,7 +188,7 @@ void AngleFourierSimple::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double C_one = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-MISC/angle_quartic.cpp b/src/USER-MISC/angle_quartic.cpp
index a1a3e4cf3f4d0871a3b5afd6501373e9c48fe905..f9801edb0e5cb84e811a088689ecb72e4454f6e9 100644
--- a/src/USER-MISC/angle_quartic.cpp
+++ b/src/USER-MISC/angle_quartic.cpp
@@ -183,7 +183,7 @@ void AngleQuartic::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   double theta0_one = force->numeric(FLERR,arg[1]);
   double k2_one = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-MISC/bond_harmonic_shift.cpp b/src/USER-MISC/bond_harmonic_shift.cpp
index 6f1b67e2459ae226ef252b20514f6e007506feab..c4ee00cb27164138fd77025423fc23fbf3cca21b 100644
--- a/src/USER-MISC/bond_harmonic_shift.cpp
+++ b/src/USER-MISC/bond_harmonic_shift.cpp
@@ -129,7 +129,7 @@ void BondHarmonicShift::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nbondtypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi);
 
   double Umin = force->numeric(FLERR,arg[1]);   // energy at minimum
   double r0_one = force->numeric(FLERR,arg[2]); // position of minimum
diff --git a/src/USER-MISC/bond_harmonic_shift_cut.cpp b/src/USER-MISC/bond_harmonic_shift_cut.cpp
index 1a1be169990a42f697d27722d296532d5a276a55..26fd32c1b596162444a759b7adceeb0ab749f66b 100644
--- a/src/USER-MISC/bond_harmonic_shift_cut.cpp
+++ b/src/USER-MISC/bond_harmonic_shift_cut.cpp
@@ -131,7 +131,7 @@ void BondHarmonicShiftCut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nbondtypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi);
 
   double Umin = force->numeric(FLERR,arg[1]);   // energy at minimum
   double r0_one = force->numeric(FLERR,arg[2]); // position of minimum
diff --git a/src/USER-MISC/dihedral_cosine_shift_exp.cpp b/src/USER-MISC/dihedral_cosine_shift_exp.cpp
index 8706b5fb1a18670a68e915240789329b43c524ca..85ff4b27191e3b6d19bce335781f7bd715fbfff1 100644
--- a/src/USER-MISC/dihedral_cosine_shift_exp.cpp
+++ b/src/USER-MISC/dihedral_cosine_shift_exp.cpp
@@ -274,7 +274,7 @@ void DihedralCosineShiftExp::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   double umin_   = force->numeric(FLERR,arg[1]);
   double theta0_ = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-MISC/dihedral_fourier.cpp b/src/USER-MISC/dihedral_fourier.cpp
index 93e818183da81490c1829c2497d99d03f6a81c10..403f63341afcc679adfa3cbc4699b6fd7970042b 100644
--- a/src/USER-MISC/dihedral_fourier.cpp
+++ b/src/USER-MISC/dihedral_fourier.cpp
@@ -38,7 +38,10 @@ using namespace MathConst;
 
 /* ---------------------------------------------------------------------- */
 
-DihedralFourier::DihedralFourier(LAMMPS *lmp) : Dihedral(lmp) {}
+DihedralFourier::DihedralFourier(LAMMPS *lmp) : Dihedral(lmp) 
+{
+   writedata = 1;
+}
 
 /* ---------------------------------------------------------------------- */
 
@@ -297,7 +300,7 @@ void DihedralFourier::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   // require integer values of shift for backwards compatibility
   // arbitrary phase angle shift could be allowed, but would break
@@ -401,3 +404,18 @@ void DihedralFourier::read_restart(FILE *fp)
   }
 }
 
+/* ----------------------------------------------------------------------
+   proc 0 writes to data file
+------------------------------------------------------------------------- */
+
+void DihedralFourier::write_data(FILE *fp)
+{
+  for (int i = 1; i <= atom->ndihedraltypes; i++)
+  {
+    fprintf(fp,"%d %d",i,nterms[i]);
+    for(int j = 0; j < nterms[i]; j++)
+       fprintf(fp," %g %d %g",k[i][j],multiplicity[i][j],shift[i][j]);
+    fprintf(fp,"\n");
+  }
+}
+
diff --git a/src/USER-MISC/dihedral_fourier.h b/src/USER-MISC/dihedral_fourier.h
index 4229f494c269ac8cef6c2044bd4e19bb6795e5f1..4cdb7f222621666624816bcc89ab65d0562a3d58 100644
--- a/src/USER-MISC/dihedral_fourier.h
+++ b/src/USER-MISC/dihedral_fourier.h
@@ -33,6 +33,7 @@ class DihedralFourier : public Dihedral {
   void coeff(int, char **);
   void write_restart(FILE *);
   void read_restart(FILE *);
+  void write_data(FILE *);
 
  protected:
   double **k,**cos_shift,**sin_shift,**shift;
diff --git a/src/USER-MISC/dihedral_nharmonic.cpp b/src/USER-MISC/dihedral_nharmonic.cpp
index 67b363f5526528940074d3b868230a19d16b34c7..ba8af7e65b3b08e94507527c1390c0a39d14adfd 100644
--- a/src/USER-MISC/dihedral_nharmonic.cpp
+++ b/src/USER-MISC/dihedral_nharmonic.cpp
@@ -279,7 +279,7 @@ void DihedralNHarmonic::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   int count = 0;
   for (int i = ilo; i <= ihi; i++) {
diff --git a/src/USER-MISC/dihedral_quadratic.cpp b/src/USER-MISC/dihedral_quadratic.cpp
index 3a5eac6fa0b549f66138e5c68fbbb62d068be494..ac261153b4b8d4194144b7dfc52952682945fbfa 100644
--- a/src/USER-MISC/dihedral_quadratic.cpp
+++ b/src/USER-MISC/dihedral_quadratic.cpp
@@ -285,7 +285,7 @@ void DihedralQuadratic::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double phi0_one= force->numeric(FLERR,arg[2]);
diff --git a/src/USER-MISC/dihedral_spherical.cpp b/src/USER-MISC/dihedral_spherical.cpp
index e6b431b63a338b6553f7e2637fd49653630f70f9..c3345453c9a9e76668bc593ab28debf31faf608f 100644
--- a/src/USER-MISC/dihedral_spherical.cpp
+++ b/src/USER-MISC/dihedral_spherical.cpp
@@ -681,7 +681,7 @@ void DihedralSpherical::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   int nterms_one = force->inumeric(FLERR,arg[1]);
 
diff --git a/src/USER-MISC/dihedral_table.cpp b/src/USER-MISC/dihedral_table.cpp
index 4e3b05bc4b4a751f10978a1b6c2051ea158761e3..f84814cc5e232408fc7cc3eb78d8b18610433e67 100644
--- a/src/USER-MISC/dihedral_table.cpp
+++ b/src/USER-MISC/dihedral_table.cpp
@@ -813,7 +813,7 @@ void DihedralTable::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   int me;
   MPI_Comm_rank(world,&me);
diff --git a/src/USER-MISC/fix_addtorque.cpp b/src/USER-MISC/fix_addtorque.cpp
index ed5d8875f7c37d0b1fb57ce2d2136c42f73e8083..d9cc892e7ca91d2018bb8fa55e536a28d4b9f7cc 100644
--- a/src/USER-MISC/fix_addtorque.cpp
+++ b/src/USER-MISC/fix_addtorque.cpp
@@ -195,7 +195,7 @@ void FixAddTorque::post_force(int vflag)
     modify->addstep_compute(update->ntimestep + 1);
   }
 
-  atom->check_mass();
+  atom->check_mass(FLERR);
   double masstotal = group->mass(igroup);
   group->xcm(igroup,masstotal,xcm);
   group->inertia(igroup,xcm,inertia);
diff --git a/src/USER-MISC/improper_cossq.cpp b/src/USER-MISC/improper_cossq.cpp
index 77033381e98a3ab39bfbfb7fb5ea0a52b8728507..223df4a76d064abcfead348518d17f1034bbd1a9 100644
--- a/src/USER-MISC/improper_cossq.cpp
+++ b/src/USER-MISC/improper_cossq.cpp
@@ -271,7 +271,7 @@ void ImproperCossq::coeff(int narg, char **arg)
    if (!allocated) allocate();
 
    int ilo,ihi;
-   force->bounds(arg[0],atom->nimpropertypes,ilo,ihi);
+   force->bounds(FLERR,arg[0],atom->nimpropertypes,ilo,ihi);
 
    double k_one = force->numeric(FLERR,arg[1]);
    double chi_one = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-MISC/improper_distance.cpp b/src/USER-MISC/improper_distance.cpp
index a98005a2474d3c474df01179c9856b4480df3266..ce6441d6746e3d4946bb8e21eaff27c39844cbe5 100644
--- a/src/USER-MISC/improper_distance.cpp
+++ b/src/USER-MISC/improper_distance.cpp
@@ -213,7 +213,7 @@ void ImproperDistance::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nimpropertypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nimpropertypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double chi_one = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-MISC/improper_fourier.cpp b/src/USER-MISC/improper_fourier.cpp
index ea5f78662e56d5cd5725899470545c64fb87222e..b139fdad569dc14d67560301c1550fb867204d16 100644
--- a/src/USER-MISC/improper_fourier.cpp
+++ b/src/USER-MISC/improper_fourier.cpp
@@ -282,7 +282,7 @@ void ImproperFourier::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nimpropertypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nimpropertypes,ilo,ihi);
 
   double k_one = force->numeric(FLERR,arg[1]);
   double C0_one = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-MISC/improper_ring.cpp b/src/USER-MISC/improper_ring.cpp
index 4134b4b172449da5e49edee4c9d2e930daf83fa0..5b5341f5061b3cf113aed66fb668121aaa037b83 100644
--- a/src/USER-MISC/improper_ring.cpp
+++ b/src/USER-MISC/improper_ring.cpp
@@ -291,7 +291,7 @@ void ImproperRing ::coeff(int narg, char **arg)
    if (!allocated) allocate();
 
    int ilo,ihi;
-   force->bounds(arg[0],atom->nimpropertypes,ilo,ihi);
+   force->bounds(FLERR,arg[0],atom->nimpropertypes,ilo,ihi);
 
    double k_one = force->numeric(FLERR,arg[1]);
    double chi_one = force->numeric(FLERR,arg[2]);
diff --git a/src/USER-MISC/pair_buck_mdf.cpp b/src/USER-MISC/pair_buck_mdf.cpp
index 96f49e42dd42dd9b040d24ec291d53db593b5b0f..3a433b16bd1daaca6179f825a23247d84939a93c 100644
--- a/src/USER-MISC/pair_buck_mdf.cpp
+++ b/src/USER-MISC/pair_buck_mdf.cpp
@@ -212,8 +212,8 @@ void PairBuckMDF::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a_one = force->numeric(FLERR,arg[2]);
   double rho_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-MISC/pair_coul_diel.cpp b/src/USER-MISC/pair_coul_diel.cpp
index 1913e48b67d705c2eba026725e7637aa41b6039e..a732ace1a0ab04d836e8c48cfc7687056283a33b 100644
--- a/src/USER-MISC/pair_coul_diel.cpp
+++ b/src/USER-MISC/pair_coul_diel.cpp
@@ -183,8 +183,8 @@ void PairCoulDiel::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   eps_s = force->numeric(FLERR,arg[2]);
   double rme_one =force->numeric(FLERR,arg[3]);
diff --git a/src/USER-MISC/pair_gauss_cut.cpp b/src/USER-MISC/pair_gauss_cut.cpp
index f9cdcb96e68782a8f4c593689df63eee9c7d4953..f44b1bbd2d0d16a2fcc249d33ea3d1ed675de768 100644
--- a/src/USER-MISC/pair_gauss_cut.cpp
+++ b/src/USER-MISC/pair_gauss_cut.cpp
@@ -190,8 +190,8 @@ void PairGaussCut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double hgauss_one = force->numeric(FLERR,arg[2]);
   double rmh_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-MISC/pair_lennard_mdf.cpp b/src/USER-MISC/pair_lennard_mdf.cpp
index 81c4435963f4bc2e5e7b8886d45e6e091e5d03c9..3a81955199d1e19c8b7506b8e3f0405250b3b6a9 100644
--- a/src/USER-MISC/pair_lennard_mdf.cpp
+++ b/src/USER-MISC/pair_lennard_mdf.cpp
@@ -216,8 +216,8 @@ void PairLJ_AB_MDF::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double aparm_one = force->numeric(FLERR,arg[2]);
   double bparm_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-MISC/pair_list.cpp b/src/USER-MISC/pair_list.cpp
index 5f053926318d771715730ca0a6a5962ed6aa17f8..3adbe8b69d948097c275cd11504079c5a77bfa94 100644
--- a/src/USER-MISC/pair_list.cpp
+++ b/src/USER-MISC/pair_list.cpp
@@ -349,8 +349,8 @@ void PairList::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   int count = 0;
   for (int i = ilo; i <= ihi; i++) {
diff --git a/src/USER-MISC/pair_lj_mdf.cpp b/src/USER-MISC/pair_lj_mdf.cpp
index 7c3b8d586e0155cdb8122c0b1c9262d6a9c75a01..3b52cf0b86f84227581daecab051d73899d9d5e1 100644
--- a/src/USER-MISC/pair_lj_mdf.cpp
+++ b/src/USER-MISC/pair_lj_mdf.cpp
@@ -216,8 +216,8 @@ void PairLJMDF::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-MISC/pair_lj_sf.cpp b/src/USER-MISC/pair_lj_sf.cpp
index 69a7efcfde4d49bee3241e2b0dda5c91b4ea2537..32f45ff48d181b80e856a7b5d515ce85110fa740 100644
--- a/src/USER-MISC/pair_lj_sf.cpp
+++ b/src/USER-MISC/pair_lj_sf.cpp
@@ -197,8 +197,8 @@ void PairLJShiftedForce::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-MISC/pair_lj_sf_dipole_sf.cpp b/src/USER-MISC/pair_lj_sf_dipole_sf.cpp
index b88f72bac0b7670e7acf315d952a3c07e7681c71..33f10f2f12ad51889ded6c00c1cf247d88e89d33 100644
--- a/src/USER-MISC/pair_lj_sf_dipole_sf.cpp
+++ b/src/USER-MISC/pair_lj_sf_dipole_sf.cpp
@@ -361,8 +361,8 @@ void PairLJSFDipoleSF::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-MISC/pair_morse_smooth_linear.cpp b/src/USER-MISC/pair_morse_smooth_linear.cpp
index 844d0113bea3d8bd14502e0a8625eb8b1aee61df..ea33510b585334508b738834429fb0b674bf9909 100644
--- a/src/USER-MISC/pair_morse_smooth_linear.cpp
+++ b/src/USER-MISC/pair_morse_smooth_linear.cpp
@@ -186,8 +186,8 @@ void PairMorseSmoothLinear::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double d0_one = force->numeric(FLERR,arg[2]);
   double alpha_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-MISC/pair_srp.cpp b/src/USER-MISC/pair_srp.cpp
index 5e254b74b7433592ea379b1d38e581dc64fc0765..18ea4dc332ed971477b83cb98b0d8ee6674eadad 100644
--- a/src/USER-MISC/pair_srp.cpp
+++ b/src/USER-MISC/pair_srp.cpp
@@ -425,8 +425,8 @@ void PairSRP::coeff(int narg, char **arg)
 
     // set ij bond-bond cutoffs
     int ilo, ihi, jlo, jhi;
-    force->bounds(arg[0], bptype, ilo, ihi);
-    force->bounds(arg[1], bptype, jlo, jhi);
+    force->bounds(FLERR,arg[0], bptype, ilo, ihi);
+    force->bounds(FLERR,arg[1], bptype, jlo, jhi);
 
     double a0_one = force->numeric(FLERR,arg[2]);
     double cut_one = cut_global;
diff --git a/src/USER-OMP/pair_eam_alloy_omp.cpp b/src/USER-OMP/pair_eam_alloy_omp.cpp
index 3baebfc8748c5820a4e0fb546033c0d494ed7f3b..eea7383eac3ee19edf12f32314c9866464bd0fee 100644
--- a/src/USER-OMP/pair_eam_alloy_omp.cpp
+++ b/src/USER-OMP/pair_eam_alloy_omp.cpp
@@ -98,7 +98,7 @@ void PairEAMAlloyOMP::coeff(int narg, char **arg)
     for (j = i; j <= n; j++) {
       if (map[i] >= 0 && map[j] >= 0) {
         setflag[i][j] = 1;
-        if (i == j) atom->set_mass(i,setfl->mass[map[i]]);
+        if (i == j) atom->set_mass(FLERR,i,setfl->mass[map[i]]);
         count++;
       }
       scale[i][j] = 1.0;
diff --git a/src/USER-OMP/pair_eam_fs_omp.cpp b/src/USER-OMP/pair_eam_fs_omp.cpp
index 39f43590ca79bb4766be1b59b25aca45ee08e12f..c646632224a213762eb50ae81868b65c5ebf217e 100644
--- a/src/USER-OMP/pair_eam_fs_omp.cpp
+++ b/src/USER-OMP/pair_eam_fs_omp.cpp
@@ -98,7 +98,7 @@ void PairEAMFSOMP::coeff(int narg, char **arg)
     for (j = i; j <= n; j++) {
       if (map[i] >= 0 && map[j] >= 0) {
         setflag[i][j] = 1;
-        if (i == j) atom->set_mass(i,fs->mass[map[i]]);
+        if (i == j) atom->set_mass(FLERR,i,fs->mass[map[i]]);
         count++;
       }
       scale[i][j] = 1.0;
diff --git a/src/USER-OMP/pair_sw_omp.cpp b/src/USER-OMP/pair_sw_omp.cpp
index ba7eeacae1df8be1c050834610e83e4c05a10b5a..9a63b4f4394846b09988a22ab2f55e00cb05d049 100644
--- a/src/USER-OMP/pair_sw_omp.cpp
+++ b/src/USER-OMP/pair_sw_omp.cpp
@@ -17,6 +17,7 @@
 #include "atom.h"
 #include "comm.h"
 #include "force.h"
+#include "memory.h"
 #include "neighbor.h"
 #include "neigh_list.h"
 
@@ -71,13 +72,13 @@ void PairSWOMP::compute(int eflag, int vflag)
 template <int EVFLAG, int EFLAG>
 void PairSWOMP::eval(int iifrom, int iito, ThrData * const thr)
 {
-  int i,j,k,ii,jj,kk,jnum,jnumm1;
+  int i,j,k,ii,jj,kk,jnum,jnumm1,maxshort_thr;
   tagint itag,jtag;
   int itype,jtype,ktype,ijparam,ikparam,ijkparam;
   double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair;
   double rsq,rsq1,rsq2;
   double delr1[3],delr2[3],fj[3],fk[3];
-  int *ilist,*jlist,*numneigh,**firstneigh;
+  int *ilist,*jlist,*numneigh,**firstneigh,*neighshort_thr;
 
   evdwl = 0.0;
 
@@ -90,6 +91,8 @@ void PairSWOMP::eval(int iifrom, int iito, ThrData * const thr)
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
+  maxshort_thr = maxshort;
+  memory->create(neighshort_thr,maxshort_thr,"pair_thr:neighshort_thr");
 
   double fxtmp,fytmp,fztmp;
 
@@ -109,12 +112,30 @@ void PairSWOMP::eval(int iifrom, int iito, ThrData * const thr)
 
     jlist = firstneigh[i];
     jnum = numneigh[i];
+    int numshort = 0;
 
     for (jj = 0; jj < jnum; jj++) {
       j = jlist[jj];
       j &= NEIGHMASK;
-      jtag = tag[j];
 
+      delx = xtmp - x[j].x;
+      dely = ytmp - x[j].y;
+      delz = ztmp - x[j].z;
+      rsq = delx*delx + dely*dely + delz*delz;
+
+      jtype = map[type[j]];
+      ijparam = elem2param[itype][jtype][jtype];
+      if (rsq >= params[ijparam].cutsq) {
+        continue;
+      } else {
+        neighshort_thr[numshort++] = j;
+        if (numshort >= maxshort_thr) {
+          maxshort_thr += maxshort_thr/2;
+          memory->grow(neighshort_thr,maxshort_thr,"pair:neighshort_thr");
+        }
+      }
+
+      jtag = tag[j];
       if (itag > jtag) {
         if ((itag+jtag) % 2 == 0) continue;
       } else if (itag < jtag) {
@@ -125,16 +146,6 @@ void PairSWOMP::eval(int iifrom, int iito, ThrData * const thr)
         if (x[j].z == ztmp && x[j].y == ytmp && x[j].x < xtmp) continue;
       }
 
-      jtype = map[type[j]];
-
-      delx = xtmp - x[j].x;
-      dely = ytmp - x[j].y;
-      delz = ztmp - x[j].z;
-      rsq = delx*delx + dely*dely + delz*delz;
-
-      ijparam = elem2param[itype][jtype][jtype];
-      if (rsq >= params[ijparam].cutsq) continue;
-
       twobody(&params[ijparam],rsq,fpair,EFLAG,evdwl);
 
       fxtmp += delx*fpair;
@@ -148,25 +159,22 @@ void PairSWOMP::eval(int iifrom, int iito, ThrData * const thr)
                                evdwl,0.0,fpair,delx,dely,delz,thr);
     }
 
-    jnumm1 = jnum - 1;
+    jnumm1 = numshort - 1;
 
     for (jj = 0; jj < jnumm1; jj++) {
-      j = jlist[jj];
-      j &= NEIGHMASK;
+      j = neighshort_thr[jj];
       jtype = map[type[j]];
       ijparam = elem2param[itype][jtype][jtype];
       delr1[0] = x[j].x - xtmp;
       delr1[1] = x[j].y - ytmp;
       delr1[2] = x[j].z - ztmp;
       rsq1 = delr1[0]*delr1[0] + delr1[1]*delr1[1] + delr1[2]*delr1[2];
-      if (rsq1 >= params[ijparam].cutsq) continue;
 
       double fjxtmp,fjytmp,fjztmp;
       fjxtmp = fjytmp = fjztmp = 0.0;
 
-      for (kk = jj+1; kk < jnum; kk++) {
-        k = jlist[kk];
-        k &= NEIGHMASK;
+      for (kk = jj+1; kk < numshort; kk++) {
+        k = neighshort_thr[kk];
         ktype = map[type[k]];
         ikparam = elem2param[itype][ktype][ktype];
         ijkparam = elem2param[itype][jtype][ktype];
@@ -175,7 +183,6 @@ void PairSWOMP::eval(int iifrom, int iito, ThrData * const thr)
         delr2[1] = x[k].y - ytmp;
         delr2[2] = x[k].z - ztmp;
         rsq2 = delr2[0]*delr2[0] + delr2[1]*delr2[1] + delr2[2]*delr2[2];
-        if (rsq2 >= params[ikparam].cutsq) continue;
 
         threebody(&params[ijparam],&params[ikparam],&params[ijkparam],
                   rsq1,rsq2,delr1,delr2,fj,fk,EFLAG,evdwl);
@@ -200,6 +207,7 @@ void PairSWOMP::eval(int iifrom, int iito, ThrData * const thr)
     f[i].y += fytmp;
     f[i].z += fztmp;
   }
+  memory->destroy(neighshort_thr);
 }
 
 /* ---------------------------------------------------------------------- */
diff --git a/src/USER-OMP/pair_tersoff_omp.cpp b/src/USER-OMP/pair_tersoff_omp.cpp
index 71d00108dfdec0d0d0750f27538c68f90bf728fa..db249b4ba907cd3afb78333141b2137a084504ff 100644
--- a/src/USER-OMP/pair_tersoff_omp.cpp
+++ b/src/USER-OMP/pair_tersoff_omp.cpp
@@ -17,6 +17,7 @@
 #include "atom.h"
 #include "comm.h"
 #include "force.h"
+#include "memory.h"
 #include "neighbor.h"
 #include "neigh_list.h"
 
@@ -73,14 +74,14 @@ void PairTersoffOMP::compute(int eflag, int vflag)
 template <int EVFLAG, int EFLAG, int VFLAG_ATOM>
 void PairTersoffOMP::eval(int iifrom, int iito, ThrData * const thr)
 {
-  int i,j,k,ii,jj,kk,jnum;
+  int i,j,k,ii,jj,kk,jnum,maxshort_thr;
   tagint itag,jtag;
   int itype,jtype,ktype,iparam_ij,iparam_ijk;
   double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair;
   double rsq,rsq1,rsq2;
   double delr1[3],delr2[3],fi[3],fj[3],fk[3];
   double zeta_ij,prefactor;
-  int *ilist,*jlist,*numneigh,**firstneigh;
+  int *ilist,*jlist,*numneigh,**firstneigh,*neighshort_thr;
 
   evdwl = 0.0;
 
@@ -89,10 +90,13 @@ void PairTersoffOMP::eval(int iifrom, int iito, ThrData * const thr)
   const tagint * _noalias const tag = atom->tag;
   const int * _noalias const type = atom->type;
   const int nlocal = atom->nlocal;
+  const double cutshortsq = cutmax*cutmax;
 
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
+  maxshort_thr = maxshort;
+  memory->create(neighshort_thr,maxshort_thr,"pair_thr:neighshort_thr");
 
   double fxtmp,fytmp,fztmp;
 
@@ -112,12 +116,26 @@ void PairTersoffOMP::eval(int iifrom, int iito, ThrData * const thr)
 
     jlist = firstneigh[i];
     jnum = numneigh[i];
+    int numshort = 0;
 
     for (jj = 0; jj < jnum; jj++) {
       j = jlist[jj];
       j &= NEIGHMASK;
-      jtag = tag[j];
 
+      delx = xtmp - x[j].x;
+      dely = ytmp - x[j].y;
+      delz = ztmp - x[j].z;
+      rsq = delx*delx + dely*dely + delz*delz;
+
+      if (rsq < cutshortsq) {
+        neighshort_thr[numshort++] = j;
+        if (numshort >= maxshort_thr) {
+          maxshort_thr += maxshort_thr/2;
+          memory->grow(neighshort_thr,maxshort_thr,"pair_thr:neighshort_thr");
+        }
+      }
+
+      jtag = tag[j];
       if (itag > jtag) {
         if ((itag+jtag) % 2 == 0) continue;
       } else if (itag < jtag) {
@@ -129,14 +147,8 @@ void PairTersoffOMP::eval(int iifrom, int iito, ThrData * const thr)
       }
 
       jtype = map[type[j]];
-
-      delx = xtmp - x[j].x;
-      dely = ytmp - x[j].y;
-      delz = ztmp - x[j].z;
-      rsq = delx*delx + dely*dely + delz*delz;
-
       iparam_ij = elem2param[itype][jtype][jtype];
-      if (rsq > params[iparam_ij].cutsq) continue;
+      if (rsq >= params[iparam_ij].cutsq) continue;
 
       repulsive(&params[iparam_ij],rsq,fpair,EFLAG,evdwl);
 
@@ -155,9 +167,8 @@ void PairTersoffOMP::eval(int iifrom, int iito, ThrData * const thr)
     // skip immediately if I-J is not within cutoff
     double fjxtmp,fjytmp,fjztmp;
 
-    for (jj = 0; jj < jnum; jj++) {
-      j = jlist[jj];
-      j &= NEIGHMASK;
+    for (jj = 0; jj < numshort; jj++) {
+      j = neighshort_thr[jj];
       jtype = map[type[j]];
       iparam_ij = elem2param[itype][jtype][jtype];
 
@@ -165,17 +176,16 @@ void PairTersoffOMP::eval(int iifrom, int iito, ThrData * const thr)
       delr1[1] = x[j].y - ytmp;
       delr1[2] = x[j].z - ztmp;
       rsq1 = delr1[0]*delr1[0] + delr1[1]*delr1[1] + delr1[2]*delr1[2];
-      if (rsq1 > params[iparam_ij].cutsq) continue;
+      if (rsq1 >= params[iparam_ij].cutsq) continue;
 
       // accumulate bondorder zeta for each i-j interaction via loop over k
 
       fjxtmp = fjytmp = fjztmp = 0.0;
       zeta_ij = 0.0;
 
-      for (kk = 0; kk < jnum; kk++) {
+      for (kk = 0; kk < numshort; kk++) {
         if (jj == kk) continue;
-        k = jlist[kk];
-        k &= NEIGHMASK;
+        k = neighshort_thr[kk];
         ktype = map[type[k]];
         iparam_ijk = elem2param[itype][jtype][ktype];
 
@@ -183,7 +193,7 @@ void PairTersoffOMP::eval(int iifrom, int iito, ThrData * const thr)
         delr2[1] = x[k].y - ytmp;
         delr2[2] = x[k].z - ztmp;
         rsq2 = delr2[0]*delr2[0] + delr2[1]*delr2[1] + delr2[2]*delr2[2];
-        if (rsq2 > params[iparam_ijk].cutsq) continue;
+        if (rsq2 >= params[iparam_ijk].cutsq) continue;
 
         zeta_ij += zeta(&params[iparam_ijk],rsq1,rsq2,delr1,delr2);
       }
@@ -204,10 +214,9 @@ void PairTersoffOMP::eval(int iifrom, int iito, ThrData * const thr)
 
       // attractive term via loop over k
 
-      for (kk = 0; kk < jnum; kk++) {
+      for (kk = 0; kk < numshort; kk++) {
         if (jj == kk) continue;
-        k = jlist[kk];
-        k &= NEIGHMASK;
+        k = neighshort_thr[kk];
         ktype = map[type[k]];
         iparam_ijk = elem2param[itype][jtype][ktype];
 
@@ -215,7 +224,7 @@ void PairTersoffOMP::eval(int iifrom, int iito, ThrData * const thr)
         delr2[1] = x[k].y - ytmp;
         delr2[2] = x[k].z - ztmp;
         rsq2 = delr2[0]*delr2[0] + delr2[1]*delr2[1] + delr2[2]*delr2[2];
-        if (rsq2 > params[iparam_ijk].cutsq) continue;
+        if (rsq2 >= params[iparam_ijk].cutsq) continue;
 
         attractive(&params[iparam_ijk],prefactor,
                    rsq1,rsq2,delr1,delr2,fi,fj,fk);
@@ -240,6 +249,7 @@ void PairTersoffOMP::eval(int iifrom, int iito, ThrData * const thr)
     f[i].y += fytmp;
     f[i].z += fztmp;
   }
+  memory->destroy(neighshort_thr);
 }
 
 /* ---------------------------------------------------------------------- */
diff --git a/src/USER-OMP/pair_vashishta_omp.cpp b/src/USER-OMP/pair_vashishta_omp.cpp
index 679eceab503669113a532401e355702968ad7bb3..c432738f6239e5079e2298b3055efdf5be0be217 100644
--- a/src/USER-OMP/pair_vashishta_omp.cpp
+++ b/src/USER-OMP/pair_vashishta_omp.cpp
@@ -17,6 +17,7 @@
 #include "atom.h"
 #include "comm.h"
 #include "force.h"
+#include "memory.h"
 #include "neighbor.h"
 #include "neigh_list.h"
 
@@ -71,13 +72,13 @@ void PairVashishtaOMP::compute(int eflag, int vflag)
 template <int EVFLAG, int EFLAG>
 void PairVashishtaOMP::eval(int iifrom, int iito, ThrData * const thr)
 {
-  int i,j,k,ii,jj,kk,jnum,jnumm1;
+  int i,j,k,ii,jj,kk,jnum,jnumm1,maxshort_thr;
   tagint itag,jtag;
   int itype,jtype,ktype,ijparam,ikparam,ijkparam;
   double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair;
   double rsq,rsq1,rsq2;
   double delr1[3],delr2[3],fj[3],fk[3];
-  int *ilist,*jlist,*numneigh,**firstneigh;
+  int *ilist,*jlist,*numneigh,**firstneigh,*neighshort_thr;
 
   evdwl = 0.0;
 
@@ -86,10 +87,13 @@ void PairVashishtaOMP::eval(int iifrom, int iito, ThrData * const thr)
   const tagint * _noalias const tag = atom->tag;
   const int * _noalias const type = atom->type;
   const int nlocal = atom->nlocal;
+  const double cutshortsq = r0max*r0max;
 
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
+  maxshort_thr = maxshort;
+  memory->create(neighshort_thr,maxshort_thr,"pair_thr:neighshort_thr");
 
   double fxtmp,fytmp,fztmp;
 
@@ -109,12 +113,26 @@ void PairVashishtaOMP::eval(int iifrom, int iito, ThrData * const thr)
 
     jlist = firstneigh[i];
     jnum = numneigh[i];
+    int numshort = 0;
 
     for (jj = 0; jj < jnum; jj++) {
       j = jlist[jj];
       j &= NEIGHMASK;
-      jtag = tag[j];
 
+      delx = xtmp - x[j].x;
+      dely = ytmp - x[j].y;
+      delz = ztmp - x[j].z;
+      rsq = delx*delx + dely*dely + delz*delz;
+
+      if (rsq < cutshortsq) {
+        neighshort_thr[numshort++] = j;
+        if (numshort >= maxshort_thr) {
+          maxshort_thr += maxshort_thr/2;
+          memory->grow(neighshort_thr,maxshort_thr,"pair_thr:neighshort_thr");
+        }
+      }
+
+      jtag = tag[j];
       if (itag > jtag) {
         if ((itag+jtag) % 2 == 0) continue;
       } else if (itag < jtag) {
@@ -126,12 +144,6 @@ void PairVashishtaOMP::eval(int iifrom, int iito, ThrData * const thr)
       }
 
       jtype = map[type[j]];
-
-      delx = xtmp - x[j].x;
-      dely = ytmp - x[j].y;
-      delz = ztmp - x[j].z;
-      rsq = delx*delx + dely*dely + delz*delz;
-
       ijparam = elem2param[itype][jtype][jtype];
       if (rsq >= params[ijparam].cutsq) continue;
 
@@ -148,11 +160,10 @@ void PairVashishtaOMP::eval(int iifrom, int iito, ThrData * const thr)
                                evdwl,0.0,fpair,delx,dely,delz,thr);
     }
 
-    jnumm1 = jnum - 1;
+    jnumm1 = numshort - 1;
 
     for (jj = 0; jj < jnumm1; jj++) {
-      j = jlist[jj];
-      j &= NEIGHMASK;
+      j = neighshort_thr[jj];
       jtype = map[type[j]];
       ijparam = elem2param[itype][jtype][jtype];
       delr1[0] = x[j].x - xtmp;
@@ -164,9 +175,8 @@ void PairVashishtaOMP::eval(int iifrom, int iito, ThrData * const thr)
       double fjxtmp,fjytmp,fjztmp;
       fjxtmp = fjytmp = fjztmp = 0.0;
 
-      for (kk = jj+1; kk < jnum; kk++) {
-        k = jlist[kk];
-        k &= NEIGHMASK;
+      for (kk = jj+1; kk < numshort; kk++) {
+        k = neighshort_thr[kk];
         ktype = map[type[k]];
         ikparam = elem2param[itype][ktype][ktype];
         ijkparam = elem2param[itype][jtype][ktype];
@@ -200,6 +210,7 @@ void PairVashishtaOMP::eval(int iifrom, int iito, ThrData * const thr)
     f[i].y += fytmp;
     f[i].z += fztmp;
   }
+  memory->destroy(neighshort_thr);
 }
 
 /* ---------------------------------------------------------------------- */
diff --git a/src/USER-OMP/pair_vashishta_table_omp.cpp b/src/USER-OMP/pair_vashishta_table_omp.cpp
index b5769438c4709789f7bebec4416dd6eebbde04b4..d2298dca09d1a6bcec326c7eb4638ecd8a2038c2 100644
--- a/src/USER-OMP/pair_vashishta_table_omp.cpp
+++ b/src/USER-OMP/pair_vashishta_table_omp.cpp
@@ -41,20 +41,6 @@ void PairVashishtaTableOMP::compute(int eflag, int vflag)
     ev_setup(eflag,vflag);
   } else evflag = vflag_fdotr = 0;
 
-  // reallocate 3-body neighbor list if necessary
-  // NOTE: using 1000 is inefficient
-  //       could make this a LAMMPS paged neighbor list
-
-  if (atom->nlocal > neigh3BodyMax) {
-    neigh3BodyMax = atom->nmax;
-    memory->destroy(neigh3BodyCount);
-    memory->destroy(neigh3Body);
-    memory->create(neigh3BodyCount,neigh3BodyMax,
-                   "pair:vashishta:neigh3BodyCount");
-    memory->create(neigh3Body,neigh3BodyMax,1000,
-                   "pair:vashishta:neigh3Body");
-  }
-
   const int nall = atom->nlocal + atom->nghost;
   const int nthreads = comm->nthreads;
   const int inum = list->inum;
@@ -86,13 +72,13 @@ void PairVashishtaTableOMP::compute(int eflag, int vflag)
 template <int EVFLAG, int EFLAG>
 void PairVashishtaTableOMP::eval(int iifrom, int iito, ThrData * const thr)
 {
-  int i,j,k,ii,jj,kk,jnum,jnumm1;
+  int i,j,k,ii,jj,kk,jnum,jnumm1,maxshort_thr;
   tagint itag,jtag;
   int itype,jtype,ktype,ijparam,ikparam,ijkparam;
   double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair;
   double rsq,rsq1,rsq2;
   double delr1[3],delr2[3],fj[3],fk[3];
-  int *ilist,*jlist,*numneigh,**firstneigh;
+  int *ilist,*jlist,*numneigh,**firstneigh,*neighshort_thr;
 
   evdwl = 0.0;
 
@@ -101,13 +87,16 @@ void PairVashishtaTableOMP::eval(int iifrom, int iito, ThrData * const thr)
   const tagint * _noalias const tag = atom->tag;
   const int * _noalias const type = atom->type;
   const int nlocal = atom->nlocal;
+  const double cutshortsq = r0max*r0max;
 
   ilist = list->ilist;
   numneigh = list->numneigh;
   firstneigh = list->firstneigh;
+  maxshort_thr = maxshort;
+  memory->create(neighshort_thr,maxshort_thr,"pair_thr:neighshort_thr");
 
   double fxtmp,fytmp,fztmp;
-  
+
   // loop over full neighbor list of my atoms
 
   for (ii = iifrom; ii < iito; ++ii) {
@@ -120,35 +109,30 @@ void PairVashishtaTableOMP::eval(int iifrom, int iito, ThrData * const thr)
     ztmp = x[i].z;
     fxtmp = fytmp = fztmp = 0.0;
 
-    // reset the 3-body neighbor list
-
-    neigh3BodyCount[i] = 0;
-
     // two-body interactions, skip half of them
 
     jlist = firstneigh[i];
     jnum = numneigh[i];
+    int numshort = 0;
 
     for (jj = 0; jj < jnum; jj++) {
       j = jlist[jj];
       j &= NEIGHMASK;
-      jtag = tag[j];
-
-      jtype = map[type[j]];
 
       delx = xtmp - x[j].x;
       dely = ytmp - x[j].y;
       delz = ztmp - x[j].z;
       rsq = delx*delx + dely*dely + delz*delz;
-      ijparam = elem2param[itype][jtype][jtype];
 
-      if (rsq <= params[ijparam].cutsq2) {
-        neigh3Body[i][neigh3BodyCount[i]] = j;
-        neigh3BodyCount[i]++;
+      if (rsq < cutshortsq) {
+        neighshort_thr[numshort++] = j;
+        if (numshort >= maxshort_thr) {
+          maxshort_thr += maxshort_thr/2;
+          memory->grow(neighshort_thr,maxshort_thr,"pair_thr:neighshort_thr");
+        }
       }
 
-      if (rsq >= params[ijparam].cutsq) continue;
-
+      jtag = tag[j];
       if (itag > jtag) {
         if ((itag+jtag) % 2 == 0) continue;
       } else if (itag < jtag) {
@@ -159,6 +143,10 @@ void PairVashishtaTableOMP::eval(int iifrom, int iito, ThrData * const thr)
         if (x[j].z == ztmp && x[j].y == ytmp && x[j].x < xtmp) continue;
       }
 
+      jtype = map[type[j]];
+      ijparam = elem2param[itype][jtype][jtype];
+      if (rsq >= params[ijparam].cutsq) continue;
+
       twobody_table(params[ijparam],rsq,fpair,EFLAG,evdwl);
 
       fxtmp += delx*fpair;
@@ -172,13 +160,10 @@ void PairVashishtaTableOMP::eval(int iifrom, int iito, ThrData * const thr)
                                evdwl,0.0,fpair,delx,dely,delz,thr);
     }
 
-    jlist = neigh3Body[i];
-    jnum = neigh3BodyCount[i];
-    jnumm1 = jnum - 1;
+    jnumm1 = numshort - 1;
 
     for (jj = 0; jj < jnumm1; jj++) {
-      j = jlist[jj];
-      j &= NEIGHMASK;
+      j = neighshort_thr[jj];
       jtype = map[type[j]];
       ijparam = elem2param[itype][jtype][jtype];
       delr1[0] = x[j].x - xtmp;
@@ -190,9 +175,8 @@ void PairVashishtaTableOMP::eval(int iifrom, int iito, ThrData * const thr)
       double fjxtmp,fjytmp,fjztmp;
       fjxtmp = fjytmp = fjztmp = 0.0;
 
-      for (kk = jj+1; kk < jnum; kk++) {
-        k = jlist[kk];
-        k &= NEIGHMASK;
+      for (kk = jj+1; kk < numshort; kk++) {
+        k = neighshort_thr[kk];
         ktype = map[type[k]];
         ikparam = elem2param[itype][ktype][ktype];
         ijkparam = elem2param[itype][jtype][ktype];
@@ -226,6 +210,7 @@ void PairVashishtaTableOMP::eval(int iifrom, int iito, ThrData * const thr)
     f[i].y += fytmp;
     f[i].z += fztmp;
   }
+  memory->destroy(neighshort_thr);
 }
 
 /* ---------------------------------------------------------------------- */
diff --git a/src/USER-OMP/pppm_disp_omp.cpp b/src/USER-OMP/pppm_disp_omp.cpp
index cdf4b3bce5a528ac3fde7fba4ee6080b343c4cbd..277da9d4b3851c62b2a504b4b7d5e569df613657 100644
--- a/src/USER-OMP/pppm_disp_omp.cpp
+++ b/src/USER-OMP/pppm_disp_omp.cpp
@@ -50,6 +50,13 @@ PPPMDispOMP::PPPMDispOMP(LAMMPS *lmp, int narg, char **arg) :
   suffix_flag |= Suffix::OMP;
 }
 
+/* ---------------------------------------------------------------------- */
+
+PPPMDispOMP::~PPPMDispOMP()
+{
+  deallocate();
+}
+
 /* ----------------------------------------------------------------------
    allocate memory that depends on # of K-vectors and order
 ------------------------------------------------------------------------- */
diff --git a/src/USER-OMP/pppm_disp_omp.h b/src/USER-OMP/pppm_disp_omp.h
index 060f2694715be46e9c85ec16918e65da7d949f97..86c213282a22555658962de11a7b6ac0a9016138 100644
--- a/src/USER-OMP/pppm_disp_omp.h
+++ b/src/USER-OMP/pppm_disp_omp.h
@@ -28,7 +28,7 @@ namespace LAMMPS_NS {
   class PPPMDispOMP : public PPPMDisp, public ThrOMP {
  public:
   PPPMDispOMP(class LAMMPS *, int, char **);
-  virtual ~PPPMDispOMP () {};
+  virtual ~PPPMDispOMP ();
   virtual void compute(int, int);
 
  protected:
diff --git a/src/USER-SMD/pair_smd_hertz.cpp b/src/USER-SMD/pair_smd_hertz.cpp
index 0bcf2c8a3e5612dcd1fdcf76474ca816340dafd2..3c7d7cffb9012139f7f526b7a421da35863a9fb5 100644
--- a/src/USER-SMD/pair_smd_hertz.cpp
+++ b/src/USER-SMD/pair_smd_hertz.cpp
@@ -266,8 +266,8 @@ void PairHertz::coeff(int narg, char **arg) {
 		allocate();
 
 	int ilo, ihi, jlo, jhi;
-	force->bounds(arg[0], atom->ntypes, ilo, ihi);
-	force->bounds(arg[1], atom->ntypes, jlo, jhi);
+	force->bounds(FLERR,arg[0], atom->ntypes, ilo, ihi);
+	force->bounds(FLERR,arg[1], atom->ntypes, jlo, jhi);
 
 	double bulkmodulus_one = atof(arg[2]);
 
diff --git a/src/USER-SMD/pair_smd_triangulated_surface.cpp b/src/USER-SMD/pair_smd_triangulated_surface.cpp
index f5db6acd8e97bb5bed5c333ab3304a12d53502d8..8410f2ec05d62e8a6949f851fa27385854df7e2f 100644
--- a/src/USER-SMD/pair_smd_triangulated_surface.cpp
+++ b/src/USER-SMD/pair_smd_triangulated_surface.cpp
@@ -350,8 +350,8 @@ void PairTriSurf::coeff(int narg, char **arg) {
 		allocate();
 
 	int ilo, ihi, jlo, jhi;
-	force->bounds(arg[0], atom->ntypes, ilo, ihi);
-	force->bounds(arg[1], atom->ntypes, jlo, jhi);
+	force->bounds(FLERR,arg[0], atom->ntypes, ilo, ihi);
+	force->bounds(FLERR,arg[1], atom->ntypes, jlo, jhi);
 
 	double bulkmodulus_one = atof(arg[2]);
 
diff --git a/src/USER-SPH/pair_sph_heatconduction.cpp b/src/USER-SPH/pair_sph_heatconduction.cpp
index 0b3716658cdb46662fe0e42aa71bccd86928aac8..02e667e437a2d2ff96c1f85600273954dff5af62 100644
--- a/src/USER-SPH/pair_sph_heatconduction.cpp
+++ b/src/USER-SPH/pair_sph_heatconduction.cpp
@@ -172,8 +172,8 @@ void PairSPHHeatConduction::coeff(int narg, char **arg) {
     allocate();
 
   int ilo, ihi, jlo, jhi;
-  force->bounds(arg[0], atom->ntypes, ilo, ihi);
-  force->bounds(arg[1], atom->ntypes, jlo, jhi);
+  force->bounds(FLERR,arg[0], atom->ntypes, ilo, ihi);
+  force->bounds(FLERR,arg[1], atom->ntypes, jlo, jhi);
 
   double alpha_one = force->numeric(FLERR,arg[2]);
   double cut_one   = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-SPH/pair_sph_idealgas.cpp b/src/USER-SPH/pair_sph_idealgas.cpp
index caea8eb3e4bfe489dc1893070af15524ee985728..2ba0d9bfbe6a970bcffd36e17aa412e7d9df0e4f 100644
--- a/src/USER-SPH/pair_sph_idealgas.cpp
+++ b/src/USER-SPH/pair_sph_idealgas.cpp
@@ -214,8 +214,8 @@ void PairSPHIdealGas::coeff(int narg, char **arg) {
     allocate();
 
   int ilo, ihi, jlo, jhi;
-  force->bounds(arg[0], atom->ntypes, ilo, ihi);
-  force->bounds(arg[1], atom->ntypes, jlo, jhi);
+  force->bounds(FLERR,arg[0], atom->ntypes, ilo, ihi);
+  force->bounds(FLERR,arg[1], atom->ntypes, jlo, jhi);
 
   double viscosity_one = force->numeric(FLERR,arg[2]);
   double cut_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-SPH/pair_sph_lj.cpp b/src/USER-SPH/pair_sph_lj.cpp
index f0f3e3df339c55f3fbd2eedc4566d93c19e59725..98752ac126aa6385c3bb1bc4f2df5b91d34d73bd 100644
--- a/src/USER-SPH/pair_sph_lj.cpp
+++ b/src/USER-SPH/pair_sph_lj.cpp
@@ -222,8 +222,8 @@ void PairSPHLJ::coeff(int narg, char **arg) {
     allocate();
 
   int ilo, ihi, jlo, jhi;
-  force->bounds(arg[0], atom->ntypes, ilo, ihi);
-  force->bounds(arg[1], atom->ntypes, jlo, jhi);
+  force->bounds(FLERR,arg[0], atom->ntypes, ilo, ihi);
+  force->bounds(FLERR,arg[1], atom->ntypes, jlo, jhi);
 
   double viscosity_one = force->numeric(FLERR,arg[2]);
   double cut_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-SPH/pair_sph_rhosum.cpp b/src/USER-SPH/pair_sph_rhosum.cpp
index 4b7b028ad272ab812a945f52529c938ecdc260ad..4bff0ec27c6e75e33e904627d06c6336581a3627 100644
--- a/src/USER-SPH/pair_sph_rhosum.cpp
+++ b/src/USER-SPH/pair_sph_rhosum.cpp
@@ -243,8 +243,8 @@ void PairSPHRhoSum::coeff(int narg, char **arg) {
     allocate();
 
   int ilo, ihi, jlo, jhi;
-  force->bounds(arg[0], atom->ntypes, ilo, ihi);
-  force->bounds(arg[1], atom->ntypes, jlo, jhi);
+  force->bounds(FLERR,arg[0], atom->ntypes, ilo, ihi);
+  force->bounds(FLERR,arg[1], atom->ntypes, jlo, jhi);
 
   double cut_one = force->numeric(FLERR,arg[2]);
 
diff --git a/src/USER-SPH/pair_sph_taitwater.cpp b/src/USER-SPH/pair_sph_taitwater.cpp
index 846ec118936fee79dfb85cc3df9582fa2583b205..b1887c6164ac1e0d9528c8fec71d864a447d5e2c 100644
--- a/src/USER-SPH/pair_sph_taitwater.cpp
+++ b/src/USER-SPH/pair_sph_taitwater.cpp
@@ -243,8 +243,8 @@ void PairSPHTaitwater::coeff(int narg, char **arg) {
     allocate();
 
   int ilo, ihi, jlo, jhi;
-  force->bounds(arg[0], atom->ntypes, ilo, ihi);
-  force->bounds(arg[1], atom->ntypes, jlo, jhi);
+  force->bounds(FLERR,arg[0], atom->ntypes, ilo, ihi);
+  force->bounds(FLERR,arg[1], atom->ntypes, jlo, jhi);
 
   double rho0_one = force->numeric(FLERR,arg[2]);
   double soundspeed_one = force->numeric(FLERR,arg[3]);
diff --git a/src/USER-SPH/pair_sph_taitwater_morris.cpp b/src/USER-SPH/pair_sph_taitwater_morris.cpp
index d6a94f51cd2c4da83d6141f46c2f90bd6b1c62c7..76b538e46bd38fb0037a412ae2203adaa15f0d98 100644
--- a/src/USER-SPH/pair_sph_taitwater_morris.cpp
+++ b/src/USER-SPH/pair_sph_taitwater_morris.cpp
@@ -243,8 +243,8 @@ void PairSPHTaitwaterMorris::coeff(int narg, char **arg) {
     allocate();
 
   int ilo, ihi, jlo, jhi;
-  force->bounds(arg[0], atom->ntypes, ilo, ihi);
-  force->bounds(arg[1], atom->ntypes, jlo, jhi);
+  force->bounds(FLERR,arg[0], atom->ntypes, ilo, ihi);
+  force->bounds(FLERR,arg[1], atom->ntypes, jlo, jhi);
 
   double rho0_one = force->numeric(FLERR,arg[2]);
   double soundspeed_one = force->numeric(FLERR,arg[3]);
diff --git a/src/accelerator_kokkos.h b/src/accelerator_kokkos.h
index a98263fad08b1d5bc2339bb88d6ee6d39c82300f..d9794023b0d7172f5e73716bf0a19e6193f2aa2f 100644
--- a/src/accelerator_kokkos.h
+++ b/src/accelerator_kokkos.h
@@ -22,6 +22,7 @@
 #include "kokkos.h"
 #include "atom_kokkos.h"
 #include "comm_kokkos.h"
+#include "comm_tiled_kokkos.h"
 #include "domain_kokkos.h"
 #include "neighbor_kokkos.h"
 #include "modify_kokkos.h"
@@ -33,6 +34,7 @@
 
 #include "atom.h"
 #include "comm_brick.h"
+#include "comm_tiled.h"
 #include "domain.h"
 #include "neighbor.h"
 #include "modify.h"
@@ -68,6 +70,13 @@ class CommKokkos : public CommBrick {
   ~CommKokkos() {}
 };
 
+class CommTiledKokkos : public CommTiled {
+ public:
+  CommTiledKokkos(class LAMMPS *lmp) : CommTiled(lmp) {}
+  CommTiledKokkos(class LAMMPS *lmp, Comm *oldcomm) : CommTiled(lmp,oldcomm) {}
+  ~CommTiledKokkos() {}
+};
+
 class DomainKokkos : public Domain {
  public:
   DomainKokkos(class LAMMPS *lmp) : Domain(lmp) {}
diff --git a/src/angle_hybrid.cpp b/src/angle_hybrid.cpp
index 42b6860b6cc9d8f9fa5c58fb58391beb424b7ba1..a477d7f8f6dcdba430122fa47bcb43d2eee45c26 100644
--- a/src/angle_hybrid.cpp
+++ b/src/angle_hybrid.cpp
@@ -245,7 +245,7 @@ void AngleHybrid::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   // 2nd arg = angle sub-style name
   // allow for "none" or "skip" as valid sub-style name
diff --git a/src/angle_zero.cpp b/src/angle_zero.cpp
index 375d5ad81375fb3b36e03e9a1899097d55a36544..ba84295ca76a997a956991c35e6b0b194f925cdc 100644
--- a/src/angle_zero.cpp
+++ b/src/angle_zero.cpp
@@ -88,7 +88,7 @@ void AngleZero::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nangletypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
 
   double theta0_one = 0.0;
   if (coeffflag && (narg == 2))
diff --git a/src/atom.cpp b/src/atom.cpp
index e1ec60fd99fc1dcc229e48f1e68a155437cb4402..053a18430b2d9fdf6d8ebeaf6d59f04f3eb24843 100644
--- a/src/atom.cpp
+++ b/src/atom.cpp
@@ -506,7 +506,7 @@ void Atom::init()
 
   // check arrays that are atom type in length
 
-  check_mass();
+  check_mass(FLERR);
 
   // setup of firstgroup
 
@@ -1438,23 +1438,23 @@ void Atom::allocate_type_arrays()
    type_offset may be used when reading multiple data files
 ------------------------------------------------------------------------- */
 
-void Atom::set_mass(const char *str, int type_offset)
+void Atom::set_mass(const char *file, int line, const char *str, int type_offset)
 {
-  if (mass == NULL) error->all(FLERR,"Cannot set mass for this atom style");
+  if (mass == NULL) error->all(file,line,"Cannot set mass for this atom style");
 
   int itype;
   double mass_one;
   int n = sscanf(str,"%d %lg",&itype,&mass_one);
-  if (n != 2) error->all(FLERR,"Invalid mass line in data file");
+  if (n != 2) error->all(file,line,"Invalid mass line in data file");
   itype += type_offset;
 
   if (itype < 1 || itype > ntypes)
-    error->all(FLERR,"Invalid type for mass set");
+    error->all(file,line,"Invalid type for mass set");
 
   mass[itype] = mass_one;
   mass_setflag[itype] = 1;
 
-  if (mass[itype] <= 0.0) error->all(FLERR,"Invalid mass value");
+  if (mass[itype] <= 0.0) error->all(file,line,"Invalid mass value");
 }
 
 /* ----------------------------------------------------------------------
@@ -1462,16 +1462,16 @@ void Atom::set_mass(const char *str, int type_offset)
    called from EAM pair routine
 ------------------------------------------------------------------------- */
 
-void Atom::set_mass(int itype, double value)
+void Atom::set_mass(const char *file, int line, int itype, double value)
 {
-  if (mass == NULL) error->all(FLERR,"Cannot set mass for this atom style");
+  if (mass == NULL) error->all(file,line,"Cannot set mass for this atom style");
   if (itype < 1 || itype > ntypes)
-    error->all(FLERR,"Invalid type for mass set");
+    error->all(file,line,"Invalid type for mass set");
 
   mass[itype] = value;
   mass_setflag[itype] = 1;
 
-  if (mass[itype] <= 0.0) error->all(FLERR,"Invalid mass value");
+  if (mass[itype] <= 0.0) error->all(file,line,"Invalid mass value");
 }
 
 /* ----------------------------------------------------------------------
@@ -1479,19 +1479,19 @@ void Atom::set_mass(int itype, double value)
    called from reading of input script
 ------------------------------------------------------------------------- */
 
-void Atom::set_mass(int narg, char **arg)
+void Atom::set_mass(const char *file, int line, int narg, char **arg)
 {
-  if (mass == NULL) error->all(FLERR,"Cannot set mass for this atom style");
+  if (mass == NULL) error->all(file,line,"Cannot set mass for this atom style");
 
   int lo,hi;
-  force->bounds(arg[0],ntypes,lo,hi);
-  if (lo < 1 || hi > ntypes) error->all(FLERR,"Invalid type for mass set");
+  force->bounds(file,line,arg[0],ntypes,lo,hi);
+  if (lo < 1 || hi > ntypes) error->all(file,line,"Invalid type for mass set");
 
   for (int itype = lo; itype <= hi; itype++) {
     mass[itype] = atof(arg[1]);
     mass_setflag[itype] = 1;
 
-    if (mass[itype] <= 0.0) error->all(FLERR,"Invalid mass value");
+    if (mass[itype] <= 0.0) error->all(file,line,"Invalid mass value");
   }
 }
 
@@ -1511,12 +1511,12 @@ void Atom::set_mass(double *values)
    check that all masses have been set
 ------------------------------------------------------------------------- */
 
-void Atom::check_mass()
+void Atom::check_mass(const char *file, int line)
 {
   if (mass == NULL) return;
   for (int itype = 1; itype <= ntypes; itype++)
     if (mass_setflag[itype] == 0) 
-      error->all(FLERR,"Not all per-type masses are set");
+      error->all(file,line,"Not all per-type masses are set");
 }
 
 /* ----------------------------------------------------------------------
diff --git a/src/atom.h b/src/atom.h
index 748d43cddd1c4e685986c7c9e0c048e7d9ebff1d..9abbb495698e43025ae9e15242e1f24c679b4c0d 100644
--- a/src/atom.h
+++ b/src/atom.h
@@ -234,11 +234,11 @@ class Atom : protected Pointers {
   void data_fix_compute_variable(int, int);
   
   virtual void allocate_type_arrays();
-  void set_mass(const char *, int);
-  void set_mass(int, double);
-  void set_mass(int, char **);
+  void set_mass(const char *, int, const char *, int);
+  void set_mass(const char *, int, int, double);
+  void set_mass(const char *, int, int, char **);
   void set_mass(double *);
-  void check_mass();
+  void check_mass(const char *, int);
 
   int radius_consistency(int, double &);
   int shape_consistency(int, double &, double &, double &);
diff --git a/src/bond_hybrid.cpp b/src/bond_hybrid.cpp
index 519a1a300825ef5f9d122c4892576cb4ce4648e5..1244c2822bb27ae64d756b3c3f66e1e510c18a6e 100644
--- a/src/bond_hybrid.cpp
+++ b/src/bond_hybrid.cpp
@@ -243,7 +243,7 @@ void BondHybrid::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nbondtypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi);
 
   // 2nd arg = bond sub-style name
   // allow for "none" as valid sub-style name
diff --git a/src/bond_zero.cpp b/src/bond_zero.cpp
index 0a354a758eb18e9bf2fe2dc97fe7152c18d31466..f38b7754f826e297e1f820e8dcb22f6f6315bc16 100644
--- a/src/bond_zero.cpp
+++ b/src/bond_zero.cpp
@@ -86,7 +86,7 @@ void BondZero::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nbondtypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nbondtypes,ilo,ihi);
 
   double r0_one = 0.0;
   if (coeffflag && (narg == 2))
diff --git a/src/comm.cpp b/src/comm.cpp
index a47807b410638076f14816359c3110ccf9ae013f..b558b3fd8c0e0d4b37e4fb3b0b87a5e332089105 100644
--- a/src/comm.cpp
+++ b/src/comm.cpp
@@ -287,7 +287,7 @@ void Comm::modify_params(int narg, char **arg)
         for (i=0; i < ntypes+1; ++i)
           cutusermulti[i] = -1.0;
       }
-      force->bounds(arg[iarg+1],ntypes,nlo,nhi,1);
+      force->bounds(FLERR,arg[iarg+1],ntypes,nlo,nhi,1);
       cut = force->numeric(FLERR,arg[iarg+2]);
       cutghostuser = MAX(cutghostuser,cut);
       if (cut < 0.0)
diff --git a/src/compute_coord_atom.cpp b/src/compute_coord_atom.cpp
index 5747c869dc6fc565bd14ebcfff28ab652b8cdac1..21744dcc93839b4e1baf264c554b77de8dfe13b2 100644
--- a/src/compute_coord_atom.cpp
+++ b/src/compute_coord_atom.cpp
@@ -53,7 +53,7 @@ ComputeCoordAtom::ComputeCoordAtom(LAMMPS *lmp, int narg, char **arg) :
     ncol = 0;
     int iarg = 4;
     while (iarg < narg) {
-      force->bounds(arg[iarg],ntypes,typelo[ncol],typehi[ncol]);
+      force->bounds(FLERR,arg[iarg],ntypes,typelo[ncol],typehi[ncol]);
       if (typelo[ncol] > typehi[ncol])
         error->all(FLERR,"Illegal compute coord/atom command");
       ncol++;
diff --git a/src/compute_rdf.cpp b/src/compute_rdf.cpp
index 86245080178d4f19853df130e934ec6edd0cdd43..08863940689bd44ced0cd1427f52936f3f62fae6 100644
--- a/src/compute_rdf.cpp
+++ b/src/compute_rdf.cpp
@@ -72,8 +72,8 @@ ComputeRDF::ComputeRDF(LAMMPS *lmp, int narg, char **arg) :
     npairs = 0;
     int iarg = 4;
     while (iarg < narg) {
-      force->bounds(arg[iarg],atom->ntypes,ilo[npairs],ihi[npairs]);
-      force->bounds(arg[iarg+1],atom->ntypes,jlo[npairs],jhi[npairs]);
+      force->bounds(FLERR,arg[iarg],atom->ntypes,ilo[npairs],ihi[npairs]);
+      force->bounds(FLERR,arg[iarg+1],atom->ntypes,jlo[npairs],jhi[npairs]);
       if (ilo[npairs] > ihi[npairs] || jlo[npairs] > jhi[npairs])
         error->all(FLERR,"Illegal compute rdf command");
       npairs++;
diff --git a/src/delete_bonds.cpp b/src/delete_bonds.cpp
index 3871641e0ec3ebc452f62e246007a7704d73ecb6..97eb1c09a857246f3236be089f73c1cb46008325 100644
--- a/src/delete_bonds.cpp
+++ b/src/delete_bonds.cpp
@@ -74,7 +74,7 @@ void DeleteBonds::command(int narg, char **arg)
   else error->all(FLERR,"Illegal delete_bonds command");
 
   // setup list of types (atom,bond,etc) to consider
-  // use force->bounds() to allow setting of range of types
+  // use force->bounds(FLERR,) to allow setting of range of types
   // range can be 0 to ntypes inclusive
 
   int *tlist = NULL;
@@ -93,7 +93,7 @@ void DeleteBonds::command(int narg, char **arg)
     tlist = new int[n+1];
     for (int i = 0; i <= n; i++) tlist[i] = 0;
     int nlo,nhi;
-    force->bounds(arg[2],n,nlo,nhi,0);
+    force->bounds(FLERR,arg[2],n,nlo,nhi,0);
     for (int i = nlo; i <= nhi; i++) tlist[i] = 1;
 
     iarg++;
diff --git a/src/dihedral_hybrid.cpp b/src/dihedral_hybrid.cpp
index ed73351b3aef365bacb5de8246f778394dedd553..0ae396b887c9f7150582bbbcae047fb7dd235dc7 100644
--- a/src/dihedral_hybrid.cpp
+++ b/src/dihedral_hybrid.cpp
@@ -247,7 +247,7 @@ void DihedralHybrid::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   // 2nd arg = dihedral sub-style name
   // allow for "none" or "skip" as valid sub-style name
diff --git a/src/dihedral_zero.cpp b/src/dihedral_zero.cpp
index 1e4a4ab3ae0b3ca53c0fada325411034e7f231d2..9b0c569fcac8743bf3124bcfe1359aeb35f07e40 100644
--- a/src/dihedral_zero.cpp
+++ b/src/dihedral_zero.cpp
@@ -84,7 +84,7 @@ void DihedralZero::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ndihedraltypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
 
   int count = 0;
   for (int i = ilo; i <= ihi; i++) {
diff --git a/src/dump_image.cpp b/src/dump_image.cpp
index fd3dbed9e916a8093453ecce3224da24006f15f1..6d971d016aacbb732032f311c1748bfd4e5af708 100644
--- a/src/dump_image.cpp
+++ b/src/dump_image.cpp
@@ -1241,7 +1241,7 @@ int DumpImage::modify_param(int narg, char **arg)
   if (strcmp(arg[0],"acolor") == 0) {
     if (narg < 3) error->all(FLERR,"Illegal dump_modify command");
     int nlo,nhi;
-    force->bounds(arg[1],atom->ntypes,nlo,nhi);
+    force->bounds(FLERR,arg[1],atom->ntypes,nlo,nhi);
 
     // ptrs = list of ncount colornames separated by '/'
 
@@ -1275,7 +1275,7 @@ int DumpImage::modify_param(int narg, char **arg)
   if (strcmp(arg[0],"adiam") == 0) {
     if (narg < 3) error->all(FLERR,"Illegal dump_modify command");
     int nlo,nhi;
-    force->bounds(arg[1],atom->ntypes,nlo,nhi);
+    force->bounds(FLERR,arg[1],atom->ntypes,nlo,nhi);
     double diam = force->numeric(FLERR,arg[2]);
     if (diam <= 0.0) error->all(FLERR,"Illegal dump_modify command");
     for (int i = nlo; i <= nhi; i++) diamtype[i] = diam;
@@ -1304,7 +1304,7 @@ int DumpImage::modify_param(int narg, char **arg)
     if (atom->nbondtypes == 0)
       error->all(FLERR,"Dump modify bcolor not allowed with no bond types");
     int nlo,nhi;
-    force->bounds(arg[1],atom->nbondtypes,nlo,nhi);
+    force->bounds(FLERR,arg[1],atom->nbondtypes,nlo,nhi);
 
     // ptrs = list of ncount colornames separated by '/'
 
@@ -1340,7 +1340,7 @@ int DumpImage::modify_param(int narg, char **arg)
     if (atom->nbondtypes == 0)
       error->all(FLERR,"Dump modify bdiam not allowed with no bond types");
     int nlo,nhi;
-    force->bounds(arg[1],atom->ntypes,nlo,nhi);
+    force->bounds(FLERR,arg[1],atom->ntypes,nlo,nhi);
     double diam = force->numeric(FLERR,arg[2]);
     if (diam <= 0.0) error->all(FLERR,"Illegal dump_modify command");
     for (int i = nlo; i <= nhi; i++) bdiamtype[i] = diam;
diff --git a/src/fix_adapt.cpp b/src/fix_adapt.cpp
index 2a3f7db1f1affb779a6702af60c8bcabdd5b42b0..4c7eb5f218e4a7d0a1e83996ca10cbe6d74c8b07 100644
--- a/src/fix_adapt.cpp
+++ b/src/fix_adapt.cpp
@@ -92,9 +92,9 @@ nadapt(0), id_fix_diam(NULL), id_fix_chg(NULL), adapt(NULL)
       adapt[nadapt].pparam = new char[n];
       adapt[nadapt].pair = NULL;
       strcpy(adapt[nadapt].pparam,arg[iarg+2]);
-      force->bounds(arg[iarg+3],atom->ntypes,
+      force->bounds(FLERR,arg[iarg+3],atom->ntypes,
                     adapt[nadapt].ilo,adapt[nadapt].ihi);
-      force->bounds(arg[iarg+4],atom->ntypes,
+      force->bounds(FLERR,arg[iarg+4],atom->ntypes,
                     adapt[nadapt].jlo,adapt[nadapt].jhi);
       if (strstr(arg[iarg+5],"v_") == arg[iarg+5]) {
         n = strlen(&arg[iarg+5][2]) + 1;
diff --git a/src/force.cpp b/src/force.cpp
index dbc71b49a9b5b35959623bce9cfb6ccab3f84225..3154139d54a5f5e6116ee9f87a762e7965f04ae6 100644
--- a/src/force.cpp
+++ b/src/force.cpp
@@ -835,7 +835,8 @@ void Force::set_special(int narg, char **arg)
    return nlo,nhi
 ------------------------------------------------------------------------- */
 
-void Force::bounds(char *str, int nmax, int &nlo, int &nhi, int nmin)
+void Force::bounds(const char *file, int line, char *str,
+                   int nmax, int &nlo, int &nhi, int nmin)
 {
   char *ptr = strchr(str,'*');
 
@@ -856,7 +857,7 @@ void Force::bounds(char *str, int nmax, int &nlo, int &nhi, int nmin)
   }
 
   if (nlo < nmin || nhi > nmax || nlo > nhi)
-    error->all(FLERR,"Numeric index is out of bounds");
+    error->all(file,line,"Numeric index is out of bounds");
 }
 
 /* ----------------------------------------------------------------------
@@ -868,8 +869,8 @@ void Force::bounds(char *str, int nmax, int &nlo, int &nhi, int nmin)
    return nlo,nhi
 ------------------------------------------------------------------------- */
 
-void Force::boundsbig(char *str, bigint nmax, bigint &nlo, bigint &nhi,
-                      bigint nmin)
+void Force::boundsbig(const char *file, int line, char *str,
+                      bigint nmax, bigint &nlo, bigint &nhi, bigint nmin)
 {
   char *ptr = strchr(str,'*');
 
@@ -890,7 +891,7 @@ void Force::boundsbig(char *str, bigint nmax, bigint &nlo, bigint &nhi,
   }
 
   if (nlo < nmin || nhi > nmax || nlo > nhi)
-    error->all(FLERR,"Numeric index is out of bounds");
+    error->all(file,line,"Numeric index is out of bounds");
 }
 
 /* ----------------------------------------------------------------------
diff --git a/src/force.h b/src/force.h
index 78788826a4f851bcff0ad19ad6f55f50d87e933a..f2d9abc7dd235db067bab708669e0ae5cd633f08 100644
--- a/src/force.h
+++ b/src/force.h
@@ -125,8 +125,8 @@ class Force : protected Pointers {
 
   void store_style(char *&, const char *, int);
   void set_special(int, char **);
-  void bounds(char *, int, int &, int &, int nmin=1);
-  void boundsbig(char *, bigint, bigint &, bigint &, bigint nmin=1);
+  void bounds(const char *, int, char *, int, int &, int &, int nmin=1);
+  void boundsbig(const char *, int, char *, bigint, bigint &, bigint &, bigint nmin=1);
   double numeric(const char *, int, char *);
   int inumeric(const char *, int, char *);
   bigint bnumeric(const char *, int, char *);
diff --git a/src/improper_hybrid.cpp b/src/improper_hybrid.cpp
index d819365b74103a43b8ff3445d350a9f386eb6191..78ee69569e0e5a55efc044238d0034ed6b5c6c54 100644
--- a/src/improper_hybrid.cpp
+++ b/src/improper_hybrid.cpp
@@ -256,7 +256,7 @@ void ImproperHybrid::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nimpropertypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nimpropertypes,ilo,ihi);
 
   // 2nd arg = improper sub-style name
   // allow for "none" as valid sub-style name
diff --git a/src/improper_zero.cpp b/src/improper_zero.cpp
index 958f6621624b198e0e2150d130988bb57aef3f54..556e427ff8b9203112c8cb53f475ceab4bb6379a 100644
--- a/src/improper_zero.cpp
+++ b/src/improper_zero.cpp
@@ -84,7 +84,7 @@ void ImproperZero::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->nimpropertypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->nimpropertypes,ilo,ihi);
 
   int count = 0;
   for (int i = ilo; i <= ihi; i++) {
diff --git a/src/input.cpp b/src/input.cpp
index fdb551d3da455f987daf03813377986c699e26e3..258b4d7dd0ed35427e61a883c04278ad89ace8b9 100644
--- a/src/input.cpp
+++ b/src/input.cpp
@@ -27,6 +27,7 @@
 #include "comm.h"
 #include "comm_brick.h"
 #include "comm_tiled.h"
+#include "accelerator_kokkos.h"
 #include "group.h"
 #include "domain.h"
 #include "output.h"
@@ -684,7 +685,7 @@ int Input::expand_args(int narg, char **arg, int mode, char **&earg)
 
     if (expandflag) {
       *ptr2 = '\0';
-      force->bounds(ptr1+1,nmax,nlo,nhi);
+      force->bounds(FLERR,ptr1+1,nmax,nlo,nhi);
       *ptr2 = ']';
       if (newarg+nhi-nlo+1 > maxarg) {
 	maxarg += nhi-nlo+1;
@@ -1131,7 +1132,7 @@ void Input::partition()
   else error->all(FLERR,"Illegal partition command");
 
   int ilo,ihi;
-  force->bounds(arg[1],universe->nworlds,ilo,ihi);
+  force->bounds(FLERR,arg[1],universe->nworlds,ilo,ihi);
 
   // copy original line to copy, since will use strtok() on it
   // ptr = start of 4th word
@@ -1465,7 +1466,10 @@ void Input::comm_style()
   } else if (strcmp(arg[0],"tiled") == 0) {
     if (comm->style == 1) return;
     Comm *oldcomm = comm;
-    comm = new CommTiled(lmp,oldcomm);
+
+    if (lmp->kokkos) comm = new CommTiledKokkos(lmp,oldcomm);
+    else comm = new CommTiled(lmp,oldcomm);
+
     delete oldcomm;
   } else error->all(FLERR,"Illegal comm_style command");
 }
@@ -1623,7 +1627,7 @@ void Input::mass()
   if (narg != 2) error->all(FLERR,"Illegal mass command");
   if (domain->box_exist == 0)
     error->all(FLERR,"Mass command before simulation box is defined");
-  atom->set_mass(narg,arg);
+  atom->set_mass(FLERR,narg,arg);
 }
 
 /* ---------------------------------------------------------------------- */
diff --git a/src/molecule.cpp b/src/molecule.cpp
index 0febb784c84566c0298c00d78d3d2bca2e5ccc08..fb7e5a3b505e4344a83a27690d8166820ff40a01 100644
--- a/src/molecule.cpp
+++ b/src/molecule.cpp
@@ -210,7 +210,7 @@ void Molecule::compute_mass()
   if (massflag) return;
   massflag = 1;
 
-  if (!rmassflag) atom->check_mass();
+  if (!rmassflag) atom->check_mass(FLERR);
 
   masstotal = 0.0;
   for (int i = 0; i < natoms; i++) {
@@ -234,7 +234,7 @@ void Molecule::compute_com()
   if (!comflag) {
     comflag = 1;
 
-    if (!rmassflag) atom->check_mass();
+    if (!rmassflag) atom->check_mass(FLERR);
 
     double onemass;
     com[0] = com[1] = com[2] = 0.0;
@@ -299,7 +299,7 @@ void Molecule::compute_inertia()
   if (!inertiaflag) {
     inertiaflag = 1;
 
-    if (!rmassflag) atom->check_mass();
+    if (!rmassflag) atom->check_mass(FLERR);
 
     double onemass,dx,dy,dz;
     for (int i = 0; i < 6; i++) itensor[i] = 0.0;
diff --git a/src/output.cpp b/src/output.cpp
index df7c33e101aaf602d666068319da00d0f6cb4439..89e5c8d9cb7736b0bb81c8fd1a90ddcf297e6523 100644
--- a/src/output.cpp
+++ b/src/output.cpp
@@ -749,6 +749,7 @@ void Output::create_restart(int narg, char **arg)
     } else restart_every_single = every;
 
     int n = strlen(arg[1]) + 3;
+    delete [] restart1;
     restart1 = new char[n];
     strcpy(restart1,arg[1]);
     if (strchr(restart1,'*') == NULL) strcat(restart1,".*");
@@ -765,6 +766,8 @@ void Output::create_restart(int narg, char **arg)
       restart_every_double = 0;
     } else restart_every_double = every;
 
+    delete [] restart2a;
+    delete [] restart2b;
     restart_toggle = 0;
     int n = strlen(arg[1]) + 3;
     restart2a = new char[n];
diff --git a/src/pair.cpp b/src/pair.cpp
index 651cabed608e330412100b3c1ad9998a5adc18b3..5d73a592e8bea96cfe4b16939cdde484a3ee1fa9 100644
--- a/src/pair.cpp
+++ b/src/pair.cpp
@@ -87,6 +87,8 @@ Pair::Pair(LAMMPS *lmp) : Pointers(lmp)
   ndisptablebits = 12;
   tabinner = sqrt(2.0);
   tabinner_disp = sqrt(2.0);
+  ftable = NULL;
+  fdisptable = NULL;
 
   allocated = 0;
   suffix_flag = Suffix::NONE;
diff --git a/src/pair_beck.cpp b/src/pair_beck.cpp
index 0e05afb43ba758a6e35926a06e091b4726e9d0d6..e3e8b0c5cc3d679e4ca7fbdb2e96c4d2b8ca6299 100644
--- a/src/pair_beck.cpp
+++ b/src/pair_beck.cpp
@@ -199,8 +199,8 @@ void PairBeck::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double AA_one = force->numeric(FLERR,arg[2]);
   double BB_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_born.cpp b/src/pair_born.cpp
index d925af1030beeb1567331de7c568a6260153e854..5fc26e2529f11552cf2085f627f4a4627dd74f44 100644
--- a/src/pair_born.cpp
+++ b/src/pair_born.cpp
@@ -200,8 +200,8 @@ void PairBorn::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a_one = force->numeric(FLERR,arg[2]);
   double rho_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_born_coul_wolf.cpp b/src/pair_born_coul_wolf.cpp
index 48066fc43e11ff2d4ad95f242d470df3a55c7d11..31c0cc715c661ef625ac7300c0436456045071e0 100644
--- a/src/pair_born_coul_wolf.cpp
+++ b/src/pair_born_coul_wolf.cpp
@@ -245,8 +245,8 @@ void PairBornCoulWolf::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a_one = force->numeric(FLERR,arg[2]);
   double rho_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_buck.cpp b/src/pair_buck.cpp
index baaea7ccdd2beb95ec8915f908ebccba3f7c7ffe..78a5321cf04877099f9c0deeffb93f67bece213e 100644
--- a/src/pair_buck.cpp
+++ b/src/pair_buck.cpp
@@ -191,8 +191,8 @@ void PairBuck::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a_one = force->numeric(FLERR,arg[2]);
   double rho_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_buck_coul_cut.cpp b/src/pair_buck_coul_cut.cpp
index 06aeea3083e04724a333cf8e2908245880f1c28d..7c948f58a8e6c323e448d94c3a0df9eec557eaa8 100644
--- a/src/pair_buck_coul_cut.cpp
+++ b/src/pair_buck_coul_cut.cpp
@@ -224,8 +224,8 @@ void PairBuckCoulCut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a_one = force->numeric(FLERR,arg[2]);
   double rho_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_coul_cut.cpp b/src/pair_coul_cut.cpp
index 4f21ba5ac1a8bbdeb0f0b0a66e458e55b9177dbe..fec592bb191e079c2e5bca23179622a00328ca82 100644
--- a/src/pair_coul_cut.cpp
+++ b/src/pair_coul_cut.cpp
@@ -171,8 +171,8 @@ void PairCoulCut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double cut_one = cut_global;
   if (narg == 3) cut_one = force->numeric(FLERR,arg[2]);
diff --git a/src/pair_coul_dsf.cpp b/src/pair_coul_dsf.cpp
index a72b8d72d34075e2bc6c2ef11c9344d93e8dc432..3595f9cbee8d8b64369b5eff1c3a77ee28df8c4f 100644
--- a/src/pair_coul_dsf.cpp
+++ b/src/pair_coul_dsf.cpp
@@ -185,8 +185,8 @@ void PairCoulDSF::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   int count = 0;
   for (int i = ilo; i <= ihi; i++) {
diff --git a/src/pair_coul_wolf.cpp b/src/pair_coul_wolf.cpp
index 320eed3e9fac5b95e307fb1877820332b97c25d4..1a7f4772608c98aeb8da19bb7f273e8fe64a18de 100644
--- a/src/pair_coul_wolf.cpp
+++ b/src/pair_coul_wolf.cpp
@@ -187,8 +187,8 @@ void PairCoulWolf::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   int count = 0;
   for (int i = ilo; i <= ihi; i++) {
diff --git a/src/pair_dpd.cpp b/src/pair_dpd.cpp
index 99166918c77e6b111bb45cb0d57672d91674358a..b5b959f85b62a3d57ef5c8de1dacc94cdaf84a66 100644
--- a/src/pair_dpd.cpp
+++ b/src/pair_dpd.cpp
@@ -223,8 +223,8 @@ void PairDPD::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a0_one = force->numeric(FLERR,arg[2]);
   double gamma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_dpd_tstat.cpp b/src/pair_dpd_tstat.cpp
index 2c51bb8d850b5a1edc5addd1ad7b01f75e2011c7..6d8f75d95d61a5e7b852d4198b61a4d38404cf88 100644
--- a/src/pair_dpd_tstat.cpp
+++ b/src/pair_dpd_tstat.cpp
@@ -175,8 +175,8 @@ void PairDPDTstat::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a0_one = 0.0;
   double gamma_one = force->numeric(FLERR,arg[2]);
diff --git a/src/pair_gauss.cpp b/src/pair_gauss.cpp
index 1b922a215fba430a308459632e627c80b2797537..c7b77c32709af9e5a854fc671bfa6143dc5ac5d3 100644
--- a/src/pair_gauss.cpp
+++ b/src/pair_gauss.cpp
@@ -189,8 +189,8 @@ void PairGauss::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a_one = force->numeric(FLERR,arg[2]);
   double b_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp
index 90b847339e55063dda99d70c26b576164cef84fd..3f4392d02ab5768f04c54d1f3dcd5bdb746d589d 100644
--- a/src/pair_hybrid.cpp
+++ b/src/pair_hybrid.cpp
@@ -365,8 +365,8 @@ void PairHybrid::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   // 3rd arg = pair sub-style name
   // 4th arg = pair sub-style index if name used multiple times
diff --git a/src/pair_hybrid_overlay.cpp b/src/pair_hybrid_overlay.cpp
index 30c1d7d54ee5c08d6b66c6731c5d03bb33e05c3e..6ffd6a19d6fbcd93495f6a538f1fb1ec4be4f602 100644
--- a/src/pair_hybrid_overlay.cpp
+++ b/src/pair_hybrid_overlay.cpp
@@ -37,8 +37,8 @@ void PairHybridOverlay::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   // 3rd arg = pair sub-style name
   // 4th arg = pair sub-style index if name used multiple times
diff --git a/src/pair_lj96_cut.cpp b/src/pair_lj96_cut.cpp
index cba6fdbdb45780db25a9bcfc81bb3fe251de5e66..1579a9fbf4524de1ace40a2d8c2f5afce9f21fb1 100644
--- a/src/pair_lj96_cut.cpp
+++ b/src/pair_lj96_cut.cpp
@@ -458,8 +458,8 @@ void PairLJ96Cut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_lj_cubic.cpp b/src/pair_lj_cubic.cpp
index 68b664fe210dc242bb50fd7427b9fbff12d79970..633c12019ea312d294d1e10084427800da6772a9 100644
--- a/src/pair_lj_cubic.cpp
+++ b/src/pair_lj_cubic.cpp
@@ -200,8 +200,8 @@ void PairLJCubic::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_lj_cut.cpp b/src/pair_lj_cut.cpp
index ab1710b2fc190bfd9e8efefac22d6b637361dbd8..b8ea4a72b671d4d92b0b0dbf9b020dc2d6f81afe 100644
--- a/src/pair_lj_cut.cpp
+++ b/src/pair_lj_cut.cpp
@@ -452,8 +452,8 @@ void PairLJCut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_lj_cut_coul_cut.cpp b/src/pair_lj_cut_coul_cut.cpp
index 79d3fa12a843c6cccfc77aae12371c24d0a5c86e..0d2bff3c9f8c96941215bb16d3b3a83dfb60a118 100644
--- a/src/pair_lj_cut_coul_cut.cpp
+++ b/src/pair_lj_cut_coul_cut.cpp
@@ -217,8 +217,8 @@ void PairLJCutCoulCut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_lj_cut_coul_dsf.cpp b/src/pair_lj_cut_coul_dsf.cpp
index d80c7e74c05a569c6d56ec1f9088ef528b6c1a6a..538336d8e648f4964dd8db46f1e20f200dd135c1 100644
--- a/src/pair_lj_cut_coul_dsf.cpp
+++ b/src/pair_lj_cut_coul_dsf.cpp
@@ -241,8 +241,8 @@ void PairLJCutCoulDSF::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_lj_expand.cpp b/src/pair_lj_expand.cpp
index 237ee91cce83a5e284f8aaec8f67c242f151b902..90f1ae0df29abbcb81e50cc7c4f622bdc3ce20f1 100644
--- a/src/pair_lj_expand.cpp
+++ b/src/pair_lj_expand.cpp
@@ -194,8 +194,8 @@ void PairLJExpand::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_lj_gromacs.cpp b/src/pair_lj_gromacs.cpp
index d5b24b733ec83d6d139b6986c4b7e973144d05ef..bb0a6e647e8f76cbe892c6f61af042c97596825b 100644
--- a/src/pair_lj_gromacs.cpp
+++ b/src/pair_lj_gromacs.cpp
@@ -223,8 +223,8 @@ void PairLJGromacs::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_lj_gromacs_coul_gromacs.cpp b/src/pair_lj_gromacs_coul_gromacs.cpp
index b68a557dcb2750883e297a87e5f0eb615cbfaea7..26e433b38113a6ef282c7034f1ddcdb9f1b5539e 100644
--- a/src/pair_lj_gromacs_coul_gromacs.cpp
+++ b/src/pair_lj_gromacs_coul_gromacs.cpp
@@ -247,8 +247,8 @@ void PairLJGromacsCoulGromacs::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_lj_smooth.cpp b/src/pair_lj_smooth.cpp
index b73545f57b509df0d172d20b1c1b86062e59def5..c59b35aebf87287ce0c6b6afdb05cafac9f4f4a0 100644
--- a/src/pair_lj_smooth.cpp
+++ b/src/pair_lj_smooth.cpp
@@ -225,8 +225,8 @@ void PairLJSmooth::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_lj_smooth_linear.cpp b/src/pair_lj_smooth_linear.cpp
index fa41bcae4b5b7a8c5693b0de7a9a02daeb1ea861..189475aa71bd62e2598890cbac33db48c39a3496 100644
--- a/src/pair_lj_smooth_linear.cpp
+++ b/src/pair_lj_smooth_linear.cpp
@@ -192,8 +192,8 @@ void PairLJSmoothLinear::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_mie_cut.cpp b/src/pair_mie_cut.cpp
index 7cb67b9437b3d11618d826945517936119320b21..b79c6c9bf92c98b662658a6dbf64f0df7c1ef4d1 100644
--- a/src/pair_mie_cut.cpp
+++ b/src/pair_mie_cut.cpp
@@ -463,8 +463,8 @@ void PairMIECut::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double epsilon_one = force->numeric(FLERR,arg[2]);
   double sigma_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_morse.cpp b/src/pair_morse.cpp
index 4e2d47be5c4ab92fc68ce9a729ac4753af4290d2..2144ad5008b96a40c78bdd641e73f058069deec8 100644
--- a/src/pair_morse.cpp
+++ b/src/pair_morse.cpp
@@ -176,12 +176,13 @@ void PairMorse::settings(int narg, char **arg)
 
 void PairMorse::coeff(int narg, char **arg)
 {
-  if (narg < 5 || narg > 6) error->all(FLERR,"Incorrect args for pair coefficients");
+  if (narg < 5 || narg > 6) 
+    error->all(FLERR,"Incorrect args for pair coefficients");
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double d0_one = force->numeric(FLERR,arg[2]);
   double alpha_one = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_soft.cpp b/src/pair_soft.cpp
index d9b9bb819ba55b922322cd03b3d032a89d806839..8ffd1393077f82e0e9db88fe5f7a65519b536961 100644
--- a/src/pair_soft.cpp
+++ b/src/pair_soft.cpp
@@ -174,8 +174,8 @@ void PairSoft::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double prefactor_one = force->numeric(FLERR,arg[2]);
 
diff --git a/src/pair_table.cpp b/src/pair_table.cpp
index f83e499a23cbe8ce8abe487040b9083963f9ef6a..c4bc3e7dd2096a379874618317187399e66cb1e7 100644
--- a/src/pair_table.cpp
+++ b/src/pair_table.cpp
@@ -263,8 +263,8 @@ void PairTable::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   int me;
   MPI_Comm_rank(world,&me);
diff --git a/src/pair_yukawa.cpp b/src/pair_yukawa.cpp
index 2cc309d949f2bb4fbe0731d509f17f0336f34a5c..a38e2aa8808aa1a9f1ada33654d2328783c2d7f7 100644
--- a/src/pair_yukawa.cpp
+++ b/src/pair_yukawa.cpp
@@ -178,8 +178,8 @@ void PairYukawa::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double a_one = force->numeric(FLERR,arg[2]);
 
diff --git a/src/pair_zbl.cpp b/src/pair_zbl.cpp
index 69622009826f1cfabcdd7cf3bc355644500b7eab..86c6c64d77feef8fc0b013925c6c54e82e1e6556 100644
--- a/src/pair_zbl.cpp
+++ b/src/pair_zbl.cpp
@@ -211,10 +211,10 @@ void PairZBL::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
 
   int jlo,jhi;
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   z_one = force->numeric(FLERR,arg[2]);
   z_two = force->numeric(FLERR,arg[3]);
diff --git a/src/pair_zero.cpp b/src/pair_zero.cpp
index 787ed29935b7a1e162ac02da903fe5e52a3581ad..ab6d713cc4aa433524eff1484a38b7dd4eba5d31 100644
--- a/src/pair_zero.cpp
+++ b/src/pair_zero.cpp
@@ -111,8 +111,8 @@ void PairZero::coeff(int narg, char **arg)
   if (!allocated) allocate();
 
   int ilo,ihi,jlo,jhi;
-  force->bounds(arg[0],atom->ntypes,ilo,ihi);
-  force->bounds(arg[1],atom->ntypes,jlo,jhi);
+  force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
+  force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   double cut_one = cut_global;
   if (coeffflag && (narg == 3)) cut_one = force->numeric(FLERR,arg[2]);
diff --git a/src/read_data.cpp b/src/read_data.cpp
index 6ce3e434851b011e0e4e133ea43617ac719966fe..d6a33d6e9d5b2b708c252af22ec10e0ec48951e4 100644
--- a/src/read_data.cpp
+++ b/src/read_data.cpp
@@ -1650,7 +1650,7 @@ void ReadData::mass()
   for (int i = 0; i < ntypes; i++) {
     next = strchr(buf,'\n');
     *next = '\0';
-    atom->set_mass(buf,toffset);
+    atom->set_mass(FLERR,buf,toffset);
     buf = next + 1;
   }
   delete [] original;
diff --git a/src/region_cylinder.cpp b/src/region_cylinder.cpp
index 5e666e472f610b6fa052e5f4ecac343775947891..3d5590b59e7cbe2d63e3e7f4dfe53b5158f404a3 100644
--- a/src/region_cylinder.cpp
+++ b/src/region_cylinder.cpp
@@ -36,8 +36,7 @@ RegCylinder::RegCylinder(LAMMPS *lmp, int narg, char **arg) :
 
   // check open face settings
 
-  if (openflag && (open_faces[2] || open_faces[3] ||
-                   open_faces[4] || open_faces[5]))
+  if (openflag && (open_faces[3] || open_faces[4] || open_faces[5]))
     error->all(FLERR,"Invalid region cylinder open setting");
 
   if (strcmp(arg[2],"x") && strcmp(arg[2],"y") && strcmp(arg[2],"z"))
diff --git a/src/set.cpp b/src/set.cpp
index 56fbf42e543707528c8925b46f9ec33e16e8063b..82d0bce129b229e73c189d6183f3b44599eb4de6 100644
--- a/src/set.cpp
+++ b/src/set.cpp
@@ -498,7 +498,7 @@ void Set::selection(int n)
     if (atom->tag_enable == 0)
       error->all(FLERR,"Cannot use set atom with no atom IDs defined");
     bigint nlobig,nhibig;
-    force->boundsbig(id,MAXTAGINT,nlobig,nhibig);
+    force->boundsbig(FLERR,id,MAXTAGINT,nlobig,nhibig);
 
     tagint *tag = atom->tag;
     for (int i = 0; i < n; i++)
@@ -509,7 +509,7 @@ void Set::selection(int n)
     if (atom->molecule_flag == 0)
       error->all(FLERR,"Cannot use set mol with no molecule IDs defined");
     bigint nlobig,nhibig;
-    force->boundsbig(id,MAXTAGINT,nlobig,nhibig);
+    force->boundsbig(FLERR,id,MAXTAGINT,nlobig,nhibig);
 
     tagint *molecule = atom->molecule;
     for (int i = 0; i < n; i++)
@@ -517,7 +517,7 @@ void Set::selection(int n)
       else select[i] = 0;
 
   } else if (style == TYPE_SELECT) {
-    force->bounds(id,atom->ntypes,nlo,nhi);
+    force->bounds(FLERR,id,atom->ntypes,nlo,nhi);
 
     int *type = atom->type;
     for (int i = 0; i < n; i++)
diff --git a/src/universe.cpp b/src/universe.cpp
index a856555de4f1bb6c2214629531d9ab87a4c36362..b5d33ac9a25316a9e6a0e12b3bb34a9ed54dae9e 100644
--- a/src/universe.cpp
+++ b/src/universe.cpp
@@ -163,17 +163,49 @@ void Universe::add_world(char *str)
   int n,nper;
   char *ptr;
 
-  if (str == NULL) {
-    n = 1;
-    nper = nprocs;
-  } else if ((ptr = strchr(str,'x')) != NULL) {
-    *ptr = '\0';
-    n = atoi(str);
-    nper = atoi(ptr+1);
-  } else {
-    n = 1;
-    nper = atoi(str);
-  }
+  n = 1;
+  if (str != NULL) {
+
+    // check for valid partition argument
+
+    bool valid = true;
+
+    // str may not be empty and may only consist of digits or 'x'
+
+    int len = strlen(str);
+    if (len < 1) valid = false;
+    for (int i=0; i < len; ++i)
+      if (isdigit(str[i]) || str[i] == 'x') continue;
+      else valid = false;
+
+    if (valid) {
+      if ((ptr = strchr(str,'x')) != NULL) {
+
+        // 'x' may not be the first or last character
+
+        if (ptr == str) {
+          valid = false;
+        } else if (strlen(str) == len-1) {
+          valid = false;
+        } else {
+          *ptr = '\0';
+          n = atoi(str);
+          nper = atoi(ptr+1);
+          *ptr = 'x';
+        }
+      } else nper = atoi(str);
+    }
+
+    // require minimum of 1 partition with 1 processor
+
+    if (n < 1 || nper < 1) valid = false;
+
+    if (!valid) {
+      char msg[128];
+      sprintf(msg,"Invalid partition string '%s'",str);
+      error->universe_all(FLERR,msg);
+    }
+  } else nper = nprocs;
 
   memory->grow(procs_per_world,nworlds+n,"universe:procs_per_world");
   memory->grow(root_proc,(nworlds+n),"universe:root_proc");
diff --git a/src/variable.cpp b/src/variable.cpp
index be09ebe69fae0cb9055a91e9c0b8b6d6a8867862..2f985a7c8ec00ad9865c3b2a95f15f7b5fbbbdbb 100644
--- a/src/variable.cpp
+++ b/src/variable.cpp
@@ -3675,7 +3675,7 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
     else error->all(FLERR,"Invalid group function in variable formula");
 
   } else if (strcmp(word,"xcm") == 0) {
-    atom->check_mass();
+    atom->check_mass(FLERR);
     double xcm[3];
     if (narg == 2) {
       double masstotal = group->mass(igroup);
@@ -3691,7 +3691,7 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
     else error->all(FLERR,"Invalid group function in variable formula");
 
   } else if (strcmp(word,"vcm") == 0) {
-    atom->check_mass();
+    atom->check_mass(FLERR);
     double vcm[3];
     if (narg == 2) {
       double masstotal = group->mass(igroup);
@@ -3730,7 +3730,7 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
     else error->all(FLERR,"Invalid group function in variable formula");
 
   } else if (strcmp(word,"gyration") == 0) {
-    atom->check_mass();
+    atom->check_mass(FLERR);
     double xcm[3];
     if (narg == 1) {
       double masstotal = group->mass(igroup);
@@ -3749,7 +3749,7 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
     else error->all(FLERR,"Invalid group function in variable formula");
 
   } else if (strcmp(word,"angmom") == 0) {
-    atom->check_mass();
+    atom->check_mass(FLERR);
     double xcm[3],lmom[3];
     if (narg == 2) {
       double masstotal = group->mass(igroup);
@@ -3767,7 +3767,7 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
     else error->all(FLERR,"Invalid group function in variable formula");
 
   } else if (strcmp(word,"torque") == 0) {
-    atom->check_mass();
+    atom->check_mass(FLERR);
     double xcm[3],tq[3];
     if (narg == 2) {
       double masstotal = group->mass(igroup);
@@ -3785,7 +3785,7 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
     else error->all(FLERR,"Invalid group function in variable formula");
 
   } else if (strcmp(word,"inertia") == 0) {
-    atom->check_mass();
+    atom->check_mass(FLERR);
     double xcm[3],inertia[3][3];
     if (narg == 2) {
       double masstotal = group->mass(igroup);
@@ -3806,7 +3806,7 @@ int Variable::group_function(char *word, char *contents, Tree **tree,
     else error->all(FLERR,"Invalid group function in variable formula");
 
   } else if (strcmp(word,"omega") == 0) {
-    atom->check_mass();
+    atom->check_mass(FLERR);
     double xcm[3],angmom[3],inertia[3][3],omega[3];
     if (narg == 2) {
       double masstotal = group->mass(igroup);
diff --git a/src/velocity.cpp b/src/velocity.cpp
index 0e964a27bc47e6e3af708e094d51ec32af697200..82b6efbe1b8cadc2cb798feb301d7b2a3d9a146d 100644
--- a/src/velocity.cpp
+++ b/src/velocity.cpp
@@ -60,7 +60,7 @@ void Velocity::command(int narg, char **arg)
 
   // atom masses must all be set
 
-  atom->check_mass();
+  atom->check_mass(FLERR);
 
   // identify group
 
diff --git a/src/version.h b/src/version.h
index c6e869ccdedad1656b6dc5e20bba32742220b266..5715946c31b8ba212913ee9066984c79730bf080 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define LAMMPS_VERSION "27 Oct 2016"
+#define LAMMPS_VERSION "5 Nov 2016"
diff --git a/tools/pymol_asphere/src/cartesian.cpp b/tools/pymol_asphere/src/cartesian.cpp
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/cartesian.h b/tools/pymol_asphere/src/cartesian.h
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/colors.cpp b/tools/pymol_asphere/src/colors.cpp
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/colors.h b/tools/pymol_asphere/src/colors.h
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/commandline.cpp b/tools/pymol_asphere/src/commandline.cpp
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/commandline.h b/tools/pymol_asphere/src/commandline.h
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/error.cpp b/tools/pymol_asphere/src/error.cpp
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/error.h b/tools/pymol_asphere/src/error.h
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/glsurface.cpp b/tools/pymol_asphere/src/glsurface.cpp
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/glsurface.h b/tools/pymol_asphere/src/glsurface.h
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/m_constants.h b/tools/pymol_asphere/src/m_constants.h
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/misc.cpp b/tools/pymol_asphere/src/misc.cpp
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/misc.h b/tools/pymol_asphere/src/misc.h
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/miscm.cpp b/tools/pymol_asphere/src/miscm.cpp
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/miscm.h b/tools/pymol_asphere/src/miscm.h
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/spherical.cpp b/tools/pymol_asphere/src/spherical.cpp
old mode 100755
new mode 100644
diff --git a/tools/pymol_asphere/src/spherical.h b/tools/pymol_asphere/src/spherical.h
old mode 100755
new mode 100644
diff --git a/tools/xmovie/control.c b/tools/xmovie/control.c
old mode 100755
new mode 100644
diff --git a/tools/xmovie/dummy.c b/tools/xmovie/dummy.c
old mode 100755
new mode 100644
diff --git a/tools/xmovie/hpsort.c b/tools/xmovie/hpsort.c
old mode 100755
new mode 100644
diff --git a/tools/xmovie/read.c b/tools/xmovie/read.c
old mode 100755
new mode 100644
diff --git a/tools/xmovie/resource.h b/tools/xmovie/resource.h
old mode 100755
new mode 100644
diff --git a/tools/xmovie/scene.c b/tools/xmovie/scene.c
old mode 100755
new mode 100644
diff --git a/tools/xmovie/toascii.c b/tools/xmovie/toascii.c
old mode 100755
new mode 100644
diff --git a/tools/xmovie/tobinary.c b/tools/xmovie/tobinary.c
old mode 100755
new mode 100644
diff --git a/tools/xmovie/version.c b/tools/xmovie/version.c
old mode 100755
new mode 100644
diff --git a/tools/xmovie/xmovie.c b/tools/xmovie/xmovie.c
old mode 100755
new mode 100644
diff --git a/tools/xmovie/xmovie.h b/tools/xmovie/xmovie.h
old mode 100755
new mode 100644