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 307 by chuckv, Mon Mar 10 19:37:48 2003 UTC vs.
Revision 309 by gezelter, Mon Mar 10 23:19:23 2003 UTC

# Line 4 | Line 4 | module dipole_dipole
4    use definitions
5    use forceGlobals
6    use atype_typedefs
7 + #ifdef IS_MPI
8 +  use mpiSimulation
9 + #endif
10 +  implicit none
11    
12    contains
13    
14 <  subroutine dipole_dipole(atom1, atom2, atype1, atype2, dx, dy, dz, rij, &
15 <       ul1, ul2, rt, rrf, pot)
14 >  subroutine do_dipole_pair(atom1, atom2, atype1, atype2, dx, dy, dz, rij, &
15 >       rt, rrf, pot, u_l, f, t)
16      
13    
17      integer atom1, atom2
18      double precision dx, dy, dz, rij
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,getNlocal()) :: u_l
26 +    real( kind = dp ), dimension(3,getNlocal()) :: f
27 +    real( kind = dp ), dimension(3,getNlocal()) :: t
28      
29      real (kind = dp), dimension(3) :: ul1
30      real (kind = dp), dimension(3) :: ul2
31      type (atype), pointer :: atype1
32      type (atype), pointer :: atype2
33      
34 + #ifdef IS_MPI
35 +    ul1(1) = u_l_Row(1,atom1)
36 +    ul1(2) = u_l_Row(2,atom1)
37 +    ul1(3) = u_l_Row(3,atom1)
38 +
39 +    ul2(1) = u_l_Col(1,atom2)
40 +    ul2(2) = u_l_Col(2,atom2)
41 +    ul2(3) = u_l_Col(3,atom2)
42 + #else
43 +    ul1(1) = u_l(1,atom1)
44 +    ul1(2) = u_l(2,atom1)
45 +    ul1(3) = u_l(3,atom1)
46 +
47 +    ul1(1) = u_l(1,atom2)
48 +    ul1(2) = u_l(2,atom2)
49 +    ul1(3) = u_l(3,atom2)
50 + #endif
51 +
52      ! pre converts from mu in units of debye to kcal/mol
53      pre = 14.38362d0
54      
# Line 51 | Line 77 | module dipole_dipole
77        
78         vterm = dip2*((u1dotu2/r3) - 3.0d0*(rdotu1*rdotu2/r5))
79        
80 + #ifdef IS_MPI
81 +       pot_row(atom1) = pot_row(atom1) + 0.5d0*vterm*taper
82 +       pot_col(atom2) = pot_col(atom2) + 0.5d0*vterm*taper
83 + #else
84         pot = pot + vterm*taper
85 + #endif
86        
87         dudx = (-dfact1 * dx * ((u1dotu2/r3) - &
88              (5.0d0*(rdotu1*rdotu2)/r5)) -  &
# Line 78 | Line 109 | module dipole_dipole
109        
110        
111   #ifdef IS_MPI
112 <       fRow(1,atom1) = fRow(1,atom1) + dudx
113 <       fRow(2,atom1) = fRow(2,atom1) + dudy
114 <       fRow(3,atom1) = fRow(3,atom1) + dudz
112 >       f_Row(1,atom1) = f_Row(1,atom1) + dudx
113 >       f_Row(2,atom1) = f_Row(2,atom1) + dudy
114 >       f_Row(3,atom1) = f_Row(3,atom1) + dudz
115  
116 <       fCol(1,atom2) = fCol(1,atom2) - dudx
117 <       fCol(2,atom2) = fCol(2,atom2) - dudy
118 <       fCol(3,atom2) = fCol(3,atom2) - dudz
116 >       f_Col(1,atom2) = f_Col(1,atom2) - dudx
117 >       f_Col(2,atom2) = f_Col(2,atom2) - dudy
118 >       f_Col(3,atom2) = f_Col(3,atom2) - dudz
119        
120 <       tRow(1,atom1) = tRow(1,atom1) - ul1(2)*dudu1z + ul1(3)*dudu1y
121 <       tRow(2,atom1) = tRow(2,atom1) - ul1(3)*dudu1x + ul1(1)*dudu1z
122 <       tRow(3,atom1) = tRow(3,atom1) - ul1(1)*dudu1y + ul1(2)*dudu1x
120 >       t_Row(1,atom1) = t_Row(1,atom1) - ul1(2)*dudu1z + ul1(3)*dudu1y
121 >       t_Row(2,atom1) = t_Row(2,atom1) - ul1(3)*dudu1x + ul1(1)*dudu1z
122 >       t_Row(3,atom1) = t_Row(3,atom1) - ul1(1)*dudu1y + ul1(2)*dudu1x
123        
124 <       tCol(1,atom2) = tCol(1,atom2) - ul2(2)*dudu2z + ul2(3)*dudu2y
125 <       tCol(2,atom2) = tCol(2,atom2) - ul2(3)*dudu2x + ul2(1)*dudu2z
126 <       tCol(3,atom2) = tCol(3,atom2) - ul2(1)*dudu2y + ul2(2)*dudu2x
124 >       t_Col(1,atom2) = t_Col(1,atom2) - ul2(2)*dudu2z + ul2(3)*dudu2y
125 >       t_Col(2,atom2) = t_Col(2,atom2) - ul2(3)*dudu2x + ul2(1)*dudu2z
126 >       t_Col(3,atom2) = t_Col(3,atom2) - ul2(1)*dudu2y + ul2(2)*dudu2x
127   #else
128 <       fTemp(1,atom1) = fTemp(1,atom1) + dudx
129 <       fTemp(2,atom1) = fTemp(2,atom1) + dudy
130 <       fTemp(3,atom1) = fTemp(3,atom1) + dudz
128 >       f(1,atom1) = f(1,atom1) + dudx
129 >       f(2,atom1) = f(2,atom1) + dudy
130 >       f(3,atom1) = f(3,atom1) + dudz
131        
132 <       fTemp(1,atom2) = fTemp(1,atom2) - dudx
133 <       fTemp(2,atom2) = fTemp(2,atom2) - dudy
134 <       fTemp(3,atom2) = fTemp(3,atom2) - dudz
132 >       f(1,atom2) = f(1,atom2) - dudx
133 >       f(2,atom2) = f(2,atom2) - dudy
134 >       f(3,atom2) = f(3,atom2) - dudz
135        
136 <       tTemp(1,atom1) = tTemp(1,atom1) - ul1(2)*dudu1z + ul1(3)*dudu1y
137 <       tTemp(2,atom1) = tTemp(2,atom1) - ul1(3)*dudu1x + ul1(1)*dudu1z
138 <       tTemp(3,atom1) = tTemp(3,atom1) - ul1(1)*dudu1y + ul1(2)*dudu1x
136 >       t(1,atom1) = t(1,atom1) - ul1(2)*dudu1z + ul1(3)*dudu1y
137 >       t(2,atom1) = t(2,atom1) - ul1(3)*dudu1x + ul1(1)*dudu1z
138 >       t(3,atom1) = t(3,atom1) - ul1(1)*dudu1y + ul1(2)*dudu1x
139        
140 <       tTemp(1,atom2) = tTemp(1,atom2) - ul2(2)*dudu2z + ul2(3)*dudu2y
141 <       tTemp(2,atom2) = tTemp(2,atom2) - ul2(3)*dudu2x + ul2(1)*dudu2z
142 <       tTemp(3,atom2) = tTemp(3,atom2) - ul2(1)*dudu2y + ul2(2)*dudu2x
140 >       t(1,atom2) = t(1,atom2) - ul2(2)*dudu2z + ul2(3)*dudu2y
141 >       t(2,atom2) = t(2,atom2) - ul2(3)*dudu2x + ul2(1)*dudu2z
142 >       t(3,atom2) = t(3,atom2) - ul2(1)*dudu2y + ul2(2)*dudu2x
143   #endif
144        
145 <       if (do_stress) then
146 <          tauTemp(1) = tauTemp(1) + dudx * dx
147 <          tauTemp(2) = tauTemp(2) + dudx * dy
148 <          tauTemp(3) = tauTemp(3) + dudx * dz
149 <          tauTemp(4) = tauTemp(4) + dudy * dx
150 <          tauTemp(5) = tauTemp(5) + dudy * dy
151 <          tauTemp(6) = tauTemp(6) + dudy * dz
152 <          tauTemp(7) = tauTemp(7) + dudz * dx
153 <          tauTemp(8) = tauTemp(8) + dudz * dy
154 <          tauTemp(9) = tauTemp(9) + dudz * dz
155 <          virialTemp = virialTemp + ( tauTemp(1) + tauTemp(5) + tauTemp(9) )
145 >       if (doStress()) then          
146 >          tau_Temp(1) = tau_Temp(1) + dudx * dx
147 >          tau_Temp(2) = tau_Temp(2) + dudx * dy
148 >          tau_Temp(3) = tau_Temp(3) + dudx * dz
149 >          tau_Temp(4) = tau_Temp(4) + dudy * dx
150 >          tau_Temp(5) = tau_Temp(5) + dudy * dy
151 >          tau_Temp(6) = tau_Temp(6) + dudy * dz
152 >          tau_Temp(7) = tau_Temp(7) + dudz * dx
153 >          tau_Temp(8) = tau_Temp(8) + dudz * dy
154 >          tau_Temp(9) = tau_Temp(9) + dudz * dz
155 >          virial_Temp = virial_Temp + (tau_Temp(1) + tau_Temp(5) + tau_Temp(9))
156         endif
157        
158      endif
159      
160      return
161 <  end subroutine dipole_dipole
162 <
161 >  end subroutine do_dipole_pair
162 >  
163   end module dipole_dipole

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines