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
|
// set force to desired value on requested level, 0.0 on other levels
|
||||||
|
|
||||||
if (ilevel == ilevel_respa) post_force(vflag);
|
if (ilevel == 0) foriginal_saved[0] = foriginal_saved[1] = foriginal_saved[2] = 0.0;
|
||||||
else {
|
|
||||||
|
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;
|
Region *region = NULL;
|
||||||
if (iregion >= 0) {
|
if (iregion >= 0) {
|
||||||
region = domain->regions[iregion];
|
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++)
|
for (int i = 0; i < nlocal; i++)
|
||||||
if (mask[i] & groupbit) {
|
if (mask[i] & groupbit) {
|
||||||
if (region && !region->match(x[i][0],x[i][1],x[i][2])) continue;
|
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 (xstyle) f[i][0] = 0.0;
|
||||||
if (ystyle) f[i][1] = 0.0;
|
if (ystyle) f[i][1] = 0.0;
|
||||||
if (zstyle) f[i][2] = 0.0;
|
if (zstyle) f[i][2] = 0.0;
|
||||||
|
|||||||
@ -45,7 +45,7 @@ class FixSetForce : public Fix {
|
|||||||
char *xstr,*ystr,*zstr;
|
char *xstr,*ystr,*zstr;
|
||||||
char *idregion;
|
char *idregion;
|
||||||
int xvar,yvar,zvar,xstyle,ystyle,zstyle;
|
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 force_flag;
|
||||||
int nlevels_respa,ilevel_respa;
|
int nlevels_respa,ilevel_respa;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user