Call free_wrk inside lev%free. Fix prec%free_wrk.

stopcriterion
Salvatore Filippone 6 years ago
parent 70a57f6ab0
commit 0082f4404b

@ -54,6 +54,9 @@ subroutine mld_c_base_onelev_free(lv,info)
if (allocated(lv%sm)) & if (allocated(lv%sm)) &
& call lv%sm%free(info) & call lv%sm%free(info)
if (allocated(lv%wrk)) &
& call lv%wrk%free(info)
call lv%ac%free() call lv%ac%free()
if (lv%desc_ac%is_ok()) & if (lv%desc_ac%is_ok()) &
& call lv%desc_ac%free(info) & call lv%desc_ac%free(info)

@ -54,6 +54,9 @@ subroutine mld_d_base_onelev_free(lv,info)
if (allocated(lv%sm)) & if (allocated(lv%sm)) &
& call lv%sm%free(info) & call lv%sm%free(info)
if (allocated(lv%wrk)) &
& call lv%wrk%free(info)
call lv%ac%free() call lv%ac%free()
if (lv%desc_ac%is_ok()) & if (lv%desc_ac%is_ok()) &
& call lv%desc_ac%free(info) & call lv%desc_ac%free(info)

@ -54,6 +54,9 @@ subroutine mld_s_base_onelev_free(lv,info)
if (allocated(lv%sm)) & if (allocated(lv%sm)) &
& call lv%sm%free(info) & call lv%sm%free(info)
if (allocated(lv%wrk)) &
& call lv%wrk%free(info)
call lv%ac%free() call lv%ac%free()
if (lv%desc_ac%is_ok()) & if (lv%desc_ac%is_ok()) &
& call lv%desc_ac%free(info) & call lv%desc_ac%free(info)

@ -54,6 +54,9 @@ subroutine mld_z_base_onelev_free(lv,info)
if (allocated(lv%sm)) & if (allocated(lv%sm)) &
& call lv%sm%free(info) & call lv%sm%free(info)
if (allocated(lv%wrk)) &
& call lv%wrk%free(info)
call lv%ac%free() call lv%ac%free()
if (lv%desc_ac%is_ok()) & if (lv%desc_ac%is_ok()) &
& call lv%desc_ac%free(info) & call lv%desc_ac%free(info)

@ -579,7 +579,6 @@ contains
end if end if
me=-1 me=-1
call prec%free_wrk(info)
if (allocated(prec%precv)) then if (allocated(prec%precv)) then
do i=1,size(prec%precv) do i=1,size(prec%precv)
call prec%precv(i)%free(info) call prec%precv(i)%free(info)
@ -910,10 +909,12 @@ contains
info = psb_err_internal_error_; goto 9999 info = psb_err_internal_error_; goto 9999
end if end if
if (allocated(prec%precv)) then
nlev = size(prec%precv) nlev = size(prec%precv)
do level = 1, nlev do level = 1, nlev
call prec%precv(level)%free_wrk(info) call prec%precv(level)%free_wrk(info)
end do end do
end if
call psb_erractionrestore(err_act) call psb_erractionrestore(err_act)
return return

@ -579,7 +579,6 @@ contains
end if end if
me=-1 me=-1
call prec%free_wrk(info)
if (allocated(prec%precv)) then if (allocated(prec%precv)) then
do i=1,size(prec%precv) do i=1,size(prec%precv)
call prec%precv(i)%free(info) call prec%precv(i)%free(info)
@ -910,10 +909,12 @@ contains
info = psb_err_internal_error_; goto 9999 info = psb_err_internal_error_; goto 9999
end if end if
if (allocated(prec%precv)) then
nlev = size(prec%precv) nlev = size(prec%precv)
do level = 1, nlev do level = 1, nlev
call prec%precv(level)%free_wrk(info) call prec%precv(level)%free_wrk(info)
end do end do
end if
call psb_erractionrestore(err_act) call psb_erractionrestore(err_act)
return return

@ -579,7 +579,6 @@ contains
end if end if
me=-1 me=-1
call prec%free_wrk(info)
if (allocated(prec%precv)) then if (allocated(prec%precv)) then
do i=1,size(prec%precv) do i=1,size(prec%precv)
call prec%precv(i)%free(info) call prec%precv(i)%free(info)
@ -910,10 +909,12 @@ contains
info = psb_err_internal_error_; goto 9999 info = psb_err_internal_error_; goto 9999
end if end if
if (allocated(prec%precv)) then
nlev = size(prec%precv) nlev = size(prec%precv)
do level = 1, nlev do level = 1, nlev
call prec%precv(level)%free_wrk(info) call prec%precv(level)%free_wrk(info)
end do end do
end if
call psb_erractionrestore(err_act) call psb_erractionrestore(err_act)
return return

@ -579,7 +579,6 @@ contains
end if end if
me=-1 me=-1
call prec%free_wrk(info)
if (allocated(prec%precv)) then if (allocated(prec%precv)) then
do i=1,size(prec%precv) do i=1,size(prec%precv)
call prec%precv(i)%free(info) call prec%precv(i)%free(info)
@ -910,10 +909,12 @@ contains
info = psb_err_internal_error_; goto 9999 info = psb_err_internal_error_; goto 9999
end if end if
if (allocated(prec%precv)) then
nlev = size(prec%precv) nlev = size(prec%precv)
do level = 1, nlev do level = 1, nlev
call prec%precv(level)%free_wrk(info) call prec%precv(level)%free_wrk(info)
end do end do
end if
call psb_erractionrestore(err_act) call psb_erractionrestore(err_act)
return return

Loading…
Cancel
Save