|
|
|
@ -109,7 +109,8 @@ subroutine mld_dprecseti(p,what,val,info,ilev)
|
|
|
|
|
|
|
|
|
|
if (.not.allocated(p%precv)) then
|
|
|
|
|
info = 3111
|
|
|
|
|
write(psb_err_unit,*) name,': Error: uninitialized preconditioner,',&
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
& ': Error: uninitialized preconditioner,',&
|
|
|
|
|
&' should call MLD_PRECINIT'
|
|
|
|
|
return
|
|
|
|
|
endif
|
|
|
|
@ -123,7 +124,8 @@ subroutine mld_dprecseti(p,what,val,info,ilev)
|
|
|
|
|
|
|
|
|
|
if ((ilev_<1).or.(ilev_ > nlev_)) then
|
|
|
|
|
info = -1
|
|
|
|
|
write(psb_err_unit,*) name,': Error: invalid ILEV/NLEV combination',ilev_, nlev_
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
&': Error: invalid ILEV/NLEV combination',ilev_, nlev_
|
|
|
|
|
return
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
@ -150,7 +152,6 @@ subroutine mld_dprecseti(p,what,val,info,ilev)
|
|
|
|
|
|
|
|
|
|
case default
|
|
|
|
|
call p%precv(ilev_)%set(what,val,info)
|
|
|
|
|
call p%precv(ilev_)%set(what,val,info)
|
|
|
|
|
end select
|
|
|
|
|
|
|
|
|
|
else if (ilev_ > 1) then
|
|
|
|
@ -170,14 +171,16 @@ subroutine mld_dprecseti(p,what,val,info,ilev)
|
|
|
|
|
|
|
|
|
|
case(mld_coarse_subsolve_)
|
|
|
|
|
if (ilev_ /= nlev_) then
|
|
|
|
|
write(0,*) name,': Error: Inconsistent specification of WHAT vs. ILEV'
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
& ': Error: Inconsistent specification of WHAT vs. ILEV'
|
|
|
|
|
info = -2
|
|
|
|
|
return
|
|
|
|
|
end if
|
|
|
|
|
call onelev_set_solver(p%precv(ilev_),val,info)
|
|
|
|
|
case(mld_coarse_solve_)
|
|
|
|
|
if (ilev_ /= nlev_) then
|
|
|
|
|
write(0,*) name,': Error: Inconsistent specification of WHAT vs. ILEV'
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
& ': Error: Inconsistent specification of WHAT vs. ILEV'
|
|
|
|
|
info = -2
|
|
|
|
|
return
|
|
|
|
|
end if
|
|
|
|
@ -212,7 +215,8 @@ subroutine mld_dprecseti(p,what,val,info,ilev)
|
|
|
|
|
endif
|
|
|
|
|
case(mld_coarse_sweeps_)
|
|
|
|
|
if (ilev_ /= nlev_) then
|
|
|
|
|
write(0,*) name,': Error: Inconsistent specification of WHAT vs. ILEV'
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
& ': Error: Inconsistent specification of WHAT vs. ILEV'
|
|
|
|
|
info = -2
|
|
|
|
|
return
|
|
|
|
|
end if
|
|
|
|
@ -220,14 +224,14 @@ subroutine mld_dprecseti(p,what,val,info,ilev)
|
|
|
|
|
|
|
|
|
|
case(mld_coarse_fillin_)
|
|
|
|
|
if (ilev_ /= nlev_) then
|
|
|
|
|
write(0,*) name,': Error: Inconsistent specification of WHAT vs. ILEV'
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
& ': Error: Inconsistent specification of WHAT vs. ILEV'
|
|
|
|
|
info = -2
|
|
|
|
|
return
|
|
|
|
|
end if
|
|
|
|
|
call p%precv(nlev_)%set(mld_sub_fillin_,val,info)
|
|
|
|
|
case default
|
|
|
|
|
call p%precv(ilev_)%set(what,val,info)
|
|
|
|
|
call p%precv(ilev_)%set(what,val,info)
|
|
|
|
|
end select
|
|
|
|
|
|
|
|
|
|
endif
|
|
|
|
@ -241,7 +245,7 @@ subroutine mld_dprecseti(p,what,val,info,ilev)
|
|
|
|
|
case(mld_sub_solve_)
|
|
|
|
|
do ilev_=1,max(1,nlev_-1)
|
|
|
|
|
if (.not.allocated(p%precv(ilev_)%sm)) then
|
|
|
|
|
write(0,*) name,&
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
& ': Error: uninitialized preconditioner component,',&
|
|
|
|
|
& ' should call MLD_PRECINIT'
|
|
|
|
|
info = -1
|
|
|
|
@ -554,7 +558,8 @@ subroutine mld_dprecsetsm(p,val,info,ilev)
|
|
|
|
|
|
|
|
|
|
if (.not.allocated(p%precv)) then
|
|
|
|
|
info = 3111
|
|
|
|
|
write(0,*) name,': Error: uninitialized preconditioner,',&
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
& ': Error: uninitialized preconditioner,',&
|
|
|
|
|
&' should call MLD_PRECINIT'
|
|
|
|
|
return
|
|
|
|
|
endif
|
|
|
|
@ -572,7 +577,8 @@ subroutine mld_dprecsetsm(p,val,info,ilev)
|
|
|
|
|
|
|
|
|
|
if ((ilev_<1).or.(ilev_ > nlev_)) then
|
|
|
|
|
info = -1
|
|
|
|
|
write(0,*) name,': Error: invalid ILEV/NLEV combination',ilev_, nlev_
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
& ': Error: invalid ILEV/NLEV combination',ilev_, nlev_
|
|
|
|
|
return
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
@ -615,7 +621,8 @@ subroutine mld_dprecsetsv(p,val,info,ilev)
|
|
|
|
|
|
|
|
|
|
if (.not.allocated(p%precv)) then
|
|
|
|
|
info = 3111
|
|
|
|
|
write(0,*) name,': Error: uninitialized preconditioner,',&
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
& ': Error: uninitialized preconditioner,',&
|
|
|
|
|
&' should call MLD_PRECINIT'
|
|
|
|
|
return
|
|
|
|
|
endif
|
|
|
|
@ -634,7 +641,8 @@ subroutine mld_dprecsetsv(p,val,info,ilev)
|
|
|
|
|
|
|
|
|
|
if ((ilev_<1).or.(ilev_ > nlev_)) then
|
|
|
|
|
info = -1
|
|
|
|
|
write(0,*) name,': Error: invalid ILEV/NLEV combination',ilev_, nlev_
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
& ': Error: invalid ILEV/NLEV combination',ilev_, nlev_
|
|
|
|
|
return
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
@ -651,7 +659,7 @@ subroutine mld_dprecsetsv(p,val,info,ilev)
|
|
|
|
|
call p%precv(ilev_)%sm%sv%default()
|
|
|
|
|
else
|
|
|
|
|
info = 3111
|
|
|
|
|
write(0,*) name,&
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
&': Error: uninitialized preconditioner component,',&
|
|
|
|
|
&' should call MLD_PRECINIT/MLD_PRECSET'
|
|
|
|
|
return
|
|
|
|
@ -736,7 +744,8 @@ subroutine mld_dprecsetc(p,what,string,info,ilev)
|
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
if ((ilev_<1).or.(ilev_ > nlev_)) then
|
|
|
|
|
write(0,*) name,': Error: invalid ILEV/NLEV combination',ilev_, nlev_
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
& ': Error: invalid ILEV/NLEV combination',ilev_, nlev_
|
|
|
|
|
info = -1
|
|
|
|
|
return
|
|
|
|
|
endif
|
|
|
|
@ -813,7 +822,8 @@ subroutine mld_dprecsetr(p,what,val,info,ilev)
|
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
if (.not.allocated(p%precv)) then
|
|
|
|
|
write(0,*) name,': Error: uninitialized preconditioner,',&
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
&': Error: uninitialized preconditioner,',&
|
|
|
|
|
&' should call MLD_PRECINIT'
|
|
|
|
|
info = 3111
|
|
|
|
|
return
|
|
|
|
@ -821,7 +831,8 @@ subroutine mld_dprecsetr(p,what,val,info,ilev)
|
|
|
|
|
nlev_ = size(p%precv)
|
|
|
|
|
|
|
|
|
|
if ((ilev_<1).or.(ilev_ > nlev_)) then
|
|
|
|
|
write(0,*) name,': Error: invalid ILEV/NLEV combination',&
|
|
|
|
|
write(psb_err_unit,*) name,&
|
|
|
|
|
& ': Error: invalid ILEV/NLEV combination',&
|
|
|
|
|
& ilev_, nlev_
|
|
|
|
|
info = -1
|
|
|
|
|
return
|
|
|
|
|