forked from lijiext/lammps
more changes to rRESPA neighbor lists
This commit is contained in:
parent
59de1a71c8
commit
0966e14e73
|
@ -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];
|
||||
|
|
|
@ -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;
|
||||
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;
|
||||
}
|
||||
irequest = neighbor->request(this,instance_me);
|
||||
|
||||
} else irequest = neighbor->request(this,instance_me);
|
||||
if (respa >= 1) {
|
||||
neighbor->requests[irequest]->respaouter = 1;
|
||||
neighbor->requests[irequest]->respainner = 1;
|
||||
}
|
||||
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;
|
||||
|
|
|
@ -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 *);
|
||||
|
|
|
@ -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;
|
||||
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;
|
||||
}
|
||||
irequest = neighbor->request(this,instance_me);
|
||||
|
||||
} else irequest = neighbor->request(this,instance_me);
|
||||
if (respa >= 1) {
|
||||
neighbor->requests[irequest]->respaouter = 1;
|
||||
neighbor->requests[irequest]->respainner = 1;
|
||||
}
|
||||
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
|
||||
------------------------------------------------------------------------- */
|
||||
|
|
|
@ -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 *);
|
||||
|
|
|
@ -278,10 +278,10 @@ void PairLJCharmmCoulMSM::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];
|
||||
|
|
|
@ -274,10 +274,10 @@ void PairLJCharmmfswCoulLong::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];
|
||||
|
@ -359,10 +359,10 @@ void PairLJCharmmfswCoulLong::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];
|
||||
|
@ -465,10 +465,10 @@ void PairLJCharmmfswCoulLong::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];
|
||||
|
@ -824,19 +824,6 @@ void PairLJCharmmfswCoulLong::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 PairLJCharmmfswCoulLong::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
|
||||
------------------------------------------------------------------------- */
|
||||
|
|
|
@ -33,7 +33,6 @@ class PairLJCharmmfswCoulLong : 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 *);
|
||||
|
|
|
@ -224,10 +224,10 @@ void PairLJCutCoulLong::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];
|
||||
|
@ -309,10 +309,10 @@ void PairLJCutCoulLong::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];
|
||||
|
@ -410,10 +410,10 @@ void PairLJCutCoulLong::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];
|
||||
|
@ -656,36 +656,23 @@ void PairLJCutCoulLong::init_style()
|
|||
if (!atom->q_flag)
|
||||
error->all(FLERR,"Pair style lj/cut/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;
|
||||
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;
|
||||
}
|
||||
irequest = neighbor->request(this,instance_me);
|
||||
|
||||
} else irequest = neighbor->request(this,instance_me);
|
||||
if (respa >= 1) {
|
||||
neighbor->requests[irequest]->respaouter = 1;
|
||||
neighbor->requests[irequest]->respainner = 1;
|
||||
}
|
||||
if (respa == 2) neighbor->requests[irequest]->respamiddle = 1;
|
||||
|
||||
cut_coulsq = cut_coul * cut_coul;
|
||||
|
||||
|
@ -707,19 +694,6 @@ void PairLJCutCoulLong::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 PairLJCutCoulLong::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
|
||||
------------------------------------------------------------------------- */
|
||||
|
|
|
@ -33,7 +33,6 @@ class PairLJCutCoulLong : 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 *);
|
||||
|
|
|
@ -265,10 +265,10 @@ void PairLJCutCoulMSM::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];
|
||||
|
|
|
@ -253,51 +253,25 @@ void PairLJLongCoulLong::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;
|
||||
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);
|
||||
}
|
||||
|
||||
irequest = neighbor->request(this,instance_me);
|
||||
|
||||
if (respa >= 1) {
|
||||
neighbor->requests[irequest]->respaouter = 1;
|
||||
neighbor->requests[irequest]->respainner = 1;
|
||||
}
|
||||
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 PairLJLongCoulLong::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
|
||||
------------------------------------------------------------------------- */
|
||||
|
@ -649,13 +623,13 @@ void PairLJLongCoulLong::compute_inner()
|
|||
double qri, *cut_ljsqi, *lj1i, *lj2i;
|
||||
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;
|
||||
memcpy(xi, x0+(i+(i<<1)), sizeof(vector));
|
||||
cut_ljsqi = cut_ljsq[typei = type[i]];
|
||||
lj1i = lj1[typei]; lj2i = lj2[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;
|
||||
ni = sbmask(j);
|
||||
|
@ -736,7 +710,7 @@ void PairLJLongCoulLong::compute_middle()
|
|||
double qri, *cut_ljsqi, *lj1i, *lj2i;
|
||||
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;
|
||||
|
@ -744,7 +718,7 @@ void PairLJLongCoulLong::compute_middle()
|
|||
memcpy(xi, x0+(i+(i<<1)), sizeof(vector));
|
||||
cut_ljsqi = cut_ljsq[typei = type[i]];
|
||||
lj1i = lj1[typei]; lj2i = lj2[typei];
|
||||
jneighn = (jneigh = listmiddle->firstneigh[i])+listmiddle->numneigh[i];
|
||||
jneighn = (jneigh = list->firstneigh_middle[i])+list->numneigh_middle[i];
|
||||
|
||||
for (; jneigh<jneighn; ++jneigh) {
|
||||
j = *jneigh;
|
||||
|
@ -833,7 +807,7 @@ void PairLJLongCoulLong::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;
|
||||
|
@ -842,7 +816,7 @@ void PairLJLongCoulLong::compute_outer(int eflag, int vflag)
|
|||
lj1i = lj1[typei]; lj2i = lj2[typei]; lj3i = lj3[typei]; lj4i = lj4[typei];
|
||||
cutsqi = cutsq[typei]; cut_ljsqi = cut_ljsq[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;
|
||||
|
|
|
@ -34,7 +34,6 @@ class PairLJLongCoulLong : 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 *);
|
||||
|
|
|
@ -516,10 +516,10 @@ void PairLJLongTIP4PLong::compute_inner()
|
|||
int ni;
|
||||
double *lj1i, *lj2i;
|
||||
|
||||
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
|
||||
|
||||
|
@ -769,10 +769,10 @@ void PairLJLongTIP4PLong::compute_middle()
|
|||
int ni;
|
||||
double *lj1i, *lj2i;
|
||||
|
||||
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
|
||||
|
||||
|
@ -1049,10 +1049,10 @@ void PairLJLongTIP4PLong::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;
|
||||
|
||||
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
|
||||
|
||||
|
|
|
@ -226,10 +226,10 @@ void PairLJCharmmCoulLongSoft::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];
|
||||
|
@ -315,10 +315,10 @@ void PairLJCharmmCoulLongSoft::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];
|
||||
|
@ -428,10 +428,10 @@ void PairLJCharmmCoulLongSoft::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];
|
||||
|
@ -758,19 +758,6 @@ void PairLJCharmmCoulLongSoft::init_style()
|
|||
g_ewald = force->kspace->g_ewald;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
neighbor callback to inform pair style of neighbor list to use
|
||||
regular or rRESPA
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void PairLJCharmmCoulLongSoft::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
|
||||
------------------------------------------------------------------------- */
|
||||
|
|
|
@ -33,7 +33,6 @@ class PairLJCharmmCoulLongSoft : public Pair {
|
|||
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 *);
|
||||
|
|
|
@ -209,10 +209,10 @@ void PairLJCutCoulLongSoft::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];
|
||||
|
@ -299,10 +299,10 @@ void PairLJCutCoulLongSoft::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];
|
||||
|
@ -403,10 +403,10 @@ void PairLJCutCoulLongSoft::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];
|
||||
|
|
|
@ -32,7 +32,6 @@ class PairLJCutCoulLongSoft : 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 *);
|
||||
|
|
|
@ -164,10 +164,10 @@ void PairLJCutSoft::compute_inner()
|
|||
double *special_lj = force->special_lj;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
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];
|
||||
|
@ -242,10 +242,10 @@ void PairLJCutSoft::compute_middle()
|
|||
double *special_lj = force->special_lj;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
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];
|
||||
|
@ -333,10 +333,10 @@ void PairLJCutSoft::compute_outer(int eflag, int vflag)
|
|||
double *special_lj = force->special_lj;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
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];
|
||||
|
@ -556,19 +556,6 @@ void PairLJCutSoft::init_style()
|
|||
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
neighbor callback to inform pair style of neighbor list to use
|
||||
regular or rRESPA
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void PairLJCutSoft::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
|
||||
------------------------------------------------------------------------- */
|
||||
|
|
|
@ -32,7 +32,6 @@ class PairLJCutSoft : 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 *);
|
||||
|
|
|
@ -246,6 +246,7 @@ void Min::setup(int flag)
|
|||
domain->box_too_small_check();
|
||||
modify->setup_pre_neighbor();
|
||||
neighbor->build();
|
||||
modify->setup_post_neighbor();
|
||||
neighbor->ncalls = 0;
|
||||
|
||||
// remove these restriction eventually
|
||||
|
@ -345,6 +346,7 @@ void Min::setup_minimal(int flag)
|
|||
domain->box_too_small_check();
|
||||
modify->setup_pre_neighbor();
|
||||
neighbor->build();
|
||||
modify->setup_post_neighbor();
|
||||
neighbor->ncalls = 0;
|
||||
}
|
||||
|
||||
|
@ -503,12 +505,15 @@ double Min::energy_force(int resetflag)
|
|||
if (triclinic) domain->lamda2x(atom->nlocal+atom->nghost);
|
||||
timer->stamp(Timer::COMM);
|
||||
if (modify->n_min_pre_neighbor) {
|
||||
timer->stamp();
|
||||
modify->min_pre_neighbor();
|
||||
timer->stamp(Timer::MODIFY);
|
||||
}
|
||||
neighbor->build();
|
||||
timer->stamp(Timer::NEIGH);
|
||||
if (modify->n_min_post_neighbor) {
|
||||
modify->min_post_neighbor();
|
||||
timer->stamp(Timer::MODIFY);
|
||||
}
|
||||
}
|
||||
|
||||
ev_set(update->ntimestep);
|
||||
|
|
|
@ -47,6 +47,9 @@ NeighList::NeighList(LAMMPS *lmp) : Pointers(lmp)
|
|||
ghost = 0;
|
||||
ssa = 0;
|
||||
history = 0;
|
||||
respaouter = 0;
|
||||
respamiddle = 0;
|
||||
respainner = 0;
|
||||
copy = 0;
|
||||
copymode = 0;
|
||||
|
||||
|
@ -59,14 +62,25 @@ NeighList::NeighList(LAMMPS *lmp) : Pointers(lmp)
|
|||
listskip = NULL;
|
||||
listfull = NULL;
|
||||
|
||||
respamiddle = 0;
|
||||
listinner = NULL;
|
||||
listmiddle = NULL;
|
||||
|
||||
fix_bond = NULL;
|
||||
|
||||
ipage = NULL;
|
||||
|
||||
// extra rRESPA lists
|
||||
|
||||
inum_inner = gnum_inner = 0;
|
||||
ilist_inner = NULL;
|
||||
numneigh_inner = NULL;
|
||||
firstneigh_inner = NULL;
|
||||
|
||||
inum_middle = gnum_middle = 0;
|
||||
ilist_middle = NULL;
|
||||
numneigh_middle = NULL;
|
||||
firstneigh_middle = NULL;
|
||||
|
||||
ipage_inner = NULL;
|
||||
ipage_middle = NULL;
|
||||
|
||||
// Kokkos package
|
||||
|
||||
kokkos = 0;
|
||||
|
@ -90,6 +104,20 @@ NeighList::~NeighList()
|
|||
delete [] ipage;
|
||||
}
|
||||
|
||||
if (respainner) {
|
||||
memory->destroy(ilist_inner);
|
||||
memory->destroy(numneigh_inner);
|
||||
memory->sfree(firstneigh_inner);
|
||||
delete [] ipage_inner;
|
||||
}
|
||||
|
||||
if (respamiddle) {
|
||||
memory->destroy(ilist_middle);
|
||||
memory->destroy(numneigh_middle);
|
||||
memory->sfree(firstneigh_middle);
|
||||
delete [] ipage_middle;
|
||||
}
|
||||
|
||||
delete [] iskip;
|
||||
memory->destroy(ijskip);
|
||||
}
|
||||
|
@ -100,7 +128,7 @@ NeighList::~NeighList()
|
|||
copy -> set listcopy for list to copy from
|
||||
skip -> set listskip for list to skip from, create copy of itype,ijtype
|
||||
halffull -> set listfull for full list to derive from
|
||||
respaouter -> set listinner/listmiddle for other rRESPA lists
|
||||
respaouter -> set all 3 outer/middle/inner flags
|
||||
bond -> set fix_bond to Fix that made the request
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
|
@ -112,6 +140,9 @@ void NeighList::post_constructor(NeighRequest *nq)
|
|||
ghost = nq->ghost;
|
||||
ssa = nq->ssa;
|
||||
history = nq->history;
|
||||
respaouter = nq->respaouter;
|
||||
respamiddle = nq->respamiddle;
|
||||
respainner = nq->respainner;
|
||||
copy = nq->copy;
|
||||
|
||||
if (nq->copy)
|
||||
|
@ -132,17 +163,6 @@ void NeighList::post_constructor(NeighRequest *nq)
|
|||
if (nq->halffull)
|
||||
listfull = neighbor->lists[nq->halffulllist];
|
||||
|
||||
if (nq->respaouter) {
|
||||
if (nq->respamiddlelist < 0) {
|
||||
respamiddle = 0;
|
||||
listinner = neighbor->lists[nq->respainnerlist];
|
||||
} else {
|
||||
respamiddle = 1;
|
||||
listmiddle = neighbor->lists[nq->respamiddlelist];
|
||||
listinner = neighbor->lists[nq->respainnerlist];
|
||||
}
|
||||
}
|
||||
|
||||
if (nq->bond) fix_bond = (Fix *) nq->requestor;
|
||||
}
|
||||
|
||||
|
@ -157,25 +177,28 @@ void NeighList::setup_pages(int pgsize_caller, int oneatom_caller)
|
|||
ipage = new MyPage<int>[nmypage];
|
||||
for (int i = 0; i < nmypage; i++)
|
||||
ipage[i].init(oneatom,pgsize,PGDELTA);
|
||||
|
||||
if (respainner) {
|
||||
ipage_inner = new MyPage<int>[nmypage];
|
||||
for (int i = 0; i < nmypage; i++)
|
||||
ipage_inner[i].init(oneatom,pgsize,PGDELTA);
|
||||
}
|
||||
|
||||
if (respamiddle) {
|
||||
ipage_middle = new MyPage<int>[nmypage];
|
||||
for (int i = 0; i < nmypage; i++)
|
||||
ipage_middle[i].init(oneatom,pgsize,PGDELTA);
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
grow per-atom data to allow for nlocal/nall atoms
|
||||
for parent lists:
|
||||
also trigger grow in child list(s) which are not built themselves
|
||||
history calls grow() in listhistory
|
||||
respaouter calls grow() in respainner, respamiddle
|
||||
triggered by neighbor list build
|
||||
not called if a copy list
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void NeighList::grow(int nlocal, int nall)
|
||||
{
|
||||
// trigger grow() in children before possible return
|
||||
|
||||
if (listinner) listinner->grow(nlocal,nall);
|
||||
if (listmiddle) listmiddle->grow(nlocal,nall);
|
||||
|
||||
// skip if data structs are already big enough
|
||||
|
||||
if (ssa) {
|
||||
|
@ -196,6 +219,26 @@ void NeighList::grow(int nlocal, int nall)
|
|||
memory->create(numneigh,maxatom,"neighlist:numneigh");
|
||||
firstneigh = (int **) memory->smalloc(maxatom*sizeof(int *),
|
||||
"neighlist:firstneigh");
|
||||
|
||||
if (respainner) {
|
||||
memory->destroy(ilist_inner);
|
||||
memory->destroy(numneigh_inner);
|
||||
memory->sfree(firstneigh_inner);
|
||||
memory->create(ilist_inner,maxatom,"neighlist:ilist_inner");
|
||||
memory->create(numneigh_inner,maxatom,"neighlist:numneigh_inner");
|
||||
firstneigh_inner = (int **) memory->smalloc(maxatom*sizeof(int *),
|
||||
"neighlist:firstneigh_inner");
|
||||
}
|
||||
|
||||
if (respamiddle) {
|
||||
memory->destroy(ilist_middle);
|
||||
memory->destroy(numneigh_middle);
|
||||
memory->sfree(firstneigh_middle);
|
||||
memory->create(ilist_middle,maxatom,"neighlist:ilist_middle");
|
||||
memory->create(numneigh_middle,maxatom,"neighlist:numneigh_middle");
|
||||
firstneigh_middle = (int **) memory->smalloc(maxatom*sizeof(int *),
|
||||
"neighlist:firstneigh_middle");
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
@ -226,9 +269,9 @@ void NeighList::print_attributes()
|
|||
printf(" %d = size\n",rq->size);
|
||||
printf(" %d = history\n",rq->history);
|
||||
printf(" %d = granonesided\n",rq->granonesided);
|
||||
printf(" %d = respainner\n",rq->respainner);
|
||||
printf(" %d = respamiddle\n",rq->respamiddle);
|
||||
printf(" %d = respaouter\n",rq->respaouter);
|
||||
printf(" %d = respamiddle\n",rq->respamiddle);
|
||||
printf(" %d = respainner\n",rq->respainner);
|
||||
printf(" %d = bond\n",rq->bond);
|
||||
printf(" %d = omp\n",rq->omp);
|
||||
printf(" %d = intel\n",rq->intel);
|
||||
|
@ -263,5 +306,25 @@ bigint NeighList::memory_usage()
|
|||
bytes += ipage[i].size();
|
||||
}
|
||||
|
||||
if (respainner) {
|
||||
bytes += memory->usage(ilist_inner,maxatom);
|
||||
bytes += memory->usage(numneigh_inner,maxatom);
|
||||
bytes += maxatom * sizeof(int *);
|
||||
if (ipage_inner) {
|
||||
for (int i = 0; i < nmypage; i++)
|
||||
bytes += ipage_inner[i].size();
|
||||
}
|
||||
}
|
||||
|
||||
if (respamiddle) {
|
||||
bytes += memory->usage(ilist_middle,maxatom);
|
||||
bytes += memory->usage(numneigh_middle,maxatom);
|
||||
bytes += maxatom * sizeof(int *);
|
||||
if (ipage_middle) {
|
||||
for (int i = 0; i < nmypage; i++)
|
||||
bytes += ipage_middle[i].size();
|
||||
}
|
||||
}
|
||||
|
||||
return bytes;
|
||||
}
|
||||
|
|
|
@ -35,6 +35,9 @@ class NeighList : protected Pointers {
|
|||
int ghost; // 1 if list stores neighbors of ghosts
|
||||
int ssa; // 1 if list stores Shardlow data
|
||||
int history; // 1 if there is neigh history (FixNeighHist)
|
||||
int respaouter; // 1 if list is a rRespa outer list
|
||||
int respamiddle; // 1 if there is also a rRespa middle list
|
||||
int respainner; // 1 if there is also a rRespa inner list
|
||||
int copy; // 1 if this list is copied from another list
|
||||
int copymode; // 1 if this is a Kokkos on-device copy
|
||||
|
||||
|
@ -51,6 +54,23 @@ class NeighList : protected Pointers {
|
|||
int oneatom; // max size for one atom
|
||||
MyPage<int> *ipage; // pages of neighbor indices
|
||||
|
||||
// data structs to store rRESPA neighbor pairs I,J and associated values
|
||||
|
||||
int inum_inner; // # of I atoms neighbors are stored for
|
||||
int gnum_inner; // # of ghost atoms neighbors are stored for
|
||||
int *ilist_inner; // local indices of I atoms
|
||||
int *numneigh_inner; // # of J neighbors for each I atom
|
||||
int **firstneigh_inner; // ptr to 1st J int value of each I atom
|
||||
|
||||
int inum_middle; // # of I atoms neighbors are stored for
|
||||
int gnum_middle; // # of ghost atoms neighbors are stored for
|
||||
int *ilist_middle; // local indices of I atoms
|
||||
int *numneigh_middle; // # of J neighbors for each I atom
|
||||
int **firstneigh_middle; // ptr to 1st J int value of each I atom
|
||||
|
||||
MyPage<int> *ipage_inner; // pages of neighbor indices for inner
|
||||
MyPage<int> *ipage_middle; // pages of neighbor indices for middle
|
||||
|
||||
// atom types to skip when building list
|
||||
// copied info from corresponding request into realloced vec/array
|
||||
|
||||
|
@ -63,10 +83,6 @@ class NeighList : protected Pointers {
|
|||
NeighList *listskip; // me = skip list, point to list I skip from
|
||||
NeighList *listfull; // me = half list, point to full I derive from
|
||||
|
||||
int respamiddle; // 1 if this respaouter has middle list
|
||||
NeighList *listinner; // me = respaouter, point to respainner
|
||||
NeighList *listmiddle; // me = respaouter, point to respamiddle
|
||||
|
||||
class Fix *fix_bond; // fix that stores bond info
|
||||
|
||||
// Kokkos package
|
||||
|
|
|
@ -86,9 +86,6 @@ NeighRequest::NeighRequest(LAMMPS *lmp) : Pointers(lmp)
|
|||
copylist = -1;
|
||||
halffull = 0;
|
||||
halffulllist = -1;
|
||||
respaouterlist = -1;
|
||||
respamiddlelist = -1;
|
||||
respainnerlist = -1;
|
||||
unique = 0;
|
||||
|
||||
// internal settings
|
||||
|
|
|
@ -62,9 +62,9 @@ class NeighRequest : protected Pointers {
|
|||
int history; // 1 if there is also neigh history info (FixNeighHist)
|
||||
int granonesided; // 1 if one-sided granular list for
|
||||
// sphere/surf interactions
|
||||
int respainner; // 1 if a rRESPA inner list
|
||||
int respamiddle; // 1 if a rRESPA middle list
|
||||
int respaouter; // 1 if a rRESPA outer list
|
||||
int respainner; // 1 if need a rRESPA inner list
|
||||
int respamiddle; // 1 if need a rRESPA middle list
|
||||
int respaouter; // 1 if need a rRESPA outer list
|
||||
int bond; // 1 if store bond neighbors instead of atom neighs
|
||||
int omp; // set by USER-OMP package
|
||||
int intel; // set by USER-INTEL package
|
||||
|
@ -98,17 +98,9 @@ class NeighRequest : protected Pointers {
|
|||
int halffull; // 1 if half list computed from another full list
|
||||
int halffulllist; // index of full list to derive half from
|
||||
|
||||
int respaouterlist; // index of respaouter/middle/inner lists
|
||||
int respamiddlelist; // which this rREPSA list is associated with
|
||||
int respainnerlist; // each rRESPA style list points at the others
|
||||
|
||||
int unique; // 1 if this list requires its own
|
||||
// NStencil, Nbin class - because of requestor cutoff
|
||||
|
||||
// pointer to FSH class, set by requestor class (not by Neighbor)
|
||||
|
||||
class FixShearHistory *fix_history; // fix that stores per-atom history info
|
||||
|
||||
// -----------------------------
|
||||
// internal settings made by Neighbor class
|
||||
// -----------------------------
|
||||
|
|
|
@ -662,7 +662,7 @@ int Neighbor::init_pair()
|
|||
// purpose is to avoid duplicate or inefficient builds
|
||||
// may add new requests if a needed request to derive from does not exist
|
||||
// methods:
|
||||
// (1) other = point rRESPA lists at their partner lists
|
||||
// (1) unique = create unique lists if cutoff is explicitly set
|
||||
// (2) skip = create any new non-skip lists needed by pair hybrid skip lists
|
||||
// (3) granular = adjust parent and skip lists for granular onesided usage
|
||||
// (4) h/f = pair up any matching half/full lists
|
||||
|
@ -675,7 +675,7 @@ int Neighbor::init_pair()
|
|||
|
||||
int nrequest_original = nrequest;
|
||||
|
||||
morph_other();
|
||||
morph_unique();
|
||||
morph_skip();
|
||||
morph_granular(); // this method can change flags set by requestor
|
||||
morph_halffull();
|
||||
|
@ -828,7 +828,6 @@ int Neighbor::init_pair()
|
|||
}
|
||||
|
||||
// first-time allocation of per-atom data for lists that are built and store
|
||||
// lists that are not built: respa inner/middle (no neigh_pair)
|
||||
// lists that do not store: copy
|
||||
// use atom->nmax for both grow() args
|
||||
// i.e. grow first time to expanded size to avoid future reallocs
|
||||
|
@ -908,32 +907,16 @@ int Neighbor::init_pair()
|
|||
|
||||
/* ----------------------------------------------------------------------
|
||||
scan NeighRequests to set additional flags
|
||||
only for respaouter, custom cutoff lists
|
||||
only for custom cutoff lists
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void Neighbor::morph_other()
|
||||
void Neighbor::morph_unique()
|
||||
{
|
||||
NeighRequest *irq;
|
||||
|
||||
for (int i = 0; i < nrequest; i++) {
|
||||
irq = requests[i];
|
||||
|
||||
// if respaouter, point all associated rRESPA lists at each other
|
||||
|
||||
if (irq->respaouter) {
|
||||
if (requests[i-1]->respainner) {
|
||||
irq->respainnerlist = i-1;
|
||||
requests[i-1]->respaouterlist = i;
|
||||
} else {
|
||||
irq->respamiddlelist = i-1;
|
||||
requests[i-1]->respaouterlist = i;
|
||||
requests[i-1]->respainnerlist = i-1;
|
||||
irq->respainnerlist = i-2;
|
||||
requests[i-2]->respaouterlist = i;
|
||||
requests[i-2]->respamiddlelist = i-1;
|
||||
}
|
||||
}
|
||||
|
||||
// if cut flag set by requestor, set unique flag
|
||||
// this forces Pair,Stencil,Bin styles to be instantiated separately
|
||||
|
||||
|
@ -964,7 +947,6 @@ void Neighbor::morph_skip()
|
|||
// halffull list and its full parent may both skip,
|
||||
// but are checked to insure matching skip info
|
||||
|
||||
if (irq->respainner || irq->respamiddle) continue;
|
||||
if (irq->halffull) continue;
|
||||
if (irq->copy) continue;
|
||||
|
||||
|
@ -997,7 +979,6 @@ void Neighbor::morph_skip()
|
|||
// else 2 lists do not store same pairs
|
||||
// or their data structures are different
|
||||
// this includes custom cutoff set by requestor
|
||||
// no need to check respaouter b/c it stores same pairs
|
||||
// NOTE: need check for 2 Kokkos flags?
|
||||
|
||||
if (irq->ghost != jrq->ghost) continue;
|
||||
|
@ -1134,7 +1115,6 @@ void Neighbor::morph_halffull()
|
|||
// these lists are created other ways, no need for halffull
|
||||
// do want to process skip lists
|
||||
|
||||
if (irq->respainner || irq->respamiddle) continue;
|
||||
if (irq->copy) continue;
|
||||
|
||||
// check all other lists
|
||||
|
@ -1153,7 +1133,6 @@ void Neighbor::morph_halffull()
|
|||
// else 2 lists do not store same pairs
|
||||
// or their data structures are different
|
||||
// this includes custom cutoff set by requestor
|
||||
// no need to check respaouter b/c it stores same pairs
|
||||
|
||||
if (irq->ghost != jrq->ghost) continue;
|
||||
if (irq->size != jrq->size) continue;
|
||||
|
@ -1204,11 +1183,6 @@ void Neighbor::morph_copy()
|
|||
|
||||
if (irq->copy) continue;
|
||||
|
||||
// these lists are created other ways, no need to copy
|
||||
// skip lists are eligible to become a copy list
|
||||
|
||||
if (irq->respainner || irq->respamiddle) continue;
|
||||
|
||||
// check all other lists
|
||||
|
||||
for (j = 0; j < nrequest; j++) {
|
||||
|
@ -1245,7 +1219,8 @@ void Neighbor::morph_copy()
|
|||
|
||||
if (irq->ghost && !jrq->ghost) continue;
|
||||
|
||||
// do not copy from a respa middle/inner list
|
||||
// do not copy from a list with respa middle/inner
|
||||
// b/c its outer list will not be complete
|
||||
|
||||
if (jrq->respamiddle) continue;
|
||||
if (jrq->respainner) continue;
|
||||
|
@ -1254,7 +1229,6 @@ void Neighbor::morph_copy()
|
|||
// else 2 lists do not store same pairs
|
||||
// or their data structures are different
|
||||
// this includes custom cutoff set by requestor
|
||||
// no need to check respaouter b/c it stores same pairs
|
||||
// no need to check omp b/c it stores same pairs
|
||||
// NOTE: need check for 2 Kokkos flags?
|
||||
|
||||
|
@ -1532,9 +1506,8 @@ void Neighbor::print_pairwise_info()
|
|||
if (rq->size) fprintf(out,", size");
|
||||
if (rq->history) fprintf(out,", history");
|
||||
if (rq->granonesided) fprintf(out,", onesided");
|
||||
if (rq->respainner) fprintf(out,", respa outer");
|
||||
if (rq->respamiddle) fprintf(out,", respa middle");
|
||||
if (rq->respaouter) fprintf(out,", respa inner");
|
||||
if (rq->respamiddle) fprintf(out,", respa outer/middle/inner");
|
||||
else if (rq->respainner) fprintf(out,", respa outer/inner");
|
||||
if (rq->bond) fprintf(out,", bond");
|
||||
if (rq->omp) fprintf(out,", omp");
|
||||
if (rq->intel) fprintf(out,", intel");
|
||||
|
@ -1629,7 +1602,6 @@ int Neighbor::choose_bin(NeighRequest *rq)
|
|||
|
||||
if (style == NSQ) return 0;
|
||||
if (rq->skip || rq->copy || rq->halffull) return 0;
|
||||
if (rq->respainner || rq->respamiddle) return 0;
|
||||
|
||||
// use request settings to match exactly one NBin class mask
|
||||
// checks are bitwise using NeighConst bit masks
|
||||
|
@ -1670,7 +1642,6 @@ int Neighbor::choose_stencil(NeighRequest *rq)
|
|||
|
||||
if (style == NSQ) return 0;
|
||||
if (rq->skip || rq->copy || rq->halffull) return 0;
|
||||
if (rq->respainner || rq->respamiddle) return 0;
|
||||
|
||||
// convert newton request to newtflag = on or off
|
||||
|
||||
|
@ -1761,10 +1732,6 @@ int Neighbor::choose_stencil(NeighRequest *rq)
|
|||
|
||||
int Neighbor::choose_pair(NeighRequest *rq)
|
||||
{
|
||||
// no neighbor list build performed
|
||||
|
||||
if (rq->respainner || rq->respamiddle) return 0;
|
||||
|
||||
// error check for includegroup with ghost neighbor request
|
||||
|
||||
if (includegroup && rq->ghost)
|
||||
|
|
|
@ -204,7 +204,7 @@ class Neighbor : protected Pointers {
|
|||
int init_pair();
|
||||
virtual void init_topology();
|
||||
|
||||
void morph_other();
|
||||
void morph_unique();
|
||||
void morph_skip();
|
||||
void morph_granular();
|
||||
void morph_halffull();
|
||||
|
|
|
@ -63,22 +63,19 @@ void NPairHalfRespaBinNewtoff::build(NeighList *list)
|
|||
int **firstneigh = list->firstneigh;
|
||||
MyPage<int> *ipage = list->ipage;
|
||||
|
||||
NeighList *listinner = list->listinner;
|
||||
int *ilist_inner = listinner->ilist;
|
||||
int *numneigh_inner = listinner->numneigh;
|
||||
int **firstneigh_inner = listinner->firstneigh;
|
||||
MyPage<int> *ipage_inner = listinner->ipage;
|
||||
int *ilist_inner = list->ilist_inner;
|
||||
int *numneigh_inner = list->numneigh_inner;
|
||||
int **firstneigh_inner = list->firstneigh_inner;
|
||||
MyPage<int> *ipage_inner = list->ipage_inner;
|
||||
|
||||
NeighList *listmiddle;
|
||||
int *ilist_middle,*numneigh_middle,**firstneigh_middle;
|
||||
MyPage<int> *ipage_middle;
|
||||
int respamiddle = list->respamiddle;
|
||||
if (respamiddle) {
|
||||
listmiddle = list->listmiddle;
|
||||
ilist_middle = listmiddle->ilist;
|
||||
numneigh_middle = listmiddle->numneigh;
|
||||
firstneigh_middle = listmiddle->firstneigh;
|
||||
ipage_middle = listmiddle->ipage;
|
||||
ilist_middle = list->ilist_middle;
|
||||
numneigh_middle = list->numneigh_middle;
|
||||
firstneigh_middle = list->firstneigh_middle;
|
||||
ipage_middle = list->ipage_middle;
|
||||
}
|
||||
|
||||
int inum = 0;
|
||||
|
@ -185,6 +182,6 @@ void NPairHalfRespaBinNewtoff::build(NeighList *list)
|
|||
}
|
||||
|
||||
list->inum = inum;
|
||||
listinner->inum = inum;
|
||||
if (respamiddle) listmiddle->inum = inum;
|
||||
list->inum_inner = inum;
|
||||
if (respamiddle) list->inum_middle = inum;
|
||||
}
|
||||
|
|
|
@ -62,22 +62,19 @@ void NPairHalfRespaBinNewton::build(NeighList *list)
|
|||
int **firstneigh = list->firstneigh;
|
||||
MyPage<int> *ipage = list->ipage;
|
||||
|
||||
NeighList *listinner = list->listinner;
|
||||
int *ilist_inner = listinner->ilist;
|
||||
int *numneigh_inner = listinner->numneigh;
|
||||
int **firstneigh_inner = listinner->firstneigh;
|
||||
MyPage<int> *ipage_inner = listinner->ipage;
|
||||
int *ilist_inner = list->ilist_inner;
|
||||
int *numneigh_inner = list->numneigh_inner;
|
||||
int **firstneigh_inner = list->firstneigh_inner;
|
||||
MyPage<int> *ipage_inner = list->ipage_inner;
|
||||
|
||||
NeighList *listmiddle;
|
||||
int *ilist_middle,*numneigh_middle,**firstneigh_middle;
|
||||
MyPage<int> *ipage_middle;
|
||||
int respamiddle = list->respamiddle;
|
||||
if (respamiddle) {
|
||||
listmiddle = list->listmiddle;
|
||||
ilist_middle = listmiddle->ilist;
|
||||
numneigh_middle = listmiddle->numneigh;
|
||||
firstneigh_middle = listmiddle->firstneigh;
|
||||
ipage_middle = listmiddle->ipage;
|
||||
ilist_middle = list->ilist_middle;
|
||||
numneigh_middle = list->numneigh_middle;
|
||||
firstneigh_middle = list->firstneigh_middle;
|
||||
ipage_middle = list->ipage_middle;
|
||||
}
|
||||
|
||||
int inum = 0;
|
||||
|
@ -231,6 +228,6 @@ void NPairHalfRespaBinNewton::build(NeighList *list)
|
|||
}
|
||||
|
||||
list->inum = inum;
|
||||
listinner->inum = inum;
|
||||
if (respamiddle) listmiddle->inum = inum;
|
||||
list->inum_inner = inum;
|
||||
if (respamiddle) list->inum_middle = inum;
|
||||
}
|
||||
|
|
|
@ -63,22 +63,19 @@ void NPairHalfRespaBinNewtonTri::build(NeighList *list)
|
|||
int **firstneigh = list->firstneigh;
|
||||
MyPage<int> *ipage = list->ipage;
|
||||
|
||||
NeighList *listinner = list->listinner;
|
||||
int *ilist_inner = listinner->ilist;
|
||||
int *numneigh_inner = listinner->numneigh;
|
||||
int **firstneigh_inner = listinner->firstneigh;
|
||||
MyPage<int> *ipage_inner = listinner->ipage;
|
||||
int *ilist_inner = list->ilist_inner;
|
||||
int *numneigh_inner = list->numneigh_inner;
|
||||
int **firstneigh_inner = list->firstneigh_inner;
|
||||
MyPage<int> *ipage_inner = list->ipage_inner;
|
||||
|
||||
NeighList *listmiddle;
|
||||
int *ilist_middle,*numneigh_middle,**firstneigh_middle;
|
||||
MyPage<int> *ipage_middle;
|
||||
int respamiddle = list->respamiddle;
|
||||
if (respamiddle) {
|
||||
listmiddle = list->listmiddle;
|
||||
ilist_middle = listmiddle->ilist;
|
||||
numneigh_middle = listmiddle->numneigh;
|
||||
firstneigh_middle = listmiddle->firstneigh;
|
||||
ipage_middle = listmiddle->ipage;
|
||||
ilist_middle = list->ilist_middle;
|
||||
numneigh_middle = list->numneigh_middle;
|
||||
firstneigh_middle = list->firstneigh_middle;
|
||||
ipage_middle = list->ipage_middle;
|
||||
}
|
||||
|
||||
int inum = 0;
|
||||
|
@ -193,6 +190,6 @@ void NPairHalfRespaBinNewtonTri::build(NeighList *list)
|
|||
}
|
||||
|
||||
list->inum = inum;
|
||||
listinner->inum = inum;
|
||||
if (respamiddle) listmiddle->inum = inum;
|
||||
list->inum_inner = inum;
|
||||
if (respamiddle) list->inum_middle = inum;
|
||||
}
|
||||
|
|
|
@ -67,22 +67,19 @@ void NPairHalfRespaNsqNewtoff::build(NeighList *list)
|
|||
int **firstneigh = list->firstneigh;
|
||||
MyPage<int> *ipage = list->ipage;
|
||||
|
||||
NeighList *listinner = list->listinner;
|
||||
int *ilist_inner = listinner->ilist;
|
||||
int *numneigh_inner = listinner->numneigh;
|
||||
int **firstneigh_inner = listinner->firstneigh;
|
||||
MyPage<int> *ipage_inner = listinner->ipage;
|
||||
int *ilist_inner = list->ilist_inner;
|
||||
int *numneigh_inner = list->numneigh_inner;
|
||||
int **firstneigh_inner = list->firstneigh_inner;
|
||||
MyPage<int> *ipage_inner = list->ipage_inner;
|
||||
|
||||
NeighList *listmiddle;
|
||||
int *ilist_middle,*numneigh_middle,**firstneigh_middle;
|
||||
MyPage<int> *ipage_middle;
|
||||
int respamiddle = list->respamiddle;
|
||||
if (respamiddle) {
|
||||
listmiddle = list->listmiddle;
|
||||
ilist_middle = listmiddle->ilist;
|
||||
numneigh_middle = listmiddle->numneigh;
|
||||
firstneigh_middle = listmiddle->firstneigh;
|
||||
ipage_middle = listmiddle->ipage;
|
||||
ilist_middle = list->ilist_middle;
|
||||
numneigh_middle = list->numneigh_middle;
|
||||
firstneigh_middle = list->firstneigh_middle;
|
||||
ipage_middle = list->ipage_middle;
|
||||
}
|
||||
|
||||
int inum = 0;
|
||||
|
@ -180,6 +177,6 @@ void NPairHalfRespaNsqNewtoff::build(NeighList *list)
|
|||
}
|
||||
|
||||
list->inum = inum;
|
||||
listinner->inum = inum;
|
||||
if (respamiddle) listmiddle->inum = inum;
|
||||
list->inum_inner = inum;
|
||||
if (respamiddle) list->inum_middle = inum;
|
||||
}
|
||||
|
|
|
@ -69,22 +69,19 @@ void NPairHalfRespaNsqNewton::build(NeighList *list)
|
|||
int **firstneigh = list->firstneigh;
|
||||
MyPage<int> *ipage = list->ipage;
|
||||
|
||||
NeighList *listinner = list->listinner;
|
||||
int *ilist_inner = listinner->ilist;
|
||||
int *numneigh_inner = listinner->numneigh;
|
||||
int **firstneigh_inner = listinner->firstneigh;
|
||||
MyPage<int> *ipage_inner = listinner->ipage;
|
||||
int *ilist_inner = list->ilist_inner;
|
||||
int *numneigh_inner = list->numneigh_inner;
|
||||
int **firstneigh_inner = list->firstneigh_inner;
|
||||
MyPage<int> *ipage_inner = list->ipage_inner;
|
||||
|
||||
NeighList *listmiddle;
|
||||
int *ilist_middle,*numneigh_middle,**firstneigh_middle;
|
||||
MyPage<int> *ipage_middle;
|
||||
int respamiddle = list->respamiddle;
|
||||
if (respamiddle) {
|
||||
listmiddle = list->listmiddle;
|
||||
ilist_middle = listmiddle->ilist;
|
||||
numneigh_middle = listmiddle->numneigh;
|
||||
firstneigh_middle = listmiddle->firstneigh;
|
||||
ipage_middle = listmiddle->ipage;
|
||||
ilist_middle = list->ilist_middle;
|
||||
numneigh_middle = list->numneigh_middle;
|
||||
firstneigh_middle = list->firstneigh_middle;
|
||||
ipage_middle = list->ipage_middle;
|
||||
}
|
||||
|
||||
int inum = 0;
|
||||
|
@ -200,6 +197,6 @@ void NPairHalfRespaNsqNewton::build(NeighList *list)
|
|||
}
|
||||
|
||||
list->inum = inum;
|
||||
listinner->inum = inum;
|
||||
if (respamiddle) listmiddle->inum = inum;
|
||||
list->inum_inner = inum;
|
||||
if (respamiddle) list->inum_middle = inum;
|
||||
}
|
||||
|
|
|
@ -53,28 +53,24 @@ void NPairSkipRespa::build(NeighList *list)
|
|||
int *iskip = list->iskip;
|
||||
int **ijskip = list->ijskip;
|
||||
|
||||
NeighList *listinner = list->listinner;
|
||||
int *ilist_inner = listinner->ilist;
|
||||
int *numneigh_inner = listinner->numneigh;
|
||||
int **firstneigh_inner = listinner->firstneigh;
|
||||
MyPage<int> *ipage_inner = listinner->ipage;
|
||||
int *ilist_inner = list->ilist_inner;
|
||||
int *numneigh_inner = list->numneigh_inner;
|
||||
int **firstneigh_inner = list->firstneigh_inner;
|
||||
MyPage<int> *ipage_inner = list->ipage_inner;
|
||||
int *numneigh_inner_skip = list->listskip->numneigh_inner;
|
||||
int **firstneigh_inner_skip = list->listskip->firstneigh_inner;
|
||||
|
||||
int *numneigh_inner_skip = list->listskip->listinner->numneigh;
|
||||
int **firstneigh_inner_skip = list->listskip->listinner->firstneigh;
|
||||
|
||||
NeighList *listmiddle;
|
||||
int *ilist_middle,*numneigh_middle,**firstneigh_middle;
|
||||
MyPage<int> *ipage_middle;
|
||||
int *numneigh_middle_skip,**firstneigh_middle_skip;
|
||||
int respamiddle = list->respamiddle;
|
||||
if (respamiddle) {
|
||||
listmiddle = list->listmiddle;
|
||||
ilist_middle = listmiddle->ilist;
|
||||
numneigh_middle = listmiddle->numneigh;
|
||||
firstneigh_middle = listmiddle->firstneigh;
|
||||
ipage_middle = listmiddle->ipage;
|
||||
numneigh_middle_skip = list->listskip->listmiddle->numneigh;
|
||||
firstneigh_middle_skip = list->listskip->listmiddle->firstneigh;
|
||||
ilist_middle = list->ilist_middle;
|
||||
numneigh_middle = list->numneigh_middle;
|
||||
firstneigh_middle = list->firstneigh_middle;
|
||||
ipage_middle = list->ipage_middle;
|
||||
numneigh_middle_skip = list->listskip->numneigh_middle;
|
||||
firstneigh_middle_skip = list->listskip->firstneigh_middle;
|
||||
}
|
||||
|
||||
int inum = 0;
|
||||
|
@ -164,6 +160,6 @@ void NPairSkipRespa::build(NeighList *list)
|
|||
}
|
||||
|
||||
list->inum = inum;
|
||||
listinner->inum = inum;
|
||||
if (respamiddle) listmiddle->inum = inum;
|
||||
list->inum_inner = inum;
|
||||
if (respamiddle) list->inum_middle = inum;
|
||||
}
|
||||
|
|
|
@ -92,10 +92,6 @@ class Pair : protected Pointers {
|
|||
class NeighList *list; // standard neighbor list used by most pairs
|
||||
class NeighList *listhalf; // half list used by some pairs
|
||||
class NeighList *listfull; // full list used by some pairs
|
||||
class NeighList *listhistory; // neighbor history list used by some pairs
|
||||
class NeighList *listinner; // rRESPA lists used by some pairs
|
||||
class NeighList *listmiddle;
|
||||
class NeighList *listouter;
|
||||
|
||||
int allocated; // 0/1 = whether arrays are allocated
|
||||
// public so external driver can check
|
||||
|
|
|
@ -157,10 +157,10 @@ void PairLJ96Cut::compute_inner()
|
|||
double *special_lj = force->special_lj;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
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];
|
||||
|
@ -231,10 +231,10 @@ void PairLJ96Cut::compute_middle()
|
|||
double *special_lj = force->special_lj;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
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];
|
||||
|
@ -318,10 +318,10 @@ void PairLJ96Cut::compute_outer(int eflag, int vflag)
|
|||
double *special_lj = force->special_lj;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
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];
|
||||
|
@ -487,36 +487,23 @@ void PairLJ96Cut::coeff(int narg, char **arg)
|
|||
|
||||
void PairLJ96Cut::init_style()
|
||||
{
|
||||
// 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;
|
||||
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;
|
||||
}
|
||||
irequest = neighbor->request(this,instance_me);
|
||||
|
||||
} else irequest = neighbor->request(this,instance_me);
|
||||
if (respa >= 1) {
|
||||
neighbor->requests[irequest]->respaouter = 1;
|
||||
neighbor->requests[irequest]->respainner = 1;
|
||||
}
|
||||
if (respa == 2) neighbor->requests[irequest]->respamiddle = 1;
|
||||
|
||||
// set rRESPA cutoffs
|
||||
|
||||
|
@ -526,19 +513,6 @@ void PairLJ96Cut::init_style()
|
|||
else cut_respa = NULL;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
neighbor callback to inform pair style of neighbor list to use
|
||||
regular or rRESPA
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void PairLJ96Cut::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
|
||||
------------------------------------------------------------------------- */
|
||||
|
|
|
@ -33,7 +33,6 @@ class PairLJ96Cut : public Pair {
|
|||
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 *);
|
||||
|
|
|
@ -156,10 +156,10 @@ void PairLJCut::compute_inner()
|
|||
double *special_lj = force->special_lj;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
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];
|
||||
|
@ -229,10 +229,10 @@ void PairLJCut::compute_middle()
|
|||
double *special_lj = force->special_lj;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
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];
|
||||
|
@ -315,10 +315,10 @@ void PairLJCut::compute_outer(int eflag, int vflag)
|
|||
double *special_lj = force->special_lj;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
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];
|
||||
|
@ -481,36 +481,23 @@ void PairLJCut::coeff(int narg, char **arg)
|
|||
|
||||
void PairLJCut::init_style()
|
||||
{
|
||||
// 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;
|
||||
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;
|
||||
}
|
||||
irequest = neighbor->request(this,instance_me);
|
||||
|
||||
} else irequest = neighbor->request(this,instance_me);
|
||||
if (respa >= 1) {
|
||||
neighbor->requests[irequest]->respaouter = 1;
|
||||
neighbor->requests[irequest]->respainner = 1;
|
||||
}
|
||||
if (respa == 2) neighbor->requests[irequest]->respamiddle = 1;
|
||||
|
||||
// set rRESPA cutoffs
|
||||
|
||||
|
@ -520,19 +507,6 @@ void PairLJCut::init_style()
|
|||
else cut_respa = NULL;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
neighbor callback to inform pair style of neighbor list to use
|
||||
regular or rRESPA
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void PairLJCut::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
|
||||
------------------------------------------------------------------------- */
|
||||
|
|
|
@ -32,7 +32,6 @@ class PairLJCut : public Pair {
|
|||
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 *);
|
||||
|
|
|
@ -159,10 +159,10 @@ void PairMIECut::compute_inner()
|
|||
double *special_mie = force->special_lj;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
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];
|
||||
|
@ -233,10 +233,10 @@ void PairMIECut::compute_middle()
|
|||
double *special_mie = force->special_lj;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
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];
|
||||
|
@ -320,10 +320,10 @@ void PairMIECut::compute_outer(int eflag, int vflag)
|
|||
double *special_mie = force->special_lj;
|
||||
int newton_pair = force->newton_pair;
|
||||
|
||||
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];
|
||||
|
@ -496,36 +496,23 @@ void PairMIECut::coeff(int narg, char **arg)
|
|||
|
||||
void PairMIECut::init_style()
|
||||
{
|
||||
// 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;
|
||||
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;
|
||||
}
|
||||
irequest = neighbor->request(this,instance_me);
|
||||
|
||||
} else irequest = neighbor->request(this,instance_me);
|
||||
if (respa >= 1) {
|
||||
neighbor->requests[irequest]->respaouter = 1;
|
||||
neighbor->requests[irequest]->respainner = 1;
|
||||
}
|
||||
if (respa == 2) neighbor->requests[irequest]->respamiddle = 1;
|
||||
|
||||
// set rRESPA cutoffs
|
||||
|
||||
|
@ -535,19 +522,6 @@ void PairMIECut::init_style()
|
|||
else cut_respa = NULL;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
neighbor callback to inform pair style of neighbor list to use
|
||||
regular or rRESPA
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
void PairMIECut::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
|
||||
------------------------------------------------------------------------- */
|
||||
|
|
|
@ -32,7 +32,6 @@ class PairMIECut : public Pair {
|
|||
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 *);
|
||||
|
|
|
@ -442,6 +442,7 @@ void Respa::setup(int flag)
|
|||
domain->box_too_small_check();
|
||||
modify->setup_pre_neighbor();
|
||||
neighbor->build();
|
||||
modify->setup_post_neighbor();
|
||||
neighbor->ncalls = 0;
|
||||
|
||||
// compute all forces
|
||||
|
@ -517,6 +518,7 @@ void Respa::setup_minimal(int flag)
|
|||
domain->box_too_small_check();
|
||||
modify->setup_pre_neighbor();
|
||||
neighbor->build();
|
||||
modify->setup_post_neighbor();
|
||||
neighbor->ncalls = 0;
|
||||
}
|
||||
|
||||
|
@ -668,6 +670,11 @@ void Respa::recurse(int ilevel)
|
|||
}
|
||||
neighbor->build();
|
||||
timer->stamp(Timer::NEIGH);
|
||||
if (modify->n_post_neighbor) {
|
||||
modify->post_neighbor();
|
||||
timer->stamp(Timer::MODIFY);
|
||||
}
|
||||
|
||||
} else if (ilevel == 0) {
|
||||
timer->stamp();
|
||||
comm->forward_comm();
|
||||
|
|
Loading…
Reference in New Issue