add another small optimization
This commit is contained in:
@ -103,6 +103,7 @@ void PairLJImprovedCut::compute(int eflag, int vflag)
|
|||||||
double pow_rx_n_x, pow_rx_gamma;
|
double pow_rx_n_x, pow_rx_gamma;
|
||||||
double filj1, filj2, filj3, filj4, filj5, filj6, forceilj;
|
double filj1, filj2, filj3, filj4, filj5, filj6, forceilj;
|
||||||
double ilj1, ilj2;
|
double ilj1, ilj2;
|
||||||
|
double fxtmp, fytmp, fztmp;
|
||||||
|
|
||||||
evdwl = 0.0;
|
evdwl = 0.0;
|
||||||
ev_init(eflag, vflag);
|
ev_init(eflag, vflag);
|
||||||
@ -129,6 +130,7 @@ void PairLJImprovedCut::compute(int eflag, int vflag)
|
|||||||
itype = type[i];
|
itype = type[i];
|
||||||
jlist = firstneigh[i];
|
jlist = firstneigh[i];
|
||||||
jnum = numneigh[i];
|
jnum = numneigh[i];
|
||||||
|
fxtmp = fytmp = fztmp = 0.0;
|
||||||
|
|
||||||
for (jj = 0; jj < jnum; jj++) {
|
for (jj = 0; jj < jnum; jj++) {
|
||||||
j = jlist[jj];
|
j = jlist[jj];
|
||||||
@ -170,9 +172,9 @@ void PairLJImprovedCut::compute(int eflag, int vflag)
|
|||||||
forceilj = -epsilon[itype][jtype] * (filj1 + filj2 + filj3 + filj4 + filj5 + filj6);
|
forceilj = -epsilon[itype][jtype] * (filj1 + filj2 + filj3 + filj4 + filj5 + filj6);
|
||||||
fpair = factor_lj * forceilj / r; // F_x = -x/r * dV/dr (chain rule)
|
fpair = factor_lj * forceilj / r; // F_x = -x/r * dV/dr (chain rule)
|
||||||
|
|
||||||
f[i][0] += delx * fpair;
|
fxtmp += delx * fpair;
|
||||||
f[i][1] += dely * fpair;
|
fytmp += dely * fpair;
|
||||||
f[i][2] += delz * fpair;
|
fztmp += delz * fpair;
|
||||||
if (newton_pair || j < nlocal) {
|
if (newton_pair || j < nlocal) {
|
||||||
f[j][0] -= delx * fpair;
|
f[j][0] -= delx * fpair;
|
||||||
f[j][1] -= dely * fpair;
|
f[j][1] -= dely * fpair;
|
||||||
@ -192,8 +194,10 @@ void PairLJImprovedCut::compute(int eflag, int vflag)
|
|||||||
if (evflag) ev_tally(i, j, nlocal, newton_pair, evdwl, 0.0, fpair, delx, dely, delz);
|
if (evflag) ev_tally(i, j, nlocal, newton_pair, evdwl, 0.0, fpair, delx, dely, delz);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
f[i][0] += fxtmp;
|
||||||
|
f[i][1] += fytmp;
|
||||||
|
f[i][2] += fztmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vflag_fdotr) virial_fdotr_compute();
|
if (vflag_fdotr) virial_fdotr_compute();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,6 +216,7 @@ void PairLJImprovedCut::compute_inner()
|
|||||||
double pow_rx_n_x, pow_rx_gamma;
|
double pow_rx_n_x, pow_rx_gamma;
|
||||||
double filj1, filj2, filj3, filj4, filj5, filj6, forceilj;
|
double filj1, filj2, filj3, filj4, filj5, filj6, forceilj;
|
||||||
double ilj1, ilj2;
|
double ilj1, ilj2;
|
||||||
|
double fxtmp, fytmp, fztmp;
|
||||||
|
|
||||||
double **x = atom->x;
|
double **x = atom->x;
|
||||||
double **f = atom->f;
|
double **f = atom->f;
|
||||||
@ -242,6 +247,7 @@ void PairLJImprovedCut::compute_inner()
|
|||||||
itype = type[i];
|
itype = type[i];
|
||||||
jlist = firstneigh[i];
|
jlist = firstneigh[i];
|
||||||
jnum = numneigh[i];
|
jnum = numneigh[i];
|
||||||
|
fxtmp = fytmp = fztmp = 0.0;
|
||||||
|
|
||||||
for (jj = 0; jj < jnum; jj++) {
|
for (jj = 0; jj < jnum; jj++) {
|
||||||
j = jlist[jj];
|
j = jlist[jj];
|
||||||
@ -287,9 +293,9 @@ void PairLJImprovedCut::compute_inner()
|
|||||||
fpair *= 1.0 - rsw * rsw * (3.0 - 2.0 * rsw);
|
fpair *= 1.0 - rsw * rsw * (3.0 - 2.0 * rsw);
|
||||||
}
|
}
|
||||||
|
|
||||||
f[i][0] += delx * fpair;
|
fxtmp += delx * fpair;
|
||||||
f[i][1] += dely * fpair;
|
fytmp += dely * fpair;
|
||||||
f[i][2] += delz * fpair;
|
fztmp += delz * fpair;
|
||||||
if (newton_pair || j < nlocal) {
|
if (newton_pair || j < nlocal) {
|
||||||
f[j][0] -= delx * fpair;
|
f[j][0] -= delx * fpair;
|
||||||
f[j][1] -= dely * fpair;
|
f[j][1] -= dely * fpair;
|
||||||
@ -297,6 +303,9 @@ void PairLJImprovedCut::compute_inner()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
f[i][0] += fxtmp;
|
||||||
|
f[i][1] += fytmp;
|
||||||
|
f[i][2] += fztmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -314,6 +323,7 @@ void PairLJImprovedCut::compute_middle()
|
|||||||
double pow_rx_n_x, pow_rx_gamma;
|
double pow_rx_n_x, pow_rx_gamma;
|
||||||
double filj1, filj2, filj3, filj4, filj5, filj6, forceilj;
|
double filj1, filj2, filj3, filj4, filj5, filj6, forceilj;
|
||||||
double ilj1, ilj2;
|
double ilj1, ilj2;
|
||||||
|
double fxtmp, fytmp, fztmp;
|
||||||
|
|
||||||
double **x = atom->x;
|
double **x = atom->x;
|
||||||
double **f = atom->f;
|
double **f = atom->f;
|
||||||
@ -349,6 +359,7 @@ void PairLJImprovedCut::compute_middle()
|
|||||||
itype = type[i];
|
itype = type[i];
|
||||||
jlist = firstneigh[i];
|
jlist = firstneigh[i];
|
||||||
jnum = numneigh[i];
|
jnum = numneigh[i];
|
||||||
|
fxtmp = fytmp = fztmp = 0.0;
|
||||||
|
|
||||||
for (jj = 0; jj < jnum; jj++) {
|
for (jj = 0; jj < jnum; jj++) {
|
||||||
j = jlist[jj];
|
j = jlist[jj];
|
||||||
@ -397,9 +408,9 @@ void PairLJImprovedCut::compute_middle()
|
|||||||
fpair *= 1.0 + rsw * rsw * (2.0 * rsw - 3.0);
|
fpair *= 1.0 + rsw * rsw * (2.0 * rsw - 3.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
f[i][0] += delx * fpair;
|
fxtmp += delx * fpair;
|
||||||
f[i][1] += dely * fpair;
|
fytmp += dely * fpair;
|
||||||
f[i][2] += delz * fpair;
|
fztmp += delz * fpair;
|
||||||
if (newton_pair || j < nlocal) {
|
if (newton_pair || j < nlocal) {
|
||||||
f[j][0] -= delx * fpair;
|
f[j][0] -= delx * fpair;
|
||||||
f[j][1] -= dely * fpair;
|
f[j][1] -= dely * fpair;
|
||||||
@ -407,6 +418,9 @@ void PairLJImprovedCut::compute_middle()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
f[i][0] += fxtmp;
|
||||||
|
f[i][1] += fytmp;
|
||||||
|
f[i][2] += fztmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -424,6 +438,8 @@ void PairLJImprovedCut::compute_outer(int eflag, int vflag)
|
|||||||
double pow_rx_n_x, pow_rx_gamma;
|
double pow_rx_n_x, pow_rx_gamma;
|
||||||
double filj1, filj2, filj3, filj4, filj5, filj6, forceilj;
|
double filj1, filj2, filj3, filj4, filj5, filj6, forceilj;
|
||||||
double ilj1, ilj2;
|
double ilj1, ilj2;
|
||||||
|
double fxtmp, fytmp, fztmp;
|
||||||
|
|
||||||
evdwl = 0.0;
|
evdwl = 0.0;
|
||||||
ev_init(eflag, vflag);
|
ev_init(eflag, vflag);
|
||||||
|
|
||||||
@ -456,6 +472,7 @@ void PairLJImprovedCut::compute_outer(int eflag, int vflag)
|
|||||||
itype = type[i];
|
itype = type[i];
|
||||||
jlist = firstneigh[i];
|
jlist = firstneigh[i];
|
||||||
jnum = numneigh[i];
|
jnum = numneigh[i];
|
||||||
|
fxtmp = fytmp = fztmp = 0.0;
|
||||||
|
|
||||||
for (jj = 0; jj < jnum; jj++) {
|
for (jj = 0; jj < jnum; jj++) {
|
||||||
j = jlist[jj];
|
j = jlist[jj];
|
||||||
@ -502,9 +519,9 @@ void PairLJImprovedCut::compute_outer(int eflag, int vflag)
|
|||||||
fpair *= rsw * rsw * (3.0 - 2.0 * rsw);
|
fpair *= rsw * rsw * (3.0 - 2.0 * rsw);
|
||||||
}
|
}
|
||||||
|
|
||||||
f[i][0] += delx * fpair;
|
fxtmp += delx * fpair;
|
||||||
f[i][1] += dely * fpair;
|
fytmp += dely * fpair;
|
||||||
f[i][2] += delz * fpair;
|
fztmp += delz * fpair;
|
||||||
if (newton_pair || j < nlocal) {
|
if (newton_pair || j < nlocal) {
|
||||||
f[j][0] -= delx * fpair;
|
f[j][0] -= delx * fpair;
|
||||||
f[j][1] -= dely * fpair;
|
f[j][1] -= dely * fpair;
|
||||||
@ -562,6 +579,9 @@ void PairLJImprovedCut::compute_outer(int eflag, int vflag)
|
|||||||
if (evflag) ev_tally(i, j, nlocal, newton_pair, evdwl, 0.0, fpair, delx, dely, delz);
|
if (evflag) ev_tally(i, j, nlocal, newton_pair, evdwl, 0.0, fpair, delx, dely, delz);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
f[i][0] += fxtmp;
|
||||||
|
f[i][1] += fytmp;
|
||||||
|
f[i][2] += fztmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user