mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 22:55:12 +00:00
Merge branch 'mergeparmatch' of github.com:sfilippone/amg4psblas into mergeparmatch
This commit is contained in:
+146
-135
@@ -1,15 +1,15 @@
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2020
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
!
|
||||
! (C) Copyright 2020
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
@@ -21,7 +21,7 @@
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -33,8 +33,8 @@
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! File: amg_base_prec_type.F90
|
||||
!
|
||||
! Module: amg_base_prec_type
|
||||
@@ -50,16 +50,16 @@
|
||||
!
|
||||
! It contains routines for
|
||||
! - converting character constants defining the preconditioner into integer
|
||||
! constants;
|
||||
! constants;
|
||||
! - checking if the preconditioner is correctly defined;
|
||||
! - printing a description of the preconditioner;
|
||||
! - deallocating the preconditioner data structure.
|
||||
! - deallocating the preconditioner data structure.
|
||||
!
|
||||
|
||||
module amg_base_prec_type
|
||||
|
||||
!
|
||||
! This reduces the size of .mod file. Without the ONLY clause compilation
|
||||
! This reduces the size of .mod file. Without the ONLY clause compilation
|
||||
! blows up on some systems.
|
||||
!
|
||||
use psb_const_mod
|
||||
@@ -78,7 +78,7 @@ module amg_base_prec_type
|
||||
& psb_err_from_subroutine_, psb_err_missing_override_method_, &
|
||||
& psb_error_handler, psb_out_unit, psb_err_unit
|
||||
|
||||
!
|
||||
!
|
||||
! Version numbers
|
||||
!
|
||||
character(len=*), parameter :: amg_version_string_ = "1.0.0"
|
||||
@@ -120,7 +120,7 @@ module amg_base_prec_type
|
||||
procedure, pass(pm) :: printout => d_ml_parms_printout
|
||||
end type amg_dml_parms
|
||||
|
||||
|
||||
|
||||
|
||||
type amg_iaggr_data
|
||||
!
|
||||
@@ -134,32 +134,32 @@ module amg_base_prec_type
|
||||
integer(psb_ipk_) :: min_coarse_size = -ione
|
||||
integer(psb_ipk_) :: min_coarse_size_per_process = -ione
|
||||
integer(psb_lpk_) :: target_coarse_size
|
||||
! 2. maximum number of levels. Defaults to 20
|
||||
! 2. maximum number of levels. Defaults to 20
|
||||
integer(psb_ipk_) :: max_levs = 20_psb_ipk_
|
||||
end type amg_iaggr_data
|
||||
|
||||
|
||||
type, extends(amg_iaggr_data) :: amg_saggr_data
|
||||
! 3. min_cr_ratio = 1.5
|
||||
! 3. min_cr_ratio = 1.5
|
||||
real(psb_spk_) :: min_cr_ratio = 1.5_psb_spk_
|
||||
real(psb_spk_) :: op_complexity = szero
|
||||
real(psb_spk_) :: avg_cr = szero
|
||||
end type amg_saggr_data
|
||||
|
||||
type, extends(amg_iaggr_data) :: amg_daggr_data
|
||||
! 3. min_cr_ratio = 1.5
|
||||
! 3. min_cr_ratio = 1.5
|
||||
real(psb_dpk_) :: min_cr_ratio = 1.5_psb_dpk_
|
||||
real(psb_dpk_) :: op_complexity = dzero
|
||||
real(psb_dpk_) :: avg_cr = dzero
|
||||
end type amg_daggr_data
|
||||
|
||||
|
||||
|
||||
|
||||
!
|
||||
! Entries in iprcparm
|
||||
!
|
||||
! These are in baseprec
|
||||
!
|
||||
integer(psb_ipk_), parameter :: amg_smoother_type_ = 1
|
||||
!
|
||||
integer(psb_ipk_), parameter :: amg_smoother_type_ = 1
|
||||
integer(psb_ipk_), parameter :: amg_sub_solve_ = 2
|
||||
integer(psb_ipk_), parameter :: amg_sub_restr_ = 3
|
||||
integer(psb_ipk_), parameter :: amg_sub_prol_ = 4
|
||||
@@ -169,7 +169,7 @@ module amg_base_prec_type
|
||||
|
||||
!
|
||||
! These are in onelev
|
||||
!
|
||||
!
|
||||
integer(psb_ipk_), parameter :: amg_ml_cycle_ = 20
|
||||
integer(psb_ipk_), parameter :: amg_smoother_sweeps_pre_ = 21
|
||||
integer(psb_ipk_), parameter :: amg_smoother_sweeps_post_ = 22
|
||||
@@ -181,7 +181,7 @@ module amg_base_prec_type
|
||||
integer(psb_ipk_), parameter :: amg_aggr_eig_ = 28
|
||||
integer(psb_ipk_), parameter :: amg_aggr_filter_ = 29
|
||||
integer(psb_ipk_), parameter :: amg_coarse_mat_ = 30
|
||||
integer(psb_ipk_), parameter :: amg_coarse_solve_ = 31
|
||||
integer(psb_ipk_), parameter :: amg_coarse_solve_ = 31
|
||||
integer(psb_ipk_), parameter :: amg_coarse_sweeps_ = 32
|
||||
integer(psb_ipk_), parameter :: amg_coarse_fillin_ = 33
|
||||
integer(psb_ipk_), parameter :: amg_coarse_subsolve_ = 34
|
||||
@@ -196,7 +196,7 @@ module amg_base_prec_type
|
||||
|
||||
!
|
||||
! Legal values for entry: amg_smoother_type_
|
||||
!
|
||||
!
|
||||
integer(psb_ipk_), parameter :: amg_min_prec_ = 0
|
||||
integer(psb_ipk_), parameter :: amg_noprec_ = 0
|
||||
integer(psb_ipk_), parameter :: amg_base_smooth_ = 0
|
||||
@@ -243,7 +243,7 @@ module amg_base_prec_type
|
||||
integer(psb_ipk_), parameter :: amg_ilu_scale_none_ = 0
|
||||
integer(psb_ipk_), parameter :: amg_ilu_scale_maxval_ = 1
|
||||
integer(psb_ipk_), parameter :: amg_ilu_scale_diag_ = 2
|
||||
integer(psb_ipk_), parameter :: amg_ilu_scale_arwsum_ = 3
|
||||
integer(psb_ipk_), parameter :: amg_ilu_scale_arwsum_ = 3
|
||||
integer(psb_ipk_), parameter :: amg_ilu_scale_aclsum_ = 4
|
||||
integer(psb_ipk_), parameter :: amg_ilu_scale_arcsum_ = 5
|
||||
! For the time being enable only maxval scale
|
||||
@@ -261,19 +261,21 @@ module amg_base_prec_type
|
||||
integer(psb_ipk_), parameter :: amg_new_ml_prec_ = 7
|
||||
integer(psb_ipk_), parameter :: amg_mult_dev_ml_ = 7
|
||||
integer(psb_ipk_), parameter :: amg_max_ml_cycle_ = 8
|
||||
!
|
||||
!
|
||||
! Legal values for entry: amg_par_aggr_alg_
|
||||
!
|
||||
integer(psb_ipk_), parameter :: amg_dec_aggr_ = 0
|
||||
integer(psb_ipk_), parameter :: amg_sym_dec_aggr_ = 1
|
||||
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_ext_aggr_ = 2
|
||||
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_
|
||||
!
|
||||
integer(psb_ipk_), parameter :: amg_noalg_ = 0
|
||||
integer(psb_ipk_), parameter :: amg_soc1_ = 1
|
||||
integer(psb_ipk_), parameter :: amg_soc2_ = 2
|
||||
integer(psb_ipk_), parameter :: amg_matchboxp_ = 3
|
||||
!
|
||||
! Legal values for entry: amg_aggr_prol_
|
||||
!
|
||||
@@ -288,7 +290,7 @@ module amg_base_prec_type
|
||||
integer(psb_ipk_), parameter :: amg_no_filter_mat_ = 0
|
||||
integer(psb_ipk_), parameter :: amg_filter_mat_ = 1
|
||||
integer(psb_ipk_), parameter :: amg_max_filter_mat_ = amg_filter_mat_
|
||||
!
|
||||
!
|
||||
! Legal values for entry: amg_aggr_ord_
|
||||
!
|
||||
integer(psb_ipk_), parameter :: amg_aggr_ord_nat_ = 0
|
||||
@@ -308,7 +310,7 @@ module amg_base_prec_type
|
||||
!
|
||||
integer(psb_ipk_), parameter :: amg_distr_mat_ = 0
|
||||
integer(psb_ipk_), parameter :: amg_repl_mat_ = 1
|
||||
integer(psb_ipk_), parameter :: amg_max_coarse_mat_ = amg_repl_mat_
|
||||
integer(psb_ipk_), parameter :: amg_max_coarse_mat_ = amg_repl_mat_
|
||||
!
|
||||
! Legal values for entry: amg_prec_status_
|
||||
!
|
||||
@@ -338,7 +340,7 @@ module amg_base_prec_type
|
||||
|
||||
!
|
||||
! Fields for sparse matrices ensembles stored in av()
|
||||
!
|
||||
!
|
||||
integer(psb_ipk_), parameter :: amg_l_pr_ = 1
|
||||
integer(psb_ipk_), parameter :: amg_u_pr_ = 2
|
||||
integer(psb_ipk_), parameter :: amg_bp_ilu_avsz_ = 2
|
||||
@@ -347,7 +349,7 @@ module amg_base_prec_type
|
||||
integer(psb_ipk_), parameter :: amg_sm_pr_t_ = 5
|
||||
integer(psb_ipk_), parameter :: amg_sm_pr_ = 6
|
||||
integer(psb_ipk_), parameter :: amg_smth_avsz_ = 6
|
||||
integer(psb_ipk_), parameter :: amg_max_avsz_ = amg_smth_avsz_
|
||||
integer(psb_ipk_), parameter :: amg_max_avsz_ = amg_smth_avsz_
|
||||
|
||||
!
|
||||
! Character constants used by amg_file_prec_descr
|
||||
@@ -362,12 +364,13 @@ module amg_base_prec_type
|
||||
character(len=15), parameter, private :: &
|
||||
& matrix_names(0:1)=(/'distributed ','replicated '/)
|
||||
character(len=18), parameter, private :: &
|
||||
& aggr_type_names(0:2)=(/'None ',&
|
||||
& 'SOC measure 1 ', 'SOC Measure 2 '/)
|
||||
& aggr_type_names(0:3)=(/'None ',&
|
||||
& 'SOC measure 1 ', 'SOC Measure 2 ',&
|
||||
& 'Parallel Matching '/)
|
||||
character(len=18), parameter, private :: &
|
||||
& par_aggr_alg_names(0:2)=(/&
|
||||
& par_aggr_alg_names(0:3)=(/&
|
||||
& 'decoupled aggr. ', 'sym. dec. aggr. ',&
|
||||
& 'user defined aggr.'/)
|
||||
& 'user defined aggr.', 'coupled aggr. '/)
|
||||
character(len=18), parameter, private :: &
|
||||
& ord_names(0:1)=(/'Natural ordering ','Desc. degree ord. '/)
|
||||
character(len=6), parameter, private :: &
|
||||
@@ -395,7 +398,7 @@ module amg_base_prec_type
|
||||
module procedure amg_icheck_def, amg_scheck_def, amg_dcheck_def
|
||||
end interface
|
||||
|
||||
interface psb_bcast
|
||||
interface psb_bcast
|
||||
module procedure amg_ml_bcast, amg_sml_bcast, amg_dml_bcast
|
||||
end interface psb_bcast
|
||||
|
||||
@@ -408,9 +411,9 @@ module amg_base_prec_type
|
||||
! Will need a more sophisticated strategy.
|
||||
!
|
||||
logical, private, save :: do_remap=.false.
|
||||
|
||||
|
||||
contains
|
||||
|
||||
|
||||
function amg_get_do_remap() result(res)
|
||||
implicit none
|
||||
logical :: res
|
||||
@@ -424,7 +427,7 @@ contains
|
||||
|
||||
do_remap = val
|
||||
end subroutine amg_set_do_remap
|
||||
|
||||
|
||||
!
|
||||
! Function: amg_stringval
|
||||
!
|
||||
@@ -439,10 +442,10 @@ contains
|
||||
!
|
||||
function amg_stringval(string) result(val)
|
||||
use psb_prec_const_mod
|
||||
implicit none
|
||||
implicit none
|
||||
! Arguments
|
||||
character(len=*), intent(in) :: string
|
||||
integer(psb_ipk_) :: val
|
||||
integer(psb_ipk_) :: val
|
||||
character(len=*), parameter :: name='amg_stringval'
|
||||
! Local variable
|
||||
integer :: index_tab
|
||||
@@ -450,14 +453,14 @@ contains
|
||||
index_tab=index(string,char(9))
|
||||
if (index_tab.NE.0) then
|
||||
string2=string(1:index_tab-1)
|
||||
else
|
||||
else
|
||||
string2=string
|
||||
endif
|
||||
select case(psb_toupper(trim(string2)))
|
||||
case('NONE')
|
||||
val = 0
|
||||
case('HALO')
|
||||
val = psb_halo_
|
||||
val = psb_halo_
|
||||
case('SUM')
|
||||
val = psb_sum_
|
||||
case('AVG')
|
||||
@@ -553,56 +556,56 @@ contains
|
||||
case('OUTER_SWEEPS')
|
||||
val = amg_outer_sweeps_
|
||||
case('LOCAL_SOLVER')
|
||||
val = amg_local_solver_
|
||||
val = amg_local_solver_
|
||||
case('GLOBAL_SOLVER')
|
||||
val = amg_global_solver_
|
||||
val = amg_global_solver_
|
||||
case default
|
||||
val = -1
|
||||
end select
|
||||
end function amg_stringval
|
||||
|
||||
subroutine ml_parms_get_coarse(pm,pmin)
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_ml_parms), intent(inout) :: pm
|
||||
class(amg_ml_parms), intent(in) :: pmin
|
||||
pm%coarse_mat = pmin%coarse_mat
|
||||
pm%coarse_solve = pmin%coarse_solve
|
||||
end subroutine ml_parms_get_coarse
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
subroutine ml_parms_printout(pm,iout)
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_ml_parms), intent(in) :: pm
|
||||
integer(psb_ipk_), intent(in) :: iout
|
||||
|
||||
|
||||
write(iout,*) 'ML : ',pm%ml_cycle
|
||||
write(iout,*) 'Sweeps: ',pm%sweeps_pre,pm%sweeps_post
|
||||
write(iout,*) 'AGGR : ',pm%par_aggr_alg,pm%aggr_prol, pm%aggr_ord
|
||||
write(iout,*) ' : ',pm%aggr_omega_alg,pm%aggr_eig,pm%aggr_filter
|
||||
write(iout,*) 'COARSE: ',pm%coarse_mat,pm%coarse_solve
|
||||
end subroutine ml_parms_printout
|
||||
|
||||
|
||||
|
||||
|
||||
subroutine s_ml_parms_printout(pm,iout)
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_sml_parms), intent(in) :: pm
|
||||
integer(psb_ipk_), intent(in) :: iout
|
||||
|
||||
|
||||
call pm%amg_ml_parms%printout(iout)
|
||||
write(iout,*) 'REAL : ',pm%aggr_omega_val,pm%aggr_thresh
|
||||
end subroutine s_ml_parms_printout
|
||||
|
||||
|
||||
|
||||
|
||||
subroutine d_ml_parms_printout(pm,iout)
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_dml_parms), intent(in) :: pm
|
||||
integer(psb_ipk_), intent(in) :: iout
|
||||
|
||||
|
||||
call pm%amg_ml_parms%printout(iout)
|
||||
write(iout,*) 'REAL : ',pm%aggr_omega_val,pm%aggr_thresh
|
||||
end subroutine d_ml_parms_printout
|
||||
|
||||
|
||||
|
||||
!
|
||||
! Routines printing out a description of the preconditioner
|
||||
@@ -618,7 +621,7 @@ contains
|
||||
info = psb_success_
|
||||
if ((pm%ml_cycle>=amg_no_ml_).and.(pm%ml_cycle<=amg_max_ml_cycle_)) then
|
||||
|
||||
|
||||
|
||||
write(iout,*) ' Multilevel cycle: ',&
|
||||
& ml_names(pm%ml_cycle)
|
||||
select case (pm%ml_cycle)
|
||||
@@ -644,7 +647,7 @@ contains
|
||||
info = psb_success_
|
||||
if ((pm%ml_cycle>=amg_no_ml_).and.(pm%ml_cycle<=amg_max_ml_cycle_)) then
|
||||
|
||||
|
||||
|
||||
write(iout,*) ' Parallel aggregation algorithm: ',&
|
||||
& par_aggr_alg_names(pm%par_aggr_alg)
|
||||
if (pm%aggr_type>0) write(iout,*) ' Aggregation type: ',&
|
||||
@@ -656,23 +659,23 @@ contains
|
||||
write(iout,*) ' Aggregation prolongator: ', &
|
||||
& aggr_prols(pm%aggr_prol)
|
||||
if (pm%aggr_prol /= amg_no_smooth_) then
|
||||
write(iout,*) ' with: ', aggr_filters(pm%aggr_filter)
|
||||
if (pm%aggr_omega_alg == amg_eig_est_) then
|
||||
write(iout,*) ' with: ', aggr_filters(pm%aggr_filter)
|
||||
if (pm%aggr_omega_alg == amg_eig_est_) then
|
||||
write(iout,*) ' Damping omega computation: spectral radius estimate'
|
||||
write(iout,*) ' Spectral radius estimate: ', &
|
||||
& eigen_estimates(pm%aggr_eig)
|
||||
else if (pm%aggr_omega_alg == amg_user_choice_) then
|
||||
else if (pm%aggr_omega_alg == amg_user_choice_) then
|
||||
write(iout,*) ' Damping omega computation: user defined value.'
|
||||
else
|
||||
else
|
||||
write(iout,*) ' Damping omega computation: unknown value in iprcparm!!'
|
||||
end if
|
||||
end if
|
||||
!end if
|
||||
else
|
||||
write(iout,*) ' Multilevel type: Unkonwn value. Something is amiss....',&
|
||||
& pm%ml_cycle
|
||||
& pm%ml_cycle
|
||||
end if
|
||||
|
||||
|
||||
return
|
||||
|
||||
end subroutine ml_parms_mldescr
|
||||
@@ -689,13 +692,13 @@ contains
|
||||
logical :: coarse_
|
||||
|
||||
info = psb_success_
|
||||
if (present(coarse)) then
|
||||
if (present(coarse)) then
|
||||
coarse_ = coarse
|
||||
else
|
||||
coarse_ = .false.
|
||||
end if
|
||||
|
||||
if (coarse_) then
|
||||
if (coarse_) then
|
||||
call pm%coarsedescr(iout,info)
|
||||
end if
|
||||
|
||||
@@ -718,12 +721,12 @@ contains
|
||||
write(iout,*) ' Coarse matrix: ',&
|
||||
& matrix_names(pm%coarse_mat)
|
||||
select case(pm%coarse_solve)
|
||||
case (amg_bjac_,amg_as_)
|
||||
case (amg_bjac_,amg_as_)
|
||||
write(iout,*) ' Number of sweeps : ',&
|
||||
& pm%sweeps_pre
|
||||
write(iout,*) ' Coarse solver: ',&
|
||||
& 'Block Jacobi'
|
||||
case (amg_l1_bjac_)
|
||||
case (amg_l1_bjac_)
|
||||
write(iout,*) ' Number of sweeps : ',&
|
||||
& pm%sweeps_pre
|
||||
write(iout,*) ' Coarse solver: ',&
|
||||
@@ -790,7 +793,7 @@ contains
|
||||
!
|
||||
|
||||
function is_legal_base_prec(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_base_prec
|
||||
|
||||
@@ -798,60 +801,68 @@ contains
|
||||
return
|
||||
end function is_legal_base_prec
|
||||
function is_int_non_negative(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_int_non_negative
|
||||
|
||||
is_int_non_negative = (ip >= 0)
|
||||
is_int_non_negative = (ip >= 0)
|
||||
return
|
||||
end function is_int_non_negative
|
||||
function is_legal_ilu_scale(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_ilu_scale
|
||||
is_legal_ilu_scale = ((ip >= amg_ilu_scale_none_).and.(ip <= amg_max_ilu_scale_))
|
||||
return
|
||||
end function is_legal_ilu_scale
|
||||
function is_int_positive(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_int_positive
|
||||
|
||||
is_int_positive = (ip >= 1)
|
||||
is_int_positive = (ip >= 1)
|
||||
return
|
||||
end function is_int_positive
|
||||
function is_legal_prolong(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_prolong
|
||||
is_legal_prolong = ((ip>=psb_none_).and.(ip<=psb_square_root_))
|
||||
return
|
||||
end function is_legal_prolong
|
||||
function is_legal_restrict(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_restrict
|
||||
is_legal_restrict = ((ip == psb_nohalo_).or.(ip==psb_halo_))
|
||||
return
|
||||
end function is_legal_restrict
|
||||
function is_legal_ml_cycle(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_ml_cycle
|
||||
|
||||
is_legal_ml_cycle = ((ip>=amg_no_ml_).and.(ip<=amg_max_ml_cycle_))
|
||||
return
|
||||
end function is_legal_ml_cycle
|
||||
function is_legal_ml_par_aggr_alg(ip)
|
||||
implicit none
|
||||
function is_legal_coupled_par_aggr_alg(ip)
|
||||
implicit none
|
||||
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
|
||||
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)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_ml_aggr_type
|
||||
|
||||
@@ -859,7 +870,7 @@ contains
|
||||
return
|
||||
end function is_legal_ml_aggr_type
|
||||
function is_legal_ml_aggr_ord(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_ml_aggr_ord
|
||||
|
||||
@@ -867,7 +878,7 @@ contains
|
||||
return
|
||||
end function is_legal_ml_aggr_ord
|
||||
function is_legal_ml_aggr_omega_alg(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_ml_aggr_omega_alg
|
||||
|
||||
@@ -875,7 +886,7 @@ contains
|
||||
return
|
||||
end function is_legal_ml_aggr_omega_alg
|
||||
function is_legal_ml_aggr_eig(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_ml_aggr_eig
|
||||
|
||||
@@ -883,7 +894,7 @@ contains
|
||||
return
|
||||
end function is_legal_ml_aggr_eig
|
||||
function is_legal_ml_aggr_prol(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_ml_aggr_prol
|
||||
|
||||
@@ -891,7 +902,7 @@ contains
|
||||
return
|
||||
end function is_legal_ml_aggr_prol
|
||||
function is_legal_ml_coarse_mat(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_ml_coarse_mat
|
||||
|
||||
@@ -899,7 +910,7 @@ contains
|
||||
return
|
||||
end function is_legal_ml_coarse_mat
|
||||
function is_legal_aggr_filter(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_aggr_filter
|
||||
|
||||
@@ -907,7 +918,7 @@ contains
|
||||
return
|
||||
end function is_legal_aggr_filter
|
||||
function is_distr_ml_coarse_mat(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_distr_ml_coarse_mat
|
||||
|
||||
@@ -915,7 +926,7 @@ contains
|
||||
return
|
||||
end function is_distr_ml_coarse_mat
|
||||
function is_legal_ml_fact(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_ml_fact
|
||||
! Here the minimum is really 1, amg_fact_none_ is not acceptable.
|
||||
@@ -925,7 +936,7 @@ contains
|
||||
end function is_legal_ml_fact
|
||||
function is_legal_ilu_fact(ip)
|
||||
use psb_prec_const_mod
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: ip
|
||||
logical :: is_legal_ilu_fact
|
||||
|
||||
@@ -934,14 +945,14 @@ contains
|
||||
return
|
||||
end function is_legal_ilu_fact
|
||||
function is_legal_d_omega(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
real(psb_dpk_), intent(in) :: ip
|
||||
logical :: is_legal_d_omega
|
||||
is_legal_d_omega = ((ip>=0.0d0).and.(ip<=2.0d0))
|
||||
return
|
||||
end function is_legal_d_omega
|
||||
function is_legal_d_fact_thrs(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
real(psb_dpk_), intent(in) :: ip
|
||||
logical :: is_legal_d_fact_thrs
|
||||
|
||||
@@ -949,7 +960,7 @@ contains
|
||||
return
|
||||
end function is_legal_d_fact_thrs
|
||||
function is_legal_d_aggr_thrs(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
real(psb_dpk_), intent(in) :: ip
|
||||
logical :: is_legal_d_aggr_thrs
|
||||
|
||||
@@ -958,14 +969,14 @@ contains
|
||||
end function is_legal_d_aggr_thrs
|
||||
|
||||
function is_legal_s_omega(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
real(psb_spk_), intent(in) :: ip
|
||||
logical :: is_legal_s_omega
|
||||
is_legal_s_omega = ((ip>=0.0).and.(ip<=2.0))
|
||||
return
|
||||
end function is_legal_s_omega
|
||||
function is_legal_s_fact_thrs(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
real(psb_spk_), intent(in) :: ip
|
||||
logical :: is_legal_s_fact_thrs
|
||||
|
||||
@@ -973,7 +984,7 @@ contains
|
||||
return
|
||||
end function is_legal_s_fact_thrs
|
||||
function is_legal_s_aggr_thrs(ip)
|
||||
implicit none
|
||||
implicit none
|
||||
real(psb_spk_), intent(in) :: ip
|
||||
logical :: is_legal_s_aggr_thrs
|
||||
|
||||
@@ -983,11 +994,11 @@ contains
|
||||
|
||||
|
||||
subroutine amg_icheck_def(ip,name,id,is_legal)
|
||||
implicit none
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(inout) :: ip
|
||||
integer(psb_ipk_), intent(in) :: id
|
||||
character(len=*), intent(in) :: name
|
||||
interface
|
||||
interface
|
||||
function is_legal(i)
|
||||
import :: psb_ipk_
|
||||
integer(psb_ipk_), intent(in) :: i
|
||||
@@ -996,7 +1007,7 @@ contains
|
||||
end interface
|
||||
character(len=20), parameter :: rname='amg_check_def'
|
||||
|
||||
if (.not.is_legal(ip)) then
|
||||
if (.not.is_legal(ip)) then
|
||||
write(0,*)trim(rname),': Error: Illegal value for ',&
|
||||
& name,' :',ip, '. defaulting to ',id
|
||||
ip = id
|
||||
@@ -1004,11 +1015,11 @@ contains
|
||||
end subroutine amg_icheck_def
|
||||
|
||||
subroutine amg_scheck_def(ip,name,id,is_legal)
|
||||
implicit none
|
||||
implicit none
|
||||
real(psb_spk_), intent(inout) :: ip
|
||||
real(psb_spk_), intent(in) :: id
|
||||
character(len=*), intent(in) :: name
|
||||
interface
|
||||
interface
|
||||
function is_legal(i)
|
||||
use psb_base_mod, only : psb_spk_
|
||||
real(psb_spk_), intent(in) :: i
|
||||
@@ -1017,7 +1028,7 @@ contains
|
||||
end interface
|
||||
character(len=20), parameter :: rname='amg_check_def'
|
||||
|
||||
if (.not.is_legal(ip)) then
|
||||
if (.not.is_legal(ip)) then
|
||||
write(0,*)trim(rname),': Error: Illegal value for ',&
|
||||
& name,' :',ip, '. defaulting to ',id
|
||||
ip = id
|
||||
@@ -1025,11 +1036,11 @@ contains
|
||||
end subroutine amg_scheck_def
|
||||
|
||||
subroutine amg_dcheck_def(ip,name,id,is_legal)
|
||||
implicit none
|
||||
implicit none
|
||||
real(psb_dpk_), intent(inout) :: ip
|
||||
real(psb_dpk_), intent(in) :: id
|
||||
character(len=*), intent(in) :: name
|
||||
interface
|
||||
interface
|
||||
function is_legal(i)
|
||||
use psb_base_mod, only : psb_dpk_
|
||||
real(psb_dpk_), intent(in) :: i
|
||||
@@ -1038,7 +1049,7 @@ contains
|
||||
end interface
|
||||
character(len=20), parameter :: rname='amg_check_def'
|
||||
|
||||
if (.not.is_legal(ip)) then
|
||||
if (.not.is_legal(ip)) then
|
||||
write(0,*)trim(rname),': Error: Illegal value for ',&
|
||||
& name,' :',ip, '. defaulting to ',id
|
||||
ip = id
|
||||
@@ -1047,7 +1058,7 @@ contains
|
||||
|
||||
|
||||
function pr_to_str(iprec)
|
||||
implicit none
|
||||
implicit none
|
||||
|
||||
integer(psb_ipk_), intent(in) :: iprec
|
||||
character(len=10) :: pr_to_str
|
||||
@@ -1055,11 +1066,11 @@ contains
|
||||
select case(iprec)
|
||||
case(amg_noprec_)
|
||||
pr_to_str='NOPREC'
|
||||
case(amg_jac_)
|
||||
case(amg_jac_)
|
||||
pr_to_str='JAC'
|
||||
case(amg_bjac_)
|
||||
case(amg_bjac_)
|
||||
pr_to_str='BJAC'
|
||||
case(amg_as_)
|
||||
case(amg_as_)
|
||||
pr_to_str='AS'
|
||||
end select
|
||||
|
||||
@@ -1067,7 +1078,7 @@ contains
|
||||
|
||||
subroutine amg_ml_bcast(ctxt,dat,root)
|
||||
|
||||
implicit none
|
||||
implicit none
|
||||
type(psb_ctxt_type), intent(in) :: ctxt
|
||||
type(amg_ml_parms), intent(inout) :: dat
|
||||
integer(psb_ipk_), intent(in), optional :: root
|
||||
@@ -1089,7 +1100,7 @@ contains
|
||||
|
||||
subroutine amg_sml_bcast(ctxt,dat,root)
|
||||
|
||||
implicit none
|
||||
implicit none
|
||||
type(psb_ctxt_type), intent(in) :: ctxt
|
||||
type(amg_sml_parms), intent(inout) :: dat
|
||||
integer(psb_ipk_), intent(in), optional :: root
|
||||
@@ -1100,7 +1111,7 @@ contains
|
||||
end subroutine amg_sml_bcast
|
||||
|
||||
subroutine amg_dml_bcast(ctxt,dat,root)
|
||||
implicit none
|
||||
implicit none
|
||||
type(psb_ctxt_type), intent(in) :: ctxt
|
||||
type(amg_dml_parms), intent(inout) :: dat
|
||||
integer(psb_ipk_), intent(in), optional :: root
|
||||
@@ -1112,7 +1123,7 @@ contains
|
||||
|
||||
subroutine ml_parms_clone(pm,pmout,info)
|
||||
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_ml_parms), intent(inout) :: pm
|
||||
class(amg_ml_parms), intent(out) :: pmout
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
@@ -1132,19 +1143,19 @@ contains
|
||||
pmout%coarse_solve = pm%coarse_solve
|
||||
|
||||
end subroutine ml_parms_clone
|
||||
|
||||
|
||||
subroutine s_ml_parms_clone(pm,pmout,info)
|
||||
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_sml_parms), intent(inout) :: pm
|
||||
class(amg_ml_parms), intent(out) :: pmout
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
|
||||
|
||||
integer(psb_ipk_) :: err_act
|
||||
integer(psb_ipk_) :: ierr(5)
|
||||
character(len=20) :: name='clone'
|
||||
|
||||
|
||||
info = 0
|
||||
select type(pout => pmout)
|
||||
class is (amg_sml_parms)
|
||||
@@ -1159,21 +1170,21 @@ contains
|
||||
call psb_get_erraction(err_act)
|
||||
call psb_error_handler(err_act)
|
||||
end select
|
||||
|
||||
|
||||
end subroutine s_ml_parms_clone
|
||||
|
||||
subroutine d_ml_parms_clone(pm,pmout,info)
|
||||
|
||||
implicit none
|
||||
implicit none
|
||||
class(amg_dml_parms), intent(inout) :: pm
|
||||
class(amg_ml_parms), intent(out) :: pmout
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
|
||||
|
||||
integer(psb_ipk_) :: err_act
|
||||
integer(psb_ipk_) :: ierr(5)
|
||||
character(len=20) :: name='clone'
|
||||
|
||||
|
||||
info = 0
|
||||
select type(pout => pmout)
|
||||
class is (amg_dml_parms)
|
||||
@@ -1189,13 +1200,13 @@ contains
|
||||
call psb_error_handler(err_act)
|
||||
return
|
||||
end select
|
||||
|
||||
|
||||
end subroutine d_ml_parms_clone
|
||||
|
||||
function amg_s_equal_aggregation(parms1, parms2) result(val)
|
||||
type(amg_sml_parms), intent(in) :: parms1, parms2
|
||||
logical :: val
|
||||
|
||||
|
||||
val = (parms1%par_aggr_alg == parms2%par_aggr_alg ) .and. &
|
||||
& (parms1%aggr_type == parms2%aggr_type ) .and. &
|
||||
& (parms1%aggr_ord == parms2%aggr_ord ) .and. &
|
||||
@@ -1210,7 +1221,7 @@ contains
|
||||
function amg_d_equal_aggregation(parms1, parms2) result(val)
|
||||
type(amg_dml_parms), intent(in) :: parms1, parms2
|
||||
logical :: val
|
||||
|
||||
|
||||
val = (parms1%par_aggr_alg == parms2%par_aggr_alg ) .and. &
|
||||
& (parms1%aggr_type == parms2%aggr_type ) .and. &
|
||||
& (parms1%aggr_ord == parms2%aggr_ord ) .and. &
|
||||
@@ -1221,5 +1232,5 @@ contains
|
||||
& (parms1%aggr_omega_val == parms2%aggr_omega_val ) .and. &
|
||||
& (parms1%aggr_thresh == parms2%aggr_thresh )
|
||||
end function amg_d_equal_aggregation
|
||||
|
||||
|
||||
end module amg_base_prec_type
|
||||
|
||||
@@ -80,7 +80,7 @@ module dmatchboxp_mod
|
||||
subroutine dMatchBoxPC(nlver,nledge,verlocptr,verlocind,edgelocweight,&
|
||||
& verdistance, mate, myrank, numprocs, icomm,&
|
||||
& msgindsent,msgactualsent,msgpercent,&
|
||||
& ph0_time, ph1_time, ph2_time, ph1_card, ph2_card) bind(c,name='MatchBoxPC')
|
||||
& ph0_time, ph1_time, ph2_time, ph1_card, ph2_card) bind(c,name='dMatchBoxPC')
|
||||
use iso_c_binding
|
||||
import :: psb_c_ipk_, psb_c_lpk_, psb_c_mpk_, psb_c_epk_
|
||||
implicit none
|
||||
|
||||
@@ -80,7 +80,7 @@ module smatchboxp_mod
|
||||
subroutine sMatchBoxPC(nlver,nledge,verlocptr,verlocind,edgelocweight,&
|
||||
& verdistance, mate, myrank, numprocs, icomm,&
|
||||
& msgindsent,msgactualsent,msgpercent,&
|
||||
& ph0_time, ph1_time, ph2_time, ph1_card, ph2_card) bind(c,name='MatchBoxPC')
|
||||
& ph0_time, ph1_time, ph2_time, ph1_card, ph2_card) bind(c,name='sMatchBoxPC')
|
||||
use iso_c_binding
|
||||
import :: psb_c_ipk_, psb_c_lpk_, psb_c_mpk_, psb_c_epk_
|
||||
implicit none
|
||||
|
||||
@@ -172,6 +172,24 @@ MilanLongInt* msgIndSent, MilanLongInt* msgActualSent, MilanReal* msgPercent,
|
||||
MilanReal* ph0_time, MilanReal* ph1_time, MilanReal* ph2_time,
|
||||
MilanLongInt* ph1_card, MilanLongInt* ph2_card );
|
||||
|
||||
void dMatchBoxPC(MilanLongInt NLVer, MilanLongInt NLEdge,
|
||||
MilanLongInt* verLocPtr, MilanLongInt* verLocInd, MilanReal* edgeLocWeight,
|
||||
MilanLongInt* verDistance,
|
||||
MilanLongInt* Mate,
|
||||
MilanInt myRank, MilanInt numProcs, MilanInt icomm,
|
||||
MilanLongInt* msgIndSent, MilanLongInt* msgActualSent, MilanReal* msgPercent,
|
||||
MilanReal* ph0_time, MilanReal* ph1_time, MilanReal* ph2_time,
|
||||
MilanLongInt* ph1_card, MilanLongInt* ph2_card );
|
||||
|
||||
void sMatchBoxPC(MilanLongInt NLVer, MilanLongInt NLEdge,
|
||||
MilanLongInt* verLocPtr, MilanLongInt* verLocInd, MilanFloat* edgeLocWeight,
|
||||
MilanLongInt* verDistance,
|
||||
MilanLongInt* Mate,
|
||||
MilanInt myRank, MilanInt numProcs, MilanInt icomm,
|
||||
MilanLongInt* msgIndSent, MilanLongInt* msgActualSent, MilanReal* msgPercent,
|
||||
MilanReal* ph0_time, MilanReal* ph1_time, MilanReal* ph2_time,
|
||||
MilanLongInt* ph1_card, MilanLongInt* ph2_card );
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
@@ -21,7 +21,7 @@
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -33,26 +33,26 @@
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! File: amg_c_dec_aggregator_tprol.f90
|
||||
!
|
||||
! Subroutine: amg_c_dec_aggregator_tprol
|
||||
! Version: complex
|
||||
!
|
||||
! This routine is mainly an interface to soc_map_bld where the real work is performed.
|
||||
! This routine is mainly an interface to soc_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.
|
||||
!
|
||||
!
|
||||
!
|
||||
! Arguments:
|
||||
! ag - type(amg_c_dec_aggregator_type), input/output.
|
||||
! The aggregator object, carrying with itself the mapping algorithm.
|
||||
! parms - The auxiliary parameters object
|
||||
! ag_data - Auxiliary global aggregation parameters object
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! a - type(psb_cspmat_type).
|
||||
! The sparse matrix structure containing the local part of the
|
||||
! fine-level matrix.
|
||||
@@ -70,10 +70,10 @@
|
||||
! nlaggr(i) contains the aggregates held by process i.
|
||||
! t_prol - type(psb_cspmat_type), output
|
||||
! The tentative prolongator, based on ilaggr.
|
||||
!
|
||||
!
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
! Error code.
|
||||
!
|
||||
subroutine amg_c_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
& a,desc_a,ilaggr,nlaggr,t_prol,info)
|
||||
use psb_base_mod
|
||||
@@ -81,7 +81,7 @@ subroutine amg_c_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
use amg_c_inner_mod
|
||||
implicit none
|
||||
class(amg_c_dec_aggregator_type), target, intent(inout) :: ag
|
||||
type(amg_sml_parms), intent(inout) :: parms
|
||||
type(amg_sml_parms), intent(inout) :: parms
|
||||
type(amg_saggr_data), intent(in) :: ag_data
|
||||
type(psb_cspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -112,7 +112,7 @@ subroutine amg_c_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call amg_check_def(parms%ml_cycle,'Multilevel cycle',&
|
||||
& amg_mult_ml_,is_legal_ml_cycle)
|
||||
call amg_check_def(parms%par_aggr_alg,'Aggregation',&
|
||||
& amg_dec_aggr_,is_legal_ml_par_aggr_alg)
|
||||
& amg_dec_aggr_,is_legal_decoupled_par_aggr_alg)
|
||||
call amg_check_def(parms%aggr_ord,'Ordering',&
|
||||
& amg_aggr_ord_nat_,is_legal_ml_aggr_ord)
|
||||
call amg_check_def(parms%aggr_thresh,'Aggr_Thresh',szero,is_legal_s_aggr_thrs)
|
||||
@@ -130,11 +130,11 @@ subroutine amg_c_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call psb_errpush(info,name,a_err='soc_map_bld/map_to_tprol')
|
||||
goto 9999
|
||||
endif
|
||||
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 call psb_error_handler(err_act)
|
||||
return
|
||||
|
||||
|
||||
end subroutine amg_c_dec_aggregator_build_tprol
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
!
|
||||
!
|
||||
! is_legal_decoupled_par_aggr_alg
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
@@ -21,7 +21,7 @@
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -33,28 +33,28 @@
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! File: amg_c_symdec_aggregator_tprol.f90
|
||||
!
|
||||
! Subroutine: amg_c_symdec_aggregator_tprol
|
||||
! Version: complex
|
||||
!
|
||||
!
|
||||
! This routine is mainly an interface to soc_map_bld where the real work is performed.
|
||||
! This routine is mainly an interface to soc_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. It also symmetrizes the pattern of the local matrix A.
|
||||
! integer mapping. It also symmetrizes the pattern of the local matrix A.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! Arguments:
|
||||
! Arguments:
|
||||
! ag - type(amg_c_dec_aggregator_type), input/output.
|
||||
! The aggregator object, carrying with itself the mapping algorithm.
|
||||
! parms - The auxiliary parameters object
|
||||
! ag_data - Auxiliary global aggregation parameters object
|
||||
!
|
||||
!
|
||||
! a - type(psb_cspmat_type).
|
||||
! The sparse matrix structure containing the local part of the
|
||||
! fine-level matrix.
|
||||
@@ -72,10 +72,10 @@
|
||||
! nlaggr(i) contains the aggregates held by process i.
|
||||
! op_prol - type(psb_cspmat_type), output
|
||||
! The tentative prolongator, based on ilaggr.
|
||||
!
|
||||
!
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
! Error code.
|
||||
!
|
||||
subroutine amg_c_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
& a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
use psb_base_mod
|
||||
@@ -84,7 +84,7 @@ subroutine amg_c_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
use amg_c_inner_mod
|
||||
implicit none
|
||||
class(amg_c_symdec_aggregator_type), target, intent(inout) :: ag
|
||||
type(amg_sml_parms), intent(inout) :: parms
|
||||
type(amg_sml_parms), intent(inout) :: parms
|
||||
type(amg_saggr_data), intent(in) :: ag_data
|
||||
type(psb_cspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -117,7 +117,7 @@ subroutine amg_c_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call amg_check_def(parms%ml_cycle,'Multilevel cycle',&
|
||||
& amg_mult_ml_,is_legal_ml_cycle)
|
||||
call amg_check_def(parms%par_aggr_alg,'Aggregation',&
|
||||
& amg_dec_aggr_,is_legal_ml_par_aggr_alg)
|
||||
& amg_dec_aggr_,is_legal_decoupled_par_aggr_alg)
|
||||
call amg_check_def(parms%aggr_ord,'Ordering',&
|
||||
& amg_aggr_ord_nat_,is_legal_ml_aggr_ord)
|
||||
call amg_check_def(parms%aggr_thresh,'Aggr_Thresh',szero,is_legal_s_aggr_thrs)
|
||||
@@ -129,7 +129,7 @@ subroutine amg_c_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call atmp%set_ncols(nr)
|
||||
if (info == psb_success_) call atmp%transp(atrans)
|
||||
if (info == psb_success_) call atrans%cscnv(info,type='COO')
|
||||
if (info == psb_success_) call psb_rwextd(nr,atmp,info,b=atrans,rowscale=.false.)
|
||||
if (info == psb_success_) call psb_rwextd(nr,atmp,info,b=atrans,rowscale=.false.)
|
||||
call atmp%set_nrows(nr)
|
||||
call atmp%set_ncols(nr)
|
||||
if (info == psb_success_) call atrans%free()
|
||||
@@ -145,7 +145,7 @@ subroutine amg_c_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
& desc_a,nlaggr,ilaggr,info)
|
||||
if (info == psb_success_) call atmp%free()
|
||||
|
||||
if (info == psb_success_) call amg_map_to_tprol(desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
if (info == psb_success_) call amg_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='soc_map_bld/map_to_tprol')
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
@@ -21,7 +21,7 @@
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -33,26 +33,26 @@
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! File: amg_d_dec_aggregator_tprol.f90
|
||||
!
|
||||
! Subroutine: amg_d_dec_aggregator_tprol
|
||||
! Version: real
|
||||
!
|
||||
! This routine is mainly an interface to soc_map_bld where the real work is performed.
|
||||
! This routine is mainly an interface to soc_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.
|
||||
!
|
||||
!
|
||||
!
|
||||
! Arguments:
|
||||
! ag - type(amg_d_dec_aggregator_type), input/output.
|
||||
! The aggregator object, carrying with itself the mapping algorithm.
|
||||
! parms - The auxiliary parameters object
|
||||
! ag_data - Auxiliary global aggregation parameters object
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! a - type(psb_dspmat_type).
|
||||
! The sparse matrix structure containing the local part of the
|
||||
! fine-level matrix.
|
||||
@@ -70,10 +70,10 @@
|
||||
! nlaggr(i) contains the aggregates held by process i.
|
||||
! t_prol - type(psb_dspmat_type), output
|
||||
! The tentative prolongator, based on ilaggr.
|
||||
!
|
||||
!
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
! Error code.
|
||||
!
|
||||
subroutine amg_d_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
& a,desc_a,ilaggr,nlaggr,t_prol,info)
|
||||
use psb_base_mod
|
||||
@@ -81,7 +81,7 @@ subroutine amg_d_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
use amg_d_inner_mod
|
||||
implicit none
|
||||
class(amg_d_dec_aggregator_type), target, intent(inout) :: ag
|
||||
type(amg_dml_parms), intent(inout) :: parms
|
||||
type(amg_dml_parms), intent(inout) :: parms
|
||||
type(amg_daggr_data), intent(in) :: ag_data
|
||||
type(psb_dspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -112,7 +112,7 @@ subroutine amg_d_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call amg_check_def(parms%ml_cycle,'Multilevel cycle',&
|
||||
& amg_mult_ml_,is_legal_ml_cycle)
|
||||
call amg_check_def(parms%par_aggr_alg,'Aggregation',&
|
||||
& amg_dec_aggr_,is_legal_ml_par_aggr_alg)
|
||||
& amg_dec_aggr_,is_legal_decoupled_par_aggr_alg)
|
||||
call amg_check_def(parms%aggr_ord,'Ordering',&
|
||||
& amg_aggr_ord_nat_,is_legal_ml_aggr_ord)
|
||||
call amg_check_def(parms%aggr_thresh,'Aggr_Thresh',dzero,is_legal_d_aggr_thrs)
|
||||
@@ -130,11 +130,11 @@ subroutine amg_d_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call psb_errpush(info,name,a_err='soc_map_bld/map_to_tprol')
|
||||
goto 9999
|
||||
endif
|
||||
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 call psb_error_handler(err_act)
|
||||
return
|
||||
|
||||
|
||||
end subroutine amg_d_dec_aggregator_build_tprol
|
||||
|
||||
@@ -177,7 +177,7 @@ subroutine amg_d_parmatch_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call amg_check_def(parms%ml_cycle,'Multilevel cycle',&
|
||||
& amg_mult_ml_,is_legal_ml_cycle)
|
||||
call amg_check_def(parms%par_aggr_alg,'Aggregation',&
|
||||
& amg_dec_aggr_,is_legal_ml_par_aggr_alg)
|
||||
& amg_coupled_aggr_,is_legal_coupled_par_aggr_alg)
|
||||
call amg_check_def(parms%aggr_ord,'Ordering',&
|
||||
& amg_aggr_ord_nat_,is_legal_ml_aggr_ord)
|
||||
call amg_check_def(parms%aggr_thresh,'Aggr_Thresh',dzero,is_legal_d_aggr_thrs)
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
!
|
||||
!
|
||||
! is_legal_decoupled_par_aggr_alg
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
@@ -21,7 +21,7 @@
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -33,28 +33,28 @@
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! File: amg_d_symdec_aggregator_tprol.f90
|
||||
!
|
||||
! Subroutine: amg_d_symdec_aggregator_tprol
|
||||
! Version: real
|
||||
!
|
||||
!
|
||||
! This routine is mainly an interface to soc_map_bld where the real work is performed.
|
||||
! This routine is mainly an interface to soc_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. It also symmetrizes the pattern of the local matrix A.
|
||||
! integer mapping. It also symmetrizes the pattern of the local matrix A.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! Arguments:
|
||||
! Arguments:
|
||||
! ag - type(amg_d_dec_aggregator_type), input/output.
|
||||
! The aggregator object, carrying with itself the mapping algorithm.
|
||||
! parms - The auxiliary parameters object
|
||||
! ag_data - Auxiliary global aggregation parameters object
|
||||
!
|
||||
!
|
||||
! a - type(psb_dspmat_type).
|
||||
! The sparse matrix structure containing the local part of the
|
||||
! fine-level matrix.
|
||||
@@ -72,10 +72,10 @@
|
||||
! nlaggr(i) contains the aggregates held by process i.
|
||||
! op_prol - type(psb_dspmat_type), output
|
||||
! The tentative prolongator, based on ilaggr.
|
||||
!
|
||||
!
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
! Error code.
|
||||
!
|
||||
subroutine amg_d_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
& a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
use psb_base_mod
|
||||
@@ -84,7 +84,7 @@ subroutine amg_d_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
use amg_d_inner_mod
|
||||
implicit none
|
||||
class(amg_d_symdec_aggregator_type), target, intent(inout) :: ag
|
||||
type(amg_dml_parms), intent(inout) :: parms
|
||||
type(amg_dml_parms), intent(inout) :: parms
|
||||
type(amg_daggr_data), intent(in) :: ag_data
|
||||
type(psb_dspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -117,7 +117,7 @@ subroutine amg_d_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call amg_check_def(parms%ml_cycle,'Multilevel cycle',&
|
||||
& amg_mult_ml_,is_legal_ml_cycle)
|
||||
call amg_check_def(parms%par_aggr_alg,'Aggregation',&
|
||||
& amg_dec_aggr_,is_legal_ml_par_aggr_alg)
|
||||
& amg_dec_aggr_,is_legal_decoupled_par_aggr_alg)
|
||||
call amg_check_def(parms%aggr_ord,'Ordering',&
|
||||
& amg_aggr_ord_nat_,is_legal_ml_aggr_ord)
|
||||
call amg_check_def(parms%aggr_thresh,'Aggr_Thresh',dzero,is_legal_d_aggr_thrs)
|
||||
@@ -129,7 +129,7 @@ subroutine amg_d_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call atmp%set_ncols(nr)
|
||||
if (info == psb_success_) call atmp%transp(atrans)
|
||||
if (info == psb_success_) call atrans%cscnv(info,type='COO')
|
||||
if (info == psb_success_) call psb_rwextd(nr,atmp,info,b=atrans,rowscale=.false.)
|
||||
if (info == psb_success_) call psb_rwextd(nr,atmp,info,b=atrans,rowscale=.false.)
|
||||
call atmp%set_nrows(nr)
|
||||
call atmp%set_ncols(nr)
|
||||
if (info == psb_success_) call atrans%free()
|
||||
@@ -145,7 +145,7 @@ subroutine amg_d_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
& desc_a,nlaggr,ilaggr,info)
|
||||
if (info == psb_success_) call atmp%free()
|
||||
|
||||
if (info == psb_success_) call amg_map_to_tprol(desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
if (info == psb_success_) call amg_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='soc_map_bld/map_to_tprol')
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
@@ -21,7 +21,7 @@
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -33,26 +33,26 @@
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! File: amg_s_dec_aggregator_tprol.f90
|
||||
!
|
||||
! Subroutine: amg_s_dec_aggregator_tprol
|
||||
! Version: real
|
||||
!
|
||||
! This routine is mainly an interface to soc_map_bld where the real work is performed.
|
||||
! This routine is mainly an interface to soc_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.
|
||||
!
|
||||
!
|
||||
!
|
||||
! Arguments:
|
||||
! ag - type(amg_s_dec_aggregator_type), input/output.
|
||||
! The aggregator object, carrying with itself the mapping algorithm.
|
||||
! parms - The auxiliary parameters object
|
||||
! ag_data - Auxiliary global aggregation parameters object
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! a - type(psb_sspmat_type).
|
||||
! The sparse matrix structure containing the local part of the
|
||||
! fine-level matrix.
|
||||
@@ -70,10 +70,10 @@
|
||||
! nlaggr(i) contains the aggregates held by process i.
|
||||
! t_prol - type(psb_sspmat_type), output
|
||||
! The tentative prolongator, based on ilaggr.
|
||||
!
|
||||
!
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
! Error code.
|
||||
!
|
||||
subroutine amg_s_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
& a,desc_a,ilaggr,nlaggr,t_prol,info)
|
||||
use psb_base_mod
|
||||
@@ -81,7 +81,7 @@ subroutine amg_s_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
use amg_s_inner_mod
|
||||
implicit none
|
||||
class(amg_s_dec_aggregator_type), target, intent(inout) :: ag
|
||||
type(amg_sml_parms), intent(inout) :: parms
|
||||
type(amg_sml_parms), intent(inout) :: parms
|
||||
type(amg_saggr_data), intent(in) :: ag_data
|
||||
type(psb_sspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -112,7 +112,7 @@ subroutine amg_s_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call amg_check_def(parms%ml_cycle,'Multilevel cycle',&
|
||||
& amg_mult_ml_,is_legal_ml_cycle)
|
||||
call amg_check_def(parms%par_aggr_alg,'Aggregation',&
|
||||
& amg_dec_aggr_,is_legal_ml_par_aggr_alg)
|
||||
& amg_dec_aggr_,is_legal_decoupled_par_aggr_alg)
|
||||
call amg_check_def(parms%aggr_ord,'Ordering',&
|
||||
& amg_aggr_ord_nat_,is_legal_ml_aggr_ord)
|
||||
call amg_check_def(parms%aggr_thresh,'Aggr_Thresh',szero,is_legal_s_aggr_thrs)
|
||||
@@ -130,11 +130,11 @@ subroutine amg_s_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call psb_errpush(info,name,a_err='soc_map_bld/map_to_tprol')
|
||||
goto 9999
|
||||
endif
|
||||
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 call psb_error_handler(err_act)
|
||||
return
|
||||
|
||||
|
||||
end subroutine amg_s_dec_aggregator_build_tprol
|
||||
|
||||
@@ -177,7 +177,7 @@ subroutine amg_s_parmatch_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call amg_check_def(parms%ml_cycle,'Multilevel cycle',&
|
||||
& amg_mult_ml_,is_legal_ml_cycle)
|
||||
call amg_check_def(parms%par_aggr_alg,'Aggregation',&
|
||||
& amg_dec_aggr_,is_legal_ml_par_aggr_alg)
|
||||
& amg_coupled_aggr_,is_legal_coupled_par_aggr_alg)
|
||||
call amg_check_def(parms%aggr_ord,'Ordering',&
|
||||
& amg_aggr_ord_nat_,is_legal_ml_aggr_ord)
|
||||
call amg_check_def(parms%aggr_thresh,'Aggr_Thresh',szero,is_legal_s_aggr_thrs)
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
!
|
||||
!
|
||||
! is_legal_decoupled_par_aggr_alg
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
@@ -21,7 +21,7 @@
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -33,28 +33,28 @@
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! File: amg_s_symdec_aggregator_tprol.f90
|
||||
!
|
||||
! Subroutine: amg_s_symdec_aggregator_tprol
|
||||
! Version: real
|
||||
!
|
||||
!
|
||||
! This routine is mainly an interface to soc_map_bld where the real work is performed.
|
||||
! This routine is mainly an interface to soc_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. It also symmetrizes the pattern of the local matrix A.
|
||||
! integer mapping. It also symmetrizes the pattern of the local matrix A.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! Arguments:
|
||||
! Arguments:
|
||||
! ag - type(amg_s_dec_aggregator_type), input/output.
|
||||
! The aggregator object, carrying with itself the mapping algorithm.
|
||||
! parms - The auxiliary parameters object
|
||||
! ag_data - Auxiliary global aggregation parameters object
|
||||
!
|
||||
!
|
||||
! a - type(psb_sspmat_type).
|
||||
! The sparse matrix structure containing the local part of the
|
||||
! fine-level matrix.
|
||||
@@ -72,10 +72,10 @@
|
||||
! nlaggr(i) contains the aggregates held by process i.
|
||||
! op_prol - type(psb_sspmat_type), output
|
||||
! The tentative prolongator, based on ilaggr.
|
||||
!
|
||||
!
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
! Error code.
|
||||
!
|
||||
subroutine amg_s_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
& a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
use psb_base_mod
|
||||
@@ -84,7 +84,7 @@ subroutine amg_s_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
use amg_s_inner_mod
|
||||
implicit none
|
||||
class(amg_s_symdec_aggregator_type), target, intent(inout) :: ag
|
||||
type(amg_sml_parms), intent(inout) :: parms
|
||||
type(amg_sml_parms), intent(inout) :: parms
|
||||
type(amg_saggr_data), intent(in) :: ag_data
|
||||
type(psb_sspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -117,7 +117,7 @@ subroutine amg_s_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call amg_check_def(parms%ml_cycle,'Multilevel cycle',&
|
||||
& amg_mult_ml_,is_legal_ml_cycle)
|
||||
call amg_check_def(parms%par_aggr_alg,'Aggregation',&
|
||||
& amg_dec_aggr_,is_legal_ml_par_aggr_alg)
|
||||
& amg_dec_aggr_,is_legal_decoupled_par_aggr_alg)
|
||||
call amg_check_def(parms%aggr_ord,'Ordering',&
|
||||
& amg_aggr_ord_nat_,is_legal_ml_aggr_ord)
|
||||
call amg_check_def(parms%aggr_thresh,'Aggr_Thresh',szero,is_legal_s_aggr_thrs)
|
||||
@@ -129,7 +129,7 @@ subroutine amg_s_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call atmp%set_ncols(nr)
|
||||
if (info == psb_success_) call atmp%transp(atrans)
|
||||
if (info == psb_success_) call atrans%cscnv(info,type='COO')
|
||||
if (info == psb_success_) call psb_rwextd(nr,atmp,info,b=atrans,rowscale=.false.)
|
||||
if (info == psb_success_) call psb_rwextd(nr,atmp,info,b=atrans,rowscale=.false.)
|
||||
call atmp%set_nrows(nr)
|
||||
call atmp%set_ncols(nr)
|
||||
if (info == psb_success_) call atrans%free()
|
||||
@@ -145,7 +145,7 @@ subroutine amg_s_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
& desc_a,nlaggr,ilaggr,info)
|
||||
if (info == psb_success_) call atmp%free()
|
||||
|
||||
if (info == psb_success_) call amg_map_to_tprol(desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
if (info == psb_success_) call amg_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='soc_map_bld/map_to_tprol')
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
@@ -21,7 +21,7 @@
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -33,26 +33,26 @@
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! File: amg_z_dec_aggregator_tprol.f90
|
||||
!
|
||||
! Subroutine: amg_z_dec_aggregator_tprol
|
||||
! Version: complex
|
||||
!
|
||||
! This routine is mainly an interface to soc_map_bld where the real work is performed.
|
||||
! This routine is mainly an interface to soc_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.
|
||||
!
|
||||
!
|
||||
!
|
||||
! Arguments:
|
||||
! ag - type(amg_z_dec_aggregator_type), input/output.
|
||||
! The aggregator object, carrying with itself the mapping algorithm.
|
||||
! parms - The auxiliary parameters object
|
||||
! ag_data - Auxiliary global aggregation parameters object
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! a - type(psb_zspmat_type).
|
||||
! The sparse matrix structure containing the local part of the
|
||||
! fine-level matrix.
|
||||
@@ -70,10 +70,10 @@
|
||||
! nlaggr(i) contains the aggregates held by process i.
|
||||
! t_prol - type(psb_zspmat_type), output
|
||||
! The tentative prolongator, based on ilaggr.
|
||||
!
|
||||
!
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
! Error code.
|
||||
!
|
||||
subroutine amg_z_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
& a,desc_a,ilaggr,nlaggr,t_prol,info)
|
||||
use psb_base_mod
|
||||
@@ -81,7 +81,7 @@ subroutine amg_z_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
use amg_z_inner_mod
|
||||
implicit none
|
||||
class(amg_z_dec_aggregator_type), target, intent(inout) :: ag
|
||||
type(amg_dml_parms), intent(inout) :: parms
|
||||
type(amg_dml_parms), intent(inout) :: parms
|
||||
type(amg_daggr_data), intent(in) :: ag_data
|
||||
type(psb_zspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -112,7 +112,7 @@ subroutine amg_z_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call amg_check_def(parms%ml_cycle,'Multilevel cycle',&
|
||||
& amg_mult_ml_,is_legal_ml_cycle)
|
||||
call amg_check_def(parms%par_aggr_alg,'Aggregation',&
|
||||
& amg_dec_aggr_,is_legal_ml_par_aggr_alg)
|
||||
& amg_dec_aggr_,is_legal_decoupled_par_aggr_alg)
|
||||
call amg_check_def(parms%aggr_ord,'Ordering',&
|
||||
& amg_aggr_ord_nat_,is_legal_ml_aggr_ord)
|
||||
call amg_check_def(parms%aggr_thresh,'Aggr_Thresh',dzero,is_legal_d_aggr_thrs)
|
||||
@@ -130,11 +130,11 @@ subroutine amg_z_dec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call psb_errpush(info,name,a_err='soc_map_bld/map_to_tprol')
|
||||
goto 9999
|
||||
endif
|
||||
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 call psb_error_handler(err_act)
|
||||
return
|
||||
|
||||
|
||||
end subroutine amg_z_dec_aggregator_build_tprol
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
!
|
||||
!
|
||||
! is_legal_decoupled_par_aggr_alg
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
@@ -21,7 +21,7 @@
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -33,28 +33,28 @@
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! File: amg_z_symdec_aggregator_tprol.f90
|
||||
!
|
||||
! Subroutine: amg_z_symdec_aggregator_tprol
|
||||
! Version: complex
|
||||
!
|
||||
!
|
||||
! This routine is mainly an interface to soc_map_bld where the real work is performed.
|
||||
! This routine is mainly an interface to soc_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. It also symmetrizes the pattern of the local matrix A.
|
||||
! integer mapping. It also symmetrizes the pattern of the local matrix A.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! Arguments:
|
||||
! Arguments:
|
||||
! ag - type(amg_z_dec_aggregator_type), input/output.
|
||||
! The aggregator object, carrying with itself the mapping algorithm.
|
||||
! parms - The auxiliary parameters object
|
||||
! ag_data - Auxiliary global aggregation parameters object
|
||||
!
|
||||
!
|
||||
! a - type(psb_zspmat_type).
|
||||
! The sparse matrix structure containing the local part of the
|
||||
! fine-level matrix.
|
||||
@@ -72,10 +72,10 @@
|
||||
! nlaggr(i) contains the aggregates held by process i.
|
||||
! op_prol - type(psb_zspmat_type), output
|
||||
! The tentative prolongator, based on ilaggr.
|
||||
!
|
||||
!
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
! Error code.
|
||||
!
|
||||
subroutine amg_z_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
& a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
use psb_base_mod
|
||||
@@ -84,7 +84,7 @@ subroutine amg_z_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
use amg_z_inner_mod
|
||||
implicit none
|
||||
class(amg_z_symdec_aggregator_type), target, intent(inout) :: ag
|
||||
type(amg_dml_parms), intent(inout) :: parms
|
||||
type(amg_dml_parms), intent(inout) :: parms
|
||||
type(amg_daggr_data), intent(in) :: ag_data
|
||||
type(psb_zspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -117,7 +117,7 @@ subroutine amg_z_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call amg_check_def(parms%ml_cycle,'Multilevel cycle',&
|
||||
& amg_mult_ml_,is_legal_ml_cycle)
|
||||
call amg_check_def(parms%par_aggr_alg,'Aggregation',&
|
||||
& amg_dec_aggr_,is_legal_ml_par_aggr_alg)
|
||||
& amg_dec_aggr_,is_legal_decoupled_par_aggr_alg)
|
||||
call amg_check_def(parms%aggr_ord,'Ordering',&
|
||||
& amg_aggr_ord_nat_,is_legal_ml_aggr_ord)
|
||||
call amg_check_def(parms%aggr_thresh,'Aggr_Thresh',dzero,is_legal_d_aggr_thrs)
|
||||
@@ -129,7 +129,7 @@ subroutine amg_z_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
call atmp%set_ncols(nr)
|
||||
if (info == psb_success_) call atmp%transp(atrans)
|
||||
if (info == psb_success_) call atrans%cscnv(info,type='COO')
|
||||
if (info == psb_success_) call psb_rwextd(nr,atmp,info,b=atrans,rowscale=.false.)
|
||||
if (info == psb_success_) call psb_rwextd(nr,atmp,info,b=atrans,rowscale=.false.)
|
||||
call atmp%set_nrows(nr)
|
||||
call atmp%set_ncols(nr)
|
||||
if (info == psb_success_) call atrans%free()
|
||||
@@ -145,7 +145,7 @@ subroutine amg_z_symdec_aggregator_build_tprol(ag,parms,ag_data,&
|
||||
& desc_a,nlaggr,ilaggr,info)
|
||||
if (info == psb_success_) call atmp%free()
|
||||
|
||||
if (info == psb_success_) call amg_map_to_tprol(desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
if (info == psb_success_) call amg_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='soc_map_bld/map_to_tprol')
|
||||
|
||||
@@ -242,10 +242,10 @@ subroutine amg_c_base_onelev_csetc(lv,what,val,info,pos,idx)
|
||||
end if
|
||||
end if
|
||||
|
||||
select case(ival)
|
||||
case(amg_dec_aggr_)
|
||||
select case(val)
|
||||
case('DEC')
|
||||
allocate(amg_c_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(amg_sym_dec_aggr_)
|
||||
case('SYMDEC')
|
||||
allocate(amg_c_symdec_aggregator_type :: lv%aggr, stat=info)
|
||||
case default
|
||||
info = psb_err_internal_error_
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
@@ -21,7 +21,7 @@
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -33,10 +33,10 @@
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
subroutine amg_c_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
|
||||
|
||||
use psb_base_mod
|
||||
use amg_c_onelev_mod, amg_protect_name => amg_c_base_onelev_cseti
|
||||
use amg_c_base_aggregator_mod
|
||||
@@ -59,13 +59,13 @@ subroutine amg_c_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
Implicit None
|
||||
|
||||
! Arguments
|
||||
class(amg_c_onelev_type), intent(inout) :: lv
|
||||
character(len=*), intent(in) :: what
|
||||
class(amg_c_onelev_type), intent(inout) :: lv
|
||||
character(len=*), intent(in) :: what
|
||||
integer(psb_ipk_), intent(in) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
character(len=*), optional, intent(in) :: pos
|
||||
integer(psb_ipk_), intent(in), optional :: idx
|
||||
! Local
|
||||
! Local
|
||||
integer(psb_ipk_) :: ipos_, err_act
|
||||
character(len=20) :: name='c_base_onelev_cseti'
|
||||
type(amg_c_base_smoother_type) :: amg_c_base_smoother_mold
|
||||
@@ -84,7 +84,7 @@ subroutine amg_c_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
#if defined(HAVE_MUMPS_)
|
||||
type(amg_c_mumps_solver_type) :: amg_c_mumps_solver_mold
|
||||
#endif
|
||||
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
info = psb_success_
|
||||
|
||||
@@ -100,14 +100,14 @@ subroutine amg_c_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
else
|
||||
ipos_ = amg_smooth_both_
|
||||
end if
|
||||
|
||||
|
||||
select case (psb_toupper(what))
|
||||
case ('SMOOTHER_TYPE')
|
||||
select case (val)
|
||||
select case (val)
|
||||
case (amg_noprec_)
|
||||
call lv%set(amg_c_base_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_c_id_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_jac_)
|
||||
call lv%set(amg_c_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_c_diag_solver_mold,info,pos=pos)
|
||||
@@ -115,11 +115,11 @@ subroutine amg_c_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
case (amg_l1_jac_)
|
||||
call lv%set(amg_c_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_c_l1_diag_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_bjac_)
|
||||
call lv%set(amg_c_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_c_ilu_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_l1_bjac_)
|
||||
call lv%set(amg_c_l1_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_c_ilu_solver_mold,info,pos=pos)
|
||||
@@ -133,61 +133,61 @@ subroutine amg_c_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
if (info == 0) call lv%set(amg_c_gs_solver_mold,info,pos='pre')
|
||||
call lv%set(amg_c_jac_smoother_mold,info,pos='post')
|
||||
if (info == 0) call lv%set(amg_c_bwgs_solver_mold,info,pos='post')
|
||||
|
||||
|
||||
case default
|
||||
!
|
||||
! Do nothing and hope for the best :)
|
||||
! Do nothing and hope for the best :)
|
||||
!
|
||||
end select
|
||||
if ((ipos_==amg_smooth_pre_).or.(ipos_==amg_smooth_both_)) then
|
||||
if ((ipos_==amg_smooth_pre_).or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm)) call lv%sm%default()
|
||||
end if
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm2a)) call lv%sm2a%default()
|
||||
end if
|
||||
|
||||
|
||||
|
||||
case('SUB_SOLVE')
|
||||
select case (val)
|
||||
select case (val)
|
||||
case (amg_f_none_)
|
||||
call lv%set(amg_c_id_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_diag_scale_)
|
||||
call lv%set(amg_c_diag_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_l1_diag_scale_)
|
||||
call lv%set(amg_c_l1_diag_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_gs_)
|
||||
call lv%set(amg_c_gs_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_bwgs_)
|
||||
call lv%set(amg_c_bwgs_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (psb_ilu_n_,psb_milu_n_,psb_ilu_t_)
|
||||
call lv%set(amg_c_ilu_solver_mold,info,pos=pos)
|
||||
if (info == 0) then
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
call lv%sm%sv%set('SUB_SOLVE',val,info)
|
||||
end if
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if (allocated(lv%sm2a)) call lv%sm2a%sv%set('SUB_SOLVE',val,info)
|
||||
end if
|
||||
end if
|
||||
#ifdef HAVE_SLU_
|
||||
case (amg_slu_)
|
||||
case (amg_slu_)
|
||||
call lv%set(amg_c_slu_solver_mold,info,pos=pos)
|
||||
#endif
|
||||
#ifdef HAVE_MUMPS_
|
||||
case (amg_mumps_)
|
||||
case (amg_mumps_)
|
||||
call lv%set(amg_c_mumps_solver_mold,info,pos=pos)
|
||||
#endif
|
||||
case default
|
||||
!
|
||||
! Do nothing and hope for the best :)
|
||||
! Do nothing and hope for the best :)
|
||||
!
|
||||
end select
|
||||
|
||||
|
||||
|
||||
case ('SMOOTHER_SWEEPS')
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) &
|
||||
@@ -208,7 +208,7 @@ subroutine amg_c_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
return
|
||||
end if
|
||||
end if
|
||||
|
||||
|
||||
select case(val)
|
||||
case(amg_dec_aggr_)
|
||||
allocate(amg_c_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
@@ -218,7 +218,7 @@ subroutine amg_c_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
if (info == psb_success_) call lv%aggr%default()
|
||||
|
||||
|
||||
case ('AGGR_ORD')
|
||||
lv%parms%aggr_ord = val
|
||||
|
||||
@@ -245,13 +245,13 @@ subroutine amg_c_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
lv%parms%coarse_solve = val
|
||||
|
||||
case default
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm)) then
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm)) then
|
||||
call lv%sm%set(what,val,info,idx=idx)
|
||||
end if
|
||||
end if
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if (allocated(lv%sm2a)) then
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if (allocated(lv%sm2a)) then
|
||||
call lv%sm2a%set(what,val,info,idx=idx)
|
||||
end if
|
||||
end if
|
||||
|
||||
@@ -42,6 +42,7 @@ subroutine amg_d_base_onelev_csetc(lv,what,val,info,pos,idx)
|
||||
use amg_d_base_aggregator_mod
|
||||
use amg_d_dec_aggregator_mod
|
||||
use amg_d_symdec_aggregator_mod
|
||||
use amg_d_parmatch_aggregator_mod
|
||||
use amg_d_jac_smoother
|
||||
use amg_d_as_smoother
|
||||
use amg_d_diag_solver
|
||||
@@ -262,11 +263,13 @@ subroutine amg_d_base_onelev_csetc(lv,what,val,info,pos,idx)
|
||||
end if
|
||||
end if
|
||||
|
||||
select case(ival)
|
||||
case(amg_dec_aggr_)
|
||||
select case(val)
|
||||
case('DEC')
|
||||
allocate(amg_d_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(amg_sym_dec_aggr_)
|
||||
case('SYMDEC')
|
||||
allocate(amg_d_symdec_aggregator_type :: lv%aggr, stat=info)
|
||||
case('COUP','COUPLED')
|
||||
allocate(amg_d_parmatch_aggregator_type :: lv%aggr, stat=info)
|
||||
case default
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
@@ -21,7 +21,7 @@
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -33,15 +33,16 @@
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
subroutine amg_d_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
|
||||
|
||||
use psb_base_mod
|
||||
use amg_d_onelev_mod, amg_protect_name => amg_d_base_onelev_cseti
|
||||
use amg_d_base_aggregator_mod
|
||||
use amg_d_dec_aggregator_mod
|
||||
use amg_d_symdec_aggregator_mod
|
||||
use amg_d_parmatch_aggregator_mod
|
||||
use amg_d_jac_smoother
|
||||
use amg_d_as_smoother
|
||||
use amg_d_diag_solver
|
||||
@@ -65,13 +66,13 @@ subroutine amg_d_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
Implicit None
|
||||
|
||||
! Arguments
|
||||
class(amg_d_onelev_type), intent(inout) :: lv
|
||||
character(len=*), intent(in) :: what
|
||||
class(amg_d_onelev_type), intent(inout) :: lv
|
||||
character(len=*), intent(in) :: what
|
||||
integer(psb_ipk_), intent(in) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
character(len=*), optional, intent(in) :: pos
|
||||
integer(psb_ipk_), intent(in), optional :: idx
|
||||
! Local
|
||||
! Local
|
||||
integer(psb_ipk_) :: ipos_, err_act
|
||||
character(len=20) :: name='d_base_onelev_cseti'
|
||||
type(amg_d_base_smoother_type) :: amg_d_base_smoother_mold
|
||||
@@ -96,7 +97,7 @@ subroutine amg_d_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
#if defined(HAVE_MUMPS_)
|
||||
type(amg_d_mumps_solver_type) :: amg_d_mumps_solver_mold
|
||||
#endif
|
||||
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
info = psb_success_
|
||||
|
||||
@@ -112,14 +113,14 @@ subroutine amg_d_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
else
|
||||
ipos_ = amg_smooth_both_
|
||||
end if
|
||||
|
||||
|
||||
select case (psb_toupper(what))
|
||||
case ('SMOOTHER_TYPE')
|
||||
select case (val)
|
||||
select case (val)
|
||||
case (amg_noprec_)
|
||||
call lv%set(amg_d_base_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_d_id_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_jac_)
|
||||
call lv%set(amg_d_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_d_diag_solver_mold,info,pos=pos)
|
||||
@@ -127,11 +128,11 @@ subroutine amg_d_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
case (amg_l1_jac_)
|
||||
call lv%set(amg_d_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_d_l1_diag_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_bjac_)
|
||||
call lv%set(amg_d_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_d_ilu_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_l1_bjac_)
|
||||
call lv%set(amg_d_l1_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_d_ilu_solver_mold,info,pos=pos)
|
||||
@@ -145,53 +146,53 @@ subroutine amg_d_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
if (info == 0) call lv%set(amg_d_gs_solver_mold,info,pos='pre')
|
||||
call lv%set(amg_d_jac_smoother_mold,info,pos='post')
|
||||
if (info == 0) call lv%set(amg_d_bwgs_solver_mold,info,pos='post')
|
||||
|
||||
|
||||
case default
|
||||
!
|
||||
! Do nothing and hope for the best :)
|
||||
! Do nothing and hope for the best :)
|
||||
!
|
||||
end select
|
||||
if ((ipos_==amg_smooth_pre_).or.(ipos_==amg_smooth_both_)) then
|
||||
if ((ipos_==amg_smooth_pre_).or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm)) call lv%sm%default()
|
||||
end if
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm2a)) call lv%sm2a%default()
|
||||
end if
|
||||
|
||||
|
||||
|
||||
case('SUB_SOLVE')
|
||||
select case (val)
|
||||
select case (val)
|
||||
case (amg_f_none_)
|
||||
call lv%set(amg_d_id_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_diag_scale_)
|
||||
call lv%set(amg_d_diag_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_l1_diag_scale_)
|
||||
call lv%set(amg_d_l1_diag_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_gs_)
|
||||
call lv%set(amg_d_gs_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_bwgs_)
|
||||
call lv%set(amg_d_bwgs_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (psb_ilu_n_,psb_milu_n_,psb_ilu_t_)
|
||||
call lv%set(amg_d_ilu_solver_mold,info,pos=pos)
|
||||
if (info == 0) then
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
call lv%sm%sv%set('SUB_SOLVE',val,info)
|
||||
end if
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if (allocated(lv%sm2a)) call lv%sm2a%sv%set('SUB_SOLVE',val,info)
|
||||
end if
|
||||
end if
|
||||
#ifdef HAVE_SLU_
|
||||
case (amg_slu_)
|
||||
case (amg_slu_)
|
||||
call lv%set(amg_d_slu_solver_mold,info,pos=pos)
|
||||
#endif
|
||||
#ifdef HAVE_MUMPS_
|
||||
case (amg_mumps_)
|
||||
case (amg_mumps_)
|
||||
call lv%set(amg_d_mumps_solver_mold,info,pos=pos)
|
||||
#endif
|
||||
#ifdef HAVE_SLUDIST_
|
||||
@@ -204,10 +205,10 @@ subroutine amg_d_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
#endif
|
||||
case default
|
||||
!
|
||||
! Do nothing and hope for the best :)
|
||||
! Do nothing and hope for the best :)
|
||||
!
|
||||
end select
|
||||
|
||||
|
||||
|
||||
case ('SMOOTHER_SWEEPS')
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) &
|
||||
@@ -228,7 +229,7 @@ subroutine amg_d_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
return
|
||||
end if
|
||||
end if
|
||||
|
||||
|
||||
select case(val)
|
||||
case(amg_dec_aggr_)
|
||||
allocate(amg_d_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
@@ -238,7 +239,7 @@ subroutine amg_d_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
if (info == psb_success_) call lv%aggr%default()
|
||||
|
||||
|
||||
case ('AGGR_ORD')
|
||||
lv%parms%aggr_ord = val
|
||||
|
||||
@@ -265,13 +266,13 @@ subroutine amg_d_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
lv%parms%coarse_solve = val
|
||||
|
||||
case default
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm)) then
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm)) then
|
||||
call lv%sm%set(what,val,info,idx=idx)
|
||||
end if
|
||||
end if
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if (allocated(lv%sm2a)) then
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if (allocated(lv%sm2a)) then
|
||||
call lv%sm2a%set(what,val,info,idx=idx)
|
||||
end if
|
||||
end if
|
||||
|
||||
@@ -42,6 +42,7 @@ subroutine amg_s_base_onelev_csetc(lv,what,val,info,pos,idx)
|
||||
use amg_s_base_aggregator_mod
|
||||
use amg_s_dec_aggregator_mod
|
||||
use amg_s_symdec_aggregator_mod
|
||||
use amg_s_parmatch_aggregator_mod
|
||||
use amg_s_jac_smoother
|
||||
use amg_s_as_smoother
|
||||
use amg_s_diag_solver
|
||||
@@ -242,11 +243,13 @@ subroutine amg_s_base_onelev_csetc(lv,what,val,info,pos,idx)
|
||||
end if
|
||||
end if
|
||||
|
||||
select case(ival)
|
||||
case(amg_dec_aggr_)
|
||||
select case(val)
|
||||
case('DEC')
|
||||
allocate(amg_s_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(amg_sym_dec_aggr_)
|
||||
case('SYMDEC')
|
||||
allocate(amg_s_symdec_aggregator_type :: lv%aggr, stat=info)
|
||||
case('COUP','COUPLED')
|
||||
allocate(amg_s_parmatch_aggregator_type :: lv%aggr, stat=info)
|
||||
case default
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
@@ -21,7 +21,7 @@
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -33,15 +33,16 @@
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
subroutine amg_s_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
|
||||
|
||||
use psb_base_mod
|
||||
use amg_s_onelev_mod, amg_protect_name => amg_s_base_onelev_cseti
|
||||
use amg_s_base_aggregator_mod
|
||||
use amg_s_dec_aggregator_mod
|
||||
use amg_s_symdec_aggregator_mod
|
||||
use amg_s_parmatch_aggregator_mod
|
||||
use amg_s_jac_smoother
|
||||
use amg_s_as_smoother
|
||||
use amg_s_diag_solver
|
||||
@@ -59,13 +60,13 @@ subroutine amg_s_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
Implicit None
|
||||
|
||||
! Arguments
|
||||
class(amg_s_onelev_type), intent(inout) :: lv
|
||||
character(len=*), intent(in) :: what
|
||||
class(amg_s_onelev_type), intent(inout) :: lv
|
||||
character(len=*), intent(in) :: what
|
||||
integer(psb_ipk_), intent(in) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
character(len=*), optional, intent(in) :: pos
|
||||
integer(psb_ipk_), intent(in), optional :: idx
|
||||
! Local
|
||||
! Local
|
||||
integer(psb_ipk_) :: ipos_, err_act
|
||||
character(len=20) :: name='s_base_onelev_cseti'
|
||||
type(amg_s_base_smoother_type) :: amg_s_base_smoother_mold
|
||||
@@ -84,7 +85,7 @@ subroutine amg_s_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
#if defined(HAVE_MUMPS_)
|
||||
type(amg_s_mumps_solver_type) :: amg_s_mumps_solver_mold
|
||||
#endif
|
||||
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
info = psb_success_
|
||||
|
||||
@@ -100,14 +101,14 @@ subroutine amg_s_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
else
|
||||
ipos_ = amg_smooth_both_
|
||||
end if
|
||||
|
||||
|
||||
select case (psb_toupper(what))
|
||||
case ('SMOOTHER_TYPE')
|
||||
select case (val)
|
||||
select case (val)
|
||||
case (amg_noprec_)
|
||||
call lv%set(amg_s_base_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_s_id_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_jac_)
|
||||
call lv%set(amg_s_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_s_diag_solver_mold,info,pos=pos)
|
||||
@@ -115,11 +116,11 @@ subroutine amg_s_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
case (amg_l1_jac_)
|
||||
call lv%set(amg_s_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_s_l1_diag_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_bjac_)
|
||||
call lv%set(amg_s_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_s_ilu_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_l1_bjac_)
|
||||
call lv%set(amg_s_l1_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_s_ilu_solver_mold,info,pos=pos)
|
||||
@@ -133,61 +134,61 @@ subroutine amg_s_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
if (info == 0) call lv%set(amg_s_gs_solver_mold,info,pos='pre')
|
||||
call lv%set(amg_s_jac_smoother_mold,info,pos='post')
|
||||
if (info == 0) call lv%set(amg_s_bwgs_solver_mold,info,pos='post')
|
||||
|
||||
|
||||
case default
|
||||
!
|
||||
! Do nothing and hope for the best :)
|
||||
! Do nothing and hope for the best :)
|
||||
!
|
||||
end select
|
||||
if ((ipos_==amg_smooth_pre_).or.(ipos_==amg_smooth_both_)) then
|
||||
if ((ipos_==amg_smooth_pre_).or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm)) call lv%sm%default()
|
||||
end if
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm2a)) call lv%sm2a%default()
|
||||
end if
|
||||
|
||||
|
||||
|
||||
case('SUB_SOLVE')
|
||||
select case (val)
|
||||
select case (val)
|
||||
case (amg_f_none_)
|
||||
call lv%set(amg_s_id_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_diag_scale_)
|
||||
call lv%set(amg_s_diag_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_l1_diag_scale_)
|
||||
call lv%set(amg_s_l1_diag_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_gs_)
|
||||
call lv%set(amg_s_gs_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_bwgs_)
|
||||
call lv%set(amg_s_bwgs_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (psb_ilu_n_,psb_milu_n_,psb_ilu_t_)
|
||||
call lv%set(amg_s_ilu_solver_mold,info,pos=pos)
|
||||
if (info == 0) then
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
call lv%sm%sv%set('SUB_SOLVE',val,info)
|
||||
end if
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if (allocated(lv%sm2a)) call lv%sm2a%sv%set('SUB_SOLVE',val,info)
|
||||
end if
|
||||
end if
|
||||
#ifdef HAVE_SLU_
|
||||
case (amg_slu_)
|
||||
case (amg_slu_)
|
||||
call lv%set(amg_s_slu_solver_mold,info,pos=pos)
|
||||
#endif
|
||||
#ifdef HAVE_MUMPS_
|
||||
case (amg_mumps_)
|
||||
case (amg_mumps_)
|
||||
call lv%set(amg_s_mumps_solver_mold,info,pos=pos)
|
||||
#endif
|
||||
case default
|
||||
!
|
||||
! Do nothing and hope for the best :)
|
||||
! Do nothing and hope for the best :)
|
||||
!
|
||||
end select
|
||||
|
||||
|
||||
|
||||
case ('SMOOTHER_SWEEPS')
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) &
|
||||
@@ -208,7 +209,7 @@ subroutine amg_s_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
return
|
||||
end if
|
||||
end if
|
||||
|
||||
|
||||
select case(val)
|
||||
case(amg_dec_aggr_)
|
||||
allocate(amg_s_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
@@ -218,7 +219,7 @@ subroutine amg_s_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
if (info == psb_success_) call lv%aggr%default()
|
||||
|
||||
|
||||
case ('AGGR_ORD')
|
||||
lv%parms%aggr_ord = val
|
||||
|
||||
@@ -245,13 +246,13 @@ subroutine amg_s_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
lv%parms%coarse_solve = val
|
||||
|
||||
case default
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm)) then
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm)) then
|
||||
call lv%sm%set(what,val,info,idx=idx)
|
||||
end if
|
||||
end if
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if (allocated(lv%sm2a)) then
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if (allocated(lv%sm2a)) then
|
||||
call lv%sm2a%set(what,val,info,idx=idx)
|
||||
end if
|
||||
end if
|
||||
|
||||
@@ -262,10 +262,10 @@ subroutine amg_z_base_onelev_csetc(lv,what,val,info,pos,idx)
|
||||
end if
|
||||
end if
|
||||
|
||||
select case(ival)
|
||||
case(amg_dec_aggr_)
|
||||
select case(val)
|
||||
case('DEC')
|
||||
allocate(amg_z_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(amg_sym_dec_aggr_)
|
||||
case('SYMDEC')
|
||||
allocate(amg_z_symdec_aggregator_type :: lv%aggr, stat=info)
|
||||
case default
|
||||
info = psb_err_internal_error_
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
! AMG4PSBLAS version 1.0
|
||||
! Algebraic Multigrid Package
|
||||
! based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
!
|
||||
! (C) Copyright 2021
|
||||
!
|
||||
! Salvatore Filippone
|
||||
! Pasqua D'Ambra
|
||||
! Fabio Durastante
|
||||
!
|
||||
! Redistribution and use in source and binary forms, with or without
|
||||
! modification, are permitted provided that the following conditions
|
||||
! are met:
|
||||
@@ -21,7 +21,7 @@
|
||||
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
|
||||
! not be used to endorse or promote products derived from this
|
||||
! software without specific written permission.
|
||||
!
|
||||
!
|
||||
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
@@ -33,10 +33,10 @@
|
||||
! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
!
|
||||
!
|
||||
subroutine amg_z_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
|
||||
|
||||
use psb_base_mod
|
||||
use amg_z_onelev_mod, amg_protect_name => amg_z_base_onelev_cseti
|
||||
use amg_z_base_aggregator_mod
|
||||
@@ -65,13 +65,13 @@ subroutine amg_z_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
Implicit None
|
||||
|
||||
! Arguments
|
||||
class(amg_z_onelev_type), intent(inout) :: lv
|
||||
character(len=*), intent(in) :: what
|
||||
class(amg_z_onelev_type), intent(inout) :: lv
|
||||
character(len=*), intent(in) :: what
|
||||
integer(psb_ipk_), intent(in) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
character(len=*), optional, intent(in) :: pos
|
||||
integer(psb_ipk_), intent(in), optional :: idx
|
||||
! Local
|
||||
! Local
|
||||
integer(psb_ipk_) :: ipos_, err_act
|
||||
character(len=20) :: name='z_base_onelev_cseti'
|
||||
type(amg_z_base_smoother_type) :: amg_z_base_smoother_mold
|
||||
@@ -96,7 +96,7 @@ subroutine amg_z_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
#if defined(HAVE_MUMPS_)
|
||||
type(amg_z_mumps_solver_type) :: amg_z_mumps_solver_mold
|
||||
#endif
|
||||
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
info = psb_success_
|
||||
|
||||
@@ -112,14 +112,14 @@ subroutine amg_z_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
else
|
||||
ipos_ = amg_smooth_both_
|
||||
end if
|
||||
|
||||
|
||||
select case (psb_toupper(what))
|
||||
case ('SMOOTHER_TYPE')
|
||||
select case (val)
|
||||
select case (val)
|
||||
case (amg_noprec_)
|
||||
call lv%set(amg_z_base_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_z_id_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_jac_)
|
||||
call lv%set(amg_z_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_z_diag_solver_mold,info,pos=pos)
|
||||
@@ -127,11 +127,11 @@ subroutine amg_z_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
case (amg_l1_jac_)
|
||||
call lv%set(amg_z_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_z_l1_diag_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_bjac_)
|
||||
call lv%set(amg_z_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_z_ilu_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_l1_bjac_)
|
||||
call lv%set(amg_z_l1_jac_smoother_mold,info,pos=pos)
|
||||
if (info == 0) call lv%set(amg_z_ilu_solver_mold,info,pos=pos)
|
||||
@@ -145,53 +145,53 @@ subroutine amg_z_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
if (info == 0) call lv%set(amg_z_gs_solver_mold,info,pos='pre')
|
||||
call lv%set(amg_z_jac_smoother_mold,info,pos='post')
|
||||
if (info == 0) call lv%set(amg_z_bwgs_solver_mold,info,pos='post')
|
||||
|
||||
|
||||
case default
|
||||
!
|
||||
! Do nothing and hope for the best :)
|
||||
! Do nothing and hope for the best :)
|
||||
!
|
||||
end select
|
||||
if ((ipos_==amg_smooth_pre_).or.(ipos_==amg_smooth_both_)) then
|
||||
if ((ipos_==amg_smooth_pre_).or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm)) call lv%sm%default()
|
||||
end if
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm2a)) call lv%sm2a%default()
|
||||
end if
|
||||
|
||||
|
||||
|
||||
case('SUB_SOLVE')
|
||||
select case (val)
|
||||
select case (val)
|
||||
case (amg_f_none_)
|
||||
call lv%set(amg_z_id_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_diag_scale_)
|
||||
call lv%set(amg_z_diag_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_l1_diag_scale_)
|
||||
call lv%set(amg_z_l1_diag_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_gs_)
|
||||
call lv%set(amg_z_gs_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (amg_bwgs_)
|
||||
call lv%set(amg_z_bwgs_solver_mold,info,pos=pos)
|
||||
|
||||
|
||||
case (psb_ilu_n_,psb_milu_n_,psb_ilu_t_)
|
||||
call lv%set(amg_z_ilu_solver_mold,info,pos=pos)
|
||||
if (info == 0) then
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
call lv%sm%sv%set('SUB_SOLVE',val,info)
|
||||
end if
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if (allocated(lv%sm2a)) call lv%sm2a%sv%set('SUB_SOLVE',val,info)
|
||||
end if
|
||||
end if
|
||||
#ifdef HAVE_SLU_
|
||||
case (amg_slu_)
|
||||
case (amg_slu_)
|
||||
call lv%set(amg_z_slu_solver_mold,info,pos=pos)
|
||||
#endif
|
||||
#ifdef HAVE_MUMPS_
|
||||
case (amg_mumps_)
|
||||
case (amg_mumps_)
|
||||
call lv%set(amg_z_mumps_solver_mold,info,pos=pos)
|
||||
#endif
|
||||
#ifdef HAVE_SLUDIST_
|
||||
@@ -204,10 +204,10 @@ subroutine amg_z_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
#endif
|
||||
case default
|
||||
!
|
||||
! Do nothing and hope for the best :)
|
||||
! Do nothing and hope for the best :)
|
||||
!
|
||||
end select
|
||||
|
||||
|
||||
|
||||
case ('SMOOTHER_SWEEPS')
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) &
|
||||
@@ -228,7 +228,7 @@ subroutine amg_z_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
return
|
||||
end if
|
||||
end if
|
||||
|
||||
|
||||
select case(val)
|
||||
case(amg_dec_aggr_)
|
||||
allocate(amg_z_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
@@ -238,7 +238,7 @@ subroutine amg_z_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
if (info == psb_success_) call lv%aggr%default()
|
||||
|
||||
|
||||
case ('AGGR_ORD')
|
||||
lv%parms%aggr_ord = val
|
||||
|
||||
@@ -265,13 +265,13 @@ subroutine amg_z_base_onelev_cseti(lv,what,val,info,pos,idx)
|
||||
lv%parms%coarse_solve = val
|
||||
|
||||
case default
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm)) then
|
||||
if ((ipos_==amg_smooth_pre_) .or.(ipos_==amg_smooth_both_)) then
|
||||
if (allocated(lv%sm)) then
|
||||
call lv%sm%set(what,val,info,idx=idx)
|
||||
end if
|
||||
end if
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if (allocated(lv%sm2a)) then
|
||||
if ((ipos_==amg_smooth_post_).or.(ipos_==amg_smooth_both_))then
|
||||
if (allocated(lv%sm2a)) then
|
||||
call lv%sm2a%set(what,val,info,idx=idx)
|
||||
end if
|
||||
end if
|
||||
|
||||
+20
-15
@@ -105,75 +105,80 @@ class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">4.1 </span><a
|
||||
href="userhtmlsu6.html#x15-140004.1" id="QQ2-15-16"><span
|
||||
class="cmr-12">Examples</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">4.2 </span><a
|
||||
href="userhtmlsu7.html#x16-150004.2" id="QQ2-16-21"><span
|
||||
class="cmr-12">GPU example</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">5 </span><a
|
||||
href="userhtmlse5.html#x16-150005" id="QQ2-16-21"><span
|
||||
href="userhtmlse5.html#x17-160005" id="QQ2-17-23"><span
|
||||
class="cmr-12">User Interface</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.1 </span><a
|
||||
href="userhtmlsu7.html#x17-160005.1" id="QQ2-17-22"><span
|
||||
href="userhtmlsu8.html#x18-170005.1" id="QQ2-18-24"><span
|
||||
class="cmr-12">Method init</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.2 </span><a
|
||||
href="userhtmlsu8.html#x18-170005.2" id="QQ2-18-23"><span
|
||||
href="userhtmlsu9.html#x19-180005.2" id="QQ2-19-25"><span
|
||||
class="cmr-12">Method set</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.3 </span><a
|
||||
href="userhtmlsu9.html#x19-180005.3" id="QQ2-19-31"><span
|
||||
href="userhtmlsu10.html#x20-190005.3" id="QQ2-20-33"><span
|
||||
class="cmr-12">Method hierarchy</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.4 </span><a
|
||||
href="userhtmlsu10.html#x20-190005.4" id="QQ2-20-32"><span
|
||||
href="userhtmlsu11.html#x21-200005.4" id="QQ2-21-34"><span
|
||||
class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.5 </span><a
|
||||
href="userhtmlsu11.html#x21-200005.5" id="QQ2-21-33"><span
|
||||
href="userhtmlsu12.html#x22-210005.5" id="QQ2-22-35"><span
|
||||
class="cmr-12">Method build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.6 </span><a
|
||||
href="userhtmlsu12.html#x22-210005.6" id="QQ2-22-34"><span
|
||||
href="userhtmlsu13.html#x23-220005.6" id="QQ2-23-36"><span
|
||||
class="cmr-12">Method apply</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.7 </span><a
|
||||
href="userhtmlsu13.html#x23-220005.7" id="QQ2-23-35"><span
|
||||
href="userhtmlsu14.html#x24-230005.7" id="QQ2-24-37"><span
|
||||
class="cmr-12">Method free</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.8 </span><a
|
||||
href="userhtmlsu14.html#x24-230005.8" id="QQ2-24-36"><span
|
||||
href="userhtmlsu15.html#x25-240005.8" id="QQ2-25-38"><span
|
||||
class="cmr-12">Method descr</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.9 </span><a
|
||||
href="userhtmlsu15.html#x25-240005.9" id="QQ2-25-37"><span
|
||||
href="userhtmlsu16.html#x26-250005.9" id="QQ2-26-39"><span
|
||||
class="cmr-12">Auxiliary Methods</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">6 </span><a
|
||||
href="userhtmlse6.html#x26-300006" id="QQ2-26-43"><span
|
||||
href="userhtmlse6.html#x27-310006" id="QQ2-27-45"><span
|
||||
class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">7 </span><a
|
||||
href="userhtmlse7.html#x27-310007" id="QQ2-27-44"><span
|
||||
href="userhtmlse7.html#x28-320007" id="QQ2-28-46"><span
|
||||
class="cmr-12">Error Handling</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">A </span><a
|
||||
href="userhtmlse8.html#x28-32000A" id="QQ2-28-45"><span
|
||||
href="userhtmlse8.html#x29-33000A" id="QQ2-29-47"><span
|
||||
class="cmr-12">License</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">B </span><a
|
||||
href="userhtmlse9.html#x29-33000B" id="QQ2-29-46"><span
|
||||
href="userhtmlse9.html#x30-34000B" id="QQ2-30-48"><span
|
||||
class="cmr-12">Contributor Covenant Code of Conduct</span></a></span>
|
||||
<br /> <span class="likesectionToc" ><a
|
||||
href="userhtmlli5.html#x30-38000B" id="QQ2-30-51"><span
|
||||
href="userhtmlli5.html#x31-39000B" id="QQ2-31-53"><span
|
||||
class="cmr-12">References</span></a></span>
|
||||
</div>
|
||||
|
||||
|
||||
+20
-15
@@ -105,75 +105,80 @@ class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">4.1 </span><a
|
||||
href="userhtmlsu6.html#x15-140004.1" id="QQ2-15-16"><span
|
||||
class="cmr-12">Examples</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">4.2 </span><a
|
||||
href="userhtmlsu7.html#x16-150004.2" id="QQ2-16-21"><span
|
||||
class="cmr-12">GPU example</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">5 </span><a
|
||||
href="userhtmlse5.html#x16-150005" id="QQ2-16-21"><span
|
||||
href="userhtmlse5.html#x17-160005" id="QQ2-17-23"><span
|
||||
class="cmr-12">User Interface</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.1 </span><a
|
||||
href="userhtmlsu7.html#x17-160005.1" id="QQ2-17-22"><span
|
||||
href="userhtmlsu8.html#x18-170005.1" id="QQ2-18-24"><span
|
||||
class="cmr-12">Method init</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.2 </span><a
|
||||
href="userhtmlsu8.html#x18-170005.2" id="QQ2-18-23"><span
|
||||
href="userhtmlsu9.html#x19-180005.2" id="QQ2-19-25"><span
|
||||
class="cmr-12">Method set</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.3 </span><a
|
||||
href="userhtmlsu9.html#x19-180005.3" id="QQ2-19-31"><span
|
||||
href="userhtmlsu10.html#x20-190005.3" id="QQ2-20-33"><span
|
||||
class="cmr-12">Method hierarchy</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.4 </span><a
|
||||
href="userhtmlsu10.html#x20-190005.4" id="QQ2-20-32"><span
|
||||
href="userhtmlsu11.html#x21-200005.4" id="QQ2-21-34"><span
|
||||
class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.5 </span><a
|
||||
href="userhtmlsu11.html#x21-200005.5" id="QQ2-21-33"><span
|
||||
href="userhtmlsu12.html#x22-210005.5" id="QQ2-22-35"><span
|
||||
class="cmr-12">Method build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.6 </span><a
|
||||
href="userhtmlsu12.html#x22-210005.6" id="QQ2-22-34"><span
|
||||
href="userhtmlsu13.html#x23-220005.6" id="QQ2-23-36"><span
|
||||
class="cmr-12">Method apply</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.7 </span><a
|
||||
href="userhtmlsu13.html#x23-220005.7" id="QQ2-23-35"><span
|
||||
href="userhtmlsu14.html#x24-230005.7" id="QQ2-24-37"><span
|
||||
class="cmr-12">Method free</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.8 </span><a
|
||||
href="userhtmlsu14.html#x24-230005.8" id="QQ2-24-36"><span
|
||||
href="userhtmlsu15.html#x25-240005.8" id="QQ2-25-38"><span
|
||||
class="cmr-12">Method descr</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.9 </span><a
|
||||
href="userhtmlsu15.html#x25-240005.9" id="QQ2-25-37"><span
|
||||
href="userhtmlsu16.html#x26-250005.9" id="QQ2-26-39"><span
|
||||
class="cmr-12">Auxiliary Methods</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">6 </span><a
|
||||
href="userhtmlse6.html#x26-300006" id="QQ2-26-43"><span
|
||||
href="userhtmlse6.html#x27-310006" id="QQ2-27-45"><span
|
||||
class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">7 </span><a
|
||||
href="userhtmlse7.html#x27-310007" id="QQ2-27-44"><span
|
||||
href="userhtmlse7.html#x28-320007" id="QQ2-28-46"><span
|
||||
class="cmr-12">Error Handling</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">A </span><a
|
||||
href="userhtmlse8.html#x28-32000A" id="QQ2-28-45"><span
|
||||
href="userhtmlse8.html#x29-33000A" id="QQ2-29-47"><span
|
||||
class="cmr-12">License</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">B </span><a
|
||||
href="userhtmlse9.html#x29-33000B" id="QQ2-29-46"><span
|
||||
href="userhtmlse9.html#x30-34000B" id="QQ2-30-48"><span
|
||||
class="cmr-12">Contributor Covenant Code of Conduct</span></a></span>
|
||||
<br /> <span class="likesectionToc" ><a
|
||||
href="userhtmlli5.html#x30-38000B" id="QQ2-30-51"><span
|
||||
href="userhtmlli5.html#x31-39000B" id="QQ2-31-53"><span
|
||||
class="cmr-12">References</span></a></span>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -77,11 +77,11 @@ class="cmr-12">PSCToolkit (Parallel Sparse Computation Toolkit) software framewo
|
||||
class="cmr-12">of a software development project started in 2007, named MLD2P4, which originally</span>
|
||||
<span
|
||||
class="cmr-12">implemented a multilevel version of some domain decomposition preconditioners of</span>
|
||||
<span
|
||||
class="cmr-12">additive-Schwarz type, and was based on a parallel decoupled version of the well known</span>
|
||||
|
||||
|
||||
|
||||
<span
|
||||
class="cmr-12">additive-Schwarz type, and was based on a parallel decoupled version of the well known</span>
|
||||
<span
|
||||
class="cmr-12">smoothed aggregation method to generate the multilevel hierarchy of coarser</span>
|
||||
<span
|
||||
|
||||
+24
-19
@@ -77,104 +77,109 @@ class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">4.1 </span><a
|
||||
href="userhtmlsu6.html#x15-140004.1"><span
|
||||
class="cmr-12">Examples</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">4.2 </span><a
|
||||
href="userhtmlsu7.html#x16-150004.2"><span
|
||||
class="cmr-12">GPU example</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">5 </span><a
|
||||
href="userhtmlse5.html#x16-150005"><span
|
||||
href="userhtmlse5.html#x17-160005"><span
|
||||
class="cmr-12">User Interface</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.1 </span><a
|
||||
href="userhtmlsu7.html#x17-160005.1"><span
|
||||
href="userhtmlsu8.html#x18-170005.1"><span
|
||||
class="cmr-12">Method init</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.2 </span><a
|
||||
href="userhtmlsu8.html#x18-170005.2"><span
|
||||
href="userhtmlsu9.html#x19-180005.2"><span
|
||||
class="cmr-12">Method set</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.3 </span><a
|
||||
href="userhtmlsu9.html#x19-180005.3"><span
|
||||
href="userhtmlsu10.html#x20-190005.3"><span
|
||||
class="cmr-12">Method hierarchy</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.4 </span><a
|
||||
href="userhtmlsu10.html#x20-190005.4"><span
|
||||
href="userhtmlsu11.html#x21-200005.4"><span
|
||||
class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.5 </span><a
|
||||
href="userhtmlsu11.html#x21-200005.5"><span
|
||||
href="userhtmlsu12.html#x22-210005.5"><span
|
||||
class="cmr-12">Method build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.6 </span><a
|
||||
href="userhtmlsu12.html#x22-210005.6"><span
|
||||
href="userhtmlsu13.html#x23-220005.6"><span
|
||||
class="cmr-12">Method apply</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.7 </span><a
|
||||
href="userhtmlsu13.html#x23-220005.7"><span
|
||||
href="userhtmlsu14.html#x24-230005.7"><span
|
||||
class="cmr-12">Method free</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.8 </span><a
|
||||
href="userhtmlsu14.html#x24-230005.8"><span
|
||||
href="userhtmlsu15.html#x25-240005.8"><span
|
||||
class="cmr-12">Method descr</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.9 </span><a
|
||||
href="userhtmlsu15.html#x25-240005.9"><span
|
||||
href="userhtmlsu16.html#x26-250005.9"><span
|
||||
class="cmr-12">Auxiliary Methods</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.1 </span><a
|
||||
href="userhtmlsu15.html#x25-250005.9.1" id="QQ2-25-38"><span
|
||||
href="userhtmlsu16.html#x26-260005.9.1" id="QQ2-26-40"><span
|
||||
class="cmr-12">Method: dump</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.2 </span><a
|
||||
href="userhtmlsu15.html#x25-260005.9.2" id="QQ2-25-39"><span
|
||||
href="userhtmlsu16.html#x26-270005.9.2" id="QQ2-26-41"><span
|
||||
class="cmr-12">Method: clone</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.3 </span><a
|
||||
href="userhtmlsu15.html#x25-270005.9.3" id="QQ2-25-40"><span
|
||||
href="userhtmlsu16.html#x26-280005.9.3" id="QQ2-26-42"><span
|
||||
class="cmr-12">Method: sizeof</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.4 </span><a
|
||||
href="userhtmlsu15.html#x25-280005.9.4" id="QQ2-25-41"><span
|
||||
href="userhtmlsu16.html#x26-290005.9.4" id="QQ2-26-43"><span
|
||||
class="cmr-12">Method: allocate</span><span
|
||||
class="cmr-12">_wrk</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.5 </span><a
|
||||
href="userhtmlsu15.html#x25-290005.9.5" id="QQ2-25-42"><span
|
||||
href="userhtmlsu16.html#x26-300005.9.5" id="QQ2-26-44"><span
|
||||
class="cmr-12">Method: free</span><span
|
||||
class="cmr-12">_wrk</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">6 </span><a
|
||||
href="userhtmlse6.html#x26-300006"><span
|
||||
href="userhtmlse6.html#x27-310006"><span
|
||||
class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">7 </span><a
|
||||
href="userhtmlse7.html#x27-310007"><span
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">Error Handling</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">A </span><a
|
||||
href="userhtmlse8.html#x28-32000A"><span
|
||||
href="userhtmlse8.html#x29-33000A"><span
|
||||
class="cmr-12">License</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">B </span><a
|
||||
href="userhtmlse9.html#x29-33000B"><span
|
||||
href="userhtmlse9.html#x30-34000B"><span
|
||||
class="cmr-12">Contributor Covenant Code of Conduct</span></a></span>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ href="userhtml.html#userhtmlli5.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h3 class="likesectionHead"><a
|
||||
id="x30-38000B"></a><span
|
||||
id="x31-39000B"></a><span
|
||||
class="cmr-12">References</span></h3>
|
||||
<!--l. 2--><p class="noindent" >
|
||||
<div class="thebibliography">
|
||||
|
||||
@@ -299,7 +299,7 @@ class="cmr-12">smoothers and solvers for building new versions of the preconditi
|
||||
<span
|
||||
class="cmr-12">Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse6.html#x26-300006"><span
|
||||
href="userhtmlse6.html#x27-310006"><span
|
||||
class="cmr-12">6</span><!--tex4ht:ref: sec:adding --></a><span
|
||||
class="cmr-12">).</span>
|
||||
<!--l. 96--><p class="indent" > <span
|
||||
@@ -328,7 +328,7 @@ class="cmr-12">, where the Fortran codes of a few sample programs are also shown
|
||||
<span
|
||||
class="cmr-12">A reference guide for the user interface routines is provided in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse5.html#x16-150005"><span
|
||||
href="userhtmlse5.html#x17-160005"><span
|
||||
class="cmr-12">5</span><!--tex4ht:ref: sec:userinterface --></a><span
|
||||
class="cmr-12">.</span>
|
||||
<span
|
||||
@@ -336,13 +336,13 @@ class="cmr-12">Information on the extension of the package through the addition
|
||||
<span
|
||||
class="cmr-12">smoothers and solvers is reported in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse6.html#x26-300006"><span
|
||||
href="userhtmlse6.html#x27-310006"><span
|
||||
class="cmr-12">6</span><!--tex4ht:ref: sec:adding --></a><span
|
||||
class="cmr-12">. The error handling mechanism</span>
|
||||
<span
|
||||
class="cmr-12">used by the package is briefly described in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x27-310007"><span
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a><span
|
||||
class="cmr-12">. The copyright terms</span>
|
||||
<span
|
||||
@@ -350,7 +350,7 @@ class="cmr-12">concerning the distribution and modification of AMG4PSBLAS are re
|
||||
<span
|
||||
class="cmr-12">Appendix</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse8.html#x28-32000A"><span
|
||||
href="userhtmlse8.html#x29-33000A"><span
|
||||
class="cmr-12">A</span><!--tex4ht:ref: sec:license --></a><span
|
||||
class="cmr-12">.</span>
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ class="cmr-12">where contact points for further information can be also found.</
|
||||
<!--l. 12--><p class="indent" > <span
|
||||
class="cmr-12">The software is available under a modified BSD license, as specified in Appendix</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse8.html#x28-32000A"><span
|
||||
href="userhtmlse8.html#x29-33000A"><span
|
||||
class="cmr-12">A</span><!--tex4ht:ref: sec:license --></a><span
|
||||
class="cmr-12">;</span>
|
||||
<span
|
||||
|
||||
@@ -131,14 +131,14 @@ class="cmr-12">list of all the preconditioner parameters and their allowed and d
|
||||
<span
|
||||
class="cmr-12">is provided in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse5.html#x16-150005"><span
|
||||
href="userhtmlse5.html#x17-160005"><span
|
||||
class="cmr-12">5</span><!--tex4ht:ref: sec:userinterface --></a><span
|
||||
class="cmr-12">, Tables</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu8.html#x18-17009r2"><span
|
||||
href="userhtmlsu9.html#x19-18009r2"><span
|
||||
class="cmr-12">2</span><!--tex4ht:ref: tab:p_cycle --></a><span
|
||||
class="cmr-12">-</span><a
|
||||
href="userhtmlsu8.html#x18-17015r8"><span
|
||||
href="userhtmlsu9.html#x19-18015r8"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: tab:p_smoother_1 --></a><span
|
||||
class="cmr-12">.</span>
|
||||
</li>
|
||||
@@ -208,7 +208,7 @@ class="cmr-12">All the previous routines are available as methods of the precond
|
||||
<span
|
||||
class="cmr-12">detailed description of them is given in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse5.html#x16-150005"><span
|
||||
href="userhtmlse5.html#x17-160005"><span
|
||||
class="cmr-12">5</span><!--tex4ht:ref: sec:userinterface --></a><span
|
||||
class="cmr-12">. Examples showing the basic use of</span>
|
||||
<span
|
||||
@@ -382,8 +382,8 @@ smoothed aggregation as coarsening
|
||||
algorithm, and LU (plus triangular solve)
|
||||
as coarsest-level solver. See the default
|
||||
values in Tables <a
|
||||
href="userhtmlsu8.html#x18-17009r2">2<!--tex4ht:ref: tab:p_cycle --></a>-<a
|
||||
href="userhtmlsu8.html#x18-17015r8">8<!--tex4ht:ref: tab:p_smoother_1 --></a> for further details of
|
||||
href="userhtmlsu9.html#x19-18009r2">2<!--tex4ht:ref: tab:p_cycle --></a>-<a
|
||||
href="userhtmlsu9.html#x19-18015r8">8<!--tex4ht:ref: tab:p_smoother_1 --></a> for further details of
|
||||
the preconditioner. </td>
|
||||
</tr><tr
|
||||
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
|
||||
@@ -441,7 +441,13 @@ class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">4.1 </span><a
|
||||
href="userhtmlsu6.html#x15-140004.1"><span
|
||||
class="cmr-12">Examples</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">4.2 </span><a
|
||||
href="userhtmlsu7.html#x16-150004.2"><span
|
||||
class="cmr-12">GPU example</span></a></span>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+16
-16
@@ -29,7 +29,7 @@ class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h3 class="sectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5 </span></span> <a
|
||||
id="x16-150005"></a><span
|
||||
id="x17-160005"></a><span
|
||||
class="cmr-12">User Interface</span></h3>
|
||||
<!--l. 5--><p class="noindent" ><span
|
||||
class="cmr-12">The basic user interface of AMG4PBLAS consists of eight methods. The six methods</span>
|
||||
@@ -151,7 +151,7 @@ class="cmr-12">the precision of the sparse matrix and preconditioner data struct
|
||||
<span
|
||||
class="cmr-12">Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu8.html#x18-170005.2"><span
|
||||
href="userhtmlsu9.html#x19-180005.2"><span
|
||||
class="cmr-12">5.2</span><!--tex4ht:ref: sec:precset --></a><span
|
||||
class="cmr-12">).</span></li></ul>
|
||||
<!--l. 38--><p class="noindent" ><span
|
||||
@@ -163,80 +163,80 @@ class="cmr-12">A description of each method is given in the remainder of this se
|
||||
<span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.1 </span><a
|
||||
href="userhtmlsu7.html#x17-160005.1"><span
|
||||
href="userhtmlsu8.html#x18-170005.1"><span
|
||||
class="cmr-12">Method init</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.2 </span><a
|
||||
href="userhtmlsu8.html#x18-170005.2"><span
|
||||
href="userhtmlsu9.html#x19-180005.2"><span
|
||||
class="cmr-12">Method set</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.3 </span><a
|
||||
href="userhtmlsu9.html#x19-180005.3"><span
|
||||
href="userhtmlsu10.html#x20-190005.3"><span
|
||||
class="cmr-12">Method hierarchy</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.4 </span><a
|
||||
href="userhtmlsu10.html#x20-190005.4"><span
|
||||
href="userhtmlsu11.html#x21-200005.4"><span
|
||||
class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.5 </span><a
|
||||
href="userhtmlsu11.html#x21-200005.5"><span
|
||||
href="userhtmlsu12.html#x22-210005.5"><span
|
||||
class="cmr-12">Method build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.6 </span><a
|
||||
href="userhtmlsu12.html#x22-210005.6"><span
|
||||
href="userhtmlsu13.html#x23-220005.6"><span
|
||||
class="cmr-12">Method apply</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.7 </span><a
|
||||
href="userhtmlsu13.html#x23-220005.7"><span
|
||||
href="userhtmlsu14.html#x24-230005.7"><span
|
||||
class="cmr-12">Method free</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.8 </span><a
|
||||
href="userhtmlsu14.html#x24-230005.8"><span
|
||||
href="userhtmlsu15.html#x25-240005.8"><span
|
||||
class="cmr-12">Method descr</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.9 </span><a
|
||||
href="userhtmlsu15.html#x25-240005.9"><span
|
||||
href="userhtmlsu16.html#x26-250005.9"><span
|
||||
class="cmr-12">Auxiliary Methods</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.1 </span><a
|
||||
href="userhtmlsu15.html#x25-250005.9.1"><span
|
||||
href="userhtmlsu16.html#x26-260005.9.1"><span
|
||||
class="cmr-12">Method: dump</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.2 </span><a
|
||||
href="userhtmlsu15.html#x25-260005.9.2"><span
|
||||
href="userhtmlsu16.html#x26-270005.9.2"><span
|
||||
class="cmr-12">Method: clone</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.3 </span><a
|
||||
href="userhtmlsu15.html#x25-270005.9.3"><span
|
||||
href="userhtmlsu16.html#x26-280005.9.3"><span
|
||||
class="cmr-12">Method: sizeof</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.4 </span><a
|
||||
href="userhtmlsu15.html#x25-280005.9.4"><span
|
||||
href="userhtmlsu16.html#x26-290005.9.4"><span
|
||||
class="cmr-12">Method: allocate</span><span
|
||||
class="cmr-12">_wrk</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.5 </span><a
|
||||
href="userhtmlsu15.html#x25-290005.9.5"><span
|
||||
href="userhtmlsu16.html#x26-300005.9.5"><span
|
||||
class="cmr-12">Method: free</span><span
|
||||
class="cmr-12">_wrk</span></a></span>
|
||||
</div>
|
||||
|
||||
@@ -29,7 +29,7 @@ class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h3 class="sectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">6 </span></span> <a
|
||||
id="x26-300006"></a><span
|
||||
id="x27-310006"></a><span
|
||||
class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></h3>
|
||||
<!--l. 6--><p class="noindent" ><span
|
||||
class="cmr-12">Developers can add completely new smoother and/or solver classes derived from the</span>
|
||||
@@ -37,7 +37,7 @@ class="cmr-12">Developers can add completely new smoother and/or solver classes
|
||||
class="cmr-12">base objects in the library (see Remark</span><span
|
||||
class="cmr-12"> 2 in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu8.html#x18-170005.2"><span
|
||||
href="userhtmlsu9.html#x19-180005.2"><span
|
||||
class="cmr-12">5.2</span><!--tex4ht:ref: sec:precset --></a><span
|
||||
class="cmr-12">), without recompiling the</span>
|
||||
<span
|
||||
@@ -202,7 +202,7 @@ class="cmr-12">The user-defined new solver to be employed in the preconditioner.
|
||||
<!--l. 66--><p class="noindent" ><span
|
||||
class="cmr-12">The other arguments are defined in the way described in Sec.</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu8.html#x18-170005.2"><span
|
||||
href="userhtmlsu9.html#x19-180005.2"><span
|
||||
class="cmr-12">5.2</span><!--tex4ht:ref: sec:precset --></a><span
|
||||
class="cmr-12">. As an example, in the</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
@@ -215,7 +215,11 @@ class="cmr-12">pass it as follows:</span>
|
||||
|
||||
|
||||
|
||||
<<<<<<< HEAD
|
||||
<pre class="verbatim" id="verbatim-10">
|
||||
=======
|
||||
<pre class="verbatim" id="verbatim-11">
|
||||
>>>>>>> development
|
||||
  ! sparse matrix and preconditioner
|
||||
  type(psb_dspmat_type) :: a
|
||||
  type(amg_dprec_type)  :: prec
|
||||
|
||||
@@ -29,7 +29,7 @@ class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h3 class="sectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">7 </span></span> <a
|
||||
id="x27-310007"></a><span
|
||||
id="x28-320007"></a><span
|
||||
class="cmr-12">Error Handling</span></h3>
|
||||
<!--l. 5--><p class="noindent" ><span
|
||||
class="cmr-12">The error handling in AMG4PSBLAS is based on the PSBLAS error handling. Error</span>
|
||||
|
||||
@@ -29,14 +29,18 @@ class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h3 class="sectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">A </span></span> <a
|
||||
id="x28-32000A"></a><span
|
||||
id="x29-33000A"></a><span
|
||||
class="cmr-12">License</span></h3>
|
||||
<!--l. 6--><p class="noindent" ><span
|
||||
class="cmr-12">AMG4PSBLAS is freely distributable under the following copyright terms:</span>
|
||||
|
||||
|
||||
|
||||
<<<<<<< HEAD
|
||||
<pre class="verbatim" id="verbatim-11">
|
||||
=======
|
||||
<pre class="verbatim" id="verbatim-12">
|
||||
>>>>>>> development
|
||||
                           AMG4PSBLAS  version 1.0
|
||||
              Algebraic MultiGrid Preconditioners Package
|
||||
             based on PSBLAS (Parallel Sparse BLAS version 3.7)
|
||||
@@ -78,7 +82,11 @@ class="cmr-12">abide by its terms:</span>
|
||||
|
||||
|
||||
|
||||
<<<<<<< HEAD
|
||||
<pre class="verbatim" id="verbatim-12">
|
||||
=======
|
||||
<pre class="verbatim" id="verbatim-13">
|
||||
>>>>>>> development
|
||||
                           MLD2P4  version 2.2
|
||||
  MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||
             based on PSBLAS (Parallel Sparse BLAS version 3.5)
|
||||
@@ -125,6 +133,7 @@ class="cmr-12">. The relevant license is reproduced here:</span>
|
||||
|
||||
|
||||
|
||||
<<<<<<< HEAD
|
||||
<pre class="verbatim" id="verbatim-13">
|
||||
// ***********************************************************************
|
||||
//
|
||||
@@ -134,6 +143,17 @@ class="cmr-12">. The relevant license is reproduced here:</span>
|
||||
//
|
||||
// ***********************************************************************
|
||||
//
|
||||
=======
|
||||
<pre class="verbatim" id="verbatim-14">
|
||||
// ***********************************************************************
|
||||
//
|
||||
//        MatchboxP: A C++ library for approximate weighted matching
|
||||
//               Mahantesh Halappanavar (hala@pnnl.gov)
|
||||
//               Pacific Northwest National Laboratory
|
||||
//
|
||||
// ***********************************************************************
|
||||
//
|
||||
>>>>>>> development
|
||||
//       Copyright (2021) Battelle Memorial Institute
|
||||
//                      All rights reserved.
|
||||
//
|
||||
|
||||
@@ -29,12 +29,12 @@ class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h3 class="sectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">B </span></span> <a
|
||||
id="x29-33000B"></a><span
|
||||
id="x30-34000B"></a><span
|
||||
class="cmr-12">Contributor Covenant Code of Conduct</span></h3>
|
||||
<div class="paragraphTOCS">
|
||||
</div>
|
||||
<!--l. 5--><p class="noindent" ><span class="paragraphHead"><a
|
||||
id="x29-34000B"></a><span
|
||||
id="x30-35000B"></a><span
|
||||
class="cmbx-12">Our Pledge</span></span>
|
||||
<span
|
||||
class="cmr-12">We as members, contributors, and leaders pledge to make participation in</span>
|
||||
@@ -100,7 +100,7 @@ class="cmr-12">Other conduct which could reasonably be considered inappro
|
||||
<span
|
||||
class="cmr-12">professional setting</span></li></ul>
|
||||
<!--l. 38--><p class="noindent" ><span class="paragraphHead"><a
|
||||
id="x29-35000B"></a><span
|
||||
id="x30-36000B"></a><span
|
||||
class="cmbx-12">Enforcement Responsibilities</span></span>
|
||||
<span
|
||||
class="cmr-12">Community leaders are responsible for clarifying and enforcing our standards of</span>
|
||||
@@ -138,7 +138,7 @@ class="cmr-12">leaders are obligated to respect the privacy and security of the
|
||||
<span
|
||||
class="cmr-12">incident.</span>
|
||||
<!--l. 61--><p class="noindent" ><span class="paragraphHead"><a
|
||||
id="x29-36000B"></a><span
|
||||
id="x30-37000B"></a><span
|
||||
class="cmbx-12">Enforcement Guidelines</span></span>
|
||||
<span
|
||||
class="cmr-12">Community leaders will follow these Community Impact Guidelines in</span>
|
||||
@@ -148,7 +148,7 @@ class="cmr-12">determining the consequences for any action they deem in violatio
|
||||
class="cmr-12">Conduct:</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x29-36002x1"><span
|
||||
class="enumerate" id="x30-37002x1"><span
|
||||
class="cmr-12">Correction</span>
|
||||
<!--l. 67--><p class="noindent" ><span
|
||||
class="cmti-12">Community Impact: </span><span
|
||||
@@ -167,7 +167,7 @@ class="cmr-12">clarity around the nature of the violation and an explanation of
|
||||
class="cmr-12">behavior was inappropriate. A public apology may be requested.</span>
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x29-36004x2"><span
|
||||
class="enumerate" id="x30-37004x2"><span
|
||||
class="cmr-12">Warning</span>
|
||||
<!--l. 75--><p class="noindent" ><span
|
||||
class="cmti-12">Community Impact: </span><span
|
||||
@@ -187,7 +187,7 @@ class="cmr-12">channels like social media. Violating these terms may lead to a t
|
||||
class="cmr-12">or permanent ban.</span>
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x29-36006x3"><span
|
||||
class="enumerate" id="x30-37006x3"><span
|
||||
class="cmr-12">Temporary Ban</span>
|
||||
<!--l. 86--><p class="noindent" ><span
|
||||
class="cmti-12">Community Impact: </span><span
|
||||
@@ -207,7 +207,7 @@ class="cmr-12">interaction with those enforcing the Code of Conduct, is allowed
|
||||
class="cmr-12">period. Violating these terms may lead to a permanent ban.</span>
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x29-36008x4"><span
|
||||
class="enumerate" id="x30-37008x4"><span
|
||||
class="cmr-12">Permanent Ban</span>
|
||||
<!--l. 96--><p class="noindent" ><span
|
||||
class="cmti-12">Community Impact: </span><span
|
||||
@@ -222,7 +222,7 @@ class="cmr-12">A permanent ban from any sort of public interaction within</span>
|
||||
<span
|
||||
class="cmr-12">the community.</span></li></ol>
|
||||
<!--l. 104--><p class="noindent" ><span class="paragraphHead"><a
|
||||
id="x29-37000B"></a><span
|
||||
id="x30-38000B"></a><span
|
||||
class="cmbx-12">Attribution</span></span>
|
||||
<span
|
||||
class="cmr-12">This Code of Conduct is adapted from the Contributor Covenant, version 2.0,</span>
|
||||
|
||||
@@ -124,10 +124,39 @@ class="cmr-12">Please note that the four previous libraries must have Fortran in
|
||||
class="cmr-12">AMG4PSBLAS; usually this means that they should all be built with the same</span>
|
||||
<span
|
||||
class="cmr-12">compiler being used for AMG4PSBLAS.</span>
|
||||
<!--l. 64--><p class="indent" > <span
|
||||
class="cmr-12">If you want to use the PSBLAS support for NVIDIA GPUs, you will also</span>
|
||||
<span
|
||||
class="cmr-12">need:</span>
|
||||
<dl class="description"><dt class="description">
|
||||
<span
|
||||
class="cmbx-12">PSBLAS-EXT</span> </dt><dd
|
||||
class="description"><span
|
||||
class="cmr-12">Parallel Sparse BLAS (PSBLAS) Extensions, available from</span>
|
||||
<a
|
||||
href="https://psctoolkit.github.io/products/psblasext/" ><span
|
||||
class="cmr-12">psctoolkit.github.io/products/psblasext/</span></a><span
|
||||
class="cmr-12">; version 1.3.0 (or later).</span>
|
||||
</dd><dt class="description">
|
||||
<span
|
||||
class="cmbx-12">SPGPU</span> </dt><dd
|
||||
class="description"><span
|
||||
class="cmr-12">Sparse CUDA kernels for NVIDIA GPUs; available from GitHub, see</span>
|
||||
<span
|
||||
class="cmr-12">also </span><a
|
||||
href="https://psctoolkit.github.io/products/psblasext/" ><span
|
||||
class="cmr-12">psctoolkit.github.io/products/psblasext/</span></a><span
|
||||
class="cmr-12">.</span></dd></dl>
|
||||
<!--l. 74--><p class="noindent" ><span
|
||||
class="cmr-12">See also Sec</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu7.html#x16-150004.2"><span
|
||||
class="cmr-12">4.2</span><!--tex4ht:ref: sec:gpu-example --></a><span
|
||||
class="cmr-12">.</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 64--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 76--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu2.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -138,6 +167,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse3.html#userhtmlsu1.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 64--><p class="indent" > <a
|
||||
<!--l. 76--><p class="indent" > <a
|
||||
id="tailuserhtmlsu1.html"></a>
|
||||
</body></html>
|
||||
|
||||
+67
-35
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html >
|
||||
<head><title>Method smoothers_build</title>
|
||||
<head><title>Method hierarchy_build</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 704--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 674--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu11.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -28,57 +28,44 @@ href="userhtmlse5.html#userhtmlsu10.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h4 class="subsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.4 </span></span> <a
|
||||
id="x20-190005.4"></a><span
|
||||
class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">5.3 </span></span> <a
|
||||
id="x20-190005.3"></a><span
|
||||
class="cmr-12">Method hierarchy</span><span
|
||||
class="cmr-12">_build</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 707--><p class="noindent" >
|
||||
<!--l. 708--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 676--><p class="noindent" >
|
||||
<!--l. 677--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">smoothers_build</span><span
|
||||
class="cmtt-12">hierarchy_build</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">desc_a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12">amold</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">vmold</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">imold</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
class="cmtt-12">)</span><br />
|
||||
</div>
|
||||
<!--l. 711--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the smoothers and the coarsest-level solvers for the multilevel</span>
|
||||
<!--l. 680--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the hierarchy of matrices and restriction/prolongation operators for</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmr-12">the multilevel preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmr-12">, according to the requirements made by the user through the methods</span>
|
||||
<span class="lstinline"></span><span
|
||||
class="cmr-12">, according to the requirements made by the user</span>
|
||||
<span
|
||||
class="cmr-12">through the methods </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">init</span> <span
|
||||
class="cmr-12">and </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">set</span><span
|
||||
class="cmr-12">, and based on the aggregation hierarchy produced by a previous call to</span>
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">hierarchy_build</span> <span
|
||||
class="cmr-12">(see Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu9.html#x19-180005.3"><span
|
||||
class="cmr-12">5.3</span><!--tex4ht:ref: sec:hier_bld --></a><span
|
||||
class="cmr-12">).</span>
|
||||
<!--l. 718--><p class="noindent" ><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 685--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-12" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-11" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
<<<<<<< HEAD
|
||||
><colgroup id="TBL-12-1g"><col
|
||||
id="TBL-12-1"><col
|
||||
id="TBL-12-2"></colgroup><tr
|
||||
@@ -86,6 +73,15 @@ id="TBL-12-2"></colgroup><tr
|
||||
class="td11"><!--l. 721--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-1-2"
|
||||
class="td11"><!--l. 721--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
><colgroup id="TBL-11-1g"><col
|
||||
id="TBL-11-1"><col
|
||||
id="TBL-11-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:normal; text-align:left;" id="TBL-11-1-1"
|
||||
class="td11"><!--l. 688--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-1-2"
|
||||
class="td11"><!--l. 688--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
@@ -99,9 +95,15 @@ class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:normal; text-align:left;" id="TBL-12-2-1"
|
||||
class="td11"><!--l. 722--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-2-2"
|
||||
class="td11"><!--l. 722--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:normal; text-align:left;" id="TBL-11-2-1"
|
||||
class="td11"><!--l. 689--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-2-2"
|
||||
class="td11"><!--l. 689--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
|
||||
<span
|
||||
class="cmr-12">to be preconditioned. Note that </span><span
|
||||
@@ -120,10 +122,17 @@ class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:normal; text-align:left;" id="TBL-12-3-1"
|
||||
class="td11"><!--l. 726--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-12-3-2"
|
||||
class="td11"><!--l. 726--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-11-3-"><td style="white-space:normal; text-align:left;" id="TBL-11-3-1"
|
||||
class="td11"><!--l. 694--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-11-3-2"
|
||||
class="td11"><!--l. 694--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_desc_type</span><span
|
||||
@@ -135,9 +144,15 @@ class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:normal; text-align:left;" id="TBL-12-4-1"
|
||||
class="td11"><!--l. 727--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-4-2"
|
||||
class="td11"><!--l. 727--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:normal; text-align:left;" id="TBL-11-4-1"
|
||||
class="td11"><!--l. 695--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-4-2"
|
||||
class="td11"><!--l. 695--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmr-12">. See the PSBLAS User’s Guide</span>
|
||||
@@ -149,10 +164,17 @@ class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:normal; text-align:left;" id="TBL-12-5-1"
|
||||
class="td11"><!--l. 729--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-5-2"
|
||||
class="td11"><!--l. 729--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:normal; text-align:left;" id="TBL-11-5-1"
|
||||
class="td11"><!--l. 697--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-5-2"
|
||||
class="td11"><!--l. 697--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -162,15 +184,22 @@ class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:normal; text-align:left;" id="TBL-12-6-1"
|
||||
class="td11"><!--l. 730--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-6-2"
|
||||
class="td11"><!--l. 730--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:normal; text-align:left;" id="TBL-11-6-1"
|
||||
class="td11"><!--l. 698--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-6-2"
|
||||
class="td11"><!--l. 698--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x27-310007"><span
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:normal; text-align:left;" id="TBL-12-7-1"
|
||||
class="td11"><!--l. 731--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-7-2"
|
||||
@@ -255,6 +284,9 @@ class="cmr-12">The desired dynamic type for internal integer vector components;<
|
||||
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-13-"><td style="white-space:normal; text-align:left;" id="TBL-12-13-1"
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-11-7-"><td style="white-space:normal; text-align:left;" id="TBL-11-7-1"
|
||||
>>>>>>> development
|
||||
class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
@@ -262,7 +294,7 @@ class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
|
||||
<!--l. 746--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 704--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu11.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -279,6 +311,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu10.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 746--><p class="indent" > <a
|
||||
<!--l. 704--><p class="indent" > <a
|
||||
id="tailuserhtmlsu10.html"></a>
|
||||
</body></html>
|
||||
|
||||
+115
-40
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html >
|
||||
<head><title>Method build</title>
|
||||
<head><title>Method smoothers_build</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 746--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 704--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu12.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -28,23 +28,26 @@ href="userhtmlse5.html#userhtmlsu11.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h4 class="subsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.5 </span></span> <a
|
||||
id="x21-200005.5"></a><span
|
||||
class="cmr-12">Method build</span></h4>
|
||||
class="cmr-12">5.4 </span></span> <a
|
||||
id="x21-200005.4"></a><span
|
||||
class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">_build</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 748--><p class="noindent" >
|
||||
<!--l. 749--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 707--><p class="noindent" >
|
||||
<!--l. 708--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">build</span><span
|
||||
class="cmtt-12">smoothers_build</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">desc_a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12">amold</span><span
|
||||
@@ -54,39 +57,29 @@ class="cmtt-12">,</span><span
|
||||
class="cmtt-12">imold</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 752--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span> <span
|
||||
class="cmr-12">according to the requirements made by the</span>
|
||||
<!--l. 711--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the smoothers and the coarsest-level solvers for the multilevel</span>
|
||||
<span
|
||||
class="cmr-12">user through the methods </span><span class="lstinline"></span><span
|
||||
class="cmr-12">preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmr-12">, according to the requirements made by the user through the methods</span>
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">init</span> <span
|
||||
class="cmr-12">and </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">set</span> <span
|
||||
class="cmr-12">(see Sections</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu9.html#x19-180005.3"><span
|
||||
class="cmr-12">5.3</span><!--tex4ht:ref: sec:hier_bld --></a> <span
|
||||
class="cmr-12">and</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu10.html#x20-190005.4"><span
|
||||
class="cmr-12">5.4</span><!--tex4ht:ref: sec:smooth_bld --></a> <span
|
||||
class="cmr-12">for multilevel</span>
|
||||
<span
|
||||
class="cmr-12">preconditioners). It is mostly provided for backward compatibility; indeed, it is</span>
|
||||
<span
|
||||
class="cmr-12">internally implemented by invoking the two previous methods </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">hierarchy_build</span> <span
|
||||
class="cmr-12">and</span>
|
||||
class="cmtt-12">set</span><span
|
||||
class="cmr-12">, and based on the aggregation hierarchy produced by a previous call to</span>
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">smoothers_build</span><span
|
||||
class="cmr-12">, whose nomenclature would however be somewhat unnatural when</span>
|
||||
<span
|
||||
class="cmr-12">dealing with simple one-level preconditioners.</span>
|
||||
<!--l. 762--><p class="noindent" ><span
|
||||
class="cmtt-12">hierarchy_build</span> <span
|
||||
class="cmr-12">(see Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu10.html#x20-190005.3"><span
|
||||
class="cmr-12">5.3</span><!--tex4ht:ref: sec:hier_bld --></a><span
|
||||
class="cmr-12">).</span>
|
||||
<!--l. 718--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-13" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-12" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
<<<<<<< HEAD
|
||||
><colgroup id="TBL-13-1g"><col
|
||||
id="TBL-13-1"><col
|
||||
id="TBL-13-2"></colgroup><tr
|
||||
@@ -94,6 +87,15 @@ id="TBL-13-2"></colgroup><tr
|
||||
class="td11"><!--l. 765--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-1-2"
|
||||
class="td11"><!--l. 765--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
><colgroup id="TBL-12-1g"><col
|
||||
id="TBL-12-1"><col
|
||||
id="TBL-12-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:normal; text-align:left;" id="TBL-12-1-1"
|
||||
class="td11"><!--l. 721--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-1-2"
|
||||
class="td11"><!--l. 721--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
@@ -107,9 +109,15 @@ class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:normal; text-align:left;" id="TBL-13-2-1"
|
||||
class="td11"><!--l. 766--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-2-2"
|
||||
class="td11"><!--l. 766--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:normal; text-align:left;" id="TBL-12-2-1"
|
||||
class="td11"><!--l. 722--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-2-2"
|
||||
class="td11"><!--l. 722--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
|
||||
<span
|
||||
class="cmr-12">to be preconditioned. Note that </span><span
|
||||
@@ -128,10 +136,17 @@ class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:normal; text-align:left;" id="TBL-13-3-1"
|
||||
class="td11"><!--l. 770--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-13-3-2"
|
||||
class="td11"><!--l. 770--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:normal; text-align:left;" id="TBL-12-3-1"
|
||||
class="td11"><!--l. 726--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-12-3-2"
|
||||
class="td11"><!--l. 726--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_desc_type</span><span
|
||||
@@ -143,9 +158,15 @@ class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:normal; text-align:left;" id="TBL-13-4-1"
|
||||
class="td11"><!--l. 771--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-4-2"
|
||||
class="td11"><!--l. 771--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:normal; text-align:left;" id="TBL-12-4-1"
|
||||
class="td11"><!--l. 727--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-4-2"
|
||||
class="td11"><!--l. 727--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmr-12">. See the PSBLAS User’s Guide</span>
|
||||
@@ -157,10 +178,17 @@ class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:normal; text-align:left;" id="TBL-13-5-1"
|
||||
class="td11"><!--l. 773--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-5-2"
|
||||
class="td11"><!--l. 773--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:normal; text-align:left;" id="TBL-12-5-1"
|
||||
class="td11"><!--l. 729--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-5-2"
|
||||
class="td11"><!--l. 729--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -170,19 +198,32 @@ class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:normal; text-align:left;" id="TBL-13-6-1"
|
||||
class="td11"><!--l. 774--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-6-2"
|
||||
class="td11"><!--l. 774--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:normal; text-align:left;" id="TBL-12-6-1"
|
||||
class="td11"><!--l. 730--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-6-2"
|
||||
class="td11"><!--l. 730--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x27-310007"><span
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:normal; text-align:left;" id="TBL-13-7-1"
|
||||
class="td11"><!--l. 775--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-7-2"
|
||||
class="td11"><!--l. 775--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:normal; text-align:left;" id="TBL-12-7-1"
|
||||
class="td11"><!--l. 731--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-7-2"
|
||||
class="td11"><!--l. 731--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
@@ -198,9 +239,15 @@ class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:normal; text-align:left;" id="TBL-13-8-1"
|
||||
class="td11"><!--l. 776--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-8-2"
|
||||
class="td11"><!--l. 776--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-8-"><td style="white-space:normal; text-align:left;" id="TBL-12-8-1"
|
||||
class="td11"><!--l. 732--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-8-2"
|
||||
class="td11"><!--l. 732--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
|
||||
@@ -212,10 +259,17 @@ class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-9-"><td style="white-space:normal; text-align:left;" id="TBL-13-9-1"
|
||||
class="td11"><!--l. 780--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-9-2"
|
||||
class="td11"><!--l. 780--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-9-"><td style="white-space:normal; text-align:left;" id="TBL-12-9-1"
|
||||
class="td11"><!--l. 736--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-9-2"
|
||||
class="td11"><!--l. 736--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
@@ -231,17 +285,30 @@ class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-10-"><td style="white-space:normal; text-align:left;" id="TBL-13-10-1"
|
||||
class="td11"><!--l. 781--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-10-2"
|
||||
class="td11"><!--l. 781--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-10-"><td style="white-space:normal; text-align:left;" id="TBL-12-10-1"
|
||||
class="td11"><!--l. 737--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-10-2"
|
||||
class="td11"><!--l. 737--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:normal; text-align:left;" id="TBL-13-11-1"
|
||||
class="td11"><!--l. 783--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">imold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-11-2"
|
||||
class="td11"><!--l. 783--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-11-"><td style="white-space:normal; text-align:left;" id="TBL-12-11-1"
|
||||
class="td11"><!--l. 739--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">imold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-11-2"
|
||||
class="td11"><!--l. 739--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_i_base_vect_type</span><span
|
||||
@@ -255,24 +322,32 @@ class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:normal; text-align:left;" id="TBL-13-12-1"
|
||||
class="td11"><!--l. 784--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-12-2"
|
||||
class="td11"><!--l. 784--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-12-"><td style="white-space:normal; text-align:left;" id="TBL-12-12-1"
|
||||
class="td11"><!--l. 740--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-12-2"
|
||||
class="td11"><!--l. 740--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
|
||||
<span
|
||||
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:normal; text-align:left;" id="TBL-13-13-1"
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-12-13-"><td style="white-space:normal; text-align:left;" id="TBL-12-13-1"
|
||||
>>>>>>> development
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 789--><p class="noindent" ><span
|
||||
class="cmr-12">The method can be used to build multilevel preconditioners too.</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--l. 794--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 746--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu12.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -289,6 +364,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu11.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 794--><p class="indent" > <a
|
||||
<!--l. 746--><p class="indent" > <a
|
||||
id="tailuserhtmlsu11.html"></a>
|
||||
</body></html>
|
||||
|
||||
+203
-122
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html >
|
||||
<head><title>Method apply</title>
|
||||
<head><title>Method build</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 794--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 746--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu13.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -28,71 +28,66 @@ href="userhtmlse5.html#userhtmlsu12.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h4 class="subsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.6 </span></span> <a
|
||||
id="x22-210005.6"></a><span
|
||||
class="cmr-12">Method apply</span></h4>
|
||||
class="cmr-12">5.5 </span></span> <a
|
||||
id="x22-210005.5"></a><span
|
||||
class="cmr-12">Method build</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 796--><p class="noindent" >
|
||||
<!--l. 797--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 748--><p class="noindent" >
|
||||
<!--l. 749--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">apply</span><span
|
||||
class="cmtt-12">build</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">x</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">y</span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">desc_a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12">trans</span><span
|
||||
class="cmtt-12">amold</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">work</span><span
|
||||
class="cmtt-12">vmold</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">imold</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 800--><p class="noindent" ><span
|
||||
class="cmr-12">This method computes </span><span
|
||||
class="cmmi-12">y </span><span
|
||||
class="cmr-12">= </span><span
|
||||
class="cmmi-12">op</span><span
|
||||
class="cmr-12">(</span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">) </span><span
|
||||
class="cmmi-12">x</span><span
|
||||
class="cmr-12">, where </span><span
|
||||
class="cmmi-12">B </span><span
|
||||
class="cmr-12">is a previously built preconditioner,</span>
|
||||
<!--l. 752--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span> <span
|
||||
class="cmr-12">according to the requirements made by the</span>
|
||||
<span
|
||||
class="cmr-12">stored into </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmr-12">, and </span><span
|
||||
class="cmmi-12">op </span><span
|
||||
class="cmr-12">denotes the preconditioner itself or its transpose, according to the</span>
|
||||
class="cmr-12">user through the methods </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">init</span> <span
|
||||
class="cmr-12">and </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">set</span> <span
|
||||
class="cmr-12">(see Sections</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu10.html#x20-190005.3"><span
|
||||
class="cmr-12">5.3</span><!--tex4ht:ref: sec:hier_bld --></a> <span
|
||||
class="cmr-12">and</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu11.html#x21-200005.4"><span
|
||||
class="cmr-12">5.4</span><!--tex4ht:ref: sec:smooth_bld --></a> <span
|
||||
class="cmr-12">for multilevel</span>
|
||||
<span
|
||||
class="cmr-12">value of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span><span
|
||||
class="cmr-12">. Note that, when AMG4PSBLAS is used with a Krylov solver from</span>
|
||||
class="cmr-12">preconditioners). It is mostly provided for backward compatibility; indeed, it is</span>
|
||||
<span
|
||||
class="cmr-12">PSBLAS, </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">apply</span> <span
|
||||
class="cmr-12">is called within the PSBLAS method </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">psb_krylov</span> <span
|
||||
class="cmr-12">and hence it is</span>
|
||||
class="cmr-12">internally implemented by invoking the two previous methods </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">hierarchy_build</span> <span
|
||||
class="cmr-12">and</span>
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">smoothers_build</span><span
|
||||
class="cmr-12">, whose nomenclature would however be somewhat unnatural when</span>
|
||||
<span
|
||||
class="cmr-12">completely transparent to the user.</span>
|
||||
<!--l. 809--><p class="noindent" ><span
|
||||
class="cmr-12">dealing with simple one-level preconditioners.</span>
|
||||
<!--l. 762--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-14" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-13" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
<<<<<<< HEAD
|
||||
><colgroup id="TBL-14-1g"><col
|
||||
id="TBL-14-1"><col
|
||||
id="TBL-14-2"></colgroup><tr
|
||||
@@ -130,11 +125,29 @@ class="td11"><!--l. 816--><p class="noindent" ><span class="lstinline"></span><s
|
||||
class="cmtt-12">y</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-3-2"
|
||||
class="td11"><!--l. 816--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="lstinline"></span><span
|
||||
=======
|
||||
><colgroup id="TBL-13-1g"><col
|
||||
id="TBL-13-1"><col
|
||||
id="TBL-13-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:normal; text-align:left;" id="TBL-13-1-1"
|
||||
class="td11"><!--l. 765--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-1-2"
|
||||
class="td11"><!--l. 765--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">kind_parameter</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">spmat_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">, dimension(:), intent(out)—.</span> </td>
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:normal; text-align:left;" id="TBL-14-4-1"
|
||||
class="td11"><!--l. 817--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-4-2"
|
||||
class="td11"><!--l. 817--><p class="noindent" ><span
|
||||
@@ -145,19 +158,40 @@ class="cmti-12">type </span><span
|
||||
class="cmr-12">and </span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:normal; text-align:left;" id="TBL-13-2-1"
|
||||
class="td11"><!--l. 766--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-2-2"
|
||||
class="td11"><!--l. 766--><p class="noindent" ><span
|
||||
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
|
||||
>>>>>>> development
|
||||
<span
|
||||
class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
|
||||
class="cmr-12">to be preconditioned. Note that </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">must be chosen according to the</span>
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">, single/double</span>
|
||||
class="cmr-12">, single/double precision version of AMG4PSBLAS</span>
|
||||
<span
|
||||
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
|
||||
class="cmr-12">under use. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli5.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:normal; text-align:left;" id="TBL-14-5-1"
|
||||
class="td11"><!--l. 820--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-14-5-2"
|
||||
class="td11"><!--l. 820--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:normal; text-align:left;" id="TBL-13-3-1"
|
||||
class="td11"><!--l. 770--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-13-3-2"
|
||||
class="td11"><!--l. 770--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_desc_type</span><span
|
||||
@@ -169,17 +203,38 @@ class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:normal; text-align:left;" id="TBL-14-6-1"
|
||||
class="td11"><!--l. 821--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-6-2"
|
||||
class="td11"><!--l. 821--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor associated to the matrix to be</span>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:normal; text-align:left;" id="TBL-13-4-1"
|
||||
class="td11"><!--l. 771--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-4-2"
|
||||
class="td11"><!--l. 771--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmr-12">. See the PSBLAS User’s Guide</span>
|
||||
>>>>>>> development
|
||||
<span
|
||||
class="cmr-12">preconditioned.</span> </td>
|
||||
class="cmr-12">for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli5.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:normal; text-align:left;" id="TBL-14-7-1"
|
||||
class="td11"><!--l. 823--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-7-2"
|
||||
class="td11"><!--l. 823--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:normal; text-align:left;" id="TBL-13-5-1"
|
||||
class="td11"><!--l. 773--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-5-2"
|
||||
class="td11"><!--l. 773--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -189,32 +244,49 @@ class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:normal; text-align:left;" id="TBL-14-8-1"
|
||||
class="td11"><!--l. 824--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-8-2"
|
||||
class="td11"><!--l. 824--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:normal; text-align:left;" id="TBL-13-6-1"
|
||||
class="td11"><!--l. 774--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-6-2"
|
||||
class="td11"><!--l. 774--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x27-310007"><span
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:normal; text-align:left;" id="TBL-14-9-1"
|
||||
class="td11"><!--l. 825--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-9-2"
|
||||
class="td11"><!--l. 825--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">character</span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:normal; text-align:left;" id="TBL-13-7-1"
|
||||
class="td11"><!--l. 775--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-7-2"
|
||||
class="td11"><!--l. 775--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">len</span><span
|
||||
class="cmtt-12">=1),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_sparse_mat</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">).</span> </td>
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:normal; text-align:left;" id="TBL-14-10-1"
|
||||
class="td11"><!--l. 826--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-10-2"
|
||||
class="td11"><!--l. 826--><p class="noindent" ><span
|
||||
@@ -248,48 +320,23 @@ class="cmtt-12">,</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">t</span><span
|
||||
class="cmtt-12">’</span>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:normal; text-align:left;" id="TBL-13-8-1"
|
||||
class="td11"><!--l. 776--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-8-2"
|
||||
class="td11"><!--l. 776--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
>>>>>>> development
|
||||
<span
|
||||
class="cmr-12">then </span><span
|
||||
class="cmmi-12">op</span><span
|
||||
class="cmr-12">(</span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">) = </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmmi-8">T</span> </sup> <span
|
||||
class="cmr-12">(transpose of </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">); if </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> <span
|
||||
class="cmr-12">= </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">C</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">c</span><span
|
||||
class="cmtt-12">’</span> <span
|
||||
class="cmr-12">then</span>
|
||||
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
|
||||
<span
|
||||
class="cmmi-12">op</span><span
|
||||
class="cmr-12">(</span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">) = </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmmi-8">C</span></sup> <span
|
||||
class="cmr-12">(conjugate transpose of </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">).</span> </td>
|
||||
class="cmr-12">processes. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli5.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:normal; text-align:left;" id="TBL-14-11-1"
|
||||
class="td11"><!--l. 830--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">work</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-11-2"
|
||||
@@ -307,39 +354,73 @@ class="cmr-12">Workspace. Its size should be at least </span><span class=
|
||||
class="cmtt-12">4</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">*</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">psb_cd_get_local_</span>
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">cols</span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-9-"><td style="white-space:normal; text-align:left;" id="TBL-13-9-1"
|
||||
class="td11"><!--l. 780--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-9-2"
|
||||
class="td11"><!--l. 780--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">desc_a</span><span
|
||||
class="cmtt-12">)</span> <span
|
||||
class="cmr-12">(see the PSBLAS User’s Guide). Note that </span><span
|
||||
class="cmti-12">type </span><span
|
||||
class="cmr-12">and</span>
|
||||
<span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter </span><span
|
||||
class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">,</span>
|
||||
<span
|
||||
class="cmr-12">single/double precision version of AMG4PSBLAS under use.</span> </td>
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_vect_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-10-"><td style="white-space:normal; text-align:left;" id="TBL-13-10-1"
|
||||
class="td11"><!--l. 781--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-10-2"
|
||||
class="td11"><!--l. 781--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:normal; text-align:left;" id="TBL-13-11-1"
|
||||
class="td11"><!--l. 783--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">imold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-11-2"
|
||||
class="td11"><!--l. 783--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_i_base_vect_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:normal; text-align:left;" id="TBL-13-12-1"
|
||||
class="td11"><!--l. 784--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-12-2"
|
||||
class="td11"><!--l. 784--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
|
||||
<span
|
||||
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-14-13-"><td style="white-space:normal; text-align:left;" id="TBL-14-13-1"
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:normal; text-align:left;" id="TBL-13-13-1"
|
||||
>>>>>>> development
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 789--><p class="noindent" ><span
|
||||
class="cmr-12">The method can be used to build multilevel preconditioners too.</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--l. 840--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 794--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu13.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -356,6 +437,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu12.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 840--><p class="indent" > <a
|
||||
<!--l. 794--><p class="indent" > <a
|
||||
id="tailuserhtmlsu12.html"></a>
|
||||
</body></html>
|
||||
|
||||
+292
-22
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html >
|
||||
<head><title>Method free</title>
|
||||
<head><title>Method apply</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 840--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 794--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu14.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -28,32 +28,72 @@ href="userhtmlse5.html#userhtmlsu13.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h4 class="subsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.7 </span></span> <a
|
||||
id="x23-220005.7"></a><span
|
||||
class="cmr-12">Method free</span></h4>
|
||||
class="cmr-12">5.6 </span></span> <a
|
||||
id="x23-220005.6"></a><span
|
||||
class="cmr-12">Method apply</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 842--><p class="noindent" >
|
||||
<!--l. 843--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 796--><p class="noindent" >
|
||||
<!--l. 797--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">free</span><span
|
||||
class="cmtt-12">apply</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">x</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">y</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">desc_a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span><br />
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12">trans</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">work</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 846--><p class="noindent" ><span
|
||||
class="cmr-12">This method deallocates the preconditioner data structure </span><span class="lstinline"></span><span
|
||||
<!--l. 800--><p class="noindent" ><span
|
||||
class="cmr-12">This method computes </span><span
|
||||
class="cmmi-12">y </span><span
|
||||
class="cmr-12">= </span><span
|
||||
class="cmmi-12">op</span><span
|
||||
class="cmr-12">(</span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">) </span><span
|
||||
class="cmmi-12">x</span><span
|
||||
class="cmr-12">, where </span><span
|
||||
class="cmmi-12">B </span><span
|
||||
class="cmr-12">is a previously built preconditioner,</span>
|
||||
<span
|
||||
class="cmr-12">stored into </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 849--><p class="noindent" ><span
|
||||
class="cmr-12">, and </span><span
|
||||
class="cmmi-12">op </span><span
|
||||
class="cmr-12">denotes the preconditioner itself or its transpose, according to the</span>
|
||||
<span
|
||||
class="cmr-12">value of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span><span
|
||||
class="cmr-12">. Note that, when AMG4PSBLAS is used with a Krylov solver from</span>
|
||||
<span
|
||||
class="cmr-12">PSBLAS, </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">apply</span> <span
|
||||
class="cmr-12">is called within the PSBLAS method </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">psb_krylov</span> <span
|
||||
class="cmr-12">and hence it is</span>
|
||||
<span
|
||||
class="cmr-12">completely transparent to the user.</span>
|
||||
<!--l. 809--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-15" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-14" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
<<<<<<< HEAD
|
||||
><colgroup id="TBL-15-1g"><col
|
||||
id="TBL-15-1"><col
|
||||
id="TBL-15-2"></colgroup><tr
|
||||
@@ -61,6 +101,95 @@ id="TBL-15-2"></colgroup><tr
|
||||
class="td11"><!--l. 852--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-15-1-2"
|
||||
class="td11"><!--l. 852--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
><colgroup id="TBL-14-1g"><col
|
||||
id="TBL-14-1"><col
|
||||
id="TBL-14-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:normal; text-align:left;" id="TBL-14-1-1"
|
||||
class="td11"><!--l. 812--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">x</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-1-2"
|
||||
class="td11"><!--l. 812--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">kind_parameter</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">, dimension(:), intent(in)—.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:normal; text-align:left;" id="TBL-14-2-1"
|
||||
class="td11"><!--l. 813--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-2-2"
|
||||
class="td11"><!--l. 813--><p class="noindent" ><span
|
||||
class="cmr-12">The local part of the vector </span><span
|
||||
class="cmmi-12">x</span><span
|
||||
class="cmr-12">. Note that </span><span
|
||||
class="cmti-12">type </span><span
|
||||
class="cmr-12">and </span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span>
|
||||
<span
|
||||
class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">, single/double</span>
|
||||
<span
|
||||
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:normal; text-align:left;" id="TBL-14-3-1"
|
||||
class="td11"><!--l. 816--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">y</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-3-2"
|
||||
class="td11"><!--l. 816--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">kind_parameter</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">, dimension(:), intent(out)—.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:normal; text-align:left;" id="TBL-14-4-1"
|
||||
class="td11"><!--l. 817--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-4-2"
|
||||
class="td11"><!--l. 817--><p class="noindent" ><span
|
||||
class="cmr-12">The local part of the vector </span><span
|
||||
class="cmmi-12">y</span><span
|
||||
class="cmr-12">. Note that </span><span
|
||||
class="cmti-12">type </span><span
|
||||
class="cmr-12">and </span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span>
|
||||
<span
|
||||
class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">, single/double</span>
|
||||
<span
|
||||
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:normal; text-align:left;" id="TBL-14-5-1"
|
||||
class="td11"><!--l. 820--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-14-5-2"
|
||||
class="td11"><!--l. 820--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_desc_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:normal; text-align:left;" id="TBL-14-6-1"
|
||||
class="td11"><!--l. 821--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-6-2"
|
||||
class="td11"><!--l. 821--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor associated to the matrix to be</span>
|
||||
<span
|
||||
class="cmr-12">preconditioned.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:normal; text-align:left;" id="TBL-14-7-1"
|
||||
class="td11"><!--l. 823--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-7-2"
|
||||
class="td11"><!--l. 823--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -68,20 +197,158 @@ class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:normal; text-align:left;" id="TBL-15-2-1"
|
||||
class="td11"><!--l. 853--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2"
|
||||
class="td11"><!--l. 853--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:normal; text-align:left;" id="TBL-14-8-1"
|
||||
class="td11"><!--l. 824--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-8-2"
|
||||
class="td11"><!--l. 824--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x27-310007"><span
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for</span>
|
||||
<span
|
||||
class="cmr-12">details.</span> </td>
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:normal; text-align:left;" id="TBL-14-9-1"
|
||||
class="td11"><!--l. 825--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-9-2"
|
||||
class="td11"><!--l. 825--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">character</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">len</span><span
|
||||
class="cmtt-12">=1),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">).</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:normal; text-align:left;" id="TBL-14-10-1"
|
||||
class="td11"><!--l. 826--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-10-2"
|
||||
class="td11"><!--l. 826--><p class="noindent" ><span
|
||||
class="cmr-12">If </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> <span
|
||||
class="cmr-12">= </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">N</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">n</span><span
|
||||
class="cmtt-12">’</span> <span
|
||||
class="cmr-12">then </span><span
|
||||
class="cmmi-12">op</span><span
|
||||
class="cmr-12">(</span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">) = </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">; if </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> <span
|
||||
class="cmr-12">= </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">T</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">t</span><span
|
||||
class="cmtt-12">’</span>
|
||||
<span
|
||||
class="cmr-12">then </span><span
|
||||
class="cmmi-12">op</span><span
|
||||
class="cmr-12">(</span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">) = </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmmi-8">T</span> </sup> <span
|
||||
class="cmr-12">(transpose of </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">); if </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> <span
|
||||
class="cmr-12">= </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">C</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">c</span><span
|
||||
class="cmtt-12">’</span> <span
|
||||
class="cmr-12">then</span>
|
||||
<span
|
||||
class="cmmi-12">op</span><span
|
||||
class="cmr-12">(</span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">) = </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmmi-8">C</span></sup> <span
|
||||
class="cmr-12">(conjugate transpose of </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">).</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:normal; text-align:left;" id="TBL-14-11-1"
|
||||
class="td11"><!--l. 830--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">work</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-11-2"
|
||||
class="td11"><!--l. 830--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">kind_parameter</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">, dimension(:), optional, target—.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-12-"><td style="white-space:normal; text-align:left;" id="TBL-14-12-1"
|
||||
class="td11"><!--l. 831--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-12-2"
|
||||
class="td11"><!--l. 831--><p class="noindent" ><span
|
||||
class="cmr-12">Workspace. Its size should be at least </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">4</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">*</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">psb_cd_get_local_</span>
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">cols</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">desc_a</span><span
|
||||
class="cmtt-12">)</span> <span
|
||||
class="cmr-12">(see the PSBLAS User’s Guide). Note that </span><span
|
||||
class="cmti-12">type </span><span
|
||||
class="cmr-12">and</span>
|
||||
<span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter </span><span
|
||||
class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">,</span>
|
||||
<span
|
||||
class="cmr-12">single/double precision version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:normal; text-align:left;" id="TBL-15-3-1"
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-14-13-"><td style="white-space:normal; text-align:left;" id="TBL-14-13-1"
|
||||
>>>>>>> development
|
||||
class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
@@ -89,7 +356,10 @@ class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
|
||||
<!--l. 859--><div class="crosslinks"><p class="noindent"><span
|
||||
|
||||
|
||||
|
||||
<!--l. 840--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu14.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -106,6 +376,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu13.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 859--><p class="indent" > <a
|
||||
<!--l. 840--><p class="indent" > <a
|
||||
id="tailuserhtmlsu13.html"></a>
|
||||
</body></html>
|
||||
|
||||
+50
-42
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html >
|
||||
<head><title>Method descr</title>
|
||||
<head><title>Method free</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 859--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 840--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu15.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -28,50 +28,33 @@ href="userhtmlse5.html#userhtmlsu14.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h4 class="subsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.8 </span></span> <a
|
||||
id="x24-230005.8"></a><span
|
||||
class="cmr-12">Method descr</span></h4>
|
||||
class="cmr-12">5.7 </span></span> <a
|
||||
id="x24-230005.7"></a><span
|
||||
class="cmr-12">Method free</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 861--><p class="noindent" >
|
||||
<!--l. 862--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 842--><p class="noindent" >
|
||||
<!--l. 843--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">descr</span><span
|
||||
class="cmtt-12">free</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">[</span><span
|
||||
class="cmtt-12">iout</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">root</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">verbosity</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
class="cmtt-12">)</span><br />
|
||||
</div>
|
||||
<!--l. 865--><p class="noindent" ><span
|
||||
class="cmr-12">This method prints a description of the preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span> <span
|
||||
class="cmr-12">to the standard output or to a</span>
|
||||
<span
|
||||
class="cmr-12">file. It must be called after </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">hierachy_build</span> <span
|
||||
class="cmr-12">and </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">smoothers_build</span><span
|
||||
class="cmr-12">, or </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">build</span><span
|
||||
class="cmr-12">, have</span>
|
||||
<span
|
||||
class="cmr-12">been called.</span>
|
||||
<!--l. 870--><p class="noindent" ><span
|
||||
<!--l. 846--><p class="noindent" ><span
|
||||
class="cmr-12">This method deallocates the preconditioner data structure </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 849--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-16" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-15" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
<<<<<<< HEAD
|
||||
><colgroup id="TBL-16-1g"><col
|
||||
id="TBL-16-1"><col
|
||||
id="TBL-16-2"></colgroup><tr
|
||||
@@ -79,6 +62,15 @@ id="TBL-16-2"></colgroup><tr
|
||||
class="td11"><!--l. 873--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-1-2"
|
||||
class="td11"><!--l. 873--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
><colgroup id="TBL-15-1g"><col
|
||||
id="TBL-15-1"><col
|
||||
id="TBL-15-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:normal; text-align:left;" id="TBL-15-1-1"
|
||||
class="td11"><!--l. 852--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-15-1-2"
|
||||
class="td11"><!--l. 852--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -86,15 +78,22 @@ class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:normal; text-align:left;" id="TBL-16-2-1"
|
||||
class="td11"><!--l. 874--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-2-2"
|
||||
class="td11"><!--l. 874--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:normal; text-align:left;" id="TBL-15-2-1"
|
||||
class="td11"><!--l. 853--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2"
|
||||
class="td11"><!--l. 853--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x27-310007"><span
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
<<<<<<< HEAD
|
||||
class="cmr-12">for details.</span></td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:normal; text-align:left;" id="TBL-16-3-1"
|
||||
@@ -164,17 +163,26 @@ class="td11"><!--l. 882--><p class="noindent" ><span
|
||||
class="cmr-12">The verbosity level of the description. Default value is 0. For</span>
|
||||
<span
|
||||
class="cmr-12">values higher than 0, it prints out further information, e.g., for</span>
|
||||
=======
|
||||
class="cmr-12">for</span>
|
||||
>>>>>>> development
|
||||
<span
|
||||
class="cmr-12">a distributed multilevel preconditioner the size of the coarse</span>
|
||||
<span
|
||||
class="cmr-12">matrices on every process.</span> </td>
|
||||
class="cmr-12">details.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-16-9-"><td style="white-space:normal; text-align:left;" id="TBL-16-9-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:normal; text-align:left;" id="TBL-15-3-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
>>>>>>> development
|
||||
|
||||
|
||||
|
||||
<!--l. 889--><div class="crosslinks"><p class="noindent"><span
|
||||
|
||||
|
||||
|
||||
<!--l. 859--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu15.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -191,6 +199,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu14.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 889--><p class="indent" > <a
|
||||
<!--l. 859--><p class="indent" > <a
|
||||
id="tailuserhtmlsu14.html"></a>
|
||||
</body></html>
|
||||
|
||||
+127
-64
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html >
|
||||
<head><title>Auxiliary Methods</title>
|
||||
<head><title>Method descr</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
@@ -10,8 +10,11 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 889--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 859--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu16.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlsu14.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
@@ -25,55 +28,51 @@ href="userhtmlse5.html#userhtmlsu15.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h4 class="subsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9 </span></span> <a
|
||||
id="x25-240005.9"></a><span
|
||||
class="cmr-12">Auxiliary Methods</span></h4>
|
||||
<!--l. 890--><p class="noindent" ><span
|
||||
class="cmr-12">Various functionalities are implemented as additional methods of the preconditioner</span>
|
||||
<span
|
||||
class="cmr-12">object.</span>
|
||||
<!--l. 893--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.1 </span></span> <a
|
||||
id="x25-250005.9.1"></a><span
|
||||
class="cmr-12">Method: dump</span></h5>
|
||||
class="cmr-12">5.8 </span></span> <a
|
||||
id="x25-240005.8"></a><span
|
||||
class="cmr-12">Method descr</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 895--><p class="noindent" >
|
||||
<!--l. 896--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 861--><p class="noindent" >
|
||||
<!--l. 862--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">dump</span><span
|
||||
class="cmtt-12">descr</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12">istart</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">iend</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">[</span><span
|
||||
class="cmtt-12">iout</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">prefix</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">root</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">head</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">ac</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">rp</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">smoother</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">solver</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">global_num</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">verbosity</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 899--><p class="noindent" ><span
|
||||
class="cmr-12">Dump on file.</span>
|
||||
<!--l. 902--><p class="noindent" ><span
|
||||
<!--l. 865--><p class="noindent" ><span
|
||||
class="cmr-12">This method prints a description of the preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span> <span
|
||||
class="cmr-12">to the standard output or to a</span>
|
||||
<span
|
||||
class="cmr-12">file. It must be called after </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">hierachy_build</span> <span
|
||||
class="cmr-12">and </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">smoothers_build</span><span
|
||||
class="cmr-12">, or </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">build</span><span
|
||||
class="cmr-12">, have</span>
|
||||
<span
|
||||
class="cmr-12">been called.</span>
|
||||
<!--l. 870--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-17" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-16" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
<<<<<<< HEAD
|
||||
><colgroup id="TBL-17-1g"><col
|
||||
id="TBL-17-1"><col
|
||||
id="TBL-17-2"></colgroup><tr
|
||||
@@ -81,6 +80,15 @@ id="TBL-17-2"></colgroup><tr
|
||||
class="td11"><!--l. 905--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-1-2"
|
||||
class="td11"><!--l. 905--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
><colgroup id="TBL-16-1g"><col
|
||||
id="TBL-16-1"><col
|
||||
id="TBL-16-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:normal; text-align:left;" id="TBL-16-1-1"
|
||||
class="td11"><!--l. 873--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-1-2"
|
||||
class="td11"><!--l. 873--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
@@ -88,17 +96,24 @@ class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:normal; text-align:left;" id="TBL-17-2-1"
|
||||
class="td11"><!--l. 906--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-2-2"
|
||||
class="td11"><!--l. 906--><p class="noindent" ><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:normal; text-align:left;" id="TBL-16-2-1"
|
||||
class="td11"><!--l. 874--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-2-2"
|
||||
class="td11"><!--l. 874--><p class="noindent" ><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x27-310007"><span
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
class="cmr-12">for details.</span></td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:normal; text-align:left;" id="TBL-17-3-1"
|
||||
class="td11"><!--l. 907--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-3-2"
|
||||
@@ -109,6 +124,14 @@ class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_sparse_mat</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:normal; text-align:left;" id="TBL-16-3-1"
|
||||
class="td11"><!--l. 875--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">iout</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-3-2"
|
||||
class="td11"><!--l. 875--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
@@ -116,22 +139,23 @@ class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:normal; text-align:left;" id="TBL-17-4-1"
|
||||
class="td11"><!--l. 908--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-4-2"
|
||||
class="td11"><!--l. 908--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:normal; text-align:left;" id="TBL-16-4-1"
|
||||
class="td11"><!--l. 876--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-4-2"
|
||||
class="td11"><!--l. 876--><p class="noindent" ><span
|
||||
class="cmr-12">The id of the file where the preconditioner description will be</span>
|
||||
>>>>>>> development
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
|
||||
<span
|
||||
class="cmr-12">processes. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli5.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmr-12">printed; the default is the standard output.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:normal; text-align:left;" id="TBL-17-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 915--><p class="noindent" >
|
||||
@@ -202,11 +226,18 @@ class="cmr-12">version of AMG4PSBLAS under use.</span>
|
||||
class="td11"><!--l. 931--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-3-2"
|
||||
class="td11"><!--l. 931--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:normal; text-align:left;" id="TBL-16-5-1"
|
||||
class="td11"><!--l. 878--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">root</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-5-2"
|
||||
class="td11"><!--l. 878--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
<<<<<<< HEAD
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
@@ -253,21 +284,31 @@ class="cmtt-12">global</span> </td> <td style="white-space:normal; text-align:l
|
||||
class="td11"><!--l. 944--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">logical</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
=======
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:normal; text-align:left;" id="TBL-19-2-1"
|
||||
class="td11"><!--l. 945--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-2-2"
|
||||
class="td11"><!--l. 945--><p class="noindent" ><span
|
||||
class="cmr-12">Whether the global or local preconditioner memory occupation is</span>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-6-"><td style="white-space:normal; text-align:left;" id="TBL-16-6-1"
|
||||
class="td11"><!--l. 879--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-6-2"
|
||||
class="td11"><!--l. 879--><p class="noindent" ><span
|
||||
class="cmr-12">The id of the process where the preconditioner description</span>
|
||||
>>>>>>> development
|
||||
<span
|
||||
class="cmr-12">desired. Default: </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">.</span><span
|
||||
class="cmtt-12">false</span><span
|
||||
class="cmtt-12">.</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmr-12">will be printed; the default is </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">psb_root_</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:normal; text-align:left;" id="TBL-19-3-1"
|
||||
class="td11"> </td> </tr></table>
|
||||
</div> <span
|
||||
@@ -337,11 +378,18 @@ id="TBL-20-2"></colgroup><tr
|
||||
class="td11"><!--l. 977--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-1-2"
|
||||
class="td11"><!--l. 977--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-7-"><td style="white-space:normal; text-align:left;" id="TBL-16-7-1"
|
||||
class="td11"><!--l. 881--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">verbosity</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-7-2"
|
||||
class="td11"><!--l. 881--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
<<<<<<< HEAD
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
@@ -368,12 +416,15 @@ class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
=======
|
||||
>>>>>>> development
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-20-4-"><td style="white-space:normal; text-align:left;" id="TBL-20-4-1"
|
||||
class="td11"><!--l. 980--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-4-2"
|
||||
class="td11"><!--l. 980--><p class="noindent" ><span
|
||||
@@ -435,17 +486,29 @@ class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:normal; text-align:left;" id="TBL-21-3-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-16-8-"><td style="white-space:normal; text-align:left;" id="TBL-16-8-1"
|
||||
class="td11"><!--l. 882--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-8-2"
|
||||
class="td11"><!--l. 882--><p class="noindent" ><span
|
||||
class="cmr-12">The verbosity level of the description. Default value is 0. For</span>
|
||||
<span
|
||||
class="cmr-12">values higher than 0, it prints out further information, e.g., for</span>
|
||||
<span
|
||||
class="cmr-12">a distributed multilevel preconditioner the size of the coarse</span>
|
||||
<span
|
||||
class="cmr-12">matrices on every process.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-9-"><td style="white-space:normal; text-align:left;" id="TBL-16-9-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
>>>>>>> development
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--l. 4--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 889--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu16.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlsu14.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
@@ -458,6 +521,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu15.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 4--><p class="indent" > <a
|
||||
id="tailuserhtmlsu15.html"></a>
|
||||
<!--l. 889--><p class="indent" > <a
|
||||
id="tailuserhtmlsu15.html"></a>
|
||||
</body></html>
|
||||
|
||||
+411
-46
@@ -1,20 +1,17 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html >
|
||||
<head><title>Method free</title>
|
||||
<head><title>Auxiliary Methods</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
|
||||
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
|
||||
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
<!-- html,3 -->
|
||||
<meta name="src" content="userhtml.tex">
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 739--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 889--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu17.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlsu15.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
@@ -24,51 +21,419 @@ class="cmr-12">] [</span><a
|
||||
href="#tailuserhtmlsu16.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu16.html" ><span
|
||||
href="userhtmlse5.html#userhtmlsu16.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h4 class="subsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">6.7 </span></span> <a
|
||||
id="x26-250006.7"></a><span
|
||||
class="cmr-12">Method free</span></h4>
|
||||
class="cmr-12">5.9 </span></span> <a
|
||||
id="x26-250005.9"></a><span
|
||||
class="cmr-12">Auxiliary Methods</span></h4>
|
||||
<!--l. 890--><p class="noindent" ><span
|
||||
class="cmr-12">Various functionalities are implemented as additional methods of the preconditioner</span>
|
||||
<span
|
||||
class="cmr-12">object.</span>
|
||||
<!--l. 893--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.1 </span></span> <a
|
||||
id="x26-260005.9.1"></a><span
|
||||
class="cmr-12">Method: dump</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 741--><p class="noindent" >
|
||||
<!--l. 742--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 895--><p class="noindent" >
|
||||
<!--l. 896--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%free(p,info)</span></span></span><br />
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">dump</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12">istart</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">iend</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">prefix</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">head</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">ac</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">rp</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">smoother</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">solver</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">global_num</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 745--><p class="noindent" ><span
|
||||
class="cmr-12">This method deallocates the preconditioner data structure </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">p</span></span></span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 748--><p class="noindent" ><span
|
||||
<!--l. 899--><p class="noindent" ><span
|
||||
class="cmr-12">Dump on file.</span>
|
||||
<!--l. 902--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-15" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-17" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-15-1g"><col
|
||||
id="TBL-15-1"><col
|
||||
id="TBL-15-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:wrap; text-align:left;" id="TBL-15-1-1"
|
||||
class="td11"><!--l. 751--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">info</span></span></span> </td><td style="white-space:wrap; text-align:left;" id="TBL-15-1-2"
|
||||
class="td11"><!--l. 751--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
><colgroup id="TBL-17-1g"><col
|
||||
id="TBL-17-1"><col
|
||||
id="TBL-17-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:normal; text-align:left;" id="TBL-17-1-1"
|
||||
class="td11"><!--l. 905--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-1-2"
|
||||
class="td11"><!--l. 905--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:wrap; text-align:left;" id="TBL-15-2-1"
|
||||
class="td11"><!--l. 752--><p class="noindent" > </td><td style="white-space:wrap; text-align:left;" id="TBL-15-2-2"
|
||||
class="td11"><!--l. 752--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:normal; text-align:left;" id="TBL-17-2-1"
|
||||
class="td11"><!--l. 906--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-2-2"
|
||||
class="td11"><!--l. 906--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse8.html#x30-340008"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for</span>
|
||||
<span
|
||||
class="cmr-12">details.</span> </td>
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:wrap; text-align:left;" id="TBL-15-3-1"
|
||||
style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:normal; text-align:left;" id="TBL-17-3-1"
|
||||
class="td11"><!--l. 907--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-3-2"
|
||||
class="td11"><!--l. 907--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_sparse_mat</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:normal; text-align:left;" id="TBL-17-4-1"
|
||||
class="td11"><!--l. 908--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-4-2"
|
||||
class="td11"><!--l. 908--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
|
||||
<span
|
||||
class="cmr-12">processes. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli5.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">20</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:normal; text-align:left;" id="TBL-17-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 915--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.2 </span></span> <a
|
||||
id="x26-270005.9.2"></a><span
|
||||
class="cmr-12">Method: clone</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 917--><p class="noindent" >
|
||||
<!--l. 918--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">clone</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">pout</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span><br />
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!--l. 921--><p class="noindent" ><span
|
||||
class="cmr-12">Create a (deep) copy of the preconditioner object.</span>
|
||||
<!--l. 924--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-18" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-18-1g"><col
|
||||
id="TBL-18-1"><col
|
||||
id="TBL-18-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:normal; text-align:left;" id="TBL-18-1-1"
|
||||
class="td11"><!--l. 927--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">pout</span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-1-2"
|
||||
class="td11"><!--l. 927--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">amg_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">prec_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:normal; text-align:left;" id="TBL-18-2-1"
|
||||
class="td11"><!--l. 928--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-2-2"
|
||||
class="td11"><!--l. 928--><p class="noindent" ><span
|
||||
class="cmr-12">The copy of the preconditioner data structure. Note that </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">must</span>
|
||||
<span
|
||||
class="cmr-12">be chosen according to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">, single/double precision</span>
|
||||
<span
|
||||
class="cmr-12">version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:normal; text-align:left;" id="TBL-18-3-1"
|
||||
class="td11"><!--l. 931--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-3-2"
|
||||
class="td11"><!--l. 931--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:normal; text-align:left;" id="TBL-18-4-1"
|
||||
class="td11"><!--l. 932--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-4-2"
|
||||
class="td11"><!--l. 932--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:normal; text-align:left;" id="TBL-18-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 937--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.3 </span></span> <a
|
||||
id="x26-280005.9.3"></a><span
|
||||
class="cmr-12">Method: sizeof</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 939--><p class="noindent" >
|
||||
<!--l. 940--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">sz</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">=</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">sizeof</span><span
|
||||
class="cmtt-12">([</span><span
|
||||
class="cmtt-12">global</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<div class="tabular"> <table id="TBL-19" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-19-1g"><col
|
||||
id="TBL-19-1"><col
|
||||
id="TBL-19-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:normal; text-align:left;" id="TBL-19-1-1"
|
||||
class="td11"><!--l. 944--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">global</span> </td> <td style="white-space:normal; text-align:left;" id="TBL-19-1-2"
|
||||
class="td11"><!--l. 944--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">logical</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:normal; text-align:left;" id="TBL-19-2-1"
|
||||
class="td11"><!--l. 945--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-2-2"
|
||||
class="td11"><!--l. 945--><p class="noindent" ><span
|
||||
class="cmr-12">Whether the global or local preconditioner memory occupation is</span>
|
||||
<span
|
||||
class="cmr-12">desired. Default: </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">.</span><span
|
||||
class="cmtt-12">false</span><span
|
||||
class="cmtt-12">.</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:normal; text-align:left;" id="TBL-19-3-1"
|
||||
class="td11"> </td> </tr></table>
|
||||
</div> <span
|
||||
class="cmr-12">Return memory footprint in bytes.</span>
|
||||
<!--l. 952--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.4 </span></span> <a
|
||||
id="x26-290005.9.4"></a><span
|
||||
class="cmr-12">Method: allocate</span><span
|
||||
class="cmr-12">_wrk</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 954--><p class="noindent" >
|
||||
<!--l. 955--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">allocate_wrk</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">vmold</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 958--><p class="noindent" ><span
|
||||
class="cmr-12">Allocate internal work vectors. Each application of the preconditioner uses a number of</span>
|
||||
<span
|
||||
class="cmr-12">work vectors which are allocated internally as necessary; therefore allocation and</span>
|
||||
<span
|
||||
class="cmr-12">deallocation of memory occurs multiple times during the execution of a Krylov method.</span>
|
||||
<span
|
||||
class="cmr-12">In most cases this strategy is perfectly acceptable, but on some platforms, most</span>
|
||||
<span
|
||||
class="cmr-12">notably GPUs, memory allocation is a slow operation, and the default behaviour would</span>
|
||||
<span
|
||||
class="cmr-12">lead to a slowdown. This method allows to trade space for time by preallocating</span>
|
||||
<span
|
||||
class="cmr-12">the internal workspace outside of the invocation of a Krylov method. When</span>
|
||||
|
||||
|
||||
|
||||
<span
|
||||
class="cmr-12">using GPUs or other specialized devices, the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> <span
|
||||
class="cmr-12">argument is also necessary</span>
|
||||
<span
|
||||
class="cmr-12">to ensure the internal work vectors are of the appropriate dynamic type to</span>
|
||||
<span
|
||||
class="cmr-12">exploit the accelerator hardware; when allocation occurs internally this is</span>
|
||||
<span
|
||||
class="cmr-12">taken care of based on the dynamic type of the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">x</span> <span
|
||||
class="cmr-12">argument to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">apply</span>
|
||||
<span
|
||||
class="cmr-12">method.</span>
|
||||
<!--l. 974--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-20" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-20-1g"><col
|
||||
id="TBL-20-1"><col
|
||||
id="TBL-20-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:normal; text-align:left;" id="TBL-20-1-1"
|
||||
class="td11"><!--l. 977--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-1-2"
|
||||
class="td11"><!--l. 977--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:normal; text-align:left;" id="TBL-20-2-1"
|
||||
class="td11"><!--l. 978--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-2-2"
|
||||
class="td11"><!--l. 978--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:normal; text-align:left;" id="TBL-20-3-1"
|
||||
class="td11"><!--l. 979--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-3-2"
|
||||
class="td11"><!--l. 979--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_vect_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-4-"><td style="white-space:normal; text-align:left;" id="TBL-20-4-1"
|
||||
class="td11"><!--l. 980--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-4-2"
|
||||
class="td11"><!--l. 980--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-5-"><td style="white-space:normal; text-align:left;" id="TBL-20-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 986--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.5 </span></span> <a
|
||||
id="x26-300005.9.5"></a><span
|
||||
class="cmr-12">Method: free</span><span
|
||||
class="cmr-12">_wrk</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 988--><p class="noindent" >
|
||||
<!--l. 989--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">free_wrk</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span><br />
|
||||
</div>
|
||||
<!--l. 992--><p class="noindent" ><span
|
||||
class="cmr-12">Deallocate internal work vectors.</span>
|
||||
<!--l. 995--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-21" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-21-1g"><col
|
||||
id="TBL-21-1"><col
|
||||
id="TBL-21-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-21-1-"><td style="white-space:normal; text-align:left;" id="TBL-21-1-1"
|
||||
class="td11"><!--l. 998--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-21-1-2"
|
||||
class="td11"><!--l. 998--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:normal; text-align:left;" id="TBL-21-2-1"
|
||||
class="td11"><!--l. 999--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-21-2-2"
|
||||
class="td11"><!--l. 999--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:normal; text-align:left;" id="TBL-21-3-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
@@ -76,11 +441,11 @@ class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
|
||||
<!--l. 758--><div class="crosslinks"><p class="noindent"><span
|
||||
|
||||
|
||||
|
||||
<!--l. 4--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu17.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlsu15.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
@@ -90,9 +455,9 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlsu16.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlse6.html#userhtmlsu16.html" ><span
|
||||
href="userhtmlse5.html#userhtmlsu16.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 758--><p class="indent" > <a
|
||||
id="tailuserhtmlsu16.html"></a>
|
||||
<!--l. 4--><p class="indent" > <a
|
||||
id="tailuserhtmlsu16.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 64--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 76--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu3.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -31,13 +31,13 @@ class="cmr-12">] </span></p></div>
|
||||
class="cmr-12">3.2 </span></span> <a
|
||||
id="x10-90003.2"></a><span
|
||||
class="cmr-12">Optional third party libraries</span></h4>
|
||||
<!--l. 66--><p class="noindent" ><span
|
||||
<!--l. 78--><p class="noindent" ><span
|
||||
class="cmr-12">We provide interfaces to the following third-party software libraries; note that these are</span>
|
||||
<span
|
||||
class="cmr-12">optional, but if you enable them some defaults for multilevel preconditioners may</span>
|
||||
<span
|
||||
class="cmr-12">change to reflect their presence.</span>
|
||||
<!--l. 70--><p class="indent" >
|
||||
<!--l. 82--><p class="indent" >
|
||||
<dl class="description"><dt class="description">
|
||||
<span
|
||||
class="cmbx-12">UMFPACK</span> </dt><dd
|
||||
@@ -133,7 +133,7 @@ class="cmr-12">.</span></dd></dl>
|
||||
|
||||
|
||||
|
||||
<!--l. 101--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 113--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu3.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -150,6 +150,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse3.html#userhtmlsu2.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 101--><p class="indent" > <a
|
||||
<!--l. 113--><p class="indent" > <a
|
||||
id="tailuserhtmlsu2.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 101--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 113--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu4.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -31,13 +31,13 @@ class="cmr-12">] </span></p></div>
|
||||
class="cmr-12">3.3 </span></span> <a
|
||||
id="x11-100003.3"></a><span
|
||||
class="cmr-12">Configuration options</span></h4>
|
||||
<!--l. 103--><p class="noindent" ><span
|
||||
<!--l. 115--><p class="noindent" ><span
|
||||
class="cmr-12">In order to build AMG4PSBLAS, the first step is to use the </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">configure</span></span></span> <span
|
||||
class="cmr-12">script in the</span>
|
||||
<span
|
||||
class="cmr-12">main directory to generate the necessary makefile.</span>
|
||||
<!--l. 107--><p class="indent" > <span
|
||||
<!--l. 119--><p class="indent" > <span
|
||||
class="cmr-12">As a minimal example consider the following:</span>
|
||||
|
||||
|
||||
@@ -45,7 +45,11 @@ class="cmr-12">As a minimal example consider the following:</span>
|
||||
<pre class="verbatim" id="verbatim-2">
|
||||
./configure --with-psblas=PSB-INSTALL-DIR
|
||||
</pre>
|
||||
<<<<<<< HEAD
|
||||
<!--l. 115--><p class="nopar" > <span
|
||||
=======
|
||||
<!--l. 127--><p class="nopar" > <span
|
||||
>>>>>>> development
|
||||
class="cmr-12">which assumes that the various MPI compilers and support libraries are available in</span>
|
||||
<span
|
||||
class="cmr-12">the standard directories on the system, and specifies only the PSBLAS install directory</span>
|
||||
@@ -59,7 +63,7 @@ class="cmtt-12">./configure</span><span
|
||||
class="cmtt-12"> --help</span></span></span><span
|
||||
class="cmr-12">, which</span>
|
||||
<span
|
||||
class="cmr-12">produces: </span><!--l. 126--><div class="lstinputlisting">
|
||||
class="cmr-12">produces: </span><!--l. 138--><div class="lstinputlisting">
|
||||
<a
|
||||
id="x11-10001"></a>
|
||||
<span
|
||||
@@ -4236,7 +4240,7 @@ class="cmtt-12">issues</span><span
|
||||
class="cmtt-12">>.</span>
|
||||
|
||||
</div>
|
||||
<!--l. 128--><p class="noindent" ><span
|
||||
<!--l. 140--><p class="noindent" ><span
|
||||
class="cmr-12">For instance, if a user has built and installed PSBLAS 3.7 under the </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">/opt</span></span></span> <span
|
||||
class="cmr-12">directory and is</span>
|
||||
@@ -4251,7 +4255,11 @@ class="cmr-12">might be configured with:</span>
|
||||
./configure --with-psblas=/opt/psblas-3.7/ \
|
||||
--with-umfpackincdir=/usr/include/suitesparse/
|
||||
</pre>
|
||||
<<<<<<< HEAD
|
||||
<!--l. 140--><p class="nopar" > <span
|
||||
=======
|
||||
<!--l. 152--><p class="nopar" > <span
|
||||
>>>>>>> development
|
||||
class="cmr-12">Once the configure script has completed execution, it will have generated the file</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">Make.inc</span></span></span> <span
|
||||
@@ -4260,7 +4268,7 @@ class="cmr-12">which will then be used by all Makefiles in the directory tree; t
|
||||
class="cmr-12">copied in the install directory under the name </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">Make.inc.AMG4PSBLAS</span></span></span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 147--><p class="indent" > <span
|
||||
<!--l. 159--><p class="indent" > <span
|
||||
class="cmr-12">To use the MUMPS solver package, the user has to add the appropriate options to</span>
|
||||
<span
|
||||
class="cmr-12">the configure script; by default we are looking for the libraries </span><span class="obeylines-h"><span class="verb"><span
|
||||
@@ -4280,7 +4288,7 @@ class="cmtt-12">--with-extra-libs</span></span></span> <span
|
||||
class="cmr-12">configure</span>
|
||||
<span
|
||||
class="cmr-12">option.</span>
|
||||
<!--l. 155--><p class="indent" > <span
|
||||
<!--l. 167--><p class="indent" > <span
|
||||
class="cmr-12">To build the library the user will now enter</span>
|
||||
|
||||
|
||||
@@ -4288,7 +4296,11 @@ class="cmr-12">To build the library the user will now enter</span>
|
||||
<pre class="verbatim" id="verbatim-4">
|
||||
make
|
||||
</pre>
|
||||
<<<<<<< HEAD
|
||||
<!--l. 163--><p class="nopar" > <span
|
||||
=======
|
||||
<!--l. 175--><p class="nopar" > <span
|
||||
>>>>>>> development
|
||||
class="cmr-12">followed (optionally) by</span>
|
||||
|
||||
|
||||
@@ -4296,11 +4308,15 @@ class="cmr-12">followed (optionally) by</span>
|
||||
<pre class="verbatim" id="verbatim-5">
|
||||
make install
|
||||
</pre>
|
||||
<<<<<<< HEAD
|
||||
<!--l. 173--><p class="nopar" >
|
||||
=======
|
||||
<!--l. 185--><p class="nopar" >
|
||||
>>>>>>> development
|
||||
|
||||
|
||||
|
||||
<!--l. 175--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 187--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu4.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -4317,6 +4333,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse3.html#userhtmlsu3.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 175--><p class="indent" > <a
|
||||
<!--l. 187--><p class="indent" > <a
|
||||
id="tailuserhtmlsu3.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 175--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 187--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu5.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -31,7 +31,7 @@ class="cmr-12">] </span></p></div>
|
||||
class="cmr-12">3.4 </span></span> <a
|
||||
id="x12-110003.4"></a><span
|
||||
class="cmr-12">Bug reporting</span></h4>
|
||||
<!--l. 176--><p class="noindent" ><span
|
||||
<!--l. 188--><p class="noindent" ><span
|
||||
class="cmr-12">If you find any bugs in our codes, please report them through our issues page</span>
|
||||
<span
|
||||
class="cmr-12">on</span><br
|
||||
@@ -39,7 +39,7 @@ class="newline" /> <a
|
||||
href="https://github.com/psctoolkit/amg4psblas/issues" class="url" ><span
|
||||
class="cmtt-12">https://github.com/psctoolkit/amg4psblas/issues</span></a><br
|
||||
class="newline" />
|
||||
<!--l. 180--><p class="indent" > <span
|
||||
<!--l. 192--><p class="indent" > <span
|
||||
class="cmr-12">To enable us to track the bug, please provide a log from the failing application, the</span>
|
||||
<span
|
||||
class="cmr-12">test conditions, and ideally a self-contained test program reproducing the</span>
|
||||
@@ -48,7 +48,7 @@ class="cmr-12">issue.</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 184--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 196--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu5.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -65,6 +65,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse3.html#userhtmlsu4.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 184--><p class="indent" > <a
|
||||
<!--l. 196--><p class="indent" > <a
|
||||
id="tailuserhtmlsu4.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 184--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 196--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu4.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
@@ -28,7 +28,7 @@ class="cmr-12">] </span></p></div>
|
||||
class="cmr-12">3.5 </span></span> <a
|
||||
id="x13-120003.5"></a><span
|
||||
class="cmr-12">Example and test programs</span></h4>
|
||||
<!--l. 185--><p class="noindent" ><span
|
||||
<!--l. 197--><p class="noindent" ><span
|
||||
class="cmr-12">The package contains the </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">examples</span></span></span> <span
|
||||
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
|
||||
@@ -62,7 +62,7 @@ class="cmtt-12">runs</span></span></span> <span
|
||||
class="cmr-12">subdirectories, to experiment with the full range</span>
|
||||
<span
|
||||
class="cmr-12">of preconditioners implemented in the package.</span></dd></dl>
|
||||
<!--l. 198--><p class="noindent" ><span
|
||||
<!--l. 210--><p class="noindent" ><span
|
||||
class="cmr-12">The </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">fileread</span></span></span> <span
|
||||
class="cmr-12">directories contain sample programs that read sparse matrices from files,</span>
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
>
|
||||
<!--l. 114--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu7.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="#tailuserhtmlsu6.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
@@ -97,15 +100,15 @@ class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 138--><p class="indent" > <span
|
||||
class="cmr-12">The setup and application of the default multilevel preconditioner for the real single</span>
|
||||
<span
|
||||
class="cmr-12">precision and the complex, single and double precision, versions are obtained</span>
|
||||
|
||||
|
||||
|
||||
<span
|
||||
class="cmr-12">precision and the complex, single and double precision, versions are obtained</span>
|
||||
<span
|
||||
class="cmr-12">with straightforward modifications of the previous example (see Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse5.html#x16-150005"><span
|
||||
href="userhtmlse5.html#x17-160005"><span
|
||||
class="cmr-12">5</span><!--tex4ht:ref: sec:userinterface --></a> <span
|
||||
class="cmr-12">for</span>
|
||||
<span
|
||||
@@ -380,17 +383,17 @@ class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 420--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu7.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlsu6.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlse4.html#userhtmlsu6.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 1--><p class="indent" > <a
|
||||
<!--l. 420--><p class="indent" > <a
|
||||
id="tailuserhtmlsu6.html"></a>
|
||||
</body></html>
|
||||
|
||||
+57
-13
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html >
|
||||
<head><title>Method init</title>
|
||||
<head><title>GPU example</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
@@ -10,23 +10,44 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 42--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 420--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu8.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
href="userhtmlsu6.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlsu6.html#tailuserhtmlsu6.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="#tailuserhtmlsu7.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu7.html" ><span
|
||||
href="userhtmlse4.html#userhtmlsu7.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h4 class="subsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.1 </span></span> <a
|
||||
id="x17-160005.1"></a><span
|
||||
class="cmr-12">Method init</span></h4>
|
||||
class="cmr-12">4.2 </span></span> <a
|
||||
id="x16-150004.2"></a><span
|
||||
class="cmr-12">GPU example</span></h4>
|
||||
<!--l. 422--><p class="noindent" ><span
|
||||
class="cmr-12">The code reported in Figure</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="#x16-15001r5"><span
|
||||
class="cmr-12">5</span><!--tex4ht:ref: fig:gpu-ex1 --></a> <span
|
||||
class="cmr-12">shows how to set up a program exploiting the combined</span>
|
||||
<span
|
||||
class="cmr-12">GPU capabilities of PSBLAS and AMG4PSBLAS.</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 425--><p class="indent" > <a
|
||||
id="x16-15001r5"></a><hr class="float"><div class="float"
|
||||
>
|
||||
|
||||
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<<<<<<< HEAD
|
||||
<!--l. 44--><p class="noindent" >
|
||||
<!--l. 45--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
@@ -126,23 +147,46 @@ class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:normal; text-align:left;" id="TBL-2-8-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
=======
|
||||
<!--l. 437--><p class="noindent" >
|
||||
<div class="minipage"><pre class="verbatim" id="verbatim-10">
|
||||
! build a one-level RAS with overlap 2 and ILU(0) on the local blocks.
|
||||
call P%init(’AS’,info)
|
||||
call P%set(’SUB_OVR’,2,info)
|
||||
call P%build(A,desc_A,info)
|
||||
... ...
|
||||
! solve Ax=b with preconditioned BiCGSTAB
|
||||
  call psb_krylov(’BICGSTAB’,A,P,b,x,tol,desc_A,info)
|
||||
</pre>
|
||||
<!--l. 448--><p class="nopar" ></div></div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Listing 5: </span><span
|
||||
class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex4ht:label?: x16-15001r5 -->
|
||||
>>>>>>> development
|
||||
|
||||
|
||||
|
||||
</div><hr class="endfloat" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--l. 72--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu8.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
href="userhtmlsu6.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlsu6.html#tailuserhtmlsu6.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlsu7.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu7.html" ><span
|
||||
href="userhtmlse4.html#userhtmlsu7.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 72--><p class="indent" > <a
|
||||
<!--l. 1--><p class="indent" > <a
|
||||
id="tailuserhtmlsu7.html"></a>
|
||||
</body></html>
|
||||
|
||||
+89
-60
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html >
|
||||
<head><title>Method set</title>
|
||||
<head><title>Method init</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
|
||||
@@ -10,17 +10,11 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 72--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 42--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu9.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlsu7.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlsu7.html#tailuserhtmlsu7.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="#tailuserhtmlsu8.html"><span
|
||||
class="cmr-12">tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
@@ -28,54 +22,36 @@ href="userhtmlse5.html#userhtmlsu8.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<h4 class="subsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.2 </span></span> <a
|
||||
id="x18-170005.2"></a><span
|
||||
class="cmr-12">Method set</span></h4>
|
||||
class="cmr-12">5.1 </span></span> <a
|
||||
id="x18-170005.1"></a><span
|
||||
class="cmr-12">Method init</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 74--><p class="noindent" >
|
||||
<!--l. 75--><p class="noindent" ><span class="lstinline"></span><span
|
||||
<!--l. 44--><p class="noindent" >
|
||||
<!--l. 45--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">set</span><span
|
||||
class="cmtt-12">init</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">what</span><span
|
||||
class="cmtt-12">contxt</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">val</span><span
|
||||
class="cmtt-12">ptype</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12">ilev</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">ilmax</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">pos</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">idx</span><span
|
||||
class="cmtt-12">])</span></div>
|
||||
<!--l. 78--><p class="noindent" ><span
|
||||
class="cmr-12">This method sets the parameters defining the preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">)</span></div>
|
||||
<!--l. 48--><p class="noindent" ><span
|
||||
class="cmr-12">This method allocates and initializes the preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmr-12">. More precisely, the</span>
|
||||
class="cmr-12">, according to the</span>
|
||||
<span
|
||||
class="cmr-12">parameter identified by </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">what</span> <span
|
||||
class="cmr-12">is assigned the value contained in </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">val</span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 83--><p class="noindent" ><span
|
||||
class="cmr-12">preconditioner type chosen by the user.</span>
|
||||
<!--l. 52--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
|
||||
|
||||
|
||||
<div class="tabular"> <table id="TBL-3" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-2" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
<<<<<<< HEAD
|
||||
><colgroup id="TBL-3-1g"><col
|
||||
id="TBL-3-1"><col
|
||||
id="TBL-3-2"></colgroup><tr
|
||||
@@ -223,11 +199,25 @@ class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
=======
|
||||
><colgroup id="TBL-2-1g"><col
|
||||
id="TBL-2-1"><col
|
||||
id="TBL-2-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:normal; text-align:left;" id="TBL-2-1-1"
|
||||
class="td11"><!--l. 56--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">contxt</span> </td> <td style="white-space:normal; text-align:left;" id="TBL-2-1-2"
|
||||
class="td11"><!--l. 56--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_ctxt_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
<<<<<<< HEAD
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-3-10-"><td style="white-space:normal; text-align:left;" id="TBL-3-10-1"
|
||||
@@ -262,17 +252,27 @@ class="cmr-12">one, i.e., level 1 is the finest level.</span>
|
||||
class="td11"><!--l. 117--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">pos</span> </td><td style="white-space:normal; text-align:left;" id="TBL-3-11-2"
|
||||
class="td11"><!--l. 117--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:normal; text-align:left;" id="TBL-2-2-1"
|
||||
class="td11"><!--l. 57--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-2-2"
|
||||
class="td11"><!--l. 57--><p class="noindent" ><span
|
||||
class="cmr-12">The communication context.</span> </td></tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:normal; text-align:left;" id="TBL-2-3-1"
|
||||
class="td11"><!--l. 58--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">ptype</span> </td> <td style="white-space:normal; text-align:left;" id="TBL-2-3-2"
|
||||
class="td11"><!--l. 58--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">character</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">len</span><span
|
||||
class="cmtt-12">=*),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
<<<<<<< HEAD
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
@@ -307,18 +307,39 @@ class="cmr-12">is ignored.</span> </td>
|
||||
class="td11"><!--l. 123--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">idx</span> </td><td style="white-space:normal; text-align:left;" id="TBL-3-13-2"
|
||||
class="td11"><!--l. 123--><p class="noindent" ><span class="lstinline"></span><span
|
||||
=======
|
||||
class="cmtt-12">)</span> <span
|
||||
class="cmr-12">.</span></td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:normal; text-align:left;" id="TBL-2-4-1"
|
||||
class="td11"><!--l. 59--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-4-2"
|
||||
class="td11"><!--l. 59--><p class="noindent" ><span
|
||||
class="cmr-12">The type of preconditioner. Its values are specified in Table</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse4.html#x14-13015r1"><span
|
||||
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:normal; text-align:left;" id="TBL-2-5-1"
|
||||
class="td11"><!--l. 61--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-5-2"
|
||||
class="td11"><!--l. 61--><p class="noindent" ><span
|
||||
class="cmr-12">Note that strings are case insensitive.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:normal; text-align:left;" id="TBL-2-6-1"
|
||||
class="td11"><!--l. 62--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-2-6-2"
|
||||
class="td11"><!--l. 62--><p class="noindent" ><span class="lstinline"></span><span
|
||||
>>>>>>> development
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
<<<<<<< HEAD
|
||||
style="vertical-align:baseline;" id="TBL-3-14-"><td style="white-space:normal; text-align:left;" id="TBL-3-14-1"
|
||||
class="td11"><!--l. 124--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-3-14-2"
|
||||
class="td11"><!--l. 124--><p class="noindent" ><span
|
||||
@@ -1463,15 +1484,26 @@ class="td11"> </td></tr></table>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Table 5: </span><span
|
||||
class="content">Parameters defining the solver at the coarsest level (continued).</span></div><!--tex4ht:label?: x18-17012r5 -->
|
||||
=======
|
||||
style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:normal; text-align:left;" id="TBL-2-7-1"
|
||||
class="td11"><!--l. 63--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-7-2"
|
||||
class="td11"><!--l. 63--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x28-320007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:normal; text-align:left;" id="TBL-2-8-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
>>>>>>> development
|
||||
|
||||
|
||||
|
||||
</div><hr class="endfloat" />
|
||||
</div>
|
||||
<div class="table">
|
||||
|
||||
|
||||
|
||||
<<<<<<< HEAD
|
||||
<!--l. 496--><p class="indent" > <a
|
||||
id="x18-17013r6"></a><hr class="float"><div class="float"
|
||||
>
|
||||
@@ -2565,22 +2597,19 @@ class="content">Parameters defining the smoother or the details of the one-level
|
||||
|
||||
|
||||
<!--l. 674--><div class="crosslinks"><p class="noindent"><span
|
||||
=======
|
||||
<!--l. 72--><div class="crosslinks"><p class="noindent"><span
|
||||
>>>>>>> development
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu9.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlsu7.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlsu7.html#tailuserhtmlsu7.html" ><span
|
||||
class="cmr-12">prev-tail</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlsu8.html" ><span
|
||||
class="cmr-12">front</span></a><span
|
||||
class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu8.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 674--><p class="indent" > <a
|
||||
<!--l. 72--><p class="indent" > <a
|
||||
id="tailuserhtmlsu8.html"></a>
|
||||
</body></html>
|
||||
|
||||
+2511
-46
File diff suppressed because it is too large
Load Diff
+13
-1
@@ -48,7 +48,7 @@ work in the expected way. Our advice is first to download the LAPACK tarfile fro
|
||||
\href{http://www.netlib.org/lapack}{www.netlib.org/lapack} and install it independently of ATLAS. In this case,
|
||||
you need to modify the OPTS and NOOPT definitions for including -fPIC compilation option
|
||||
in the make.inc file of the LAPACK library.
|
||||
\item[MPI] \cite{MPI2,MPI1} A version of MPI is available on most
|
||||
\item[MPI] \cite{MPI2,MPI1} A version of MPI is available on most
|
||||
high-performance computing systems.
|
||||
\item[PSBLAS] \cite{PSBLASGUIDE,psblas_00} Parallel Sparse BLAS (PSBLAS) is
|
||||
available from
|
||||
@@ -61,6 +61,18 @@ Please note that the four previous libraries must have Fortran
|
||||
interfaces compatible with AMG4PSBLAS; usually this means that they
|
||||
should all be built with the same compiler being used for AMG4PSBLAS.
|
||||
|
||||
If you want to use the PSBLAS support for NVIDIA GPUs, you will also
|
||||
need:
|
||||
\begin{description}
|
||||
\item[PSBLAS-EXT] Parallel Sparse BLAS (PSBLAS) Extensions,
|
||||
available from
|
||||
\href{https://psctoolkit.github.io/products/psblasext/}{psctoolkit.github.io/products/psblasext/}; version 1.3.0 (or later).
|
||||
\item[SPGPU] Sparse CUDA kernels for NVIDIA GPUs; available from
|
||||
GitHub, see also
|
||||
\href{https://psctoolkit.github.io/products/psblasext/}{psctoolkit.github.io/products/psblasext/}.
|
||||
\end{description}
|
||||
See also Sec~\ref{sec:gpu-example}.
|
||||
|
||||
\subsection{Optional third party libraries\label{sec:third-party}}
|
||||
|
||||
We provide interfaces to the following third-party software libraries;
|
||||
|
||||
@@ -416,6 +416,45 @@ call P%build(A,desc_A,info)
|
||||
\end{listing}
|
||||
|
||||
|
||||
|
||||
\subsection{GPU example\label{sec:gpu-example}}
|
||||
|
||||
The code reported in Figure~\ref{fig:gpu-ex1} shows how to set up a
|
||||
program exploiting the combined GPU capabilities of PSBLAS and
|
||||
AMG4PSBLAS.
|
||||
\begin{listing}[h!]
|
||||
\ifpdf
|
||||
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
|
||||
! build a one-level RAS with overlap 2 and ILU(0) on the local blocks.
|
||||
call P%init('AS',info)
|
||||
call P%set('SUB_OVR',2,info)
|
||||
call P%build(A,desc_A,info)
|
||||
... ...
|
||||
! solve Ax=b with preconditioned BiCGSTAB
|
||||
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
|
||||
\end{minted}
|
||||
\else
|
||||
\begin{center}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
{\small
|
||||
\begin{verbatim}
|
||||
! build a one-level RAS with overlap 2 and ILU(0) on the local blocks.
|
||||
call P%init('AS',info)
|
||||
call P%set('SUB_OVR',2,info)
|
||||
call P%build(A,desc_A,info)
|
||||
... ...
|
||||
! solve Ax=b with preconditioned BiCGSTAB
|
||||
call psb_krylov('BICGSTAB',A,P,b,x,tol,desc_A,info)
|
||||
\end{verbatim}
|
||||
}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
\fi
|
||||
\caption{setup of a one-level Schwarz preconditioner.\label{fig:gpu-ex1}}
|
||||
\end{listing}
|
||||
|
||||
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: "userguide"
|
||||
|
||||
Reference in New Issue
Block a user