Commit 0f3b2544 authored by stanmoore1's avatar stanmoore1 Committed by GitHub
Browse files

Merge pull request #1 from timattox/new-neighbor

USER-DPD workaround for neighbor list issues
parents 43c459ba 586514e0
Loading
Loading
Loading
Loading
+19 −4
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@
#include "comm.h"
#include "neighbor.h"
#include "neigh_list.h"
#include "neigh_request.h"
#include "random_mars.h"
#include "memory.h"
#include "domain.h"
@@ -139,6 +140,23 @@ int FixShardlow::setmask()

/* ---------------------------------------------------------------------- */

void FixShardlow::init()
{
  int irequest = neighbor->request(this,instance_me);
  neighbor->requests[irequest]->pair = 0;
  neighbor->requests[irequest]->fix  = 1;
  neighbor->requests[irequest]->ssa  = 1;
}

/* ---------------------------------------------------------------------- */

void FixShardlow::init_list(int id, NeighList *ptr)
{
  list = ptr;
}

/* ---------------------------------------------------------------------- */

void FixShardlow::pre_exchange()
{
  memset(atom->ssaAIR, 0, sizeof(int)*atom->nlocal);
@@ -410,7 +428,6 @@ void FixShardlow::initial_integrate(int vflag)
  int nghost = atom->nghost;

  int airnum;
  class NeighList *list; // points to list in pairDPD or pairDPDE
  class RanMars *pRNG;

  // NOTE: this logic is specific to orthogonal boxes, not triclinic
@@ -431,12 +448,10 @@ void FixShardlow::initial_integrate(int vflag)
  // Allocate memory for v_t0 to hold the initial velocities for the ghosts
  v_t0 = (double (*)[3]) memory->smalloc(sizeof(double)*3*nghost, "FixShardlow:v_t0");

  // Define pointers to access the neighbor list and RNG
  // Define pointers to access the RNG
  if(pairDPDE){
    list = pairDPDE->list;
    pRNG = pairDPDE->random;
  } else {
    list = pairDPD->list;
    pRNG = pairDPD->random;
  }
  inum = list->inum;
+4 −0
Original line number Diff line number Diff line
@@ -26,9 +26,13 @@ namespace LAMMPS_NS {

class FixShardlow : public Fix {
 public:
  class NeighList *list; // The SSA specific neighbor list

  FixShardlow(class LAMMPS *, int, char **);
  ~FixShardlow();
  int setmask();
  virtual void init();
  virtual void init_list(int, class NeighList *);
  virtual void setup(int);
  virtual void initial_integrate(int);
  void setup_pre_exchange();
+0 −2
Original line number Diff line number Diff line
@@ -320,11 +320,9 @@ void PairDPDfdt::init_style()

  splitFDT_flag = false;
  int irequest = neighbor->request(this,instance_me);
  neighbor->requests[irequest]->ssa = 0;
  for (int i = 0; i < modify->nfix; i++)
    if (strcmp(modify->fix[i]->style,"shardlow") == 0){
      splitFDT_flag = true;
      neighbor->requests[irequest]->ssa = 1;
    }
}

+0 −2
Original line number Diff line number Diff line
@@ -408,11 +408,9 @@ void PairDPDfdtEnergy::init_style()

  splitFDT_flag = false;
  int irequest = neighbor->request(this,instance_me);
  neighbor->requests[irequest]->ssa = 0;
  for (int i = 0; i < modify->nfix; i++)
    if (strcmp(modify->fix[i]->style,"shardlow") == 0){
      splitFDT_flag = true;
      neighbor->requests[irequest]->ssa = 1;
    }

  bool eos_flag = false;
+2 −0
Original line number Diff line number Diff line
@@ -708,6 +708,8 @@ void Neighbor::init_pair()
  for (i = 0; i < nrequest; i++) {
    if (!requests[i]->fix && !requests[i]->compute) continue;
    for (j = 0; j < nrequest; j++) {
      if (requests[i]->ssa != requests[j]->ssa) continue;

      // Kokkos flags must match
      if (requests[i]->kokkos_device != requests[j]->kokkos_device) continue;
      if (requests[i]->kokkos_host != requests[j]->kokkos_host) continue;