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 312 by gezelter, Tue Mar 11 17:46:18 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 >       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 +    rrf = getRrf()
53 +    rt = getRt()
54 +
55      ! pre converts from mu in units of debye to kcal/mol
56      pre = 14.38362d0
57      
# Line 51 | Line 80 | module dipole_dipole
80        
81         vterm = dip2*((u1dotu2/r3) - 3.0d0*(rdotu1*rdotu2/r5))
82        
83 + #ifdef IS_MPI
84 +       pot_row(atom1) = pot_row(atom1) + 0.5d0*vterm*taper
85 +       pot_col(atom2) = pot_col(atom2) + 0.5d0*vterm*taper
86 + #else
87         pot = pot + vterm*taper
88 + #endif
89        
90         dudx = (-dfact1 * dx * ((u1dotu2/r3) - &
91              (5.0d0*(rdotu1*rdotu2)/r5)) -  &
# Line 78 | Line 112 | module dipole_dipole
112        
113        
114   #ifdef IS_MPI
115 <       fRow(1,atom1) = fRow(1,atom1) + dudx
116 <       fRow(2,atom1) = fRow(2,atom1) + dudy
117 <       fRow(3,atom1) = fRow(3,atom1) + dudz
115 >       f_Row(1,atom1) = f_Row(1,atom1) + dudx
116 >       f_Row(2,atom1) = f_Row(2,atom1) + dudy
117 >       f_Row(3,atom1) = f_Row(3,atom1) + dudz
118  
119 <       fCol(1,atom2) = fCol(1,atom2) - dudx
120 <       fCol(2,atom2) = fCol(2,atom2) - dudy
121 <       fCol(3,atom2) = fCol(3,atom2) - dudz
119 >       f_Col(1,atom2) = f_Col(1,atom2) - dudx
120 >       f_Col(2,atom2) = f_Col(2,atom2) - dudy
121 >       f_Col(3,atom2) = f_Col(3,atom2) - dudz
122        
123 <       tRow(1,atom1) = tRow(1,atom1) - ul1(2)*dudu1z + ul1(3)*dudu1y
124 <       tRow(2,atom1) = tRow(2,atom1) - ul1(3)*dudu1x + ul1(1)*dudu1z
125 <       tRow(3,atom1) = tRow(3,atom1) - ul1(1)*dudu1y + ul1(2)*dudu1x
123 >       t_Row(1,atom1) = t_Row(1,atom1) - ul1(2)*dudu1z + ul1(3)*dudu1y
124 >       t_Row(2,atom1) = t_Row(2,atom1) - ul1(3)*dudu1x + ul1(1)*dudu1z
125 >       t_Row(3,atom1) = t_Row(3,atom1) - ul1(1)*dudu1y + ul1(2)*dudu1x
126        
127 <       tCol(1,atom2) = tCol(1,atom2) - ul2(2)*dudu2z + ul2(3)*dudu2y
128 <       tCol(2,atom2) = tCol(2,atom2) - ul2(3)*dudu2x + ul2(1)*dudu2z
129 <       tCol(3,atom2) = tCol(3,atom2) - ul2(1)*dudu2y + ul2(2)*dudu2x
127 >       t_Col(1,atom2) = t_Col(1,atom2) - ul2(2)*dudu2z + ul2(3)*dudu2y
128 >       t_Col(2,atom2) = t_Col(2,atom2) - ul2(3)*dudu2x + ul2(1)*dudu2z
129 >       t_Col(3,atom2) = t_Col(3,atom2) - ul2(1)*dudu2y + ul2(2)*dudu2x
130   #else
131 <       fTemp(1,atom1) = fTemp(1,atom1) + dudx
132 <       fTemp(2,atom1) = fTemp(2,atom1) + dudy
133 <       fTemp(3,atom1) = fTemp(3,atom1) + dudz
131 >       f(1,atom1) = f(1,atom1) + dudx
132 >       f(2,atom1) = f(2,atom1) + dudy
133 >       f(3,atom1) = f(3,atom1) + dudz
134        
135 <       fTemp(1,atom2) = fTemp(1,atom2) - dudx
136 <       fTemp(2,atom2) = fTemp(2,atom2) - dudy
137 <       fTemp(3,atom2) = fTemp(3,atom2) - dudz
135 >       f(1,atom2) = f(1,atom2) - dudx
136 >       f(2,atom2) = f(2,atom2) - dudy
137 >       f(3,atom2) = f(3,atom2) - dudz
138        
139 <       tTemp(1,atom1) = tTemp(1,atom1) - ul1(2)*dudu1z + ul1(3)*dudu1y
140 <       tTemp(2,atom1) = tTemp(2,atom1) - ul1(3)*dudu1x + ul1(1)*dudu1z
141 <       tTemp(3,atom1) = tTemp(3,atom1) - ul1(1)*dudu1y + ul1(2)*dudu1x
139 >       t(1,atom1) = t(1,atom1) - ul1(2)*dudu1z + ul1(3)*dudu1y
140 >       t(2,atom1) = t(2,atom1) - ul1(3)*dudu1x + ul1(1)*dudu1z
141 >       t(3,atom1) = t(3,atom1) - ul1(1)*dudu1y + ul1(2)*dudu1x
142        
143 <       tTemp(1,atom2) = tTemp(1,atom2) - ul2(2)*dudu2z + ul2(3)*dudu2y
144 <       tTemp(2,atom2) = tTemp(2,atom2) - ul2(3)*dudu2x + ul2(1)*dudu2z
145 <       tTemp(3,atom2) = tTemp(3,atom2) - ul2(1)*dudu2y + ul2(2)*dudu2x
143 >       t(1,atom2) = t(1,atom2) - ul2(2)*dudu2z + ul2(3)*dudu2y
144 >       t(2,atom2) = t(2,atom2) - ul2(3)*dudu2x + ul2(1)*dudu2z
145 >       t(3,atom2) = t(3,atom2) - ul2(1)*dudu2y + ul2(2)*dudu2x
146   #endif
147        
148 <       if (do_stress) then
149 <          tauTemp(1) = tauTemp(1) + dudx * dx
150 <          tauTemp(2) = tauTemp(2) + dudx * dy
151 <          tauTemp(3) = tauTemp(3) + dudx * dz
152 <          tauTemp(4) = tauTemp(4) + dudy * dx
153 <          tauTemp(5) = tauTemp(5) + dudy * dy
154 <          tauTemp(6) = tauTemp(6) + dudy * dz
155 <          tauTemp(7) = tauTemp(7) + dudz * dx
156 <          tauTemp(8) = tauTemp(8) + dudz * dy
157 <          tauTemp(9) = tauTemp(9) + dudz * dz
158 <          virialTemp = virialTemp + ( tauTemp(1) + tauTemp(5) + tauTemp(9) )
148 >       if (doStress()) then          
149 >          tau_Temp(1) = tau_Temp(1) + dudx * dx
150 >          tau_Temp(2) = tau_Temp(2) + dudx * dy
151 >          tau_Temp(3) = tau_Temp(3) + dudx * dz
152 >          tau_Temp(4) = tau_Temp(4) + dudy * dx
153 >          tau_Temp(5) = tau_Temp(5) + dudy * dy
154 >          tau_Temp(6) = tau_Temp(6) + dudy * dz
155 >          tau_Temp(7) = tau_Temp(7) + dudz * dx
156 >          tau_Temp(8) = tau_Temp(8) + dudz * dy
157 >          tau_Temp(9) = tau_Temp(9) + dudz * dz
158 >          virial_Temp = virial_Temp + (tau_Temp(1) + tau_Temp(5) + tau_Temp(9))
159         endif
160        
161      endif
162      
163      return
164 <  end subroutine dipole_dipole
165 <
164 >  end subroutine do_dipole_pair
165 >  
166   end module dipole_dipole

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines