From b92fa00337d0f3af54634fae3c7343e9db4e3a88 Mon Sep 17 00:00:00 2001
From: sjplimp <sjplimp@f3b2605a-c512-4ea7-a41b-209d697bcdaa>
Date: Thu, 27 Jun 2013 20:15:36 +0000
Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@10104
 f3b2605a-c512-4ea7-a41b-209d697bcdaa

---
 src/MANYBODY/pair_adp.cpp             |  1 +
 src/MANYBODY/pair_airebo.cpp          |  1 +
 src/MANYBODY/pair_bop.cpp             |  2 ++
 src/MANYBODY/pair_comb.cpp            |  1 +
 src/MANYBODY/pair_eam.cpp             |  1 +
 src/MANYBODY/pair_eam_alloy.cpp       |  1 +
 src/MANYBODY/pair_eam_fs.cpp          |  1 +
 src/MANYBODY/pair_eim.cpp             |  1 +
 src/MANYBODY/pair_lcbop.cpp           |  1 +
 src/MANYBODY/pair_sw.cpp              |  1 +
 src/MANYBODY/pair_tersoff.cpp         |  1 +
 src/MEAM/pair_meam.cpp                |  1 +
 src/REAX/pair_reax.cpp                |  1 +
 src/USER-MISC/pair_edip.cpp           |  1 +
 src/USER-MISC/pair_meam_spline.cpp    |  1 +
 src/USER-MISC/pair_meam_sw_spline.cpp |  1 +
 src/USER-MISC/pair_tersoff_table.cpp  |  1 +
 src/USER-REAXC/pair_reax_c.cpp        |  1 +
 src/pair.cpp                          | 19 ++++++++++++++++++-
 src/pair.h                            |  1 +
 20 files changed, 38 insertions(+), 1 deletion(-)

diff --git a/src/MANYBODY/pair_adp.cpp b/src/MANYBODY/pair_adp.cpp
index 90d6eab223..4939965528 100644
--- a/src/MANYBODY/pair_adp.cpp
+++ b/src/MANYBODY/pair_adp.cpp
@@ -66,6 +66,7 @@ PairADP::PairADP(LAMMPS *lmp) : Pair(lmp)
 
   single_enable = 0;
   one_coeff = 1;
+  manybody_flag = 1;
 }
 
 /* ----------------------------------------------------------------------
diff --git a/src/MANYBODY/pair_airebo.cpp b/src/MANYBODY/pair_airebo.cpp
index 28939dbeb3..8665b736a9 100644
--- a/src/MANYBODY/pair_airebo.cpp
+++ b/src/MANYBODY/pair_airebo.cpp
@@ -58,6 +58,7 @@ PairAIREBO::PairAIREBO(LAMMPS *lmp) : Pair(lmp)
   maxpage = 0;
   pages = NULL;
   nC = nH = NULL;
+  manybody_flag = 1;
 }
 
 /* ----------------------------------------------------------------------
diff --git a/src/MANYBODY/pair_bop.cpp b/src/MANYBODY/pair_bop.cpp
index a66fa34d41..3410e6c3f2 100644
--- a/src/MANYBODY/pair_bop.cpp
+++ b/src/MANYBODY/pair_bop.cpp
@@ -62,6 +62,8 @@ PairBOP::PairBOP(LAMMPS *lmp) : Pair(lmp)
 {
   single_enable = 0;
   one_coeff = 1;
+  manybody_flag = 1;
+
   map = NULL;
   pi_a = NULL;
   pro_delta = NULL;
diff --git a/src/MANYBODY/pair_comb.cpp b/src/MANYBODY/pair_comb.cpp
index f6170bdf6c..2a071b91ad 100644
--- a/src/MANYBODY/pair_comb.cpp
+++ b/src/MANYBODY/pair_comb.cpp
@@ -50,6 +50,7 @@ PairComb::PairComb(LAMMPS *lmp) : Pair(lmp)
   single_enable = 0;
   restartinfo = 0;
   one_coeff = 1;
+  manybody_flag = 1;
 
   nmax = 0;
   NCo = NULL;
diff --git a/src/MANYBODY/pair_eam.cpp b/src/MANYBODY/pair_eam.cpp
index 5e5f8f3930..629620101e 100644
--- a/src/MANYBODY/pair_eam.cpp
+++ b/src/MANYBODY/pair_eam.cpp
@@ -37,6 +37,7 @@ using namespace LAMMPS_NS;
 PairEAM::PairEAM(LAMMPS *lmp) : Pair(lmp)
 {
   restartinfo = 0;
+  manybody_flag = 1;
 
   nmax = 0;
   rho = NULL;
diff --git a/src/MANYBODY/pair_eam_alloy.cpp b/src/MANYBODY/pair_eam_alloy.cpp
index 318d6421e6..6e46f6edb9 100644
--- a/src/MANYBODY/pair_eam_alloy.cpp
+++ b/src/MANYBODY/pair_eam_alloy.cpp
@@ -33,6 +33,7 @@ using namespace LAMMPS_NS;
 PairEAMAlloy::PairEAMAlloy(LAMMPS *lmp) : PairEAM(lmp)
 {
   one_coeff = 1;
+  manybody_flag = 1;
 }
 
 /* ----------------------------------------------------------------------
diff --git a/src/MANYBODY/pair_eam_fs.cpp b/src/MANYBODY/pair_eam_fs.cpp
index 875822fd5c..80f4239928 100644
--- a/src/MANYBODY/pair_eam_fs.cpp
+++ b/src/MANYBODY/pair_eam_fs.cpp
@@ -33,6 +33,7 @@ using namespace LAMMPS_NS;
 PairEAMFS::PairEAMFS(LAMMPS *lmp) : PairEAM(lmp)
 {
   one_coeff = 1;
+  manybody_flag = 1;
 }
 
 /* ----------------------------------------------------------------------
diff --git a/src/MANYBODY/pair_eim.cpp b/src/MANYBODY/pair_eim.cpp
index f4418a25d2..f4f3fcc653 100644
--- a/src/MANYBODY/pair_eim.cpp
+++ b/src/MANYBODY/pair_eim.cpp
@@ -39,6 +39,7 @@ PairEIM::PairEIM(LAMMPS *lmp) : Pair(lmp)
   single_enable = 0;
   restartinfo = 0;
   one_coeff = 1;
+  manybody_flag = 1;
 
   setfl = NULL;
   nmax = 0;
diff --git a/src/MANYBODY/pair_lcbop.cpp b/src/MANYBODY/pair_lcbop.cpp
index 0de291b286..06f04b1f2f 100644
--- a/src/MANYBODY/pair_lcbop.cpp
+++ b/src/MANYBODY/pair_lcbop.cpp
@@ -46,6 +46,7 @@ using namespace MathConst;
 PairLCBOP::PairLCBOP(LAMMPS *lmp) : Pair(lmp) {
   single_enable = 0;
   one_coeff = 1;
+  manybody_flag = 1;
   ghostneigh = 1;
 
   maxlocal = 0;
diff --git a/src/MANYBODY/pair_sw.cpp b/src/MANYBODY/pair_sw.cpp
index 7af668d37f..5efc5b7c64 100755
--- a/src/MANYBODY/pair_sw.cpp
+++ b/src/MANYBODY/pair_sw.cpp
@@ -43,6 +43,7 @@ PairSW::PairSW(LAMMPS *lmp) : Pair(lmp)
   single_enable = 0;
   restartinfo = 0;
   one_coeff = 1;
+  manybody_flag = 1;
 
   nelements = 0;
   elements = NULL;
diff --git a/src/MANYBODY/pair_tersoff.cpp b/src/MANYBODY/pair_tersoff.cpp
index 6c3c006b12..9e90a8902b 100755
--- a/src/MANYBODY/pair_tersoff.cpp
+++ b/src/MANYBODY/pair_tersoff.cpp
@@ -44,6 +44,7 @@ PairTersoff::PairTersoff(LAMMPS *lmp) : Pair(lmp)
   single_enable = 0;
   restartinfo = 0;
   one_coeff = 1;
+  manybody_flag = 1;
 
   nelements = 0;
   elements = NULL;
diff --git a/src/MEAM/pair_meam.cpp b/src/MEAM/pair_meam.cpp
index 4a3b15898c..bdfc9ea159 100644
--- a/src/MEAM/pair_meam.cpp
+++ b/src/MEAM/pair_meam.cpp
@@ -49,6 +49,7 @@ PairMEAM::PairMEAM(LAMMPS *lmp) : Pair(lmp)
   single_enable = 0;
   restartinfo = 0;
   one_coeff = 1;
+  manybody_flag = 1;
 
   nmax = 0;
   rho = rho0 = rho1 = rho2 = rho3 = frhop = NULL;
diff --git a/src/REAX/pair_reax.cpp b/src/REAX/pair_reax.cpp
index 341aba65d7..e8db8a2a3d 100644
--- a/src/REAX/pair_reax.cpp
+++ b/src/REAX/pair_reax.cpp
@@ -48,6 +48,7 @@ PairREAX::PairREAX(LAMMPS *lmp) : Pair(lmp)
   single_enable = 0;
   restartinfo = 0;
   one_coeff = 1;
+  manybody_flag = 1;
   no_virial_fdotr_compute = 1;
 
   nextra = 14;
diff --git a/src/USER-MISC/pair_edip.cpp b/src/USER-MISC/pair_edip.cpp
index 47585562e2..bc0d75adfd 100755
--- a/src/USER-MISC/pair_edip.cpp
+++ b/src/USER-MISC/pair_edip.cpp
@@ -55,6 +55,7 @@ PairEDIP::PairEDIP(LAMMPS *lmp) : Pair(lmp)
   single_enable = 0;
   restartinfo = 0;
   one_coeff = 1;
+  manybody_flag = 1;
 
   nelements = 0;
   elements = NULL;
diff --git a/src/USER-MISC/pair_meam_spline.cpp b/src/USER-MISC/pair_meam_spline.cpp
index 24ca5d0a67..1684bed227 100644
--- a/src/USER-MISC/pair_meam_spline.cpp
+++ b/src/USER-MISC/pair_meam_spline.cpp
@@ -49,6 +49,7 @@ PairMEAMSpline::PairMEAMSpline(LAMMPS *lmp) : Pair(lmp)
   single_enable = 0;
   restartinfo = 0;
   one_coeff = 1;
+  manybody_flag = 1;
 
   nelements = 0;
   elements = NULL;
diff --git a/src/USER-MISC/pair_meam_sw_spline.cpp b/src/USER-MISC/pair_meam_sw_spline.cpp
index bf3917a769..d0385ab010 100644
--- a/src/USER-MISC/pair_meam_sw_spline.cpp
+++ b/src/USER-MISC/pair_meam_sw_spline.cpp
@@ -47,6 +47,7 @@ PairMEAMSWSpline::PairMEAMSWSpline(LAMMPS *lmp) : Pair(lmp)
   single_enable = 0;
   restartinfo = 0;
   one_coeff = 1;
+  manybody_flag = 1;
 
   nelements = 0;
   elements = NULL;
diff --git a/src/USER-MISC/pair_tersoff_table.cpp b/src/USER-MISC/pair_tersoff_table.cpp
index ce25a86393..f9940d8d86 100644
--- a/src/USER-MISC/pair_tersoff_table.cpp
+++ b/src/USER-MISC/pair_tersoff_table.cpp
@@ -56,6 +56,7 @@ PairTersoffTable::PairTersoffTable(LAMMPS *lmp) : Pair(lmp)
 {
   single_enable = 0;
   one_coeff = 1;
+  manybody_flag = 1;
 
   nelements = 0;
   elements = NULL;
diff --git a/src/USER-REAXC/pair_reax_c.cpp b/src/USER-REAXC/pair_reax_c.cpp
index d4945afee6..1f5ee66a97 100644
--- a/src/USER-REAXC/pair_reax_c.cpp
+++ b/src/USER-REAXC/pair_reax_c.cpp
@@ -61,6 +61,7 @@ PairReaxC::PairReaxC(LAMMPS *lmp) : Pair(lmp)
   single_enable = 0;
   restartinfo = 0;
   one_coeff = 1;
+  manybody_flag = 1;
   ghostneigh = 1;
 
   system = (reax_system *)
diff --git a/src/pair.cpp b/src/pair.cpp
index 3908dbb324..5efa8dd602 100644
--- a/src/pair.cpp
+++ b/src/pair.cpp
@@ -71,6 +71,7 @@ Pair::Pair(LAMMPS *lmp) : Pointers(lmp)
   // pair_modify settings
 
   compute_flag = 1;
+  manybody_flag = 0;
   offset_flag = 0;
   mix_flag = GEOMETRIC;
   tail_flag = 0;
@@ -172,11 +173,27 @@ void Pair::init()
   if (tail_flag && domain->nonperiodic && comm->me == 0)
     error->warning(FLERR,"Using pair tail corrections with nonperiodic system");
 
-  if (!allocated) error->all(FLERR,"All pair coeffs are not set");
+  // for manybody potentials
+  // check if bonded exclusions could invalidate the neighbor list
+
+  if (manybody_flag && atom->molecular) {
+    int flag = 0;
+    if (atom->nbonds > 0 && force->special_lj[1] == 0.0 && 
+        force->special_coul[1] == 0.0) flag = 1;
+    if (atom->nangles > 0 && force->special_lj[2] == 0.0 && 
+        force->special_coul[2] == 0.0) flag = 1;
+    if (atom->ndihedrals > 0 && force->special_lj[3] == 0.0 && 
+        force->special_coul[3] == 0.0) flag = 1;
+    if (flag && comm->me == 0)
+      error->warning(FLERR,"Using a manybody potential with "
+                     "bonds/angles/dihedrals and special_bond exclusions");
+  }
 
   // I,I coeffs must be set
   // init_one() will check if I,J is set explicitly or inferred by mixing
 
+  if (!allocated) error->all(FLERR,"All pair coeffs are not set");
+
   for (i = 1; i <= atom->ntypes; i++)
     if (setflag[i][i] == 0) error->all(FLERR,"All pair coeffs are not set");
 
diff --git a/src/pair.h b/src/pair.h
index 72eb257c85..e1cea71ddb 100644
--- a/src/pair.h
+++ b/src/pair.h
@@ -95,6 +95,7 @@ class Pair : protected Pointers {
   unsigned int datamask_ext;
 
   int compute_flag;              // 0 if skip compute()
+  int manybody_flag;             // 1 if abort for manybody style with bonds
 
   Pair(class LAMMPS *);
   virtual ~Pair();
-- 
GitLab