diff --git a/mlprec/mld_das_aply.f90 b/mlprec/mld_das_aply.f90 index 73c85faa..62c5c4ec 100644 --- a/mlprec/mld_das_aply.f90 +++ b/mlprec/mld_das_aply.f90 @@ -120,7 +120,7 @@ subroutine mld_das_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) call mld_bjac_aply(alpha,prec,x,beta,y,desc_data,trans_,work,info) if(info /= 0) then info=4010 - ch_err='psb_bjacaply' + ch_err='psb_bjac_aply' goto 9999 end if diff --git a/mlprec/mld_dbaseprec_bld.f90 b/mlprec/mld_dbaseprec_bld.f90 index 64994d44..db694929 100644 --- a/mlprec/mld_dbaseprec_bld.f90 +++ b/mlprec/mld_dbaseprec_bld.f90 @@ -39,20 +39,19 @@ ! Subroutine: mld_dbaseprc_bld ! Version: real ! -! This routine builds the 'base preconditioner' corresponding to a certain level -! of a multilevel preconditioner, according to the requirements made by the -! user through mld_dprecinit and mld_dprecset (for details on the preconditioner -! data structure see its description in mld_prec_type.f90). +! This routine builds a 'base preconditioner' related to a matrix A. +! In a multilevel framework, it is called by mld_mlprec_bld to build the +! base preconditioner at each level. ! -! The level at which the base preconditioner is built is identified in the -! call to mld_dbaseprec_bld made by mld_dprec_bld. For one-level preconditioners, -! the 'base preconditioner' is the preconditioner itself. +! Details on the base preconditioner to be built are stored in the iprcparm +! field of the preconditioner data structure (for a description of this +! structure see mld_prec_type.f90). ! ! ! Arguments: ! a - type(psb_dspmat_type). ! The sparse matrix structure containing the local part of the -! matrix to be preconditioned. +! matrix A to be preconditioned. ! desc_a - type(psb_desc_type), input. ! The communication descriptor of a. ! p - type(mld_dbaseprec_type), input/output. diff --git a/mlprec/mld_dbjac_aply.f90 b/mlprec/mld_dbjac_aply.f90 index 671f71a2..ccaca219 100644 --- a/mlprec/mld_dbjac_aply.f90 +++ b/mlprec/mld_dbjac_aply.f90 @@ -66,7 +66,7 @@ ! preconditioner). Here K^(-1) denotes the iteration matrix of the ! block-Jacobi solver, op(K^(-1)) = K^(-1), alpha = 1 and beta = 0. ! -! 3. Solution, through the LU factorization, of a linear system +! 3. Solution, through the LU factorization, of a linear system ! ! A*Y = X, ! @@ -77,7 +77,7 @@ ! a linear system ! A*Y = X, ! -! replicated on the processes. Here K = L*U = A or K = L*U ~ A, op(K^(-1)) = +! replicated on the processes. Here K = L*U = A or K = L*U ~ A, op(K^(-1)) = ! K^(-1), alpha = 1 and beta = 0. ! ! The block-Jacobi preconditioner or solver and the L and U factors of the LU diff --git a/mlprec/mld_dmlprec_bld.f90 b/mlprec/mld_dmlprec_bld.f90 index b6103089..3aa79803 100644 --- a/mlprec/mld_dmlprec_bld.f90 +++ b/mlprec/mld_dmlprec_bld.f90 @@ -40,7 +40,9 @@ ! Version: real ! ! This routine builds the base preconditioner corresponding to the current -! level of the multilevel preconditioner. +! level of the multilevel preconditioner. The routine first builds the +! (coarse) matrix associated to the current level from the (fine) matrix +! associated to the previous level, then builds the related base preconditioner. ! ! ! Arguments: diff --git a/mlprec/mld_prec_type.f90 b/mlprec/mld_prec_type.f90 index 42bb6039..afae0671 100644 --- a/mlprec/mld_prec_type.f90 +++ b/mlprec/mld_prec_type.f90 @@ -236,7 +236,7 @@ module mld_prec_type ! Legal values for entry: mld_sub_ren_ ! integer, parameter :: mld_renum_none_=0, mld_renum_glb_=1, mld_renum_gps_=2 - ! For the time being we are disabling GPS renumbering... + ! For the time being we are disabling GPS renumbering. integer, parameter :: mld_max_renum_=1 ! ! Legal values for entry: mld_ml_type_ diff --git a/mlprec/mld_zas_aply.f90 b/mlprec/mld_zas_aply.f90 index 376ab86d..ae734c7e 100644 --- a/mlprec/mld_zas_aply.f90 +++ b/mlprec/mld_zas_aply.f90 @@ -113,18 +113,21 @@ subroutine mld_zas_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) ! Additive Schwarz preconditioner ! - if (prec%iprcparm(mld_n_ovr_)==0) then + if ((prec%iprcparm(mld_n_ovr_)==0).or.(np==1)) then ! - ! shortcut: this fixes performance for RAS(0) == BJA + ! Shortcut: this fixes performance for RAS(0) == BJA ! call mld_bjac_aply(alpha,prec,x,beta,y,desc_data,trans_,work,info) if(info /= 0) then info=4010 - ch_err='psb_bjacaply' + ch_err='psb_bjac_aply' goto 9999 end if else + ! + ! Overlap > 0 + ! n_row = psb_cd_get_local_rows(prec%desc_data) n_col = psb_cd_get_local_cols(prec%desc_data) @@ -248,7 +251,6 @@ subroutine mld_zas_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) end select case('T','C') - ! ! With transpose, we have to do it here ! @@ -261,7 +263,7 @@ subroutine mld_zas_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) case(psb_sum_) ! - ! Transpose of sum is halo + ! The transpose of sum is halo ! call psb_halo(tx,prec%desc_data,info,work=aux,data=psb_comm_ext_) if(info /=0) then @@ -295,7 +297,6 @@ subroutine mld_zas_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) goto 9999 end select - ! ! If required, reorder tx according to the row/column permutation of the ! local extended matrix, stored into the permutation vector prec%perm diff --git a/mlprec/mld_zbaseprec_bld.f90 b/mlprec/mld_zbaseprec_bld.f90 index 79e6593a..0abc7bf2 100644 --- a/mlprec/mld_zbaseprec_bld.f90 +++ b/mlprec/mld_zbaseprec_bld.f90 @@ -39,20 +39,19 @@ ! Subroutine: mld_zbaseprc_bld ! Version: complex ! -! This routine builds the 'base preconditioner' corresponding to a certain level -! of a multilevel preconditioner, according to the requirements made by the -! user through mld_dprecinit and mld_dprecset (for details on the preconditioner -! data structure see its description in mld_prec_type.f90). +! This routine builds a 'base preconditioner' related to a matrix A. +! In a multilevel framework, it is called by mld_mlprec_bld to build the +! base preconditioner at each level. ! -! The level at which the base preconditioner is built is identified in the -! call to mld_dbaseprec_bld made by mld_dprec_bld. For one-level preconditioners, -! the 'base preconditioner' is the preconditioner itself. +! Details on the base preconditioner to be built are stored in the iprcparm +! field of the preconditioner data structure (for a description of this +! structure see mld_prec_type.f90). ! ! ! Arguments: ! a - type(psb_zspmat_type). ! The sparse matrix structure containing the local part of the -! matrix to be preconditioned. +! matrix A to be preconditioned. ! desc_a - type(psb_desc_type), input. ! The communication descriptor of a. ! p - type(mld_zbaseprec_type), input/output. diff --git a/mlprec/mld_zbjac_aply.f90 b/mlprec/mld_zbjac_aply.f90 index d7ed7a4d..cd791094 100644 --- a/mlprec/mld_zbjac_aply.f90 +++ b/mlprec/mld_zbjac_aply.f90 @@ -66,7 +66,7 @@ ! preconditioner). Here K^(-1) denotes the iteration matrix of the ! block-Jacobi solver, op(K^(-1)) = K^(-1), alpha = 1 and beta = 0. ! -! 3. Solution, through the LU factorization, of a linear system +! 3. Solution, through the LU factorization, of a linear system ! ! A*Y = X, ! @@ -77,7 +77,7 @@ ! a linear system ! A*Y = X, ! -! replicated on the processes. Here K = L*U = A or K = L*U ~ A, op(K^(-1)) = +! replicated on the processes. Here K = L*U = A or K = L*U ~ A, op(K^(-1)) = ! K^(-1), alpha = 1 and beta = 0. ! ! The block-Jacobi preconditioner or solver and the L and U factors of the LU diff --git a/mlprec/mld_zmlprec_bld.f90 b/mlprec/mld_zmlprec_bld.f90 index 0d8a90a3..d001d5cc 100644 --- a/mlprec/mld_zmlprec_bld.f90 +++ b/mlprec/mld_zmlprec_bld.f90 @@ -40,7 +40,9 @@ ! Version: complex ! ! This routine builds the base preconditioner corresponding to the current -! level of the multilevel preconditioner. +! level of the multilevel preconditioner. The routine first builds the +! (coarse) matrix associated to the current level from the (fine) matrix +! associated to the previous level, then builds the related base preconditioner. ! ! ! Arguments: