diff --git a/docs/src/userinterface.tex b/docs/src/userinterface.tex index d2c8f155..b1a2424c 100644 --- a/docs/src/userinterface.tex +++ b/docs/src/userinterface.tex @@ -334,7 +334,7 @@ be applied. \textbf{\texttt{'SOC1'}}, \textbf{\texttt{'SOC2'}} & Type of aggregation algorithm: currently, - we implement to measures of strength of + we implement two measures of strength of connection, the one by Van\v{e}k, Mandel and Brezina~\cite{VANEK_MANDEL_BREZINA}, and the one by Gratton et al~\cite{GrHeJi:16}. \\ \hline diff --git a/mlprec/impl/aggregator/mld_c_dec_aggregator_mat_asb.f90 b/mlprec/impl/aggregator/mld_c_dec_aggregator_mat_asb.f90 index e0c20250..6057992a 100644 --- a/mlprec/impl/aggregator/mld_c_dec_aggregator_mat_asb.f90 +++ b/mlprec/impl/aggregator/mld_c_dec_aggregator_mat_asb.f90 @@ -92,7 +92,7 @@ subroutine mld_c_dec_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,& class(mld_c_dec_aggregator_type), target, intent(inout) :: ag type(mld_sml_parms), intent(inout) :: parms type(psb_cspmat_type), intent(in) :: a - type(psb_desc_type), intent(in) :: desc_a + type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(psb_lcspmat_type), intent(inout) :: op_prol, ac,op_restr type(psb_desc_type), intent(inout) :: desc_ac diff --git a/mlprec/impl/aggregator/mld_c_dec_aggregator_mat_bld.f90 b/mlprec/impl/aggregator/mld_c_dec_aggregator_mat_bld.f90 index 1a73cca2..964bf374 100644 --- a/mlprec/impl/aggregator/mld_c_dec_aggregator_mat_bld.f90 +++ b/mlprec/impl/aggregator/mld_c_dec_aggregator_mat_bld.f90 @@ -142,7 +142,7 @@ subroutine mld_c_dec_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_p class(mld_c_dec_aggregator_type), target, intent(inout) :: ag type(mld_sml_parms), intent(inout) :: parms type(psb_cspmat_type), intent(in) :: a - type(psb_desc_type), intent(in) :: desc_a + type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(psb_lcspmat_type), intent(inout) :: op_prol type(psb_lcspmat_type), intent(out) :: ac,op_restr diff --git a/mlprec/impl/aggregator/mld_c_spmm_bld_inner.f90 b/mlprec/impl/aggregator/mld_c_spmm_bld_inner.f90 index ec9dc221..eb2da61e 100644 --- a/mlprec/impl/aggregator/mld_c_spmm_bld_inner.f90 +++ b/mlprec/impl/aggregator/mld_c_spmm_bld_inner.f90 @@ -62,7 +62,7 @@ subroutine mld_c_spmm_bld_inner(a_csr,desc_a,nlaggr,parms,ac,& integer(psb_ipk_) :: debug_level, debug_unit, naggr integer(psb_lpk_) :: nrow, nglob, ncol, ntaggr, nzl, ip, & & nzt, naggrm1, naggrp1, i, k - integer(psb_lpk_) :: nrsave, ncsave, nzsave, nza, nrpsave, ncpsave, nzpsave + integer(psb_lpk_) :: nrsave, ncsave, nzsave, nza logical, parameter :: do_timings=.true., oldstyle=.false., debug=.false. integer(psb_ipk_), save :: idx_spspmm=-1 @@ -89,10 +89,6 @@ subroutine mld_c_spmm_bld_inner(a_csr,desc_a,nlaggr,parms,ac,& naggrm1 = sum(nlaggr(1:me)) naggrp1 = sum(nlaggr(1:me+1)) !write(0,*)me,' ',name,' input sizes',nlaggr(:),':',naggr - nrpsave = coo_prol%get_nrows() - ncpsave = coo_prol%get_ncols() - nzpsave = coo_prol%get_nzeros() - !write(0,*)me,' ',name,' input coo_prol ',nrpsave,ncpsave,nzpsave ! ! Here COO_PROL should be with GLOBAL indices on the cols @@ -205,7 +201,7 @@ subroutine mld_c_spmm_bld_inner(a_csr,desc_a,nlaggr,parms,ac,& if (debug_level >= psb_debug_outer_) & & write(debug_unit,*) me,' ',trim(name),& - & 'Done smooth_aggregate ' + & 'Done spmm_bld_inner ' call psb_erractionrestore(err_act) return diff --git a/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_asb.f90 b/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_asb.f90 index 90a12d83..6fab2ee9 100644 --- a/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_asb.f90 +++ b/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_asb.f90 @@ -92,7 +92,7 @@ subroutine mld_d_dec_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,& class(mld_d_dec_aggregator_type), target, intent(inout) :: ag type(mld_dml_parms), intent(inout) :: parms type(psb_dspmat_type), intent(in) :: a - type(psb_desc_type), intent(in) :: desc_a + type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(psb_ldspmat_type), intent(inout) :: op_prol, ac,op_restr type(psb_desc_type), intent(inout) :: desc_ac diff --git a/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_bld.f90 b/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_bld.f90 index b0317d76..fa8bd60b 100644 --- a/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_bld.f90 +++ b/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_bld.f90 @@ -142,7 +142,7 @@ subroutine mld_d_dec_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_p class(mld_d_dec_aggregator_type), target, intent(inout) :: ag type(mld_dml_parms), intent(inout) :: parms type(psb_dspmat_type), intent(in) :: a - type(psb_desc_type), intent(in) :: desc_a + type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(psb_ldspmat_type), intent(inout) :: op_prol type(psb_ldspmat_type), intent(out) :: ac,op_restr diff --git a/mlprec/impl/aggregator/mld_d_spmm_bld_inner.f90 b/mlprec/impl/aggregator/mld_d_spmm_bld_inner.f90 index bd79f475..c9cca92c 100644 --- a/mlprec/impl/aggregator/mld_d_spmm_bld_inner.f90 +++ b/mlprec/impl/aggregator/mld_d_spmm_bld_inner.f90 @@ -62,7 +62,7 @@ subroutine mld_d_spmm_bld_inner(a_csr,desc_a,nlaggr,parms,ac,& integer(psb_ipk_) :: debug_level, debug_unit, naggr integer(psb_lpk_) :: nrow, nglob, ncol, ntaggr, nzl, ip, & & nzt, naggrm1, naggrp1, i, k - integer(psb_lpk_) :: nrsave, ncsave, nzsave, nza, nrpsave, ncpsave, nzpsave + integer(psb_lpk_) :: nrsave, ncsave, nzsave, nza logical, parameter :: do_timings=.true., oldstyle=.false., debug=.false. integer(psb_ipk_), save :: idx_spspmm=-1 @@ -89,10 +89,6 @@ subroutine mld_d_spmm_bld_inner(a_csr,desc_a,nlaggr,parms,ac,& naggrm1 = sum(nlaggr(1:me)) naggrp1 = sum(nlaggr(1:me+1)) !write(0,*)me,' ',name,' input sizes',nlaggr(:),':',naggr - nrpsave = coo_prol%get_nrows() - ncpsave = coo_prol%get_ncols() - nzpsave = coo_prol%get_nzeros() - !write(0,*)me,' ',name,' input coo_prol ',nrpsave,ncpsave,nzpsave ! ! Here COO_PROL should be with GLOBAL indices on the cols @@ -205,7 +201,7 @@ subroutine mld_d_spmm_bld_inner(a_csr,desc_a,nlaggr,parms,ac,& if (debug_level >= psb_debug_outer_) & & write(debug_unit,*) me,' ',trim(name),& - & 'Done smooth_aggregate ' + & 'Done spmm_bld_inner ' call psb_erractionrestore(err_act) return diff --git a/mlprec/impl/aggregator/mld_s_dec_aggregator_mat_asb.f90 b/mlprec/impl/aggregator/mld_s_dec_aggregator_mat_asb.f90 index 15f2d347..254cc55a 100644 --- a/mlprec/impl/aggregator/mld_s_dec_aggregator_mat_asb.f90 +++ b/mlprec/impl/aggregator/mld_s_dec_aggregator_mat_asb.f90 @@ -92,7 +92,7 @@ subroutine mld_s_dec_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,& class(mld_s_dec_aggregator_type), target, intent(inout) :: ag type(mld_sml_parms), intent(inout) :: parms type(psb_sspmat_type), intent(in) :: a - type(psb_desc_type), intent(in) :: desc_a + type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(psb_lsspmat_type), intent(inout) :: op_prol, ac,op_restr type(psb_desc_type), intent(inout) :: desc_ac diff --git a/mlprec/impl/aggregator/mld_s_dec_aggregator_mat_bld.f90 b/mlprec/impl/aggregator/mld_s_dec_aggregator_mat_bld.f90 index e1008f91..23848360 100644 --- a/mlprec/impl/aggregator/mld_s_dec_aggregator_mat_bld.f90 +++ b/mlprec/impl/aggregator/mld_s_dec_aggregator_mat_bld.f90 @@ -142,7 +142,7 @@ subroutine mld_s_dec_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_p class(mld_s_dec_aggregator_type), target, intent(inout) :: ag type(mld_sml_parms), intent(inout) :: parms type(psb_sspmat_type), intent(in) :: a - type(psb_desc_type), intent(in) :: desc_a + type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(psb_lsspmat_type), intent(inout) :: op_prol type(psb_lsspmat_type), intent(out) :: ac,op_restr diff --git a/mlprec/impl/aggregator/mld_s_spmm_bld_inner.f90 b/mlprec/impl/aggregator/mld_s_spmm_bld_inner.f90 index d7acb319..925f8207 100644 --- a/mlprec/impl/aggregator/mld_s_spmm_bld_inner.f90 +++ b/mlprec/impl/aggregator/mld_s_spmm_bld_inner.f90 @@ -62,7 +62,7 @@ subroutine mld_s_spmm_bld_inner(a_csr,desc_a,nlaggr,parms,ac,& integer(psb_ipk_) :: debug_level, debug_unit, naggr integer(psb_lpk_) :: nrow, nglob, ncol, ntaggr, nzl, ip, & & nzt, naggrm1, naggrp1, i, k - integer(psb_lpk_) :: nrsave, ncsave, nzsave, nza, nrpsave, ncpsave, nzpsave + integer(psb_lpk_) :: nrsave, ncsave, nzsave, nza logical, parameter :: do_timings=.true., oldstyle=.false., debug=.false. integer(psb_ipk_), save :: idx_spspmm=-1 @@ -89,10 +89,6 @@ subroutine mld_s_spmm_bld_inner(a_csr,desc_a,nlaggr,parms,ac,& naggrm1 = sum(nlaggr(1:me)) naggrp1 = sum(nlaggr(1:me+1)) !write(0,*)me,' ',name,' input sizes',nlaggr(:),':',naggr - nrpsave = coo_prol%get_nrows() - ncpsave = coo_prol%get_ncols() - nzpsave = coo_prol%get_nzeros() - !write(0,*)me,' ',name,' input coo_prol ',nrpsave,ncpsave,nzpsave ! ! Here COO_PROL should be with GLOBAL indices on the cols @@ -205,7 +201,7 @@ subroutine mld_s_spmm_bld_inner(a_csr,desc_a,nlaggr,parms,ac,& if (debug_level >= psb_debug_outer_) & & write(debug_unit,*) me,' ',trim(name),& - & 'Done smooth_aggregate ' + & 'Done spmm_bld_inner ' call psb_erractionrestore(err_act) return diff --git a/mlprec/impl/aggregator/mld_z_dec_aggregator_mat_asb.f90 b/mlprec/impl/aggregator/mld_z_dec_aggregator_mat_asb.f90 index a71473a7..fcc10cea 100644 --- a/mlprec/impl/aggregator/mld_z_dec_aggregator_mat_asb.f90 +++ b/mlprec/impl/aggregator/mld_z_dec_aggregator_mat_asb.f90 @@ -92,7 +92,7 @@ subroutine mld_z_dec_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,& class(mld_z_dec_aggregator_type), target, intent(inout) :: ag type(mld_dml_parms), intent(inout) :: parms type(psb_zspmat_type), intent(in) :: a - type(psb_desc_type), intent(in) :: desc_a + type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(psb_lzspmat_type), intent(inout) :: op_prol, ac,op_restr type(psb_desc_type), intent(inout) :: desc_ac diff --git a/mlprec/impl/aggregator/mld_z_dec_aggregator_mat_bld.f90 b/mlprec/impl/aggregator/mld_z_dec_aggregator_mat_bld.f90 index 219049eb..2a1dc1fa 100644 --- a/mlprec/impl/aggregator/mld_z_dec_aggregator_mat_bld.f90 +++ b/mlprec/impl/aggregator/mld_z_dec_aggregator_mat_bld.f90 @@ -142,7 +142,7 @@ subroutine mld_z_dec_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_p class(mld_z_dec_aggregator_type), target, intent(inout) :: ag type(mld_dml_parms), intent(inout) :: parms type(psb_zspmat_type), intent(in) :: a - type(psb_desc_type), intent(in) :: desc_a + type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(psb_lzspmat_type), intent(inout) :: op_prol type(psb_lzspmat_type), intent(out) :: ac,op_restr diff --git a/mlprec/impl/aggregator/mld_z_spmm_bld_inner.f90 b/mlprec/impl/aggregator/mld_z_spmm_bld_inner.f90 index 0fbcb9ad..d7f3308d 100644 --- a/mlprec/impl/aggregator/mld_z_spmm_bld_inner.f90 +++ b/mlprec/impl/aggregator/mld_z_spmm_bld_inner.f90 @@ -62,7 +62,7 @@ subroutine mld_z_spmm_bld_inner(a_csr,desc_a,nlaggr,parms,ac,& integer(psb_ipk_) :: debug_level, debug_unit, naggr integer(psb_lpk_) :: nrow, nglob, ncol, ntaggr, nzl, ip, & & nzt, naggrm1, naggrp1, i, k - integer(psb_lpk_) :: nrsave, ncsave, nzsave, nza, nrpsave, ncpsave, nzpsave + integer(psb_lpk_) :: nrsave, ncsave, nzsave, nza logical, parameter :: do_timings=.true., oldstyle=.false., debug=.false. integer(psb_ipk_), save :: idx_spspmm=-1 @@ -89,10 +89,6 @@ subroutine mld_z_spmm_bld_inner(a_csr,desc_a,nlaggr,parms,ac,& naggrm1 = sum(nlaggr(1:me)) naggrp1 = sum(nlaggr(1:me+1)) !write(0,*)me,' ',name,' input sizes',nlaggr(:),':',naggr - nrpsave = coo_prol%get_nrows() - ncpsave = coo_prol%get_ncols() - nzpsave = coo_prol%get_nzeros() - !write(0,*)me,' ',name,' input coo_prol ',nrpsave,ncpsave,nzpsave ! ! Here COO_PROL should be with GLOBAL indices on the cols @@ -205,7 +201,7 @@ subroutine mld_z_spmm_bld_inner(a_csr,desc_a,nlaggr,parms,ac,& if (debug_level >= psb_debug_outer_) & & write(debug_unit,*) me,' ',trim(name),& - & 'Done smooth_aggregate ' + & 'Done spmm_bld_inner ' call psb_erractionrestore(err_act) return diff --git a/mlprec/impl/level/mld_c_base_onelev_mat_asb.f90 b/mlprec/impl/level/mld_c_base_onelev_mat_asb.f90 index 0a5a98f0..f0c2ae53 100644 --- a/mlprec/impl/level/mld_c_base_onelev_mat_asb.f90 +++ b/mlprec/impl/level/mld_c_base_onelev_mat_asb.f90 @@ -94,7 +94,7 @@ subroutine mld_c_base_onelev_mat_asb(lv,a,desc_a,ilaggr,nlaggr,op_prol,info) ! Arguments class(mld_c_onelev_type), intent(inout), target :: lv type(psb_cspmat_type), intent(in) :: a - type(psb_desc_type), intent(in) :: desc_a + type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: nlaggr(:) integer(psb_lpk_), intent(inout) :: ilaggr(:) type(psb_lcspmat_type), intent(inout) :: op_prol diff --git a/mlprec/impl/level/mld_d_base_onelev_mat_asb.f90 b/mlprec/impl/level/mld_d_base_onelev_mat_asb.f90 index bdd587d1..2e5cb2ee 100644 --- a/mlprec/impl/level/mld_d_base_onelev_mat_asb.f90 +++ b/mlprec/impl/level/mld_d_base_onelev_mat_asb.f90 @@ -94,7 +94,7 @@ subroutine mld_d_base_onelev_mat_asb(lv,a,desc_a,ilaggr,nlaggr,op_prol,info) ! Arguments class(mld_d_onelev_type), intent(inout), target :: lv type(psb_dspmat_type), intent(in) :: a - type(psb_desc_type), intent(in) :: desc_a + type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: nlaggr(:) integer(psb_lpk_), intent(inout) :: ilaggr(:) type(psb_ldspmat_type), intent(inout) :: op_prol diff --git a/mlprec/impl/level/mld_s_base_onelev_mat_asb.f90 b/mlprec/impl/level/mld_s_base_onelev_mat_asb.f90 index 65367375..ebcf3b25 100644 --- a/mlprec/impl/level/mld_s_base_onelev_mat_asb.f90 +++ b/mlprec/impl/level/mld_s_base_onelev_mat_asb.f90 @@ -94,7 +94,7 @@ subroutine mld_s_base_onelev_mat_asb(lv,a,desc_a,ilaggr,nlaggr,op_prol,info) ! Arguments class(mld_s_onelev_type), intent(inout), target :: lv type(psb_sspmat_type), intent(in) :: a - type(psb_desc_type), intent(in) :: desc_a + type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: nlaggr(:) integer(psb_lpk_), intent(inout) :: ilaggr(:) type(psb_lsspmat_type), intent(inout) :: op_prol diff --git a/mlprec/impl/level/mld_z_base_onelev_mat_asb.f90 b/mlprec/impl/level/mld_z_base_onelev_mat_asb.f90 index d15eab3f..15f70b01 100644 --- a/mlprec/impl/level/mld_z_base_onelev_mat_asb.f90 +++ b/mlprec/impl/level/mld_z_base_onelev_mat_asb.f90 @@ -94,7 +94,7 @@ subroutine mld_z_base_onelev_mat_asb(lv,a,desc_a,ilaggr,nlaggr,op_prol,info) ! Arguments class(mld_z_onelev_type), intent(inout), target :: lv type(psb_zspmat_type), intent(in) :: a - type(psb_desc_type), intent(in) :: desc_a + type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: nlaggr(:) integer(psb_lpk_), intent(inout) :: ilaggr(:) type(psb_lzspmat_type), intent(inout) :: op_prol diff --git a/mlprec/impl/mld_c_hierarchy_bld.f90 b/mlprec/impl/mld_c_hierarchy_bld.f90 index 3b69afdf..f9678195 100644 --- a/mlprec/impl/mld_c_hierarchy_bld.f90 +++ b/mlprec/impl/mld_c_hierarchy_bld.f90 @@ -312,7 +312,6 @@ subroutine mld_c_hierarchy_bld(a,desc_a,prec,info) & a_err='Map build') goto 9999 endif - if (i= psb_debug_outer_) & & write(debug_unit,*) me,' ',trim(name),& @@ -408,6 +407,7 @@ subroutine mld_c_hierarchy_bld(a,desc_a,prec,info) & a_err='Map build') goto 9999 endif + if (i= psb_debug_outer_) & & write(debug_unit,*) me,' ',trim(name),& @@ -408,6 +407,7 @@ subroutine mld_d_hierarchy_bld(a,desc_a,prec,info) & a_err='Map build') goto 9999 endif + if (i= psb_debug_outer_) & & write(debug_unit,*) me,' ',trim(name),& @@ -408,6 +407,7 @@ subroutine mld_s_hierarchy_bld(a,desc_a,prec,info) & a_err='Map build') goto 9999 endif + if (i= psb_debug_outer_) & & write(debug_unit,*) me,' ',trim(name),& @@ -408,6 +407,7 @@ subroutine mld_z_hierarchy_bld(a,desc_a,prec,info) & a_err='Map build') goto 9999 endif + if (i