From 828ce84df554c81ad7edacfb3857128d356581aa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 11 Sep 2020 22:09:09 -0400 Subject: [PATCH] add check for number of local atom indices overflowing neighbor lists for molecular systems --- src/comm_brick.cpp | 8 ++++++++ src/comm_tiled.cpp | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/src/comm_brick.cpp b/src/comm_brick.cpp index cf80073316..db41ed7712 100644 --- a/src/comm_brick.cpp +++ b/src/comm_brick.cpp @@ -855,6 +855,14 @@ void CommBrick::borders() } } + // For molecular systems we lose some bits for local atom indices due + // to encoding of special pairs in neighbor lists. Check for overflows. + + if ((atom->molecular != Atom::ATOMIC) + && ((atom->nlocal + atom->nghost) > NEIGHMASK)) + error->one(FLERR,"Per-processor number of atoms is too large for " + "molecular neighbor lists"); + // insure send/recv buffers are long enough for all forward & reverse comm int max = MAX(maxforward*smax,maxreverse*rmax); diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index e4f5937a0f..3a24f8fac0 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -1152,6 +1152,14 @@ void CommTiled::borders() atom->nghost += forward_recv_offset[iswap][n-1] + recvnum[iswap][n-1]; } + // For molecular systems we lose some bits for local atom indices due + // to encoding of special pairs in neighbor lists. Check for overflows. + + if ((atom->molecular != Atom::ATOMIC) + && ((atom->nlocal + atom->nghost) > NEIGHMASK)) + error->one(FLERR,"Per-processor number of atoms is too large for " + "molecular neighbor lists"); + // insure send/recv buffers are long enough for all forward & reverse comm // send buf is for one forward or reverse sends to one proc // recv buf is for all forward or reverse recvs in one swap