diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index 2c787d6398..8d260dd2be 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -207,8 +207,7 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) } // loop over all local atoms in other bins in "subphase" of stencil - k = (subphase > 0) ? nstencil_ssa[subphase - 1] : 0; - for (; k < nstencil_ssa[subphase]; k++) { + for (k = nstencil_ssa[subphase]; k < nstencil_ssa[subphase+1]; k++) { for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { jtype = type[j]; if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; diff --git a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp index 084d5b0602..5df65918d3 100644 --- a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp @@ -42,6 +42,7 @@ NStencilHalfBin2dNewtonSSA::NStencilHalfBin2dNewtonSSA(LAMMPS *lmp) : void NStencilHalfBin2dNewtonSSA::create() { int i,j,pos = 0; + nstencil_ssa[0] = 0; // redundant info, but saves a conditional // Subphase 0: upper right front bins (red) for (j = 0; j <= sy; j++) for (i = 0; i <= sx; i++) @@ -52,8 +53,8 @@ void NStencilHalfBin2dNewtonSSA::create() stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; } - nstencil_ssa[0] = pos; + nstencil_ssa[1] = pos; // Subphase 1: upper left front bins (light blue) for (j = 1; j <= sy; j++) for (i = -sx; i < 0; i++) @@ -63,21 +64,21 @@ void NStencilHalfBin2dNewtonSSA::create() stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; } - nstencil_ssa[1] = pos; - // Subphase 2: lower right front bins (yellow) nstencil_ssa[2] = pos; + // Subphase 2: lower right front bins (yellow) - // Subphase 3: lower left front bins (blue) nstencil_ssa[3] = pos; + // Subphase 3: lower left front bins (blue) + nstencil_ssa[4] = pos; // record end of half stencil // Now include additional bins for AIR ghosts, and impure-to-pure locals // Subphase 4: upper right back bins (pink) - nstencil_ssa[4] = pos; + // nstencil_ssa[5] = pos; // Subphase 5: upper left back bins (light green) - nstencil_ssa[5] = pos; + // nstencil_ssa[6] = pos; // Subphase 6: lower right back bins (white) for (j = -sy; j < 0; j++) for (i = 0; i <= sx; i++) @@ -87,8 +88,8 @@ void NStencilHalfBin2dNewtonSSA::create() stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; } - nstencil_ssa[6] = pos; + // nstencil_ssa[7] = pos; // Subphase 7: lower left back bins (purple) for (j = -sy; j <= 0; j++) for (i = -sx; i < 0; i++) @@ -98,7 +99,7 @@ void NStencilHalfBin2dNewtonSSA::create() stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; } - nstencil_ssa[7] = pos; + // nstencil_ssa[8] = pos; // Also, include the centroid for the AIR ghosts. stencilxyz[pos][0] = 0; diff --git a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp index 1741a1e847..3b1c85bdc1 100644 --- a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp @@ -42,6 +42,7 @@ NStencilHalfBin3dNewtonSSA::NStencilHalfBin3dNewtonSSA(LAMMPS *lmp) : void NStencilHalfBin3dNewtonSSA::create() { int i,j,k,pos = 0; + nstencil_ssa[0] = 0; // redundant info, but saves a conditional // Subphase 0: upper right front bins (red) for (k = 0; k <= sz; k++) for (j = 0; j <= sy; j++) @@ -53,8 +54,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[0] = pos; + nstencil_ssa[1] = pos; // Subphase 1: upper left front bins (light blue) for (k = 0; k <= sz; k++) for (j = 1; j <= sy; j++) @@ -65,8 +66,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[1] = pos; + nstencil_ssa[2] = pos; // Subphase 2: lower right front bins (yellow) for (k = 1; k <= sz; k++) for (j = -sy; j < 0; j++) @@ -77,8 +78,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[2] = pos; + nstencil_ssa[3] = pos; // Subphase 3: lower left front bins (blue) for (k = 1; k <= sz; k++) for (j = -sy; j <= 0; j++) @@ -89,8 +90,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[3] = pos; + nstencil_ssa[4] = pos; // record end of half stencil // Now include additional bins for AIR ghosts, and impure-to-pure locals // Subphase 4: upper right back bins (pink) for (k = -sz; k < 0; k++) @@ -102,8 +103,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[4] = pos; + // nstencil_ssa[5] = pos; // Subphase 5: upper left back bins (light green) for (k = -sz; k < 0; k++) for (j = 1; j <= sy; j++) @@ -114,8 +115,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[5] = pos; + // nstencil_ssa[6] = pos; // Subphase 6: lower right back bins (white) for (k = -sz; k <= 0; k++) for (j = -sy; j < 0; j++) @@ -126,8 +127,8 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[6] = pos; + // nstencil_ssa[7] = pos; // Subphase 7: lower left back bins (purple) for (k = -sz; k <= 0; k++) for (j = -sy; j <= 0; j++) @@ -138,7 +139,7 @@ void NStencilHalfBin3dNewtonSSA::create() stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; } - nstencil_ssa[7] = pos; + //nstencil_ssa[8] = pos; // Also, include the centroid for the AIR ghosts. stencilxyz[pos][0] = 0; diff --git a/src/USER-DPD/nstencil_ssa.h b/src/USER-DPD/nstencil_ssa.h index a5e3723271..f6f91fefde 100644 --- a/src/USER-DPD/nstencil_ssa.h +++ b/src/USER-DPD/nstencil_ssa.h @@ -24,7 +24,8 @@ class NStencilSSA : public NStencil { ~NStencilSSA() {} virtual void create() = 0; - int nstencil_ssa[8]; // last stencil index for each subphase + // first stencil index for each subphase, with last index at end + int nstencil_ssa[5]; }; }