Fix bug in case estimate of NZ for overlap matrix is wrong.

psblas3-type-indexed
Salvatore Filippone 19 years ago
parent ccf9f79bfa
commit fcc86b18fc

@ -78,7 +78,7 @@ subroutine psb_dilu_bld(a,desc_a,p,upd,info)
external mpi_wtime external mpi_wtime
logical, parameter :: debugprt=.false., debug=.false., aggr_dump=.false. logical, parameter :: debugprt=.false., debug=.false., aggr_dump=.false.
integer nztota, nztotb, nztmp, nzl, nnr, ir, err_act,& integer nztota, nztotb, nztmp, nzl, nnr, ir, err_act,&
& n_row, nrow_a,n_col, nhalo,lovr, ind, iind & n_row, nrow_a,n_col, nhalo, ind, iind
integer :: ictxt,np,me integer :: ictxt,np,me
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -186,6 +186,7 @@ subroutine psb_dilu_bld(a,desc_a,p,upd,info)
nrow_a = desc_a%matrix_data(psb_n_row_) nrow_a = desc_a%matrix_data(psb_n_row_)
call psb_spinfo(psb_nztotreq_,a,nztota,info) call psb_spinfo(psb_nztotreq_,a,nztota,info)
if (info == 0) call psb_spinfo(psb_nztotreq_,blck,nztotb,info)
if(info/=0) then if(info/=0) then
info=4010 info=4010
ch_err='psb_spinfo' ch_err='psb_spinfo'
@ -198,13 +199,12 @@ subroutine psb_dilu_bld(a,desc_a,p,upd,info)
n_col = desc_a%matrix_data(psb_n_col_) n_col = desc_a%matrix_data(psb_n_col_)
nhalo = n_col-nrow_a nhalo = n_col-nrow_a
n_row = p%desc_data%matrix_data(psb_n_row_) n_row = p%desc_data%matrix_data(psb_n_row_)
lovr = ((nztota+nrow_a-1)/nrow_a)*nhalo*p%iprcparm(n_ovr_)
p%av(l_pr_)%m = n_row p%av(l_pr_)%m = n_row
p%av(l_pr_)%k = n_row p%av(l_pr_)%k = n_row
p%av(u_pr_)%m = n_row p%av(u_pr_)%m = n_row
p%av(u_pr_)%k = n_row p%av(u_pr_)%k = n_row
call psb_sp_all(n_row,n_row,p%av(l_pr_),nztota+lovr,info) call psb_sp_all(n_row,n_row,p%av(l_pr_),nztota+nztotb,info)
if (info == 0) call psb_sp_all(n_row,n_row,p%av(u_pr_),nztota+lovr,info) if (info == 0) call psb_sp_all(n_row,n_row,p%av(u_pr_),nztota+nztotb,info)
if(info/=0) then if(info/=0) then
info=4010 info=4010
ch_err='psb_sp_all' ch_err='psb_sp_all'

@ -77,8 +77,8 @@ subroutine psb_zilu_bld(a,desc_a,p,upd,info)
real(kind(1.d0)) :: t1,t2,t3,t4,t5,t6,mpi_wtime, t7, t8 real(kind(1.d0)) :: t1,t2,t3,t4,t5,t6,mpi_wtime, t7, t8
external mpi_wtime external mpi_wtime
logical, parameter :: debugprt=.false., debug=.false., aggr_dump=.false. logical, parameter :: debugprt=.false., debug=.false., aggr_dump=.false.
integer nztota, nztotb, nztmp, nzl, nnr, ir, err_act, & integer nztota, nztotb, nztmp, nzl, nnr, ir, err_act,&
& n_row, nrow_a,n_col, nhalo,lovr, ind, iind & n_row, nrow_a,n_col, nhalo, ind, iind
integer :: ictxt,np,me integer :: ictxt,np,me
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -186,6 +186,7 @@ subroutine psb_zilu_bld(a,desc_a,p,upd,info)
nrow_a = desc_a%matrix_data(psb_n_row_) nrow_a = desc_a%matrix_data(psb_n_row_)
call psb_spinfo(psb_nztotreq_,a,nztota,info) call psb_spinfo(psb_nztotreq_,a,nztota,info)
if (info == 0) call psb_spinfo(psb_nztotreq_,blck,nztotb,info)
if(info/=0) then if(info/=0) then
info=4010 info=4010
ch_err='psb_spinfo' ch_err='psb_spinfo'
@ -198,13 +199,12 @@ subroutine psb_zilu_bld(a,desc_a,p,upd,info)
n_col = desc_a%matrix_data(psb_n_col_) n_col = desc_a%matrix_data(psb_n_col_)
nhalo = n_col-nrow_a nhalo = n_col-nrow_a
n_row = p%desc_data%matrix_data(psb_n_row_) n_row = p%desc_data%matrix_data(psb_n_row_)
lovr = ((nztota+nrow_a-1)/nrow_a)*nhalo*p%iprcparm(n_ovr_)
p%av(l_pr_)%m = n_row p%av(l_pr_)%m = n_row
p%av(l_pr_)%k = n_row p%av(l_pr_)%k = n_row
p%av(u_pr_)%m = n_row p%av(u_pr_)%m = n_row
p%av(u_pr_)%k = n_row p%av(u_pr_)%k = n_row
call psb_sp_all(n_row,n_row,p%av(l_pr_),nztota+lovr,info) call psb_sp_all(n_row,n_row,p%av(l_pr_),nztota+nztotb,info)
if (info == 0) call psb_sp_all(n_row,n_row,p%av(u_pr_),nztota+lovr,info) if (info == 0) call psb_sp_all(n_row,n_row,p%av(u_pr_),nztota+nztotb,info)
if(info/=0) then if(info/=0) then
info=4010 info=4010
ch_err='psb_sp_all' ch_err='psb_sp_all'

Loading…
Cancel
Save