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 c541cdd3..01d6e6e2 100644 --- a/mlprec/impl/aggregator/mld_c_dec_aggregator_mat_asb.f90 +++ b/mlprec/impl/aggregator/mld_c_dec_aggregator_mat_asb.f90 @@ -99,8 +99,6 @@ subroutine mld_c_dec_aggregator_mat_asb(ag,parms,a,desc_a,& ! integer(psb_ipk_) :: ictxt, np, me type(psb_lc_coo_sparse_mat) :: tmpcoo - type(psb_c_coo_sparse_mat) :: acoo - type(psb_lc_csr_sparse_mat) :: acsr1 type(psb_lcspmat_type) :: tmp_ac integer(psb_ipk_) :: i_nr, i_nc, i_nl, nzl integer(psb_lpk_) :: ntaggr diff --git a/mlprec/impl/aggregator/mld_c_ptap.f90 b/mlprec/impl/aggregator/mld_c_ptap.f90 index 37467014..66be54f4 100644 --- a/mlprec/impl/aggregator/mld_c_ptap.f90 +++ b/mlprec/impl/aggregator/mld_c_ptap.f90 @@ -253,7 +253,7 @@ subroutine mld_c_lc_ptap(a_csr,desc_a,nlaggr,parms,ac,& & coo_prol,desc_ac,coo_restr,info,desc_ax) use psb_base_mod use mld_c_inner_mod - use mld_c_base_aggregator_mod, mld_protect_name => mld_c_lc_ptap + use mld_c_base_aggregator_mod !, mld_protect_name => mld_c_lc_ptap implicit none ! Arguments @@ -470,7 +470,7 @@ subroutine mld_lc_ptap(a_csr,desc_a,nlaggr,parms,ac,& & coo_prol,desc_ac,coo_restr,info,desc_ax) use psb_base_mod use mld_c_inner_mod - use mld_c_base_aggregator_mod, mld_protect_name => mld_lc_ptap + use mld_c_base_aggregator_mod!, mld_protect_name => mld_lc_ptap implicit none ! Arguments diff --git a/mlprec/impl/aggregator/mld_caggrmat_nosmth_bld.f90 b/mlprec/impl/aggregator/mld_caggrmat_nosmth_bld.f90 index 849a4cf8..896cdcae 100644 --- a/mlprec/impl/aggregator/mld_caggrmat_nosmth_bld.f90 +++ b/mlprec/impl/aggregator/mld_caggrmat_nosmth_bld.f90 @@ -97,7 +97,7 @@ ! ! subroutine mld_caggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& - & ac,desc_ac,op_prol,op_restr,info) + & ac,desc_ac,op_prol,op_restr,t_prol,info) use psb_base_mod use mld_base_prec_type use mld_c_inner_mod, mld_protect_name => mld_caggrmat_nosmth_bld @@ -109,8 +109,8 @@ subroutine mld_caggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(mld_sml_parms), intent(inout) :: parms - type(psb_lcspmat_type), intent(inout) :: op_prol - type(psb_lcspmat_type), intent(out) :: ac,op_restr + type(psb_cspmat_type), intent(inout) :: op_prol,ac,op_restr + type(psb_lcspmat_type), intent(inout) :: t_prol type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info @@ -118,10 +118,9 @@ subroutine mld_caggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& integer(psb_ipk_) :: err_act integer(psb_ipk_) :: ictxt, np, me, icomm, minfo character(len=20) :: name - integer(psb_ipk_) :: ierr(5) - type(psb_lcspmat_type) :: la - type(psb_lc_coo_sparse_mat) :: ac_coo, tmpcoo, coo_prol, coo_restr - type(psb_lc_csr_sparse_mat) :: acsr1, acsr2, acsr + type(psb_lc_coo_sparse_mat) :: lcoo_prol + type(psb_c_coo_sparse_mat) :: coo_prol, coo_restr + type(psb_c_csr_sparse_mat) :: acsr integer(psb_ipk_) :: debug_level, debug_unit integer(psb_lpk_) :: nrow, nglob, ncol, ntaggr, nzl, ip, & & naggr, nzt, naggrm1, naggrp1, i, k @@ -148,13 +147,14 @@ subroutine mld_caggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& naggrp1 = sum(nlaggr(1:me+1)) call a%cp_to(acsr) - call op_prol%mv_to(coo_prol) + call t_prol%mv_to(lcoo_prol) inaggr = naggr call psb_cdall(ictxt,desc_ac,info,nl=inaggr) - nzlp = coo_prol%get_nzeros() - call desc_ac%indxmap%g2lip_ins(coo_prol%ja(1:nzlp),info) - call coo_prol%set_ncols(desc_ac%get_local_cols()) - + nzlp = lcoo_prol%get_nzeros() + call desc_ac%indxmap%g2lip_ins(lcoo_prol%ja(1:nzlp),info) + call lcoo_prol%set_ncols(desc_ac%get_local_cols()) + call lcoo_prol%cp_to_icoo(coo_prol,info) + if (debug) call check_coo(me,trim(name)//' Check 1 on coo_prol:',coo_prol) call psb_cdasb(desc_ac,info) @@ -184,7 +184,7 @@ contains subroutine check_coo(me,string,coo) implicit none integer(psb_ipk_) :: me - type(psb_lc_coo_sparse_mat) :: coo + type(psb_c_coo_sparse_mat) :: coo character(len=*) :: string integer(psb_lpk_) :: nr,nc,nz nr = coo%get_nrows() diff --git a/mlprec/impl/aggregator/mld_caggrmat_smth_bld.f90 b/mlprec/impl/aggregator/mld_caggrmat_smth_bld.f90 index 97b221e0..4497ba41 100644 --- a/mlprec/impl/aggregator/mld_caggrmat_smth_bld.f90 +++ b/mlprec/impl/aggregator/mld_caggrmat_smth_bld.f90 @@ -103,7 +103,7 @@ ! Error code. ! subroutine mld_caggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& - & ac,desc_ac,op_prol,op_restr,info) + & ac,desc_ac,op_prol,op_restr,t_prol,info) use psb_base_mod use mld_base_prec_type use mld_c_inner_mod, mld_protect_name => mld_caggrmat_smth_bld @@ -116,8 +116,8 @@ subroutine mld_caggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(mld_sml_parms), intent(inout) :: parms - type(psb_lcspmat_type), intent(inout) :: op_prol - type(psb_lcspmat_type), intent(out) :: ac,op_restr + type(psb_cspmat_type), intent(out) :: op_prol,ac,op_restr + type(psb_lcspmat_type), intent(inout) :: t_prol type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info @@ -127,8 +127,9 @@ subroutine mld_caggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& integer(psb_ipk_) :: inaggr, nzlp integer(psb_ipk_) :: ictxt, np, me character(len=20) :: name - type(psb_lc_coo_sparse_mat) :: coo_prol, coo_restr, tmpcoo - type(psb_lc_csr_sparse_mat) :: acsr1, acsrf, csr_prol, acsr + type(psb_lc_coo_sparse_mat) :: tmpcoo + type(psb_c_coo_sparse_mat) :: coo_prol, coo_restr + type(psb_c_csr_sparse_mat) :: acsr1, acsrf, csr_prol, acsr complex(psb_spk_), allocatable :: adiag(:) real(psb_spk_), allocatable :: arwsum(:) integer(psb_ipk_) :: ierr(5) @@ -177,7 +178,6 @@ subroutine mld_caggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& if (info == psb_success_) & & call psb_halo(adiag,desc_a,info) if (info == psb_success_) call a%cp_to(acsr) - call op_prol%mv_to(coo_prol) if(info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='sp_getdiag') @@ -256,19 +256,21 @@ subroutine mld_caggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& call acsrf%scal(adiag,info) if (info /= psb_success_) goto 9999 + call t_prol%mv_to(tmpcoo) inaggr = naggr call psb_cdall(ictxt,desc_ac,info,nl=inaggr) - nzlp = coo_prol%get_nzeros() - call desc_ac%indxmap%g2lip_ins(coo_prol%ja(1:nzlp),info) - call coo_prol%set_ncols(desc_ac%get_local_cols()) - call coo_prol%mv_to_fmt(csr_prol,info) + nzlp = tmpcoo%get_nzeros() + call desc_ac%indxmap%g2lip_ins(tmpcoo%ja(1:nzlp),info) + call tmpcoo%set_ncols(desc_ac%get_local_cols()) + call tmpcoo%mv_to_ifmt(csr_prol,info) + call psb_cdasb(desc_ac,info) call psb_cd_reinit(desc_ac,info) ! ! Build the smoothed prolongator using either A or Af ! acsr1 = (I-w*D*A) Prol acsr1 = (I-w*D*Af) Prol ! This is always done through the variable acsrf which - ! is a bit less readable, butsaves space and one extra matrix copy + ! is a bit less readable, but saves space and one matrix copy ! call omega_smooth(omega,acsrf) call psb_par_spspmm(acsrf,desc_a,csr_prol,acsr1,desc_ac,info) @@ -306,7 +308,7 @@ contains subroutine omega_smooth(omega,acsr) implicit none real(psb_spk_),intent(in) :: omega - type(psb_lc_csr_sparse_mat), intent(inout) :: acsr + type(psb_c_csr_sparse_mat), intent(inout) :: acsr ! integer(psb_lpk_) :: i,j do i=1,acsr%get_nrows() 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 71af0aec..00ae22b0 100644 --- a/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_asb.f90 +++ b/mlprec/impl/aggregator/mld_d_dec_aggregator_mat_asb.f90 @@ -99,8 +99,6 @@ subroutine mld_d_dec_aggregator_mat_asb(ag,parms,a,desc_a,& ! integer(psb_ipk_) :: ictxt, np, me type(psb_ld_coo_sparse_mat) :: tmpcoo - type(psb_d_coo_sparse_mat) :: acoo - type(psb_ld_csr_sparse_mat) :: acsr1 type(psb_ldspmat_type) :: tmp_ac integer(psb_ipk_) :: i_nr, i_nc, i_nl, nzl integer(psb_lpk_) :: ntaggr diff --git a/mlprec/impl/aggregator/mld_d_ptap.f90 b/mlprec/impl/aggregator/mld_d_ptap.f90 index bf53ff74..1906d211 100644 --- a/mlprec/impl/aggregator/mld_d_ptap.f90 +++ b/mlprec/impl/aggregator/mld_d_ptap.f90 @@ -253,7 +253,7 @@ subroutine mld_d_ld_ptap(a_csr,desc_a,nlaggr,parms,ac,& & coo_prol,desc_ac,coo_restr,info,desc_ax) use psb_base_mod use mld_d_inner_mod - use mld_d_base_aggregator_mod, mld_protect_name => mld_d_ld_ptap + use mld_d_base_aggregator_mod !, mld_protect_name => mld_d_ld_ptap implicit none ! Arguments @@ -470,7 +470,7 @@ subroutine mld_ld_ptap(a_csr,desc_a,nlaggr,parms,ac,& & coo_prol,desc_ac,coo_restr,info,desc_ax) use psb_base_mod use mld_d_inner_mod - use mld_d_base_aggregator_mod, mld_protect_name => mld_ld_ptap + use mld_d_base_aggregator_mod!, mld_protect_name => mld_ld_ptap implicit none ! Arguments diff --git a/mlprec/impl/aggregator/mld_daggrmat_nosmth_bld.f90 b/mlprec/impl/aggregator/mld_daggrmat_nosmth_bld.f90 index fe7d9e77..fe2f996c 100644 --- a/mlprec/impl/aggregator/mld_daggrmat_nosmth_bld.f90 +++ b/mlprec/impl/aggregator/mld_daggrmat_nosmth_bld.f90 @@ -97,7 +97,7 @@ ! ! subroutine mld_daggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& - & ac,desc_ac,op_prol,op_restr,info) + & ac,desc_ac,op_prol,op_restr,t_prol,info) use psb_base_mod use mld_base_prec_type use mld_d_inner_mod, mld_protect_name => mld_daggrmat_nosmth_bld @@ -109,8 +109,8 @@ subroutine mld_daggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(mld_dml_parms), intent(inout) :: parms - type(psb_ldspmat_type), intent(inout) :: op_prol - type(psb_ldspmat_type), intent(out) :: ac,op_restr + type(psb_dspmat_type), intent(inout) :: op_prol,ac,op_restr + type(psb_ldspmat_type), intent(inout) :: t_prol type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info @@ -118,10 +118,9 @@ subroutine mld_daggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& integer(psb_ipk_) :: err_act integer(psb_ipk_) :: ictxt, np, me, icomm, minfo character(len=20) :: name - integer(psb_ipk_) :: ierr(5) - type(psb_ldspmat_type) :: la - type(psb_ld_coo_sparse_mat) :: ac_coo, tmpcoo, coo_prol, coo_restr - type(psb_ld_csr_sparse_mat) :: acsr1, acsr2, acsr + type(psb_ld_coo_sparse_mat) :: lcoo_prol + type(psb_d_coo_sparse_mat) :: coo_prol, coo_restr + type(psb_d_csr_sparse_mat) :: acsr integer(psb_ipk_) :: debug_level, debug_unit integer(psb_lpk_) :: nrow, nglob, ncol, ntaggr, nzl, ip, & & naggr, nzt, naggrm1, naggrp1, i, k @@ -148,13 +147,14 @@ subroutine mld_daggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& naggrp1 = sum(nlaggr(1:me+1)) call a%cp_to(acsr) - call op_prol%mv_to(coo_prol) + call t_prol%mv_to(lcoo_prol) inaggr = naggr call psb_cdall(ictxt,desc_ac,info,nl=inaggr) - nzlp = coo_prol%get_nzeros() - call desc_ac%indxmap%g2lip_ins(coo_prol%ja(1:nzlp),info) - call coo_prol%set_ncols(desc_ac%get_local_cols()) - + nzlp = lcoo_prol%get_nzeros() + call desc_ac%indxmap%g2lip_ins(lcoo_prol%ja(1:nzlp),info) + call lcoo_prol%set_ncols(desc_ac%get_local_cols()) + call lcoo_prol%cp_to_icoo(coo_prol,info) + if (debug) call check_coo(me,trim(name)//' Check 1 on coo_prol:',coo_prol) call psb_cdasb(desc_ac,info) @@ -184,7 +184,7 @@ contains subroutine check_coo(me,string,coo) implicit none integer(psb_ipk_) :: me - type(psb_ld_coo_sparse_mat) :: coo + type(psb_d_coo_sparse_mat) :: coo character(len=*) :: string integer(psb_lpk_) :: nr,nc,nz nr = coo%get_nrows() @@ -193,6 +193,5 @@ contains write(0,*) me,string,nr,nc,& & minval(coo%ia(1:nz)),maxval(coo%ia(1:nz)),& & minval(coo%ja(1:nz)),maxval(coo%ja(1:nz)) - end subroutine check_coo end subroutine mld_daggrmat_nosmth_bld diff --git a/mlprec/impl/aggregator/mld_daggrmat_smth_bld.f90 b/mlprec/impl/aggregator/mld_daggrmat_smth_bld.f90 index 874c8134..bf17e911 100644 --- a/mlprec/impl/aggregator/mld_daggrmat_smth_bld.f90 +++ b/mlprec/impl/aggregator/mld_daggrmat_smth_bld.f90 @@ -103,7 +103,7 @@ ! Error code. ! subroutine mld_daggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& - & ac,desc_ac,op_prol,op_restr,info) + & ac,desc_ac,op_prol,op_restr,t_prol,info) use psb_base_mod use mld_base_prec_type use mld_d_inner_mod, mld_protect_name => mld_daggrmat_smth_bld @@ -116,8 +116,8 @@ subroutine mld_daggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(mld_dml_parms), intent(inout) :: parms - type(psb_ldspmat_type), intent(inout) :: op_prol - type(psb_ldspmat_type), intent(out) :: ac,op_restr + type(psb_dspmat_type), intent(out) :: op_prol,ac,op_restr + type(psb_ldspmat_type), intent(inout) :: t_prol type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info @@ -127,8 +127,9 @@ subroutine mld_daggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& integer(psb_ipk_) :: inaggr, nzlp integer(psb_ipk_) :: ictxt, np, me character(len=20) :: name - type(psb_ld_coo_sparse_mat) :: coo_prol, coo_restr, tmpcoo - type(psb_ld_csr_sparse_mat) :: acsr1, acsrf, csr_prol, acsr + type(psb_ld_coo_sparse_mat) :: tmpcoo + type(psb_d_coo_sparse_mat) :: coo_prol, coo_restr + type(psb_d_csr_sparse_mat) :: acsr1, acsrf, csr_prol, acsr real(psb_dpk_), allocatable :: adiag(:) real(psb_dpk_), allocatable :: arwsum(:) integer(psb_ipk_) :: ierr(5) @@ -177,7 +178,6 @@ subroutine mld_daggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& if (info == psb_success_) & & call psb_halo(adiag,desc_a,info) if (info == psb_success_) call a%cp_to(acsr) - call op_prol%mv_to(coo_prol) if(info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='sp_getdiag') @@ -256,19 +256,21 @@ subroutine mld_daggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& call acsrf%scal(adiag,info) if (info /= psb_success_) goto 9999 + call t_prol%mv_to(tmpcoo) inaggr = naggr call psb_cdall(ictxt,desc_ac,info,nl=inaggr) - nzlp = coo_prol%get_nzeros() - call desc_ac%indxmap%g2lip_ins(coo_prol%ja(1:nzlp),info) - call coo_prol%set_ncols(desc_ac%get_local_cols()) - call coo_prol%mv_to_fmt(csr_prol,info) + nzlp = tmpcoo%get_nzeros() + call desc_ac%indxmap%g2lip_ins(tmpcoo%ja(1:nzlp),info) + call tmpcoo%set_ncols(desc_ac%get_local_cols()) + call tmpcoo%mv_to_ifmt(csr_prol,info) + call psb_cdasb(desc_ac,info) call psb_cd_reinit(desc_ac,info) ! ! Build the smoothed prolongator using either A or Af ! acsr1 = (I-w*D*A) Prol acsr1 = (I-w*D*Af) Prol ! This is always done through the variable acsrf which - ! is a bit less readable, butsaves space and one extra matrix copy + ! is a bit less readable, but saves space and one matrix copy ! call omega_smooth(omega,acsrf) call psb_par_spspmm(acsrf,desc_a,csr_prol,acsr1,desc_ac,info) @@ -306,7 +308,7 @@ contains subroutine omega_smooth(omega,acsr) implicit none real(psb_dpk_),intent(in) :: omega - type(psb_ld_csr_sparse_mat), intent(inout) :: acsr + type(psb_d_csr_sparse_mat), intent(inout) :: acsr ! integer(psb_lpk_) :: i,j do i=1,acsr%get_nrows() 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 4872558e..74bba297 100644 --- a/mlprec/impl/aggregator/mld_s_dec_aggregator_mat_asb.f90 +++ b/mlprec/impl/aggregator/mld_s_dec_aggregator_mat_asb.f90 @@ -99,8 +99,6 @@ subroutine mld_s_dec_aggregator_mat_asb(ag,parms,a,desc_a,& ! integer(psb_ipk_) :: ictxt, np, me type(psb_ls_coo_sparse_mat) :: tmpcoo - type(psb_s_coo_sparse_mat) :: acoo - type(psb_ls_csr_sparse_mat) :: acsr1 type(psb_lsspmat_type) :: tmp_ac integer(psb_ipk_) :: i_nr, i_nc, i_nl, nzl integer(psb_lpk_) :: ntaggr diff --git a/mlprec/impl/aggregator/mld_s_ptap.f90 b/mlprec/impl/aggregator/mld_s_ptap.f90 index 8d39dabd..0fd63fd0 100644 --- a/mlprec/impl/aggregator/mld_s_ptap.f90 +++ b/mlprec/impl/aggregator/mld_s_ptap.f90 @@ -253,7 +253,7 @@ subroutine mld_s_ls_ptap(a_csr,desc_a,nlaggr,parms,ac,& & coo_prol,desc_ac,coo_restr,info,desc_ax) use psb_base_mod use mld_s_inner_mod - use mld_s_base_aggregator_mod, mld_protect_name => mld_s_ls_ptap + use mld_s_base_aggregator_mod !, mld_protect_name => mld_s_ls_ptap implicit none ! Arguments @@ -470,7 +470,7 @@ subroutine mld_ls_ptap(a_csr,desc_a,nlaggr,parms,ac,& & coo_prol,desc_ac,coo_restr,info,desc_ax) use psb_base_mod use mld_s_inner_mod - use mld_s_base_aggregator_mod, mld_protect_name => mld_ls_ptap + use mld_s_base_aggregator_mod!, mld_protect_name => mld_ls_ptap implicit none ! Arguments diff --git a/mlprec/impl/aggregator/mld_saggrmat_nosmth_bld.f90 b/mlprec/impl/aggregator/mld_saggrmat_nosmth_bld.f90 index 2bf967a2..9b8db96a 100644 --- a/mlprec/impl/aggregator/mld_saggrmat_nosmth_bld.f90 +++ b/mlprec/impl/aggregator/mld_saggrmat_nosmth_bld.f90 @@ -97,7 +97,7 @@ ! ! subroutine mld_saggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& - & ac,desc_ac,op_prol,op_restr,info) + & ac,desc_ac,op_prol,op_restr,t_prol,info) use psb_base_mod use mld_base_prec_type use mld_s_inner_mod, mld_protect_name => mld_saggrmat_nosmth_bld @@ -109,8 +109,8 @@ subroutine mld_saggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(mld_sml_parms), intent(inout) :: parms - type(psb_lsspmat_type), intent(inout) :: op_prol - type(psb_lsspmat_type), intent(out) :: ac,op_restr + type(psb_sspmat_type), intent(inout) :: op_prol,ac,op_restr + type(psb_lsspmat_type), intent(inout) :: t_prol type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info @@ -118,10 +118,9 @@ subroutine mld_saggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& integer(psb_ipk_) :: err_act integer(psb_ipk_) :: ictxt, np, me, icomm, minfo character(len=20) :: name - integer(psb_ipk_) :: ierr(5) - type(psb_lsspmat_type) :: la - type(psb_ls_coo_sparse_mat) :: ac_coo, tmpcoo, coo_prol, coo_restr - type(psb_ls_csr_sparse_mat) :: acsr1, acsr2, acsr + type(psb_ls_coo_sparse_mat) :: lcoo_prol + type(psb_s_coo_sparse_mat) :: coo_prol, coo_restr + type(psb_s_csr_sparse_mat) :: acsr integer(psb_ipk_) :: debug_level, debug_unit integer(psb_lpk_) :: nrow, nglob, ncol, ntaggr, nzl, ip, & & naggr, nzt, naggrm1, naggrp1, i, k @@ -148,13 +147,14 @@ subroutine mld_saggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& naggrp1 = sum(nlaggr(1:me+1)) call a%cp_to(acsr) - call op_prol%mv_to(coo_prol) + call t_prol%mv_to(lcoo_prol) inaggr = naggr call psb_cdall(ictxt,desc_ac,info,nl=inaggr) - nzlp = coo_prol%get_nzeros() - call desc_ac%indxmap%g2lip_ins(coo_prol%ja(1:nzlp),info) - call coo_prol%set_ncols(desc_ac%get_local_cols()) - + nzlp = lcoo_prol%get_nzeros() + call desc_ac%indxmap%g2lip_ins(lcoo_prol%ja(1:nzlp),info) + call lcoo_prol%set_ncols(desc_ac%get_local_cols()) + call lcoo_prol%cp_to_icoo(coo_prol,info) + if (debug) call check_coo(me,trim(name)//' Check 1 on coo_prol:',coo_prol) call psb_cdasb(desc_ac,info) @@ -184,7 +184,7 @@ contains subroutine check_coo(me,string,coo) implicit none integer(psb_ipk_) :: me - type(psb_ls_coo_sparse_mat) :: coo + type(psb_s_coo_sparse_mat) :: coo character(len=*) :: string integer(psb_lpk_) :: nr,nc,nz nr = coo%get_nrows() diff --git a/mlprec/impl/aggregator/mld_saggrmat_smth_bld.f90 b/mlprec/impl/aggregator/mld_saggrmat_smth_bld.f90 index df2beec2..fb967d50 100644 --- a/mlprec/impl/aggregator/mld_saggrmat_smth_bld.f90 +++ b/mlprec/impl/aggregator/mld_saggrmat_smth_bld.f90 @@ -103,7 +103,7 @@ ! Error code. ! subroutine mld_saggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& - & ac,desc_ac,op_prol,op_restr,info) + & ac,desc_ac,op_prol,op_restr,t_prol,info) use psb_base_mod use mld_base_prec_type use mld_s_inner_mod, mld_protect_name => mld_saggrmat_smth_bld @@ -116,8 +116,8 @@ subroutine mld_saggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(mld_sml_parms), intent(inout) :: parms - type(psb_lsspmat_type), intent(inout) :: op_prol - type(psb_lsspmat_type), intent(out) :: ac,op_restr + type(psb_sspmat_type), intent(out) :: op_prol,ac,op_restr + type(psb_lsspmat_type), intent(inout) :: t_prol type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info @@ -127,8 +127,9 @@ subroutine mld_saggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& integer(psb_ipk_) :: inaggr, nzlp integer(psb_ipk_) :: ictxt, np, me character(len=20) :: name - type(psb_ls_coo_sparse_mat) :: coo_prol, coo_restr, tmpcoo - type(psb_ls_csr_sparse_mat) :: acsr1, acsrf, csr_prol, acsr + type(psb_ls_coo_sparse_mat) :: tmpcoo + type(psb_s_coo_sparse_mat) :: coo_prol, coo_restr + type(psb_s_csr_sparse_mat) :: acsr1, acsrf, csr_prol, acsr real(psb_spk_), allocatable :: adiag(:) real(psb_spk_), allocatable :: arwsum(:) integer(psb_ipk_) :: ierr(5) @@ -177,7 +178,6 @@ subroutine mld_saggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& if (info == psb_success_) & & call psb_halo(adiag,desc_a,info) if (info == psb_success_) call a%cp_to(acsr) - call op_prol%mv_to(coo_prol) if(info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='sp_getdiag') @@ -256,19 +256,21 @@ subroutine mld_saggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& call acsrf%scal(adiag,info) if (info /= psb_success_) goto 9999 + call t_prol%mv_to(tmpcoo) inaggr = naggr call psb_cdall(ictxt,desc_ac,info,nl=inaggr) - nzlp = coo_prol%get_nzeros() - call desc_ac%indxmap%g2lip_ins(coo_prol%ja(1:nzlp),info) - call coo_prol%set_ncols(desc_ac%get_local_cols()) - call coo_prol%mv_to_fmt(csr_prol,info) + nzlp = tmpcoo%get_nzeros() + call desc_ac%indxmap%g2lip_ins(tmpcoo%ja(1:nzlp),info) + call tmpcoo%set_ncols(desc_ac%get_local_cols()) + call tmpcoo%mv_to_ifmt(csr_prol,info) + call psb_cdasb(desc_ac,info) call psb_cd_reinit(desc_ac,info) ! ! Build the smoothed prolongator using either A or Af ! acsr1 = (I-w*D*A) Prol acsr1 = (I-w*D*Af) Prol ! This is always done through the variable acsrf which - ! is a bit less readable, butsaves space and one extra matrix copy + ! is a bit less readable, but saves space and one matrix copy ! call omega_smooth(omega,acsrf) call psb_par_spspmm(acsrf,desc_a,csr_prol,acsr1,desc_ac,info) @@ -306,7 +308,7 @@ contains subroutine omega_smooth(omega,acsr) implicit none real(psb_spk_),intent(in) :: omega - type(psb_ls_csr_sparse_mat), intent(inout) :: acsr + type(psb_s_csr_sparse_mat), intent(inout) :: acsr ! integer(psb_lpk_) :: i,j do i=1,acsr%get_nrows() 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 0514bee5..d0c50884 100644 --- a/mlprec/impl/aggregator/mld_z_dec_aggregator_mat_asb.f90 +++ b/mlprec/impl/aggregator/mld_z_dec_aggregator_mat_asb.f90 @@ -99,8 +99,6 @@ subroutine mld_z_dec_aggregator_mat_asb(ag,parms,a,desc_a,& ! integer(psb_ipk_) :: ictxt, np, me type(psb_lz_coo_sparse_mat) :: tmpcoo - type(psb_z_coo_sparse_mat) :: acoo - type(psb_lz_csr_sparse_mat) :: acsr1 type(psb_lzspmat_type) :: tmp_ac integer(psb_ipk_) :: i_nr, i_nc, i_nl, nzl integer(psb_lpk_) :: ntaggr diff --git a/mlprec/impl/aggregator/mld_z_ptap.f90 b/mlprec/impl/aggregator/mld_z_ptap.f90 index 9cc5a499..0f8e4cfb 100644 --- a/mlprec/impl/aggregator/mld_z_ptap.f90 +++ b/mlprec/impl/aggregator/mld_z_ptap.f90 @@ -253,7 +253,7 @@ subroutine mld_z_lz_ptap(a_csr,desc_a,nlaggr,parms,ac,& & coo_prol,desc_ac,coo_restr,info,desc_ax) use psb_base_mod use mld_z_inner_mod - use mld_z_base_aggregator_mod, mld_protect_name => mld_z_lz_ptap + use mld_z_base_aggregator_mod !, mld_protect_name => mld_z_lz_ptap implicit none ! Arguments @@ -470,7 +470,7 @@ subroutine mld_lz_ptap(a_csr,desc_a,nlaggr,parms,ac,& & coo_prol,desc_ac,coo_restr,info,desc_ax) use psb_base_mod use mld_z_inner_mod - use mld_z_base_aggregator_mod, mld_protect_name => mld_lz_ptap + use mld_z_base_aggregator_mod!, mld_protect_name => mld_lz_ptap implicit none ! Arguments diff --git a/mlprec/impl/aggregator/mld_zaggrmat_nosmth_bld.f90 b/mlprec/impl/aggregator/mld_zaggrmat_nosmth_bld.f90 index c04993a4..a4a82cb1 100644 --- a/mlprec/impl/aggregator/mld_zaggrmat_nosmth_bld.f90 +++ b/mlprec/impl/aggregator/mld_zaggrmat_nosmth_bld.f90 @@ -97,7 +97,7 @@ ! ! subroutine mld_zaggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& - & ac,desc_ac,op_prol,op_restr,info) + & ac,desc_ac,op_prol,op_restr,t_prol,info) use psb_base_mod use mld_base_prec_type use mld_z_inner_mod, mld_protect_name => mld_zaggrmat_nosmth_bld @@ -109,8 +109,8 @@ subroutine mld_zaggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(mld_dml_parms), intent(inout) :: parms - type(psb_lzspmat_type), intent(inout) :: op_prol - type(psb_lzspmat_type), intent(out) :: ac,op_restr + type(psb_zspmat_type), intent(inout) :: op_prol,ac,op_restr + type(psb_lzspmat_type), intent(inout) :: t_prol type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info @@ -118,10 +118,9 @@ subroutine mld_zaggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& integer(psb_ipk_) :: err_act integer(psb_ipk_) :: ictxt, np, me, icomm, minfo character(len=20) :: name - integer(psb_ipk_) :: ierr(5) - type(psb_lzspmat_type) :: la - type(psb_lz_coo_sparse_mat) :: ac_coo, tmpcoo, coo_prol, coo_restr - type(psb_lz_csr_sparse_mat) :: acsr1, acsr2, acsr + type(psb_lz_coo_sparse_mat) :: lcoo_prol + type(psb_z_coo_sparse_mat) :: coo_prol, coo_restr + type(psb_z_csr_sparse_mat) :: acsr integer(psb_ipk_) :: debug_level, debug_unit integer(psb_lpk_) :: nrow, nglob, ncol, ntaggr, nzl, ip, & & naggr, nzt, naggrm1, naggrp1, i, k @@ -148,13 +147,14 @@ subroutine mld_zaggrmat_nosmth_bld(a,desc_a,ilaggr,nlaggr,parms,& naggrp1 = sum(nlaggr(1:me+1)) call a%cp_to(acsr) - call op_prol%mv_to(coo_prol) + call t_prol%mv_to(lcoo_prol) inaggr = naggr call psb_cdall(ictxt,desc_ac,info,nl=inaggr) - nzlp = coo_prol%get_nzeros() - call desc_ac%indxmap%g2lip_ins(coo_prol%ja(1:nzlp),info) - call coo_prol%set_ncols(desc_ac%get_local_cols()) - + nzlp = lcoo_prol%get_nzeros() + call desc_ac%indxmap%g2lip_ins(lcoo_prol%ja(1:nzlp),info) + call lcoo_prol%set_ncols(desc_ac%get_local_cols()) + call lcoo_prol%cp_to_icoo(coo_prol,info) + if (debug) call check_coo(me,trim(name)//' Check 1 on coo_prol:',coo_prol) call psb_cdasb(desc_ac,info) @@ -184,7 +184,7 @@ contains subroutine check_coo(me,string,coo) implicit none integer(psb_ipk_) :: me - type(psb_lz_coo_sparse_mat) :: coo + type(psb_z_coo_sparse_mat) :: coo character(len=*) :: string integer(psb_lpk_) :: nr,nc,nz nr = coo%get_nrows() diff --git a/mlprec/impl/aggregator/mld_zaggrmat_smth_bld.f90 b/mlprec/impl/aggregator/mld_zaggrmat_smth_bld.f90 index f968e573..45d3fc7d 100644 --- a/mlprec/impl/aggregator/mld_zaggrmat_smth_bld.f90 +++ b/mlprec/impl/aggregator/mld_zaggrmat_smth_bld.f90 @@ -103,7 +103,7 @@ ! Error code. ! subroutine mld_zaggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& - & ac,desc_ac,op_prol,op_restr,info) + & ac,desc_ac,op_prol,op_restr,t_prol,info) use psb_base_mod use mld_base_prec_type use mld_z_inner_mod, mld_protect_name => mld_zaggrmat_smth_bld @@ -116,8 +116,8 @@ subroutine mld_zaggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& type(psb_desc_type), intent(inout) :: desc_a integer(psb_lpk_), intent(inout) :: ilaggr(:), nlaggr(:) type(mld_dml_parms), intent(inout) :: parms - type(psb_lzspmat_type), intent(inout) :: op_prol - type(psb_lzspmat_type), intent(out) :: ac,op_restr + type(psb_zspmat_type), intent(out) :: op_prol,ac,op_restr + type(psb_lzspmat_type), intent(inout) :: t_prol type(psb_desc_type), intent(inout) :: desc_ac integer(psb_ipk_), intent(out) :: info @@ -127,8 +127,9 @@ subroutine mld_zaggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& integer(psb_ipk_) :: inaggr, nzlp integer(psb_ipk_) :: ictxt, np, me character(len=20) :: name - type(psb_lz_coo_sparse_mat) :: coo_prol, coo_restr, tmpcoo - type(psb_lz_csr_sparse_mat) :: acsr1, acsrf, csr_prol, acsr + type(psb_lz_coo_sparse_mat) :: tmpcoo + type(psb_z_coo_sparse_mat) :: coo_prol, coo_restr + type(psb_z_csr_sparse_mat) :: acsr1, acsrf, csr_prol, acsr complex(psb_dpk_), allocatable :: adiag(:) real(psb_dpk_), allocatable :: arwsum(:) integer(psb_ipk_) :: ierr(5) @@ -177,7 +178,6 @@ subroutine mld_zaggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& if (info == psb_success_) & & call psb_halo(adiag,desc_a,info) if (info == psb_success_) call a%cp_to(acsr) - call op_prol%mv_to(coo_prol) if(info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,a_err='sp_getdiag') @@ -256,19 +256,21 @@ subroutine mld_zaggrmat_smth_bld(a,desc_a,ilaggr,nlaggr,parms,& call acsrf%scal(adiag,info) if (info /= psb_success_) goto 9999 + call t_prol%mv_to(tmpcoo) inaggr = naggr call psb_cdall(ictxt,desc_ac,info,nl=inaggr) - nzlp = coo_prol%get_nzeros() - call desc_ac%indxmap%g2lip_ins(coo_prol%ja(1:nzlp),info) - call coo_prol%set_ncols(desc_ac%get_local_cols()) - call coo_prol%mv_to_fmt(csr_prol,info) + nzlp = tmpcoo%get_nzeros() + call desc_ac%indxmap%g2lip_ins(tmpcoo%ja(1:nzlp),info) + call tmpcoo%set_ncols(desc_ac%get_local_cols()) + call tmpcoo%mv_to_ifmt(csr_prol,info) + call psb_cdasb(desc_ac,info) call psb_cd_reinit(desc_ac,info) ! ! Build the smoothed prolongator using either A or Af ! acsr1 = (I-w*D*A) Prol acsr1 = (I-w*D*Af) Prol ! This is always done through the variable acsrf which - ! is a bit less readable, butsaves space and one extra matrix copy + ! is a bit less readable, but saves space and one matrix copy ! call omega_smooth(omega,acsrf) call psb_par_spspmm(acsrf,desc_a,csr_prol,acsr1,desc_ac,info) @@ -306,7 +308,7 @@ contains subroutine omega_smooth(omega,acsr) implicit none real(psb_dpk_),intent(in) :: omega - type(psb_lz_csr_sparse_mat), intent(inout) :: acsr + type(psb_z_csr_sparse_mat), intent(inout) :: acsr ! integer(psb_lpk_) :: i,j do i=1,acsr%get_nrows() 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 58a22393..0fa9d5c4 100644 --- a/mlprec/impl/level/mld_c_base_onelev_mat_asb.f90 +++ b/mlprec/impl/level/mld_c_base_onelev_mat_asb.f90 @@ -102,11 +102,11 @@ subroutine mld_c_base_onelev_mat_asb(lv,a,desc_a,ilaggr,nlaggr,t_prol,info) ! Local variables - character(len=24) :: name - integer(psb_ipk_) :: ictxt, np, me - integer(psb_ipk_) :: err_act - type(psb_cspmat_type) :: ac, op_restr, op_prol - integer(psb_ipk_) :: nzl, inl + character(len=24) :: name + integer(psb_ipk_) :: ictxt, np, me + integer(psb_ipk_) :: err_act + type(psb_cspmat_type) :: ac, op_restr, op_prol + integer(psb_ipk_) :: nzl, inl integer(psb_ipk_) :: debug_level, debug_unit name='mld_c_onelev_mat_asb' 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 31360a4e..6346f2fc 100644 --- a/mlprec/impl/level/mld_d_base_onelev_mat_asb.f90 +++ b/mlprec/impl/level/mld_d_base_onelev_mat_asb.f90 @@ -102,11 +102,11 @@ subroutine mld_d_base_onelev_mat_asb(lv,a,desc_a,ilaggr,nlaggr,t_prol,info) ! Local variables - character(len=24) :: name - integer(psb_ipk_) :: ictxt, np, me - integer(psb_ipk_) :: err_act - type(psb_dspmat_type) :: ac, op_restr, op_prol - integer(psb_ipk_) :: nzl, inl + character(len=24) :: name + integer(psb_ipk_) :: ictxt, np, me + integer(psb_ipk_) :: err_act + type(psb_dspmat_type) :: ac, op_restr, op_prol + integer(psb_ipk_) :: nzl, inl integer(psb_ipk_) :: debug_level, debug_unit name='mld_d_onelev_mat_asb' 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 b2b9c115..6221c9af 100644 --- a/mlprec/impl/level/mld_s_base_onelev_mat_asb.f90 +++ b/mlprec/impl/level/mld_s_base_onelev_mat_asb.f90 @@ -102,11 +102,11 @@ subroutine mld_s_base_onelev_mat_asb(lv,a,desc_a,ilaggr,nlaggr,t_prol,info) ! Local variables - character(len=24) :: name - integer(psb_ipk_) :: ictxt, np, me - integer(psb_ipk_) :: err_act - type(psb_sspmat_type) :: ac, op_restr, op_prol - integer(psb_ipk_) :: nzl, inl + character(len=24) :: name + integer(psb_ipk_) :: ictxt, np, me + integer(psb_ipk_) :: err_act + type(psb_sspmat_type) :: ac, op_restr, op_prol + integer(psb_ipk_) :: nzl, inl integer(psb_ipk_) :: debug_level, debug_unit name='mld_s_onelev_mat_asb' 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 d93c1836..8b3cfdb6 100644 --- a/mlprec/impl/level/mld_z_base_onelev_mat_asb.f90 +++ b/mlprec/impl/level/mld_z_base_onelev_mat_asb.f90 @@ -102,11 +102,11 @@ subroutine mld_z_base_onelev_mat_asb(lv,a,desc_a,ilaggr,nlaggr,t_prol,info) ! Local variables - character(len=24) :: name - integer(psb_ipk_) :: ictxt, np, me - integer(psb_ipk_) :: err_act - type(psb_zspmat_type) :: ac, op_restr, op_prol - integer(psb_ipk_) :: nzl, inl + character(len=24) :: name + integer(psb_ipk_) :: ictxt, np, me + integer(psb_ipk_) :: err_act + type(psb_zspmat_type) :: ac, op_restr, op_prol + integer(psb_ipk_) :: nzl, inl integer(psb_ipk_) :: debug_level, debug_unit name='mld_z_onelev_mat_asb' diff --git a/mlprec/mld_c_base_aggregator_mod.f90 b/mlprec/mld_c_base_aggregator_mod.f90 index b27994cb..c51cc83a 100644 --- a/mlprec/mld_c_base_aggregator_mod.f90 +++ b/mlprec/mld_c_base_aggregator_mod.f90 @@ -135,36 +135,36 @@ module mld_c_base_aggregator_mod integer(psb_ipk_), intent(out) :: info type(psb_desc_type), intent(inout), optional :: desc_ax end subroutine mld_c_ptap - subroutine mld_c_lc_ptap(a_csr,desc_a,nlaggr,parms,ac,& - & coo_prol,desc_cprol,coo_restr,info,desc_ax) - import :: psb_c_csr_sparse_mat, psb_lcspmat_type, psb_desc_type, & - & psb_lc_coo_sparse_mat, mld_sml_parms, psb_spk_, psb_ipk_, psb_lpk_ - implicit none - type(psb_c_csr_sparse_mat), intent(inout) :: a_csr - type(psb_desc_type), intent(in) :: desc_a - integer(psb_lpk_), intent(inout) :: nlaggr(:) - type(mld_sml_parms), intent(inout) :: parms - type(psb_lc_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr - type(psb_desc_type), intent(inout) :: desc_cprol - type(psb_lcspmat_type), intent(out) :: ac - integer(psb_ipk_), intent(out) :: info - type(psb_desc_type), intent(inout), optional :: desc_ax - end subroutine mld_c_lc_ptap - subroutine mld_lc_ptap(a_csr,desc_a,nlaggr,parms,ac,& - & coo_prol,desc_cprol,coo_restr,info,desc_ax) - import :: psb_lc_csr_sparse_mat, psb_lcspmat_type, psb_desc_type, & - & psb_lc_coo_sparse_mat, mld_sml_parms, psb_spk_, psb_ipk_, psb_lpk_ - implicit none - type(psb_lc_csr_sparse_mat), intent(inout) :: a_csr - type(psb_desc_type), intent(in) :: desc_a - integer(psb_lpk_), intent(inout) :: nlaggr(:) - type(mld_sml_parms), intent(inout) :: parms - type(psb_lc_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr - type(psb_desc_type), intent(inout) :: desc_cprol - type(psb_lcspmat_type), intent(out) :: ac - integer(psb_ipk_), intent(out) :: info - type(psb_desc_type), intent(inout), optional :: desc_ax - end subroutine mld_lc_ptap +!!$ subroutine mld_c_lc_ptap(a_csr,desc_a,nlaggr,parms,ac,& +!!$ & coo_prol,desc_cprol,coo_restr,info,desc_ax) +!!$ import :: psb_c_csr_sparse_mat, psb_lcspmat_type, psb_desc_type, & +!!$ & psb_lc_coo_sparse_mat, mld_sml_parms, psb_spk_, psb_ipk_, psb_lpk_ +!!$ implicit none +!!$ type(psb_c_csr_sparse_mat), intent(inout) :: a_csr +!!$ type(psb_desc_type), intent(in) :: desc_a +!!$ integer(psb_lpk_), intent(inout) :: nlaggr(:) +!!$ type(mld_sml_parms), intent(inout) :: parms +!!$ type(psb_lc_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr +!!$ type(psb_desc_type), intent(inout) :: desc_cprol +!!$ type(psb_lcspmat_type), intent(out) :: ac +!!$ integer(psb_ipk_), intent(out) :: info +!!$ type(psb_desc_type), intent(inout), optional :: desc_ax +!!$ end subroutine mld_c_lc_ptap +!!$ subroutine mld_lc_ptap(a_csr,desc_a,nlaggr,parms,ac,& +!!$ & coo_prol,desc_cprol,coo_restr,info,desc_ax) +!!$ import :: psb_lc_csr_sparse_mat, psb_lcspmat_type, psb_desc_type, & +!!$ & psb_lc_coo_sparse_mat, mld_sml_parms, psb_spk_, psb_ipk_, psb_lpk_ +!!$ implicit none +!!$ type(psb_lc_csr_sparse_mat), intent(inout) :: a_csr +!!$ type(psb_desc_type), intent(in) :: desc_a +!!$ integer(psb_lpk_), intent(inout) :: nlaggr(:) +!!$ type(mld_sml_parms), intent(inout) :: parms +!!$ type(psb_lc_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr +!!$ type(psb_desc_type), intent(inout) :: desc_cprol +!!$ type(psb_lcspmat_type), intent(out) :: ac +!!$ integer(psb_ipk_), intent(out) :: info +!!$ type(psb_desc_type), intent(inout), optional :: desc_ax +!!$ end subroutine mld_lc_ptap end interface mld_ptap contains @@ -489,7 +489,6 @@ contains type(psb_cspmat_type), intent(inout) :: op_restr, op_prol type(psb_clinmap_type), intent(out) :: map integer(psb_ipk_), intent(out) :: info - type(psb_cspmat_type) :: iop_restr, iop_prol integer(psb_ipk_) :: err_act character(len=20) :: name='c_base_aggregator_bld_map' @@ -506,13 +505,7 @@ contains ! pointers in the map structure. ! map = psb_linmap(psb_map_aggr_,desc_a,& - & desc_ac,iop_restr,iop_prol,ilaggr,nlaggr) - if (info == psb_success_) call iop_prol%free() - if (info == psb_success_) call iop_restr%free() - if(info /= psb_success_) then - call psb_errpush(psb_err_from_subroutine_,name,a_err='sp_Free') - goto 9999 - end if + & desc_ac,op_restr,op_prol,ilaggr,nlaggr) call psb_erractionrestore(err_act) return diff --git a/mlprec/mld_d_base_aggregator_mod.f90 b/mlprec/mld_d_base_aggregator_mod.f90 index 03492e38..5179d3c7 100644 --- a/mlprec/mld_d_base_aggregator_mod.f90 +++ b/mlprec/mld_d_base_aggregator_mod.f90 @@ -135,36 +135,36 @@ module mld_d_base_aggregator_mod integer(psb_ipk_), intent(out) :: info type(psb_desc_type), intent(inout), optional :: desc_ax end subroutine mld_d_ptap - subroutine mld_d_ld_ptap(a_csr,desc_a,nlaggr,parms,ac,& - & coo_prol,desc_cprol,coo_restr,info,desc_ax) - import :: psb_d_csr_sparse_mat, psb_ldspmat_type, psb_desc_type, & - & psb_ld_coo_sparse_mat, mld_dml_parms, psb_dpk_, psb_ipk_, psb_lpk_ - implicit none - type(psb_d_csr_sparse_mat), intent(inout) :: a_csr - type(psb_desc_type), intent(in) :: desc_a - integer(psb_lpk_), intent(inout) :: nlaggr(:) - type(mld_dml_parms), intent(inout) :: parms - type(psb_ld_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr - type(psb_desc_type), intent(inout) :: desc_cprol - type(psb_ldspmat_type), intent(out) :: ac - integer(psb_ipk_), intent(out) :: info - type(psb_desc_type), intent(inout), optional :: desc_ax - end subroutine mld_d_ld_ptap - subroutine mld_ld_ptap(a_csr,desc_a,nlaggr,parms,ac,& - & coo_prol,desc_cprol,coo_restr,info,desc_ax) - import :: psb_ld_csr_sparse_mat, psb_ldspmat_type, psb_desc_type, & - & psb_ld_coo_sparse_mat, mld_dml_parms, psb_dpk_, psb_ipk_, psb_lpk_ - implicit none - type(psb_ld_csr_sparse_mat), intent(inout) :: a_csr - type(psb_desc_type), intent(in) :: desc_a - integer(psb_lpk_), intent(inout) :: nlaggr(:) - type(mld_dml_parms), intent(inout) :: parms - type(psb_ld_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr - type(psb_desc_type), intent(inout) :: desc_cprol - type(psb_ldspmat_type), intent(out) :: ac - integer(psb_ipk_), intent(out) :: info - type(psb_desc_type), intent(inout), optional :: desc_ax - end subroutine mld_ld_ptap +!!$ subroutine mld_d_ld_ptap(a_csr,desc_a,nlaggr,parms,ac,& +!!$ & coo_prol,desc_cprol,coo_restr,info,desc_ax) +!!$ import :: psb_d_csr_sparse_mat, psb_ldspmat_type, psb_desc_type, & +!!$ & psb_ld_coo_sparse_mat, mld_dml_parms, psb_dpk_, psb_ipk_, psb_lpk_ +!!$ implicit none +!!$ type(psb_d_csr_sparse_mat), intent(inout) :: a_csr +!!$ type(psb_desc_type), intent(in) :: desc_a +!!$ integer(psb_lpk_), intent(inout) :: nlaggr(:) +!!$ type(mld_dml_parms), intent(inout) :: parms +!!$ type(psb_ld_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr +!!$ type(psb_desc_type), intent(inout) :: desc_cprol +!!$ type(psb_ldspmat_type), intent(out) :: ac +!!$ integer(psb_ipk_), intent(out) :: info +!!$ type(psb_desc_type), intent(inout), optional :: desc_ax +!!$ end subroutine mld_d_ld_ptap +!!$ subroutine mld_ld_ptap(a_csr,desc_a,nlaggr,parms,ac,& +!!$ & coo_prol,desc_cprol,coo_restr,info,desc_ax) +!!$ import :: psb_ld_csr_sparse_mat, psb_ldspmat_type, psb_desc_type, & +!!$ & psb_ld_coo_sparse_mat, mld_dml_parms, psb_dpk_, psb_ipk_, psb_lpk_ +!!$ implicit none +!!$ type(psb_ld_csr_sparse_mat), intent(inout) :: a_csr +!!$ type(psb_desc_type), intent(in) :: desc_a +!!$ integer(psb_lpk_), intent(inout) :: nlaggr(:) +!!$ type(mld_dml_parms), intent(inout) :: parms +!!$ type(psb_ld_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr +!!$ type(psb_desc_type), intent(inout) :: desc_cprol +!!$ type(psb_ldspmat_type), intent(out) :: ac +!!$ integer(psb_ipk_), intent(out) :: info +!!$ type(psb_desc_type), intent(inout), optional :: desc_ax +!!$ end subroutine mld_ld_ptap end interface mld_ptap contains @@ -489,7 +489,6 @@ contains type(psb_dspmat_type), intent(inout) :: op_restr, op_prol type(psb_dlinmap_type), intent(out) :: map integer(psb_ipk_), intent(out) :: info - type(psb_dspmat_type) :: iop_restr, iop_prol integer(psb_ipk_) :: err_act character(len=20) :: name='d_base_aggregator_bld_map' @@ -506,13 +505,7 @@ contains ! pointers in the map structure. ! map = psb_linmap(psb_map_aggr_,desc_a,& - & desc_ac,iop_restr,iop_prol,ilaggr,nlaggr) - if (info == psb_success_) call iop_prol%free() - if (info == psb_success_) call iop_restr%free() - if(info /= psb_success_) then - call psb_errpush(psb_err_from_subroutine_,name,a_err='sp_Free') - goto 9999 - end if + & desc_ac,op_restr,op_prol,ilaggr,nlaggr) call psb_erractionrestore(err_act) return diff --git a/mlprec/mld_s_base_aggregator_mod.f90 b/mlprec/mld_s_base_aggregator_mod.f90 index 476e66d3..462d867a 100644 --- a/mlprec/mld_s_base_aggregator_mod.f90 +++ b/mlprec/mld_s_base_aggregator_mod.f90 @@ -135,36 +135,36 @@ module mld_s_base_aggregator_mod integer(psb_ipk_), intent(out) :: info type(psb_desc_type), intent(inout), optional :: desc_ax end subroutine mld_s_ptap - subroutine mld_s_ls_ptap(a_csr,desc_a,nlaggr,parms,ac,& - & coo_prol,desc_cprol,coo_restr,info,desc_ax) - import :: psb_s_csr_sparse_mat, psb_lsspmat_type, psb_desc_type, & - & psb_ls_coo_sparse_mat, mld_sml_parms, psb_spk_, psb_ipk_, psb_lpk_ - implicit none - type(psb_s_csr_sparse_mat), intent(inout) :: a_csr - type(psb_desc_type), intent(in) :: desc_a - integer(psb_lpk_), intent(inout) :: nlaggr(:) - type(mld_sml_parms), intent(inout) :: parms - type(psb_ls_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr - type(psb_desc_type), intent(inout) :: desc_cprol - type(psb_lsspmat_type), intent(out) :: ac - integer(psb_ipk_), intent(out) :: info - type(psb_desc_type), intent(inout), optional :: desc_ax - end subroutine mld_s_ls_ptap - subroutine mld_ls_ptap(a_csr,desc_a,nlaggr,parms,ac,& - & coo_prol,desc_cprol,coo_restr,info,desc_ax) - import :: psb_ls_csr_sparse_mat, psb_lsspmat_type, psb_desc_type, & - & psb_ls_coo_sparse_mat, mld_sml_parms, psb_spk_, psb_ipk_, psb_lpk_ - implicit none - type(psb_ls_csr_sparse_mat), intent(inout) :: a_csr - type(psb_desc_type), intent(in) :: desc_a - integer(psb_lpk_), intent(inout) :: nlaggr(:) - type(mld_sml_parms), intent(inout) :: parms - type(psb_ls_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr - type(psb_desc_type), intent(inout) :: desc_cprol - type(psb_lsspmat_type), intent(out) :: ac - integer(psb_ipk_), intent(out) :: info - type(psb_desc_type), intent(inout), optional :: desc_ax - end subroutine mld_ls_ptap +!!$ subroutine mld_s_ls_ptap(a_csr,desc_a,nlaggr,parms,ac,& +!!$ & coo_prol,desc_cprol,coo_restr,info,desc_ax) +!!$ import :: psb_s_csr_sparse_mat, psb_lsspmat_type, psb_desc_type, & +!!$ & psb_ls_coo_sparse_mat, mld_sml_parms, psb_spk_, psb_ipk_, psb_lpk_ +!!$ implicit none +!!$ type(psb_s_csr_sparse_mat), intent(inout) :: a_csr +!!$ type(psb_desc_type), intent(in) :: desc_a +!!$ integer(psb_lpk_), intent(inout) :: nlaggr(:) +!!$ type(mld_sml_parms), intent(inout) :: parms +!!$ type(psb_ls_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr +!!$ type(psb_desc_type), intent(inout) :: desc_cprol +!!$ type(psb_lsspmat_type), intent(out) :: ac +!!$ integer(psb_ipk_), intent(out) :: info +!!$ type(psb_desc_type), intent(inout), optional :: desc_ax +!!$ end subroutine mld_s_ls_ptap +!!$ subroutine mld_ls_ptap(a_csr,desc_a,nlaggr,parms,ac,& +!!$ & coo_prol,desc_cprol,coo_restr,info,desc_ax) +!!$ import :: psb_ls_csr_sparse_mat, psb_lsspmat_type, psb_desc_type, & +!!$ & psb_ls_coo_sparse_mat, mld_sml_parms, psb_spk_, psb_ipk_, psb_lpk_ +!!$ implicit none +!!$ type(psb_ls_csr_sparse_mat), intent(inout) :: a_csr +!!$ type(psb_desc_type), intent(in) :: desc_a +!!$ integer(psb_lpk_), intent(inout) :: nlaggr(:) +!!$ type(mld_sml_parms), intent(inout) :: parms +!!$ type(psb_ls_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr +!!$ type(psb_desc_type), intent(inout) :: desc_cprol +!!$ type(psb_lsspmat_type), intent(out) :: ac +!!$ integer(psb_ipk_), intent(out) :: info +!!$ type(psb_desc_type), intent(inout), optional :: desc_ax +!!$ end subroutine mld_ls_ptap end interface mld_ptap contains @@ -489,7 +489,6 @@ contains type(psb_sspmat_type), intent(inout) :: op_restr, op_prol type(psb_slinmap_type), intent(out) :: map integer(psb_ipk_), intent(out) :: info - type(psb_sspmat_type) :: iop_restr, iop_prol integer(psb_ipk_) :: err_act character(len=20) :: name='s_base_aggregator_bld_map' @@ -506,13 +505,7 @@ contains ! pointers in the map structure. ! map = psb_linmap(psb_map_aggr_,desc_a,& - & desc_ac,iop_restr,iop_prol,ilaggr,nlaggr) - if (info == psb_success_) call iop_prol%free() - if (info == psb_success_) call iop_restr%free() - if(info /= psb_success_) then - call psb_errpush(psb_err_from_subroutine_,name,a_err='sp_Free') - goto 9999 - end if + & desc_ac,op_restr,op_prol,ilaggr,nlaggr) call psb_erractionrestore(err_act) return diff --git a/mlprec/mld_z_base_aggregator_mod.f90 b/mlprec/mld_z_base_aggregator_mod.f90 index b8bade75..607f7c44 100644 --- a/mlprec/mld_z_base_aggregator_mod.f90 +++ b/mlprec/mld_z_base_aggregator_mod.f90 @@ -135,36 +135,36 @@ module mld_z_base_aggregator_mod integer(psb_ipk_), intent(out) :: info type(psb_desc_type), intent(inout), optional :: desc_ax end subroutine mld_z_ptap - subroutine mld_z_lz_ptap(a_csr,desc_a,nlaggr,parms,ac,& - & coo_prol,desc_cprol,coo_restr,info,desc_ax) - import :: psb_z_csr_sparse_mat, psb_lzspmat_type, psb_desc_type, & - & psb_lz_coo_sparse_mat, mld_dml_parms, psb_dpk_, psb_ipk_, psb_lpk_ - implicit none - type(psb_z_csr_sparse_mat), intent(inout) :: a_csr - type(psb_desc_type), intent(in) :: desc_a - integer(psb_lpk_), intent(inout) :: nlaggr(:) - type(mld_dml_parms), intent(inout) :: parms - type(psb_lz_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr - type(psb_desc_type), intent(inout) :: desc_cprol - type(psb_lzspmat_type), intent(out) :: ac - integer(psb_ipk_), intent(out) :: info - type(psb_desc_type), intent(inout), optional :: desc_ax - end subroutine mld_z_lz_ptap - subroutine mld_lz_ptap(a_csr,desc_a,nlaggr,parms,ac,& - & coo_prol,desc_cprol,coo_restr,info,desc_ax) - import :: psb_lz_csr_sparse_mat, psb_lzspmat_type, psb_desc_type, & - & psb_lz_coo_sparse_mat, mld_dml_parms, psb_dpk_, psb_ipk_, psb_lpk_ - implicit none - type(psb_lz_csr_sparse_mat), intent(inout) :: a_csr - type(psb_desc_type), intent(in) :: desc_a - integer(psb_lpk_), intent(inout) :: nlaggr(:) - type(mld_dml_parms), intent(inout) :: parms - type(psb_lz_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr - type(psb_desc_type), intent(inout) :: desc_cprol - type(psb_lzspmat_type), intent(out) :: ac - integer(psb_ipk_), intent(out) :: info - type(psb_desc_type), intent(inout), optional :: desc_ax - end subroutine mld_lz_ptap +!!$ subroutine mld_z_lz_ptap(a_csr,desc_a,nlaggr,parms,ac,& +!!$ & coo_prol,desc_cprol,coo_restr,info,desc_ax) +!!$ import :: psb_z_csr_sparse_mat, psb_lzspmat_type, psb_desc_type, & +!!$ & psb_lz_coo_sparse_mat, mld_dml_parms, psb_dpk_, psb_ipk_, psb_lpk_ +!!$ implicit none +!!$ type(psb_z_csr_sparse_mat), intent(inout) :: a_csr +!!$ type(psb_desc_type), intent(in) :: desc_a +!!$ integer(psb_lpk_), intent(inout) :: nlaggr(:) +!!$ type(mld_dml_parms), intent(inout) :: parms +!!$ type(psb_lz_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr +!!$ type(psb_desc_type), intent(inout) :: desc_cprol +!!$ type(psb_lzspmat_type), intent(out) :: ac +!!$ integer(psb_ipk_), intent(out) :: info +!!$ type(psb_desc_type), intent(inout), optional :: desc_ax +!!$ end subroutine mld_z_lz_ptap +!!$ subroutine mld_lz_ptap(a_csr,desc_a,nlaggr,parms,ac,& +!!$ & coo_prol,desc_cprol,coo_restr,info,desc_ax) +!!$ import :: psb_lz_csr_sparse_mat, psb_lzspmat_type, psb_desc_type, & +!!$ & psb_lz_coo_sparse_mat, mld_dml_parms, psb_dpk_, psb_ipk_, psb_lpk_ +!!$ implicit none +!!$ type(psb_lz_csr_sparse_mat), intent(inout) :: a_csr +!!$ type(psb_desc_type), intent(in) :: desc_a +!!$ integer(psb_lpk_), intent(inout) :: nlaggr(:) +!!$ type(mld_dml_parms), intent(inout) :: parms +!!$ type(psb_lz_coo_sparse_mat), intent(inout) :: coo_prol, coo_restr +!!$ type(psb_desc_type), intent(inout) :: desc_cprol +!!$ type(psb_lzspmat_type), intent(out) :: ac +!!$ integer(psb_ipk_), intent(out) :: info +!!$ type(psb_desc_type), intent(inout), optional :: desc_ax +!!$ end subroutine mld_lz_ptap end interface mld_ptap contains @@ -489,7 +489,6 @@ contains type(psb_zspmat_type), intent(inout) :: op_restr, op_prol type(psb_zlinmap_type), intent(out) :: map integer(psb_ipk_), intent(out) :: info - type(psb_zspmat_type) :: iop_restr, iop_prol integer(psb_ipk_) :: err_act character(len=20) :: name='z_base_aggregator_bld_map' @@ -506,13 +505,7 @@ contains ! pointers in the map structure. ! map = psb_linmap(psb_map_aggr_,desc_a,& - & desc_ac,iop_restr,iop_prol,ilaggr,nlaggr) - if (info == psb_success_) call iop_prol%free() - if (info == psb_success_) call iop_restr%free() - if(info /= psb_success_) then - call psb_errpush(psb_err_from_subroutine_,name,a_err='sp_Free') - goto 9999 - end if + & desc_ac,op_restr,op_prol,ilaggr,nlaggr) call psb_erractionrestore(err_act) return