From af11a54a272831e3383b1184871057ab88708928 Mon Sep 17 00:00:00 2001 From: Joel Clemmer Date: Thu, 12 Nov 2020 18:37:53 -0700 Subject: [PATCH] Copying more variables to classes and moving/clarifying definitions --- src/nbin.cpp | 93 ++++++++++++++++++++++ src/nbin.h | 2 +- src/nbin_multi2.cpp | 58 +------------- src/nbin_multi2.h | 1 - src/nbin_standard.cpp | 48 ----------- src/nbin_standard.h | 4 - src/nstencil.cpp | 119 ++++++++++++++++++---------- src/nstencil.h | 47 +++++++---- src/nstencil_full_multi2_2d.cpp | 17 ++-- src/nstencil_full_multi2_3d.cpp | 21 +++-- src/nstencil_half_multi2_2d.cpp | 13 +-- src/nstencil_half_multi2_2d_tri.cpp | 19 ++--- src/nstencil_half_multi2_3d.cpp | 23 +++--- src/nstencil_half_multi2_3d_tri.cpp | 23 +++--- 14 files changed, 252 insertions(+), 236 deletions(-) diff --git a/src/nbin.cpp b/src/nbin.cpp index cf6ef3ddd4..39c7ce6447 100644 --- a/src/nbin.cpp +++ b/src/nbin.cpp @@ -123,3 +123,96 @@ void NBin::copy_neighbor_info() if (cutoff_custom > 0.0) cutneighmax = cutoff_custom; } + + + +/* ---------------------------------------------------------------------- + convert atom coords into local bin # + for orthogonal, only ghost atoms will have coord >= bboxhi or coord < bboxlo + take special care to insure ghosts are in correct bins even w/ roundoff + hi ghost atoms = nbin,nbin+1,etc + owned atoms = 0 to nbin-1 + lo ghost atoms = -1,-2,etc + this is necessary so that both procs on either side of PBC + treat a pair of atoms straddling the PBC in a consistent way + for triclinic, doesn't matter since stencil & neigh list built differently +------------------------------------------------------------------------- */ + +int NBin::coord2bin(double *x) +{ + int ix,iy,iz; + + if (!std::isfinite(x[0]) || !std::isfinite(x[1]) || !std::isfinite(x[2])) + error->one(FLERR,"Non-numeric positions - simulation unstable"); + + if (x[0] >= bboxhi[0]) + ix = static_cast ((x[0]-bboxhi[0])*bininvx) + nbinx; + else if (x[0] >= bboxlo[0]) { + ix = static_cast ((x[0]-bboxlo[0])*bininvx); + ix = MIN(ix,nbinx-1); + } else + ix = static_cast ((x[0]-bboxlo[0])*bininvx) - 1; + + if (x[1] >= bboxhi[1]) + iy = static_cast ((x[1]-bboxhi[1])*bininvy) + nbiny; + else if (x[1] >= bboxlo[1]) { + iy = static_cast ((x[1]-bboxlo[1])*bininvy); + iy = MIN(iy,nbiny-1); + } else + iy = static_cast ((x[1]-bboxlo[1])*bininvy) - 1; + + if (x[2] >= bboxhi[2]) + iz = static_cast ((x[2]-bboxhi[2])*bininvz) + nbinz; + else if (x[2] >= bboxlo[2]) { + iz = static_cast ((x[2]-bboxlo[2])*bininvz); + iz = MIN(iz,nbinz-1); + } else + iz = static_cast ((x[2]-bboxlo[2])*bininvz) - 1; + + return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo); +} + + +/* ---------------------------------------------------------------------- + convert atom coords into local bin # for a particular type +------------------------------------------------------------------------- */ + +int NBin::coord2bin_multi2(double *x, int it) +{ + int ix,iy,iz; + int ibin; + + if (!std::isfinite(x[0]) || !std::isfinite(x[1]) || !std::isfinite(x[2])) + error->one(FLERR,"Non-numeric positions - simulation unstable"); + + if (x[0] >= bboxhi[0]) + ix = static_cast ((x[0]-bboxhi[0])*bininvx_multi2[it]) + nbinx_multi2[it]; + else if (x[0] >= bboxlo[0]) { + ix = static_cast ((x[0]-bboxlo[0])*bininvx_multi2[it]); + ix = MIN(ix,nbinx_multi2[it]-1); + } else + ix = static_cast ((x[0]-bboxlo[0])*bininvx_multi2[it]) - 1; + + if (x[1] >= bboxhi[1]) + iy = static_cast ((x[1]-bboxhi[1])*bininvy_multi2[it]) + nbiny_multi2[it]; + else if (x[1] >= bboxlo[1]) { + iy = static_cast ((x[1]-bboxlo[1])*bininvy_multi2[it]); + iy = MIN(iy,nbiny_multi2[it]-1); + } else + iy = static_cast ((x[1]-bboxlo[1])*bininvy_multi2[it]) - 1; + + if (x[2] >= bboxhi[2]) + iz = static_cast ((x[2]-bboxhi[2])*bininvz_multi2[it]) + nbinz_multi2[it]; + else if (x[2] >= bboxlo[2]) { + iz = static_cast ((x[2]-bboxlo[2])*bininvz_multi2[it]); + iz = MIN(iz,nbinz_multi2[it]-1); + } else + iz = static_cast ((x[2]-bboxlo[2])*bininvz_multi2[it]) - 1; + + + ibin = (iz-mbinzlo_multi2[it])*mbiny_multi2[it]*mbinx_multi2[it] + + (iy-mbinylo_multi2[it])*mbinx_multi2[it] + + (ix-mbinxlo_multi2[it]); + return ibin; +} + diff --git a/src/nbin.h b/src/nbin.h index 33b93ef79c..441e4815dd 100644 --- a/src/nbin.h +++ b/src/nbin.h @@ -97,7 +97,7 @@ class NBin : protected Pointers { // methods int coord2bin(double *); - int coord2bin(double *, int); + int coord2bin_multi2(double *, int); }; } diff --git a/src/nbin_multi2.cpp b/src/nbin_multi2.cpp index 7a87ba940c..f57558a36c 100644 --- a/src/nbin_multi2.cpp +++ b/src/nbin_multi2.cpp @@ -324,7 +324,7 @@ void NBinMulti2::bin_atoms() for (i = nall-1; i >= nlocal; i--) { if (mask[i] & bitmask) { n = type[i]; - ibin = coord2bin(x[i], n); + ibin = coord2bin_multi2(x[i], n); atom2bin_multi2[n][i] = ibin; bins_multi2[n][i] = binhead_multi2[n][ibin]; binhead_multi2[n][ibin] = i; @@ -332,7 +332,7 @@ void NBinMulti2::bin_atoms() } for (i = atom->nfirst-1; i >= 0; i--) { n = type[i]; - ibin = coord2bin(x[i], n); + ibin = coord2bin_multi2(x[i], n); atom2bin_multi2[n][i] = ibin; bins_multi2[n][i] = binhead_multi2[n][ibin]; binhead_multi2[n][ibin] = i; @@ -340,7 +340,7 @@ void NBinMulti2::bin_atoms() } else { for (i = nall-1; i >= 0; i--) { n = type[i]; - ibin = coord2bin(x[i], n); + ibin = coord2bin_multi2(x[i], n); atom2bin_multi2[n][i] = ibin; bins_multi2[n][i] = binhead_multi2[n][ibin]; binhead_multi2[n][ibin] = i; @@ -348,58 +348,6 @@ void NBinMulti2::bin_atoms() } } -/* ---------------------------------------------------------------------- - convert atom coords into local bin # for a particular type - for orthogonal, only ghost atoms will have coord >= bboxhi or coord < bboxlo - take special care to insure ghosts are in correct bins even w/ roundoff - hi ghost atoms = nbin,nbin+1,etc - owned atoms = 0 to nbin-1 - lo ghost atoms = -1,-2,etc - this is necessary so that both procs on either side of PBC - treat a pair of atoms straddling the PBC in a consistent way - for triclinic, doesn't matter since stencil & neigh list built differently -------------------------------------------------------------------------- */ - -int NBinMulti2::coord2bin(double *x, int it) -{ - int ix,iy,iz; - int ibin; - - if (!std::isfinite(x[0]) || !std::isfinite(x[1]) || !std::isfinite(x[2])) - error->one(FLERR,"Non-numeric positions - simulation unstable"); - - if (x[0] >= bboxhi[0]) - ix = static_cast ((x[0]-bboxhi[0])*bininvx_multi2[it]) + nbinx_multi2[it]; - else if (x[0] >= bboxlo[0]) { - ix = static_cast ((x[0]-bboxlo[0])*bininvx_multi2[it]); - ix = MIN(ix,nbinx_multi2[it]-1); - } else - ix = static_cast ((x[0]-bboxlo[0])*bininvx_multi2[it]) - 1; - - if (x[1] >= bboxhi[1]) - iy = static_cast ((x[1]-bboxhi[1])*bininvy_multi2[it]) + nbiny_multi2[it]; - else if (x[1] >= bboxlo[1]) { - iy = static_cast ((x[1]-bboxlo[1])*bininvy_multi2[it]); - iy = MIN(iy,nbiny_multi2[it]-1); - } else - iy = static_cast ((x[1]-bboxlo[1])*bininvy_multi2[it]) - 1; - - if (x[2] >= bboxhi[2]) - iz = static_cast ((x[2]-bboxhi[2])*bininvz_multi2[it]) + nbinz_multi2[it]; - else if (x[2] >= bboxlo[2]) { - iz = static_cast ((x[2]-bboxlo[2])*bininvz_multi2[it]); - iz = MIN(iz,nbinz_multi2[it]-1); - } else - iz = static_cast ((x[2]-bboxlo[2])*bininvz_multi2[it]) - 1; - - - ibin = (iz-mbinzlo_multi2[it])*mbiny_multi2[it]*mbinx_multi2[it] - + (iy-mbinylo_multi2[it])*mbinx_multi2[it] - + (ix-mbinxlo_multi2[it]); - return ibin; -} - - /* ---------------------------------------------------------------------- */ double NBinMulti2::memory_usage() diff --git a/src/nbin_multi2.h b/src/nbin_multi2.h index 8cca7b1023..3094027f64 100644 --- a/src/nbin_multi2.h +++ b/src/nbin_multi2.h @@ -38,7 +38,6 @@ class NBinMulti2 : public NBin { private: - int coord2bin(double *, int); int itype_min(); }; diff --git a/src/nbin_standard.cpp b/src/nbin_standard.cpp index 07dfd3a6cb..4298a9670c 100644 --- a/src/nbin_standard.cpp +++ b/src/nbin_standard.cpp @@ -259,54 +259,6 @@ void NBinStandard::bin_atoms() } } - -/* ---------------------------------------------------------------------- - convert atom coords into local bin # - for orthogonal, only ghost atoms will have coord >= bboxhi or coord < bboxlo - take special care to insure ghosts are in correct bins even w/ roundoff - hi ghost atoms = nbin,nbin+1,etc - owned atoms = 0 to nbin-1 - lo ghost atoms = -1,-2,etc - this is necessary so that both procs on either side of PBC - treat a pair of atoms straddling the PBC in a consistent way - for triclinic, doesn't matter since stencil & neigh list built differently -------------------------------------------------------------------------- */ - -int NBinStandard::coord2bin(double *x) -{ - int ix,iy,iz; - - if (!std::isfinite(x[0]) || !std::isfinite(x[1]) || !std::isfinite(x[2])) - error->one(FLERR,"Non-numeric positions - simulation unstable"); - - if (x[0] >= bboxhi[0]) - ix = static_cast ((x[0]-bboxhi[0])*bininvx) + nbinx; - else if (x[0] >= bboxlo[0]) { - ix = static_cast ((x[0]-bboxlo[0])*bininvx); - ix = MIN(ix,nbinx-1); - } else - ix = static_cast ((x[0]-bboxlo[0])*bininvx) - 1; - - if (x[1] >= bboxhi[1]) - iy = static_cast ((x[1]-bboxhi[1])*bininvy) + nbiny; - else if (x[1] >= bboxlo[1]) { - iy = static_cast ((x[1]-bboxlo[1])*bininvy); - iy = MIN(iy,nbiny-1); - } else - iy = static_cast ((x[1]-bboxlo[1])*bininvy) - 1; - - if (x[2] >= bboxhi[2]) - iz = static_cast ((x[2]-bboxhi[2])*bininvz) + nbinz; - else if (x[2] >= bboxlo[2]) { - iz = static_cast ((x[2]-bboxlo[2])*bininvz); - iz = MIN(iz,nbinz-1); - } else - iz = static_cast ((x[2]-bboxlo[2])*bininvz) - 1; - - return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo); -} - - /* ---------------------------------------------------------------------- */ double NBinStandard::memory_usage() diff --git a/src/nbin_standard.h b/src/nbin_standard.h index d8ecb435b7..89b749c948 100644 --- a/src/nbin_standard.h +++ b/src/nbin_standard.h @@ -34,10 +34,6 @@ class NBinStandard : public NBin { void setup_bins(int); void bin_atoms(); double memory_usage(); - - private: - - int coord2bin(double *); }; } diff --git a/src/nstencil.cpp b/src/nstencil.cpp index c537767d64..2ace1125e8 100644 --- a/src/nstencil.cpp +++ b/src/nstencil.cpp @@ -124,13 +124,17 @@ NStencil::~NStencil() memory->destroy(stencil_bin_type); memory->destroy(stencil_cut); - memory->destroy(sx_multi2); - memory->destroy(sy_multi2); - memory->destroy(sz_multi2); + memory->destroy(stencil_sx_multi2); + memory->destroy(stencil_sy_multi2); + memory->destroy(stencil_sz_multi2); + + memory->destroy(stencil_mbinx_multi2); + memory->destroy(stencil_mbiny_multi2); + memory->destroy(stencil_mbinz_multi2); - memory->destroy(binsizex_multi2); - memory->destroy(binsizey_multi2); - memory->destroy(binsizez_multi2); + memory->destroy(stencil_binsizex_multi2); + memory->destroy(stencil_binsizey_multi2); + memory->destroy(stencil_binsizez_multi2); } } @@ -181,20 +185,20 @@ void NStencil::copy_bin_info() } /* ---------------------------------------------------------------------- - copy needed info for a given type from NBin class to this stencil class + copy needed info for multi2 from NBin class to this stencil class ------------------------------------------------------------------------- */ -void NStencil::copy_bin_info_multi2(int type) +void NStencil::copy_bin_info_multi2() { - mbinx = nb->mbinx_multi2[type]; - mbiny = nb->mbiny_multi2[type]; - mbinz = nb->mbinz_multi2[type]; - binsizex = nb->binsizex_multi2[type]; - binsizey = nb->binsizey_multi2[type]; - binsizez = nb->binsizez_multi2[type]; - bininvx = nb->bininvx_multi2[type]; - bininvy = nb->bininvy_multi2[type]; - bininvz = nb->bininvz_multi2[type]; + mbinx_multi2 = nb->mbinx_multi2; + mbiny_multi2 = nb->mbiny_multi2; + mbinz_multi2 = nb->mbinz_multi2; + binsizex_multi2 = nb->binsizex_multi2; + binsizey_multi2 = nb->binsizey_multi2; + binsizez_multi2 = nb->binsizez_multi2; + bininvx_multi2 = nb->bininvx_multi2; + bininvy_multi2 = nb->bininvy_multi2; + bininvz_multi2 = nb->bininvz_multi2; } /* ---------------------------------------------------------------------- @@ -266,6 +270,8 @@ void NStencil::create_setup() int i, j, bin_type, smax; double stencil_range; int n = atom->ntypes; + + if(nb) copy_bin_info_multi2(); // Allocate arrays to store stencil information memory->create(stencil_half, n+1, n+1, @@ -277,20 +283,26 @@ void NStencil::create_setup() memory->create(stencil_cut, n+1, n+1, "neighstencil:stencil_cut"); - memory->create(sx_multi2, n+1, n+1, "neighstencil:sx_multi2"); - memory->create(sy_multi2, n+1, n+1, "neighstencil:sy_multi2"); - memory->create(sz_multi2, n+1, n+1, "neighstencil:sz_multi2"); + memory->create(stencil_sx_multi2, n+1, n+1, + "neighstencil:stencil_sx_multi2"); + memory->create(stencil_sy_multi2, n+1, n+1, + "neighstencil:stencil_sy_multi2"); + memory->create(stencil_sz_multi2, n+1, n+1, + "neighstencil:stencil_sz_multi2"); - memory->create(binsizex_multi2, n+1, n+1, - "neighstencil:binsizex_multi2"); - memory->create(binsizey_multi2, n+1, n+1, - "neighstencil:binsizey_multi2"); - memory->create(binsizez_multi2, n+1, n+1, - "neighstencil:binsizez_multi2"); + memory->create(stencil_binsizex_multi2, n+1, n+1, + "neighstencil:stencil_binsizex_multi2"); + memory->create(stencil_binsizey_multi2, n+1, n+1, + "neighstencil:stencil_binsizey_multi2"); + memory->create(stencil_binsizez_multi2, n+1, n+1, + "neighstencil:stencil_binsizez_multi2"); - memory->create(mbinx_multi2, n+1, n+1, "neighstencil:mbinx_multi2"); - memory->create(mbiny_multi2, n+1, n+1, "neighstencil:mbiny_multi2"); - memory->create(mbinz_multi2, n+1, n+1, "neighstencil:mbinz_multi2"); + memory->create(stencil_mbinx_multi2, n+1, n+1, + "neighstencil:stencil_mbinx_multi2"); + memory->create(stencil_mbiny_multi2, n+1, n+1, + "neighstencil:stencil_mbiny_multi2"); + memory->create(stencil_mbinz_multi2, n+1, n+1, + "neighstencil:stencil_mbinz_multi2"); // Skip all stencils by default, initialize smax for (i = 1; i <= n; i++) { @@ -324,28 +336,27 @@ void NStencil::create_setup() // Copy bin info for this particular pair of types bin_type = stencil_bin_type[i][j]; - copy_bin_info_multi2(bin_type); - binsizex_multi2[i][j] = binsizex; - binsizey_multi2[i][j] = binsizey; - binsizez_multi2[i][j] = binsizez; + stencil_binsizex_multi2[i][j] = binsizex_multi2[bin_type]; + stencil_binsizey_multi2[i][j] = binsizey_multi2[bin_type]; + stencil_binsizez_multi2[i][j] = binsizez_multi2[bin_type]; - mbinx_multi2[i][j] = mbinx; - mbiny_multi2[i][j] = mbiny; - mbinz_multi2[i][j] = mbinz; + stencil_mbinx_multi2[i][j] = mbinx_multi2[bin_type]; + stencil_mbiny_multi2[i][j] = mbiny_multi2[bin_type]; + stencil_mbinz_multi2[i][j] = mbinz_multi2[bin_type]; stencil_range = stencil_cut[i][j]; - sx = static_cast (stencil_range*bininvx); + sx = static_cast (stencil_range*bininvx_multi2[bin_type]); if (sx*binsizex < stencil_range) sx++; - sy = static_cast (stencil_range*bininvy); + sy = static_cast (stencil_range*bininvy_multi2[bin_type]); if (sy*binsizey < stencil_range) sy++; - sz = static_cast (stencil_range*bininvz); + sz = static_cast (stencil_range*bininvz_multi2[bin_type]); if (sz*binsizez < stencil_range) sz++; - sx_multi2[i][j] = sx; - sy_multi2[i][j] = sy; - sz_multi2[i][j] = sz; + stencil_sx_multi2[i][j] = sx; + stencil_sy_multi2[i][j] = sy; + stencil_sz_multi2[i][j] = sz; smax = ((2*sx+1) * (2*sy+1) * (2*sz+1)); @@ -383,6 +394,30 @@ double NStencil::bin_distance(int i, int j, int k) return (delx*delx + dely*dely + delz*delz); } + +/* ---------------------------------------------------------------------- + compute closest distance for a given atom type +------------------------------------------------------------------------- */ + +double NStencil::bin_distance_multi2(int i, int j, int k, int type) +{ + double delx,dely,delz; + + if (i > 0) delx = (i-1)*binsizex_multi2[type]; + else if (i == 0) delx = 0.0; + else delx = (i+1)*binsizex_multi2[type]; + + if (j > 0) dely = (j-1)*binsizey_multi2[type]; + else if (j == 0) dely = 0.0; + else dely = (j+1)*binsizey_multi2[type]; + + if (k > 0) delz = (k-1)*binsizez_multi2[type]; + else if (k == 0) delz = 0.0; + else delz = (k+1)*binsizez_multi2[type]; + + return (delx*delx + dely*dely + delz*delz); +} + /* ---------------------------------------------------------------------- */ double NStencil::memory_usage() diff --git a/src/nstencil.h b/src/nstencil.h index 5f010cb377..68c7702f79 100644 --- a/src/nstencil.h +++ b/src/nstencil.h @@ -39,13 +39,13 @@ class NStencil : protected Pointers { // Probably not needed for multi2 since bins are more efficiently chosen int sx,sy,sz; // extent of stencil in each dim - int **sx_multi2; // analogs for multi tiered - int **sy_multi2; - int **sz_multi2; + int **stencil_sx_multi2; // analogs for each multi2 stencil + int **stencil_sy_multi2; + int **stencil_sz_multi2; double cutoff_custom; // cutoff set by requestor - // Arrays to store options for multi/tiered itype-jtype stencils + // Arrays to store options for multi2 itype-jtype stencils bool **stencil_half; // flag creation of a half stencil for itype-jtype bool **stencil_skip; // skip creation of itype-jtype stencils (for newton on) int **stencil_bin_type; // what type to use for bin information @@ -78,15 +78,27 @@ class NStencil : protected Pointers { double binsizex,binsizey,binsizez; double bininvx,bininvy,bininvz; - // analogs for multi-tiered + // data from NBin class for multi2 + + int *mbinx_multi2; + int *mbiny_multi2; + int *mbinz_multi2; + double *binsizex_multi2; + double *binsizey_multi2; + double *binsizez_multi2; + double *bininvx_multi2; + double *bininvy_multi2; + double *bininvz_multi2; + + // Stored bin information for each stencil + + int **stencil_mbinx_multi2; + int **stencil_mbiny_multi2; + int **stencil_mbinz_multi2; + double **stencil_binsizex_multi2; + double **stencil_binsizey_multi2; + double **stencil_binsizez_multi2; - int **mbinx_multi2; - int **mbiny_multi2; - int **mbinz_multi2; - double **binsizex_multi2; - double **binsizey_multi2; - double **binsizez_multi2; - // data common to all NStencil variants int xyzflag; // 1 if stencilxyz is allocated @@ -95,15 +107,16 @@ class NStencil : protected Pointers { int dimension; - // methods for all NStencil variants + // methods for standard NStencil variants void copy_bin_info(); // copy info from NBin class double bin_distance(int, int, int); // distance between bin corners - // methods for multi/tiered NStencil - - void copy_bin_info_multi2(int); // copy mult/tiered info from NBin class - virtual void set_stencil_properties(){} // determine which stencils to build and how + // methods for multi2 NStencil + + double bin_distance_multi2(int, int, int, int); // distance between bin corners for different types + void copy_bin_info_multi2(); // copy mult2 info from NBin class + virtual void set_stencil_properties(){} // determine which stencils to build and how }; } diff --git a/src/nstencil_full_multi2_2d.cpp b/src/nstencil_full_multi2_2d.cpp index c59edbe90d..627a1e2f9e 100644 --- a/src/nstencil_full_multi2_2d.cpp +++ b/src/nstencil_full_multi2_2d.cpp @@ -68,7 +68,7 @@ void NStencilFullMulti22d::set_stencil_properties() void NStencilFullMulti22d::create() { - int itype, jtype, i, j, k, ns; + int itype, jtype, bin_type, i, j, k, ns; int n = atom->ntypes; double cutsq; @@ -79,22 +79,19 @@ void NStencilFullMulti22d::create() ns = 0; - sx = sx_multi2[itype][jtype]; - sy = sy_multi2[itype][jtype]; + sx = stencil_sx_multi2[itype][jtype]; + sy = stencil_sy_multi2[itype][jtype]; - mbinx = mbinx_multi2[itype][jtype]; - mbiny = mbiny_multi2[itype][jtype]; + mbinx = stencil_mbinx_multi2[itype][jtype]; + mbiny = stencil_mbiny_multi2[itype][jtype]; - // Redefine for use in bin_distance() - binsizex = binsizex_multi2[itype][jtype]; - binsizey = binsizey_multi2[itype][jtype]; - binsizez = binsizez_multi2[itype][jtype]; + bin_type = stencil_bin_type[i][j]; cutsq = stencil_cut[itype][jtype]; for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,0) < cutsq) + if (bin_distance_multi2(i,j,0,bin_type) < cutsq) stencil_multi2[itype][jtype][ns++] = j*mbinx + i; nstencil_multi2[itype][jtype] = ns; diff --git a/src/nstencil_full_multi2_3d.cpp b/src/nstencil_full_multi2_3d.cpp index 6021382022..19bf30ec07 100644 --- a/src/nstencil_full_multi2_3d.cpp +++ b/src/nstencil_full_multi2_3d.cpp @@ -68,7 +68,7 @@ void NStencilFullMulti23d::set_stencil_properties() void NStencilFullMulti23d::create() { - int itype, jtype, i, j, k, ns; + int itype, jtype, bin_type, i, j, k, ns; int n = atom->ntypes; double cutsq; @@ -79,25 +79,22 @@ void NStencilFullMulti23d::create() ns = 0; - sx = sx_multi2[itype][jtype]; - sy = sy_multi2[itype][jtype]; - sz = sz_multi2[itype][jtype]; + sx = stencil_sx_multi2[itype][jtype]; + sy = stencil_sy_multi2[itype][jtype]; + sz = stencil_sz_multi2[itype][jtype]; - mbinx = mbinx_multi2[itype][jtype]; - mbiny = mbiny_multi2[itype][jtype]; - mbinz = mbinz_multi2[itype][jtype]; + mbinx = stencil_mbinx_multi2[itype][jtype]; + mbiny = stencil_mbiny_multi2[itype][jtype]; + mbinz = stencil_mbinz_multi2[itype][jtype]; - // Redefine for use in bin_distance() - binsizex = binsizex_multi2[itype][jtype]; - binsizey = binsizey_multi2[itype][jtype]; - binsizez = binsizez_multi2[itype][jtype]; + bin_type = stencil_bin_type[i][j]; cutsq = stencil_cut[itype][jtype]; for (k = -sz; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,k) < cutsq) + if (bin_distance_multi2(i,j,k,bin_type) < cutsq) stencil_multi2[itype][jtype][ns++] = k*mbiny*mbinx + j*mbinx + i; diff --git a/src/nstencil_half_multi2_2d.cpp b/src/nstencil_half_multi2_2d.cpp index 89d2903f1c..2a3c8da45c 100644 --- a/src/nstencil_half_multi2_2d.cpp +++ b/src/nstencil_half_multi2_2d.cpp @@ -82,16 +82,11 @@ void NStencilHalfMulti22d::create() ns = 0; - sx = sx_multi2[itype][jtype]; - sy = sy_multi2[itype][jtype]; + sx = stencil_sx_multi2[itype][jtype]; + sy = stencil_sy_multi2[itype][jtype]; - mbinx = mbinx_multi2[itype][jtype]; - mbiny = mbiny_multi2[itype][jtype]; - - // Redefine for use in bin_distance() - binsizex = binsizex_multi2[itype][jtype]; - binsizey = binsizey_multi2[itype][jtype]; - binsizez = binsizez_multi2[itype][jtype]; + mbinx = stencil_mbinx_multi2[itype][jtype]; + mbiny = stencil_mbiny_multi2[itype][jtype]; cutsq = stencil_cut[itype][jtype]; diff --git a/src/nstencil_half_multi2_2d_tri.cpp b/src/nstencil_half_multi2_2d_tri.cpp index 4b4019cef2..08568139ad 100755 --- a/src/nstencil_half_multi2_2d_tri.cpp +++ b/src/nstencil_half_multi2_2d_tri.cpp @@ -71,7 +71,7 @@ void NStencilHalfMulti22dTri::set_stencil_properties() void NStencilHalfMulti22dTri::create() { - int itype, jtype, i, j, ns; + int itype, jtype, bin_type, i, j, ns; int n = atom->ntypes; double cutsq; @@ -82,28 +82,25 @@ void NStencilHalfMulti22dTri::create() ns = 0; - sx = sx_multi2[itype][jtype]; - sy = sy_multi2[itype][jtype]; + sx = stencil_sx_multi2[itype][jtype]; + sy = stencil_sy_multi2[itype][jtype]; - mbinx = mbinx_multi2[itype][jtype]; - mbiny = mbiny_multi2[itype][jtype]; + mbinx = stencil_mbinx_multi2[itype][jtype]; + mbiny = stencil_mbiny_multi2[itype][jtype]; - // Redefine for use in bin_distance() - binsizex = binsizex_multi2[itype][jtype]; - binsizey = binsizey_multi2[itype][jtype]; - binsizez = binsizez_multi2[itype][jtype]; + bin_type = stencil_bin_type[i][j]; cutsq = stencil_cut[itype][jtype]; if (stencil_half[itype][jtype]) { for (j = 0; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,0) < cutsq) + if (bin_distance_multi2(i,j,0,bin_type) < cutsq) stencil_multi2[itype][jtype][ns++] = j*mbinx + i; } else { for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,0) < cutsq) + if (bin_distance_multi2(i,j,0,bin_type) < cutsq) stencil_multi2[itype][jtype][ns++] = j*mbinx + i; } diff --git a/src/nstencil_half_multi2_3d.cpp b/src/nstencil_half_multi2_3d.cpp index 1777e748de..21bd29269a 100644 --- a/src/nstencil_half_multi2_3d.cpp +++ b/src/nstencil_half_multi2_3d.cpp @@ -71,7 +71,7 @@ void NStencilHalfMulti23d::set_stencil_properties() void NStencilHalfMulti23d::create() { - int itype, jtype, i, j, k, ns; + int itype, jtype, bin_type, i, j, k, ns; int n = atom->ntypes; double cutsq; @@ -82,18 +82,15 @@ void NStencilHalfMulti23d::create() ns = 0; - sx = sx_multi2[itype][jtype]; - sy = sy_multi2[itype][jtype]; - sz = sz_multi2[itype][jtype]; + sx = stencil_sx_multi2[itype][jtype]; + sy = stencil_sy_multi2[itype][jtype]; + sz = stencil_sz_multi2[itype][jtype]; - mbinx = mbinx_multi2[itype][jtype]; - mbiny = mbiny_multi2[itype][jtype]; - mbinz = mbinz_multi2[itype][jtype]; + mbinx = stencil_mbinx_multi2[itype][jtype]; + mbiny = stencil_mbiny_multi2[itype][jtype]; + mbinz = stencil_mbinz_multi2[itype][jtype]; - // Redefine for use in bin_distance() - binsizex = binsizex_multi2[itype][jtype]; - binsizey = binsizey_multi2[itype][jtype]; - binsizez = binsizez_multi2[itype][jtype]; + bin_type = stencil_bin_type[i][j]; cutsq = stencil_cut[itype][jtype]; @@ -102,7 +99,7 @@ void NStencilHalfMulti23d::create() for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) if (k > 0 || j > 0 || (j == 0 && i > 0)) { - if (bin_distance(i,j,k) < cutsq) + if (bin_distance_multi2(i,j,k,bin_type) < cutsq) stencil_multi2[itype][jtype][ns++] = k*mbiny*mbinx + j*mbinx + i; } @@ -110,7 +107,7 @@ void NStencilHalfMulti23d::create() for (k = -sz; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,k) < cutsq) + if (bin_distance_multi2(i,j,k,bin_type) < cutsq) stencil_multi2[itype][jtype][ns++] = k*mbiny*mbinx + j*mbinx + i; } diff --git a/src/nstencil_half_multi2_3d_tri.cpp b/src/nstencil_half_multi2_3d_tri.cpp index 4a9ba63b20..1b71a096e3 100755 --- a/src/nstencil_half_multi2_3d_tri.cpp +++ b/src/nstencil_half_multi2_3d_tri.cpp @@ -71,7 +71,7 @@ void NStencilHalfMulti23dTri::set_stencil_properties() void NStencilHalfMulti23dTri::create() { - int itype, jtype, i, j, k, ns; + int itype, jtype, bin_type, i, j, k, ns; int n = atom->ntypes; double cutsq; @@ -82,18 +82,15 @@ void NStencilHalfMulti23dTri::create() ns = 0; - sx = sx_multi2[itype][jtype]; - sy = sy_multi2[itype][jtype]; - sz = sz_multi2[itype][jtype]; + sx = stencil_sx_multi2[itype][jtype]; + sy = stencil_sy_multi2[itype][jtype]; + sz = stencil_sz_multi2[itype][jtype]; - mbinx = mbinx_multi2[itype][jtype]; - mbiny = mbiny_multi2[itype][jtype]; - mbinz = mbinz_multi2[itype][jtype]; + mbinx = stencil_mbinx_multi2[itype][jtype]; + mbiny = stencil_mbiny_multi2[itype][jtype]; + mbinz = stencil_mbinz_multi2[itype][jtype]; - // Redefine for use in bin_distance() - binsizex = binsizex_multi2[itype][jtype]; - binsizey = binsizey_multi2[itype][jtype]; - binsizez = binsizez_multi2[itype][jtype]; + bin_type = stencil_bin_type[i][j]; cutsq = stencil_cut[itype][jtype]; @@ -101,14 +98,14 @@ void NStencilHalfMulti23dTri::create() for (k = 0; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,k) < cutsq) + if (bin_distance_multi2(i,j,k,bin_type) < cutsq) stencil_multi2[itype][jtype][ns++] = k*mbiny*mbinx + j*mbinx + i; } else { for (k = -sz; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,k) < cutsq) + if (bin_distance_multi2(i,j,k,bin_type) < cutsq) stencil_multi2[itype][jtype][ns++] = k*mbiny*mbinx + j*mbinx + i; }