Fixed input files.

stopcriterion
Salvatore Filippone 7 years ago
parent fcd370a304
commit 4f2c5cb0cd

@ -53,15 +53,33 @@ module data_input
character(len=4096), private :: charbuf character(len=4096), private :: charbuf
character, private, parameter :: def_marker="!" character, private, parameter :: def_marker="!"
character, private, parameter :: cmt_marker="%"
contains contains
subroutine get_buffer(file,buffer)
integer(psb_ipk_), intent(in) :: file
character(len=*), intent(inout) :: buffer
integer :: idx
do
read(file,'(a)',end=999) buffer
buffer = adjustl(buffer)
idx=index(charbuf,cmt_marker)
if (idx == 1 ) then
cycle
else
exit
end if
end do
999 continue
return
end subroutine get_buffer
subroutine read_logical(val,file,marker) subroutine read_logical(val,file,marker)
logical, intent(out) :: val logical, intent(out) :: val
integer(psb_ipk_), 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 call get_buffer(file,charbuf)
call read_data(val,charbuf,marker) call read_data(val,charbuf,marker)
end subroutine read_logical end subroutine read_logical
@ -71,7 +89,7 @@ contains
integer(psb_ipk_), 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 call get_buffer(file,charbuf)
call read_data(val,charbuf,marker) call read_data(val,charbuf,marker)
end subroutine read_char end subroutine read_char
@ -81,7 +99,7 @@ contains
integer(psb_ipk_), 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 call get_buffer(file,charbuf)
call read_data(val,charbuf,marker) call read_data(val,charbuf,marker)
end subroutine read_int end subroutine read_int
@ -91,7 +109,7 @@ contains
integer(psb_ipk_), 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 call get_buffer(file,charbuf)
call read_data(val,charbuf,marker) call read_data(val,charbuf,marker)
end subroutine read_int_array end subroutine read_int_array
@ -101,7 +119,7 @@ contains
integer(psb_ipk_), 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 call get_buffer(file,charbuf)
call read_data(val,charbuf,marker) call read_data(val,charbuf,marker)
end subroutine read_single end subroutine read_single
@ -111,7 +129,7 @@ contains
integer(psb_ipk_), 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 call get_buffer(file,charbuf)
call read_data(val,charbuf,marker) call read_data(val,charbuf,marker)
end subroutine read_single_array end subroutine read_single_array
@ -121,7 +139,7 @@ contains
integer(psb_ipk_), 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 call get_buffer(file,charbuf)
call read_data(val,charbuf,marker) call read_data(val,charbuf,marker)
end subroutine read_double end subroutine read_double
@ -131,7 +149,7 @@ contains
integer(psb_ipk_), 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 call get_buffer(file,charbuf)
call read_data(val,charbuf,marker) call read_data(val,charbuf,marker)
end subroutine read_double_array end subroutine read_double_array

@ -368,7 +368,7 @@ program mld_cf_sample
case ('JACOBI','GS','FWGS','FBGS') case ('JACOBI','GS','FWGS','FBGS')
! 1-level sweeps from "outer_sweeps" ! 1-level sweeps from "outer_sweeps"
call prec%set('smoother_sweeps', p_choice%outer_sweeps, info) call prec%set('smoother_sweeps', p_choice%jsweeps, info)
case ('BJAC') case ('BJAC')
call prec%set('smoother_sweeps', p_choice%jsweeps, info) call prec%set('smoother_sweeps', p_choice%jsweeps, info)
@ -412,29 +412,41 @@ program mld_cf_sample
call prec%set('smoother_type', p_choice%smther, info) call prec%set('smoother_type', p_choice%smther, info)
call prec%set('smoother_sweeps', p_choice%jsweeps, info) call prec%set('smoother_sweeps', p_choice%jsweeps, info)
call prec%set('sub_ovr', p_choice%novr, info)
call prec%set('sub_restr', p_choice%restr, info) select case (psb_toupper(p_choice%smther))
call prec%set('sub_prol', p_choice%prol, info) case ('GS','BWGS','FBGS','JACOBI')
call prec%set('sub_solve', p_choice%solve, info) ! do nothing
call prec%set('sub_fillin', p_choice%fill, info) case default
call prec%set('sub_iluthrs', p_choice%thr, info) call prec%set('sub_ovr', p_choice%novr, info)
call prec%set('sub_restr', p_choice%restr, info)
call prec%set('sub_prol', p_choice%prol, info)
call prec%set('sub_solve', p_choice%solve, info)
call prec%set('sub_fillin', p_choice%fill, info)
call prec%set('sub_iluthrs', p_choice%thr, info)
end select
if (psb_toupper(p_choice%smther2) /= 'NONE') then if (psb_toupper(p_choice%smther2) /= 'NONE') then
call prec%set('smoother_type', p_choice%smther2, info,pos='post') call prec%set('smoother_type', p_choice%smther2, info,pos='post')
call prec%set('smoother_sweeps', p_choice%jsweeps2, info,pos='post') call prec%set('smoother_sweeps', p_choice%jsweeps2, info,pos='post')
call prec%set('sub_ovr', p_choice%novr2, info,pos='post') select case (psb_toupper(p_choice%smther2))
call prec%set('sub_restr', p_choice%restr2, info,pos='post') case ('GS','BWGS','FBGS','JACOBI')
call prec%set('sub_prol', p_choice%prol2, info,pos='post') ! do nothing
call prec%set('sub_solve', p_choice%solve2, info,pos='post') case default
call prec%set('sub_fillin', p_choice%fill2, info,pos='post') call prec%set('sub_ovr', p_choice%novr2, info,pos='post')
call prec%set('sub_iluthrs', p_choice%thr2, info,pos='post') call prec%set('sub_restr', p_choice%restr2, info,pos='post')
call prec%set('sub_prol', p_choice%prol2, info,pos='post')
call prec%set('sub_solve', p_choice%solve2, info,pos='post')
call prec%set('sub_fillin', p_choice%fill2, info,pos='post')
call prec%set('sub_iluthrs', p_choice%thr2, info,pos='post')
end select
end if end if
if (psb_toupper(p_choice%csolve) /= 'DEFLT') then if (psb_toupper(p_choice%csolve) /= 'DEFLT') then
call prec%set('coarse_solve', p_choice%csolve, info) call prec%set('coarse_solve', p_choice%csolve, info)
if (psb_toupper(p_choice%csolve) == 'BJAC') & if (psb_toupper(p_choice%csolve) == 'BJAC') &
& call prec%set('coarse_subsolve', p_choice%csbsolve, info) & call prec%set('coarse_subsolve', p_choice%csbsolve, info)
call prec%set('coarse_mat', p_choice%cmat, info) if (psb_toupper(p_choice%cmat) /= 'DEFLT')&
& call prec%set('coarse_mat', p_choice%cmat, info)
call prec%set('coarse_fillin', p_choice%cfill, info) call prec%set('coarse_fillin', p_choice%cfill, info)
call prec%set('coarse_iluthrs', p_choice%cthres, info) call prec%set('coarse_iluthrs', p_choice%cthres, info)
call prec%set('coarse_sweeps', p_choice%cjswp, info) call prec%set('coarse_sweeps', p_choice%cjswp, info)
@ -619,9 +631,27 @@ contains
! preconditioner type ! preconditioner type
call read_data(prec%descr,psb_inp_unit) ! verbose description of the prec call read_data(prec%descr,psb_inp_unit) ! verbose description of the prec
call read_data(prec%ptype,psb_inp_unit) ! preconditioner type call read_data(prec%ptype,psb_inp_unit) ! preconditioner type
call read_data(prec%outer_sweeps,psb_inp_unit) ! number of 1lev/outer sweeps ! First smoother / 1-lev preconditioner
call read_data(prec%smther,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps,psb_inp_unit) ! (pre-)smoother / 1-lev prec sweeps
call read_data(prec%novr,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve,psb_inp_unit) ! local subsolver
call read_data(prec%fill,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr,psb_inp_unit) ! threshold for ILUT
! Second smoother/ AMG post-smoother (if NONE ignored in main)
call read_data(prec%smther2,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps2,psb_inp_unit) ! (post-)smoother sweeps
call read_data(prec%novr2,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr2,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol2,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve2,psb_inp_unit) ! local subsolver
call read_data(prec%fill2,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr2,psb_inp_unit) ! threshold for ILUT
! general AMG data ! general AMG data
call read_data(prec%mlcycle,psb_inp_unit) ! AMG cycle type call read_data(prec%mlcycle,psb_inp_unit) ! AMG cycle type
call read_data(prec%outer_sweeps,psb_inp_unit) ! number of 1lev/outer sweeps
call read_data(prec%maxlevs,psb_inp_unit) ! max number of levels in AMG prec call read_data(prec%maxlevs,psb_inp_unit) ! max number of levels in AMG prec
call read_data(prec%csize,psb_inp_unit) ! min size coarsest mat call read_data(prec%csize,psb_inp_unit) ! min size coarsest mat
! aggregation ! aggregation
@ -638,24 +668,6 @@ contains
read(psb_inp_unit,*) ! dummy read to skip a record read(psb_inp_unit,*) ! dummy read to skip a record
end if end if
call read_data(prec%athres,psb_inp_unit) ! smoothed aggr thresh call read_data(prec%athres,psb_inp_unit) ! smoothed aggr thresh
! AMG smoother (or pre-smoother) / 1-lev preconditioner
call read_data(prec%smther,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps,psb_inp_unit) ! (pre-)smoother / 1-lev prec sweeps
call read_data(prec%novr,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve,psb_inp_unit) ! local subsolver
call read_data(prec%fill,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr,psb_inp_unit) ! threshold for ILUT
! AMG post-smoother
call read_data(prec%smther2,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps2,psb_inp_unit) ! (post-)smoother sweeps
call read_data(prec%novr2,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr2,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol2,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve2,psb_inp_unit) ! local subsolver
call read_data(prec%fill2,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr2,psb_inp_unit) ! threshold for ILUT
! coasest-level solver ! coasest-level solver
call read_data(prec%csolve,psb_inp_unit) ! coarsest-lev solver call read_data(prec%csolve,psb_inp_unit) ! coarsest-lev solver
call read_data(prec%csbsolve,psb_inp_unit) ! coarsest-lev subsolver call read_data(prec%csbsolve,psb_inp_unit) ! coarsest-lev subsolver
@ -684,7 +696,7 @@ contains
call psb_bcast(icontxt,prec%ptype) call psb_bcast(icontxt,prec%ptype)
! broadcast first (pre-)smoother / 1-lev prec data ! broadcast first (pre-)smoother / 1-lev prec data
call psb_bcast(icontxt,prec%smther) ! actually not needed for 1-lev precs call psb_bcast(icontxt,prec%smther)
call psb_bcast(icontxt,prec%jsweeps) call psb_bcast(icontxt,prec%jsweeps)
call psb_bcast(icontxt,prec%novr) call psb_bcast(icontxt,prec%novr)
call psb_bcast(icontxt,prec%restr) call psb_bcast(icontxt,prec%restr)
@ -692,44 +704,41 @@ contains
call psb_bcast(icontxt,prec%solve) call psb_bcast(icontxt,prec%solve)
call psb_bcast(icontxt,prec%fill) call psb_bcast(icontxt,prec%fill)
call psb_bcast(icontxt,prec%thr) call psb_bcast(icontxt,prec%thr)
! broadcast second (post-)smoother
! broadcast (other) AMG parameters call psb_bcast(icontxt,prec%smther2)
if (psb_toupper(prec%ptype) == 'ML') then call psb_bcast(icontxt,prec%jsweeps2)
call psb_bcast(icontxt,prec%novr2)
call psb_bcast(icontxt,prec%mlcycle) call psb_bcast(icontxt,prec%restr2)
call psb_bcast(icontxt,prec%outer_sweeps) call psb_bcast(icontxt,prec%prol2)
call psb_bcast(icontxt,prec%maxlevs) call psb_bcast(icontxt,prec%solve2)
call psb_bcast(icontxt,prec%fill2)
call psb_bcast(icontxt,prec%smther2) call psb_bcast(icontxt,prec%thr2)
call psb_bcast(icontxt,prec%jsweeps2)
call psb_bcast(icontxt,prec%novr2) ! broadcast AMG parameters
call psb_bcast(icontxt,prec%restr2) call psb_bcast(icontxt,prec%mlcycle)
call psb_bcast(icontxt,prec%prol2) call psb_bcast(icontxt,prec%outer_sweeps)
call psb_bcast(icontxt,prec%solve2) call psb_bcast(icontxt,prec%maxlevs)
call psb_bcast(icontxt,prec%fill2)
call psb_bcast(icontxt,prec%thr2) call psb_bcast(icontxt,prec%aggr_prol)
call psb_bcast(icontxt,prec%par_aggr_alg)
call psb_bcast(icontxt,prec%aggr_prol) call psb_bcast(icontxt,prec%aggr_ord)
call psb_bcast(icontxt,prec%par_aggr_alg) call psb_bcast(icontxt,prec%aggr_filter)
call psb_bcast(icontxt,prec%aggr_ord) call psb_bcast(icontxt,prec%mncrratio)
call psb_bcast(icontxt,prec%aggr_filter) call psb_bcast(ictxt,prec%thrvsz)
call psb_bcast(icontxt,prec%mncrratio) if (prec%thrvsz > 0) then
call psb_bcast(ictxt,prec%thrvsz) if (iam /= psb_root_) call psb_realloc(prec%thrvsz,prec%athresv,info)
if (prec%thrvsz > 0) then call psb_bcast(ictxt,prec%athresv)
if (iam /= psb_root_) call psb_realloc(prec%thrvsz,prec%athresv,info)
call psb_bcast(ictxt,prec%athresv)
end if
call psb_bcast(ictxt,prec%athres)
call psb_bcast(icontxt,prec%csize)
call psb_bcast(icontxt,prec%cmat)
call psb_bcast(icontxt,prec%csolve)
call psb_bcast(icontxt,prec%csbsolve)
call psb_bcast(icontxt,prec%cfill)
call psb_bcast(icontxt,prec%cthres)
call psb_bcast(icontxt,prec%cjswp)
end if end if
call psb_bcast(ictxt,prec%athres)
call psb_bcast(icontxt,prec%csize)
call psb_bcast(icontxt,prec%cmat)
call psb_bcast(icontxt,prec%csolve)
call psb_bcast(icontxt,prec%csbsolve)
call psb_bcast(icontxt,prec%cfill)
call psb_bcast(icontxt,prec%cthres)
call psb_bcast(icontxt,prec%cjswp)
end subroutine get_parms end subroutine get_parms

@ -368,7 +368,7 @@ program mld_df_sample
case ('JACOBI','GS','FWGS','FBGS') case ('JACOBI','GS','FWGS','FBGS')
! 1-level sweeps from "outer_sweeps" ! 1-level sweeps from "outer_sweeps"
call prec%set('smoother_sweeps', p_choice%outer_sweeps, info) call prec%set('smoother_sweeps', p_choice%jsweeps, info)
case ('BJAC') case ('BJAC')
call prec%set('smoother_sweeps', p_choice%jsweeps, info) call prec%set('smoother_sweeps', p_choice%jsweeps, info)
@ -412,29 +412,41 @@ program mld_df_sample
call prec%set('smoother_type', p_choice%smther, info) call prec%set('smoother_type', p_choice%smther, info)
call prec%set('smoother_sweeps', p_choice%jsweeps, info) call prec%set('smoother_sweeps', p_choice%jsweeps, info)
call prec%set('sub_ovr', p_choice%novr, info)
call prec%set('sub_restr', p_choice%restr, info) select case (psb_toupper(p_choice%smther))
call prec%set('sub_prol', p_choice%prol, info) case ('GS','BWGS','FBGS','JACOBI')
call prec%set('sub_solve', p_choice%solve, info) ! do nothing
call prec%set('sub_fillin', p_choice%fill, info) case default
call prec%set('sub_iluthrs', p_choice%thr, info) call prec%set('sub_ovr', p_choice%novr, info)
call prec%set('sub_restr', p_choice%restr, info)
call prec%set('sub_prol', p_choice%prol, info)
call prec%set('sub_solve', p_choice%solve, info)
call prec%set('sub_fillin', p_choice%fill, info)
call prec%set('sub_iluthrs', p_choice%thr, info)
end select
if (psb_toupper(p_choice%smther2) /= 'NONE') then if (psb_toupper(p_choice%smther2) /= 'NONE') then
call prec%set('smoother_type', p_choice%smther2, info,pos='post') call prec%set('smoother_type', p_choice%smther2, info,pos='post')
call prec%set('smoother_sweeps', p_choice%jsweeps2, info,pos='post') call prec%set('smoother_sweeps', p_choice%jsweeps2, info,pos='post')
call prec%set('sub_ovr', p_choice%novr2, info,pos='post') select case (psb_toupper(p_choice%smther2))
call prec%set('sub_restr', p_choice%restr2, info,pos='post') case ('GS','BWGS','FBGS','JACOBI')
call prec%set('sub_prol', p_choice%prol2, info,pos='post') ! do nothing
call prec%set('sub_solve', p_choice%solve2, info,pos='post') case default
call prec%set('sub_fillin', p_choice%fill2, info,pos='post') call prec%set('sub_ovr', p_choice%novr2, info,pos='post')
call prec%set('sub_iluthrs', p_choice%thr2, info,pos='post') call prec%set('sub_restr', p_choice%restr2, info,pos='post')
call prec%set('sub_prol', p_choice%prol2, info,pos='post')
call prec%set('sub_solve', p_choice%solve2, info,pos='post')
call prec%set('sub_fillin', p_choice%fill2, info,pos='post')
call prec%set('sub_iluthrs', p_choice%thr2, info,pos='post')
end select
end if end if
if (psb_toupper(p_choice%csolve) /= 'DEFLT') then if (psb_toupper(p_choice%csolve) /= 'DEFLT') then
call prec%set('coarse_solve', p_choice%csolve, info) call prec%set('coarse_solve', p_choice%csolve, info)
if (psb_toupper(p_choice%csolve) == 'BJAC') & if (psb_toupper(p_choice%csolve) == 'BJAC') &
& call prec%set('coarse_subsolve', p_choice%csbsolve, info) & call prec%set('coarse_subsolve', p_choice%csbsolve, info)
call prec%set('coarse_mat', p_choice%cmat, info) if (psb_toupper(p_choice%cmat) /= 'DEFLT')&
& call prec%set('coarse_mat', p_choice%cmat, info)
call prec%set('coarse_fillin', p_choice%cfill, info) call prec%set('coarse_fillin', p_choice%cfill, info)
call prec%set('coarse_iluthrs', p_choice%cthres, info) call prec%set('coarse_iluthrs', p_choice%cthres, info)
call prec%set('coarse_sweeps', p_choice%cjswp, info) call prec%set('coarse_sweeps', p_choice%cjswp, info)
@ -619,9 +631,27 @@ contains
! preconditioner type ! preconditioner type
call read_data(prec%descr,psb_inp_unit) ! verbose description of the prec call read_data(prec%descr,psb_inp_unit) ! verbose description of the prec
call read_data(prec%ptype,psb_inp_unit) ! preconditioner type call read_data(prec%ptype,psb_inp_unit) ! preconditioner type
call read_data(prec%outer_sweeps,psb_inp_unit) ! number of 1lev/outer sweeps ! First smoother / 1-lev preconditioner
call read_data(prec%smther,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps,psb_inp_unit) ! (pre-)smoother / 1-lev prec sweeps
call read_data(prec%novr,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve,psb_inp_unit) ! local subsolver
call read_data(prec%fill,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr,psb_inp_unit) ! threshold for ILUT
! Second smoother/ AMG post-smoother (if NONE ignored in main)
call read_data(prec%smther2,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps2,psb_inp_unit) ! (post-)smoother sweeps
call read_data(prec%novr2,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr2,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol2,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve2,psb_inp_unit) ! local subsolver
call read_data(prec%fill2,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr2,psb_inp_unit) ! threshold for ILUT
! general AMG data ! general AMG data
call read_data(prec%mlcycle,psb_inp_unit) ! AMG cycle type call read_data(prec%mlcycle,psb_inp_unit) ! AMG cycle type
call read_data(prec%outer_sweeps,psb_inp_unit) ! number of 1lev/outer sweeps
call read_data(prec%maxlevs,psb_inp_unit) ! max number of levels in AMG prec call read_data(prec%maxlevs,psb_inp_unit) ! max number of levels in AMG prec
call read_data(prec%csize,psb_inp_unit) ! min size coarsest mat call read_data(prec%csize,psb_inp_unit) ! min size coarsest mat
! aggregation ! aggregation
@ -638,24 +668,6 @@ contains
read(psb_inp_unit,*) ! dummy read to skip a record read(psb_inp_unit,*) ! dummy read to skip a record
end if end if
call read_data(prec%athres,psb_inp_unit) ! smoothed aggr thresh call read_data(prec%athres,psb_inp_unit) ! smoothed aggr thresh
! AMG smoother (or pre-smoother) / 1-lev preconditioner
call read_data(prec%smther,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps,psb_inp_unit) ! (pre-)smoother / 1-lev prec sweeps
call read_data(prec%novr,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve,psb_inp_unit) ! local subsolver
call read_data(prec%fill,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr,psb_inp_unit) ! threshold for ILUT
! AMG post-smoother
call read_data(prec%smther2,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps2,psb_inp_unit) ! (post-)smoother sweeps
call read_data(prec%novr2,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr2,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol2,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve2,psb_inp_unit) ! local subsolver
call read_data(prec%fill2,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr2,psb_inp_unit) ! threshold for ILUT
! coasest-level solver ! coasest-level solver
call read_data(prec%csolve,psb_inp_unit) ! coarsest-lev solver call read_data(prec%csolve,psb_inp_unit) ! coarsest-lev solver
call read_data(prec%csbsolve,psb_inp_unit) ! coarsest-lev subsolver call read_data(prec%csbsolve,psb_inp_unit) ! coarsest-lev subsolver
@ -684,7 +696,7 @@ contains
call psb_bcast(icontxt,prec%ptype) call psb_bcast(icontxt,prec%ptype)
! broadcast first (pre-)smoother / 1-lev prec data ! broadcast first (pre-)smoother / 1-lev prec data
call psb_bcast(icontxt,prec%smther) ! actually not needed for 1-lev precs call psb_bcast(icontxt,prec%smther)
call psb_bcast(icontxt,prec%jsweeps) call psb_bcast(icontxt,prec%jsweeps)
call psb_bcast(icontxt,prec%novr) call psb_bcast(icontxt,prec%novr)
call psb_bcast(icontxt,prec%restr) call psb_bcast(icontxt,prec%restr)
@ -692,44 +704,41 @@ contains
call psb_bcast(icontxt,prec%solve) call psb_bcast(icontxt,prec%solve)
call psb_bcast(icontxt,prec%fill) call psb_bcast(icontxt,prec%fill)
call psb_bcast(icontxt,prec%thr) call psb_bcast(icontxt,prec%thr)
! broadcast second (post-)smoother
! broadcast (other) AMG parameters call psb_bcast(icontxt,prec%smther2)
if (psb_toupper(prec%ptype) == 'ML') then call psb_bcast(icontxt,prec%jsweeps2)
call psb_bcast(icontxt,prec%novr2)
call psb_bcast(icontxt,prec%mlcycle) call psb_bcast(icontxt,prec%restr2)
call psb_bcast(icontxt,prec%outer_sweeps) call psb_bcast(icontxt,prec%prol2)
call psb_bcast(icontxt,prec%maxlevs) call psb_bcast(icontxt,prec%solve2)
call psb_bcast(icontxt,prec%fill2)
call psb_bcast(icontxt,prec%smther2) call psb_bcast(icontxt,prec%thr2)
call psb_bcast(icontxt,prec%jsweeps2)
call psb_bcast(icontxt,prec%novr2) ! broadcast AMG parameters
call psb_bcast(icontxt,prec%restr2) call psb_bcast(icontxt,prec%mlcycle)
call psb_bcast(icontxt,prec%prol2) call psb_bcast(icontxt,prec%outer_sweeps)
call psb_bcast(icontxt,prec%solve2) call psb_bcast(icontxt,prec%maxlevs)
call psb_bcast(icontxt,prec%fill2)
call psb_bcast(icontxt,prec%thr2) call psb_bcast(icontxt,prec%aggr_prol)
call psb_bcast(icontxt,prec%par_aggr_alg)
call psb_bcast(icontxt,prec%aggr_prol) call psb_bcast(icontxt,prec%aggr_ord)
call psb_bcast(icontxt,prec%par_aggr_alg) call psb_bcast(icontxt,prec%aggr_filter)
call psb_bcast(icontxt,prec%aggr_ord) call psb_bcast(icontxt,prec%mncrratio)
call psb_bcast(icontxt,prec%aggr_filter) call psb_bcast(ictxt,prec%thrvsz)
call psb_bcast(icontxt,prec%mncrratio) if (prec%thrvsz > 0) then
call psb_bcast(ictxt,prec%thrvsz) if (iam /= psb_root_) call psb_realloc(prec%thrvsz,prec%athresv,info)
if (prec%thrvsz > 0) then call psb_bcast(ictxt,prec%athresv)
if (iam /= psb_root_) call psb_realloc(prec%thrvsz,prec%athresv,info)
call psb_bcast(ictxt,prec%athresv)
end if
call psb_bcast(ictxt,prec%athres)
call psb_bcast(icontxt,prec%csize)
call psb_bcast(icontxt,prec%cmat)
call psb_bcast(icontxt,prec%csolve)
call psb_bcast(icontxt,prec%csbsolve)
call psb_bcast(icontxt,prec%cfill)
call psb_bcast(icontxt,prec%cthres)
call psb_bcast(icontxt,prec%cjswp)
end if end if
call psb_bcast(ictxt,prec%athres)
call psb_bcast(icontxt,prec%csize)
call psb_bcast(icontxt,prec%cmat)
call psb_bcast(icontxt,prec%csolve)
call psb_bcast(icontxt,prec%csbsolve)
call psb_bcast(icontxt,prec%cfill)
call psb_bcast(icontxt,prec%cthres)
call psb_bcast(icontxt,prec%cjswp)
end subroutine get_parms end subroutine get_parms

@ -368,7 +368,7 @@ program mld_sf_sample
case ('JACOBI','GS','FWGS','FBGS') case ('JACOBI','GS','FWGS','FBGS')
! 1-level sweeps from "outer_sweeps" ! 1-level sweeps from "outer_sweeps"
call prec%set('smoother_sweeps', p_choice%outer_sweeps, info) call prec%set('smoother_sweeps', p_choice%jsweeps, info)
case ('BJAC') case ('BJAC')
call prec%set('smoother_sweeps', p_choice%jsweeps, info) call prec%set('smoother_sweeps', p_choice%jsweeps, info)
@ -412,29 +412,41 @@ program mld_sf_sample
call prec%set('smoother_type', p_choice%smther, info) call prec%set('smoother_type', p_choice%smther, info)
call prec%set('smoother_sweeps', p_choice%jsweeps, info) call prec%set('smoother_sweeps', p_choice%jsweeps, info)
call prec%set('sub_ovr', p_choice%novr, info)
call prec%set('sub_restr', p_choice%restr, info) select case (psb_toupper(p_choice%smther))
call prec%set('sub_prol', p_choice%prol, info) case ('GS','BWGS','FBGS','JACOBI')
call prec%set('sub_solve', p_choice%solve, info) ! do nothing
call prec%set('sub_fillin', p_choice%fill, info) case default
call prec%set('sub_iluthrs', p_choice%thr, info) call prec%set('sub_ovr', p_choice%novr, info)
call prec%set('sub_restr', p_choice%restr, info)
call prec%set('sub_prol', p_choice%prol, info)
call prec%set('sub_solve', p_choice%solve, info)
call prec%set('sub_fillin', p_choice%fill, info)
call prec%set('sub_iluthrs', p_choice%thr, info)
end select
if (psb_toupper(p_choice%smther2) /= 'NONE') then if (psb_toupper(p_choice%smther2) /= 'NONE') then
call prec%set('smoother_type', p_choice%smther2, info,pos='post') call prec%set('smoother_type', p_choice%smther2, info,pos='post')
call prec%set('smoother_sweeps', p_choice%jsweeps2, info,pos='post') call prec%set('smoother_sweeps', p_choice%jsweeps2, info,pos='post')
call prec%set('sub_ovr', p_choice%novr2, info,pos='post') select case (psb_toupper(p_choice%smther2))
call prec%set('sub_restr', p_choice%restr2, info,pos='post') case ('GS','BWGS','FBGS','JACOBI')
call prec%set('sub_prol', p_choice%prol2, info,pos='post') ! do nothing
call prec%set('sub_solve', p_choice%solve2, info,pos='post') case default
call prec%set('sub_fillin', p_choice%fill2, info,pos='post') call prec%set('sub_ovr', p_choice%novr2, info,pos='post')
call prec%set('sub_iluthrs', p_choice%thr2, info,pos='post') call prec%set('sub_restr', p_choice%restr2, info,pos='post')
call prec%set('sub_prol', p_choice%prol2, info,pos='post')
call prec%set('sub_solve', p_choice%solve2, info,pos='post')
call prec%set('sub_fillin', p_choice%fill2, info,pos='post')
call prec%set('sub_iluthrs', p_choice%thr2, info,pos='post')
end select
end if end if
if (psb_toupper(p_choice%csolve) /= 'DEFLT') then if (psb_toupper(p_choice%csolve) /= 'DEFLT') then
call prec%set('coarse_solve', p_choice%csolve, info) call prec%set('coarse_solve', p_choice%csolve, info)
if (psb_toupper(p_choice%csolve) == 'BJAC') & if (psb_toupper(p_choice%csolve) == 'BJAC') &
& call prec%set('coarse_subsolve', p_choice%csbsolve, info) & call prec%set('coarse_subsolve', p_choice%csbsolve, info)
call prec%set('coarse_mat', p_choice%cmat, info) if (psb_toupper(p_choice%cmat) /= 'DEFLT')&
& call prec%set('coarse_mat', p_choice%cmat, info)
call prec%set('coarse_fillin', p_choice%cfill, info) call prec%set('coarse_fillin', p_choice%cfill, info)
call prec%set('coarse_iluthrs', p_choice%cthres, info) call prec%set('coarse_iluthrs', p_choice%cthres, info)
call prec%set('coarse_sweeps', p_choice%cjswp, info) call prec%set('coarse_sweeps', p_choice%cjswp, info)
@ -619,9 +631,27 @@ contains
! preconditioner type ! preconditioner type
call read_data(prec%descr,psb_inp_unit) ! verbose description of the prec call read_data(prec%descr,psb_inp_unit) ! verbose description of the prec
call read_data(prec%ptype,psb_inp_unit) ! preconditioner type call read_data(prec%ptype,psb_inp_unit) ! preconditioner type
call read_data(prec%outer_sweeps,psb_inp_unit) ! number of 1lev/outer sweeps ! First smoother / 1-lev preconditioner
call read_data(prec%smther,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps,psb_inp_unit) ! (pre-)smoother / 1-lev prec sweeps
call read_data(prec%novr,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve,psb_inp_unit) ! local subsolver
call read_data(prec%fill,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr,psb_inp_unit) ! threshold for ILUT
! Second smoother/ AMG post-smoother (if NONE ignored in main)
call read_data(prec%smther2,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps2,psb_inp_unit) ! (post-)smoother sweeps
call read_data(prec%novr2,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr2,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol2,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve2,psb_inp_unit) ! local subsolver
call read_data(prec%fill2,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr2,psb_inp_unit) ! threshold for ILUT
! general AMG data ! general AMG data
call read_data(prec%mlcycle,psb_inp_unit) ! AMG cycle type call read_data(prec%mlcycle,psb_inp_unit) ! AMG cycle type
call read_data(prec%outer_sweeps,psb_inp_unit) ! number of 1lev/outer sweeps
call read_data(prec%maxlevs,psb_inp_unit) ! max number of levels in AMG prec call read_data(prec%maxlevs,psb_inp_unit) ! max number of levels in AMG prec
call read_data(prec%csize,psb_inp_unit) ! min size coarsest mat call read_data(prec%csize,psb_inp_unit) ! min size coarsest mat
! aggregation ! aggregation
@ -638,24 +668,6 @@ contains
read(psb_inp_unit,*) ! dummy read to skip a record read(psb_inp_unit,*) ! dummy read to skip a record
end if end if
call read_data(prec%athres,psb_inp_unit) ! smoothed aggr thresh call read_data(prec%athres,psb_inp_unit) ! smoothed aggr thresh
! AMG smoother (or pre-smoother) / 1-lev preconditioner
call read_data(prec%smther,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps,psb_inp_unit) ! (pre-)smoother / 1-lev prec sweeps
call read_data(prec%novr,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve,psb_inp_unit) ! local subsolver
call read_data(prec%fill,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr,psb_inp_unit) ! threshold for ILUT
! AMG post-smoother
call read_data(prec%smther2,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps2,psb_inp_unit) ! (post-)smoother sweeps
call read_data(prec%novr2,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr2,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol2,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve2,psb_inp_unit) ! local subsolver
call read_data(prec%fill2,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr2,psb_inp_unit) ! threshold for ILUT
! coasest-level solver ! coasest-level solver
call read_data(prec%csolve,psb_inp_unit) ! coarsest-lev solver call read_data(prec%csolve,psb_inp_unit) ! coarsest-lev solver
call read_data(prec%csbsolve,psb_inp_unit) ! coarsest-lev subsolver call read_data(prec%csbsolve,psb_inp_unit) ! coarsest-lev subsolver
@ -684,7 +696,7 @@ contains
call psb_bcast(icontxt,prec%ptype) call psb_bcast(icontxt,prec%ptype)
! broadcast first (pre-)smoother / 1-lev prec data ! broadcast first (pre-)smoother / 1-lev prec data
call psb_bcast(icontxt,prec%smther) ! actually not needed for 1-lev precs call psb_bcast(icontxt,prec%smther)
call psb_bcast(icontxt,prec%jsweeps) call psb_bcast(icontxt,prec%jsweeps)
call psb_bcast(icontxt,prec%novr) call psb_bcast(icontxt,prec%novr)
call psb_bcast(icontxt,prec%restr) call psb_bcast(icontxt,prec%restr)
@ -692,44 +704,41 @@ contains
call psb_bcast(icontxt,prec%solve) call psb_bcast(icontxt,prec%solve)
call psb_bcast(icontxt,prec%fill) call psb_bcast(icontxt,prec%fill)
call psb_bcast(icontxt,prec%thr) call psb_bcast(icontxt,prec%thr)
! broadcast second (post-)smoother
! broadcast (other) AMG parameters call psb_bcast(icontxt,prec%smther2)
if (psb_toupper(prec%ptype) == 'ML') then call psb_bcast(icontxt,prec%jsweeps2)
call psb_bcast(icontxt,prec%novr2)
call psb_bcast(icontxt,prec%mlcycle) call psb_bcast(icontxt,prec%restr2)
call psb_bcast(icontxt,prec%outer_sweeps) call psb_bcast(icontxt,prec%prol2)
call psb_bcast(icontxt,prec%maxlevs) call psb_bcast(icontxt,prec%solve2)
call psb_bcast(icontxt,prec%fill2)
call psb_bcast(icontxt,prec%smther2) call psb_bcast(icontxt,prec%thr2)
call psb_bcast(icontxt,prec%jsweeps2)
call psb_bcast(icontxt,prec%novr2) ! broadcast AMG parameters
call psb_bcast(icontxt,prec%restr2) call psb_bcast(icontxt,prec%mlcycle)
call psb_bcast(icontxt,prec%prol2) call psb_bcast(icontxt,prec%outer_sweeps)
call psb_bcast(icontxt,prec%solve2) call psb_bcast(icontxt,prec%maxlevs)
call psb_bcast(icontxt,prec%fill2)
call psb_bcast(icontxt,prec%thr2) call psb_bcast(icontxt,prec%aggr_prol)
call psb_bcast(icontxt,prec%par_aggr_alg)
call psb_bcast(icontxt,prec%aggr_prol) call psb_bcast(icontxt,prec%aggr_ord)
call psb_bcast(icontxt,prec%par_aggr_alg) call psb_bcast(icontxt,prec%aggr_filter)
call psb_bcast(icontxt,prec%aggr_ord) call psb_bcast(icontxt,prec%mncrratio)
call psb_bcast(icontxt,prec%aggr_filter) call psb_bcast(ictxt,prec%thrvsz)
call psb_bcast(icontxt,prec%mncrratio) if (prec%thrvsz > 0) then
call psb_bcast(ictxt,prec%thrvsz) if (iam /= psb_root_) call psb_realloc(prec%thrvsz,prec%athresv,info)
if (prec%thrvsz > 0) then call psb_bcast(ictxt,prec%athresv)
if (iam /= psb_root_) call psb_realloc(prec%thrvsz,prec%athresv,info)
call psb_bcast(ictxt,prec%athresv)
end if
call psb_bcast(ictxt,prec%athres)
call psb_bcast(icontxt,prec%csize)
call psb_bcast(icontxt,prec%cmat)
call psb_bcast(icontxt,prec%csolve)
call psb_bcast(icontxt,prec%csbsolve)
call psb_bcast(icontxt,prec%cfill)
call psb_bcast(icontxt,prec%cthres)
call psb_bcast(icontxt,prec%cjswp)
end if end if
call psb_bcast(ictxt,prec%athres)
call psb_bcast(icontxt,prec%csize)
call psb_bcast(icontxt,prec%cmat)
call psb_bcast(icontxt,prec%csolve)
call psb_bcast(icontxt,prec%csbsolve)
call psb_bcast(icontxt,prec%cfill)
call psb_bcast(icontxt,prec%cthres)
call psb_bcast(icontxt,prec%cjswp)
end subroutine get_parms end subroutine get_parms

@ -368,7 +368,7 @@ program mld_zf_sample
case ('JACOBI','GS','FWGS','FBGS') case ('JACOBI','GS','FWGS','FBGS')
! 1-level sweeps from "outer_sweeps" ! 1-level sweeps from "outer_sweeps"
call prec%set('smoother_sweeps', p_choice%outer_sweeps, info) call prec%set('smoother_sweeps', p_choice%jsweeps, info)
case ('BJAC') case ('BJAC')
call prec%set('smoother_sweeps', p_choice%jsweeps, info) call prec%set('smoother_sweeps', p_choice%jsweeps, info)
@ -412,29 +412,41 @@ program mld_zf_sample
call prec%set('smoother_type', p_choice%smther, info) call prec%set('smoother_type', p_choice%smther, info)
call prec%set('smoother_sweeps', p_choice%jsweeps, info) call prec%set('smoother_sweeps', p_choice%jsweeps, info)
call prec%set('sub_ovr', p_choice%novr, info)
call prec%set('sub_restr', p_choice%restr, info) select case (psb_toupper(p_choice%smther))
call prec%set('sub_prol', p_choice%prol, info) case ('GS','BWGS','FBGS','JACOBI')
call prec%set('sub_solve', p_choice%solve, info) ! do nothing
call prec%set('sub_fillin', p_choice%fill, info) case default
call prec%set('sub_iluthrs', p_choice%thr, info) call prec%set('sub_ovr', p_choice%novr, info)
call prec%set('sub_restr', p_choice%restr, info)
call prec%set('sub_prol', p_choice%prol, info)
call prec%set('sub_solve', p_choice%solve, info)
call prec%set('sub_fillin', p_choice%fill, info)
call prec%set('sub_iluthrs', p_choice%thr, info)
end select
if (psb_toupper(p_choice%smther2) /= 'NONE') then if (psb_toupper(p_choice%smther2) /= 'NONE') then
call prec%set('smoother_type', p_choice%smther2, info,pos='post') call prec%set('smoother_type', p_choice%smther2, info,pos='post')
call prec%set('smoother_sweeps', p_choice%jsweeps2, info,pos='post') call prec%set('smoother_sweeps', p_choice%jsweeps2, info,pos='post')
call prec%set('sub_ovr', p_choice%novr2, info,pos='post') select case (psb_toupper(p_choice%smther2))
call prec%set('sub_restr', p_choice%restr2, info,pos='post') case ('GS','BWGS','FBGS','JACOBI')
call prec%set('sub_prol', p_choice%prol2, info,pos='post') ! do nothing
call prec%set('sub_solve', p_choice%solve2, info,pos='post') case default
call prec%set('sub_fillin', p_choice%fill2, info,pos='post') call prec%set('sub_ovr', p_choice%novr2, info,pos='post')
call prec%set('sub_iluthrs', p_choice%thr2, info,pos='post') call prec%set('sub_restr', p_choice%restr2, info,pos='post')
call prec%set('sub_prol', p_choice%prol2, info,pos='post')
call prec%set('sub_solve', p_choice%solve2, info,pos='post')
call prec%set('sub_fillin', p_choice%fill2, info,pos='post')
call prec%set('sub_iluthrs', p_choice%thr2, info,pos='post')
end select
end if end if
if (psb_toupper(p_choice%csolve) /= 'DEFLT') then if (psb_toupper(p_choice%csolve) /= 'DEFLT') then
call prec%set('coarse_solve', p_choice%csolve, info) call prec%set('coarse_solve', p_choice%csolve, info)
if (psb_toupper(p_choice%csolve) == 'BJAC') & if (psb_toupper(p_choice%csolve) == 'BJAC') &
& call prec%set('coarse_subsolve', p_choice%csbsolve, info) & call prec%set('coarse_subsolve', p_choice%csbsolve, info)
call prec%set('coarse_mat', p_choice%cmat, info) if (psb_toupper(p_choice%cmat) /= 'DEFLT')&
& call prec%set('coarse_mat', p_choice%cmat, info)
call prec%set('coarse_fillin', p_choice%cfill, info) call prec%set('coarse_fillin', p_choice%cfill, info)
call prec%set('coarse_iluthrs', p_choice%cthres, info) call prec%set('coarse_iluthrs', p_choice%cthres, info)
call prec%set('coarse_sweeps', p_choice%cjswp, info) call prec%set('coarse_sweeps', p_choice%cjswp, info)
@ -619,9 +631,27 @@ contains
! preconditioner type ! preconditioner type
call read_data(prec%descr,psb_inp_unit) ! verbose description of the prec call read_data(prec%descr,psb_inp_unit) ! verbose description of the prec
call read_data(prec%ptype,psb_inp_unit) ! preconditioner type call read_data(prec%ptype,psb_inp_unit) ! preconditioner type
call read_data(prec%outer_sweeps,psb_inp_unit) ! number of 1lev/outer sweeps ! First smoother / 1-lev preconditioner
call read_data(prec%smther,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps,psb_inp_unit) ! (pre-)smoother / 1-lev prec sweeps
call read_data(prec%novr,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve,psb_inp_unit) ! local subsolver
call read_data(prec%fill,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr,psb_inp_unit) ! threshold for ILUT
! Second smoother/ AMG post-smoother (if NONE ignored in main)
call read_data(prec%smther2,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps2,psb_inp_unit) ! (post-)smoother sweeps
call read_data(prec%novr2,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr2,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol2,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve2,psb_inp_unit) ! local subsolver
call read_data(prec%fill2,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr2,psb_inp_unit) ! threshold for ILUT
! general AMG data ! general AMG data
call read_data(prec%mlcycle,psb_inp_unit) ! AMG cycle type call read_data(prec%mlcycle,psb_inp_unit) ! AMG cycle type
call read_data(prec%outer_sweeps,psb_inp_unit) ! number of 1lev/outer sweeps
call read_data(prec%maxlevs,psb_inp_unit) ! max number of levels in AMG prec call read_data(prec%maxlevs,psb_inp_unit) ! max number of levels in AMG prec
call read_data(prec%csize,psb_inp_unit) ! min size coarsest mat call read_data(prec%csize,psb_inp_unit) ! min size coarsest mat
! aggregation ! aggregation
@ -638,24 +668,6 @@ contains
read(psb_inp_unit,*) ! dummy read to skip a record read(psb_inp_unit,*) ! dummy read to skip a record
end if end if
call read_data(prec%athres,psb_inp_unit) ! smoothed aggr thresh call read_data(prec%athres,psb_inp_unit) ! smoothed aggr thresh
! AMG smoother (or pre-smoother) / 1-lev preconditioner
call read_data(prec%smther,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps,psb_inp_unit) ! (pre-)smoother / 1-lev prec sweeps
call read_data(prec%novr,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve,psb_inp_unit) ! local subsolver
call read_data(prec%fill,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr,psb_inp_unit) ! threshold for ILUT
! AMG post-smoother
call read_data(prec%smther2,psb_inp_unit) ! smoother type
call read_data(prec%jsweeps2,psb_inp_unit) ! (post-)smoother sweeps
call read_data(prec%novr2,psb_inp_unit) ! number of overlap layers
call read_data(prec%restr2,psb_inp_unit) ! restriction over application of AS
call read_data(prec%prol2,psb_inp_unit) ! prolongation over application of AS
call read_data(prec%solve2,psb_inp_unit) ! local subsolver
call read_data(prec%fill2,psb_inp_unit) ! fill-in for incomplete LU
call read_data(prec%thr2,psb_inp_unit) ! threshold for ILUT
! coasest-level solver ! coasest-level solver
call read_data(prec%csolve,psb_inp_unit) ! coarsest-lev solver call read_data(prec%csolve,psb_inp_unit) ! coarsest-lev solver
call read_data(prec%csbsolve,psb_inp_unit) ! coarsest-lev subsolver call read_data(prec%csbsolve,psb_inp_unit) ! coarsest-lev subsolver
@ -684,7 +696,7 @@ contains
call psb_bcast(icontxt,prec%ptype) call psb_bcast(icontxt,prec%ptype)
! broadcast first (pre-)smoother / 1-lev prec data ! broadcast first (pre-)smoother / 1-lev prec data
call psb_bcast(icontxt,prec%smther) ! actually not needed for 1-lev precs call psb_bcast(icontxt,prec%smther)
call psb_bcast(icontxt,prec%jsweeps) call psb_bcast(icontxt,prec%jsweeps)
call psb_bcast(icontxt,prec%novr) call psb_bcast(icontxt,prec%novr)
call psb_bcast(icontxt,prec%restr) call psb_bcast(icontxt,prec%restr)
@ -692,44 +704,41 @@ contains
call psb_bcast(icontxt,prec%solve) call psb_bcast(icontxt,prec%solve)
call psb_bcast(icontxt,prec%fill) call psb_bcast(icontxt,prec%fill)
call psb_bcast(icontxt,prec%thr) call psb_bcast(icontxt,prec%thr)
! broadcast second (post-)smoother
! broadcast (other) AMG parameters call psb_bcast(icontxt,prec%smther2)
if (psb_toupper(prec%ptype) == 'ML') then call psb_bcast(icontxt,prec%jsweeps2)
call psb_bcast(icontxt,prec%novr2)
call psb_bcast(icontxt,prec%mlcycle) call psb_bcast(icontxt,prec%restr2)
call psb_bcast(icontxt,prec%outer_sweeps) call psb_bcast(icontxt,prec%prol2)
call psb_bcast(icontxt,prec%maxlevs) call psb_bcast(icontxt,prec%solve2)
call psb_bcast(icontxt,prec%fill2)
call psb_bcast(icontxt,prec%smther2) call psb_bcast(icontxt,prec%thr2)
call psb_bcast(icontxt,prec%jsweeps2)
call psb_bcast(icontxt,prec%novr2) ! broadcast AMG parameters
call psb_bcast(icontxt,prec%restr2) call psb_bcast(icontxt,prec%mlcycle)
call psb_bcast(icontxt,prec%prol2) call psb_bcast(icontxt,prec%outer_sweeps)
call psb_bcast(icontxt,prec%solve2) call psb_bcast(icontxt,prec%maxlevs)
call psb_bcast(icontxt,prec%fill2)
call psb_bcast(icontxt,prec%thr2) call psb_bcast(icontxt,prec%aggr_prol)
call psb_bcast(icontxt,prec%par_aggr_alg)
call psb_bcast(icontxt,prec%aggr_prol) call psb_bcast(icontxt,prec%aggr_ord)
call psb_bcast(icontxt,prec%par_aggr_alg) call psb_bcast(icontxt,prec%aggr_filter)
call psb_bcast(icontxt,prec%aggr_ord) call psb_bcast(icontxt,prec%mncrratio)
call psb_bcast(icontxt,prec%aggr_filter) call psb_bcast(ictxt,prec%thrvsz)
call psb_bcast(icontxt,prec%mncrratio) if (prec%thrvsz > 0) then
call psb_bcast(ictxt,prec%thrvsz) if (iam /= psb_root_) call psb_realloc(prec%thrvsz,prec%athresv,info)
if (prec%thrvsz > 0) then call psb_bcast(ictxt,prec%athresv)
if (iam /= psb_root_) call psb_realloc(prec%thrvsz,prec%athresv,info)
call psb_bcast(ictxt,prec%athresv)
end if
call psb_bcast(ictxt,prec%athres)
call psb_bcast(icontxt,prec%csize)
call psb_bcast(icontxt,prec%cmat)
call psb_bcast(icontxt,prec%csolve)
call psb_bcast(icontxt,prec%csbsolve)
call psb_bcast(icontxt,prec%cfill)
call psb_bcast(icontxt,prec%cthres)
call psb_bcast(icontxt,prec%cjswp)
end if end if
call psb_bcast(ictxt,prec%athres)
call psb_bcast(icontxt,prec%csize)
call psb_bcast(icontxt,prec%cmat)
call psb_bcast(icontxt,prec%csolve)
call psb_bcast(icontxt,prec%csbsolve)
call psb_bcast(icontxt,prec%cfill)
call psb_bcast(icontxt,prec%cthres)
call psb_bcast(icontxt,prec%cjswp)
end subroutine get_parms end subroutine get_parms

@ -1,49 +1,55 @@
/opt/matrici/qc2534.mtx ! This matrix (and others) from: http://math.nist.gov/MatrixMarket/ or %%%%%%%%%%% General arguments % Lines starting with % are ignored.
NONE ! rhs | http://www.cise.ufl.edu/research/sparse/matrices/index.html qc2534.mtx ! Other matrices from: http://math.nist.gov/MatrixMarket/ or
NONE ! rhs ! http://www.cise.ufl.edu/research/sparse/matrices/index.html
NONE ! Initial guess NONE ! Initial guess
NONE ! Reference solution NONE ! Reference solution
MM ! File format: MatrixMarket or Harwell-Boeing MM ! File format: MatrixMarket or Harwell-Boeing
CSR ! Storage format: CSR COO JAD CSR ! Storage format: CSR COO JAD
BLOCK ! PART (partition method): BLOCK GRAPH GRAPH ! PART (partition method): BLOCK GRAPH
CG ! Iterative method: BiCGSTAB BiCGSTABL BiCG CG CGS FCG GCR RGMRES CG ! Iterative method: BiCGSTAB BiCGSTABL BiCG CG CGS FCG GCR RGMRES
2 ! ISTOPC 2 ! ISTOPC
00500 ! ITMAX 00500 ! ITMAX
1 ! ITRACE 1 ! ITRACE
30 ! IRST (restart for RGMRES and BiCGSTABL) 30 ! IRST (restart for RGMRES and BiCGSTABL)
1.d-6 ! EPS 1.d-6 ! EPS
%%%%%%%%%%% Main preconditioner choices %%%%%%%%%%%%%%%%
ML-VCYCLE-FBGS-R-UMF ! Longer descriptive name for preconditioner (up to 20 chars) ML-VCYCLE-FBGS-R-UMF ! Longer descriptive name for preconditioner (up to 20 chars)
ML ! Preconditioner type: NONE JACOBI BJAC AS ML ML ! Preconditioner type: NONE JACOBI GS FBGS BJAC AS ML
1 ! Number of sweeps for 1-level, outer sweeps for ML; lines below ignored for non-ML %%%%%%%%%%% First smoother (for all levels but coarsest) %%%%%%%%%%%%%%%%
VCYCLE ! Type of multilevel CYCLE: VCYCLE WCYCLE KCYCLE MULT ADD FBGS ! Smoother type JACOBI FBGS GS BWGS BJAC AS. For 1-level, repeats previous.
-3 ! Max Number of levels in a multilevel preconditioner; if <0, lib default 1 ! Number of sweeps for smoother
-3 ! Target coarse matrix size; if <0, lib default
SMOOTHED ! Type of aggregation: SMOOTHED UNSMOOTHED
DEC ! Parallel aggregation: DEC, SYMDEC
NATURAL ! Ordering of aggregation NATURAL DEGREE
NOFILTER ! Filtering of matrix ? FILTER NOFILTER
-1.5 ! Coarsening ratio, if < 0 use library default
2 ! Number of thresholds in vector, next line ignored if <= 0
0.05 0.025 ! Thresholds
0.0100d0 ! Smoothed aggregation threshold: >= 0.0
FBGS ! Smoother type JACOBI GS BGS BJAC AS; ignored for non-ML
1 ! Number of sweeps for (pre) smoother
0 ! Number of overlap layers for AS preconditioner 0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG NONE ! AS prolongation operator: NONE SUM AVG
JACOBI ! Subdomain solver: JACOBI BS BGS ILU ILUT MILU MUMPS SLU UMF ILU ! Subdomain solver for BJAC/AS: JACOBI GS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P) 0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P) 1.d-4 ! Threshold T for ILU(T,P)
%%%%%%%%%%% Second smoother, always ignored for non-ML %%%%%%%%%%%%%%%%
NONE ! Second (post) smoother, ignored if NONE NONE ! Second (post) smoother, ignored if NONE
1 ! Number of sweeps for (post) smoother 1 ! Number of sweeps for (post) smoother
0 ! Number of overlap layers for AS preconditioner 0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG NONE ! AS prolongation operator: NONE SUM AVG
JACOBI ! Subdomain solver: JACOBI BS BGS ILU ILUT MILU MUMPS SLU UMF ILU ! Subdomain solver for BJAC/AS: JACOBI GS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P) 0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P) 1.d-4 ! Threshold T for ILU(T,P)
DEFLT ! Coarsest-level solver: MUMPS UMF SLU SLUDIST JACOBI GS BJAC %%%%%%%%%%% Multilevel parameters %%%%%%%%%%%%%%%%
UMF ! Coarsest-level subsolver: ILU UMF SLU MUMPS SLUDIST VCYCLE ! Type of multilevel CYCLE: VCYCLE WCYCLE KCYCLE MULT ADD
REPL ! Coarsest-level matrix distribution: DIST REPL 4 ! Number of outer sweeps for ML
-3 ! Max Number of levels in a multilevel preconditioner; if <0, lib default
-3 ! Target coarse matrix size; if <0, lib default
SMOOTHED ! Type of aggregation: SMOOTHED UNSMOOTHED
DEC ! Parallel aggregation: DEC, SYMDEC
NATURAL ! Ordering of aggregation NATURAL DEGREE
FILTER ! Filtering of matrix: FILTER NOFILTER
-1.5 ! Coarsening ratio, if < 0 use library default
-2 ! Number of thresholds in vector, next line ignored if <= 0
0.05 0.025 ! Thresholds
-0.0100d0 ! Smoothed aggregation threshold, ignored if < 0
%%%%%%%%%%% Coarse level solver %%%%%%%%%%%%%%%%
DEFLT ! Coarsest-level solver: MUMPS UMF SLU SLUDIST JACOBI GS BJAC DEFLT
UMF ! Coarsest-level subsolver for BJAC: ILU ILUT MILU UMF MUMPS SLU
DEFLT ! Coarsest-level matrix distribution: DIST REPL, DEFLT
1 ! Coarsest-level fillin P for ILU(P) and ILU(T,P) 1 ! Coarsest-level fillin P for ILU(P) and ILU(T,P)
1.d-4 ! Coarsest-level threshold T for ILU(T,P) 1.d-4 ! Coarsest-level threshold T for ILU(T,P)
1 ! Number of Jacobi sweeps for JACOBI/GS/BJAC coarsest-level solver 1 ! Number of sweeps for JACOBI/GS/BJAC coarsest-level solver

@ -1,49 +1,55 @@
mld_mat.mtx ! This matrix (and others) from: http://math.nist.gov/MatrixMarket/ or %%%%%%%%%%% General arguments % Lines starting with % are ignored.
mld_rhs.mtx ! rhs | http://www.cise.ufl.edu/research/sparse/matrices/index.html mld_mat.mtx ! Other matrices from: http://math.nist.gov/MatrixMarket/ or
mld_rhs.mtx ! rhs ! http://www.cise.ufl.edu/research/sparse/matrices/index.html
NONE ! Initial guess NONE ! Initial guess
mld_sol.mtx ! Reference solution mld_sol.mtx ! Reference solution
MM ! File format: MatrixMarket or Harwell-Boeing MM ! File format: MatrixMarket or Harwell-Boeing
CSR ! Storage format: CSR COO JAD CSR ! Storage format: CSR COO JAD
BLOCK ! PART (partition method): BLOCK GRAPH GRAPH ! PART (partition method): BLOCK GRAPH
CG ! Iterative method: BiCGSTAB BiCGSTABL BiCG CG CGS FCG GCR RGMRES CG ! Iterative method: BiCGSTAB BiCGSTABL BiCG CG CGS FCG GCR RGMRES
2 ! ISTOPC 2 ! ISTOPC
00500 ! ITMAX 00500 ! ITMAX
1 ! ITRACE 1 ! ITRACE
30 ! IRST (restart for RGMRES and BiCGSTABL) 30 ! IRST (restart for RGMRES and BiCGSTABL)
1.d-6 ! EPS 1.d-6 ! EPS
%%%%%%%%%%% Main preconditioner choices %%%%%%%%%%%%%%%%
ML-VCYCLE-FBGS-R-UMF ! Longer descriptive name for preconditioner (up to 20 chars) ML-VCYCLE-FBGS-R-UMF ! Longer descriptive name for preconditioner (up to 20 chars)
ML ! Preconditioner type: NONE JACOBI BJAC AS ML ML ! Preconditioner type: NONE JACOBI GS FBGS BJAC AS ML
1 ! Number of sweeps for 1-level, outer sweeps for ML; lines below ignored for non-ML %%%%%%%%%%% First smoother (for all levels but coarsest) %%%%%%%%%%%%%%%%
VCYCLE ! Type of multilevel CYCLE: VCYCLE WCYCLE KCYCLE MULT ADD FBGS ! Smoother type JACOBI FBGS GS BWGS BJAC AS. For 1-level, repeats previous.
-3 ! Max Number of levels in a multilevel preconditioner; if <0, lib default 1 ! Number of sweeps for smoother
-3 ! Target coarse matrix size; if <0, lib default
SMOOTHED ! Type of aggregation: SMOOTHED UNSMOOTHED
DEC ! Parallel aggregation: DEC, SYMDEC
NATURAL ! Ordering of aggregation NATURAL DEGREE
NOFILTER ! Filtering of matrix ? FILTER NOFILTER
-1.5 ! Coarsening ratio, if < 0 use library default
2 ! Number of thresholds in vector, next line ignored if <= 0
0.05 0.025 ! Thresholds
0.0100d0 ! Smoothed aggregation threshold: >= 0.0
FBGS ! Smoother type JACOBI GS BGS BJAC AS; ignored for non-ML
1 ! Number of sweeps for (pre) smoother
0 ! Number of overlap layers for AS preconditioner 0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG NONE ! AS prolongation operator: NONE SUM AVG
JACOBI ! Subdomain solver: JACOBI BS BGS ILU ILUT MILU MUMPS SLU UMF ILU ! Subdomain solver for BJAC/AS: JACOBI GS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P) 0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P) 1.d-4 ! Threshold T for ILU(T,P)
%%%%%%%%%%% Second smoother, always ignored for non-ML %%%%%%%%%%%%%%%%
NONE ! Second (post) smoother, ignored if NONE NONE ! Second (post) smoother, ignored if NONE
1 ! Number of sweeps for (post) smoother 1 ! Number of sweeps for (post) smoother
0 ! Number of overlap layers for AS preconditioner 0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG NONE ! AS prolongation operator: NONE SUM AVG
JACOBI ! Subdomain solver: JACOBI BS BGS ILU ILUT MILU MUMPS SLU UMF ILU ! Subdomain solver for BJAC/AS: JACOBI GS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P) 0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P) 1.d-4 ! Threshold T for ILU(T,P)
DEFLT ! Coarsest-level solver: MUMPS UMF SLU SLUDIST JACOBI GS BJAC %%%%%%%%%%% Multilevel parameters %%%%%%%%%%%%%%%%
UMF ! Coarsest-level subsolver: ILU UMF SLU MUMPS SLUDIST VCYCLE ! Type of multilevel CYCLE: VCYCLE WCYCLE KCYCLE MULT ADD
REPL ! Coarsest-level matrix distribution: DIST REPL 4 ! Number of outer sweeps for ML
-3 ! Max Number of levels in a multilevel preconditioner; if <0, lib default
-3 ! Target coarse matrix size; if <0, lib default
SMOOTHED ! Type of aggregation: SMOOTHED UNSMOOTHED
DEC ! Parallel aggregation: DEC, SYMDEC
NATURAL ! Ordering of aggregation NATURAL DEGREE
FILTER ! Filtering of matrix: FILTER NOFILTER
-1.5 ! Coarsening ratio, if < 0 use library default
-2 ! Number of thresholds in vector, next line ignored if <= 0
0.05 0.025 ! Thresholds
-0.0100d0 ! Smoothed aggregation threshold, ignored if < 0
%%%%%%%%%%% Coarse level solver %%%%%%%%%%%%%%%%
DEFLT ! Coarsest-level solver: MUMPS UMF SLU SLUDIST JACOBI GS BJAC DEFLT
UMF ! Coarsest-level subsolver for BJAC: ILU ILUT MILU UMF MUMPS SLU
DEFLT ! Coarsest-level matrix distribution: DIST REPL, DEFLT
1 ! Coarsest-level fillin P for ILU(P) and ILU(T,P) 1 ! Coarsest-level fillin P for ILU(P) and ILU(T,P)
1.d-4 ! Coarsest-level threshold T for ILU(T,P) 1.d-4 ! Coarsest-level threshold T for ILU(T,P)
1 ! Number of Jacobi sweeps for JACOBI/GS/BJAC coarsest-level solver 1 ! Number of sweeps for JACOBI/GS/BJAC coarsest-level solver

@ -1,7 +1,8 @@
poisson_200x200.mtx ! This matrix (and others) from: http://math.nist.gov/MatrixMarket/ or %%%%%%%%%%% General arguments % Lines starting with % are ignored.
NONE ! rhs | http://www.cise.ufl.edu/research/sparse/matrices/index.html mld_mat.mtx ! Other matrices from: http://math.nist.gov/MatrixMarket/ or
mld_rhs.mtx ! rhs ! http://www.cise.ufl.edu/research/sparse/matrices/index.html
NONE ! Initial guess NONE ! Initial guess
NONE !mld_sol.mtx ! Reference solution mld_sol.mtx ! Reference solution
MM ! File format: MatrixMarket or Harwell-Boeing MM ! File format: MatrixMarket or Harwell-Boeing
CSR ! Storage format: CSR COO JAD CSR ! Storage format: CSR COO JAD
GRAPH ! PART (partition method): BLOCK GRAPH GRAPH ! PART (partition method): BLOCK GRAPH
@ -11,39 +12,44 @@ CG ! Iterative method: BiCGSTAB BiCGSTABL BiCG CG CGS F
1 ! ITRACE 1 ! ITRACE
30 ! IRST (restart for RGMRES and BiCGSTABL) 30 ! IRST (restart for RGMRES and BiCGSTABL)
1.d-6 ! EPS 1.d-6 ! EPS
%%%%%%%%%%% Main preconditioner choices %%%%%%%%%%%%%%%%
ML-VCYCLE-FBGS-R-UMF ! Longer descriptive name for preconditioner (up to 20 chars) ML-VCYCLE-FBGS-R-UMF ! Longer descriptive name for preconditioner (up to 20 chars)
ML ! Preconditioner type: NONE JACOBI BJAC AS ML ML ! Preconditioner type: NONE JACOBI GS FBGS BJAC AS ML
1 ! Number of sweeps for 1-level, outer sweeps for ML; lines below ignored for non-ML %%%%%%%%%%% First smoother (for all levels but coarsest) %%%%%%%%%%%%%%%%
VCYCLE ! Type of multilevel CYCLE: VCYCLE WCYCLE KCYCLE MULT ADD FBGS ! Smoother type JACOBI FBGS GS BWGS BJAC AS. For 1-level, repeats previous.
-3 ! Max Number of levels in a multilevel preconditioner; if <0, lib default 1 ! Number of sweeps for smoother
-500 ! Target coarse matrix size; if <0, lib default
SMOOTHED ! Type of aggregation: SMOOTHED UNSMOOTHED
DEC ! Parallel aggregation: DEC, SYMDEC
NATURAL ! Ordering of aggregation NATURAL DEGREE
NOFILTER ! Filtering of matrix ? FILTER NOFILTER
-1.5 ! Coarsening ratio, if < 0 use library default
-2 ! Number of thresholds in vector, next line ignored if <= 0
0.05 0.025 ! Thresholds
0.0d0 ! Smoothed aggregation threshold: >= 0.0
BJAC ! Smoother type JACOBI GS BGS BJAC AS; ignored for non-ML
1 ! Number of sweeps for (pre) smoother
0 ! Number of overlap layers for AS preconditioner 0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG NONE ! AS prolongation operator: NONE SUM AVG
GS ! Subdomain solver: JACOBI BS BGS ILU ILUT MILU MUMPS SLU UMF ILU ! Subdomain solver for BJAC/AS: JACOBI GS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P) 0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P) 1.d-4 ! Threshold T for ILU(T,P)
BJAC ! Second (post) smoother, ignored if NONE %%%%%%%%%%% Second smoother, always ignored for non-ML %%%%%%%%%%%%%%%%
NONE ! Second (post) smoother, ignored if NONE
1 ! Number of sweeps for (post) smoother 1 ! Number of sweeps for (post) smoother
0 ! Number of overlap layers for AS preconditioner 0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG NONE ! AS prolongation operator: NONE SUM AVG
BWGS ! Subdomain solver: JACOBI BS BGS ILU ILUT MILU MUMPS SLU UMF ILU ! Subdomain solver for BJAC/AS: JACOBI GS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P) 0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P) 1.d-4 ! Threshold T for ILU(T,P)
DEFLT ! Coarsest-level solver: MUMPS UMF SLU SLUDIST JACOBI GS BJAC %%%%%%%%%%% Multilevel parameters %%%%%%%%%%%%%%%%
ILU ! Coarsest-level subsolver: ILU UMF SLU MUMPS SLUDIST VCYCLE ! Type of multilevel CYCLE: VCYCLE WCYCLE KCYCLE MULT ADD
DIST ! Coarsest-level matrix distribution: DIST REPL 4 ! Number of outer sweeps for ML
-3 ! Max Number of levels in a multilevel preconditioner; if <0, lib default
-3 ! Target coarse matrix size; if <0, lib default
SMOOTHED ! Type of aggregation: SMOOTHED UNSMOOTHED
DEC ! Parallel aggregation: DEC, SYMDEC
NATURAL ! Ordering of aggregation NATURAL DEGREE
FILTER ! Filtering of matrix: FILTER NOFILTER
-1.5 ! Coarsening ratio, if < 0 use library default
-2 ! Number of thresholds in vector, next line ignored if <= 0
0.05 0.025 ! Thresholds
-0.0100d0 ! Smoothed aggregation threshold, ignored if < 0
%%%%%%%%%%% Coarse level solver %%%%%%%%%%%%%%%%
DEFLT ! Coarsest-level solver: MUMPS UMF SLU SLUDIST JACOBI GS BJAC DEFLT
UMF ! Coarsest-level subsolver for BJAC: ILU ILUT MILU UMF MUMPS SLU
DEFLT ! Coarsest-level matrix distribution: DIST REPL, DEFLT
1 ! Coarsest-level fillin P for ILU(P) and ILU(T,P) 1 ! Coarsest-level fillin P for ILU(P) and ILU(T,P)
1.d-4 ! Coarsest-level threshold T for ILU(T,P) 1.d-4 ! Coarsest-level threshold T for ILU(T,P)
1 ! Number of Jacobi sweeps for JACOBI/GS/BJAC coarsest-level solver 1 ! Number of sweeps for JACOBI/GS/BJAC coarsest-level solver

@ -1,49 +1,55 @@
/opt/matrici/qc2534.mtx ! This matrix (and others) from: http://math.nist.gov/MatrixMarket/ or %%%%%%%%%%% General arguments % Lines starting with % are ignored.
NONE ! rhs | http://www.cise.ufl.edu/research/sparse/matrices/index.html qc2534.mtx ! Other matrices from: http://math.nist.gov/MatrixMarket/ or
NONE ! rhs ! http://www.cise.ufl.edu/research/sparse/matrices/index.html
NONE ! Initial guess NONE ! Initial guess
NONE ! Reference solution NONE ! Reference solution
MM ! File format: MatrixMarket or Harwell-Boeing MM ! File format: MatrixMarket or Harwell-Boeing
CSR ! Storage format: CSR COO JAD CSR ! Storage format: CSR COO JAD
BLOCK ! PART (partition method): BLOCK GRAPH GRAPH ! PART (partition method): BLOCK GRAPH
CG ! Iterative method: BiCGSTAB BiCGSTABL BiCG CG CGS FCG GCR RGMRES CG ! Iterative method: BiCGSTAB BiCGSTABL BiCG CG CGS FCG GCR RGMRES
2 ! ISTOPC 2 ! ISTOPC
00500 ! ITMAX 00500 ! ITMAX
1 ! ITRACE 1 ! ITRACE
30 ! IRST (restart for RGMRES and BiCGSTABL) 30 ! IRST (restart for RGMRES and BiCGSTABL)
1.d-6 ! EPS 1.d-6 ! EPS
%%%%%%%%%%% Main preconditioner choices %%%%%%%%%%%%%%%%
ML-VCYCLE-FBGS-R-UMF ! Longer descriptive name for preconditioner (up to 20 chars) ML-VCYCLE-FBGS-R-UMF ! Longer descriptive name for preconditioner (up to 20 chars)
ML ! Preconditioner type: NONE JACOBI BJAC AS ML ML ! Preconditioner type: NONE JACOBI GS FBGS BJAC AS ML
1 ! Number of sweeps for 1-level, outer sweeps for ML; lines below ignored for non-ML %%%%%%%%%%% First smoother (for all levels but coarsest) %%%%%%%%%%%%%%%%
VCYCLE ! Type of multilevel CYCLE: VCYCLE WCYCLE KCYCLE MULT ADD FBGS ! Smoother type JACOBI FBGS GS BWGS BJAC AS. For 1-level, repeats previous.
-3 ! Max Number of levels in a multilevel preconditioner; if <0, lib default 1 ! Number of sweeps for smoother
-3 ! Target coarse matrix size; if <0, lib default
SMOOTHED ! Type of aggregation: SMOOTHED UNSMOOTHED
DEC ! Parallel aggregation: DEC, SYMDEC
NATURAL ! Ordering of aggregation NATURAL DEGREE
NOFILTER ! Filtering of matrix ? FILTER NOFILTER
-1.5 ! Coarsening ratio, if < 0 use library default
2 ! Number of thresholds in vector, next line ignored if <= 0
0.05 0.025 ! Thresholds
0.0100d0 ! Smoothed aggregation threshold: >= 0.0
FBGS ! Smoother type JACOBI GS BGS BJAC AS; ignored for non-ML
1 ! Number of sweeps for (pre) smoother
0 ! Number of overlap layers for AS preconditioner 0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG NONE ! AS prolongation operator: NONE SUM AVG
JACOBI ! Subdomain solver: JACOBI BS BGS ILU ILUT MILU MUMPS SLU UMF ILU ! Subdomain solver for BJAC/AS: JACOBI GS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P) 0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P) 1.d-4 ! Threshold T for ILU(T,P)
%%%%%%%%%%% Second smoother, always ignored for non-ML %%%%%%%%%%%%%%%%
NONE ! Second (post) smoother, ignored if NONE NONE ! Second (post) smoother, ignored if NONE
1 ! Number of sweeps for (post) smoother 1 ! Number of sweeps for (post) smoother
0 ! Number of overlap layers for AS preconditioner 0 ! Number of overlap layers for AS preconditioner
HALO ! AS restriction operator: NONE HALO HALO ! AS restriction operator: NONE HALO
NONE ! AS prolongation operator: NONE SUM AVG NONE ! AS prolongation operator: NONE SUM AVG
JACOBI ! Subdomain solver: JACOBI BS BGS ILU ILUT MILU MUMPS SLU UMF ILU ! Subdomain solver for BJAC/AS: JACOBI GS BGS ILU ILUT MILU MUMPS SLU UMF
0 ! Fill level P for ILU(P) and ILU(T,P) 0 ! Fill level P for ILU(P) and ILU(T,P)
1.d-4 ! Threshold T for ILU(T,P) 1.d-4 ! Threshold T for ILU(T,P)
DEFLT ! Coarsest-level solver: MUMPS UMF SLU SLUDIST JACOBI GS BJAC %%%%%%%%%%% Multilevel parameters %%%%%%%%%%%%%%%%
UMF ! Coarsest-level subsolver: ILU UMF SLU MUMPS SLUDIST VCYCLE ! Type of multilevel CYCLE: VCYCLE WCYCLE KCYCLE MULT ADD
REPL ! Coarsest-level matrix distribution: DIST REPL 4 ! Number of outer sweeps for ML
-3 ! Max Number of levels in a multilevel preconditioner; if <0, lib default
-3 ! Target coarse matrix size; if <0, lib default
SMOOTHED ! Type of aggregation: SMOOTHED UNSMOOTHED
DEC ! Parallel aggregation: DEC, SYMDEC
NATURAL ! Ordering of aggregation NATURAL DEGREE
FILTER ! Filtering of matrix: FILTER NOFILTER
-1.5 ! Coarsening ratio, if < 0 use library default
-2 ! Number of thresholds in vector, next line ignored if <= 0
0.05 0.025 ! Thresholds
-0.0100d0 ! Smoothed aggregation threshold, ignored if < 0
%%%%%%%%%%% Coarse level solver %%%%%%%%%%%%%%%%
DEFLT ! Coarsest-level solver: MUMPS UMF SLU SLUDIST JACOBI GS BJAC DEFLT
UMF ! Coarsest-level subsolver for BJAC: ILU ILUT MILU UMF MUMPS SLU
DEFLT ! Coarsest-level matrix distribution: DIST REPL, DEFLT
1 ! Coarsest-level fillin P for ILU(P) and ILU(T,P) 1 ! Coarsest-level fillin P for ILU(P) and ILU(T,P)
1.d-4 ! Coarsest-level threshold T for ILU(T,P) 1.d-4 ! Coarsest-level threshold T for ILU(T,P)
1 ! Number of Jacobi sweeps for JACOBI/GS/BJAC coarsest-level solver 1 ! Number of sweeps for JACOBI/GS/BJAC coarsest-level solver
Loading…
Cancel
Save