Unverified Commit 11a3fd6c authored by Axel Kohlmeyer's avatar Axel Kohlmeyer Committed by GitHub
Browse files

Merge pull request #1556 from lammps/bug-maxexchange

more robust version of atom exchange size
parents e3b1673c 35485514
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ BodyNparticle::BodyNparticle(LAMMPS *lmp, int narg, char **arg) :

  icp = new MyPoolChunk<int>(1,1);
  dcp = new MyPoolChunk<double>(3*nmin,3*nmax);
  maxexchange = 1 + 3*nmax;        // icp max + dcp max

  memory->create(imflag,nmax,"body/nparticle:imflag");
  memory->create(imdata,nmax,4,"body/nparticle:imdata");
+1 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ BodyRoundedPolygon::BodyRoundedPolygon(LAMMPS *lmp, int narg, char **arg) :

  icp = new MyPoolChunk<int>(1,1);
  dcp = new MyPoolChunk<double>(3*nmin+2*nmin+1+1,3*nmax+2*nmax+1+1);
  maxexchange = 1 + 3*nmax+2*nmax+1+1;      // icp max + dcp max

  memory->create(imflag,nmax,"body/rounded/polygon:imflag");
  memory->create(imdata,nmax,7,"body/nparticle:imdata");
+1 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ BodyRoundedPolyhedron::BodyRoundedPolyhedron(LAMMPS *lmp, int narg, char **arg)
  icp = new MyPoolChunk<int>(1,3);
  dcp = new MyPoolChunk<double>(3*nmin+2+1+1,
                                3*nmax+2*nmax+MAX_FACE_SIZE*nmax+1+1);
  maxexchange = 3 + 3*nmax+2*nmax+MAX_FACE_SIZE*nmax+1+1;  // icp max + dcp max

  memory->create(imflag,2*nmax,"body/rounded/polyhedron:imflag");
  memory->create(imdata,2*nmax,7,"body/polyhedron:imdata");
+1 −1
Original line number Diff line number Diff line
@@ -99,7 +99,7 @@ void FixNeighHistoryKokkos<DeviceType>::pre_exchange()

  copymode = 0;

  comm->maxexchange_fix = MAX(comm->maxexchange_fix,(dnum+1)*maxpartner+1);
  maxexchange = (dnum+1)*maxpartner+1;
}

/* ---------------------------------------------------------------------- */
+8 −3
Original line number Diff line number Diff line
@@ -171,6 +171,8 @@ void FixNeighHistoryOMP::pre_exchange_onesided()
    }

    // set maxpartner = max # of partners of any owned atom
    // maxexchange = max # of values for any Comm::exchange() atom

    maxpartner = m = 0;
    for (i = lfrom; i < lto; i++)
      m = MAX(m,npartner[i]);
@@ -180,7 +182,7 @@ void FixNeighHistoryOMP::pre_exchange_onesided()
#endif
    {
      maxpartner = MAX(m,maxpartner);
      comm->maxexchange_fix =MAX(comm->maxexchange_fix,(dnum+1)*maxpartner+1);
      maxexchange = (dnum+1)*maxpartner+1;
    }
  }

@@ -343,6 +345,7 @@ void FixNeighHistoryOMP::pre_exchange_newton()
    }

    // set maxpartner = max # of partners of any owned atom
    // maxexchange = max # of values for any Comm::exchange() atom
    m = 0;
    for (i = lfrom; i < lto; i++)
      m = MAX(m,npartner[i]);
@@ -352,7 +355,7 @@ void FixNeighHistoryOMP::pre_exchange_newton()
#endif
    {
      maxpartner = MAX(m,maxpartner);
      comm->maxexchange_fix = MAX(comm->maxexchange_fix,(dnum+1)*maxpartner+1);
      maxexchange = (dnum+1)*maxpartner+1;
    }
  }

@@ -481,6 +484,8 @@ void FixNeighHistoryOMP::pre_exchange_no_newton()
    }

    // set maxpartner = max # of partners of any owned atom
    // maxexchange = max # of values for any Comm::exchange() atom

    m = 0;
    for (i = lfrom; i < lto; i++)
      m = MAX(m,npartner[i]);
@@ -490,7 +495,7 @@ void FixNeighHistoryOMP::pre_exchange_no_newton()
#endif
    {
      maxpartner = MAX(m,maxpartner);
      comm->maxexchange_fix = MAX(comm->maxexchange_fix,(dnum+1)*maxpartner+1);
      maxexchange = (dnum+1)*maxpartner+1;
    }
  }
}
Loading