From cf7f97c1ec746257da7aa005814e88fc60c494e6 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Sun, 23 Apr 2017 16:28:19 +0000 Subject: [PATCH] mld2p4: mlprec/impl/mld_ccprecset.F90 mlprec/impl/mld_dcprecset.F90 mlprec/impl/mld_scprecset.F90 mlprec/impl/mld_zcprecset.F90 Fixed defaults. --- mlprec/impl/mld_ccprecset.F90 | 136 +++++++++++++++++++++++----- mlprec/impl/mld_dcprecset.F90 | 164 +++++++++++++++++++++++++++------- mlprec/impl/mld_scprecset.F90 | 136 +++++++++++++++++++++++----- mlprec/impl/mld_zcprecset.F90 | 164 +++++++++++++++++++++++++++------- 4 files changed, 500 insertions(+), 100 deletions(-) diff --git a/mlprec/impl/mld_ccprecset.F90 b/mlprec/impl/mld_ccprecset.F90 index e3c9eeb3..64800478 100644 --- a/mlprec/impl/mld_ccprecset.F90 +++ b/mlprec/impl/mld_ccprecset.F90 @@ -146,7 +146,6 @@ subroutine mld_ccprecseti(p,what,val,info,ilev,ilmax,pos) return end select - ! ! Set preconditioner parameters at level ilev. ! @@ -184,28 +183,76 @@ subroutine mld_ccprecseti(p,what,val,info,ilev,ilmax,pos) info = -2 return end if - - if (nlev_ > 1) then - call p%precv(nlev_)%set('COARSE_SOLVE',val,info,pos=pos) - select case (val) - case(mld_bjac_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + if (nlev_ > 1) then + call p%precv(nlev_)%set('COARSE_SOLVE',val,info,pos=pos) + select case (val) + case(mld_bjac_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) #if defined(HAVE_SLU_) - call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) #elif defined(HAVE_MUMPS_) - call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) #else - call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) +#endif + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info) + case(mld_slu_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_ilu_n_, mld_ilu_t_,mld_milu_n_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) + case(mld_mumps_) +#if defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_umf_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + + case(mld_sludist_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) #endif - call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info) - case(mld_slu_,mld_ilu_n_, mld_ilu_t_,mld_milu_n_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) - call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) - call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) - case(mld_mumps_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) - call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) - call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) case(mld_jac_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',mld_diag_scale_,info,pos=pos) @@ -277,14 +324,63 @@ subroutine mld_ccprecseti(p,what,val,info,ilev,ilmax,pos) call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) #endif call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info) - case(mld_slu_,mld_ilu_n_, mld_ilu_t_,mld_milu_n_) + case(mld_slu_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_ilu_n_, mld_ilu_t_,mld_milu_n_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) case(mld_mumps_) +#if defined(HAVE_MUMPS_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_umf_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + + case(mld_sludist_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif case(mld_jac_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',mld_diag_scale_,info,pos=pos) diff --git a/mlprec/impl/mld_dcprecset.F90 b/mlprec/impl/mld_dcprecset.F90 index abd3c3b6..7c4e7490 100644 --- a/mlprec/impl/mld_dcprecset.F90 +++ b/mlprec/impl/mld_dcprecset.F90 @@ -152,7 +152,6 @@ subroutine mld_dcprecseti(p,what,val,info,ilev,ilmax,pos) return end select - ! ! Set preconditioner parameters at level ilev. ! @@ -190,38 +189,90 @@ subroutine mld_dcprecseti(p,what,val,info,ilev,ilmax,pos) info = -2 return end if - - if (nlev_ > 1) then - call p%precv(nlev_)%set('COARSE_SOLVE',val,info,pos=pos) - select case (val) - case(mld_bjac_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + if (nlev_ > 1) then + call p%precv(nlev_)%set('COARSE_SOLVE',val,info,pos=pos) + select case (val) + case(mld_bjac_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) #if defined(HAVE_UMF_) - call p%precv(nlev_)%set('SUB_SOLVE',mld_umf_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_umf_,info,pos=pos) #elif defined(HAVE_SLU_) - call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) #elif defined(HAVE_MUMPS_) - call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) #else - call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) +#endif + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info) + case(mld_slu_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_ilu_n_, mld_ilu_t_,mld_milu_n_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) + case(mld_mumps_) +#if defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_umf_) +#if defined(HAVE_UMF_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + + case(mld_sludist_) +#if defined(HAVE_SLUDIST_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#elif defined(HAVE_UMF_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_umf_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) #endif - call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info) - case(mld_slu_,mld_ilu_n_, mld_ilu_t_,mld_milu_n_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) - call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) - call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) - case(mld_mumps_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) - call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) - call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) - case(mld_umf_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) - call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) - call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) - case(mld_sludist_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) - call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) - call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) case(mld_jac_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',mld_diag_scale_,info,pos=pos) @@ -295,22 +346,75 @@ subroutine mld_dcprecseti(p,what,val,info,ilev,ilmax,pos) call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) #endif call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info) - case(mld_slu_,mld_ilu_n_, mld_ilu_t_,mld_milu_n_) + case(mld_slu_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_ilu_n_, mld_ilu_t_,mld_milu_n_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) case(mld_mumps_) +#if defined(HAVE_MUMPS_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) - case(mld_umf_) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_umf_) +#if defined(HAVE_UMF_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_sludist_) +#if defined(HAVE_SLUDIST_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#elif defined(HAVE_UMF_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_umf_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif case(mld_jac_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',mld_diag_scale_,info,pos=pos) diff --git a/mlprec/impl/mld_scprecset.F90 b/mlprec/impl/mld_scprecset.F90 index 6803bed3..370c6c5a 100644 --- a/mlprec/impl/mld_scprecset.F90 +++ b/mlprec/impl/mld_scprecset.F90 @@ -146,7 +146,6 @@ subroutine mld_scprecseti(p,what,val,info,ilev,ilmax,pos) return end select - ! ! Set preconditioner parameters at level ilev. ! @@ -184,28 +183,76 @@ subroutine mld_scprecseti(p,what,val,info,ilev,ilmax,pos) info = -2 return end if - - if (nlev_ > 1) then - call p%precv(nlev_)%set('COARSE_SOLVE',val,info,pos=pos) - select case (val) - case(mld_bjac_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + if (nlev_ > 1) then + call p%precv(nlev_)%set('COARSE_SOLVE',val,info,pos=pos) + select case (val) + case(mld_bjac_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) #if defined(HAVE_SLU_) - call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) #elif defined(HAVE_MUMPS_) - call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) #else - call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) +#endif + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info) + case(mld_slu_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_ilu_n_, mld_ilu_t_,mld_milu_n_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) + case(mld_mumps_) +#if defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_umf_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + + case(mld_sludist_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) #endif - call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info) - case(mld_slu_,mld_ilu_n_, mld_ilu_t_,mld_milu_n_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) - call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) - call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) - case(mld_mumps_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) - call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) - call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) case(mld_jac_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',mld_diag_scale_,info,pos=pos) @@ -277,14 +324,63 @@ subroutine mld_scprecseti(p,what,val,info,ilev,ilmax,pos) call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) #endif call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info) - case(mld_slu_,mld_ilu_n_, mld_ilu_t_,mld_milu_n_) + case(mld_slu_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_ilu_n_, mld_ilu_t_,mld_milu_n_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) case(mld_mumps_) +#if defined(HAVE_MUMPS_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_umf_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + + case(mld_sludist_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif case(mld_jac_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',mld_diag_scale_,info,pos=pos) diff --git a/mlprec/impl/mld_zcprecset.F90 b/mlprec/impl/mld_zcprecset.F90 index 1762ea01..d1b200ff 100644 --- a/mlprec/impl/mld_zcprecset.F90 +++ b/mlprec/impl/mld_zcprecset.F90 @@ -152,7 +152,6 @@ subroutine mld_zcprecseti(p,what,val,info,ilev,ilmax,pos) return end select - ! ! Set preconditioner parameters at level ilev. ! @@ -190,38 +189,90 @@ subroutine mld_zcprecseti(p,what,val,info,ilev,ilmax,pos) info = -2 return end if - - if (nlev_ > 1) then - call p%precv(nlev_)%set('COARSE_SOLVE',val,info,pos=pos) - select case (val) - case(mld_bjac_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + if (nlev_ > 1) then + call p%precv(nlev_)%set('COARSE_SOLVE',val,info,pos=pos) + select case (val) + case(mld_bjac_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) #if defined(HAVE_UMF_) - call p%precv(nlev_)%set('SUB_SOLVE',mld_umf_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_umf_,info,pos=pos) #elif defined(HAVE_SLU_) - call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) #elif defined(HAVE_MUMPS_) - call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) #else - call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) +#endif + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info) + case(mld_slu_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_ilu_n_, mld_ilu_t_,mld_milu_n_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) + case(mld_mumps_) +#if defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_umf_) +#if defined(HAVE_UMF_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + + case(mld_sludist_) +#if defined(HAVE_SLUDIST_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#elif defined(HAVE_UMF_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_umf_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) #endif - call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info) - case(mld_slu_,mld_ilu_n_, mld_ilu_t_,mld_milu_n_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) - call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) - call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) - case(mld_mumps_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) - call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) - call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) - case(mld_umf_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) - call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) - call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) - case(mld_sludist_) - call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) - call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) - call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) case(mld_jac_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',mld_diag_scale_,info,pos=pos) @@ -295,22 +346,75 @@ subroutine mld_zcprecseti(p,what,val,info,ilev,ilmax,pos) call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) #endif call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info) - case(mld_slu_,mld_ilu_n_, mld_ilu_t_,mld_milu_n_) + case(mld_slu_) +#if defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_ilu_n_, mld_ilu_t_,mld_milu_n_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) case(mld_mumps_) +#if defined(HAVE_MUMPS_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) - case(mld_umf_) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_umf_) +#if defined(HAVE_UMF_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif + case(mld_sludist_) +#if defined(HAVE_SLUDIST_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',val,info,pos=pos) call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#elif defined(HAVE_UMF_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_umf_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_SLU_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_slu_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_repl_mat_,info,pos=pos) +#elif defined(HAVE_MUMPS_) + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_mumps_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#else + call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) + call p%precv(nlev_)%set('SUB_SOLVE',mld_ilu_n_,info,pos=pos) + call p%precv(nlev_)%set('COARSE_MAT',mld_distr_mat_,info,pos=pos) +#endif case(mld_jac_) call p%precv(nlev_)%set('SMOOTHER_TYPE',mld_bjac_,info,pos=pos) call p%precv(nlev_)%set('SUB_SOLVE',mld_diag_scale_,info,pos=pos)