From 0e856510d6c7aefb4d32be99e3512254fa9d8def Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Fri, 17 Feb 2017 15:27:01 +0000 Subject: [PATCH] mld2p4-2: mlprec/impl/level/mld_c_base_onelev_cseti.F90 mlprec/impl/level/mld_c_base_onelev_seti.F90 mlprec/impl/level/mld_d_base_onelev_cseti.F90 mlprec/impl/level/mld_d_base_onelev_seti.F90 mlprec/impl/level/mld_s_base_onelev_cseti.F90 mlprec/impl/level/mld_s_base_onelev_seti.F90 mlprec/impl/level/mld_z_base_onelev_cseti.F90 mlprec/impl/level/mld_z_base_onelev_seti.F90 tests/pdegen/mld_d_pde3d.f90 tests/pdegen/runs/mld_pde3d.inp Trying simplified settings FBGS. To be debugged. --- mlprec/impl/level/mld_c_base_onelev_cseti.F90 | 6 ++++++ mlprec/impl/level/mld_c_base_onelev_seti.F90 | 7 +++++++ mlprec/impl/level/mld_d_base_onelev_cseti.F90 | 6 ++++++ mlprec/impl/level/mld_d_base_onelev_seti.F90 | 7 +++++++ mlprec/impl/level/mld_s_base_onelev_cseti.F90 | 6 ++++++ mlprec/impl/level/mld_s_base_onelev_seti.F90 | 7 +++++++ mlprec/impl/level/mld_z_base_onelev_cseti.F90 | 6 ++++++ mlprec/impl/level/mld_z_base_onelev_seti.F90 | 7 +++++++ tests/pdegen/mld_d_pde3d.f90 | 3 ++- tests/pdegen/runs/mld_pde3d.inp | 4 ++-- 10 files changed, 56 insertions(+), 3 deletions(-) diff --git a/mlprec/impl/level/mld_c_base_onelev_cseti.F90 b/mlprec/impl/level/mld_c_base_onelev_cseti.F90 index b30fb0fe..705853bd 100644 --- a/mlprec/impl/level/mld_c_base_onelev_cseti.F90 +++ b/mlprec/impl/level/mld_c_base_onelev_cseti.F90 @@ -120,6 +120,12 @@ subroutine mld_c_base_onelev_cseti(lv,what,val,info,pos) case (mld_as_) call lv%set(mld_c_as_smoother_mold,info,pos=pos) if (info == 0) call lv%set(mld_c_ilu_solver_mold,info,pos=pos) + + case (mld_fbgs_) + call lv%set(mld_c_jac_smoother_mold,info,pos='pre') + if (info == 0) call lv%set(mld_c_gs_solver_mold,info,pos='pre') + call lv%set(mld_c_jac_smoother_mold,info,pos='post') + if (info == 0) call lv%set(mld_c_bwgs_solver_mold,info,pos='post') case default ! diff --git a/mlprec/impl/level/mld_c_base_onelev_seti.F90 b/mlprec/impl/level/mld_c_base_onelev_seti.F90 index d197f416..07d3ba92 100644 --- a/mlprec/impl/level/mld_c_base_onelev_seti.F90 +++ b/mlprec/impl/level/mld_c_base_onelev_seti.F90 @@ -120,6 +120,13 @@ subroutine mld_c_base_onelev_seti(lv,what,val,info,pos) case (mld_as_) call lv%set(mld_c_as_smoother_mold,info,pos=pos) if (info == 0) call lv%set(mld_c_ilu_solver_mold,info,pos=pos) + + case (mld_fbgs_) + call lv%set(mld_c_jac_smoother_mold,info,pos='pre') + if (info == 0) call lv%set(mld_c_gs_solver_mold,info,pos='pre') + call lv%set(mld_c_jac_smoother_mold,info,pos='post') + if (info == 0) call lv%set(mld_c_bwgs_solver_mold,info,pos='post') + case default ! diff --git a/mlprec/impl/level/mld_d_base_onelev_cseti.F90 b/mlprec/impl/level/mld_d_base_onelev_cseti.F90 index 7f16ecc1..b4f445e0 100644 --- a/mlprec/impl/level/mld_d_base_onelev_cseti.F90 +++ b/mlprec/impl/level/mld_d_base_onelev_cseti.F90 @@ -126,6 +126,12 @@ subroutine mld_d_base_onelev_cseti(lv,what,val,info,pos) case (mld_as_) call lv%set(mld_d_as_smoother_mold,info,pos=pos) if (info == 0) call lv%set(mld_d_ilu_solver_mold,info,pos=pos) + + case (mld_fbgs_) + call lv%set(mld_d_jac_smoother_mold,info,pos='pre') + if (info == 0) call lv%set(mld_d_gs_solver_mold,info,pos='pre') + call lv%set(mld_d_jac_smoother_mold,info,pos='post') + if (info == 0) call lv%set(mld_d_bwgs_solver_mold,info,pos='post') case default ! diff --git a/mlprec/impl/level/mld_d_base_onelev_seti.F90 b/mlprec/impl/level/mld_d_base_onelev_seti.F90 index e839766f..1efad636 100644 --- a/mlprec/impl/level/mld_d_base_onelev_seti.F90 +++ b/mlprec/impl/level/mld_d_base_onelev_seti.F90 @@ -126,6 +126,13 @@ subroutine mld_d_base_onelev_seti(lv,what,val,info,pos) case (mld_as_) call lv%set(mld_d_as_smoother_mold,info,pos=pos) if (info == 0) call lv%set(mld_d_ilu_solver_mold,info,pos=pos) + + case (mld_fbgs_) + call lv%set(mld_d_jac_smoother_mold,info,pos='pre') + if (info == 0) call lv%set(mld_d_gs_solver_mold,info,pos='pre') + call lv%set(mld_d_jac_smoother_mold,info,pos='post') + if (info == 0) call lv%set(mld_d_bwgs_solver_mold,info,pos='post') + case default ! diff --git a/mlprec/impl/level/mld_s_base_onelev_cseti.F90 b/mlprec/impl/level/mld_s_base_onelev_cseti.F90 index 279f4970..962061f4 100644 --- a/mlprec/impl/level/mld_s_base_onelev_cseti.F90 +++ b/mlprec/impl/level/mld_s_base_onelev_cseti.F90 @@ -120,6 +120,12 @@ subroutine mld_s_base_onelev_cseti(lv,what,val,info,pos) case (mld_as_) call lv%set(mld_s_as_smoother_mold,info,pos=pos) if (info == 0) call lv%set(mld_s_ilu_solver_mold,info,pos=pos) + + case (mld_fbgs_) + call lv%set(mld_s_jac_smoother_mold,info,pos='pre') + if (info == 0) call lv%set(mld_s_gs_solver_mold,info,pos='pre') + call lv%set(mld_s_jac_smoother_mold,info,pos='post') + if (info == 0) call lv%set(mld_s_bwgs_solver_mold,info,pos='post') case default ! diff --git a/mlprec/impl/level/mld_s_base_onelev_seti.F90 b/mlprec/impl/level/mld_s_base_onelev_seti.F90 index d0b31854..aa7f4bc5 100644 --- a/mlprec/impl/level/mld_s_base_onelev_seti.F90 +++ b/mlprec/impl/level/mld_s_base_onelev_seti.F90 @@ -120,6 +120,13 @@ subroutine mld_s_base_onelev_seti(lv,what,val,info,pos) case (mld_as_) call lv%set(mld_s_as_smoother_mold,info,pos=pos) if (info == 0) call lv%set(mld_s_ilu_solver_mold,info,pos=pos) + + case (mld_fbgs_) + call lv%set(mld_s_jac_smoother_mold,info,pos='pre') + if (info == 0) call lv%set(mld_s_gs_solver_mold,info,pos='pre') + call lv%set(mld_s_jac_smoother_mold,info,pos='post') + if (info == 0) call lv%set(mld_s_bwgs_solver_mold,info,pos='post') + case default ! diff --git a/mlprec/impl/level/mld_z_base_onelev_cseti.F90 b/mlprec/impl/level/mld_z_base_onelev_cseti.F90 index ff5cb000..979454d6 100644 --- a/mlprec/impl/level/mld_z_base_onelev_cseti.F90 +++ b/mlprec/impl/level/mld_z_base_onelev_cseti.F90 @@ -126,6 +126,12 @@ subroutine mld_z_base_onelev_cseti(lv,what,val,info,pos) case (mld_as_) call lv%set(mld_z_as_smoother_mold,info,pos=pos) if (info == 0) call lv%set(mld_z_ilu_solver_mold,info,pos=pos) + + case (mld_fbgs_) + call lv%set(mld_z_jac_smoother_mold,info,pos='pre') + if (info == 0) call lv%set(mld_z_gs_solver_mold,info,pos='pre') + call lv%set(mld_z_jac_smoother_mold,info,pos='post') + if (info == 0) call lv%set(mld_z_bwgs_solver_mold,info,pos='post') case default ! diff --git a/mlprec/impl/level/mld_z_base_onelev_seti.F90 b/mlprec/impl/level/mld_z_base_onelev_seti.F90 index 0daf528b..76246f86 100644 --- a/mlprec/impl/level/mld_z_base_onelev_seti.F90 +++ b/mlprec/impl/level/mld_z_base_onelev_seti.F90 @@ -126,6 +126,13 @@ subroutine mld_z_base_onelev_seti(lv,what,val,info,pos) case (mld_as_) call lv%set(mld_z_as_smoother_mold,info,pos=pos) if (info == 0) call lv%set(mld_z_ilu_solver_mold,info,pos=pos) + + case (mld_fbgs_) + call lv%set(mld_z_jac_smoother_mold,info,pos='pre') + if (info == 0) call lv%set(mld_z_gs_solver_mold,info,pos='pre') + call lv%set(mld_z_jac_smoother_mold,info,pos='post') + if (info == 0) call lv%set(mld_z_bwgs_solver_mold,info,pos='post') + case default ! diff --git a/tests/pdegen/mld_d_pde3d.f90 b/tests/pdegen/mld_d_pde3d.f90 index 0c80b696..dc64fe8b 100644 --- a/tests/pdegen/mld_d_pde3d.f90 +++ b/tests/pdegen/mld_d_pde3d.f90 @@ -283,7 +283,8 @@ program mld_d_pde3d call mld_precset(prec,'sub_ovr', prectype%novr, info) call mld_precset(prec,'sub_restr', prectype%restr, info) call mld_precset(prec,'sub_prol', prectype%prol, info) - call mld_precset(prec,'sub_solve', prectype%solve, info) + if (psb_tolower(prectype%smther) /= 'fbgs') & + & call mld_precset(prec,'sub_solve', prectype%solve, info) call mld_precset(prec,'sub_fillin', prectype%fill1, info) call mld_precset(prec,'solver_sweeps', prectype%svsweeps, info) call mld_precset(prec,'sub_iluthrs', prectype%thr1, info) diff --git a/tests/pdegen/runs/mld_pde3d.inp b/tests/pdegen/runs/mld_pde3d.inp index 48fd6b97..b1fae971 100644 --- a/tests/pdegen/runs/mld_pde3d.inp +++ b/tests/pdegen/runs/mld_pde3d.inp @@ -21,8 +21,8 @@ NATURAL ! Ordering of aggregation: NATURAL DEGREE FILTER ! Filtering aggregation: FILTER NOFILTER MULT ! Type of multilevel correction: ADD MULT KCYCLE VCYCLE WCYCLE KCYCLESYM TWOSIDE ! Side of correction: PRE POST TWOSIDE (ignored for ADD) -2 ! Smoother sweeps -BJAC ! Smoother type JACOBI BJAC AS; ignored for non-ML +4 ! Smoother sweeps +FBGS ! Smoother type JACOBI BJAC AS; ignored for non-ML 0 ! Number of overlap layers for AS preconditioner (at finest level) HALO ! AS Restriction operator NONE HALO NONE ! AS Prolongation operator NONE SUM AVG