stopcriterion
			
			
		
Salvatore Filippone 16 years ago
parent 745a6ccd55
commit c9fa1ca44b

@ -1,6 +1,7 @@
Changelog. A lot less detailed than usual, at least for past Changelog. A lot less detailed than usual, at least for past
history. history.
2009/01/28: Changed names from XbaseprcY to XbaseprecY.
2009/01/27: Changed names from mld_transfer to mld_move_alloc. 2009/01/27: Changed names from mld_transfer to mld_move_alloc.
2009/01/13: Repackaged the one-level preconditioners. Reorganized the 2009/01/13: Repackaged the one-level preconditioners. Reorganized the

@ -51,10 +51,10 @@
module psb_prec_mod module psb_prec_mod
use mld_prec_mod, & use mld_prec_mod, &
& psb_sbaseprc_type => mld_sbaseprc_type,& & psb_sbaseprec_type => mld_sbaseprec_type,&
& psb_dbaseprc_type => mld_dbaseprc_type,& & psb_dbaseprec_type => mld_dbaseprec_type,&
& psb_cbaseprc_type => mld_cbaseprc_type,& & psb_cbaseprec_type => mld_cbaseprec_type,&
& psb_zbaseprc_type => mld_zbaseprc_type,& & psb_zbaseprec_type => mld_zbaseprec_type,&
& psb_sprec_type => mld_sprec_type,& & psb_sprec_type => mld_sprec_type,&
& psb_dprec_type => mld_dprec_type,& & psb_dprec_type => mld_dprec_type,&
& psb_cprec_type => mld_cprec_type,& & psb_cprec_type => mld_cprec_type,&
@ -73,7 +73,7 @@ module psb_prec_mod
interface psb_sizeof interface psb_sizeof
module procedure mld_dprec_sizeof, mld_zprec_sizeof, & module procedure mld_dprec_sizeof, mld_zprec_sizeof, &
& mld_dbaseprc_sizeof, mld_zbaseprc_sizeof & mld_dbaseprec_sizeof, mld_zbaseprec_sizeof
end interface end interface
end module psb_prec_mod end module psb_prec_mod

@ -54,7 +54,7 @@
! Arguments: ! Arguments:
! alpha - real(psb_spk_), input. ! alpha - real(psb_spk_), input.
! The scalar alpha. ! The scalar alpha.
! prec - type(mld_dbaseprc_type), input. ! prec - type(mld_dbaseprec_type), input.
! The base preconditioner data structure containing the local part ! The base preconditioner data structure containing the local part
! of the preconditioner K. ! of the preconditioner K.
! x - real(psb_spk_), dimension(:), input. ! x - real(psb_spk_), dimension(:), input.
@ -83,7 +83,7 @@ subroutine mld_cas_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_cbaseprc_type), intent(in) :: prec type(mld_cbaseprec_type), intent(in) :: prec
complex(psb_spk_),intent(in) :: x(:) complex(psb_spk_),intent(in) :: x(:)
complex(psb_spk_),intent(inout) :: y(:) complex(psb_spk_),intent(inout) :: y(:)
complex(psb_spk_),intent(in) :: alpha,beta complex(psb_spk_),intent(in) :: alpha,beta

@ -54,7 +54,7 @@
! matrix to be preconditioned. ! matrix to be preconditioned.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor of the sparse matrix a. ! The communication descriptor of the sparse matrix a.
! p - type(mld_cbaseprc_type), input/output. ! p - type(mld_cbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the local ! The 'base preconditioner' data structure containing the local
! part of the preconditioner or solver to be built. ! part of the preconditioner or solver to be built.
! upd - character, input. ! upd - character, input.
@ -76,7 +76,7 @@ subroutine mld_cas_bld(a,desc_a,p,upd,info)
! Arguments ! Arguments
type(psb_cspmat_type), intent(in), target :: a type(psb_cspmat_type), intent(in), target :: a
Type(psb_desc_type), Intent(in) :: desc_a Type(psb_desc_type), Intent(in) :: desc_a
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info

@ -58,7 +58,7 @@
! Arguments: ! Arguments:
! alpha - complex(psb_spk_), input. ! alpha - complex(psb_spk_), input.
! The scalar alpha. ! The scalar alpha.
! prec - type(mld_cbaseprc_type), input. ! prec - type(mld_cbaseprec_type), input.
! The base preconditioner data structure containing the local part ! The base preconditioner data structure containing the local part
! of the preconditioner K. ! of the preconditioner K.
! x - complex(psb_spk_), dimension(:), input. ! x - complex(psb_spk_), dimension(:), input.
@ -87,7 +87,7 @@ subroutine mld_cbaseprec_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_cbaseprc_type), intent(in) :: prec type(mld_cbaseprec_type), intent(in) :: prec
complex(psb_spk_),intent(in) :: x(:) complex(psb_spk_),intent(in) :: x(:)
complex(psb_spk_),intent(inout) :: y(:) complex(psb_spk_),intent(inout) :: y(:)
complex(psb_spk_),intent(in) :: alpha,beta complex(psb_spk_),intent(in) :: alpha,beta

@ -78,7 +78,7 @@ subroutine mld_cbaseprec_bld(a,desc_a,p,info,upd)
! Arguments ! Arguments
type(psb_cspmat_type), target :: a type(psb_cspmat_type), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_cbaseprc_type),intent(inout) :: p type(mld_cbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in), optional :: upd character, intent(in), optional :: upd
@ -89,7 +89,7 @@ subroutine mld_cbaseprec_bld(a,desc_a,p,info,upd)
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
if (psb_get_errstatus() /= 0) return if (psb_get_errstatus() /= 0) return
name = 'mld_cbaseprc_bld' name = 'mld_cbaseprec_bld'
info=0 info=0
err=0 err=0
call psb_erractionsave(err_act) call psb_erractionsave(err_act)

@ -51,7 +51,7 @@
! matrix A to be preconditioned. ! matrix A to be preconditioned.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to the sparse matrix A. ! The communication descriptor associated to the sparse matrix A.
! p - type(mld_cbaseprc_type), input/output. ! p - type(mld_cbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the local ! The 'base preconditioner' data structure containing the local
! part of the diagonal preconditioner. ! part of the diagonal preconditioner.
! info - integer, output. ! info - integer, output.
@ -67,7 +67,7 @@ subroutine mld_cdiag_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_cspmat_type), target :: a type(psb_cspmat_type), target :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_cbaseprc_type),intent(inout) :: p type(mld_cbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -118,7 +118,7 @@ subroutine mld_cfact_bld(a,p,upd,info,blck)
! Arguments ! Arguments
type(psb_cspmat_type), intent(in), target :: a type(psb_cspmat_type), intent(in), target :: a
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in) :: upd character, intent(in) :: upd
type(psb_cspmat_type), intent(in), target, optional :: blck type(psb_cspmat_type), intent(in), target, optional :: blck

@ -73,7 +73,7 @@
! only the 'original' local part of the distributed matrix, ! only the 'original' local part of the distributed matrix,
! i.e. the rows of the matrix held by the calling process according ! i.e. the rows of the matrix held by the calling process according
! to the initial data distribution. ! to the initial data distribution.
! p - type(mld_cbaseprc_type), input/output. ! p - type(mld_cbaseprec_type), input/output.
! The 'base preconditioner' data structure. In input, p%iprcparm ! The 'base preconditioner' data structure. In input, p%iprcparm
! contains information on the type of factorization to be computed. ! contains information on the type of factorization to be computed.
! In output, p%av(mld_l_pr_) and p%av(mld_u_pr_) contain the ! In output, p%av(mld_l_pr_) and p%av(mld_u_pr_) contain the
@ -98,7 +98,7 @@ subroutine mld_cilu_bld(a,p,upd,info,blck)
! Arguments ! Arguments
type(psb_cspmat_type), intent(in), target :: a type(psb_cspmat_type), intent(in), target :: a
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info
type(psb_cspmat_type), intent(in), optional :: blck type(psb_cspmat_type), intent(in), optional :: blck

@ -82,7 +82,7 @@
! The array of one-level preconditioner data structures containing the ! The array of one-level preconditioner data structures containing the
! local parts of the preconditioners to be applied at each level. ! local parts of the preconditioners to be applied at each level.
! Note that nlev = size(precv) = number of levels. ! Note that nlev = size(precv) = number of levels.
! precv(ilev)%prec - type(psb_cbaseprc_type) ! precv(ilev)%prec - type(psb_cbaseprec_type)
! The "base" preconditioner for the current level ! The "base" preconditioner for the current level
! precv(ilev)%ac - type(psb_cspmat_type) ! precv(ilev)%ac - type(psb_cspmat_type)
! The local part of the matrix A(ilev). ! The local part of the matrix A(ilev).

@ -40,7 +40,7 @@
! !
! Subroutine: mld_cprecbld ! Subroutine: mld_cprecbld
! Version: complex ! Version: complex
! Contains: subroutine init_baseprc_av ! Contains: subroutine init_baseprec_av
! !
! This routine builds the preconditioner according to the requirements made by ! This routine builds the preconditioner according to the requirements made by
! the user trough the subroutines mld_precinit and mld_precset. ! the user trough the subroutines mld_precinit and mld_precset.
@ -154,7 +154,7 @@ subroutine mld_cprecbld(a,desc_a,p,info)
! !
! Finest level first; remember to fix base_a and base_desc ! Finest level first; remember to fix base_a and base_desc
! !
call init_baseprc_av(p%precv(1)%prec,info) call init_baseprec_av(p%precv(1)%prec,info)
p%precv(1)%base_a => a p%precv(1)%base_a => a
p%precv(1)%base_desc => desc_a p%precv(1)%base_desc => desc_a
@ -211,7 +211,7 @@ subroutine mld_cprecbld(a,desc_a,p,info)
! !
! Build the mapping between levels (i-1) and (i) ! Build the mapping between levels (i-1) and (i)
! !
call init_baseprc_av(p%precv(i)%prec,info) call init_baseprec_av(p%precv(i)%prec,info)
if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,& if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,&
& p%precv(i-1)%base_desc, p%precv(i),info) & p%precv(i-1)%base_desc, p%precv(i),info)
@ -275,7 +275,7 @@ subroutine mld_cprecbld(a,desc_a,p,info)
i = iszv i = iszv
call check_coarse_lev(p%precv(i)) call check_coarse_lev(p%precv(i))
call init_baseprc_av(p%precv(i)%prec,info) call init_baseprec_av(p%precv(i)%prec,info)
if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,& if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,&
& p%precv(i-1)%base_desc, p%precv(i),info) & p%precv(i-1)%base_desc, p%precv(i),info)
if (info /= 0) then if (info /= 0) then
@ -328,8 +328,8 @@ subroutine mld_cprecbld(a,desc_a,p,info)
contains contains
subroutine init_baseprc_av(p,info) subroutine init_baseprec_av(p,info)
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
integer :: info integer :: info
if (allocated(p%av)) then if (allocated(p%av)) then
if (size(p%av) /= mld_max_avsz_) then if (size(p%av) /= mld_max_avsz_) then
@ -345,7 +345,7 @@ contains
call psb_nullify_sp(p%av(k)) call psb_nullify_sp(p%av(k))
end do end do
end subroutine init_baseprc_av end subroutine init_baseprec_av
subroutine check_coarse_lev(prec) subroutine check_coarse_lev(prec)
type(mld_c_interlev_prec_type) :: prec type(mld_c_interlev_prec_type) :: prec

@ -62,7 +62,7 @@
! be factorized. ! be factorized.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to a. ! The communication descriptor associated to a.
! p - type(mld_cbaseprc_type), input/output. ! p - type(mld_cbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the pointer, ! The 'base preconditioner' data structure containing the pointer,
! p%iprcparm(mld_slu_ptr_), to the data structure used by SuperLU ! p%iprcparm(mld_slu_ptr_), to the data structure used by SuperLU
! to store the L and U factors. ! to store the L and U factors.
@ -79,7 +79,7 @@ subroutine mld_cslu_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_cspmat_type), intent(inout) :: a type(psb_cspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -59,7 +59,7 @@
! matrix to be factorized. ! matrix to be factorized.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to a. ! The communication descriptor associated to a.
! p - type(mld_cbaseprc_type), input/output. ! p - type(mld_cbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the pointer, ! The 'base preconditioner' data structure containing the pointer,
! p%iprcparm(mld_slud_ptr_), to the data structure used by ! p%iprcparm(mld_slud_ptr_), to the data structure used by
! SuperLU_DIST to store the L and U factors. ! SuperLU_DIST to store the L and U factors.
@ -76,7 +76,7 @@ subroutine mld_csludist_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_cspmat_type), intent(inout) :: a type(psb_cspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -69,7 +69,7 @@
! to build an Additive Schwarz base preconditioner with overlap ! to build an Additive Schwarz base preconditioner with overlap
! greater than 0.If the overlap is 0, then blck does not contain ! greater than 0.If the overlap is 0, then blck does not contain
! any row. ! any row.
! p - type(mld_cbaseprc_type), input/output. ! p - type(mld_cbaseprec_type), input/output.
! The base preconditioner data structure containing the local ! The base preconditioner data structure containing the local
! part of the base preconditioner to be built. In input it ! part of the base preconditioner to be built. In input it
! contains information on the type of reordering to be applied ! contains information on the type of reordering to be applied
@ -91,7 +91,7 @@ subroutine mld_csp_renum(a,blck,p,atmp,info)
! Arguments ! Arguments
type(psb_cspmat_type), intent(in) :: a,blck type(psb_cspmat_type), intent(in) :: a,blck
type(psb_cspmat_type), intent(out) :: atmp type(psb_cspmat_type), intent(out) :: atmp
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -142,7 +142,7 @@ subroutine mld_csub_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_cbaseprc_type), intent(in) :: prec type(mld_cbaseprec_type), intent(in) :: prec
complex(psb_spk_),intent(in) :: x(:) complex(psb_spk_),intent(in) :: x(:)
complex(psb_spk_),intent(inout) :: y(:) complex(psb_spk_),intent(inout) :: y(:)
complex(psb_spk_),intent(in) :: alpha,beta complex(psb_spk_),intent(in) :: alpha,beta

@ -120,7 +120,7 @@ subroutine mld_csub_solve(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_cbaseprc_type), intent(in) :: prec type(mld_cbaseprec_type), intent(in) :: prec
complex(psb_spk_),intent(in) :: x(:) complex(psb_spk_),intent(in) :: x(:)
complex(psb_spk_),intent(inout) :: y(:) complex(psb_spk_),intent(inout) :: y(:)
complex(psb_spk_),intent(in) :: alpha,beta complex(psb_spk_),intent(in) :: alpha,beta

@ -67,7 +67,7 @@
! C code performing the factorization. ! C code performing the factorization.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to a. ! The communication descriptor associated to a.
! p - type(mld_cbaseprc_type), input/output. ! p - type(mld_cbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the pointers, ! The 'base preconditioner' data structure containing the pointers,
! p%iprcparm(mld_umf_symptr_) and p%iprcparm(mld_umf_numptr_), ! p%iprcparm(mld_umf_symptr_) and p%iprcparm(mld_umf_numptr_),
! to the data structures used by UMFPACK for computing the LU ! to the data structures used by UMFPACK for computing the LU
@ -85,7 +85,7 @@ subroutine mld_cumf_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_dspmat_type), intent(inout) :: a type(psb_dspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -54,7 +54,7 @@
! Arguments: ! Arguments:
! alpha - real(psb_dpk_), input. ! alpha - real(psb_dpk_), input.
! The scalar alpha. ! The scalar alpha.
! prec - type(mld_dbaseprc_type), input. ! prec - type(mld_dbaseprec_type), input.
! The base preconditioner data structure containing the local part ! The base preconditioner data structure containing the local part
! of the preconditioner K. ! of the preconditioner K.
! x - real(psb_dpk_), dimension(:), input. ! x - real(psb_dpk_), dimension(:), input.
@ -83,7 +83,7 @@ subroutine mld_das_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_dbaseprc_type), intent(in) :: prec type(mld_dbaseprec_type), intent(in) :: prec
real(psb_dpk_),intent(in) :: x(:) real(psb_dpk_),intent(in) :: x(:)
real(psb_dpk_),intent(inout) :: y(:) real(psb_dpk_),intent(inout) :: y(:)
real(psb_dpk_),intent(in) :: alpha,beta real(psb_dpk_),intent(in) :: alpha,beta

@ -54,7 +54,7 @@
! matrix to be preconditioned. ! matrix to be preconditioned.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor of the sparse matrix a. ! The communication descriptor of the sparse matrix a.
! p - type(mld_dbaseprc_type), input/output. ! p - type(mld_dbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the local ! The 'base preconditioner' data structure containing the local
! part of the preconditioner or solver to be built. ! part of the preconditioner or solver to be built.
! upd - character, input. ! upd - character, input.
@ -76,7 +76,7 @@ subroutine mld_das_bld(a,desc_a,p,upd,info)
! Arguments ! Arguments
type(psb_dspmat_type), intent(in), target :: a type(psb_dspmat_type), intent(in), target :: a
Type(psb_desc_type), Intent(in) :: desc_a Type(psb_desc_type), Intent(in) :: desc_a
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info

@ -58,7 +58,7 @@
! Arguments: ! Arguments:
! alpha - real(psb_dpk_), input. ! alpha - real(psb_dpk_), input.
! The scalar alpha. ! The scalar alpha.
! prec - type(mld_dbaseprc_type), input. ! prec - type(mld_dbaseprec_type), input.
! The base preconditioner data structure containing the local part ! The base preconditioner data structure containing the local part
! of the preconditioner K. ! of the preconditioner K.
! x - real(psb_dpk_), dimension(:), input. ! x - real(psb_dpk_), dimension(:), input.
@ -87,7 +87,7 @@ subroutine mld_dbaseprec_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_dbaseprc_type), intent(in) :: prec type(mld_dbaseprec_type), intent(in) :: prec
real(psb_dpk_),intent(in) :: x(:) real(psb_dpk_),intent(in) :: x(:)
real(psb_dpk_),intent(inout) :: y(:) real(psb_dpk_),intent(inout) :: y(:)
real(psb_dpk_),intent(in) :: alpha,beta real(psb_dpk_),intent(in) :: alpha,beta

@ -38,7 +38,7 @@
!!$ !!$
! File: mld_dbaseprec_bld.f90 ! File: mld_dbaseprec_bld.f90
! !
! Subroutine: mld_dbaseprc_bld ! Subroutine: mld_dbaseprec_bld
! Version: real ! Version: real
! !
! This routine builds a 'base preconditioner' related to a matrix A. ! This routine builds a 'base preconditioner' related to a matrix A.
@ -78,7 +78,7 @@ subroutine mld_dbaseprec_bld(a,desc_a,p,info,upd)
! Arguments ! Arguments
type(psb_dspmat_type), target :: a type(psb_dspmat_type), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_dbaseprc_type),intent(inout) :: p type(mld_dbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in), optional :: upd character, intent(in), optional :: upd
@ -89,7 +89,7 @@ subroutine mld_dbaseprec_bld(a,desc_a,p,info,upd)
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
if (psb_get_errstatus() /= 0) return if (psb_get_errstatus() /= 0) return
name = 'mld_dbaseprc_bld' name = 'mld_dbaseprec_bld'
info=0 info=0
err=0 err=0
call psb_erractionsave(err_act) call psb_erractionsave(err_act)

@ -51,7 +51,7 @@
! matrix A to be preconditioned. ! matrix A to be preconditioned.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to the sparse matrix A. ! The communication descriptor associated to the sparse matrix A.
! p - type(mld_dbaseprc_type), input/output. ! p - type(mld_dbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the local ! The 'base preconditioner' data structure containing the local
! part of the diagonal preconditioner. ! part of the diagonal preconditioner.
! info - integer, output. ! info - integer, output.
@ -67,7 +67,7 @@ subroutine mld_ddiag_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_dspmat_type), target :: a type(psb_dspmat_type), target :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_dbaseprc_type),intent(inout) :: p type(mld_dbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -117,7 +117,7 @@ subroutine mld_dfact_bld(a,p,upd,info,blck)
! Arguments ! Arguments
type(psb_dspmat_type), intent(in), target :: a type(psb_dspmat_type), intent(in), target :: a
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in) :: upd character, intent(in) :: upd
type(psb_dspmat_type), intent(in), target, optional :: blck type(psb_dspmat_type), intent(in), target, optional :: blck

@ -73,7 +73,7 @@
! only the 'original' local part of the distributed matrix, ! only the 'original' local part of the distributed matrix,
! i.e. the rows of the matrix held by the calling process according ! i.e. the rows of the matrix held by the calling process according
! to the initial data distribution. ! to the initial data distribution.
! p - type(mld_dbaseprc_type), input/output. ! p - type(mld_dbaseprec_type), input/output.
! The 'base preconditioner' data structure. In input, p%iprcparm ! The 'base preconditioner' data structure. In input, p%iprcparm
! contains information on the type of factorization to be computed. ! contains information on the type of factorization to be computed.
! In output, p%av(mld_l_pr_) and p%av(mld_u_pr_) contain the ! In output, p%av(mld_l_pr_) and p%av(mld_u_pr_) contain the
@ -98,7 +98,7 @@ subroutine mld_dilu_bld(a,p,upd,info,blck)
! Arguments ! Arguments
type(psb_dspmat_type), intent(in), target :: a type(psb_dspmat_type), intent(in), target :: a
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info
type(psb_dspmat_type), intent(in), optional :: blck type(psb_dspmat_type), intent(in), optional :: blck

@ -82,7 +82,7 @@
! The array of one-level preconditioner data structures containing the ! The array of one-level preconditioner data structures containing the
! local parts of the preconditioners to be applied at each level. ! local parts of the preconditioners to be applied at each level.
! Note that nlev = size(precv) = number of levels. ! Note that nlev = size(precv) = number of levels.
! precv(ilev)%prec - type(psb_dbaseprc_type) ! precv(ilev)%prec - type(psb_dbaseprec_type)
! The "base" preconditioner for the current level ! The "base" preconditioner for the current level
! precv(ilev)%ac - type(psb_dspmat_type) ! precv(ilev)%ac - type(psb_dspmat_type)
! The local part of the matrix A(ilev). ! The local part of the matrix A(ilev).

@ -40,7 +40,7 @@
! !
! Subroutine: mld_dprecbld ! Subroutine: mld_dprecbld
! Version: real ! Version: real
! Contains: subroutine init_baseprc_av ! Contains: subroutine init_baseprec_av
! !
! This routine builds the preconditioner according to the requirements made by ! This routine builds the preconditioner according to the requirements made by
! the user trough the subroutines mld_precinit and mld_precset. ! the user trough the subroutines mld_precinit and mld_precset.
@ -154,7 +154,7 @@ subroutine mld_dprecbld(a,desc_a,p,info)
! !
! Finest level first; remember to fix base_a and base_desc ! Finest level first; remember to fix base_a and base_desc
! !
call init_baseprc_av(p%precv(1)%prec,info) call init_baseprec_av(p%precv(1)%prec,info)
p%precv(1)%base_a => a p%precv(1)%base_a => a
p%precv(1)%base_desc => desc_a p%precv(1)%base_desc => desc_a
@ -211,7 +211,7 @@ subroutine mld_dprecbld(a,desc_a,p,info)
! !
! Build the mapping between levels (i-1) and (i) ! Build the mapping between levels (i-1) and (i)
! !
call init_baseprc_av(p%precv(i)%prec,info) call init_baseprec_av(p%precv(i)%prec,info)
if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,& if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,&
& p%precv(i-1)%base_desc, p%precv(i),info) & p%precv(i-1)%base_desc, p%precv(i),info)
@ -275,7 +275,7 @@ subroutine mld_dprecbld(a,desc_a,p,info)
i = iszv i = iszv
call check_coarse_lev(p%precv(i)) call check_coarse_lev(p%precv(i))
call init_baseprc_av(p%precv(i)%prec,info) call init_baseprec_av(p%precv(i)%prec,info)
if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,& if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,&
& p%precv(i-1)%base_desc, p%precv(i),info) & p%precv(i-1)%base_desc, p%precv(i),info)
if (info /= 0) then if (info /= 0) then
@ -328,8 +328,8 @@ subroutine mld_dprecbld(a,desc_a,p,info)
contains contains
subroutine init_baseprc_av(p,info) subroutine init_baseprec_av(p,info)
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer :: info integer :: info
if (allocated(p%av)) then if (allocated(p%av)) then
if (size(p%av) /= mld_max_avsz_) then if (size(p%av) /= mld_max_avsz_) then
@ -345,7 +345,7 @@ contains
call psb_nullify_sp(p%av(k)) call psb_nullify_sp(p%av(k))
end do end do
end subroutine init_baseprc_av end subroutine init_baseprec_av
subroutine check_coarse_lev(prec) subroutine check_coarse_lev(prec)
type(mld_d_interlev_prec_type) :: prec type(mld_d_interlev_prec_type) :: prec

@ -62,7 +62,7 @@
! be factorized. ! be factorized.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to a. ! The communication descriptor associated to a.
! p - type(mld_dbaseprc_type), input/output. ! p - type(mld_dbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the pointer, ! The 'base preconditioner' data structure containing the pointer,
! p%iprcparm(mld_slu_ptr_), to the data structure used by SuperLU ! p%iprcparm(mld_slu_ptr_), to the data structure used by SuperLU
! to store the L and U factors. ! to store the L and U factors.
@ -79,7 +79,7 @@ subroutine mld_dslu_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_dspmat_type), intent(inout) :: a type(psb_dspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -59,7 +59,7 @@
! matrix to be factorized. ! matrix to be factorized.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to a. ! The communication descriptor associated to a.
! p - type(mld_dbaseprc_type), input/output. ! p - type(mld_dbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the pointer, ! The 'base preconditioner' data structure containing the pointer,
! p%iprcparm(mld_slud_ptr_), to the data structure used by ! p%iprcparm(mld_slud_ptr_), to the data structure used by
! SuperLU_DIST to store the L and U factors. ! SuperLU_DIST to store the L and U factors.
@ -76,7 +76,7 @@ subroutine mld_dsludist_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_dspmat_type), intent(inout) :: a type(psb_dspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -69,7 +69,7 @@
! to build an Additive Schwarz base preconditioner with overlap ! to build an Additive Schwarz base preconditioner with overlap
! greater than 0.If the overlap is 0, then blck does not contain ! greater than 0.If the overlap is 0, then blck does not contain
! any row. ! any row.
! p - type(mld_dbaseprc_type), input/output. ! p - type(mld_dbaseprec_type), input/output.
! The base preconditioner data structure containing the local ! The base preconditioner data structure containing the local
! part of the base preconditioner to be built. In input it ! part of the base preconditioner to be built. In input it
! contains information on the type of reordering to be applied ! contains information on the type of reordering to be applied
@ -91,7 +91,7 @@ subroutine mld_dsp_renum(a,blck,p,atmp,info)
! Arguments ! Arguments
type(psb_dspmat_type), intent(in) :: a,blck type(psb_dspmat_type), intent(in) :: a,blck
type(psb_dspmat_type), intent(out) :: atmp type(psb_dspmat_type), intent(out) :: atmp
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -141,7 +141,7 @@ subroutine mld_dsub_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_dbaseprc_type), intent(in) :: prec type(mld_dbaseprec_type), intent(in) :: prec
real(psb_dpk_),intent(in) :: x(:) real(psb_dpk_),intent(in) :: x(:)
real(psb_dpk_),intent(inout) :: y(:) real(psb_dpk_),intent(inout) :: y(:)
real(psb_dpk_),intent(in) :: alpha,beta real(psb_dpk_),intent(in) :: alpha,beta

@ -119,7 +119,7 @@ subroutine mld_dsub_solve(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_dbaseprc_type), intent(in) :: prec type(mld_dbaseprec_type), intent(in) :: prec
real(psb_dpk_),intent(in) :: x(:) real(psb_dpk_),intent(in) :: x(:)
real(psb_dpk_),intent(inout) :: y(:) real(psb_dpk_),intent(inout) :: y(:)
real(psb_dpk_),intent(in) :: alpha,beta real(psb_dpk_),intent(in) :: alpha,beta

@ -67,7 +67,7 @@
! C code performing the factorization. ! C code performing the factorization.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to a. ! The communication descriptor associated to a.
! p - type(mld_dbaseprc_type), input/output. ! p - type(mld_dbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the pointers, ! The 'base preconditioner' data structure containing the pointers,
! p%iprcparm(mld_umf_symptr_) and p%iprcparm(mld_umf_numptr_), ! p%iprcparm(mld_umf_symptr_) and p%iprcparm(mld_umf_numptr_),
! to the data structures used by UMFPACK for computing the LU ! to the data structures used by UMFPACK for computing the LU
@ -85,7 +85,7 @@ subroutine mld_dumf_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_dspmat_type), intent(inout) :: a type(psb_dspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -43,9 +43,9 @@ module mld_inner_mod
interface mld_baseprec_aply interface mld_baseprec_aply
subroutine mld_sbaseprec_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_sbaseprec_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_sbaseprc_type), intent(in) :: prec type(mld_sbaseprec_type), intent(in) :: prec
real(psb_spk_),intent(in) :: x(:) real(psb_spk_),intent(in) :: x(:)
real(psb_spk_),intent(inout) :: y(:) real(psb_spk_),intent(inout) :: y(:)
real(psb_spk_),intent(in) :: alpha,beta real(psb_spk_),intent(in) :: alpha,beta
@ -55,9 +55,9 @@ module mld_inner_mod
end subroutine mld_sbaseprec_aply end subroutine mld_sbaseprec_aply
subroutine mld_dbaseprec_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_dbaseprec_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_dbaseprc_type), intent(in) :: prec type(mld_dbaseprec_type), intent(in) :: prec
real(psb_dpk_),intent(in) :: x(:) real(psb_dpk_),intent(in) :: x(:)
real(psb_dpk_),intent(inout) :: y(:) real(psb_dpk_),intent(inout) :: y(:)
real(psb_dpk_),intent(in) :: alpha,beta real(psb_dpk_),intent(in) :: alpha,beta
@ -67,9 +67,9 @@ module mld_inner_mod
end subroutine mld_dbaseprec_aply end subroutine mld_dbaseprec_aply
subroutine mld_cbaseprec_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_cbaseprec_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_cbaseprc_type), intent(in) :: prec type(mld_cbaseprec_type), intent(in) :: prec
complex(psb_spk_),intent(in) :: x(:) complex(psb_spk_),intent(in) :: x(:)
complex(psb_spk_),intent(inout) :: y(:) complex(psb_spk_),intent(inout) :: y(:)
complex(psb_spk_),intent(in) :: alpha,beta complex(psb_spk_),intent(in) :: alpha,beta
@ -79,9 +79,9 @@ module mld_inner_mod
end subroutine mld_cbaseprec_aply end subroutine mld_cbaseprec_aply
subroutine mld_zbaseprec_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_zbaseprec_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_zbaseprc_type), intent(in) :: prec type(mld_zbaseprec_type), intent(in) :: prec
complex(psb_dpk_),intent(in) :: x(:) complex(psb_dpk_),intent(in) :: x(:)
complex(psb_dpk_),intent(inout) :: y(:) complex(psb_dpk_),intent(inout) :: y(:)
complex(psb_dpk_),intent(in) :: alpha,beta complex(psb_dpk_),intent(in) :: alpha,beta
@ -94,9 +94,9 @@ module mld_inner_mod
interface mld_as_aply interface mld_as_aply
subroutine mld_sas_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_sas_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_sbaseprc_type), intent(in) :: prec type(mld_sbaseprec_type), intent(in) :: prec
real(psb_spk_),intent(in) :: x(:) real(psb_spk_),intent(in) :: x(:)
real(psb_spk_),intent(inout) :: y(:) real(psb_spk_),intent(inout) :: y(:)
real(psb_spk_),intent(in) :: alpha,beta real(psb_spk_),intent(in) :: alpha,beta
@ -106,9 +106,9 @@ module mld_inner_mod
end subroutine mld_sas_aply end subroutine mld_sas_aply
subroutine mld_das_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_das_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_dbaseprc_type), intent(in) :: prec type(mld_dbaseprec_type), intent(in) :: prec
real(psb_dpk_),intent(in) :: x(:) real(psb_dpk_),intent(in) :: x(:)
real(psb_dpk_),intent(inout) :: y(:) real(psb_dpk_),intent(inout) :: y(:)
real(psb_dpk_),intent(in) :: alpha,beta real(psb_dpk_),intent(in) :: alpha,beta
@ -118,9 +118,9 @@ module mld_inner_mod
end subroutine mld_das_aply end subroutine mld_das_aply
subroutine mld_cas_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_cas_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_cbaseprc_type), intent(in) :: prec type(mld_cbaseprec_type), intent(in) :: prec
complex(psb_spk_),intent(in) :: x(:) complex(psb_spk_),intent(in) :: x(:)
complex(psb_spk_),intent(inout) :: y(:) complex(psb_spk_),intent(inout) :: y(:)
complex(psb_spk_),intent(in) :: alpha,beta complex(psb_spk_),intent(in) :: alpha,beta
@ -130,9 +130,9 @@ module mld_inner_mod
end subroutine mld_cas_aply end subroutine mld_cas_aply
subroutine mld_zas_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_zas_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_zbaseprc_type), intent(in) :: prec type(mld_zbaseprec_type), intent(in) :: prec
complex(psb_dpk_),intent(in) :: x(:) complex(psb_dpk_),intent(in) :: x(:)
complex(psb_dpk_),intent(inout) :: y(:) complex(psb_dpk_),intent(inout) :: y(:)
complex(psb_dpk_),intent(in) :: alpha,beta complex(psb_dpk_),intent(in) :: alpha,beta
@ -145,7 +145,7 @@ module mld_inner_mod
interface mld_mlprec_aply interface mld_mlprec_aply
subroutine mld_smlprec_aply(alpha,precv,x,beta,y,desc_data,trans,work,info) subroutine mld_smlprec_aply(alpha,precv,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type, mld_s_interlev_prec_type use mld_prec_type, only : mld_sbaseprec_type, mld_s_interlev_prec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_s_interlev_prec_type), intent(in) :: precv(:) type(mld_s_interlev_prec_type), intent(in) :: precv(:)
real(psb_spk_),intent(in) :: alpha,beta real(psb_spk_),intent(in) :: alpha,beta
@ -157,7 +157,7 @@ module mld_inner_mod
end subroutine mld_smlprec_aply end subroutine mld_smlprec_aply
subroutine mld_dmlprec_aply(alpha,precv,x,beta,y,desc_data,trans,work,info) subroutine mld_dmlprec_aply(alpha,precv,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type, mld_d_interlev_prec_type use mld_prec_type, only : mld_dbaseprec_type, mld_d_interlev_prec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_d_interlev_prec_type), intent(in) :: precv(:) type(mld_d_interlev_prec_type), intent(in) :: precv(:)
real(psb_dpk_),intent(in) :: alpha,beta real(psb_dpk_),intent(in) :: alpha,beta
@ -169,7 +169,7 @@ module mld_inner_mod
end subroutine mld_dmlprec_aply end subroutine mld_dmlprec_aply
subroutine mld_cmlprec_aply(alpha,baseprecv,x,beta,y,desc_data,trans,work,info) subroutine mld_cmlprec_aply(alpha,baseprecv,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type, mld_c_interlev_prec_type use mld_prec_type, only : mld_cbaseprec_type, mld_c_interlev_prec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_c_interlev_prec_type), intent(in) :: baseprecv(:) type(mld_c_interlev_prec_type), intent(in) :: baseprecv(:)
complex(psb_spk_),intent(in) :: alpha,beta complex(psb_spk_),intent(in) :: alpha,beta
@ -181,7 +181,7 @@ module mld_inner_mod
end subroutine mld_cmlprec_aply end subroutine mld_cmlprec_aply
subroutine mld_zmlprec_aply(alpha,baseprecv,x,beta,y,desc_data,trans,work,info) subroutine mld_zmlprec_aply(alpha,baseprecv,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type, mld_z_interlev_prec_type use mld_prec_type, only : mld_zbaseprec_type, mld_z_interlev_prec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_z_interlev_prec_type), intent(in) :: baseprecv(:) type(mld_z_interlev_prec_type), intent(in) :: baseprecv(:)
complex(psb_dpk_),intent(in) :: alpha,beta complex(psb_dpk_),intent(in) :: alpha,beta
@ -197,9 +197,9 @@ module mld_inner_mod
interface mld_sub_aply interface mld_sub_aply
subroutine mld_ssub_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_ssub_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_sbaseprc_type), intent(in) :: prec type(mld_sbaseprec_type), intent(in) :: prec
real(psb_spk_),intent(in) :: x(:) real(psb_spk_),intent(in) :: x(:)
real(psb_spk_),intent(inout) :: y(:) real(psb_spk_),intent(inout) :: y(:)
real(psb_spk_),intent(in) :: alpha,beta real(psb_spk_),intent(in) :: alpha,beta
@ -209,9 +209,9 @@ module mld_inner_mod
end subroutine mld_ssub_aply end subroutine mld_ssub_aply
subroutine mld_dsub_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_dsub_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_dbaseprc_type), intent(in) :: prec type(mld_dbaseprec_type), intent(in) :: prec
real(psb_dpk_),intent(in) :: x(:) real(psb_dpk_),intent(in) :: x(:)
real(psb_dpk_),intent(inout) :: y(:) real(psb_dpk_),intent(inout) :: y(:)
real(psb_dpk_),intent(in) :: alpha,beta real(psb_dpk_),intent(in) :: alpha,beta
@ -221,9 +221,9 @@ module mld_inner_mod
end subroutine mld_dsub_aply end subroutine mld_dsub_aply
subroutine mld_csub_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_csub_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_cbaseprc_type), intent(in) :: prec type(mld_cbaseprec_type), intent(in) :: prec
complex(psb_spk_),intent(in) :: x(:) complex(psb_spk_),intent(in) :: x(:)
complex(psb_spk_),intent(inout) :: y(:) complex(psb_spk_),intent(inout) :: y(:)
complex(psb_spk_),intent(in) :: alpha,beta complex(psb_spk_),intent(in) :: alpha,beta
@ -233,9 +233,9 @@ module mld_inner_mod
end subroutine mld_csub_aply end subroutine mld_csub_aply
subroutine mld_zsub_aply(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_zsub_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_zbaseprc_type), intent(in) :: prec type(mld_zbaseprec_type), intent(in) :: prec
complex(psb_dpk_),intent(in) :: x(:) complex(psb_dpk_),intent(in) :: x(:)
complex(psb_dpk_),intent(inout) :: y(:) complex(psb_dpk_),intent(inout) :: y(:)
complex(psb_dpk_),intent(in) :: alpha,beta complex(psb_dpk_),intent(in) :: alpha,beta
@ -249,9 +249,9 @@ module mld_inner_mod
interface mld_sub_solve interface mld_sub_solve
subroutine mld_ssub_solve(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_ssub_solve(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_sbaseprc_type), intent(in) :: prec type(mld_sbaseprec_type), intent(in) :: prec
real(psb_spk_),intent(in) :: x(:) real(psb_spk_),intent(in) :: x(:)
real(psb_spk_),intent(inout) :: y(:) real(psb_spk_),intent(inout) :: y(:)
real(psb_spk_),intent(in) :: alpha,beta real(psb_spk_),intent(in) :: alpha,beta
@ -261,9 +261,9 @@ module mld_inner_mod
end subroutine mld_ssub_solve end subroutine mld_ssub_solve
subroutine mld_dsub_solve(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_dsub_solve(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_dbaseprc_type), intent(in) :: prec type(mld_dbaseprec_type), intent(in) :: prec
real(psb_dpk_),intent(in) :: x(:) real(psb_dpk_),intent(in) :: x(:)
real(psb_dpk_),intent(inout) :: y(:) real(psb_dpk_),intent(inout) :: y(:)
real(psb_dpk_),intent(in) :: alpha,beta real(psb_dpk_),intent(in) :: alpha,beta
@ -273,9 +273,9 @@ module mld_inner_mod
end subroutine mld_dsub_solve end subroutine mld_dsub_solve
subroutine mld_csub_solve(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_csub_solve(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_cbaseprc_type), intent(in) :: prec type(mld_cbaseprec_type), intent(in) :: prec
complex(psb_spk_),intent(in) :: x(:) complex(psb_spk_),intent(in) :: x(:)
complex(psb_spk_),intent(inout) :: y(:) complex(psb_spk_),intent(inout) :: y(:)
complex(psb_spk_),intent(in) :: alpha,beta complex(psb_spk_),intent(in) :: alpha,beta
@ -285,9 +285,9 @@ module mld_inner_mod
end subroutine mld_csub_solve end subroutine mld_csub_solve
subroutine mld_zsub_solve(alpha,prec,x,beta,y,desc_data,trans,work,info) subroutine mld_zsub_solve(alpha,prec,x,beta,y,desc_data,trans,work,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_zbaseprc_type), intent(in) :: prec type(mld_zbaseprec_type), intent(in) :: prec
complex(psb_dpk_),intent(in) :: x(:) complex(psb_dpk_),intent(in) :: x(:)
complex(psb_dpk_),intent(inout) :: y(:) complex(psb_dpk_),intent(inout) :: y(:)
complex(psb_dpk_),intent(in) :: alpha,beta complex(psb_dpk_),intent(in) :: alpha,beta
@ -301,7 +301,7 @@ module mld_inner_mod
interface mld_asmat_bld interface mld_asmat_bld
Subroutine mld_sasmat_bld(ptype,novr,a,blk,desc_data,upd,desc_p,info,outfmt) Subroutine mld_sasmat_bld(ptype,novr,a,blk,desc_data,upd,desc_p,info,outfmt)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
integer, intent(in) :: ptype,novr integer, intent(in) :: ptype,novr
Type(psb_sspmat_type), Intent(in) :: a Type(psb_sspmat_type), Intent(in) :: a
Type(psb_sspmat_type), Intent(out) :: blk Type(psb_sspmat_type), Intent(out) :: blk
@ -313,7 +313,7 @@ module mld_inner_mod
end Subroutine mld_sasmat_bld end Subroutine mld_sasmat_bld
Subroutine mld_dasmat_bld(ptype,novr,a,blk,desc_data,upd,desc_p,info,outfmt) Subroutine mld_dasmat_bld(ptype,novr,a,blk,desc_data,upd,desc_p,info,outfmt)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
integer, intent(in) :: ptype,novr integer, intent(in) :: ptype,novr
Type(psb_dspmat_type), Intent(in) :: a Type(psb_dspmat_type), Intent(in) :: a
Type(psb_dspmat_type), Intent(out) :: blk Type(psb_dspmat_type), Intent(out) :: blk
@ -325,7 +325,7 @@ module mld_inner_mod
end Subroutine mld_dasmat_bld end Subroutine mld_dasmat_bld
Subroutine mld_casmat_bld(ptype,novr,a,blk,desc_data,upd,desc_p,info,outfmt) Subroutine mld_casmat_bld(ptype,novr,a,blk,desc_data,upd,desc_p,info,outfmt)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
integer, intent(in) :: ptype,novr integer, intent(in) :: ptype,novr
Type(psb_cspmat_type), Intent(in) :: a Type(psb_cspmat_type), Intent(in) :: a
Type(psb_cspmat_type), Intent(out) :: blk Type(psb_cspmat_type), Intent(out) :: blk
@ -337,7 +337,7 @@ module mld_inner_mod
end Subroutine mld_casmat_bld end Subroutine mld_casmat_bld
Subroutine mld_zasmat_bld(ptype,novr,a,blk,desc_data,upd,desc_p,info,outfmt) Subroutine mld_zasmat_bld(ptype,novr,a,blk,desc_data,upd,desc_p,info,outfmt)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
integer, intent(in) :: ptype,novr integer, intent(in) :: ptype,novr
Type(psb_zspmat_type), Intent(in) :: a Type(psb_zspmat_type), Intent(in) :: a
Type(psb_zspmat_type), Intent(out) :: blk Type(psb_zspmat_type), Intent(out) :: blk
@ -352,34 +352,34 @@ module mld_inner_mod
interface mld_sp_renum interface mld_sp_renum
subroutine mld_ssp_renum(a,blck,p,atmp,info) subroutine mld_ssp_renum(a,blck,p,atmp,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
type(psb_sspmat_type), intent(in) :: a,blck type(psb_sspmat_type), intent(in) :: a,blck
type(psb_sspmat_type), intent(out) :: atmp type(psb_sspmat_type), intent(out) :: atmp
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_ssp_renum end subroutine mld_ssp_renum
subroutine mld_dsp_renum(a,blck,p,atmp,info) subroutine mld_dsp_renum(a,blck,p,atmp,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
type(psb_dspmat_type), intent(in) :: a,blck type(psb_dspmat_type), intent(in) :: a,blck
type(psb_dspmat_type), intent(out) :: atmp type(psb_dspmat_type), intent(out) :: atmp
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_dsp_renum end subroutine mld_dsp_renum
subroutine mld_csp_renum(a,blck,p,atmp,info) subroutine mld_csp_renum(a,blck,p,atmp,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
type(psb_cspmat_type), intent(in) :: a,blck type(psb_cspmat_type), intent(in) :: a,blck
type(psb_cspmat_type), intent(out) :: atmp type(psb_cspmat_type), intent(out) :: atmp
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_csp_renum end subroutine mld_csp_renum
subroutine mld_zsp_renum(a,blck,p,atmp,info) subroutine mld_zsp_renum(a,blck,p,atmp,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
type(psb_zspmat_type), intent(in) :: a,blck type(psb_zspmat_type), intent(in) :: a,blck
type(psb_zspmat_type), intent(out) :: atmp type(psb_zspmat_type), intent(out) :: atmp
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_zsp_renum end subroutine mld_zsp_renum
end interface end interface
@ -387,7 +387,7 @@ module mld_inner_mod
interface mld_aggr_bld interface mld_aggr_bld
subroutine mld_saggr_bld(a,desc_a,p,info) subroutine mld_saggr_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type, mld_s_interlev_prec_type use mld_prec_type, only : mld_sbaseprec_type, mld_s_interlev_prec_type
type(psb_sspmat_type), intent(in) :: a type(psb_sspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_s_interlev_prec_type), intent(inout), target :: p type(mld_s_interlev_prec_type), intent(inout), target :: p
@ -395,7 +395,7 @@ module mld_inner_mod
end subroutine mld_saggr_bld end subroutine mld_saggr_bld
subroutine mld_daggr_bld(a,desc_a,p,info) subroutine mld_daggr_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type, mld_d_interlev_prec_type use mld_prec_type, only : mld_dbaseprec_type, mld_d_interlev_prec_type
type(psb_dspmat_type), intent(in) :: a type(psb_dspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_d_interlev_prec_type), intent(inout), target :: p type(mld_d_interlev_prec_type), intent(inout), target :: p
@ -403,7 +403,7 @@ module mld_inner_mod
end subroutine mld_daggr_bld end subroutine mld_daggr_bld
subroutine mld_caggr_bld(a,desc_a,p,info) subroutine mld_caggr_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type, mld_c_interlev_prec_type use mld_prec_type, only : mld_cbaseprec_type, mld_c_interlev_prec_type
type(psb_cspmat_type), intent(in) :: a type(psb_cspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_c_interlev_prec_type), intent(inout), target :: p type(mld_c_interlev_prec_type), intent(inout), target :: p
@ -411,7 +411,7 @@ module mld_inner_mod
end subroutine mld_caggr_bld end subroutine mld_caggr_bld
subroutine mld_zaggr_bld(a,desc_a,p,info) subroutine mld_zaggr_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type, mld_z_interlev_prec_type use mld_prec_type, only : mld_zbaseprec_type, mld_z_interlev_prec_type
type(psb_zspmat_type), intent(in) :: a type(psb_zspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_z_interlev_prec_type), intent(inout), target :: p type(mld_z_interlev_prec_type), intent(inout), target :: p
@ -422,7 +422,7 @@ module mld_inner_mod
interface mld_aggrmap_bld interface mld_aggrmap_bld
subroutine mld_saggrmap_bld(aggr_type,theta,a,desc_a,nlaggr,ilaggr,info) subroutine mld_saggrmap_bld(aggr_type,theta,a,desc_a,nlaggr,ilaggr,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
integer, intent(in) :: aggr_type integer, intent(in) :: aggr_type
real(psb_spk_), intent(in) :: theta real(psb_spk_), intent(in) :: theta
type(psb_sspmat_type), intent(in) :: a type(psb_sspmat_type), intent(in) :: a
@ -432,7 +432,7 @@ module mld_inner_mod
end subroutine mld_saggrmap_bld end subroutine mld_saggrmap_bld
subroutine mld_daggrmap_bld(aggr_type,theta,a,desc_a,nlaggr,ilaggr,info) subroutine mld_daggrmap_bld(aggr_type,theta,a,desc_a,nlaggr,ilaggr,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
integer, intent(in) :: aggr_type integer, intent(in) :: aggr_type
real(psb_dpk_), intent(in) :: theta real(psb_dpk_), intent(in) :: theta
type(psb_dspmat_type), intent(in) :: a type(psb_dspmat_type), intent(in) :: a
@ -442,7 +442,7 @@ module mld_inner_mod
end subroutine mld_daggrmap_bld end subroutine mld_daggrmap_bld
subroutine mld_caggrmap_bld(aggr_type,theta,a,desc_a,nlaggr,ilaggr,info) subroutine mld_caggrmap_bld(aggr_type,theta,a,desc_a,nlaggr,ilaggr,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
integer, intent(in) :: aggr_type integer, intent(in) :: aggr_type
real(psb_spk_), intent(in) :: theta real(psb_spk_), intent(in) :: theta
type(psb_cspmat_type), intent(in) :: a type(psb_cspmat_type), intent(in) :: a
@ -452,7 +452,7 @@ module mld_inner_mod
end subroutine mld_caggrmap_bld end subroutine mld_caggrmap_bld
subroutine mld_zaggrmap_bld(aggr_type,theta,a,desc_a,nlaggr,ilaggr,info) subroutine mld_zaggrmap_bld(aggr_type,theta,a,desc_a,nlaggr,ilaggr,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
integer, intent(in) :: aggr_type integer, intent(in) :: aggr_type
real(psb_dpk_), intent(in) :: theta real(psb_dpk_), intent(in) :: theta
type(psb_zspmat_type), intent(in) :: a type(psb_zspmat_type), intent(in) :: a
@ -465,7 +465,7 @@ module mld_inner_mod
interface mld_aggrmat_asb interface mld_aggrmat_asb
subroutine mld_saggrmat_asb(a,desc_a,p,info) subroutine mld_saggrmat_asb(a,desc_a,p,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type, mld_s_interlev_prec_type use mld_prec_type, only : mld_sbaseprec_type, mld_s_interlev_prec_type
type(psb_sspmat_type), intent(in) :: a type(psb_sspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_s_interlev_prec_type), intent(inout), target :: p type(mld_s_interlev_prec_type), intent(inout), target :: p
@ -473,7 +473,7 @@ module mld_inner_mod
end subroutine mld_saggrmat_asb end subroutine mld_saggrmat_asb
subroutine mld_daggrmat_asb(a,desc_a,p,info) subroutine mld_daggrmat_asb(a,desc_a,p,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type, mld_d_interlev_prec_type use mld_prec_type, only : mld_dbaseprec_type, mld_d_interlev_prec_type
type(psb_dspmat_type), intent(in) :: a type(psb_dspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_d_interlev_prec_type), intent(inout), target :: p type(mld_d_interlev_prec_type), intent(inout), target :: p
@ -481,7 +481,7 @@ module mld_inner_mod
end subroutine mld_daggrmat_asb end subroutine mld_daggrmat_asb
subroutine mld_caggrmat_asb(a,desc_a,p,info) subroutine mld_caggrmat_asb(a,desc_a,p,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type, mld_c_interlev_prec_type use mld_prec_type, only : mld_cbaseprec_type, mld_c_interlev_prec_type
type(psb_cspmat_type), intent(in) :: a type(psb_cspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_c_interlev_prec_type), intent(inout), target :: p type(mld_c_interlev_prec_type), intent(inout), target :: p
@ -489,7 +489,7 @@ module mld_inner_mod
end subroutine mld_caggrmat_asb end subroutine mld_caggrmat_asb
subroutine mld_zaggrmat_asb(a,desc_a,p,info) subroutine mld_zaggrmat_asb(a,desc_a,p,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type, mld_z_interlev_prec_type use mld_prec_type, only : mld_zbaseprec_type, mld_z_interlev_prec_type
type(psb_zspmat_type), intent(in) :: a type(psb_zspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_z_interlev_prec_type), intent(inout), target :: p type(mld_z_interlev_prec_type), intent(inout), target :: p
@ -500,7 +500,7 @@ module mld_inner_mod
interface mld_aggrmat_raw_asb interface mld_aggrmat_raw_asb
subroutine mld_saggrmat_raw_asb(a,desc_a,p,info) subroutine mld_saggrmat_raw_asb(a,desc_a,p,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type, mld_s_interlev_prec_type use mld_prec_type, only : mld_sbaseprec_type, mld_s_interlev_prec_type
type(psb_sspmat_type), intent(in) :: a type(psb_sspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_s_interlev_prec_type), intent(inout), target :: p type(mld_s_interlev_prec_type), intent(inout), target :: p
@ -508,7 +508,7 @@ module mld_inner_mod
end subroutine mld_saggrmat_raw_asb end subroutine mld_saggrmat_raw_asb
subroutine mld_daggrmat_raw_asb(a,desc_a,p,info) subroutine mld_daggrmat_raw_asb(a,desc_a,p,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type, mld_d_interlev_prec_type use mld_prec_type, only : mld_dbaseprec_type, mld_d_interlev_prec_type
type(psb_dspmat_type), intent(in) :: a type(psb_dspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_d_interlev_prec_type), intent(inout), target :: p type(mld_d_interlev_prec_type), intent(inout), target :: p
@ -516,7 +516,7 @@ module mld_inner_mod
end subroutine mld_daggrmat_raw_asb end subroutine mld_daggrmat_raw_asb
subroutine mld_caggrmat_raw_asb(a,desc_a,p,info) subroutine mld_caggrmat_raw_asb(a,desc_a,p,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type, mld_c_interlev_prec_type use mld_prec_type, only : mld_cbaseprec_type, mld_c_interlev_prec_type
type(psb_cspmat_type), intent(in) :: a type(psb_cspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_c_interlev_prec_type), intent(inout), target :: p type(mld_c_interlev_prec_type), intent(inout), target :: p
@ -524,7 +524,7 @@ module mld_inner_mod
end subroutine mld_caggrmat_raw_asb end subroutine mld_caggrmat_raw_asb
subroutine mld_zaggrmat_raw_asb(a,desc_a,p,info) subroutine mld_zaggrmat_raw_asb(a,desc_a,p,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type, mld_z_interlev_prec_type use mld_prec_type, only : mld_zbaseprec_type, mld_z_interlev_prec_type
type(psb_zspmat_type), intent(in) :: a type(psb_zspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_z_interlev_prec_type), intent(inout), target :: p type(mld_z_interlev_prec_type), intent(inout), target :: p
@ -535,7 +535,7 @@ module mld_inner_mod
interface mld_aggrmat_smth_asb interface mld_aggrmat_smth_asb
subroutine mld_saggrmat_smth_asb(a,desc_a,p,info) subroutine mld_saggrmat_smth_asb(a,desc_a,p,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type, mld_s_interlev_prec_type use mld_prec_type, only : mld_sbaseprec_type, mld_s_interlev_prec_type
type(psb_sspmat_type), intent(in) :: a type(psb_sspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_s_interlev_prec_type), intent(inout), target :: p type(mld_s_interlev_prec_type), intent(inout), target :: p
@ -543,7 +543,7 @@ module mld_inner_mod
end subroutine mld_saggrmat_smth_asb end subroutine mld_saggrmat_smth_asb
subroutine mld_daggrmat_smth_asb(a,desc_a,p,info) subroutine mld_daggrmat_smth_asb(a,desc_a,p,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type, mld_d_interlev_prec_type use mld_prec_type, only : mld_dbaseprec_type, mld_d_interlev_prec_type
type(psb_dspmat_type), intent(in) :: a type(psb_dspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_d_interlev_prec_type), intent(inout), target :: p type(mld_d_interlev_prec_type), intent(inout), target :: p
@ -551,7 +551,7 @@ module mld_inner_mod
end subroutine mld_daggrmat_smth_asb end subroutine mld_daggrmat_smth_asb
subroutine mld_caggrmat_smth_asb(a,desc_a,p,info) subroutine mld_caggrmat_smth_asb(a,desc_a,p,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type, mld_c_interlev_prec_type use mld_prec_type, only : mld_cbaseprec_type, mld_c_interlev_prec_type
type(psb_cspmat_type), intent(in) :: a type(psb_cspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_c_interlev_prec_type), intent(inout), target :: p type(mld_c_interlev_prec_type), intent(inout), target :: p
@ -559,7 +559,7 @@ module mld_inner_mod
end subroutine mld_caggrmat_smth_asb end subroutine mld_caggrmat_smth_asb
subroutine mld_zaggrmat_smth_asb(a,desc_a,p,info) subroutine mld_zaggrmat_smth_asb(a,desc_a,p,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type, mld_z_interlev_prec_type use mld_prec_type, only : mld_zbaseprec_type, mld_z_interlev_prec_type
type(psb_zspmat_type), intent(in) :: a type(psb_zspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_z_interlev_prec_type), intent(inout), target :: p type(mld_z_interlev_prec_type), intent(inout), target :: p
@ -570,37 +570,37 @@ module mld_inner_mod
interface mld_baseprec_bld interface mld_baseprec_bld
subroutine mld_sbaseprec_bld(a,desc_a,p,info,upd) subroutine mld_sbaseprec_bld(a,desc_a,p,info,upd)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
type(psb_sspmat_type), target :: a type(psb_sspmat_type), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_sbaseprc_type),intent(inout) :: p type(mld_sbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in), optional :: upd character, intent(in), optional :: upd
end subroutine mld_sbaseprec_bld end subroutine mld_sbaseprec_bld
subroutine mld_dbaseprec_bld(a,desc_a,p,info,upd) subroutine mld_dbaseprec_bld(a,desc_a,p,info,upd)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
type(psb_dspmat_type), target :: a type(psb_dspmat_type), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_dbaseprc_type),intent(inout) :: p type(mld_dbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in), optional :: upd character, intent(in), optional :: upd
end subroutine mld_dbaseprec_bld end subroutine mld_dbaseprec_bld
subroutine mld_cbaseprec_bld(a,desc_a,p,info,upd) subroutine mld_cbaseprec_bld(a,desc_a,p,info,upd)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
type(psb_cspmat_type), target :: a type(psb_cspmat_type), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_cbaseprc_type),intent(inout) :: p type(mld_cbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in), optional :: upd character, intent(in), optional :: upd
end subroutine mld_cbaseprec_bld end subroutine mld_cbaseprec_bld
subroutine mld_zbaseprec_bld(a,desc_a,p,info,upd) subroutine mld_zbaseprec_bld(a,desc_a,p,info,upd)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
type(psb_zspmat_type), target :: a type(psb_zspmat_type), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_zbaseprc_type),intent(inout) :: p type(mld_zbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in), optional :: upd character, intent(in), optional :: upd
end subroutine mld_zbaseprec_bld end subroutine mld_zbaseprec_bld
@ -609,37 +609,37 @@ module mld_inner_mod
interface mld_as_bld interface mld_as_bld
subroutine mld_sas_bld(a,desc_a,p,upd,info) subroutine mld_sas_bld(a,desc_a,p,upd,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
type(psb_sspmat_type), target :: a type(psb_sspmat_type), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_sbaseprc_type),intent(inout) :: p type(mld_sbaseprec_type),intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_sas_bld end subroutine mld_sas_bld
subroutine mld_das_bld(a,desc_a,p,upd,info) subroutine mld_das_bld(a,desc_a,p,upd,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
type(psb_dspmat_type), target :: a type(psb_dspmat_type), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_dbaseprc_type),intent(inout) :: p type(mld_dbaseprec_type),intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_das_bld end subroutine mld_das_bld
subroutine mld_cas_bld(a,desc_a,p,upd,info) subroutine mld_cas_bld(a,desc_a,p,upd,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
type(psb_cspmat_type), target :: a type(psb_cspmat_type), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_cbaseprc_type),intent(inout) :: p type(mld_cbaseprec_type),intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_cas_bld end subroutine mld_cas_bld
subroutine mld_zas_bld(a,desc_a,p,upd,info) subroutine mld_zas_bld(a,desc_a,p,upd,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
type(psb_zspmat_type), target :: a type(psb_zspmat_type), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_zbaseprc_type),intent(inout) :: p type(mld_zbaseprec_type),intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_zas_bld end subroutine mld_zas_bld
@ -648,71 +648,71 @@ module mld_inner_mod
interface mld_diag_bld interface mld_diag_bld
subroutine mld_sdiag_bld(a,desc_data,p,info) subroutine mld_sdiag_bld(a,desc_data,p,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
integer, intent(out) :: info integer, intent(out) :: info
type(psb_sspmat_type), intent(in), target :: a type(psb_sspmat_type), intent(in), target :: a
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
end subroutine mld_sdiag_bld end subroutine mld_sdiag_bld
subroutine mld_ddiag_bld(a,desc_data,p,info) subroutine mld_ddiag_bld(a,desc_data,p,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
integer, intent(out) :: info integer, intent(out) :: info
type(psb_dspmat_type), intent(in), target :: a type(psb_dspmat_type), intent(in), target :: a
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
end subroutine mld_ddiag_bld end subroutine mld_ddiag_bld
subroutine mld_cdiag_bld(a,desc_data,p,info) subroutine mld_cdiag_bld(a,desc_data,p,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
integer, intent(out) :: info integer, intent(out) :: info
type(psb_cspmat_type), intent(in), target :: a type(psb_cspmat_type), intent(in), target :: a
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
end subroutine mld_cdiag_bld end subroutine mld_cdiag_bld
subroutine mld_zdiag_bld(a,desc_data,p,info) subroutine mld_zdiag_bld(a,desc_data,p,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
integer, intent(out) :: info integer, intent(out) :: info
type(psb_zspmat_type), intent(in), target :: a type(psb_zspmat_type), intent(in), target :: a
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
end subroutine mld_zdiag_bld end subroutine mld_zdiag_bld
end interface end interface
interface mld_fact_bld interface mld_fact_bld
subroutine mld_sfact_bld(a,p,upd,info,blck) subroutine mld_sfact_bld(a,p,upd,info,blck)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
type(psb_sspmat_type), intent(in), target :: a type(psb_sspmat_type), intent(in), target :: a
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in) :: upd character, intent(in) :: upd
type(psb_sspmat_type), intent(in), target, optional :: blck type(psb_sspmat_type), intent(in), target, optional :: blck
end subroutine mld_sfact_bld end subroutine mld_sfact_bld
subroutine mld_dfact_bld(a,p,upd,info,blck) subroutine mld_dfact_bld(a,p,upd,info,blck)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
type(psb_dspmat_type), intent(in), target :: a type(psb_dspmat_type), intent(in), target :: a
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in) :: upd character, intent(in) :: upd
type(psb_dspmat_type), intent(in), target, optional :: blck type(psb_dspmat_type), intent(in), target, optional :: blck
end subroutine mld_dfact_bld end subroutine mld_dfact_bld
subroutine mld_cfact_bld(a,p,upd,info,blck) subroutine mld_cfact_bld(a,p,upd,info,blck)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
type(psb_cspmat_type), intent(in), target :: a type(psb_cspmat_type), intent(in), target :: a
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in) :: upd character, intent(in) :: upd
type(psb_cspmat_type), intent(in), target, optional :: blck type(psb_cspmat_type), intent(in), target, optional :: blck
end subroutine mld_cfact_bld end subroutine mld_cfact_bld
subroutine mld_zfact_bld(a,p,upd,info,blck) subroutine mld_zfact_bld(a,p,upd,info,blck)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
type(psb_zspmat_type), intent(in), target :: a type(psb_zspmat_type), intent(in), target :: a
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in) :: upd character, intent(in) :: upd
type(psb_zspmat_type), intent(in), target, optional :: blck type(psb_zspmat_type), intent(in), target, optional :: blck
@ -722,37 +722,37 @@ module mld_inner_mod
interface mld_ilu_bld interface mld_ilu_bld
subroutine mld_silu_bld(a,p,upd,info,blck) subroutine mld_silu_bld(a,p,upd,info,blck)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
integer, intent(out) :: info integer, intent(out) :: info
type(psb_sspmat_type), intent(in), target :: a type(psb_sspmat_type), intent(in), target :: a
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
type(psb_sspmat_type), intent(in), optional :: blck type(psb_sspmat_type), intent(in), optional :: blck
end subroutine mld_silu_bld end subroutine mld_silu_bld
subroutine mld_dilu_bld(a,p,upd,info,blck) subroutine mld_dilu_bld(a,p,upd,info,blck)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
integer, intent(out) :: info integer, intent(out) :: info
type(psb_dspmat_type), intent(in), target :: a type(psb_dspmat_type), intent(in), target :: a
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
type(psb_dspmat_type), intent(in), optional :: blck type(psb_dspmat_type), intent(in), optional :: blck
end subroutine mld_dilu_bld end subroutine mld_dilu_bld
subroutine mld_cilu_bld(a,p,upd,info,blck) subroutine mld_cilu_bld(a,p,upd,info,blck)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
integer, intent(out) :: info integer, intent(out) :: info
type(psb_cspmat_type), intent(in), target :: a type(psb_cspmat_type), intent(in), target :: a
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
type(psb_cspmat_type), intent(in), optional :: blck type(psb_cspmat_type), intent(in), optional :: blck
end subroutine mld_cilu_bld end subroutine mld_cilu_bld
subroutine mld_zilu_bld(a,p,upd,info,blck) subroutine mld_zilu_bld(a,p,upd,info,blck)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
integer, intent(out) :: info integer, intent(out) :: info
type(psb_zspmat_type), intent(in), target :: a type(psb_zspmat_type), intent(in), target :: a
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
type(psb_zspmat_type), intent(in), optional :: blck type(psb_zspmat_type), intent(in), optional :: blck
end subroutine mld_zilu_bld end subroutine mld_zilu_bld
@ -761,34 +761,34 @@ module mld_inner_mod
interface mld_sludist_bld interface mld_sludist_bld
subroutine mld_ssludist_bld(a,desc_a,p,info) subroutine mld_ssludist_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
type(psb_sspmat_type), intent(inout) :: a type(psb_sspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_ssludist_bld end subroutine mld_ssludist_bld
subroutine mld_dsludist_bld(a,desc_a,p,info) subroutine mld_dsludist_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
type(psb_dspmat_type), intent(inout) :: a type(psb_dspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_dsludist_bld end subroutine mld_dsludist_bld
subroutine mld_csludist_bld(a,desc_a,p,info) subroutine mld_csludist_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
type(psb_cspmat_type), intent(inout) :: a type(psb_cspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_csludist_bld end subroutine mld_csludist_bld
subroutine mld_zsludist_bld(a,desc_a,p,info) subroutine mld_zsludist_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
type(psb_zspmat_type), intent(inout) :: a type(psb_zspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_zsludist_bld end subroutine mld_zsludist_bld
end interface end interface
@ -796,34 +796,34 @@ module mld_inner_mod
interface mld_slu_bld interface mld_slu_bld
subroutine mld_sslu_bld(a,desc_a,p,info) subroutine mld_sslu_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
type(psb_sspmat_type), intent(inout) :: a type(psb_sspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_sslu_bld end subroutine mld_sslu_bld
subroutine mld_dslu_bld(a,desc_a,p,info) subroutine mld_dslu_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
type(psb_dspmat_type), intent(inout) :: a type(psb_dspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_dslu_bld end subroutine mld_dslu_bld
subroutine mld_cslu_bld(a,desc_a,p,info) subroutine mld_cslu_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
type(psb_cspmat_type), intent(inout) :: a type(psb_cspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_cslu_bld end subroutine mld_cslu_bld
subroutine mld_zslu_bld(a,desc_a,p,info) subroutine mld_zslu_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
type(psb_zspmat_type), intent(inout) :: a type(psb_zspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_zslu_bld end subroutine mld_zslu_bld
end interface end interface
@ -831,34 +831,34 @@ module mld_inner_mod
interface mld_umf_bld interface mld_umf_bld
subroutine mld_sumf_bld(a,desc_a,p,info) subroutine mld_sumf_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sbaseprc_type use mld_prec_type, only : mld_sbaseprec_type
type(psb_sspmat_type), intent(inout) :: a type(psb_sspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_sumf_bld end subroutine mld_sumf_bld
subroutine mld_dumf_bld(a,desc_a,p,info) subroutine mld_dumf_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dbaseprc_type use mld_prec_type, only : mld_dbaseprec_type
type(psb_dspmat_type), intent(inout) :: a type(psb_dspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_dumf_bld end subroutine mld_dumf_bld
subroutine mld_cumf_bld(a,desc_a,p,info) subroutine mld_cumf_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_ use psb_base_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cbaseprc_type use mld_prec_type, only : mld_cbaseprec_type
type(psb_cspmat_type), intent(in) :: a type(psb_cspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_cumf_bld end subroutine mld_cumf_bld
subroutine mld_zumf_bld(a,desc_a,p,info) subroutine mld_zumf_bld(a,desc_a,p,info)
use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_ use psb_base_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zbaseprc_type use mld_prec_type, only : mld_zbaseprec_type
type(psb_zspmat_type), intent(in) :: a type(psb_zspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
end subroutine mld_zumf_bld end subroutine mld_zumf_bld
end interface end interface

@ -49,7 +49,7 @@
! data structure (see below). ! data structure (see below).
! !
! It contains: ! It contains:
! - mld_dprec_sizeof, mld_dbaseprc_sizeof, mld_out_prec_descr, mld_file_prec_descr, ! - mld_dprec_sizeof, mld_dbaseprec_sizeof, mld_out_prec_descr, mld_file_prec_descr,
! mld_icheck_def, mld_dcheck_def, mld_dbase_precfree, mld_nullify_dbaseprec, ! mld_icheck_def, mld_dcheck_def, mld_dbase_precfree, mld_nullify_dbaseprec,
! is_legal_..._..., and their complex versions (if applicable). ! is_legal_..._..., and their complex versions (if applicable).
! These routines check if the preconditioner is correctly defined, print a ! These routines check if the preconditioner is correctly defined, print a
@ -77,7 +77,7 @@ contains
subroutine mld_sbaseprec_move_alloc(a, b,info) subroutine mld_sbaseprec_move_alloc(a, b,info)
use psb_base_mod use psb_base_mod
implicit none implicit none
type(mld_sbaseprc_type), intent(inout) :: a, b type(mld_sbaseprec_type), intent(inout) :: a, b
integer, intent(out) :: info integer, intent(out) :: info
integer :: i, isz integer :: i, isz
@ -172,7 +172,7 @@ contains
subroutine mld_dbaseprec_move_alloc(a, b,info) subroutine mld_dbaseprec_move_alloc(a, b,info)
use psb_base_mod use psb_base_mod
implicit none implicit none
type(mld_dbaseprc_type), intent(inout) :: a, b type(mld_dbaseprec_type), intent(inout) :: a, b
integer, intent(out) :: info integer, intent(out) :: info
integer :: i, isz integer :: i, isz
@ -267,7 +267,7 @@ contains
subroutine mld_cbaseprec_move_alloc(a, b,info) subroutine mld_cbaseprec_move_alloc(a, b,info)
use psb_base_mod use psb_base_mod
implicit none implicit none
type(mld_cbaseprc_type), intent(inout) :: a, b type(mld_cbaseprec_type), intent(inout) :: a, b
integer, intent(out) :: info integer, intent(out) :: info
integer :: i, isz integer :: i, isz
@ -362,7 +362,7 @@ contains
subroutine mld_zbaseprec_move_alloc(a, b,info) subroutine mld_zbaseprec_move_alloc(a, b,info)
use psb_base_mod use psb_base_mod
implicit none implicit none
type(mld_zbaseprc_type), intent(inout) :: a, b type(mld_zbaseprec_type), intent(inout) :: a, b
integer, intent(out) :: info integer, intent(out) :: info
integer :: i, isz integer :: i, isz

@ -49,7 +49,7 @@
! data structure (see below). ! data structure (see below).
! !
! It contains: ! It contains:
! - mld_dprec_sizeof, mld_dbaseprc_sizeof, mld_out_prec_descr, mld_file_prec_descr, ! - mld_dprec_sizeof, mld_dbaseprec_sizeof, mld_out_prec_descr, mld_file_prec_descr,
! mld_icheck_def, mld_dcheck_def, mld_dbase_precfree, mld_nullify_dbaseprec, ! mld_icheck_def, mld_dcheck_def, mld_dbase_precfree, mld_nullify_dbaseprec,
! is_legal_..._..., and their complex versions (if applicable). ! is_legal_..._..., and their complex versions (if applicable).
! These routines check if the preconditioner is correctly defined, print a ! These routines check if the preconditioner is correctly defined, print a
@ -101,7 +101,7 @@ module mld_prec_type
! Type: mld_X_interlev_prec_type. ! Type: mld_X_interlev_prec_type.
! The data type containing necessary items for the current level. ! The data type containing necessary items for the current level.
! !
! type(mld_Xbaseprc_type) - prec ! type(mld_Xbaseprec_type) - prec
! The current level preconditioner (aka smoother). ! The current level preconditioner (aka smoother).
! ac - The local part of the matrix A(ilev). ! ac - The local part of the matrix A(ilev).
! desc_ac - type(psb_desc_type). ! desc_ac - type(psb_desc_type).
@ -128,7 +128,7 @@ module mld_prec_type
! base_desc - type(psb_desc_type), pointer. ! base_desc - type(psb_desc_type), pointer.
! Pointer to the communication descriptor associated to the sparse ! Pointer to the communication descriptor associated to the sparse
! matrix pointed by base_a. ! matrix pointed by base_a.
! Type: mld_Xbaseprc_type ! Type: mld_Xbaseprec_type
! The smoother. ! The smoother.
! !
! av - type(psb_Xspmat_type), dimension(:), allocatable(:). ! av - type(psb_Xspmat_type), dimension(:), allocatable(:).
@ -166,17 +166,17 @@ module mld_prec_type
! prec%iprcparm(mld_umf_ptr) or prec%iprcparm(mld_slu_ptr), respectively. ! prec%iprcparm(mld_umf_ptr) or prec%iprcparm(mld_slu_ptr), respectively.
! !
type mld_sbaseprc_type type mld_sbaseprec_type
type(psb_sspmat_type), allocatable :: av(:) type(psb_sspmat_type), allocatable :: av(:)
real(psb_spk_), allocatable :: d(:) real(psb_spk_), allocatable :: d(:)
type(psb_desc_type) :: desc_data type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:) integer, allocatable :: iprcparm(:)
real(psb_spk_), allocatable :: rprcparm(:) real(psb_spk_), allocatable :: rprcparm(:)
integer, allocatable :: perm(:), invperm(:) integer, allocatable :: perm(:), invperm(:)
end type mld_sbaseprc_type end type mld_sbaseprec_type
type mld_s_interlev_prec_type type mld_s_interlev_prec_type
type(mld_sbaseprc_type) :: prec type(mld_sbaseprec_type) :: prec
integer, allocatable :: iprcparm(:) integer, allocatable :: iprcparm(:)
real(psb_spk_), allocatable :: rprcparm(:) real(psb_spk_), allocatable :: rprcparm(:)
type(psb_sspmat_type) :: ac type(psb_sspmat_type) :: ac
@ -191,17 +191,17 @@ module mld_prec_type
type(mld_s_interlev_prec_type), allocatable :: precv(:) type(mld_s_interlev_prec_type), allocatable :: precv(:)
end type mld_sprec_type end type mld_sprec_type
type mld_dbaseprc_type type mld_dbaseprec_type
type(psb_dspmat_type), allocatable :: av(:) type(psb_dspmat_type), allocatable :: av(:)
real(psb_dpk_), allocatable :: d(:) real(psb_dpk_), allocatable :: d(:)
type(psb_desc_type) :: desc_data type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:) integer, allocatable :: iprcparm(:)
real(psb_dpk_), allocatable :: rprcparm(:) real(psb_dpk_), allocatable :: rprcparm(:)
integer, allocatable :: perm(:), invperm(:) integer, allocatable :: perm(:), invperm(:)
end type mld_dbaseprc_type end type mld_dbaseprec_type
type mld_d_interlev_prec_type type mld_d_interlev_prec_type
type(mld_dbaseprc_type) :: prec type(mld_dbaseprec_type) :: prec
integer, allocatable :: iprcparm(:) integer, allocatable :: iprcparm(:)
real(psb_dpk_), allocatable :: rprcparm(:) real(psb_dpk_), allocatable :: rprcparm(:)
type(psb_dspmat_type) :: ac type(psb_dspmat_type) :: ac
@ -217,17 +217,17 @@ module mld_prec_type
end type mld_dprec_type end type mld_dprec_type
type mld_cbaseprc_type type mld_cbaseprec_type
type(psb_cspmat_type), allocatable :: av(:) type(psb_cspmat_type), allocatable :: av(:)
complex(psb_spk_), allocatable :: d(:) complex(psb_spk_), allocatable :: d(:)
type(psb_desc_type) :: desc_data type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:) integer, allocatable :: iprcparm(:)
real(psb_spk_), allocatable :: rprcparm(:) real(psb_spk_), allocatable :: rprcparm(:)
integer, allocatable :: perm(:), invperm(:) integer, allocatable :: perm(:), invperm(:)
end type mld_cbaseprc_type end type mld_cbaseprec_type
type mld_c_interlev_prec_type type mld_c_interlev_prec_type
type(mld_cbaseprc_type) :: prec type(mld_cbaseprec_type) :: prec
integer, allocatable :: iprcparm(:) integer, allocatable :: iprcparm(:)
real(psb_spk_), allocatable :: rprcparm(:) real(psb_spk_), allocatable :: rprcparm(:)
type(psb_cspmat_type) :: ac type(psb_cspmat_type) :: ac
@ -242,17 +242,17 @@ module mld_prec_type
type(mld_c_interlev_prec_type), allocatable :: precv(:) type(mld_c_interlev_prec_type), allocatable :: precv(:)
end type mld_cprec_type end type mld_cprec_type
type mld_zbaseprc_type type mld_zbaseprec_type
type(psb_zspmat_type), allocatable :: av(:) type(psb_zspmat_type), allocatable :: av(:)
complex(psb_dpk_), allocatable :: d(:) complex(psb_dpk_), allocatable :: d(:)
type(psb_desc_type) :: desc_data type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:) integer, allocatable :: iprcparm(:)
real(psb_dpk_), allocatable :: rprcparm(:) real(psb_dpk_), allocatable :: rprcparm(:)
integer, allocatable :: perm(:), invperm(:) integer, allocatable :: perm(:), invperm(:)
end type mld_zbaseprc_type end type mld_zbaseprec_type
type mld_z_interlev_prec_type type mld_z_interlev_prec_type
type(mld_zbaseprc_type) :: prec type(mld_zbaseprec_type) :: prec
integer, allocatable :: iprcparm(:) integer, allocatable :: iprcparm(:)
real(psb_dpk_), allocatable :: rprcparm(:) real(psb_dpk_), allocatable :: rprcparm(:)
type(psb_zspmat_type) :: ac type(psb_zspmat_type) :: ac
@ -449,8 +449,8 @@ module mld_prec_type
interface mld_sizeof interface mld_sizeof
module procedure mld_sprec_sizeof, mld_cprec_sizeof, & module procedure mld_sprec_sizeof, mld_cprec_sizeof, &
& mld_dprec_sizeof, mld_zprec_sizeof, & & mld_dprec_sizeof, mld_zprec_sizeof, &
& mld_sbaseprc_sizeof, mld_cbaseprc_sizeof,& & mld_sbaseprec_sizeof, mld_cbaseprec_sizeof,&
& mld_dbaseprc_sizeof, mld_zbaseprc_sizeof, & & mld_dbaseprec_sizeof, mld_zbaseprec_sizeof, &
& mld_s_onelev_prec_sizeof, mld_d_onelev_prec_sizeof,& & mld_s_onelev_prec_sizeof, mld_d_onelev_prec_sizeof,&
& mld_c_onelev_prec_sizeof, mld_z_onelev_prec_sizeof & mld_c_onelev_prec_sizeof, mld_z_onelev_prec_sizeof
end interface end interface
@ -612,12 +612,12 @@ contains
end function mld_zprec_sizeof end function mld_zprec_sizeof
! !
! Function returning the size of the mld_baseprc_type data structure ! Function returning the size of the mld_baseprec_type data structure
! !
function mld_sbaseprc_sizeof(prec) result(val) function mld_sbaseprec_sizeof(prec) result(val)
implicit none implicit none
type(mld_sbaseprc_type), intent(in) :: prec type(mld_sbaseprec_type), intent(in) :: prec
integer(psb_long_int_k_) :: val integer(psb_long_int_k_) :: val
integer :: i integer :: i
@ -647,11 +647,11 @@ contains
end do end do
end if end if
end function mld_sbaseprc_sizeof end function mld_sbaseprec_sizeof
function mld_dbaseprc_sizeof(prec) result(val) function mld_dbaseprec_sizeof(prec) result(val)
implicit none implicit none
type(mld_dbaseprc_type), intent(in) :: prec type(mld_dbaseprec_type), intent(in) :: prec
integer(psb_long_int_k_) :: val integer(psb_long_int_k_) :: val
integer :: i integer :: i
@ -682,11 +682,11 @@ contains
end if end if
end function mld_dbaseprc_sizeof end function mld_dbaseprec_sizeof
function mld_cbaseprc_sizeof(prec) result(val) function mld_cbaseprec_sizeof(prec) result(val)
implicit none implicit none
type(mld_cbaseprc_type), intent(in) :: prec type(mld_cbaseprec_type), intent(in) :: prec
integer(psb_long_int_k_) :: val integer(psb_long_int_k_) :: val
integer :: i integer :: i
@ -716,11 +716,11 @@ contains
end do end do
end if end if
end function mld_cbaseprc_sizeof end function mld_cbaseprec_sizeof
function mld_zbaseprc_sizeof(prec) result(val) function mld_zbaseprec_sizeof(prec) result(val)
implicit none implicit none
type(mld_zbaseprc_type), intent(in) :: prec type(mld_zbaseprec_type), intent(in) :: prec
integer(psb_long_int_k_) :: val integer(psb_long_int_k_) :: val
integer :: i integer :: i
@ -750,7 +750,7 @@ contains
end do end do
end if end if
end function mld_zbaseprc_sizeof end function mld_zbaseprec_sizeof
function mld_s_onelev_prec_sizeof(prec) result(val) function mld_s_onelev_prec_sizeof(prec) result(val)
implicit none implicit none
@ -1816,7 +1816,7 @@ contains
subroutine mld_sbase_precfree(p,info) subroutine mld_sbase_precfree(p,info)
implicit none implicit none
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
integer :: i integer :: i
@ -1925,7 +1925,7 @@ contains
subroutine mld_nullify_sbaseprec(p) subroutine mld_nullify_sbaseprec(p)
implicit none implicit none
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
!!$ nullify(p%base_a) !!$ nullify(p%base_a)
!!$ nullify(p%base_desc) !!$ nullify(p%base_desc)
@ -1936,7 +1936,7 @@ contains
subroutine mld_dbase_precfree(p,info) subroutine mld_dbase_precfree(p,info)
implicit none implicit none
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
integer :: i integer :: i
@ -2039,7 +2039,7 @@ contains
subroutine mld_nullify_dbaseprec(p) subroutine mld_nullify_dbaseprec(p)
implicit none implicit none
type(mld_dbaseprc_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
!!$ !!$
!!$ nullify(p%base_a) !!$ nullify(p%base_a)
!!$ nullify(p%base_desc) !!$ nullify(p%base_desc)
@ -2058,7 +2058,7 @@ contains
subroutine mld_cbase_precfree(p,info) subroutine mld_cbase_precfree(p,info)
implicit none implicit none
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
integer :: i integer :: i
@ -2161,7 +2161,7 @@ contains
subroutine mld_nullify_cbaseprec(p) subroutine mld_nullify_cbaseprec(p)
implicit none implicit none
type(mld_cbaseprc_type), intent(inout) :: p type(mld_cbaseprec_type), intent(inout) :: p
!!$ nullify(p%base_a) !!$ nullify(p%base_a)
!!$ nullify(p%base_desc) !!$ nullify(p%base_desc)
@ -2170,7 +2170,7 @@ contains
subroutine mld_zbase_precfree(p,info) subroutine mld_zbase_precfree(p,info)
implicit none implicit none
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
integer :: i integer :: i
@ -2278,7 +2278,7 @@ contains
subroutine mld_nullify_zbaseprec(p) subroutine mld_nullify_zbaseprec(p)
implicit none implicit none
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
!!$ nullify(p%base_a) !!$ nullify(p%base_a)
!!$ nullify(p%base_desc) !!$ nullify(p%base_desc)

@ -54,7 +54,7 @@
! Arguments: ! Arguments:
! alpha - real(psb_spk_), input. ! alpha - real(psb_spk_), input.
! The scalar alpha. ! The scalar alpha.
! prec - type(mld_sbaseprc_type), input. ! prec - type(mld_sbaseprec_type), input.
! The base preconditioner data structure containing the local part ! The base preconditioner data structure containing the local part
! of the preconditioner K. ! of the preconditioner K.
! x - real(psb_spk_), dimension(:), input. ! x - real(psb_spk_), dimension(:), input.
@ -83,7 +83,7 @@ subroutine mld_sas_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_sbaseprc_type), intent(in) :: prec type(mld_sbaseprec_type), intent(in) :: prec
real(psb_spk_),intent(in) :: x(:) real(psb_spk_),intent(in) :: x(:)
real(psb_spk_),intent(inout) :: y(:) real(psb_spk_),intent(inout) :: y(:)
real(psb_spk_),intent(in) :: alpha,beta real(psb_spk_),intent(in) :: alpha,beta

@ -54,7 +54,7 @@
! matrix to be preconditioned. ! matrix to be preconditioned.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor of the sparse matrix a. ! The communication descriptor of the sparse matrix a.
! p - type(mld_sbaseprc_type), input/output. ! p - type(mld_sbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the local ! The 'base preconditioner' data structure containing the local
! part of the preconditioner or solver to be built. ! part of the preconditioner or solver to be built.
! upd - character, input. ! upd - character, input.
@ -76,7 +76,7 @@ subroutine mld_sas_bld(a,desc_a,p,upd,info)
! Arguments ! Arguments
type(psb_sspmat_type), intent(in), target :: a type(psb_sspmat_type), intent(in), target :: a
Type(psb_desc_type), Intent(in) :: desc_a Type(psb_desc_type), Intent(in) :: desc_a
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info

@ -58,7 +58,7 @@
! Arguments: ! Arguments:
! alpha - real(psb_spk_), input. ! alpha - real(psb_spk_), input.
! The scalar alpha. ! The scalar alpha.
! prec - type(mld_sbaseprc_type), input. ! prec - type(mld_sbaseprec_type), input.
! The base preconditioner data structure containing the local part ! The base preconditioner data structure containing the local part
! of the preconditioner K. ! of the preconditioner K.
! x - real(psb_spk_), dimension(:), input. ! x - real(psb_spk_), dimension(:), input.
@ -87,7 +87,7 @@ subroutine mld_sbaseprec_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_sbaseprc_type), intent(in) :: prec type(mld_sbaseprec_type), intent(in) :: prec
real(psb_spk_),intent(in) :: x(:) real(psb_spk_),intent(in) :: x(:)
real(psb_spk_),intent(inout) :: y(:) real(psb_spk_),intent(inout) :: y(:)
real(psb_spk_),intent(in) :: alpha,beta real(psb_spk_),intent(in) :: alpha,beta

@ -78,7 +78,7 @@ subroutine mld_sbaseprec_bld(a,desc_a,p,info,upd)
! Arguments ! Arguments
type(psb_sspmat_type), target :: a type(psb_sspmat_type), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_sbaseprc_type),intent(inout) :: p type(mld_sbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in), optional :: upd character, intent(in), optional :: upd
@ -89,7 +89,7 @@ subroutine mld_sbaseprec_bld(a,desc_a,p,info,upd)
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
if (psb_get_errstatus() /= 0) return if (psb_get_errstatus() /= 0) return
name = 'mld_sbaseprc_bld' name = 'mld_sbaseprec_bld'
info=0 info=0
err=0 err=0
call psb_erractionsave(err_act) call psb_erractionsave(err_act)

@ -51,7 +51,7 @@
! matrix A to be preconditioned. ! matrix A to be preconditioned.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to the sparse matrix A. ! The communication descriptor associated to the sparse matrix A.
! p - type(mld_sbaseprc_type), input/output. ! p - type(mld_sbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the local ! The 'base preconditioner' data structure containing the local
! part of the diagonal preconditioner. ! part of the diagonal preconditioner.
! info - integer, output. ! info - integer, output.
@ -67,7 +67,7 @@ subroutine mld_sdiag_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_sspmat_type), target :: a type(psb_sspmat_type), target :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_sbaseprc_type),intent(inout) :: p type(mld_sbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -117,7 +117,7 @@ subroutine mld_sfact_bld(a,p,upd,info,blck)
! Arguments ! Arguments
type(psb_sspmat_type), intent(in), target :: a type(psb_sspmat_type), intent(in), target :: a
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in) :: upd character, intent(in) :: upd
type(psb_sspmat_type), intent(in), target, optional :: blck type(psb_sspmat_type), intent(in), target, optional :: blck

@ -73,7 +73,7 @@
! only the 'original' local part of the distributed matrix, ! only the 'original' local part of the distributed matrix,
! i.e. the rows of the matrix held by the calling process according ! i.e. the rows of the matrix held by the calling process according
! to the initial data distribution. ! to the initial data distribution.
! p - type(mld_sbaseprc_type), input/output. ! p - type(mld_sbaseprec_type), input/output.
! The 'base preconditioner' data structure. In input, p%iprcparm ! The 'base preconditioner' data structure. In input, p%iprcparm
! contains information on the type of factorization to be computed. ! contains information on the type of factorization to be computed.
! In output, p%av(mld_l_pr_) and p%av(mld_u_pr_) contain the ! In output, p%av(mld_l_pr_) and p%av(mld_u_pr_) contain the
@ -98,7 +98,7 @@ subroutine mld_silu_bld(a,p,upd,info,blck)
! Arguments ! Arguments
type(psb_sspmat_type), intent(in), target :: a type(psb_sspmat_type), intent(in), target :: a
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info
type(psb_sspmat_type), intent(in), optional :: blck type(psb_sspmat_type), intent(in), optional :: blck

@ -82,7 +82,7 @@
! The array of one-level preconditioner data structures containing the ! The array of one-level preconditioner data structures containing the
! local parts of the preconditioners to be applied at each level. ! local parts of the preconditioners to be applied at each level.
! Note that nlev = size(precv) = number of levels. ! Note that nlev = size(precv) = number of levels.
! precv(ilev)%prec - type(psb_sbaseprc_type) ! precv(ilev)%prec - type(psb_sbaseprec_type)
! The "base" preconditioner for the current level ! The "base" preconditioner for the current level
! precv(ilev)%ac - type(psb_sspmat_type) ! precv(ilev)%ac - type(psb_sspmat_type)
! The local part of the matrix A(ilev). ! The local part of the matrix A(ilev).

@ -40,7 +40,7 @@
! !
! Subroutine: mld_sprecbld ! Subroutine: mld_sprecbld
! Version: real ! Version: real
! Contains: subroutine init_baseprc_av ! Contains: subroutine init_baseprec_av
! !
! This routine builds the preconditioner according to the requirements made by ! This routine builds the preconditioner according to the requirements made by
! the user trough the subroutines mld_precinit and mld_precset. ! the user trough the subroutines mld_precinit and mld_precset.
@ -154,7 +154,7 @@ subroutine mld_sprecbld(a,desc_a,p,info)
! !
! Finest level first; remember to fix base_a and base_desc ! Finest level first; remember to fix base_a and base_desc
! !
call init_baseprc_av(p%precv(1)%prec,info) call init_baseprec_av(p%precv(1)%prec,info)
p%precv(1)%base_a => a p%precv(1)%base_a => a
p%precv(1)%base_desc => desc_a p%precv(1)%base_desc => desc_a
@ -211,7 +211,7 @@ subroutine mld_sprecbld(a,desc_a,p,info)
! !
! Build the mapping between levels (i-1) and (i) ! Build the mapping between levels (i-1) and (i)
! !
call init_baseprc_av(p%precv(i)%prec,info) call init_baseprec_av(p%precv(i)%prec,info)
if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,& if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,&
& p%precv(i-1)%base_desc, p%precv(i),info) & p%precv(i-1)%base_desc, p%precv(i),info)
@ -275,7 +275,7 @@ subroutine mld_sprecbld(a,desc_a,p,info)
i = iszv i = iszv
call check_coarse_lev(p%precv(i)) call check_coarse_lev(p%precv(i))
call init_baseprc_av(p%precv(i)%prec,info) call init_baseprec_av(p%precv(i)%prec,info)
if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,& if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,&
& p%precv(i-1)%base_desc, p%precv(i),info) & p%precv(i-1)%base_desc, p%precv(i),info)
if (info /= 0) then if (info /= 0) then
@ -328,8 +328,8 @@ subroutine mld_sprecbld(a,desc_a,p,info)
contains contains
subroutine init_baseprc_av(p,info) subroutine init_baseprec_av(p,info)
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
integer :: info integer :: info
if (allocated(p%av)) then if (allocated(p%av)) then
if (size(p%av) /= mld_max_avsz_) then if (size(p%av) /= mld_max_avsz_) then
@ -345,7 +345,7 @@ contains
call psb_nullify_sp(p%av(k)) call psb_nullify_sp(p%av(k))
end do end do
end subroutine init_baseprc_av end subroutine init_baseprec_av
subroutine check_coarse_lev(prec) subroutine check_coarse_lev(prec)
type(mld_s_interlev_prec_type) :: prec type(mld_s_interlev_prec_type) :: prec

@ -62,7 +62,7 @@
! be factorized. ! be factorized.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to a. ! The communication descriptor associated to a.
! p - type(mld_sbaseprc_type), input/output. ! p - type(mld_sbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the pointer, ! The 'base preconditioner' data structure containing the pointer,
! p%iprcparm(mld_slu_ptr_), to the data structure used by SuperLU ! p%iprcparm(mld_slu_ptr_), to the data structure used by SuperLU
! to store the L and U factors. ! to store the L and U factors.
@ -79,7 +79,7 @@ subroutine mld_sslu_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_sspmat_type), intent(inout) :: a type(psb_sspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -59,7 +59,7 @@
! matrix to be factorized. ! matrix to be factorized.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to a. ! The communication descriptor associated to a.
! p - type(mld_sbaseprc_type), input/output. ! p - type(mld_sbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the pointer, ! The 'base preconditioner' data structure containing the pointer,
! p%iprcparm(mld_slud_ptr_), to the data structure used by ! p%iprcparm(mld_slud_ptr_), to the data structure used by
! SuperLU_DIST to store the L and U factors. ! SuperLU_DIST to store the L and U factors.
@ -76,7 +76,7 @@ subroutine mld_ssludist_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_sspmat_type), intent(inout) :: a type(psb_sspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -69,7 +69,7 @@
! to build an Additive Schwarz base preconditioner with overlap ! to build an Additive Schwarz base preconditioner with overlap
! greater than 0.If the overlap is 0, then blck does not contain ! greater than 0.If the overlap is 0, then blck does not contain
! any row. ! any row.
! p - type(mld_sbaseprc_type), input/output. ! p - type(mld_sbaseprec_type), input/output.
! The base preconditioner data structure containing the local ! The base preconditioner data structure containing the local
! part of the base preconditioner to be built. In input it ! part of the base preconditioner to be built. In input it
! contains information on the type of reordering to be applied ! contains information on the type of reordering to be applied
@ -91,7 +91,7 @@ subroutine mld_ssp_renum(a,blck,p,atmp,info)
! Arguments ! Arguments
type(psb_sspmat_type), intent(in) :: a,blck type(psb_sspmat_type), intent(in) :: a,blck
type(psb_sspmat_type), intent(out) :: atmp type(psb_sspmat_type), intent(out) :: atmp
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -141,7 +141,7 @@ subroutine mld_ssub_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_sbaseprc_type), intent(in) :: prec type(mld_sbaseprec_type), intent(in) :: prec
real(psb_spk_),intent(in) :: x(:) real(psb_spk_),intent(in) :: x(:)
real(psb_spk_),intent(inout) :: y(:) real(psb_spk_),intent(inout) :: y(:)
real(psb_spk_),intent(in) :: alpha,beta real(psb_spk_),intent(in) :: alpha,beta

@ -119,7 +119,7 @@ subroutine mld_ssub_solve(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_sbaseprc_type), intent(in) :: prec type(mld_sbaseprec_type), intent(in) :: prec
real(psb_spk_),intent(in) :: x(:) real(psb_spk_),intent(in) :: x(:)
real(psb_spk_),intent(inout) :: y(:) real(psb_spk_),intent(inout) :: y(:)
real(psb_spk_),intent(in) :: alpha,beta real(psb_spk_),intent(in) :: alpha,beta

@ -67,7 +67,7 @@
! C code performing the factorization. ! C code performing the factorization.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to a. ! The communication descriptor associated to a.
! p - type(mld_sbaseprc_type), input/output. ! p - type(mld_sbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the pointers, ! The 'base preconditioner' data structure containing the pointers,
! p%iprcparm(mld_umf_symptr_) and p%iprcparm(mld_umf_numptr_), ! p%iprcparm(mld_umf_symptr_) and p%iprcparm(mld_umf_numptr_),
! to the data structures used by UMFPACK for computing the LU ! to the data structures used by UMFPACK for computing the LU
@ -85,7 +85,7 @@ subroutine mld_sumf_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_sspmat_type), intent(inout) :: a type(psb_sspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_sbaseprc_type), intent(inout) :: p type(mld_sbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -54,7 +54,7 @@
! Arguments: ! Arguments:
! alpha - real(psb_dpk_), input. ! alpha - real(psb_dpk_), input.
! The scalar alpha. ! The scalar alpha.
! prec - type(mld_dbaseprc_type), input. ! prec - type(mld_dbaseprec_type), input.
! The base preconditioner data structure containing the local part ! The base preconditioner data structure containing the local part
! of the preconditioner K. ! of the preconditioner K.
! x - real(psb_dpk_), dimension(:), input. ! x - real(psb_dpk_), dimension(:), input.
@ -83,7 +83,7 @@ subroutine mld_zas_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_zbaseprc_type), intent(in) :: prec type(mld_zbaseprec_type), intent(in) :: prec
complex(psb_dpk_),intent(in) :: x(:) complex(psb_dpk_),intent(in) :: x(:)
complex(psb_dpk_),intent(inout) :: y(:) complex(psb_dpk_),intent(inout) :: y(:)
complex(psb_dpk_),intent(in) :: alpha,beta complex(psb_dpk_),intent(in) :: alpha,beta

@ -54,7 +54,7 @@
! matrix to be preconditioned. ! matrix to be preconditioned.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor of the sparse matrix a. ! The communication descriptor of the sparse matrix a.
! p - type(mld_zbaseprc_type), input/output. ! p - type(mld_zbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the local ! The 'base preconditioner' data structure containing the local
! part of the preconditioner or solver to be built. ! part of the preconditioner or solver to be built.
! upd - character, input. ! upd - character, input.
@ -76,7 +76,7 @@ subroutine mld_zas_bld(a,desc_a,p,upd,info)
! Arguments ! Arguments
type(psb_zspmat_type), intent(in), target :: a type(psb_zspmat_type), intent(in), target :: a
Type(psb_desc_type), Intent(in) :: desc_a Type(psb_desc_type), Intent(in) :: desc_a
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info

@ -58,7 +58,7 @@
! Arguments: ! Arguments:
! alpha - complex(psb_dpk_), input. ! alpha - complex(psb_dpk_), input.
! The scalar alpha. ! The scalar alpha.
! prec - type(mld_zbaseprc_type), input. ! prec - type(mld_zbaseprec_type), input.
! The base preconditioner data structure containing the local part ! The base preconditioner data structure containing the local part
! of the preconditioner K. ! of the preconditioner K.
! x - complex(psb_dpk_), dimension(:), input. ! x - complex(psb_dpk_), dimension(:), input.
@ -87,7 +87,7 @@ subroutine mld_zbaseprec_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_zbaseprc_type), intent(in) :: prec type(mld_zbaseprec_type), intent(in) :: prec
complex(psb_dpk_),intent(in) :: x(:) complex(psb_dpk_),intent(in) :: x(:)
complex(psb_dpk_),intent(inout) :: y(:) complex(psb_dpk_),intent(inout) :: y(:)
complex(psb_dpk_),intent(in) :: alpha,beta complex(psb_dpk_),intent(in) :: alpha,beta

@ -78,7 +78,7 @@ subroutine mld_zbaseprec_bld(a,desc_a,p,info,upd)
! Arguments ! Arguments
type(psb_zspmat_type), target :: a type(psb_zspmat_type), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_zbaseprc_type),intent(inout) :: p type(mld_zbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in), optional :: upd character, intent(in), optional :: upd

@ -51,7 +51,7 @@
! matrix A to be preconditioned. ! matrix A to be preconditioned.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to the sparse matrix A. ! The communication descriptor associated to the sparse matrix A.
! p - type(mld_zbaseprc_type), input/output. ! p - type(mld_zbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the local ! The 'base preconditioner' data structure containing the local
! part of the diagonal preconditioner. ! part of the diagonal preconditioner.
! info - integer, output. ! info - integer, output.
@ -67,7 +67,7 @@ subroutine mld_zdiag_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_zspmat_type), target :: a type(psb_zspmat_type), target :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_zbaseprc_type),intent(inout) :: p type(mld_zbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -118,7 +118,7 @@ subroutine mld_zfact_bld(a,p,upd,info,blck)
! Arguments ! Arguments
type(psb_zspmat_type), intent(in), target :: a type(psb_zspmat_type), intent(in), target :: a
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
character, intent(in) :: upd character, intent(in) :: upd
type(psb_zspmat_type), intent(in), target, optional :: blck type(psb_zspmat_type), intent(in), target, optional :: blck

@ -73,7 +73,7 @@
! only the 'original' local part of the distributed matrix, ! only the 'original' local part of the distributed matrix,
! i.e. the rows of the matrix held by the calling process according ! i.e. the rows of the matrix held by the calling process according
! to the initial data distribution. ! to the initial data distribution.
! p - type(mld_zbaseprc_type), input/output. ! p - type(mld_zbaseprec_type), input/output.
! The 'base preconditioner' data structure. In input, p%iprcparm ! The 'base preconditioner' data structure. In input, p%iprcparm
! contains information on the type of factorization to be computed. ! contains information on the type of factorization to be computed.
! In output, p%av(mld_l_pr_) and p%av(mld_u_pr_) contain the ! In output, p%av(mld_l_pr_) and p%av(mld_u_pr_) contain the
@ -98,7 +98,7 @@ subroutine mld_zilu_bld(a,p,upd,info,blck)
! Arguments ! Arguments
type(psb_zspmat_type), intent(in), target :: a type(psb_zspmat_type), intent(in), target :: a
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info
type(psb_zspmat_type), intent(in), optional :: blck type(psb_zspmat_type), intent(in), optional :: blck

@ -82,7 +82,7 @@
! The array of one-level preconditioner data structures containing the ! The array of one-level preconditioner data structures containing the
! local parts of the preconditioners to be applied at each level. ! local parts of the preconditioners to be applied at each level.
! Note that nlev = size(precv) = number of levels. ! Note that nlev = size(precv) = number of levels.
! precv(ilev)%prec - type(psb_zbaseprc_type) ! precv(ilev)%prec - type(psb_zbaseprec_type)
! The "base" preconditioner for the current level ! The "base" preconditioner for the current level
! precv(ilev)%ac - type(psb_zspmat_type) ! precv(ilev)%ac - type(psb_zspmat_type)
! The local part of the matrix A(ilev). ! The local part of the matrix A(ilev).

@ -40,7 +40,7 @@
! !
! Subroutine: mld_zprecbld ! Subroutine: mld_zprecbld
! Version: complex ! Version: complex
! Contains: subroutine init_baseprc_av ! Contains: subroutine init_baseprec_av
! !
! This routine builds the preconditioner according to the requirements made by ! This routine builds the preconditioner according to the requirements made by
! the user trough the subroutines mld_precinit and mld_precset. ! the user trough the subroutines mld_precinit and mld_precset.
@ -154,7 +154,7 @@ subroutine mld_zprecbld(a,desc_a,p,info)
! !
! Finest level first; remember to fix base_a and base_desc ! Finest level first; remember to fix base_a and base_desc
! !
call init_baseprc_av(p%precv(1)%prec,info) call init_baseprec_av(p%precv(1)%prec,info)
p%precv(1)%base_a => a p%precv(1)%base_a => a
p%precv(1)%base_desc => desc_a p%precv(1)%base_desc => desc_a
@ -211,7 +211,7 @@ subroutine mld_zprecbld(a,desc_a,p,info)
! !
! Build the mapping between levels (i-1) and (i) ! Build the mapping between levels (i-1) and (i)
! !
call init_baseprc_av(p%precv(i)%prec,info) call init_baseprec_av(p%precv(i)%prec,info)
if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,& if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,&
& p%precv(i-1)%base_desc, p%precv(i),info) & p%precv(i-1)%base_desc, p%precv(i),info)
@ -275,7 +275,7 @@ subroutine mld_zprecbld(a,desc_a,p,info)
i = iszv i = iszv
call check_coarse_lev(p%precv(i)) call check_coarse_lev(p%precv(i))
call init_baseprc_av(p%precv(i)%prec,info) call init_baseprec_av(p%precv(i)%prec,info)
if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,& if (info == 0) call mld_aggr_bld(p%precv(i-1)%base_a,&
& p%precv(i-1)%base_desc, p%precv(i),info) & p%precv(i-1)%base_desc, p%precv(i),info)
if (info /= 0) then if (info /= 0) then
@ -328,8 +328,8 @@ subroutine mld_zprecbld(a,desc_a,p,info)
contains contains
subroutine init_baseprc_av(p,info) subroutine init_baseprec_av(p,info)
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
integer :: info integer :: info
if (allocated(p%av)) then if (allocated(p%av)) then
if (size(p%av) /= mld_max_avsz_) then if (size(p%av) /= mld_max_avsz_) then
@ -345,7 +345,7 @@ contains
call psb_nullify_sp(p%av(k)) call psb_nullify_sp(p%av(k))
end do end do
end subroutine init_baseprc_av end subroutine init_baseprec_av
subroutine check_coarse_lev(prec) subroutine check_coarse_lev(prec)
type(mld_z_interlev_prec_type) :: prec type(mld_z_interlev_prec_type) :: prec

@ -62,7 +62,7 @@
! be factorized. ! be factorized.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to a. ! The communication descriptor associated to a.
! p - type(mld_zbaseprc_type), input/output. ! p - type(mld_zbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the pointer, ! The 'base preconditioner' data structure containing the pointer,
! p%iprcparm(mld_slu_ptr_), to the data structure used by SuperLU ! p%iprcparm(mld_slu_ptr_), to the data structure used by SuperLU
! to store the L and U factors. ! to store the L and U factors.
@ -79,7 +79,7 @@ subroutine mld_zslu_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_zspmat_type), intent(inout) :: a type(psb_zspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -59,7 +59,7 @@
! matrix to be factorized. ! matrix to be factorized.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to a. ! The communication descriptor associated to a.
! p - type(mld_zbaseprc_type), input/output. ! p - type(mld_zbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the pointer, ! The 'base preconditioner' data structure containing the pointer,
! p%iprcparm(mld_slud_ptr_), to the data structure used by ! p%iprcparm(mld_slud_ptr_), to the data structure used by
! SuperLU_DIST to store the L and U factors. ! SuperLU_DIST to store the L and U factors.
@ -76,7 +76,7 @@ subroutine mld_zsludist_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_zspmat_type), intent(inout) :: a type(psb_zspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -69,7 +69,7 @@
! to build an Additive Schwarz base preconditioner with overlap ! to build an Additive Schwarz base preconditioner with overlap
! greater than 0.If the overlap is 0, then blck does not contain ! greater than 0.If the overlap is 0, then blck does not contain
! any row. ! any row.
! p - type(mld_zbaseprc_type), input/output. ! p - type(mld_zbaseprec_type), input/output.
! The base preconditioner data structure containing the local ! The base preconditioner data structure containing the local
! part of the base preconditioner to be built. In input it ! part of the base preconditioner to be built. In input it
! contains information on the type of reordering to be applied ! contains information on the type of reordering to be applied
@ -91,7 +91,7 @@ subroutine mld_zsp_renum(a,blck,p,atmp,info)
! Arguments ! Arguments
type(psb_zspmat_type), intent(in) :: a,blck type(psb_zspmat_type), intent(in) :: a,blck
type(psb_zspmat_type), intent(out) :: atmp type(psb_zspmat_type), intent(out) :: atmp
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

@ -142,7 +142,7 @@ subroutine mld_zsub_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_zbaseprc_type), intent(in) :: prec type(mld_zbaseprec_type), intent(in) :: prec
complex(psb_dpk_),intent(in) :: x(:) complex(psb_dpk_),intent(in) :: x(:)
complex(psb_dpk_),intent(inout) :: y(:) complex(psb_dpk_),intent(inout) :: y(:)
complex(psb_dpk_),intent(in) :: alpha,beta complex(psb_dpk_),intent(in) :: alpha,beta

@ -120,7 +120,7 @@ subroutine mld_zsub_solve(alpha,prec,x,beta,y,desc_data,trans,work,info)
! Arguments ! Arguments
type(psb_desc_type), intent(in) :: desc_data type(psb_desc_type), intent(in) :: desc_data
type(mld_zbaseprc_type), intent(in) :: prec type(mld_zbaseprec_type), intent(in) :: prec
complex(psb_dpk_),intent(in) :: x(:) complex(psb_dpk_),intent(in) :: x(:)
complex(psb_dpk_),intent(inout) :: y(:) complex(psb_dpk_),intent(inout) :: y(:)
complex(psb_dpk_),intent(in) :: alpha,beta complex(psb_dpk_),intent(in) :: alpha,beta

@ -67,7 +67,7 @@
! C code performing the factorization. ! C code performing the factorization.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor associated to a. ! The communication descriptor associated to a.
! p - type(mld_zbaseprc_type), input/output. ! p - type(mld_zbaseprec_type), input/output.
! The 'base preconditioner' data structure containing the pointers, ! The 'base preconditioner' data structure containing the pointers,
! p%iprcparm(mld_umf_symptr_) and p%iprcparm(mld_umf_numptr_), ! p%iprcparm(mld_umf_symptr_) and p%iprcparm(mld_umf_numptr_),
! to the data structures used by UMFPACK for computing the LU ! to the data structures used by UMFPACK for computing the LU
@ -85,7 +85,7 @@ subroutine mld_zumf_bld(a,desc_a,p,info)
! Arguments ! Arguments
type(psb_dspmat_type), intent(inout) :: a type(psb_dspmat_type), intent(inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(mld_zbaseprc_type), intent(inout) :: p type(mld_zbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables

Loading…
Cancel
Save