config/pac.m4
 configure.ac
 mlprec/mld_base_prec_type.f90
 mlprec/mld_c_prec_type.f90
 mlprec/mld_d_as_smoother.f03
 mlprec/mld_d_diag_solver.f03
 mlprec/mld_d_ilu_solver.f03
 mlprec/mld_d_jac_smoother.f03
 mlprec/mld_d_prec_type.f03
 mlprec/mld_daggrmap_bld.f90
 mlprec/mld_daggrmat_asb.f90
 mlprec/mld_daggrmat_minnrg_asb.F90
 mlprec/mld_daggrmat_nosmth_asb.F90
 mlprec/mld_daggrmat_smth_asb.F90
 mlprec/mld_das_bld.f90
 mlprec/mld_dbaseprec_bld.f90
 mlprec/mld_dcoarse_bld.f90
 mlprec/mld_ddiag_bld.f90
 mlprec/mld_dfact_bld.f90
 mlprec/mld_dilu0_fact.f90
 mlprec/mld_dilu_bld.f90
 mlprec/mld_diluk_fact.f90
 mlprec/mld_dilut_fact.f90
 mlprec/mld_dmlprec_bld.f90
 mlprec/mld_dprecbld.f90
 mlprec/mld_dslu_bld.f90
 mlprec/mld_dslud_bld.f90
 mlprec/mld_dsp_renum.f90
 mlprec/mld_dumf_bld.f90
 mlprec/mld_inner_mod.f90
 mlprec/mld_prec_mod.f90
 mlprec/mld_s_prec_type.f90
 mlprec/mld_z_prec_type.f90
 tests/fileread/Makefile
 tests/fileread/df_sample.f90
 tests/pdegen/ppde.f90
 tests/pdegen/spde.f90

Revised name of outer sparse type to be backward-compatible.
stopcriterion
Salvatore Filippone 14 years ago
parent f1eead6115
commit 24ddb9bbdc

@ -701,7 +701,7 @@ AC_CHECK_HEADER([umfpack.h],
[pac_umf_header_ok=yes], [pac_umf_header_ok=yes],
[pac_umf_header_ok=no; UMF_INCLUDES=""]) [pac_umf_header_ok=no; UMF_INCLUDES=""])
if test "x$pac_umf_header_ok" == "xno" ; then if test "x$pac_umf_header_ok" == "xno" ; then
dnl Maybe Include or include subdirs? dnl Maybe Include or include subdirs?
unset ac_cv_header_umfpack_h unset ac_cv_header_umfpack_h
UMF_INCLUDES="-I$mld2p4_cv_umfpackdir/include -I$mld2p4_cv_umfpackdir/Include " UMF_INCLUDES="-I$mld2p4_cv_umfpackdir/include -I$mld2p4_cv_umfpackdir/Include "
CPPFLAGS="$UMF_INCLUDES $SAVE_CPPFLAGS" CPPFLAGS="$UMF_INCLUDES $SAVE_CPPFLAGS"
@ -712,7 +712,7 @@ if test "x$pac_umf_header_ok" == "xno" ; then
[pac_umf_header_ok=no; UMF_INCLUDES=""]) [pac_umf_header_ok=no; UMF_INCLUDES=""])
fi fi
if test "x$pac_umf_header_ok" == "xno" ; then if test "x$pac_umf_header_ok" == "xno" ; then
dnl Maybe new structure with UMFPACK UFconfig AMD? dnl Maybe new structure with UMFPACK UFconfig AMD?
unset ac_cv_header_umfpack_h unset ac_cv_header_umfpack_h
UMF_INCLUDES="-I$mld2p4_cv_umfpackdir/UFconfig -I$mld2p4_cv_umfpackdir/UMFPACK/Include -I$mld2p4_cv_umfpackdir/AMD/Include" UMF_INCLUDES="-I$mld2p4_cv_umfpackdir/UFconfig -I$mld2p4_cv_umfpackdir/UMFPACK/Include -I$mld2p4_cv_umfpackdir/AMD/Include"
CPPFLAGS="$UMF_INCLUDES $SAVE_CPPFLAGS" CPPFLAGS="$UMF_INCLUDES $SAVE_CPPFLAGS"

@ -96,7 +96,7 @@ AC_PROG_INSTALL
AC_MSG_CHECKING([where to install]) AC_MSG_CHECKING([where to install])
case $prefix in case $prefix in
\/* ) eval "INSTALL_DIR=$prefix";; \/* ) eval "INSTALL_DIR=$prefix";;
* ) eval "INSTALL_DIR=/usr/local/psblas";; * ) eval "INSTALL_DIR=/usr/local/mld2p4";;
esac esac
case $libdir in case $libdir in
\/* ) eval "INSTALL_LIBDIR=$libdir";; \/* ) eval "INSTALL_LIBDIR=$libdir";;

@ -63,8 +63,8 @@ module mld_base_prec_type
! !
use psb_const_mod use psb_const_mod
use psb_sparse_mod, only :& use psb_sparse_mod, only :&
& psb_d_sparse_mat, psb_z_sparse_mat,& & psb_dspmat_type, psb_zspmat_type,&
& psb_s_sparse_mat, psb_c_sparse_mat,& & psb_sspmat_type, psb_cspmat_type,&
& psb_desc_type,& & psb_desc_type,&
& psb_slinmap_type, psb_dlinmap_type,& & psb_slinmap_type, psb_dlinmap_type,&
& psb_clinmap_type, psb_zlinmap_type, & & psb_clinmap_type, psb_zlinmap_type, &

@ -89,9 +89,9 @@ module mld_c_prec_type
! type(mld_Tbaseprec_type) :: prec ! type(mld_Tbaseprec_type) :: prec
! integer, allocatable :: iprcparm(:) ! integer, allocatable :: iprcparm(:)
! real(psb_Tpk_), allocatable :: rprcparm(:) ! real(psb_Tpk_), allocatable :: rprcparm(:)
! type(psb_T_sparse_mat) :: ac ! type(psb_Tspmat_type) :: ac
! type(psb_desc_type) :: desc_ac ! type(psb_desc_type) :: desc_ac
! type(psb_T_sparse_mat), pointer :: base_a => null() ! type(psb_Tspmat_type), pointer :: base_a => null()
! type(psb_desc_type), pointer :: base_desc => null() ! type(psb_desc_type), pointer :: base_desc => null()
! type(psb_Tlinmap_type) :: map ! type(psb_Tlinmap_type) :: map
! end type mld_Tonelev_type ! end type mld_Tonelev_type
@ -110,7 +110,7 @@ module mld_c_prec_type
! desc_ac - type(psb_desc_type). ! desc_ac - type(psb_desc_type).
! The communication descriptor associated to the matrix ! The communication descriptor associated to the matrix
! stored in ac. ! stored in ac.
! base_a - type(psb_z_sparse_mat), pointer. ! base_a - type(psb_zspmat_type), pointer.
! Pointer (really a pointer!) to the local part of the current ! Pointer (really a pointer!) to the local part of the current
! matrix (so we have a unified treatment of residuals). ! matrix (so we have a unified treatment of residuals).
! We need this to avoid passing explicitly the current matrix ! We need this to avoid passing explicitly the current matrix
@ -128,7 +128,7 @@ module mld_c_prec_type
! It holds the smoother (base preconditioner) at a single level. ! It holds the smoother (base preconditioner) at a single level.
! !
! type mld_Tbaseprec_type ! type mld_Tbaseprec_type
! type(psb_T_sparse_mat), allocatable :: av(:) ! type(psb_Tspmat_type), allocatable :: av(:)
! IntrType(psb_Tpk_), allocatable :: d(:) ! IntrType(psb_Tpk_), allocatable :: d(:)
! type(psb_desc_type) :: desc_data ! type(psb_desc_type) :: desc_data
! integer, allocatable :: iprcparm(:) ! integer, allocatable :: iprcparm(:)
@ -140,7 +140,7 @@ module mld_c_prec_type
! the kind of the real or complex type, according to the real/complex, single/double ! the kind of the real or complex type, according to the real/complex, single/double
! precision version of MLD2P4. ! precision version of MLD2P4.
! !
! av - type(psb_T_sparse_mat), dimension(:), allocatable(:). ! av - type(psb_Tspmat_type), dimension(:), allocatable(:).
! The sparse matrices needed to apply the preconditioner at ! The sparse matrices needed to apply the preconditioner at
! the current level ilev. ! the current level ilev.
! av(mld_l_pr_) - The L factor of the ILU factorization of the local ! av(mld_l_pr_) - The L factor of the ILU factorization of the local
@ -177,7 +177,7 @@ module mld_c_prec_type
! !
type mld_cbaseprec_type type mld_cbaseprec_type
type(psb_c_sparse_mat), 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(:)
@ -189,9 +189,9 @@ module mld_c_prec_type
type(mld_cbaseprec_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_c_sparse_mat) :: ac type(psb_cspmat_type) :: ac
type(psb_desc_type) :: desc_ac type(psb_desc_type) :: desc_ac
type(psb_c_sparse_mat), pointer :: base_a => null() type(psb_cspmat_type), pointer :: base_a => null()
type(psb_desc_type), pointer :: base_desc => null() type(psb_desc_type), pointer :: base_desc => null()
type(psb_clinmap_type) :: map type(psb_clinmap_type) :: map
end type mld_conelev_type end type mld_conelev_type
@ -230,7 +230,7 @@ module mld_c_prec_type
interface mld_precaply interface mld_precaply
subroutine mld_cprecaply(prec,x,y,desc_data,info,trans,work) subroutine mld_cprecaply(prec,x,y,desc_data,info,trans,work)
use psb_sparse_mod, only : psb_c_sparse_mat, psb_desc_type, psb_spk_ use psb_sparse_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
import mld_cprec_type import mld_cprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_cprec_type), intent(in) :: prec type(mld_cprec_type), intent(in) :: prec
@ -241,7 +241,7 @@ module mld_c_prec_type
complex(psb_spk_),intent(inout), optional, target :: work(:) complex(psb_spk_),intent(inout), optional, target :: work(:)
end subroutine mld_cprecaply end subroutine mld_cprecaply
subroutine mld_cprecaply1(prec,x,desc_data,info,trans) subroutine mld_cprecaply1(prec,x,desc_data,info,trans)
use psb_sparse_mod, only : psb_c_sparse_mat, psb_desc_type, psb_spk_ use psb_sparse_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
import mld_cprec_type import mld_cprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_cprec_type), intent(in) :: prec type(mld_cprec_type), intent(in) :: prec

@ -51,7 +51,7 @@ module mld_d_as_smoother
! parent type. ! parent type.
! class(mld_d_base_solver_type), allocatable :: sv ! class(mld_d_base_solver_type), allocatable :: sv
! !
type(psb_d_sparse_mat) :: nd type(psb_dspmat_type) :: nd
type(psb_desc_type) :: desc_data type(psb_desc_type) :: desc_data
integer :: novr, restr, prol integer :: novr, restr, prol
contains contains
@ -163,7 +163,8 @@ contains
call sm%sv%apply(alpha,x,beta,y,desc_data,trans_,aux,info) call sm%sv%apply(alpha,x,beta,y,desc_data,trans_,aux,info)
if (info /= psb_success_) then if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,a_err='Error in sub_aply Jacobi Sweeps = 1') call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error in sub_aply Jacobi Sweeps = 1')
goto 9999 goto 9999
endif endif
@ -517,13 +518,13 @@ contains
Implicit None Implicit None
! Arguments ! Arguments
type(psb_d_sparse_mat), 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
class(mld_d_as_smoother_type), intent(inout) :: sm class(mld_d_as_smoother_type), intent(inout) :: sm
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables
type(psb_d_sparse_mat) :: blck, atmp type(psb_dspmat_type) :: blck, atmp
integer :: n_row,n_col, nrow_a, nhalo, novr, data_ integer :: n_row,n_col, nrow_a, nhalo, novr, data_
real(psb_dpk_), pointer :: ww(:), aux(:), tx(:),ty(:) real(psb_dpk_), pointer :: ww(:), aux(:), tx(:),ty(:)
integer :: ictxt,np,me,i, err_act, debug_unit, debug_level integer :: ictxt,np,me,i, err_act, debug_unit, debug_level

@ -196,12 +196,12 @@ contains
Implicit None Implicit None
! Arguments ! Arguments
type(psb_d_sparse_mat), 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
class(mld_d_diag_solver_type), intent(inout) :: sv class(mld_d_diag_solver_type), intent(inout) :: sv
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info
type(psb_d_sparse_mat), intent(in), target, optional :: b type(psb_dspmat_type), intent(in), target, optional :: b
! Local variables ! Local variables
integer :: n_row,n_col, nrow_a, nztota integer :: n_row,n_col, nrow_a, nztota
real(psb_dpk_), pointer :: ww(:), aux(:), tx(:),ty(:) real(psb_dpk_), pointer :: ww(:), aux(:), tx(:),ty(:)

@ -48,7 +48,7 @@ module mld_d_ilu_solver
use mld_d_prec_type use mld_d_prec_type
type, extends(mld_d_base_solver_type) :: mld_d_ilu_solver_type type, extends(mld_d_base_solver_type) :: mld_d_ilu_solver_type
type(psb_d_sparse_mat) :: l, u type(psb_dspmat_type) :: l, u
real(psb_dpk_), allocatable :: d(:) real(psb_dpk_), allocatable :: d(:)
integer :: fact_type, fill_in integer :: fact_type, fill_in
real(psb_dpk_) :: thresh real(psb_dpk_) :: thresh
@ -72,12 +72,12 @@ module mld_d_ilu_solver
interface mld_ilu0_fact interface mld_ilu0_fact
subroutine mld_dilu0_fact(ialg,a,l,u,d,info,blck,upd) subroutine mld_dilu0_fact(ialg,a,l,u,d,info,blck,upd)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_dpk_
integer, intent(in) :: ialg integer, intent(in) :: ialg
integer, intent(out) :: info integer, intent(out) :: info
type(psb_d_sparse_mat),intent(in) :: a type(psb_dspmat_type),intent(in) :: a
type(psb_d_sparse_mat),intent(inout) :: l,u type(psb_dspmat_type),intent(inout) :: l,u
type(psb_d_sparse_mat),intent(in), optional, target :: blck type(psb_dspmat_type),intent(in), optional, target :: blck
character, intent(in), optional :: upd character, intent(in), optional :: upd
real(psb_dpk_), intent(inout) :: d(:) real(psb_dpk_), intent(inout) :: d(:)
end subroutine mld_dilu0_fact end subroutine mld_dilu0_fact
@ -85,25 +85,25 @@ module mld_d_ilu_solver
interface mld_iluk_fact interface mld_iluk_fact
subroutine mld_diluk_fact(fill_in,ialg,a,l,u,d,info,blck) subroutine mld_diluk_fact(fill_in,ialg,a,l,u,d,info,blck)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_dpk_
integer, intent(in) :: fill_in,ialg integer, intent(in) :: fill_in,ialg
integer, intent(out) :: info integer, intent(out) :: info
type(psb_d_sparse_mat),intent(in) :: a type(psb_dspmat_type),intent(in) :: a
type(psb_d_sparse_mat),intent(inout) :: l,u type(psb_dspmat_type),intent(inout) :: l,u
type(psb_d_sparse_mat),intent(in), optional, target :: blck type(psb_dspmat_type),intent(in), optional, target :: blck
real(psb_dpk_), intent(inout) :: d(:) real(psb_dpk_), intent(inout) :: d(:)
end subroutine mld_diluk_fact end subroutine mld_diluk_fact
end interface end interface
interface mld_ilut_fact interface mld_ilut_fact
subroutine mld_dilut_fact(fill_in,thres,a,l,u,d,info,blck) subroutine mld_dilut_fact(fill_in,thres,a,l,u,d,info,blck)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_dpk_
integer, intent(in) :: fill_in integer, intent(in) :: fill_in
real(psb_dpk_), intent(in) :: thres real(psb_dpk_), intent(in) :: thres
integer, intent(out) :: info integer, intent(out) :: info
type(psb_d_sparse_mat),intent(in) :: a type(psb_dspmat_type),intent(in) :: a
type(psb_d_sparse_mat),intent(inout) :: l,u type(psb_dspmat_type),intent(inout) :: l,u
type(psb_d_sparse_mat),intent(in), optional, target :: blck type(psb_dspmat_type),intent(in), optional, target :: blck
real(psb_dpk_), intent(inout) :: d(:) real(psb_dpk_), intent(inout) :: d(:)
end subroutine mld_dilut_fact end subroutine mld_dilut_fact
end interface end interface
@ -226,12 +226,12 @@ contains
Implicit None Implicit None
! Arguments ! Arguments
type(psb_d_sparse_mat), 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
class(mld_d_ilu_solver_type), intent(inout) :: sv class(mld_d_ilu_solver_type), intent(inout) :: sv
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info
type(psb_d_sparse_mat), intent(in), target, optional :: b type(psb_dspmat_type), intent(in), target, optional :: b
! Local variables ! Local variables
integer :: n_row,n_col, nrow_a, nztota integer :: n_row,n_col, nrow_a, nztota
real(psb_dpk_), pointer :: ww(:), aux(:), tx(:),ty(:) real(psb_dpk_), pointer :: ww(:), aux(:), tx(:),ty(:)

@ -51,7 +51,7 @@ module mld_d_jac_smoother
! parent type. ! parent type.
! class(mld_d_base_solver_type), allocatable :: sv ! class(mld_d_base_solver_type), allocatable :: sv
! !
type(psb_d_sparse_mat) :: nd type(psb_dspmat_type) :: nd
contains contains
procedure, pass(sm) :: build => d_jac_smoother_bld procedure, pass(sm) :: build => d_jac_smoother_bld
procedure, pass(sm) :: apply => d_jac_smoother_apply procedure, pass(sm) :: apply => d_jac_smoother_apply
@ -233,7 +233,7 @@ contains
Implicit None Implicit None
! Arguments ! Arguments
type(psb_d_sparse_mat), 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
class(mld_d_jac_smoother_type), intent(inout) :: sm class(mld_d_jac_smoother_type), intent(inout) :: sm
character, intent(in) :: upd character, intent(in) :: upd

@ -88,9 +88,9 @@ module mld_d_prec_type
! type(mld_Tbaseprec_type) :: prec ! type(mld_Tbaseprec_type) :: prec
! integer, allocatable :: iprcparm(:) ! integer, allocatable :: iprcparm(:)
! real(psb_Tpk_), allocatable :: rprcparm(:) ! real(psb_Tpk_), allocatable :: rprcparm(:)
! type(psb_T_sparse_mat) :: ac ! type(psb_Tspmat_type) :: ac
! type(psb_desc_type) :: desc_ac ! type(psb_desc_type) :: desc_ac
! type(psb_T_sparse_mat), pointer :: base_a => null() ! type(psb_Tspmat_type), pointer :: base_a => null()
! type(psb_desc_type), pointer :: base_desc => null() ! type(psb_desc_type), pointer :: base_desc => null()
! type(psb_Tlinmap_type) :: map ! type(psb_Tlinmap_type) :: map
! end type mld_Tonelev_type ! end type mld_Tonelev_type
@ -109,7 +109,7 @@ module mld_d_prec_type
! desc_ac - type(psb_desc_type). ! desc_ac - type(psb_desc_type).
! The communication descriptor associated to the matrix ! The communication descriptor associated to the matrix
! stored in ac. ! stored in ac.
! base_a - type(psb_z_sparse_mat), pointer. ! base_a - type(psb_zspmat_type), pointer.
! Pointer (really a pointer!) to the local part of the current ! Pointer (really a pointer!) to the local part of the current
! matrix (so we have a unified treatment of residuals). ! matrix (so we have a unified treatment of residuals).
! We need this to avoid passing explicitly the current matrix ! We need this to avoid passing explicitly the current matrix
@ -127,7 +127,7 @@ module mld_d_prec_type
! It holds the smoother (base preconditioner) at a single level. ! It holds the smoother (base preconditioner) at a single level.
! !
! type mld_Tbaseprec_type ! type mld_Tbaseprec_type
! type(psb_T_sparse_mat), allocatable :: av(:) ! type(psb_Tspmat_type), allocatable :: av(:)
! IntrType(psb_Tpk_), allocatable :: d(:) ! IntrType(psb_Tpk_), allocatable :: d(:)
! type(psb_desc_type) :: desc_data ! type(psb_desc_type) :: desc_data
! integer, allocatable :: iprcparm(:) ! integer, allocatable :: iprcparm(:)
@ -139,7 +139,7 @@ module mld_d_prec_type
! the kind of the real or complex type, according to the real/complex, single/double ! the kind of the real or complex type, according to the real/complex, single/double
! precision version of MLD2P4. ! precision version of MLD2P4.
! !
! av - type(psb_T_sparse_mat), dimension(:), allocatable(:). ! av - type(psb_Tspmat_type), dimension(:), allocatable(:).
! The sparse matrices needed to apply the preconditioner at ! The sparse matrices needed to apply the preconditioner at
! the current level ilev. ! the current level ilev.
! av(mld_l_pr_) - The L factor of the ILU factorization of the local ! av(mld_l_pr_) - The L factor of the ILU factorization of the local
@ -215,9 +215,9 @@ module mld_d_prec_type
type(mld_dbaseprec_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_d_sparse_mat) :: ac type(psb_dspmat_type) :: ac
type(psb_desc_type) :: desc_ac type(psb_desc_type) :: desc_ac
type(psb_d_sparse_mat), pointer :: base_a => null() type(psb_dspmat_type), pointer :: base_a => null()
type(psb_desc_type), pointer :: base_desc => null() type(psb_desc_type), pointer :: base_desc => null()
type(psb_dlinmap_type) :: map type(psb_dlinmap_type) :: map
contains contains
@ -274,7 +274,7 @@ module mld_d_prec_type
interface mld_precaply interface mld_precaply
subroutine mld_dprecaply(prec,x,y,desc_data,info,trans,work) subroutine mld_dprecaply(prec,x,y,desc_data,info,trans,work)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
import mld_dprec_type import mld_dprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_dprec_type), intent(in) :: prec type(mld_dprec_type), intent(in) :: prec
@ -285,7 +285,7 @@ module mld_d_prec_type
real(psb_dpk_),intent(inout), optional, target :: work(:) real(psb_dpk_),intent(inout), optional, target :: work(:)
end subroutine mld_dprecaply end subroutine mld_dprecaply
subroutine mld_dprecaply1(prec,x,desc_data,info,trans) subroutine mld_dprecaply1(prec,x,desc_data,info,trans)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
import mld_dprec_type import mld_dprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_dprec_type), intent(in) :: prec type(mld_dprec_type), intent(in) :: prec
@ -831,7 +831,7 @@ contains
Implicit None Implicit None
! Arguments ! Arguments
type(psb_d_sparse_mat), 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
class(mld_d_base_smoother_type), intent(inout) :: sm class(mld_d_base_smoother_type), intent(inout) :: sm
character, intent(in) :: upd character, intent(in) :: upd
@ -1013,12 +1013,12 @@ contains
Implicit None Implicit None
! Arguments ! Arguments
type(psb_d_sparse_mat), 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
class(mld_d_base_solver_type), intent(inout) :: sv class(mld_d_base_solver_type), intent(inout) :: sv
character, intent(in) :: upd character, intent(in) :: upd
integer, intent(out) :: info integer, intent(out) :: info
type(psb_d_sparse_mat), intent(in), target, optional :: b type(psb_dspmat_type), intent(in), target, optional :: b
Integer :: err_act Integer :: err_act
character(len=20) :: name='d_base_solver_bld' character(len=20) :: name='d_base_solver_bld'

@ -89,7 +89,7 @@ subroutine mld_daggrmap_bld(aggr_type,theta,a,desc_a,ilaggr,nlaggr,info)
! Arguments ! Arguments
integer, intent(in) :: aggr_type integer, intent(in) :: aggr_type
real(psb_dpk_), intent(in) :: theta real(psb_dpk_), intent(in) :: theta
type(psb_d_sparse_mat), 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
integer, allocatable, intent(out) :: ilaggr(:),nlaggr(:) integer, allocatable, intent(out) :: ilaggr(:),nlaggr(:)
integer, intent(out) :: info integer, intent(out) :: info
@ -97,7 +97,7 @@ subroutine mld_daggrmap_bld(aggr_type,theta,a,desc_a,ilaggr,nlaggr,info)
! Local variables ! Local variables
integer, allocatable :: ils(:), neigh(:) integer, allocatable :: ils(:), neigh(:)
integer :: icnt,nlp,k,n,ia,isz,nr, naggr,i,j,m integer :: icnt,nlp,k,n,ia,isz,nr, naggr,i,j,m
type(psb_d_sparse_mat) :: atmp, atrans type(psb_dspmat_type) :: atmp, atrans
logical :: recovery logical :: recovery
integer :: debug_level, debug_unit integer :: debug_level, debug_unit
integer :: ictxt,np,me,err_act integer :: ictxt,np,me,err_act
@ -170,7 +170,7 @@ contains
implicit none implicit none
! Arguments ! Arguments
type(psb_d_sparse_mat), 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
real(psb_dpk_), intent(in) :: theta real(psb_dpk_), intent(in) :: theta
integer, allocatable, intent(out) :: ilaggr(:),nlaggr(:) integer, allocatable, intent(out) :: ilaggr(:),nlaggr(:)

@ -106,7 +106,7 @@ subroutine mld_daggrmat_asb(a,desc_a,ilaggr,nlaggr,p,info)
implicit none implicit none
! Arguments ! Arguments
type(psb_d_sparse_mat), 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
integer, intent(inout) :: ilaggr(:), nlaggr(:) integer, intent(inout) :: ilaggr(:), nlaggr(:)
type(mld_donelev_type), intent(inout), target :: p type(mld_donelev_type), intent(inout), target :: p

@ -111,14 +111,14 @@ subroutine mld_daggrmat_minnrg_asb(a,desc_a,ilaggr,nlaggr,p,info)
#endif #endif
! Arguments ! Arguments
type(psb_d_sparse_mat), 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
integer, intent(inout) :: ilaggr(:), nlaggr(:) integer, intent(inout) :: ilaggr(:), nlaggr(:)
type(mld_donelev_type), intent(inout), target :: p type(mld_donelev_type), intent(inout), target :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables
type(psb_d_sparse_mat) :: b type(psb_dspmat_type) :: b
integer, allocatable :: nzbr(:), idisp(:) integer, allocatable :: nzbr(:), idisp(:)
integer :: nrow, nglob, ncol, ntaggr, nzac, ip, ndx,& integer :: nrow, nglob, ncol, ntaggr, nzac, ip, ndx,&
& naggr, nzl,naggrm1,naggrp1, i, j, k, jd, icolF, nrt & naggr, nzl,naggrm1,naggrp1, i, j, k, jd, icolF, nrt

@ -61,7 +61,7 @@
! !
! !
! Arguments: ! Arguments:
! a - type(psb_d_sparse_mat), input. ! a - type(psb_dspmat_type), input.
! The sparse matrix structure containing the local part of ! The sparse matrix structure containing the local part of
! the fine-level matrix. ! the fine-level matrix.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
@ -94,7 +94,7 @@ subroutine mld_daggrmat_nosmth_asb(a,desc_a,ilaggr,nlaggr,p,info)
#endif #endif
! Arguments ! Arguments
type(psb_d_sparse_mat), 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
integer, intent(inout) :: ilaggr(:), nlaggr(:) integer, intent(inout) :: ilaggr(:), nlaggr(:)
type(mld_donelev_type), intent(inout), target :: p type(mld_donelev_type), intent(inout), target :: p
@ -103,9 +103,9 @@ subroutine mld_daggrmat_nosmth_asb(a,desc_a,ilaggr,nlaggr,p,info)
! Local variables ! Local variables
integer ::ictxt,np,me, err_act, icomm integer ::ictxt,np,me, err_act, icomm
character(len=20) :: name character(len=20) :: name
type(psb_d_sparse_mat) :: b type(psb_dspmat_type) :: b
integer, allocatable :: nzbr(:), idisp(:) integer, allocatable :: nzbr(:), idisp(:)
type(psb_d_sparse_mat) :: am1,am2 type(psb_dspmat_type) :: am1,am2
type(psb_d_coo_sparse_mat) :: acoo1, acoo2, bcoo, ac_coo type(psb_d_coo_sparse_mat) :: acoo1, acoo2, bcoo, ac_coo
integer :: nrow, nglob, ncol, ntaggr, nzac, ip, ndx,& integer :: nrow, nglob, ncol, ntaggr, nzac, ip, ndx,&
& naggr, nzt, naggrm1, i & naggr, nzt, naggrm1, i

@ -111,20 +111,20 @@ subroutine mld_daggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,p,info)
#endif #endif
! Arguments ! Arguments
type(psb_d_sparse_mat), 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
integer, intent(inout) :: ilaggr(:), nlaggr(:) integer, intent(inout) :: ilaggr(:), nlaggr(:)
type(mld_donelev_type), intent(inout), target :: p type(mld_donelev_type), intent(inout), target :: p
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables
type(psb_d_sparse_mat) :: b type(psb_dspmat_type) :: b
integer, allocatable :: nzbr(:), idisp(:) integer, allocatable :: nzbr(:), idisp(:)
integer :: nrow, nglob, ncol, ntaggr, nzac, ip, ndx,& integer :: nrow, nglob, ncol, ntaggr, nzac, ip, ndx,&
& naggr, nzl,naggrm1,naggrp1, i, j, k, jd, icolF, nrw & naggr, nzl,naggrm1,naggrp1, i, j, k, jd, icolF, nrw
integer ::ictxt,np,me, err_act, icomm integer ::ictxt,np,me, err_act, icomm
character(len=20) :: name character(len=20) :: name
type(psb_d_sparse_mat) :: am1,am2, am3, am4 type(psb_dspmat_type) :: am1,am2, am3, am4
type(psb_d_coo_sparse_mat) :: acoo1, acoo2, acoof, acoo3,acoo4, bcoo, cootmp type(psb_d_coo_sparse_mat) :: acoo1, acoo2, acoof, acoo3,acoo4, bcoo, cootmp
type(psb_d_csr_sparse_mat) :: acsr1, acsr2, acsrf, acsr3,acsr4, bcsr type(psb_d_csr_sparse_mat) :: acsr1, acsr2, acsrf, acsr3,acsr4, bcsr
real(psb_dpk_), allocatable :: adiag(:) real(psb_dpk_), allocatable :: adiag(:)

@ -74,7 +74,7 @@ subroutine mld_das_bld(a,desc_a,p,upd,info)
Implicit None Implicit None
! Arguments ! Arguments
type(psb_d_sparse_mat), 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_dbaseprec_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
character, intent(in) :: upd character, intent(in) :: upd
@ -85,7 +85,7 @@ subroutine mld_das_bld(a,desc_a,p,upd,info)
integer :: icomm integer :: icomm
Integer :: np,me,nnzero,ictxt, int_err(5),& Integer :: np,me,nnzero,ictxt, int_err(5),&
& tot_recv, n_row,n_col,nhalo, err_act, data_ & tot_recv, n_row,n_col,nhalo, err_act, data_
type(psb_d_sparse_mat) :: blck type(psb_dspmat_type) :: blck
integer :: debug_level, debug_unit integer :: debug_level, debug_unit
character(len=20) :: name, ch_err character(len=20) :: name, ch_err

@ -76,7 +76,7 @@ subroutine mld_dbaseprec_bld(a,desc_a,p,info,upd)
Implicit None Implicit None
! Arguments ! Arguments
type(psb_d_sparse_mat), 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_dbaseprec_type),intent(inout) :: p type(mld_dbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info

@ -73,7 +73,7 @@ subroutine mld_dcoarse_bld(a,desc_a,p,info)
implicit none implicit none
! Arguments ! Arguments
type(psb_d_sparse_mat), intent(in), target :: a type(psb_dspmat_type), intent(in), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_donelev_type), intent(inout),target :: p type(mld_donelev_type), intent(inout),target :: p
integer, intent(out) :: info integer, intent(out) :: info

@ -65,7 +65,7 @@ subroutine mld_ddiag_bld(a,desc_a,p,info)
Implicit None Implicit None
! Arguments ! Arguments
type(psb_d_sparse_mat),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_dbaseprec_type),intent(inout) :: p type(mld_dbaseprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info

@ -116,15 +116,15 @@ subroutine mld_dfact_bld(a,p,upd,info,blck)
implicit none implicit none
! Arguments ! Arguments
type(psb_d_sparse_mat), intent(in), target :: a type(psb_dspmat_type), intent(in), target :: a
type(mld_dbaseprec_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_d_sparse_mat), intent(in), target, optional :: blck type(psb_dspmat_type), intent(in), target, optional :: blck
! Local Variables ! Local Variables
type(psb_d_sparse_mat), pointer :: blck_ type(psb_dspmat_type), pointer :: blck_
type(psb_d_sparse_mat) :: atmp type(psb_dspmat_type) :: atmp
integer :: ictxt,np,me,err_act integer :: ictxt,np,me,err_act
integer :: debug_level, debug_unit integer :: debug_level, debug_unit
integer :: k, m, int_err(5), n_row, nrow_a, n_col integer :: k, m, int_err(5), n_row, nrow_a, n_col

@ -108,16 +108,16 @@ subroutine mld_dilu0_fact(ialg,a,l,u,d,info,blck, upd)
! Arguments ! Arguments
integer, intent(in) :: ialg integer, intent(in) :: ialg
type(psb_d_sparse_mat),intent(in) :: a type(psb_dspmat_type),intent(in) :: a
type(psb_d_sparse_mat),intent(inout) :: l,u type(psb_dspmat_type),intent(inout) :: l,u
real(psb_dpk_), intent(inout) :: d(:) real(psb_dpk_), intent(inout) :: d(:)
integer, intent(out) :: info integer, intent(out) :: info
type(psb_d_sparse_mat),intent(in), optional, target :: blck type(psb_dspmat_type),intent(in), optional, target :: blck
character, intent(in), optional :: upd character, intent(in), optional :: upd
! Local variables ! Local variables
integer :: l1, l2, m, err_act integer :: l1, l2, m, err_act
type(psb_d_sparse_mat), pointer :: blck_ type(psb_dspmat_type), pointer :: blck_
type(psb_d_csr_sparse_mat) :: ll, uu type(psb_d_csr_sparse_mat) :: ll, uu
character :: upd_ character :: upd_
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -293,7 +293,7 @@ contains
! Arguments ! Arguments
integer, intent(in) :: ialg integer, intent(in) :: ialg
type(psb_d_sparse_mat),intent(in) :: a,b type(psb_dspmat_type),intent(in) :: a,b
integer,intent(inout) :: l1,l2,info integer,intent(inout) :: l1,l2,info
integer, intent(inout) :: lja(:),lirp(:),uja(:),uirp(:) integer, intent(inout) :: lja(:),lirp(:),uja(:),uirp(:)
real(psb_dpk_), intent(inout) :: lval(:),uval(:),d(:) real(psb_dpk_), intent(inout) :: lval(:),uval(:),d(:)
@ -562,7 +562,7 @@ contains
implicit none implicit none
! Arguments ! Arguments
type(psb_d_sparse_mat), intent(in) :: a type(psb_dspmat_type), intent(in) :: a
type(psb_d_coo_sparse_mat), intent(inout) :: trw type(psb_d_coo_sparse_mat), intent(inout) :: trw
integer, intent(in) :: i,m,jd,jmin,jmax integer, intent(in) :: i,m,jd,jmin,jmax
integer, intent(inout) :: ktrw,l1,l2 integer, intent(inout) :: ktrw,l1,l2

@ -97,11 +97,11 @@ subroutine mld_dilu_bld(a,p,upd,info,blck)
implicit none implicit none
! Arguments ! Arguments
type(psb_d_sparse_mat), intent(in), target :: a type(psb_dspmat_type), intent(in), target :: a
type(mld_dbaseprec_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_d_sparse_mat), intent(in), optional :: blck type(psb_dspmat_type), intent(in), optional :: blck
! Local Variables ! Local Variables
integer :: i, nztota, err_act, n_row, nrow_a integer :: i, nztota, err_act, n_row, nrow_a

@ -106,14 +106,14 @@ subroutine mld_diluk_fact(fill_in,ialg,a,l,u,d,info,blck)
! Arguments ! Arguments
integer, intent(in) :: fill_in, ialg integer, intent(in) :: fill_in, ialg
integer, intent(out) :: info integer, intent(out) :: info
type(psb_d_sparse_mat),intent(in) :: a type(psb_dspmat_type),intent(in) :: a
type(psb_d_sparse_mat),intent(inout) :: l,u type(psb_dspmat_type),intent(inout) :: l,u
type(psb_d_sparse_mat),intent(in), optional, target :: blck type(psb_dspmat_type),intent(in), optional, target :: blck
real(psb_dpk_), intent(inout) :: d(:) real(psb_dpk_), intent(inout) :: d(:)
! Local Variables ! Local Variables
integer :: l1, l2, m, err_act integer :: l1, l2, m, err_act
type(psb_d_sparse_mat), pointer :: blck_ type(psb_dspmat_type), pointer :: blck_
type(psb_d_csr_sparse_mat) :: ll, uu type(psb_d_csr_sparse_mat) :: ll, uu
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -279,7 +279,7 @@ contains
! Arguments ! Arguments
integer, intent(in) :: fill_in, ialg integer, intent(in) :: fill_in, ialg
type(psb_d_sparse_mat),intent(in) :: a,b type(psb_dspmat_type),intent(in) :: a,b
integer,intent(inout) :: l1,l2,info integer,intent(inout) :: l1,l2,info
integer, allocatable, intent(inout) :: lja(:),lirp(:),uja(:),uirp(:) integer, allocatable, intent(inout) :: lja(:),lirp(:),uja(:),uirp(:)
real(psb_dpk_), allocatable, intent(inout) :: lval(:),uval(:) real(psb_dpk_), allocatable, intent(inout) :: lval(:),uval(:)
@ -496,7 +496,7 @@ contains
implicit none implicit none
! Arguments ! Arguments
type(psb_d_sparse_mat), intent(in) :: a type(psb_dspmat_type), intent(in) :: a
type(psb_d_coo_sparse_mat), intent(inout) :: trw type(psb_d_coo_sparse_mat), intent(inout) :: trw
integer, intent(in) :: i,m,jmin,jmax integer, intent(in) :: i,m,jmin,jmax
integer, intent(inout) :: ktrw,info integer, intent(inout) :: ktrw,info

@ -103,14 +103,14 @@ subroutine mld_dilut_fact(fill_in,thres,a,l,u,d,info,blck)
integer, intent(in) :: fill_in integer, intent(in) :: fill_in
real(psb_dpk_), intent(in) :: thres real(psb_dpk_), intent(in) :: thres
integer, intent(out) :: info integer, intent(out) :: info
type(psb_d_sparse_mat),intent(in) :: a type(psb_dspmat_type),intent(in) :: a
type(psb_d_sparse_mat),intent(inout) :: l,u type(psb_dspmat_type),intent(inout) :: l,u
type(psb_d_sparse_mat),intent(in), optional, target :: blck type(psb_dspmat_type),intent(in), optional, target :: blck
real(psb_dpk_), intent(inout) :: d(:) real(psb_dpk_), intent(inout) :: d(:)
! Local Variables ! Local Variables
integer :: l1, l2, m, err_act integer :: l1, l2, m, err_act
type(psb_d_sparse_mat), pointer :: blck_ type(psb_dspmat_type), pointer :: blck_
type(psb_d_csr_sparse_mat) :: ll, uu type(psb_d_csr_sparse_mat) :: ll, uu
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -279,7 +279,7 @@ contains
! Arguments ! Arguments
integer, intent(in) :: fill_in integer, intent(in) :: fill_in
real(psb_dpk_), intent(in) :: thres real(psb_dpk_), intent(in) :: thres
type(psb_d_sparse_mat),intent(in) :: a,b type(psb_dspmat_type),intent(in) :: a,b
integer,intent(inout) :: l1,l2,info integer,intent(inout) :: l1,l2,info
integer, allocatable, intent(inout) :: lja(:),lirp(:),uja(:),uirp(:) integer, allocatable, intent(inout) :: lja(:),lirp(:),uja(:),uirp(:)
real(psb_dpk_), allocatable, intent(inout) :: lval(:),uval(:) real(psb_dpk_), allocatable, intent(inout) :: lval(:),uval(:)
@ -486,7 +486,7 @@ contains
subroutine ilut_copyin(i,m,a,jd,jmin,jmax,nlw,nup,jmaxup,nrmi,row,heap,ktrw,trw,info) subroutine ilut_copyin(i,m,a,jd,jmin,jmax,nlw,nup,jmaxup,nrmi,row,heap,ktrw,trw,info)
use psb_sparse_mod use psb_sparse_mod
implicit none implicit none
type(psb_d_sparse_mat), intent(in) :: a type(psb_dspmat_type), intent(in) :: a
type(psb_d_coo_sparse_mat), intent(inout) :: trw type(psb_d_coo_sparse_mat), intent(inout) :: trw
integer, intent(in) :: i, m,jmin,jmax,jd integer, intent(in) :: i, m,jmin,jmax,jd
integer, intent(inout) :: ktrw,nlw,nup,jmaxup,info integer, intent(inout) :: ktrw,nlw,nup,jmaxup,info

@ -77,7 +77,7 @@ subroutine mld_dmlprec_bld(a,desc_a,p,info)
Implicit None Implicit None
! Arguments ! Arguments
type(psb_d_sparse_mat),intent(in), target :: a type(psb_dspmat_type),intent(in), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_dprec_type),intent(inout),target :: p type(mld_dprec_type),intent(inout),target :: p
integer, intent(out) :: info integer, intent(out) :: info
@ -223,7 +223,8 @@ subroutine mld_dmlprec_bld(a,desc_a,p,info)
& p%precv(i-1)%base_desc, p%precv(i),info) & p%precv(i-1)%base_desc, p%precv(i),info)
if (info /= psb_success_) then if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,a_err='Init upper level preconditioner') call psb_errpush(psb_err_internal_error_,name,&
& a_err='Init upper level preconditioner')
goto 9999 goto 9999
endif endif
@ -254,7 +255,8 @@ subroutine mld_dmlprec_bld(a,desc_a,p,info)
end if end if
allocate(t_prec%precv(newsz),stat=info) allocate(t_prec%precv(newsz),stat=info)
if (info /= psb_success_) then if (info /= psb_success_) then
call psb_errpush(psb_err_from_subroutine_,name,a_err='prec reallocation') call psb_errpush(psb_err_from_subroutine_,name,&
& a_err='prec reallocation')
goto 9999 goto 9999
endif endif
do i=1,newsz-1 do i=1,newsz-1
@ -321,7 +323,8 @@ subroutine mld_dmlprec_bld(a,desc_a,p,info)
call p%precv(i)%sm%free(info) call p%precv(i)%sm%free(info)
if (info == psb_success_) deallocate(p%precv(i)%sm,stat=info) if (info == psb_success_) deallocate(p%precv(i)%sm,stat=info)
if (info /= psb_success_) then if (info /= psb_success_) then
call psb_errpush(psb_err_alloc_dealloc_,name,a_err='One level preconditioner build.') call psb_errpush(psb_err_alloc_dealloc_,name,&
& a_err='One level preconditioner build.')
goto 9999 goto 9999
endif endif
end if end if
@ -336,7 +339,8 @@ subroutine mld_dmlprec_bld(a,desc_a,p,info)
if (info /= psb_success_) then if (info /= psb_success_) then
write(0,*) ' Smoother allocation error',info,& write(0,*) ' Smoother allocation error',info,&
& p%precv(i)%prec%iprcparm(mld_smoother_type_) & p%precv(i)%prec%iprcparm(mld_smoother_type_)
call psb_errpush(psb_err_internal_error_,name,a_err='One level preconditioner build.') call psb_errpush(psb_err_internal_error_,name,&
& a_err='One level preconditioner build.')
goto 9999 goto 9999
endif endif
call p%precv(i)%sm%set(mld_sub_restr_,p%precv(i)%prec%iprcparm(mld_sub_restr_),info) call p%precv(i)%sm%set(mld_sub_restr_,p%precv(i)%prec%iprcparm(mld_sub_restr_),info)
@ -361,14 +365,16 @@ subroutine mld_dmlprec_bld(a,desc_a,p,info)
if (info /= psb_success_) then if (info /= psb_success_) then
write(0,*) ' Solver allocation error',info,& write(0,*) ' Solver allocation error',info,&
& p%precv(i)%prec%iprcparm(mld_sub_solve_) & p%precv(i)%prec%iprcparm(mld_sub_solve_)
call psb_errpush(psb_err_internal_error_,name,a_err='One level preconditioner build.') call psb_errpush(psb_err_internal_error_,name,&
& a_err='One level preconditioner build.')
goto 9999 goto 9999
endif endif
call p%precv(i)%sm%build(p%precv(i)%base_a,p%precv(i)%base_desc,'F',info) call p%precv(i)%sm%build(p%precv(i)%base_a,p%precv(i)%base_desc,'F',info)
if (info /= psb_success_) then if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,a_err='One level preconditioner build.') call psb_errpush(psb_err_internal_error_,name,&
& a_err='One level preconditioner build.')
goto 9999 goto 9999
endif endif

@ -71,7 +71,7 @@ subroutine mld_dprecbld(a,desc_a,p,info)
Implicit None Implicit None
! Arguments ! Arguments
type(psb_d_sparse_mat),intent(in), target :: a type(psb_dspmat_type),intent(in), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_dprec_type),intent(inout),target :: p type(mld_dprec_type),intent(inout),target :: p
integer, intent(out) :: info integer, intent(out) :: info

@ -77,7 +77,7 @@ subroutine mld_dslu_bld(a,desc_a,p,info)
implicit none implicit none
! Arguments ! Arguments
type(psb_d_sparse_mat), 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_dbaseprec_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info

@ -74,7 +74,7 @@ subroutine mld_dsludist_bld(a,desc_a,p,info)
implicit none implicit none
! Arguments ! Arguments
type(psb_d_sparse_mat), 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_dbaseprec_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info

@ -89,8 +89,8 @@ subroutine mld_dsp_renum(a,blck,p,atmp,info)
implicit none implicit none
! Arguments ! Arguments
type(psb_d_sparse_mat), intent(in) :: a,blck type(psb_dspmat_type), intent(in) :: a,blck
type(psb_d_sparse_mat), intent(out) :: atmp type(psb_dspmat_type), intent(out) :: atmp
type(mld_dbaseprec_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info

@ -83,7 +83,7 @@ subroutine mld_dumf_bld(a,desc_a,p,info)
implicit none implicit none
! Arguments ! Arguments
type(psb_d_sparse_mat), 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_dbaseprec_type), intent(inout) :: p type(mld_dbaseprec_type), intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info

File diff suppressed because it is too large Load Diff

@ -49,7 +49,7 @@ module mld_prec_mod
interface mld_precinit interface mld_precinit
!!$ subroutine mld_sprecinit(p,ptype,info,nlev) !!$ subroutine mld_sprecinit(p,ptype,info,nlev)
!!$ use psb_sparse_mod, only : psb_s_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_sprec_type !!$ use mld_prec_type, only : mld_sprec_type
!!$ type(mld_sprec_type), intent(inout) :: p !!$ type(mld_sprec_type), intent(inout) :: p
!!$ character(len=*), intent(in) :: ptype !!$ character(len=*), intent(in) :: ptype
@ -57,7 +57,7 @@ module mld_prec_mod
!!$ integer, optional, intent(in) :: nlev !!$ integer, optional, intent(in) :: nlev
!!$ end subroutine mld_sprecinit !!$ end subroutine mld_sprecinit
subroutine mld_dprecinit(p,ptype,info,nlev) subroutine mld_dprecinit(p,ptype,info,nlev)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dprec_type use mld_prec_type, only : mld_dprec_type
type(mld_dprec_type), intent(inout) :: p type(mld_dprec_type), intent(inout) :: p
character(len=*), intent(in) :: ptype character(len=*), intent(in) :: ptype
@ -65,7 +65,7 @@ module mld_prec_mod
integer, optional, intent(in) :: nlev integer, optional, intent(in) :: nlev
end subroutine mld_dprecinit end subroutine mld_dprecinit
!!$ subroutine mld_cprecinit(p,ptype,info,nlev) !!$ subroutine mld_cprecinit(p,ptype,info,nlev)
!!$ use psb_sparse_mod, only : psb_c_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_cprec_type !!$ use mld_prec_type, only : mld_cprec_type
!!$ type(mld_cprec_type), intent(inout) :: p !!$ type(mld_cprec_type), intent(inout) :: p
!!$ character(len=*), intent(in) :: ptype !!$ character(len=*), intent(in) :: ptype
@ -73,7 +73,7 @@ module mld_prec_mod
!!$ integer, optional, intent(in) :: nlev !!$ integer, optional, intent(in) :: nlev
!!$ end subroutine mld_cprecinit !!$ end subroutine mld_cprecinit
!!$ subroutine mld_zprecinit(p,ptype,info,nlev) !!$ subroutine mld_zprecinit(p,ptype,info,nlev)
!!$ use psb_sparse_mod, only : psb_z_sparse_mat, psb_desc_type, psb_dpk_ !!$ use psb_sparse_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
!!$ use mld_prec_type, only : mld_zprec_type !!$ use mld_prec_type, only : mld_zprec_type
!!$ type(mld_zprec_type), intent(inout) :: p !!$ type(mld_zprec_type), intent(inout) :: p
!!$ character(len=*), intent(in) :: ptype !!$ character(len=*), intent(in) :: ptype
@ -92,7 +92,7 @@ module mld_prec_mod
interface mld_inner_precset interface mld_inner_precset
!!$ subroutine mld_sprecseti(p,what,val,info,ilev) !!$ subroutine mld_sprecseti(p,what,val,info,ilev)
!!$ use psb_sparse_mod, only : psb_s_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_sprec_type !!$ use mld_prec_type, only : mld_sprec_type
!!$ type(mld_sprec_type), intent(inout) :: p !!$ type(mld_sprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -101,7 +101,7 @@ module mld_prec_mod
!!$ integer, optional, intent(in) :: ilev !!$ integer, optional, intent(in) :: ilev
!!$ end subroutine mld_sprecseti !!$ end subroutine mld_sprecseti
!!$ subroutine mld_sprecsetr(p,what,val,info,ilev) !!$ subroutine mld_sprecsetr(p,what,val,info,ilev)
!!$ use psb_sparse_mod, only : psb_s_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_sprec_type !!$ use mld_prec_type, only : mld_sprec_type
!!$ type(mld_sprec_type), intent(inout) :: p !!$ type(mld_sprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -110,7 +110,7 @@ module mld_prec_mod
!!$ integer, optional, intent(in) :: ilev !!$ integer, optional, intent(in) :: ilev
!!$ end subroutine mld_sprecsetr !!$ end subroutine mld_sprecsetr
!!$ subroutine mld_sprecsetc(p,what,string,info,ilev) !!$ subroutine mld_sprecsetc(p,what,string,info,ilev)
!!$ use psb_sparse_mod, only : psb_s_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_sprec_type !!$ use mld_prec_type, only : mld_sprec_type
!!$ type(mld_sprec_type), intent(inout) :: p !!$ type(mld_sprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -119,7 +119,7 @@ module mld_prec_mod
!!$ integer, optional, intent(in) :: ilev !!$ integer, optional, intent(in) :: ilev
!!$ end subroutine mld_sprecsetc !!$ end subroutine mld_sprecsetc
subroutine mld_dprecsetsm(p,what,val,info,ilev) subroutine mld_dprecsetsm(p,what,val,info,ilev)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dprec_type, mld_d_base_smoother_type use mld_prec_type, only : mld_dprec_type, mld_d_base_smoother_type
type(mld_dprec_type), intent(inout) :: p type(mld_dprec_type), intent(inout) :: p
integer, intent(in) :: what integer, intent(in) :: what
@ -128,7 +128,7 @@ module mld_prec_mod
integer, optional, intent(in) :: ilev integer, optional, intent(in) :: ilev
end subroutine mld_dprecsetsm end subroutine mld_dprecsetsm
subroutine mld_dprecsetsv(p,what,val,info,ilev) subroutine mld_dprecsetsv(p,what,val,info,ilev)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dprec_type, mld_d_base_solver_type use mld_prec_type, only : mld_dprec_type, mld_d_base_solver_type
type(mld_dprec_type), intent(inout) :: p type(mld_dprec_type), intent(inout) :: p
integer, intent(in) :: what integer, intent(in) :: what
@ -137,7 +137,7 @@ module mld_prec_mod
integer, optional, intent(in) :: ilev integer, optional, intent(in) :: ilev
end subroutine mld_dprecsetsv end subroutine mld_dprecsetsv
subroutine mld_dprecseti(p,what,val,info,ilev) subroutine mld_dprecseti(p,what,val,info,ilev)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dprec_type use mld_prec_type, only : mld_dprec_type
type(mld_dprec_type), intent(inout) :: p type(mld_dprec_type), intent(inout) :: p
integer, intent(in) :: what integer, intent(in) :: what
@ -146,7 +146,7 @@ module mld_prec_mod
integer, optional, intent(in) :: ilev integer, optional, intent(in) :: ilev
end subroutine mld_dprecseti end subroutine mld_dprecseti
subroutine mld_dprecsetr(p,what,val,info,ilev) subroutine mld_dprecsetr(p,what,val,info,ilev)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dprec_type use mld_prec_type, only : mld_dprec_type
type(mld_dprec_type), intent(inout) :: p type(mld_dprec_type), intent(inout) :: p
integer, intent(in) :: what integer, intent(in) :: what
@ -155,7 +155,7 @@ module mld_prec_mod
integer, optional, intent(in) :: ilev integer, optional, intent(in) :: ilev
end subroutine mld_dprecsetr end subroutine mld_dprecsetr
subroutine mld_dprecsetc(p,what,string,info,ilev) subroutine mld_dprecsetc(p,what,string,info,ilev)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dprec_type use mld_prec_type, only : mld_dprec_type
type(mld_dprec_type), intent(inout) :: p type(mld_dprec_type), intent(inout) :: p
integer, intent(in) :: what integer, intent(in) :: what
@ -164,7 +164,7 @@ module mld_prec_mod
integer, optional, intent(in) :: ilev integer, optional, intent(in) :: ilev
end subroutine mld_dprecsetc end subroutine mld_dprecsetc
!!$ subroutine mld_cprecseti(p,what,val,info,ilev) !!$ subroutine mld_cprecseti(p,what,val,info,ilev)
!!$ use psb_sparse_mod, only : psb_c_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_cprec_type !!$ use mld_prec_type, only : mld_cprec_type
!!$ type(mld_cprec_type), intent(inout) :: p !!$ type(mld_cprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -173,7 +173,7 @@ module mld_prec_mod
!!$ integer, optional, intent(in) :: ilev !!$ integer, optional, intent(in) :: ilev
!!$ end subroutine mld_cprecseti !!$ end subroutine mld_cprecseti
!!$ subroutine mld_cprecsetr(p,what,val,info,ilev) !!$ subroutine mld_cprecsetr(p,what,val,info,ilev)
!!$ use psb_sparse_mod, only : psb_c_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_cprec_type !!$ use mld_prec_type, only : mld_cprec_type
!!$ type(mld_cprec_type), intent(inout) :: p !!$ type(mld_cprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -182,7 +182,7 @@ module mld_prec_mod
!!$ integer, optional, intent(in) :: ilev !!$ integer, optional, intent(in) :: ilev
!!$ end subroutine mld_cprecsetr !!$ end subroutine mld_cprecsetr
!!$ subroutine mld_cprecsetc(p,what,string,info,ilev) !!$ subroutine mld_cprecsetc(p,what,string,info,ilev)
!!$ use psb_sparse_mod, only : psb_c_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_cprec_type !!$ use mld_prec_type, only : mld_cprec_type
!!$ type(mld_cprec_type), intent(inout) :: p !!$ type(mld_cprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -191,7 +191,7 @@ module mld_prec_mod
!!$ integer, optional, intent(in) :: ilev !!$ integer, optional, intent(in) :: ilev
!!$ end subroutine mld_cprecsetc !!$ end subroutine mld_cprecsetc
!!$ subroutine mld_zprecseti(p,what,val,info,ilev) !!$ subroutine mld_zprecseti(p,what,val,info,ilev)
!!$ use psb_sparse_mod, only : psb_z_sparse_mat, psb_desc_type, psb_dpk_ !!$ use psb_sparse_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
!!$ use mld_prec_type, only : mld_zprec_type !!$ use mld_prec_type, only : mld_zprec_type
!!$ type(mld_zprec_type), intent(inout) :: p !!$ type(mld_zprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -200,7 +200,7 @@ module mld_prec_mod
!!$ integer, optional, intent(in) :: ilev !!$ integer, optional, intent(in) :: ilev
!!$ end subroutine mld_zprecseti !!$ end subroutine mld_zprecseti
!!$ subroutine mld_zprecsetr(p,what,val,info,ilev) !!$ subroutine mld_zprecsetr(p,what,val,info,ilev)
!!$ use psb_sparse_mod, only : psb_z_sparse_mat, psb_desc_type, psb_dpk_ !!$ use psb_sparse_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
!!$ use mld_prec_type, only : mld_zprec_type !!$ use mld_prec_type, only : mld_zprec_type
!!$ type(mld_zprec_type), intent(inout) :: p !!$ type(mld_zprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -209,7 +209,7 @@ module mld_prec_mod
!!$ integer, optional, intent(in) :: ilev !!$ integer, optional, intent(in) :: ilev
!!$ end subroutine mld_zprecsetr !!$ end subroutine mld_zprecsetr
!!$ subroutine mld_zprecsetc(p,what,string,info,ilev) !!$ subroutine mld_zprecsetc(p,what,string,info,ilev)
!!$ use psb_sparse_mod, only : psb_z_sparse_mat, psb_desc_type, psb_dpk_ !!$ use psb_sparse_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
!!$ use mld_prec_type, only : mld_zprec_type !!$ use mld_prec_type, only : mld_zprec_type
!!$ type(mld_zprec_type), intent(inout) :: p !!$ type(mld_zprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -221,7 +221,7 @@ module mld_prec_mod
!!$ !!$
!!$ interface mld_precaply !!$ interface mld_precaply
!!$ subroutine mld_sprecaply(prec,x,y,desc_data,info,trans,work) !!$ subroutine mld_sprecaply(prec,x,y,desc_data,info,trans,work)
!!$ use psb_sparse_mod, only : psb_s_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_sprec_type !!$ use mld_prec_type, only : mld_sprec_type
!!$ type(psb_desc_type),intent(in) :: desc_data !!$ type(psb_desc_type),intent(in) :: desc_data
!!$ type(mld_sprec_type), intent(in) :: prec !!$ type(mld_sprec_type), intent(in) :: prec
@ -232,7 +232,7 @@ module mld_prec_mod
!!$ real(psb_spk_),intent(inout), optional, target :: work(:) !!$ real(psb_spk_),intent(inout), optional, target :: work(:)
!!$ end subroutine mld_sprecaply !!$ end subroutine mld_sprecaply
!!$ subroutine mld_sprecaply1(prec,x,desc_data,info,trans) !!$ subroutine mld_sprecaply1(prec,x,desc_data,info,trans)
!!$ use psb_sparse_mod, only : psb_s_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_sprec_type !!$ use mld_prec_type, only : mld_sprec_type
!!$ type(psb_desc_type),intent(in) :: desc_data !!$ type(psb_desc_type),intent(in) :: desc_data
!!$ type(mld_sprec_type), intent(in) :: prec !!$ type(mld_sprec_type), intent(in) :: prec
@ -241,7 +241,7 @@ module mld_prec_mod
!!$ character(len=1), optional :: trans !!$ character(len=1), optional :: trans
!!$ end subroutine mld_sprecaply1 !!$ end subroutine mld_sprecaply1
!!$ subroutine mld_dprecaply(prec,x,y,desc_data,info,trans,work) !!$ subroutine mld_dprecaply(prec,x,y,desc_data,info,trans,work)
!!$ use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ !!$ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
!!$ use mld_prec_type, only : mld_dprec_type !!$ use mld_prec_type, only : mld_dprec_type
!!$ type(psb_desc_type),intent(in) :: desc_data !!$ type(psb_desc_type),intent(in) :: desc_data
!!$ type(mld_dprec_type), intent(in) :: prec !!$ type(mld_dprec_type), intent(in) :: prec
@ -252,7 +252,7 @@ module mld_prec_mod
!!$ real(psb_dpk_),intent(inout), optional, target :: work(:) !!$ real(psb_dpk_),intent(inout), optional, target :: work(:)
!!$ end subroutine mld_dprecaply !!$ end subroutine mld_dprecaply
!!$ subroutine mld_dprecaply1(prec,x,desc_data,info,trans) !!$ subroutine mld_dprecaply1(prec,x,desc_data,info,trans)
!!$ use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ !!$ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
!!$ use mld_prec_type, only : mld_dprec_type !!$ use mld_prec_type, only : mld_dprec_type
!!$ type(psb_desc_type),intent(in) :: desc_data !!$ type(psb_desc_type),intent(in) :: desc_data
!!$ type(mld_dprec_type), intent(in) :: prec !!$ type(mld_dprec_type), intent(in) :: prec
@ -261,7 +261,7 @@ module mld_prec_mod
!!$ character(len=1), optional :: trans !!$ character(len=1), optional :: trans
!!$ end subroutine mld_dprecaply1 !!$ end subroutine mld_dprecaply1
!!$ subroutine mld_cprecaply(prec,x,y,desc_data,info,trans,work) !!$ subroutine mld_cprecaply(prec,x,y,desc_data,info,trans,work)
!!$ use psb_sparse_mod, only : psb_c_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_cprec_type !!$ use mld_prec_type, only : mld_cprec_type
!!$ type(psb_desc_type),intent(in) :: desc_data !!$ type(psb_desc_type),intent(in) :: desc_data
!!$ type(mld_cprec_type), intent(in) :: prec !!$ type(mld_cprec_type), intent(in) :: prec
@ -272,7 +272,7 @@ module mld_prec_mod
!!$ complex(psb_spk_),intent(inout), optional, target :: work(:) !!$ complex(psb_spk_),intent(inout), optional, target :: work(:)
!!$ end subroutine mld_cprecaply !!$ end subroutine mld_cprecaply
!!$ subroutine mld_cprecaply1(prec,x,desc_data,info,trans) !!$ subroutine mld_cprecaply1(prec,x,desc_data,info,trans)
!!$ use psb_sparse_mod, only : psb_c_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_cprec_type !!$ use mld_prec_type, only : mld_cprec_type
!!$ type(psb_desc_type),intent(in) :: desc_data !!$ type(psb_desc_type),intent(in) :: desc_data
!!$ type(mld_cprec_type), intent(in) :: prec !!$ type(mld_cprec_type), intent(in) :: prec
@ -281,7 +281,7 @@ module mld_prec_mod
!!$ character(len=1), optional :: trans !!$ character(len=1), optional :: trans
!!$ end subroutine mld_cprecaply1 !!$ end subroutine mld_cprecaply1
!!$ subroutine mld_zprecaply(prec,x,y,desc_data,info,trans,work) !!$ subroutine mld_zprecaply(prec,x,y,desc_data,info,trans,work)
!!$ use psb_sparse_mod, only : psb_z_sparse_mat, psb_desc_type, psb_dpk_ !!$ use psb_sparse_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
!!$ use mld_prec_type, only : mld_zprec_type !!$ use mld_prec_type, only : mld_zprec_type
!!$ type(psb_desc_type),intent(in) :: desc_data !!$ type(psb_desc_type),intent(in) :: desc_data
!!$ type(mld_zprec_type), intent(in) :: prec !!$ type(mld_zprec_type), intent(in) :: prec
@ -292,7 +292,7 @@ module mld_prec_mod
!!$ complex(psb_dpk_),intent(inout), optional, target :: work(:) !!$ complex(psb_dpk_),intent(inout), optional, target :: work(:)
!!$ end subroutine mld_zprecaply !!$ end subroutine mld_zprecaply
!!$ subroutine mld_zprecaply1(prec,x,desc_data,info,trans) !!$ subroutine mld_zprecaply1(prec,x,desc_data,info,trans)
!!$ use psb_sparse_mod, only : psb_z_sparse_mat, psb_desc_type, psb_dpk_ !!$ use psb_sparse_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
!!$ use mld_prec_type, only : mld_zprec_type !!$ use mld_prec_type, only : mld_zprec_type
!!$ type(psb_desc_type),intent(in) :: desc_data !!$ type(psb_desc_type),intent(in) :: desc_data
!!$ type(mld_zprec_type), intent(in) :: prec !!$ type(mld_zprec_type), intent(in) :: prec
@ -304,40 +304,40 @@ module mld_prec_mod
!!$ !!$
interface mld_precbld interface mld_precbld
subroutine mld_sprecbld(a,desc_a,prec,info) subroutine mld_sprecbld(a,desc_a,prec,info)
use psb_sparse_mod, only : psb_s_sparse_mat, psb_desc_type, psb_spk_ use psb_sparse_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_sprec_type use mld_prec_type, only : mld_sprec_type
implicit none implicit none
type(psb_s_sparse_mat), intent(in), target :: a type(psb_sspmat_type), intent(in), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_sprec_type), intent(inout), target :: prec type(mld_sprec_type), intent(inout), target :: prec
integer, intent(out) :: info integer, intent(out) :: info
!!$ character, intent(in),optional :: upd !!$ character, intent(in),optional :: upd
end subroutine mld_sprecbld end subroutine mld_sprecbld
subroutine mld_dprecbld(a,desc_a,prec,info) subroutine mld_dprecbld(a,desc_a,prec,info)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dprec_type use mld_prec_type, only : mld_dprec_type
implicit none implicit none
type(psb_d_sparse_mat), intent(in), target :: a type(psb_dspmat_type), intent(in), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_dprec_type), intent(inout), target :: prec type(mld_dprec_type), intent(inout), target :: prec
integer, intent(out) :: info integer, intent(out) :: info
!!$ character, intent(in),optional :: upd !!$ character, intent(in),optional :: upd
end subroutine mld_dprecbld end subroutine mld_dprecbld
subroutine mld_cprecbld(a,desc_a,prec,info) subroutine mld_cprecbld(a,desc_a,prec,info)
use psb_sparse_mod, only : psb_c_sparse_mat, psb_desc_type, psb_spk_ use psb_sparse_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
use mld_prec_type, only : mld_cprec_type use mld_prec_type, only : mld_cprec_type
implicit none implicit none
type(psb_c_sparse_mat), intent(in), target :: a type(psb_cspmat_type), intent(in), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_cprec_type), intent(inout), target :: prec type(mld_cprec_type), intent(inout), target :: prec
integer, intent(out) :: info integer, intent(out) :: info
!!$ character, intent(in),optional :: upd !!$ character, intent(in),optional :: upd
end subroutine mld_cprecbld end subroutine mld_cprecbld
subroutine mld_zprecbld(a,desc_a,prec,info) subroutine mld_zprecbld(a,desc_a,prec,info)
use psb_sparse_mod, only : psb_z_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_zprec_type use mld_prec_type, only : mld_zprec_type
implicit none implicit none
type(psb_z_sparse_mat), intent(in), target :: a type(psb_zspmat_type), intent(in), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(mld_zprec_type), intent(inout) :: prec type(mld_zprec_type), intent(inout) :: prec
integer, intent(out) :: info integer, intent(out) :: info
@ -348,7 +348,7 @@ module mld_prec_mod
contains contains
!!$ subroutine mld_i_sprecseti(p,what,val,info) !!$ subroutine mld_i_sprecseti(p,what,val,info)
!!$ use psb_sparse_mod, only : psb_s_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_sprec_type !!$ use mld_prec_type, only : mld_sprec_type
!!$ type(mld_sprec_type), intent(inout) :: p !!$ type(mld_sprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -359,7 +359,7 @@ contains
!!$ end subroutine mld_i_sprecseti !!$ end subroutine mld_i_sprecseti
!!$ !!$
!!$ subroutine mld_i_sprecsetr(p,what,val,info) !!$ subroutine mld_i_sprecsetr(p,what,val,info)
!!$ use psb_sparse_mod, only : psb_s_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_sprec_type !!$ use mld_prec_type, only : mld_sprec_type
!!$ type(mld_sprec_type), intent(inout) :: p !!$ type(mld_sprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -370,7 +370,7 @@ contains
!!$ end subroutine mld_i_sprecsetr !!$ end subroutine mld_i_sprecsetr
!!$ !!$
!!$ subroutine mld_i_sprecsetc(p,what,val,info) !!$ subroutine mld_i_sprecsetc(p,what,val,info)
!!$ use psb_sparse_mod, only : psb_s_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_sprec_type !!$ use mld_prec_type, only : mld_sprec_type
!!$ type(mld_sprec_type), intent(inout) :: p !!$ type(mld_sprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -381,7 +381,7 @@ contains
!!$ end subroutine mld_i_sprecsetc !!$ end subroutine mld_i_sprecsetc
subroutine mld_i_dprecseti(p,what,val,info) subroutine mld_i_dprecseti(p,what,val,info)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dprec_type use mld_prec_type, only : mld_dprec_type
type(mld_dprec_type), intent(inout) :: p type(mld_dprec_type), intent(inout) :: p
integer, intent(in) :: what integer, intent(in) :: what
@ -392,7 +392,7 @@ contains
end subroutine mld_i_dprecseti end subroutine mld_i_dprecseti
subroutine mld_i_dprecsetr(p,what,val,info) subroutine mld_i_dprecsetr(p,what,val,info)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dprec_type use mld_prec_type, only : mld_dprec_type
type(mld_dprec_type), intent(inout) :: p type(mld_dprec_type), intent(inout) :: p
integer, intent(in) :: what integer, intent(in) :: what
@ -403,7 +403,7 @@ contains
end subroutine mld_i_dprecsetr end subroutine mld_i_dprecsetr
subroutine mld_i_dprecsetc(p,what,val,info) subroutine mld_i_dprecsetc(p,what,val,info)
use psb_sparse_mod, only : psb_d_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_dspmat_type, psb_desc_type, psb_dpk_
use mld_prec_type, only : mld_dprec_type use mld_prec_type, only : mld_dprec_type
type(mld_dprec_type), intent(inout) :: p type(mld_dprec_type), intent(inout) :: p
integer, intent(in) :: what integer, intent(in) :: what
@ -414,7 +414,7 @@ contains
end subroutine mld_i_dprecsetc end subroutine mld_i_dprecsetc
!!$ subroutine mld_i_cprecseti(p,what,val,info) !!$ subroutine mld_i_cprecseti(p,what,val,info)
!!$ use psb_sparse_mod, only : psb_c_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_cprec_type !!$ use mld_prec_type, only : mld_cprec_type
!!$ type(mld_cprec_type), intent(inout) :: p !!$ type(mld_cprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -425,7 +425,7 @@ contains
!!$ end subroutine mld_i_cprecseti !!$ end subroutine mld_i_cprecseti
!!$ !!$
!!$ subroutine mld_i_cprecsetr(p,what,val,info) !!$ subroutine mld_i_cprecsetr(p,what,val,info)
!!$ use psb_sparse_mod, only : psb_c_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_cprec_type !!$ use mld_prec_type, only : mld_cprec_type
!!$ type(mld_cprec_type), intent(inout) :: p !!$ type(mld_cprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -436,7 +436,7 @@ contains
!!$ end subroutine mld_i_cprecsetr !!$ end subroutine mld_i_cprecsetr
!!$ !!$
!!$ subroutine mld_i_cprecsetc(p,what,val,info) !!$ subroutine mld_i_cprecsetc(p,what,val,info)
!!$ use psb_sparse_mod, only : psb_c_sparse_mat, psb_desc_type, psb_spk_ !!$ use psb_sparse_mod, only : psb_cspmat_type, psb_desc_type, psb_spk_
!!$ use mld_prec_type, only : mld_cprec_type !!$ use mld_prec_type, only : mld_cprec_type
!!$ type(mld_cprec_type), intent(inout) :: p !!$ type(mld_cprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -447,7 +447,7 @@ contains
!!$ end subroutine mld_i_cprecsetc !!$ end subroutine mld_i_cprecsetc
!!$ !!$
!!$ subroutine mld_i_zprecseti(p,what,val,info) !!$ subroutine mld_i_zprecseti(p,what,val,info)
!!$ use psb_sparse_mod, only : psb_z_sparse_mat, psb_desc_type, psb_dpk_ !!$ use psb_sparse_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
!!$ use mld_prec_type, only : mld_zprec_type !!$ use mld_prec_type, only : mld_zprec_type
!!$ type(mld_zprec_type), intent(inout) :: p !!$ type(mld_zprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -458,7 +458,7 @@ contains
!!$ end subroutine mld_i_zprecseti !!$ end subroutine mld_i_zprecseti
!!$ !!$
!!$ subroutine mld_i_zprecsetr(p,what,val,info) !!$ subroutine mld_i_zprecsetr(p,what,val,info)
!!$ use psb_sparse_mod, only : psb_z_sparse_mat, psb_desc_type, psb_dpk_ !!$ use psb_sparse_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
!!$ use mld_prec_type, only : mld_zprec_type !!$ use mld_prec_type, only : mld_zprec_type
!!$ type(mld_zprec_type), intent(inout) :: p !!$ type(mld_zprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what
@ -469,7 +469,7 @@ contains
!!$ end subroutine mld_i_zprecsetr !!$ end subroutine mld_i_zprecsetr
!!$ !!$
!!$ subroutine mld_i_zprecsetc(p,what,val,info) !!$ subroutine mld_i_zprecsetc(p,what,val,info)
!!$ use psb_sparse_mod, only : psb_z_sparse_mat, psb_desc_type, psb_dpk_ !!$ use psb_sparse_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
!!$ use mld_prec_type, only : mld_zprec_type !!$ use mld_prec_type, only : mld_zprec_type
!!$ type(mld_zprec_type), intent(inout) :: p !!$ type(mld_zprec_type), intent(inout) :: p
!!$ integer, intent(in) :: what !!$ integer, intent(in) :: what

@ -89,9 +89,9 @@ module mld_s_prec_type
! type(mld_Tbaseprec_type) :: prec ! type(mld_Tbaseprec_type) :: prec
! integer, allocatable :: iprcparm(:) ! integer, allocatable :: iprcparm(:)
! real(psb_Tpk_), allocatable :: rprcparm(:) ! real(psb_Tpk_), allocatable :: rprcparm(:)
! type(psb_T_sparse_mat) :: ac ! type(psb_Tspmat_type) :: ac
! type(psb_desc_type) :: desc_ac ! type(psb_desc_type) :: desc_ac
! type(psb_T_sparse_mat), pointer :: base_a => null() ! type(psb_Tspmat_type), pointer :: base_a => null()
! type(psb_desc_type), pointer :: base_desc => null() ! type(psb_desc_type), pointer :: base_desc => null()
! type(psb_Tlinmap_type) :: map ! type(psb_Tlinmap_type) :: map
! end type mld_Tonelev_type ! end type mld_Tonelev_type
@ -110,7 +110,7 @@ module mld_s_prec_type
! desc_ac - type(psb_desc_type). ! desc_ac - type(psb_desc_type).
! The communication descriptor associated to the matrix ! The communication descriptor associated to the matrix
! stored in ac. ! stored in ac.
! base_a - type(psb_z_sparse_mat), pointer. ! base_a - type(psb_zspmat_type), pointer.
! Pointer (really a pointer!) to the local part of the current ! Pointer (really a pointer!) to the local part of the current
! matrix (so we have a unified treatment of residuals). ! matrix (so we have a unified treatment of residuals).
! We need this to avoid passing explicitly the current matrix ! We need this to avoid passing explicitly the current matrix
@ -128,7 +128,7 @@ module mld_s_prec_type
! It holds the smoother (base preconditioner) at a single level. ! It holds the smoother (base preconditioner) at a single level.
! !
! type mld_Tbaseprec_type ! type mld_Tbaseprec_type
! type(psb_T_sparse_mat), allocatable :: av(:) ! type(psb_Tspmat_type), allocatable :: av(:)
! IntrType(psb_Tpk_), allocatable :: d(:) ! IntrType(psb_Tpk_), allocatable :: d(:)
! type(psb_desc_type) :: desc_data ! type(psb_desc_type) :: desc_data
! integer, allocatable :: iprcparm(:) ! integer, allocatable :: iprcparm(:)
@ -140,7 +140,7 @@ module mld_s_prec_type
! the kind of the real or complex type, according to the real/complex, single/double ! the kind of the real or complex type, according to the real/complex, single/double
! precision version of MLD2P4. ! precision version of MLD2P4.
! !
! av - type(psb_T_sparse_mat), dimension(:), allocatable(:). ! av - type(psb_Tspmat_type), dimension(:), allocatable(:).
! The sparse matrices needed to apply the preconditioner at ! The sparse matrices needed to apply the preconditioner at
! the current level ilev. ! the current level ilev.
! av(mld_l_pr_) - The L factor of the ILU factorization of the local ! av(mld_l_pr_) - The L factor of the ILU factorization of the local
@ -177,7 +177,7 @@ module mld_s_prec_type
! !
type mld_sbaseprec_type type mld_sbaseprec_type
type(psb_s_sparse_mat), 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(:)
@ -189,9 +189,9 @@ module mld_s_prec_type
type(mld_sbaseprec_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_s_sparse_mat) :: ac type(psb_sspmat_type) :: ac
type(psb_desc_type) :: desc_ac type(psb_desc_type) :: desc_ac
type(psb_s_sparse_mat), pointer :: base_a => null() type(psb_sspmat_type), pointer :: base_a => null()
type(psb_desc_type), pointer :: base_desc => null() type(psb_desc_type), pointer :: base_desc => null()
type(psb_slinmap_type) :: map type(psb_slinmap_type) :: map
end type mld_sonelev_type end type mld_sonelev_type
@ -235,7 +235,7 @@ module mld_s_prec_type
interface mld_precaply interface mld_precaply
subroutine mld_sprecaply(prec,x,y,desc_data,info,trans,work) subroutine mld_sprecaply(prec,x,y,desc_data,info,trans,work)
use psb_sparse_mod, only : psb_s_sparse_mat, psb_desc_type, psb_spk_ use psb_sparse_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
import mld_sprec_type import mld_sprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_sprec_type), intent(in) :: prec type(mld_sprec_type), intent(in) :: prec
@ -246,7 +246,7 @@ module mld_s_prec_type
real(psb_spk_),intent(inout), optional, target :: work(:) real(psb_spk_),intent(inout), optional, target :: work(:)
end subroutine mld_sprecaply end subroutine mld_sprecaply
subroutine mld_sprecaply1(prec,x,desc_data,info,trans) subroutine mld_sprecaply1(prec,x,desc_data,info,trans)
use psb_sparse_mod, only : psb_s_sparse_mat, psb_desc_type, psb_spk_ use psb_sparse_mod, only : psb_sspmat_type, psb_desc_type, psb_spk_
import mld_sprec_type import mld_sprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_sprec_type), intent(in) :: prec type(mld_sprec_type), intent(in) :: prec

@ -88,9 +88,9 @@ module mld_z_prec_type
! type(mld_Tbaseprec_type) :: prec ! type(mld_Tbaseprec_type) :: prec
! integer, allocatable :: iprcparm(:) ! integer, allocatable :: iprcparm(:)
! real(psb_Tpk_), allocatable :: rprcparm(:) ! real(psb_Tpk_), allocatable :: rprcparm(:)
! type(psb_T_sparse_mat) :: ac ! type(psb_Tspmat_type) :: ac
! type(psb_desc_type) :: desc_ac ! type(psb_desc_type) :: desc_ac
! type(psb_T_sparse_mat), pointer :: base_a => null() ! type(psb_Tspmat_type), pointer :: base_a => null()
! type(psb_desc_type), pointer :: base_desc => null() ! type(psb_desc_type), pointer :: base_desc => null()
! type(psb_Tlinmap_type) :: map ! type(psb_Tlinmap_type) :: map
! end type mld_Tonelev_type ! end type mld_Tonelev_type
@ -109,7 +109,7 @@ module mld_z_prec_type
! desc_ac - type(psb_desc_type). ! desc_ac - type(psb_desc_type).
! The communication descriptor associated to the matrix ! The communication descriptor associated to the matrix
! stored in ac. ! stored in ac.
! base_a - type(psb_z_sparse_mat), pointer. ! base_a - type(psb_zspmat_type), pointer.
! Pointer (really a pointer!) to the local part of the current ! Pointer (really a pointer!) to the local part of the current
! matrix (so we have a unified treatment of residuals). ! matrix (so we have a unified treatment of residuals).
! We need this to avoid passing explicitly the current matrix ! We need this to avoid passing explicitly the current matrix
@ -127,7 +127,7 @@ module mld_z_prec_type
! It holds the smoother (base preconditioner) at a single level. ! It holds the smoother (base preconditioner) at a single level.
! !
! type mld_Tbaseprec_type ! type mld_Tbaseprec_type
! type(psb_T_sparse_mat), allocatable :: av(:) ! type(psb_Tspmat_type), allocatable :: av(:)
! IntrType(psb_Tpk_), allocatable :: d(:) ! IntrType(psb_Tpk_), allocatable :: d(:)
! type(psb_desc_type) :: desc_data ! type(psb_desc_type) :: desc_data
! integer, allocatable :: iprcparm(:) ! integer, allocatable :: iprcparm(:)
@ -139,7 +139,7 @@ module mld_z_prec_type
! the kind of the real or complex type, according to the real/complex, single/double ! the kind of the real or complex type, according to the real/complex, single/double
! precision version of MLD2P4. ! precision version of MLD2P4.
! !
! av - type(psb_T_sparse_mat), dimension(:), allocatable(:). ! av - type(psb_Tspmat_type), dimension(:), allocatable(:).
! The sparse matrices needed to apply the preconditioner at ! The sparse matrices needed to apply the preconditioner at
! the current level ilev. ! the current level ilev.
! av(mld_l_pr_) - The L factor of the ILU factorization of the local ! av(mld_l_pr_) - The L factor of the ILU factorization of the local
@ -176,7 +176,7 @@ module mld_z_prec_type
! !
type mld_zbaseprec_type type mld_zbaseprec_type
type(psb_z_sparse_mat), 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(:)
@ -188,9 +188,9 @@ module mld_z_prec_type
type(mld_zbaseprec_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_z_sparse_mat) :: ac type(psb_zspmat_type) :: ac
type(psb_desc_type) :: desc_ac type(psb_desc_type) :: desc_ac
type(psb_z_sparse_mat), pointer :: base_a => null() type(psb_zspmat_type), pointer :: base_a => null()
type(psb_desc_type), pointer :: base_desc => null() type(psb_desc_type), pointer :: base_desc => null()
type(psb_zlinmap_type) :: map type(psb_zlinmap_type) :: map
end type mld_zonelev_type end type mld_zonelev_type
@ -230,7 +230,7 @@ module mld_z_prec_type
interface mld_precaply interface mld_precaply
subroutine mld_zprecaply(prec,x,y,desc_data,info,trans,work) subroutine mld_zprecaply(prec,x,y,desc_data,info,trans,work)
use psb_sparse_mod, only : psb_z_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
import mld_zprec_type import mld_zprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_zprec_type), intent(in) :: prec type(mld_zprec_type), intent(in) :: prec
@ -241,7 +241,7 @@ module mld_z_prec_type
complex(psb_dpk_),intent(inout), optional, target :: work(:) complex(psb_dpk_),intent(inout), optional, target :: work(:)
end subroutine mld_zprecaply end subroutine mld_zprecaply
subroutine mld_zprecaply1(prec,x,desc_data,info,trans) subroutine mld_zprecaply1(prec,x,desc_data,info,trans)
use psb_sparse_mod, only : psb_z_sparse_mat, psb_desc_type, psb_dpk_ use psb_sparse_mod, only : psb_zspmat_type, psb_desc_type, psb_dpk_
import mld_zprec_type import mld_zprec_type
type(psb_desc_type),intent(in) :: desc_data type(psb_desc_type),intent(in) :: desc_data
type(mld_zprec_type), intent(in) :: prec type(mld_zprec_type), intent(in) :: prec

@ -2,7 +2,7 @@ MLDDIR=../..
include $(MLDDIR)/Make.inc include $(MLDDIR)/Make.inc
PSBDIR=$(PSBLASDIR)/lib/ PSBDIR=$(PSBLASDIR)/lib/
MLDLIBDIR=$(MLDDIR)/lib MLDLIBDIR=$(MLDDIR)/lib
MLD_LIB=-L$(MLDLIBDIR) -lmld_krylov -lmld_prec MLD_LIB=-L$(MLDLIBDIR) -lpsb_krylov -lmld_prec -lpsb_prec
PSBLAS_LIB= -L$(PSBDIR) -lpsb_util -lpsb_base PSBLAS_LIB= -L$(PSBDIR) -lpsb_util -lpsb_base
FINCLUDES=$(FMFLAG). $(FMFLAG)$(MLDLIBDIR) $(FMFLAG)$(PSBDIR) $(FIFLAG). FINCLUDES=$(FMFLAG). $(FMFLAG)$(MLDLIBDIR) $(FMFLAG)$(PSBDIR) $(FIFLAG).
@ -40,9 +40,6 @@ df_sample.o: data_input.o
cf_sample.o: data_input.o cf_sample.o: data_input.o
zf_sample.o: data_input.o zf_sample.o: data_input.o
.f90.o:
$(MPF90) $(F90COPT) $(FINCLUDES) -c $<
clean: clean:
/bin/rm -f $(DFOBJS) $(ZFOBJS) $(SFSOBJS) $(DFSOBJS) \ /bin/rm -f $(DFOBJS) $(ZFOBJS) $(SFSOBJS) $(DFSOBJS) \
*$(.mod) $(EXEDIR)/df_bench $(EXEDIR)/zf_bench \ *$(.mod) $(EXEDIR)/df_bench $(EXEDIR)/zf_bench \

@ -52,11 +52,13 @@ program df_sample
character(len=20) :: descr ! verbose description of the prec character(len=20) :: descr ! verbose description of the prec
character(len=10) :: prec ! overall prectype character(len=10) :: prec ! overall prectype
integer :: novr ! number of overlap layers integer :: novr ! number of overlap layers
integer :: jsweeps ! Jacobi/smoother sweeps
character(len=16) :: restr ! restriction over application of AS character(len=16) :: restr ! restriction over application of AS
character(len=16) :: prol ! prolongation over application of AS character(len=16) :: prol ! prolongation over application of AS
character(len=16) :: solve ! factorization type: ILU, SuperLU, UMFPACK character(len=16) :: solve ! factorization type: ILU, SuperLU, UMFPACK
integer :: fill ! fillin for factorization integer :: fill ! fillin for factorization
real(psb_dpk_) :: thr ! threshold for fact. ILU(T) real(psb_dpk_) :: thr ! threshold for fact. ILU(T)
character(len=16) :: smther ! Smoother
integer :: nlev ! number of levels in multilevel prec. integer :: nlev ! number of levels in multilevel prec.
character(len=16) :: aggrkind ! smoothed, raw aggregation character(len=16) :: aggrkind ! smoothed, raw aggregation
character(len=16) :: aggr_alg ! aggregation algorithm (currently only decoupled) character(len=16) :: aggr_alg ! aggregation algorithm (currently only decoupled)
@ -160,7 +162,7 @@ program df_sample
call psb_abort(ictxt) call psb_abort(ictxt)
end if end if
m_problem = aux_a%m m_problem = aux_a%get_nrows()
call psb_bcast(ictxt,m_problem) call psb_bcast(ictxt,m_problem)
! At this point aux_b may still be unallocated ! At this point aux_b may still be unallocated
@ -208,11 +210,11 @@ program df_sample
else if (ipart == 2) then else if (ipart == 2) then
if (iam == psb_root_) then if (iam == psb_root_) then
write(*,'("Partition type: graph")') write(*,'("Partition type: graph")')
write(*,'(" ")') write(*,'("")')
! write(0,'("Build type: graph")') ! write(0,'("Build type: graph")')
call build_mtpart(aux_a%m,aux_a%fida,aux_a%ia1,aux_a%ia2,np) call build_mtpart(aux_a,np)
endif endif
call psb_barrier(ictxt) !!$ call psb_barrier(ictxt)
call distr_mtpart(psb_root_,ictxt) call distr_mtpart(psb_root_,ictxt)
call getv_mtpart(ivg) call getv_mtpart(ivg)
call psb_matdist(aux_a, a, ictxt, & call psb_matdist(aux_a, a, ictxt, &
@ -245,17 +247,15 @@ program df_sample
if (psb_toupper(prec_choice%prec) == 'ML') then if (psb_toupper(prec_choice%prec) == 'ML') then
nlv = prec_choice%nlev nlv = prec_choice%nlev
else call mld_precinit(prec,prec_choice%prec,info,nlev=nlv)
nlv = 1 call mld_precset(prec,mld_smoother_type_, prec_choice%smther, info)
end if call mld_precset(prec,mld_smoother_sweeps_, prec_choice%jsweeps, info)
call mld_precinit(prec,prec_choice%prec,info,nlev=nlv) call mld_precset(prec,mld_sub_ovr_, prec_choice%novr, info)
call mld_precset(prec,mld_sub_ovr_, prec_choice%novr, info) call mld_precset(prec,mld_sub_restr_, prec_choice%restr, info)
call mld_precset(prec,mld_sub_restr_, prec_choice%restr,info) call mld_precset(prec,mld_sub_prol_, prec_choice%prol, info)
call mld_precset(prec,mld_sub_prol_, prec_choice%prol, info) call mld_precset(prec,mld_sub_solve_, prec_choice%solve, info)
call mld_precset(prec,mld_sub_solve_, prec_choice%solve,info) call mld_precset(prec,mld_sub_fillin_, prec_choice%fill, info)
call mld_precset(prec,mld_sub_fillin_,prec_choice%fill,info) call mld_precset(prec,mld_sub_iluthrs_, prec_choice%thr, info)
call mld_precset(prec,mld_sub_iluthrs_, prec_choice%thr, info)
if (psb_toupper(prec_choice%prec) == 'ML') then
call mld_precset(prec,mld_aggr_kind_, prec_choice%aggrkind,info) call mld_precset(prec,mld_aggr_kind_, prec_choice%aggrkind,info)
call mld_precset(prec,mld_aggr_alg_, prec_choice%aggr_alg,info) call mld_precset(prec,mld_aggr_alg_, prec_choice%aggr_alg,info)
call mld_precset(prec,mld_ml_type_, prec_choice%mltype, info) call mld_precset(prec,mld_ml_type_, prec_choice%mltype, info)
@ -267,6 +267,16 @@ program df_sample
call mld_precset(prec,mld_coarse_fillin_, prec_choice%cfill, info) call mld_precset(prec,mld_coarse_fillin_, prec_choice%cfill, info)
call mld_precset(prec,mld_coarse_iluthrs_, prec_choice%cthres, info) call mld_precset(prec,mld_coarse_iluthrs_, prec_choice%cthres, info)
call mld_precset(prec,mld_coarse_sweeps_, prec_choice%cjswp, info) call mld_precset(prec,mld_coarse_sweeps_, prec_choice%cjswp, info)
else
nlv = 1
call mld_precinit(prec,prec_choice%prec,info)
call mld_precset(prec,mld_smoother_sweeps_, prec_choice%jsweeps, info)
call mld_precset(prec,mld_sub_ovr_, prec_choice%novr, info)
call mld_precset(prec,mld_sub_restr_, prec_choice%restr, info)
call mld_precset(prec,mld_sub_prol_, prec_choice%prol, info)
call mld_precset(prec,mld_sub_solve_, prec_choice%solve, info)
call mld_precset(prec,mld_sub_fillin_, prec_choice%fill, info)
call mld_precset(prec,mld_sub_iluthrs_, prec_choice%thr, info)
end if end if
! building the preconditioner ! building the preconditioner
@ -278,7 +288,6 @@ program df_sample
goto 9999 goto 9999
end if end if
call psb_amx(ictxt, tprec) call psb_amx(ictxt, tprec)
if(iam == psb_root_) then if(iam == psb_root_) then
@ -401,7 +410,9 @@ contains
call read_data(prec%solve,5) ! Factorization type: ILU, SuperLU, UMFPACK. call read_data(prec%solve,5) ! Factorization type: ILU, SuperLU, UMFPACK.
call read_data(prec%fill,5) ! Fill-in for factorization call read_data(prec%fill,5) ! Fill-in for factorization
call read_data(prec%thr,5) ! Threshold for fact. ILU(T) call read_data(prec%thr,5) ! Threshold for fact. ILU(T)
call read_data(prec%jsweeps,5) ! Jacobi sweeps for PJAC
if (psb_toupper(prec%prec) == 'ML') then if (psb_toupper(prec%prec) == 'ML') then
call read_data(prec%smther,5) ! Smoother type.
call read_data(prec%nlev,5) ! Number of levels in multilevel prec. call read_data(prec%nlev,5) ! Number of levels in multilevel prec.
call read_data(prec%aggrkind,5) ! smoothed/raw aggregatin call read_data(prec%aggrkind,5) ! smoothed/raw aggregatin
call read_data(prec%aggr_alg,5) ! local or global aggregation call read_data(prec%aggr_alg,5) ! local or global aggregation
@ -437,7 +448,9 @@ contains
call psb_bcast(icontxt,prec%solve) ! Factorization type: ILU, SuperLU, UMFPACK. call psb_bcast(icontxt,prec%solve) ! Factorization type: ILU, SuperLU, UMFPACK.
call psb_bcast(icontxt,prec%fill) ! Fill-in for factorization call psb_bcast(icontxt,prec%fill) ! Fill-in for factorization
call psb_bcast(icontxt,prec%thr) ! Threshold for fact. ILU(T) call psb_bcast(icontxt,prec%thr) ! Threshold for fact. ILU(T)
call psb_bcast(icontxt,prec%jsweeps) ! Jacobi sweeps
if (psb_toupper(prec%prec) == 'ML') then if (psb_toupper(prec%prec) == 'ML') then
call psb_bcast(icontxt,prec%smther) ! Smoother type.
call psb_bcast(icontxt,prec%nlev) ! Number of levels in multilevel prec. call psb_bcast(icontxt,prec%nlev) ! Number of levels in multilevel prec.
call psb_bcast(icontxt,prec%aggrkind) ! smoothed/raw aggregatin call psb_bcast(icontxt,prec%aggrkind) ! smoothed/raw aggregatin
call psb_bcast(icontxt,prec%aggr_alg) ! local or global aggregation call psb_bcast(icontxt,prec%aggr_alg) ! local or global aggregation

@ -86,8 +86,8 @@ program ppde
real(psb_dpk_) :: t1, t2, tprec real(psb_dpk_) :: t1, t2, tprec
! sparse matrix and preconditioner ! sparse matrix and preconditioner
type(psb_d_sparse_mat) :: a type(psb_dspmat_type) :: a
type(mld_dprec_type) :: prec type(mld_dprec_type) :: prec
! descriptor ! descriptor
type(psb_desc_type) :: desc_a type(psb_desc_type) :: desc_a
! dense matrices ! dense matrices
@ -351,7 +351,7 @@ contains
call psb_bcast(ictxt,prectype%solve) ! Factorization type: ILU, SuperLU, UMFPACK. call psb_bcast(ictxt,prectype%solve) ! Factorization type: ILU, SuperLU, UMFPACK.
call psb_bcast(ictxt,prectype%fill1) ! Fill-in for factorization 1 call psb_bcast(ictxt,prectype%fill1) ! Fill-in for factorization 1
call psb_bcast(ictxt,prectype%thr1) ! Threshold for fact. 1 ILU(T) call psb_bcast(ictxt,prectype%thr1) ! Threshold for fact. 1 ILU(T)
call psb_bcast(ictxt,prectype%jsweeps) ! Threshold for fact. 1 ILU(T) call psb_bcast(ictxt,prectype%jsweeps) ! Jacobi sweeps
if (psb_toupper(prectype%prec) == 'ML') then if (psb_toupper(prectype%prec) == 'ML') then
call psb_bcast(ictxt,prectype%smther) ! Smoother type. call psb_bcast(ictxt,prectype%smther) ! Smoother type.
call psb_bcast(ictxt,prectype%nlev) ! Number of levels in multilevel prec. call psb_bcast(ictxt,prectype%nlev) ! Number of levels in multilevel prec.
@ -431,7 +431,7 @@ contains
type(psb_desc_type) :: desc_a type(psb_desc_type) :: desc_a
integer :: ictxt, info integer :: ictxt, info
character :: afmt*5 character :: afmt*5
type(psb_d_sparse_mat) :: a type(psb_dspmat_type) :: a
real(psb_dpk_) :: zt(nb),x,y,z real(psb_dpk_) :: zt(nb),x,y,z
integer :: m,n,nnz,glob_row,nlr,i,ii,ib,k integer :: m,n,nnz,glob_row,nlr,i,ii,ib,k
integer :: ix,iy,iz,ia,indx_owner integer :: ix,iy,iz,ia,indx_owner

@ -86,7 +86,7 @@ program spde
real(psb_dpk_) :: t1, t2, tprec real(psb_dpk_) :: t1, t2, tprec
! sparse matrix and preconditioner ! sparse matrix and preconditioner
type(psb_s_sparse_mat) :: a type(psb_sspmat_type) :: a
type(mld_sprec_type) :: prec type(mld_sprec_type) :: prec
! descriptor ! descriptor
type(psb_desc_type) :: desc_a type(psb_desc_type) :: desc_a
@ -418,7 +418,7 @@ contains
type(psb_desc_type) :: desc_a type(psb_desc_type) :: desc_a
integer :: ictxt, info integer :: ictxt, info
character :: afmt*5 character :: afmt*5
type(psb_s_sparse_mat) :: a type(psb_sspmat_type) :: a
real(psb_spk_) :: zt(nb),x,y,z real(psb_spk_) :: zt(nb),x,y,z
integer :: m,n,nnz,glob_row,nlr,i,ii,ib,k integer :: m,n,nnz,glob_row,nlr,i,ii,ib,k
integer :: ix,iy,iz,ia,indx_owner integer :: ix,iy,iz,ia,indx_owner

Loading…
Cancel
Save