223 |
|
mfactLocal = Cmfact |
224 |
|
|
225 |
|
call gather(groupStartLocal, groupStartRow, plan_group_row) |
226 |
< |
call gather(groupStartLocal, groupStartCol, plan_group_col) |
227 |
< |
groupStartRow(nGroupsInRow+1) = nAtomsInRow |
228 |
< |
groupStartCol(nGroupsInCol+1) = nAtomsInCol |
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 |
|
|
295 |
|
groupStartRow(i) = CgroupStart(i) |
296 |
|
groupStartCol(i) = CgroupStart(i) |
297 |
|
end do |
298 |
< |
groupStartRow(nGroups+1) = nLocal |
299 |
< |
groupStartCol(nGroups+1) = nLocal |
298 |
> |
groupStartRow(nGroups+1) = nLocal + 1 |
299 |
> |
groupStartCol(nGroups+1) = nLocal + 1 |
300 |
|
do i = 1, nLocal |
301 |
|
groupListRow(i) = CgroupList(i) |
302 |
|
groupListCol(i) = CgroupList(i) |