Commit 6702f65f authored by Steven Vandenbrande's avatar Steven Vandenbrande
Browse files

Fix mistake in virial calculation for improper_fourier and improper_umbrella

parent a5ce656c
Loading
Loading
Loading
Loading
+22 −22
Original line number Original line Diff line number Diff line
@@ -189,17 +189,17 @@ void ImproperUmbrella::compute(int eflag, int vflag)
    dahy = ary-c*hry;
    dahy = ary-c*hry;
    dahz = arz-c*hrz;
    dahz = arz-c*hrz;


    f2[0] = (dhay*vb1z - dhaz*vb1y)*rar;
    f2[0] = (dhay*vb1z - dhaz*vb1y)*rar*a;
    f2[1] = (dhaz*vb1x - dhax*vb1z)*rar;
    f2[1] = (dhaz*vb1x - dhax*vb1z)*rar*a;
    f2[2] = (dhax*vb1y - dhay*vb1x)*rar;
    f2[2] = (dhax*vb1y - dhay*vb1x)*rar*a;


    f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar;
    f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar*a;
    f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar;
    f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar*a;
    f3[2] = (-dhax*vb2y + dhay*vb2x)*rar;
    f3[2] = (-dhax*vb2y + dhay*vb2x)*rar*a;


    f4[0] = dahx*rhr;
    f4[0] = dahx*rhr*a;
    f4[1] = dahy*rhr;
    f4[1] = dahy*rhr*a;
    f4[2] = dahz*rhr;
    f4[2] = dahz*rhr*a;


    f1[0] = -(f2[0] + f3[0] + f4[0]);
    f1[0] = -(f2[0] + f3[0] + f4[0]);
    f1[1] = -(f2[1] + f3[1] + f4[1]);
    f1[1] = -(f2[1] + f3[1] + f4[1]);
@@ -208,27 +208,27 @@ void ImproperUmbrella::compute(int eflag, int vflag)
    // apply force to each of 4 atoms
    // apply force to each of 4 atoms


    if (newton_bond || i1 < nlocal) {
    if (newton_bond || i1 < nlocal) {
      f[i1][0] += f1[0]*a;
      f[i1][0] += f1[0];
      f[i1][1] += f1[1]*a;
      f[i1][1] += f1[1];
      f[i1][2] += f1[2]*a;
      f[i1][2] += f1[2];
    }
    }


    if (newton_bond || i2 < nlocal) {
    if (newton_bond || i2 < nlocal) {
      f[i2][0] += f3[0]*a;
      f[i2][0] += f3[0];
      f[i2][1] += f3[1]*a;
      f[i2][1] += f3[1];
      f[i2][2] += f3[2]*a;
      f[i2][2] += f3[2];
    }
    }


    if (newton_bond || i3 < nlocal) {
    if (newton_bond || i3 < nlocal) {
      f[i3][0] += f2[0]*a;
      f[i3][0] += f2[0];
      f[i3][1] += f2[1]*a;
      f[i3][1] += f2[1];
      f[i3][2] += f2[2]*a;
      f[i3][2] += f2[2];
    }
    }


    if (newton_bond || i4 < nlocal) {
    if (newton_bond || i4 < nlocal) {
      f[i4][0] += f4[0]*a;
      f[i4][0] += f4[0];
      f[i4][1] += f4[1]*a;
      f[i4][1] += f4[1];
      f[i4][2] += f4[2]*a;
      f[i4][2] += f4[2];
    }
    }


    if (evflag) {
    if (evflag) {
@@ -247,7 +247,7 @@ void ImproperUmbrella::compute(int eflag, int vflag)
      vb3y = x[i4][1] - x[i3][1];
      vb3y = x[i4][1] - x[i3][1];
      vb3z = x[i4][2] - x[i3][2];
      vb3z = x[i4][2] - x[i3][2];


      ev_tally(i1,i2,i3,i4,nlocal,newton_bond,eimproper,f1,f3,f4,
      ev_tally(i1,i2,i3,i4,nlocal,newton_bond,eimproper,f1,f2,f4,
               vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z);
               vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z);
    }
    }
  }
  }
+23 −23
Original line number Original line Diff line number Diff line
@@ -206,17 +206,17 @@ void ImproperFourier::addone(const int &i1,const int &i2,const int &i3,const int
  dahy = ary-c*hry;
  dahy = ary-c*hry;
  dahz = arz-c*hrz;
  dahz = arz-c*hrz;


  f2[0] = (dhay*vb1z - dhaz*vb1y)*rar;
  f2[0] = (dhay*vb1z - dhaz*vb1y)*rar*a;
  f2[1] = (dhaz*vb1x - dhax*vb1z)*rar;
  f2[1] = (dhaz*vb1x - dhax*vb1z)*rar*a;
  f2[2] = (dhax*vb1y - dhay*vb1x)*rar;
  f2[2] = (dhax*vb1y - dhay*vb1x)*rar*a;


  f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar;
  f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar*a;
  f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar;
  f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar*a;
  f3[2] = (-dhax*vb2y + dhay*vb2x)*rar;
  f3[2] = (-dhax*vb2y + dhay*vb2x)*rar*a;


  f4[0] = dahx*rhr;
  f4[0] = dahx*rhr*a;
  f4[1] = dahy*rhr;
  f4[1] = dahy*rhr*a;
  f4[2] = dahz*rhr;
  f4[2] = dahz*rhr*a;


  f1[0] = -(f2[0] + f3[0] + f4[0]);
  f1[0] = -(f2[0] + f3[0] + f4[0]);
  f1[1] = -(f2[1] + f3[1] + f4[1]);
  f1[1] = -(f2[1] + f3[1] + f4[1]);
@@ -225,32 +225,32 @@ void ImproperFourier::addone(const int &i1,const int &i2,const int &i3,const int
  // apply force to each of 4 atoms
  // apply force to each of 4 atoms


  if (newton_bond || i1 < nlocal) {
  if (newton_bond || i1 < nlocal) {
    f[i1][0] += f1[0]*a;
    f[i1][0] += f1[0];
    f[i1][1] += f1[1]*a;
    f[i1][1] += f1[1];
    f[i1][2] += f1[2]*a;
    f[i1][2] += f1[2];
  }
  }


  if (newton_bond || i2 < nlocal) {
  if (newton_bond || i2 < nlocal) {
    f[i2][0] += f3[0]*a;
    f[i2][0] += f3[0];
    f[i2][1] += f3[1]*a;
    f[i2][1] += f3[1];
    f[i2][2] += f3[2]*a;
    f[i2][2] += f3[2];
  }
  }


  if (newton_bond || i3 < nlocal) {
  if (newton_bond || i3 < nlocal) {
    f[i3][0] += f2[0]*a;
    f[i3][0] += f2[0];
    f[i3][1] += f2[1]*a;
    f[i3][1] += f2[1];
    f[i3][2] += f2[2]*a;
    f[i3][2] += f2[2];
  }
  }


  if (newton_bond || i4 < nlocal) {
  if (newton_bond || i4 < nlocal) {
    f[i4][0] += f4[0]*a;
    f[i4][0] += f4[0];
    f[i4][1] += f4[1]*a;
    f[i4][1] += f4[1];
    f[i4][2] += f4[2]*a;
    f[i4][2] += f4[2];
  }
  }


  if (evflag)
  if (evflag)
    ev_tally(i1,i2,i3,i4,nlocal,newton_bond,eimproper,f1,f3,f4,
      ev_tally(i1,i2,i3,i4,nlocal,newton_bond,eimproper,f1,f2,f4,
             vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z);
               -vb1x,-vb1y,-vb1z,vb2x-vb1x,vb2y-vb1y,vb2z-vb1z,vb3x-vb2x,vb3y-vb2y,vb3z-vb2z);
}
}


/* ---------------------------------------------------------------------- */
/* ---------------------------------------------------------------------- */
+24 −23
Original line number Original line Diff line number Diff line
@@ -239,17 +239,17 @@ void ImproperFourierOMP::add1_thr(const int i1,const int i2,
  dahy = ary-c*hry;
  dahy = ary-c*hry;
  dahz = arz-c*hrz;
  dahz = arz-c*hrz;


  f2[0] = (dhay*vb1z - dhaz*vb1y)*rar;
  f2[0] = (dhay*vb1z - dhaz*vb1y)*rar*a;
  f2[1] = (dhaz*vb1x - dhax*vb1z)*rar;
  f2[1] = (dhaz*vb1x - dhax*vb1z)*rar*a;
  f2[2] = (dhax*vb1y - dhay*vb1x)*rar;
  f2[2] = (dhax*vb1y - dhay*vb1x)*rar*a;


  f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar;
  f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar*a;
  f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar;
  f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar*a;
  f3[2] = (-dhax*vb2y + dhay*vb2x)*rar;
  f3[2] = (-dhax*vb2y + dhay*vb2x)*rar*a;


  f4[0] = dahx*rhr;
  f4[0] = dahx*rhr*a;
  f4[1] = dahy*rhr;
  f4[1] = dahy*rhr*a;
  f4[2] = dahz*rhr;
  f4[2] = dahz*rhr*a;


  f1[0] = -(f2[0] + f3[0] + f4[0]);
  f1[0] = -(f2[0] + f3[0] + f4[0]);
  f1[1] = -(f2[1] + f3[1] + f4[1]);
  f1[1] = -(f2[1] + f3[1] + f4[1]);
@@ -258,30 +258,31 @@ void ImproperFourierOMP::add1_thr(const int i1,const int i2,
  // apply force to each of 4 atoms
  // apply force to each of 4 atoms


  if (NEWTON_BOND || i1 < nlocal) {
  if (NEWTON_BOND || i1 < nlocal) {
    f[i1][0] += f1[0]*a;
    f[i1][0] += f1[0];
    f[i1][1] += f1[1]*a;
    f[i1][1] += f1[1];
    f[i1][2] += f1[2]*a;
    f[i1][2] += f1[2];
  }
  }


  if (NEWTON_BOND || i2 < nlocal) {
  if (NEWTON_BOND || i2 < nlocal) {
    f[i2][0] += f3[0]*a;
    f[i2][0] += f3[0];
    f[i2][1] += f3[1]*a;
    f[i2][1] += f3[1];
    f[i2][2] += f3[2]*a;
    f[i2][2] += f3[2];
  }
  }


  if (NEWTON_BOND || i3 < nlocal) {
  if (NEWTON_BOND || i3 < nlocal) {
    f[i3][0] += f2[0]*a;
    f[i3][0] += f2[0];
    f[i3][1] += f2[1]*a;
    f[i3][1] += f2[1];
    f[i3][2] += f2[2]*a;
    f[i3][2] += f2[2];
  }
  }


  if (NEWTON_BOND || i4 < nlocal) {
  if (NEWTON_BOND || i4 < nlocal) {
    f[i4][0] += f4[0]*a;
    f[i4][0] += f4[0];
    f[i4][1] += f4[1]*a;
    f[i4][1] += f4[1];
    f[i4][2] += f4[2]*a;
    f[i4][2] += f4[2];
  }
  }


  if (EVFLAG)
  if (EVFLAG)
    ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,eimproper,f1,f3,f4,
    ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,eimproper,f1,f2,f4,
                 vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,thr);
                 -vb1x,-vb1y,-vb1z,vb2x-vb1x,vb2y-vb1y,vb2z-vb1z,vb3x-vb2x,vb3y-vb2y,vb3z-vb2z,thr);

}
}
+22 −22
Original line number Original line Diff line number Diff line
@@ -212,17 +212,17 @@ void ImproperUmbrellaOMP::eval(int nfrom, int nto, ThrData * const thr)
    dahy = ary-c*hry;
    dahy = ary-c*hry;
    dahz = arz-c*hrz;
    dahz = arz-c*hrz;


    f2[0] = (dhay*vb1z - dhaz*vb1y)*rar;
    f2[0] = (dhay*vb1z - dhaz*vb1y)*rar*a;
    f2[1] = (dhaz*vb1x - dhax*vb1z)*rar;
    f2[1] = (dhaz*vb1x - dhax*vb1z)*rar*a;
    f2[2] = (dhax*vb1y - dhay*vb1x)*rar;
    f2[2] = (dhax*vb1y - dhay*vb1x)*rar*a;


    f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar;
    f3[0] = (-dhay*vb2z + dhaz*vb2y)*rar*a;
    f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar;
    f3[1] = (-dhaz*vb2x + dhax*vb2z)*rar*a;
    f3[2] = (-dhax*vb2y + dhay*vb2x)*rar;
    f3[2] = (-dhax*vb2y + dhay*vb2x)*rar*a;


    f4[0] = dahx*rhr;
    f4[0] = dahx*rhr*a;
    f4[1] = dahy*rhr;
    f4[1] = dahy*rhr*a;
    f4[2] = dahz*rhr;
    f4[2] = dahz*rhr*a;


    f1[0] = -(f2[0] + f3[0] + f4[0]);
    f1[0] = -(f2[0] + f3[0] + f4[0]);
    f1[1] = -(f2[1] + f3[1] + f4[1]);
    f1[1] = -(f2[1] + f3[1] + f4[1]);
@@ -231,27 +231,27 @@ void ImproperUmbrellaOMP::eval(int nfrom, int nto, ThrData * const thr)
    // apply force to each of 4 atoms
    // apply force to each of 4 atoms


    if (NEWTON_BOND || i1 < nlocal) {
    if (NEWTON_BOND || i1 < nlocal) {
      f[i1].x += f1[0]*a;
      f[i1].x += f1[0];
      f[i1].y += f1[1]*a;
      f[i1].y += f1[1];
      f[i1].z += f1[2]*a;
      f[i1].z += f1[2];
    }
    }


    if (NEWTON_BOND || i2 < nlocal) {
    if (NEWTON_BOND || i2 < nlocal) {
      f[i2].x += f3[0]*a;
      f[i2].x += f3[0];
      f[i2].y += f3[1]*a;
      f[i2].y += f3[1];
      f[i2].z += f3[2]*a;
      f[i2].z += f3[2];
    }
    }


    if (NEWTON_BOND || i3 < nlocal) {
    if (NEWTON_BOND || i3 < nlocal) {
      f[i3].x += f2[0]*a;
      f[i3].x += f2[0];
      f[i3].y += f2[1]*a;
      f[i3].y += f2[1];
      f[i3].z += f2[2]*a;
      f[i3].z += f2[2];
    }
    }


    if (NEWTON_BOND || i4 < nlocal) {
    if (NEWTON_BOND || i4 < nlocal) {
      f[i4].x += f4[0]*a;
      f[i4].x += f4[0];
      f[i4].y += f4[1]*a;
      f[i4].y += f4[1];
      f[i4].z += f4[2]*a;
      f[i4].z += f4[2];
    }
    }


    if (EVFLAG) {
    if (EVFLAG) {
@@ -270,7 +270,7 @@ void ImproperUmbrellaOMP::eval(int nfrom, int nto, ThrData * const thr)
      vb3y = x[i4].y - x[i3].y;
      vb3y = x[i4].y - x[i3].y;
      vb3z = x[i4].z - x[i3].z;
      vb3z = x[i4].z - x[i3].z;


      ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,eimproper,f1,f3,f4,
      ev_tally_thr(this,i1,i2,i3,i4,nlocal,NEWTON_BOND,eimproper,f1,f2,f4,
                   vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,thr);
                   vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,thr);
    }
    }
  }
  }