Consolidating some skip npair classes
This commit is contained in:
@ -22,7 +22,8 @@ using namespace LAMMPS_NS;
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
NPairSkip::NPairSkip(LAMMPS *lmp) : NPair(lmp) {}
|
||||
template<int SIZE, int TRIM>
|
||||
NPairSkipTemp<SIZE, TRIM>::NPairSkipTemp(LAMMPS *lmp) : NPair(lmp) {}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
build skip list for subset of types from parent list
|
||||
@ -32,7 +33,8 @@ NPairSkip::NPairSkip(LAMMPS *lmp) : NPair(lmp) {}
|
||||
if ghost, also store neighbors of ghost atoms & set inum,gnum correctly
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void NPairSkip::build(NeighList *list)
|
||||
template<int SIZE, int TRIM>
|
||||
void NPairSkipTemp<SIZE, TRIM>::build(NeighList *list)
|
||||
{
|
||||
int i, j, ii, jj, n, itype, jnum, joriginal;
|
||||
int *neighptr, *jlist;
|
||||
@ -57,6 +59,11 @@ void NPairSkip::build(NeighList *list)
|
||||
int inum = 0;
|
||||
ipage->reset();
|
||||
|
||||
double **x = atom->x;
|
||||
double xtmp, ytmp, ztmp;
|
||||
double delx, dely, delz, rsq;
|
||||
double cutsq_custom = cutoff_custom * cutoff_custom;
|
||||
|
||||
// loop over atoms in other list
|
||||
// skip I atom entirely if iskip is set for type[I]
|
||||
// skip I,J pair if ijskip is set for type[I],type[J]
|
||||
@ -66,6 +73,12 @@ void NPairSkip::build(NeighList *list)
|
||||
itype = type[i];
|
||||
if (iskip[itype]) continue;
|
||||
|
||||
if (TRIM) {
|
||||
xtmp = x[i][0];
|
||||
ytmp = x[i][1];
|
||||
ztmp = x[i][2];
|
||||
}
|
||||
|
||||
n = 0;
|
||||
neighptr = ipage->vget();
|
||||
|
||||
@ -78,6 +91,15 @@ void NPairSkip::build(NeighList *list)
|
||||
joriginal = jlist[jj];
|
||||
j = joriginal & NEIGHMASK;
|
||||
if (ijskip[itype][type[j]]) continue;
|
||||
|
||||
if (TRIM) {
|
||||
delx = xtmp - x[j][0];
|
||||
dely = ytmp - x[j][1];
|
||||
delz = ztmp - x[j][2];
|
||||
rsq = delx * delx + dely * dely + delz * delz;
|
||||
if (rsq > cutsq_custom) continue;
|
||||
}
|
||||
|
||||
neighptr[n++] = joriginal;
|
||||
}
|
||||
|
||||
@ -100,3 +122,10 @@ void NPairSkip::build(NeighList *list)
|
||||
list->gnum = inum - num;
|
||||
}
|
||||
}
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
template class NPairSkipTemp<0,0>;
|
||||
template class NPairSkipTemp<1,0>;
|
||||
template class NPairSkipTemp<0,1>;
|
||||
template class NPairSkipTemp<1,1>;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user