|
|
@ -328,7 +328,8 @@ contains
|
|
|
|
call sm%sv%apply(cone,tx,czero,ty,sm%desc_data,trans_,aux,info)
|
|
|
|
call sm%sv%apply(cone,tx,czero,ty,sm%desc_data,trans_,aux,info)
|
|
|
|
|
|
|
|
|
|
|
|
if (info /= psb_success_) then
|
|
|
|
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
|
|
|
|
goto 9999
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
@ -885,7 +886,7 @@ contains
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end subroutine c_as_smoother_free
|
|
|
|
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
|
|
|
|
use psb_sparse_mod
|
|
|
|
|
|
|
|
|
|
|
@ -895,28 +896,37 @@ contains
|
|
|
|
class(mld_c_as_smoother_type), intent(in) :: sm
|
|
|
|
class(mld_c_as_smoother_type), intent(in) :: sm
|
|
|
|
integer, intent(out) :: info
|
|
|
|
integer, intent(out) :: info
|
|
|
|
integer, intent(in), optional :: iout
|
|
|
|
integer, intent(in), optional :: iout
|
|
|
|
|
|
|
|
logical, intent(in), optional :: coarse
|
|
|
|
|
|
|
|
|
|
|
|
! Local variables
|
|
|
|
! Local variables
|
|
|
|
integer :: err_act
|
|
|
|
integer :: err_act
|
|
|
|
integer :: ictxt, me, np
|
|
|
|
integer :: ictxt, me, np
|
|
|
|
character(len=20), parameter :: name='mld_c_as_smoother_descr'
|
|
|
|
character(len=20), parameter :: name='mld_c_as_smoother_descr'
|
|
|
|
integer :: iout_
|
|
|
|
integer :: iout_
|
|
|
|
|
|
|
|
logical :: coarse_
|
|
|
|
|
|
|
|
|
|
|
|
call psb_erractionsave(err_act)
|
|
|
|
call psb_erractionsave(err_act)
|
|
|
|
info = psb_success_
|
|
|
|
info = psb_success_
|
|
|
|
|
|
|
|
if (present(coarse)) then
|
|
|
|
|
|
|
|
coarse_ = coarse
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
coarse_ = .false.
|
|
|
|
|
|
|
|
end if
|
|
|
|
if (present(iout)) then
|
|
|
|
if (present(iout)) then
|
|
|
|
iout_ = iout
|
|
|
|
iout_ = iout
|
|
|
|
else
|
|
|
|
else
|
|
|
|
iout_ = 6
|
|
|
|
iout_ = 6
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (.not.coarse_) then
|
|
|
|
write(iout_,*) ' Additive Schwarz with ',&
|
|
|
|
write(iout_,*) ' Additive Schwarz with ',&
|
|
|
|
& sm%novr, ' overlap layers.'
|
|
|
|
& sm%novr, ' overlap layers.'
|
|
|
|
write(iout_,*) ' Restrictor: ',restrict_names(sm%restr)
|
|
|
|
write(iout_,*) ' Restrictor: ',restrict_names(sm%restr)
|
|
|
|
write(iout_,*) ' Prolongator: ',prolong_names(sm%prol)
|
|
|
|
write(iout_,*) ' Prolongator: ',prolong_names(sm%prol)
|
|
|
|
write(iout_,*) ' Local solver:'
|
|
|
|
write(iout_,*) ' Local solver:'
|
|
|
|
|
|
|
|
endif
|
|
|
|
if (allocated(sm%sv)) then
|
|
|
|
if (allocated(sm%sv)) then
|
|
|
|
call sm%sv%descr(info,iout_)
|
|
|
|
call sm%sv%descr(info,iout_,coarse=coarse)
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
call psb_erractionrestore(err_act)
|
|
|
|
call psb_erractionrestore(err_act)
|
|
|
|