Consolidating some skip npair classes

This commit is contained in:
jtclemm
2023-12-09 22:00:22 -07:00
parent a365cb15b0
commit bab9fc5533
20 changed files with 214 additions and 1056 deletions

View File

@ -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>;
}