mld2p4-2:

mlprec/impl/mld_caggrmat_smth_asb.f90
 mlprec/impl/mld_daggrmat_smth_asb.f90
 mlprec/impl/mld_saggrmat_smth_asb.f90
 mlprec/impl/mld_zaggrmat_smth_asb.f90

Slight reworking for fix_coo & friends.
stopcriterion
Salvatore Filippone 11 years ago
parent 2388cf2762
commit 73b5b8635e

@ -185,7 +185,7 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
end do end do
call tmpcoo%set_nzeros(ncol) call tmpcoo%set_nzeros(ncol)
call tmpcoo%set_dupl(psb_dupl_add_) call tmpcoo%set_dupl(psb_dupl_add_)
call tmpcoo%set_sorted() ! At this point this is in row-major
call ptilde%mv_from_coo(tmpcoo,info) call ptilde%mv_from_coo(tmpcoo,info)
if (info == psb_success_) call a%cscnv(acsr3,info,dupl=psb_dupl_add_) if (info == psb_success_) call a%cscnv(acsr3,info,dupl=psb_dupl_add_)
@ -197,7 +197,7 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
! !
! Build the filtered matrix Af from A ! Build the filtered matrix Af from A
! !
if (info == psb_success_) call a%cscnv(acsrf,info,dupl=psb_dupl_add_) if (info == psb_success_) call acsr3%cp_to_fmt(acsrf,info)
do i=1,nrow do i=1,nrow
tmp = czero tmp = czero
@ -307,6 +307,7 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
& 'Done NUMBMM 1' & 'Done NUMBMM 1'
else else
! !
! Build the smoothed prolongator using the original matrix ! Build the smoothed prolongator using the original matrix
! !
@ -371,8 +372,9 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
& write(debug_unit,*) me,' ',trim(name),& & write(debug_unit,*) me,' ',trim(name),&
& 'Done NUMBMM 2',parms%aggr_kind, mld_smooth_prol_ & 'Done NUMBMM 2',parms%aggr_kind, mld_smooth_prol_
call op_prol%transp(op_restr) call op_prol%cp_to(tmpcoo)
call op_restr%mv_to(tmpcoo) call tmpcoo%transp()
nzl = tmpcoo%get_nzeros() nzl = tmpcoo%get_nzeros()
i=0 i=0
! !
@ -388,7 +390,7 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
end if end if
end do end do
call tmpcoo%set_nzeros(i) call tmpcoo%set_nzeros(i)
call tmpcoo%trim() ! call tmpcoo%trim()
call op_restr%mv_from(tmpcoo) call op_restr%mv_from(tmpcoo)
call op_restr%cscnv(info,type='csr',dupl=psb_dupl_add_) call op_restr%cscnv(info,type='csr',dupl=psb_dupl_add_)
if (info /= psb_success_) then if (info /= psb_success_) then
@ -422,7 +424,6 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
goto 9999 goto 9999
end if end if
if (debug_level >= psb_debug_outer_) & if (debug_level >= psb_debug_outer_) &
& write(debug_unit,*) me,' ',trim(name),& & write(debug_unit,*) me,' ',trim(name),&
& 'Done smooth_aggregate ' & 'Done smooth_aggregate '

@ -185,7 +185,7 @@ subroutine mld_daggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
end do end do
call tmpcoo%set_nzeros(ncol) call tmpcoo%set_nzeros(ncol)
call tmpcoo%set_dupl(psb_dupl_add_) call tmpcoo%set_dupl(psb_dupl_add_)
call tmpcoo%set_sorted() ! At this point this is in row-major
call ptilde%mv_from_coo(tmpcoo,info) call ptilde%mv_from_coo(tmpcoo,info)
if (info == psb_success_) call a%cscnv(acsr3,info,dupl=psb_dupl_add_) if (info == psb_success_) call a%cscnv(acsr3,info,dupl=psb_dupl_add_)
@ -197,7 +197,7 @@ subroutine mld_daggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
! !
! Build the filtered matrix Af from A ! Build the filtered matrix Af from A
! !
if (info == psb_success_) call a%cscnv(acsrf,info,dupl=psb_dupl_add_) if (info == psb_success_) call acsr3%cp_to_fmt(acsrf,info)
do i=1,nrow do i=1,nrow
tmp = dzero tmp = dzero
@ -307,6 +307,7 @@ subroutine mld_daggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
& 'Done NUMBMM 1' & 'Done NUMBMM 1'
else else
! !
! Build the smoothed prolongator using the original matrix ! Build the smoothed prolongator using the original matrix
! !
@ -371,8 +372,9 @@ subroutine mld_daggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
& write(debug_unit,*) me,' ',trim(name),& & write(debug_unit,*) me,' ',trim(name),&
& 'Done NUMBMM 2',parms%aggr_kind, mld_smooth_prol_ & 'Done NUMBMM 2',parms%aggr_kind, mld_smooth_prol_
call op_prol%transp(op_restr) call op_prol%cp_to(tmpcoo)
call op_restr%mv_to(tmpcoo) call tmpcoo%transp()
nzl = tmpcoo%get_nzeros() nzl = tmpcoo%get_nzeros()
i=0 i=0
! !
@ -388,7 +390,7 @@ subroutine mld_daggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
end if end if
end do end do
call tmpcoo%set_nzeros(i) call tmpcoo%set_nzeros(i)
call tmpcoo%trim() ! call tmpcoo%trim()
call op_restr%mv_from(tmpcoo) call op_restr%mv_from(tmpcoo)
call op_restr%cscnv(info,type='csr',dupl=psb_dupl_add_) call op_restr%cscnv(info,type='csr',dupl=psb_dupl_add_)
if (info /= psb_success_) then if (info /= psb_success_) then
@ -422,7 +424,6 @@ subroutine mld_daggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
goto 9999 goto 9999
end if end if
if (debug_level >= psb_debug_outer_) & if (debug_level >= psb_debug_outer_) &
& write(debug_unit,*) me,' ',trim(name),& & write(debug_unit,*) me,' ',trim(name),&
& 'Done smooth_aggregate ' & 'Done smooth_aggregate '

@ -185,7 +185,7 @@ subroutine mld_saggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
end do end do
call tmpcoo%set_nzeros(ncol) call tmpcoo%set_nzeros(ncol)
call tmpcoo%set_dupl(psb_dupl_add_) call tmpcoo%set_dupl(psb_dupl_add_)
call tmpcoo%set_sorted() ! At this point this is in row-major
call ptilde%mv_from_coo(tmpcoo,info) call ptilde%mv_from_coo(tmpcoo,info)
if (info == psb_success_) call a%cscnv(acsr3,info,dupl=psb_dupl_add_) if (info == psb_success_) call a%cscnv(acsr3,info,dupl=psb_dupl_add_)
@ -197,7 +197,7 @@ subroutine mld_saggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
! !
! Build the filtered matrix Af from A ! Build the filtered matrix Af from A
! !
if (info == psb_success_) call a%cscnv(acsrf,info,dupl=psb_dupl_add_) if (info == psb_success_) call acsr3%cp_to_fmt(acsrf,info)
do i=1,nrow do i=1,nrow
tmp = szero tmp = szero
@ -307,6 +307,7 @@ subroutine mld_saggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
& 'Done NUMBMM 1' & 'Done NUMBMM 1'
else else
! !
! Build the smoothed prolongator using the original matrix ! Build the smoothed prolongator using the original matrix
! !
@ -371,8 +372,9 @@ subroutine mld_saggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
& write(debug_unit,*) me,' ',trim(name),& & write(debug_unit,*) me,' ',trim(name),&
& 'Done NUMBMM 2',parms%aggr_kind, mld_smooth_prol_ & 'Done NUMBMM 2',parms%aggr_kind, mld_smooth_prol_
call op_prol%transp(op_restr) call op_prol%cp_to(tmpcoo)
call op_restr%mv_to(tmpcoo) call tmpcoo%transp()
nzl = tmpcoo%get_nzeros() nzl = tmpcoo%get_nzeros()
i=0 i=0
! !
@ -388,7 +390,7 @@ subroutine mld_saggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
end if end if
end do end do
call tmpcoo%set_nzeros(i) call tmpcoo%set_nzeros(i)
call tmpcoo%trim() ! call tmpcoo%trim()
call op_restr%mv_from(tmpcoo) call op_restr%mv_from(tmpcoo)
call op_restr%cscnv(info,type='csr',dupl=psb_dupl_add_) call op_restr%cscnv(info,type='csr',dupl=psb_dupl_add_)
if (info /= psb_success_) then if (info /= psb_success_) then
@ -422,7 +424,6 @@ subroutine mld_saggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
goto 9999 goto 9999
end if end if
if (debug_level >= psb_debug_outer_) & if (debug_level >= psb_debug_outer_) &
& write(debug_unit,*) me,' ',trim(name),& & write(debug_unit,*) me,' ',trim(name),&
& 'Done smooth_aggregate ' & 'Done smooth_aggregate '

@ -185,7 +185,7 @@ subroutine mld_zaggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
end do end do
call tmpcoo%set_nzeros(ncol) call tmpcoo%set_nzeros(ncol)
call tmpcoo%set_dupl(psb_dupl_add_) call tmpcoo%set_dupl(psb_dupl_add_)
call tmpcoo%set_sorted() ! At this point this is in row-major
call ptilde%mv_from_coo(tmpcoo,info) call ptilde%mv_from_coo(tmpcoo,info)
if (info == psb_success_) call a%cscnv(acsr3,info,dupl=psb_dupl_add_) if (info == psb_success_) call a%cscnv(acsr3,info,dupl=psb_dupl_add_)
@ -197,7 +197,7 @@ subroutine mld_zaggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
! !
! Build the filtered matrix Af from A ! Build the filtered matrix Af from A
! !
if (info == psb_success_) call a%cscnv(acsrf,info,dupl=psb_dupl_add_) if (info == psb_success_) call acsr3%cp_to_fmt(acsrf,info)
do i=1,nrow do i=1,nrow
tmp = zzero tmp = zzero
@ -307,6 +307,7 @@ subroutine mld_zaggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
& 'Done NUMBMM 1' & 'Done NUMBMM 1'
else else
! !
! Build the smoothed prolongator using the original matrix ! Build the smoothed prolongator using the original matrix
! !
@ -371,8 +372,9 @@ subroutine mld_zaggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
& write(debug_unit,*) me,' ',trim(name),& & write(debug_unit,*) me,' ',trim(name),&
& 'Done NUMBMM 2',parms%aggr_kind, mld_smooth_prol_ & 'Done NUMBMM 2',parms%aggr_kind, mld_smooth_prol_
call op_prol%transp(op_restr) call op_prol%cp_to(tmpcoo)
call op_restr%mv_to(tmpcoo) call tmpcoo%transp()
nzl = tmpcoo%get_nzeros() nzl = tmpcoo%get_nzeros()
i=0 i=0
! !
@ -388,7 +390,7 @@ subroutine mld_zaggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
end if end if
end do end do
call tmpcoo%set_nzeros(i) call tmpcoo%set_nzeros(i)
call tmpcoo%trim() ! call tmpcoo%trim()
call op_restr%mv_from(tmpcoo) call op_restr%mv_from(tmpcoo)
call op_restr%cscnv(info,type='csr',dupl=psb_dupl_add_) call op_restr%cscnv(info,type='csr',dupl=psb_dupl_add_)
if (info /= psb_success_) then if (info /= psb_success_) then
@ -422,7 +424,6 @@ subroutine mld_zaggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest
goto 9999 goto 9999
end if end if
if (debug_level >= psb_debug_outer_) & if (debug_level >= psb_debug_outer_) &
& write(debug_unit,*) me,' ',trim(name),& & write(debug_unit,*) me,' ',trim(name),&
& 'Done smooth_aggregate ' & 'Done smooth_aggregate '

Loading…
Cancel
Save