|
|
@ -34,16 +34,21 @@
|
|
|
|
! This subroutine gathers pieces of a distributed dense matrix into a local one.
|
|
|
|
! This subroutine gathers pieces of a distributed dense matrix into a local one.
|
|
|
|
!
|
|
|
|
!
|
|
|
|
! Parameters:
|
|
|
|
! Parameters:
|
|
|
|
! globx - real,dimension(:,:). The local matrix into which gather the distributed pieces.
|
|
|
|
! globx - real,dimension(:,:). The local matrix into which gather
|
|
|
|
! locx - real,dimension(:,:). The local piece of the ditributed matrix to be gathered.
|
|
|
|
! the distributed pieces.
|
|
|
|
|
|
|
|
! locx - real,dimension(:,:). The local piece of the distributed
|
|
|
|
|
|
|
|
! matrix to be gathered.
|
|
|
|
! desc_a - type(<psb_desc_type>). The communication descriptor.
|
|
|
|
! desc_a - type(<psb_desc_type>). The communication descriptor.
|
|
|
|
! info - integer. Eventually returns an error code.
|
|
|
|
! info - integer. Eventually returns an error code.
|
|
|
|
! iroot - integer. The process that has to own the global matrix. If -1 all
|
|
|
|
! iroot - integer. The process that has to own the
|
|
|
|
|
|
|
|
! global matrix. If -1 all
|
|
|
|
! the processes will have a copy.
|
|
|
|
! the processes will have a copy.
|
|
|
|
! iiglobx - integer(optional). The starting row of the global matrix.
|
|
|
|
! iiglobx - integer(optional). The starting row of the global matrix.
|
|
|
|
! ijglobx - integer(optional). The starting column of the global matrix.
|
|
|
|
! ijglobx - integer(optional). The starting column of the global matrix.
|
|
|
|
! iilocx - integer(optional). The starting row of the local piece of matrix.
|
|
|
|
! iilocx - integer(optional). The starting row of the local piece
|
|
|
|
! ijlocx - integer(optional). The starting column of the local piece of matrix.
|
|
|
|
! of matrix.
|
|
|
|
|
|
|
|
! ijlocx - integer(optional). The starting column of the local piece
|
|
|
|
|
|
|
|
! of matrix.
|
|
|
|
! ik - integer(optional). The number of columns to gather.
|
|
|
|
! ik - integer(optional). The number of columns to gather.
|
|
|
|
!
|
|
|
|
!
|
|
|
|
subroutine psb_zgatherm(globx, locx, desc_a, info, iroot,&
|
|
|
|
subroutine psb_zgatherm(globx, locx, desc_a, info, iroot,&
|
|
|
@ -171,11 +176,12 @@ subroutine psb_zgatherm(globx, locx, desc_a, info, iroot,&
|
|
|
|
globx(idx,jglobx+j-1) = locx(i,jlx+j-1)
|
|
|
|
globx(idx,jglobx+j-1) = locx(i,jlx+j-1)
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
! adjust overlapped elements
|
|
|
|
! adjust overlapped elements
|
|
|
|
i=0
|
|
|
|
i=1
|
|
|
|
do while (desc_a%ovrlap_elem(i).ne.-1)
|
|
|
|
do while (desc_a%ovrlap_elem(i).ne.-1)
|
|
|
|
idx=desc_a%ovrlap_elem(i+psb_ovrlp_elem_)
|
|
|
|
idx=desc_a%ovrlap_elem(i+psb_ovrlp_elem_)
|
|
|
|
idx=desc_a%loc_to_glob(idx)
|
|
|
|
idx=desc_a%loc_to_glob(idx)
|
|
|
|
globx(idx,jglobx+j-1) = globx(idx,jglobx+j-1)/desc_a%ovrlap_elem(i+psb_n_dom_ovr_)
|
|
|
|
globx(idx,jglobx+j-1) = &
|
|
|
|
|
|
|
|
& globx(idx,jglobx+j-1)/desc_a%ovrlap_elem(i+psb_n_dom_ovr_)
|
|
|
|
i=i+2
|
|
|
|
i=i+2
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
end do
|
|
|
|
end do
|
|
|
@ -235,14 +241,18 @@ end subroutine psb_zgatherm
|
|
|
|
! This subroutine gathers pieces of a distributed dense vector into a local one.
|
|
|
|
! This subroutine gathers pieces of a distributed dense vector into a local one.
|
|
|
|
!
|
|
|
|
!
|
|
|
|
! Parameters:
|
|
|
|
! Parameters:
|
|
|
|
! globx - real,dimension(:). The local vector into which gather the distributed pieces.
|
|
|
|
! globx - real,dimension(:). The local vector into which gather
|
|
|
|
! locx - real,dimension(:). The local piece of the ditributed vector to be gathered.
|
|
|
|
! the distributed pieces.
|
|
|
|
|
|
|
|
! locx - real,dimension(:). The local piece of the distributed
|
|
|
|
|
|
|
|
! vector to be gathered.
|
|
|
|
! desc_a - type(<psb_desc_type>). The communication descriptor.
|
|
|
|
! desc_a - type(<psb_desc_type>). The communication descriptor.
|
|
|
|
! info - integer. Eventually returns an error code.
|
|
|
|
! info - integer. Eventually returns an error code.
|
|
|
|
! iroot - integer. The process that has to own the global vector. If -1 all
|
|
|
|
! iroot - integer. The process that has to own the
|
|
|
|
|
|
|
|
! global vector. If -1 all
|
|
|
|
! the processes will have a copy.
|
|
|
|
! the processes will have a copy.
|
|
|
|
! iiglobx - integer(optional). The starting row of the global vector.
|
|
|
|
! iiglobx - integer(optional). The starting row of the global vector.
|
|
|
|
! iilocx - integer(optional). The starting row of the local piece of vector.
|
|
|
|
! iilocx - integer(optional). The starting row of the local piece
|
|
|
|
|
|
|
|
! of vector.
|
|
|
|
!
|
|
|
|
!
|
|
|
|
subroutine psb_zgatherv(globx, locx, desc_a, info, iroot,&
|
|
|
|
subroutine psb_zgatherv(globx, locx, desc_a, info, iroot,&
|
|
|
|
& iiglobx, iilocx)
|
|
|
|
& iiglobx, iilocx)
|
|
|
|