76 |
|
public :: doElectrostaticPair |
77 |
|
public :: getCharge |
78 |
|
public :: getDipoleMoment |
79 |
+ |
public :: pre22 |
80 |
|
|
81 |
|
type :: Electrostatic |
82 |
|
integer :: c_ident |
530 |
|
sc2 = scale * scale |
531 |
|
|
532 |
|
pref = pre12 * q_i * mu_j |
533 |
< |
vterm = pref * ct_j * ri2 * scale |
533 |
> |
vterm = - pref * ct_j * ri2 * scale |
534 |
|
vpair = vpair + vterm |
535 |
|
epot = epot + sw * vterm |
536 |
|
|
538 |
|
!! r_j - r_i and the charge-dipole potential takes the origin |
539 |
|
!! as the point dipole, which is atom j in this case. |
540 |
|
|
541 |
< |
dudx = dudx + pref * sw * ri3 * ( uz_j(1) + 3.0d0*ct_j*xhat*sc2) |
542 |
< |
dudy = dudy + pref * sw * ri3 * ( uz_j(2) + 3.0d0*ct_j*yhat*sc2) |
543 |
< |
dudz = dudz + pref * sw * ri3 * ( uz_j(3) + 3.0d0*ct_j*zhat*sc2) |
541 |
> |
dudx = dudx - pref * sw * ri3 * ( uz_j(1) - 3.0d0*ct_j*xhat*sc2) |
542 |
> |
dudy = dudy - pref * sw * ri3 * ( uz_j(2) - 3.0d0*ct_j*yhat*sc2) |
543 |
> |
dudz = dudz - pref * sw * ri3 * ( uz_j(3) - 3.0d0*ct_j*zhat*sc2) |
544 |
|
|
545 |
|
duduz_j(1) = duduz_j(1) - pref * sw * ri2 * xhat * scale |
546 |
|
duduz_j(2) = duduz_j(2) - pref * sw * ri2 * yhat * scale |
551 |
|
if (j_is_Quadrupole) then |
552 |
|
ri2 = riji * riji |
553 |
|
ri3 = ri2 * riji |
554 |
< |
ri4 = ri2 * ri4 |
554 |
> |
ri4 = ri2 * ri2 |
555 |
|
cx2 = cx_j * cx_j |
556 |
|
cy2 = cy_j * cy_j |
557 |
|
cz2 = cz_j * cz_j |
558 |
|
|
559 |
< |
pref = pre14 * q_i / 6.0_dp |
559 |
> |
|
560 |
> |
pref = pre14 * q_i / 1.0_dp |
561 |
|
vterm = pref * ri3 * (qxx_j * (3.0_dp*cx2 - 1.0_dp) + & |
562 |
|
qyy_j * (3.0_dp*cy2 - 1.0_dp) + & |
563 |
|
qzz_j * (3.0_dp*cz2 - 1.0_dp)) |
564 |
|
vpair = vpair + vterm |
565 |
|
epot = epot + sw * vterm |
566 |
|
|
567 |
< |
dudx = dudx - 5.0_dp*sw*vterm*riji*xhat - pref * sw * ri4 * ( & |
567 |
> |
dudx = dudx - 5.0_dp*sw*vterm*riji*xhat + pref * sw * ri4 * ( & |
568 |
|
qxx_j*(6.0_dp*cx_j*ux_j(1) - 2.0_dp*xhat) + & |
569 |
|
qyy_j*(6.0_dp*cy_j*uy_j(1) - 2.0_dp*xhat) + & |
570 |
|
qzz_j*(6.0_dp*cz_j*uz_j(1) - 2.0_dp*xhat) ) |
571 |
< |
dudy = dudy - 5.0_dp*sw*vterm*riji*yhat - pref * sw * ri4 * ( & |
571 |
> |
dudy = dudy - 5.0_dp*sw*vterm*riji*yhat + pref * sw * ri4 * ( & |
572 |
|
qxx_j*(6.0_dp*cx_j*ux_j(2) - 2.0_dp*yhat) + & |
573 |
|
qyy_j*(6.0_dp*cy_j*uy_j(2) - 2.0_dp*yhat) + & |
574 |
|
qzz_j*(6.0_dp*cz_j*uz_j(2) - 2.0_dp*yhat) ) |
575 |
< |
dudz = dudz - 5.0_dp*sw*vterm*riji*zhat - pref * sw * ri4 * ( & |
575 |
> |
dudz = dudz - 5.0_dp*sw*vterm*riji*zhat + pref * sw * ri4 * ( & |
576 |
|
qxx_j*(6.0_dp*cx_j*ux_j(3) - 2.0_dp*zhat) + & |
577 |
|
qyy_j*(6.0_dp*cy_j*uy_j(3) - 2.0_dp*zhat) + & |
578 |
|
qzz_j*(6.0_dp*cz_j*uz_j(3) - 2.0_dp*zhat) ) |
678 |
|
|
679 |
|
ri2 = riji * riji |
680 |
|
ri3 = ri2 * riji |
681 |
< |
ri4 = ri2 * ri4 |
681 |
> |
ri4 = ri2 * ri2 |
682 |
|
cx2 = cx_i * cx_i |
683 |
|
cy2 = cy_i * cy_i |
684 |
|
cz2 = cz_i * cz_i |
685 |
|
|
686 |
< |
pref = pre14 * q_i / 6.0_dp |
686 |
> |
pref = pre14 * q_j / 1.0_dp |
687 |
|
vterm = pref * ri3 * (qxx_i * (3.0_dp*cx2 - 1.0_dp) + & |
688 |
|
qyy_i * (3.0_dp*cy2 - 1.0_dp) + & |
689 |
|
qzz_i * (3.0_dp*cz2 - 1.0_dp)) |
690 |
|
vpair = vpair + vterm |
691 |
|
epot = epot + sw * vterm |
692 |
|
|
693 |
< |
dudx = dudx - 5.0_dp*sw*vterm*riji*xhat - pref * sw * ri4 * ( & |
693 |
> |
dudx = dudx - 5.0_dp*sw*vterm*riji*xhat + pref * sw * ri4 * ( & |
694 |
|
qxx_i*(6.0_dp*cx_i*ux_i(1) - 2.0_dp*xhat) + & |
695 |
|
qyy_i*(6.0_dp*cy_i*uy_i(1) - 2.0_dp*xhat) + & |
696 |
|
qzz_i*(6.0_dp*cz_i*uz_i(1) - 2.0_dp*xhat) ) |
697 |
< |
dudy = dudy - 5.0_dp*sw*vterm*riji*yhat - pref * sw * ri4 * ( & |
697 |
> |
dudy = dudy - 5.0_dp*sw*vterm*riji*yhat + pref * sw * ri4 * ( & |
698 |
|
qxx_i*(6.0_dp*cx_i*ux_i(2) - 2.0_dp*yhat) + & |
699 |
|
qyy_i*(6.0_dp*cy_i*uy_i(2) - 2.0_dp*yhat) + & |
700 |
|
qzz_i*(6.0_dp*cz_i*uz_i(2) - 2.0_dp*yhat) ) |
701 |
< |
dudz = dudz - 5.0_dp*sw*vterm*riji*zhat - pref * sw * ri4 * ( & |
701 |
> |
dudz = dudz - 5.0_dp*sw*vterm*riji*zhat + pref * sw * ri4 * ( & |
702 |
|
qxx_i*(6.0_dp*cx_i*ux_i(3) - 2.0_dp*zhat) + & |
703 |
|
qyy_i*(6.0_dp*cy_i*uy_i(3) - 2.0_dp*zhat) + & |
704 |
|
qzz_i*(6.0_dp*cz_i*uz_i(3) - 2.0_dp*zhat) ) |