From cce189c45070a281e0405e04534c9ebf6683513a Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Fri, 11 May 2018 08:57:37 +0100 Subject: [PATCH] Rename dec_map_bld into vmb_map_bld, following the split between PAR_AGGR_ALG and AGGR_TYPE. --- mlprec/impl/aggregator/Makefile | 8 ++++---- .../impl/aggregator/mld_c_dec_aggregator_tprol.f90 | 6 +++--- mlprec/impl/aggregator/mld_c_hyb_map_bld.f90 | 13 ++++++------- .../aggregator/mld_c_symdec_aggregator_tprol.f90 | 6 +++--- ...mld_c_dec_map_bld.f90 => mld_c_vmb_map_bld.f90} | 14 +++++++------- .../impl/aggregator/mld_d_dec_aggregator_tprol.f90 | 6 +++--- mlprec/impl/aggregator/mld_d_hyb_map_bld.f90 | 13 ++++++------- .../aggregator/mld_d_symdec_aggregator_tprol.f90 | 6 +++--- ...mld_d_dec_map_bld.f90 => mld_d_vmb_map_bld.f90} | 14 +++++++------- .../impl/aggregator/mld_s_dec_aggregator_tprol.f90 | 6 +++--- mlprec/impl/aggregator/mld_s_hyb_map_bld.f90 | 13 ++++++------- .../aggregator/mld_s_symdec_aggregator_tprol.f90 | 6 +++--- ...mld_s_dec_map_bld.f90 => mld_s_vmb_map_bld.f90} | 14 +++++++------- .../impl/aggregator/mld_z_dec_aggregator_tprol.f90 | 6 +++--- mlprec/impl/aggregator/mld_z_hyb_map_bld.f90 | 13 ++++++------- .../aggregator/mld_z_symdec_aggregator_tprol.f90 | 6 +++--- ...mld_z_dec_map_bld.f90 => mld_z_vmb_map_bld.f90} | 14 +++++++------- mlprec/mld_c_inner_mod.f90 | 8 ++++---- mlprec/mld_d_inner_mod.f90 | 8 ++++---- mlprec/mld_s_inner_mod.f90 | 8 ++++---- mlprec/mld_z_inner_mod.f90 | 8 ++++---- 21 files changed, 96 insertions(+), 100 deletions(-) rename mlprec/impl/aggregator/{mld_c_dec_map_bld.f90 => mld_c_vmb_map_bld.f90} (96%) rename mlprec/impl/aggregator/{mld_d_dec_map_bld.f90 => mld_d_vmb_map_bld.f90} (96%) rename mlprec/impl/aggregator/{mld_s_dec_map_bld.f90 => mld_s_vmb_map_bld.f90} (96%) rename mlprec/impl/aggregator/{mld_z_dec_map_bld.f90 => mld_z_vmb_map_bld.f90} (96%) diff --git a/mlprec/impl/aggregator/Makefile b/mlprec/impl/aggregator/Makefile index ba217c1c..56f21c72 100644 --- a/mlprec/impl/aggregator/Makefile +++ b/mlprec/impl/aggregator/Makefile @@ -13,28 +13,28 @@ mld_s_dec_aggregator_mat_asb.o \ mld_s_dec_aggregator_tprol.o \ mld_s_hybrid_aggregator_tprol.o \ mld_s_symdec_aggregator_tprol.o \ -mld_s_map_to_tprol.o mld_s_dec_map_bld.o mld_s_hyb_map_bld.o\ +mld_s_map_to_tprol.o mld_s_vmb_map_bld.o mld_s_hyb_map_bld.o\ mld_saggrmat_biz_asb.o mld_saggrmat_minnrg_asb.o\ mld_saggrmat_nosmth_asb.o mld_saggrmat_smth_asb.o \ mld_d_dec_aggregator_mat_asb.o \ mld_d_dec_aggregator_tprol.o \ mld_d_hybrid_aggregator_tprol.o \ mld_d_symdec_aggregator_tprol.o \ -mld_d_map_to_tprol.o mld_d_dec_map_bld.o mld_d_hyb_map_bld.o\ +mld_d_map_to_tprol.o mld_d_vmb_map_bld.o mld_d_hyb_map_bld.o\ mld_daggrmat_biz_asb.o mld_daggrmat_minnrg_asb.o\ mld_daggrmat_nosmth_asb.o mld_daggrmat_smth_asb.o \ mld_c_dec_aggregator_mat_asb.o \ mld_c_dec_aggregator_tprol.o \ mld_c_hybrid_aggregator_tprol.o \ mld_c_symdec_aggregator_tprol.o \ -mld_c_map_to_tprol.o mld_c_dec_map_bld.o mld_c_hyb_map_bld.o\ +mld_c_map_to_tprol.o mld_c_vmb_map_bld.o mld_c_hyb_map_bld.o\ mld_caggrmat_biz_asb.o mld_caggrmat_minnrg_asb.o\ mld_caggrmat_nosmth_asb.o mld_caggrmat_smth_asb.o \ mld_z_dec_aggregator_mat_asb.o \ mld_z_dec_aggregator_tprol.o \ mld_z_hybrid_aggregator_tprol.o \ mld_z_symdec_aggregator_tprol.o \ -mld_z_map_to_tprol.o mld_z_dec_map_bld.o mld_z_hyb_map_bld.o\ +mld_z_map_to_tprol.o mld_z_vmb_map_bld.o mld_z_hyb_map_bld.o\ mld_zaggrmat_biz_asb.o mld_zaggrmat_minnrg_asb.o\ mld_zaggrmat_nosmth_asb.o mld_zaggrmat_smth_asb.o diff --git a/mlprec/impl/aggregator/mld_c_dec_aggregator_tprol.f90 b/mlprec/impl/aggregator/mld_c_dec_aggregator_tprol.f90 index cd978972..9d5eea9f 100644 --- a/mlprec/impl/aggregator/mld_c_dec_aggregator_tprol.f90 +++ b/mlprec/impl/aggregator/mld_c_dec_aggregator_tprol.f90 @@ -40,7 +40,7 @@ ! Subroutine: mld_c_dec_aggregator_tprol ! Version: complex ! -! This routine is mainly an interface to dec_map_bld where the real work is performed. +! This routine is mainly an interface to vmb_map_bld where the real work is performed. ! It takes care of some consistency checking, and calls map_to_tprol, which is ! refactored and shared among all the aggregation methods that produce a simple ! integer mapping. @@ -110,12 +110,12 @@ subroutine mld_c_dec_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_ call mld_check_def(parms%aggr_thresh,'Aggr_Thresh',szero,is_legal_s_aggr_thrs) - call mld_dec_map_bld(parms%aggr_ord,parms%aggr_thresh,a,desc_a,nlaggr,ilaggr,info) + call mld_vmb_map_bld(parms%aggr_ord,parms%aggr_thresh,a,desc_a,nlaggr,ilaggr,info) if (info==psb_success_) call mld_map_to_tprol(desc_a,ilaggr,nlaggr,op_prol,info) if (info /= psb_success_) then info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='dec_map_bld/map_to_tprol') + call psb_errpush(info,name,a_err='vmb_map_bld/map_to_tprol') goto 9999 endif diff --git a/mlprec/impl/aggregator/mld_c_hyb_map_bld.f90 b/mlprec/impl/aggregator/mld_c_hyb_map_bld.f90 index 33e50511..dc993846 100644 --- a/mlprec/impl/aggregator/mld_c_hyb_map_bld.f90 +++ b/mlprec/impl/aggregator/mld_c_hyb_map_bld.f90 @@ -41,14 +41,13 @@ ! Subroutine: mld_c_hyb_map_bld ! Version: complex ! -! This routine builds the tentative prolongator based on the -! decoupled aggregation algorithm presented in +! The aggregator object hosts the aggregation method for building +! the multilevel hierarchy. This variant is based on the hybrid method +! presented in ! -! M. Brezina and P. Vanek, A black-box iterative solver based on a -! two-level Schwarz method, Computing, 63 (1999), 233-263. -! P. D'Ambra, D. di Serafino and S. Filippone, On the development of -! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math. -! 57 (2007), 1181-1196. +! S. Gratton, P. Henon, P. Jiranek and X. Vasseur: +! Reducing complexity of algebraic multigrid by aggregation +! Numerical Lin. Algebra with Applications, 2016, 23:501-518 ! ! Note: upon exit ! diff --git a/mlprec/impl/aggregator/mld_c_symdec_aggregator_tprol.f90 b/mlprec/impl/aggregator/mld_c_symdec_aggregator_tprol.f90 index 2486de43..53f2b04f 100644 --- a/mlprec/impl/aggregator/mld_c_symdec_aggregator_tprol.f90 +++ b/mlprec/impl/aggregator/mld_c_symdec_aggregator_tprol.f90 @@ -41,7 +41,7 @@ ! Version: complex ! ! -! This routine is mainly an interface to dec_map_bld where the real work is performed. +! This routine is mainly an interface to vmb_map_bld where the real work is performed. ! It takes care of some consistency checking, and calls map_to_tprol, which is ! refactored and shared among all the aggregation methods that produce a simple ! integer mapping. @@ -127,13 +127,13 @@ subroutine mld_c_symdec_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr, if (info == psb_success_) call atmp%cscnv(info,type='CSR') if (info == psb_success_) & - & call mld_dec_map_bld(parms%aggr_ord,parms%aggr_thresh,atmp,desc_a,nlaggr,ilaggr,info) + & call mld_vmb_map_bld(parms%aggr_ord,parms%aggr_thresh,atmp,desc_a,nlaggr,ilaggr,info) if (info == psb_success_) call atmp%free() if (info == psb_success_) call mld_map_to_tprol(desc_a,ilaggr,nlaggr,op_prol,info) if (info /= psb_success_) then info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='dec_map_bld/map_to_tprol') + call psb_errpush(info,name,a_err='vmb_map_bld/map_to_tprol') goto 9999 endif diff --git a/mlprec/impl/aggregator/mld_c_dec_map_bld.f90 b/mlprec/impl/aggregator/mld_c_vmb_map_bld.f90 similarity index 96% rename from mlprec/impl/aggregator/mld_c_dec_map_bld.f90 rename to mlprec/impl/aggregator/mld_c_vmb_map_bld.f90 index cc40d5fd..1c300ae4 100644 --- a/mlprec/impl/aggregator/mld_c_dec_map_bld.f90 +++ b/mlprec/impl/aggregator/mld_c_vmb_map_bld.f90 @@ -36,13 +36,13 @@ ! ! ! -! File: mld_c_dec_map__bld.f90 +! File: mld_c_vmb_map__bld.f90 ! -! Subroutine: mld_c_dec_map_bld +! Subroutine: mld_c_vmb_map_bld ! Version: complex ! ! This routine builds the tentative prolongator based on the -! decoupled aggregation algorithm presented in +! strength of connection aggregation algorithm presented in ! ! M. Brezina and P. Vanek, A black-box iterative solver based on a ! two-level Schwarz method, Computing, 63 (1999), 233-263. @@ -67,11 +67,11 @@ ! ! ! -subroutine mld_c_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) +subroutine mld_c_vmb_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) use psb_base_mod use mld_base_prec_type - use mld_c_inner_mod, mld_protect_name => mld_c_dec_map_bld + use mld_c_inner_mod, mld_protect_name => mld_c_vmb_map_bld implicit none @@ -98,7 +98,7 @@ subroutine mld_c_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) if (psb_get_errstatus() /= 0) return info=psb_success_ - name = 'mld_dec_map_bld' + name = 'mld_vmb_map_bld' call psb_erractionsave(err_act) debug_unit = psb_get_debug_unit() debug_level = psb_get_debug_level() @@ -318,5 +318,5 @@ subroutine mld_c_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) return -end subroutine mld_c_dec_map_bld +end subroutine mld_c_vmb_map_bld diff --git a/mlprec/impl/aggregator/mld_d_dec_aggregator_tprol.f90 b/mlprec/impl/aggregator/mld_d_dec_aggregator_tprol.f90 index a919f55b..3a02f8c9 100644 --- a/mlprec/impl/aggregator/mld_d_dec_aggregator_tprol.f90 +++ b/mlprec/impl/aggregator/mld_d_dec_aggregator_tprol.f90 @@ -40,7 +40,7 @@ ! Subroutine: mld_d_dec_aggregator_tprol ! Version: real ! -! This routine is mainly an interface to dec_map_bld where the real work is performed. +! This routine is mainly an interface to vmb_map_bld where the real work is performed. ! It takes care of some consistency checking, and calls map_to_tprol, which is ! refactored and shared among all the aggregation methods that produce a simple ! integer mapping. @@ -110,12 +110,12 @@ subroutine mld_d_dec_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_ call mld_check_def(parms%aggr_thresh,'Aggr_Thresh',dzero,is_legal_d_aggr_thrs) - call mld_dec_map_bld(parms%aggr_ord,parms%aggr_thresh,a,desc_a,nlaggr,ilaggr,info) + call mld_vmb_map_bld(parms%aggr_ord,parms%aggr_thresh,a,desc_a,nlaggr,ilaggr,info) if (info==psb_success_) call mld_map_to_tprol(desc_a,ilaggr,nlaggr,op_prol,info) if (info /= psb_success_) then info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='dec_map_bld/map_to_tprol') + call psb_errpush(info,name,a_err='vmb_map_bld/map_to_tprol') goto 9999 endif diff --git a/mlprec/impl/aggregator/mld_d_hyb_map_bld.f90 b/mlprec/impl/aggregator/mld_d_hyb_map_bld.f90 index 5f3b5cbe..e7bc63dc 100644 --- a/mlprec/impl/aggregator/mld_d_hyb_map_bld.f90 +++ b/mlprec/impl/aggregator/mld_d_hyb_map_bld.f90 @@ -41,14 +41,13 @@ ! Subroutine: mld_d_hyb_map_bld ! Version: real ! -! This routine builds the tentative prolongator based on the -! decoupled aggregation algorithm presented in +! The aggregator object hosts the aggregation method for building +! the multilevel hierarchy. This variant is based on the hybrid method +! presented in ! -! M. Brezina and P. Vanek, A black-box iterative solver based on a -! two-level Schwarz method, Computing, 63 (1999), 233-263. -! P. D'Ambra, D. di Serafino and S. Filippone, On the development of -! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math. -! 57 (2007), 1181-1196. +! S. Gratton, P. Henon, P. Jiranek and X. Vasseur: +! Reducing complexity of algebraic multigrid by aggregation +! Numerical Lin. Algebra with Applications, 2016, 23:501-518 ! ! Note: upon exit ! diff --git a/mlprec/impl/aggregator/mld_d_symdec_aggregator_tprol.f90 b/mlprec/impl/aggregator/mld_d_symdec_aggregator_tprol.f90 index 74bffe40..cd0ee7dc 100644 --- a/mlprec/impl/aggregator/mld_d_symdec_aggregator_tprol.f90 +++ b/mlprec/impl/aggregator/mld_d_symdec_aggregator_tprol.f90 @@ -41,7 +41,7 @@ ! Version: real ! ! -! This routine is mainly an interface to dec_map_bld where the real work is performed. +! This routine is mainly an interface to vmb_map_bld where the real work is performed. ! It takes care of some consistency checking, and calls map_to_tprol, which is ! refactored and shared among all the aggregation methods that produce a simple ! integer mapping. @@ -127,13 +127,13 @@ subroutine mld_d_symdec_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr, if (info == psb_success_) call atmp%cscnv(info,type='CSR') if (info == psb_success_) & - & call mld_dec_map_bld(parms%aggr_ord,parms%aggr_thresh,atmp,desc_a,nlaggr,ilaggr,info) + & call mld_vmb_map_bld(parms%aggr_ord,parms%aggr_thresh,atmp,desc_a,nlaggr,ilaggr,info) if (info == psb_success_) call atmp%free() if (info == psb_success_) call mld_map_to_tprol(desc_a,ilaggr,nlaggr,op_prol,info) if (info /= psb_success_) then info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='dec_map_bld/map_to_tprol') + call psb_errpush(info,name,a_err='vmb_map_bld/map_to_tprol') goto 9999 endif diff --git a/mlprec/impl/aggregator/mld_d_dec_map_bld.f90 b/mlprec/impl/aggregator/mld_d_vmb_map_bld.f90 similarity index 96% rename from mlprec/impl/aggregator/mld_d_dec_map_bld.f90 rename to mlprec/impl/aggregator/mld_d_vmb_map_bld.f90 index 8d50c23e..2b523f7c 100644 --- a/mlprec/impl/aggregator/mld_d_dec_map_bld.f90 +++ b/mlprec/impl/aggregator/mld_d_vmb_map_bld.f90 @@ -36,13 +36,13 @@ ! ! ! -! File: mld_d_dec_map__bld.f90 +! File: mld_d_vmb_map__bld.f90 ! -! Subroutine: mld_d_dec_map_bld +! Subroutine: mld_d_vmb_map_bld ! Version: real ! ! This routine builds the tentative prolongator based on the -! decoupled aggregation algorithm presented in +! strength of connection aggregation algorithm presented in ! ! M. Brezina and P. Vanek, A black-box iterative solver based on a ! two-level Schwarz method, Computing, 63 (1999), 233-263. @@ -67,11 +67,11 @@ ! ! ! -subroutine mld_d_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) +subroutine mld_d_vmb_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) use psb_base_mod use mld_base_prec_type - use mld_d_inner_mod, mld_protect_name => mld_d_dec_map_bld + use mld_d_inner_mod, mld_protect_name => mld_d_vmb_map_bld implicit none @@ -98,7 +98,7 @@ subroutine mld_d_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) if (psb_get_errstatus() /= 0) return info=psb_success_ - name = 'mld_dec_map_bld' + name = 'mld_vmb_map_bld' call psb_erractionsave(err_act) debug_unit = psb_get_debug_unit() debug_level = psb_get_debug_level() @@ -318,5 +318,5 @@ subroutine mld_d_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) return -end subroutine mld_d_dec_map_bld +end subroutine mld_d_vmb_map_bld diff --git a/mlprec/impl/aggregator/mld_s_dec_aggregator_tprol.f90 b/mlprec/impl/aggregator/mld_s_dec_aggregator_tprol.f90 index 78bce133..e749fe77 100644 --- a/mlprec/impl/aggregator/mld_s_dec_aggregator_tprol.f90 +++ b/mlprec/impl/aggregator/mld_s_dec_aggregator_tprol.f90 @@ -40,7 +40,7 @@ ! Subroutine: mld_s_dec_aggregator_tprol ! Version: real ! -! This routine is mainly an interface to dec_map_bld where the real work is performed. +! This routine is mainly an interface to vmb_map_bld where the real work is performed. ! It takes care of some consistency checking, and calls map_to_tprol, which is ! refactored and shared among all the aggregation methods that produce a simple ! integer mapping. @@ -110,12 +110,12 @@ subroutine mld_s_dec_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_ call mld_check_def(parms%aggr_thresh,'Aggr_Thresh',szero,is_legal_s_aggr_thrs) - call mld_dec_map_bld(parms%aggr_ord,parms%aggr_thresh,a,desc_a,nlaggr,ilaggr,info) + call mld_vmb_map_bld(parms%aggr_ord,parms%aggr_thresh,a,desc_a,nlaggr,ilaggr,info) if (info==psb_success_) call mld_map_to_tprol(desc_a,ilaggr,nlaggr,op_prol,info) if (info /= psb_success_) then info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='dec_map_bld/map_to_tprol') + call psb_errpush(info,name,a_err='vmb_map_bld/map_to_tprol') goto 9999 endif diff --git a/mlprec/impl/aggregator/mld_s_hyb_map_bld.f90 b/mlprec/impl/aggregator/mld_s_hyb_map_bld.f90 index 5f093685..96fe92d6 100644 --- a/mlprec/impl/aggregator/mld_s_hyb_map_bld.f90 +++ b/mlprec/impl/aggregator/mld_s_hyb_map_bld.f90 @@ -41,14 +41,13 @@ ! Subroutine: mld_s_hyb_map_bld ! Version: real ! -! This routine builds the tentative prolongator based on the -! decoupled aggregation algorithm presented in +! The aggregator object hosts the aggregation method for building +! the multilevel hierarchy. This variant is based on the hybrid method +! presented in ! -! M. Brezina and P. Vanek, A black-box iterative solver based on a -! two-level Schwarz method, Computing, 63 (1999), 233-263. -! P. D'Ambra, D. di Serafino and S. Filippone, On the development of -! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math. -! 57 (2007), 1181-1196. +! S. Gratton, P. Henon, P. Jiranek and X. Vasseur: +! Reducing complexity of algebraic multigrid by aggregation +! Numerical Lin. Algebra with Applications, 2016, 23:501-518 ! ! Note: upon exit ! diff --git a/mlprec/impl/aggregator/mld_s_symdec_aggregator_tprol.f90 b/mlprec/impl/aggregator/mld_s_symdec_aggregator_tprol.f90 index ea815091..fc54ba9d 100644 --- a/mlprec/impl/aggregator/mld_s_symdec_aggregator_tprol.f90 +++ b/mlprec/impl/aggregator/mld_s_symdec_aggregator_tprol.f90 @@ -41,7 +41,7 @@ ! Version: real ! ! -! This routine is mainly an interface to dec_map_bld where the real work is performed. +! This routine is mainly an interface to vmb_map_bld where the real work is performed. ! It takes care of some consistency checking, and calls map_to_tprol, which is ! refactored and shared among all the aggregation methods that produce a simple ! integer mapping. @@ -127,13 +127,13 @@ subroutine mld_s_symdec_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr, if (info == psb_success_) call atmp%cscnv(info,type='CSR') if (info == psb_success_) & - & call mld_dec_map_bld(parms%aggr_ord,parms%aggr_thresh,atmp,desc_a,nlaggr,ilaggr,info) + & call mld_vmb_map_bld(parms%aggr_ord,parms%aggr_thresh,atmp,desc_a,nlaggr,ilaggr,info) if (info == psb_success_) call atmp%free() if (info == psb_success_) call mld_map_to_tprol(desc_a,ilaggr,nlaggr,op_prol,info) if (info /= psb_success_) then info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='dec_map_bld/map_to_tprol') + call psb_errpush(info,name,a_err='vmb_map_bld/map_to_tprol') goto 9999 endif diff --git a/mlprec/impl/aggregator/mld_s_dec_map_bld.f90 b/mlprec/impl/aggregator/mld_s_vmb_map_bld.f90 similarity index 96% rename from mlprec/impl/aggregator/mld_s_dec_map_bld.f90 rename to mlprec/impl/aggregator/mld_s_vmb_map_bld.f90 index be2212ad..b0de5055 100644 --- a/mlprec/impl/aggregator/mld_s_dec_map_bld.f90 +++ b/mlprec/impl/aggregator/mld_s_vmb_map_bld.f90 @@ -36,13 +36,13 @@ ! ! ! -! File: mld_s_dec_map__bld.f90 +! File: mld_s_vmb_map__bld.f90 ! -! Subroutine: mld_s_dec_map_bld +! Subroutine: mld_s_vmb_map_bld ! Version: real ! ! This routine builds the tentative prolongator based on the -! decoupled aggregation algorithm presented in +! strength of connection aggregation algorithm presented in ! ! M. Brezina and P. Vanek, A black-box iterative solver based on a ! two-level Schwarz method, Computing, 63 (1999), 233-263. @@ -67,11 +67,11 @@ ! ! ! -subroutine mld_s_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) +subroutine mld_s_vmb_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) use psb_base_mod use mld_base_prec_type - use mld_s_inner_mod, mld_protect_name => mld_s_dec_map_bld + use mld_s_inner_mod, mld_protect_name => mld_s_vmb_map_bld implicit none @@ -98,7 +98,7 @@ subroutine mld_s_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) if (psb_get_errstatus() /= 0) return info=psb_success_ - name = 'mld_dec_map_bld' + name = 'mld_vmb_map_bld' call psb_erractionsave(err_act) debug_unit = psb_get_debug_unit() debug_level = psb_get_debug_level() @@ -318,5 +318,5 @@ subroutine mld_s_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) return -end subroutine mld_s_dec_map_bld +end subroutine mld_s_vmb_map_bld diff --git a/mlprec/impl/aggregator/mld_z_dec_aggregator_tprol.f90 b/mlprec/impl/aggregator/mld_z_dec_aggregator_tprol.f90 index cc3f23cb..aa0e63ce 100644 --- a/mlprec/impl/aggregator/mld_z_dec_aggregator_tprol.f90 +++ b/mlprec/impl/aggregator/mld_z_dec_aggregator_tprol.f90 @@ -40,7 +40,7 @@ ! Subroutine: mld_z_dec_aggregator_tprol ! Version: complex ! -! This routine is mainly an interface to dec_map_bld where the real work is performed. +! This routine is mainly an interface to vmb_map_bld where the real work is performed. ! It takes care of some consistency checking, and calls map_to_tprol, which is ! refactored and shared among all the aggregation methods that produce a simple ! integer mapping. @@ -110,12 +110,12 @@ subroutine mld_z_dec_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_ call mld_check_def(parms%aggr_thresh,'Aggr_Thresh',dzero,is_legal_d_aggr_thrs) - call mld_dec_map_bld(parms%aggr_ord,parms%aggr_thresh,a,desc_a,nlaggr,ilaggr,info) + call mld_vmb_map_bld(parms%aggr_ord,parms%aggr_thresh,a,desc_a,nlaggr,ilaggr,info) if (info==psb_success_) call mld_map_to_tprol(desc_a,ilaggr,nlaggr,op_prol,info) if (info /= psb_success_) then info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='dec_map_bld/map_to_tprol') + call psb_errpush(info,name,a_err='vmb_map_bld/map_to_tprol') goto 9999 endif diff --git a/mlprec/impl/aggregator/mld_z_hyb_map_bld.f90 b/mlprec/impl/aggregator/mld_z_hyb_map_bld.f90 index 57ae369c..4fc95dd3 100644 --- a/mlprec/impl/aggregator/mld_z_hyb_map_bld.f90 +++ b/mlprec/impl/aggregator/mld_z_hyb_map_bld.f90 @@ -41,14 +41,13 @@ ! Subroutine: mld_z_hyb_map_bld ! Version: complex ! -! This routine builds the tentative prolongator based on the -! decoupled aggregation algorithm presented in +! The aggregator object hosts the aggregation method for building +! the multilevel hierarchy. This variant is based on the hybrid method +! presented in ! -! M. Brezina and P. Vanek, A black-box iterative solver based on a -! two-level Schwarz method, Computing, 63 (1999), 233-263. -! P. D'Ambra, D. di Serafino and S. Filippone, On the development of -! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math. -! 57 (2007), 1181-1196. +! S. Gratton, P. Henon, P. Jiranek and X. Vasseur: +! Reducing complexity of algebraic multigrid by aggregation +! Numerical Lin. Algebra with Applications, 2016, 23:501-518 ! ! Note: upon exit ! diff --git a/mlprec/impl/aggregator/mld_z_symdec_aggregator_tprol.f90 b/mlprec/impl/aggregator/mld_z_symdec_aggregator_tprol.f90 index a0de3a6a..3fab8e96 100644 --- a/mlprec/impl/aggregator/mld_z_symdec_aggregator_tprol.f90 +++ b/mlprec/impl/aggregator/mld_z_symdec_aggregator_tprol.f90 @@ -41,7 +41,7 @@ ! Version: complex ! ! -! This routine is mainly an interface to dec_map_bld where the real work is performed. +! This routine is mainly an interface to vmb_map_bld where the real work is performed. ! It takes care of some consistency checking, and calls map_to_tprol, which is ! refactored and shared among all the aggregation methods that produce a simple ! integer mapping. @@ -127,13 +127,13 @@ subroutine mld_z_symdec_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr, if (info == psb_success_) call atmp%cscnv(info,type='CSR') if (info == psb_success_) & - & call mld_dec_map_bld(parms%aggr_ord,parms%aggr_thresh,atmp,desc_a,nlaggr,ilaggr,info) + & call mld_vmb_map_bld(parms%aggr_ord,parms%aggr_thresh,atmp,desc_a,nlaggr,ilaggr,info) if (info == psb_success_) call atmp%free() if (info == psb_success_) call mld_map_to_tprol(desc_a,ilaggr,nlaggr,op_prol,info) if (info /= psb_success_) then info=psb_err_from_subroutine_ - call psb_errpush(info,name,a_err='dec_map_bld/map_to_tprol') + call psb_errpush(info,name,a_err='vmb_map_bld/map_to_tprol') goto 9999 endif diff --git a/mlprec/impl/aggregator/mld_z_dec_map_bld.f90 b/mlprec/impl/aggregator/mld_z_vmb_map_bld.f90 similarity index 96% rename from mlprec/impl/aggregator/mld_z_dec_map_bld.f90 rename to mlprec/impl/aggregator/mld_z_vmb_map_bld.f90 index 80119809..ff131c33 100644 --- a/mlprec/impl/aggregator/mld_z_dec_map_bld.f90 +++ b/mlprec/impl/aggregator/mld_z_vmb_map_bld.f90 @@ -36,13 +36,13 @@ ! ! ! -! File: mld_z_dec_map__bld.f90 +! File: mld_z_vmb_map__bld.f90 ! -! Subroutine: mld_z_dec_map_bld +! Subroutine: mld_z_vmb_map_bld ! Version: complex ! ! This routine builds the tentative prolongator based on the -! decoupled aggregation algorithm presented in +! strength of connection aggregation algorithm presented in ! ! M. Brezina and P. Vanek, A black-box iterative solver based on a ! two-level Schwarz method, Computing, 63 (1999), 233-263. @@ -67,11 +67,11 @@ ! ! ! -subroutine mld_z_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) +subroutine mld_z_vmb_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) use psb_base_mod use mld_base_prec_type - use mld_z_inner_mod, mld_protect_name => mld_z_dec_map_bld + use mld_z_inner_mod, mld_protect_name => mld_z_vmb_map_bld implicit none @@ -98,7 +98,7 @@ subroutine mld_z_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) if (psb_get_errstatus() /= 0) return info=psb_success_ - name = 'mld_dec_map_bld' + name = 'mld_vmb_map_bld' call psb_erractionsave(err_act) debug_unit = psb_get_debug_unit() debug_level = psb_get_debug_level() @@ -318,5 +318,5 @@ subroutine mld_z_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) return -end subroutine mld_z_dec_map_bld +end subroutine mld_z_vmb_map_bld diff --git a/mlprec/mld_c_inner_mod.f90 b/mlprec/mld_c_inner_mod.f90 index 2b4c9fd7..44d7266d 100644 --- a/mlprec/mld_c_inner_mod.f90 +++ b/mlprec/mld_c_inner_mod.f90 @@ -124,8 +124,8 @@ module mld_c_inner_mod end interface mld_aggrmap_bld - interface mld_dec_map_bld - subroutine mld_c_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) + interface mld_vmb_map_bld + subroutine mld_c_vmb_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) import :: psb_cspmat_type, psb_desc_type, psb_spk_, psb_ipk_ implicit none integer(psb_ipk_), intent(in) :: iorder @@ -134,8 +134,8 @@ module mld_c_inner_mod real(psb_spk_), intent(in) :: theta integer(psb_ipk_), allocatable, intent(out) :: ilaggr(:),nlaggr(:) integer(psb_ipk_), intent(out) :: info - end subroutine mld_c_dec_map_bld - end interface mld_dec_map_bld + end subroutine mld_c_vmb_map_bld + end interface mld_vmb_map_bld interface mld_hyb_map_bld subroutine mld_c_hyb_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) diff --git a/mlprec/mld_d_inner_mod.f90 b/mlprec/mld_d_inner_mod.f90 index 454d934a..fdae973d 100644 --- a/mlprec/mld_d_inner_mod.f90 +++ b/mlprec/mld_d_inner_mod.f90 @@ -124,8 +124,8 @@ module mld_d_inner_mod end interface mld_aggrmap_bld - interface mld_dec_map_bld - subroutine mld_d_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) + interface mld_vmb_map_bld + subroutine mld_d_vmb_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) import :: psb_dspmat_type, psb_desc_type, psb_dpk_, psb_ipk_ implicit none integer(psb_ipk_), intent(in) :: iorder @@ -134,8 +134,8 @@ module mld_d_inner_mod real(psb_dpk_), intent(in) :: theta integer(psb_ipk_), allocatable, intent(out) :: ilaggr(:),nlaggr(:) integer(psb_ipk_), intent(out) :: info - end subroutine mld_d_dec_map_bld - end interface mld_dec_map_bld + end subroutine mld_d_vmb_map_bld + end interface mld_vmb_map_bld interface mld_hyb_map_bld subroutine mld_d_hyb_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) diff --git a/mlprec/mld_s_inner_mod.f90 b/mlprec/mld_s_inner_mod.f90 index 512d60c7..32c22e1f 100644 --- a/mlprec/mld_s_inner_mod.f90 +++ b/mlprec/mld_s_inner_mod.f90 @@ -124,8 +124,8 @@ module mld_s_inner_mod end interface mld_aggrmap_bld - interface mld_dec_map_bld - subroutine mld_s_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) + interface mld_vmb_map_bld + subroutine mld_s_vmb_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) import :: psb_sspmat_type, psb_desc_type, psb_spk_, psb_ipk_ implicit none integer(psb_ipk_), intent(in) :: iorder @@ -134,8 +134,8 @@ module mld_s_inner_mod real(psb_spk_), intent(in) :: theta integer(psb_ipk_), allocatable, intent(out) :: ilaggr(:),nlaggr(:) integer(psb_ipk_), intent(out) :: info - end subroutine mld_s_dec_map_bld - end interface mld_dec_map_bld + end subroutine mld_s_vmb_map_bld + end interface mld_vmb_map_bld interface mld_hyb_map_bld subroutine mld_s_hyb_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) diff --git a/mlprec/mld_z_inner_mod.f90 b/mlprec/mld_z_inner_mod.f90 index 2100d576..c27d01c4 100644 --- a/mlprec/mld_z_inner_mod.f90 +++ b/mlprec/mld_z_inner_mod.f90 @@ -124,8 +124,8 @@ module mld_z_inner_mod end interface mld_aggrmap_bld - interface mld_dec_map_bld - subroutine mld_z_dec_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) + interface mld_vmb_map_bld + subroutine mld_z_vmb_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info) import :: psb_zspmat_type, psb_desc_type, psb_dpk_, psb_ipk_ implicit none integer(psb_ipk_), intent(in) :: iorder @@ -134,8 +134,8 @@ module mld_z_inner_mod real(psb_dpk_), intent(in) :: theta integer(psb_ipk_), allocatable, intent(out) :: ilaggr(:),nlaggr(:) integer(psb_ipk_), intent(out) :: info - end subroutine mld_z_dec_map_bld - end interface mld_dec_map_bld + end subroutine mld_z_vmb_map_bld + end interface mld_vmb_map_bld interface mld_hyb_map_bld subroutine mld_z_hyb_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info)