ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE_old/src/mdtools/libmdCode/calc_dipole_dipole.F90
(Generate patch)

Comparing trunk/OOPSE_old/src/mdtools/libmdCode/calc_dipole_dipole.F90 (file contents):
Revision 312 by gezelter, Tue Mar 11 17:46:18 2003 UTC vs.
Revision 317 by gezelter, Tue Mar 11 23:13:06 2003 UTC

# Line 4 | Line 4 | module dipole_dipole
4    use definitions
5    use forceGlobals
6    use atype_typedefs
7 +  use vector_class
8   #ifdef IS_MPI
9    use mpiSimulation
10   #endif
# Line 11 | Line 12 | module dipole_dipole
12    
13    contains
14    
15 <  subroutine do_dipole_pair(atom1, atom2, atype1, atype2, dx, dy, dz, rij, &
15 <       pot, u_l, f, t)
15 >  subroutine do_dipole_pair(atom1, atom2, d, rij, pot, u_l, f, t)
16      
17 <    integer atom1, atom2
18 <    double precision dx, dy, dz, rij
17 >    integer atom1, atom2, me1, me2
18 >    double precision rij, mu1, mu2
19      double precision dfact1, dfact2, dip2, r2, r3, r5, pre
20      double precision dudx, dudy, dudz, dudu1x, dudu1y, dudu1z
21      double precision dudu2x, dudu2y, dudu2z, rdotu1, rdotu2, u1dotu2
22      double precision taper, dtdr, vterm
23  
24      real( kind = dp ) :: pot, rt, rrf
25 +    real( kind = dp ), dimension(3) :: d
26      real( kind = dp ), dimension(3,getNlocal()) :: u_l
27      real( kind = dp ), dimension(3,getNlocal()) :: f
28      real( kind = dp ), dimension(3,getNlocal()) :: t
29      
30      real (kind = dp), dimension(3) :: ul1
31      real (kind = dp), dimension(3) :: ul2
32 <    type (atype), pointer :: atype1
32 <    type (atype), pointer :: atype2
32 >
33      
34   #ifdef IS_MPI
35 +    me1 = atid_Row(atom1)
36      ul1(1) = u_l_Row(1,atom1)
37      ul1(2) = u_l_Row(2,atom1)
38      ul1(3) = u_l_Row(3,atom1)
39  
40 +    me2 = atid_Col(atom2)
41      ul2(1) = u_l_Col(1,atom2)
42      ul2(2) = u_l_Col(2,atom2)
43      ul2(3) = u_l_Col(3,atom2)
44   #else
45 +    me1 = atid(atom1)
46      ul1(1) = u_l(1,atom1)
47      ul1(2) = u_l(2,atom1)
48      ul1(3) = u_l(3,atom1)
49  
50 <    ul1(1) = u_l(1,atom2)
51 <    ul1(2) = u_l(2,atom2)
52 <    ul1(3) = u_l(3,atom2)
50 >    me2 = atid(atom2)
51 >    ul2(1) = u_l(1,atom2)
52 >    ul2(2) = u_l(2,atom2)
53 >    ul2(3) = u_l(3,atom2)
54   #endif
55  
56 +    call getElementProperty(atypes, me1, "dipole_moment", mu1)
57 +    call getElementProperty(atypes, me2, "dipole_moment", mu2)
58 +
59      rrf = getRrf()
60      rt = getRt()
61  
# Line 69 | Line 76 | module dipole_dipole
76         r3 = r2*rij
77         r5 = r3*r2
78        
79 <       rdotu1 = dx*ul1(1) + dy*ul1(2) + dz*ul1(3)
80 <       rdotu2 = dx*ul2(1) + dy*ul2(2) + dz*ul2(3)
79 >       rdotu1 = d(1)*ul1(1) + d(2)*ul1(2) + d(3)*ul1(3)
80 >       rdotu2 = d(1)*ul2(1) + d(2)*ul2(2) + d(3)*ul2(3)
81         u1dotu2 = ul1(1)*ul2(1) + ul1(2)*ul2(2) + ul1(3)*ul2(3)
82        
83 <       dip2 = pre * atype1%dipole_moment * atype2%dipole_moment
83 >       dip2 = pre * mu1 * mu2
84        
85         dfact1 = 3.0d0*dip2 / r2
86         dfact2 = 3.0d0*dip2 / r5
# Line 87 | Line 94 | module dipole_dipole
94         pot = pot + vterm*taper
95   #endif
96        
97 <       dudx = (-dfact1 * dx * ((u1dotu2/r3) - &
97 >       dudx = (-dfact1 * d(1) * ((u1dotu2/r3) - &
98              (5.0d0*(rdotu1*rdotu2)/r5)) -  &
99              dfact2*(ul1(1)*rdotu2 + ul2(1)*rdotu1))*taper + &
100 <            vterm*dtdr*dx/rij
100 >            vterm*dtdr*d(1)/rij
101        
102 <       dudy = (-dfact1 * dy * ((u1dotu2/r3) - &
102 >       dudy = (-dfact1 * d(2) * ((u1dotu2/r3) - &
103              (5.0d0*(rdotu1*rdotu2)/r5)) -  &
104              dfact2*(ul1(2)*rdotu2 + ul2(2)*rdotu1))*taper + &
105 <            vterm*dtdr*dy/rij
105 >            vterm*dtdr*d(2)/rij
106        
107 <       dudz = (-dfact1 * dz * ((u1dotu2/r3) - &
107 >       dudz = (-dfact1 * d(3) * ((u1dotu2/r3) - &
108              (5.0d0*(rdotu1*rdotu2)/r5)) -  &
109              dfact2*(ul1(3)*rdotu2 + ul2(3)*rdotu1))*taper +  &
110 <            vterm*dtdr*dz/rij
110 >            vterm*dtdr*d(3)/rij
111        
112 <       dudu1x = (dip2*((ul2(1)/r3) - (3.0d0*dx*rdotu2/r5)))*taper
113 <       dudu1y = (dip2*((ul2(2)/r3) - (3.0d0*dy*rdotu2/r5)))*taper
114 <       dudu1z = (dip2*((ul2(3)/r3) - (3.0d0*dz*rdotu2/r5)))*taper
112 >       dudu1x = (dip2*((ul2(1)/r3) - (3.0d0*d(1)*rdotu2/r5)))*taper
113 >       dudu1y = (dip2*((ul2(2)/r3) - (3.0d0*d(2)*rdotu2/r5)))*taper
114 >       dudu1z = (dip2*((ul2(3)/r3) - (3.0d0*d(3)*rdotu2/r5)))*taper
115        
116 <       dudu2x = (dip2*((ul1(1)/r3) - (3.0d0*dx*rdotu1/r5)))*taper
117 <       dudu2y = (dip2*((ul1(2)/r3) - (3.0d0*dy*rdotu1/r5)))*taper
118 <       dudu2z = (dip2*((ul1(3)/r3) - (3.0d0*dz*rdotu1/r5)))*taper
116 >       dudu2x = (dip2*((ul1(1)/r3) - (3.0d0*d(1)*rdotu1/r5)))*taper
117 >       dudu2y = (dip2*((ul1(2)/r3) - (3.0d0*d(2)*rdotu1/r5)))*taper
118 >       dudu2z = (dip2*((ul1(3)/r3) - (3.0d0*d(3)*rdotu1/r5)))*taper
119        
120        
121   #ifdef IS_MPI
# Line 146 | Line 153 | module dipole_dipole
153   #endif
154        
155         if (doStress()) then          
156 <          tau_Temp(1) = tau_Temp(1) + dudx * dx
157 <          tau_Temp(2) = tau_Temp(2) + dudx * dy
158 <          tau_Temp(3) = tau_Temp(3) + dudx * dz
159 <          tau_Temp(4) = tau_Temp(4) + dudy * dx
160 <          tau_Temp(5) = tau_Temp(5) + dudy * dy
161 <          tau_Temp(6) = tau_Temp(6) + dudy * dz
162 <          tau_Temp(7) = tau_Temp(7) + dudz * dx
163 <          tau_Temp(8) = tau_Temp(8) + dudz * dy
164 <          tau_Temp(9) = tau_Temp(9) + dudz * dz
156 >          tau_Temp(1) = tau_Temp(1) + dudx * d(1)
157 >          tau_Temp(2) = tau_Temp(2) + dudx * d(2)
158 >          tau_Temp(3) = tau_Temp(3) + dudx * d(3)
159 >          tau_Temp(4) = tau_Temp(4) + dudy * d(1)
160 >          tau_Temp(5) = tau_Temp(5) + dudy * d(2)
161 >          tau_Temp(6) = tau_Temp(6) + dudy * d(3)
162 >          tau_Temp(7) = tau_Temp(7) + dudz * d(1)
163 >          tau_Temp(8) = tau_Temp(8) + dudz * d(2)
164 >          tau_Temp(9) = tau_Temp(9) + dudz * d(3)
165            virial_Temp = virial_Temp + (tau_Temp(1) + tau_Temp(5) + tau_Temp(9))
166         endif
167        

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines