251 |
|
integer, intent(out) :: status |
252 |
|
|
253 |
|
#ifdef IS_MPI |
254 |
< |
integer :: nrow |
255 |
< |
integer :: ncol |
254 |
> |
integer :: nAtomsInRow |
255 |
> |
integer :: nAtomsInCol |
256 |
|
#endif |
257 |
|
integer :: alloc_stat |
258 |
|
|
259 |
|
|
260 |
|
status = 0 |
261 |
|
#ifdef IS_MPI |
262 |
< |
nrow = getNrow(plan_row) |
263 |
< |
ncol = getNcol(plan_col) |
262 |
> |
nAtomsInRow = getNatomsInRow(plan_atom_row) |
263 |
> |
nAtomsInCol = getNatomsInCol(plan_atom_col) |
264 |
|
#endif |
265 |
|
|
266 |
|
if (allocated(frho)) deallocate(frho) |
301 |
|
|
302 |
|
|
303 |
|
if (allocated(frho_row)) deallocate(frho_row) |
304 |
< |
allocate(frho_row(nrow),stat=alloc_stat) |
304 |
> |
allocate(frho_row(nAtomsInRow),stat=alloc_stat) |
305 |
|
if (alloc_stat /= 0) then |
306 |
|
status = -1 |
307 |
|
return |
308 |
|
end if |
309 |
|
if (allocated(rho_row)) deallocate(rho_row) |
310 |
< |
allocate(rho_row(nrow),stat=alloc_stat) |
310 |
> |
allocate(rho_row(nAtomsInRow),stat=alloc_stat) |
311 |
|
if (alloc_stat /= 0) then |
312 |
|
status = -1 |
313 |
|
return |
314 |
|
end if |
315 |
|
if (allocated(dfrhodrho_row)) deallocate(dfrhodrho_row) |
316 |
< |
allocate(dfrhodrho_row(nrow),stat=alloc_stat) |
316 |
> |
allocate(dfrhodrho_row(nAtomsInRow),stat=alloc_stat) |
317 |
|
if (alloc_stat /= 0) then |
318 |
|
status = -1 |
319 |
|
return |
320 |
|
end if |
321 |
|
if (allocated(d2frhodrhodrho_row)) deallocate(d2frhodrhodrho_row) |
322 |
< |
allocate(d2frhodrhodrho_row(nrow),stat=alloc_stat) |
322 |
> |
allocate(d2frhodrhodrho_row(nAtomsInRow),stat=alloc_stat) |
323 |
|
if (alloc_stat /= 0) then |
324 |
|
status = -1 |
325 |
|
return |
329 |
|
! Now do column arrays |
330 |
|
|
331 |
|
if (allocated(frho_col)) deallocate(frho_col) |
332 |
< |
allocate(frho_col(ncol),stat=alloc_stat) |
332 |
> |
allocate(frho_col(nAtomsInCol),stat=alloc_stat) |
333 |
|
if (alloc_stat /= 0) then |
334 |
|
status = -1 |
335 |
|
return |
336 |
|
end if |
337 |
|
if (allocated(rho_col)) deallocate(rho_col) |
338 |
< |
allocate(rho_col(ncol),stat=alloc_stat) |
338 |
> |
allocate(rho_col(nAtomsInCol),stat=alloc_stat) |
339 |
|
if (alloc_stat /= 0) then |
340 |
|
status = -1 |
341 |
|
return |
342 |
|
end if |
343 |
|
if (allocated(dfrhodrho_col)) deallocate(dfrhodrho_col) |
344 |
< |
allocate(dfrhodrho_col(ncol),stat=alloc_stat) |
344 |
> |
allocate(dfrhodrho_col(nAtomsInCol),stat=alloc_stat) |
345 |
|
if (alloc_stat /= 0) then |
346 |
|
status = -1 |
347 |
|
return |
348 |
|
end if |
349 |
|
if (allocated(d2frhodrhodrho_col)) deallocate(d2frhodrhodrho_col) |
350 |
< |
allocate(d2frhodrhodrho_col(ncol),stat=alloc_stat) |
350 |
> |
allocate(d2frhodrhodrho_col(nAtomsInCol),stat=alloc_stat) |
351 |
|
if (alloc_stat /= 0) then |
352 |
|
status = -1 |
353 |
|
return |
567 |
|
cleanme = .true. |
568 |
|
!! Scatter the electron density from pre-pair calculation back to local atoms |
569 |
|
#ifdef IS_MPI |
570 |
< |
call scatter(rho_row,rho,plan_row,eam_err) |
570 |
> |
call scatter(rho_row,rho,plan_atom_row,eam_err) |
571 |
|
if (eam_err /= 0 ) then |
572 |
|
write(errMsg,*) " Error scattering rho_row into rho" |
573 |
|
call handleError(RoutineName,errMesg) |
574 |
|
endif |
575 |
< |
call scatter(rho_col,rho_tmp,plan_col,eam_err) |
575 |
> |
call scatter(rho_col,rho_tmp,plan_atom_col,eam_err) |
576 |
|
if (eam_err /= 0 ) then |
577 |
|
write(errMsg,*) " Error scattering rho_col into rho" |
578 |
|
call handleError(RoutineName,errMesg) |
617 |
|
|
618 |
|
#ifdef IS_MPI |
619 |
|
!! communicate f(rho) and derivatives back into row and column arrays |
620 |
< |
call gather(frho,frho_row,plan_row, eam_err) |
620 |
> |
call gather(frho,frho_row,plan_atom_row, eam_err) |
621 |
|
if (eam_err /= 0) then |
622 |
|
call handleError("cal_eam_forces()","MPI gather frho_row failure") |
623 |
|
endif |
624 |
< |
call gather(dfrhodrho,dfrhodrho_row,plan_row, eam_err) |
624 |
> |
call gather(dfrhodrho,dfrhodrho_row,plan_atom_row, eam_err) |
625 |
|
if (eam_err /= 0) then |
626 |
|
call handleError("cal_eam_forces()","MPI gather dfrhodrho_row failure") |
627 |
|
endif |
628 |
< |
call gather(frho,frho_col,plan_col, eam_err) |
628 |
> |
call gather(frho,frho_col,plan_atom_col, eam_err) |
629 |
|
if (eam_err /= 0) then |
630 |
|
call handleError("cal_eam_forces()","MPI gather frho_col failure") |
631 |
|
endif |
632 |
< |
call gather(dfrhodrho,dfrhodrho_col,plan_col, eam_err) |
632 |
> |
call gather(dfrhodrho,dfrhodrho_col,plan_atom_col, eam_err) |
633 |
|
if (eam_err /= 0) then |
634 |
|
call handleError("cal_eam_forces()","MPI gather dfrhodrho_col failure") |
635 |
|
endif |
639 |
|
|
640 |
|
|
641 |
|
if (nmflag) then |
642 |
< |
call gather(d2frhodrhodrho,d2frhodrhodrho_row,plan_row) |
643 |
< |
call gather(d2frhodrhodrho,d2frhodrhodrho_col,plan_col) |
642 |
> |
call gather(d2frhodrhodrho,d2frhodrhodrho_row,plan_atom_row) |
643 |
> |
call gather(d2frhodrhodrho,d2frhodrhodrho_col,plan_atom_col) |
644 |
|
endif |
645 |
|
#endif |
646 |
|
|
816 |
|
|
817 |
|
vpair = vpair + phab |
818 |
|
#ifdef IS_MPI |
819 |
< |
id1 = tagRow(atom1) |
820 |
< |
id2 = tagColumn(atom2) |
819 |
> |
id1 = AtomRowToGlobal(atom1) |
820 |
> |
id2 = AtomColToGlobal(atom2) |
821 |
|
#else |
822 |
|
id1 = atom1 |
823 |
|
id2 = atom2 |