is pair_meamc's neigh_strip() technique a best practice?


pair_meamc.cpp uses this code in its compute():

   if (neighbor->ago == 0) {

with the neigh_strip as:

void PairMEAMC::neigh_strip(int inum, int *ilist,
                            int *numneigh, int **firstneigh)
   int i,j,ii,jnum;
   int *jlist;

   for (ii = 0; ii < inum; ii++) {
     i = ilist[ii];
     jlist = firstneigh[i];
     jnum = numneigh[i];
     for (j = 0; j < jnum; j++) jlist[j] &= NEIGHMASK;

Is this a best practice approach for dealing with stripping the bond flags from the neighbor list?

Alternatively, in pair_kim.cpp the stripping process is only done if

   atom->molecular > 0

and the stripped neighbor list is stored in separate storage (instead of overwriting the original list).

For the update of pair_kim that I am working on, which alternative should I implement? Or should I combine the two in some way?

Many thanks,