fix r-RESPA bug in storing global total force data
This commit is contained in:
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user