mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 22:55:12 +00:00
MLPREC: merged changes from Daniela of 2008/01/18, minor doc fixes.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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_
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user