ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/UseTheForce/doForces.F90
(Generate patch)

Comparing trunk/OOPSE-4/src/UseTheForce/doForces.F90 (file contents):
Revision 2394 by chrisfen, Sun Oct 23 21:08:08 2005 UTC vs.
Revision 2405 by chrisfen, Tue Nov 1 19:24:57 2005 UTC

# Line 45 | Line 45
45  
46   !! @author Charles F. Vardeman II
47   !! @author Matthew Meineke
48 < !! @version $Id: doForces.F90,v 1.62 2005-10-23 21:08:02 chrisfen Exp $, $Date: 2005-10-23 21:08:02 $, $Name: not supported by cvs2svn $, $Revision: 1.62 $
48 > !! @version $Id: doForces.F90,v 1.65 2005-11-01 19:24:54 chrisfen Exp $, $Date: 2005-11-01 19:24:54 $, $Name: not supported by cvs2svn $, $Revision: 1.65 $
49  
50  
51   module doForces
# Line 644 | Line 644 | contains
644      integer, intent(out) :: thisStat  
645      integer :: my_status, nMatches
646      integer, pointer :: MatchList(:) => null()
647    real(kind=dp) :: rcut, rrf, rt, dielect
647  
648      !! assume things are copacetic, unless they aren't
649      thisStat = 0
# Line 744 | Line 743 | contains
743      integer :: nlist
744      real( kind = DP ) :: ratmsq, rgrpsq, rgrp, vpair, vij
745      real( kind = DP ) :: sw, dswdr, swderiv, mf
746 +    real( kind = DP ) :: rVal
747      real(kind=dp),dimension(3) :: d_atm, d_grp, fpair, fij
748      real(kind=dp) :: rfpot, mu_i, virial
749      integer :: me_i, me_j, n_in_i, n_in_j
# Line 754 | Line 754 | contains
754      integer :: propPack_i, propPack_j
755      integer :: loopStart, loopEnd, loop
756      integer :: iHash
757 <    integer :: ig
757 >    integer :: i1
758    
759  
760      !! initialize local variables  
# Line 920 | Line 920 | contains
920                     inner: do jb = groupStartCol(j), groupStartCol(j+1)-1
921  
922                        atom2 = groupListCol(jb)
923 <
924 <                      if (skipThisPair(atom1, atom2)) cycle inner
925 <
923 >    
924 >                      if (skipThisPair(atom1, atom2))  cycle inner
925 >                      
926                        if ((n_in_i .eq. 1).and.(n_in_j .eq. 1)) then
927                           d_atm(1:3) = d_grp(1:3)
928                           ratmsq = rgrpsq
# Line 1090 | Line 1090 | contains
1090            
1091            ! we loop only over the local atoms, so we don't need row and column
1092            ! lookups for the types
1093 <
1093 >          
1094            me_i = atid(i)
1095            
1096            ! is the atom electrostatic?  See if it would have an
1097            ! electrostatic interaction with itself
1098            iHash = InteractionHash(me_i,me_i)
1099 <          
1099 >
1100            if ( iand(iHash, ELECTROSTATIC_PAIR).ne.0 ) then
1101   #ifdef IS_MPI
1102 <             call rf_self_self(i, eFrame, pot_local(ELECTROSTATIC_POT), &
1102 >             call self_self(i, eFrame, pot_local(ELECTROSTATIC_POT), &
1103                    t, do_pot)
1104   #else
1105 <             call rf_self_self(i, eFrame, pot(ELECTROSTATIC_POT), &
1105 >             call self_self(i, eFrame, pot(ELECTROSTATIC_POT), &
1106                    t, do_pot)
1107   #endif
1108            endif
1109 +  
1110 +          
1111 + !!$          if (electrostaticSummationMethod.eq.REACTION_FIELD) then
1112 +            
1113 +             ! loop over the excludes to accumulate RF stuff we've
1114 +             ! left out of the normal pair loop
1115 +            
1116 +             do i1 = 1, nSkipsForAtom(i)
1117 +                j = skipsForAtom(i, i1)
1118 +                
1119 +                ! prevent overcounting of the skips
1120 +                if (i.lt.j) then
1121 +                   call get_interatomic_vector(q(:,i), &
1122 +                        q(:,j), d_atm, ratmsq)
1123 +                   rVal = dsqrt(ratmsq)
1124 +                   call get_switch(ratmsq, sw, dswdr, rVal, group_switch, &
1125 +                        in_switching_region)
1126 + #ifdef IS_MPI
1127 +                   call rf_self_excludes(i, j, sw, eFrame, d_atm, rVal, &
1128 +                        vpair, pot_local(ELECTROSTATIC_POT), f, t, do_pot)
1129 + #else
1130 +                   call rf_self_excludes(i, j, sw, eFrame, d_atm, rVal, &
1131 +                        vpair, pot(ELECTROSTATIC_POT), f, t, do_pot)
1132 + #endif
1133 +                endif
1134 +             enddo
1135 + !!$          endif
1136         enddo
1137      endif
1138      
# Line 1170 | Line 1197 | contains
1197   #endif
1198  
1199      iHash = InteractionHash(me_i, me_j)
1200 <
1200 >    
1201      if ( iand(iHash, LJ_PAIR).ne.0 ) then
1202         call do_lj_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1203              pot(VDW_POT), f, do_pot)
1204      endif
1205 <
1205 >    
1206      if ( iand(iHash, ELECTROSTATIC_PAIR).ne.0 ) then
1207         call doElectrostaticPair(i, j, d, r, rijsq, sw, vpair, fpair, &
1208              pot(ELECTROSTATIC_POT), eFrame, f, t, do_pot)
1209      endif
1210 <
1210 >    
1211      if ( iand(iHash, STICKY_PAIR).ne.0 ) then
1212         call do_sticky_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1213              pot(HB_POT), A, f, t, do_pot)
1214      endif
1215 <
1215 >    
1216      if ( iand(iHash, STICKYPOWER_PAIR).ne.0 ) then
1217         call do_sticky_power_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1218              pot(HB_POT), A, f, t, do_pot)
1219      endif
1220 <
1220 >    
1221      if ( iand(iHash, GAYBERNE_PAIR).ne.0 ) then
1222         call do_gb_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1223              pot(VDW_POT), A, f, t, do_pot)
# Line 1200 | Line 1227 | contains
1227         call do_gb_lj_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1228              pot(VDW_POT), A, f, t, do_pot)
1229      endif
1230 <
1230 >    
1231      if ( iand(iHash, EAM_PAIR).ne.0 ) then      
1232         call do_eam_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1233              pot(METALLIC_POT), f, do_pot)
1234      endif
1235 <
1235 >    
1236      if ( iand(iHash, SHAPE_PAIR).ne.0 ) then      
1237         call do_shape_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1238              pot(VDW_POT), A, f, t, do_pot)
1239      endif
1240 <
1240 >    
1241      if ( iand(iHash, SHAPE_LJ).ne.0 ) then      
1242         call do_shape_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1243              pot(VDW_POT), A, f, t, do_pot)
1244      endif
1245 <    
1245 >    
1246    end subroutine do_pair
1247  
1248    subroutine do_prepair(i, j, rijsq, d, sw, rcijsq, dc, &
# Line 1346 | Line 1373 | contains
1373      pot_Col = 0.0_dp
1374      pot_Temp = 0.0_dp
1375  
1349    rf_Row = 0.0_dp
1350    rf_Col = 0.0_dp
1351    rf_Temp = 0.0_dp
1352
1376   #endif
1377  
1378      if (FF_uses_EAM .and. SIM_uses_EAM) then

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines