| 987 |
|
F -= pref * (rdDa * rdDb) * (dv22 - 2.0*v22or) * rhat; |
| 988 |
|
Ta += pref * ( v21 * DaxDb - v22 * rdDb * rxDa); |
| 989 |
|
Tb += pref * (-v21 * DaxDb - v22 * rdDa * rxDb); |
| 990 |
– |
|
| 990 |
|
// Even if we excluded this pair from direct interactions, we |
| 991 |
|
// still have the reaction-field-mediated dipole-dipole |
| 992 |
|
// interaction: |
| 1046 |
|
trQaQb = QaQb.trace(); |
| 1047 |
|
rQaQb = rhat * QaQb; |
| 1048 |
|
QaQbr = QaQb * rhat; |
| 1049 |
< |
QaxQb = cross(Q_a, Q_b); |
| 1049 |
> |
QaxQb = mCross(Q_a, Q_b); |
| 1050 |
|
rQaQbr = dot(rQa, Qbr); |
| 1051 |
|
rQaxQbr = cross(rQa, Qbr); |
| 1052 |
|
|
| 1077 |
|
// + 4.0 * cross(rhat, QbQar) |
| 1078 |
|
|
| 1079 |
|
Tb += pref * 2.0 * cross(rhat,Qbr) * rdQar * v43; |
| 1081 |
– |
|
| 1080 |
|
} |
| 1081 |
|
} |
| 1082 |
|
|
| 1439 |
|
if (data.is_Quadrupole) { |
| 1440 |
|
Q = atom->getQuadrupole() * mPoleConverter; |
| 1441 |
|
Qk = Q * kVec; |
| 1442 |
< |
qk = dot(Qk, kVec); |
| 1443 |
< |
qxk[i] = cross(Qk, kVec); |
| 1442 |
> |
qk = dot(kVec, Qk); |
| 1443 |
> |
qxk[i] = cross(kVec, Qk); |
| 1444 |
|
qkc[i] = qk * ckr[i]; |
| 1445 |
|
qks[i] = qk * skr[i]; |
| 1446 |
|
} |
| 1499 |
|
RealType qtrq1 = AK[kk]*(skr[i]*(ckcs-dkss-qkcs) |
| 1500 |
|
-ckr[i]*(ckss+dkcs-qkss)); |
| 1501 |
|
RealType qtrq2 = 2.0*AK[kk]*(ckr[i]*(ckcs-dkss-qkcs) |
| 1502 |
< |
+skr[i]*(ckss+dkcs-qkss)); |
| 1502 |
> |
+skr[i]*(ckss+dkcs-qkss)); |
| 1503 |
|
|
| 1504 |
|
atom->addFrc( 4.0 * rvol * qfrc * kVec ); |
| 1505 |
|
|