mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 22:55:12 +00:00
Rename dec_map_bld into vmb_map_bld, following the split between
PAR_AGGR_ALG and AGGR_TYPE.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
!
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
+7
-7
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
!
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
+7
-7
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
!
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
+7
-7
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
!
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
+7
-7
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user