mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 22:55:12 +00:00
mld2p4:
mlprec/mld_cprecinit.F90 mlprec/mld_dprecinit.F90 mlprec/mld_sprecinit.F90 mlprec/mld_zprecinit.F90 Second step, hopefully final, to make defaults in PRECINIT dependent on configure parameters.
This commit is contained in:
+19
-13
@@ -47,7 +47,7 @@
|
||||
! A default preconditioner is set for each preconditioner type
|
||||
! specified by the user:
|
||||
!
|
||||
! 'NONE', 'NOPREC' - no preconditioner
|
||||
! 'NOPREC' - no preconditioner
|
||||
!
|
||||
! 'DIAG' - diagonal preconditioner
|
||||
!
|
||||
@@ -59,12 +59,14 @@
|
||||
!
|
||||
! 'ML' - Multilevel hybrid preconditioner (additive on the
|
||||
! same level and multiplicative through the levels),
|
||||
! with nlev levels and post-smoothing only. The block
|
||||
! Jacobi preconditioner, with ILU(0) on the local
|
||||
! blocks, is applied as post-smoother at each level
|
||||
! but the coarsest one; four sweeps of the block-Jacobi
|
||||
! solver, with ILU(0) on the blocks, are applied at
|
||||
! with 2 levels and post-smoothing only. RAS with
|
||||
! overlap 1 and ILU(0) on the local blocks is
|
||||
! applied as post-smoother at each level, but the
|
||||
! coarsest one; four sweeps of the block-Jacobi solver,
|
||||
! with LU from SuperLU on the blocks, are applied at
|
||||
! 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
|
||||
! 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.
|
||||
! The preconditioner data structure.
|
||||
! ptype - character(len=*), input.
|
||||
! The type of preconditioner. Its values are 'NONE',
|
||||
! 'NOPREC', 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding
|
||||
! The type of preconditioner. Its values are 'NOPREC',
|
||||
! 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding
|
||||
! lowercase strings).
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
@@ -110,7 +112,7 @@ subroutine mld_cprecinit(p,ptype,info,nlev)
|
||||
endif
|
||||
|
||||
select case(psb_toupper(ptype(1:len_trim(ptype))))
|
||||
case ('NONE','NOPREC')
|
||||
case ('NOPREC')
|
||||
nlev_ = 1
|
||||
ilev_ = 1
|
||||
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_prol_) = psb_none_
|
||||
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_smoother_sweeps_) = 1
|
||||
if (nlev_ == 1) return
|
||||
@@ -207,11 +209,11 @@ subroutine mld_cprecinit(p,ptype,info,nlev)
|
||||
if (info /= 0) return
|
||||
p%baseprecv(ilev_)%iprcparm(:) = 0
|
||||
p%baseprecv(ilev_)%rprcparm(:) = szero
|
||||
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_as_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_
|
||||
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_aggr_alg_) = mld_dec_aggr_
|
||||
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_)%rprcparm(:) = szero
|
||||
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_
|
||||
#endif
|
||||
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_
|
||||
|
||||
+21
-13
@@ -47,7 +47,7 @@
|
||||
! A default preconditioner is set for each preconditioner type
|
||||
! specified by the user:
|
||||
!
|
||||
! 'NONE', 'NOPREC' - no preconditioner
|
||||
! 'NOPREC' - no preconditioner
|
||||
!
|
||||
! 'DIAG' - diagonal preconditioner
|
||||
!
|
||||
@@ -59,12 +59,14 @@
|
||||
!
|
||||
! 'ML' - Multilevel hybrid preconditioner (additive on the
|
||||
! same level and multiplicative through the levels),
|
||||
! with nlev levels and post-smoothing only. The block
|
||||
! Jacobi preconditioner, with ILU(0) on the local
|
||||
! blocks, is applied as post-smoother at each level
|
||||
! but the coarsest one; four sweeps of the block-Jacobi
|
||||
! solver, with ILU(0) on the blocks, are applied at
|
||||
! with 2 levels and post-smoothing only. RAS with
|
||||
! overlap 1 and ILU(0) on the local blocks is
|
||||
! applied as post-smoother at each level, but the
|
||||
! coarsest one; four sweeps of the block-Jacobi solver,
|
||||
! with LU from UMFPACK on the blocks, are applied at
|
||||
! 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
|
||||
! 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.
|
||||
! The preconditioner data structure.
|
||||
! ptype - character(len=*), input.
|
||||
! The type of preconditioner. Its values are 'NONE',
|
||||
! 'NOPREC', 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding
|
||||
! The type of preconditioner. Its values are 'NOPREC',
|
||||
! 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding
|
||||
! lowercase strings).
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
@@ -110,7 +112,7 @@ subroutine mld_dprecinit(p,ptype,info,nlev)
|
||||
endif
|
||||
|
||||
select case(psb_toupper(ptype(1:len_trim(ptype))))
|
||||
case ('NONE','NOPREC')
|
||||
case ('NOPREC')
|
||||
nlev_ = 1
|
||||
ilev_ = 1
|
||||
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_prol_) = psb_none_
|
||||
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_smoother_sweeps_) = 1
|
||||
if (nlev_ == 1) return
|
||||
@@ -207,11 +209,11 @@ subroutine mld_dprecinit(p,ptype,info,nlev)
|
||||
if (info /= 0) return
|
||||
p%baseprecv(ilev_)%iprcparm(:) = 0
|
||||
p%baseprecv(ilev_)%rprcparm(:) = dzero
|
||||
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_as_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_
|
||||
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_aggr_alg_) = mld_dec_aggr_
|
||||
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_)%rprcparm(:) = dzero
|
||||
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_
|
||||
#endif
|
||||
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_
|
||||
|
||||
+19
-13
@@ -47,7 +47,7 @@
|
||||
! A default preconditioner is set for each preconditioner type
|
||||
! specified by the user:
|
||||
!
|
||||
! 'NONE', 'NOPREC' - no preconditioner
|
||||
! 'NOPREC' - no preconditioner
|
||||
!
|
||||
! 'DIAG' - diagonal preconditioner
|
||||
!
|
||||
@@ -59,12 +59,14 @@
|
||||
!
|
||||
! 'ML' - Multilevel hybrid preconditioner (additive on the
|
||||
! same level and multiplicative through the levels),
|
||||
! with nlev levels and post-smoothing only. The block
|
||||
! Jacobi preconditioner, with ILU(0) on the local
|
||||
! blocks, is applied as post-smoother at each level
|
||||
! but the coarsest one; four sweeps of the block-Jacobi
|
||||
! solver, with ILU(0) on the blocks, are applied at
|
||||
! with 2 levels and post-smoothing only. RAS with
|
||||
! overlap 1 and ILU(0) on the local blocks is
|
||||
! applied as post-smoother at each level, but the
|
||||
! coarsest one; four sweeps of the block-Jacobi solver,
|
||||
! with LU from SuperLU on the blocks, are applied at
|
||||
! 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
|
||||
! 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.
|
||||
! The preconditioner data structure.
|
||||
! ptype - character(len=*), input.
|
||||
! The type of preconditioner. Its values are 'NONE',
|
||||
! 'NOPREC', 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding
|
||||
! The type of preconditioner. Its values are 'NOPREC',
|
||||
! 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding
|
||||
! lowercase strings).
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
@@ -110,7 +112,7 @@ subroutine mld_sprecinit(p,ptype,info,nlev)
|
||||
endif
|
||||
|
||||
select case(psb_toupper(ptype(1:len_trim(ptype))))
|
||||
case ('NONE','NOPREC')
|
||||
case ('NOPREC')
|
||||
nlev_ = 1
|
||||
ilev_ = 1
|
||||
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_prol_) = psb_none_
|
||||
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_smoother_sweeps_) = 1
|
||||
if (nlev_ == 1) return
|
||||
@@ -207,11 +209,11 @@ subroutine mld_sprecinit(p,ptype,info,nlev)
|
||||
if (info /= 0) return
|
||||
p%baseprecv(ilev_)%iprcparm(:) = 0
|
||||
p%baseprecv(ilev_)%rprcparm(:) = szero
|
||||
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_as_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_
|
||||
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_aggr_alg_) = mld_dec_aggr_
|
||||
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_)%rprcparm(:) = szero
|
||||
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_
|
||||
#endif
|
||||
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_
|
||||
|
||||
+21
-13
@@ -47,7 +47,7 @@
|
||||
! A default preconditioner is set for each preconditioner type
|
||||
! specified by the user:
|
||||
!
|
||||
! 'NONE', 'NOPREC' - no preconditioner
|
||||
! 'NOPREC' - no preconditioner
|
||||
!
|
||||
! 'DIAG' - diagonal preconditioner
|
||||
!
|
||||
@@ -59,12 +59,14 @@
|
||||
!
|
||||
! 'ML' - Multilevel hybrid preconditioner (additive on the
|
||||
! same level and multiplicative through the levels),
|
||||
! with nlev levels and post-smoothing only. The block
|
||||
! Jacobi preconditioner, with ILU(0) on the local
|
||||
! blocks, is applied as post-smoother at each level
|
||||
! but the coarsest one; four sweeps of the block-Jacobi
|
||||
! solver, with ILU(0) on the blocks, are applied at
|
||||
! with 2 levels and post-smoothing only. RAS with
|
||||
! overlap 1 and ILU(0) on the local blocks is
|
||||
! applied as post-smoother at each level, but the
|
||||
! coarsest one; four sweeps of the block-Jacobi solver,
|
||||
! with LU from UMFPACK on the blocks, are applied at
|
||||
! 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
|
||||
! 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.
|
||||
! The preconditioner data structure.
|
||||
! ptype - character(len=*), input.
|
||||
! The type of preconditioner. Its values are 'NONE',
|
||||
! 'NOPREC', 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding
|
||||
! The type of preconditioner. Its values are 'NOPREC',
|
||||
! 'DIAG', 'BJAC', 'AS', 'ML' (and the corresponding
|
||||
! lowercase strings).
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
@@ -110,7 +112,7 @@ subroutine mld_zprecinit(p,ptype,info,nlev)
|
||||
endif
|
||||
|
||||
select case(psb_toupper(ptype(1:len_trim(ptype))))
|
||||
case ('NONE','NOPREC')
|
||||
case ('NOPREC')
|
||||
nlev_ = 1
|
||||
ilev_ = 1
|
||||
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_prol_) = psb_none_
|
||||
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_smoother_sweeps_) = 1
|
||||
if (nlev_ == 1) return
|
||||
@@ -207,11 +209,11 @@ subroutine mld_zprecinit(p,ptype,info,nlev)
|
||||
if (info /= 0) return
|
||||
p%baseprecv(ilev_)%iprcparm(:) = 0
|
||||
p%baseprecv(ilev_)%rprcparm(:) = dzero
|
||||
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_as_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_halo_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_prol_) = psb_none_
|
||||
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_aggr_alg_) = mld_dec_aggr_
|
||||
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_)%rprcparm(:) = dzero
|
||||
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_
|
||||
#endif
|
||||
p%baseprecv(ilev_)%iprcparm(mld_smoother_type_) = mld_bjac_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_coarse_mat_) = mld_distr_mat_
|
||||
p%baseprecv(ilev_)%iprcparm(mld_sub_restr_) = psb_none_
|
||||
|
||||
Reference in New Issue
Block a user