45 |
|
|
46 |
|
!! @author Charles F. Vardeman II |
47 |
|
!! @author Matthew Meineke |
48 |
< |
!! @version $Id: doForces.F90,v 1.24 2005-07-28 22:12:45 chuckv Exp $, $Date: 2005-07-28 22:12:45 $, $Name: not supported by cvs2svn $, $Revision: 1.24 $ |
48 |
> |
!! @version $Id: doForces.F90,v 1.25 2005-07-29 17:34:06 tim Exp $, $Date: 2005-07-29 17:34:06 $, $Name: not supported by cvs2svn $, $Revision: 1.25 $ |
49 |
|
|
50 |
|
|
51 |
|
module doForces |
155 |
|
integer :: j |
156 |
|
integer :: ihash |
157 |
|
real(kind=dp) :: myRcut |
158 |
< |
! Test Types |
158 |
> |
!! Test Types |
159 |
|
logical :: i_is_LJ |
160 |
|
logical :: i_is_Elect |
161 |
|
logical :: i_is_Sticky |
247 |
|
end do |
248 |
|
|
249 |
|
end do |
250 |
+ |
|
251 |
+ |
haveInteractionMap = .true. |
252 |
|
end subroutine createInteractionMap |
253 |
|
|
254 |
|
! Query each potential and return the cutoff for that potential. We build the neighbor list based on the largest cutoff value for that atype. Each potential can decide whether to calculate the force for that atype based upon it's own cutoff. |
276 |
|
|
277 |
|
|
278 |
|
nAtypes = getSize(atypes) |
279 |
< |
! If we pass a default rcut, set all atypes to that cutoff distance |
279 |
> |
!! If we pass a default rcut, set all atypes to that cutoff distance |
280 |
|
if(present(defaultRList)) then |
281 |
|
InteractionMap(:,:)%rList = defaultRList |
282 |
|
InteractionMap(:,:)%rListSq = defaultRList*defaultRList |
289 |
|
iMap = InteractionMap(map_i, map_j)%InteractionHash |
290 |
|
|
291 |
|
if ( iand(iMap, LJ_PAIR).ne.0 ) then |
292 |
< |
! thisRCut = getLJCutOff(map_i,map_j) |
292 |
> |
! thisRCut = getLJCutOff(map_i,map_j) |
293 |
|
if (thisRcut > actualCutoff) actualCutoff = thisRcut |
294 |
|
endif |
295 |
|
|
296 |
|
if ( iand(iMap, ELECTROSTATIC_PAIR).ne.0 ) then |
297 |
< |
! thisRCut = getElectrostaticCutOff(map_i,map_j) |
297 |
> |
! thisRCut = getElectrostaticCutOff(map_i,map_j) |
298 |
|
if (thisRcut > actualCutoff) actualCutoff = thisRcut |
299 |
|
endif |
300 |
|
|
301 |
|
if ( iand(iMap, STICKY_PAIR).ne.0 ) then |
302 |
< |
! thisRCut = getStickyCutOff(map_i,map_j) |
302 |
> |
! thisRCut = getStickyCutOff(map_i,map_j) |
303 |
|
if (thisRcut > actualCutoff) actualCutoff = thisRcut |
304 |
|
endif |
305 |
|
|
306 |
|
if ( iand(iMap, STICKYPOWER_PAIR).ne.0 ) then |
307 |
< |
! thisRCut = getStickyPowerCutOff(map_i,map_j) |
307 |
> |
! thisRCut = getStickyPowerCutOff(map_i,map_j) |
308 |
|
if (thisRcut > actualCutoff) actualCutoff = thisRcut |
309 |
|
endif |
310 |
|
|
311 |
|
if ( iand(iMap, GAYBERNE_PAIR).ne.0 ) then |
312 |
< |
! thisRCut = getGayberneCutOff(map_i,map_j) |
312 |
> |
! thisRCut = getGayberneCutOff(map_i,map_j) |
313 |
|
if (thisRcut > actualCutoff) actualCutoff = thisRcut |
314 |
|
endif |
315 |
|
|
336 |
|
InteractionMap(map_i, map_j)%rListSq = actualCutoff * actualCutoff |
337 |
|
end do |
338 |
|
end do |
339 |
< |
haveRlist = .true. |
339 |
> |
haveRlist = .true. |
340 |
|
end subroutine createRcuts |
341 |
|
|
342 |
|
|
738 |
|
iend = nGroups - 1 |
739 |
|
#endif |
740 |
|
outer: do i = istart, iend |
741 |
+ |
|
742 |
+ |
#ifdef IS_MPI |
743 |
+ |
me_i = atid_row(i) |
744 |
+ |
#else |
745 |
+ |
me_i = atid(i) |
746 |
+ |
#endif |
747 |
|
|
748 |
|
if (update_nlist) point(i) = nlist + 1 |
749 |
|
|
751 |
|
|
752 |
|
if (update_nlist) then |
753 |
|
#ifdef IS_MPI |
746 |
– |
me_i = atid_row(i) |
754 |
|
jstart = 1 |
755 |
|
jend = nGroupsInCol |
756 |
|
#else |
750 |
– |
me_i = atid(i) |
757 |
|
jstart = i+1 |
758 |
|
jend = nGroups |
759 |
|
#endif |