From 28993d98237b2b10b5f894de1557b4a24b2744c8 Mon Sep 17 00:00:00 2001
From: julient31 <julien.tranchida1@gmail.com>
Date: Thu, 26 Jul 2018 08:36:30 -0600
Subject: [PATCH] Commit JT 072618 - improvements documentation (dmi and
 exchange) - correction error cross product in pair_spin_dmi.cpp -
 implementation mech. part in pair_spin_dmi.cpp - correction in all pairs:
 init_one for [j][i] couples - correction in atom_vec_spin.cpp: index error in
 read_data - some improvements in pair_spin_dmi.cpp and pair_spin_magelec.cpp

---
 doc/src/Eqs/pair_spin_dmi_forces.jpg          | Bin 0 -> 13431 bytes
 doc/src/Eqs/pair_spin_dmi_forces.tex          |  14 +++
 doc/src/Eqs/pair_spin_dmi_interaction.jpg     | Bin 6316 -> 7891 bytes
 doc/src/Eqs/pair_spin_dmi_interaction.tex     |   2 +-
 doc/src/Eqs/pair_spin_exchange_forces.jpg     | Bin 13720 -> 13255 bytes
 doc/src/Eqs/pair_spin_exchange_forces.tex     |  10 +-
 .../Eqs/pair_spin_exchange_interaction.jpg    | Bin 6661 -> 5940 bytes
 .../Eqs/pair_spin_exchange_interaction.tex    |   2 +-
 doc/src/pair_spin_dmi.txt                     |  41 +++++--
 doc/src/pair_spin_exchange.txt                |  28 ++++-
 examples/SPIN/bfo/in.spin.bfo                 |  11 +-
 examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp   |  10 +-
 src/SPIN/atom_vec_spin.cpp                    |   6 +-
 src/SPIN/compute_spin.cpp                     |  20 +--
 src/SPIN/pair_spin_dmi.cpp                    | 116 ++++++++++++------
 src/SPIN/pair_spin_dmi.h                      |  15 +--
 src/SPIN/pair_spin_exchange.cpp               |  52 ++++----
 src/SPIN/pair_spin_magelec.cpp                |  88 +++++++------
 src/SPIN/pair_spin_neel.cpp                   |  12 +-
 src/SPIN/pair_spin_neel.h                     |   4 +-
 20 files changed, 273 insertions(+), 158 deletions(-)
 create mode 100644 doc/src/Eqs/pair_spin_dmi_forces.jpg
 create mode 100644 doc/src/Eqs/pair_spin_dmi_forces.tex

diff --git a/doc/src/Eqs/pair_spin_dmi_forces.jpg b/doc/src/Eqs/pair_spin_dmi_forces.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..fba6a91cbf6fdb6ee6736073a114d08c907d6d3c
GIT binary patch
literal 13431
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
Hvig4jn{I9c

literal 0
HcmV?d00001

diff --git a/doc/src/Eqs/pair_spin_dmi_forces.tex b/doc/src/Eqs/pair_spin_dmi_forces.tex
new file mode 100644
index 0000000000..1c0c246db4
--- /dev/null
+++ b/doc/src/Eqs/pair_spin_dmi_forces.tex
@@ -0,0 +1,14 @@
+\documentclass[preview]{standalone}
+\usepackage{varwidth}
+\usepackage[utf8x]{inputenc}
+\usepackage{amsmath,amssymb,amsthm,bm}
+\begin{document}
+\begin{varwidth}{50in}
+  \begin{equation}
+    \vec{\omega}_i = -\frac{1}{\hbar} \sum_{j}^{Neighb} \vec{s}_{j}\times \left(\vec{e}_{ij}\times \vec{D} \right) 
+    ~~{\rm and}~~
+    \vec{F}_i = -\sum_{j}^{Neighb} \frac{1}{r_{ij}} \vec{D} \times \left( \vec{s}_{i}\times \vec{s}_{j} \right) 
+    , \nonumber
+  \end{equation}
+\end{varwidth}
+\end{document}
diff --git a/doc/src/Eqs/pair_spin_dmi_interaction.jpg b/doc/src/Eqs/pair_spin_dmi_interaction.jpg
index 1d15b2199add75eefecb424f75ea2dbd363a1afe..3eb24c67e3b26f97c362fd05982ead5fb0f5c150 100644
GIT binary patch
literal 7891
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
WVWS<Mh8dY1&#d48z{`-E`Tqe^ww2ca

literal 6316
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
E0bZ-WQ2+n{

diff --git a/doc/src/Eqs/pair_spin_dmi_interaction.tex b/doc/src/Eqs/pair_spin_dmi_interaction.tex
index 5a5a776f03..79f63a333a 100644
--- a/doc/src/Eqs/pair_spin_dmi_interaction.tex
+++ b/doc/src/Eqs/pair_spin_dmi_interaction.tex
@@ -5,7 +5,7 @@
 \begin{document}
 \begin{varwidth}{50in}
   \begin{equation}
-    \bm{H}_{dm} = -\sum_{{ i,j}=1,i\neq j}^{N} 
+    \bm{H}_{dm} = \sum_{{ i,j}=1,i\neq j}^{N} 
     \left( \vec{e}_{ij} \times \vec{D} \right)
     \cdot\left(\vec{s}_{i}\times \vec{s}_{j}\right), 
     \nonumber
diff --git a/doc/src/Eqs/pair_spin_exchange_forces.jpg b/doc/src/Eqs/pair_spin_exchange_forces.jpg
index 2b0469bf4db84885fd8b81679cdd9571ba9e3574..b312a9ccdaaf44b7647f2c444c7d79a740cea88c 100644
GIT binary patch
literal 13255
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

literal 13720
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
YAN#n!=#A%hftx-OcW#2Ko`=Q%0oGV3X8-^I

diff --git a/doc/src/Eqs/pair_spin_exchange_forces.tex b/doc/src/Eqs/pair_spin_exchange_forces.tex
index 088696d5ef..ac5ef682f3 100644
--- a/doc/src/Eqs/pair_spin_exchange_forces.tex
+++ b/doc/src/Eqs/pair_spin_exchange_forces.tex
@@ -5,10 +5,12 @@
 \begin{document}
 \begin{varwidth}{50in}
   \begin{equation}
-    \vec{F}^{i} = \sum_{j}^{Neighbor} \frac{\partial {J} \left(r_{ij} \right)}{
-    \partial r_{ij}} \left( \vec{s}_{i}\cdot \vec{s}_{j} \right) \vec{r}_{ij}  
-    ~~{\rm and}~~ \vec{\omega}^{i} = \frac{1}{\hbar} \sum_{j}^{Neighbor} {J} 
-    \left(r_{ij} \right)\,\vec{s}_{j} \nonumber
+    \vec{\omega}_{i} = \frac{1}{\hbar} \sum_{j}^{Neighb} {J} 
+    \left(r_{ij} \right)\,\vec{s}_{j} 
+    ~~{\rm and}~~ 
+    \vec{F}_{i} = \sum_{j}^{Neighb} \frac{\partial {J} \left(r_{ij} \right)}{
+    \partial r_{ij}} \left( \vec{s}_{i}\cdot \vec{s}_{j} \right) \vec{e}_{ij}  
+    \nonumber
   \end{equation}
 \end{varwidth}
 \end{document}
diff --git a/doc/src/Eqs/pair_spin_exchange_interaction.jpg b/doc/src/Eqs/pair_spin_exchange_interaction.jpg
index d51524d27ca413ec4ded189107c2219b061f7d7e..c70d8a6554003e37472d648c1944a13ee9d3f859 100644
GIT binary patch
literal 5940
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

literal 6661
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
T9!{y1RMlwg`+_6alZpQU?`}{A

diff --git a/doc/src/Eqs/pair_spin_exchange_interaction.tex b/doc/src/Eqs/pair_spin_exchange_interaction.tex
index 6e598f75ac..f20b3e5740 100644
--- a/doc/src/Eqs/pair_spin_exchange_interaction.tex
+++ b/doc/src/Eqs/pair_spin_exchange_interaction.tex
@@ -5,7 +5,7 @@
 \begin{document}
 \begin{varwidth}{50in}
   \begin{equation}
-    \bm{H}_{exchange} ~=~ -\sum_{i,j,i\neq j}^{N} {J} \left(r_{ij} \right)\, \vec{s}_{i}\cdot \vec{s}_{j} \nonumber
+    \bm{H}_{ex} ~=~ -\sum_{i,j,i\neq j}^{N} {J} \left(r_{ij} \right)\, \vec{s}_{i}\cdot \vec{s}_{j} \nonumber
   \end{equation}
 \end{varwidth}
 \end{document}
diff --git a/doc/src/pair_spin_dmi.txt b/doc/src/pair_spin_dmi.txt
index 24877906f3..a1d0cb2265 100644
--- a/doc/src/pair_spin_dmi.txt
+++ b/doc/src/pair_spin_dmi.txt
@@ -25,24 +25,46 @@ pair_coeff 1 2 dmi 4.0 0.00109 0.0 0.0 1.0 :pre
 [Description:]
 
 Style {spin/dmi} computes the Dzyaloshinskii-Moriya (DM) interaction
-between pairs of magnetic spins: 
+between pairs of magnetic spins. 
+According to the expression reported in "(Rohart)"_#Rohart, one has
+the following DM energy:
 
 :c,image(Eqs/pair_spin_dmi_interaction.jpg)
 
 where si and sj are two neighboring magnetic spins of two particles, 
-eij = (ri - rj)/|ri-rj| is the normalized separation vector between the 
-two particles, and D is the DM vector defining the intensity and the 
-sign of the interaction.
+eij = (ri - rj)/|ri-rj| is the unit vector between sites i and j,
+and D is the DM vector defining the intensity (in eV) and the direction 
+of the interaction.
 
-Examples and more explanations about this interaction and its parametrization are 
-reported in "(Tranchida)"_#Tranchida5.
+In "(Rohart)"_#Rohart, D is defined as the direction normal to the film oriented 
+from the high spin-orbit layer to the magnetic ultrathin film.
 
-From this DM interaction, each spin i will be submitted to a magnetic torque
-omega and its associated atom to a force F (for spin-lattice calculations only). 
+The application of a spin-lattice Poisson bracket to this energy (as described
+in "(Tranchida)"_#Tranchida5) allows to derive a magnetic torque omega, and a
+mechanical force F (for spin-lattice calculations only) for each magnetic 
+particle i: 
+
+:c,image(Eqs/pair_spin_dmi_forces.jpg)
 
 More details about the derivation of these torques/forces are reported in
 "(Tranchida)"_#Tranchida5.
 
+For the {spin/dmi} pair style, 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 data file or restart files read by the 
+"read_data"_read_data.html or "read_restart"_read_restart.html commands, and 
+set in the following order: 
+
+rc (distance units)
+|D| (energy units)
+Dx, Dy, Dz  (direction of D) :ul
+
+Note that rc is the radius cutoff of the considered DM interaction, |D| is 
+the norm of the DM vector (in eV), and Dx, Dy and Dz define its direction. 
+
+None of those coefficients is optional.  If not specified, the {spin/dmi} 
+pair style cannot be used.
+
 :line
 
 [Restrictions:]
@@ -61,6 +83,9 @@ See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
 
 :line
 
+:link(Rohart)
+[(Rohart)] Rohart and Thiaville,
+Physical Review B, 88(18), 184422. (2013).
 :link(Tranchida5)
 [(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
 Journal of Computational Physics, (2018).
diff --git a/doc/src/pair_spin_exchange.txt b/doc/src/pair_spin_exchange.txt
index ad3357cb5e..a4f37a98eb 100644
--- a/doc/src/pair_spin_exchange.txt
+++ b/doc/src/pair_spin_exchange.txt
@@ -32,18 +32,15 @@ pairs of magnetic spins:
 where si and sj are two neighboring magnetic spins of two particles, 
 rij = ri - rj is the inter-atomic distance between the two particles,
 and J(rij) is a function defining the intensity and the sign of the exchange 
-interaction.
-
-This function is defined as:
+interaction for different neighboring shells. This function is defined as:
 
 :c,image(Eqs/pair_spin_exchange_function.jpg)
 
 where a, b and d are the three constant coefficients defined in the associated
-"pair_coeff" command.
+"pair_coeff" command (see below for more explanations).
 
 The coefficients a, b, and d need to be fitted so that the function above matches with
 the value of the exchange interaction for the N neighbor shells taken into account.
-
 Examples and more explanations about this function and its parametrization are reported
 in "(Tranchida)"_#Tranchida3.
 
@@ -54,11 +51,30 @@ such as:
 
 :c,image(Eqs/pair_spin_exchange_forces.jpg)
 
-with h the Planck constant (in metal units).
+with h the Planck constant (in metal units), and eij = (ri - rj)/|ri-rj| the unit 
+vector between sites i and j.
 
 More details about the derivation of these torques/forces are reported in
 "(Tranchida)"_#Tranchida3.
 
+For the {spin/exchange} pair style, 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 data file or restart files read by the 
+"read_data"_read_data.html or "read_restart"_read_restart.html commands, and 
+set in the following order: 
+
+rc (distance units)
+a  (energy units)
+b  (adim parameter) 
+d  (distance units) :ul
+
+Note that rc is the radius cutoff of the considered exchange interaction,
+and a, b and d are the three coefficients performing the parametrization
+of the function J(rij) defined above.
+
+None of those coefficients is optional. If not specified, the 
+{spin/exchange} pair style cannot be used.
+
 :line
 
 [Restrictions:]
diff --git a/examples/SPIN/bfo/in.spin.bfo b/examples/SPIN/bfo/in.spin.bfo
index 2442b12b72..de23ba87ba 100644
--- a/examples/SPIN/bfo/in.spin.bfo
+++ b/examples/SPIN/bfo/in.spin.bfo
@@ -21,9 +21,11 @@ mass		1 1.0
 
 set 		group all spin/random 11 2.50
 
-pair_style 	hybrid/overlay spin/exchange 6.0 spin/magelec 4.5
+#pair_style 	hybrid/overlay spin/exchange 6.0 spin/magelec 4.5
+pair_style 	hybrid/overlay spin/exchange 6.0 spin/magelec 4.5 spin/dmi 4.5
 pair_coeff 	* * spin/exchange exchange 6.0 -0.01575 0.0 1.965
 pair_coeff 	* * spin/magelec magelec 4.5 0.000109 1.0 1.0 1.0
+pair_coeff 	* * spin/dmi dmi 4.5 0.00005 1.0 1.0 1.0
 
 neighbor 	0.1 bin
 neigh_modify 	every 10 check yes delay 20
@@ -44,10 +46,11 @@ variable 	magnorm	 equal c_out_mag[4]
 variable 	emag	 equal c_out_mag[5]
 variable 	tmag	 equal c_out_mag[6]
 
-thermo_style    custom step time v_magnorm v_emag temp etotal
-thermo          50
+#thermo_style    custom step time v_magnorm v_emag temp etotal
+thermo_style    custom step time v_magnorm pe ke v_emag temp etotal
+thermo          10
 
 compute outsp all property/atom spx spy spz sp fmx fmy fmz
 dump 100 all custom 1 dump_bfo.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3]
 
-run 		5000
+run 		2000
diff --git a/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp b/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp
index 4a42ec419a..35aa1df86c 100644
--- a/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp
+++ b/examples/SPIN/cobalt_hcp/in.spin.cobalt_hcp
@@ -19,8 +19,8 @@ create_atoms 	1 box
 
 mass		1 58.93
 
-#set 		group all spin/random 31 1.72
-set 		group all spin 1.72 0.0 0.0 1.0 
+set 		group all spin/random 31 1.72
+#set 		group all spin 1.72 0.0 0.0 1.0 
 velocity 	all create 100 4928459 rot yes dist gaussian
 
 #pair_style 	hybrid/overlay eam/alloy spin/exchange 4.0 spin/neel 4.0
@@ -29,11 +29,11 @@ pair_coeff 	* * eam/alloy Co_PurjaPun_2012.eam.alloy Co
 pair_coeff 	* * spin/exchange exchange 4.0 0.3593 1.135028015e-05 1.064568567
 #pair_coeff 	* * spin/neel neel 4.0 0.0048 0.234 1.168 2.6905 0.705 0.652  
 
-
 neighbor 	0.1 bin
 neigh_modify 	every 10 check yes delay 20
 
-fix 		1 all precession/spin zeeman 1.0 0.0 0.0 1.0
+#fix 		1 all precession/spin zeeman 1.0 0.0 0.0 1.0
+fix 		1 all precession/spin zeeman 0.0 0.0 0.0 1.0
 fix 		2 all langevin/spin 0.0 0.0 21
 fix 		3 all nve/spin lattice yes
 
@@ -56,4 +56,4 @@ thermo          10
 compute 	outsp all property/atom spx spy spz sp fmx fmy fmz
 dump 		100 all custom 1 dump_cobalt_hcp.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3]
 
-run 		2000
+run 		20000
diff --git a/src/SPIN/atom_vec_spin.cpp b/src/SPIN/atom_vec_spin.cpp
index 8b47eff624..6460a6185f 100644
--- a/src/SPIN/atom_vec_spin.cpp
+++ b/src/SPIN/atom_vec_spin.cpp
@@ -816,9 +816,9 @@ void AtomVecSpin::data_atom(double *coord, imageint imagetmp, char **values)
   x[nlocal][2] = coord[2];
 
   sp[nlocal][3] = atof(values[2]);
-  sp[nlocal][0] = atof(values[5]);
-  sp[nlocal][1] = atof(values[6]);
-  sp[nlocal][2] = atof(values[7]);
+  sp[nlocal][0] = atof(values[6]);
+  sp[nlocal][1] = atof(values[7]);
+  sp[nlocal][2] = atof(values[8]);
   double inorm = 1.0/sqrt(sp[nlocal][0]*sp[nlocal][0] +
                           sp[nlocal][1]*sp[nlocal][1] +
                           sp[nlocal][2]*sp[nlocal][2]);
diff --git a/src/SPIN/compute_spin.cpp b/src/SPIN/compute_spin.cpp
index b67f62d53d..dc16190c98 100644
--- a/src/SPIN/compute_spin.cpp
+++ b/src/SPIN/compute_spin.cpp
@@ -105,16 +105,16 @@ void ComputeSpin::compute_vector()
   for (i = 0; i < nlocal; i++) {
     if (mask[i] & groupbit) {
       if (atom->sp_flag) {
-		mag[0] += sp[i][0];
-		mag[1] += sp[i][1];
-		mag[2] += sp[i][2];
-		magenergy -= (sp[i][0]*fm[i][0] + sp[i][1]*fm[i][1] + sp[i][2]*fm[i][2]);
-                tx = sp[i][1]*fm[i][2]-sp[i][2]*fm[i][1];
-                ty = sp[i][2]*fm[i][0]-sp[i][0]*fm[i][2];
-                tz = sp[i][0]*fm[i][1]-sp[i][1]*fm[i][0];
-                tempnum += tx*tx+ty*ty+tz*tz;
-                tempdenom += sp[i][0]*fm[i][0]+fm[i][1]*sp[i][1]+sp[i][2]*fm[i][2];  	
-		countsp++;
+	mag[0] += sp[i][0];
+	mag[1] += sp[i][1];
+	mag[2] += sp[i][2];
+	magenergy -= (sp[i][0]*fm[i][0] + sp[i][1]*fm[i][1] + sp[i][2]*fm[i][2]);
+        tx = sp[i][1]*fm[i][2]-sp[i][2]*fm[i][1];
+        ty = sp[i][2]*fm[i][0]-sp[i][0]*fm[i][2];
+        tz = sp[i][0]*fm[i][1]-sp[i][1]*fm[i][0];
+        tempnum += tx*tx+ty*ty+tz*tz;
+        tempdenom += sp[i][0]*fm[i][0]+fm[i][1]*sp[i][1]+sp[i][2]*fm[i][2];  	
+	countsp++;
       }
     }
     else error->all(FLERR,"Compute compute/spin requires atom/spin style");
diff --git a/src/SPIN/pair_spin_dmi.cpp b/src/SPIN/pair_spin_dmi.cpp
index b792969c5d..08e2c63e7f 100644
--- a/src/SPIN/pair_spin_dmi.cpp
+++ b/src/SPIN/pair_spin_dmi.cpp
@@ -65,6 +65,9 @@ PairSpinDmi::~PairSpinDmi()
     memory->destroy(v_dmx);
     memory->destroy(v_dmy);
     memory->destroy(v_dmz);
+    memory->destroy(vmech_dmx);
+    memory->destroy(vmech_dmy);
+    memory->destroy(vmech_dmz);
     memory->destroy(cutsq);
   }
 }
@@ -118,7 +121,7 @@ void PairSpinDmi::coeff(int narg, char **arg)
   force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
 
   const double rij = force->numeric(FLERR,arg[3]);
-  const double dm = (force->numeric(FLERR,arg[4]))/hbar;
+  const double dm = (force->numeric(FLERR,arg[4]));
   double dmx = force->numeric(FLERR,arg[5]);
   double dmy = force->numeric(FLERR,arg[6]);
   double dmz = force->numeric(FLERR,arg[7]);
@@ -133,9 +136,12 @@ void PairSpinDmi::coeff(int narg, char **arg)
     for (int j = MAX(jlo,i); j <= jhi; j++) {
       cut_spin_dmi[i][j] = rij;
       DM[i][j] = dm;
-      v_dmx[i][j] = dmx * dm;
-      v_dmy[i][j] = dmy * dm;
-      v_dmz[i][j] = dmz * dm;
+      v_dmx[i][j] = dmx * dm / hbar;
+      v_dmy[i][j] = dmy * dm / hbar;
+      v_dmz[i][j] = dmz * dm / hbar;
+      vmech_dmx[i][j] = dmx * dm;
+      vmech_dmy[i][j] = dmy * dm;
+      vmech_dmz[i][j] = dmz * dm;
       setflag[i][j] = 1;
       count++;
     }
@@ -187,9 +193,17 @@ void PairSpinDmi::init_style()
 
 double PairSpinDmi::init_one(int i, int j)
 {
-
   if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
 
+  DM[j][i] = DM[i][j];
+  v_dmx[j][i] = v_dmx[i][j];
+  v_dmy[j][i] = v_dmy[i][j];
+  v_dmz[j][i] = v_dmz[i][j];
+  vmech_dmx[j][i] = vmech_dmx[i][j];
+  vmech_dmy[j][i] = vmech_dmy[i][j];
+  vmech_dmz[j][i] = vmech_dmz[i][j];
+  cut_spin_dmi[j][i] = cut_spin_dmi[i][j];
+
   return cut_spin_dmi_global;
 }
 
@@ -210,7 +224,8 @@ void PairSpinDmi::compute(int eflag, int vflag)
 {
   int i,j,ii,jj,inum,jnum,itype,jtype;
   double evdwl, ecoul;
-  double xi[3], rij[3], eij[3];
+  double xi[3], eij[3];
+  double delx,dely,delz;
   double spi[3], spj[3];
   double fi[3], fmi[3];
   double local_cut2;
@@ -264,20 +279,17 @@ void PairSpinDmi::compute(int eflag, int vflag)
       spj[2] = sp[j][2];
 
       evdwl = 0.0;
-
       fi[0] = fi[1] = fi[2] = 0.0;
       fmi[0] = fmi[1] = fmi[2] = 0.0;
-      rij[0] = rij[1] = rij[2] = 0.0;
-      eij[0] = eij[1] = eij[2] = 0.0;
 
-      rij[0] = x[j][0] - xi[0];
-      rij[1] = x[j][1] - xi[1];
-      rij[2] = x[j][2] - xi[2];
-      rsq = rij[0]*rij[0] + rij[1]*rij[1] + rij[2]*rij[2];
+      delx = xi[0] - x[j][0];
+      dely = xi[1] - x[j][1];
+      delz = xi[2] - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
       inorm = 1.0/sqrt(rsq);
-      eij[0] = rij[0]*inorm;
-      eij[1] = rij[1]*inorm;
-      eij[2] = rij[2]*inorm;
+      eij[0] = -inorm*delx;
+      eij[1] = -inorm*dely;
+      eij[2] = -inorm*delz;
 
       local_cut2 = cut_spin_dmi[itype][jtype]*cut_spin_dmi[itype][jtype];
 
@@ -286,7 +298,7 @@ void PairSpinDmi::compute(int eflag, int vflag)
       if (rsq <= local_cut2) {
 	compute_dmi(i,j,eij,fmi,spj);
 	if (lattice_flag) {
-	  compute_dmi_mech(fi);
+	  compute_dmi_mech(i,j,rsq,eij,fi,spi,spj);
 	}
       }
 
@@ -309,7 +321,7 @@ void PairSpinDmi::compute(int eflag, int vflag)
       } else evdwl = 0.0;
 
       if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair,
-	  evdwl,ecoul,fi[0],fi[1],fi[2],rij[0],rij[1],rij[2]);
+	  evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz);
     }
   }
 
@@ -325,8 +337,8 @@ void PairSpinDmi::compute_single_pair(int ii, double fmi[3])
   double **x = atom->x;
   double **sp = atom->sp;
   double local_cut2;
-
-  double xi[3], rij[3], eij[3];
+  double xi[3], eij[3];
+  double delx,dely,delz;
   double spj[3];
 
   int i,j,jnum,itype,jtype;
@@ -358,14 +370,14 @@ void PairSpinDmi::compute_single_pair(int ii, double fmi[3])
     spj[1] = sp[j][1];
     spj[2] = sp[j][2];
 
-    rij[0] = x[j][0] - xi[0];
-    rij[1] = x[j][1] - xi[1];
-    rij[2] = x[j][2] - xi[2];
-    rsq = rij[0]*rij[0] + rij[1]*rij[1] + rij[2]*rij[2];
+    delx = xi[0] - x[j][0];
+    dely = xi[1] - x[j][1];
+    delz = xi[2] - x[j][2];
+    rsq = delx*delx + dely*dely + delz*delz;
     inorm = 1.0/sqrt(rsq);
-    eij[0] = rij[0]*inorm;
-    eij[1] = rij[1]*inorm;
-    eij[2] = rij[2]*inorm;
+    eij[0] = -inorm*delx;
+    eij[1] = -inorm*dely;
+    eij[2] = -inorm*delz;
 
     local_cut2 = cut_spin_dmi[itype][jtype]*cut_spin_dmi[itype][jtype];
 
@@ -390,23 +402,45 @@ void PairSpinDmi::compute_dmi(int i, int j, double eij[3], double fmi[3], double
   jtype = type[j];
 
   dmix = eij[1]*v_dmz[itype][jtype] - eij[2]*v_dmy[itype][jtype];
-  dmiy = eij[2]*v_dmx[itype][jtype] - eij[2]*v_dmz[itype][jtype];
+  dmiy = eij[2]*v_dmx[itype][jtype] - eij[0]*v_dmz[itype][jtype];
   dmiz = eij[0]*v_dmy[itype][jtype] - eij[1]*v_dmx[itype][jtype];
 
-  fmi[0] += (spj[1]*dmiz - spj[2]*dmiy);
-  fmi[1] += (spj[2]*dmix - spj[0]*dmiz);
-  fmi[2] += (spj[0]*dmiy - spj[1]*dmix);
+  fmi[0] -= (spj[1]*dmiz - spj[2]*dmiy);
+  fmi[1] -= (spj[2]*dmix - spj[0]*dmiz);
+  fmi[2] -= (spj[0]*dmiy - spj[1]*dmix);
 }
 
 /* ----------------------------------------------------------------------
    compute the mechanical force due to the dmi interaction between atom i and atom j
 ------------------------------------------------------------------------- */
 
-void PairSpinDmi::compute_dmi_mech(double fi[3])
+void PairSpinDmi::compute_dmi_mech(int i, int j, double rsq, double eij[3], 
+    double fi[3],  double spi[3], double spj[3])
 {
-  fi[0] += 0.0;
-  fi[1] += 0.0;
-  fi[2] += 0.0;
+  int *type = atom->type;
+  int itype, jtype;
+  double dmix,dmiy,dmiz;	
+  itype = type[i];
+  jtype = type[j];
+  double csx,csy,csz,cdmx,cdmy,cdmz,irij;
+
+  irij = 1.0/sqrt(rsq);
+
+  dmix = vmech_dmx[itype][jtype];
+  dmiy = vmech_dmy[itype][jtype];
+  dmiz = vmech_dmz[itype][jtype];
+
+  csx = (spi[1]*spj[2] - spi[2]*spj[1]);
+  csy = (spi[2]*spj[0] - spi[0]*spj[2]);
+  csz = (spi[0]*spj[1] - spi[1]*spj[0]);
+
+  cdmx = (dmiy*csz - dmiz*csy);
+  cdmy = (dmiz*csx - dmix*csz);
+  cdmz = (dmix*csy - dmiy*csz);
+
+  fi[0] += irij*cdmx;
+  fi[1] += irij*cdmy;
+  fi[2] += irij*cdmz;
 }
 
 /* ----------------------------------------------------------------------
@@ -428,6 +462,9 @@ void PairSpinDmi::allocate()
   memory->create(v_dmx,n+1,n+1,"pair:DM_vector_x");
   memory->create(v_dmy,n+1,n+1,"pair:DM_vector_y");
   memory->create(v_dmz,n+1,n+1,"pair:DM_vector_z");
+  memory->create(vmech_dmx,n+1,n+1,"pair:DMmech_vector_x");
+  memory->create(vmech_dmy,n+1,n+1,"pair:DMmech_vector_y");
+  memory->create(vmech_dmz,n+1,n+1,"pair:DMmech_vector_z");
 
   memory->create(cutsq,n+1,n+1,"pair:cutsq");
 
@@ -451,6 +488,9 @@ void PairSpinDmi::write_restart(FILE *fp)
         fwrite(&v_dmx[i][j],sizeof(double),1,fp);
         fwrite(&v_dmy[i][j],sizeof(double),1,fp);
         fwrite(&v_dmz[i][j],sizeof(double),1,fp);
+        fwrite(&vmech_dmx[i][j],sizeof(double),1,fp);
+        fwrite(&vmech_dmy[i][j],sizeof(double),1,fp);
+        fwrite(&vmech_dmz[i][j],sizeof(double),1,fp);
         fwrite(&cut_spin_dmi[i][j],sizeof(double),1,fp);
       }
     }
@@ -478,12 +518,18 @@ void PairSpinDmi::read_restart(FILE *fp)
           fread(&v_dmx[i][j],sizeof(double),1,fp);
           fread(&v_dmy[i][j],sizeof(double),1,fp);
           fread(&v_dmz[i][j],sizeof(double),1,fp);
+          fread(&vmech_dmx[i][j],sizeof(double),1,fp);
+          fread(&vmech_dmy[i][j],sizeof(double),1,fp);
+          fread(&vmech_dmz[i][j],sizeof(double),1,fp);
           fread(&cut_spin_dmi[i][j],sizeof(double),1,fp);
         }
         MPI_Bcast(&DM[i][j],1,MPI_DOUBLE,0,world);
         MPI_Bcast(&v_dmx[i][j],1,MPI_DOUBLE,0,world);
         MPI_Bcast(&v_dmy[i][j],1,MPI_DOUBLE,0,world);
         MPI_Bcast(&v_dmz[i][j],1,MPI_DOUBLE,0,world);
+        MPI_Bcast(&vmech_dmx[i][j],1,MPI_DOUBLE,0,world);
+        MPI_Bcast(&vmech_dmy[i][j],1,MPI_DOUBLE,0,world);
+        MPI_Bcast(&vmech_dmz[i][j],1,MPI_DOUBLE,0,world);
         MPI_Bcast(&cut_spin_dmi[i][j],1,MPI_DOUBLE,0,world);
       }
     }
diff --git a/src/SPIN/pair_spin_dmi.h b/src/SPIN/pair_spin_dmi.h
index a309f0c8d5..68e42e879d 100644
--- a/src/SPIN/pair_spin_dmi.h
+++ b/src/SPIN/pair_spin_dmi.h
@@ -38,22 +38,23 @@ class PairSpinDmi : public PairSpin {
   void compute_single_pair(int, double *);
 
   void compute_dmi(int, int, double *, double *, double *);
-  void compute_dmi_mech(double *);
+  void compute_dmi_mech(int, int, double, double *, double *, double *, double *);
 
   void write_restart(FILE *);
   void read_restart(FILE *);
   void write_restart_settings(FILE *);
   void read_restart_settings(FILE *);
 
-  double cut_spin_dmi_global;		// short range pair cutoff
+  double cut_spin_dmi_global;			// short range pair cutoff
 
  protected:
-  double **DM;                     	// dmi coeff in eV
-  double **v_dmx, **v_dmy, **v_dmz;	// dmi direction
-  double **cut_spin_dmi;      		// cutoff distance dmi
+  double **DM;                     		// dmi coeff in eV
+  double **v_dmx, **v_dmy, **v_dmz;		// dmi direction
+  double **vmech_dmx, **vmech_dmy, **vmech_dmz;	// dmi mech direction
+  double **cut_spin_dmi;      			// cutoff distance dmi
 
-  int lattice_flag;                     // flag for mech force computation
-  class FixNVESpin *lockfixnvespin;     // ptr to FixNVESpin for setups
+  int lattice_flag;             	        // flag for mech force computation
+  class FixNVESpin *lockfixnvespin;     	// ptr to FixNVESpin for setups
 
   void allocate();
 };
diff --git a/src/SPIN/pair_spin_exchange.cpp b/src/SPIN/pair_spin_exchange.cpp
index 1b7b36b6db..cc074bb97d 100644
--- a/src/SPIN/pair_spin_exchange.cpp
+++ b/src/SPIN/pair_spin_exchange.cpp
@@ -65,7 +65,7 @@ PairSpinExchange::~PairSpinExchange()
     memory->destroy(J1_mech);
     memory->destroy(J2);
     memory->destroy(J3);
-    memory->destroy(cutsq); // to be deleted
+    memory->destroy(cutsq); // to be implemented
   }
 }
 
@@ -134,8 +134,8 @@ void PairSpinExchange::coeff(int narg, char **arg)
       count++;
     }
   }
-  if (count == 0)
-    error->all(FLERR,"Incorrect args in pair_style command");
+  
+  if (count == 0) error->all(FLERR,"Incorrect args in pair_style command");
 }
 
 /* ----------------------------------------------------------------------
@@ -183,6 +183,12 @@ double PairSpinExchange::init_one(int i, int j)
 
    if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
 
+  J1_mag[j][i] = J1_mag[i][j];
+  J1_mech[j][i] = J1_mech[i][j];
+  J2[j][i] = J2[i][j];
+  J3[j][i] = J3[i][j];
+  cut_spin_exchange[j][i] = cut_spin_exchange[i][j];
+
   return cut_spin_exchange_global;
 }
 
@@ -203,7 +209,8 @@ void PairSpinExchange::compute(int eflag, int vflag)
 {
   int i,j,ii,jj,inum,jnum,itype,jtype;
   double evdwl, ecoul;
-  double xi[3], rij[3], eij[3];
+  double xi[3], eij[3];
+  double delx,dely,delz;
   double spi[3], spj[3];
   double fi[3], fmi[3];
   double local_cut2;
@@ -255,18 +262,17 @@ void PairSpinExchange::compute(int eflag, int vflag)
       spj[2] = sp[j][2];
 
       evdwl = 0.0;
-
       fi[0] = fi[1] = fi[2] = 0.0;
       fmi[0] = fmi[1] = fmi[2] = 0.0;
 
-      rij[0] = x[j][0] - xi[0];
-      rij[1] = x[j][1] - xi[1];
-      rij[2] = x[j][2] - xi[2];
-      rsq = rij[0]*rij[0] + rij[1]*rij[1] + rij[2]*rij[2];
+      delx = xi[0] - x[j][0];
+      dely = xi[1] - x[j][1];
+      delz = xi[2] - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
       inorm = 1.0/sqrt(rsq);
-      eij[0] = inorm*rij[0];
-      eij[1] = inorm*rij[1];
-      eij[2] = inorm*rij[2];
+      eij[0] = -inorm*delx;
+      eij[1] = -inorm*dely;
+      eij[2] = -inorm*delz;
 
       local_cut2 = cut_spin_exchange[itype][jtype]*cut_spin_exchange[itype][jtype];
 
@@ -298,7 +304,7 @@ void PairSpinExchange::compute(int eflag, int vflag)
       } else evdwl = 0.0;
 
       if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair,
-	  evdwl,ecoul,fi[0],fi[1],fi[2],rij[0],rij[1],rij[2]);
+	  evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz);
     }
   }
 
@@ -317,8 +323,8 @@ void PairSpinExchange::compute_single_pair(int ii, double fmi[3])
   double **x = atom->x;
   double **sp = atom->sp;
   double local_cut2;
-
   double xi[3], rij[3];
+  double delx,dely,delz;
   double spj[3];
 
   int i,j,jnum,itype,jtype;
@@ -351,15 +357,14 @@ void PairSpinExchange::compute_single_pair(int ii, double fmi[3])
     spj[1] = sp[j][1];
     spj[2] = sp[j][2];
 
-    rij[0] = x[j][0] - xi[0];
-    rij[1] = x[j][1] - xi[1];
-    rij[2] = x[j][2] - xi[2];
-    rsq = rij[0]*rij[0] + rij[1]*rij[1] + rij[2]*rij[2];
+    delx = xi[0] - x[j][0];
+    dely = xi[1] - x[j][1];
+    delz = xi[2] - x[j][2];
+    rsq = delx*delx + dely*dely + delz*delz;
 
     if (rsq <= local_cut2) {
       compute_exchange(i,j,rsq,fmi,spj);
     }
-
   }
 
 }
@@ -390,7 +395,8 @@ void PairSpinExchange::compute_exchange(int i, int j, double rsq, double fmi[3],
    compute the mechanical force due to the exchange interaction between atom i and atom j
 ------------------------------------------------------------------------- */
 
-void PairSpinExchange::compute_exchange_mech(int i, int j, double rsq, double rij[3], double fi[3],  double spi[3], double spj[3])
+void PairSpinExchange::compute_exchange_mech(int i, int j, double rsq, double eij[3], 
+    double fi[3],  double spi[3], double spj[3])
 {
   int *type = atom->type;
   int itype, jtype;
@@ -408,9 +414,9 @@ void PairSpinExchange::compute_exchange_mech(int i, int j, double rsq, double ri
   Jex_mech *= 8.0*Jex*rr*exp(-ra);
   Jex_mech *= (spi[0]*spj[0]+spi[1]*spj[1]+spi[2]*spj[2]);
 
-  fi[0] -= Jex_mech*rij[0];
-  fi[1] -= Jex_mech*rij[1];
-  fi[2] -= Jex_mech*rij[2];
+  fi[0] -= Jex_mech*eij[0];
+  fi[1] -= Jex_mech*eij[1];
+  fi[2] -= Jex_mech*eij[2];
 }
 
 /* ----------------------------------------------------------------------
diff --git a/src/SPIN/pair_spin_magelec.cpp b/src/SPIN/pair_spin_magelec.cpp
index 315b691d17..6bc1f71947 100644
--- a/src/SPIN/pair_spin_magelec.cpp
+++ b/src/SPIN/pair_spin_magelec.cpp
@@ -187,8 +187,14 @@ void PairSpinMagelec::init_style()
 
 double PairSpinMagelec::init_one(int i, int j)
 {
+  if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
 
-   if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
+  ME[j][i] = ME[i][j];
+  ME_mech[j][i] = ME_mech[i][j];
+  v_mex[j][i] = v_mex[i][j];
+  v_mey[j][i] = v_mey[i][j];
+  v_mez[j][i] = v_mez[i][j];
+  cut_spin_magelec[j][i] = cut_spin_magelec[i][j];
 
   return cut_spin_magelec_global;
 }
@@ -211,7 +217,8 @@ void PairSpinMagelec::compute(int eflag, int vflag)
 {
   int i,j,ii,jj,inum,jnum,itype,jtype;
   double evdwl, ecoul;
-  double xi[3], rij[3], eij[3];
+  double xi[3], eij[3];
+  double delx,dely,delz;
   double spi[3], spj[3];
   double fi[3], fmi[3];
   double local_cut2;
@@ -263,18 +270,17 @@ void PairSpinMagelec::compute(int eflag, int vflag)
       spj[2] = sp[j][2];
 
       evdwl = 0.0;
-
       fi[0] = fi[1] = fi[2] = 0.0;
       fmi[0] = fmi[1] = fmi[2] = 0.0;
 
-      rij[0] = x[j][0] - xi[0];
-      rij[1] = x[j][1] - xi[1];
-      rij[2] = x[j][2] - xi[2];
-      rsq = rij[0]*rij[0] + rij[1]*rij[1] + rij[2]*rij[2];
+      delx = xi[0] - x[j][0];
+      dely = xi[1] - x[j][1];
+      delz = xi[2] - x[j][2];
+      rsq = delx*delx + dely*dely + delz*delz;
       inorm = 1.0/sqrt(rsq);
-      eij[0] = inorm*rij[0];
-      eij[1] = inorm*rij[1];
-      eij[2] = inorm*rij[2];
+      eij[0] = -inorm*delx;
+      eij[1] = -inorm*dely;
+      eij[2] = -inorm*delz;
 
       local_cut2 = cut_spin_magelec[itype][jtype]*cut_spin_magelec[itype][jtype];
 
@@ -301,12 +307,12 @@ void PairSpinMagelec::compute(int eflag, int vflag)
       }
 
       if (eflag) {
-        evdwl = (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]);
+        evdwl -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]);
         evdwl *= hbar;
       } else evdwl = 0.0;
 
       if (evflag) ev_tally_xyz(i,j,nlocal,newton_pair,
-          evdwl,ecoul,fi[0],fi[1],fi[2],rij[0],rij[1],rij[2]);
+          evdwl,ecoul,fi[0],fi[1],fi[2],delx,dely,delz);
     }
   }
 
@@ -322,8 +328,8 @@ void PairSpinMagelec::compute_single_pair(int ii, double fmi[3])
   double **x = atom->x;
   double **sp = atom->sp;
   double local_cut2;
-
-  double xi[3], rij[3], eij[3];
+  double xi[3], eij[3];
+  double delx,dely,delz;
   double spj[3];
 
   int i,j,jnum,itype,jtype;
@@ -342,8 +348,6 @@ void PairSpinMagelec::compute_single_pair(int ii, double fmi[3])
   xi[1] = x[i][1];
   xi[2] = x[i][2];
 
-  eij[0] = eij[1] = eij[2] = 0.0;
-
   jlist = firstneigh[i];
   jnum = numneigh[i];
 
@@ -358,14 +362,14 @@ void PairSpinMagelec::compute_single_pair(int ii, double fmi[3])
     spj[1] = sp[j][1];
     spj[2] = sp[j][2];
 
-    rij[0] = x[j][0] - xi[0];
-    rij[1] = x[j][1] - xi[1];
-    rij[2] = x[j][2] - xi[2];
-    rsq = rij[0]*rij[0] + rij[1]*rij[1] + rij[2]*rij[2];
+    delx = xi[0] - x[j][0];
+    dely = xi[1] - x[j][1];
+    delz = xi[2] - x[j][2];
+    rsq = delx*delx + dely*dely + delz*delz;
     inorm = 1.0/sqrt(rsq);
-    eij[0] = inorm*rij[0];
-    eij[1] = inorm*rij[1];
-    eij[2] = inorm*rij[2];
+    eij[0] = -inorm*delx;
+    eij[1] = -inorm*dely;
+    eij[2] = -inorm*delz;
 
     if (rsq <= local_cut2) {
       compute_magelec(i,j,rsq,eij,fmi,spj);
@@ -380,36 +384,26 @@ void PairSpinMagelec::compute_magelec(int i, int j, double rsq, double eij[3], d
 {
   int *type = atom->type;
   int itype, jtype;
+  double meix,meiy,meiz;
+  double vx,vy,vz;
   itype = type[i];
   jtype = type[j];
 
-  double local_cut2 = cut_spin_magelec[itype][jtype]*cut_spin_magelec[itype][jtype];
-
-  if (rsq <= local_cut2) {
-    double meix,meiy,meiz;
-    double rx, ry, rz;
-    double vx, vy, vz;
-
-    rx = eij[0];
-    ry = eij[1];
-    rz = eij[2];
-
-    vx = v_mex[itype][jtype];
-    vy = v_mey[itype][jtype];
-    vz = v_mez[itype][jtype];
+  vx = v_mex[itype][jtype];
+  vy = v_mey[itype][jtype];
+  vz = v_mez[itype][jtype];
 
-    meix = vy*rz - vz*ry;
-    meiy = vz*rx - vx*rz;
-    meiz = vx*ry - vy*rx;
+  meix = vy*eij[2] - vz*eij[1];
+  meiy = vz*eij[0] - vx*eij[2];
+  meiz = vx*eij[1] - vy*eij[0];
 
-    meix *= ME[itype][jtype];
-    meiy *= ME[itype][jtype];
-    meiz *= ME[itype][jtype];
+  meix *= ME[itype][jtype];
+  meiy *= ME[itype][jtype];
+  meiz *= ME[itype][jtype];
 
-    fmi[0] += spj[1]*meiz - spj[2]*meiy;
-    fmi[1] += spj[2]*meix - spj[0]*meiz;
-    fmi[2] += spj[0]*meiy - spj[1]*meix;
-  }
+  fmi[0] += spj[1]*meiz - spj[2]*meiy;
+  fmi[1] += spj[2]*meix - spj[0]*meiz;
+  fmi[2] += spj[0]*meiy - spj[1]*meix;
 }
 
 /* ---------------------------------------------------------------------- */
diff --git a/src/SPIN/pair_spin_neel.cpp b/src/SPIN/pair_spin_neel.cpp
index 0daafad756..55f537cf4f 100644
--- a/src/SPIN/pair_spin_neel.cpp
+++ b/src/SPIN/pair_spin_neel.cpp
@@ -193,8 +193,16 @@ void PairSpinNeel::init_style()
 
 double PairSpinNeel::init_one(int i, int j)
 {
-
-   if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
+  if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
+
+  g1[j][i] = g1[i][j];
+  g1_mech[j][i] = g1_mech[i][j];
+  g2[j][i] = g2[i][j];
+  g3[j][i] = g3[i][j];
+  q1[j][i] = q1[i][j];
+  q1_mech[j][i] = q1_mech[i][j];
+  q2[j][i] = q2[i][j];
+  q3[j][i] = q3[i][j];
 
   return cut_spin_neel_global;
 }
diff --git a/src/SPIN/pair_spin_neel.h b/src/SPIN/pair_spin_neel.h
index 934d4a93ad..f60d7d2dca 100644
--- a/src/SPIN/pair_spin_neel.h
+++ b/src/SPIN/pair_spin_neel.h
@@ -51,9 +51,9 @@ class PairSpinNeel : public PairSpin {
 
   // pseudo-dipolar and pseudo-quadrupolar coeff.
 
-  double **g1, **g1_mech; 		// exchange coeffs gij
+  double **g1, **g1_mech; 		// neel coeffs gij
   double **g2, **g3; 			// g1 in eV, g2 adim, g3 in Ang
-  double **q1, **q1_mech; 		// exchange coeffs qij
+  double **q1, **q1_mech; 		// neel coeffs qij
   double **q2, **q3; 			// q1 in eV, q2 adim, q3 in Ang
   double **cut_spin_neel;		// cutoff distance exchange
 
-- 
GitLab