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

Comparing trunk/OOPSE/libmdtools/simulation_module.F90 (file contents):
Revision 1199 by gezelter, Thu May 27 15:21:20 2004 UTC vs.
Revision 1206 by tim, Thu May 27 19:51:18 2004 UTC

# Line 223 | Line 223 | contains
223      mfactLocal = Cmfact        
224              
225      call gather(groupStartLocal, groupStartRow, plan_group_row)
226 <    call gather(groupStartLocal, groupStartCol, plan_group_col)
226 >    call gather(groupStartLocal, groupStartCol, plan_group_col)  
227      groupStartRow(nGroupsInRow+1) = nAtomsInRow + 1
228      groupStartCol(nGroupsInCol+1) = nAtomsInCol + 1
229      call gather(groupListLocal,  groupListRow,  plan_atom_row)
230      call gather(groupListLocal,  groupListCol,  plan_atom_col)
231 +
232 +    ! C passes us groupList as globalID numbers for the atoms
233 +    ! we need to remap these onto the row and column ids on this
234 +    ! processor.  This is a linear search, but is only done once
235 +    ! (we hope)
236 +
237 +    do i = 1, nAtomsInRow
238 +       do j = 1, nAtomsInRow
239 +          if (AtomRowToGlobal(j) .eq. groupListRow(i)) then
240 +             groupListRow(i) = j
241 +          endif
242 +       enddo
243 +    enddo
244 +    do i = 1, nAtomsInCol
245 +       do j = 1, nAtomsInCol
246 +          if (AtomColToGlobal(j) .eq. groupListCol(i)) then
247 +             groupListCol(i) = j
248 +          endif
249 +       enddo
250 +    enddo
251      call gather(mfactLocal,      mfactRow,      plan_atom_row)
252      call gather(mfactLocal,      mfactCol,      plan_atom_col)
253      
# Line 301 | Line 321 | contains
321      enddo
322  
323      maxSkipsForAtom = 0
324 + #ifdef IS_MPI
325 +    do j = 1, nAtomsInRow
326 + #else
327      do j = 1, nLocal
328 + #endif
329         nSkipsForAtom(j) = 0
330   #ifdef IS_MPI
331         id1 = AtomRowToGlobal(j)
# Line 326 | Line 350 | contains
350         end do
351      enddo
352  
353 + #ifdef IS_MPI
354 +    allocate(skipsForAtom(nAtomsInRow, maxSkipsForAtom), stat=alloc_stat)
355 + #else
356      allocate(skipsForAtom(nLocal, maxSkipsForAtom), stat=alloc_stat)
357 + #endif
358      if (alloc_stat /= 0 ) then
359         write(*,*) 'Could not allocate skipsForAtom array'
360         return
361      endif
362  
363 + #ifdef IS_MPI
364 +    do j = 1, nAtomsInRow
365 + #else
366      do j = 1, nLocal
367 + #endif
368         nSkipsForAtom(j) = 0
369   #ifdef IS_MPI
370         id1 = AtomRowToGlobal(j)
# Line 342 | Line 374 | contains
374         do i = 1, nExcludes_Local
375            if (excludesLocal(1,i) .eq. id1 ) then
376               nSkipsForAtom(j) = nSkipsForAtom(j) + 1
377 < #ifdef IS_MPI
378 <             id2 = AtomColToGlobal(excludesLocal(2,i))
347 < #else
377 >             ! exclude lists have global ID's so this line is
378 >             ! the same in MPI and non-MPI
379               id2 = excludesLocal(2,i)
349 #endif
380               skipsForAtom(j, nSkipsForAtom(j)) = id2
381            endif
382            if (excludesLocal(2, i) .eq. id2 ) then
383               nSkipsForAtom(j) = nSkipsForAtom(j) + 1
384 < #ifdef IS_MPI
385 <             id2 = AtomColToGlobal(excludesLocal(1,i))
356 < #else
384 >             ! exclude lists have global ID's so this line is
385 >             ! the same in MPI and non-MPI
386               id2 = excludesLocal(1,i)
358 #endif
387               skipsForAtom(j, nSkipsForAtom(j)) = id2
388            endif
389         end do

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines