fix r-RESPA bug in storing global total force data

This commit is contained in:
Axel Kohlmeyer
2020-08-10 15:46:00 -04:00
parent b92eda8ab8
commit 67af8c000e
2 changed files with 12 additions and 3 deletions

View File

@ -297,8 +297,14 @@ void FixSetForce::post_force_respa(int vflag, int ilevel, int /*iloop*/)
{
// set force to desired value on requested level, 0.0 on other levels
if (ilevel == ilevel_respa) post_force(vflag);
else {
if (ilevel == 0) foriginal_saved[0] = foriginal_saved[1] = foriginal_saved[2] = 0.0;
if (ilevel == ilevel_respa) {
post_force(vflag);
foriginal[0] += foriginal_saved[0];
foriginal[1] += foriginal_saved[1];
foriginal[2] += foriginal_saved[2];
} else {
Region *region = NULL;
if (iregion >= 0) {
region = domain->regions[iregion];
@ -313,6 +319,9 @@ void FixSetForce::post_force_respa(int vflag, int ilevel, int /*iloop*/)
for (int i = 0; i < nlocal; i++)
if (mask[i] & groupbit) {
if (region && !region->match(x[i][0],x[i][1],x[i][2])) continue;
foriginal_saved[0] += f[i][0];
foriginal_saved[1] += f[i][1];
foriginal_saved[2] += f[i][2];
if (xstyle) f[i][0] = 0.0;
if (ystyle) f[i][1] = 0.0;
if (zstyle) f[i][2] = 0.0;

View File

@ -45,7 +45,7 @@ class FixSetForce : public Fix {
char *xstr,*ystr,*zstr;
char *idregion;
int xvar,yvar,zvar,xstyle,ystyle,zstyle;
double foriginal[3],foriginal_all[3];
double foriginal[3],foriginal_all[3],foriginal_saved[3];
int force_flag;
int nlevels_respa,ilevel_respa;