Commit 0966e14e authored by Steve Plimpton's avatar Steve Plimpton
Browse files

more changes to rRESPA neighbor lists

parent 59de1a71
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -225,10 +225,10 @@ void PairLJCutCoulLongCS::compute_inner()
  int newton_pair = force->newton_pair;
  double qqrd2e = force->qqrd2e;

  inum = listinner->inum;
  ilist = listinner->ilist;
  numneigh = listinner->numneigh;
  firstneigh = listinner->firstneigh;
  inum = list->inum_inner;
  ilist = list->ilist_inner;
  numneigh = list->numneigh_inner;
  firstneigh = list->firstneigh_inner;

  double cut_out_on = cut_respa[0];
  double cut_out_off = cut_respa[1];
@@ -311,10 +311,10 @@ void PairLJCutCoulLongCS::compute_middle()
  int newton_pair = force->newton_pair;
  double qqrd2e = force->qqrd2e;

  inum = listmiddle->inum;
  ilist = listmiddle->ilist;
  numneigh = listmiddle->numneigh;
  firstneigh = listmiddle->firstneigh;
  inum = list->inum_middle;
  ilist = list->ilist_middle;
  numneigh = list->numneigh_middle;
  firstneigh = list->firstneigh_middle;

  double cut_in_off = cut_respa[0];
  double cut_in_on = cut_respa[1];
@@ -412,10 +412,10 @@ void PairLJCutCoulLongCS::compute_outer(int eflag, int vflag)
  int newton_pair = force->newton_pair;
  double qqrd2e = force->qqrd2e;

  inum = listouter->inum;
  ilist = listouter->ilist;
  numneigh = listouter->numneigh;
  firstneigh = listouter->firstneigh;
  inum = list->inum;
  ilist = list->ilist;
  numneigh = list->numneigh;
  firstneigh = list->firstneigh;

  double cut_in_off = cut_respa[2];
  double cut_in_on = cut_respa[3];
+16 −41
Original line number Diff line number Diff line
@@ -233,7 +233,8 @@ void PairBuckLongCoulLong::init_style()

  if (!atom->q_flag && (ewald_order&(1<<1)))
    error->all(FLERR,
        "Invoking coulombic in pair style buck/long/coul/long requires atom attribute q");
               "Invoking coulombic in pair style buck/long/coul/long "
               "requires atom attribute q");

  // ensure use of KSpace long-range solver, set two g_ewalds

@@ -258,51 +259,25 @@ void PairBuckLongCoulLong::init_style()

  if (force->kspace->neighrequest_flag) {
    int irequest;
    int respa = 0;

    if (update->whichflag == 1 && strstr(update->integrate_style,"respa")) {
      int respa = 0;
      if (((Respa *) update->integrate)->level_inner >= 0) respa = 1;
      if (((Respa *) update->integrate)->level_middle >= 0) respa = 2;
    }

      if (respa == 0) irequest = neighbor->request(this,instance_me);
      else if (respa == 1) {
        irequest = neighbor->request(this,instance_me);
        neighbor->requests[irequest]->id = 1;
        neighbor->requests[irequest]->respainner = 1;
    irequest = neighbor->request(this,instance_me);
        neighbor->requests[irequest]->id = 3;

    if (respa >= 1) {
      neighbor->requests[irequest]->respaouter = 1;
      } else {
        irequest = neighbor->request(this,instance_me);
        neighbor->requests[irequest]->id = 1;
      neighbor->requests[irequest]->respainner = 1;
        irequest = neighbor->request(this,instance_me);
        neighbor->requests[irequest]->id = 2;
        neighbor->requests[irequest]->respamiddle = 1;
        irequest = neighbor->request(this,instance_me);
        neighbor->requests[irequest]->id = 3;
        neighbor->requests[irequest]->respaouter = 1;
    }

    } else irequest = neighbor->request(this,instance_me);
    if (respa == 2) neighbor->requests[irequest]->respamiddle = 1;
  }

  cut_coulsq = cut_coul * cut_coul;
}

/* ----------------------------------------------------------------------
   neighbor callback to inform pair style of neighbor list to use
   regular or rRESPA
------------------------------------------------------------------------- */

void PairBuckLongCoulLong::init_list(int id, NeighList *ptr)
{
  if (id == 0) list = ptr;
  else if (id == 1) listinner = ptr;
  else if (id == 2) listmiddle = ptr;
  else if (id == 3) listouter = ptr;
}

/* ----------------------------------------------------------------------
   init for one type pair i,j and corresponding j,i
------------------------------------------------------------------------- */
@@ -651,14 +626,14 @@ void PairBuckLongCoulLong::compute_inner()
  double qri, *cut_bucksqi, *buck1i, *buck2i, *rhoinvi;
  vector xi, d;

  ineighn = (ineigh = listinner->ilist) + listinner->inum;
  ineighn = (ineigh = list->ilist_inner) + list->inum_inner;
  for (; ineigh<ineighn; ++ineigh) {                        // loop over my atoms
    i = *ineigh; fi = f0+3*i;
    if (order1) qri = qqrd2e*q[i];
    memcpy(xi, x0+(i+(i<<1)), sizeof(vector));
    cut_bucksqi = cut_bucksq[typei = type[i]];
    buck1i = buck1[typei]; buck2i = buck2[typei]; rhoinvi = rhoinv[typei];
    jneighn = (jneigh = listinner->firstneigh[i])+listinner->numneigh[i];
    jneighn = (jneigh = list->firstneigh_inner[i])+list->numneigh_inner[i];

    for (; jneigh<jneighn; ++jneigh) {                        // loop over neighbors
      j = *jneigh;
@@ -740,7 +715,7 @@ void PairBuckLongCoulLong::compute_middle()
  double qri, *cut_bucksqi, *buck1i, *buck2i, *rhoinvi;
  vector xi, d;

  ineighn = (ineigh = listmiddle->ilist)+listmiddle->inum;
  ineighn = (ineigh = list->ilist_middle)+list->inum_middle;

  for (; ineigh<ineighn; ++ineigh) {                        // loop over my atoms
    i = *ineigh; fi = f0+3*i;
@@ -748,7 +723,7 @@ void PairBuckLongCoulLong::compute_middle()
    memcpy(xi, x0+(i+(i<<1)), sizeof(vector));
    cut_bucksqi = cut_bucksq[typei = type[i]];
    buck1i = buck1[typei]; buck2i = buck2[typei]; rhoinvi = rhoinv[typei];
    jneighn = (jneigh = listmiddle->firstneigh[i])+listmiddle->numneigh[i];
    jneighn = (jneigh = list->firstneigh_middle[i])+list->numneigh_middle[i];

    for (; jneigh<jneighn; ++jneigh) {                        // loop over neighbors
      j = *jneigh;
@@ -839,7 +814,7 @@ void PairBuckLongCoulLong::compute_outer(int eflag, int vflag)
  double cut_in_off_sq = cut_in_off*cut_in_off;
  double cut_in_on_sq = cut_in_on*cut_in_on;

  ineighn = (ineigh = listouter->ilist)+listouter->inum;
  ineighn = (ineigh = list->ilist)+list->inum;

  for (; ineigh<ineighn; ++ineigh) {                        // loop over my atoms
    i = *ineigh; fi = f0+3*i;
@@ -849,7 +824,7 @@ void PairBuckLongCoulLong::compute_outer(int eflag, int vflag)
    buckai = buck_a[typei]; buckci = buck_c[typei]; rhoinvi = rhoinv[typei];
    cutsqi = cutsq[typei]; cut_bucksqi = cut_bucksq[typei];
    memcpy(xi, x0+(i+(i<<1)), sizeof(vector));
    jneighn = (jneigh = listouter->firstneigh[i])+listouter->numneigh[i];
    jneighn = (jneigh = list->firstneigh[i])+list->numneigh[i];

    for (; jneigh<jneighn; ++jneigh) {                        // loop over neighbors
      j = *jneigh;
+0 −1
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ class PairBuckLongCoulLong : public Pair {
  virtual void settings(int, char **);
  void coeff(int, char **);
  void init_style();
  void init_list(int, class NeighList *);
  double init_one(int, int);
  void write_restart(FILE *);
  void read_restart(FILE *);
+21 −47
Original line number Diff line number Diff line
@@ -242,10 +242,10 @@ void PairLJCharmmCoulLong::compute_inner()
  int newton_pair = force->newton_pair;
  double qqrd2e = force->qqrd2e;

  inum = listinner->inum;
  ilist = listinner->ilist;
  numneigh = listinner->numneigh;
  firstneigh = listinner->firstneigh;
  inum = list->inum_inner;
  ilist = list->ilist_inner;
  numneigh = list->numneigh_inner;
  firstneigh = list->firstneigh_inner;

  // loop over neighbors of my atoms

@@ -320,10 +320,10 @@ void PairLJCharmmCoulLong::compute_middle()
  int newton_pair = force->newton_pair;
  double qqrd2e = force->qqrd2e;

  inum = listmiddle->inum;
  ilist = listmiddle->ilist;
  numneigh = listmiddle->numneigh;
  firstneigh = listmiddle->firstneigh;
  inum = list->inum_middle;
  ilist = list->ilist_middle;
  numneigh = list->numneigh_middle;
  firstneigh = list->firstneigh_middle;

  // loop over neighbors of my atoms

@@ -417,10 +417,10 @@ void PairLJCharmmCoulLong::compute_outer(int eflag, int vflag)
  int newton_pair = force->newton_pair;
  double qqrd2e = force->qqrd2e;

  inum = listouter->inum;
  ilist = listouter->ilist;
  numneigh = listouter->numneigh;
  firstneigh = listouter->firstneigh;
  inum = list->inum;
  ilist = list->ilist;
  numneigh = list->numneigh;
  firstneigh = list->firstneigh;

  // loop over neighbors of my atoms

@@ -687,36 +687,23 @@ void PairLJCharmmCoulLong::init_style()
    error->all(FLERR,
               "Pair style lj/charmm/coul/long requires atom attribute q");

  // request regular or rRESPA neighbor lists
  // request regular or rRESPA neighbor list

  int irequest;
  int respa = 0;

  if (update->whichflag == 1 && strstr(update->integrate_style,"respa")) {
    int respa = 0;
    if (((Respa *) update->integrate)->level_inner >= 0) respa = 1;
    if (((Respa *) update->integrate)->level_middle >= 0) respa = 2;
  }

    if (respa == 0) irequest = neighbor->request(this,instance_me);
    else if (respa == 1) {
      irequest = neighbor->request(this,instance_me);
      neighbor->requests[irequest]->id = 1;
      neighbor->requests[irequest]->respainner = 1;
  irequest = neighbor->request(this,instance_me);
      neighbor->requests[irequest]->id = 3;

  if (respa >= 1) {
    neighbor->requests[irequest]->respaouter = 1;
    } else {
      irequest = neighbor->request(this,instance_me);
      neighbor->requests[irequest]->id = 1;
    neighbor->requests[irequest]->respainner = 1;
      irequest = neighbor->request(this,instance_me);
      neighbor->requests[irequest]->id = 2;
      neighbor->requests[irequest]->respamiddle = 1;
      irequest = neighbor->request(this,instance_me);
      neighbor->requests[irequest]->id = 3;
      neighbor->requests[irequest]->respaouter = 1;
  }

  } else irequest = neighbor->request(this,instance_me);
  if (respa == 2) neighbor->requests[irequest]->respamiddle = 1;

  // require cut_lj_inner < cut_lj

@@ -767,19 +754,6 @@ void PairLJCharmmCoulLong::init_style()
  if (ncoultablebits) init_tables(cut_coul,cut_respa);
}

/* ----------------------------------------------------------------------
   neighbor callback to inform pair style of neighbor list to use
   regular or rRESPA
------------------------------------------------------------------------- */

void PairLJCharmmCoulLong::init_list(int id, NeighList *ptr)
{
  if (id == 0) list = ptr;
  else if (id == 1) listinner = ptr;
  else if (id == 2) listmiddle = ptr;
  else if (id == 3) listouter = ptr;
}

/* ----------------------------------------------------------------------
   init for one type pair i,j and corresponding j,i
------------------------------------------------------------------------- */
+0 −1
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ class PairLJCharmmCoulLong : public Pair {
  virtual void settings(int, char **);
  void coeff(int, char **);
  virtual void init_style();
  void init_list(int, class NeighList *);
  virtual double init_one(int, int);
  void write_restart(FILE *);
  void read_restart(FILE *);
Loading