From bf5fbc92dfb2178ef620bb03876817da43a2be4d Mon Sep 17 00:00:00 2001
From: Sergey Lishchuk <svl@debian>
Date: Fri, 13 Jul 2018 20:18:53 +0100
Subject: [PATCH] Updated documentation and source

---
 doc/src/JPG/pair_atm_dia.jpg     | Bin 0 -> 31541 bytes
 doc/src/angle_dipole.txt         |  17 ++--
 doc/src/fix_langevin_spin.txt    |   4 +-
 doc/src/fix_nve_spin.txt         |   2 +-
 doc/src/pair_atm.txt             | 131 +++++++++++++++++++++++-------
 doc/src/pair_spin_dmi.txt        |   2 +-
 doc/src/pair_spin_exchange.txt   |   2 +-
 doc/src/pair_spin_magelec.txt    |   2 +-
 doc/src/pair_spin_neel.txt       |   2 +-
 doc/src/run_style.txt            |  77 +++++++++++++-----
 doc/src/set.txt                  |  17 ++++
 examples/SPIN/README             |  20 +++++
 lib/gpu/Nvidia.makefile_multi    |  46 ++++++++++-
 src/MAKE/MACHINES/Makefile.theta | 133 +++++++++++++++++++++++++++++++
 src/MANYBODY/pair_atm.cpp        |  21 +++--
 src/MANYBODY/pair_atm.h          |  10 +--
 src/SPIN/atom_vec_spin.cpp       |  10 +--
 src/SPIN/compute_spin.cpp        |   4 +-
 src/SPIN/fix_langevin_spin.cpp   |   8 +-
 src/SPIN/fix_nve_spin.cpp        |  13 +--
 src/SPIN/fix_precession_spin.cpp |  10 +--
 src/SPIN/pair_spin.cpp           |   8 +-
 src/SPIN/pair_spin_dmi.cpp       |   8 +-
 src/SPIN/pair_spin_exchange.cpp  |   8 +-
 src/SPIN/pair_spin_magelec.cpp   |  14 ++--
 src/SPIN/pair_spin_neel.cpp      |   8 +-
 src/balance.cpp                  |   6 +-
 src/fix_balance.cpp              |  13 ++-
 src/fix_store.cpp                |   2 -
 src/reset_ids.cpp                |  16 +++-
 30 files changed, 480 insertions(+), 134 deletions(-)
 create mode 100644 doc/src/JPG/pair_atm_dia.jpg
 create mode 100644 examples/SPIN/README
 create mode 100644 src/MAKE/MACHINES/Makefile.theta

diff --git a/doc/src/JPG/pair_atm_dia.jpg b/doc/src/JPG/pair_atm_dia.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..fd8edc5e676ee9973dd4ca1aced98b641c4157c7
GIT binary patch
literal 31541
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

literal 0
HcmV?d00001

diff --git a/doc/src/angle_dipole.txt b/doc/src/angle_dipole.txt
index d91f260d51..34cc8c153c 100644
--- a/doc/src/angle_dipole.txt
+++ b/doc/src/angle_dipole.txt
@@ -96,16 +96,17 @@ USER-MISC package.  See the "Making LAMMPS"_Section_start.html#start_2_3
 section for more info on packages.
 
 NOTE: In the "Angles" section of the data file, the atom ID 'j'
-corresponding to the dipole to restrain must come before the atom ID
-of the reference atom 'i'. A third atom ID 'k' must also be provided,
-although 'k' is just a 'dummy' atom which can be any atom; it may be
-useful to choose a convention (e.g., 'k'='i') and adhere to it.  For
-example, if ID=1 for the dipolar atom to restrain, and ID=2 for the
-reference atom, the corresponding line in the "Angles" section of the
-data file would read: X X 1 2 2
+defining the direction of the dipole vector to restrain must come
+before the atom ID of the reference atom 'i'. A third atom ID 'k' must
+also be provided to comply with the requirement of a valid angle
+definition. This atom ID k should be chosen to be that of an atom
+bonded to atom 'i' to avoid errors with "lost angle atoms" when running
+in parallel. Since the LAMMPS code checks for valid angle definitions,
+cannot use the same atom ID of either 'i' or 'j' (this was allowed
+and recommended with older LAMMPS versions).
 
 The "newton" command for intramolecular interactions must be "on"
-(which is the default).
+(which is the default except when using some accelerator packages).
 
 This angle style should not be used with SHAKE.
 
diff --git a/doc/src/fix_langevin_spin.txt b/doc/src/fix_langevin_spin.txt
index 51f085ebdc..b089cd7f58 100644
--- a/doc/src/fix_langevin_spin.txt
+++ b/doc/src/fix_langevin_spin.txt
@@ -98,5 +98,5 @@ integration fix (e.g. {fix nve/spin}).
 [(Mayergoyz)] I.D. Mayergoyz, G. Bertotti, C. Serpico (2009). Elsevier (2009)
 
 :link(Tranchida2)
-[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson, 
-arXiv preprint arXiv:1801.10233, (2018).
+[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
+Journal of Computational Physics, (2018).
diff --git a/doc/src/fix_nve_spin.txt b/doc/src/fix_nve_spin.txt
index 6ccebcebf6..f4b38c270b 100644
--- a/doc/src/fix_nve_spin.txt
+++ b/doc/src/fix_nve_spin.txt
@@ -73,4 +73,4 @@ instead of "array" is also valid.
 
 :link(Tranchida1)
 [(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
-arXiv preprint arXiv:1801.10233, (2018).
+Journal of Computational Physics, (2018).
diff --git a/doc/src/pair_atm.txt b/doc/src/pair_atm.txt
index 48260c161a..01bbfa7a78 100644
--- a/doc/src/pair_atm.txt
+++ b/doc/src/pair_atm.txt
@@ -10,16 +10,21 @@ pair_style atm command :h3
 
 [Syntax:]
 
-pair_style atm args = cutoff :pre
+pair_style atm cutoff :pre
+
+cutoff = global cutoff for 3-body interactions (distance units) :ul
 
 [Examples:]
 
 pair_style 2.5
 pair_coeff * * * 0.072 :pre
 
-pair_style	hybrid/overlay lj/cut 6.5 atm 2.5
-pair_coeff	* * lj/cut 1.0 1.0
-pair_coeff	* * atm * 0.072 :pre
+pair_style hybrid/overlay lj/cut 6.5 atm 2.5
+pair_coeff * * lj/cut 1.0 1.0
+pair_coeff 1 1 atm 1 0.064
+pair_coeff 1 1 atm 2 0.080
+pair_coeff 1 2 atm 2 0.100
+pair_coeff 2 2 atm 2 0.125 :pre
 
 [Description:]
 
@@ -28,36 +33,104 @@ potential for the energy E of a system of atoms as
 
 :c,image(Eqs/pair_atm.jpg)
 
-where r12, r23 and r31 are the distances between the atoms,
-gamma1 is included by the sides r12 and r31
-with similar definitions for gamma2 and gamma3,
-nu is the three-body interaction strength (energy times distance^9 units).
+where nu is the three-body interaction strength,
+and the distances between pairs of atoms r12, r23 and r31
+and the angles gamma1, gamma2 and gamma3
+are shown at the diagram:
+
+:c,image(JPG/pair_atm_dia.jpg)
+
+There is no \"central\" atom, the interaction is symmetric with respect
+to permutation of atom types.
+
+The {atm} potential is typically used in combination with a two-body
+potential using the "pair_style hybrid/overlay"_pair_hybrid.html
+command as in the example above.
+
+The potential is calculated if all three atoms are in the
+"neighbor list"_neighbor.html
+and the distances between atoms satisfy r12 r23 r31 > cutoff^3.
+
+The following coefficients must be defined for each pair of atoms
+types via the "pair_coeff"_pair_coeff.html command as in the examples
+above, or in the restart files read by the
+"read_restart"_read_restart.html commands:
+
+K - the type of the third atom
+nu (energy/distance^9 units) :ul
+
+For a single-atom type simulation, only a single entry is required, eg
+
+pair_coeff 1 1 1 nu :pre
+
+where all three atoms are of type 1.
+For a two-atom type simulation, more pair_coeff commands can be used.
+ATM interaction is symmetric with respect to permutation of atoms,
+it is necessary to provide pair_coeff command for one permutation.
+For example, the command
+
+pair_coeff 1 1 2 nu :pre
 
-The {atm} is typically used in compination with some two-body potential
-using "hybrid/overlay"_pair_hybrid.html style as in an example above.
+also implies
 
-The calculations are not undertaken if the distances between atoms satisfy
-r12 r23 r31 > curoff^3. Virtual cutoff distance based on a user defined
-tolerance tol is not used.
+pair_coeff 1 2 1 nu
+pair_coeff 2 1 1 nu :pre
 
-The Axilrod-Teller-Muto potential file must contain entries for all the
-elements listed in the pair_coeff command.  It can also contain
-entries for additional elements not being used in a particular
-simulation; LAMMPS ignores those entries.
+Thus, to specify all ATM interactions between two atom types (eg 1 and 2)
+it is sufficient to provide four pair_coeff commands, eg:
 
-For a single-element simulation, only a single entry is required
-(e.g. 1 1 1).  For a two-element simulation, the file must contain 4
-entries (eg. 1 1 1, 1 1 2, 1 2 2, 2 2 2), that
-specify ATM parameters for all combinations of the two elements
-interacting in three-body configurations.  Thus for 3 elements, 10
-entries would be required, etc.
+pair_coeff 1 1 1 nu1
+pair_coeff 1 1 2 nu2
+pair_coeff 1 2 2 nu3
+pair_coeff 2 2 2 nu4 :pre
+
+For 3 atom types, 10 pair_coeff commands
+(eg 111, 112, 113, 122, 123, 133, 222, 223, 233, 333)
+will describe all possible ATM interactions, etc.
+It is not necessary to provide the pair_coeff commands for interactions
+of all combinations of atom types: if some combination is not defined then
+there is no ATM interaction for this combination and all its permutations.
+
+--------------------
+
+[Steve:]
+
+I think a better syntax for the pair coeff command might be this:
+
+pair_coeff I J v1 v2 ... vN
+
+when 1,2,...N are the number of atom types defined.
+Then there be one pair_coeff command for each type pair,
+the same syntax as all other potentials in LAMMPS use.
+
+[Sergey:]
+
+The reason for my original pair_coeff command syntax is that
+I would like to reserve further arguments for possible extension of
+ATM potential in LAMMPS to further terms in the multipole expansion of
+many-body dispersion interaction.
+For example, the next term would be dipole-dipole-quadrupole, it may be
+activated if the next argument of pair_coeff is present
+without breaking backward compatibility.
+
+Also, the command you propose
+(i) will not account that the value of nu for different permutations
+of atom types is the same, and
+(ii) will make the numbering of atom types messy since there is
+no requirement to supply the values of nu for all triplets.
+
+--------------------
 
 :line
 
-[Shift, table, tail correction, rRESPA info]:
+[Mixing, shift, table, tail correction, restart, rRESPA info]:
+
+This pair styles do not support the "pair_modify"_pair_modify.html
+mix, shift, table, and tail options.
 
-This pair style does not support the "pair_modify"_pair_modify.html
-shift, table, and tail options.
+This pair style writes its information to "binary restart
+files"_restart.html, so pair_style and pair_coeff commands do not need
+to be specified in an input script that reads a restart file.
 
 This pair style can only be used via the {pair} keyword of the
 "run_style respa"_run_style.html command.  It does not support the
@@ -68,8 +141,8 @@ 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.  See
-the "Making LAMMPS"_Section_start.html#start_3 section for more info.
+if LAMMPS was built with that package.  See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info.
 
 [Related commands:]
 
@@ -82,4 +155,4 @@ the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 :link(Axilrod)
 [(Axilrod)]
 Axilrod and Teller, J Chem Phys, 11, 299 (1943);
-Muto, Nippon Sugaku Butsuri Gakkwaishi 17, 629 (1943).
+Muto, Nippon Sugaku-Buturigakkwaishi 17, 629 (1943).
diff --git a/doc/src/pair_spin_dmi.txt b/doc/src/pair_spin_dmi.txt
index 9fe53df18a..24877906f3 100644
--- a/doc/src/pair_spin_dmi.txt
+++ b/doc/src/pair_spin_dmi.txt
@@ -63,4 +63,4 @@ See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 :link(Tranchida5)
 [(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
-arXiv preprint arXiv:1801.10233, (2018).
+Journal of Computational Physics, (2018).
diff --git a/doc/src/pair_spin_exchange.txt b/doc/src/pair_spin_exchange.txt
index 97b6d0b34f..ad3357cb5e 100644
--- a/doc/src/pair_spin_exchange.txt
+++ b/doc/src/pair_spin_exchange.txt
@@ -79,4 +79,4 @@ See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 :link(Tranchida3)
 [(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
-arXiv preprint arXiv:1801.10233, (2018).
+Journal of Computational Physics, (2018).
diff --git a/doc/src/pair_spin_magelec.txt b/doc/src/pair_spin_magelec.txt
index 0185a5abb2..8ba24c46af 100644
--- a/doc/src/pair_spin_magelec.txt
+++ b/doc/src/pair_spin_magelec.txt
@@ -70,4 +70,4 @@ See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 :link(Tranchida4)
 [(Tranchida)] Tranchida, Plimpton, Thibaudeau, and Thompson, 
-arXiv preprint arXiv:1801.10233, (2018).
+Journal of Computational Physics, (2018).
diff --git a/doc/src/pair_spin_neel.txt b/doc/src/pair_spin_neel.txt
index f7c9608a93..8551f8d636 100644
--- a/doc/src/pair_spin_neel.txt
+++ b/doc/src/pair_spin_neel.txt
@@ -78,4 +78,4 @@ See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 :link(Tranchida6)
 [(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
-arXiv preprint arXiv:1801.10233, (2018).
+Journal of Computational Physics, (2018).
diff --git a/doc/src/run_style.txt b/doc/src/run_style.txt
index ba836a07dd..7717ede86f 100644
--- a/doc/src/run_style.txt
+++ b/doc/src/run_style.txt
@@ -138,13 +138,19 @@ iterations of level 1 for a single iteration of level 2, N2 is the
 iterations of level 2 per iteration of level 3, etc.  N-1 looping
 parameters must be specified.
 
-The "timestep"_timestep.html command sets the timestep for the
-outermost rRESPA level.  Thus if the example command above for a
-4-level rRESPA had an outer timestep of 4.0 fmsec, the inner timestep
-would be 8x smaller or 0.5 fmsec.  All other LAMMPS commands that
-specify number of timesteps (e.g. "neigh_modify"_neigh_modify.html
-parameters, "dump"_dump.html every N timesteps, etc) refer to the
-outermost timesteps.
+Thus with a 4-level respa setting of "2 2 2" for the 3 loop factors,
+you could choose to have bond interactions computed 8x per large
+timestep, angle interactions computed 4x, pair interactions computed
+2x, and long-range interactions once per large timestep.
+
+The "timestep"_timestep.html command sets the large timestep for the
+outermost rRESPA level.  Thus if the 3 loop factors are "2 2 2" for
+4-level rRESPA, and the outer timestep is set to 4.0 fmsec, then the
+inner timestep would be 8x smaller or 0.5 fmsec.  All other LAMMPS
+commands that specify number of timesteps (e.g. "thermo"_thermo.html
+for thermo output every N steps, "neigh_modify
+delay/every"_neigh_modify.html parameters, "dump"_dump.html every N
+steps, etc) refer to the outermost timesteps.
 
 The rRESPA keywords enable you to specify at what level of the
 hierarchy various forces will be computed.  If not specified, the
@@ -167,11 +173,17 @@ have their force go ramped to 0.0 so the overlap with the next regime
 compute forces for all pairs from 5.0 outward, with those from 5.0 to
 6.0 having their value ramped in an inverse manner.
 
-Only some pair potentials support the use of the {inner} and {middle}
-and {outer} keywords.  If not, only the {pair} keyword can be used
-with that pair style, meaning all pairwise forces are computed at the
-same rRESPA level.  See the doc pages for individual pair styles for
-details.i
+Note that you can use {inner} and {outer} without using {middle} to
+split the pairwise computations into two portions instead of three.
+Unless you are using a very long pairwise cutoff, a 2-way split is
+often faster than a 3-way split, since it avoids too much duplicate
+computation of pairwise interactions near the intermediate cutoffs.
+
+Also note that only a few pair potentials support the use of the
+{inner} and {middle} and {outer} keywords.  If not, only the {pair}
+keyword can be used with that pair style, meaning all pairwise forces
+are computed at the same rRESPA level.  See the doc pages for
+individual pair styles for details.
 
 Another option for using pair potentials with rRESPA is with the
 {hybrid} keyword, which requires the use of the "pair_style hybrid or
@@ -238,12 +250,24 @@ roughly a 1.5 fold speedup over the {verlet} style with SHAKE and a
 
 For non-biomolecular simulations, the {respa} style can be
 advantageous if there is a clear separation of time scales - fast and
-slow modes in the simulation.  Even a LJ system can benefit from
-rRESPA if the interactions are divided by the inner, middle and outer
-keywords.  A 2-fold or more speedup can be obtained while maintaining
-good energy conservation.  In real units, for a pure LJ fluid at
-liquid density, with a sigma of 3.0 angstroms, and epsilon of 0.1
-Kcal/mol, the following settings seem to work well:
+slow modes in the simulation.  For example, a system of slowly-moving
+charged polymer chains could be setup as follows:
+
+timestep 4.0
+run_style respa 2 8 :pre
+
+This is two-level rRESPA with an 8x difference between the short and
+long timesteps.  The bonds, angles, dihedrals will be computed every
+0.5 fs (assuming real units), while the pair and kspace interactions
+will be computed once every 4 fs.  These are the default settings for
+each kind of interaction, so no additional keywords are necessary.
+
+Even a LJ system can benefit from rRESPA if the interactions are
+divided by the inner, middle and outer keywords.  A 2-fold or more
+speedup can be obtained while maintaining good energy conservation.
+In real units, for a pure LJ fluid at liquid density, with a sigma of
+3.0 angstroms, and epsilon of 0.1 Kcal/mol, the following settings
+seem to work well:
 
 timestep  36.0
 run_style respa 3 3 4 inner 1 3.0 4.0 middle 2 6.0 7.0 outer 3 :pre
@@ -271,9 +295,9 @@ more instructions on how to use the accelerated styles effectively.
 [Restrictions:]
 
 The {verlet/split} style can only be used if LAMMPS was built with the
-REPLICA package. Correspondingly the {respa/omp} style is available only
-if the USER-OMP package was included. See the "Making LAMMPS"_Section_start.html#start_3
-section for more info on packages.
+REPLICA package. Correspondingly the {respa/omp} style is available
+only if the USER-OMP package was included. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info on packages.
 
 Whenever using rRESPA, the user should experiment with trade-offs in
 speed and accuracy for their system, and verify that they are
@@ -287,6 +311,17 @@ conserving energy to adequate precision.
 
 run_style verlet :pre
 
+For run_style respa, the default assignment of interactions
+to rRESPA levels is as follows:
+
+bond forces = level 1 (innermost loop)
+angle forces = same level as bond forces
+dihedral forces = same level as angle forces
+improper forces = same level as dihedral forces
+pair forces = leven N (outermost level)
+kspace forces = same level as pair forces
+inner, middle, outer forces = no default :ul
+
 :line
 
 :link(Tuckerman3)
diff --git a/doc/src/set.txt b/doc/src/set.txt
index 4757d1c575..d05660dc42 100644
--- a/doc/src/set.txt
+++ b/doc/src/set.txt
@@ -17,6 +17,7 @@ ID = atom ID range or type range or mol ID range or group ID or region ID :l
 one or more keyword/value pairs may be appended :l
 keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \
           {charge} or {dipole} or {dipole/random} or {quat} or \
+          {spin} or {spin/random} or {quat} or \
           {quat/random} or {diameter} or {shape} or \
           {length} or {tri} or {theta} or {theta/random} or \
           {angmom} or {omega} or \
@@ -43,6 +44,13 @@ keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \
   {dipole/random} value = seed Dlen
     seed = random # seed (positive integer) for dipole moment orientations
     Dlen = magnitude of dipole moment (dipole units)
+  {spin} values = g x y z
+    g = magnitude of magnetic spin vector (in Bohr magneton's unit)
+    x,y,z = orientation of magnetic spin vector
+    any of x,y,z can be an atom-style variable (see below)
+  {spin/random} value = seed Dlen
+    seed = random # seed (positive integer) for magnetic spin orientations
+    Dlen = magnitude of magnetic spin vector (in Bohr magneton's unit)
   {quat} values = a b c theta
     a,b,c = unit vector to rotate particle around via right-hand rule
     theta = rotation angle (degrees)
@@ -232,6 +240,15 @@ the orientation of a particular atom is the same, regardless of how
 many processors are being used.  This keyword does not allow use of an
 atom-style variable.
 
+Keyword {spin} uses the specified g value to set the magnitude of the
+magnetic spin vectors, and the x,y,z values as components of a vector 
+to set as the orientation of the magnetic spin vectors of the selected 
+atoms.  
+
+Keyword {spin/random} randomizes the orientation of the magnetic spin
+vectors for the selected atoms and sets the magnitude of each to the 
+specified {Dlen} value.  
+
 Keyword {quat} uses the specified values to create a quaternion
 (4-vector) that represents the orientation of the selected atoms.  The
 particles must define a quaternion for their orientation
diff --git a/examples/SPIN/README b/examples/SPIN/README
new file mode 100644
index 0000000000..5ad252e7f2
--- /dev/null
+++ b/examples/SPIN/README
@@ -0,0 +1,20 @@
+This directory contains examples and applications of the SPIN package
+=====================================================================
+
+- the iron, cobalt_hcp, cobalt_fcc and nickel directories provide 
+examples of spin-lattice calculations.
+
+- the bfo repository provides an example of spin dynamics calculation
+performed on a fixed lattice, and applied to the multiferroic 
+material bismuth-oxide. 
+
+- the read_restart directory provides examples allowing to write or 
+read data files, and restart magneto-mechanical simulations.  
+
+- vizualization of the dump files can be achieved using Ovito or 
+VMD. See the vmd repository for help vizualizing results with VMD. 
+
+** Note, the aim of this repository is mainly to provide users with
+examples. Better values and tuning of the magnetic and mechanical 
+interactions can be achieved for more accurate materials 
+simulations. **
diff --git a/lib/gpu/Nvidia.makefile_multi b/lib/gpu/Nvidia.makefile_multi
index 5fb35cce3c..94cfd4af6b 100644
--- a/lib/gpu/Nvidia.makefile_multi
+++ b/lib/gpu/Nvidia.makefile_multi
@@ -79,7 +79,10 @@ OBJS = $(OBJ_DIR)/lal_atom.o $(OBJ_DIR)/lal_ans.o \
        $(OBJ_DIR)/lal_lj_cubic.o $(OBJ_DIR)/lal_lj_cubic_ext.o \
        $(OBJ_DIR)/lal_ufm.o $(OBJ_DIR)/lal_ufm_ext.o \
        $(OBJ_DIR)/lal_dipole_long_lj.o $(OBJ_DIR)/lal_dipole_long_lj_ext.o \
-       $(OBJ_DIR)/lal_lj_expand_coul_long.o $(OBJ_DIR)/lal_lj_expand_coul_long_ext.o
+       $(OBJ_DIR)/lal_lj_expand_coul_long.o $(OBJ_DIR)/lal_lj_expand_coul_long_ext.o \
+       $(OBJ_DIR)/lal_coul_long_cs.o $(OBJ_DIR)/lal_coul_long_cs_ext.o \
+       $(OBJ_DIR)/lal_born_coul_long_cs.o $(OBJ_DIR)/lal_born_coul_long_cs_ext.o \
+       $(OBJ_DIR)/lal_born_coul_wolf_cs.o $(OBJ_DIR)/lal_born_coul_wolf_cs_ext.o
 
 CBNS = $(OBJ_DIR)/device.cubin $(OBJ_DIR)/device_cubin.h \
        $(OBJ_DIR)/atom.cubin $(OBJ_DIR)/atom_cubin.h \
@@ -137,7 +140,10 @@ CBNS = $(OBJ_DIR)/device.cubin $(OBJ_DIR)/device_cubin.h \
        $(OBJ_DIR)/lj_cubic.cubin $(OBJ_DIR)/lj_cubic_cubin.h \
        $(OBJ_DIR)/ufm.cubin $(OBJ_DIR)/ufm_cubin.h \
        $(OBJ_DIR)/dipole_long_lj.cubin $(OBJ_DIR)/dipole_long_lj_cubin.h \
-       $(OBJ_DIR)/lj_expand_coul_long.cubin $(OBJ_DIR)/lj_expand_coul_long_cubin.h
+       $(OBJ_DIR)/lj_expand_coul_long.cubin $(OBJ_DIR)/lj_expand_coul_long_cubin.h \
+       $(OBJ_DIR)/coul_long_cs.cubin $(OBJ_DIR)/coul_long_cs_cubin.h \
+       $(OBJ_DIR)/born_coul_long_cs.cubin $(OBJ_DIR)/born_coul_long_cs_cubin.h \
+       $(OBJ_DIR)/born_coul_wolf_cs.cubin $(OBJ_DIR)/born_coul_wolf_cs_cubin.h
 
 all: $(OBJ_DIR) $(GPU_LIB) $(EXECS)
 
@@ -837,6 +843,42 @@ $(OBJ_DIR)/lal_lj_expand_coul_long.o: $(ALL_H) lal_lj_expand_coul_long.h lal_lj_
 $(OBJ_DIR)/lal_lj_expand_coul_long_ext.o: $(ALL_H) lal_lj_expand_coul_long.h lal_lj_expand_coul_long_ext.cpp lal_base_charge.h
 	$(CUDR) -o $@ -c lal_lj_expand_coul_long_ext.cpp -I$(OBJ_DIR)
 
+$(OBJ_DIR)/coul_long_cs.cubin: lal_coul_long_cs.cu lal_precision.h lal_preprocessor.h
+	$(CUDA) --fatbin -DNV_KERNEL -o $@ lal_coul_long_cs.cu
+
+$(OBJ_DIR)/coul_long_cs_cubin.h: $(OBJ_DIR)/coul_long_cs.cubin $(OBJ_DIR)/coul_long_cs.cubin
+	$(BIN2C) -c -n coul_long_cs $(OBJ_DIR)/coul_long_cs.cubin > $(OBJ_DIR)/coul_long_cs_cubin.h
+
+$(OBJ_DIR)/lal_coul_long_cs.o: $(ALL_H) lal_coul_long_cs.h lal_coul_long_cs.cpp $(OBJ_DIR)/coul_long_cs_cubin.h $(OBJ_DIR)/lal_base_charge.o $(OBJ_DIR)/lal_coul_long.o
+	$(CUDR) -o $@ -c lal_coul_long_cs.cpp -I$(OBJ_DIR)
+
+$(OBJ_DIR)/lal_coul_long_cs_ext.o: $(ALL_H) lal_coul_long_cs.h lal_coul_long_cs_ext.cpp lal_coul_long.h
+	$(CUDR) -o $@ -c lal_coul_long_cs_ext.cpp -I$(OBJ_DIR)
+
+$(OBJ_DIR)/born_coul_long_cs.cubin: lal_born_coul_long_cs.cu lal_precision.h lal_preprocessor.h
+	$(CUDA) --fatbin -DNV_KERNEL -o $@ lal_born_coul_long_cs.cu
+
+$(OBJ_DIR)/born_coul_long_cs_cubin.h: $(OBJ_DIR)/born_coul_long_cs.cubin $(OBJ_DIR)/born_coul_long_cs.cubin
+	$(BIN2C) -c -n born_coul_long_cs $(OBJ_DIR)/born_coul_long_cs.cubin > $(OBJ_DIR)/born_coul_long_cs_cubin.h
+
+$(OBJ_DIR)/lal_born_coul_long_cs.o: $(ALL_H) lal_born_coul_long_cs.h lal_born_coul_long_cs.cpp $(OBJ_DIR)/born_coul_long_cs_cubin.h $(OBJ_DIR)/lal_base_charge.o $(OBJ_DIR)/lal_born_coul_long.o
+	$(CUDR) -o $@ -c lal_born_coul_long_cs.cpp -I$(OBJ_DIR)
+
+$(OBJ_DIR)/lal_born_coul_long_cs_ext.o: $(ALL_H) lal_born_coul_long_cs.h lal_born_coul_long_cs_ext.cpp lal_born_coul_long.h
+	$(CUDR) -o $@ -c lal_born_coul_long_cs_ext.cpp -I$(OBJ_DIR)
+
+$(OBJ_DIR)/born_coul_wolf_cs.cubin: lal_born_coul_wolf_cs.cu lal_precision.h lal_preprocessor.h
+	$(CUDA) --fatbin -DNV_KERNEL -o $@ lal_born_coul_wolf_cs.cu
+
+$(OBJ_DIR)/born_coul_wolf_cs_cubin.h: $(OBJ_DIR)/born_coul_wolf_cs.cubin $(OBJ_DIR)/born_coul_wolf_cs.cubin
+	$(BIN2C) -c -n born_coul_wolf_cs $(OBJ_DIR)/born_coul_wolf_cs.cubin > $(OBJ_DIR)/born_coul_wolf_cs_cubin.h
+
+$(OBJ_DIR)/lal_born_coul_wolf_cs.o: $(ALL_H) lal_born_coul_wolf_cs.h lal_born_coul_wolf_cs.cpp $(OBJ_DIR)/born_coul_wolf_cs_cubin.h $(OBJ_DIR)/lal_base_charge.o $(OBJ_DIR)/lal_born_coul_wolf.o
+	$(CUDR) -o $@ -c lal_born_coul_wolf_cs.cpp -I$(OBJ_DIR)
+
+$(OBJ_DIR)/lal_born_coul_wolf_cs_ext.o: $(ALL_H) lal_born_coul_wolf_cs.h lal_born_coul_wolf_cs_ext.cpp lal_born_coul_wolf.h
+	$(CUDR) -o $@ -c lal_born_coul_wolf_cs_ext.cpp -I$(OBJ_DIR)
+
 $(BIN_DIR)/nvc_get_devices: ./geryon/ucl_get_devices.cpp $(NVD_H)
 	$(CUDR) -o $@ ./geryon/ucl_get_devices.cpp -DUCL_CUDADR $(CUDA_LIB) -lcuda 
 
diff --git a/src/MAKE/MACHINES/Makefile.theta b/src/MAKE/MACHINES/Makefile.theta
new file mode 100644
index 0000000000..cad5a03b42
--- /dev/null
+++ b/src/MAKE/MACHINES/Makefile.theta
@@ -0,0 +1,133 @@
+# knl = Flags for Knights Landing Xeon Phi Processor,Intel Compiler/MPI,MKL FFT
+# module load perftools-base perftools
+# make theta -j 8
+# pat_build -g mpi -u ./lmp_theta
+
+SHELL = /bin/sh
+
+# ---------------------------------------------------------------------
+# compiler/linker settings
+# specify flags and libraries needed for your compiler
+
+CC =        CC -mkl
+#OPTFLAGS =       -O0
+OPTFLAGS =      -xMIC-AVX512 -O3 -fp-model fast=2 -no-prec-div -qoverride-limits
+CCFLAGS =   -g -qopenmp -DLAMMPS_MEMALIGN=64 -qno-offload \
+                -fno-alias -ansi-alias -restrict $(OPTFLAGS)
+#CCFLAGS +=      -DLMP_INTEL_NO_TBB
+#CCFLAGS +=      -DLAMMPS_BIGBIG
+#CCFLAGS +=      -D_USE_PAPI
+#CCFLAGS +=      -D_USE_CRAYPAT_API
+SHFLAGS =   -fPIC
+DEPFLAGS =  -M
+
+LINK =      $(CC)
+LINKFLAGS = -g -qopenmp $(OPTFLAGS)
+LINKFLAGS += -dynamic
+LIB =
+#LIB +=           -L${TBBROOT}/lib/intel64/gcc4.7 -ltbbmalloc
+LIB +=           -ltbbmalloc
+#LIB +=          /soft/debuggers/forge-7.0-2017-02-16/lib/64/libdmallocthcxx.a -zmuldefs
+SIZE =      size
+
+ARCHIVE =   ar
+ARFLAGS =   -rc
+SHLIBFLAGS =    -shared
+
+# ---------------------------------------------------------------------
+# LAMMPS-specific settings, all OPTIONAL
+# specify settings for LAMMPS features you will use
+# if you change any -D setting, do full re-compile after "make clean"
+
+# LAMMPS ifdef settings
+# see possible settings in Section 2.2 (step 4) of manual
+
+LMP_INC =   -DLAMMPS_GZIP #-DLAMMPS_JPEG
+
+# MPI library
+# see discussion in Section 2.2 (step 5) of manual
+# MPI wrapper compiler/linker can provide this info
+# can point to dummy MPI library in src/STUBS as in Makefile.serial
+# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts
+# INC = path for mpi.h, MPI compiler settings
+# PATH = path for MPI library
+# LIB = name of MPI library
+
+MPI_INC =       -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1
+MPI_PATH =
+MPI_LIB =
+
+# FFT library
+# see discussion in Section 2.2 (step 6) of manaul
+# can be left blank to use provided KISS FFT library
+# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings
+# PATH = path for FFT library
+# LIB = name of FFT library
+
+FFT_INC =       -DFFT_MKL -DFFT_SINGLE
+FFT_PATH =
+FFT_LIB =       -L$(MKLROOT)/lib/intel64/ -Wl,--start-group -lmkl_intel_ilp64 \
+                -lmkl_intel_thread -lmkl_core -Wl,--end-group
+
+# JPEG and/or PNG library
+# see discussion in Section 2.2 (step 7) of manual
+# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC
+# INC = path(s) for jpeglib.h and/or png.h
+# PATH = path(s) for JPEG library and/or PNG library
+# LIB = name(s) of JPEG library and/or PNG library
+
+JPG_INC =
+JPG_PATH =
+JPG_LIB =
+
+# ---------------------------------------------------------------------
+# build rules and dependencies
+# do not edit this section
+
+include Makefile.package.settings
+include Makefile.package
+
+EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC)
+EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH)
+EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB)
+
+# Path to src files
+
+vpath %.cpp ..
+vpath %.h ..
+
+# Link target
+
+$(EXE): $(OBJ)
+    $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE)
+    $(SIZE) $(EXE)
+
+# Library targets
+
+lib:    $(OBJ)
+    $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ)
+
+shlib:  $(OBJ)
+    $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \
+        $(OBJ) $(EXTRA_LIB) $(LIB)
+
+# Compilation rules
+
+%.o:%.cpp
+    $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $<
+
+%.d:%.cpp
+    $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@
+
+%.o:%.cu
+    $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $<
+
+# Individual dependencies
+
+depend : fastdep.exe $(SRC)
+    @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1
+
+fastdep.exe: ../DEPEND/fastdep.c
+    icc -O -o $@ $<
+
+sinclude .depend
diff --git a/src/MANYBODY/pair_atm.cpp b/src/MANYBODY/pair_atm.cpp
index 0286c3ed1e..0db076acd0 100644
--- a/src/MANYBODY/pair_atm.cpp
+++ b/src/MANYBODY/pair_atm.cpp
@@ -49,8 +49,8 @@ PairATM::PairATM(LAMMPS *lmp) : Pair(lmp)
   if (lmp->citeme) lmp->citeme->add(cite_atm_package);
 
   single_enable = 0;
-  restartinfo = 0;
-  one_coeff = 1;
+  restartinfo = 1;
+  one_coeff = 0;
   manybody_flag = 1;
 }
 
@@ -78,6 +78,7 @@ void PairATM::compute(int eflag, int vflag)
   double xi,yi,zi,evdwl;
   double rij2,rik2,rjk2,r6;
   double rij[3],rik[3],rjk[3],fj[3],fk[3];
+  double nu_local;
   int *ilist,*jlist,*numneigh,**firstneigh;
 
   evdwl = 0.0;
@@ -128,8 +129,10 @@ void PairATM::compute(int eflag, int vflag)
         r6 = rij2*rik2*rjk2;
         if (r6 > cut_sixth) continue;
 
-        interaction_ddd(nu[type[i]][type[j]][type[k]],
-                  r6,rij2,rik2,rjk2,rij,rik,rjk,fj,fk,eflag,evdwl);
+        nu_local = nu[type[i]][type[j]][type[k]];
+        if (nu_local == 0.0) continue;
+        interaction_ddd(nu_local,
+                        r6,rij2,rik2,rjk2,rij,rik,rjk,fj,fk,eflag,evdwl);
 
         f[i][0] -= fj[0] + fk[0];
         f[i][1] -= fj[1] + fk[1];
@@ -169,6 +172,12 @@ void PairATM::coeff(int narg, char **arg)
     error->all(FLERR,"Incorrect args for pair coefficients");
   if (!allocated) allocate();
 
+  int n = atom->ntypes;
+  for (int i = 0; i <= n; i++)
+    for (int j = 0; j <= n; j++)
+      for (int k = 0; k <= n; k++)
+        nu[i][j][k] = 0.0;
+
   int ilo,ihi,jlo,jhi,klo,khi;
   force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
   force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
@@ -229,7 +238,9 @@ void PairATM::write_restart(FILE *fp)
   for (i = 1; i <= atom->ntypes; i++) {
     for (j = i; j <= atom->ntypes; j++) {
       fwrite(&setflag[i][j],sizeof(int),1,fp);
-      if (setflag[i][j]) for (k = i; k <= atom->ntypes; k++) fwrite(&nu[i][j][k],sizeof(double),1,fp);
+      if (setflag[i][j]) 
+        for (k = i; k <= atom->ntypes; k++) 
+          fwrite(&nu[i][j][k],sizeof(double),1,fp);
     }
   }
 }
diff --git a/src/MANYBODY/pair_atm.h b/src/MANYBODY/pair_atm.h
index b5bfc64010..45a6cda344 100644
--- a/src/MANYBODY/pair_atm.h
+++ b/src/MANYBODY/pair_atm.h
@@ -11,10 +11,6 @@
    See the README file in the top-level LAMMPS directory.
 ------------------------------------------------------------------------- */
 
-/* ----------------------------------------------------------------------
-   Contributing author: Sergey Lishchuk
-------------------------------------------------------------------------- */
-
 #ifdef PAIR_CLASS
 
 PairStyle(atm,PairATM)
@@ -46,9 +42,9 @@ class PairATM : public Pair {
   double cut_global, cut_sixth;
   double ***nu;
 
- protected:
-  virtual void allocate();
-  void interaction_ddd(double, double, double, double, double, double *, double *, double *, double *, double *, int, double &);
+  void allocate();
+  void interaction_ddd(double, double, double, double, double, double *, 
+                       double *, double *, double *, double *, int, double &);
 };
 
 }
diff --git a/src/SPIN/atom_vec_spin.cpp b/src/SPIN/atom_vec_spin.cpp
index 4871fe0c40..8b47eff624 100644
--- a/src/SPIN/atom_vec_spin.cpp
+++ b/src/SPIN/atom_vec_spin.cpp
@@ -20,12 +20,12 @@
    Please cite the related publication:
    Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
    Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
 #include "atom.h"
 #include "atom_vec_spin.h"
 #include "comm.h"
@@ -54,7 +54,7 @@ AtomVecSpin::AtomVecSpin(LAMMPS *lmp) : AtomVec(lmp)
   size_data_atom = 9;
   size_data_vel = 4;
   xcol_data = 4;
-  
+
   atom->sp_flag = 1;
 }
 
diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp
index 54818a9b70..b67f62d53d 100644
--- a/src/SPIN/compute_spin.cpp
+++ b/src/SPIN/compute_spin.cpp
@@ -18,11 +18,11 @@
    Please cite the related publication:
    Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
    Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
 #include <mpi.h>
-#include <string.h>
+#include <cstring>
 #include "atom.h"
 #include "compute_spin.h"
 #include "domain.h"
diff --git a/src/SPIN/fix_langevin_spin.cpp b/src/SPIN/fix_langevin_spin.cpp
index 97b33197ce..cb34465482 100644
--- a/src/SPIN/fix_langevin_spin.cpp
+++ b/src/SPIN/fix_langevin_spin.cpp
@@ -18,13 +18,13 @@
    Please cite the related publication:
    Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
    Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
 #include <mpi.h>
-#include <math.h>
-#include <string.h>
-#include <stdlib.h>
+#include <cmath>
+#include <cstring>
+#include <cstdlib>
 
 #include "atom.h"
 #include "atom_vec_ellipsoid.h"
diff --git a/src/SPIN/fix_nve_spin.cpp b/src/SPIN/fix_nve_spin.cpp
index d91636af58..b75f03212a 100644
--- a/src/SPIN/fix_nve_spin.cpp
+++ b/src/SPIN/fix_nve_spin.cpp
@@ -18,12 +18,12 @@
    Please cite the related publication:
    Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
    Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdio.h>
-#include <string.h>
+#include <cmath>
+#include <cstdio>
+#include <cstring>
 
 #include "atom.h"
 #include "atom_vec.h"
@@ -59,8 +59,9 @@ static const char cite_fix_nve_spin[] =
   "title={Massively parallel symplectic algorithm for coupled magnetic spin "
   "dynamics and molecular dynamics},\n"
   "author={Tranchida, J and Plimpton, SJ and Thibaudeau, P and Thompson, AP},\n"
-  "journal={arXiv preprint arXiv:1801.10233},\n"
-  "year={2018}\n"
+  "journal={Journal of Computational Physics},\n"
+  "year={2018},\n"
+  "publisher={Elsevier}\n"
   "}\n\n";
 
 enum{NONE};
diff --git a/src/SPIN/fix_precession_spin.cpp b/src/SPIN/fix_precession_spin.cpp
index eedf0becb7..b908478952 100644
--- a/src/SPIN/fix_precession_spin.cpp
+++ b/src/SPIN/fix_precession_spin.cpp
@@ -18,13 +18,13 @@
    Please cite the related publication:
    Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
    Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 
 #include "atom.h"
 #include "domain.h"
diff --git a/src/SPIN/pair_spin.cpp b/src/SPIN/pair_spin.cpp
index acb7ffe548..398206b26e 100644
--- a/src/SPIN/pair_spin.cpp
+++ b/src/SPIN/pair_spin.cpp
@@ -18,12 +18,12 @@
    Please cite the related publication:
    Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
    Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
 
 #include "atom.h"
 #include "comm.h"
diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp
index 07ae684939..b792969c5d 100644
--- a/src/SPIN/pair_spin_dmi.cpp
+++ b/src/SPIN/pair_spin_dmi.cpp
@@ -18,12 +18,12 @@
    Please cite the related publication:
    Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
    Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
 
 #include "atom.h"
 #include "comm.h"
diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp
index 7b05d7337e..1b7b36b6db 100644
--- a/src/SPIN/pair_spin_exchange.cpp
+++ b/src/SPIN/pair_spin_exchange.cpp
@@ -18,12 +18,12 @@
    Please cite the related publication:
    Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
    Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
 
 #include "atom.h"
 #include "comm.h"
diff --git a/src/SPIN/pair_spin_magelec.cpp b/src/SPIN/pair_spin_magelec.cpp
index e9e7c1fb3f..315b691d17 100644
--- a/src/SPIN/pair_spin_magelec.cpp
+++ b/src/SPIN/pair_spin_magelec.cpp
@@ -18,12 +18,12 @@
    Please cite the related publication:
    Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
    Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
 
 #include "atom.h"
 #include "comm.h"
@@ -436,9 +436,9 @@ void PairSpinMagelec::compute_magelec_mech(int i, int j, double fi[3], double sp
   meiy *= ME_mech[itype][jtype];
   meiz *= ME_mech[itype][jtype];
 
-  fi[0] = meiy*vz - meiz*vy;
-  fi[1] = meiz*vx - meix*vz;
-  fi[2] = meix*vy - meiy*vx;
+  fi[0] += meiy*vz - meiz*vy;
+  fi[1] += meiz*vx - meix*vz;
+  fi[2] += meix*vy - meiy*vx;
 
 }
 
diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp
index d74db638bd..0daafad756 100644
--- a/src/SPIN/pair_spin_neel.cpp
+++ b/src/SPIN/pair_spin_neel.cpp
@@ -18,12 +18,12 @@
    Please cite the related publication:
    Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018).
    Massively parallel symplectic algorithm for coupled magnetic spin dynamics
-   and molecular dynamics. arXiv preprint arXiv:1801.10233.
+   and molecular dynamics. Journal of Computational Physics.
 ------------------------------------------------------------------------- */
 
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cmath>
+#include <cstdlib>
+#include <cstring>
 
 #include "atom.h"
 #include "comm.h"
diff --git a/src/balance.cpp b/src/balance.cpp
index 86deb55b47..7dd13e8766 100644
--- a/src/balance.cpp
+++ b/src/balance.cpp
@@ -350,13 +350,13 @@ void Balance::command(int narg, char **arg)
   domain->set_local_box();
 
   // move particles to new processors via irregular()
+  // set disable = 0, so weights migrate with atoms for imbfinal calculation
 
   if (domain->triclinic) domain->x2lamda(atom->nlocal);
   Irregular *irregular = new Irregular(lmp);
   if (wtflag) fixstore->disable = 0;
   if (style == BISECTION) irregular->migrate_atoms(1,1,rcb->sendproc);
   else irregular->migrate_atoms(1);
-  if (wtflag) fixstore->disable = 1;
   delete irregular;
   if (domain->triclinic) domain->lamda2x(atom->nlocal);
 
@@ -377,9 +377,11 @@ void Balance::command(int narg, char **arg)
   }
 
   // imbfinal = final imbalance
+  // set disable = 1, so weights no longer migrate with atoms
 
   double maxfinal;
   double imbfinal = imbalance_factor(maxfinal);
+  if (wtflag) fixstore->disable = 1;
 
   // stats output
 
@@ -540,6 +542,8 @@ void Balance::weight_storage(char *prefix)
     fixstore = (FixStore *) modify->fix[modify->nfix-1];
   } else fixstore = (FixStore *) modify->fix[ifix];
 
+  // do not carry weights with atoms during normal atom migration
+
   fixstore->disable = 1;
 
   if (prefix) delete [] fixargs[0];
diff --git a/src/fix_balance.cpp b/src/fix_balance.cpp
index b2f545c73f..e748e0ae31 100644
--- a/src/fix_balance.cpp
+++ b/src/fix_balance.cpp
@@ -114,6 +114,7 @@ FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) :
 
   if (nevery) force_reneighbor = 1;
   lastbalance = -1;
+  next_reneighbor = -1;
 
   // compute initial outputs
 
@@ -248,6 +249,10 @@ void FixBalance::pre_neighbor()
   if (!pending) return;
   imbfinal = balance->imbalance_factor(maxloadperproc);
   pending = 0;
+
+  // set disable = 1, so weights no longer migrate with atoms
+
+  if (wtflag) balance->fixstore->disable = 1;
 }
 
 /* ----------------------------------------------------------------------
@@ -275,21 +280,23 @@ void FixBalance::rebalance()
 
   // reset proc sub-domains
   // check and warn if any proc's subbox is smaller than neigh skin
-  //   since may lead to lost atoms in exchange()
+  //   since may lead to lost atoms in comm->exchange()
 
   if (domain->triclinic) domain->set_lamda_box();
   domain->set_local_box();
   domain->subbox_too_small_check(neighbor->skin);
 
   // move atoms to new processors via irregular()
-  // only needed if migrate_check() says an atom moves to far
+  // for non-RCB only needed if migrate_check() says an atom moves too far
   // else allow caller's comm->exchange() to do it
+  // set disable = 0, so weights migrate with atoms
+  //   important to delay disable = 1 until after pre_neighbor imbfinal calc
+  //   b/c atoms may migrate again in comm->exchange()
 
   if (domain->triclinic) domain->x2lamda(atom->nlocal);
   if (wtflag) balance->fixstore->disable = 0;
   if (lbstyle == BISECTION) irregular->migrate_atoms(0,1,sendproc);
   else if (irregular->migrate_check()) irregular->migrate_atoms();
-  if (wtflag) balance->fixstore->disable = 1;
   if (domain->triclinic) domain->lamda2x(atom->nlocal);
 
   // invoke KSpace setup_grid() to adjust to new proc sub-domains
diff --git a/src/fix_store.cpp b/src/fix_store.cpp
index 3b1f3dca77..350e120972 100644
--- a/src/fix_store.cpp
+++ b/src/fix_store.cpp
@@ -154,8 +154,6 @@ void FixStore::reset_global(int nrow_caller, int ncol_caller)
   if (vecflag) memory->create(vstore,nrow,"fix/store:vstore");
   else memory->create(astore,nrow,ncol,"fix/store:astore");
   memory->create(rbuf,nrow*ncol+2,"fix/store:rbuf");
-
- // printf("AAA HOW GET HERE\n");
 }
 
 /* ----------------------------------------------------------------------
diff --git a/src/reset_ids.cpp b/src/reset_ids.cpp
index 8a33cd535b..fd898bd3ab 100644
--- a/src/reset_ids.cpp
+++ b/src/reset_ids.cpp
@@ -16,6 +16,7 @@
 #include "atom_vec.h"
 #include "domain.h"
 #include "comm.h"
+#include "special.h"
 #include "memory.h"
 #include "error.h"
 
@@ -44,7 +45,7 @@ void ResetIDs::command(int narg, char **arg)
   }
 
   // create an atom map if one doesn't exist already
-  
+
   int mapflag = 0;
   if (atom->map_style == 0) {
     mapflag = 1;
@@ -93,7 +94,7 @@ void ResetIDs::command(int narg, char **arg)
   // forward_comm_array acquires new IDs for ghost atoms
 
   double **newIDs;
-  memory->create(newIDs,nall,1,"reset_ids:newIDs");  
+  memory->create(newIDs,nall,1,"reset_ids:newIDs");
 
   for (int i = 0; i < nlocal; i++) {
     newIDs[i][0] = tag[i];
@@ -105,7 +106,7 @@ void ResetIDs::command(int narg, char **arg)
   // loop over bonds, angles, etc and reset IDs in stored topology arrays
   // only necessary for molecular = 1, not molecular = 2
   // badcount = atom IDs that could not be found
-  
+
   int badcount = 0;
 
   if (atom->molecular == 1) {
@@ -232,8 +233,15 @@ void ResetIDs::command(int narg, char **arg)
   atom->map_init();
   atom->map_set();
 
+  // need to update exclusions with new atom IDs
+
+  if (atom->molecular == 1) {
+    Special special(lmp);
+    special.build();
+  }
+
   // delete temporary atom map
-  
+
   if (mapflag) {
     atom->map_delete();
     atom->map_style = 0;
-- 
GitLab