diff --git a/src/MANYBODY/pair_adp.cpp b/src/MANYBODY/pair_adp.cpp index 90d6eab223838a7f288bd6d282dcfc232deb29ae..4939965528e06b954a36ae30b49c689e44eb2541 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 28939dbeb375a9908c1773ecb4ae0e50c29fc30a..8665b736a9ace38951fa12a3b4a37f13a0a18cba 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 a66fa34d416fe6c99c058290b6f26cd45afcb4fd..3410e6c3f22651a6fdd0b6132abbca43ccfa52a1 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 f6170bdf6cdbe07c2bcdfecd6c1a55251ea768ba..2a071b91adcbf598d75602642989483db49d8c34 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 5e5f8f39306ec761c04cb8eae4128c0ba83ebdfb..629620101e8d141a6f768fe6b1855fd528d2b565 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 318d6421e6122dfa7028188de23daf5113c26080..6e46f6edb9ce7fd9e7acd54fbaebf176a9ce712d 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 875822fd5c0da28e34b2231f304772aa66ed0e12..80f423992803b612a741f4bb6e0a3bf17c79c941 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 f4418a25d24f29f65f0edf8e1e3a13fef5c5432a..f4f3fcc65350a12cd095c6a2b9a093030bcb5ef8 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 0de291b28664aa3c212560334038aac053ba31c1..06f04b1f2f54cfde1f97957083486929c133c9df 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 7af668d37fb57c8ed027235f36940cfebc2b0c17..5efc5b7c64d4f3f7795e2bcaf941a6851d9a96d3 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 6c3c006b12e4947d8516e00c0484e16240730eae..9e90a8902b98fb95adffbb400ce80da3716f240f 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 4a3b15898c6ec97d36c9957285a4c8719c548bed..bdfc9ea159de1530c1fbc4056dff9b5778c83f7c 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 341aba65d7c8aaade1cece11dd318f160d1f822e..e8db8a2a3d4d10d85ed5834975dd4e818691387f 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 47585562e2b7ef2df9824ba4174873a74e941d37..bc0d75adfd994c400db5635cd248386cb0cbbaaf 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 24ca5d0a673a65c3082ffad31061eeb4dc5e9253..1684bed227d3ed6f1416066952fb31555019aac2 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 bf3917a769b953d0a7ec80f524570a7742af5acd..d0385ab01043b05567e0d23165508f2348d9112c 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 ce25a86393b9ee89868bdf94e175f81a884c0068..f9940d8d8672b4662b09fce279e01cd7aa1dcac2 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 d4945afee674f2fcb4a280e811b6ac36163b2d91..1f5ee66a97dfcf1a4e1927c6799e525b3cfb059f 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 3908dbb32467f7d079b0dde7e28924ac22c87531..5efa8dd6023bbbcd426e7dbeff6ab98a5a741bd0 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 72eb257c85cab3529d03aa72ce64d6cf9c1eeedc..e1cea71ddb761a4ad944ada8d44d96a25fc91279 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();