--- trunk/OOPSE/libmdtools/calc_sticky_pair.F90 2004/05/06 19:15:52 1149 +++ trunk/OOPSE/libmdtools/calc_sticky_pair.F90 2004/05/07 21:35:05 1150 @@ -9,7 +9,7 @@ !! @author Matthew Meineke !! @author Christopher Fennel !! @author J. Daniel Gezelter -!! @version $Id: calc_sticky_pair.F90,v 1.16 2004-01-05 22:49:14 chuckv Exp $, $Date: 2004-01-05 22:49:14 $, $Name: not supported by cvs2svn $, $Revision: 1.16 $ +!! @version $Id: calc_sticky_pair.F90,v 1.17 2004-05-07 21:35:04 gezelter Exp $, $Date: 2004-05-07 21:35:04 $, $Name: not supported by cvs2svn $, $Revision: 1.17 $ module sticky_pair @@ -74,7 +74,7 @@ contains return end subroutine set_sticky_params - subroutine do_sticky_pair(atom1, atom2, d, rij, r2, A, pot, f, t, & + subroutine do_sticky_pair(atom1, atom2, d, rij, r2, sw, vpair, pot, A,f, t, & do_pot, do_stress) !! This routine does only the sticky portion of the SSD potential @@ -89,7 +89,7 @@ contains integer, intent(in) :: atom1, atom2 real (kind=dp), intent(inout) :: rij, r2 real (kind=dp), dimension(3), intent(in) :: d - real (kind=dp) :: pot + real (kind=dp) :: pot, vpair, sw real (kind=dp), dimension(9,nLocal) :: A real (kind=dp), dimension(3,nLocal) :: f real (kind=dp), dimension(3,nLocal) :: t @@ -180,12 +180,13 @@ contains wjp = zjf*zjf*zjs*zjs - SSD_w0 wp = wip + wjp + vpair = vpair + 0.5d0*(SSD_v0*s*w + SSD_v0p*sp*wp) if (do_pot) then #ifdef IS_MPI - pot_row(atom1) = pot_row(atom1) + 0.25d0*(SSD_v0*s*w + SSD_v0p*sp*wp) - pot_col(atom2) = pot_col(atom2) + 0.25d0*(SSD_v0*s*w + SSD_v0p*sp*wp) + pot_row(atom1) = pot_row(atom1) + 0.25d0*(SSD_v0*s*w + SSD_v0p*sp*wp)*sw + pot_col(atom2) = pot_col(atom2) + 0.25d0*(SSD_v0*s*w + SSD_v0p*sp*wp)*sw #else - pot = pot + 0.5d0*(SSD_v0*s*w + SSD_v0p*sp*wp) + pot = pot + 0.5d0*(SSD_v0*s*w + SSD_v0p*sp*wp)*sw #endif endif @@ -227,13 +228,13 @@ contains ! do the torques first since they are easy: ! remember that these are still in the body fixed axes - txi = 0.5d0*(SSD_v0*s*dwidux + SSD_v0p*sp*dwipdux) - tyi = 0.5d0*(SSD_v0*s*dwiduy + SSD_v0p*sp*dwipduy) - tzi = 0.5d0*(SSD_v0*s*dwiduz + SSD_v0p*sp*dwipduz) + txi = 0.5d0*(SSD_v0*s*dwidux + SSD_v0p*sp*dwipdux)*sw + tyi = 0.5d0*(SSD_v0*s*dwiduy + SSD_v0p*sp*dwipduy)*sw + tzi = 0.5d0*(SSD_v0*s*dwiduz + SSD_v0p*sp*dwipduz)*sw - txj = 0.5d0*(SSD_v0*s*dwjdux + SSD_v0p*sp*dwjpdux) - tyj = 0.5d0*(SSD_v0*s*dwjduy + SSD_v0p*sp*dwjpduy) - tzj = 0.5d0*(SSD_v0*s*dwjduz + SSD_v0p*sp*dwjpduz) + txj = 0.5d0*(SSD_v0*s*dwjdux + SSD_v0p*sp*dwjpdux)*sw + tyj = 0.5d0*(SSD_v0*s*dwjduy + SSD_v0p*sp*dwjpduy)*sw + tzj = 0.5d0*(SSD_v0*s*dwjduz + SSD_v0p*sp*dwjpduz)*sw ! go back to lab frame using transpose of rotation matrix: @@ -264,13 +265,13 @@ contains ! first rotate the i terms back into the lab frame: - radcomxi = SSD_v0*s*dwidx+SSD_v0p*sp*dwipdx - radcomyi = SSD_v0*s*dwidy+SSD_v0p*sp*dwipdy - radcomzi = SSD_v0*s*dwidz+SSD_v0p*sp*dwipdz + radcomxi = (SSD_v0*s*dwidx+SSD_v0p*sp*dwipdx)*sw + radcomyi = (SSD_v0*s*dwidy+SSD_v0p*sp*dwipdy)*sw + radcomzi = (SSD_v0*s*dwidz+SSD_v0p*sp*dwipdz)*sw - radcomxj = SSD_v0*s*dwjdx+SSD_v0p*sp*dwjpdx - radcomyj = SSD_v0*s*dwjdy+SSD_v0p*sp*dwjpdy - radcomzj = SSD_v0*s*dwjdz+SSD_v0p*sp*dwjpdz + radcomxj = (SSD_v0*s*dwjdx+SSD_v0p*sp*dwjpdx)*sw + radcomyj = (SSD_v0*s*dwjdy+SSD_v0p*sp*dwjpdy)*sw + radcomzj = (SSD_v0*s*dwjdz+SSD_v0p*sp*dwjpdz)*sw #ifdef IS_MPI fxii = a_Row(1,atom1)*(radcomxi) + &