331 |
|
// sticky power has no w' function: |
332 |
|
w = frac1 * wi * wi2 + frac2*wi + frac1*wj*wj2 + frac2*wj + v0p; |
333 |
|
wp = 0.0; |
334 |
< |
dwi = frac1*3.0*wi2*dwi + frac2*dwi; |
335 |
< |
dwj = frac1*3.0*wj2*dwi + frac2*dwi; |
334 |
> |
dwi = frac1*RealType(3.0)*wi2*dwi + frac2*dwi; |
335 |
> |
dwj = frac1*RealType(3.0)*wj2*dwi + frac2*dwi; |
336 |
|
dwip = V3Zero; |
337 |
|
dwjp = V3Zero; |
338 |
< |
dwidu = frac1*3.0*wi2*dwidu + frac2*dwidu; |
339 |
< |
dwidu = frac1*3.0*wj2*dwjdu + frac2*dwjdu; |
338 |
> |
dwidu = frac1*RealType(3.0)*wi2*dwidu + frac2*dwidu; |
339 |
> |
dwidu = frac1*RealType(3.0)*wj2*dwjdu + frac2*dwjdu; |
340 |
|
dwipdu = V3Zero; |
341 |
|
dwjpdu = V3Zero; |
342 |
|
sp = 0.0; |
343 |
|
dspdr = 0.0; |
344 |
|
} |
345 |
|
|
346 |
< |
*(idat.vpair) += 0.5*(v0*s*w + v0p*sp*wp); |
347 |
< |
(*(idat.pot))[HYDROGENBONDING_FAMILY] += 0.5*(v0*s*w + v0p*sp*wp)* *(idat.sw) ; |
346 |
> |
*(idat.vpair) += RealType(0.5)*(v0*s*w + v0p*sp*wp); |
347 |
> |
(*(idat.pot))[HYDROGENBONDING_FAMILY] += RealType(0.5)*(v0*s*w + v0p*sp*wp)* *(idat.sw) ; |
348 |
|
|
349 |
|
// do the torques first since they are easy: |
350 |
|
// remember that these are still in the body-fixed axes |
351 |
|
|
352 |
< |
Vector3d ti = 0.5* *(idat.sw) *(v0*s*dwidu + v0p*sp*dwipdu); |
353 |
< |
Vector3d tj = 0.5* *(idat.sw) *(v0*s*dwjdu + v0p*sp*dwjpdu); |
352 |
> |
Vector3d ti = RealType(0.5)* *(idat.sw) *(v0*s*dwidu + v0p*sp*dwipdu); |
353 |
> |
Vector3d tj = RealType(0.5)* *(idat.sw) *(v0*s*dwjdu + v0p*sp*dwjpdu); |
354 |
|
|
355 |
|
// go back to lab frame using transpose of rotation matrix: |
356 |
|
|
369 |
|
|
370 |
|
// now assemble these with the radial-only terms: |
371 |
|
|
372 |
< |
*(idat.f1) += 0.5 * ((v0*dsdr*w + v0p*dspdr*wp) * *(idat.d) / |
373 |
< |
*(idat.rij) + fii - fjj); |
372 |
> |
*(idat.f1) += RealType(0.5) * ((v0*dsdr*w + v0p*dspdr*wp) * *(idat.d) / |
373 |
> |
*(idat.rij) + fii - fjj); |
374 |
|
|
375 |
|
} |
376 |
|
} |