|
|
@ -267,13 +267,15 @@ module amg_base_prec_type
|
|
|
|
integer(psb_ipk_), parameter :: amg_dec_aggr_ = 0
|
|
|
|
integer(psb_ipk_), parameter :: amg_dec_aggr_ = 0
|
|
|
|
integer(psb_ipk_), parameter :: amg_sym_dec_aggr_ = 1
|
|
|
|
integer(psb_ipk_), parameter :: amg_sym_dec_aggr_ = 1
|
|
|
|
integer(psb_ipk_), parameter :: amg_ext_aggr_ = 2
|
|
|
|
integer(psb_ipk_), parameter :: amg_ext_aggr_ = 2
|
|
|
|
integer(psb_ipk_), parameter :: amg_max_par_aggr_alg_ = amg_ext_aggr_
|
|
|
|
integer(psb_ipk_), parameter :: amg_coupled_aggr_ = 3
|
|
|
|
|
|
|
|
integer(psb_ipk_), parameter :: amg_max_par_aggr_alg_ = amg_coupled_aggr_
|
|
|
|
!
|
|
|
|
!
|
|
|
|
! Legal values for entry: amg_aggr_type_
|
|
|
|
! Legal values for entry: amg_aggr_type_
|
|
|
|
!
|
|
|
|
!
|
|
|
|
integer(psb_ipk_), parameter :: amg_noalg_ = 0
|
|
|
|
integer(psb_ipk_), parameter :: amg_noalg_ = 0
|
|
|
|
integer(psb_ipk_), parameter :: amg_soc1_ = 1
|
|
|
|
integer(psb_ipk_), parameter :: amg_soc1_ = 1
|
|
|
|
integer(psb_ipk_), parameter :: amg_soc2_ = 2
|
|
|
|
integer(psb_ipk_), parameter :: amg_soc2_ = 2
|
|
|
|
|
|
|
|
integer(psb_ipk_), parameter :: amg_matchboxp_ = 3
|
|
|
|
!
|
|
|
|
!
|
|
|
|
! Legal values for entry: amg_aggr_prol_
|
|
|
|
! Legal values for entry: amg_aggr_prol_
|
|
|
|
!
|
|
|
|
!
|
|
|
@ -362,12 +364,13 @@ module amg_base_prec_type
|
|
|
|
character(len=15), parameter, private :: &
|
|
|
|
character(len=15), parameter, private :: &
|
|
|
|
& matrix_names(0:1)=(/'distributed ','replicated '/)
|
|
|
|
& matrix_names(0:1)=(/'distributed ','replicated '/)
|
|
|
|
character(len=18), parameter, private :: &
|
|
|
|
character(len=18), parameter, private :: &
|
|
|
|
& aggr_type_names(0:2)=(/'None ',&
|
|
|
|
& aggr_type_names(0:3)=(/'None ',&
|
|
|
|
& 'SOC measure 1 ', 'SOC Measure 2 '/)
|
|
|
|
& 'SOC measure 1 ', 'SOC Measure 2 ',&
|
|
|
|
|
|
|
|
& 'Parallel Matching '/)
|
|
|
|
character(len=18), parameter, private :: &
|
|
|
|
character(len=18), parameter, private :: &
|
|
|
|
& par_aggr_alg_names(0:2)=(/&
|
|
|
|
& par_aggr_alg_names(0:3)=(/&
|
|
|
|
& 'decoupled aggr. ', 'sym. dec. aggr. ',&
|
|
|
|
& 'decoupled aggr. ', 'sym. dec. aggr. ',&
|
|
|
|
& 'user defined aggr.'/)
|
|
|
|
& 'user defined aggr.', 'coupled aggr. '/)
|
|
|
|
character(len=18), parameter, private :: &
|
|
|
|
character(len=18), parameter, private :: &
|
|
|
|
& ord_names(0:1)=(/'Natural ordering ','Desc. degree ord. '/)
|
|
|
|
& ord_names(0:1)=(/'Natural ordering ','Desc. degree ord. '/)
|
|
|
|
character(len=6), parameter, private :: &
|
|
|
|
character(len=6), parameter, private :: &
|
|
|
@ -842,14 +845,22 @@ contains
|
|
|
|
is_legal_ml_cycle = ((ip>=amg_no_ml_).and.(ip<=amg_max_ml_cycle_))
|
|
|
|
is_legal_ml_cycle = ((ip>=amg_no_ml_).and.(ip<=amg_max_ml_cycle_))
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end function is_legal_ml_cycle
|
|
|
|
end function is_legal_ml_cycle
|
|
|
|
function is_legal_ml_par_aggr_alg(ip)
|
|
|
|
function is_legal_coupled_par_aggr_alg(ip)
|
|
|
|
implicit none
|
|
|
|
implicit none
|
|
|
|
integer(psb_ipk_), intent(in) :: ip
|
|
|
|
integer(psb_ipk_), intent(in) :: ip
|
|
|
|
logical :: is_legal_ml_par_aggr_alg
|
|
|
|
logical :: is_legal_coupled_par_aggr_alg
|
|
|
|
|
|
|
|
|
|
|
|
is_legal_ml_par_aggr_alg = ((ip>=amg_dec_aggr_).and.(ip<=amg_max_par_aggr_alg_))
|
|
|
|
is_legal_coupled_par_aggr_alg = (ip == amg_coupled_aggr_)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end function is_legal_ml_par_aggr_alg
|
|
|
|
end function is_legal_coupled_par_aggr_alg
|
|
|
|
|
|
|
|
function is_legal_decoupled_par_aggr_alg(ip)
|
|
|
|
|
|
|
|
implicit none
|
|
|
|
|
|
|
|
integer(psb_ipk_), intent(in) :: ip
|
|
|
|
|
|
|
|
logical :: is_legal_decoupled_par_aggr_alg
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
is_legal_decoupled_par_aggr_alg = ((ip>=amg_dec_aggr_).and.(ip<=amg_max_par_aggr_alg_))
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
end function is_legal_decoupled_par_aggr_alg
|
|
|
|
function is_legal_ml_aggr_type(ip)
|
|
|
|
function is_legal_ml_aggr_type(ip)
|
|
|
|
implicit none
|
|
|
|
implicit none
|
|
|
|
integer(psb_ipk_), intent(in) :: ip
|
|
|
|
integer(psb_ipk_), intent(in) :: ip
|
|
|
|