mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-19 12:22:10 +00:00
psblas3:
base/serial/impl/psb_c_csc_impl.f90 base/serial/impl/psb_c_csr_impl.f90 base/serial/impl/psb_d_csc_impl.f90 base/serial/impl/psb_d_csr_impl.f90 base/serial/impl/psb_s_csc_impl.f90 base/serial/impl/psb_s_csr_impl.f90 base/serial/impl/psb_z_csc_impl.f90 base/serial/impl/psb_z_csr_impl.f90 Fix computation of output space for getrow & friends.
This commit is contained in:
@@ -1690,7 +1690,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,m,isz
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,m,isz, nrd, ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='coo_getrow'
|
||||
|
||||
@@ -1713,12 +1713,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%icp(lcl+1)-a%icp(icl)),&
|
||||
& ((nza*(lcl+1-icl))/a%get_ncols()) )
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
|
||||
@@ -1884,7 +1885,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,isz,m
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,isz,m, nrd, ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='coo_getrow'
|
||||
|
||||
@@ -1908,11 +1909,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%icp(lcl+1)-a%icp(icl)),&
|
||||
& ((nza*(lrw+1-irw))/m) )
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info)
|
||||
|
||||
@@ -2029,7 +2029,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, nrd,ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='csr_getptn'
|
||||
|
||||
@@ -2050,10 +2050,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
nzt = a%irp(lrw+1)-a%irp(irw)
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%irp(lrw+1)-a%irp(irw)),&
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
|
||||
@@ -2206,7 +2209,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, nrd, ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='coo_getrow'
|
||||
|
||||
@@ -2227,10 +2230,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
nzt = a%irp(lrw+1)-a%irp(irw)
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%irp(lrw+1)-a%irp(irw)),&
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info)
|
||||
|
||||
@@ -1690,7 +1690,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,m,isz
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,m,isz, nrd, ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='coo_getrow'
|
||||
|
||||
@@ -1713,12 +1713,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%icp(lcl+1)-a%icp(icl)),&
|
||||
& ((nza*(lcl+1-icl))/a%get_ncols()) )
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
|
||||
@@ -1884,7 +1885,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,isz,m
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,isz,m, nrd, ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='coo_getrow'
|
||||
|
||||
@@ -1908,11 +1909,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%icp(lcl+1)-a%icp(icl)),&
|
||||
& ((nza*(lrw+1-irw))/m) )
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info)
|
||||
|
||||
@@ -2029,7 +2029,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, nrd,ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='csr_getptn'
|
||||
|
||||
@@ -2050,10 +2050,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
nzt = a%irp(lrw+1)-a%irp(irw)
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%irp(lrw+1)-a%irp(irw)),&
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
|
||||
@@ -2206,7 +2209,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, nrd, ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='coo_getrow'
|
||||
|
||||
@@ -2227,10 +2230,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
nzt = a%irp(lrw+1)-a%irp(irw)
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%irp(lrw+1)-a%irp(irw)),&
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info)
|
||||
|
||||
@@ -1690,7 +1690,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,m,isz
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,m,isz, nrd, ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='coo_getrow'
|
||||
|
||||
@@ -1713,12 +1713,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%icp(lcl+1)-a%icp(icl)),&
|
||||
& ((nza*(lcl+1-icl))/a%get_ncols()) )
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
|
||||
@@ -1884,7 +1885,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,isz,m
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,isz,m, nrd, ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='coo_getrow'
|
||||
|
||||
@@ -1908,11 +1909,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%icp(lcl+1)-a%icp(icl)),&
|
||||
& ((nza*(lrw+1-irw))/m) )
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info)
|
||||
|
||||
@@ -2029,7 +2029,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, nrd,ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='csr_getptn'
|
||||
|
||||
@@ -2050,10 +2050,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
nzt = a%irp(lrw+1)-a%irp(irw)
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%irp(lrw+1)-a%irp(irw)),&
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
|
||||
@@ -2206,7 +2209,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, nrd, ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='coo_getrow'
|
||||
|
||||
@@ -2227,10 +2230,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
nzt = a%irp(lrw+1)-a%irp(irw)
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%irp(lrw+1)-a%irp(irw)),&
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info)
|
||||
|
||||
@@ -1690,7 +1690,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,m,isz
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,m,isz, nrd, ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='coo_getrow'
|
||||
|
||||
@@ -1713,12 +1713,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%icp(lcl+1)-a%icp(icl)),&
|
||||
& ((nza*(lcl+1-icl))/a%get_ncols()) )
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
|
||||
@@ -1884,7 +1885,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,isz,m
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, icl, lcl,isz,m, nrd, ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='coo_getrow'
|
||||
|
||||
@@ -1908,11 +1909,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%icp(lcl+1)-a%icp(icl)),&
|
||||
& ((nza*(lrw+1-irw))/m) )
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info)
|
||||
|
||||
@@ -2029,7 +2029,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, nrd,ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='csr_getptn'
|
||||
|
||||
@@ -2050,10 +2050,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
nzt = a%irp(lrw+1)-a%irp(irw)
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%irp(lrw+1)-a%irp(irw)),&
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
|
||||
@@ -2206,7 +2209,7 @@ contains
|
||||
logical, intent(in) :: append
|
||||
integer(psb_ipk_) :: info
|
||||
integer(psb_ipk_), optional :: iren(:)
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw
|
||||
integer(psb_ipk_) :: nzin_, nza, idx,i,j,k, nzt, irw, lrw, nrd, ncd
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
character(len=20) :: name='coo_getrow'
|
||||
|
||||
@@ -2227,10 +2230,13 @@ contains
|
||||
nzin_ = 0
|
||||
endif
|
||||
|
||||
nzt = a%irp(lrw+1)-a%irp(irw)
|
||||
nrd = max(1,a%get_nrows())
|
||||
ncd = max(1,a%get_ncols())
|
||||
nzt = min((a%irp(lrw+1)-a%irp(irw)),&
|
||||
& ((nza+ncd-1)/ncd)*(lcl+1-icl),&
|
||||
& ((nza+nrd-1)/nrd)*(lrw+1-irw))
|
||||
nz = 0
|
||||
|
||||
|
||||
call psb_ensure_size(nzin_+nzt,ia,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,ja,info)
|
||||
if (info == psb_success_) call psb_ensure_size(nzin_+nzt,val,info)
|
||||
|
||||
Reference in New Issue
Block a user