|
|
@ -39,6 +39,7 @@ subroutine mld_c_base_smoother_descr(sm,info,iout,coarse)
|
|
|
|
|
|
|
|
|
|
|
|
use psb_base_mod
|
|
|
|
use psb_base_mod
|
|
|
|
use mld_c_base_smoother_mod, mld_protect_name => mld_c_base_smoother_descr
|
|
|
|
use mld_c_base_smoother_mod, mld_protect_name => mld_c_base_smoother_descr
|
|
|
|
|
|
|
|
use mld_c_id_solver
|
|
|
|
Implicit None
|
|
|
|
Implicit None
|
|
|
|
|
|
|
|
|
|
|
|
! Arguments
|
|
|
|
! Arguments
|
|
|
@ -69,16 +70,28 @@ subroutine mld_c_base_smoother_descr(sm,info,iout,coarse)
|
|
|
|
iout_ = psb_out_unit
|
|
|
|
iout_ = psb_out_unit
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if (.not.coarse_) &
|
|
|
|
if (coarse_) then
|
|
|
|
& write(iout_,*) 'Decoupled preconditioner/smoother with local solver'
|
|
|
|
if (allocated(sm%sv)) call sm%sv%descr(info,iout,coarse)
|
|
|
|
|
|
|
|
else
|
|
|
|
if (allocated(sm%sv)) then
|
|
|
|
if (allocated(sm%sv)) then
|
|
|
|
|
|
|
|
select type (sv => sm%sv)
|
|
|
|
|
|
|
|
class is (mld_c_id_solver_type)
|
|
|
|
|
|
|
|
write(iout_,*) 'No preconditioner/smoother'
|
|
|
|
|
|
|
|
class default
|
|
|
|
|
|
|
|
write(iout_,*) 'Decoupled preconditioner/smoother with local solver'
|
|
|
|
call sm%sv%descr(info,iout,coarse)
|
|
|
|
call sm%sv%descr(info,iout,coarse)
|
|
|
|
|
|
|
|
end select
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
write(iout_,*) 'No preconditioner/smoother'
|
|
|
|
|
|
|
|
end if
|
|
|
|
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
if (info /= psb_success_) then
|
|
|
|
if (info /= psb_success_) then
|
|
|
|
info = psb_err_from_subroutine_
|
|
|
|
info = psb_err_from_subroutine_
|
|
|
|
call psb_errpush(info,name,a_err='Local solver')
|
|
|
|
call psb_errpush(info,name,a_err='Local solver')
|
|
|
|
goto 9999
|
|
|
|
goto 9999
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
end if
|
|
|
|
|
|
|
|
call psb_erractionrestore(err_act)
|
|
|
|
call psb_erractionrestore(err_act)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|