From fb3a2cdbdd0a5065056d892a8fae8d40ad4097e5 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Thu, 11 Jun 2020 15:22:49 +0200 Subject: [PATCH] Change interface of MAT_BLD adding desc_ac --- .../mld_d_dec_aggregator_mat_bld.f90 | 18 ++++++++++-------- .../impl/aggregator/mld_daggrmat_biz_bld.f90 | 3 ++- .../aggregator/mld_daggrmat_minnrg_bld.f90 | 4 +++- .../aggregator/mld_daggrmat_nosmth_bld.f90 | 4 +++- .../impl/aggregator/mld_daggrmat_smth_bld.f90 | 4 +++- .../impl/level/mld_d_base_onelev_mat_asb.f90 | 3 ++- mlprec/mld_d_base_aggregator_mod.f90 | 5 +++-- mlprec/mld_d_dec_aggregator_mod.f90 | 5 +++-- mlprec/mld_d_inner_mod.f90 | 4 +++- 9 files changed, 32 insertions(+), 18 deletions(-) diff --git a/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_bld.f90 b/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_bld.f90 index fa8bd60b..5c956dac 100644 --- a/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_bld.f90 +++ b/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_bld.f90 @@ -133,7 +133,8 @@ ! info - integer, output. ! Error code. ! -subroutine mld_d_dec_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_prol,op_restr,info) +subroutine mld_d_dec_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,& + & ac,desc_ac,op_prol,op_restr,info) use psb_base_mod use mld_d_prec_type, mld_protect_name => mld_d_dec_aggregator_mat_bld use mld_d_inner_mod @@ -146,6 +147,7 @@ subroutine mld_d_dec_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_p integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(psb_ldspmat_type), intent(inout) :: op_prol type(psb_ldspmat_type), intent(out) :: ac,op_restr + type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info ! Local variables @@ -177,22 +179,22 @@ subroutine mld_d_dec_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_p case (mld_no_smooth_) call mld_daggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,& - & parms,ac,op_prol,op_restr,info) + & parms,ac,desc_ac,op_prol,op_restr,info) case(mld_smooth_prol_) call mld_daggrmat_smth_bld(a,desc_a,ilaggr,nlaggr, & - & parms,ac,op_prol,op_restr,info) + & parms,ac,desc_ac,op_prol,op_restr,info) - case(mld_biz_prol_) - - call mld_daggrmat_biz_bld(a,desc_a,ilaggr,nlaggr, & - & parms,ac,op_prol,op_restr,info) +!!$ case(mld_biz_prol_) +!!$ +!!$ call mld_daggrmat_biz_bld(a,desc_a,ilaggr,nlaggr, & +!!$ & parms,ac,desc_ac,op_prol,op_restr,info) case(mld_min_energy_) call mld_daggrmat_minnrg_bld(a,desc_a,ilaggr,nlaggr, & - & parms,ac,op_prol,op_restr,info) + & parms,ac,desc_ac,op_prol,op_restr,info) case default info = psb_err_internal_error_ diff --git a/mlprec/impl/aggregator/mld_daggrmat_biz_bld.f90 b/mlprec/impl/aggregator/mld_daggrmat_biz_bld.f90 index 055f8b8c..c9e3b86c 100644 --- a/mlprec/impl/aggregator/mld_daggrmat_biz_bld.f90 +++ b/mlprec/impl/aggregator/mld_daggrmat_biz_bld.f90 @@ -80,7 +80,7 @@ ! info - integer, output. ! Error code. ! -subroutine mld_daggrmat_biz_bld(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_restr,info) +subroutine mld_daggrmat_biz_bld(a,desc_a,ilaggr,nlaggr,parms,ac,desc_ac,op_prol,op_restr,info) use psb_base_mod use mld_base_prec_type use mld_d_inner_mod, mld_protect_name => mld_daggrmat_biz_bld @@ -95,6 +95,7 @@ subroutine mld_daggrmat_biz_bld(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_restr type(mld_dml_parms), intent(inout) :: parms type(psb_ldspmat_type), intent(inout) :: op_prol type(psb_ldspmat_type), intent(out) :: ac,op_restr + type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info ! Local variables diff --git a/mlprec/impl/aggregator/mld_daggrmat_minnrg_bld.f90 b/mlprec/impl/aggregator/mld_daggrmat_minnrg_bld.f90 index dac54e8f..9065e3c5 100644 --- a/mlprec/impl/aggregator/mld_daggrmat_minnrg_bld.f90 +++ b/mlprec/impl/aggregator/mld_daggrmat_minnrg_bld.f90 @@ -104,7 +104,8 @@ ! Error code. ! ! -subroutine mld_daggrmat_minnrg_bld(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_restr,info) +subroutine mld_daggrmat_minnrg_bld(a,desc_a,ilaggr,nlaggr,parms,& + &ac,desc_ac,op_prol,op_restr,info) use psb_base_mod use mld_base_prec_type use mld_d_inner_mod, mld_protect_name => mld_daggrmat_minnrg_bld @@ -118,6 +119,7 @@ subroutine mld_daggrmat_minnrg_bld(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_re type(mld_dml_parms), intent(inout) :: parms type(psb_ldspmat_type), intent(inout) :: op_prol type(psb_ldspmat_type), intent(out) :: ac,op_restr + type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info ! Local variables diff --git a/mlprec/impl/aggregator/mld_daggrmat_nosmth_bld.f90 b/mlprec/impl/aggregator/mld_daggrmat_nosmth_bld.f90 index 50640c23..50511fb4 100644 --- a/mlprec/impl/aggregator/mld_daggrmat_nosmth_bld.f90 +++ b/mlprec/impl/aggregator/mld_daggrmat_nosmth_bld.f90 @@ -96,7 +96,8 @@ ! Error code. ! ! -subroutine mld_daggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_restr,info) +subroutine mld_daggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& + & ac,desc_ac,op_prol,op_restr,info) use psb_base_mod use mld_base_prec_type use mld_d_inner_mod, mld_protect_name => mld_daggrmat_nosmth_bld @@ -110,6 +111,7 @@ subroutine mld_daggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_re type(mld_dml_parms), intent(inout) :: parms type(psb_ldspmat_type), intent(inout) :: op_prol type(psb_ldspmat_type), intent(out) :: ac,op_restr + type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info ! Local variables diff --git a/mlprec/impl/aggregator/mld_daggrmat_smth_bld.f90 b/mlprec/impl/aggregator/mld_daggrmat_smth_bld.f90 index 95ca613b..1efad4ff 100644 --- a/mlprec/impl/aggregator/mld_daggrmat_smth_bld.f90 +++ b/mlprec/impl/aggregator/mld_daggrmat_smth_bld.f90 @@ -102,7 +102,8 @@ ! info - integer, output. ! Error code. ! -subroutine mld_daggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_restr,info) +subroutine mld_daggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& + & ac,desc_ac,op_prol,op_restr,info) use psb_base_mod use mld_base_prec_type use mld_d_inner_mod, mld_protect_name => mld_daggrmat_smth_bld @@ -117,6 +118,7 @@ subroutine mld_daggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_rest type(mld_dml_parms), intent(inout) :: parms type(psb_ldspmat_type), intent(inout) :: op_prol type(psb_ldspmat_type), intent(out) :: ac,op_restr + type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info ! Local variables diff --git a/mlprec/impl/level/mld_d_base_onelev_mat_asb.f90 b/mlprec/impl/level/mld_d_base_onelev_mat_asb.f90 index 2e5cb2ee..433d11ce 100644 --- a/mlprec/impl/level/mld_d_base_onelev_mat_asb.f90 +++ b/mlprec/impl/level/mld_d_base_onelev_mat_asb.f90 @@ -141,7 +141,8 @@ subroutine mld_d_base_onelev_mat_asb(lv,a,desc_a,ilaggr,nlaggr,op_prol,info) ! the mapping defined by mld_aggrmap_bld and applying the aggregation ! algorithm specified by lv%iprcparm(mld_aggr_prol_) ! - call lv%aggr%mat_bld(lv%parms,a,desc_a,ilaggr,nlaggr,lac,op_prol,op_restr,info) + call lv%aggr%mat_bld(lv%parms,a,desc_a,ilaggr,nlaggr,& + & lac,lv%desc_ac,op_prol,op_restr,info) if(info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='mld_aggrmat_asb') diff --git a/mlprec/mld_d_base_aggregator_mod.f90 b/mlprec/mld_d_base_aggregator_mod.f90 index 46abd1e4..9a1797ac 100644 --- a/mlprec/mld_d_base_aggregator_mod.f90 +++ b/mlprec/mld_d_base_aggregator_mod.f90 @@ -369,8 +369,8 @@ contains !! in many cases it is the transpose of the prolongator. !! \param info Return code !! - subroutine mld_d_base_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,ac,& - & op_prol,op_restr,info) + subroutine mld_d_base_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,& + & ac,desc_ac,op_prol,op_restr,info) use psb_base_mod implicit none class(mld_d_base_aggregator_type), target, intent(inout) :: ag @@ -380,6 +380,7 @@ contains integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(psb_ldspmat_type), intent(inout) :: op_prol type(psb_ldspmat_type), intent(out) :: ac,op_restr + type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info integer(psb_ipk_) :: err_act character(len=20) :: name='d_base_aggregator_mat_bld' diff --git a/mlprec/mld_d_dec_aggregator_mod.f90 b/mlprec/mld_d_dec_aggregator_mod.f90 index 4df1f987..bd2ddde2 100644 --- a/mlprec/mld_d_dec_aggregator_mod.f90 +++ b/mlprec/mld_d_dec_aggregator_mod.f90 @@ -109,8 +109,8 @@ module mld_d_dec_aggregator_mod end interface interface - subroutine mld_d_dec_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,ac,& - & op_prol,op_restr,info) + subroutine mld_d_dec_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,& + & ac,desc_ac,op_prol,op_restr,info) import :: mld_d_dec_aggregator_type, psb_desc_type, psb_dspmat_type, psb_dpk_, & & psb_ipk_, psb_lpk_, psb_ldspmat_type, mld_dml_parms implicit none @@ -121,6 +121,7 @@ module mld_d_dec_aggregator_mod integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(psb_ldspmat_type), intent(inout) :: op_prol type(psb_ldspmat_type), intent(out) :: ac,op_restr + type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info end subroutine mld_d_dec_aggregator_mat_bld end interface diff --git a/mlprec/mld_d_inner_mod.f90 b/mlprec/mld_d_inner_mod.f90 index 2329bf77..c36153d8 100644 --- a/mlprec/mld_d_inner_mod.f90 +++ b/mlprec/mld_d_inner_mod.f90 @@ -109,7 +109,8 @@ module mld_d_inner_mod end interface mld_map_to_tprol abstract interface - subroutine mld_daggrmat_var_bld(a,desc_a,ilaggr,nlaggr,parms,ac,op_prol,op_restr,info) + subroutine mld_daggrmat_var_bld(a,desc_a,ilaggr,nlaggr,parms,& + & ac,desc_ac,op_prol,op_restr,info) import :: psb_dspmat_type, psb_desc_type, psb_dpk_, psb_ipk_, psb_lpk_, psb_ldspmat_type import :: mld_d_onelev_type, mld_dml_parms implicit none @@ -119,6 +120,7 @@ module mld_d_inner_mod type(mld_dml_parms), intent(inout) :: parms type(psb_ldspmat_type), intent(inout) :: op_prol type(psb_ldspmat_type), intent(out) :: ac,op_restr + type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info end subroutine mld_daggrmat_var_bld end interface