From 9a3f90294cc4bae9d2e29898df3d033a8efb2b6e Mon Sep 17 00:00:00 2001 From: Diaz Date: Mon, 21 Jan 2019 11:50:10 -0500 Subject: [PATCH 01/17] updated comm tiled to have multi --- src/comm_tiled.cpp | 189 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 179 insertions(+), 10 deletions(-) diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index d7d2e4725d..9805dbd6e0 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -11,6 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing author (multi) : Adrian Diaz (University of Florida) +------------------------------------------------------------------------- */ + #include #include "comm_tiled.h" #include "comm_brick.h" @@ -72,6 +76,9 @@ CommTiled::~CommTiled() memory->destroy(overlap); deallocate_swap(nswap); memory->sfree(rcbinfo); + if (mode == Comm::MULTI) { + memory->destroy(cutghostmulti); + } } /* ---------------------------------------------------------------------- @@ -80,6 +87,8 @@ CommTiled::~CommTiled() void CommTiled::init_buffers() { + sendbox_multi = NULL; + cutghostmulti = NULL; // bufextra = max size of one exchanged atom // = allowed overflow of sendbuf in exchange() // atomvec, fix reset these 2 maxexchange values if needed @@ -108,12 +117,20 @@ void CommTiled::init() { Comm::init(); + // memory for multi-style communication + int maxswap = 6; + if (mode == Comm::MULTI) { + memory->create(cutghostmulti,atom->ntypes+1,3,"comm:cutghostmulti"); + } + if (mode == Comm::SINGLE && cutghostmulti) { + memory->destroy(cutghostmulti); + } + // temporary restrictions if (triclinic) error->all(FLERR,"Cannot yet use comm_style tiled with triclinic box"); - if (mode == Comm::MULTI) - error->all(FLERR,"Cannot yet use comm_style tiled with multi-mode comm"); + } /* ---------------------------------------------------------------------- @@ -124,7 +141,7 @@ void CommTiled::init() void CommTiled::setup() { int i,j,n; - + int ntypes = atom->ntypes; // domain properties used in setup method and methods it calls dimension = domain->dimension; @@ -157,9 +174,22 @@ void CommTiled::setup() // set cutoff for comm forward and comm reverse // check that cutoff < any periodic box length - double cut = MAX(neighbor->cutneighmax,cutghostuser); + double cut; + + if (mode == Comm::MULTI) { + double *cuttype = neighbor->cuttype; + 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]); + } + } + cut = MAX(neighbor->cutneighmax,cutghostuser); cutghost[0] = cutghost[1] = cutghost[2] = cut; + if ((periodicity[0] && cut > prd[0]) || (periodicity[1] && cut > prd[1]) || (dimension == 3 && periodicity[2] && cut > prd[2])) @@ -261,6 +291,7 @@ void CommTiled::setup() grow_swap_send(iswap,nprocmax[iswap],oldmax); if (idir == 0) grow_swap_recv(iswap+1,nprocmax[iswap]); else grow_swap_recv(iswap-1,nprocmax[iswap]); + } // overlap how has list of noverlap procs @@ -293,8 +324,8 @@ void CommTiled::setup() // if sbox touches other proc's sub-box boundaries in lower dims, // extend sbox in those lower dims to include ghost atoms - double oboxlo[3],oboxhi[3],sbox[6]; - + double oboxlo[3],oboxhi[3],sbox[6],sbox_multi[6]; + if (mode == Comm::SINGLE) { for (i = 0; i < noverlap; i++) { pbc_flag[iswap][i] = 0; pbc[iswap][i][0] = pbc[iswap][i][1] = pbc[iswap][i][2] = @@ -342,7 +373,65 @@ void CommTiled::setup() memcpy(sendbox[iswap][i],sbox,6*sizeof(double)); } + } + else{ + 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; + 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_multi[0] = sbox[0]; + sbox_multi[1] = sbox[1]; + sbox_multi[2] = sbox[2]; + sbox_multi[3] = sbox[3]; + sbox_multi[4] = sbox[4]; + sbox_multi[5] = sbox[5]; + if (idir == 0) { + sbox_multi[idim] = sublo[idim]; + if (i < noverlap1) sbox_multi[3+idim] = MIN(sbox_multi[3+idim]+cutghostmulti[itype][idim],subhi[idim]); + else sbox_multi[3+idim] = MIN(sbox_multi[3+idim]-prd[idim]+cutghostmulti[itype][idim],subhi[idim]); + } else { + if (i < noverlap1) sbox_multi[idim] = MAX(sbox_multi[idim]-cutghostmulti[itype][idim],sublo[idim]); + else sbox_multi[idim] = MAX(sbox_multi[idim]+prd[idim]-cutghostmulti[itype][idim],sublo[idim]); + sbox_multi[3+idim] = subhi[idim]; + } + + if (idim >= 1) { + if (sbox_multi[0] == oboxlo[0]) sbox_multi[0] -= cutghostmulti[itype][idim]; + if (sbox_multi[3] == oboxhi[0]) sbox_multi[3] += cutghostmulti[itype][idim]; + } + if (idim == 2) { + if (sbox_multi[1] == oboxlo[1]) sbox_multi[1] -= cutghostmulti[itype][idim]; + if (sbox_multi[4] == oboxhi[1]) sbox_multi[4] += cutghostmulti[itype][idim]; + } + + memcpy(sendbox_multi[iswap][i][itype],sbox_multi,6*sizeof(double)); + } + } + } iswap++; } } @@ -765,6 +854,7 @@ void CommTiled::borders() double xlo,xhi,ylo,yhi,zlo,zhi; double *bbox; double **x; + AtomVec *avec = atom->avec; // send/recv max one = max # of atoms in single send/recv for any swap @@ -790,6 +880,7 @@ void CommTiled::borders() ncountall = 0; for (m = 0; m < nsendproc[iswap]; m++) { + if (mode == Comm::SINGLE) { bbox = sendbox[iswap][m]; xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2]; xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5]; @@ -829,6 +920,58 @@ void CommTiled::borders() smaxone = MAX(smaxone,ncount); ncountall += ncount; } + else{ + int* type=atom->type; + int itype; + ncount = 0; + + if (!bordergroup) { + for (i = 0; i < nlast; i++) { + itype=type[i]; + bbox = sendbox_multi[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 && + 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++) { + itype=type[i]; + bbox = sendbox_multi[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 && + 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++) { + itype=type[i]; + bbox = sendbox_multi[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 && + 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; + } + } smaxall = MAX(smaxall,ncountall); // send sendnum counts to procs who recv from me except self @@ -1873,7 +2016,12 @@ void CommTiled::allocate_swap(int n) pbc_flag = new int*[n]; pbc = new int**[n]; - sendbox = new double**[n]; + //if(mode == SINGLE){ + sendbox = new double**[n]; + //} + //else{ + sendbox_multi = new double***[n]; + //} maxsendlist = new int*[n]; sendlist = new int**[n]; @@ -1886,7 +2034,12 @@ void CommTiled::allocate_swap(int n) pbc_flag[i] = NULL; pbc[i] = NULL; - sendbox[i] = NULL; + //if(mode == SINGLE){ + sendbox[i] = NULL; + // } + //else{ + sendbox_multi[i] = NULL; + //} maxsendlist[i] = NULL; sendlist[i] = NULL; } @@ -1933,8 +2086,14 @@ void CommTiled::grow_swap_send(int i, int n, int nold) pbc_flag[i] = new int[n]; memory->destroy(pbc[i]); memory->create(pbc[i],n,6,"comm:pbc_flag"); + //if(mode == SINGLE){ memory->destroy(sendbox[i]); memory->create(sendbox[i],n,6,"comm:sendbox"); + //} + //else { + memory->destroy(sendbox_multi[i]); + memory->create(sendbox_multi[i],n,atom->ntypes+1,6,"comm:sendbox_multi"); + //} delete [] maxsendlist[i]; maxsendlist[i] = new int[n]; @@ -1992,7 +2151,12 @@ void CommTiled::deallocate_swap(int n) delete [] pbc_flag[i]; memory->destroy(pbc[i]); - memory->destroy(sendbox[i]); + //if(mode == Comm::SINGLE){ + memory->destroy(sendbox[i]); + // } + //else{ + memory->destroy(sendbox_multi[i]); + // } delete [] maxsendlist[i]; for (int j = 0; j < nprocmax[i]; j++) memory->destroy(sendlist[i][j]); @@ -2012,7 +2176,12 @@ void CommTiled::deallocate_swap(int n) delete [] pbc_flag; delete [] pbc; - delete [] sendbox; + //if(mode == SINGLE){ + delete [] sendbox; + // } + //else{ + delete [] sendbox_multi; + //} delete [] maxsendlist; delete [] sendlist; From 0f88513f65db23a4834e2ed1859f13f278fb2172 Mon Sep 17 00:00:00 2001 From: Diaz Date: Mon, 21 Jan 2019 12:29:31 -0500 Subject: [PATCH 02/17] updated comm tiled to have multi --- src/comm_tiled.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/comm_tiled.h b/src/comm_tiled.h index 13ecbc4b01..e5be7639ea 100644 --- a/src/comm_tiled.h +++ b/src/comm_tiled.h @@ -69,13 +69,14 @@ class CommTiled : public Comm { int **size_reverse_recv; // # of values to recv in each reverse swap/proc int **forward_recv_offset; // forward comm offsets in buf_recv per swap/proc int **reverse_recv_offset; // reverse comm offsets in buf_recv per swap/proc - + double **cutghostmulti; // cutghost on a per-type basis int ***sendlist; // list of atoms to send per swap/proc int **maxsendlist; // max size of send list per swap/proc int **pbc_flag; // general flag for sending atoms thru PBC int ***pbc; // dimension flags for PBC adjustments double ***sendbox; // bounding box of atoms to send per swap/proc + double ****sendbox_multi; // bounding box of atoms to send per swap/proc for multi comm // exchange comm info, proc lists do not include self @@ -147,6 +148,7 @@ class CommTiled : public Comm { void grow_swap_send(int, int, int); // grow swap arrays for send and recv void grow_swap_recv(int, int); void deallocate_swap(int); // deallocate swap arrays + }; } From c262d08e84e5430c067c8615e26d2e662305589a Mon Sep 17 00:00:00 2001 From: Adrian-Diaz <46537160+Adrian-Diaz@users.noreply.github.com> Date: Wed, 4 Dec 2019 12:32:04 -0500 Subject: [PATCH 03/17] remove comments --- src/comm_tiled.cpp | 36 ++++++++---------------------------- 1 file changed, 8 insertions(+), 28 deletions(-) diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index cef52166e7..a808d57223 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -2016,12 +2016,8 @@ void CommTiled::allocate_swap(int n) pbc_flag = new int*[n]; pbc = new int**[n]; - //if(mode == SINGLE){ - sendbox = new double**[n]; - //} - //else{ - sendbox_multi = new double***[n]; - //} + sendbox = new double**[n]; + sendbox_multi = new double***[n]; maxsendlist = new int*[n]; sendlist = new int**[n]; @@ -2034,12 +2030,8 @@ void CommTiled::allocate_swap(int n) pbc_flag[i] = NULL; pbc[i] = NULL; - //if(mode == SINGLE){ - sendbox[i] = NULL; - // } - //else{ - sendbox_multi[i] = NULL; - //} + sendbox[i] = NULL; + sendbox_multi[i] = NULL; maxsendlist[i] = NULL; sendlist[i] = NULL; } @@ -2086,14 +2078,10 @@ void CommTiled::grow_swap_send(int i, int n, int nold) pbc_flag[i] = new int[n]; memory->destroy(pbc[i]); memory->create(pbc[i],n,6,"comm:pbc_flag"); - //if(mode == SINGLE){ memory->destroy(sendbox[i]); memory->create(sendbox[i],n,6,"comm:sendbox"); - //} - //else { memory->destroy(sendbox_multi[i]); memory->create(sendbox_multi[i],n,atom->ntypes+1,6,"comm:sendbox_multi"); - //} delete [] maxsendlist[i]; maxsendlist[i] = new int[n]; @@ -2151,12 +2139,8 @@ void CommTiled::deallocate_swap(int n) delete [] pbc_flag[i]; memory->destroy(pbc[i]); - //if(mode == Comm::SINGLE){ - memory->destroy(sendbox[i]); - // } - //else{ - memory->destroy(sendbox_multi[i]); - // } + memory->destroy(sendbox[i]); + memory->destroy(sendbox_multi[i]); delete [] maxsendlist[i]; for (int j = 0; j < nprocmax[i]; j++) memory->destroy(sendlist[i][j]); @@ -2176,12 +2160,8 @@ void CommTiled::deallocate_swap(int n) delete [] pbc_flag; delete [] pbc; - //if(mode == SINGLE){ - delete [] sendbox; - // } - //else{ - delete [] sendbox_multi; - //} + delete [] sendbox; + delete [] sendbox_multi; delete [] maxsendlist; delete [] sendlist; From e982f418d31c6d63dc29658945afeeaa69f52d53 Mon Sep 17 00:00:00 2001 From: Adrian-Diaz <46537160+Adrian-Diaz@users.noreply.github.com> Date: Wed, 5 Feb 2020 13:54:56 -0500 Subject: [PATCH 04/17] remove whitespace issues --- src/comm_tiled.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index a808d57223..88a5c02c6b 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -287,7 +287,6 @@ void CommTiled::setup() grow_swap_send(iswap,nprocmax[iswap],oldmax); if (idir == 0) grow_swap_recv(iswap+1,nprocmax[iswap]); else grow_swap_recv(iswap-1,nprocmax[iswap]); - } // overlap how has list of noverlap procs @@ -372,11 +371,9 @@ void CommTiled::setup() } else{ 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; + pbc[iswap][i][3] = pbc[iswap][i][4] = pbc[iswap][i][5] = 0; (this->*box_other)(idim,idir,overlap[i],oboxlo,oboxhi); @@ -849,7 +846,6 @@ void CommTiled::borders() double xlo,xhi,ylo,yhi,zlo,zhi; double *bbox; double **x; - AtomVec *avec = atom->avec; // send/recv max one = max # of atoms in single send/recv for any swap @@ -922,7 +918,7 @@ void CommTiled::borders() if (!bordergroup) { for (i = 0; i < nlast; i++) { - itype=type[i]; + itype=type[i]; bbox = sendbox_multi[iswap][m][itype]; xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2]; xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5]; @@ -932,12 +928,11 @@ void CommTiled::borders() 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++) { - itype=type[i]; + itype=type[i]; bbox = sendbox_multi[iswap][m][itype]; xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2]; xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5]; @@ -949,7 +944,7 @@ void CommTiled::borders() } } for (i = atom->nlocal; i < nlast; i++) { - itype=type[i]; + itype=type[i]; bbox = sendbox_multi[iswap][m][itype]; xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2]; xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5]; From 9db34bc18e6509ce057930346cccaedbd7bc70be Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Mon, 27 Jul 2020 16:15:41 -0600 Subject: [PATCH 05/17] cosmetic changes to CommTiled for comm multi style --- src/comm_tiled.cpp | 409 ++++++++++++++++++++++++--------------------- src/comm_tiled.h | 6 +- 2 files changed, 218 insertions(+), 197 deletions(-) diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index 88a5c02c6b..a57437d88e 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -73,9 +73,8 @@ CommTiled::~CommTiled() memory->destroy(overlap); deallocate_swap(nswap); memory->sfree(rcbinfo); - if (mode == Comm::MULTI) { - memory->destroy(cutghostmulti); - } + + if (mode == Comm::MULTI) memory->destroy(cutghostmulti); } /* ---------------------------------------------------------------------- @@ -84,8 +83,6 @@ CommTiled::~CommTiled() void CommTiled::init_buffers() { - sendbox_multi = NULL; - cutghostmulti = NULL; buf_send = buf_recv = NULL; maxsend = maxrecv = BUFMIN; grow_send(maxsend,2); @@ -98,6 +95,9 @@ void CommTiled::init_buffers() allocate_swap(nswap); rcbinfo = NULL; + + cutghostmulti = NULL; + sendbox_multi = NULL; } /* ---------------------------------------------------------------------- */ @@ -106,13 +106,10 @@ void CommTiled::init() { Comm::init(); - // memory for multi-style communication - if (mode == Comm::MULTI) { + if (mode == Comm::SINGLE && cutghostmulti) memory->destroy(cutghostmulti); + + if (mode == Comm::MULTI && !cutghostmulti) memory->create(cutghostmulti,atom->ntypes+1,3,"comm:cutghostmulti"); - } - if (mode == Comm::SINGLE && cutghostmulti) { - memory->destroy(cutghostmulti); - } int bufextra_old = bufextra; init_exchange(); @@ -122,7 +119,6 @@ void CommTiled::init() if (triclinic) error->all(FLERR,"Cannot yet use comm_style tiled with triclinic box"); - } /* ---------------------------------------------------------------------- @@ -133,7 +129,7 @@ void CommTiled::init() void CommTiled::setup() { int i,j,n; - int ntypes = atom->ntypes; + // domain properties used in setup method and methods it calls dimension = domain->dimension; @@ -144,6 +140,7 @@ void CommTiled::setup() subhi = domain->subhi; int *periodicity = domain->periodicity; + int ntypes = atom->ntypes; // set function pointers @@ -185,7 +182,6 @@ void CommTiled::setup() cutghost[0] = cutghost[1] = cutghost[2] = cut; - if ((periodicity[0] && cut > prd[0]) || (periodicity[1] && cut > prd[1]) || (dimension == 3 && periodicity[2] && cut > prd[2])) @@ -318,113 +314,132 @@ void CommTiled::setup() // = obox in other 2 dims // if sbox touches other proc's sub-box boundaries in lower dims, // 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]; + if (mode == Comm::SINGLE) { - 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; + 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); + (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; - 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]); - } + 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; + 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]); + } + + if (idir == 0) { + sbox[idim] = sublo[idim]; + if (i < noverlap1) sbox[3+idim] = MIN(sbox[3+idim]+cut,subhi[idim]); + else sbox[3+idim] = MIN(sbox[3+idim]-prd[idim]+cut,subhi[idim]); + } else { + if (i < noverlap1) sbox[idim] = MAX(sbox[idim]-cut,sublo[idim]); + else sbox[idim] = MAX(sbox[idim]+prd[idim]-cut,sublo[idim]); + sbox[3+idim] = subhi[idim]; + } - if (idir == 0) { - sbox[idim] = sublo[idim]; - if (i < noverlap1) sbox[3+idim] = MIN(sbox[3+idim]+cut,subhi[idim]); - else sbox[3+idim] = MIN(sbox[3+idim]-prd[idim]+cut,subhi[idim]); - } else { - if (i < noverlap1) sbox[idim] = MAX(sbox[idim]-cut,sublo[idim]); - else sbox[idim] = MAX(sbox[idim]+prd[idim]-cut,sublo[idim]); - sbox[3+idim] = subhi[idim]; - } + if (idim >= 1) { + if (sbox[0] == oboxlo[0]) sbox[0] -= cut; + if (sbox[3] == oboxhi[0]) sbox[3] += cut; + } + if (idim == 2) { + if (sbox[1] == oboxlo[1]) sbox[1] -= cut; + if (sbox[4] == oboxhi[1]) sbox[4] += cut; + } - if (idim >= 1) { - if (sbox[0] == oboxlo[0]) sbox[0] -= cut; - if (sbox[3] == oboxhi[0]) sbox[3] += cut; - } - if (idim == 2) { - if (sbox[1] == oboxlo[1]) sbox[1] -= cut; - if (sbox[4] == oboxhi[1]) sbox[4] += cut; - } - - memcpy(sendbox[iswap][i],sbox,6*sizeof(double)); + memcpy(sendbox[iswap][i],sbox,6*sizeof(double)); + } } - } - else{ + + if (mode == Comm::MULTI) { 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; + 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); + (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; - 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_multi[0] = sbox[0]; - sbox_multi[1] = sbox[1]; - sbox_multi[2] = sbox[2]; - sbox_multi[3] = sbox[3]; - sbox_multi[4] = sbox[4]; - sbox_multi[5] = sbox[5]; - if (idir == 0) { - sbox_multi[idim] = sublo[idim]; - if (i < noverlap1) sbox_multi[3+idim] = MIN(sbox_multi[3+idim]+cutghostmulti[itype][idim],subhi[idim]); - else sbox_multi[3+idim] = MIN(sbox_multi[3+idim]-prd[idim]+cutghostmulti[itype][idim],subhi[idim]); - } else { - if (i < noverlap1) sbox_multi[idim] = MAX(sbox_multi[idim]-cutghostmulti[itype][idim],sublo[idim]); - else sbox_multi[idim] = MAX(sbox_multi[idim]+prd[idim]-cutghostmulti[itype][idim],sublo[idim]); - sbox_multi[3+idim] = subhi[idim]; - } + 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; + 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_multi[0] = sbox[0]; + sbox_multi[1] = sbox[1]; + sbox_multi[2] = sbox[2]; + sbox_multi[3] = sbox[3]; + sbox_multi[4] = sbox[4]; + sbox_multi[5] = sbox[5]; + if (idir == 0) { + sbox_multi[idim] = sublo[idim]; + if (i < noverlap1) + sbox_multi[3+idim] = + MIN(sbox_multi[3+idim]+cutghostmulti[itype][idim],subhi[idim]); + else + sbox_multi[3+idim] = + MIN(sbox_multi[3+idim]-prd[idim]+cutghostmulti[itype][idim], + subhi[idim]); + } else { + if (i < noverlap1) + sbox_multi[idim] = + MAX(sbox_multi[idim]-cutghostmulti[itype][idim],sublo[idim]); + else + sbox_multi[idim] = + MAX(sbox_multi[idim]+prd[idim]-cutghostmulti[itype][idim], + sublo[idim]); + sbox_multi[3+idim] = subhi[idim]; + } + + if (idim >= 1) { + if (sbox_multi[0] == oboxlo[0]) + sbox_multi[0] -= cutghostmulti[itype][idim]; + if (sbox_multi[3] == oboxhi[0]) + sbox_multi[3] += cutghostmulti[itype][idim]; + } + if (idim == 2) { + if (sbox_multi[1] == oboxlo[1]) + sbox_multi[1] -= cutghostmulti[itype][idim]; + if (sbox_multi[4] == oboxhi[1]) + sbox_multi[4] += cutghostmulti[itype][idim]; + } - if (idim >= 1) { - if (sbox_multi[0] == oboxlo[0]) sbox_multi[0] -= cutghostmulti[itype][idim]; - if (sbox_multi[3] == oboxhi[0]) sbox_multi[3] += cutghostmulti[itype][idim]; - } - if (idim == 2) { - if (sbox_multi[1] == oboxlo[1]) sbox_multi[1] -= cutghostmulti[itype][idim]; - if (sbox_multi[4] == oboxhi[1]) sbox_multi[4] += cutghostmulti[itype][idim]; - } - - memcpy(sendbox_multi[iswap][i][itype],sbox_multi,6*sizeof(double)); - } - } + memcpy(sendbox_multi[iswap][i][itype],sbox_multi,6*sizeof(double)); + } + } } + iswap++; } } @@ -703,7 +718,7 @@ void CommTiled::reverse_comm() atoms exchanged with procs that touch sub-box in each of 3 dims send out atoms that have left my box, receive ones entering my box atoms will be lost if not inside a touching proc's box - can happen if atom moves outside of non-periodic bounary + can happen if atom moves outside of non-periodic boundary or if atom moves more than one proc away this routine called before every reneighboring for triclinic, atoms must be in lamda coords (0-1) before exchange is called @@ -864,104 +879,107 @@ void CommTiled::borders() // for x-dim swaps, check owned atoms // for yz-dim swaps, check owned and ghost atoms // store sent atom indices in sendlist for use in future timesteps - // NOTE: assume SINGLE mode, add logic for MULTI mode later - + // single mode and multi mode + x = atom->x; if (iswap % 2 == 0) nlast = atom->nlocal + atom->nghost; ncountall = 0; for (m = 0; m < nsendproc[iswap]; m++) { + if (mode == Comm::SINGLE) { - bbox = sendbox[iswap][m]; - xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2]; - xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5]; + bbox = sendbox[iswap][m]; + xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2]; + xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5]; - ncount = 0; + ncount = 0; - if (!bordergroup) { - for (i = 0; i < nlast; i++) { - 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); + if (!bordergroup) { + for (i = 0; i < nlast; i++) { + 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++) { + 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++) { + 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 { - ngroup = atom->nfirst; - for (i = 0; i < ngroup; i++) { - 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); + + int* type=atom->type; + int itype; + ncount = 0; + + if (!bordergroup) { + for (i = 0; i < nlast; i++) { + itype=type[i]; + bbox = sendbox_multi[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 && + 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++) { - 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++) { + itype=type[i]; + bbox = sendbox_multi[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 && + 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++) { + itype=type[i]; + bbox = sendbox_multi[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 && + 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; } - - sendnum[iswap][m] = ncount; - smaxone = MAX(smaxone,ncount); - ncountall += ncount; - } - else{ - int* type=atom->type; - int itype; - ncount = 0; - - if (!bordergroup) { - for (i = 0; i < nlast; i++) { - itype=type[i]; - bbox = sendbox_multi[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 && - 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++) { - itype=type[i]; - bbox = sendbox_multi[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 && - 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++) { - itype=type[i]; - bbox = sendbox_multi[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 && - 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; - } } + smaxall = MAX(smaxall,ncountall); // send sendnum counts to procs who recv from me except self @@ -2136,6 +2154,7 @@ void CommTiled::deallocate_swap(int n) memory->destroy(pbc[i]); memory->destroy(sendbox[i]); memory->destroy(sendbox_multi[i]); + delete [] maxsendlist[i]; for (int j = 0; j < nprocmax[i]; j++) memory->destroy(sendlist[i][j]); diff --git a/src/comm_tiled.h b/src/comm_tiled.h index 018c5b3696..416e2a5317 100644 --- a/src/comm_tiled.h +++ b/src/comm_tiled.h @@ -69,14 +69,16 @@ class CommTiled : public Comm { int **size_reverse_recv; // # of values to recv in each reverse swap/proc int **forward_recv_offset; // forward comm offsets in buf_recv per swap/proc int **reverse_recv_offset; // reverse comm offsets in buf_recv per swap/proc - double **cutghostmulti; // cutghost on a per-type basis int ***sendlist; // list of atoms to send per swap/proc int **maxsendlist; // max size of send list per swap/proc int **pbc_flag; // general flag for sending atoms thru PBC int ***pbc; // dimension flags for PBC adjustments double ***sendbox; // bounding box of atoms to send per swap/proc - double ****sendbox_multi; // bounding box of atoms to send per swap/proc for multi comm + + double **cutghostmulti; // cutghost on a per-type basis + double ****sendbox_multi; // bounding box of atoms to send + // per swap/proc for multi comm // exchange comm info, proc lists do not include self From 8d406403bba4473e4fb4efd6454bbf2f6695421b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 3 Aug 2020 16:07:06 -0400 Subject: [PATCH 06/17] fix typo in manual --- doc/src/pair_colloid.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/pair_colloid.rst b/doc/src/pair_colloid.rst index eb02695aec..e60a326642 100644 --- a/doc/src/pair_colloid.rst +++ b/doc/src/pair_colloid.rst @@ -77,7 +77,7 @@ The colloid-solvent interaction energy is given by \left[ 1 - \frac{\left(5 ~ a^6+45~a^4~r^2+63~a^2~r^4+15~r^6\right) \sigma^6} {15 \left(a-r\right)^6 \left( a+r \right)^6} \right], \quad r < r_c -where :math:A_{cs}` is the Hamaker constant, *a* is the radius of the colloidal +where :math:`A_{cs}` is the Hamaker constant, *a* is the radius of the colloidal particle, and :math:`r_c` is the cutoff. This formula is derived from the colloid-colloid interaction, letting one of the particle sizes go to zero. From 7ed748118e90089dd9e815447f0449825fc3a365 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 3 Aug 2020 16:07:32 -0400 Subject: [PATCH 07/17] add exception for single test for colloid pair style --- unittest/force-styles/test_pair_style.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/unittest/force-styles/test_pair_style.cpp b/unittest/force-styles/test_pair_style.cpp index 6a5da31abd..f1ad5ce2e7 100644 --- a/unittest/force-styles/test_pair_style.cpp +++ b/unittest/force-styles/test_pair_style.cpp @@ -1101,9 +1101,12 @@ TEST(PairStyle, single) // The single function in EAM is different from what we assume // here, therefore we have to skip testing those pair styles. - if ((test_config.pair_style.substr(0, 3) == "eam") || + // Pair style colloid is also not compatible with this single tester + if ((test_config.pair_style.substr(0, 7) == "colloid") || + (test_config.pair_style.substr(0, 3) == "eam") || ((test_config.pair_style.substr(0, 6) == "hybrid") && - (test_config.pair_style.find("eam") != std::string::npos))) { + (test_config.pair_style.find("eam") != std::string::npos)) + ) { if (!verbose) ::testing::internal::CaptureStdout(); cleanup_lammps(lmp, test_config); if (!verbose) ::testing::internal::GetCapturedStdout(); From a6b3ee7a07155077bf1e6cdc2fd28239a0cf25d0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 3 Aug 2020 16:08:13 -0400 Subject: [PATCH 08/17] fix bugs in comm style tiled with multi-cutoff --- src/comm_tiled.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index 849227983a..6930ad13e8 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -90,14 +90,13 @@ void CommTiled::init_buffers() maxoverlap = 0; overlap = NULL; - - maxswap = 6; - allocate_swap(maxswap); - rcbinfo = NULL; - cutghostmulti = NULL; sendbox_multi = NULL; + + maxswap = 6; + nswap = 2*domain->dimension; + allocate_swap(maxswap); } /* ---------------------------------------------------------------------- */ From 6dcd96271881b04452a9f6230cbbe16fa01241b4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 3 Aug 2020 16:08:27 -0400 Subject: [PATCH 09/17] fix indentation and whitespace --- src/comm_tiled.cpp | 412 ++++++++++++++++++++++----------------------- 1 file changed, 206 insertions(+), 206 deletions(-) diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index 6930ad13e8..03cb56921a 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -73,7 +73,7 @@ CommTiled::~CommTiled() memory->destroy(overlap); deallocate_swap(maxswap); memory->sfree(rcbinfo); - + if (mode == Comm::MULTI) memory->destroy(cutghostmulti); } @@ -208,7 +208,7 @@ void CommTiled::setup() cut = MIN(prd[0],prd[1]); if (dimension == 3) cut = MIN(cut,prd[2]); cut *= EPSILON*EPSILON; - cutghost[0] = cutghost[1] = cutghost[2] = cut; + cutghost[0] = cutghost[1] = cutghost[2] = cut; } // setup forward/reverse communication @@ -325,136 +325,136 @@ void CommTiled::setup() // if sbox touches other proc's sub-box boundaries in lower dims, // 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]; - + if (mode == Comm::SINGLE) { - 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; + 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); + (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; - 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]); - } - - if (idir == 0) { - sbox[idim] = sublo[idim]; - if (i < noverlap1) sbox[3+idim] = MIN(sbox[3+idim]+cut,subhi[idim]); - else sbox[3+idim] = MIN(sbox[3+idim]-prd[idim]+cut,subhi[idim]); - } else { - if (i < noverlap1) sbox[idim] = MAX(sbox[idim]-cut,sublo[idim]); - else sbox[idim] = MAX(sbox[idim]+prd[idim]-cut,sublo[idim]); - sbox[3+idim] = subhi[idim]; - } + 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; + 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]); + } - if (idim >= 1) { - if (sbox[0] == oboxlo[0]) sbox[0] -= cut; - if (sbox[3] == oboxhi[0]) sbox[3] += cut; - } - if (idim == 2) { - if (sbox[1] == oboxlo[1]) sbox[1] -= cut; - if (sbox[4] == oboxhi[1]) sbox[4] += cut; - } + if (idir == 0) { + sbox[idim] = sublo[idim]; + if (i < noverlap1) sbox[3+idim] = MIN(sbox[3+idim]+cut,subhi[idim]); + else sbox[3+idim] = MIN(sbox[3+idim]-prd[idim]+cut,subhi[idim]); + } else { + if (i < noverlap1) sbox[idim] = MAX(sbox[idim]-cut,sublo[idim]); + else sbox[idim] = MAX(sbox[idim]+prd[idim]-cut,sublo[idim]); + sbox[3+idim] = subhi[idim]; + } - memcpy(sendbox[iswap][i],sbox,6*sizeof(double)); - } + if (idim >= 1) { + if (sbox[0] == oboxlo[0]) sbox[0] -= cut; + if (sbox[3] == oboxhi[0]) sbox[3] += cut; + } + if (idim == 2) { + if (sbox[1] == oboxlo[1]) sbox[1] -= cut; + if (sbox[4] == oboxhi[1]) sbox[4] += cut; + } + + memcpy(sendbox[iswap][i],sbox,6*sizeof(double)); + } } if (mode == Comm::MULTI) { 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; + 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); + (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; - 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_multi[0] = sbox[0]; - sbox_multi[1] = sbox[1]; - sbox_multi[2] = sbox[2]; - sbox_multi[3] = sbox[3]; - sbox_multi[4] = sbox[4]; - sbox_multi[5] = sbox[5]; - if (idir == 0) { - sbox_multi[idim] = sublo[idim]; - if (i < noverlap1) - sbox_multi[3+idim] = - MIN(sbox_multi[3+idim]+cutghostmulti[itype][idim],subhi[idim]); - else - sbox_multi[3+idim] = - MIN(sbox_multi[3+idim]-prd[idim]+cutghostmulti[itype][idim], - subhi[idim]); - } else { - if (i < noverlap1) - sbox_multi[idim] = - MAX(sbox_multi[idim]-cutghostmulti[itype][idim],sublo[idim]); - else - sbox_multi[idim] = - MAX(sbox_multi[idim]+prd[idim]-cutghostmulti[itype][idim], - sublo[idim]); - sbox_multi[3+idim] = subhi[idim]; - } - - if (idim >= 1) { - if (sbox_multi[0] == oboxlo[0]) - sbox_multi[0] -= cutghostmulti[itype][idim]; - if (sbox_multi[3] == oboxhi[0]) - sbox_multi[3] += cutghostmulti[itype][idim]; - } - if (idim == 2) { - if (sbox_multi[1] == oboxlo[1]) - sbox_multi[1] -= cutghostmulti[itype][idim]; - if (sbox_multi[4] == oboxhi[1]) - sbox_multi[4] += cutghostmulti[itype][idim]; - } + 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; + 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]); + } - memcpy(sendbox_multi[iswap][i][itype],sbox_multi,6*sizeof(double)); - } - } + for (int itype = 1; itype <= atom->ntypes; itype++) { + sbox_multi[0] = sbox[0]; + sbox_multi[1] = sbox[1]; + sbox_multi[2] = sbox[2]; + sbox_multi[3] = sbox[3]; + sbox_multi[4] = sbox[4]; + sbox_multi[5] = sbox[5]; + if (idir == 0) { + sbox_multi[idim] = sublo[idim]; + if (i < noverlap1) + sbox_multi[3+idim] = + MIN(sbox_multi[3+idim]+cutghostmulti[itype][idim],subhi[idim]); + else + sbox_multi[3+idim] = + MIN(sbox_multi[3+idim]-prd[idim]+cutghostmulti[itype][idim], + subhi[idim]); + } else { + if (i < noverlap1) + sbox_multi[idim] = + MAX(sbox_multi[idim]-cutghostmulti[itype][idim],sublo[idim]); + else + sbox_multi[idim] = + MAX(sbox_multi[idim]+prd[idim]-cutghostmulti[itype][idim], + sublo[idim]); + sbox_multi[3+idim] = subhi[idim]; + } + + if (idim >= 1) { + if (sbox_multi[0] == oboxlo[0]) + sbox_multi[0] -= cutghostmulti[itype][idim]; + if (sbox_multi[3] == oboxhi[0]) + sbox_multi[3] += cutghostmulti[itype][idim]; + } + if (idim == 2) { + if (sbox_multi[1] == oboxlo[1]) + sbox_multi[1] -= cutghostmulti[itype][idim]; + if (sbox_multi[4] == oboxhi[1]) + sbox_multi[4] += cutghostmulti[itype][idim]; + } + + memcpy(sendbox_multi[iswap][i][itype],sbox_multi,6*sizeof(double)); + } + } } - + iswap++; } } - + // setup exchange communication = subset of forward/reverse comm procs // loop over dimensions // determine which procs I will exchange with in each dimension @@ -801,10 +801,10 @@ void CommTiled::exchange() buf_send[nsend++] = proc; nsend += avec->pack_exchange(i,&buf_send[nsend]); } else { - // DEBUG statment - // error->warning(FLERR,"Losing atom in CommTiled::exchange() send, " - // "likely bad dynamics"); - } + // DEBUG statment + // error->warning(FLERR,"Losing atom in CommTiled::exchange() send, " + // "likely bad dynamics"); + } avec->copy(nlocal-1,i,1); nlocal--; } else i++; @@ -853,10 +853,10 @@ void CommTiled::exchange() if (value >= lo && value < hi) { m += avec->unpack_exchange(&buf_recv[m]); continue; - } else { - // DEBUG statment - // error->warning(FLERR,"Losing atom in CommTiled::exchange() recv"); - } + } else { + // DEBUG statment + // error->warning(FLERR,"Losing atom in CommTiled::exchange() recv"); + } } m += static_cast (buf_recv[m]); } @@ -900,7 +900,7 @@ void CommTiled::borders() // for yz-dim swaps, check owned and ghost atoms // store sent atom indices in sendlist for use in future timesteps // single mode and multi mode - + x = atom->x; if (iswap % 2 == 0) nlast = atom->nlocal + atom->nghost; @@ -909,98 +909,98 @@ void CommTiled::borders() for (m = 0; m < nsendproc[iswap]; m++) { if (mode == Comm::SINGLE) { - bbox = sendbox[iswap][m]; - xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2]; - xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5]; + bbox = sendbox[iswap][m]; + xlo = bbox[0]; ylo = bbox[1]; zlo = bbox[2]; + xhi = bbox[3]; yhi = bbox[4]; zhi = bbox[5]; - ncount = 0; + ncount = 0; - if (!bordergroup) { - for (i = 0; i < nlast; i++) { - 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); + if (!bordergroup) { + for (i = 0; i < nlast; i++) { + 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++) { - 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++) { - 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++) { + 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++) { + 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; + sendnum[iswap][m] = ncount; + smaxone = MAX(smaxone,ncount); + ncountall += ncount; } else { - - int* type=atom->type; - int itype; - ncount = 0; - if (!bordergroup) { - for (i = 0; i < nlast; i++) { - itype=type[i]; - bbox = sendbox_multi[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 && - 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); + int* type=atom->type; + int itype; + ncount = 0; + + if (!bordergroup) { + for (i = 0; i < nlast; i++) { + itype=type[i]; + bbox = sendbox_multi[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 && + 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++) { - itype=type[i]; - bbox = sendbox_multi[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 && - 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++) { - itype=type[i]; - bbox = sendbox_multi[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 && - 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 { + ngroup = atom->nfirst; + for (i = 0; i < ngroup; i++) { + itype=type[i]; + bbox = sendbox_multi[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 && + 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++) { + itype=type[i]; + bbox = sendbox_multi[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 && + 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; } } - + smaxall = MAX(smaxall,ncountall); // send sendnum counts to procs who recv from me except self @@ -2176,7 +2176,7 @@ void CommTiled::deallocate_swap(int n) memory->destroy(pbc[i]); memory->destroy(sendbox[i]); memory->destroy(sendbox_multi[i]); - + delete [] maxsendlist[i]; for (int j = 0; j < nprocmax[i]; j++) memory->destroy(sendlist[i][j]); From 851a22802ee2564401d7602e213a8316c9aade5e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 3 Aug 2020 16:16:56 -0400 Subject: [PATCH 10/17] add tests for pair style colloid in variants in several neighbor list and comm variants this does 3 tests: - regular neighborlist binning with single cutoff communication - comm style brick with multi-cutoff neighborlists and communication - comm style tiled with multi-cutoff neighborlists and communication --- .../tests/atomic-pair-colloid.yaml | 85 +++++++++++++++++++ .../tests/atomic-pair-colloid_multi.yaml | 85 +++++++++++++++++++ .../tests/atomic-pair-colloid_tiled.yaml | 85 +++++++++++++++++++ unittest/force-styles/tests/data.colloid | 73 ++++++++++++++++ unittest/force-styles/tests/in.colloid | 16 ++++ 5 files changed, 344 insertions(+) create mode 100644 unittest/force-styles/tests/atomic-pair-colloid.yaml create mode 100644 unittest/force-styles/tests/atomic-pair-colloid_multi.yaml create mode 100644 unittest/force-styles/tests/atomic-pair-colloid_tiled.yaml create mode 100644 unittest/force-styles/tests/data.colloid create mode 100644 unittest/force-styles/tests/in.colloid diff --git a/unittest/force-styles/tests/atomic-pair-colloid.yaml b/unittest/force-styles/tests/atomic-pair-colloid.yaml new file mode 100644 index 0000000000..35e44cc54c --- /dev/null +++ b/unittest/force-styles/tests/atomic-pair-colloid.yaml @@ -0,0 +1,85 @@ +--- +lammps_version: 21 Jul 2020 +date_generated: Mon Aug 3 16:06:24 202 +epsilon: 5e-14 +prerequisites: ! | + pair colloid +pre_commands: ! | + variable units index lj +post_commands: ! | + neighbor 1.0 bin + comm_style brick + comm_modify mode single +input_file: in.colloid +pair_style: colloid 12.5 +pair_coeff: ! | + 1 1 1.0 1.0 5.0 5.0 12.5 + 1 2 5.0 1.0 5.0 0.0 7.0 + 2 2 10.0 1.0 0.0 0.0 2.5 +extract: ! "" +natoms: 27 +init_vdwl: -0.250265293649414 +init_coul: 0 +init_stress: ! |2- + 1.6693554149342897e+00 1.1752557173260264e+01 1.0084916384631697e+00 -5.5164068587184527e+00 3.4448938909043297e-01 2.8524984331506240e+00 +init_forces: ! |2 + 1 7.2698902368314028e-02 7.6228314794484830e-02 1.0726717051410481e-01 + 2 -4.1487528743785314e-02 -9.8021436494101673e-03 1.5709289685835706e-01 + 3 -6.4514052467860251e-03 -1.0256365723614392e-03 -6.5497018575823654e-04 + 4 -1.5879716299045554e-02 -1.3313626328419375e-02 -1.1960220488237115e-02 + 5 -3.6475105049685382e-02 -2.2992583864092243e-02 1.6166097759476125e-02 + 6 5.4769180740248721e-04 -2.4426732691233789e-02 -3.6444902428178980e-02 + 7 1.2006858444817004e-03 8.6089326153587114e-04 4.8033026817420977e-05 + 8 6.2576206692511894e-03 1.1942031910109577e-03 8.5598267089392085e-04 + 9 1.8304752931477772e+00 -4.3380838069003760e+00 -1.2763141904695217e+00 + 10 1.0456768773213965e-01 -2.8797785965171453e-02 -1.0768387599117879e-02 + 11 7.4457152913473112e-04 5.3043528596594623e-05 1.1848179655097060e-04 + 12 1.8275344545112628e-04 4.1948901318387846e-04 9.8529270880004928e-05 + 13 -1.1259391902077470e-01 1.6396787556459839e-02 -9.0455786475091124e-04 + 14 -2.4411189619188785e-04 -5.8284002050384879e-05 1.8046434825690733e-05 + 15 -2.9421019290851403e-03 -7.4831176382853144e-04 -1.2326238660052020e-03 + 16 2.2461127490925330e+00 -1.1352527056039741e+00 2.3679980564815390e+00 + 17 -1.8842133286566962e-02 1.7091738246445273e-02 -1.4247568288438442e-02 + 18 1.0304762560041125e-01 7.8062023784307467e-03 1.9257495383127633e-02 + 19 -4.3351162132476757e-02 -2.2995928402219718e-02 -1.1392806036292676e-02 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 4.2501672350519291e-02 6.8582908647593869e-03 -6.8677246013076093e-02 + 22 -2.2945818607502835e+00 1.1603382884260454e+00 -2.3594708301087310e+00 + 23 2.5606115583434265e-02 -1.0270997331622232e-01 -1.1451933998746673e-01 + 24 -8.0648597970214809e-04 1.1943689027481706e-04 -9.8441554909815322e-04 + 25 6.1663239781204479e-04 -2.9236784591333024e-04 3.5387752678593650e-03 + 26 -1.7197958284241512e+00 4.3707144027711022e+00 1.2977194913045051e+00 + 27 -1.4110864281012736e-01 4.2418795982941855e-02 -6.2606997884263993e-02 +run_vdwl: 0.0367090517931739 +run_coul: 0 +run_stress: ! |2- + 3.2547164843322682e+00 1.2822272288053410e+01 2.9381904014809601e+00 -6.5755478139675869e+00 2.3052669923975402e+00 1.5140903126232870e+00 +run_forces: ! |2 + 1 5.8196197291626200e-02 7.7034242946349835e-02 1.0456829776646272e-01 + 2 -4.1552988555246327e-02 -1.1540194679885485e-02 1.5467509805429100e-01 + 3 -6.6558201800471870e-03 -9.8090417095619679e-04 -4.5870088099424396e-04 + 4 -1.6184658518487705e-02 -1.2048418808706472e-02 -1.2190156970179262e-02 + 5 -3.3316803862839403e-02 -2.1131495092834619e-02 1.4963198384123102e-02 + 6 4.7038346343352116e-04 -3.0307837184768524e-02 -4.3608938525025766e-02 + 7 1.0396652127649081e-03 7.5317021954246196e-04 4.1930480907776011e-05 + 8 6.4423457305213877e-03 1.1468835414812518e-03 6.8526191116136061e-04 + 9 1.7585178109228492e+00 -4.3823551563819683e+00 -1.2468505588145766e+00 + 10 1.3392700382201897e-01 -2.9471624976996433e-02 -9.0915578208389906e-03 + 11 7.9839096035526878e-04 6.5881060273477888e-05 1.3840230606223551e-04 + 12 1.8540711169000120e-04 3.9935505493718929e-04 1.2187452986589205e-04 + 13 -1.4075050026169886e-01 1.8204883476184704e-02 -2.0674384501958810e-03 + 14 -2.4452271394244688e-04 -5.7393635529214755e-05 1.6908863929994165e-05 + 15 -3.4577717467029730e-03 -9.3350658134032588e-04 -1.5696623820874889e-03 + 16 5.4762334392971725e+00 -3.3427628201841180e+00 5.8008787111000641e+00 + 17 -1.7123087875076635e-02 1.5861563712562771e-02 -1.3049347364948664e-02 + 18 1.1434938302418582e-01 8.6112942994291432e-03 2.0292892978926169e-02 + 19 -3.8092989065812294e-02 -1.9963855292591683e-02 -9.8568020007968223e-03 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 4.1446743356056415e-02 8.4986882092498734e-03 -7.1565549648589480e-02 + 22 -5.5269240273286284e+00 3.3665609275390551e+00 -5.7932229791606380e+00 + 23 1.5450935830291834e-02 -1.0557581147017484e-01 -1.1539704280712981e-01 + 24 -7.5222270706101302e-04 1.1318969997713211e-04 -9.2841932954143037e-04 + 25 1.1778375109233723e-03 -7.1254208855309762e-05 3.8035457799329405e-03 + 26 -1.6497221843622811e+00 4.4233264004281976e+00 1.2763820593322663e+00 + 27 -1.3345796635606474e-01 3.6623792481486360e-02 -5.6711027332452278e-02 +... diff --git a/unittest/force-styles/tests/atomic-pair-colloid_multi.yaml b/unittest/force-styles/tests/atomic-pair-colloid_multi.yaml new file mode 100644 index 0000000000..3ee28958b1 --- /dev/null +++ b/unittest/force-styles/tests/atomic-pair-colloid_multi.yaml @@ -0,0 +1,85 @@ +--- +lammps_version: 21 Jul 2020 +date_generated: Mon Aug 3 16:06:24 202 +epsilon: 5e-14 +prerequisites: ! | + pair colloid +pre_commands: ! | + variable units index lj +post_commands: ! | + neighbor 1.0 multi + comm_style brick + comm_modify mode multi +input_file: in.colloid +pair_style: colloid 12.5 +pair_coeff: ! | + 1 1 1.0 1.0 5.0 5.0 12.5 + 1 2 5.0 1.0 5.0 0.0 7.0 + 2 2 10.0 1.0 0.0 0.0 2.5 +extract: ! "" +natoms: 27 +init_vdwl: -0.250265293649414 +init_coul: 0 +init_stress: ! |2- + 1.6693554149342913e+00 1.1752557173260270e+01 1.0084916384631617e+00 -5.5164068587184527e+00 3.4448938909043431e-01 2.8524984331506258e+00 +init_forces: ! |2 + 1 7.2698902368314056e-02 7.6228314794484775e-02 1.0726717051410484e-01 + 2 -4.1487528743785314e-02 -9.8021436494101673e-03 1.5709289685835706e-01 + 3 -6.4514052467860251e-03 -1.0256365723614392e-03 -6.5497018575823654e-04 + 4 -1.5879716299045554e-02 -1.3313626328419375e-02 -1.1960220488237115e-02 + 5 -3.6475105049685402e-02 -2.2992583864092257e-02 1.6166097759476136e-02 + 6 5.4769180740248721e-04 -2.4426732691233789e-02 -3.6444902428178980e-02 + 7 1.2006858444817004e-03 8.6089326153587114e-04 4.8033026817420977e-05 + 8 6.2576206692511894e-03 1.1942031910109577e-03 8.5598267089392085e-04 + 9 1.8304752931477772e+00 -4.3380838069003760e+00 -1.2763141904695217e+00 + 10 1.0456768773213965e-01 -2.8797785965171453e-02 -1.0768387599117879e-02 + 11 7.4457152913473112e-04 5.3043528596594623e-05 1.1848179655097060e-04 + 12 1.8275344545112628e-04 4.1948901318387846e-04 9.8529270880004928e-05 + 13 -1.1259391902077470e-01 1.6396787556459839e-02 -9.0455786475091124e-04 + 14 -2.4411189619188785e-04 -5.8284002050384879e-05 1.8046434825690733e-05 + 15 -2.9421019290851403e-03 -7.4831176382853144e-04 -1.2326238660052020e-03 + 16 2.2461127490925330e+00 -1.1352527056039741e+00 2.3679980564815386e+00 + 17 -1.8842133286566962e-02 1.7091738246445273e-02 -1.4247568288438442e-02 + 18 1.0304762560041125e-01 7.8062023784307467e-03 1.9257495383127633e-02 + 19 -4.3351162132476757e-02 -2.2995928402219718e-02 -1.1392806036292676e-02 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 4.2501672350519284e-02 6.8582908647593938e-03 -6.8677246013076107e-02 + 22 -2.2945818607502839e+00 1.1603382884260454e+00 -2.3594708301087310e+00 + 23 2.5606115583434265e-02 -1.0270997331622232e-01 -1.1451933998746673e-01 + 24 -8.0648597970214809e-04 1.1943689027481706e-04 -9.8441554909815322e-04 + 25 6.1663239781204458e-04 -2.9236784591333030e-04 3.5387752678593654e-03 + 26 -1.7197958284241512e+00 4.3707144027711022e+00 1.2977194913045054e+00 + 27 -1.4110864281012736e-01 4.2418795982941855e-02 -6.2606997884263993e-02 +run_vdwl: 0.0367090517931737 +run_coul: 0 +run_stress: ! |2- + 3.2547164843322691e+00 1.2822272288053391e+01 2.9381904014809663e+00 -6.5755478139675931e+00 2.3052669923975411e+00 1.5140903126232879e+00 +run_forces: ! |2 + 1 5.8196197291625715e-02 7.7034242946349946e-02 1.0456829776646254e-01 + 2 -4.1552988555246327e-02 -1.1540194679885485e-02 1.5467509805429100e-01 + 3 -6.6558201800471870e-03 -9.8090417095619679e-04 -4.5870088099424396e-04 + 4 -1.6184658518487705e-02 -1.2048418808706472e-02 -1.2190156970179262e-02 + 5 -3.3316803862839438e-02 -2.1131495092834646e-02 1.4963198384123119e-02 + 6 4.7038346343352116e-04 -3.0307837184768524e-02 -4.3608938525025766e-02 + 7 1.0396652127649081e-03 7.5317021954246196e-04 4.1930480907776011e-05 + 8 6.4423457305213877e-03 1.1468835414812518e-03 6.8526191116136061e-04 + 9 1.7585178109228492e+00 -4.3823551563819700e+00 -1.2468505588145766e+00 + 10 1.3392700382201897e-01 -2.9471624976996433e-02 -9.0915578208389906e-03 + 11 7.9839096035526857e-04 6.5881060273478105e-05 1.3840230606223543e-04 + 12 1.8540711169000120e-04 3.9935505493718929e-04 1.2187452986589205e-04 + 13 -1.4075050026169886e-01 1.8204883476184704e-02 -2.0674384501958810e-03 + 14 -2.4452271394244688e-04 -5.7393635529214755e-05 1.6908863929994165e-05 + 15 -3.4577717467029726e-03 -9.3350658134032599e-04 -1.5696623820874889e-03 + 16 5.4762334392971725e+00 -3.3427628201841184e+00 5.8008787111000641e+00 + 17 -1.7123087875076635e-02 1.5861563712562771e-02 -1.3049347364948664e-02 + 18 1.1434938302418582e-01 8.6112942994291432e-03 2.0292892978926169e-02 + 19 -3.8092989065812294e-02 -1.9963855292591683e-02 -9.8568020007968223e-03 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 4.1446743356056415e-02 8.4986882092498717e-03 -7.1565549648589466e-02 + 22 -5.5269240273286284e+00 3.3665609275390551e+00 -5.7932229791606371e+00 + 23 1.5450935830291834e-02 -1.0557581147017484e-01 -1.1539704280712981e-01 + 24 -7.5222270706101302e-04 1.1318969997713211e-04 -9.2841932954143037e-04 + 25 1.1778375109233736e-03 -7.1254208855308434e-05 3.8035457799329383e-03 + 26 -1.6497221843622811e+00 4.4233264004281976e+00 1.2763820593322663e+00 + 27 -1.3345796635606427e-01 3.6623792481486235e-02 -5.6711027332452084e-02 +... diff --git a/unittest/force-styles/tests/atomic-pair-colloid_tiled.yaml b/unittest/force-styles/tests/atomic-pair-colloid_tiled.yaml new file mode 100644 index 0000000000..5d2e3147de --- /dev/null +++ b/unittest/force-styles/tests/atomic-pair-colloid_tiled.yaml @@ -0,0 +1,85 @@ +--- +lammps_version: 21 Jul 2020 +date_generated: Mon Aug 3 16:06:24 202 +epsilon: 5e-14 +prerequisites: ! | + pair colloid +pre_commands: ! | + variable units index lj +post_commands: ! | + neighbor 1.0 multi + comm_style tiled + comm_modify mode multi +input_file: in.colloid +pair_style: colloid 12.5 +pair_coeff: ! | + 1 1 1.0 1.0 5.0 5.0 12.5 + 1 2 5.0 1.0 5.0 0.0 7.0 + 2 2 10.0 1.0 0.0 0.0 2.5 +extract: ! "" +natoms: 27 +init_vdwl: -0.250265293649414 +init_coul: 0 +init_stress: ! |2- + 1.6693554149342913e+00 1.1752557173260270e+01 1.0084916384631617e+00 -5.5164068587184527e+00 3.4448938909043431e-01 2.8524984331506258e+00 +init_forces: ! |2 + 1 7.2698902368314056e-02 7.6228314794484775e-02 1.0726717051410484e-01 + 2 -4.1487528743785314e-02 -9.8021436494101673e-03 1.5709289685835706e-01 + 3 -6.4514052467860251e-03 -1.0256365723614392e-03 -6.5497018575823654e-04 + 4 -1.5879716299045554e-02 -1.3313626328419375e-02 -1.1960220488237115e-02 + 5 -3.6475105049685402e-02 -2.2992583864092257e-02 1.6166097759476136e-02 + 6 5.4769180740248721e-04 -2.4426732691233789e-02 -3.6444902428178980e-02 + 7 1.2006858444817004e-03 8.6089326153587114e-04 4.8033026817420977e-05 + 8 6.2576206692511894e-03 1.1942031910109577e-03 8.5598267089392085e-04 + 9 1.8304752931477772e+00 -4.3380838069003760e+00 -1.2763141904695217e+00 + 10 1.0456768773213965e-01 -2.8797785965171453e-02 -1.0768387599117879e-02 + 11 7.4457152913473112e-04 5.3043528596594623e-05 1.1848179655097060e-04 + 12 1.8275344545112628e-04 4.1948901318387846e-04 9.8529270880004928e-05 + 13 -1.1259391902077470e-01 1.6396787556459839e-02 -9.0455786475091124e-04 + 14 -2.4411189619188785e-04 -5.8284002050384879e-05 1.8046434825690733e-05 + 15 -2.9421019290851403e-03 -7.4831176382853144e-04 -1.2326238660052020e-03 + 16 2.2461127490925330e+00 -1.1352527056039741e+00 2.3679980564815386e+00 + 17 -1.8842133286566962e-02 1.7091738246445273e-02 -1.4247568288438442e-02 + 18 1.0304762560041125e-01 7.8062023784307467e-03 1.9257495383127633e-02 + 19 -4.3351162132476757e-02 -2.2995928402219718e-02 -1.1392806036292676e-02 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 4.2501672350519284e-02 6.8582908647593938e-03 -6.8677246013076107e-02 + 22 -2.2945818607502839e+00 1.1603382884260454e+00 -2.3594708301087310e+00 + 23 2.5606115583434265e-02 -1.0270997331622232e-01 -1.1451933998746673e-01 + 24 -8.0648597970214809e-04 1.1943689027481706e-04 -9.8441554909815322e-04 + 25 6.1663239781204458e-04 -2.9236784591333030e-04 3.5387752678593654e-03 + 26 -1.7197958284241512e+00 4.3707144027711022e+00 1.2977194913045054e+00 + 27 -1.4110864281012736e-01 4.2418795982941855e-02 -6.2606997884263993e-02 +run_vdwl: 0.0367090517931737 +run_coul: 0 +run_stress: ! |2- + 3.2547164843322691e+00 1.2822272288053391e+01 2.9381904014809663e+00 -6.5755478139675931e+00 2.3052669923975411e+00 1.5140903126232879e+00 +run_forces: ! |2 + 1 5.8196197291625715e-02 7.7034242946349946e-02 1.0456829776646254e-01 + 2 -4.1552988555246327e-02 -1.1540194679885485e-02 1.5467509805429100e-01 + 3 -6.6558201800471870e-03 -9.8090417095619679e-04 -4.5870088099424396e-04 + 4 -1.6184658518487705e-02 -1.2048418808706472e-02 -1.2190156970179262e-02 + 5 -3.3316803862839438e-02 -2.1131495092834646e-02 1.4963198384123119e-02 + 6 4.7038346343352116e-04 -3.0307837184768524e-02 -4.3608938525025766e-02 + 7 1.0396652127649081e-03 7.5317021954246196e-04 4.1930480907776011e-05 + 8 6.4423457305213877e-03 1.1468835414812518e-03 6.8526191116136061e-04 + 9 1.7585178109228492e+00 -4.3823551563819700e+00 -1.2468505588145766e+00 + 10 1.3392700382201897e-01 -2.9471624976996433e-02 -9.0915578208389906e-03 + 11 7.9839096035526857e-04 6.5881060273478105e-05 1.3840230606223543e-04 + 12 1.8540711169000120e-04 3.9935505493718929e-04 1.2187452986589205e-04 + 13 -1.4075050026169886e-01 1.8204883476184704e-02 -2.0674384501958810e-03 + 14 -2.4452271394244688e-04 -5.7393635529214755e-05 1.6908863929994165e-05 + 15 -3.4577717467029726e-03 -9.3350658134032599e-04 -1.5696623820874889e-03 + 16 5.4762334392971725e+00 -3.3427628201841184e+00 5.8008787111000641e+00 + 17 -1.7123087875076635e-02 1.5861563712562771e-02 -1.3049347364948664e-02 + 18 1.1434938302418582e-01 8.6112942994291432e-03 2.0292892978926169e-02 + 19 -3.8092989065812294e-02 -1.9963855292591683e-02 -9.8568020007968223e-03 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 4.1446743356056415e-02 8.4986882092498717e-03 -7.1565549648589466e-02 + 22 -5.5269240273286284e+00 3.3665609275390551e+00 -5.7932229791606371e+00 + 23 1.5450935830291834e-02 -1.0557581147017484e-01 -1.1539704280712981e-01 + 24 -7.5222270706101302e-04 1.1318969997713211e-04 -9.2841932954143037e-04 + 25 1.1778375109233736e-03 -7.1254208855308434e-05 3.8035457799329383e-03 + 26 -1.6497221843622811e+00 4.4233264004281976e+00 1.2763820593322663e+00 + 27 -1.3345796635606427e-01 3.6623792481486235e-02 -5.6711027332452084e-02 +... diff --git a/unittest/force-styles/tests/data.colloid b/unittest/force-styles/tests/data.colloid new file mode 100644 index 0000000000..e5c87eee84 --- /dev/null +++ b/unittest/force-styles/tests/data.colloid @@ -0,0 +1,73 @@ +LAMMPS data file via write_data, version 21 Jul 2020, timestep = 5000 + +27 atoms +2 atom types + +-0.2436910920596036 13.743691092059596 xlo xhi +-0.2436910920596036 13.743691092059596 ylo yhi +-0.2436910920596036 13.743691092059596 zlo zhi + +Masses + +1 9 +2 1 + +Atoms # atomic + +21 1 8.218284363111994 3.8616496369708644 3.926644621675435 0 0 1 +14 2 3.971804908882051 12.196374430867266 11.800922980362827 1 -1 2 +4 2 12.749633950530594 0.2895775102974337 13.665118030342807 1 0 -4 +6 2 10.48479135210438 0.7314009568199128 0.20579559916130968 0 0 -1 +11 2 6.370393143436297 0.7506711988180665 11.228922122628624 -1 1 0 +16 2 1.781613249220567 9.315352564201742 13.003045928765761 1 -1 -1 +15 2 2.5907208520939946 7.092392808241224 9.564419981414446 -2 0 -1 +10 2 2.06473035593474 10.936583460926354 0.2143993310674837 1 -2 2 +17 2 10.89572436719935 1.4615862891785334 5.9966656418333475 -3 -2 0 +12 2 8.989180695332816 13.155343018320753 7.380136516456334 3 -2 -1 +23 2 9.679726091492721 5.587125576488552 0.5505405659916122 0 1 -1 +26 2 10.150200745369286 13.451068779020826 13.1305422632724 0 0 -2 +27 2 0.5854518735680864 3.3706426419449973 13.20338885987352 3 3 -4 +2 2 12.401535589626157 4.499183730038622 8.453939258351905 0 -2 0 +9 1 11.284839488845652 10.602811415241838 12.294336783300636 0 0 -1 +7 2 3.67365214779975 0.6031426192504774 3.744838163244472 -1 0 -3 +25 2 0.580286149741973 6.5570299426679615 8.204514419385035 2 -1 1 +5 2 0.4370415403230168 12.62671878288036 10.900794906743482 -3 1 -2 +20 2 0.5960686789505689 -0.03029382390167784 6.650651587937794 1 -1 -2 +3 2 2.4025882097830804 3.537273393359948 6.539574857512142 -1 1 -1 +8 2 0.2515454304433808 3.209093417679412 6.394794043739663 1 1 0 +24 2 0.8855320855058237 10.07143392738017 2.6866421503905222 0 0 0 +22 2 1.1569993715184617 9.633923152653242 12.34752906065215 -2 0 2 +1 1 11.516625939770336 4.289372112043943 11.847412277845446 -1 -1 -1 +13 2 3.4573289217000625 10.709357504995712 0.2070680620433607 -3 1 2 +18 2 8.388010639142333 4.8343459387085295 0.022914514686456666 0 2 2 +19 2 0.8904095150489832 6.178968410953466 12.739150191807628 -2 -2 1 + +Velocities + +21 0.5108629151801364 0.5071783225038178 0.038121513505701005 +14 0.04442371287433498 -0.9592694013198345 1.2892900869531516 +4 -0.2178346847645286 0.6098857389317441 -0.11034167964068448 +6 -0.1576695048262709 -1.2130499080058224 -1.532174167207837 +11 2.8099374837612547 -0.04484558137222933 -2.949735057364872 +16 -2.514269472184712 0.8600214136555172 -1.334072825855178 +15 -1.9716757999689132 0.34144027670649985 -1.289546613298351 +10 1.593221282752536 -1.4854596141900234 -0.5931052285995597 +17 0.30576221579017154 -1.7264461829362503 0.9151292837107401 +12 1.856996336103833 1.2171769820936116 0.7446116107611583 +23 0.6826664104612703 -1.2226601048696837 -0.575337461330738 +26 2.060350188652742 1.4611540801166607 -1.2802524060106233 +27 0.249900902388907 2.388571043902052 -1.8492601452320174 +2 0.2605802271656383 0.7180097106986123 0.23261242169201765 +9 -0.34764522027409256 0.3030477382656852 -0.27629534212658624 +7 -2.269133408440061 -3.1960327319813473 -0.148176086091223 +25 1.1175412259994884 -0.5507974421930979 1.1903914944413345 +5 0.20657924357863497 1.6144987892387104 -1.4640329026812684 +20 0.0590579871685183 -0.24749314593051103 -1.104019292812069 +3 -0.5186327771760407 0.5748836420503801 -1.1735732476681855 +8 -0.4437666044968981 1.7357347488421837 1.9514880021657892 +24 -0.28726920313585036 -0.13725286038541634 2.2362521378373943 +22 0.07031578857583798 2.4612824702440497 1.159670483206302 +1 -0.6115443594925424 -1.3770574953178165 0.6488398210995187 +13 -1.7087317711505776 1.2667666619290276 0.6879911689583401 +18 1.023336469072999 1.4409480361581861 0.7015199009707059 +19 1.783253733076145 -0.8055837104480024 0.5986765907881554 diff --git a/unittest/force-styles/tests/in.colloid b/unittest/force-styles/tests/in.colloid new file mode 100644 index 0000000000..69e62e6616 --- /dev/null +++ b/unittest/force-styles/tests/in.colloid @@ -0,0 +1,16 @@ +variable newton_pair index on +variable newton_bond index on +variable units index lj +variable input_dir index . +variable data_file index ${input_dir}/data.colloid +variable pair_style index 'zero 8.0' + +atom_style atomic +atom_modify map array +neigh_modify delay 2 every 2 check no +timestep 0.01 +units ${units} +newton ${newton_pair} ${newton_bond} + +pair_style ${pair_style} +read_data ${data_file} From 0db1c66b039c728b3d788880f81e800035d44fae Mon Sep 17 00:00:00 2001 From: Adrian-Diaz Date: Mon, 3 Aug 2020 20:16:20 -0400 Subject: [PATCH 11/17] triclinic compatibility --- src/comm_tiled.cpp | 40 ++++++--- .../atomic-pair-colloid_multi_triclinic.yaml | 86 +++++++++++++++++++ 2 files changed, 115 insertions(+), 11 deletions(-) create mode 100644 unittest/force-styles/tests/atomic-pair-colloid_multi_triclinic.yaml diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index 03cb56921a..893d0f23d8 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -113,11 +113,6 @@ void CommTiled::init() int bufextra_old = bufextra; init_exchange(); if (bufextra > bufextra_old) grow_send(maxsend+bufextra,2); - - // temporary restrictions - - if (triclinic) - error->all(FLERR,"Cannot yet use comm_style tiled with triclinic box"); } /* ---------------------------------------------------------------------- @@ -132,15 +127,23 @@ void CommTiled::setup() // domain properties used in setup method and methods it calls dimension = domain->dimension; - prd = domain->prd; - boxlo = domain->boxlo; - boxhi = domain->boxhi; - sublo = domain->sublo; - subhi = domain->subhi; - int *periodicity = domain->periodicity; int ntypes = atom->ntypes; + if (triclinic == 0) { + prd = domain->prd; + boxlo = domain->boxlo; + boxhi = domain->boxhi; + sublo = domain->sublo; + subhi = domain->subhi; + } else { + prd = domain->prd_lamda; + boxlo = domain->boxlo_lamda; + boxhi = domain->boxhi_lamda; + sublo = domain->sublo_lamda; + subhi = domain->subhi_lamda; + } + // set function pointers if (layout != Comm::LAYOUT_TILED) { @@ -189,6 +192,13 @@ void CommTiled::setup() cutghost[1] = cut * length1; length2 = h_inv[2]; cutghost[2] = cut * length2; + if (mode == Comm::MULTI){ + for (i = 1; i <= ntypes; i++) { + cutghostmulti[i][0] *= length0; + cutghostmulti[i][1] *= length1; + cutghostmulti[i][2] *= length2; + } + } } if ((periodicity[0] && cutghost[0] > prd[0]) || @@ -347,6 +357,10 @@ void CommTiled::setup() 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]); @@ -397,6 +411,10 @@ void CommTiled::setup() 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]); diff --git a/unittest/force-styles/tests/atomic-pair-colloid_multi_triclinic.yaml b/unittest/force-styles/tests/atomic-pair-colloid_multi_triclinic.yaml new file mode 100644 index 0000000000..8d6a237162 --- /dev/null +++ b/unittest/force-styles/tests/atomic-pair-colloid_multi_triclinic.yaml @@ -0,0 +1,86 @@ +--- +lammps_version: 21 Jul 2020 +date_generated: Mon Aug 3 16:06:24 202 +epsilon: 5e-11 +prerequisites: ! | + pair colloid +pre_commands: ! | + variable units index lj +post_commands: ! | + neighbor 1.0 multi + comm_style brick + comm_modify mode multi + change_box all triclinic +input_file: in.colloid +pair_style: colloid 12.5 +pair_coeff: ! | + 1 1 1.0 1.0 5.0 5.0 12.5 + 1 2 5.0 1.0 5.0 0.0 7.0 + 2 2 10.0 1.0 0.0 0.0 2.5 +extract: ! "" +natoms: 27 +init_vdwl: -0.250265293649414 +init_coul: 0 +init_stress: ! |2- + 1.6693554149342913e+00 1.1752557173260270e+01 1.0084916384631617e+00 -5.5164068587184527e+00 3.4448938909043431e-01 2.8524984331506258e+00 +init_forces: ! |2 + 1 7.2698902368314056e-02 7.6228314794484775e-02 1.0726717051410484e-01 + 2 -4.1487528743785314e-02 -9.8021436494101673e-03 1.5709289685835706e-01 + 3 -6.4514052467860251e-03 -1.0256365723614392e-03 -6.5497018575823654e-04 + 4 -1.5879716299045554e-02 -1.3313626328419375e-02 -1.1960220488237115e-02 + 5 -3.6475105049685402e-02 -2.2992583864092257e-02 1.6166097759476136e-02 + 6 5.4769180740248721e-04 -2.4426732691233789e-02 -3.6444902428178980e-02 + 7 1.2006858444817004e-03 8.6089326153587114e-04 4.8033026817420977e-05 + 8 6.2576206692511894e-03 1.1942031910109577e-03 8.5598267089392085e-04 + 9 1.8304752931477772e+00 -4.3380838069003760e+00 -1.2763141904695217e+00 + 10 1.0456768773213965e-01 -2.8797785965171453e-02 -1.0768387599117879e-02 + 11 7.4457152913473112e-04 5.3043528596594623e-05 1.1848179655097060e-04 + 12 1.8275344545112628e-04 4.1948901318387846e-04 9.8529270880004928e-05 + 13 -1.1259391902077470e-01 1.6396787556459839e-02 -9.0455786475091124e-04 + 14 -2.4411189619188785e-04 -5.8284002050384879e-05 1.8046434825690733e-05 + 15 -2.9421019290851403e-03 -7.4831176382853144e-04 -1.2326238660052020e-03 + 16 2.2461127490925330e+00 -1.1352527056039741e+00 2.3679980564815386e+00 + 17 -1.8842133286566962e-02 1.7091738246445273e-02 -1.4247568288438442e-02 + 18 1.0304762560041125e-01 7.8062023784307467e-03 1.9257495383127633e-02 + 19 -4.3351162132476757e-02 -2.2995928402219718e-02 -1.1392806036292676e-02 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 4.2501672350519284e-02 6.8582908647593938e-03 -6.8677246013076107e-02 + 22 -2.2945818607502839e+00 1.1603382884260454e+00 -2.3594708301087310e+00 + 23 2.5606115583434265e-02 -1.0270997331622232e-01 -1.1451933998746673e-01 + 24 -8.0648597970214809e-04 1.1943689027481706e-04 -9.8441554909815322e-04 + 25 6.1663239781204458e-04 -2.9236784591333030e-04 3.5387752678593654e-03 + 26 -1.7197958284241512e+00 4.3707144027711022e+00 1.2977194913045054e+00 + 27 -1.4110864281012736e-01 4.2418795982941855e-02 -6.2606997884263993e-02 +run_vdwl: 0.0367090517931737 +run_coul: 0 +run_stress: ! |2- + 3.2547164843322691e+00 1.2822272288053391e+01 2.9381904014809663e+00 -6.5755478139675931e+00 2.3052669923975411e+00 1.5140903126232879e+00 +run_forces: ! |2 + 1 5.8196197291625715e-02 7.7034242946349946e-02 1.0456829776646254e-01 + 2 -4.1552988555246327e-02 -1.1540194679885485e-02 1.5467509805429100e-01 + 3 -6.6558201800471870e-03 -9.8090417095619679e-04 -4.5870088099424396e-04 + 4 -1.6184658518487705e-02 -1.2048418808706472e-02 -1.2190156970179262e-02 + 5 -3.3316803862839438e-02 -2.1131495092834646e-02 1.4963198384123119e-02 + 6 4.7038346343352116e-04 -3.0307837184768524e-02 -4.3608938525025766e-02 + 7 1.0396652127649081e-03 7.5317021954246196e-04 4.1930480907776011e-05 + 8 6.4423457305213877e-03 1.1468835414812518e-03 6.8526191116136061e-04 + 9 1.7585178109228492e+00 -4.3823551563819700e+00 -1.2468505588145766e+00 + 10 1.3392700382201897e-01 -2.9471624976996433e-02 -9.0915578208389906e-03 + 11 7.9839096035526857e-04 6.5881060273478105e-05 1.3840230606223543e-04 + 12 1.8540711169000120e-04 3.9935505493718929e-04 1.2187452986589205e-04 + 13 -1.4075050026169886e-01 1.8204883476184704e-02 -2.0674384501958810e-03 + 14 -2.4452271394244688e-04 -5.7393635529214755e-05 1.6908863929994165e-05 + 15 -3.4577717467029726e-03 -9.3350658134032599e-04 -1.5696623820874889e-03 + 16 5.4762334392971725e+00 -3.3427628201841184e+00 5.8008787111000641e+00 + 17 -1.7123087875076635e-02 1.5861563712562771e-02 -1.3049347364948664e-02 + 18 1.1434938302418582e-01 8.6112942994291432e-03 2.0292892978926169e-02 + 19 -3.8092989065812294e-02 -1.9963855292591683e-02 -9.8568020007968223e-03 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 4.1446743356056415e-02 8.4986882092498717e-03 -7.1565549648589466e-02 + 22 -5.5269240273286284e+00 3.3665609275390551e+00 -5.7932229791606371e+00 + 23 1.5450935830291834e-02 -1.0557581147017484e-01 -1.1539704280712981e-01 + 24 -7.5222270706101302e-04 1.1318969997713211e-04 -9.2841932954143037e-04 + 25 1.1778375109233736e-03 -7.1254208855308434e-05 3.8035457799329383e-03 + 26 -1.6497221843622811e+00 4.4233264004281976e+00 1.2763820593322663e+00 + 27 -1.3345796635606427e-01 3.6623792481486235e-02 -5.6711027332452084e-02 +... From ea900b3482602fab893675d4f8f0d16e9b0a987e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 3 Aug 2020 22:17:04 -0400 Subject: [PATCH 12/17] add test input template for tiled with triclinic and multi-cutoff --- ...aml => atomic-pair-colloid_multi_tri.yaml} | 0 .../tests/atomic-pair-colloid_tiled_tri.yaml | 86 +++++++++++++++++++ 2 files changed, 86 insertions(+) rename unittest/force-styles/tests/{atomic-pair-colloid_multi_triclinic.yaml => atomic-pair-colloid_multi_tri.yaml} (100%) create mode 100644 unittest/force-styles/tests/atomic-pair-colloid_tiled_tri.yaml diff --git a/unittest/force-styles/tests/atomic-pair-colloid_multi_triclinic.yaml b/unittest/force-styles/tests/atomic-pair-colloid_multi_tri.yaml similarity index 100% rename from unittest/force-styles/tests/atomic-pair-colloid_multi_triclinic.yaml rename to unittest/force-styles/tests/atomic-pair-colloid_multi_tri.yaml diff --git a/unittest/force-styles/tests/atomic-pair-colloid_tiled_tri.yaml b/unittest/force-styles/tests/atomic-pair-colloid_tiled_tri.yaml new file mode 100644 index 0000000000..d49b93ac0d --- /dev/null +++ b/unittest/force-styles/tests/atomic-pair-colloid_tiled_tri.yaml @@ -0,0 +1,86 @@ +--- +lammps_version: 21 Jul 2020 +date_generated: Mon Aug 3 16:06:24 202 +epsilon: 5e-14 +prerequisites: ! | + pair colloid +pre_commands: ! | + variable units index lj +post_commands: ! | + neighbor 1.0 multi + comm_style tiled + comm_modify mode multi + change_box all triclinic +input_file: in.colloid +pair_style: colloid 12.5 +pair_coeff: ! | + 1 1 1.0 1.0 5.0 5.0 12.5 + 1 2 5.0 1.0 5.0 0.0 7.0 + 2 2 10.0 1.0 0.0 0.0 2.5 +extract: ! "" +natoms: 27 +init_vdwl: -0.250265293649414 +init_coul: 0 +init_stress: ! |2- + 1.6693554149342913e+00 1.1752557173260270e+01 1.0084916384631617e+00 -5.5164068587184527e+00 3.4448938909043431e-01 2.8524984331506258e+00 +init_forces: ! |2 + 1 7.2698902368314056e-02 7.6228314794484775e-02 1.0726717051410484e-01 + 2 -4.1487528743785314e-02 -9.8021436494101673e-03 1.5709289685835706e-01 + 3 -6.4514052467860251e-03 -1.0256365723614392e-03 -6.5497018575823654e-04 + 4 -1.5879716299045554e-02 -1.3313626328419375e-02 -1.1960220488237115e-02 + 5 -3.6475105049685402e-02 -2.2992583864092257e-02 1.6166097759476136e-02 + 6 5.4769180740248721e-04 -2.4426732691233789e-02 -3.6444902428178980e-02 + 7 1.2006858444817004e-03 8.6089326153587114e-04 4.8033026817420977e-05 + 8 6.2576206692511894e-03 1.1942031910109577e-03 8.5598267089392085e-04 + 9 1.8304752931477772e+00 -4.3380838069003760e+00 -1.2763141904695217e+00 + 10 1.0456768773213965e-01 -2.8797785965171453e-02 -1.0768387599117879e-02 + 11 7.4457152913473112e-04 5.3043528596594623e-05 1.1848179655097060e-04 + 12 1.8275344545112628e-04 4.1948901318387846e-04 9.8529270880004928e-05 + 13 -1.1259391902077470e-01 1.6396787556459839e-02 -9.0455786475091124e-04 + 14 -2.4411189619188785e-04 -5.8284002050384879e-05 1.8046434825690733e-05 + 15 -2.9421019290851403e-03 -7.4831176382853144e-04 -1.2326238660052020e-03 + 16 2.2461127490925330e+00 -1.1352527056039741e+00 2.3679980564815386e+00 + 17 -1.8842133286566962e-02 1.7091738246445273e-02 -1.4247568288438442e-02 + 18 1.0304762560041125e-01 7.8062023784307467e-03 1.9257495383127633e-02 + 19 -4.3351162132476757e-02 -2.2995928402219718e-02 -1.1392806036292676e-02 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 4.2501672350519284e-02 6.8582908647593938e-03 -6.8677246013076107e-02 + 22 -2.2945818607502839e+00 1.1603382884260454e+00 -2.3594708301087310e+00 + 23 2.5606115583434265e-02 -1.0270997331622232e-01 -1.1451933998746673e-01 + 24 -8.0648597970214809e-04 1.1943689027481706e-04 -9.8441554909815322e-04 + 25 6.1663239781204458e-04 -2.9236784591333030e-04 3.5387752678593654e-03 + 26 -1.7197958284241512e+00 4.3707144027711022e+00 1.2977194913045054e+00 + 27 -1.4110864281012736e-01 4.2418795982941855e-02 -6.2606997884263993e-02 +run_vdwl: 0.0367090517931737 +run_coul: 0 +run_stress: ! |2- + 3.2547164843322691e+00 1.2822272288053391e+01 2.9381904014809663e+00 -6.5755478139675931e+00 2.3052669923975411e+00 1.5140903126232879e+00 +run_forces: ! |2 + 1 5.8196197291625715e-02 7.7034242946349946e-02 1.0456829776646254e-01 + 2 -4.1552988555246327e-02 -1.1540194679885485e-02 1.5467509805429100e-01 + 3 -6.6558201800471870e-03 -9.8090417095619679e-04 -4.5870088099424396e-04 + 4 -1.6184658518487705e-02 -1.2048418808706472e-02 -1.2190156970179262e-02 + 5 -3.3316803862839438e-02 -2.1131495092834646e-02 1.4963198384123119e-02 + 6 4.7038346343352116e-04 -3.0307837184768524e-02 -4.3608938525025766e-02 + 7 1.0396652127649081e-03 7.5317021954246196e-04 4.1930480907776011e-05 + 8 6.4423457305213877e-03 1.1468835414812518e-03 6.8526191116136061e-04 + 9 1.7585178109228492e+00 -4.3823551563819700e+00 -1.2468505588145766e+00 + 10 1.3392700382201897e-01 -2.9471624976996433e-02 -9.0915578208389906e-03 + 11 7.9839096035526857e-04 6.5881060273478105e-05 1.3840230606223543e-04 + 12 1.8540711169000120e-04 3.9935505493718929e-04 1.2187452986589205e-04 + 13 -1.4075050026169886e-01 1.8204883476184704e-02 -2.0674384501958810e-03 + 14 -2.4452271394244688e-04 -5.7393635529214755e-05 1.6908863929994165e-05 + 15 -3.4577717467029726e-03 -9.3350658134032599e-04 -1.5696623820874889e-03 + 16 5.4762334392971725e+00 -3.3427628201841184e+00 5.8008787111000641e+00 + 17 -1.7123087875076635e-02 1.5861563712562771e-02 -1.3049347364948664e-02 + 18 1.1434938302418582e-01 8.6112942994291432e-03 2.0292892978926169e-02 + 19 -3.8092989065812294e-02 -1.9963855292591683e-02 -9.8568020007968223e-03 + 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 + 21 4.1446743356056415e-02 8.4986882092498717e-03 -7.1565549648589466e-02 + 22 -5.5269240273286284e+00 3.3665609275390551e+00 -5.7932229791606371e+00 + 23 1.5450935830291834e-02 -1.0557581147017484e-01 -1.1539704280712981e-01 + 24 -7.5222270706101302e-04 1.1318969997713211e-04 -9.2841932954143037e-04 + 25 1.1778375109233736e-03 -7.1254208855308434e-05 3.8035457799329383e-03 + 26 -1.6497221843622811e+00 4.4233264004281976e+00 1.2763820593322663e+00 + 27 -1.3345796635606427e-01 3.6623792481486235e-02 -5.6711027332452084e-02 +... From 89d85436f10ad40ee24d5d7f28d08389a55efb08 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 3 Aug 2020 22:42:18 -0400 Subject: [PATCH 13/17] update reference data for triclinic case --- .../tests/atomic-pair-colloid_multi_tri.yaml | 90 +++++++++---------- .../tests/atomic-pair-colloid_tiled_tri.yaml | 90 +++++++++---------- 2 files changed, 90 insertions(+), 90 deletions(-) diff --git a/unittest/force-styles/tests/atomic-pair-colloid_multi_tri.yaml b/unittest/force-styles/tests/atomic-pair-colloid_multi_tri.yaml index 8d6a237162..0ef29011c8 100644 --- a/unittest/force-styles/tests/atomic-pair-colloid_multi_tri.yaml +++ b/unittest/force-styles/tests/atomic-pair-colloid_multi_tri.yaml @@ -1,7 +1,7 @@ --- lammps_version: 21 Jul 2020 -date_generated: Mon Aug 3 16:06:24 202 -epsilon: 5e-11 +date_generated: Mon Aug 3 22:40:52 202 +epsilon: 5e-13 prerequisites: ! | pair colloid pre_commands: ! | @@ -22,65 +22,65 @@ natoms: 27 init_vdwl: -0.250265293649414 init_coul: 0 init_stress: ! |2- - 1.6693554149342913e+00 1.1752557173260270e+01 1.0084916384631617e+00 -5.5164068587184527e+00 3.4448938909043431e-01 2.8524984331506258e+00 + 1.6693554149342911e+00 1.1752557173260259e+01 1.0084916384631786e+00 -5.5164068587184580e+00 3.4448938909043375e-01 2.8524984331506325e+00 init_forces: ! |2 - 1 7.2698902368314056e-02 7.6228314794484775e-02 1.0726717051410484e-01 + 1 7.2698902368313792e-02 7.6228314794484928e-02 1.0726717051410495e-01 2 -4.1487528743785314e-02 -9.8021436494101673e-03 1.5709289685835706e-01 3 -6.4514052467860251e-03 -1.0256365723614392e-03 -6.5497018575823654e-04 4 -1.5879716299045554e-02 -1.3313626328419375e-02 -1.1960220488237115e-02 5 -3.6475105049685402e-02 -2.2992583864092257e-02 1.6166097759476136e-02 - 6 5.4769180740248721e-04 -2.4426732691233789e-02 -3.6444902428178980e-02 + 6 5.4769180740244731e-04 -2.4426732691233955e-02 -3.6444902428179146e-02 7 1.2006858444817004e-03 8.6089326153587114e-04 4.8033026817420977e-05 - 8 6.2576206692511894e-03 1.1942031910109577e-03 8.5598267089392085e-04 - 9 1.8304752931477772e+00 -4.3380838069003760e+00 -1.2763141904695217e+00 - 10 1.0456768773213965e-01 -2.8797785965171453e-02 -1.0768387599117879e-02 - 11 7.4457152913473112e-04 5.3043528596594623e-05 1.1848179655097060e-04 + 8 6.2576206692511894e-03 1.1942031910109575e-03 8.5598267089392129e-04 + 9 1.8304752931477772e+00 -4.3380838069003751e+00 -1.2763141904695217e+00 + 10 1.0456768773213966e-01 -2.8797785965171449e-02 -1.0768387599117872e-02 + 11 7.4457152913473068e-04 5.3043528596594895e-05 1.1848179655097051e-04 12 1.8275344545112628e-04 4.1948901318387846e-04 9.8529270880004928e-05 - 13 -1.1259391902077470e-01 1.6396787556459839e-02 -9.0455786475091124e-04 - 14 -2.4411189619188785e-04 -5.8284002050384879e-05 1.8046434825690733e-05 + 13 -1.1259391902077470e-01 1.6396787556459836e-02 -9.0455786475091167e-04 + 14 -2.4411189619188755e-04 -5.8284002050384791e-05 1.8046434825690706e-05 15 -2.9421019290851403e-03 -7.4831176382853144e-04 -1.2326238660052020e-03 - 16 2.2461127490925330e+00 -1.1352527056039741e+00 2.3679980564815386e+00 + 16 2.2461127490925330e+00 -1.1352527056039741e+00 2.3679980564815390e+00 17 -1.8842133286566962e-02 1.7091738246445273e-02 -1.4247568288438442e-02 - 18 1.0304762560041125e-01 7.8062023784307467e-03 1.9257495383127633e-02 + 18 1.0304762560041145e-01 7.8062023784307155e-03 1.9257495383127543e-02 19 -4.3351162132476757e-02 -2.2995928402219718e-02 -1.1392806036292676e-02 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 21 4.2501672350519284e-02 6.8582908647593938e-03 -6.8677246013076107e-02 - 22 -2.2945818607502839e+00 1.1603382884260454e+00 -2.3594708301087310e+00 - 23 2.5606115583434265e-02 -1.0270997331622232e-01 -1.1451933998746673e-01 - 24 -8.0648597970214809e-04 1.1943689027481706e-04 -9.8441554909815322e-04 + 21 4.2501672350519284e-02 6.8582908647593982e-03 -6.8677246013076107e-02 + 22 -2.2945818607502835e+00 1.1603382884260451e+00 -2.3594708301087310e+00 + 23 2.5606115583434334e-02 -1.0270997331622238e-01 -1.1451933998746676e-01 + 24 -8.0648597970214874e-04 1.1943689027481719e-04 -9.8441554909815452e-04 25 6.1663239781204458e-04 -2.9236784591333030e-04 3.5387752678593654e-03 26 -1.7197958284241512e+00 4.3707144027711022e+00 1.2977194913045054e+00 27 -1.4110864281012736e-01 4.2418795982941855e-02 -6.2606997884263993e-02 -run_vdwl: 0.0367090517931737 +run_vdwl: 0.0367090517931635 run_coul: 0 run_stress: ! |2- - 3.2547164843322691e+00 1.2822272288053391e+01 2.9381904014809663e+00 -6.5755478139675931e+00 2.3052669923975411e+00 1.5140903126232879e+00 + 3.2547164843321998e+00 1.2822272288053016e+01 2.9381904014809583e+00 -6.5755478139674493e+00 2.3052669923975677e+00 1.5140903126232053e+00 run_forces: ! |2 - 1 5.8196197291625715e-02 7.7034242946349946e-02 1.0456829776646254e-01 - 2 -4.1552988555246327e-02 -1.1540194679885485e-02 1.5467509805429100e-01 - 3 -6.6558201800471870e-03 -9.8090417095619679e-04 -4.5870088099424396e-04 - 4 -1.6184658518487705e-02 -1.2048418808706472e-02 -1.2190156970179262e-02 - 5 -3.3316803862839438e-02 -2.1131495092834646e-02 1.4963198384123119e-02 - 6 4.7038346343352116e-04 -3.0307837184768524e-02 -4.3608938525025766e-02 - 7 1.0396652127649081e-03 7.5317021954246196e-04 4.1930480907776011e-05 - 8 6.4423457305213877e-03 1.1468835414812518e-03 6.8526191116136061e-04 - 9 1.7585178109228492e+00 -4.3823551563819700e+00 -1.2468505588145766e+00 - 10 1.3392700382201897e-01 -2.9471624976996433e-02 -9.0915578208389906e-03 - 11 7.9839096035526857e-04 6.5881060273478105e-05 1.3840230606223543e-04 - 12 1.8540711169000120e-04 3.9935505493718929e-04 1.2187452986589205e-04 - 13 -1.4075050026169886e-01 1.8204883476184704e-02 -2.0674384501958810e-03 - 14 -2.4452271394244688e-04 -5.7393635529214755e-05 1.6908863929994165e-05 - 15 -3.4577717467029726e-03 -9.3350658134032599e-04 -1.5696623820874889e-03 - 16 5.4762334392971725e+00 -3.3427628201841184e+00 5.8008787111000641e+00 - 17 -1.7123087875076635e-02 1.5861563712562771e-02 -1.3049347364948664e-02 - 18 1.1434938302418582e-01 8.6112942994291432e-03 2.0292892978926169e-02 - 19 -3.8092989065812294e-02 -1.9963855292591683e-02 -9.8568020007968223e-03 + 1 5.8196197291626575e-02 7.7034242946349710e-02 1.0456829776646283e-01 + 2 -4.1552988555246369e-02 -1.1540194679885474e-02 1.5467509805429086e-01 + 3 -6.6558201800471888e-03 -9.8090417095619570e-04 -4.5870088099424298e-04 + 4 -1.6184658518487716e-02 -1.2048418808706531e-02 -1.2190156970179285e-02 + 5 -3.3316803862839500e-02 -2.1131495092834723e-02 1.4963198384123161e-02 + 6 4.7038346343351856e-04 -3.0307837184768479e-02 -4.3608938525025828e-02 + 7 1.0396652127649044e-03 7.5317021954245870e-04 4.1930480907775929e-05 + 8 6.4423457305213851e-03 1.1468835414812505e-03 6.8526191116135909e-04 + 9 1.7585178109228026e+00 -4.3823551563818404e+00 -1.2468505588145364e+00 + 10 1.3392700382201883e-01 -2.9471624976996413e-02 -9.0915578208389941e-03 + 11 7.9839096035526651e-04 6.5881060273478051e-05 1.3840230606223500e-04 + 12 1.8540711168999979e-04 3.9935505493719320e-04 1.2187452986588761e-04 + 13 -1.4075050026169872e-01 1.8204883476184680e-02 -2.0674384501958849e-03 + 14 -2.4452271394244732e-04 -5.7393635529214925e-05 1.6908863929994199e-05 + 15 -3.4577717467029808e-03 -9.3350658134032805e-04 -1.5696623820874909e-03 + 16 5.4762334392971521e+00 -3.3427628201841029e+00 5.8008787111000384e+00 + 17 -1.7123087875076739e-02 1.5861563712562882e-02 -1.3049347364948762e-02 + 18 1.1434938302418579e-01 8.6112942994289246e-03 2.0292892978925857e-02 + 19 -3.8092989065812349e-02 -1.9963855292591714e-02 -9.8568020007968171e-03 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 21 4.1446743356056415e-02 8.4986882092498717e-03 -7.1565549648589466e-02 - 22 -5.5269240273286284e+00 3.3665609275390551e+00 -5.7932229791606371e+00 - 23 1.5450935830291834e-02 -1.0557581147017484e-01 -1.1539704280712981e-01 - 24 -7.5222270706101302e-04 1.1318969997713211e-04 -9.2841932954143037e-04 - 25 1.1778375109233736e-03 -7.1254208855308434e-05 3.8035457799329383e-03 - 26 -1.6497221843622811e+00 4.4233264004281976e+00 1.2763820593322663e+00 - 27 -1.3345796635606427e-01 3.6623792481486235e-02 -5.6711027332452084e-02 + 21 4.1446743356056477e-02 8.4986882092497468e-03 -7.1565549648589286e-02 + 22 -5.5269240273286080e+00 3.3665609275390400e+00 -5.7932229791606122e+00 + 23 1.5450935830291862e-02 -1.0557581147017453e-01 -1.1539704280712934e-01 + 24 -7.5222270706101790e-04 1.1318969997713260e-04 -9.2841932954143699e-04 + 25 1.1778375109233756e-03 -7.1254208855309979e-05 3.8035457799329474e-03 + 26 -1.6497221843622341e+00 4.4233264004280688e+00 1.2763820593322264e+00 + 27 -1.3345796635606499e-01 3.6623792481486409e-02 -5.6711027332452466e-02 ... diff --git a/unittest/force-styles/tests/atomic-pair-colloid_tiled_tri.yaml b/unittest/force-styles/tests/atomic-pair-colloid_tiled_tri.yaml index d49b93ac0d..25c84a5938 100644 --- a/unittest/force-styles/tests/atomic-pair-colloid_tiled_tri.yaml +++ b/unittest/force-styles/tests/atomic-pair-colloid_tiled_tri.yaml @@ -1,7 +1,7 @@ --- lammps_version: 21 Jul 2020 -date_generated: Mon Aug 3 16:06:24 202 -epsilon: 5e-14 +date_generated: Mon Aug 3 22:40:52 202 +epsilon: 5e-13 prerequisites: ! | pair colloid pre_commands: ! | @@ -22,65 +22,65 @@ natoms: 27 init_vdwl: -0.250265293649414 init_coul: 0 init_stress: ! |2- - 1.6693554149342913e+00 1.1752557173260270e+01 1.0084916384631617e+00 -5.5164068587184527e+00 3.4448938909043431e-01 2.8524984331506258e+00 + 1.6693554149342911e+00 1.1752557173260259e+01 1.0084916384631786e+00 -5.5164068587184580e+00 3.4448938909043375e-01 2.8524984331506325e+00 init_forces: ! |2 - 1 7.2698902368314056e-02 7.6228314794484775e-02 1.0726717051410484e-01 + 1 7.2698902368313792e-02 7.6228314794484928e-02 1.0726717051410495e-01 2 -4.1487528743785314e-02 -9.8021436494101673e-03 1.5709289685835706e-01 3 -6.4514052467860251e-03 -1.0256365723614392e-03 -6.5497018575823654e-04 4 -1.5879716299045554e-02 -1.3313626328419375e-02 -1.1960220488237115e-02 5 -3.6475105049685402e-02 -2.2992583864092257e-02 1.6166097759476136e-02 - 6 5.4769180740248721e-04 -2.4426732691233789e-02 -3.6444902428178980e-02 + 6 5.4769180740244731e-04 -2.4426732691233955e-02 -3.6444902428179146e-02 7 1.2006858444817004e-03 8.6089326153587114e-04 4.8033026817420977e-05 - 8 6.2576206692511894e-03 1.1942031910109577e-03 8.5598267089392085e-04 - 9 1.8304752931477772e+00 -4.3380838069003760e+00 -1.2763141904695217e+00 - 10 1.0456768773213965e-01 -2.8797785965171453e-02 -1.0768387599117879e-02 - 11 7.4457152913473112e-04 5.3043528596594623e-05 1.1848179655097060e-04 + 8 6.2576206692511894e-03 1.1942031910109575e-03 8.5598267089392129e-04 + 9 1.8304752931477772e+00 -4.3380838069003751e+00 -1.2763141904695217e+00 + 10 1.0456768773213966e-01 -2.8797785965171449e-02 -1.0768387599117872e-02 + 11 7.4457152913473068e-04 5.3043528596594895e-05 1.1848179655097051e-04 12 1.8275344545112628e-04 4.1948901318387846e-04 9.8529270880004928e-05 - 13 -1.1259391902077470e-01 1.6396787556459839e-02 -9.0455786475091124e-04 - 14 -2.4411189619188785e-04 -5.8284002050384879e-05 1.8046434825690733e-05 + 13 -1.1259391902077470e-01 1.6396787556459836e-02 -9.0455786475091167e-04 + 14 -2.4411189619188755e-04 -5.8284002050384791e-05 1.8046434825690706e-05 15 -2.9421019290851403e-03 -7.4831176382853144e-04 -1.2326238660052020e-03 - 16 2.2461127490925330e+00 -1.1352527056039741e+00 2.3679980564815386e+00 + 16 2.2461127490925330e+00 -1.1352527056039741e+00 2.3679980564815390e+00 17 -1.8842133286566962e-02 1.7091738246445273e-02 -1.4247568288438442e-02 - 18 1.0304762560041125e-01 7.8062023784307467e-03 1.9257495383127633e-02 + 18 1.0304762560041145e-01 7.8062023784307155e-03 1.9257495383127543e-02 19 -4.3351162132476757e-02 -2.2995928402219718e-02 -1.1392806036292676e-02 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 21 4.2501672350519284e-02 6.8582908647593938e-03 -6.8677246013076107e-02 - 22 -2.2945818607502839e+00 1.1603382884260454e+00 -2.3594708301087310e+00 - 23 2.5606115583434265e-02 -1.0270997331622232e-01 -1.1451933998746673e-01 - 24 -8.0648597970214809e-04 1.1943689027481706e-04 -9.8441554909815322e-04 + 21 4.2501672350519284e-02 6.8582908647593982e-03 -6.8677246013076107e-02 + 22 -2.2945818607502835e+00 1.1603382884260451e+00 -2.3594708301087310e+00 + 23 2.5606115583434334e-02 -1.0270997331622238e-01 -1.1451933998746676e-01 + 24 -8.0648597970214874e-04 1.1943689027481719e-04 -9.8441554909815452e-04 25 6.1663239781204458e-04 -2.9236784591333030e-04 3.5387752678593654e-03 26 -1.7197958284241512e+00 4.3707144027711022e+00 1.2977194913045054e+00 27 -1.4110864281012736e-01 4.2418795982941855e-02 -6.2606997884263993e-02 -run_vdwl: 0.0367090517931737 +run_vdwl: 0.0367090517931635 run_coul: 0 run_stress: ! |2- - 3.2547164843322691e+00 1.2822272288053391e+01 2.9381904014809663e+00 -6.5755478139675931e+00 2.3052669923975411e+00 1.5140903126232879e+00 + 3.2547164843321998e+00 1.2822272288053016e+01 2.9381904014809583e+00 -6.5755478139674493e+00 2.3052669923975677e+00 1.5140903126232053e+00 run_forces: ! |2 - 1 5.8196197291625715e-02 7.7034242946349946e-02 1.0456829776646254e-01 - 2 -4.1552988555246327e-02 -1.1540194679885485e-02 1.5467509805429100e-01 - 3 -6.6558201800471870e-03 -9.8090417095619679e-04 -4.5870088099424396e-04 - 4 -1.6184658518487705e-02 -1.2048418808706472e-02 -1.2190156970179262e-02 - 5 -3.3316803862839438e-02 -2.1131495092834646e-02 1.4963198384123119e-02 - 6 4.7038346343352116e-04 -3.0307837184768524e-02 -4.3608938525025766e-02 - 7 1.0396652127649081e-03 7.5317021954246196e-04 4.1930480907776011e-05 - 8 6.4423457305213877e-03 1.1468835414812518e-03 6.8526191116136061e-04 - 9 1.7585178109228492e+00 -4.3823551563819700e+00 -1.2468505588145766e+00 - 10 1.3392700382201897e-01 -2.9471624976996433e-02 -9.0915578208389906e-03 - 11 7.9839096035526857e-04 6.5881060273478105e-05 1.3840230606223543e-04 - 12 1.8540711169000120e-04 3.9935505493718929e-04 1.2187452986589205e-04 - 13 -1.4075050026169886e-01 1.8204883476184704e-02 -2.0674384501958810e-03 - 14 -2.4452271394244688e-04 -5.7393635529214755e-05 1.6908863929994165e-05 - 15 -3.4577717467029726e-03 -9.3350658134032599e-04 -1.5696623820874889e-03 - 16 5.4762334392971725e+00 -3.3427628201841184e+00 5.8008787111000641e+00 - 17 -1.7123087875076635e-02 1.5861563712562771e-02 -1.3049347364948664e-02 - 18 1.1434938302418582e-01 8.6112942994291432e-03 2.0292892978926169e-02 - 19 -3.8092989065812294e-02 -1.9963855292591683e-02 -9.8568020007968223e-03 + 1 5.8196197291626575e-02 7.7034242946349710e-02 1.0456829776646283e-01 + 2 -4.1552988555246369e-02 -1.1540194679885474e-02 1.5467509805429086e-01 + 3 -6.6558201800471888e-03 -9.8090417095619570e-04 -4.5870088099424298e-04 + 4 -1.6184658518487716e-02 -1.2048418808706531e-02 -1.2190156970179285e-02 + 5 -3.3316803862839500e-02 -2.1131495092834723e-02 1.4963198384123161e-02 + 6 4.7038346343351856e-04 -3.0307837184768479e-02 -4.3608938525025828e-02 + 7 1.0396652127649044e-03 7.5317021954245870e-04 4.1930480907775929e-05 + 8 6.4423457305213851e-03 1.1468835414812505e-03 6.8526191116135909e-04 + 9 1.7585178109228026e+00 -4.3823551563818404e+00 -1.2468505588145364e+00 + 10 1.3392700382201883e-01 -2.9471624976996413e-02 -9.0915578208389941e-03 + 11 7.9839096035526651e-04 6.5881060273478051e-05 1.3840230606223500e-04 + 12 1.8540711168999979e-04 3.9935505493719320e-04 1.2187452986588761e-04 + 13 -1.4075050026169872e-01 1.8204883476184680e-02 -2.0674384501958849e-03 + 14 -2.4452271394244732e-04 -5.7393635529214925e-05 1.6908863929994199e-05 + 15 -3.4577717467029808e-03 -9.3350658134032805e-04 -1.5696623820874909e-03 + 16 5.4762334392971521e+00 -3.3427628201841029e+00 5.8008787111000384e+00 + 17 -1.7123087875076739e-02 1.5861563712562882e-02 -1.3049347364948762e-02 + 18 1.1434938302418579e-01 8.6112942994289246e-03 2.0292892978925857e-02 + 19 -3.8092989065812349e-02 -1.9963855292591714e-02 -9.8568020007968171e-03 20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 - 21 4.1446743356056415e-02 8.4986882092498717e-03 -7.1565549648589466e-02 - 22 -5.5269240273286284e+00 3.3665609275390551e+00 -5.7932229791606371e+00 - 23 1.5450935830291834e-02 -1.0557581147017484e-01 -1.1539704280712981e-01 - 24 -7.5222270706101302e-04 1.1318969997713211e-04 -9.2841932954143037e-04 - 25 1.1778375109233736e-03 -7.1254208855308434e-05 3.8035457799329383e-03 - 26 -1.6497221843622811e+00 4.4233264004281976e+00 1.2763820593322663e+00 - 27 -1.3345796635606427e-01 3.6623792481486235e-02 -5.6711027332452084e-02 + 21 4.1446743356056477e-02 8.4986882092497468e-03 -7.1565549648589286e-02 + 22 -5.5269240273286080e+00 3.3665609275390400e+00 -5.7932229791606122e+00 + 23 1.5450935830291862e-02 -1.0557581147017453e-01 -1.1539704280712934e-01 + 24 -7.5222270706101790e-04 1.1318969997713260e-04 -9.2841932954143699e-04 + 25 1.1778375109233756e-03 -7.1254208855309979e-05 3.8035457799329474e-03 + 26 -1.6497221843622341e+00 4.4233264004280688e+00 1.2763820593322264e+00 + 27 -1.3345796635606499e-01 3.6623792481486409e-02 -5.6711027332452466e-02 ... From c2ed04052907fb8665e23a0dd0e9559405c44e24 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 3 Aug 2020 22:49:21 -0400 Subject: [PATCH 14/17] simplify --- src/comm_tiled.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index 893d0f23d8..79a8f3ab7d 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -46,6 +46,11 @@ CommTiled::CommTiled(LAMMPS *lmp) : Comm(lmp) style = 1; layout = Comm::LAYOUT_UNIFORM; pbc_flag = NULL; + buf_send = NULL; + buf_recv = NULL; + overlap = NULL; + rcbinfo = NULL; + cutghostmulti = NULL; init_buffers(); } @@ -73,8 +78,7 @@ CommTiled::~CommTiled() memory->destroy(overlap); deallocate_swap(maxswap); memory->sfree(rcbinfo); - - if (mode == Comm::MULTI) memory->destroy(cutghostmulti); + memory->destroy(cutghostmulti); } /* ---------------------------------------------------------------------- @@ -105,9 +109,8 @@ void CommTiled::init() { Comm::init(); - if (mode == Comm::SINGLE && cutghostmulti) memory->destroy(cutghostmulti); - - if (mode == Comm::MULTI && !cutghostmulti) + memory->destroy(cutghostmulti); + if (mode == Comm::MULTI) memory->create(cutghostmulti,atom->ntypes+1,3,"comm:cutghostmulti"); int bufextra_old = bufextra; From 304d6876f4e4079ff9d31a201fe18b7c82e62779 Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 5 Aug 2020 15:44:02 -0600 Subject: [PATCH 15/17] a few bug fixes for support for multi and triclinic in CommTiled --- src/atom_vec.cpp | 6 ++-- src/comm_tiled.cpp | 68 +++++++++++++++++++++++++--------------------- 2 files changed, 41 insertions(+), 33 deletions(-) diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index 7b75499b83..261b068997 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -1096,8 +1096,9 @@ void AtomVec::unpack_border(int n, int first, double *buf) m = 0; last = first + n; + while (last > nmax) grow(0); + for (i = first; i < last; i++) { - if (i == nmax) grow(0); x[i][0] = buf[m++]; x[i][1] = buf[m++]; x[i][2] = buf[m++]; @@ -1165,8 +1166,9 @@ void AtomVec::unpack_border_vel(int n, int first, double *buf) m = 0; last = first + n; + while (last > nmax) grow(0); + for (i = first; i < last; i++) { - if (i == nmax) grow(0); x[i][0] = buf[m++]; x[i][1] = buf[m++]; x[i][2] = buf[m++]; diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index 79a8f3ab7d..8719835c94 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -12,7 +12,8 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author (multi) : Adrian Diaz (University of Florida) + Contributing author (multi and triclinic support): + Adrian Diaz (University of Florida) ------------------------------------------------------------------------- */ #include "comm_tiled.h" @@ -99,7 +100,6 @@ void CommTiled::init_buffers() sendbox_multi = NULL; maxswap = 6; - nswap = 2*domain->dimension; allocate_swap(maxswap); } @@ -109,6 +109,11 @@ void CommTiled::init() { Comm::init(); + // cannot set nswap in init_buffers() b/c + // dimension command can be after comm_style command + + nswap = 2*domain->dimension; + memory->destroy(cutghostmulti); if (mode == Comm::MULTI) memory->create(cutghostmulti,atom->ntypes+1,3,"comm:cutghostmulti"); @@ -374,21 +379,23 @@ void CommTiled::setup() if (idir == 0) { sbox[idim] = sublo[idim]; - if (i < noverlap1) sbox[3+idim] = MIN(sbox[3+idim]+cut,subhi[idim]); - else sbox[3+idim] = MIN(sbox[3+idim]-prd[idim]+cut,subhi[idim]); + if (i < noverlap1) + sbox[3+idim] = MIN(sbox[3+idim]+cutghost[idim],subhi[idim]); + else + sbox[3+idim] = MIN(sbox[3+idim]-prd[idim]+cutghost[idim],subhi[idim]); } else { - if (i < noverlap1) sbox[idim] = MAX(sbox[idim]-cut,sublo[idim]); - else sbox[idim] = MAX(sbox[idim]+prd[idim]-cut,sublo[idim]); + if (i < noverlap1) sbox[idim] = MAX(sbox[idim]-cutghost[idim],sublo[idim]); + else sbox[idim] = MAX(sbox[idim]+prd[idim]-cutghost[idim],sublo[idim]); sbox[3+idim] = subhi[idim]; } if (idim >= 1) { - if (sbox[0] == oboxlo[0]) sbox[0] -= cut; - if (sbox[3] == oboxhi[0]) sbox[3] += cut; + if (sbox[0] == oboxlo[0]) sbox[0] -= cutghost[0]; + if (sbox[3] == oboxhi[0]) sbox[3] += cutghost[0]; } if (idim == 2) { - if (sbox[1] == oboxlo[1]) sbox[1] -= cut; - if (sbox[4] == oboxhi[1]) sbox[4] += cut; + if (sbox[1] == oboxlo[1]) sbox[1] -= cutghost[1]; + if (sbox[4] == oboxhi[1]) sbox[4] += cutghost[1]; } memcpy(sendbox[iswap][i],sbox,6*sizeof(double)); @@ -1074,9 +1081,8 @@ void CommTiled::borders() if (rmaxall*size_border > maxrecv) grow_recv(rmaxall*size_border); // swap atoms with other procs using pack_border(), unpack_border() - // use Waitall() instead of Waitany() because calls to unpack_border() - // must increment per-atom arrays in ascending order - // For the same reason, sendself unpacks must occur after recvother unpacks + // can use Waitany() because calls to unpack_border() + // increment per-atom arrays as much as needed if (ghost_velocity) { if (recvother[iswap]) { @@ -1092,13 +1098,6 @@ void CommTiled::borders() MPI_Send(buf_send,n,MPI_DOUBLE,sendproc[iswap][m],0,world); } } - if (recvother[iswap]) { - MPI_Waitall(nrecv,requests,MPI_STATUS_IGNORE); - for (m = 0; m < nrecv; m++) - avec->unpack_border_vel(recvnum[iswap][m],firstrecv[iswap][m], - &buf_recv[size_border* - forward_recv_offset[iswap][m]]); - } if (sendself[iswap]) { avec->pack_border_vel(sendnum[iswap][nsend],sendlist[iswap][nsend], buf_send,pbc_flag[iswap][nsend], @@ -1106,6 +1105,14 @@ void CommTiled::borders() avec->unpack_border_vel(recvnum[iswap][nrecv],firstrecv[iswap][nrecv], buf_send); } + if (recvother[iswap]) { + for (i = 0; i < nrecv; i++) { + MPI_Waitany(nrecv,requests,&m,MPI_STATUS_IGNORE); + avec->unpack_border_vel(recvnum[iswap][m],firstrecv[iswap][m], + &buf_recv[size_border* + forward_recv_offset[iswap][m]]); + } + } } else { if (recvother[iswap]) { @@ -1121,19 +1128,20 @@ void CommTiled::borders() MPI_Send(buf_send,n,MPI_DOUBLE,sendproc[iswap][m],0,world); } } - if (recvother[iswap]) { - MPI_Waitall(nrecv,requests,MPI_STATUS_IGNORE); - for (m = 0; m < nrecv; m++) - avec->unpack_border(recvnum[iswap][m],firstrecv[iswap][m], - &buf_recv[size_border* - forward_recv_offset[iswap][m]]); - } if (sendself[iswap]) { avec->pack_border(sendnum[iswap][nsend],sendlist[iswap][nsend], buf_send,pbc_flag[iswap][nsend],pbc[iswap][nsend]); avec->unpack_border(recvnum[iswap][nrecv],firstrecv[iswap][nrecv], buf_send); } + if (recvother[iswap]) { + for (i = 0; i < nrecv; i++) { + MPI_Waitany(nrecv,requests,&m,MPI_STATUS_IGNORE); + avec->unpack_border(recvnum[iswap][m],firstrecv[iswap][m], + &buf_recv[size_border* + forward_recv_offset[iswap][m]]); + } + } } // increment ghost atoms @@ -1636,11 +1644,9 @@ int CommTiled::exchange_variable(int n, double * /*inbuf*/, double *& /*outbuf*/ void CommTiled::box_drop_brick(int idim, double *lo, double *hi, int &indexme) { - // NOTE: this is not triclinic compatible - // NOTE: these error messages are internal sanity checks - // should not occur, can be removed at some point + int dir; + int index = -1; - int index=-1,dir; if (hi[idim] == sublo[idim]) { index = myloc[idim] - 1; dir = -1; From 65574be1783e05284d33a1aadc62a51932faeb36 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 5 Aug 2020 17:52:16 -0400 Subject: [PATCH 16/17] whitespace fixes --- src/comm_tiled.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index 8719835c94..b1a8d6aef2 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing author (multi and triclinic support): + Contributing author (multi and triclinic support): Adrian Diaz (University of Florida) ------------------------------------------------------------------------- */ @@ -111,7 +111,7 @@ void CommTiled::init() // cannot set nswap in init_buffers() b/c // dimension command can be after comm_style command - + nswap = 2*domain->dimension; memory->destroy(cutghostmulti); @@ -380,9 +380,9 @@ void CommTiled::setup() if (idir == 0) { sbox[idim] = sublo[idim]; if (i < noverlap1) - sbox[3+idim] = MIN(sbox[3+idim]+cutghost[idim],subhi[idim]); + sbox[3+idim] = MIN(sbox[3+idim]+cutghost[idim],subhi[idim]); else - sbox[3+idim] = MIN(sbox[3+idim]-prd[idim]+cutghost[idim],subhi[idim]); + sbox[3+idim] = MIN(sbox[3+idim]-prd[idim]+cutghost[idim],subhi[idim]); } else { if (i < noverlap1) sbox[idim] = MAX(sbox[idim]-cutghost[idim],sublo[idim]); else sbox[idim] = MAX(sbox[idim]+prd[idim]-cutghost[idim],sublo[idim]); @@ -949,7 +949,7 @@ void CommTiled::borders() 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; + sendlist[iswap][m][ncount++] = i; } } } else { @@ -992,7 +992,7 @@ void CommTiled::borders() 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; + sendlist[iswap][m][ncount++] = i; } } } else { @@ -1107,11 +1107,11 @@ void CommTiled::borders() } if (recvother[iswap]) { for (i = 0; i < nrecv; i++) { - MPI_Waitany(nrecv,requests,&m,MPI_STATUS_IGNORE); - avec->unpack_border_vel(recvnum[iswap][m],firstrecv[iswap][m], - &buf_recv[size_border* - forward_recv_offset[iswap][m]]); - } + MPI_Waitany(nrecv,requests,&m,MPI_STATUS_IGNORE); + avec->unpack_border_vel(recvnum[iswap][m],firstrecv[iswap][m], + &buf_recv[size_border* + forward_recv_offset[iswap][m]]); + } } } else { @@ -1136,11 +1136,11 @@ void CommTiled::borders() } if (recvother[iswap]) { for (i = 0; i < nrecv; i++) { - MPI_Waitany(nrecv,requests,&m,MPI_STATUS_IGNORE); + MPI_Waitany(nrecv,requests,&m,MPI_STATUS_IGNORE); avec->unpack_border(recvnum[iswap][m],firstrecv[iswap][m], &buf_recv[size_border* forward_recv_offset[iswap][m]]); - } + } } } From 5f83edd127517f024c5a24a09c0cea58da5827ba Mon Sep 17 00:00:00 2001 From: Steve Plimpton Date: Wed, 5 Aug 2020 17:24:09 -0600 Subject: [PATCH 17/17] remove references to non-existent MPI_Statuses --- src/comm_tiled.cpp | 10 +++++----- src/comm_tiled.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index b1a8d6aef2..9f0169568d 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -557,15 +557,15 @@ void CommTiled::setup() } } - // reallocate MPI Requests and Statuses as needed + // reallocate MPI Requests as needed int nmax = 0; for (i = 0; i < nswap; i++) nmax = MAX(nmax,nprocmax[i]); for (i = 0; i < dimension; i++) nmax = MAX(nmax,nexchprocmax[i]); - if (nmax > maxreqstat) { - maxreqstat = nmax; + if (nmax > maxrequest) { + maxrequest = nmax; delete [] requests; - requests = new MPI_Request[maxreqstat]; + requests = new MPI_Request[maxrequest]; } } @@ -2098,7 +2098,7 @@ void CommTiled::allocate_swap(int n) sendlist[i] = NULL; } - maxreqstat = 0; + maxrequest = 0; requests = NULL; for (int i = 0; i < n; i++) { diff --git a/src/comm_tiled.h b/src/comm_tiled.h index 4ffde2a47e..aa8867b2c3 100644 --- a/src/comm_tiled.h +++ b/src/comm_tiled.h @@ -95,7 +95,7 @@ class CommTiled : public Comm { int smaxall,rmaxall; // max size in atoms of any borders send/recv // for comm to all procs in one swap - int maxreqstat; // max size of Request and Status vectors + int maxrequest; // max size of Request vector MPI_Request *requests; struct RCBinfo {