|
|
@ -78,7 +78,7 @@ subroutine psb_zbjac_bld(a,desc_a,p,upd,info)
|
|
|
|
|
|
|
|
|
|
|
|
if(psb_get_errstatus().ne.0) return
|
|
|
|
if(psb_get_errstatus().ne.0) return
|
|
|
|
info=0
|
|
|
|
info=0
|
|
|
|
name='psb_bjac_bld'
|
|
|
|
name='psb_zbjac_bld'
|
|
|
|
call psb_erractionsave(err_act)
|
|
|
|
call psb_erractionsave(err_act)
|
|
|
|
|
|
|
|
|
|
|
|
ictxt=psb_cd_get_context(desc_a)
|
|
|
|
ictxt=psb_cd_get_context(desc_a)
|
|
|
@ -113,9 +113,7 @@ subroutine psb_zbjac_bld(a,desc_a,p,upd,info)
|
|
|
|
& blck,desc_a,upd,p%desc_data,info,outfmt=coofmt)
|
|
|
|
& blck,desc_a,upd,p%desc_data,info,outfmt=coofmt)
|
|
|
|
|
|
|
|
|
|
|
|
if(info/=0) then
|
|
|
|
if(info/=0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_asmatbld')
|
|
|
|
ch_err='psb_asmatbld'
|
|
|
|
|
|
|
|
call psb_errpush(info,name,a_err=ch_err)
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
@ -124,7 +122,9 @@ subroutine psb_zbjac_bld(a,desc_a,p,upd,info)
|
|
|
|
if (debug) call psb_barrier(ictxt)
|
|
|
|
if (debug) call psb_barrier(ictxt)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (p%iprcparm(iren_) > 0) then
|
|
|
|
select case(p%iprcparm(iren_))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case (1:)
|
|
|
|
|
|
|
|
|
|
|
|
!
|
|
|
|
!
|
|
|
|
! Here we allocate a full copy to hold local A and received BLK
|
|
|
|
! Here we allocate a full copy to hold local A and received BLK
|
|
|
@ -133,10 +133,8 @@ subroutine psb_zbjac_bld(a,desc_a,p,upd,info)
|
|
|
|
|
|
|
|
|
|
|
|
call psb_sp_renum(a,desc_a,blck,p,atmp,info)
|
|
|
|
call psb_sp_renum(a,desc_a,blck,p,atmp,info)
|
|
|
|
|
|
|
|
|
|
|
|
if(info/=0) then
|
|
|
|
if (info/=0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_sp_renum')
|
|
|
|
ch_err='psb_sp_renum'
|
|
|
|
|
|
|
|
call psb_errpush(info,name,a_err=ch_err)
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
@ -155,20 +153,20 @@ subroutine psb_zbjac_bld(a,desc_a,p,upd,info)
|
|
|
|
case(f_ilu_n_,f_ilu_e_)
|
|
|
|
case(f_ilu_n_,f_ilu_e_)
|
|
|
|
|
|
|
|
|
|
|
|
call psb_ipcoo2csr(atmp,info)
|
|
|
|
call psb_ipcoo2csr(atmp,info)
|
|
|
|
|
|
|
|
|
|
|
|
if (info /= 0) then
|
|
|
|
if (info /= 0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_ipcoo2csr')
|
|
|
|
call psb_errpush(info,name,a_err='psb_ipcoo2csr')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
call psb_ilu_bld(atmp,p%desc_data,p,upd,info)
|
|
|
|
call psb_ilu_bld(atmp,p%desc_data,p,upd,info)
|
|
|
|
|
|
|
|
|
|
|
|
if(info/=0) then
|
|
|
|
if (info/=0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_ilu_bld')
|
|
|
|
call psb_errpush(info,name,a_err='psb_ilu_bld')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (debugprt) then
|
|
|
|
if (debugprt) then
|
|
|
|
|
|
|
|
|
|
|
|
open(80+me)
|
|
|
|
open(80+me)
|
|
|
@ -188,15 +186,13 @@ subroutine psb_zbjac_bld(a,desc_a,p,upd,info)
|
|
|
|
|
|
|
|
|
|
|
|
call psb_ipcoo2csr(atmp,info)
|
|
|
|
call psb_ipcoo2csr(atmp,info)
|
|
|
|
if (info /= 0) then
|
|
|
|
if (info /= 0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_ipcoo2csr')
|
|
|
|
call psb_errpush(info,name,a_err='psb_ipcoo2csr')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
call psb_slu_bld(atmp,p%desc_data,p,info)
|
|
|
|
call psb_slu_bld(atmp,p%desc_data,p,info)
|
|
|
|
if(info /= 0) then
|
|
|
|
if(info /= 0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='slu_bld')
|
|
|
|
call psb_errpush(info,name,a_err='slu_bld')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
@ -204,16 +200,14 @@ subroutine psb_zbjac_bld(a,desc_a,p,upd,info)
|
|
|
|
|
|
|
|
|
|
|
|
call psb_ipcoo2csc(atmp,info)
|
|
|
|
call psb_ipcoo2csc(atmp,info)
|
|
|
|
if (info /= 0) then
|
|
|
|
if (info /= 0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_ipcoo2csc')
|
|
|
|
call psb_errpush(info,name,a_err='psb_ipcoo2csc')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
call psb_umf_bld(atmp,p%desc_data,p,info)
|
|
|
|
call psb_umf_bld(atmp,p%desc_data,p,info)
|
|
|
|
if(debug) write(0,*)me,': Done umf_bld ',info
|
|
|
|
if(debug) write(0,*)me,': Done umf_bld ',info
|
|
|
|
if (info /= 0) then
|
|
|
|
if (info /= 0) then
|
|
|
|
info = 4010
|
|
|
|
call psb_errpush(4010,name,a_err='umf_bld')
|
|
|
|
call psb_errpush(info,name,a_err='umf_bld')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
@ -231,14 +225,15 @@ subroutine psb_zbjac_bld(a,desc_a,p,upd,info)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
call psb_sp_free(atmp,info)
|
|
|
|
call psb_sp_free(atmp,info)
|
|
|
|
|
|
|
|
|
|
|
|
if(info/=0) then
|
|
|
|
if(info/=0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_sp_free')
|
|
|
|
call psb_errpush(info,name,a_err='psb_sp_free')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else if (p%iprcparm(iren_) == 0) then
|
|
|
|
|
|
|
|
|
|
|
|
case(0) ! No renumbering
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
select case(p%iprcparm(f_type_))
|
|
|
|
select case(p%iprcparm(f_type_))
|
|
|
@ -247,14 +242,19 @@ subroutine psb_zbjac_bld(a,desc_a,p,upd,info)
|
|
|
|
|
|
|
|
|
|
|
|
call psb_ipcoo2csr(blck,info,rwshr=.true.)
|
|
|
|
call psb_ipcoo2csr(blck,info,rwshr=.true.)
|
|
|
|
|
|
|
|
|
|
|
|
if (info==0) call psb_ilu_bld(a,desc_a,p,upd,info,blck=blck)
|
|
|
|
if(info/=0) then
|
|
|
|
|
|
|
|
call psb_errpush(4010,name,a_err='psb_ipcoo2csr')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
call psb_ilu_bld(a,desc_a,p,upd,info,blck=blck)
|
|
|
|
|
|
|
|
|
|
|
|
if(info/=0) then
|
|
|
|
if(info/=0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_ilu_bld')
|
|
|
|
call psb_errpush(info,name,a_err='psb_ilu_bld')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (debugprt) then
|
|
|
|
if (debugprt) then
|
|
|
|
|
|
|
|
|
|
|
|
open(80+me)
|
|
|
|
open(80+me)
|
|
|
@ -270,63 +270,65 @@ subroutine psb_zbjac_bld(a,desc_a,p,upd,info)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case(f_slu_)
|
|
|
|
case(f_slu_)
|
|
|
|
|
|
|
|
|
|
|
|
atmp%fida='COO'
|
|
|
|
atmp%fida='COO'
|
|
|
|
call psb_csdp(a,atmp,info)
|
|
|
|
call psb_csdp(a,atmp,info)
|
|
|
|
if (info /= 0) then
|
|
|
|
if (info /= 0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_csdp')
|
|
|
|
call psb_errpush(info,name,a_err='psb_csdp')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
call psb_rwextd(atmp%m+blck%m,atmp,info,blck,rowscale=.true.)
|
|
|
|
call psb_rwextd(atmp%m+blck%m,atmp,info,blck,rowscale=.true.)
|
|
|
|
call psb_ipcoo2csr(atmp,info)
|
|
|
|
if (info == 0) call psb_ipcoo2csr(atmp,info)
|
|
|
|
call psb_slu_bld(atmp,p%desc_data,p,info)
|
|
|
|
if (info == 0) call psb_slu_bld(atmp,p%desc_data,p,info)
|
|
|
|
if(info /= 0) then
|
|
|
|
if(info /= 0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='slu_bld')
|
|
|
|
call psb_errpush(info,name,a_err='slu_bld')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
call psb_sp_free(atmp,info)
|
|
|
|
call psb_sp_free(atmp,info)
|
|
|
|
if(info/=0) then
|
|
|
|
if(info/=0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_sp_free')
|
|
|
|
call psb_errpush(info,name,a_err='psb_sp_free')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case(f_umf_)
|
|
|
|
case(f_umf_)
|
|
|
|
|
|
|
|
|
|
|
|
atmp%fida='COO'
|
|
|
|
|
|
|
|
atmp%fida='COO'
|
|
|
|
atmp%fida='COO'
|
|
|
|
call psb_csdp(a,atmp,info)
|
|
|
|
call psb_csdp(a,atmp,info)
|
|
|
|
if (info /= 0) then
|
|
|
|
if (info /= 0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_csdp')
|
|
|
|
call psb_errpush(info,name,a_err='psb_csdp')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
if (debugprt) then
|
|
|
|
|
|
|
|
call psb_barrier(ictxt)
|
|
|
|
|
|
|
|
open(40+me)
|
|
|
|
|
|
|
|
call psb_csprt(40+me,atmp,head='% Local matrix')
|
|
|
|
|
|
|
|
close(40+me)
|
|
|
|
|
|
|
|
open(60+me)
|
|
|
|
|
|
|
|
call psb_csprt(60+me,blck,head='% Halo matrix')
|
|
|
|
|
|
|
|
close(60+me)
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
call psb_rwextd(atmp%m+blck%m,atmp,info,blck,rowscale=.true.)
|
|
|
|
call psb_rwextd(atmp%m+blck%m,atmp,info,blck,rowscale=.true.)
|
|
|
|
if (info == 0) call psb_ipcoo2csc(atmp,info)
|
|
|
|
if (info == 0) call psb_ipcoo2csc(atmp,info)
|
|
|
|
|
|
|
|
|
|
|
|
if (info /= 0) then
|
|
|
|
if (info /= 0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_ipcoo2csc')
|
|
|
|
call psb_errpush(info,name,a_err='psb_ipcoo2csc')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
call psb_umf_bld(atmp,p%desc_data,p,info)
|
|
|
|
call psb_umf_bld(atmp,p%desc_data,p,info)
|
|
|
|
if(debug) write(0,*)me,': Done umf_bld ',info
|
|
|
|
if(debug) write(0,*)me,': Done umf_bld ',info
|
|
|
|
if (info /= 0) then
|
|
|
|
if (info /= 0) then
|
|
|
|
info = 4010
|
|
|
|
call psb_errpush(4010,name,a_err='umf_bld')
|
|
|
|
call psb_errpush(info,name,a_err='umf_bld')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
call psb_sp_free(atmp,info)
|
|
|
|
call psb_sp_free(atmp,info)
|
|
|
|
if(info/=0) then
|
|
|
|
if(info/=0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_sp_free')
|
|
|
|
call psb_errpush(info,name,a_err='psb_sp_free')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
@ -342,22 +344,25 @@ subroutine psb_zbjac_bld(a,desc_a,p,upd,info)
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end select
|
|
|
|
end select
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case default
|
|
|
|
|
|
|
|
info=4010
|
|
|
|
|
|
|
|
call psb_errpush(info,name,a_err='Invalid renum_')
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
|
|
|
|
|
|
|
|
endif
|
|
|
|
end select
|
|
|
|
|
|
|
|
|
|
|
|
t6 = psb_wtime()
|
|
|
|
t6 = psb_wtime()
|
|
|
|
|
|
|
|
|
|
|
|
call psb_sp_free(blck,info)
|
|
|
|
call psb_sp_free(blck,info)
|
|
|
|
if(info/=0) then
|
|
|
|
if(info/=0) then
|
|
|
|
info=4010
|
|
|
|
call psb_errpush(4010,name,a_err='psb_sp_free')
|
|
|
|
ch_err='psb_sp_free'
|
|
|
|
|
|
|
|
call psb_errpush(info,name,a_err=ch_err)
|
|
|
|
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if (debug) write(0,*) me,'End of ilu_bld'
|
|
|
|
if (debug) write(0,*) me,'End of ilu_bld'
|
|
|
|
|
|
|
|
|
|
|
|
call psb_erractionrestore(err_act)
|
|
|
|
call psb_erractionrestore(err_act)
|
|
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
9999 continue
|
|
|
|
9999 continue
|
|
|
|