|
|
@ -26,9 +26,9 @@ subroutine psb_dspfree(a, desc_a,info)
|
|
|
|
integer :: temp(1)
|
|
|
|
integer :: temp(1)
|
|
|
|
real(kind(1.d0)) :: real_err(5)
|
|
|
|
real(kind(1.d0)) :: real_err(5)
|
|
|
|
integer :: icontxt,nprow,npcol,me,mypcol,err, err_act
|
|
|
|
integer :: icontxt,nprow,npcol,me,mypcol,err, err_act
|
|
|
|
integer,parameter :: ione=1
|
|
|
|
|
|
|
|
character(len=20) :: name, ch_err
|
|
|
|
character(len=20) :: name, ch_err
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(psb_get_errstatus().ne.0) return
|
|
|
|
info=0
|
|
|
|
info=0
|
|
|
|
name = 'psb_dspfree'
|
|
|
|
name = 'psb_dspfree'
|
|
|
|
call psb_erractionsave(err_act)
|
|
|
|
call psb_erractionsave(err_act)
|
|
|
@ -95,78 +95,78 @@ end subroutine psb_dspfree
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!!$subroutine psb_dspfrees(a, info)
|
|
|
|
subroutine psb_dspfrees(a, info)
|
|
|
|
!!$ !...free sparse matrix structure...
|
|
|
|
!...free sparse matrix structure...
|
|
|
|
!!$ use psb_descriptor_type
|
|
|
|
use psb_descriptor_type
|
|
|
|
!!$ use psb_spmat_type
|
|
|
|
use psb_spmat_type
|
|
|
|
!!$ use psb_serial_mod
|
|
|
|
use psb_serial_mod
|
|
|
|
!!$ use psb_const_mod
|
|
|
|
use psb_const_mod
|
|
|
|
!!$ use psb_error_mod
|
|
|
|
use psb_error_mod
|
|
|
|
!!$ implicit none
|
|
|
|
implicit none
|
|
|
|
!!$
|
|
|
|
|
|
|
|
!!$ !....parameters...
|
|
|
|
!....parameters...
|
|
|
|
!!$ type(psb_dspmat_type), intent(inout) ::a
|
|
|
|
type(psb_dspmat_type), intent(inout) ::a
|
|
|
|
!!$ integer, intent(out) :: info
|
|
|
|
integer, intent(out) :: info
|
|
|
|
!!$ !...locals....
|
|
|
|
!...locals....
|
|
|
|
!!$ integer :: int_err(5)
|
|
|
|
integer :: int_err(5)
|
|
|
|
!!$ integer :: temp(1)
|
|
|
|
integer :: temp(1)
|
|
|
|
!!$ real(kind(1.d0)) :: real_err(5)
|
|
|
|
real(kind(1.d0)) :: real_err(5)
|
|
|
|
!!$ integer :: icontxt,nprow,npcol,me,mypcol,err, err_act
|
|
|
|
integer :: icontxt,nprow,npcol,me,mypcol,err, err_act
|
|
|
|
!!$ integer,parameter :: ione=1
|
|
|
|
character(len=20) :: name, ch_err
|
|
|
|
!!$ character(len=20) :: name, ch_err
|
|
|
|
|
|
|
|
!!$
|
|
|
|
if(psb_get_errstatus().ne.0) return
|
|
|
|
!!$ info=0
|
|
|
|
info=0
|
|
|
|
!!$ name = 'psb_dspfrees'
|
|
|
|
name = 'psb_dspfrees'
|
|
|
|
!!$ call psb_erractionsave(err_act)
|
|
|
|
call psb_erractionsave(err_act)
|
|
|
|
!!$
|
|
|
|
|
|
|
|
!!$ !...deallocate a....
|
|
|
|
!...deallocate a....
|
|
|
|
!!$
|
|
|
|
|
|
|
|
!!$ if ((info.eq.0).and.(.not.associated(a%pr))) info=2951
|
|
|
|
if ((info.eq.0).and.(.not.associated(a%pr))) info=2951
|
|
|
|
!!$ if (info.eq.0) then
|
|
|
|
if (info.eq.0) then
|
|
|
|
!!$ !deallocate pr field
|
|
|
|
!deallocate pr field
|
|
|
|
!!$ deallocate(a%pr,stat=info)
|
|
|
|
deallocate(a%pr,stat=info)
|
|
|
|
!!$ if (info.ne.0) info=2045
|
|
|
|
if (info.ne.0) info=2045
|
|
|
|
!!$ end if
|
|
|
|
end if
|
|
|
|
!!$ if ((info.eq.0).and.(.not.associated(a%pl))) info=2952
|
|
|
|
if ((info.eq.0).and.(.not.associated(a%pl))) info=2952
|
|
|
|
!!$ !deallocate pl field
|
|
|
|
!deallocate pl field
|
|
|
|
!!$ if (info.eq.0) then
|
|
|
|
if (info.eq.0) then
|
|
|
|
!!$ deallocate(a%pl,stat=info)
|
|
|
|
deallocate(a%pl,stat=info)
|
|
|
|
!!$ if (info.ne.0) info=2046
|
|
|
|
if (info.ne.0) info=2046
|
|
|
|
!!$ end if
|
|
|
|
end if
|
|
|
|
!!$ if ((info.eq.0).and.(.not.associated(a%ia2))) info=2953
|
|
|
|
if ((info.eq.0).and.(.not.associated(a%ia2))) info=2953
|
|
|
|
!!$ if (info.eq.0) then
|
|
|
|
if (info.eq.0) then
|
|
|
|
!!$ !deallocate ia2 field
|
|
|
|
!deallocate ia2 field
|
|
|
|
!!$ deallocate(a%ia2,stat=info)
|
|
|
|
deallocate(a%ia2,stat=info)
|
|
|
|
!!$ if (info.ne.0) info=2047
|
|
|
|
if (info.ne.0) info=2047
|
|
|
|
!!$ end if
|
|
|
|
end if
|
|
|
|
!!$ if ((info.eq.0).and.(.not.associated(a%ia1))) info=2954
|
|
|
|
if ((info.eq.0).and.(.not.associated(a%ia1))) info=2954
|
|
|
|
!!$ if (info.eq.0) then
|
|
|
|
if (info.eq.0) then
|
|
|
|
!!$ !deallocate ia1 field
|
|
|
|
!deallocate ia1 field
|
|
|
|
!!$ deallocate(a%ia1,stat=info)
|
|
|
|
deallocate(a%ia1,stat=info)
|
|
|
|
!!$ if (info.ne.0) info=2048
|
|
|
|
if (info.ne.0) info=2048
|
|
|
|
!!$ endif
|
|
|
|
endif
|
|
|
|
!!$ if ((info.eq.0).and.(.not.associated(a%aspk))) info=2955
|
|
|
|
if ((info.eq.0).and.(.not.associated(a%aspk))) info=2955
|
|
|
|
!!$ if (info.eq.0) then
|
|
|
|
if (info.eq.0) then
|
|
|
|
!!$ !deallocate aspk field
|
|
|
|
!deallocate aspk field
|
|
|
|
!!$ deallocate(a%aspk,stat=info)
|
|
|
|
deallocate(a%aspk,stat=info)
|
|
|
|
!!$ if (info.ne.0) info=2049
|
|
|
|
if (info.ne.0) info=2049
|
|
|
|
!!$ endif
|
|
|
|
endif
|
|
|
|
!!$ if (info.eq.0) call psb_nullify_sp(a)
|
|
|
|
if (info.eq.0) call psb_nullify_sp(a)
|
|
|
|
!!$
|
|
|
|
|
|
|
|
!!$ if(info.ne.0) then
|
|
|
|
if(info.ne.0) then
|
|
|
|
!!$ call psb_errpush(info,name)
|
|
|
|
call psb_errpush(info,name)
|
|
|
|
!!$ goto 9999
|
|
|
|
goto 9999
|
|
|
|
!!$ end if
|
|
|
|
end if
|
|
|
|
!!$
|
|
|
|
|
|
|
|
!!$ call psb_erractionrestore(err_act)
|
|
|
|
call psb_erractionrestore(err_act)
|
|
|
|
!!$ return
|
|
|
|
return
|
|
|
|
!!$
|
|
|
|
|
|
|
|
!!$9999 continue
|
|
|
|
9999 continue
|
|
|
|
!!$ call psb_erractionrestore(err_act)
|
|
|
|
call psb_erractionrestore(err_act)
|
|
|
|
!!$ if (err_act.eq.act_abort) then
|
|
|
|
if (err_act.eq.act_abort) then
|
|
|
|
!!$ call psb_error()
|
|
|
|
call psb_error()
|
|
|
|
!!$ return
|
|
|
|
return
|
|
|
|
!!$ end if
|
|
|
|
end if
|
|
|
|
!!$ return
|
|
|
|
return
|
|
|
|
!!$
|
|
|
|
|
|
|
|
!!$end subroutine psb_dspfrees
|
|
|
|
end subroutine psb_dspfrees
|
|
|
|