stopcriterion
			
			
		
Salvatore Filippone 17 years ago
parent a976a2c942
commit ac6c6731ce

@ -47,7 +47,7 @@
! A default preconditioner is set for each preconditioner type ! A default preconditioner is set for each preconditioner type
! specified by the user: ! specified by the user:
! !
! 'NONE', 'NOPREC' - no preconditioner ! 'NOPREC' - no preconditioner
! !
! 'DIAG' - diagonal preconditioner ! 'DIAG' - diagonal preconditioner
! !
@ -59,12 +59,14 @@
! !
! 'ML' - Multilevel hybrid preconditioner (additive on the ! 'ML' - Multilevel hybrid preconditioner (additive on the
! same level and multiplicative through the levels), ! same level and multiplicative through the levels),
! with nlev levels and post-smoothing only. The block ! with 2 levels and post-smoothing only. RAS with
! Jacobi preconditioner, with ILU(0) on the local ! overlap 1 and ILU(0) on the local blocks is
! blocks, is applied as post-smoother at each level ! applied as post-smoother at each level, but the
! but the coarsest one; four sweeps of the block-Jacobi ! coarsest one; four sweeps of the block-Jacobi solver,
! solver, with ILU(0) on the blocks, are applied at ! with LU from SuperLU on the blocks, are applied at
! the coarsest level, on the distributed coarse matrix. ! the coarsest level, on the distributed coarse matrix.
! The smoothed aggregation algorithm with threshold 0
! is used to build the coarse matrix.
! !
! For the multilevel preconditioners, the levels are numbered in increasing ! For the multilevel preconditioners, the levels are numbered in increasing
! order starting from the finest one, i.e. level 1 is the finest level. ! order starting from the finest one, i.e. level 1 is the finest level.
@ -74,8 +76,8 @@
! p - type(mld_cprec_type), input/output. ! p - type(mld_cprec_type), input/output.
! The preconditioner data structure. ! The preconditioner data structure.
! ptype - character(len=*), input. ! ptype - character(len=*), input.
! The type of preconditioner. Its values are 'NONE', ! The type of preconditioner. Its values are 'NOPREC',
! 'NOPREC', 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding ! 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding
! lowercase strings). ! lowercase strings).
! info - integer, output. ! info - integer, output.
! Error code. ! Error code.
@ -110,7 +112,7 @@ subroutine mld_cprecinit(p,ptype,info,nlev)
endif endif
select case(psb_toupper(ptype(1:len_trim(ptype)))) select case(psb_toupper(ptype(1:len_trim(ptype))))
case ('NONE','NOPREC') case ('NOPREC')
nlev_ = 1 nlev_ = 1
ilev_ = 1 ilev_ = 1
allocate(p%baseprecv(nlev_),stat=info) allocate(p%baseprecv(nlev_),stat=info)
@ -196,7 +198,7 @@ subroutine mld_cprecinit(p,ptype,info,nlev)
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_ p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_
p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_
p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0
p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 1
p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0
p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 1 p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 1
if (nlev_ == 1) return if (nlev_ == 1) return
@ -207,11 +209,11 @@ subroutine mld_cprecinit(p,ptype,info,nlev)
if (info /= 0) return if (info /= 0) return
p%baseprecv(ilev_)%iprcparm(:) = 0 p%baseprecv(ilev_)%iprcparm(:) = 0
p%baseprecv(ilev_)%rprcparm(:) = szero p%baseprecv(ilev_)%rprcparm(:) = szero
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_ p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_as_
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_
p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_
p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0
p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 1
p%baseprecv(ilev_)%iprcparm(mld_ml_type_) = mld_mult_ml_ p%baseprecv(ilev_)%iprcparm(mld_ml_type_) = mld_mult_ml_
p%baseprecv(ilev_)%iprcparm(mld_aggr_alg_) = mld_dec_aggr_ p%baseprecv(ilev_)%iprcparm(mld_aggr_alg_) = mld_dec_aggr_
p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_ p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_
@ -230,7 +232,11 @@ subroutine mld_cprecinit(p,ptype,info,nlev)
p%baseprecv(ilev_)%iprcparm(:) = 0 p%baseprecv(ilev_)%iprcparm(:) = 0
p%baseprecv(ilev_)%rprcparm(:) = szero p%baseprecv(ilev_)%rprcparm(:) = szero
p%baseprecv(ilev_)%iprcparm(mld_coarse_solve_) = mld_bjac_ p%baseprecv(ilev_)%iprcparm(mld_coarse_solve_) = mld_bjac_
#if defined(HAVE_SLU_)
p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_slu_
#else
p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_ilu_n_ p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_ilu_n_
#endif
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_ p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_
p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_ p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_

@ -47,7 +47,7 @@
! A default preconditioner is set for each preconditioner type ! A default preconditioner is set for each preconditioner type
! specified by the user: ! specified by the user:
! !
! 'NONE', 'NOPREC' - no preconditioner ! 'NOPREC' - no preconditioner
! !
! 'DIAG' - diagonal preconditioner ! 'DIAG' - diagonal preconditioner
! !
@ -59,12 +59,14 @@
! !
! 'ML' - Multilevel hybrid preconditioner (additive on the ! 'ML' - Multilevel hybrid preconditioner (additive on the
! same level and multiplicative through the levels), ! same level and multiplicative through the levels),
! with nlev levels and post-smoothing only. The block ! with 2 levels and post-smoothing only. RAS with
! Jacobi preconditioner, with ILU(0) on the local ! overlap 1 and ILU(0) on the local blocks is
! blocks, is applied as post-smoother at each level ! applied as post-smoother at each level, but the
! but the coarsest one; four sweeps of the block-Jacobi ! coarsest one; four sweeps of the block-Jacobi solver,
! solver, with ILU(0) on the blocks, are applied at ! with LU from UMFPACK on the blocks, are applied at
! the coarsest level, on the distributed coarse matrix. ! the coarsest level, on the distributed coarse matrix.
! The smoothed aggregation algorithm with threshold 0
! is used to build the coarse matrix.
! !
! For the multilevel preconditioners, the levels are numbered in increasing ! For the multilevel preconditioners, the levels are numbered in increasing
! order starting from the finest one, i.e. level 1 is the finest level. ! order starting from the finest one, i.e. level 1 is the finest level.
@ -74,8 +76,8 @@
! p - type(mld_dprec_type), input/output. ! p - type(mld_dprec_type), input/output.
! The preconditioner data structure. ! The preconditioner data structure.
! ptype - character(len=*), input. ! ptype - character(len=*), input.
! The type of preconditioner. Its values are 'NONE', ! The type of preconditioner. Its values are 'NOPREC',
! 'NOPREC', 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding ! 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding
! lowercase strings). ! lowercase strings).
! info - integer, output. ! info - integer, output.
! Error code. ! Error code.
@ -110,7 +112,7 @@ subroutine mld_dprecinit(p,ptype,info,nlev)
endif endif
select case(psb_toupper(ptype(1:len_trim(ptype)))) select case(psb_toupper(ptype(1:len_trim(ptype))))
case ('NONE','NOPREC') case ('NOPREC')
nlev_ = 1 nlev_ = 1
ilev_ = 1 ilev_ = 1
allocate(p%baseprecv(nlev_),stat=info) allocate(p%baseprecv(nlev_),stat=info)
@ -196,7 +198,7 @@ subroutine mld_dprecinit(p,ptype,info,nlev)
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_ p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_
p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_
p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0
p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 1
p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0
p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 1 p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 1
if (nlev_ == 1) return if (nlev_ == 1) return
@ -207,11 +209,11 @@ subroutine mld_dprecinit(p,ptype,info,nlev)
if (info /= 0) return if (info /= 0) return
p%baseprecv(ilev_)%iprcparm(:) = 0 p%baseprecv(ilev_)%iprcparm(:) = 0
p%baseprecv(ilev_)%rprcparm(:) = dzero p%baseprecv(ilev_)%rprcparm(:) = dzero
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_ p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_as_
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_
p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_
p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0
p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 1
p%baseprecv(ilev_)%iprcparm(mld_ml_type_) = mld_mult_ml_ p%baseprecv(ilev_)%iprcparm(mld_ml_type_) = mld_mult_ml_
p%baseprecv(ilev_)%iprcparm(mld_aggr_alg_) = mld_dec_aggr_ p%baseprecv(ilev_)%iprcparm(mld_aggr_alg_) = mld_dec_aggr_
p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_ p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_
@ -230,7 +232,13 @@ subroutine mld_dprecinit(p,ptype,info,nlev)
p%baseprecv(ilev_)%iprcparm(:) = 0 p%baseprecv(ilev_)%iprcparm(:) = 0
p%baseprecv(ilev_)%rprcparm(:) = dzero p%baseprecv(ilev_)%rprcparm(:) = dzero
p%baseprecv(ilev_)%iprcparm(mld_coarse_solve_) = mld_bjac_ p%baseprecv(ilev_)%iprcparm(mld_coarse_solve_) = mld_bjac_
#if defined(HAVE_UMF_)
p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_umf_
#elif defined(HAVE_SLU_)
p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_slu_
#else
p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_ilu_n_ p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_ilu_n_
#endif
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_ p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_
p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_ p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_

@ -47,7 +47,7 @@
! A default preconditioner is set for each preconditioner type ! A default preconditioner is set for each preconditioner type
! specified by the user: ! specified by the user:
! !
! 'NONE', 'NOPREC' - no preconditioner ! 'NOPREC' - no preconditioner
! !
! 'DIAG' - diagonal preconditioner ! 'DIAG' - diagonal preconditioner
! !
@ -59,12 +59,14 @@
! !
! 'ML' - Multilevel hybrid preconditioner (additive on the ! 'ML' - Multilevel hybrid preconditioner (additive on the
! same level and multiplicative through the levels), ! same level and multiplicative through the levels),
! with nlev levels and post-smoothing only. The block ! with 2 levels and post-smoothing only. RAS with
! Jacobi preconditioner, with ILU(0) on the local ! overlap 1 and ILU(0) on the local blocks is
! blocks, is applied as post-smoother at each level ! applied as post-smoother at each level, but the
! but the coarsest one; four sweeps of the block-Jacobi ! coarsest one; four sweeps of the block-Jacobi solver,
! solver, with ILU(0) on the blocks, are applied at ! with LU from SuperLU on the blocks, are applied at
! the coarsest level, on the distributed coarse matrix. ! the coarsest level, on the distributed coarse matrix.
! The smoothed aggregation algorithm with threshold 0
! is used to build the coarse matrix.
! !
! For the multilevel preconditioners, the levels are numbered in increasing ! For the multilevel preconditioners, the levels are numbered in increasing
! order starting from the finest one, i.e. level 1 is the finest level. ! order starting from the finest one, i.e. level 1 is the finest level.
@ -74,8 +76,8 @@
! p - type(mld_sprec_type), input/output. ! p - type(mld_sprec_type), input/output.
! The preconditioner data structure. ! The preconditioner data structure.
! ptype - character(len=*), input. ! ptype - character(len=*), input.
! The type of preconditioner. Its values are 'NONE', ! The type of preconditioner. Its values are 'NOPREC',
! 'NOPREC', 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding ! 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding
! lowercase strings). ! lowercase strings).
! info - integer, output. ! info - integer, output.
! Error code. ! Error code.
@ -110,7 +112,7 @@ subroutine mld_sprecinit(p,ptype,info,nlev)
endif endif
select case(psb_toupper(ptype(1:len_trim(ptype)))) select case(psb_toupper(ptype(1:len_trim(ptype))))
case ('NONE','NOPREC') case ('NOPREC')
nlev_ = 1 nlev_ = 1
ilev_ = 1 ilev_ = 1
allocate(p%baseprecv(nlev_),stat=info) allocate(p%baseprecv(nlev_),stat=info)
@ -196,7 +198,7 @@ subroutine mld_sprecinit(p,ptype,info,nlev)
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_ p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_
p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_
p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0
p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 1
p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0
p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 1 p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 1
if (nlev_ == 1) return if (nlev_ == 1) return
@ -207,11 +209,11 @@ subroutine mld_sprecinit(p,ptype,info,nlev)
if (info /= 0) return if (info /= 0) return
p%baseprecv(ilev_)%iprcparm(:) = 0 p%baseprecv(ilev_)%iprcparm(:) = 0
p%baseprecv(ilev_)%rprcparm(:) = szero p%baseprecv(ilev_)%rprcparm(:) = szero
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_ p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_as_
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_
p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_
p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0
p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 1
p%baseprecv(ilev_)%iprcparm(mld_ml_type_) = mld_mult_ml_ p%baseprecv(ilev_)%iprcparm(mld_ml_type_) = mld_mult_ml_
p%baseprecv(ilev_)%iprcparm(mld_aggr_alg_) = mld_dec_aggr_ p%baseprecv(ilev_)%iprcparm(mld_aggr_alg_) = mld_dec_aggr_
p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_ p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_
@ -230,7 +232,11 @@ subroutine mld_sprecinit(p,ptype,info,nlev)
p%baseprecv(ilev_)%iprcparm(:) = 0 p%baseprecv(ilev_)%iprcparm(:) = 0
p%baseprecv(ilev_)%rprcparm(:) = szero p%baseprecv(ilev_)%rprcparm(:) = szero
p%baseprecv(ilev_)%iprcparm(mld_coarse_solve_) = mld_bjac_ p%baseprecv(ilev_)%iprcparm(mld_coarse_solve_) = mld_bjac_
#if defined(HAVE_SLU_)
p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_slu_
#else
p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_ilu_n_ p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_ilu_n_
#endif
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_ p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_
p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_ p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_

@ -47,7 +47,7 @@
! A default preconditioner is set for each preconditioner type ! A default preconditioner is set for each preconditioner type
! specified by the user: ! specified by the user:
! !
! 'NONE', 'NOPREC' - no preconditioner ! 'NOPREC' - no preconditioner
! !
! 'DIAG' - diagonal preconditioner ! 'DIAG' - diagonal preconditioner
! !
@ -59,12 +59,14 @@
! !
! 'ML' - Multilevel hybrid preconditioner (additive on the ! 'ML' - Multilevel hybrid preconditioner (additive on the
! same level and multiplicative through the levels), ! same level and multiplicative through the levels),
! with nlev levels and post-smoothing only. The block ! with 2 levels and post-smoothing only. RAS with
! Jacobi preconditioner, with ILU(0) on the local ! overlap 1 and ILU(0) on the local blocks is
! blocks, is applied as post-smoother at each level ! applied as post-smoother at each level, but the
! but the coarsest one; four sweeps of the block-Jacobi ! coarsest one; four sweeps of the block-Jacobi solver,
! solver, with ILU(0) on the blocks, are applied at ! with LU from UMFPACK on the blocks, are applied at
! the coarsest level, on the distributed coarse matrix. ! the coarsest level, on the distributed coarse matrix.
! The smoothed aggregation algorithm with threshold 0
! is used to build the coarse matrix.
! !
! For the multilevel preconditioners, the levels are numbered in increasing ! For the multilevel preconditioners, the levels are numbered in increasing
! order starting from the finest one, i.e. level 1 is the finest level. ! order starting from the finest one, i.e. level 1 is the finest level.
@ -74,8 +76,8 @@
! p - type(mld_zprec_type), input/output. ! p - type(mld_zprec_type), input/output.
! The preconditioner data structure. ! The preconditioner data structure.
! ptype - character(len=*), input. ! ptype - character(len=*), input.
! The type of preconditioner. Its values are 'NONE', ! The type of preconditioner. Its values are 'NOPREC',
! 'NOPREC', 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding ! 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding
! lowercase strings). ! lowercase strings).
! info - integer, output. ! info - integer, output.
! Error code. ! Error code.
@ -110,7 +112,7 @@ subroutine mld_zprecinit(p,ptype,info,nlev)
endif endif
select case(psb_toupper(ptype(1:len_trim(ptype)))) select case(psb_toupper(ptype(1:len_trim(ptype))))
case ('NONE','NOPREC') case ('NOPREC')
nlev_ = 1 nlev_ = 1
ilev_ = 1 ilev_ = 1
allocate(p%baseprecv(nlev_),stat=info) allocate(p%baseprecv(nlev_),stat=info)
@ -196,7 +198,7 @@ subroutine mld_zprecinit(p,ptype,info,nlev)
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_ p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_
p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_
p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0
p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 1
p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_fillin_) = 0
p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 1 p%baseprecv(ilev_)%iprcparm(mld_smoother_sweeps_) = 1
if (nlev_ == 1) return if (nlev_ == 1) return
@ -207,11 +209,11 @@ subroutine mld_zprecinit(p,ptype,info,nlev)
if (info /= 0) return if (info /= 0) return
p%baseprecv(ilev_)%iprcparm(:) = 0 p%baseprecv(ilev_)%iprcparm(:) = 0
p%baseprecv(ilev_)%rprcparm(:) = dzero p%baseprecv(ilev_)%rprcparm(:) = dzero
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_ p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_as_
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_
p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_
p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ren_) = 0
p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 0 p%baseprecv(ilev_)%iprcparm(mld_sub_ovr_) = 1
p%baseprecv(ilev_)%iprcparm(mld_ml_type_) = mld_mult_ml_ p%baseprecv(ilev_)%iprcparm(mld_ml_type_) = mld_mult_ml_
p%baseprecv(ilev_)%iprcparm(mld_aggr_alg_) = mld_dec_aggr_ p%baseprecv(ilev_)%iprcparm(mld_aggr_alg_) = mld_dec_aggr_
p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_ p%baseprecv(ilev_)%iprcparm(mld_aggr_kind_) = mld_smooth_prol_
@ -230,7 +232,13 @@ subroutine mld_zprecinit(p,ptype,info,nlev)
p%baseprecv(ilev_)%iprcparm(:) = 0 p%baseprecv(ilev_)%iprcparm(:) = 0
p%baseprecv(ilev_)%rprcparm(:) = dzero p%baseprecv(ilev_)%rprcparm(:) = dzero
p%baseprecv(ilev_)%iprcparm(mld_coarse_solve_) = mld_bjac_ p%baseprecv(ilev_)%iprcparm(mld_coarse_solve_) = mld_bjac_
#if defined(HAVE_UMF_)
p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_umf_
#elif defined(HAVE_SLU_)
p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_slu_
#else
p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_ilu_n_ p%baseprecv(ilev_)%iprcparm(mld_sub_solve_) = mld_ilu_n_
#endif
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_ p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_
p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_ p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_ p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_

Loading…
Cancel
Save