|
|
|
@ -416,551 +416,551 @@ contains
|
|
|
|
|
end subroutine psb_zbcastm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
subroutine psb_iamxs(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_iamxs(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
integer, intent(inout) :: dat
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_iamxs
|
|
|
|
|
|
|
|
|
|
subroutine psb_iamxv(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_iamxv(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
integer, intent(inout) :: dat(:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia(:)
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
integer, allocatable :: cia(:)
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
allocate(cia(size(ia)))
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_iamxv
|
|
|
|
|
|
|
|
|
|
subroutine psb_iamxm(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_iamxm(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
integer, intent(inout) :: dat(:,:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia(:,:)
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
integer, allocatable :: cia(:,:)
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
allocate(cia(size(ia,1),size(ia,2)))
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_iamxm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
subroutine psb_damxs(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_damxs(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
real(kind(1.d0)), intent(inout) :: dat
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_damxs
|
|
|
|
|
|
|
|
|
|
subroutine psb_damxv(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_damxv(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
real(kind(1.d0)), intent(inout) :: dat(:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia(:)
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
integer, allocatable :: cia(:)
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
allocate(cia(size(ia)))
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_damxv
|
|
|
|
|
|
|
|
|
|
subroutine psb_damxm(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_damxm(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
real(kind(1.d0)), intent(inout) :: dat(:,:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia(:,:)
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
integer, allocatable :: cia(:,:)
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
allocate(cia(size(ia,1),size(ia,2)))
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_damxm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
subroutine psb_zamxs(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_zamxs(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
complex(kind(1.d0)), intent(inout) :: dat
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_zamxs
|
|
|
|
|
|
|
|
|
|
subroutine psb_zamxv(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_zamxv(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
complex(kind(1.d0)), intent(inout) :: dat(:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia(:)
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
integer, allocatable :: cia(:)
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
allocate(cia(size(ia)))
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_zamxv
|
|
|
|
|
|
|
|
|
|
subroutine psb_zamxm(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_zamxm(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
complex(kind(1.d0)), intent(inout) :: dat(:,:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia(:,:)
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
integer, allocatable :: cia(:,:)
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
allocate(cia(size(ia,1),size(ia,2)))
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamx2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_zamxm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
subroutine psb_iamns(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_iamns(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
integer, intent(inout) :: dat
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_iamns
|
|
|
|
|
|
|
|
|
|
subroutine psb_iamnv(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_iamnv(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
integer, intent(inout) :: dat(:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia(:)
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
integer, allocatable :: cia(:)
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
allocate(cia(size(ia)))
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_iamnv
|
|
|
|
|
|
|
|
|
|
subroutine psb_iamnm(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_iamnm(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
integer, intent(inout) :: dat(:,:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia(:,:)
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
integer, allocatable :: cia(:,:)
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
allocate(cia(size(ia,1),size(ia,2)))
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_iamnm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
subroutine psb_damns(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_damns(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
real(kind(1.d0)), intent(inout) :: dat
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_damns
|
|
|
|
|
|
|
|
|
|
subroutine psb_damnv(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_damnv(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
real(kind(1.d0)), intent(inout) :: dat(:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia(:)
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
integer, allocatable :: cia(:)
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
allocate(cia(size(ia)))
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_damnv
|
|
|
|
|
|
|
|
|
|
subroutine psb_damnm(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_damnm(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
real(kind(1.d0)), intent(inout) :: dat(:,:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia(:,:)
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
integer, allocatable :: cia(:,:)
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
allocate(cia(size(ia,1),size(ia,2)))
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_damnm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
subroutine psb_zamns(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_zamns(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
complex(kind(1.d0)), intent(inout) :: dat
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_zamns
|
|
|
|
|
|
|
|
|
|
subroutine psb_zamnv(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_zamnv(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
complex(kind(1.d0)), intent(inout) :: dat(:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia(:)
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
integer, allocatable :: cia(:)
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
allocate(cia(size(ia)))
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_zamnv
|
|
|
|
|
|
|
|
|
|
subroutine psb_zamnm(ictxt,dat,rt,ia)
|
|
|
|
|
subroutine psb_zamnm(ictxt,dat,root,ia)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
complex(kind(1.d0)), intent(inout) :: dat(:,:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
integer, intent(inout), optional :: ia(:,:)
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
integer, allocatable :: cia(:,:)
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
if (present(ia)) then
|
|
|
|
|
allocate(cia(size(ia,1),size(ia,2)))
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,ria=ia,cia=cia,rrt=root_)
|
|
|
|
|
else
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gamn2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
endif
|
|
|
|
|
end subroutine psb_zamnm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
subroutine psb_isums(ictxt,dat,rt)
|
|
|
|
|
subroutine psb_isums(ictxt,dat,root)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
integer, intent(inout) :: dat
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
|
|
|
|
|
end subroutine psb_isums
|
|
|
|
|
|
|
|
|
|
subroutine psb_isumv(ictxt,dat,rt)
|
|
|
|
|
subroutine psb_isumv(ictxt,dat,root)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
integer, intent(inout) :: dat(:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
end subroutine psb_isumv
|
|
|
|
|
|
|
|
|
|
subroutine psb_isumm(ictxt,dat,rt)
|
|
|
|
|
subroutine psb_isumm(ictxt,dat,root)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
integer, intent(inout) :: dat(:,:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
|
|
|
|
|
end subroutine psb_isumm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
subroutine psb_dsums(ictxt,dat,rt)
|
|
|
|
|
subroutine psb_dsums(ictxt,dat,root)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
real(kind(1.d0)), intent(inout) :: dat
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
|
|
|
|
|
end subroutine psb_dsums
|
|
|
|
|
|
|
|
|
|
subroutine psb_dsumv(ictxt,dat,rt)
|
|
|
|
|
subroutine psb_dsumv(ictxt,dat,root)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
real(kind(1.d0)), intent(inout) :: dat(:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
|
|
|
|
|
end subroutine psb_dsumv
|
|
|
|
|
|
|
|
|
|
subroutine psb_dsumm(ictxt,dat,rt)
|
|
|
|
|
subroutine psb_dsumm(ictxt,dat,root)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
real(kind(1.d0)), intent(inout) :: dat(:,:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
|
|
|
|
|
end subroutine psb_dsumm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
subroutine psb_zsums(ictxt,dat,rt)
|
|
|
|
|
subroutine psb_zsums(ictxt,dat,root)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
complex(kind(1.d0)), intent(inout) :: dat
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
|
|
|
|
|
end subroutine psb_zsums
|
|
|
|
|
|
|
|
|
|
subroutine psb_zsumv(ictxt,dat,rt)
|
|
|
|
|
subroutine psb_zsumv(ictxt,dat,root)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
complex(kind(1.d0)), intent(inout) :: dat(:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
integer, allocatable :: cia(:)
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
|
|
|
|
|
end subroutine psb_zsumv
|
|
|
|
|
|
|
|
|
|
subroutine psb_zsumm(ictxt,dat,rt)
|
|
|
|
|
subroutine psb_zsumm(ictxt,dat,root)
|
|
|
|
|
integer, intent(in) :: ictxt
|
|
|
|
|
complex(kind(1.d0)), intent(inout) :: dat(:,:)
|
|
|
|
|
integer, intent(in), optional :: rt
|
|
|
|
|
integer, intent(in), optional :: root
|
|
|
|
|
|
|
|
|
|
integer :: rt_
|
|
|
|
|
integer :: root_
|
|
|
|
|
|
|
|
|
|
if (present(rt)) then
|
|
|
|
|
rt_ = rt
|
|
|
|
|
if (present(root)) then
|
|
|
|
|
root_ = root
|
|
|
|
|
else
|
|
|
|
|
rt_ = -1
|
|
|
|
|
root_ = -1
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=rt_)
|
|
|
|
|
call gsum2d(ictxt,'A',dat,rrt=root_)
|
|
|
|
|
|
|
|
|
|
end subroutine psb_zsumm
|
|
|
|
|
|
|
|
|
|