mld2p4-2:

Changes to handle long integers.
stopcriterion
Salvatore Filippone 12 years ago
parent 0d9cbcb083
commit 88850f67a5

@ -37,6 +37,7 @@
!!$ !!$
!!$ !!$
module data_input module data_input
use psb_base_mod, only : psb_spk_, psb_dpk_, psb_ipk_
interface read_data interface read_data
module procedure read_char, read_int,& module procedure read_char, read_int,&
@ -55,7 +56,7 @@ contains
subroutine read_char(val,file,marker) subroutine read_char(val,file,marker)
character(len=*), intent(out) :: val character(len=*), intent(out) :: val
integer, intent(in) :: file integer(psb_ipk_), intent(in) :: file
character(len=1), optional, intent(in) :: marker character(len=1), optional, intent(in) :: marker
read(file,'(a)')charbuf read(file,'(a)')charbuf
@ -64,8 +65,8 @@ contains
end subroutine read_char end subroutine read_char
subroutine read_int(val,file,marker) subroutine read_int(val,file,marker)
integer, intent(out) :: val integer(psb_ipk_), intent(out) :: val
integer, intent(in) :: file integer(psb_ipk_), intent(in) :: file
character(len=1), optional, intent(in) :: marker character(len=1), optional, intent(in) :: marker
read(file,'(a)')charbuf read(file,'(a)')charbuf
@ -73,9 +74,8 @@ contains
end subroutine read_int end subroutine read_int
subroutine read_single(val,file,marker) subroutine read_single(val,file,marker)
use psb_base_mod
real(psb_spk_), intent(out) :: val real(psb_spk_), intent(out) :: val
integer, intent(in) :: file integer(psb_ipk_), intent(in) :: file
character(len=1), optional, intent(in) :: marker character(len=1), optional, intent(in) :: marker
read(file,'(a)')charbuf read(file,'(a)')charbuf
@ -83,9 +83,8 @@ contains
end subroutine read_single end subroutine read_single
subroutine read_double(val,file,marker) subroutine read_double(val,file,marker)
use psb_base_mod
real(psb_dpk_), intent(out) :: val real(psb_dpk_), intent(out) :: val
integer, intent(in) :: file integer(psb_ipk_), intent(in) :: file
character(len=1), optional, intent(in) :: marker character(len=1), optional, intent(in) :: marker
read(file,'(a)')charbuf read(file,'(a)')charbuf
@ -99,7 +98,7 @@ contains
character(len=1), optional, intent(in) :: marker character(len=1), optional, intent(in) :: marker
character(len=1) :: marker_ character(len=1) :: marker_
character(len=1024) :: charbuf character(len=1024) :: charbuf
integer :: idx integer(psb_ipk_) :: idx
if (present(marker)) then if (present(marker)) then
marker_ = marker marker_ = marker
else else
@ -113,12 +112,12 @@ contains
end subroutine string_read_char end subroutine string_read_char
subroutine string_read_int(val,file,marker) subroutine string_read_int(val,file,marker)
integer, intent(out) :: val integer(psb_ipk_), intent(out) :: val
character(len=*), intent(in) :: file character(len=*), intent(in) :: file
character(len=1), optional, intent(in) :: marker character(len=1), optional, intent(in) :: marker
character(len=1) :: marker_ character(len=1) :: marker_
character(len=1024) :: charbuf character(len=1024) :: charbuf
integer :: idx integer(psb_ipk_) :: idx
if (present(marker)) then if (present(marker)) then
marker_ = marker marker_ = marker
else else
@ -131,13 +130,12 @@ contains
read(charbuf(1:idx-1),*) val read(charbuf(1:idx-1),*) val
end subroutine string_read_int end subroutine string_read_int
subroutine string_read_single(val,file,marker) subroutine string_read_single(val,file,marker)
use psb_base_mod
real(psb_spk_), intent(out) :: val real(psb_spk_), intent(out) :: val
character(len=*), intent(in) :: file character(len=*), intent(in) :: file
character(len=1), optional, intent(in) :: marker character(len=1), optional, intent(in) :: marker
character(len=1) :: marker_ character(len=1) :: marker_
character(len=1024) :: charbuf character(len=1024) :: charbuf
integer :: idx integer(psb_ipk_) :: idx
if (present(marker)) then if (present(marker)) then
marker_ = marker marker_ = marker
else else
@ -150,13 +148,12 @@ contains
read(charbuf(1:idx-1),*) val read(charbuf(1:idx-1),*) val
end subroutine string_read_single end subroutine string_read_single
subroutine string_read_double(val,file,marker) subroutine string_read_double(val,file,marker)
use psb_base_mod
real(psb_dpk_), intent(out) :: val real(psb_dpk_), intent(out) :: val
character(len=*), intent(in) :: file character(len=*), intent(in) :: file
character(len=1), optional, intent(in) :: marker character(len=1), optional, intent(in) :: marker
character(len=1) :: marker_ character(len=1) :: marker_
character(len=1024) :: charbuf character(len=1024) :: charbuf
integer :: idx integer(psb_ipk_) :: idx
if (present(marker)) then if (present(marker)) then
marker_ = marker marker_ = marker
else else
@ -174,7 +171,7 @@ contains
character(len=1), optional, intent(in) :: marker character(len=1), optional, intent(in) :: marker
character(len=len(string)) :: trim_string character(len=len(string)) :: trim_string
character(len=1) :: marker_ character(len=1) :: marker_
integer :: idx integer(psb_ipk_) :: idx
if (present(marker)) then if (present(marker)) then
marker_ = marker marker_ = marker
else else

@ -140,39 +140,39 @@ program ppde2d
integer(psb_ipk_) :: ictxt, iam, np integer(psb_ipk_) :: ictxt, iam, np
! solver parameters ! solver parameters
integer :: iter, itmax,itrace, istopc, irst, nlv integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst, nlv
integer(psb_long_int_k_) :: amatsize, precsize, descsize integer(psb_long_int_k_) :: amatsize, precsize, descsize
real(psb_dpk_) :: err, eps real(psb_dpk_) :: err, eps
type precdata type precdata
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(psb_ipk_) :: novr ! number of overlap layers
integer :: jsweeps ! Jacobi/smoother sweeps integer(psb_ipk_) :: 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 ! Solver type: ILU, SuperLU, UMFPACK. character(len=16) :: solve ! Solver type: ILU, SuperLU, UMFPACK.
integer :: fill1 ! Fill-in for factorization 1 integer(psb_ipk_) :: fill1 ! Fill-in for factorization 1
real(psb_dpk_) :: thr1 ! Threshold for fact. 1 ILU(T) real(psb_dpk_) :: thr1 ! Threshold for fact. 1 ILU(T)
character(len=16) :: smther ! Smoother character(len=16) :: smther ! Smoother
integer :: nlev ! Number of levels in multilevel prec. integer(psb_ipk_) :: nlev ! Number of levels in multilevel prec.
character(len=16) :: aggrkind ! smoothed/raw aggregatin character(len=16) :: aggrkind ! smoothed/raw aggregatin
character(len=16) :: aggr_alg ! local or global aggregation character(len=16) :: aggr_alg ! local or global aggregation
character(len=16) :: mltype ! additive or multiplicative 2nd level prec character(len=16) :: mltype ! additive or multiplicative 2nd level prec
character(len=16) :: smthpos ! side: pre, post, both smoothing character(len=16) :: smthpos ! side: pre, post, both smoothing
integer :: csize ! aggregation size at which to stop. integer(psb_ipk_) :: csize ! aggregation size at which to stop.
character(len=16) :: cmat ! coarse mat character(len=16) :: cmat ! coarse mat
character(len=16) :: csolve ! Coarse solver: bjac, umf, slu, sludist character(len=16) :: csolve ! Coarse solver: bjac, umf, slu, sludist
character(len=16) :: csbsolve ! Coarse subsolver: ILU, ILU(T), SuperLU, UMFPACK. character(len=16) :: csbsolve ! Coarse subsolver: ILU, ILU(T), SuperLU, UMFPACK.
integer :: cfill ! Fill-in for factorization 1 integer(psb_ipk_) :: cfill ! Fill-in for factorization 1
real(psb_dpk_) :: cthres ! Threshold for fact. 1 ILU(T) real(psb_dpk_) :: cthres ! Threshold for fact. 1 ILU(T)
integer :: cjswp ! Jacobi sweeps integer(psb_ipk_) :: cjswp ! Jacobi sweeps
real(psb_dpk_) :: athres ! smoother aggregation threshold real(psb_dpk_) :: athres ! smoother aggregation threshold
end type precdata end type precdata
type(precdata) :: prectype type(precdata) :: prectype
type(psb_d_coo_sparse_mat) :: acoo type(psb_d_coo_sparse_mat) :: acoo
! other variables ! other variables
integer :: info, i integer(psb_ipk_) :: info, i
character(len=20) :: name,ch_err character(len=20) :: name,ch_err
info=psb_success_ info=psb_success_
@ -188,7 +188,7 @@ program ppde2d
endif endif
if(psb_get_errstatus() /= 0) goto 9999 if(psb_get_errstatus() /= 0) goto 9999
name='pde2d90' name='pde2d90'
call psb_set_errverbosity(2) call psb_set_errverbosity(itwo)
! !
! Hello world ! Hello world
! !
@ -346,49 +346,49 @@ contains
! get iteration parameters from standard input ! get iteration parameters from standard input
! !
subroutine get_parms(ictxt,kmethd,prectype,afmt,idim,istopc,itmax,itrace,irst,eps) subroutine get_parms(ictxt,kmethd,prectype,afmt,idim,istopc,itmax,itrace,irst,eps)
integer :: ictxt integer(psb_ipk_) :: ictxt
type(precdata) :: prectype type(precdata) :: prectype
character(len=*) :: kmethd, afmt character(len=*) :: kmethd, afmt
integer :: idim, istopc,itmax,itrace,irst integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst
integer :: np, iam, info integer(psb_ipk_) :: np, iam, info
real(psb_dpk_) :: eps real(psb_dpk_) :: eps
character(len=20) :: buffer character(len=20) :: buffer
call psb_info(ictxt, iam, np) call psb_info(ictxt, iam, np)
if (iam == psb_root_) then if (iam == psb_root_) then
call read_data(kmethd,5) call read_data(kmethd,psb_inp_unit)
call read_data(afmt,5) call read_data(afmt,psb_inp_unit)
call read_data(idim,5) call read_data(idim,psb_inp_unit)
call read_data(istopc,5) call read_data(istopc,psb_inp_unit)
call read_data(itmax,5) call read_data(itmax,psb_inp_unit)
call read_data(itrace,5) call read_data(itrace,psb_inp_unit)
call read_data(irst,5) call read_data(irst,psb_inp_unit)
call read_data(eps,5) call read_data(eps,psb_inp_unit)
call read_data(prectype%descr,5) ! verbose description of the prec call read_data(prectype%descr,psb_inp_unit) ! verbose description of the prec
call read_data(prectype%prec,5) ! overall prectype call read_data(prectype%prec,psb_inp_unit) ! overall prectype
call read_data(prectype%novr,5) ! number of overlap layers call read_data(prectype%novr,psb_inp_unit) ! number of overlap layers
call read_data(prectype%restr,5) ! restriction over application of as call read_data(prectype%restr,psb_inp_unit) ! restriction over application of as
call read_data(prectype%prol,5) ! prolongation over application of as call read_data(prectype%prol,psb_inp_unit) ! prolongation over application of as
call read_data(prectype%solve,5) ! Factorization type: ILU, SuperLU, UMFPACK. call read_data(prectype%solve,psb_inp_unit) ! Factorization type: ILU, SuperLU, UMFPACK.
call read_data(prectype%fill1,5) ! Fill-in for factorization 1 call read_data(prectype%fill1,psb_inp_unit) ! Fill-in for factorization 1
call read_data(prectype%thr1,5) ! Threshold for fact. 1 ILU(T) call read_data(prectype%thr1,psb_inp_unit) ! Threshold for fact. 1 ILU(T)
call read_data(prectype%jsweeps,5) ! Jacobi sweeps for PJAC call read_data(prectype%jsweeps,psb_inp_unit) ! Jacobi sweeps for PJAC
if (psb_toupper(prectype%prec) == 'ML') then if (psb_toupper(prectype%prec) == 'ML') then
call read_data(prectype%smther,5) ! Smoother type. call read_data(prectype%smther,psb_inp_unit) ! Smoother type.
call read_data(prectype%nlev,5) ! Number of levels in multilevel prec. call read_data(prectype%nlev,psb_inp_unit) ! Number of levels in multilevel prec.
call read_data(prectype%aggrkind,5) ! smoothed/raw aggregatin call read_data(prectype%aggrkind,psb_inp_unit) ! smoothed/raw aggregatin
call read_data(prectype%aggr_alg,5) ! local or global aggregation call read_data(prectype%aggr_alg,psb_inp_unit) ! local or global aggregation
call read_data(prectype%mltype,5) ! additive or multiplicative 2nd level prec call read_data(prectype%mltype,psb_inp_unit) ! additive or multiplicative 2nd level prec
call read_data(prectype%smthpos,5) ! side: pre, post, both smoothing call read_data(prectype%smthpos,psb_inp_unit) ! side: pre, post, both smoothing
call read_data(prectype%cmat,5) ! coarse mat call read_data(prectype%cmat,psb_inp_unit) ! coarse mat
call read_data(prectype%csolve,5) ! Factorization type: ILU, SuperLU, UMFPACK. call read_data(prectype%csolve,psb_inp_unit) ! Factorization type: ILU, SuperLU, UMFPACK.
call read_data(prectype%csbsolve,5) ! Factorization type: ILU, SuperLU, UMFPACK. call read_data(prectype%csbsolve,psb_inp_unit) ! Factorization type: ILU, SuperLU, UMFPACK.
call read_data(prectype%cfill,5) ! Fill-in for factorization 1 call read_data(prectype%cfill,psb_inp_unit) ! Fill-in for factorization 1
call read_data(prectype%cthres,5) ! Threshold for fact. 1 ILU(T) call read_data(prectype%cthres,psb_inp_unit) ! Threshold for fact. 1 ILU(T)
call read_data(prectype%cjswp,5) ! Jacobi sweeps call read_data(prectype%cjswp,psb_inp_unit) ! Jacobi sweeps
call read_data(prectype%athres,5) ! smoother aggr thresh call read_data(prectype%athres,psb_inp_unit) ! smoother aggr thresh
call read_data(prectype%csize,5) ! coarse size call read_data(prectype%csize,psb_inp_unit) ! coarse size
end if end if
end if end if
@ -446,7 +446,7 @@ contains
! print an error message ! print an error message
! !
subroutine pr_usage(iout) subroutine pr_usage(iout)
integer :: iout integer(psb_ipk_) :: iout
write(iout,*)'incorrect parameter(s) found' write(iout,*)'incorrect parameter(s) found'
write(iout,*)' usage: pde90 methd prec dim & write(iout,*)' usage: pde90 methd prec dim &
&[istop itmax itrace]' &[istop itmax itrace]'

@ -135,7 +135,7 @@ program ppde3d
! input parameters ! input parameters
character(len=20) :: kmethd, ptype character(len=20) :: kmethd, ptype
character(len=5) :: afmt character(len=5) :: afmt
integer :: idim integer(psb_ipk_) :: idim
! miscellaneous ! miscellaneous
real(psb_dpk_), parameter :: one = 1.d0 real(psb_dpk_), parameter :: one = 1.d0
@ -147,44 +147,44 @@ program ppde3d
! descriptor ! descriptor
type(psb_desc_type) :: desc_a type(psb_desc_type) :: desc_a
! dense matrices ! dense matrices
type(psb_d_vect_type) :: x,b type(psb_d_vect_type) :: x,b
! blacs parameters ! blacs parameters
integer :: ictxt, iam, np integer(psb_ipk_) :: ictxt, iam, np
! solver parameters ! solver parameters
integer :: iter, itmax,itrace, istopc, irst, nlv integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst, nlv
integer(psb_long_int_k_) :: amatsize, precsize, descsize integer(psb_long_int_k_) :: amatsize, precsize, descsize
real(psb_dpk_) :: err, eps real(psb_dpk_) :: err, eps
type precdata type precdata
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(psb_ipk_) :: novr ! number of overlap layers
integer :: jsweeps ! Jacobi/smoother sweeps integer(psb_ipk_) :: 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 ! Solver type: ILU, SuperLU, UMFPACK. character(len=16) :: solve ! Solver type: ILU, SuperLU, UMFPACK.
integer :: fill1 ! Fill-in for factorization 1 integer(psb_ipk_) :: fill1 ! Fill-in for factorization 1
real(psb_dpk_) :: thr1 ! Threshold for fact. 1 ILU(T) real(psb_dpk_) :: thr1 ! Threshold for fact. 1 ILU(T)
character(len=16) :: smther ! Smoother character(len=16) :: smther ! Smoother
integer :: nlev ! Number of levels in multilevel prec. integer(psb_ipk_) :: nlev ! Number of levels in multilevel prec.
character(len=16) :: aggrkind ! smoothed/raw aggregatin character(len=16) :: aggrkind ! smoothed/raw aggregatin
character(len=16) :: aggr_alg ! local or global aggregation character(len=16) :: aggr_alg ! local or global aggregation
character(len=16) :: mltype ! additive or multiplicative 2nd level prec character(len=16) :: mltype ! additive or multiplicative 2nd level prec
character(len=16) :: smthpos ! side: pre, post, both smoothing character(len=16) :: smthpos ! side: pre, post, both smoothing
integer :: csize ! aggregation size at which to stop. integer(psb_ipk_) :: csize ! aggregation size at which to stop.
character(len=16) :: cmat ! coarse mat character(len=16) :: cmat ! coarse mat
character(len=16) :: csolve ! Coarse solver: bjac, umf, slu, sludist character(len=16) :: csolve ! Coarse solver: bjac, umf, slu, sludist
character(len=16) :: csbsolve ! Coarse subsolver: ILU, ILU(T), SuperLU, UMFPACK. character(len=16) :: csbsolve ! Coarse subsolver: ILU, ILU(T), SuperLU, UMFPACK.
integer :: cfill ! Fill-in for factorization 1 integer(psb_ipk_) :: cfill ! Fill-in for factorization 1
real(psb_dpk_) :: cthres ! Threshold for fact. 1 ILU(T) real(psb_dpk_) :: cthres ! Threshold for fact. 1 ILU(T)
integer :: cjswp ! Jacobi sweeps integer(psb_ipk_) :: cjswp ! Jacobi sweeps
real(psb_dpk_) :: athres ! smoother aggregation threshold real(psb_dpk_) :: athres ! smoother aggregation threshold
end type precdata end type precdata
type(precdata) :: prectype type(precdata) :: prectype
type(psb_d_coo_sparse_mat) :: acoo type(psb_d_coo_sparse_mat) :: acoo
! other variables ! other variables
integer :: info integer(psb_ipk_) :: info
character(len=20) :: name,ch_err character(len=20) :: name,ch_err
info=psb_success_ info=psb_success_
@ -200,7 +200,7 @@ program ppde3d
endif endif
if(psb_get_errstatus() /= 0) goto 9999 if(psb_get_errstatus() /= 0) goto 9999
name='pde90' name='pde90'
call psb_set_errverbosity(2) call psb_set_errverbosity(itwo)
! !
! Hello world ! Hello world
! !
@ -361,49 +361,49 @@ contains
! get iteration parameters from standard input ! get iteration parameters from standard input
! !
subroutine get_parms(ictxt,kmethd,prectype,afmt,idim,istopc,itmax,itrace,irst,eps) subroutine get_parms(ictxt,kmethd,prectype,afmt,idim,istopc,itmax,itrace,irst,eps)
integer :: ictxt integer(psb_ipk_) :: ictxt
type(precdata) :: prectype type(precdata) :: prectype
character(len=*) :: kmethd, afmt character(len=*) :: kmethd, afmt
integer :: idim, istopc,itmax,itrace,irst integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst
integer :: np, iam, info integer(psb_ipk_) :: np, iam, info
real(psb_dpk_) :: eps real(psb_dpk_) :: eps
character(len=20) :: buffer character(len=20) :: buffer
call psb_info(ictxt, iam, np) call psb_info(ictxt, iam, np)
if (iam == psb_root_) then if (iam == psb_root_) then
call read_data(kmethd,5) call read_data(kmethd,psb_inp_unit)
call read_data(afmt,5) call read_data(afmt,psb_inp_unit)
call read_data(idim,5) call read_data(idim,psb_inp_unit)
call read_data(istopc,5) call read_data(istopc,psb_inp_unit)
call read_data(itmax,5) call read_data(itmax,psb_inp_unit)
call read_data(itrace,5) call read_data(itrace,psb_inp_unit)
call read_data(irst,5) call read_data(irst,psb_inp_unit)
call read_data(eps,5) call read_data(eps,psb_inp_unit)
call read_data(prectype%descr,5) ! verbose description of the prec call read_data(prectype%descr,psb_inp_unit) ! verbose description of the prec
call read_data(prectype%prec,5) ! overall prectype call read_data(prectype%prec,psb_inp_unit) ! overall prectype
call read_data(prectype%novr,5) ! number of overlap layers call read_data(prectype%novr,psb_inp_unit) ! number of overlap layers
call read_data(prectype%restr,5) ! restriction over application of as call read_data(prectype%restr,psb_inp_unit) ! restriction over application of as
call read_data(prectype%prol,5) ! prolongation over application of as call read_data(prectype%prol,psb_inp_unit) ! prolongation over application of as
call read_data(prectype%solve,5) ! Factorization type: ILU, SuperLU, UMFPACK. call read_data(prectype%solve,psb_inp_unit) ! Factorization type: ILU, SuperLU, UMFPACK.
call read_data(prectype%fill1,5) ! Fill-in for factorization 1 call read_data(prectype%fill1,psb_inp_unit) ! Fill-in for factorization 1
call read_data(prectype%thr1,5) ! Threshold for fact. 1 ILU(T) call read_data(prectype%thr1,psb_inp_unit) ! Threshold for fact. 1 ILU(T)
call read_data(prectype%jsweeps,5) ! Jacobi sweeps for PJAC call read_data(prectype%jsweeps,psb_inp_unit) ! Jacobi sweeps for PJAC
if (psb_toupper(prectype%prec) == 'ML') then if (psb_toupper(prectype%prec) == 'ML') then
call read_data(prectype%smther,5) ! Smoother type. call read_data(prectype%smther,psb_inp_unit) ! Smoother type.
call read_data(prectype%nlev,5) ! Number of levels in multilevel prec. call read_data(prectype%nlev,psb_inp_unit) ! Number of levels in multilevel prec.
call read_data(prectype%aggrkind,5) ! smoothed/raw aggregatin call read_data(prectype%aggrkind,psb_inp_unit) ! smoothed/raw aggregatin
call read_data(prectype%aggr_alg,5) ! local or global aggregation call read_data(prectype%aggr_alg,psb_inp_unit) ! local or global aggregation
call read_data(prectype%mltype,5) ! additive or multiplicative 2nd level prec call read_data(prectype%mltype,psb_inp_unit) ! additive or multiplicative 2nd level prec
call read_data(prectype%smthpos,5) ! side: pre, post, both smoothing call read_data(prectype%smthpos,psb_inp_unit) ! side: pre, post, both smoothing
call read_data(prectype%cmat,5) ! coarse mat call read_data(prectype%cmat,psb_inp_unit) ! coarse mat
call read_data(prectype%csolve,5) ! Factorization type: ILU, SuperLU, UMFPACK. call read_data(prectype%csolve,psb_inp_unit) ! Factorization type: ILU, SuperLU, UMFPACK.
call read_data(prectype%csbsolve,5) ! Factorization type: ILU, SuperLU, UMFPACK. call read_data(prectype%csbsolve,psb_inp_unit) ! Factorization type: ILU, SuperLU, UMFPACK.
call read_data(prectype%cfill,5) ! Fill-in for factorization 1 call read_data(prectype%cfill,psb_inp_unit) ! Fill-in for factorization 1
call read_data(prectype%cthres,5) ! Threshold for fact. 1 ILU(T) call read_data(prectype%cthres,psb_inp_unit) ! Threshold for fact. 1 ILU(T)
call read_data(prectype%cjswp,5) ! Jacobi sweeps call read_data(prectype%cjswp,psb_inp_unit) ! Jacobi sweeps
call read_data(prectype%athres,5) ! smoother aggr thresh call read_data(prectype%athres,psb_inp_unit) ! smoother aggr thresh
call read_data(prectype%csize,5) ! coarse size call read_data(prectype%csize,psb_inp_unit) ! coarse size
end if end if
end if end if
@ -461,7 +461,7 @@ contains
! print an error message ! print an error message
! !
subroutine pr_usage(iout) subroutine pr_usage(iout)
integer :: iout integer(psb_ipk_) :: iout
write(iout,*)'incorrect parameter(s) found' write(iout,*)'incorrect parameter(s) found'
write(iout,*)' usage: pde90 methd prec dim & write(iout,*)' usage: pde90 methd prec dim &
&[istop itmax itrace]' &[istop itmax itrace]'

@ -1,6 +1,6 @@
BICGSTAB ! Iterative method: BiCGSTAB BiCG CGS RGMRES BiCGSTABL CG BICGSTAB ! Iterative method: BiCGSTAB BiCG CGS RGMRES BiCGSTABL CG
CSR ! Storage format CSR COO JAD CSR ! Storage format CSR COO JAD
006 ! IDIM; domain size is idim**3 040 ! IDIM; domain size is idim**3
2 ! ISTOPC 2 ! ISTOPC
0100 ! ITMAX 0100 ! ITMAX
-1 ! ITRACE -1 ! ITRACE

@ -123,7 +123,7 @@ program spde2d
! input parameters ! input parameters
character(len=20) :: kmethd, ptype character(len=20) :: kmethd, ptype
character(len=5) :: afmt character(len=5) :: afmt
integer :: idim integer(psb_ipk_) :: idim
! miscellaneous ! miscellaneous
real(psb_spk_), parameter :: one = 1.0 real(psb_spk_), parameter :: one = 1.0
@ -135,44 +135,44 @@ program spde2d
! descriptor ! descriptor
type(psb_desc_type) :: desc_a type(psb_desc_type) :: desc_a
! dense matrices ! dense matrices
type(psb_s_vect_type) :: x,b type(psb_s_vect_type) :: x,b
! blacs parameters ! blacs parameters
integer :: ictxt, iam, np integer(psb_ipk_) :: ictxt, iam, np
! solver parameters ! solver parameters
integer :: iter, itmax,itrace, istopc, irst, nlv integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst, nlv
integer(psb_long_int_k_) :: amatsize, precsize, descsize integer(psb_long_int_k_) :: amatsize, precsize, descsize
real(psb_spk_) :: err, eps real(psb_spk_) :: err, eps
type precdata type precdata
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(psb_ipk_) :: novr ! number of overlap layers
integer :: jsweeps ! Jacobi/smoother sweeps integer(psb_ipk_) :: 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 ! Solver type: ILU, SuperLU, UMFPACK. character(len=16) :: solve ! Solver type: ILU, SuperLU, UMFPACK.
integer :: fill1 ! Fill-in for factorization 1 integer(psb_ipk_) :: fill1 ! Fill-in for factorization 1
real(psb_spk_) :: thr1 ! Threshold for fact. 1 ILU(T) real(psb_spk_) :: thr1 ! Threshold for fact. 1 ILU(T)
character(len=16) :: smther ! Smoother character(len=16) :: smther ! Smoother
integer :: nlev ! Number of levels in multilevel prec. integer(psb_ipk_) :: nlev ! Number of levels in multilevel prec.
character(len=16) :: aggrkind ! smoothed/raw aggregatin character(len=16) :: aggrkind ! smoothed/raw aggregatin
character(len=16) :: aggr_alg ! local or global aggregation character(len=16) :: aggr_alg ! local or global aggregation
character(len=16) :: mltype ! additive or multiplicative 2nd level prec character(len=16) :: mltype ! additive or multiplicative 2nd level prec
character(len=16) :: smthpos ! side: pre, post, both smoothing character(len=16) :: smthpos ! side: pre, post, both smoothing
integer :: csize ! aggregation size at which to stop. integer(psb_ipk_) :: csize ! aggregation size at which to stop.
character(len=16) :: cmat ! coarse mat character(len=16) :: cmat ! coarse mat
character(len=16) :: csolve ! Coarse solver: bjac, umf, slu, sludist character(len=16) :: csolve ! Coarse solver: bjac, umf, slu, sludist
character(len=16) :: csbsolve ! Coarse subsolver: ILU, ILU(T), SuperLU, UMFPACK. character(len=16) :: csbsolve ! Coarse subsolver: ILU, ILU(T), SuperLU, UMFPACK.
integer :: cfill ! Fill-in for factorization 1 integer(psb_ipk_) :: cfill ! Fill-in for factorization 1
real(psb_spk_) :: cthres ! Threshold for fact. 1 ILU(T) real(psb_spk_) :: cthres ! Threshold for fact. 1 ILU(T)
integer :: cjswp ! Jacobi sweeps integer(psb_ipk_) :: cjswp ! Jacobi sweeps
real(psb_spk_) :: athres ! smoother aggregation threshold real(psb_spk_) :: athres ! smoother aggregation threshold
end type precdata end type precdata
type(precdata) :: prectype type(precdata) :: prectype
type(psb_s_coo_sparse_mat) :: acoo type(psb_s_coo_sparse_mat) :: acoo
! other variables ! other variables
integer :: info integer(psb_ipk_) :: info
character(len=20) :: name,ch_err character(len=20) :: name,ch_err
info=psb_success_ info=psb_success_
@ -188,7 +188,7 @@ program spde2d
endif endif
if(psb_get_errstatus() /= 0) goto 9999 if(psb_get_errstatus() /= 0) goto 9999
name='pde2d90' name='pde2d90'
call psb_set_errverbosity(2) call psb_set_errverbosity(itwo)
! !
! Hello world ! Hello world
! !
@ -346,49 +346,49 @@ contains
! get iteration parameters from standard input ! get iteration parameters from standard input
! !
subroutine get_parms(ictxt,kmethd,prectype,afmt,idim,istopc,itmax,itrace,irst,eps) subroutine get_parms(ictxt,kmethd,prectype,afmt,idim,istopc,itmax,itrace,irst,eps)
integer :: ictxt integer(psb_ipk_) :: ictxt
type(precdata) :: prectype type(precdata) :: prectype
character(len=*) :: kmethd, afmt character(len=*) :: kmethd, afmt
integer :: idim, istopc,itmax,itrace,irst integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst
integer :: np, iam, info integer(psb_ipk_) :: np, iam, info
real(psb_spk_) :: eps real(psb_spk_) :: eps
character(len=20) :: buffer character(len=20) :: buffer
call psb_info(ictxt, iam, np) call psb_info(ictxt, iam, np)
if (iam == psb_root_) then if (iam == psb_root_) then
call read_data(kmethd,5) call read_data(kmethd,psb_inp_unit)
call read_data(afmt,5) call read_data(afmt,psb_inp_unit)
call read_data(idim,5) call read_data(idim,psb_inp_unit)
call read_data(istopc,5) call read_data(istopc,psb_inp_unit)
call read_data(itmax,5) call read_data(itmax,psb_inp_unit)
call read_data(itrace,5) call read_data(itrace,psb_inp_unit)
call read_data(irst,5) call read_data(irst,psb_inp_unit)
call read_data(eps,5) call read_data(eps,psb_inp_unit)
call read_data(prectype%descr,5) ! verbose description of the prec call read_data(prectype%descr,psb_inp_unit) ! verbose description of the prec
call read_data(prectype%prec,5) ! overall prectype call read_data(prectype%prec,psb_inp_unit) ! overall prectype
call read_data(prectype%novr,5) ! number of overlap layers call read_data(prectype%novr,psb_inp_unit) ! number of overlap layers
call read_data(prectype%restr,5) ! restriction over application of as call read_data(prectype%restr,psb_inp_unit) ! restriction over application of as
call read_data(prectype%prol,5) ! prolongation over application of as call read_data(prectype%prol,psb_inp_unit) ! prolongation over application of as
call read_data(prectype%solve,5) ! Factorization type: ILU, SuperLU, UMFPACK. call read_data(prectype%solve,psb_inp_unit) ! Factorization type: ILU, SuperLU, UMFPACK.
call read_data(prectype%fill1,5) ! Fill-in for factorization 1 call read_data(prectype%fill1,psb_inp_unit) ! Fill-in for factorization 1
call read_data(prectype%thr1,5) ! Threshold for fact. 1 ILU(T) call read_data(prectype%thr1,psb_inp_unit) ! Threshold for fact. 1 ILU(T)
call read_data(prectype%jsweeps,5) ! Jacobi sweeps for PJAC call read_data(prectype%jsweeps,psb_inp_unit) ! Jacobi sweeps for PJAC
if (psb_toupper(prectype%prec) == 'ML') then if (psb_toupper(prectype%prec) == 'ML') then
call read_data(prectype%smther,5) ! Smoother type. call read_data(prectype%smther,psb_inp_unit) ! Smoother type.
call read_data(prectype%nlev,5) ! Number of levels in multilevel prec. call read_data(prectype%nlev,psb_inp_unit) ! Number of levels in multilevel prec.
call read_data(prectype%aggrkind,5) ! smoothed/raw aggregatin call read_data(prectype%aggrkind,psb_inp_unit) ! smoothed/raw aggregatin
call read_data(prectype%aggr_alg,5) ! local or global aggregation call read_data(prectype%aggr_alg,psb_inp_unit) ! local or global aggregation
call read_data(prectype%mltype,5) ! additive or multiplicative 2nd level prec call read_data(prectype%mltype,psb_inp_unit) ! additive or multiplicative 2nd level prec
call read_data(prectype%smthpos,5) ! side: pre, post, both smoothing call read_data(prectype%smthpos,psb_inp_unit) ! side: pre, post, both smoothing
call read_data(prectype%cmat,5) ! coarse mat call read_data(prectype%cmat,psb_inp_unit) ! coarse mat
call read_data(prectype%csolve,5) ! Factorization type: ILU, SuperLU, UMFPACK. call read_data(prectype%csolve,psb_inp_unit) ! Factorization type: ILU, SuperLU, UMFPACK.
call read_data(prectype%csbsolve,5) ! Factorization type: ILU, SuperLU, UMFPACK. call read_data(prectype%csbsolve,psb_inp_unit) ! Factorization type: ILU, SuperLU, UMFPACK.
call read_data(prectype%cfill,5) ! Fill-in for factorization 1 call read_data(prectype%cfill,psb_inp_unit) ! Fill-in for factorization 1
call read_data(prectype%cthres,5) ! Threshold for fact. 1 ILU(T) call read_data(prectype%cthres,psb_inp_unit) ! Threshold for fact. 1 ILU(T)
call read_data(prectype%cjswp,5) ! Jacobi sweeps call read_data(prectype%cjswp,psb_inp_unit) ! Jacobi sweeps
call read_data(prectype%athres,5) ! smoother aggr thresh call read_data(prectype%athres,psb_inp_unit) ! smoother aggr thresh
call read_data(prectype%csize,5) ! coarse size call read_data(prectype%csize,psb_inp_unit) ! coarse size
end if end if
end if end if
@ -446,7 +446,7 @@ contains
! print an error message ! print an error message
! !
subroutine pr_usage(iout) subroutine pr_usage(iout)
integer :: iout integer(psb_ipk_) :: iout
write(iout,*)'incorrect parameter(s) found' write(iout,*)'incorrect parameter(s) found'
write(iout,*)' usage: pde90 methd prec dim & write(iout,*)' usage: pde90 methd prec dim &
&[istop itmax itrace]' &[istop itmax itrace]'

@ -135,7 +135,7 @@ program spde3d
! input parameters ! input parameters
character(len=20) :: kmethd, ptype character(len=20) :: kmethd, ptype
character(len=5) :: afmt character(len=5) :: afmt
integer :: idim integer(psb_ipk_) :: idim
! miscellaneous ! miscellaneous
real(psb_spk_), parameter :: one = 1.0 real(psb_spk_), parameter :: one = 1.0
@ -147,44 +147,44 @@ program spde3d
! descriptor ! descriptor
type(psb_desc_type) :: desc_a type(psb_desc_type) :: desc_a
! dense matrices ! dense matrices
type(psb_s_vect_type) :: x,b type(psb_s_vect_type) :: x,b
! blacs parameters ! blacs parameters
integer :: ictxt, iam, np integer(psb_ipk_) :: ictxt, iam, np
! solver parameters ! solver parameters
integer :: iter, itmax,itrace, istopc, irst, nlv integer(psb_ipk_) :: iter, itmax,itrace, istopc, irst, nlv
integer(psb_long_int_k_) :: amatsize, precsize, descsize integer(psb_long_int_k_) :: amatsize, precsize, descsize
real(psb_spk_) :: err, eps real(psb_spk_) :: err, eps
type precdata type precdata
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(psb_ipk_) :: novr ! number of overlap layers
integer :: jsweeps ! Jacobi/smoother sweeps integer(psb_ipk_) :: 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 ! Solver type: ILU, SuperLU, UMFPACK. character(len=16) :: solve ! Solver type: ILU, SuperLU, UMFPACK.
integer :: fill1 ! Fill-in for factorization 1 integer(psb_ipk_) :: fill1 ! Fill-in for factorization 1
real(psb_spk_) :: thr1 ! Threshold for fact. 1 ILU(T) real(psb_spk_) :: thr1 ! Threshold for fact. 1 ILU(T)
character(len=16) :: smther ! Smoother character(len=16) :: smther ! Smoother
integer :: nlev ! Number of levels in multilevel prec. integer(psb_ipk_) :: nlev ! Number of levels in multilevel prec.
character(len=16) :: aggrkind ! smoothed/raw aggregatin character(len=16) :: aggrkind ! smoothed/raw aggregatin
character(len=16) :: aggr_alg ! local or global aggregation character(len=16) :: aggr_alg ! local or global aggregation
character(len=16) :: mltype ! additive or multiplicative 2nd level prec character(len=16) :: mltype ! additive or multiplicative 2nd level prec
character(len=16) :: smthpos ! side: pre, post, both smoothing character(len=16) :: smthpos ! side: pre, post, both smoothing
integer :: csize ! aggregation size at which to stop. integer(psb_ipk_) :: csize ! aggregation size at which to stop.
character(len=16) :: cmat ! coarse mat character(len=16) :: cmat ! coarse mat
character(len=16) :: csolve ! Coarse solver: bjac, umf, slu, sludist character(len=16) :: csolve ! Coarse solver: bjac, umf, slu, sludist
character(len=16) :: csbsolve ! Coarse subsolver: ILU, ILU(T), SuperLU, UMFPACK. character(len=16) :: csbsolve ! Coarse subsolver: ILU, ILU(T), SuperLU, UMFPACK.
integer :: cfill ! Fill-in for factorization 1 integer(psb_ipk_) :: cfill ! Fill-in for factorization 1
real(psb_spk_) :: cthres ! Threshold for fact. 1 ILU(T) real(psb_spk_) :: cthres ! Threshold for fact. 1 ILU(T)
integer :: cjswp ! Jacobi sweeps integer(psb_ipk_) :: cjswp ! Jacobi sweeps
real(psb_spk_) :: athres ! smoother aggregation threshold real(psb_spk_) :: athres ! smoother aggregation threshold
end type precdata end type precdata
type(precdata) :: prectype type(precdata) :: prectype
type(psb_s_coo_sparse_mat) :: acoo type(psb_s_coo_sparse_mat) :: acoo
! other variables ! other variables
integer :: info integer(psb_ipk_) :: info
character(len=20) :: name,ch_err character(len=20) :: name,ch_err
info=psb_success_ info=psb_success_
@ -200,7 +200,7 @@ program spde3d
endif endif
if(psb_get_errstatus() /= 0) goto 9999 if(psb_get_errstatus() /= 0) goto 9999
name='pde90' name='pde90'
call psb_set_errverbosity(2) call psb_set_errverbosity(itwo)
! !
! Hello world ! Hello world
! !
@ -361,49 +361,49 @@ contains
! get iteration parameters from standard input ! get iteration parameters from standard input
! !
subroutine get_parms(ictxt,kmethd,prectype,afmt,idim,istopc,itmax,itrace,irst,eps) subroutine get_parms(ictxt,kmethd,prectype,afmt,idim,istopc,itmax,itrace,irst,eps)
integer :: ictxt integer(psb_ipk_) :: ictxt
type(precdata) :: prectype type(precdata) :: prectype
character(len=*) :: kmethd, afmt character(len=*) :: kmethd, afmt
integer :: idim, istopc,itmax,itrace,irst integer(psb_ipk_) :: idim, istopc,itmax,itrace,irst
integer :: np, iam, info integer(psb_ipk_) :: np, iam, info
real(psb_spk_) :: eps real(psb_spk_) :: eps
character(len=20) :: buffer character(len=20) :: buffer
call psb_info(ictxt, iam, np) call psb_info(ictxt, iam, np)
if (iam == psb_root_) then if (iam == psb_root_) then
call read_data(kmethd,5) call read_data(kmethd,psb_inp_unit)
call read_data(afmt,5) call read_data(afmt,psb_inp_unit)
call read_data(idim,5) call read_data(idim,psb_inp_unit)
call read_data(istopc,5) call read_data(istopc,psb_inp_unit)
call read_data(itmax,5) call read_data(itmax,psb_inp_unit)
call read_data(itrace,5) call read_data(itrace,psb_inp_unit)
call read_data(irst,5) call read_data(irst,psb_inp_unit)
call read_data(eps,5) call read_data(eps,psb_inp_unit)
call read_data(prectype%descr,5) ! verbose description of the prec call read_data(prectype%descr,psb_inp_unit) ! verbose description of the prec
call read_data(prectype%prec,5) ! overall prectype call read_data(prectype%prec,psb_inp_unit) ! overall prectype
call read_data(prectype%novr,5) ! number of overlap layers call read_data(prectype%novr,psb_inp_unit) ! number of overlap layers
call read_data(prectype%restr,5) ! restriction over application of as call read_data(prectype%restr,psb_inp_unit) ! restriction over application of as
call read_data(prectype%prol,5) ! prolongation over application of as call read_data(prectype%prol,psb_inp_unit) ! prolongation over application of as
call read_data(prectype%solve,5) ! Factorization type: ILU, SuperLU, UMFPACK. call read_data(prectype%solve,psb_inp_unit) ! Factorization type: ILU, SuperLU, UMFPACK.
call read_data(prectype%fill1,5) ! Fill-in for factorization 1 call read_data(prectype%fill1,psb_inp_unit) ! Fill-in for factorization 1
call read_data(prectype%thr1,5) ! Threshold for fact. 1 ILU(T) call read_data(prectype%thr1,psb_inp_unit) ! Threshold for fact. 1 ILU(T)
call read_data(prectype%jsweeps,5) ! Jacobi sweeps for PJAC call read_data(prectype%jsweeps,psb_inp_unit) ! Jacobi sweeps for PJAC
if (psb_toupper(prectype%prec) == 'ML') then if (psb_toupper(prectype%prec) == 'ML') then
call read_data(prectype%smther,5) ! Smoother type. call read_data(prectype%smther,psb_inp_unit) ! Smoother type.
call read_data(prectype%nlev,5) ! Number of levels in multilevel prec. call read_data(prectype%nlev,psb_inp_unit) ! Number of levels in multilevel prec.
call read_data(prectype%aggrkind,5) ! smoothed/raw aggregatin call read_data(prectype%aggrkind,psb_inp_unit) ! smoothed/raw aggregatin
call read_data(prectype%aggr_alg,5) ! local or global aggregation call read_data(prectype%aggr_alg,psb_inp_unit) ! local or global aggregation
call read_data(prectype%mltype,5) ! additive or multiplicative 2nd level prec call read_data(prectype%mltype,psb_inp_unit) ! additive or multiplicative 2nd level prec
call read_data(prectype%smthpos,5) ! side: pre, post, both smoothing call read_data(prectype%smthpos,psb_inp_unit) ! side: pre, post, both smoothing
call read_data(prectype%cmat,5) ! coarse mat call read_data(prectype%cmat,psb_inp_unit) ! coarse mat
call read_data(prectype%csolve,5) ! Factorization type: ILU, SuperLU, UMFPACK. call read_data(prectype%csolve,psb_inp_unit) ! Factorization type: ILU, SuperLU, UMFPACK.
call read_data(prectype%csbsolve,5) ! Factorization type: ILU, SuperLU, UMFPACK. call read_data(prectype%csbsolve,psb_inp_unit) ! Factorization type: ILU, SuperLU, UMFPACK.
call read_data(prectype%cfill,5) ! Fill-in for factorization 1 call read_data(prectype%cfill,psb_inp_unit) ! Fill-in for factorization 1
call read_data(prectype%cthres,5) ! Threshold for fact. 1 ILU(T) call read_data(prectype%cthres,psb_inp_unit) ! Threshold for fact. 1 ILU(T)
call read_data(prectype%cjswp,5) ! Jacobi sweeps call read_data(prectype%cjswp,psb_inp_unit) ! Jacobi sweeps
call read_data(prectype%athres,5) ! smoother aggr thresh call read_data(prectype%athres,psb_inp_unit) ! smoother aggr thresh
call read_data(prectype%csize,5) ! coarse size call read_data(prectype%csize,psb_inp_unit) ! coarse size
end if end if
end if end if
@ -461,7 +461,7 @@ contains
! print an error message ! print an error message
! !
subroutine pr_usage(iout) subroutine pr_usage(iout)
integer :: iout integer(psb_ipk_) :: iout
write(iout,*)'incorrect parameter(s) found' write(iout,*)'incorrect parameter(s) found'
write(iout,*)' usage: pde90 methd prec dim & write(iout,*)' usage: pde90 methd prec dim &
&[istop itmax itrace]' &[istop itmax itrace]'

Loading…
Cancel
Save