Remove psbdcoins.f90.
parent
f25c92b8bd
commit
70866a9445
@ -1,220 +0,0 @@
|
||||
! File: psbdcoins.f90
|
||||
! Subroutine:
|
||||
! Parameters:
|
||||
subroutine psb_dcoins(nz,ia,ja,val,a,gtl,imin,imax,jmin,jmax,info)
|
||||
use typesp
|
||||
use tools_const
|
||||
use realloc
|
||||
use string
|
||||
use errormod
|
||||
use f90serial, only : spinfo
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: nz, imin,imax,jmin,jmax
|
||||
integer, intent(in) :: ia(:),ja(:),gtl(:)
|
||||
real(kind(1.d0)), intent(in) :: val(:)
|
||||
type(d_spmat), intent(inout) :: a
|
||||
integer, intent(out) :: info
|
||||
|
||||
character(len=5) :: ufida
|
||||
integer :: i,j,ir,ic,nr,nc, ng, nza, isza,spstate, nnz,&
|
||||
& ip1, nzl, err_act, int_err(5)
|
||||
integer, parameter :: izero=0
|
||||
logical, parameter :: debug=.true.
|
||||
character(len=20) :: name, ch_err
|
||||
|
||||
name='psbdcoins'
|
||||
info = 0
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
info = 0
|
||||
if (nz <= 0) then
|
||||
info = 10
|
||||
int_err(1)=1
|
||||
call psb_errpush(info,name,i_err=int_err)
|
||||
goto 9999
|
||||
end if
|
||||
if (size(ia) < nz) then
|
||||
info = 35
|
||||
int_err(1)=2
|
||||
call psb_errpush(info,name,i_err=int_err)
|
||||
goto 9999
|
||||
end if
|
||||
|
||||
if (size(ja) < nz) then
|
||||
info = 35
|
||||
int_err(1)=3
|
||||
call psb_errpush(info,name,i_err=int_err)
|
||||
goto 9999
|
||||
end if
|
||||
if (size(val) < nz) then
|
||||
info = 35
|
||||
int_err(1)=4
|
||||
call psb_errpush(info,name,i_err=int_err)
|
||||
goto 9999
|
||||
end if
|
||||
|
||||
|
||||
!!$ ufida = toupper(a%fida)
|
||||
call touppers(a%fida,ufida)
|
||||
ng = size(gtl)
|
||||
spstate = a%infoa(state_)
|
||||
|
||||
select case(spstate)
|
||||
case(spmat_bld)
|
||||
if ((ufida /= 'COO').and.(ufida/='COI')) then
|
||||
info = 134
|
||||
ch_err(1:3)=ufida(1:3)
|
||||
call psb_errpush(info,name,a_err=ch_err)
|
||||
goto 9999
|
||||
end if
|
||||
call spinfo(nztotreq,a,nza,info)
|
||||
call spinfo(nzsizereq,a,isza,info)
|
||||
if(info.ne.izero) then
|
||||
info=4010
|
||||
ch_err='spinfo'
|
||||
call psb_errpush(info,name,a_err=ch_err)
|
||||
goto 9999
|
||||
endif
|
||||
|
||||
if ((nza+nz)>isza) then
|
||||
call spreall(a,nza+nz,info)
|
||||
if(info.ne.izero) then
|
||||
info=4010
|
||||
ch_err='spreall'
|
||||
call psb_errpush(info,name,a_err=ch_err)
|
||||
goto 9999
|
||||
endif
|
||||
endif
|
||||
call psb_inner_ins(nz,ia,ja,val,nza,a%ia1,a%ia2,a%aspk,gtl,&
|
||||
& imin,imax,jmin,jmax,info)
|
||||
if(info.ne.izero) then
|
||||
info=4010
|
||||
ch_err='psb_inner_ins'
|
||||
call psb_errpush(info,name,a_err=ch_err)
|
||||
goto 9999
|
||||
endif
|
||||
if (debug) then
|
||||
if ((nza - a%infoa(nnz_)) /= nz) then
|
||||
write(0,*) 'PSB_COINS: insert discarded items '
|
||||
end if
|
||||
end if
|
||||
if ((nza - a%infoa(nnz_)) /= nz) then
|
||||
a%infoa(del_bnd_) = nza
|
||||
endif
|
||||
a%infoa(nnz_) = nza
|
||||
|
||||
case(spmat_upd)
|
||||
|
||||
if (ibits(a%infoa(upd_),2,1).eq.1) then
|
||||
ip1 = a%infoa(upd_pnt_)
|
||||
nza = a%ia2(ip1+nnz_)
|
||||
nzl = a%infoa(del_bnd_)
|
||||
|
||||
call psb_inner_upd(nz,ia,ja,val,nza,a%aspk,gtl,&
|
||||
& imin,imax,jmin,jmax,nzl,info)
|
||||
if(info.ne.izero) then
|
||||
info=4010
|
||||
ch_err='psb_inner_upd'
|
||||
call psb_errpush(info,name,a_err=ch_err)
|
||||
goto 9999
|
||||
endif
|
||||
!!$ if (debug) then
|
||||
!!$ if ((nza - a%ia2(ip1+nnz_)) /= nz) then
|
||||
!!$ write(0,*) 'PSB_COINS: update discarded items '
|
||||
!!$ end if
|
||||
!!$ end if
|
||||
|
||||
a%ia2(ip1+nnz_) = nza
|
||||
else
|
||||
info = 2231
|
||||
goto 9999
|
||||
endif
|
||||
|
||||
case default
|
||||
info = 2232
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
end select
|
||||
return
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act.eq.act_abort) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
contains
|
||||
subroutine psb_inner_upd(nz,ia,ja,val,nza,aspk,gtl,imin,imax,jmin,jmax,nzl,info)
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: nz, imin,imax,jmin,jmax,nzl
|
||||
integer, intent(in) :: ia(*),ja(*),gtl(*)
|
||||
integer, intent(inout) :: nza
|
||||
real(kind(1.d0)), intent(in) :: val(*)
|
||||
real(kind(1.d0)), intent(inout) :: aspk(*)
|
||||
integer, intent(out) :: info
|
||||
integer :: i,ir,ic
|
||||
|
||||
info = 0
|
||||
|
||||
if (nza >= nzl) then
|
||||
do i=1, nz
|
||||
nza = nza + 1
|
||||
a%aspk(nza) = val(i)
|
||||
end do
|
||||
else
|
||||
do i=1, nz
|
||||
ir = ia(i)
|
||||
ic = ja(i)
|
||||
if ((ir >=1).and.(ir<=ng).and.(ic>=1).and.(ic<=ng)) then
|
||||
ir = gtl(ir)
|
||||
ic = gtl(ic)
|
||||
if ((ir >=imin).and.(ir<=imax).and.(ic>=jmin).and.(ic<=jmax)) then
|
||||
nza = nza + 1
|
||||
a%aspk(nza) = val(i)
|
||||
end if
|
||||
end if
|
||||
end do
|
||||
end if
|
||||
|
||||
end subroutine psb_inner_upd
|
||||
|
||||
subroutine psb_inner_ins(nz,ia,ja,val,nza,ia1,ia2,aspk,gtl,&
|
||||
& imin,imax,jmin,jmax,info)
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: nz, imin,imax,jmin,jmax
|
||||
integer, intent(in) :: ia(*),ja(*),gtl(*)
|
||||
integer, intent(inout) :: nza,ia1(*),ia2(*)
|
||||
real(kind(1.d0)), intent(in) :: val(*)
|
||||
real(kind(1.d0)), intent(inout) :: aspk(*)
|
||||
integer, intent(out) :: info
|
||||
|
||||
integer :: i,ir,ic
|
||||
|
||||
info = 0
|
||||
do i=1, nz
|
||||
ir = ia(i)
|
||||
ic = ja(i)
|
||||
|
||||
if ((ir >=1).and.(ir<=ng).and.(ic>=1).and.(ic<=ng)) then
|
||||
ir = gtl(ir)
|
||||
ic = gtl(ic)
|
||||
if ((ir >=imin).and.(ir<=imax).and.(ic>=jmin).and.(ic<=jmax)) then
|
||||
nza = nza + 1
|
||||
a%ia1(nza) = ir
|
||||
a%ia2(nza) = ic
|
||||
a%aspk(nza) = val(i)
|
||||
end if
|
||||
end if
|
||||
end do
|
||||
|
||||
end subroutine psb_inner_ins
|
||||
end subroutine psb_dcoins
|
||||
|
Loading…
Reference in New Issue