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 2357 by chuckv, Wed Oct 12 20:18:17 2005 UTC vs.
Revision 2407 by chrisfen, Wed Nov 2 20:35:34 2005 UTC

# Line 45 | Line 45
45  
46   !! @author Charles F. Vardeman II
47   !! @author Matthew Meineke
48 < !! @version $Id: doForces.F90,v 1.56 2005-10-12 20:18:01 chuckv Exp $, $Date: 2005-10-12 20:18:01 $, $Name: not supported by cvs2svn $, $Revision: 1.56 $
48 > !! @version $Id: doForces.F90,v 1.66 2005-11-02 20:35:34 chrisfen Exp $, $Date: 2005-11-02 20:35:34 $, $Name: not supported by cvs2svn $, $Revision: 1.66 $
49  
50  
51   module doForces
# Line 58 | Line 58 | module doForces
58    use lj
59    use sticky
60    use electrostatic_module
61 <  use reaction_field_module
62 <  use gb_pair
61 >  use gayberne
62    use shapes
63    use vector_class
64    use eam
# Line 645 | Line 644 | contains
644      integer, intent(out) :: thisStat  
645      integer :: my_status, nMatches
646      integer, pointer :: MatchList(:) => null()
648    real(kind=dp) :: rcut, rrf, rt, dielect
647  
648      !! assume things are copacetic, unless they aren't
649      thisStat = 0
# Line 681 | Line 679 | contains
679  
680      haveSaneForceField = .true.
681  
684    !! check to make sure the reaction field setting makes sense
685
686    if (FF_uses_Dipoles) then
687       if (electrostaticSummationMethod == REACTION_FIELD) then
688          dielect = getDielect()
689          call initialize_rf(dielect)
690       endif
691    else
692       if (electrostaticSummationMethod == REACTION_FIELD) then
693          write(default_error,*) 'Using Reaction Field with no dipoles?  Huh?'
694          thisStat = -1
695          haveSaneForceField = .false.
696          return
697       endif
698    endif
699
682      if (FF_uses_EAM) then
683         call init_EAM_FF(my_status)
684         if (my_status /= 0) then
# Line 707 | Line 689 | contains
689         end if
690      endif
691  
710    if (FF_uses_GayBerne) then
711       call check_gb_pair_FF(my_status)
712       if (my_status .ne. 0) then
713          thisStat = -1
714          haveSaneForceField = .false.
715          return
716       endif
717    endif
718
692      if (.not. haveNeighborList) then
693         !! Create neighbor lists
694         call expandNeighborList(nLocal, my_status)
# Line 749 | Line 722 | contains
722  
723      !! Stress Tensor
724      real( kind = dp), dimension(9) :: tau  
725 <    real ( kind = dp ),dimension(POT_ARRAY_SIZE) :: pot
725 >    real ( kind = dp ),dimension(LR_POT_TYPES) :: pot
726      logical ( kind = 2) :: do_pot_c, do_stress_c
727      logical :: do_pot
728      logical :: do_stress
729      logical :: in_switching_region
730   #ifdef IS_MPI
731 <    real( kind = DP ), dimension(POT_ARRAY_SIZE) :: pot_local
731 >    real( kind = DP ), dimension(LR_POT_TYPES) :: pot_local
732      integer :: nAtomsInRow
733      integer :: nAtomsInCol
734      integer :: nprocs
# Line 770 | 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), dimension(3) :: fstrs, f2strs
749      real(kind=dp) :: rfpot, mu_i, virial
750      integer :: me_i, me_j, n_in_i, n_in_j
751      logical :: is_dp_i
# Line 780 | Line 755 | contains
755      integer :: propPack_i, propPack_j
756      integer :: loopStart, loopEnd, loop
757      integer :: iHash
758 +    integer :: i1
759    
760  
761      !! initialize local variables  
# Line 927 | Line 903 | contains
903  
904                     list(nlist) = j
905                  endif
906 +                
907 +                if (rgrpsq < gtypeCutoffMap(groupToGtypeRow(i),groupToGtypeCol(j))%rCutsq) then
908  
909 <                if (loop .eq. PAIR_LOOP) then
910 <                   vij = 0.0d0
911 <                   fij(1:3) = 0.0d0
912 <                endif
913 <
914 <                call get_switch(rgrpsq, sw, dswdr, rgrp, group_switch, &
915 <                     in_switching_region)
916 <
917 <                n_in_j = groupStartCol(j+1) - groupStartCol(j)
918 <
919 <                do ia = groupStartRow(i), groupStartRow(i+1)-1
920 <
921 <                   atom1 = groupListRow(ia)
922 <
923 <                   inner: do jb = groupStartCol(j), groupStartCol(j+1)-1
924 <
925 <                      atom2 = groupListCol(jb)
926 <
927 <                      if (skipThisPair(atom1, atom2)) cycle inner
928 <
929 <                      if ((n_in_i .eq. 1).and.(n_in_j .eq. 1)) then
930 <                         d_atm(1:3) = d_grp(1:3)
931 <                         ratmsq = rgrpsq
932 <                      else
933 < #ifdef IS_MPI
934 <                         call get_interatomic_vector(q_Row(:,atom1), &
935 <                              q_Col(:,atom2), d_atm, ratmsq)
936 < #else
937 <                         call get_interatomic_vector(q(:,atom1), &
938 <                              q(:,atom2), d_atm, ratmsq)
909 >                   if (loop .eq. PAIR_LOOP) then
910 >                      vij = 0.0d0
911 >                      fij(1:3) = 0.0d0
912 >                   endif
913 >                  
914 >                   call get_switch(rgrpsq, sw, dswdr, rgrp, group_switch, &
915 >                        in_switching_region)
916 >                  
917 >                   n_in_j = groupStartCol(j+1) - groupStartCol(j)
918 >                  
919 >                   do ia = groupStartRow(i), groupStartRow(i+1)-1
920 >                      
921 >                      atom1 = groupListRow(ia)
922 >                      
923 >                      inner: do jb = groupStartCol(j), groupStartCol(j+1)-1
924 >                        
925 >                         atom2 = groupListCol(jb)
926 >                        
927 >                         if (skipThisPair(atom1, atom2))  cycle inner
928 >                        
929 >                         if ((n_in_i .eq. 1).and.(n_in_j .eq. 1)) then
930 >                            d_atm(1:3) = d_grp(1:3)
931 >                            ratmsq = rgrpsq
932 >                         else
933 > #ifdef IS_MPI
934 >                            call get_interatomic_vector(q_Row(:,atom1), &
935 >                                 q_Col(:,atom2), d_atm, ratmsq)
936 > #else
937 >                            call get_interatomic_vector(q(:,atom1), &
938 >                                 q(:,atom2), d_atm, ratmsq)
939   #endif
940 <                      endif
941 <
942 <                      if (loop .eq. PREPAIR_LOOP) then
940 >                         endif
941 >                        
942 >                         if (loop .eq. PREPAIR_LOOP) then
943   #ifdef IS_MPI                      
944 <                         call do_prepair(atom1, atom2, ratmsq, d_atm, sw, &
945 <                              rgrpsq, d_grp, do_pot, do_stress, &
946 <                              eFrame, A, f, t, pot_local)
944 >                            call do_prepair(atom1, atom2, ratmsq, d_atm, sw, &
945 >                                 rgrpsq, d_grp, do_pot, do_stress, &
946 >                                 eFrame, A, f, t, pot_local)
947   #else
948 <                         call do_prepair(atom1, atom2, ratmsq, d_atm, sw, &
949 <                              rgrpsq, d_grp, do_pot, do_stress, &
950 <                              eFrame, A, f, t, pot)
948 >                            call do_prepair(atom1, atom2, ratmsq, d_atm, sw, &
949 >                                 rgrpsq, d_grp, do_pot, do_stress, &
950 >                                 eFrame, A, f, t, pot)
951   #endif                                              
952 <                      else
952 >                         else
953   #ifdef IS_MPI                      
954 <                         call do_pair(atom1, atom2, ratmsq, d_atm, sw, &
955 <                              do_pot, &
956 <                              eFrame, A, f, t, pot_local, vpair, fpair)
954 >                            call do_pair(atom1, atom2, ratmsq, d_atm, sw, &
955 >                                 do_pot, eFrame, A, f, t, pot_local, vpair, &
956 >                                 fpair, d_grp, rgrp, fstrs)
957   #else
958 <                         call do_pair(atom1, atom2, ratmsq, d_atm, sw, &
959 <                              do_pot,  &
960 <                              eFrame, A, f, t, pot, vpair, fpair)
958 >                            call do_pair(atom1, atom2, ratmsq, d_atm, sw, &
959 >                                 do_pot, eFrame, A, f, t, pot, vpair, fpair, &
960 >                                 d_grp, rgrp, fstrs)
961   #endif
962 +                            f2strs(1:3) = f2strs(1:3) + fstrs(1:3)
963 +                            vij = vij + vpair
964 +                            fij(1:3) = fij(1:3) + fpair(1:3)
965 +                         endif
966 +                      enddo inner
967 +                   enddo
968  
969 <                         vij = vij + vpair
970 <                         fij(1:3) = fij(1:3) + fpair(1:3)
971 <                      endif
972 <                   enddo inner
973 <                enddo
974 <
975 <                if (loop .eq. PAIR_LOOP) then
976 <                   if (in_switching_region) then
977 <                      swderiv = vij*dswdr/rgrp
978 <                      fij(1) = fij(1) + swderiv*d_grp(1)
995 <                      fij(2) = fij(2) + swderiv*d_grp(2)
996 <                      fij(3) = fij(3) + swderiv*d_grp(3)
997 <
998 <                      do ia=groupStartRow(i), groupStartRow(i+1)-1
999 <                         atom1=groupListRow(ia)
1000 <                         mf = mfactRow(atom1)
969 >                   if (loop .eq. PAIR_LOOP) then
970 >                      if (in_switching_region) then
971 >                         swderiv = vij*dswdr/rgrp
972 >                         fij(1) = fij(1) + swderiv*d_grp(1)
973 >                         fij(2) = fij(2) + swderiv*d_grp(2)
974 >                         fij(3) = fij(3) + swderiv*d_grp(3)
975 >                        
976 >                         do ia=groupStartRow(i), groupStartRow(i+1)-1
977 >                            atom1=groupListRow(ia)
978 >                            mf = mfactRow(atom1)
979   #ifdef IS_MPI
980 <                         f_Row(1,atom1) = f_Row(1,atom1) + swderiv*d_grp(1)*mf
981 <                         f_Row(2,atom1) = f_Row(2,atom1) + swderiv*d_grp(2)*mf
982 <                         f_Row(3,atom1) = f_Row(3,atom1) + swderiv*d_grp(3)*mf
980 >                            f_Row(1,atom1) = f_Row(1,atom1) + swderiv*d_grp(1)*mf
981 >                            f_Row(2,atom1) = f_Row(2,atom1) + swderiv*d_grp(2)*mf
982 >                            f_Row(3,atom1) = f_Row(3,atom1) + swderiv*d_grp(3)*mf
983   #else
984 <                         f(1,atom1) = f(1,atom1) + swderiv*d_grp(1)*mf
985 <                         f(2,atom1) = f(2,atom1) + swderiv*d_grp(2)*mf
986 <                         f(3,atom1) = f(3,atom1) + swderiv*d_grp(3)*mf
984 >                            f(1,atom1) = f(1,atom1) + swderiv*d_grp(1)*mf
985 >                            f(2,atom1) = f(2,atom1) + swderiv*d_grp(2)*mf
986 >                            f(3,atom1) = f(3,atom1) + swderiv*d_grp(3)*mf
987   #endif
988 <                      enddo
989 <
990 <                      do jb=groupStartCol(j), groupStartCol(j+1)-1
991 <                         atom2=groupListCol(jb)
992 <                         mf = mfactCol(atom2)
988 >                         enddo
989 >                        
990 >                         do jb=groupStartCol(j), groupStartCol(j+1)-1
991 >                            atom2=groupListCol(jb)
992 >                            mf = mfactCol(atom2)
993   #ifdef IS_MPI
994 <                         f_Col(1,atom2) = f_Col(1,atom2) - swderiv*d_grp(1)*mf
995 <                         f_Col(2,atom2) = f_Col(2,atom2) - swderiv*d_grp(2)*mf
996 <                         f_Col(3,atom2) = f_Col(3,atom2) - swderiv*d_grp(3)*mf
994 >                            f_Col(1,atom2) = f_Col(1,atom2) - swderiv*d_grp(1)*mf
995 >                            f_Col(2,atom2) = f_Col(2,atom2) - swderiv*d_grp(2)*mf
996 >                            f_Col(3,atom2) = f_Col(3,atom2) - swderiv*d_grp(3)*mf
997   #else
998 <                         f(1,atom2) = f(1,atom2) - swderiv*d_grp(1)*mf
999 <                         f(2,atom2) = f(2,atom2) - swderiv*d_grp(2)*mf
1000 <                         f(3,atom2) = f(3,atom2) - swderiv*d_grp(3)*mf
998 >                            f(1,atom2) = f(1,atom2) - swderiv*d_grp(1)*mf
999 >                            f(2,atom2) = f(2,atom2) - swderiv*d_grp(2)*mf
1000 >                            f(3,atom2) = f(3,atom2) - swderiv*d_grp(3)*mf
1001   #endif
1002 <                      enddo
1003 <                   endif
1002 >                         enddo
1003 >                      endif
1004  
1005 <                   if (do_stress) call add_stress_tensor(d_grp, fij)
1005 >                      if (do_stress) call add_stress_tensor(d_grp, fij)
1006 >                   endif
1007                  endif
1008 <             end if
1008 >             endif
1009            enddo
1010 <
1010 >          
1011         enddo outer
1012  
1013         if (update_nlist) then
# Line 1088 | Line 1067 | contains
1067  
1068      if (do_pot) then
1069         ! scatter/gather pot_row into the members of my column
1070 <       do i = 1,POT_ARRAY_SIZE
1070 >       do i = 1,LR_POT_TYPES
1071            call scatter(pot_Row(i,:), pot_Temp(i,:), plan_atom_row)
1072         end do
1073         ! scatter/gather pot_local into all other procs
1074         ! add resultant to get total pot
1075         do i = 1, nlocal
1076 <          pot_local(1:POT_ARRAY_SIZE) = pot_local(1:POT_ARRAY_SIZE) &
1077 <               + pot_Temp(1:POT_ARRAY_SIZE,i)
1076 >          pot_local(1:LR_POT_TYPES) = pot_local(1:LR_POT_TYPES) &
1077 >               + pot_Temp(1:LR_POT_TYPES,i)
1078         enddo
1079  
1080         pot_Temp = 0.0_DP
1081 <       do i = 1,POT_ARRAY_SIZE
1081 >       do i = 1,LR_POT_TYPES
1082            call scatter(pot_Col(i,:), pot_Temp(i,:), plan_atom_col)
1083         end do
1084         do i = 1, nlocal
1085 <          pot_local(1:POT_ARRAY_SIZE) = pot_local(1:POT_ARRAY_SIZE)&
1086 <               + pot_Temp(1:POT_ARRAY_SIZE,i)
1085 >          pot_local(1:LR_POT_TYPES) = pot_local(1:LR_POT_TYPES)&
1086 >               + pot_Temp(1:LR_POT_TYPES,i)
1087         enddo
1088  
1089      endif
1090   #endif
1091  
1092 <    if (FF_RequiresPostpairCalc() .and. SIM_requires_postpair_calc) then
1092 >    if (SIM_requires_postpair_calc) then
1093 >       do i = 1, nlocal            
1094 >          
1095 >          ! we loop only over the local atoms, so we don't need row and column
1096 >          ! lookups for the types
1097 >          
1098 >          me_i = atid(i)
1099 >          
1100 >          ! is the atom electrostatic?  See if it would have an
1101 >          ! electrostatic interaction with itself
1102 >          iHash = InteractionHash(me_i,me_i)
1103  
1104 <       if (electrostaticSummationMethod == REACTION_FIELD) then
1116 <
1104 >          if ( iand(iHash, ELECTROSTATIC_PAIR).ne.0 ) then
1105   #ifdef IS_MPI
1106 <          call scatter(rf_Row,rf,plan_atom_row_3d)
1107 <          call scatter(rf_Col,rf_Temp,plan_atom_col_3d)
1120 <          do i = 1,nlocal
1121 <             rf(1:3,i) = rf(1:3,i) + rf_Temp(1:3,i)
1122 <          end do
1123 < #endif
1124 <
1125 <          do i = 1, nLocal
1126 <
1127 <             rfpot = 0.0_DP
1128 < #ifdef IS_MPI
1129 <             me_i = atid_row(i)
1106 >             call self_self(i, eFrame, pot_local(ELECTROSTATIC_POT), &
1107 >                  t, do_pot)
1108   #else
1109 <             me_i = atid(i)
1109 >             call self_self(i, eFrame, pot(ELECTROSTATIC_POT), &
1110 >                  t, do_pot)
1111   #endif
1112 <             iHash = InteractionHash(me_i,me_j)
1112 >          endif
1113 >  
1114 >          
1115 >          if (electrostaticSummationMethod.eq.REACTION_FIELD) then
1116              
1117 <             if ( iand(iHash, ELECTROSTATIC_PAIR).ne.0 ) then
1118 <
1119 <                mu_i = getDipoleMoment(me_i)
1120 <
1121 <                !! The reaction field needs to include a self contribution
1122 <                !! to the field:
1123 <                call accumulate_self_rf(i, mu_i, eFrame)
1124 <                !! Get the reaction field contribution to the
1125 <                !! potential and torques:
1126 <                call reaction_field_final(i, mu_i, eFrame, rfpot, t, do_pot)
1117 >             ! loop over the excludes to accumulate RF stuff we've
1118 >             ! left out of the normal pair loop
1119 >            
1120 >             do i1 = 1, nSkipsForAtom(i)
1121 >                j = skipsForAtom(i, i1)
1122 >                
1123 >                ! prevent overcounting of the skips
1124 >                if (i.lt.j) then
1125 >                   call get_interatomic_vector(q(:,i), &
1126 >                        q(:,j), d_atm, ratmsq)
1127 >                   rVal = dsqrt(ratmsq)
1128 >                   call get_switch(ratmsq, sw, dswdr, rVal, group_switch, &
1129 >                        in_switching_region)
1130   #ifdef IS_MPI
1131 <                pot_local(RF_POT) = pot_local(RF_POT) + rfpot
1131 >                   call rf_self_excludes(i, j, sw, eFrame, d_atm, rVal, &
1132 >                        vpair, pot_local(ELECTROSTATIC_POT), f, t, do_pot)
1133   #else
1134 <                pot(RF_POT) = pot(RF_POT) + rfpot
1135 <
1134 >                   call rf_self_excludes(i, j, sw, eFrame, d_atm, rVal, &
1135 >                        vpair, pot(ELECTROSTATIC_POT), f, t, do_pot)
1136   #endif
1137 <             endif
1138 <          enddo
1139 <       endif
1137 >                endif
1138 >             enddo
1139 >          endif
1140 >       enddo
1141      endif
1142 <
1156 <
1142 >    
1143   #ifdef IS_MPI
1144 <
1144 >    
1145      if (do_pot) then
1146 <       pot(1:POT_ARRAY_SIZE) = pot(1:POT_ARRAY_SIZE) &
1147 <            + pot_local(1:POT_ARRAY_SIZE)
1162 <       !! we assume the c code will do the allreduce to get the total potential
1163 <       !! we could do it right here if we needed to...
1146 >       call mpi_allreduce(pot_local, pot, LR_POT_TYPES,mpi_double_precision,mpi_sum, &
1147 >            mpi_comm_world,mpi_err)            
1148      endif
1149 <
1149 >    
1150      if (do_stress) then
1151         call mpi_allreduce(tau_Temp, tau, 9,mpi_double_precision,mpi_sum, &
1152              mpi_comm_world,mpi_err)
1153         call mpi_allreduce(virial_Temp, virial,1,mpi_double_precision,mpi_sum, &
1154              mpi_comm_world,mpi_err)
1155      endif
1156 <
1156 >    
1157   #else
1158 <
1158 >    
1159      if (do_stress) then
1160         tau = tau_Temp
1161         virial = virial_Temp
1162      endif
1163 <
1163 >    
1164   #endif
1165 <
1165 >    
1166    end subroutine do_force_loop
1167  
1168 + !!$  subroutine do_pair(i, j, rijsq, d, sw, do_pot, &
1169 + !!$       eFrame, A, f, t, pot, vpair, fpair, d_grp, r_grp)
1170    subroutine do_pair(i, j, rijsq, d, sw, do_pot, &
1171 <       eFrame, A, f, t, pot, vpair, fpair)
1171 >       eFrame, A, f, t, pot, vpair, fpair, d_grp, r_grp, fstrs)
1172  
1173      real( kind = dp ) :: vpair, sw
1174 <    real( kind = dp ), dimension(POT_ARRAY_SIZE) :: pot
1174 >    real( kind = dp ), dimension(LR_POT_TYPES) :: pot
1175      real( kind = dp ), dimension(3) :: fpair
1176 +    real( kind = dp ), dimension(3) :: fstrs
1177      real( kind = dp ), dimension(nLocal)   :: mfact
1178      real( kind = dp ), dimension(9,nLocal) :: eFrame
1179      real( kind = dp ), dimension(9,nLocal) :: A
# Line 1196 | Line 1183 | contains
1183      logical, intent(inout) :: do_pot
1184      integer, intent(in) :: i, j
1185      real ( kind = dp ), intent(inout) :: rijsq
1186 <    real ( kind = dp )                :: r
1186 >    real ( kind = dp ), intent(inout) :: r_grp
1187      real ( kind = dp ), intent(inout) :: d(3)
1188 +    real ( kind = dp ), intent(inout) :: d_grp(3)
1189 +    real ( kind = dp ) :: r
1190      integer :: me_i, me_j
1191  
1192      integer :: iHash
# Line 1215 | Line 1204 | contains
1204   #endif
1205  
1206      iHash = InteractionHash(me_i, me_j)
1207 <
1207 >    
1208      if ( iand(iHash, LJ_PAIR).ne.0 ) then
1209 <       call do_lj_pair(i, j, d, r, rijsq, sw, vpair, fpair, pot(LJ_POT), f, do_pot)
1209 >       call do_lj_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1210 >            pot(VDW_POT), f, do_pot)
1211      endif
1212 <
1212 >    
1213      if ( iand(iHash, ELECTROSTATIC_PAIR).ne.0 ) then
1214 + !!$       call doElectrostaticPair(i, j, d, r, rijsq, sw, vpair, fpair, &
1215 + !!$            pot(ELECTROSTATIC_POT), eFrame, f, t, do_pot)
1216         call doElectrostaticPair(i, j, d, r, rijsq, sw, vpair, fpair, &
1217 <            pot(ELECTROSTATIC_POT), eFrame, f, t, do_pot)
1226 <
1227 <       if (electrostaticSummationMethod == REACTION_FIELD) then
1228 <
1229 <          ! CHECK ME (RF needs to know about all electrostatic types)
1230 <          call accumulate_rf(i, j, r, eFrame, sw)
1231 <          call rf_correct_forces(i, j, d, r, eFrame, sw, f, fpair)
1232 <       endif
1233 <
1217 >            pot(ELECTROSTATIC_POT), eFrame, f, t, do_pot, fstrs)
1218      endif
1219 <
1219 >    
1220      if ( iand(iHash, STICKY_PAIR).ne.0 ) then
1221         call do_sticky_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1222 <            pot(STICKY_POT), A, f, t, do_pot)
1222 >            pot(HB_POT), A, f, t, do_pot)
1223      endif
1224 <
1224 >    
1225      if ( iand(iHash, STICKYPOWER_PAIR).ne.0 ) then
1226         call do_sticky_power_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1227 <            pot(STICKYPOWER_POT), A, f, t, do_pot)
1227 >            pot(HB_POT), A, f, t, do_pot)
1228      endif
1229 <
1229 >    
1230      if ( iand(iHash, GAYBERNE_PAIR).ne.0 ) then
1231         call do_gb_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1232 <            pot(GAYBERNE_POT), A, f, t, do_pot)
1232 >            pot(VDW_POT), A, f, t, do_pot)
1233      endif
1234      
1235      if ( iand(iHash, GAYBERNE_LJ).ne.0 ) then
1236 < !      call do_gblj_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1237 < !           pot(GAYBERNE_LJ_POT), A, f, t, do_pot)
1236 >       call do_gb_lj_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1237 >            pot(VDW_POT), A, f, t, do_pot)
1238      endif
1239 <
1239 >    
1240      if ( iand(iHash, EAM_PAIR).ne.0 ) then      
1241 <       call do_eam_pair(i, j, d, r, rijsq, sw, vpair, fpair, pot(EAM_POT), f, &
1242 <            do_pot)
1241 >       call do_eam_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1242 >            pot(METALLIC_POT), f, do_pot)
1243      endif
1244 <
1244 >    
1245      if ( iand(iHash, SHAPE_PAIR).ne.0 ) then      
1246         call do_shape_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1247 <            pot(SHAPE_POT), A, f, t, do_pot)
1247 >            pot(VDW_POT), A, f, t, do_pot)
1248      endif
1249 <
1249 >    
1250      if ( iand(iHash, SHAPE_LJ).ne.0 ) then      
1251         call do_shape_pair(i, j, d, r, rijsq, sw, vpair, fpair, &
1252 <            pot(SHAPE_LJ_POT), A, f, t, do_pot)
1252 >            pot(VDW_POT), A, f, t, do_pot)
1253      endif
1254 <    
1254 >    
1255    end subroutine do_pair
1256  
1257    subroutine do_prepair(i, j, rijsq, d, sw, rcijsq, dc, &
1258         do_pot, do_stress, eFrame, A, f, t, pot)
1259  
1260      real( kind = dp ) :: sw
1261 <    real( kind = dp ), dimension(POT_ARRAY_SIZE) :: pot
1261 >    real( kind = dp ), dimension(LR_POT_TYPES) :: pot
1262      real( kind = dp ), dimension(9,nLocal) :: eFrame
1263      real (kind=dp), dimension(9,nLocal) :: A
1264      real (kind=dp), dimension(3,nLocal) :: f
# Line 1309 | Line 1293 | contains
1293  
1294    subroutine do_preforce(nlocal,pot)
1295      integer :: nlocal
1296 <    real( kind = dp ),dimension(POT_ARRAY_SIZE) :: pot
1296 >    real( kind = dp ),dimension(LR_POT_TYPES) :: pot
1297  
1298      if (FF_uses_EAM .and. SIM_uses_EAM) then
1299 <       call calc_EAM_preforce_Frho(nlocal,pot(EAM_POT))
1299 >       call calc_EAM_preforce_Frho(nlocal,pot(METALLIC_POT))
1300      endif
1301  
1302  
# Line 1398 | Line 1382 | contains
1382      pot_Col = 0.0_dp
1383      pot_Temp = 0.0_dp
1384  
1401    rf_Row = 0.0_dp
1402    rf_Col = 0.0_dp
1403    rf_Temp = 0.0_dp
1404
1385   #endif
1386  
1387      if (FF_uses_EAM .and. SIM_uses_EAM) then
1388         call clean_EAM()
1389      endif
1390  
1411    rf = 0.0_dp
1391      tau_Temp = 0.0_dp
1392      virial_Temp = 0.0_dp
1393    end subroutine zero_work_arrays
# Line 1505 | Line 1484 | contains
1484      doesit = FF_uses_EAM
1485    end function FF_RequiresPrepairCalc
1486  
1508  function FF_RequiresPostpairCalc() result(doesit)
1509    logical :: doesit
1510    if (electrostaticSummationMethod == REACTION_FIELD) doesit = .true.
1511  end function FF_RequiresPostpairCalc
1512
1487   #ifdef PROFILE
1488    function getforcetime() result(totalforcetime)
1489      real(kind=dp) :: totalforcetime

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines