mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-18 11:52:11 +00:00
psblas3-matasb:
base/modules/Makefile base/modules/psb_d_base_vect_mod.f90 base/modules/psb_d_mat_mod.f90 base/modules/psb_d_tools_mod.f90 base/modules/psb_d_vect_mod.F90 base/modules/psb_i_base_vect_mod.f90 base/modules/psb_i_vect_mod.F90 base/modules/psb_vect_mod.f90 base/serial/impl/psb_d_base_mat_impl.F90 base/serial/impl/psb_d_mat_impl.F90 base/tools/psb_dspins.f90 csputs with encapsulatd vectors. Defined encapsulated multivectors.
This commit is contained in:
@@ -380,6 +380,9 @@ subroutine psb_d_base_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
|
||||
info = psb_success_
|
||||
|
||||
if (allocated(val%v).and.allocated(ia%v).and.allocated(ja%v)) then
|
||||
if (val%is_dev()) call val%sync()
|
||||
if (ia%is_dev()) call ia%sync()
|
||||
if (ja%is_dev()) call ja%sync()
|
||||
call a%csput(nz,ia%v,ja%v,val%v,imin,imax,jmin,jmax,info,gtl)
|
||||
else
|
||||
info = psb_err_invalid_mat_state_
|
||||
|
||||
@@ -733,8 +733,8 @@ end subroutine psb_d_trim
|
||||
|
||||
|
||||
|
||||
subroutine psb_d_csput(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
|
||||
use psb_d_mat_mod, psb_protect_name => psb_d_csput
|
||||
subroutine psb_d_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
|
||||
use psb_d_mat_mod, psb_protect_name => psb_d_csput_a
|
||||
use psb_d_base_mat_mod
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
@@ -745,7 +745,7 @@ subroutine psb_d_csput(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
|
||||
integer(psb_ipk_), intent(in), optional :: gtl(:)
|
||||
|
||||
integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='csput'
|
||||
character(len=20) :: name='csput_a'
|
||||
logical, parameter :: debug=.false.
|
||||
|
||||
info = psb_success_
|
||||
@@ -771,7 +771,54 @@ subroutine psb_d_csput(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
|
||||
return
|
||||
end if
|
||||
|
||||
end subroutine psb_d_csput
|
||||
end subroutine psb_d_csput_a
|
||||
|
||||
subroutine psb_d_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
|
||||
use psb_d_mat_mod, psb_protect_name => psb_d_csput_v
|
||||
use psb_d_base_mat_mod
|
||||
use psb_d_vect_mod, only : psb_d_vect_type
|
||||
use psb_i_vect_mod, only : psb_i_vect_type
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
class(psb_dspmat_type), intent(inout) :: a
|
||||
type(psb_d_vect_type), intent(inout) :: val
|
||||
type(psb_i_vect_type), intent(inout) :: ia, ja
|
||||
integer(psb_ipk_), intent(in) :: nz, imin,imax,jmin,jmax
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_), intent(in), optional :: gtl(:)
|
||||
|
||||
integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='csput_a'
|
||||
logical, parameter :: debug=.false.
|
||||
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
if (.not.(a%is_bld().or.a%is_upd())) then
|
||||
info = psb_err_invalid_mat_state_
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
endif
|
||||
|
||||
if (allocated(val%v).and.allocated(ia%v).and.allocated(ja%v)) then
|
||||
call a%a%csput(nz,ia%v,ja%v,val%v,imin,imax,jmin,jmax,info,gtl)
|
||||
else
|
||||
info = psb_err_invalid_mat_state_
|
||||
endif
|
||||
|
||||
if (info /= psb_success_) goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
|
||||
end subroutine psb_d_csput_v
|
||||
|
||||
|
||||
subroutine psb_d_csgetptn(imin,imax,a,nz,ia,ja,info,&
|
||||
|
||||
Reference in New Issue
Block a user