ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/calc_gb.F90
(Generate patch)

Comparing trunk/OOPSE/libmdtools/calc_gb.F90 (file contents):
Revision 378 by mmeineke, Fri Mar 21 17:42:12 2003 UTC vs.
Revision 1195 by gezelter, Mon May 24 22:24:30 2004 UTC

# Line 1 | Line 1 | module gb_pair
1   module gb_pair
2    use force_globals
3    use definitions
4 +  use simulation
5   #ifdef IS_MPI
6    use mpiSimulation
7   #endif
# Line 46 | Line 47 | contains
47    end subroutine set_gb_pair_params
48  
49  
50 <  subroutine do_gb_pair(atom1, atom2, d, r, r2, u_l, pot, f, t, &
51 <       do_pot, do_stress)
50 >  subroutine do_gb_pair(atom1, atom2, d, r, r2, sw, vpair, fpair, &
51 >       pot, u_l, f, t, do_pot)
52      
53      integer, intent(in) :: atom1, atom2
54 +    integer :: id1, id2
55      real (kind=dp), intent(inout) :: r, r2
56      real (kind=dp), dimension(3), intent(in) :: d
57 <    real (kind=dp) :: pot
58 <    real (kind=dp), dimension(:,:) :: u_l
59 <    real (kind=dp), dimension(:,:) :: f
60 <    real (kind=dp), dimension(:,:) :: t
61 <    logical, intent(in) :: do_pot, do_stress
57 >    real (kind=dp), dimension(3), intent(inout) :: fpair
58 >    real (kind=dp) :: pot, sw, vpair
59 >    real (kind=dp), dimension(3,nLocal) :: u_l
60 >    real (kind=dp), dimension(3,nLocal) :: f
61 >    real (kind=dp), dimension(3,nLocal) :: t
62 >    logical, intent(in) :: do_pot
63      real (kind = dp), dimension(3) :: ul1
64      real (kind = dp), dimension(3) :: ul2
65  
# Line 305 | Line 308 | contains
308      mess1 = gmu*R137
309      mess2 = R126*gb_mu*gmum
310      
311 <    dUdx = 4.0d0*gb_eps*enu*(mess1*dBigRdx + mess2*dgpdx)
312 <    dUdy = 4.0d0*gb_eps*enu*(mess1*dBigRdy + mess2*dgpdy)
313 <    dUdz = 4.0d0*gb_eps*enu*(mess1*dBigRdz + mess2*dgpdz)
311 >    dUdx = 4.0d0*gb_eps*enu*(mess1*dBigRdx + mess2*dgpdx)*sw
312 >    dUdy = 4.0d0*gb_eps*enu*(mess1*dBigRdy + mess2*dgpdy)*sw
313 >    dUdz = 4.0d0*gb_eps*enu*(mess1*dBigRdz + mess2*dgpdz)*sw
314      
315 <    dUdu1x = 4.0d0*(R126*depsdu1x + eps*R137*dBigRdu1x)
316 <    dUdu1y = 4.0d0*(R126*depsdu1y + eps*R137*dBigRdu1y)
317 <    dUdu1z = 4.0d0*(R126*depsdu1z + eps*R137*dBigRdu1z)
318 <    dUdu2x = 4.0d0*(R126*depsdu2x + eps*R137*dBigRdu2x)
319 <    dUdu2y = 4.0d0*(R126*depsdu2y + eps*R137*dBigRdu2y)
320 <    dUdu2z = 4.0d0*(R126*depsdu2z + eps*R137*dBigRdu2z)
315 >    dUdu1x = 4.0d0*(R126*depsdu1x + eps*R137*dBigRdu1x)*sw
316 >    dUdu1y = 4.0d0*(R126*depsdu1y + eps*R137*dBigRdu1y)*sw
317 >    dUdu1z = 4.0d0*(R126*depsdu1z + eps*R137*dBigRdu1z)*sw
318 >    dUdu2x = 4.0d0*(R126*depsdu2x + eps*R137*dBigRdu2x)*sw
319 >    dUdu2y = 4.0d0*(R126*depsdu2y + eps*R137*dBigRdu2y)*sw
320 >    dUdu2z = 4.0d0*(R126*depsdu2z + eps*R137*dBigRdu2z)*sw
321        
322   #ifdef IS_MPI
323      f_Row(1,atom1) = f_Row(1,atom1) + dUdx
# Line 349 | Line 352 | contains
352      t(2,atom2) = t(2,atom2) - ul2(3)*dUdu2x + ul2(1)*dUdu2z
353      t(3,atom2) = t(3,atom2) - ul2(1)*dUdu2y + ul2(2)*dUdu2x
354   #endif
355 <    
356 <    if (do_stress) then          
357 <       tau_Temp(1) = tau_Temp(1) + dUdx * d(1)
358 <       tau_Temp(2) = tau_Temp(2) + dUdx * d(2)
359 <       tau_Temp(3) = tau_Temp(3) + dUdx * d(3)
360 <       tau_Temp(4) = tau_Temp(4) + dUdy * d(1)
361 <       tau_Temp(5) = tau_Temp(5) + dUdy * d(2)
362 <       tau_Temp(6) = tau_Temp(6) + dUdy * d(3)
360 <       tau_Temp(7) = tau_Temp(7) + dUdz * d(1)
361 <       tau_Temp(8) = tau_Temp(8) + dUdz * d(2)
362 <       tau_Temp(9) = tau_Temp(9) + dUdz * d(3)
363 <       virial_Temp = virial_Temp + (tau_Temp(1) + tau_Temp(5) + tau_Temp(9))
355 >            
356 >    if (do_pot) then
357 > #ifdef IS_MPI
358 >       pot_row(atom1) = pot_row(atom1) + 2.0d0*eps*R126*sw
359 >       pot_col(atom2) = pot_col(atom2) + 2.0d0*eps*R126*sw
360 > #else
361 >       pot = pot + 4.0*eps*R126*sw
362 > #endif
363      endif
364 <        
365 <    if (do_pot) then
366 < #ifdef IS_MPI
367 <       pot_row(atom1) = pot_row(atom1) + 2.0d0*eps*R126
368 <       pot_col(atom2) = pot_col(atom2) + 2.0d0*eps*R126
364 >
365 >    vpair = vpair + 4.0*eps*R126
366 > #ifdef IS_MPI
367 >    id1 = tagRow(atom1)
368 >    id2 = tagColumn(atom2)
369   #else
370 <       pot = pot + 4.0*eps*R126
370 >    id1 = atom1
371 >    id2 = atom2
372   #endif
373 +    
374 +    if (molMembershipList(id1) .ne. molMembershipList(id2)) then
375 +      
376 +       fpair(1) = fpair(1) + dUdx
377 +       fpair(2) = fpair(2) + dUdy
378 +       fpair(3) = fpair(3) + dUdz
379 +      
380      endif
381      
382      return

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines