diff --git a/mlprec/mld_c_as_smoother.f90 b/mlprec/mld_c_as_smoother.f90 index ae6e2261..f14b79cb 100644 --- a/mlprec/mld_c_as_smoother.f90 +++ b/mlprec/mld_c_as_smoother.f90 @@ -328,7 +328,8 @@ contains call sm%sv%apply(cone,tx,czero,ty,sm%desc_data,trans_,aux,info) if (info /= psb_success_) then - call psb_errpush(psb_err_internal_error_,name,a_err='Error in sub_aply Jacobi Sweeps = 1') + call psb_errpush(psb_err_internal_error_,name,& + & a_err='Error in sub_aply Jacobi Sweeps = 1') goto 9999 endif @@ -885,7 +886,7 @@ contains return end subroutine c_as_smoother_free - subroutine c_as_smoother_descr(sm,info,iout) + subroutine c_as_smoother_descr(sm,info,iout,coarse) use psb_sparse_mod @@ -895,28 +896,37 @@ contains class(mld_c_as_smoother_type), intent(in) :: sm integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act integer :: ictxt, me, np character(len=20), parameter :: name='mld_c_as_smoother_descr' integer :: iout_ + logical :: coarse_ call psb_erractionsave(err_act) info = psb_success_ + if (present(coarse)) then + coarse_ = coarse + else + coarse_ = .false. + end if if (present(iout)) then iout_ = iout else iout_ = 6 endif - write(iout_,*) ' Additive Schwarz with ',& - & sm%novr, ' overlap layers.' - write(iout_,*) ' Restrictor: ',restrict_names(sm%restr) - write(iout_,*) ' Prolongator: ',prolong_names(sm%prol) - write(iout_,*) ' Local solver:' + if (.not.coarse_) then + write(iout_,*) ' Additive Schwarz with ',& + & sm%novr, ' overlap layers.' + write(iout_,*) ' Restrictor: ',restrict_names(sm%restr) + write(iout_,*) ' Prolongator: ',prolong_names(sm%prol) + write(iout_,*) ' Local solver:' + endif if (allocated(sm%sv)) then - call sm%sv%descr(info,iout_) + call sm%sv%descr(info,iout_,coarse=coarse) end if call psb_erractionrestore(err_act) diff --git a/mlprec/mld_c_diag_solver.f90 b/mlprec/mld_c_diag_solver.f90 index 95453788..c3a0b412 100644 --- a/mlprec/mld_c_diag_solver.f90 +++ b/mlprec/mld_c_diag_solver.f90 @@ -419,7 +419,7 @@ contains return end subroutine c_diag_solver_free - subroutine c_diag_solver_descr(sv,info,iout) + subroutine c_diag_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -429,6 +429,7 @@ contains class(mld_c_diag_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_c_id_solver.f90 b/mlprec/mld_c_id_solver.f90 index 1611a96b..60ceb198 100644 --- a/mlprec/mld_c_id_solver.f90 +++ b/mlprec/mld_c_id_solver.f90 @@ -234,7 +234,7 @@ contains return end subroutine c_id_solver_free - subroutine c_id_solver_descr(sv,info,iout) + subroutine c_id_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -244,6 +244,7 @@ contains class(mld_c_id_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_c_ilu_solver.f90 b/mlprec/mld_c_ilu_solver.f90 index 16d8e1aa..e48a2089 100644 --- a/mlprec/mld_c_ilu_solver.f90 +++ b/mlprec/mld_c_ilu_solver.f90 @@ -608,7 +608,7 @@ contains return end subroutine c_ilu_solver_free - subroutine c_ilu_solver_descr(sv,info,iout) + subroutine c_ilu_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -618,6 +618,7 @@ contains class(mld_c_ilu_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_c_jac_smoother.f90 b/mlprec/mld_c_jac_smoother.f90 index 3ed60594..2314ae00 100644 --- a/mlprec/mld_c_jac_smoother.f90 +++ b/mlprec/mld_c_jac_smoother.f90 @@ -459,7 +459,7 @@ contains return end subroutine c_jac_smoother_free - subroutine c_jac_smoother_descr(sm,info,iout) + subroutine c_jac_smoother_descr(sm,info,iout,coarse) use psb_sparse_mod @@ -469,25 +469,34 @@ contains class(mld_c_jac_smoother_type), intent(in) :: sm integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act integer :: ictxt, me, np character(len=20), parameter :: name='mld_c_jac_smoother_descr' - integer :: iout_ + integer :: iout_ + logical :: coarse_ call psb_erractionsave(err_act) info = psb_success_ + if (present(coarse)) then + coarse_ = coarse + else + coarse_ = .false. + end if if (present(iout)) then iout_ = iout else iout_ = 6 endif - write(iout_,*) ' Block Jacobi smoother ' - write(iout_,*) ' Local solver:' + if (.not.coarse_) then + write(iout_,*) ' Block Jacobi smoother ' + write(iout_,*) ' Local solver:' + end if if (allocated(sm%sv)) then - call sm%sv%descr(info,iout_) + call sm%sv%descr(info,iout_,coarse=coarse) end if call psb_erractionrestore(err_act) diff --git a/mlprec/mld_c_prec_type.f90 b/mlprec/mld_c_prec_type.f90 index d9deae8d..5876869d 100644 --- a/mlprec/mld_c_prec_type.f90 +++ b/mlprec/mld_c_prec_type.f90 @@ -520,7 +520,7 @@ contains end if end if if (allocated(lv%sm)) & - & call lv%sm%descr(info,iout=iout_) + & call lv%sm%descr(info,iout=iout_,coarse=coarse) call psb_erractionrestore(err_act) return @@ -875,7 +875,7 @@ contains return end subroutine c_base_smoother_free - subroutine c_base_smoother_descr(sm,info,iout) + subroutine c_base_smoother_descr(sm,info,iout,coarse) use psb_sparse_mod @@ -885,6 +885,7 @@ contains class(mld_c_base_smoother_type), intent(in) :: sm integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act @@ -1156,7 +1157,7 @@ contains return end subroutine c_base_solver_free - subroutine c_base_solver_descr(sv,info,iout) + subroutine c_base_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -1166,6 +1167,7 @@ contains class(mld_c_base_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_c_slu_solver.f90 b/mlprec/mld_c_slu_solver.f90 index a33f4dac..27187bf1 100644 --- a/mlprec/mld_c_slu_solver.f90 +++ b/mlprec/mld_c_slu_solver.f90 @@ -409,7 +409,7 @@ contains return end subroutine c_slu_solver_free - subroutine c_slu_solver_descr(sv,info,iout) + subroutine c_slu_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -419,6 +419,7 @@ contains class(mld_c_slu_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_d_as_smoother.f90 b/mlprec/mld_d_as_smoother.f90 index 42c657f0..461a0fbf 100644 --- a/mlprec/mld_d_as_smoother.f90 +++ b/mlprec/mld_d_as_smoother.f90 @@ -326,8 +326,6 @@ contains call sm%sv%apply(done,tx,dzero,ty,sm%desc_data,trans_,aux,info) -!!$ write(0,*) me,' out from inner slver in AS ',ty - if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& & a_err='Error in sub_aply Jacobi Sweeps = 1') @@ -480,9 +478,9 @@ contains call psb_spmm(-done,sm%nd,ty,done,ww,sm%desc_data,info,work=aux,trans=trans_) if (info /= psb_success_) exit -!!$ write(0,*) me,' Entry to inner slver in AS-ND',ww + call sm%sv%apply(done,ww,dzero,ty,sm%desc_data,trans_,aux,info) -!!$ write(0,*) me,' Exit from inner slver in AS-ND ',ty + if (info /= psb_success_) exit @@ -897,7 +895,7 @@ contains class(mld_d_as_smoother_type), intent(in) :: sm integer, intent(out) :: info integer, intent(in), optional :: iout - logical, intent(in), optional :: coarse + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_d_diag_solver.f90 b/mlprec/mld_d_diag_solver.f90 index 4253ef34..dfb02c79 100644 --- a/mlprec/mld_d_diag_solver.f90 +++ b/mlprec/mld_d_diag_solver.f90 @@ -419,7 +419,7 @@ contains return end subroutine d_diag_solver_free - subroutine d_diag_solver_descr(sv,info,iout) + subroutine d_diag_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -429,6 +429,7 @@ contains class(mld_d_diag_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_d_jac_smoother.f90 b/mlprec/mld_d_jac_smoother.f90 index 9ff2f6e5..1406bf83 100644 --- a/mlprec/mld_d_jac_smoother.f90 +++ b/mlprec/mld_d_jac_smoother.f90 @@ -270,12 +270,15 @@ contains if (info == psb_success_) call sm%nd%cscnv(info,& & type='csr',dupl=psb_dupl_add_) if (info /= psb_success_) then - call psb_errpush(psb_err_from_subroutine_,name,a_err='clip & psb_spcnv csr 4') + call psb_errpush(psb_err_from_subroutine_,name,& + & a_err='clip & psb_spcnv csr 4') goto 9999 end if + call sm%sv%build(a,desc_a,upd,info) if (info /= psb_success_) then - call psb_errpush(psb_err_from_subroutine_,name,a_err='solver_build') + call psb_errpush(psb_err_from_subroutine_,name,& + & a_err='solver build') goto 9999 end if nzeros = sm%nd%get_nzeros() @@ -454,7 +457,7 @@ contains return end subroutine d_jac_smoother_free - subroutine d_jac_smoother_descr(sm,info,iout) + subroutine d_jac_smoother_descr(sm,info,iout,coarse) use psb_sparse_mod @@ -464,25 +467,34 @@ contains class(mld_d_jac_smoother_type), intent(in) :: sm integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act integer :: ictxt, me, np character(len=20), parameter :: name='mld_d_jac_smoother_descr' - integer :: iout_ + integer :: iout_ + logical :: coarse_ call psb_erractionsave(err_act) info = psb_success_ + if (present(coarse)) then + coarse_ = coarse + else + coarse_ = .false. + end if if (present(iout)) then iout_ = iout else iout_ = 6 endif - write(iout_,*) ' Block Jacobi smoother ' - write(iout_,*) ' Local solver:' + if (.not.coarse_) then + write(iout_,*) ' Block Jacobi smoother ' + write(iout_,*) ' Local solver:' + end if if (allocated(sm%sv)) then - call sm%sv%descr(info,iout_) + call sm%sv%descr(info,iout_,coarse=coarse) end if call psb_erractionrestore(err_act) diff --git a/mlprec/mld_d_prec_type.f90 b/mlprec/mld_d_prec_type.f90 index b6294b84..fd823ab0 100644 --- a/mlprec/mld_d_prec_type.f90 +++ b/mlprec/mld_d_prec_type.f90 @@ -313,7 +313,6 @@ contains val = val + psb_sizeof_int if (allocated(prec%precv)) then do i=1, size(prec%precv) -!!$ write(0,*) 'At level ',i, mld_sizeof(prec%precv(i)) val = val + mld_sizeof(prec%precv(i)) end do end if @@ -891,7 +890,7 @@ contains class(mld_d_base_smoother_type), intent(in) :: sm integer, intent(out) :: info integer, intent(in), optional :: iout - logical, intent(in), optional :: coarse + logical, intent(in), optional :: coarse ! Local variables integer :: err_act @@ -1179,7 +1178,7 @@ contains class(mld_d_base_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout - logical, intent(in), optional :: coarse + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_s_as_smoother.f90 b/mlprec/mld_s_as_smoother.f90 index 9a596c38..a1ac6aa2 100644 --- a/mlprec/mld_s_as_smoother.f90 +++ b/mlprec/mld_s_as_smoother.f90 @@ -885,7 +885,7 @@ contains return end subroutine s_as_smoother_free - subroutine s_as_smoother_descr(sm,info,iout) + subroutine s_as_smoother_descr(sm,info,iout,coarse) use psb_sparse_mod @@ -895,28 +895,37 @@ contains class(mld_s_as_smoother_type), intent(in) :: sm integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act integer :: ictxt, me, np character(len=20), parameter :: name='mld_s_as_smoother_descr' integer :: iout_ + logical :: coarse_ call psb_erractionsave(err_act) info = psb_success_ + if (present(coarse)) then + coarse_ = coarse + else + coarse_ = .false. + end if if (present(iout)) then iout_ = iout else iout_ = 6 endif - write(iout_,*) ' Additive Schwarz with ',& - & sm%novr, ' overlap layers.' - write(iout_,*) ' Restrictor: ',restrict_names(sm%restr) - write(iout_,*) ' Prolongator: ',prolong_names(sm%prol) - write(iout_,*) ' Local solver:' + if (.not.coarse_) then + write(iout_,*) ' Additive Schwarz with ',& + & sm%novr, ' overlap layers.' + write(iout_,*) ' Restrictor: ',restrict_names(sm%restr) + write(iout_,*) ' Prolongator: ',prolong_names(sm%prol) + write(iout_,*) ' Local solver:' + endif if (allocated(sm%sv)) then - call sm%sv%descr(info,iout_) + call sm%sv%descr(info,iout_,coarse=coarse) end if call psb_erractionrestore(err_act) diff --git a/mlprec/mld_s_diag_solver.f90 b/mlprec/mld_s_diag_solver.f90 index a26063c6..0f0a8ec1 100644 --- a/mlprec/mld_s_diag_solver.f90 +++ b/mlprec/mld_s_diag_solver.f90 @@ -419,7 +419,7 @@ contains return end subroutine s_diag_solver_free - subroutine s_diag_solver_descr(sv,info,iout) + subroutine s_diag_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -429,6 +429,7 @@ contains class(mld_s_diag_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_s_id_solver.f90 b/mlprec/mld_s_id_solver.f90 index fbd18fc4..50a9ebb8 100644 --- a/mlprec/mld_s_id_solver.f90 +++ b/mlprec/mld_s_id_solver.f90 @@ -234,7 +234,7 @@ contains return end subroutine s_id_solver_free - subroutine s_id_solver_descr(sv,info,iout) + subroutine s_id_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -244,6 +244,7 @@ contains class(mld_s_id_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_s_ilu_solver.f90 b/mlprec/mld_s_ilu_solver.f90 index 3d02e9aa..cc0bf54c 100644 --- a/mlprec/mld_s_ilu_solver.f90 +++ b/mlprec/mld_s_ilu_solver.f90 @@ -608,7 +608,7 @@ contains return end subroutine s_ilu_solver_free - subroutine s_ilu_solver_descr(sv,info,iout) + subroutine s_ilu_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -618,6 +618,7 @@ contains class(mld_s_ilu_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_s_jac_smoother.f90 b/mlprec/mld_s_jac_smoother.f90 index 11d49aaf..6000d7ac 100644 --- a/mlprec/mld_s_jac_smoother.f90 +++ b/mlprec/mld_s_jac_smoother.f90 @@ -457,7 +457,7 @@ contains return end subroutine s_jac_smoother_free - subroutine s_jac_smoother_descr(sm,info,iout) + subroutine s_jac_smoother_descr(sm,info,iout,coarse) use psb_sparse_mod @@ -467,25 +467,34 @@ contains class(mld_s_jac_smoother_type), intent(in) :: sm integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act integer :: ictxt, me, np character(len=20), parameter :: name='mld_s_jac_smoother_descr' - integer :: iout_ + integer :: iout_ + logical :: coarse_ call psb_erractionsave(err_act) info = psb_success_ + if (present(coarse)) then + coarse_ = coarse + else + coarse_ = .false. + end if if (present(iout)) then iout_ = iout else iout_ = 6 endif - write(iout_,*) ' Block Jacobi smoother ' - write(iout_,*) ' Local solver:' + if (.not.coarse_) then + write(iout_,*) ' Block Jacobi smoother ' + write(iout_,*) ' Local solver:' + end if if (allocated(sm%sv)) then - call sm%sv%descr(info,iout_) + call sm%sv%descr(info,iout_,coarse=coarse) end if call psb_erractionrestore(err_act) diff --git a/mlprec/mld_s_prec_type.f90 b/mlprec/mld_s_prec_type.f90 index e3b2a5e1..09991df4 100644 --- a/mlprec/mld_s_prec_type.f90 +++ b/mlprec/mld_s_prec_type.f90 @@ -521,7 +521,7 @@ contains end if end if if (allocated(lv%sm)) & - & call lv%sm%descr(info,iout=iout_) + & call lv%sm%descr(info,iout=iout_,coarse=coarse) call psb_erractionrestore(err_act) return @@ -877,7 +877,7 @@ contains return end subroutine s_base_smoother_free - subroutine s_base_smoother_descr(sm,info,iout) + subroutine s_base_smoother_descr(sm,info,iout,coarse) use psb_sparse_mod @@ -887,6 +887,7 @@ contains class(mld_s_base_smoother_type), intent(in) :: sm integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act @@ -1158,7 +1159,7 @@ contains return end subroutine s_base_solver_free - subroutine s_base_solver_descr(sv,info,iout) + subroutine s_base_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -1168,6 +1169,7 @@ contains class(mld_s_base_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_s_slu_solver.f90 b/mlprec/mld_s_slu_solver.f90 index d758ad83..6e2400d4 100644 --- a/mlprec/mld_s_slu_solver.f90 +++ b/mlprec/mld_s_slu_solver.f90 @@ -407,7 +407,7 @@ contains return end subroutine s_slu_solver_free - subroutine s_slu_solver_descr(sv,info,iout) + subroutine s_slu_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -417,6 +417,7 @@ contains class(mld_s_slu_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_z_as_smoother.f90 b/mlprec/mld_z_as_smoother.f90 index 6cd35bef..98a7fd8b 100644 --- a/mlprec/mld_z_as_smoother.f90 +++ b/mlprec/mld_z_as_smoother.f90 @@ -328,7 +328,8 @@ contains call sm%sv%apply(zone,tx,zzero,ty,sm%desc_data,trans_,aux,info) if (info /= psb_success_) then - call psb_errpush(psb_err_internal_error_,name,a_err='Error in sub_aply Jacobi Sweeps = 1') + call psb_errpush(psb_err_internal_error_,name,& + & a_err='Error in sub_aply Jacobi Sweeps = 1') goto 9999 endif @@ -885,7 +886,7 @@ contains return end subroutine z_as_smoother_free - subroutine z_as_smoother_descr(sm,info,iout) + subroutine z_as_smoother_descr(sm,info,iout,coarse) use psb_sparse_mod @@ -895,28 +896,37 @@ contains class(mld_z_as_smoother_type), intent(in) :: sm integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act integer :: ictxt, me, np character(len=20), parameter :: name='mld_z_as_smoother_descr' integer :: iout_ + logical :: coarse_ call psb_erractionsave(err_act) info = psb_success_ + if (present(coarse)) then + coarse_ = coarse + else + coarse_ = .false. + end if if (present(iout)) then iout_ = iout else iout_ = 6 endif - write(iout_,*) ' Additive Schwarz with ',& - & sm%novr, ' overlap layers.' - write(iout_,*) ' Restrictor: ',restrict_names(sm%restr) - write(iout_,*) ' Prolongator: ',prolong_names(sm%prol) - write(iout_,*) ' Local solver:' + if (.not.coarse_) then + write(iout_,*) ' Additive Schwarz with ',& + & sm%novr, ' overlap layers.' + write(iout_,*) ' Restrictor: ',restrict_names(sm%restr) + write(iout_,*) ' Prolongator: ',prolong_names(sm%prol) + write(iout_,*) ' Local solver:' + endif if (allocated(sm%sv)) then - call sm%sv%descr(info,iout_) + call sm%sv%descr(info,iout_,coarse=coarse) end if call psb_erractionrestore(err_act) diff --git a/mlprec/mld_z_diag_solver.f90 b/mlprec/mld_z_diag_solver.f90 index f54663b6..bd946be1 100644 --- a/mlprec/mld_z_diag_solver.f90 +++ b/mlprec/mld_z_diag_solver.f90 @@ -419,7 +419,7 @@ contains return end subroutine z_diag_solver_free - subroutine z_diag_solver_descr(sv,info,iout) + subroutine z_diag_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -429,6 +429,7 @@ contains class(mld_z_diag_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_z_id_solver.f90 b/mlprec/mld_z_id_solver.f90 index ad72ff8e..35b71058 100644 --- a/mlprec/mld_z_id_solver.f90 +++ b/mlprec/mld_z_id_solver.f90 @@ -234,7 +234,7 @@ contains return end subroutine z_id_solver_free - subroutine z_id_solver_descr(sv,info,iout) + subroutine z_id_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -244,6 +244,7 @@ contains class(mld_z_id_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_z_ilu_solver.f90 b/mlprec/mld_z_ilu_solver.f90 index 9d7cab46..00700d31 100644 --- a/mlprec/mld_z_ilu_solver.f90 +++ b/mlprec/mld_z_ilu_solver.f90 @@ -608,7 +608,7 @@ contains return end subroutine z_ilu_solver_free - subroutine z_ilu_solver_descr(sv,info,iout) + subroutine z_ilu_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -618,6 +618,7 @@ contains class(mld_z_ilu_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_z_jac_smoother.f90 b/mlprec/mld_z_jac_smoother.f90 index 22d4798c..5430b209 100644 --- a/mlprec/mld_z_jac_smoother.f90 +++ b/mlprec/mld_z_jac_smoother.f90 @@ -269,8 +269,6 @@ contains end select if (info == psb_success_) call sm%nd%cscnv(info,& & type='csr',dupl=psb_dupl_add_) - if (info == psb_success_) & - & call sm%sv%build(a,desc_a,upd,info) if (info /= psb_success_) then call psb_errpush(psb_err_from_subroutine_,name,& & a_err='clip & psb_spcnv csr 4') @@ -459,7 +457,7 @@ contains return end subroutine z_jac_smoother_free - subroutine z_jac_smoother_descr(sm,info,iout) + subroutine z_jac_smoother_descr(sm,info,iout,coarse) use psb_sparse_mod @@ -469,25 +467,34 @@ contains class(mld_z_jac_smoother_type), intent(in) :: sm integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act integer :: ictxt, me, np character(len=20), parameter :: name='mld_z_jac_smoother_descr' - integer :: iout_ + integer :: iout_ + logical :: coarse_ call psb_erractionsave(err_act) info = psb_success_ + if (present(coarse)) then + coarse_ = coarse + else + coarse_ = .false. + end if if (present(iout)) then iout_ = iout else iout_ = 6 endif - write(iout_,*) ' Block Jacobi smoother ' - write(iout_,*) ' Local solver:' + if (.not.coarse_) then + write(iout_,*) ' Block Jacobi smoother ' + write(iout_,*) ' Local solver:' + end if if (allocated(sm%sv)) then - call sm%sv%descr(info,iout_) + call sm%sv%descr(info,iout_,coarse=coarse) end if call psb_erractionrestore(err_act) diff --git a/mlprec/mld_z_prec_type.f90 b/mlprec/mld_z_prec_type.f90 index 0212c682..03c409b0 100644 --- a/mlprec/mld_z_prec_type.f90 +++ b/mlprec/mld_z_prec_type.f90 @@ -519,7 +519,7 @@ contains end if end if if (allocated(lv%sm)) & - & call lv%sm%descr(info,iout=iout_) + & call lv%sm%descr(info,iout=iout_,coarse=coarse) call psb_erractionrestore(err_act) return @@ -874,7 +874,7 @@ contains return end subroutine z_base_smoother_free - subroutine z_base_smoother_descr(sm,info,iout) + subroutine z_base_smoother_descr(sm,info,iout,coarse) use psb_sparse_mod @@ -884,6 +884,7 @@ contains class(mld_z_base_smoother_type), intent(in) :: sm integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act @@ -1153,7 +1154,7 @@ contains return end subroutine z_base_solver_free - subroutine z_base_solver_descr(sv,info,iout) + subroutine z_base_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -1163,6 +1164,7 @@ contains class(mld_z_base_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_z_slu_solver.f90 b/mlprec/mld_z_slu_solver.f90 index 9e128e38..65a6d58b 100644 --- a/mlprec/mld_z_slu_solver.f90 +++ b/mlprec/mld_z_slu_solver.f90 @@ -409,7 +409,7 @@ contains return end subroutine z_slu_solver_free - subroutine z_slu_solver_descr(sv,info,iout) + subroutine z_slu_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -419,6 +419,7 @@ contains class(mld_z_slu_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act diff --git a/mlprec/mld_z_umf_solver.f90 b/mlprec/mld_z_umf_solver.f90 index c4ba378f..901f6669 100644 --- a/mlprec/mld_z_umf_solver.f90 +++ b/mlprec/mld_z_umf_solver.f90 @@ -412,7 +412,7 @@ contains return end subroutine z_umf_solver_free - subroutine z_umf_solver_descr(sv,info,iout) + subroutine z_umf_solver_descr(sv,info,iout,coarse) use psb_sparse_mod @@ -422,6 +422,7 @@ contains class(mld_z_umf_solver_type), intent(in) :: sv integer, intent(out) :: info integer, intent(in), optional :: iout + logical, intent(in), optional :: coarse ! Local variables integer :: err_act