Added exclusion delete function and bounds check for coord2bin

git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@14690 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
athomps
2016-02-26 23:39:53 +00:00
parent 12d18e27cf
commit 94d8894f86
2 changed files with 37 additions and 3 deletions

View File

@ -2062,7 +2062,7 @@ void Neighbor::bin_atoms()
int Neighbor::coord2bin(double *x)
{
int ix,iy,iz;
int ix,iy,iz,ibin;
if (x[0] >= bboxhi[0])
ix = static_cast<int> ((x[0]-bboxhi[0])*bininvx) + nbinx;
@ -2088,7 +2088,9 @@ int Neighbor::coord2bin(double *x)
} else
iz = static_cast<int> ((x[2]-bboxlo[2])*bininvz) - 1;
return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo);
ibin = (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo);
if (0 <= ibin && ibin < mbins) return ibin;
else error->one(FLERR,"Invalid neighor bin");
}
/* ----------------------------------------------------------------------
@ -2097,6 +2099,7 @@ int Neighbor::coord2bin(double *x)
int Neighbor::coord2bin(double *x, int &ix, int &iy, int &iz)
{
int ibin;
if (x[0] >= bboxhi[0])
ix = static_cast<int> ((x[0]-bboxhi[0])*bininvx) + nbinx;
else if (x[0] >= bboxlo[0]) {
@ -2124,7 +2127,9 @@ int Neighbor::coord2bin(double *x, int &ix, int &iy, int &iz)
ix -= mbinxlo;
iy -= mbinylo;
iz -= mbinzlo;
return iz*mbiny*mbinx + iy*mbinx + ix;
ibin = iz*mbiny*mbinx + iy*mbinx + ix;
if (0 <= ibin && ibin < mbins) return ibin;
else error->one(FLERR,"Invalid neighor bin");
}
/* ----------------------------------------------------------------------
@ -2190,3 +2195,31 @@ int Neighbor::exclude_setting()
{
return exclude;
}
void exclusion_group_group_delete(int, int); // remove a group-group exclusion
/* ----------------------------------------------------------------------
remove the first group-group exclusion matching group1, group2
------------------------------------------------------------------------- */
void Neighbor::exclusion_group_group_delete(int group1, int group2)
{
int m, mlast;
for (m = 0; m < nex_group; m++)
if (ex1_group[m] == group1 && ex2_group[m] == group2 )
break;
mlast = m;
if (mlast == nex_group)
error->all(FLERR,"Unable to find group-group exclusion");
for (m = mlast+1; m < nex_group; m++) {
ex1_group[m-1] = ex1_group[m];
ex2_group[m-1] = ex2_group[m];
ex1_bit[m-1] = ex1_bit[m];
ex2_bit[m-1] = ex2_bit[m];
}
nex_group--;
}

View File

@ -93,6 +93,7 @@ class Neighbor : protected Pointers {
void modify_params(int, char**); // modify parameters that control builds
bigint memory_usage();
int exclude_setting();
void exclusion_group_group_delete(int, int); // remove a group-group exclusion
// USER-DPD package