more robust version of atom exchange size

This commit is contained in:
Steve Plimpton
2019-07-09 16:17:54 -06:00
parent 691fc357a4
commit 2fd327d057
16 changed files with 93 additions and 54 deletions

View File

@ -42,6 +42,7 @@ FixNeighHistory::FixNeighHistory(LAMMPS *lmp, int narg, char **arg) :
restart_peratom = 1;
create_attribute = 1;
maxexchange_dynamic = 1;
newton_pair = force->newton_pair;
@ -296,11 +297,11 @@ void FixNeighHistory::pre_exchange_onesided()
}
// set maxpartner = max # of partners of any owned atom
// bump up comm->maxexchange_fix if necessary
// maxexchange = max # of values for any Comm::exchange() atom
maxpartner = 0;
for (i = 0; i < nlocal_neigh; i++) maxpartner = MAX(maxpartner,npartner[i]);
comm->maxexchange_fix = MAX(comm->maxexchange_fix,(dnum+1)*maxpartner+1);
maxexchange = (dnum+1)*maxpartner + 1;
// zero npartner values from previous nlocal_neigh to current nlocal
@ -424,11 +425,11 @@ void FixNeighHistory::pre_exchange_newton()
comm->reverse_comm_fix_variable(this);
// set maxpartner = max # of partners of any owned atom
// bump up comm->maxexchange_fix if necessary
// maxexchange = max # of values for any Comm::exchange() atom
maxpartner = 0;
for (i = 0; i < nlocal_neigh; i++) maxpartner = MAX(maxpartner,npartner[i]);
comm->maxexchange_fix = MAX(comm->maxexchange_fix,(dnum+1)*maxpartner+1);
maxexchange = (dnum+1)*maxpartner + 1;
// zero npartner values from previous nlocal_neigh to current nlocal
@ -531,11 +532,11 @@ void FixNeighHistory::pre_exchange_no_newton()
}
// set maxpartner = max # of partners of any owned atom
// bump up comm->maxexchange_fix if necessary
// maxexchange = max # of values for any Comm::exchange() atom
maxpartner = 0;
for (i = 0; i < nlocal_neigh; i++) maxpartner = MAX(maxpartner,npartner[i]);
comm->maxexchange_fix = MAX(comm->maxexchange_fix,(dnum+1)*maxpartner+1);
maxexchange = (dnum+1)*maxpartner + 1;
// zero npartner values from previous nlocal_neigh to current nlocal
@ -796,9 +797,6 @@ void FixNeighHistory::unpack_reverse_comm(int n, int *list, double *buf)
int FixNeighHistory::pack_exchange(int i, double *buf)
{
// NOTE: how do I know comm buf is big enough if extreme # of touching neighs
// Comm::BUFEXTRA may need to be increased
int m = 0;
buf[m++] = npartner[i];
for (int n = 0; n < npartner[i]; n++) {