From c0b033da57619e11903ef076e1ceb40196ef2161 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Mon, 4 May 2020 12:44:37 +0200 Subject: [PATCH] Take out the backfix method. Originally it was introduced to handle cases where the stencil was expanded by the smoothing and multiplication process, but the critical step is handled in AGGR%BLD_MAP, this one can be discarded. --- mlprec/impl/mld_c_hierarchy_bld.f90 | 5 ----- mlprec/impl/mld_d_hierarchy_bld.f90 | 5 ----- mlprec/impl/mld_s_hierarchy_bld.f90 | 5 ----- mlprec/impl/mld_z_hierarchy_bld.f90 | 5 ----- mlprec/mld_c_base_aggregator_mod.f90 | 15 --------------- mlprec/mld_c_onelev_mod.f90 | 15 --------------- mlprec/mld_d_base_aggregator_mod.f90 | 15 --------------- mlprec/mld_d_onelev_mod.f90 | 15 --------------- mlprec/mld_s_base_aggregator_mod.f90 | 15 --------------- mlprec/mld_s_onelev_mod.f90 | 15 --------------- mlprec/mld_z_base_aggregator_mod.f90 | 15 --------------- mlprec/mld_z_onelev_mod.f90 | 15 --------------- 12 files changed, 140 deletions(-) diff --git a/mlprec/impl/mld_c_hierarchy_bld.f90 b/mlprec/impl/mld_c_hierarchy_bld.f90 index c05e4c41..e59ce778 100644 --- a/mlprec/impl/mld_c_hierarchy_bld.f90 +++ b/mlprec/impl/mld_c_hierarchy_bld.f90 @@ -449,11 +449,6 @@ subroutine mld_c_hierarchy_bld(a,desc_a,prec,info) end do end if - ! Does the coarsening need backfix on descriptors? - do i=2, iszv - if (info == psb_success_) call prec%precv(i)%backfix(prec%precv(i-1),info) - end do - if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& & a_err='Internal hierarchy build' ) diff --git a/mlprec/impl/mld_d_hierarchy_bld.f90 b/mlprec/impl/mld_d_hierarchy_bld.f90 index 0d6d174a..08a5a7aa 100644 --- a/mlprec/impl/mld_d_hierarchy_bld.f90 +++ b/mlprec/impl/mld_d_hierarchy_bld.f90 @@ -449,11 +449,6 @@ subroutine mld_d_hierarchy_bld(a,desc_a,prec,info) end do end if - ! Does the coarsening need backfix on descriptors? - do i=2, iszv - if (info == psb_success_) call prec%precv(i)%backfix(prec%precv(i-1),info) - end do - if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& & a_err='Internal hierarchy build' ) diff --git a/mlprec/impl/mld_s_hierarchy_bld.f90 b/mlprec/impl/mld_s_hierarchy_bld.f90 index 5669e758..235d9dd7 100644 --- a/mlprec/impl/mld_s_hierarchy_bld.f90 +++ b/mlprec/impl/mld_s_hierarchy_bld.f90 @@ -449,11 +449,6 @@ subroutine mld_s_hierarchy_bld(a,desc_a,prec,info) end do end if - ! Does the coarsening need backfix on descriptors? - do i=2, iszv - if (info == psb_success_) call prec%precv(i)%backfix(prec%precv(i-1),info) - end do - if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& & a_err='Internal hierarchy build' ) diff --git a/mlprec/impl/mld_z_hierarchy_bld.f90 b/mlprec/impl/mld_z_hierarchy_bld.f90 index c295efdc..995c67b1 100644 --- a/mlprec/impl/mld_z_hierarchy_bld.f90 +++ b/mlprec/impl/mld_z_hierarchy_bld.f90 @@ -449,11 +449,6 @@ subroutine mld_z_hierarchy_bld(a,desc_a,prec,info) end do end if - ! Does the coarsening need backfix on descriptors? - do i=2, iszv - if (info == psb_success_) call prec%precv(i)%backfix(prec%precv(i-1),info) - end do - if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& & a_err='Internal hierarchy build' ) diff --git a/mlprec/mld_c_base_aggregator_mod.f90 b/mlprec/mld_c_base_aggregator_mod.f90 index 3d0eaa95..063d5684 100644 --- a/mlprec/mld_c_base_aggregator_mod.f90 +++ b/mlprec/mld_c_base_aggregator_mod.f90 @@ -103,7 +103,6 @@ module mld_c_base_aggregator_mod procedure, pass(ag) :: csetc => mld_c_base_aggregator_csetc generic, public :: set => cseti, csetr, csetc procedure, nopass :: xt_desc => mld_c_base_aggregator_xt_desc - procedure, pass(ag) :: backfix => mld_c_base_aggregator_backfix end type mld_c_base_aggregator_type abstract interface @@ -272,20 +271,6 @@ contains val = .false. end function mld_c_base_aggregator_xt_desc - subroutine mld_c_base_aggregator_backfix(ag,base_a,ac,base_desc,desc_ac,info) - implicit none - class(mld_c_base_aggregator_type), intent(inout) :: ag - type(psb_cspmat_type), pointer :: base_a - type(psb_cspmat_type), intent(inout), target :: ac - type(psb_desc_type), pointer :: base_desc - type(psb_desc_type), intent(inout), target :: desc_ac - integer(psb_ipk_), intent(out) :: info - - ! Base version is to do nothing. - info = psb_success_ - - end subroutine mld_c_base_aggregator_backfix - subroutine mld_c_base_aggregator_descr(ag,parms,iout,info) implicit none class(mld_c_base_aggregator_type), intent(in) :: ag diff --git a/mlprec/mld_c_onelev_mod.f90 b/mlprec/mld_c_onelev_mod.f90 index b8dcff1e..e61bfc29 100644 --- a/mlprec/mld_c_onelev_mod.f90 +++ b/mlprec/mld_c_onelev_mod.f90 @@ -171,7 +171,6 @@ module mld_c_onelev_mod contains procedure, pass(lv) :: bld_tprol => c_base_onelev_bld_tprol procedure, pass(lv) :: mat_asb => mld_c_base_onelev_mat_asb - procedure, pass(lv) :: backfix => c_base_onelev_backfix procedure, pass(lv) :: update_aggr => c_base_onelev_update_aggr procedure, pass(lv) :: bld => mld_c_base_onelev_build procedure, pass(lv) :: clone => c_base_onelev_clone @@ -514,20 +513,6 @@ contains end subroutine c_base_onelev_update_aggr - subroutine c_base_onelev_backfix(lv,lvprev,info) - implicit none - class(mld_c_onelev_type), intent(inout), target :: lv, lvprev - integer(psb_ipk_), intent(out) :: info - - info = psb_success_ - if (lv%aggr%xt_desc()) then - call lv%aggr%backfix(lvprev%base_a,lvprev%ac,& - & lvprev%base_desc,lvprev%desc_ac,info) - end if - - end subroutine c_base_onelev_backfix - - subroutine c_base_onelev_clone(lv,lvout,info) Implicit None diff --git a/mlprec/mld_d_base_aggregator_mod.f90 b/mlprec/mld_d_base_aggregator_mod.f90 index 4e788975..46abd1e4 100644 --- a/mlprec/mld_d_base_aggregator_mod.f90 +++ b/mlprec/mld_d_base_aggregator_mod.f90 @@ -103,7 +103,6 @@ module mld_d_base_aggregator_mod procedure, pass(ag) :: csetc => mld_d_base_aggregator_csetc generic, public :: set => cseti, csetr, csetc procedure, nopass :: xt_desc => mld_d_base_aggregator_xt_desc - procedure, pass(ag) :: backfix => mld_d_base_aggregator_backfix end type mld_d_base_aggregator_type abstract interface @@ -272,20 +271,6 @@ contains val = .false. end function mld_d_base_aggregator_xt_desc - subroutine mld_d_base_aggregator_backfix(ag,base_a,ac,base_desc,desc_ac,info) - implicit none - class(mld_d_base_aggregator_type), intent(inout) :: ag - type(psb_dspmat_type), pointer :: base_a - type(psb_dspmat_type), intent(inout), target :: ac - type(psb_desc_type), pointer :: base_desc - type(psb_desc_type), intent(inout), target :: desc_ac - integer(psb_ipk_), intent(out) :: info - - ! Base version is to do nothing. - info = psb_success_ - - end subroutine mld_d_base_aggregator_backfix - subroutine mld_d_base_aggregator_descr(ag,parms,iout,info) implicit none class(mld_d_base_aggregator_type), intent(in) :: ag diff --git a/mlprec/mld_d_onelev_mod.f90 b/mlprec/mld_d_onelev_mod.f90 index 705f12dc..a66eca2d 100644 --- a/mlprec/mld_d_onelev_mod.f90 +++ b/mlprec/mld_d_onelev_mod.f90 @@ -171,7 +171,6 @@ module mld_d_onelev_mod contains procedure, pass(lv) :: bld_tprol => d_base_onelev_bld_tprol procedure, pass(lv) :: mat_asb => mld_d_base_onelev_mat_asb - procedure, pass(lv) :: backfix => d_base_onelev_backfix procedure, pass(lv) :: update_aggr => d_base_onelev_update_aggr procedure, pass(lv) :: bld => mld_d_base_onelev_build procedure, pass(lv) :: clone => d_base_onelev_clone @@ -514,20 +513,6 @@ contains end subroutine d_base_onelev_update_aggr - subroutine d_base_onelev_backfix(lv,lvprev,info) - implicit none - class(mld_d_onelev_type), intent(inout), target :: lv, lvprev - integer(psb_ipk_), intent(out) :: info - - info = psb_success_ - if (lv%aggr%xt_desc()) then - call lv%aggr%backfix(lvprev%base_a,lvprev%ac,& - & lvprev%base_desc,lvprev%desc_ac,info) - end if - - end subroutine d_base_onelev_backfix - - subroutine d_base_onelev_clone(lv,lvout,info) Implicit None diff --git a/mlprec/mld_s_base_aggregator_mod.f90 b/mlprec/mld_s_base_aggregator_mod.f90 index 1dff55c1..748e7d24 100644 --- a/mlprec/mld_s_base_aggregator_mod.f90 +++ b/mlprec/mld_s_base_aggregator_mod.f90 @@ -103,7 +103,6 @@ module mld_s_base_aggregator_mod procedure, pass(ag) :: csetc => mld_s_base_aggregator_csetc generic, public :: set => cseti, csetr, csetc procedure, nopass :: xt_desc => mld_s_base_aggregator_xt_desc - procedure, pass(ag) :: backfix => mld_s_base_aggregator_backfix end type mld_s_base_aggregator_type abstract interface @@ -272,20 +271,6 @@ contains val = .false. end function mld_s_base_aggregator_xt_desc - subroutine mld_s_base_aggregator_backfix(ag,base_a,ac,base_desc,desc_ac,info) - implicit none - class(mld_s_base_aggregator_type), intent(inout) :: ag - type(psb_sspmat_type), pointer :: base_a - type(psb_sspmat_type), intent(inout), target :: ac - type(psb_desc_type), pointer :: base_desc - type(psb_desc_type), intent(inout), target :: desc_ac - integer(psb_ipk_), intent(out) :: info - - ! Base version is to do nothing. - info = psb_success_ - - end subroutine mld_s_base_aggregator_backfix - subroutine mld_s_base_aggregator_descr(ag,parms,iout,info) implicit none class(mld_s_base_aggregator_type), intent(in) :: ag diff --git a/mlprec/mld_s_onelev_mod.f90 b/mlprec/mld_s_onelev_mod.f90 index a3e6208f..ffcde2da 100644 --- a/mlprec/mld_s_onelev_mod.f90 +++ b/mlprec/mld_s_onelev_mod.f90 @@ -171,7 +171,6 @@ module mld_s_onelev_mod contains procedure, pass(lv) :: bld_tprol => s_base_onelev_bld_tprol procedure, pass(lv) :: mat_asb => mld_s_base_onelev_mat_asb - procedure, pass(lv) :: backfix => s_base_onelev_backfix procedure, pass(lv) :: update_aggr => s_base_onelev_update_aggr procedure, pass(lv) :: bld => mld_s_base_onelev_build procedure, pass(lv) :: clone => s_base_onelev_clone @@ -514,20 +513,6 @@ contains end subroutine s_base_onelev_update_aggr - subroutine s_base_onelev_backfix(lv,lvprev,info) - implicit none - class(mld_s_onelev_type), intent(inout), target :: lv, lvprev - integer(psb_ipk_), intent(out) :: info - - info = psb_success_ - if (lv%aggr%xt_desc()) then - call lv%aggr%backfix(lvprev%base_a,lvprev%ac,& - & lvprev%base_desc,lvprev%desc_ac,info) - end if - - end subroutine s_base_onelev_backfix - - subroutine s_base_onelev_clone(lv,lvout,info) Implicit None diff --git a/mlprec/mld_z_base_aggregator_mod.f90 b/mlprec/mld_z_base_aggregator_mod.f90 index ba5cc2dd..471d21b9 100644 --- a/mlprec/mld_z_base_aggregator_mod.f90 +++ b/mlprec/mld_z_base_aggregator_mod.f90 @@ -103,7 +103,6 @@ module mld_z_base_aggregator_mod procedure, pass(ag) :: csetc => mld_z_base_aggregator_csetc generic, public :: set => cseti, csetr, csetc procedure, nopass :: xt_desc => mld_z_base_aggregator_xt_desc - procedure, pass(ag) :: backfix => mld_z_base_aggregator_backfix end type mld_z_base_aggregator_type abstract interface @@ -272,20 +271,6 @@ contains val = .false. end function mld_z_base_aggregator_xt_desc - subroutine mld_z_base_aggregator_backfix(ag,base_a,ac,base_desc,desc_ac,info) - implicit none - class(mld_z_base_aggregator_type), intent(inout) :: ag - type(psb_zspmat_type), pointer :: base_a - type(psb_zspmat_type), intent(inout), target :: ac - type(psb_desc_type), pointer :: base_desc - type(psb_desc_type), intent(inout), target :: desc_ac - integer(psb_ipk_), intent(out) :: info - - ! Base version is to do nothing. - info = psb_success_ - - end subroutine mld_z_base_aggregator_backfix - subroutine mld_z_base_aggregator_descr(ag,parms,iout,info) implicit none class(mld_z_base_aggregator_type), intent(in) :: ag diff --git a/mlprec/mld_z_onelev_mod.f90 b/mlprec/mld_z_onelev_mod.f90 index e0122502..0fce1a1f 100644 --- a/mlprec/mld_z_onelev_mod.f90 +++ b/mlprec/mld_z_onelev_mod.f90 @@ -171,7 +171,6 @@ module mld_z_onelev_mod contains procedure, pass(lv) :: bld_tprol => z_base_onelev_bld_tprol procedure, pass(lv) :: mat_asb => mld_z_base_onelev_mat_asb - procedure, pass(lv) :: backfix => z_base_onelev_backfix procedure, pass(lv) :: update_aggr => z_base_onelev_update_aggr procedure, pass(lv) :: bld => mld_z_base_onelev_build procedure, pass(lv) :: clone => z_base_onelev_clone @@ -514,20 +513,6 @@ contains end subroutine z_base_onelev_update_aggr - subroutine z_base_onelev_backfix(lv,lvprev,info) - implicit none - class(mld_z_onelev_type), intent(inout), target :: lv, lvprev - integer(psb_ipk_), intent(out) :: info - - info = psb_success_ - if (lv%aggr%xt_desc()) then - call lv%aggr%backfix(lvprev%base_a,lvprev%ac,& - & lvprev%base_desc,lvprev%desc_ac,info) - end if - - end subroutine z_base_onelev_backfix - - subroutine z_base_onelev_clone(lv,lvout,info) Implicit None