Fix calls to checkvect in data exchange functions.

merge-paraggr
Salvatore Filippone 6 years ago
parent 08063d4f48
commit 113478ea64

@ -67,7 +67,7 @@ subroutine psb_chalo_vect(x,desc_a,info,work,tran,mode,data)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, &
& nrow, imode, err, liwork,data_ & nrow, ncol, lldx, imode, err, liwork,data_
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
complex(psb_spk_),pointer :: iwork(:) complex(psb_spk_),pointer :: iwork(:)
character :: tran_ character :: tran_
@ -98,11 +98,12 @@ subroutine psb_chalo_vect(x,desc_a,info,work,tran,mode,data)
endif endif
ix = 1 ix = 1
ijx = 1
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
lldx = x%get_nrows()
if (present(tran)) then if (present(tran)) then
tran_ = psb_toupper(tran) tran_ = psb_toupper(tran)
@ -120,23 +121,14 @@ subroutine psb_chalo_vect(x,desc_a,info,work,tran,mode,data)
imode = IOR(psb_swap_send_,psb_swap_recv_) imode = IOR(psb_swap_send_,psb_swap_recv_)
endif endif
! check vector correctness if ((info == 0).and.(lldx<ncol)) call x%reall(ncol,info)
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then
@ -208,7 +200,7 @@ subroutine psb_chalo_multivect(x,desc_a,info,work,tran,mode,data)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, &
& nrow, imode, err, liwork,data_ & nrow, ncol, lldx, imode, err, liwork,data_
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
complex(psb_spk_),pointer :: iwork(:) complex(psb_spk_),pointer :: iwork(:)
character :: tran_ character :: tran_
@ -244,6 +236,8 @@ subroutine psb_chalo_multivect(x,desc_a,info,work,tran,mode,data)
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
lldx = x%get_nrows()
if (present(tran)) then if (present(tran)) then
tran_ = psb_toupper(tran) tran_ = psb_toupper(tran)
@ -261,23 +255,14 @@ subroutine psb_chalo_multivect(x,desc_a,info,work,tran,mode,data)
imode = IOR(psb_swap_send_,psb_swap_recv_) imode = IOR(psb_swap_send_,psb_swap_recv_)
endif endif
! check vector correctness if (lldx < ncol) call x%reall(ncol,x%get_ncols(),info)
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then

@ -132,22 +132,13 @@ subroutine psb_chalom(x,desc_a,info,jx,ik,work,tran,mode,data)
endif endif
ldx = size(x,1) ldx = size(x,1)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx,check_halo=.true.)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then
@ -324,22 +315,13 @@ subroutine psb_chalov(x,desc_a,info,work,tran,mode,data)
endif endif
ldx = size(x,1) ldx = size(x,1)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx,check_halo=.true.)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then

@ -76,7 +76,7 @@ subroutine psb_covrl_vect(x,desc_a,info,work,update,mode)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, &
& nrow, imode, err, liwork,data_, update_, mode_, ncol & nrow, ncol, imode, err,liwork_, data_, update_, mode
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
complex(psb_spk_),pointer :: iwork(:) complex(psb_spk_),pointer :: iwork(:)
logical :: do_swap logical :: do_swap
@ -106,13 +106,12 @@ subroutine psb_covrl_vect(x,desc_a,info,work,update,mode)
endif endif
ix = 1 ix = 1
ijx = 1
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols() ncol = desc_a%get_local_cols()
ldx = x%get_nrows()
k = 1 k = 1
if (present(update)) then if (present(update)) then
@ -129,22 +128,14 @@ subroutine psb_covrl_vect(x,desc_a,info,work,update,mode)
do_swap = (mode_ /= 0) do_swap = (mode_ /= 0)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if ((info == 0).and.(ldx<ncol)) call x%reall(ncol,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then
@ -203,7 +194,7 @@ subroutine psb_covrl_multivect(x,desc_a,info,work,update,mode)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, &
& nrow, imode, err, liwork,data_, update_, mode_, ncol & nrow, ncol, ldx, imode, err,liwork_, data_, update_, mode
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
complex(psb_spk_),pointer :: iwork(:) complex(psb_spk_),pointer :: iwork(:)
logical :: do_swap logical :: do_swap
@ -239,6 +230,7 @@ subroutine psb_covrl_multivect(x,desc_a,info,work,update,mode)
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols() ncol = desc_a%get_local_cols()
ldx = x%get_nrows()
k = 1 k = 1
@ -256,22 +248,14 @@ subroutine psb_covrl_multivect(x,desc_a,info,work,update,mode)
do_swap = (mode_ /= 0) do_swap = (mode_ /= 0)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx) if (ldx < ncol) call x%reall(ncol,x%get_ncols(),info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then

@ -142,20 +142,11 @@ subroutine psb_covrlm(x,desc_a,info,jx,ik,work,update,mode)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then
@ -335,9 +326,8 @@ subroutine psb_covrlv(x,desc_a,info,work,update,mode)
call psb_errpush(info,name) call psb_errpush(info,name)
end if end if
err=info if(info /= 0) goto 9999
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol

@ -67,7 +67,7 @@ subroutine psb_dhalo_vect(x,desc_a,info,work,tran,mode,data)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, &
& nrow, imode, err, liwork,data_ & nrow, ncol, lldx, imode, err, liwork,data_
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
real(psb_dpk_),pointer :: iwork(:) real(psb_dpk_),pointer :: iwork(:)
character :: tran_ character :: tran_
@ -98,11 +98,12 @@ subroutine psb_dhalo_vect(x,desc_a,info,work,tran,mode,data)
endif endif
ix = 1 ix = 1
ijx = 1
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
lldx = x%get_nrows()
if (present(tran)) then if (present(tran)) then
tran_ = psb_toupper(tran) tran_ = psb_toupper(tran)
@ -120,23 +121,14 @@ subroutine psb_dhalo_vect(x,desc_a,info,work,tran,mode,data)
imode = IOR(psb_swap_send_,psb_swap_recv_) imode = IOR(psb_swap_send_,psb_swap_recv_)
endif endif
! check vector correctness if ((info == 0).and.(lldx<ncol)) call x%reall(ncol,info)
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then
@ -208,7 +200,7 @@ subroutine psb_dhalo_multivect(x,desc_a,info,work,tran,mode,data)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, &
& nrow, imode, err, liwork,data_ & nrow, ncol, lldx, imode, err, liwork,data_
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
real(psb_dpk_),pointer :: iwork(:) real(psb_dpk_),pointer :: iwork(:)
character :: tran_ character :: tran_
@ -244,6 +236,8 @@ subroutine psb_dhalo_multivect(x,desc_a,info,work,tran,mode,data)
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
lldx = x%get_nrows()
if (present(tran)) then if (present(tran)) then
tran_ = psb_toupper(tran) tran_ = psb_toupper(tran)
@ -261,23 +255,14 @@ subroutine psb_dhalo_multivect(x,desc_a,info,work,tran,mode,data)
imode = IOR(psb_swap_send_,psb_swap_recv_) imode = IOR(psb_swap_send_,psb_swap_recv_)
endif endif
! check vector correctness if (lldx < ncol) call x%reall(ncol,x%get_ncols(),info)
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then

@ -132,22 +132,13 @@ subroutine psb_dhalom(x,desc_a,info,jx,ik,work,tran,mode,data)
endif endif
ldx = size(x,1) ldx = size(x,1)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx,check_halo=.true.)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then
@ -324,22 +315,13 @@ subroutine psb_dhalov(x,desc_a,info,work,tran,mode,data)
endif endif
ldx = size(x,1) ldx = size(x,1)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx,check_halo=.true.)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then

@ -76,7 +76,7 @@ subroutine psb_dovrl_vect(x,desc_a,info,work,update,mode)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, &
& nrow, imode, err, liwork,data_, update_, mode_, ncol & nrow, ncol, imode, err,liwork_, data_, update_, mode
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
real(psb_dpk_),pointer :: iwork(:) real(psb_dpk_),pointer :: iwork(:)
logical :: do_swap logical :: do_swap
@ -106,13 +106,12 @@ subroutine psb_dovrl_vect(x,desc_a,info,work,update,mode)
endif endif
ix = 1 ix = 1
ijx = 1
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols() ncol = desc_a%get_local_cols()
ldx = x%get_nrows()
k = 1 k = 1
if (present(update)) then if (present(update)) then
@ -129,22 +128,14 @@ subroutine psb_dovrl_vect(x,desc_a,info,work,update,mode)
do_swap = (mode_ /= 0) do_swap = (mode_ /= 0)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if ((info == 0).and.(ldx<ncol)) call x%reall(ncol,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then
@ -203,7 +194,7 @@ subroutine psb_dovrl_multivect(x,desc_a,info,work,update,mode)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, &
& nrow, imode, err, liwork,data_, update_, mode_, ncol & nrow, ncol, ldx, imode, err,liwork_, data_, update_, mode
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
real(psb_dpk_),pointer :: iwork(:) real(psb_dpk_),pointer :: iwork(:)
logical :: do_swap logical :: do_swap
@ -239,6 +230,7 @@ subroutine psb_dovrl_multivect(x,desc_a,info,work,update,mode)
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols() ncol = desc_a%get_local_cols()
ldx = x%get_nrows()
k = 1 k = 1
@ -256,22 +248,14 @@ subroutine psb_dovrl_multivect(x,desc_a,info,work,update,mode)
do_swap = (mode_ /= 0) do_swap = (mode_ /= 0)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx) if (ldx < ncol) call x%reall(ncol,x%get_ncols(),info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then

@ -142,20 +142,11 @@ subroutine psb_dovrlm(x,desc_a,info,jx,ik,work,update,mode)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then
@ -335,9 +326,8 @@ subroutine psb_dovrlv(x,desc_a,info,work,update,mode)
call psb_errpush(info,name) call psb_errpush(info,name)
end if end if
err=info if(info /= 0) goto 9999
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol

@ -132,22 +132,13 @@ subroutine psb_ehalom(x,desc_a,info,jx,ik,work,tran,mode,data)
endif endif
ldx = size(x,1) ldx = size(x,1)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx,check_halo=.true.)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then
@ -324,22 +315,13 @@ subroutine psb_ehalov(x,desc_a,info,work,tran,mode,data)
endif endif
ldx = size(x,1) ldx = size(x,1)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx,check_halo=.true.)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then

@ -142,20 +142,11 @@ subroutine psb_eovrlm(x,desc_a,info,jx,ik,work,update,mode)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then
@ -335,9 +326,8 @@ subroutine psb_eovrlv(x,desc_a,info,work,update,mode)
call psb_errpush(info,name) call psb_errpush(info,name)
end if end if
err=info if(info /= 0) goto 9999
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol

@ -67,7 +67,7 @@ subroutine psb_ihalo_vect(x,desc_a,info,work,tran,mode,data)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, &
& nrow, imode, err, liwork,data_ & nrow, ncol, lldx, imode, err, liwork,data_
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
integer(psb_ipk_),pointer :: iwork(:) integer(psb_ipk_),pointer :: iwork(:)
character :: tran_ character :: tran_
@ -98,11 +98,12 @@ subroutine psb_ihalo_vect(x,desc_a,info,work,tran,mode,data)
endif endif
ix = 1 ix = 1
ijx = 1
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
lldx = x%get_nrows()
if (present(tran)) then if (present(tran)) then
tran_ = psb_toupper(tran) tran_ = psb_toupper(tran)
@ -120,23 +121,14 @@ subroutine psb_ihalo_vect(x,desc_a,info,work,tran,mode,data)
imode = IOR(psb_swap_send_,psb_swap_recv_) imode = IOR(psb_swap_send_,psb_swap_recv_)
endif endif
! check vector correctness if ((info == 0).and.(lldx<ncol)) call x%reall(ncol,info)
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then
@ -208,7 +200,7 @@ subroutine psb_ihalo_multivect(x,desc_a,info,work,tran,mode,data)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, &
& nrow, imode, err, liwork,data_ & nrow, ncol, lldx, imode, err, liwork,data_
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
integer(psb_ipk_),pointer :: iwork(:) integer(psb_ipk_),pointer :: iwork(:)
character :: tran_ character :: tran_
@ -244,6 +236,8 @@ subroutine psb_ihalo_multivect(x,desc_a,info,work,tran,mode,data)
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
lldx = x%get_nrows()
if (present(tran)) then if (present(tran)) then
tran_ = psb_toupper(tran) tran_ = psb_toupper(tran)
@ -261,23 +255,14 @@ subroutine psb_ihalo_multivect(x,desc_a,info,work,tran,mode,data)
imode = IOR(psb_swap_send_,psb_swap_recv_) imode = IOR(psb_swap_send_,psb_swap_recv_)
endif endif
! check vector correctness if (lldx < ncol) call x%reall(ncol,x%get_ncols(),info)
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then

@ -76,7 +76,7 @@ subroutine psb_iovrl_vect(x,desc_a,info,work,update,mode)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, &
& nrow, imode, err, liwork,data_, update_, mode_, ncol & nrow, ncol, imode, err,liwork_, data_, update_, mode
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
integer(psb_ipk_),pointer :: iwork(:) integer(psb_ipk_),pointer :: iwork(:)
logical :: do_swap logical :: do_swap
@ -106,13 +106,12 @@ subroutine psb_iovrl_vect(x,desc_a,info,work,update,mode)
endif endif
ix = 1 ix = 1
ijx = 1
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols() ncol = desc_a%get_local_cols()
ldx = x%get_nrows()
k = 1 k = 1
if (present(update)) then if (present(update)) then
@ -129,22 +128,14 @@ subroutine psb_iovrl_vect(x,desc_a,info,work,update,mode)
do_swap = (mode_ /= 0) do_swap = (mode_ /= 0)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if ((info == 0).and.(ldx<ncol)) call x%reall(ncol,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then
@ -203,7 +194,7 @@ subroutine psb_iovrl_multivect(x,desc_a,info,work,update,mode)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, &
& nrow, imode, err, liwork,data_, update_, mode_, ncol & nrow, ncol, ldx, imode, err,liwork_, data_, update_, mode
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
integer(psb_ipk_),pointer :: iwork(:) integer(psb_ipk_),pointer :: iwork(:)
logical :: do_swap logical :: do_swap
@ -239,6 +230,7 @@ subroutine psb_iovrl_multivect(x,desc_a,info,work,update,mode)
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols() ncol = desc_a%get_local_cols()
ldx = x%get_nrows()
k = 1 k = 1
@ -256,22 +248,14 @@ subroutine psb_iovrl_multivect(x,desc_a,info,work,update,mode)
do_swap = (mode_ /= 0) do_swap = (mode_ /= 0)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx) if (ldx < ncol) call x%reall(ncol,x%get_ncols(),info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then

@ -67,7 +67,7 @@ subroutine psb_lhalo_vect(x,desc_a,info,work,tran,mode,data)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, &
& nrow, imode, err, liwork,data_ & nrow, ncol, lldx, imode, err, liwork,data_
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
integer(psb_lpk_),pointer :: iwork(:) integer(psb_lpk_),pointer :: iwork(:)
character :: tran_ character :: tran_
@ -98,11 +98,12 @@ subroutine psb_lhalo_vect(x,desc_a,info,work,tran,mode,data)
endif endif
ix = 1 ix = 1
ijx = 1
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
lldx = x%get_nrows()
if (present(tran)) then if (present(tran)) then
tran_ = psb_toupper(tran) tran_ = psb_toupper(tran)
@ -120,23 +121,14 @@ subroutine psb_lhalo_vect(x,desc_a,info,work,tran,mode,data)
imode = IOR(psb_swap_send_,psb_swap_recv_) imode = IOR(psb_swap_send_,psb_swap_recv_)
endif endif
! check vector correctness if ((info == 0).and.(lldx<ncol)) call x%reall(ncol,info)
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then
@ -208,7 +200,7 @@ subroutine psb_lhalo_multivect(x,desc_a,info,work,tran,mode,data)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, &
& nrow, imode, err, liwork,data_ & nrow, ncol, lldx, imode, err, liwork,data_
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
integer(psb_lpk_),pointer :: iwork(:) integer(psb_lpk_),pointer :: iwork(:)
character :: tran_ character :: tran_
@ -244,6 +236,8 @@ subroutine psb_lhalo_multivect(x,desc_a,info,work,tran,mode,data)
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
lldx = x%get_nrows()
if (present(tran)) then if (present(tran)) then
tran_ = psb_toupper(tran) tran_ = psb_toupper(tran)
@ -261,23 +255,14 @@ subroutine psb_lhalo_multivect(x,desc_a,info,work,tran,mode,data)
imode = IOR(psb_swap_send_,psb_swap_recv_) imode = IOR(psb_swap_send_,psb_swap_recv_)
endif endif
! check vector correctness if (lldx < ncol) call x%reall(ncol,x%get_ncols(),info)
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then

@ -76,7 +76,7 @@ subroutine psb_lovrl_vect(x,desc_a,info,work,update,mode)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, &
& nrow, imode, err, liwork,data_, update_, mode_, ncol & nrow, ncol, imode, err,liwork_, data_, update_, mode
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
integer(psb_lpk_),pointer :: iwork(:) integer(psb_lpk_),pointer :: iwork(:)
logical :: do_swap logical :: do_swap
@ -106,13 +106,12 @@ subroutine psb_lovrl_vect(x,desc_a,info,work,update,mode)
endif endif
ix = 1 ix = 1
ijx = 1
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols() ncol = desc_a%get_local_cols()
ldx = x%get_nrows()
k = 1 k = 1
if (present(update)) then if (present(update)) then
@ -129,22 +128,14 @@ subroutine psb_lovrl_vect(x,desc_a,info,work,update,mode)
do_swap = (mode_ /= 0) do_swap = (mode_ /= 0)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if ((info == 0).and.(ldx<ncol)) call x%reall(ncol,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then
@ -203,7 +194,7 @@ subroutine psb_lovrl_multivect(x,desc_a,info,work,update,mode)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, &
& nrow, imode, err, liwork,data_, update_, mode_, ncol & nrow, ncol, ldx, imode, err,liwork_, data_, update_, mode
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
integer(psb_lpk_),pointer :: iwork(:) integer(psb_lpk_),pointer :: iwork(:)
logical :: do_swap logical :: do_swap
@ -239,6 +230,7 @@ subroutine psb_lovrl_multivect(x,desc_a,info,work,update,mode)
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols() ncol = desc_a%get_local_cols()
ldx = x%get_nrows()
k = 1 k = 1
@ -256,22 +248,14 @@ subroutine psb_lovrl_multivect(x,desc_a,info,work,update,mode)
do_swap = (mode_ /= 0) do_swap = (mode_ /= 0)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx) if (ldx < ncol) call x%reall(ncol,x%get_ncols(),info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then

@ -132,22 +132,13 @@ subroutine psb_mhalom(x,desc_a,info,jx,ik,work,tran,mode,data)
endif endif
ldx = size(x,1) ldx = size(x,1)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx,check_halo=.true.)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then
@ -324,22 +315,13 @@ subroutine psb_mhalov(x,desc_a,info,work,tran,mode,data)
endif endif
ldx = size(x,1) ldx = size(x,1)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx,check_halo=.true.)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then

@ -142,20 +142,11 @@ subroutine psb_movrlm(x,desc_a,info,jx,ik,work,update,mode)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then
@ -335,9 +326,8 @@ subroutine psb_movrlv(x,desc_a,info,work,update,mode)
call psb_errpush(info,name) call psb_errpush(info,name)
end if end if
err=info if(info /= 0) goto 9999
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol

@ -67,7 +67,7 @@ subroutine psb_shalo_vect(x,desc_a,info,work,tran,mode,data)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, &
& nrow, imode, err, liwork,data_ & nrow, ncol, lldx, imode, err, liwork,data_
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
real(psb_spk_),pointer :: iwork(:) real(psb_spk_),pointer :: iwork(:)
character :: tran_ character :: tran_
@ -98,11 +98,12 @@ subroutine psb_shalo_vect(x,desc_a,info,work,tran,mode,data)
endif endif
ix = 1 ix = 1
ijx = 1
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
lldx = x%get_nrows()
if (present(tran)) then if (present(tran)) then
tran_ = psb_toupper(tran) tran_ = psb_toupper(tran)
@ -120,23 +121,14 @@ subroutine psb_shalo_vect(x,desc_a,info,work,tran,mode,data)
imode = IOR(psb_swap_send_,psb_swap_recv_) imode = IOR(psb_swap_send_,psb_swap_recv_)
endif endif
! check vector correctness if ((info == 0).and.(lldx<ncol)) call x%reall(ncol,info)
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then
@ -208,7 +200,7 @@ subroutine psb_shalo_multivect(x,desc_a,info,work,tran,mode,data)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, &
& nrow, imode, err, liwork,data_ & nrow, ncol, lldx, imode, err, liwork,data_
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
real(psb_spk_),pointer :: iwork(:) real(psb_spk_),pointer :: iwork(:)
character :: tran_ character :: tran_
@ -244,6 +236,8 @@ subroutine psb_shalo_multivect(x,desc_a,info,work,tran,mode,data)
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
lldx = x%get_nrows()
if (present(tran)) then if (present(tran)) then
tran_ = psb_toupper(tran) tran_ = psb_toupper(tran)
@ -261,23 +255,14 @@ subroutine psb_shalo_multivect(x,desc_a,info,work,tran,mode,data)
imode = IOR(psb_swap_send_,psb_swap_recv_) imode = IOR(psb_swap_send_,psb_swap_recv_)
endif endif
! check vector correctness if (lldx < ncol) call x%reall(ncol,x%get_ncols(),info)
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then

@ -132,22 +132,13 @@ subroutine psb_shalom(x,desc_a,info,jx,ik,work,tran,mode,data)
endif endif
ldx = size(x,1) ldx = size(x,1)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx,check_halo=.true.)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then
@ -324,22 +315,13 @@ subroutine psb_shalov(x,desc_a,info,work,tran,mode,data)
endif endif
ldx = size(x,1) ldx = size(x,1)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx,check_halo=.true.)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then

@ -76,7 +76,7 @@ subroutine psb_sovrl_vect(x,desc_a,info,work,update,mode)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, &
& nrow, imode, err, liwork,data_, update_, mode_, ncol & nrow, ncol, imode, err,liwork_, data_, update_, mode
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
real(psb_spk_),pointer :: iwork(:) real(psb_spk_),pointer :: iwork(:)
logical :: do_swap logical :: do_swap
@ -106,13 +106,12 @@ subroutine psb_sovrl_vect(x,desc_a,info,work,update,mode)
endif endif
ix = 1 ix = 1
ijx = 1
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols() ncol = desc_a%get_local_cols()
ldx = x%get_nrows()
k = 1 k = 1
if (present(update)) then if (present(update)) then
@ -129,22 +128,14 @@ subroutine psb_sovrl_vect(x,desc_a,info,work,update,mode)
do_swap = (mode_ /= 0) do_swap = (mode_ /= 0)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if ((info == 0).and.(ldx<ncol)) call x%reall(ncol,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then
@ -203,7 +194,7 @@ subroutine psb_sovrl_multivect(x,desc_a,info,work,update,mode)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, &
& nrow, imode, err, liwork,data_, update_, mode_, ncol & nrow, ncol, ldx, imode, err,liwork_, data_, update_, mode
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
real(psb_spk_),pointer :: iwork(:) real(psb_spk_),pointer :: iwork(:)
logical :: do_swap logical :: do_swap
@ -239,6 +230,7 @@ subroutine psb_sovrl_multivect(x,desc_a,info,work,update,mode)
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols() ncol = desc_a%get_local_cols()
ldx = x%get_nrows()
k = 1 k = 1
@ -256,22 +248,14 @@ subroutine psb_sovrl_multivect(x,desc_a,info,work,update,mode)
do_swap = (mode_ /= 0) do_swap = (mode_ /= 0)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx) if (ldx < ncol) call x%reall(ncol,x%get_ncols(),info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then

@ -142,20 +142,11 @@ subroutine psb_sovrlm(x,desc_a,info,jx,ik,work,update,mode)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then
@ -335,9 +326,8 @@ subroutine psb_sovrlv(x,desc_a,info,work,update,mode)
call psb_errpush(info,name) call psb_errpush(info,name)
end if end if
err=info if(info /= 0) goto 9999
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol

@ -67,7 +67,7 @@ subroutine psb_zhalo_vect(x,desc_a,info,work,tran,mode,data)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, &
& nrow, imode, err, liwork,data_ & nrow, ncol, lldx, imode, err, liwork,data_
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
complex(psb_dpk_),pointer :: iwork(:) complex(psb_dpk_),pointer :: iwork(:)
character :: tran_ character :: tran_
@ -98,11 +98,12 @@ subroutine psb_zhalo_vect(x,desc_a,info,work,tran,mode,data)
endif endif
ix = 1 ix = 1
ijx = 1
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
lldx = x%get_nrows()
if (present(tran)) then if (present(tran)) then
tran_ = psb_toupper(tran) tran_ = psb_toupper(tran)
@ -120,23 +121,14 @@ subroutine psb_zhalo_vect(x,desc_a,info,work,tran,mode,data)
imode = IOR(psb_swap_send_,psb_swap_recv_) imode = IOR(psb_swap_send_,psb_swap_recv_)
endif endif
! check vector correctness if ((info == 0).and.(lldx<ncol)) call x%reall(ncol,info)
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then
@ -208,7 +200,7 @@ subroutine psb_zhalo_multivect(x,desc_a,info,work,tran,mode,data)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, iix, jjx, &
& nrow, imode, err, liwork,data_ & nrow, ncol, lldx, imode, err, liwork,data_
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
complex(psb_dpk_),pointer :: iwork(:) complex(psb_dpk_),pointer :: iwork(:)
character :: tran_ character :: tran_
@ -244,6 +236,8 @@ subroutine psb_zhalo_multivect(x,desc_a,info,work,tran,mode,data)
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
lldx = x%get_nrows()
if (present(tran)) then if (present(tran)) then
tran_ = psb_toupper(tran) tran_ = psb_toupper(tran)
@ -261,23 +255,14 @@ subroutine psb_zhalo_multivect(x,desc_a,info,work,tran,mode,data)
imode = IOR(psb_swap_send_,psb_swap_recv_) imode = IOR(psb_swap_send_,psb_swap_recv_)
endif endif
! check vector correctness if (lldx < ncol) call x%reall(ncol,x%get_ncols(),info)
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then

@ -132,22 +132,13 @@ subroutine psb_zhalom(x,desc_a,info,jx,ik,work,tran,mode,data)
endif endif
ldx = size(x,1) ldx = size(x,1)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx,check_halo=.true.)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then
@ -324,22 +315,13 @@ subroutine psb_zhalov(x,desc_a,info,work,tran,mode,data)
endif endif
ldx = size(x,1) ldx = size(x,1)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx,check_halo=.true.)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
liwork=nrow liwork=nrow
if (present(work)) then if (present(work)) then
if(size(work) >= liwork) then if(size(work) >= liwork) then

@ -76,7 +76,7 @@ subroutine psb_zovrl_vect(x,desc_a,info,work,update,mode)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, &
& nrow, imode, err, liwork,data_, update_, mode_, ncol & nrow, ncol, imode, err,liwork_, data_, update_, mode
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
complex(psb_dpk_),pointer :: iwork(:) complex(psb_dpk_),pointer :: iwork(:)
logical :: do_swap logical :: do_swap
@ -106,13 +106,12 @@ subroutine psb_zovrl_vect(x,desc_a,info,work,update,mode)
endif endif
ix = 1 ix = 1
ijx = 1
m = desc_a%get_global_rows() m = desc_a%get_global_rows()
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols() ncol = desc_a%get_local_cols()
ldx = x%get_nrows()
k = 1 k = 1
if (present(update)) then if (present(update)) then
@ -129,22 +128,14 @@ subroutine psb_zovrl_vect(x,desc_a,info,work,update,mode)
do_swap = (mode_ /= 0) do_swap = (mode_ /= 0)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx)
if ((info == 0).and.(ldx<ncol)) call x%reall(ncol,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then
@ -203,7 +194,7 @@ subroutine psb_zovrl_multivect(x,desc_a,info,work,update,mode)
! locals ! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, & integer(psb_ipk_) :: ictxt, np, me, err_act, k, iix, jjx, &
& nrow, imode, err, liwork,data_, update_, mode_, ncol & nrow, ncol, ldx, imode, err,liwork_, data_, update_, mode
integer(psb_lpk_) :: m, n, ix, ijx integer(psb_lpk_) :: m, n, ix, ijx
complex(psb_dpk_),pointer :: iwork(:) complex(psb_dpk_),pointer :: iwork(:)
logical :: do_swap logical :: do_swap
@ -239,6 +230,7 @@ subroutine psb_zovrl_multivect(x,desc_a,info,work,update,mode)
n = desc_a%get_global_cols() n = desc_a%get_global_cols()
nrow = desc_a%get_local_rows() nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols() ncol = desc_a%get_local_cols()
ldx = x%get_nrows()
k = 1 k = 1
@ -256,22 +248,14 @@ subroutine psb_zovrl_multivect(x,desc_a,info,work,update,mode)
do_swap = (mode_ /= 0) do_swap = (mode_ /= 0)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,x%get_nrows(),ix,ijx,desc_a,info,iix,jjx) if (ldx < ncol) call x%reall(ncol,x%get_ncols(),info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_reall'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then

@ -142,20 +142,11 @@ subroutine psb_zovrlm(x,desc_a,info,jx,ik,work,update,mode)
! check vector correctness ! check vector correctness
call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx) call psb_chkvect(m,lone,ldx,ix,ijx,desc_a,info,iix,jjx)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_ ; ch_err='psb_chkvect'
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err) call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if end if
if (iix /= 1) then
info=psb_err_ix_n1_iy_n1_unsupported_
call psb_errpush(info,name)
end if
err=info
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol
if (present(work)) then if (present(work)) then
@ -335,9 +326,8 @@ subroutine psb_zovrlv(x,desc_a,info,work,update,mode)
call psb_errpush(info,name) call psb_errpush(info,name)
end if end if
err=info if(info /= 0) goto 9999
call psb_errcomm(ictxt,err)
if(err /= 0) goto 9999
! check for presence/size of a work area ! check for presence/size of a work area
liwork=ncol liwork=ncol

@ -101,7 +101,6 @@ contains
nrg = desc_dec%get_global_rows() nrg = desc_dec%get_global_rows()
ncg = desc_dec%get_global_cols() ncg = desc_dec%get_global_cols()
if (m < 0) then if (m < 0) then
info=psb_err_iarg_neg_ info=psb_err_iarg_neg_
int_err(1) = 1 int_err(1) = 1

Loading…
Cancel
Save