36 |
|
* [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005). |
37 |
|
* [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006). |
38 |
|
* [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008). |
39 |
< |
* [4] Vardeman & Gezelter, in progress (2009). |
39 |
> |
* [4] Kuang & Gezelter, J. Chem. Phys. 133, 164101 (2010). |
40 |
> |
* [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). |
41 |
|
*/ |
42 |
|
|
43 |
|
#include <stdio.h> |
192 |
|
if (!initialized_) initialize(); |
193 |
|
|
194 |
|
map<pair<AtomType*, AtomType*>, StickyInteractionData>::iterator it; |
195 |
< |
it = MixingMap.find(*(idat.atypes)); |
195 |
> |
it = MixingMap.find(idat.atypes); |
196 |
|
if (it != MixingMap.end()) { |
197 |
|
|
198 |
|
StickyInteractionData mixer = (*it).second; |
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 |
|
} |