diff --git a/src/fix_npt_sphere.cpp b/src/fix_npt_sphere.cpp index bdeb0a5ee7..7d1f231058 100644 --- a/src/fix_npt_sphere.cpp +++ b/src/fix_npt_sphere.cpp @@ -157,7 +157,7 @@ void FixNPTSphere::initial_integrate(int vflag) int ntypes = atom->ntypes; double **shape = atom->shape; for (int i = 1; i <= ntypes; i++) - dttype[i] = dtfrotate / (0.25*shape[i][0]*shape[i][0]*mass[i]); + dttype[i] = dtfrotate / (shape[i][0]*shape[i][0]*mass[i]); // update angular momentum by 1/2 step // update quaternion a full step via Richardson iteration @@ -206,7 +206,7 @@ void FixNPTSphere::final_integrate() int ntypes = atom->ntypes; double **shape = atom->shape; for (int i = 1; i <= ntypes; i++) - dttype[i] = dtfrotate / (0.25*shape[i][0]*shape[i][0]*mass[i]); + dttype[i] = dtfrotate / (shape[i][0]*shape[i][0]*mass[i]); if (which == NOBIAS) { for (i = 0; i < nlocal; i++) { diff --git a/src/fix_nve_sphere.cpp b/src/fix_nve_sphere.cpp index a049332e75..41650c3ad3 100644 --- a/src/fix_nve_sphere.cpp +++ b/src/fix_nve_sphere.cpp @@ -131,7 +131,7 @@ void FixNVESphere::initial_integrate(int vflag) double **shape = atom->shape; int ntypes = atom->ntypes; for (int i = 1; i <= ntypes; i++) - dttype[i] = dtfrotate / (0.25*shape[i][0]*shape[i][0]*mass[i]); + dttype[i] = dtfrotate / (shape[i][0]*shape[i][0]*mass[i]); } // update v,x,omega for all particles @@ -225,7 +225,7 @@ void FixNVESphere::final_integrate() double **shape = atom->shape; int ntypes = atom->ntypes; for (int i = 1; i <= ntypes; i++) - dttype[i] = dtfrotate / (0.25*shape[i][0]*shape[i][0]*mass[i]); + dttype[i] = dtfrotate / (shape[i][0]*shape[i][0]*mass[i]); } if (mass) { diff --git a/src/fix_nvt_sphere.cpp b/src/fix_nvt_sphere.cpp index b86d27ee85..4c2b753527 100644 --- a/src/fix_nvt_sphere.cpp +++ b/src/fix_nvt_sphere.cpp @@ -102,7 +102,7 @@ void FixNVTSphere::initial_integrate(int vflag) int ntypes = atom->ntypes; double **shape = atom->shape; for (int i = 1; i <= ntypes; i++) - dttype[i] = dtfrotate / (0.25*shape[i][0]*shape[i][0]*mass[i]); + dttype[i] = dtfrotate / (shape[i][0]*shape[i][0]*mass[i]); if (which == NOBIAS) { for (int i = 0; i < nlocal; i++) { @@ -173,7 +173,7 @@ void FixNVTSphere::final_integrate() int ntypes = atom->ntypes; double **shape = atom->shape; for (int i = 1; i <= ntypes; i++) - dttype[i] = dtfrotate / (0.25*shape[i][0]*shape[i][0]*mass[i]); + dttype[i] = dtfrotate / (shape[i][0]*shape[i][0]*mass[i]); if (which == NOBIAS) { for (int i = 0; i < nlocal; i++) { diff --git a/src/pair.cpp b/src/pair.cpp index 9bb99bea32..9d4a2ea94d 100644 --- a/src/pair.cpp +++ b/src/pair.cpp @@ -699,17 +699,43 @@ void Pair::virial_compute() { double **x = atom->x; double **f = atom->f; - int nall = atom->nlocal + atom->nghost; - // sum over own & ghost atoms + // sum over force on all particles including ghosts - for (int i = 0; i < nall; i++) { - virial[0] += f[i][0]*x[i][0]; - virial[1] += f[i][1]*x[i][1]; - virial[2] += f[i][2]*x[i][2]; - virial[3] += f[i][1]*x[i][0]; - virial[4] += f[i][2]*x[i][0]; - virial[5] += f[i][2]*x[i][1]; + if (neighbor->includegroup == 0) { + int nall = atom->nlocal + atom->nghost; + for (int i = 0; i < nall; i++) { + virial[0] += f[i][0]*x[i][0]; + virial[1] += f[i][1]*x[i][1]; + virial[2] += f[i][2]*x[i][2]; + virial[3] += f[i][1]*x[i][0]; + virial[4] += f[i][2]*x[i][0]; + virial[5] += f[i][2]*x[i][1]; + } + + // neighbor includegroup flag is set + // sum over force on initial nfirst particles and ghosts + + } else { + int nall = atom->nfirst; + for (int i = 0; i < nall; i++) { + virial[0] += f[i][0]*x[i][0]; + virial[1] += f[i][1]*x[i][1]; + virial[2] += f[i][2]*x[i][2]; + virial[3] += f[i][1]*x[i][0]; + virial[4] += f[i][2]*x[i][0]; + virial[5] += f[i][2]*x[i][1]; + } + + nall = atom->nlocal + atom->nghost; + for (int i = atom->nlocal; i < nall; i++) { + virial[0] += f[i][0]*x[i][0]; + virial[1] += f[i][1]*x[i][1]; + virial[2] += f[i][2]*x[i][2]; + virial[3] += f[i][1]*x[i][0]; + virial[4] += f[i][2]*x[i][0]; + virial[5] += f[i][2]*x[i][1]; + } } }