Merge branch 'master' into prepare-clang-format
# Conflicts: # src/KOKKOS/nbin_kokkos.h # src/KOKKOS/nbin_ssa_kokkos.h # src/MOLECULE/bond_fene_expand.h # src/USER-DPD/nbin_ssa.h # src/USER-DPD/nstencil_half_bin_2d_ssa.h # src/USER-DPD/nstencil_half_bin_3d_ssa.h # src/USER-INTEL/nbin_intel.h # src/USER-MISC/fix_propel_self.cpp # src/USER-OMP/npair_full_multi_old_omp.h # src/USER-OMP/npair_half_multi_old_newton_omp.h # src/USER-OMP/npair_half_size_multi_newtoff_omp.h # src/USER-OMP/npair_halffull_newtoff_omp.h # src/USER-OMP/npair_halffull_newton_omp.h # src/USER-OMP/npair_skip_omp.h # src/main.cpp # src/nbin_standard.h # src/npair_full_multi_old.h # src/npair_halffull_newtoff.h # src/npair_halffull_newton.h # src/npair_skip.h # src/npair_skip_respa.h # src/npair_skip_size.h # src/npair_skip_size_off2on.h # src/npair_skip_size_off2on_oneside.h # src/nstencil_full_bin_2d.h # src/nstencil_full_bin_3d.h # src/nstencil_full_ghost_bin_2d.h # src/nstencil_full_ghost_bin_3d.h # src/nstencil_full_multi_2d.h # src/nstencil_full_multi_3d.h # src/nstencil_full_multi_old_2d.h # src/nstencil_full_multi_old_3d.h # src/nstencil_half_bin_2d_newtoff.cpp # src/nstencil_half_bin_3d_newtoff.cpp # src/nstencil_half_bin_3d_newton_tri.h # src/nstencil_half_ghost_bin_2d_newtoff.cpp # src/nstencil_half_ghost_bin_2d_newtoff.h # src/nstencil_half_ghost_bin_3d_newtoff.cpp # src/nstencil_half_ghost_bin_3d_newtoff.h # src/nstencil_half_multi_2d.h # src/nstencil_half_multi_2d_newtoff.h # src/nstencil_half_multi_2d_newton_tri.h # src/nstencil_half_multi_2d_tri.h # src/nstencil_half_multi_3d_newtoff.h # src/nstencil_half_multi_3d_newton_tri.h
This commit is contained in:
@ -32,6 +32,7 @@
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
#include <vector>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
@ -54,6 +55,7 @@ CommTiled::CommTiled(LAMMPS *lmp) : Comm(lmp)
|
||||
overlap = nullptr;
|
||||
rcbinfo = nullptr;
|
||||
cutghostmulti = nullptr;
|
||||
cutghostmultiold = nullptr;
|
||||
init_buffers();
|
||||
}
|
||||
|
||||
@ -82,6 +84,7 @@ CommTiled::~CommTiled()
|
||||
deallocate_swap(maxswap);
|
||||
memory->sfree(rcbinfo);
|
||||
memory->destroy(cutghostmulti);
|
||||
memory->destroy(cutghostmultiold);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
@ -99,8 +102,11 @@ void CommTiled::init_buffers()
|
||||
overlap = nullptr;
|
||||
rcbinfo = nullptr;
|
||||
cutghostmulti = nullptr;
|
||||
cutghostmultiold = nullptr;
|
||||
sendbox_multi = nullptr;
|
||||
sendbox_multiold = nullptr;
|
||||
|
||||
// Note this may skip growing multi arrays, will call again in init()
|
||||
maxswap = 6;
|
||||
allocate_swap(maxswap);
|
||||
}
|
||||
@ -117,8 +123,30 @@ void CommTiled::init()
|
||||
nswap = 2*domain->dimension;
|
||||
|
||||
memory->destroy(cutghostmulti);
|
||||
if (mode == Comm::MULTI)
|
||||
memory->create(cutghostmulti,atom->ntypes+1,3,"comm:cutghostmulti");
|
||||
if (mode == Comm::MULTI) {
|
||||
// If inconsitent # of collections, destroy any preexisting arrays (may be missized)
|
||||
if (ncollections != neighbor->ncollections) {
|
||||
ncollections = neighbor->ncollections;
|
||||
}
|
||||
|
||||
// delete any old user cutoffs if # of collections chanaged
|
||||
if (cutusermulti && ncollections != ncollections_cutoff) {
|
||||
if(me == 0) error->warning(FLERR, "cutoff/multi settings discarded, must be defined"
|
||||
" after customizing collections in neigh_modify");
|
||||
memory->destroy(cutusermulti);
|
||||
cutusermulti = nullptr;
|
||||
}
|
||||
|
||||
// grow sendbox_multi now that ncollections is known
|
||||
for (int i = 0; i < maxswap; i ++)
|
||||
grow_swap_send_multi(i,DELTA_PROCS);
|
||||
|
||||
memory->create(cutghostmulti,ncollections,3,"comm:cutghostmulti");
|
||||
}
|
||||
|
||||
memory->destroy(cutghostmultiold);
|
||||
if (mode == Comm::MULTIOLD)
|
||||
memory->create(cutghostmultiold,atom->ntypes+1,3,"comm:cutghostmultiold");
|
||||
|
||||
int bufextra_old = bufextra;
|
||||
init_exchange();
|
||||
@ -176,14 +204,42 @@ void CommTiled::setup()
|
||||
// check that cutoff < any periodic box length
|
||||
|
||||
if (mode == Comm::MULTI) {
|
||||
double **cutcollectionsq = neighbor->cutcollectionsq;
|
||||
|
||||
// build collection array for atom exchange
|
||||
neighbor->build_collection(0);
|
||||
|
||||
// If using multi/reduce, communicate particles a distance equal
|
||||
// to the max cutoff with equally sized or smaller collections
|
||||
// If not, communicate the maximum cutoff of the entire collection
|
||||
for (i = 0; i < ncollections; i++) {
|
||||
if (cutusermulti) {
|
||||
cutghostmulti[i][0] = cutusermulti[i];
|
||||
cutghostmulti[i][1] = cutusermulti[i];
|
||||
cutghostmulti[i][2] = cutusermulti[i];
|
||||
} else {
|
||||
cutghostmulti[i][0] = 0.0;
|
||||
cutghostmulti[i][1] = 0.0;
|
||||
cutghostmulti[i][2] = 0.0;
|
||||
}
|
||||
|
||||
for (j = 0; j < ncollections; j++){
|
||||
if (multi_reduce && (cutcollectionsq[j][j] > cutcollectionsq[i][i])) continue;
|
||||
cutghostmulti[i][0] = MAX(cutghostmulti[i][0],sqrt(cutcollectionsq[i][j]));
|
||||
cutghostmulti[i][1] = MAX(cutghostmulti[i][1],sqrt(cutcollectionsq[i][j]));
|
||||
cutghostmulti[i][2] = MAX(cutghostmulti[i][2],sqrt(cutcollectionsq[i][j]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mode == Comm::MULTIOLD) {
|
||||
double *cuttype = neighbor->cuttype;
|
||||
double cut;
|
||||
for (i = 1; i <= ntypes; i++) {
|
||||
cut = 0.0;
|
||||
if (cutusermulti) cut = cutusermulti[i];
|
||||
cutghostmulti[i][0] = MAX(cut,cuttype[i]);
|
||||
cutghostmulti[i][1] = MAX(cut,cuttype[i]);
|
||||
cutghostmulti[i][2] = MAX(cut,cuttype[i]);
|
||||
double tmp = 0.0;
|
||||
if (cutusermultiold) tmp = cutusermultiold[i];
|
||||
cutghostmultiold[i][0] = MAX(tmp,cuttype[i]);
|
||||
cutghostmultiold[i][1] = MAX(tmp,cuttype[i]);
|
||||
cutghostmultiold[i][2] = MAX(tmp,cuttype[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -203,12 +259,20 @@ void CommTiled::setup()
|
||||
length2 = h_inv[2];
|
||||
cutghost[2] = cut * length2;
|
||||
if (mode == Comm::MULTI) {
|
||||
for (i = 1; i <= ntypes; i++) {
|
||||
for (i = 0; i < ncollections; i++) {
|
||||
cutghostmulti[i][0] *= length0;
|
||||
cutghostmulti[i][1] *= length1;
|
||||
cutghostmulti[i][2] *= length2;
|
||||
}
|
||||
}
|
||||
|
||||
if (mode == Comm::MULTIOLD) {
|
||||
for (i = 1; i <= ntypes; i++) {
|
||||
cutghostmultiold[i][0] *= length0;
|
||||
cutghostmultiold[i][1] *= length1;
|
||||
cutghostmultiold[i][2] *= length2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((periodicity[0] && cutghost[0] > prd[0]) ||
|
||||
@ -346,7 +410,7 @@ void CommTiled::setup()
|
||||
// extend sbox in those lower dims to include ghost atoms
|
||||
// single mode and multi mode
|
||||
|
||||
double oboxlo[3],oboxhi[3],sbox[6],sbox_multi[6];
|
||||
double oboxlo[3],oboxhi[3],sbox[6],sbox_multi[6],sbox_multiold[6];
|
||||
|
||||
if (mode == Comm::SINGLE) {
|
||||
for (i = 0; i < noverlap; i++) {
|
||||
@ -435,7 +499,7 @@ void CommTiled::setup()
|
||||
sbox[5] = MIN(oboxhi[2],hi2[2]);
|
||||
}
|
||||
|
||||
for (int itype = 1; itype <= atom->ntypes; itype++) {
|
||||
for (int icollection = 0; icollection < ncollections; icollection++) {
|
||||
sbox_multi[0] = sbox[0];
|
||||
sbox_multi[1] = sbox[1];
|
||||
sbox_multi[2] = sbox[2];
|
||||
@ -446,36 +510,112 @@ void CommTiled::setup()
|
||||
sbox_multi[idim] = sublo[idim];
|
||||
if (i < noverlap1)
|
||||
sbox_multi[3+idim] =
|
||||
MIN(sbox_multi[3+idim]+cutghostmulti[itype][idim],subhi[idim]);
|
||||
MIN(sbox_multi[3+idim]+cutghostmulti[icollection][idim],subhi[idim]);
|
||||
else
|
||||
sbox_multi[3+idim] =
|
||||
MIN(sbox_multi[3+idim]-prd[idim]+cutghostmulti[itype][idim],
|
||||
MIN(sbox_multi[3+idim]-prd[idim]+cutghostmulti[icollection][idim],
|
||||
subhi[idim]);
|
||||
} else {
|
||||
if (i < noverlap1)
|
||||
sbox_multi[idim] =
|
||||
MAX(sbox_multi[idim]-cutghostmulti[itype][idim],sublo[idim]);
|
||||
MAX(sbox_multi[idim]-cutghostmulti[icollection][idim],sublo[idim]);
|
||||
else
|
||||
sbox_multi[idim] =
|
||||
MAX(sbox_multi[idim]+prd[idim]-cutghostmulti[itype][idim],
|
||||
MAX(sbox_multi[idim]+prd[idim]-cutghostmulti[icollection][idim],
|
||||
sublo[idim]);
|
||||
sbox_multi[3+idim] = subhi[idim];
|
||||
}
|
||||
|
||||
if (idim >= 1) {
|
||||
if (sbox_multi[0] == oboxlo[0])
|
||||
sbox_multi[0] -= cutghostmulti[itype][idim];
|
||||
sbox_multi[0] -= cutghostmulti[icollection][idim];
|
||||
if (sbox_multi[3] == oboxhi[0])
|
||||
sbox_multi[3] += cutghostmulti[itype][idim];
|
||||
sbox_multi[3] += cutghostmulti[icollection][idim];
|
||||
}
|
||||
if (idim == 2) {
|
||||
if (sbox_multi[1] == oboxlo[1])
|
||||
sbox_multi[1] -= cutghostmulti[itype][idim];
|
||||
sbox_multi[1] -= cutghostmulti[icollection][idim];
|
||||
if (sbox_multi[4] == oboxhi[1])
|
||||
sbox_multi[4] += cutghostmulti[itype][idim];
|
||||
sbox_multi[4] += cutghostmulti[icollection][idim];
|
||||
}
|
||||
|
||||
memcpy(sendbox_multi[iswap][i][itype],sbox_multi,6*sizeof(double));
|
||||
memcpy(sendbox_multi[iswap][i][icollection],sbox_multi,6*sizeof(double));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mode == Comm::MULTIOLD) {
|
||||
for (i = 0; i < noverlap; i++) {
|
||||
pbc_flag[iswap][i] = 0;
|
||||
pbc[iswap][i][0] = pbc[iswap][i][1] = pbc[iswap][i][2] =
|
||||
pbc[iswap][i][3] = pbc[iswap][i][4] = pbc[iswap][i][5] = 0;
|
||||
|
||||
(this->*box_other)(idim,idir,overlap[i],oboxlo,oboxhi);
|
||||
|
||||
if (i < noverlap1) {
|
||||
sbox[0] = MAX(oboxlo[0],lo1[0]);
|
||||
sbox[1] = MAX(oboxlo[1],lo1[1]);
|
||||
sbox[2] = MAX(oboxlo[2],lo1[2]);
|
||||
sbox[3] = MIN(oboxhi[0],hi1[0]);
|
||||
sbox[4] = MIN(oboxhi[1],hi1[1]);
|
||||
sbox[5] = MIN(oboxhi[2],hi1[2]);
|
||||
} else {
|
||||
pbc_flag[iswap][i] = 1;
|
||||
if (idir == 0) pbc[iswap][i][idim] = 1;
|
||||
else pbc[iswap][i][idim] = -1;
|
||||
if (triclinic) {
|
||||
if (idim == 1) pbc[iswap][i][5] = pbc[iswap][i][idim];
|
||||
if (idim == 2) pbc[iswap][i][4] = pbc[iswap][i][3] = pbc[iswap][i][idim];
|
||||
}
|
||||
sbox[0] = MAX(oboxlo[0],lo2[0]);
|
||||
sbox[1] = MAX(oboxlo[1],lo2[1]);
|
||||
sbox[2] = MAX(oboxlo[2],lo2[2]);
|
||||
sbox[3] = MIN(oboxhi[0],hi2[0]);
|
||||
sbox[4] = MIN(oboxhi[1],hi2[1]);
|
||||
sbox[5] = MIN(oboxhi[2],hi2[2]);
|
||||
}
|
||||
|
||||
for (int itype = 1; itype <= atom->ntypes; itype++) {
|
||||
sbox_multiold[0] = sbox[0];
|
||||
sbox_multiold[1] = sbox[1];
|
||||
sbox_multiold[2] = sbox[2];
|
||||
sbox_multiold[3] = sbox[3];
|
||||
sbox_multiold[4] = sbox[4];
|
||||
sbox_multiold[5] = sbox[5];
|
||||
if (idir == 0) {
|
||||
sbox_multiold[idim] = sublo[idim];
|
||||
if (i < noverlap1)
|
||||
sbox_multiold[3+idim] =
|
||||
MIN(sbox_multiold[3+idim]+cutghostmultiold[itype][idim],subhi[idim]);
|
||||
else
|
||||
sbox_multiold[3+idim] =
|
||||
MIN(sbox_multiold[3+idim]-prd[idim]+cutghostmultiold[itype][idim],
|
||||
subhi[idim]);
|
||||
} else {
|
||||
if (i < noverlap1)
|
||||
sbox_multiold[idim] =
|
||||
MAX(sbox_multiold[idim]-cutghostmultiold[itype][idim],sublo[idim]);
|
||||
else
|
||||
sbox_multiold[idim] =
|
||||
MAX(sbox_multiold[idim]+prd[idim]-cutghostmultiold[itype][idim],
|
||||
sublo[idim]);
|
||||
sbox_multiold[3+idim] = subhi[idim];
|
||||
}
|
||||
|
||||
if (idim >= 1) {
|
||||
if (sbox_multiold[0] == oboxlo[0])
|
||||
sbox_multiold[0] -= cutghostmultiold[itype][idim];
|
||||
if (sbox_multiold[3] == oboxhi[0])
|
||||
sbox_multiold[3] += cutghostmultiold[itype][idim];
|
||||
}
|
||||
if (idim == 2) {
|
||||
if (sbox_multiold[1] == oboxlo[1])
|
||||
sbox_multiold[1] -= cutghostmultiold[itype][idim];
|
||||
if (sbox_multiold[4] == oboxhi[1])
|
||||
sbox_multiold[4] += cutghostmultiold[itype][idim];
|
||||
}
|
||||
|
||||
memcpy(sendbox_multiold[iswap][i][itype],sbox_multiold,6*sizeof(double));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -907,12 +1047,15 @@ void CommTiled::exchange()
|
||||
|
||||
void CommTiled::borders()
|
||||
{
|
||||
int i,m,n,nlast,nsend,nrecv,ngroup,ncount,ncountall;
|
||||
int i,m,n,nlast,nsend,nrecv,ngroup,nprior,ncount,ncountall;
|
||||
double xlo,xhi,ylo,yhi,zlo,zhi;
|
||||
double *bbox;
|
||||
double **x;
|
||||
AtomVec *avec = atom->avec;
|
||||
|
||||
// After exchanging, need to reconstruct collection array for border communication
|
||||
if (mode == Comm::MULTI) neighbor->build_collection(0);
|
||||
|
||||
// send/recv max one = max # of atoms in single send/recv for any swap
|
||||
// send/recv max all = max # of atoms in all sends/recvs within any swap
|
||||
|
||||
@ -978,6 +1121,56 @@ void CommTiled::borders()
|
||||
smaxone = MAX(smaxone,ncount);
|
||||
ncountall += ncount;
|
||||
|
||||
} else if (mode == Comm::MULTI) {
|
||||
|
||||
int* collection=neighbor->collection;
|
||||
int icollection;
|
||||
ncount = 0;
|
||||
|
||||
if (!bordergroup) {
|
||||
for (i = 0; i < nlast; i++) {
|
||||
icollection=collection[i];
|
||||
bbox = sendbox_multi[iswap][m][icollection];
|
||||
xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2];
|
||||
xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5];
|
||||
if (x[i][0] >= xlo && x[i][0] < xhi &&
|
||||
x[i][1] >= ylo && x[i][1] < yhi &&
|
||||
x[i][2] >= zlo && x[i][2] < zhi) {
|
||||
if (ncount == maxsendlist[iswap][m]) grow_list(iswap,m,ncount);
|
||||
sendlist[iswap][m][ncount++] = i;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ngroup = atom->nfirst;
|
||||
for (i = 0; i < ngroup; i++) {
|
||||
icollection=collection[i];
|
||||
bbox = sendbox_multi[iswap][m][icollection];
|
||||
xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2];
|
||||
xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5];
|
||||
if (x[i][0] >= xlo && x[i][0] < xhi &&
|
||||
x[i][1] >= ylo && x[i][1] < yhi &&
|
||||
x[i][2] >= zlo && x[i][2] < zhi) {
|
||||
if (ncount == maxsendlist[iswap][m]) grow_list(iswap,m,ncount);
|
||||
sendlist[iswap][m][ncount++] = i;
|
||||
}
|
||||
}
|
||||
for (i = atom->nlocal; i < nlast; i++) {
|
||||
icollection=collection[i];
|
||||
bbox = sendbox_multi[iswap][m][icollection];
|
||||
xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2];
|
||||
xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5];
|
||||
if (x[i][0] >= xlo && x[i][0] < xhi &&
|
||||
x[i][1] >= ylo && x[i][1] < yhi &&
|
||||
x[i][2] >= zlo && x[i][2] < zhi) {
|
||||
if (ncount == maxsendlist[iswap][m]) grow_list(iswap,m,ncount);
|
||||
sendlist[iswap][m][ncount++] = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sendnum[iswap][m] = ncount;
|
||||
smaxone = MAX(smaxone,ncount);
|
||||
ncountall += ncount;
|
||||
} else {
|
||||
|
||||
int* type=atom->type;
|
||||
@ -987,7 +1180,7 @@ void CommTiled::borders()
|
||||
if (!bordergroup) {
|
||||
for (i = 0; i < nlast; i++) {
|
||||
itype=type[i];
|
||||
bbox = sendbox_multi[iswap][m][itype];
|
||||
bbox = sendbox_multiold[iswap][m][itype];
|
||||
xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2];
|
||||
xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5];
|
||||
if (x[i][0] >= xlo && x[i][0] < xhi &&
|
||||
@ -1001,7 +1194,7 @@ void CommTiled::borders()
|
||||
ngroup = atom->nfirst;
|
||||
for (i = 0; i < ngroup; i++) {
|
||||
itype=type[i];
|
||||
bbox = sendbox_multi[iswap][m][itype];
|
||||
bbox = sendbox_multiold[iswap][m][itype];
|
||||
xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2];
|
||||
xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5];
|
||||
if (x[i][0] >= xlo && x[i][0] < xhi &&
|
||||
@ -1013,7 +1206,7 @@ void CommTiled::borders()
|
||||
}
|
||||
for (i = atom->nlocal; i < nlast; i++) {
|
||||
itype=type[i];
|
||||
bbox = sendbox_multi[iswap][m][itype];
|
||||
bbox = sendbox_multiold[iswap][m][itype];
|
||||
xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2];
|
||||
xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5];
|
||||
if (x[i][0] >= xlo && x[i][0] < xhi &&
|
||||
@ -1149,8 +1342,11 @@ void CommTiled::borders()
|
||||
// increment ghost atoms
|
||||
|
||||
n = nrecvproc[iswap];
|
||||
if (n)
|
||||
if (n) {
|
||||
nprior = atom->nghost + atom->nlocal;
|
||||
atom->nghost += forward_recv_offset[iswap][n-1] + recvnum[iswap][n-1];
|
||||
if (neighbor->style == Neighbor::MULTI) neighbor->build_collection(nprior);
|
||||
}
|
||||
}
|
||||
|
||||
// For molecular systems we lose some bits for local atom indices due
|
||||
@ -2090,6 +2286,7 @@ void CommTiled::allocate_swap(int n)
|
||||
pbc = new int**[n];
|
||||
sendbox = new double**[n];
|
||||
sendbox_multi = new double***[n];
|
||||
sendbox_multiold = new double***[n];
|
||||
maxsendlist = new int*[n];
|
||||
sendlist = new int**[n];
|
||||
|
||||
@ -2104,6 +2301,7 @@ void CommTiled::allocate_swap(int n)
|
||||
pbc[i] = nullptr;
|
||||
sendbox[i] = nullptr;
|
||||
sendbox_multi[i] = nullptr;
|
||||
sendbox_multiold[i] = nullptr;
|
||||
maxsendlist[i] = nullptr;
|
||||
sendlist[i] = nullptr;
|
||||
}
|
||||
@ -2152,8 +2350,9 @@ void CommTiled::grow_swap_send(int i, int n, int nold)
|
||||
memory->create(pbc[i],n,6,"comm:pbc_flag");
|
||||
memory->destroy(sendbox[i]);
|
||||
memory->create(sendbox[i],n,6,"comm:sendbox");
|
||||
memory->destroy(sendbox_multi[i]);
|
||||
memory->create(sendbox_multi[i],n,atom->ntypes+1,6,"comm:sendbox_multi");
|
||||
grow_swap_send_multi(i,n);
|
||||
memory->destroy(sendbox_multiold[i]);
|
||||
memory->create(sendbox_multiold[i],n,atom->ntypes+1,6,"comm:sendbox_multiold");
|
||||
|
||||
delete [] maxsendlist[i];
|
||||
maxsendlist[i] = new int[n];
|
||||
@ -2185,6 +2384,19 @@ void CommTiled::grow_swap_recv(int i, int n)
|
||||
size_reverse_send[i] = new int[n];
|
||||
}
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
grow info for swap I for multi as ncollections can change
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void CommTiled::grow_swap_send_multi(int i, int n)
|
||||
{
|
||||
memory->destroy(sendbox_multi[i]);
|
||||
|
||||
if (ncollections > 0)
|
||||
memory->create(sendbox_multi[i],n,ncollections,6,"comm:sendbox_multi");
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
deallocate swap info
|
||||
------------------------------------------------------------------------- */
|
||||
@ -2213,6 +2425,7 @@ void CommTiled::deallocate_swap(int n)
|
||||
memory->destroy(pbc[i]);
|
||||
memory->destroy(sendbox[i]);
|
||||
memory->destroy(sendbox_multi[i]);
|
||||
memory->destroy(sendbox_multiold[i]);
|
||||
|
||||
delete [] maxsendlist[i];
|
||||
|
||||
@ -2235,6 +2448,7 @@ void CommTiled::deallocate_swap(int n)
|
||||
delete [] pbc;
|
||||
delete [] sendbox;
|
||||
delete [] sendbox_multi;
|
||||
delete [] sendbox_multiold;
|
||||
delete [] maxsendlist;
|
||||
delete [] sendlist;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user