diff --git a/src/AMOEBA/amoeba_charge_transfer.cpp b/src/AMOEBA/amoeba_charge_transfer.cpp index 1d395e9924..3ab5171d93 100644 --- a/src/AMOEBA/amoeba_charge_transfer.cpp +++ b/src/AMOEBA/amoeba_charge_transfer.cpp @@ -155,12 +155,12 @@ void PairAmoeba::charge_transfer() vyz = zr * frcy; vzz = zr * frcz; - virqxfer[0] += vxx; - virqxfer[1] += vyy; - virqxfer[2] += vzz; - virqxfer[3] += vxy; - virqxfer[4] += vxz; - virqxfer[5] += vyz; + virqxfer[0] -= vxx; + virqxfer[1] -= vyy; + virqxfer[2] -= vzz; + virqxfer[3] -= vxy; + virqxfer[4] -= vxz; + virqxfer[5] -= vyz; // energy = e // virial = 6-vec vir diff --git a/src/AMOEBA/amoeba_dispersion.cpp b/src/AMOEBA/amoeba_dispersion.cpp index a3cd114ae4..1969a3bf33 100644 --- a/src/AMOEBA/amoeba_dispersion.cpp +++ b/src/AMOEBA/amoeba_dispersion.cpp @@ -219,12 +219,12 @@ void PairAmoeba::dispersion_real() vzy = zr * dedy; vzz = zr * dedz; - virdisp[0] += vxx; - virdisp[1] += vyy; - virdisp[2] += vzz; - virdisp[3] += vyx; - virdisp[4] += vzx; - virdisp[5] += vzy; + virdisp[0] -= vxx; + virdisp[1] -= vyy; + virdisp[2] -= vzz; + virdisp[3] -= vyx; + virdisp[4] -= vzx; + virdisp[5] -= vzy; // energy = e // virial = 6-vec vir @@ -418,8 +418,8 @@ void PairAmoeba::dispersion_kspace() if (me == 0) { edisp -= term; - virdisp[0] += term; - virdisp[1] += term; - virdisp[2] += term; + virdisp[0] -= term; + virdisp[1] -= term; + virdisp[2] -= term; } } diff --git a/src/AMOEBA/amoeba_hal.cpp b/src/AMOEBA/amoeba_hal.cpp index 01123251e7..561a2869a2 100644 --- a/src/AMOEBA/amoeba_hal.cpp +++ b/src/AMOEBA/amoeba_hal.cpp @@ -195,12 +195,12 @@ void PairAmoeba::hal() vzy = zr * dedy; vzz = zr * dedz; - virhal[0] += vxx; - virhal[1] += vyy; - virhal[2] += vzz; - virhal[3] += vyx; - virhal[4] += vzx; - virhal[5] += vzy; + virhal[0] -= vxx; + virhal[1] -= vyy; + virhal[2] -= vzz; + virhal[3] -= vyx; + virhal[4] -= vzx; + virhal[5] -= vzy; // energy = e // virial = 6-vec vir diff --git a/src/AMOEBA/amoeba_multipole.cpp b/src/AMOEBA/amoeba_multipole.cpp index 5f66f41deb..3e19f89233 100644 --- a/src/AMOEBA/amoeba_multipole.cpp +++ b/src/AMOEBA/amoeba_multipole.cpp @@ -533,12 +533,12 @@ void PairAmoeba::multipole_real() vyz = -0.5 * (zr*frcy+yr*frcz); vzz = -zr * frcz; - virmpole[0] += vxx; - virmpole[1] += vyy; - virmpole[2] += vzz; - virmpole[3] += vxy; - virmpole[4] += vxz; - virmpole[5] += vyz; + virmpole[0] -= vxx; + virmpole[1] -= vyy; + virmpole[2] -= vzz; + virmpole[3] -= vxy; + virmpole[4] -= vxz; + virmpole[5] -= vyz; // energy = e // virial = 6-vec vir @@ -583,12 +583,12 @@ void PairAmoeba::multipole_real() yix*fix[2] + yiy*fiy[2] + yiz*fiz[2]); vzz = zix*fix[2] + ziy*fiy[2] + ziz*fiz[2]; - virmpole[0] += vxx; - virmpole[1] += vyy; - virmpole[2] += vzz; - virmpole[3] += vxy; - virmpole[4] += vxz; - virmpole[5] += vyz; + virmpole[0] -= vxx; + virmpole[1] -= vyy; + virmpole[2] -= vzz; + virmpole[3] -= vxy; + virmpole[4] -= vxz; + virmpole[5] -= vyz; } } @@ -781,7 +781,6 @@ void PairAmoeba::multipole_kspace() for (k = 0; k < 20; k++) fphi[i][k] *= felec; } - //printf("fphi elec %e %e %e %e \n",fphi[0][0],fphi[0][1],fphi[0][2],fphi[0][3]); // convert field from fractional to Cartesian @@ -811,7 +810,6 @@ void PairAmoeba::multipole_kspace() f[i][2] -= h3; } empole += 0.5*e; - //printf("mpole_force %g %g %g \n", f[0][0], f[0][1], f[0][2]); // augment the permanent multipole virial contributions @@ -878,12 +876,12 @@ void PairAmoeba::multipole_kspace() // increment total internal virial tensor components - virmpole[0] += vxx; - virmpole[1] += vyy; - virmpole[2] += vzz; - virmpole[3] += vxy; - virmpole[4] += vxz; - virmpole[5] += vyz; + virmpole[0] -= vxx; + virmpole[1] -= vyy; + virmpole[2] -= vzz; + virmpole[3] -= vxy; + virmpole[4] -= vxz; + virmpole[5] -= vyz; // free local memory diff --git a/src/AMOEBA/amoeba_polar.cpp b/src/AMOEBA/amoeba_polar.cpp index da84053f0d..d067fd5dc0 100644 --- a/src/AMOEBA/amoeba_polar.cpp +++ b/src/AMOEBA/amoeba_polar.cpp @@ -129,12 +129,12 @@ void PairAmoeba::polar() vyz = 0.5 * (zix*fix[1] + ziy*fiy[1] + ziz*fiz[1] + yix*fix[2] + yiy*fiy[2] + yiz*fiz[2]); - virpolar[0] += vxx; - virpolar[1] += vyy; - virpolar[2] += vzz; - virpolar[3] += vxy; - virpolar[4] += vxz; - virpolar[5] += vyz; + virpolar[0] -= vxx; + virpolar[1] -= vyy; + virpolar[2] -= vzz; + virpolar[3] -= vxy; + virpolar[4] -= vxz; + virpolar[5] -= vyz; } // clean up @@ -1155,12 +1155,12 @@ void PairAmoeba::polar_real() vyz = 0.5 * (zr*frcy+yr*frcz); vzz = zr * frcz; - virpolar[0] += vxx; - virpolar[1] += vyy; - virpolar[2] += vzz; - virpolar[3] += vxy; - virpolar[4] += vxz; - virpolar[5] += vyz; + virpolar[0] -= vxx; + virpolar[1] -= vyy; + virpolar[2] -= vzz; + virpolar[3] -= vxy; + virpolar[4] -= vxz; + virpolar[5] -= vyz; // energy = e // virial = 6-vec vir @@ -1224,12 +1224,12 @@ void PairAmoeba::polar_real() vyz = 0.5 * (zix*fix[1] + ziy*fiy[1] + ziz*fiz[1] + yix*fix[2] + yiy*fiy[2] + yiz*fiz[2]); - virpolar[0] += vxx; - virpolar[1] += vyy; - virpolar[2] += vzz; - virpolar[3] += vxy; - virpolar[4] += vxz; - virpolar[5] += vyz; + virpolar[0] -= vxx; + virpolar[1] -= vyy; + virpolar[2] -= vzz; + virpolar[3] -= vxy; + virpolar[4] -= vxz; + virpolar[5] -= vyz; } } @@ -2125,12 +2125,12 @@ void PairAmoeba::polar_kspace() qgrid[k3][k2][k1][1]*qgrip[k3][k2][k1][1]; eterm = 0.5 * felec * expterm * struc2; vterm = (2.0/hsq) * (1.0-term) * eterm; - virpolar[0] += h1*h1*vterm - eterm; - virpolar[1] += h2*h2*vterm - eterm; - virpolar[2] += h3*h3*vterm - eterm; - virpolar[3] += h1*h2*vterm; - virpolar[4] += h1*h3*vterm; - virpolar[5] += h2*h3*vterm; + virpolar[0] -= h1*h1*vterm - eterm; + virpolar[1] -= h2*h2*vterm - eterm; + virpolar[2] -= h3*h3*vterm - eterm; + virpolar[3] -= h1*h2*vterm; + virpolar[4] -= h1*h3*vterm; + virpolar[5] -= h2*h3*vterm; } } @@ -2189,12 +2189,12 @@ void PairAmoeba::polar_kspace() qgrid[k3][k2][k1][1]*qgrip[k3][k2][k1][1]; eterm = 0.5 * felec * expterm * struc2; vterm = (2.0/hsq) * (1.0-term) * eterm; - virpolar[0] += h1*h1*vterm - eterm; - virpolar[1] += h2*h2*vterm - eterm; - virpolar[2] += h3*h3*vterm - eterm; - virpolar[3] += h1*h2*vterm; - virpolar[4] += h1*h3*vterm; - virpolar[5] += h2*h3*vterm; + virpolar[0] -= h1*h1*vterm - eterm; + virpolar[1] -= h2*h2*vterm - eterm; + virpolar[2] -= h3*h3*vterm - eterm; + virpolar[3] -= h1*h2*vterm; + virpolar[4] -= h1*h3*vterm; + virpolar[5] -= h2*h3*vterm; } } } @@ -2203,12 +2203,12 @@ void PairAmoeba::polar_kspace() // increment the total internal virial tensor components - virpolar[0] += vxx; - virpolar[1] += vyy; - virpolar[2] += vzz; - virpolar[3] += vxy; - virpolar[4] += vxz; - virpolar[5] += vyz; + virpolar[0] -= vxx; + virpolar[1] -= vyy; + virpolar[2] -= vzz; + virpolar[3] -= vxy; + virpolar[4] -= vxz; + virpolar[5] -= vyz; // deallocation of local arrays, some from induce diff --git a/src/AMOEBA/amoeba_repulsion.cpp b/src/AMOEBA/amoeba_repulsion.cpp index a0694aeef4..c2bd490715 100644 --- a/src/AMOEBA/amoeba_repulsion.cpp +++ b/src/AMOEBA/amoeba_repulsion.cpp @@ -361,12 +361,12 @@ void PairAmoeba::repulsion() vyz = -0.5 * (zr*frcy+yr*frcz); vzz = -zr * frcz; - virrepulse[0] += vxx; - virrepulse[1] += vyy; - virrepulse[2] += vzz; - virrepulse[3] += vxy; - virrepulse[4] += vxz; - virrepulse[5] += vyz; + virrepulse[0] -= vxx; + virrepulse[1] -= vyy; + virrepulse[2] -= vzz; + virrepulse[3] -= vxy; + virrepulse[4] -= vxz; + virrepulse[5] -= vyz; // energy = e // virial = 6-vec vir @@ -414,12 +414,12 @@ void PairAmoeba::repulsion() vyz = 0.5 * (zix*fix[1] + ziy*fiy[1] + ziz*fiz[1] + yix*fix[2] + yiy*fiy[2] + yiz*fiz[2]); - virrepulse[0] += vxx; - virrepulse[1] += vyy; - virrepulse[2] += vzz; - virrepulse[3] += vxy; - virrepulse[4] += vxz; - virrepulse[5] += vyz; + virrepulse[0] -= vxx; + virrepulse[1] -= vyy; + virrepulse[2] -= vzz; + virrepulse[3] -= vxy; + virrepulse[4] -= vxz; + virrepulse[5] -= vyz; // virial = 6-vec vir // NOTE: add tally function diff --git a/src/AMOEBA/angle_amoeba.cpp b/src/AMOEBA/angle_amoeba.cpp index 98ee1953da..bb85783b6e 100644 --- a/src/AMOEBA/angle_amoeba.cpp +++ b/src/AMOEBA/angle_amoeba.cpp @@ -416,7 +416,13 @@ void AngleAmoeba::tinker_anglep(int i1, int i2, int i3, int type, int eflag) f[i4][2] -= f4[2]; } - if (evflag) ev_tally4(i1,i2,i3,14,nlocal,newton_bond,eangle,f1,f2,f3,f4); + if (evflag) { + f1[0] = -f1[0]; f1[1] = -f1[1]; f1[2] = -f1[2]; + f2[0] = -f2[0]; f2[1] = -f2[1]; f2[2] = -f2[2]; + f3[0] = -f3[0]; f3[1] = -f3[1]; f3[2] = -f3[2]; + f4[0] = -f4[0]; f4[1] = -f4[1]; f4[2] = -f4[2]; + ev_tally4(i1,i2,i3,14,nlocal,newton_bond,eangle,f1,f2,f3,f4); + } } /* ---------------------------------------------------------------------- */ diff --git a/src/AMOEBA/fix_amoeba_pitorsion.cpp b/src/AMOEBA/fix_amoeba_pitorsion.cpp index 369c191963..eb4223e43b 100644 --- a/src/AMOEBA/fix_amoeba_pitorsion.cpp +++ b/src/AMOEBA/fix_amoeba_pitorsion.cpp @@ -555,12 +555,12 @@ void FixAmoebaPiTorsion::post_force(int vflag) vxterm = dedxid + dedxia + dedxib; vyterm = dedyid + dedyia + dedyib; vzterm = dedzid + dedzia + dedzib; - v[0] = xdc*vxterm + xcp*dedxip - xqd*dedxiq; - v[1] = ydc*vyterm + ycp*dedyip - yqd*dedyiq; - v[2] = zdc*vzterm + zcp*dedzip - zqd*dedziq; - v[3] = ydc*vxterm + ycp*dedxip - yqd*dedxiq; - v[4] = zdc*vxterm + zcp*dedxip - zqd*dedxiq; - v[5] = zdc*vyterm + zcp*dedyip - zqd*dedyiq; + v[0] = -xdc*vxterm - xcp*dedxip + xqd*dedxiq; + v[1] = -ydc*vyterm - ycp*dedyip + yqd*dedyiq; + v[2] = -zdc*vzterm - zcp*dedzip + zqd*dedziq; + v[3] = -ydc*vxterm - ycp*dedxip + yqd*dedxiq; + v[4] = -zdc*vxterm - zcp*dedxip + zqd*dedxiq; + v[5] = -zdc*vyterm - zcp*dedyip + zqd*dedyiq; ev_tally(nlist,list,6.0,e,v); } diff --git a/src/AMOEBA/improper_amoeba.cpp b/src/AMOEBA/improper_amoeba.cpp index 63409dd1ab..c985386019 100644 --- a/src/AMOEBA/improper_amoeba.cpp +++ b/src/AMOEBA/improper_amoeba.cpp @@ -227,9 +227,13 @@ void ImproperAmoeba::compute(int eflag, int vflag) f[ic][2] -= fc[2]; } - if (evflag) + if (evflag) { + fd[0] = -fd[0]; fd[1] = -fd[1]; fd[2] = -fd[2]; + fa[0] = -fa[0]; fa[1] = -fa[1]; fa[2] = -fa[2]; + fc[0] = -fc[0]; fc[1] = -fc[1]; fc[2] = -fc[2]; ev_tally(id,ib,ia,ic,nlocal,newton_bond,e,fd,fa,fc, xdb,ydb,zdb,xab,yab,zab,xic-xia,yic-yia,zic-zia); + } } }