mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-20 04:42:08 +00:00
Finish vector assembly with REMOTE_BUILD. To be tested.
This commit is contained in:
@@ -1057,8 +1057,8 @@ contains
|
||||
implicit none
|
||||
integer(psb_lpk_), intent(in) :: idx(:)
|
||||
integer(psb_ipk_), allocatable, intent(out) :: iprc(:)
|
||||
class(psb_gen_block_map), intent(inout) :: idxmap
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
class(psb_gen_block_map), intent(in) :: idxmap
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_), optional, allocatable, intent(out) :: adj(:)
|
||||
type(psb_ctxt_type) :: ctxt
|
||||
integer(psb_ipk_) :: iam, np, nv, ip, i, nadj
|
||||
|
||||
@@ -157,7 +157,7 @@ contains
|
||||
implicit none
|
||||
integer(psb_lpk_), intent(in) :: idx(:)
|
||||
integer(psb_ipk_), allocatable, intent(out) :: iprc(:)
|
||||
class(psb_glist_map), intent(inout) :: idxmap
|
||||
class(psb_glist_map), intent(in) :: idxmap
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_), optional, allocatable, intent(out) :: adj(:)
|
||||
|
||||
|
||||
@@ -273,8 +273,8 @@ module psb_indx_map_mod
|
||||
implicit none
|
||||
integer(psb_lpk_), intent(in) :: idx(:)
|
||||
integer(psb_ipk_), allocatable, intent(out) :: iprc(:)
|
||||
class(psb_indx_map), intent(inout) :: idxmap
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
class(psb_indx_map), intent(in) :: idxmap
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_), optional, allocatable, intent(out) :: adj(:)
|
||||
end subroutine psi_indx_map_fnd_owner
|
||||
end interface
|
||||
@@ -310,8 +310,8 @@ module psb_indx_map_mod
|
||||
integer(psb_lpk_), intent(in) :: idx(:)
|
||||
integer(psb_ipk_), allocatable, intent(out) :: iprc(:)
|
||||
integer(psb_ipk_), allocatable, intent(out) :: ladj(:)
|
||||
class(psb_indx_map), intent(inout) :: idxmap
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
class(psb_indx_map), intent(in) :: idxmap
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psi_graph_fnd_owner
|
||||
end interface
|
||||
|
||||
@@ -1521,7 +1521,7 @@ contains
|
||||
use psb_error_mod
|
||||
use psb_realloc_mod
|
||||
implicit none
|
||||
class(psb_indx_map), intent(inout) :: idxmap
|
||||
class(psb_indx_map), intent(in) :: idxmap
|
||||
integer(psb_ipk_), intent(in) :: xin
|
||||
integer(psb_ipk_), intent(out) :: xout
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
@@ -1550,7 +1550,7 @@ contains
|
||||
use psb_error_mod
|
||||
use psb_realloc_mod
|
||||
implicit none
|
||||
class(psb_indx_map), intent(inout) :: idxmap
|
||||
class(psb_indx_map), intent(in) :: idxmap
|
||||
integer(psb_ipk_), intent(in) :: xin(:)
|
||||
integer(psb_ipk_), intent(out) :: xout(:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
@@ -701,8 +701,8 @@ contains
|
||||
implicit none
|
||||
integer(psb_lpk_), intent(in) :: idx(:)
|
||||
integer(psb_ipk_), allocatable, intent(out) :: iprc(:)
|
||||
class(psb_repl_map), intent(inout) :: idxmap
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
class(psb_repl_map), intent(in) :: idxmap
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_), optional, allocatable, intent(out) :: adj(:)
|
||||
integer(psb_ipk_) :: nv
|
||||
type(psb_ctxt_type) :: ctxt
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
!
|
||||
module psb_c_vect_mod
|
||||
|
||||
use psb_realloc_mod
|
||||
use psb_c_base_vect_mod
|
||||
use psb_i_vect_mod
|
||||
|
||||
@@ -56,7 +57,9 @@ module psb_c_vect_mod
|
||||
procedure, pass(x) :: is_remote_build => c_vect_is_remote_build
|
||||
procedure, pass(x) :: set_remote_build => c_vect_set_remote_build
|
||||
procedure, pass(x) :: get_dupl => c_vect_get_dupl
|
||||
procedure, pass(x) :: set_dupl => c_vect_set_dupl
|
||||
procedure, pass(x) :: set_dupl => c_vect_set_dupl
|
||||
procedure, pass(x) :: get_nrmv => c_vect_get_nrmv
|
||||
procedure, pass(x) :: set_nrmv => c_vect_set_nrmv
|
||||
procedure, pass(x) :: all => c_vect_all
|
||||
procedure, pass(x) :: reall => c_vect_reall
|
||||
procedure, pass(x) :: zero => c_vect_zero
|
||||
@@ -156,7 +159,7 @@ module psb_c_vect_mod
|
||||
& c_vect_is_dev, c_vect_is_sync, c_vect_set_host, &
|
||||
& c_vect_set_dev, c_vect_set_sync, &
|
||||
& c_vect_set_remote_build, c_is_remote_build, &
|
||||
& c_vect_set_dupl, c_get_dupl
|
||||
& c_vect_set_dupl, c_get_dupl, c_vect_set_nrmv, c_get_nrmv
|
||||
|
||||
private :: c_vect_dot_v, c_vect_dot_a, c_vect_axpby_v, c_vect_axpby_a, &
|
||||
& c_vect_mlt_v, c_vect_mlt_a, c_vect_mlt_a_2, c_vect_mlt_v_2, &
|
||||
@@ -178,7 +181,6 @@ module psb_c_vect_mod
|
||||
|
||||
contains
|
||||
|
||||
|
||||
function c_vect_get_dupl(x) result(res)
|
||||
implicit none
|
||||
class(psb_c_vect_type), intent(in) :: x
|
||||
@@ -197,6 +199,21 @@ contains
|
||||
x%dupl = psb_dupl_def_
|
||||
end if
|
||||
end subroutine c_vect_set_dupl
|
||||
|
||||
function c_vect_get_nrmv(x) result(res)
|
||||
implicit none
|
||||
class(psb_c_vect_type), intent(in) :: x
|
||||
integer(psb_ipk_) :: res
|
||||
res = x%nrmv
|
||||
end function c_vect_get_nrmv
|
||||
|
||||
subroutine c_vect_set_nrmv(x,val)
|
||||
implicit none
|
||||
class(psb_c_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: val
|
||||
|
||||
x%nrmv = val
|
||||
end subroutine c_vect_set_nrmv
|
||||
|
||||
|
||||
function c_vect_is_remote_build(x) result(res)
|
||||
@@ -410,14 +427,13 @@ contains
|
||||
if (allocated(x%v)) res = x%v%get_fmt()
|
||||
end function c_vect_get_fmt
|
||||
|
||||
subroutine c_vect_all(n, x, info, mold,mode)
|
||||
subroutine c_vect_all(n, x, info, mold)
|
||||
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
class(psb_c_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
class(psb_c_base_vect_type), intent(in), optional :: mold
|
||||
integer(psb_ipk_), intent(in), optional :: mode
|
||||
|
||||
if (allocated(x%v)) &
|
||||
& call x%free(info)
|
||||
@@ -432,9 +448,6 @@ contains
|
||||
else
|
||||
info = psb_err_alloc_dealloc_
|
||||
end if
|
||||
x%nrmv = 0
|
||||
x%remote_build = psb_matbld_noremote_
|
||||
if (present(mode)) call x%set_remote_build(mode)
|
||||
end subroutine c_vect_all
|
||||
|
||||
subroutine c_vect_reall(n, x, info)
|
||||
@@ -522,44 +535,44 @@ contains
|
||||
|
||||
end subroutine c_vect_free
|
||||
|
||||
subroutine c_vect_ins_a(n,irl,val,dupl,x,info)
|
||||
subroutine c_vect_ins_a(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_c_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
integer(psb_ipk_), intent(in) :: irl(:)
|
||||
complex(psb_spk_), intent(in) :: val(:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.allocated(x%v)) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl,val,dupl,info)
|
||||
|
||||
end subroutine c_vect_ins_a
|
||||
|
||||
subroutine c_vect_ins_v(n,irl,val,dupl,x,info)
|
||||
subroutine c_vect_ins_v(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_c_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
class(psb_i_vect_type), intent(inout) :: irl
|
||||
class(psb_c_vect_type), intent(inout) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.(allocated(x%v).and.allocated(irl%v).and.allocated(val%v))) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl%v,val%v,dupl,info)
|
||||
|
||||
end subroutine c_vect_ins_v
|
||||
@@ -1670,23 +1683,23 @@ contains
|
||||
|
||||
end subroutine c_vect_free
|
||||
|
||||
subroutine c_vect_ins(n,irl,val,dupl,x,info)
|
||||
subroutine c_vect_ins(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_c_multivect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
integer(psb_ipk_), intent(in) :: irl(:)
|
||||
complex(psb_spk_), intent(in) :: val(:,:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.allocated(x%v)) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl,val,dupl,info)
|
||||
|
||||
end subroutine c_vect_ins
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
!
|
||||
module psb_d_vect_mod
|
||||
|
||||
use psb_realloc_mod
|
||||
use psb_d_base_vect_mod
|
||||
use psb_i_vect_mod
|
||||
|
||||
@@ -56,7 +57,9 @@ module psb_d_vect_mod
|
||||
procedure, pass(x) :: is_remote_build => d_vect_is_remote_build
|
||||
procedure, pass(x) :: set_remote_build => d_vect_set_remote_build
|
||||
procedure, pass(x) :: get_dupl => d_vect_get_dupl
|
||||
procedure, pass(x) :: set_dupl => d_vect_set_dupl
|
||||
procedure, pass(x) :: set_dupl => d_vect_set_dupl
|
||||
procedure, pass(x) :: get_nrmv => d_vect_get_nrmv
|
||||
procedure, pass(x) :: set_nrmv => d_vect_set_nrmv
|
||||
procedure, pass(x) :: all => d_vect_all
|
||||
procedure, pass(x) :: reall => d_vect_reall
|
||||
procedure, pass(x) :: zero => d_vect_zero
|
||||
@@ -163,7 +166,7 @@ module psb_d_vect_mod
|
||||
& d_vect_is_dev, d_vect_is_sync, d_vect_set_host, &
|
||||
& d_vect_set_dev, d_vect_set_sync, &
|
||||
& d_vect_set_remote_build, d_is_remote_build, &
|
||||
& d_vect_set_dupl, d_get_dupl
|
||||
& d_vect_set_dupl, d_get_dupl, d_vect_set_nrmv, d_get_nrmv
|
||||
|
||||
private :: d_vect_dot_v, d_vect_dot_a, d_vect_axpby_v, d_vect_axpby_a, &
|
||||
& d_vect_mlt_v, d_vect_mlt_a, d_vect_mlt_a_2, d_vect_mlt_v_2, &
|
||||
@@ -185,7 +188,6 @@ module psb_d_vect_mod
|
||||
|
||||
contains
|
||||
|
||||
|
||||
function d_vect_get_dupl(x) result(res)
|
||||
implicit none
|
||||
class(psb_d_vect_type), intent(in) :: x
|
||||
@@ -204,6 +206,21 @@ contains
|
||||
x%dupl = psb_dupl_def_
|
||||
end if
|
||||
end subroutine d_vect_set_dupl
|
||||
|
||||
function d_vect_get_nrmv(x) result(res)
|
||||
implicit none
|
||||
class(psb_d_vect_type), intent(in) :: x
|
||||
integer(psb_ipk_) :: res
|
||||
res = x%nrmv
|
||||
end function d_vect_get_nrmv
|
||||
|
||||
subroutine d_vect_set_nrmv(x,val)
|
||||
implicit none
|
||||
class(psb_d_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: val
|
||||
|
||||
x%nrmv = val
|
||||
end subroutine d_vect_set_nrmv
|
||||
|
||||
|
||||
function d_vect_is_remote_build(x) result(res)
|
||||
@@ -417,14 +434,13 @@ contains
|
||||
if (allocated(x%v)) res = x%v%get_fmt()
|
||||
end function d_vect_get_fmt
|
||||
|
||||
subroutine d_vect_all(n, x, info, mold,mode)
|
||||
subroutine d_vect_all(n, x, info, mold)
|
||||
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
class(psb_d_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
class(psb_d_base_vect_type), intent(in), optional :: mold
|
||||
integer(psb_ipk_), intent(in), optional :: mode
|
||||
|
||||
if (allocated(x%v)) &
|
||||
& call x%free(info)
|
||||
@@ -439,9 +455,6 @@ contains
|
||||
else
|
||||
info = psb_err_alloc_dealloc_
|
||||
end if
|
||||
x%nrmv = 0
|
||||
x%remote_build = psb_matbld_noremote_
|
||||
if (present(mode)) call x%set_remote_build(mode)
|
||||
end subroutine d_vect_all
|
||||
|
||||
subroutine d_vect_reall(n, x, info)
|
||||
@@ -529,44 +542,44 @@ contains
|
||||
|
||||
end subroutine d_vect_free
|
||||
|
||||
subroutine d_vect_ins_a(n,irl,val,dupl,x,info)
|
||||
subroutine d_vect_ins_a(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_d_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
integer(psb_ipk_), intent(in) :: irl(:)
|
||||
real(psb_dpk_), intent(in) :: val(:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.allocated(x%v)) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl,val,dupl,info)
|
||||
|
||||
end subroutine d_vect_ins_a
|
||||
|
||||
subroutine d_vect_ins_v(n,irl,val,dupl,x,info)
|
||||
subroutine d_vect_ins_v(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_d_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
class(psb_i_vect_type), intent(inout) :: irl
|
||||
class(psb_d_vect_type), intent(inout) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.(allocated(x%v).and.allocated(irl%v).and.allocated(val%v))) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl%v,val%v,dupl,info)
|
||||
|
||||
end subroutine d_vect_ins_v
|
||||
@@ -1749,23 +1762,23 @@ contains
|
||||
|
||||
end subroutine d_vect_free
|
||||
|
||||
subroutine d_vect_ins(n,irl,val,dupl,x,info)
|
||||
subroutine d_vect_ins(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_d_multivect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
integer(psb_ipk_), intent(in) :: irl(:)
|
||||
real(psb_dpk_), intent(in) :: val(:,:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.allocated(x%v)) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl,val,dupl,info)
|
||||
|
||||
end subroutine d_vect_ins
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
!
|
||||
module psb_i_vect_mod
|
||||
|
||||
use psb_realloc_mod
|
||||
use psb_i_base_vect_mod
|
||||
|
||||
type psb_i_vect_type
|
||||
@@ -55,7 +56,9 @@ module psb_i_vect_mod
|
||||
procedure, pass(x) :: is_remote_build => i_vect_is_remote_build
|
||||
procedure, pass(x) :: set_remote_build => i_vect_set_remote_build
|
||||
procedure, pass(x) :: get_dupl => i_vect_get_dupl
|
||||
procedure, pass(x) :: set_dupl => i_vect_set_dupl
|
||||
procedure, pass(x) :: set_dupl => i_vect_set_dupl
|
||||
procedure, pass(x) :: get_nrmv => i_vect_get_nrmv
|
||||
procedure, pass(x) :: set_nrmv => i_vect_set_nrmv
|
||||
procedure, pass(x) :: all => i_vect_all
|
||||
procedure, pass(x) :: reall => i_vect_reall
|
||||
procedure, pass(x) :: zero => i_vect_zero
|
||||
@@ -108,7 +111,7 @@ module psb_i_vect_mod
|
||||
& i_vect_is_dev, i_vect_is_sync, i_vect_set_host, &
|
||||
& i_vect_set_dev, i_vect_set_sync, &
|
||||
& i_vect_set_remote_build, i_is_remote_build, &
|
||||
& i_vect_set_dupl, i_get_dupl
|
||||
& i_vect_set_dupl, i_get_dupl, i_vect_set_nrmv, i_get_nrmv
|
||||
|
||||
|
||||
class(psb_i_base_vect_type), allocatable, target,&
|
||||
@@ -125,7 +128,6 @@ module psb_i_vect_mod
|
||||
|
||||
contains
|
||||
|
||||
|
||||
function i_vect_get_dupl(x) result(res)
|
||||
implicit none
|
||||
class(psb_i_vect_type), intent(in) :: x
|
||||
@@ -144,6 +146,21 @@ contains
|
||||
x%dupl = psb_dupl_def_
|
||||
end if
|
||||
end subroutine i_vect_set_dupl
|
||||
|
||||
function i_vect_get_nrmv(x) result(res)
|
||||
implicit none
|
||||
class(psb_i_vect_type), intent(in) :: x
|
||||
integer(psb_ipk_) :: res
|
||||
res = x%nrmv
|
||||
end function i_vect_get_nrmv
|
||||
|
||||
subroutine i_vect_set_nrmv(x,val)
|
||||
implicit none
|
||||
class(psb_i_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: val
|
||||
|
||||
x%nrmv = val
|
||||
end subroutine i_vect_set_nrmv
|
||||
|
||||
|
||||
function i_vect_is_remote_build(x) result(res)
|
||||
@@ -357,14 +374,13 @@ contains
|
||||
if (allocated(x%v)) res = x%v%get_fmt()
|
||||
end function i_vect_get_fmt
|
||||
|
||||
subroutine i_vect_all(n, x, info, mold,mode)
|
||||
subroutine i_vect_all(n, x, info, mold)
|
||||
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
class(psb_i_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
class(psb_i_base_vect_type), intent(in), optional :: mold
|
||||
integer(psb_ipk_), intent(in), optional :: mode
|
||||
|
||||
if (allocated(x%v)) &
|
||||
& call x%free(info)
|
||||
@@ -379,9 +395,6 @@ contains
|
||||
else
|
||||
info = psb_err_alloc_dealloc_
|
||||
end if
|
||||
x%nrmv = 0
|
||||
x%remote_build = psb_matbld_noremote_
|
||||
if (present(mode)) call x%set_remote_build(mode)
|
||||
end subroutine i_vect_all
|
||||
|
||||
subroutine i_vect_reall(n, x, info)
|
||||
@@ -469,44 +482,44 @@ contains
|
||||
|
||||
end subroutine i_vect_free
|
||||
|
||||
subroutine i_vect_ins_a(n,irl,val,dupl,x,info)
|
||||
subroutine i_vect_ins_a(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_i_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
integer(psb_ipk_), intent(in) :: irl(:)
|
||||
integer(psb_ipk_), intent(in) :: val(:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.allocated(x%v)) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl,val,dupl,info)
|
||||
|
||||
end subroutine i_vect_ins_a
|
||||
|
||||
subroutine i_vect_ins_v(n,irl,val,dupl,x,info)
|
||||
subroutine i_vect_ins_v(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_i_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
class(psb_i_vect_type), intent(inout) :: irl
|
||||
class(psb_i_vect_type), intent(inout) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.(allocated(x%v).and.allocated(irl%v).and.allocated(val%v))) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl%v,val%v,dupl,info)
|
||||
|
||||
end subroutine i_vect_ins_v
|
||||
@@ -1027,23 +1040,23 @@ contains
|
||||
|
||||
end subroutine i_vect_free
|
||||
|
||||
subroutine i_vect_ins(n,irl,val,dupl,x,info)
|
||||
subroutine i_vect_ins(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_i_multivect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
integer(psb_ipk_), intent(in) :: irl(:)
|
||||
integer(psb_ipk_), intent(in) :: val(:,:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.allocated(x%v)) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl,val,dupl,info)
|
||||
|
||||
end subroutine i_vect_ins
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
!
|
||||
module psb_l_vect_mod
|
||||
|
||||
use psb_realloc_mod
|
||||
use psb_l_base_vect_mod
|
||||
use psb_i_vect_mod
|
||||
|
||||
@@ -56,7 +57,9 @@ module psb_l_vect_mod
|
||||
procedure, pass(x) :: is_remote_build => l_vect_is_remote_build
|
||||
procedure, pass(x) :: set_remote_build => l_vect_set_remote_build
|
||||
procedure, pass(x) :: get_dupl => l_vect_get_dupl
|
||||
procedure, pass(x) :: set_dupl => l_vect_set_dupl
|
||||
procedure, pass(x) :: set_dupl => l_vect_set_dupl
|
||||
procedure, pass(x) :: get_nrmv => l_vect_get_nrmv
|
||||
procedure, pass(x) :: set_nrmv => l_vect_set_nrmv
|
||||
procedure, pass(x) :: all => l_vect_all
|
||||
procedure, pass(x) :: reall => l_vect_reall
|
||||
procedure, pass(x) :: zero => l_vect_zero
|
||||
@@ -109,7 +112,7 @@ module psb_l_vect_mod
|
||||
& l_vect_is_dev, l_vect_is_sync, l_vect_set_host, &
|
||||
& l_vect_set_dev, l_vect_set_sync, &
|
||||
& l_vect_set_remote_build, l_is_remote_build, &
|
||||
& l_vect_set_dupl, l_get_dupl
|
||||
& l_vect_set_dupl, l_get_dupl, l_vect_set_nrmv, l_get_nrmv
|
||||
|
||||
|
||||
class(psb_l_base_vect_type), allocatable, target,&
|
||||
@@ -126,7 +129,6 @@ module psb_l_vect_mod
|
||||
|
||||
contains
|
||||
|
||||
|
||||
function l_vect_get_dupl(x) result(res)
|
||||
implicit none
|
||||
class(psb_l_vect_type), intent(in) :: x
|
||||
@@ -145,6 +147,21 @@ contains
|
||||
x%dupl = psb_dupl_def_
|
||||
end if
|
||||
end subroutine l_vect_set_dupl
|
||||
|
||||
function l_vect_get_nrmv(x) result(res)
|
||||
implicit none
|
||||
class(psb_l_vect_type), intent(in) :: x
|
||||
integer(psb_ipk_) :: res
|
||||
res = x%nrmv
|
||||
end function l_vect_get_nrmv
|
||||
|
||||
subroutine l_vect_set_nrmv(x,val)
|
||||
implicit none
|
||||
class(psb_l_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: val
|
||||
|
||||
x%nrmv = val
|
||||
end subroutine l_vect_set_nrmv
|
||||
|
||||
|
||||
function l_vect_is_remote_build(x) result(res)
|
||||
@@ -358,14 +375,13 @@ contains
|
||||
if (allocated(x%v)) res = x%v%get_fmt()
|
||||
end function l_vect_get_fmt
|
||||
|
||||
subroutine l_vect_all(n, x, info, mold,mode)
|
||||
subroutine l_vect_all(n, x, info, mold)
|
||||
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
class(psb_l_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
class(psb_l_base_vect_type), intent(in), optional :: mold
|
||||
integer(psb_ipk_), intent(in), optional :: mode
|
||||
|
||||
if (allocated(x%v)) &
|
||||
& call x%free(info)
|
||||
@@ -380,9 +396,6 @@ contains
|
||||
else
|
||||
info = psb_err_alloc_dealloc_
|
||||
end if
|
||||
x%nrmv = 0
|
||||
x%remote_build = psb_matbld_noremote_
|
||||
if (present(mode)) call x%set_remote_build(mode)
|
||||
end subroutine l_vect_all
|
||||
|
||||
subroutine l_vect_reall(n, x, info)
|
||||
@@ -470,44 +483,44 @@ contains
|
||||
|
||||
end subroutine l_vect_free
|
||||
|
||||
subroutine l_vect_ins_a(n,irl,val,dupl,x,info)
|
||||
subroutine l_vect_ins_a(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_l_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
integer(psb_ipk_), intent(in) :: irl(:)
|
||||
integer(psb_lpk_), intent(in) :: val(:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.allocated(x%v)) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl,val,dupl,info)
|
||||
|
||||
end subroutine l_vect_ins_a
|
||||
|
||||
subroutine l_vect_ins_v(n,irl,val,dupl,x,info)
|
||||
subroutine l_vect_ins_v(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_l_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
class(psb_i_vect_type), intent(inout) :: irl
|
||||
class(psb_l_vect_type), intent(inout) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.(allocated(x%v).and.allocated(irl%v).and.allocated(val%v))) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl%v,val%v,dupl,info)
|
||||
|
||||
end subroutine l_vect_ins_v
|
||||
@@ -1028,23 +1041,23 @@ contains
|
||||
|
||||
end subroutine l_vect_free
|
||||
|
||||
subroutine l_vect_ins(n,irl,val,dupl,x,info)
|
||||
subroutine l_vect_ins(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_l_multivect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
integer(psb_ipk_), intent(in) :: irl(:)
|
||||
integer(psb_lpk_), intent(in) :: val(:,:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.allocated(x%v)) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl,val,dupl,info)
|
||||
|
||||
end subroutine l_vect_ins
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
!
|
||||
module psb_s_vect_mod
|
||||
|
||||
use psb_realloc_mod
|
||||
use psb_s_base_vect_mod
|
||||
use psb_i_vect_mod
|
||||
|
||||
@@ -56,7 +57,9 @@ module psb_s_vect_mod
|
||||
procedure, pass(x) :: is_remote_build => s_vect_is_remote_build
|
||||
procedure, pass(x) :: set_remote_build => s_vect_set_remote_build
|
||||
procedure, pass(x) :: get_dupl => s_vect_get_dupl
|
||||
procedure, pass(x) :: set_dupl => s_vect_set_dupl
|
||||
procedure, pass(x) :: set_dupl => s_vect_set_dupl
|
||||
procedure, pass(x) :: get_nrmv => s_vect_get_nrmv
|
||||
procedure, pass(x) :: set_nrmv => s_vect_set_nrmv
|
||||
procedure, pass(x) :: all => s_vect_all
|
||||
procedure, pass(x) :: reall => s_vect_reall
|
||||
procedure, pass(x) :: zero => s_vect_zero
|
||||
@@ -163,7 +166,7 @@ module psb_s_vect_mod
|
||||
& s_vect_is_dev, s_vect_is_sync, s_vect_set_host, &
|
||||
& s_vect_set_dev, s_vect_set_sync, &
|
||||
& s_vect_set_remote_build, s_is_remote_build, &
|
||||
& s_vect_set_dupl, s_get_dupl
|
||||
& s_vect_set_dupl, s_get_dupl, s_vect_set_nrmv, s_get_nrmv
|
||||
|
||||
private :: s_vect_dot_v, s_vect_dot_a, s_vect_axpby_v, s_vect_axpby_a, &
|
||||
& s_vect_mlt_v, s_vect_mlt_a, s_vect_mlt_a_2, s_vect_mlt_v_2, &
|
||||
@@ -185,7 +188,6 @@ module psb_s_vect_mod
|
||||
|
||||
contains
|
||||
|
||||
|
||||
function s_vect_get_dupl(x) result(res)
|
||||
implicit none
|
||||
class(psb_s_vect_type), intent(in) :: x
|
||||
@@ -204,6 +206,21 @@ contains
|
||||
x%dupl = psb_dupl_def_
|
||||
end if
|
||||
end subroutine s_vect_set_dupl
|
||||
|
||||
function s_vect_get_nrmv(x) result(res)
|
||||
implicit none
|
||||
class(psb_s_vect_type), intent(in) :: x
|
||||
integer(psb_ipk_) :: res
|
||||
res = x%nrmv
|
||||
end function s_vect_get_nrmv
|
||||
|
||||
subroutine s_vect_set_nrmv(x,val)
|
||||
implicit none
|
||||
class(psb_s_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: val
|
||||
|
||||
x%nrmv = val
|
||||
end subroutine s_vect_set_nrmv
|
||||
|
||||
|
||||
function s_vect_is_remote_build(x) result(res)
|
||||
@@ -417,14 +434,13 @@ contains
|
||||
if (allocated(x%v)) res = x%v%get_fmt()
|
||||
end function s_vect_get_fmt
|
||||
|
||||
subroutine s_vect_all(n, x, info, mold,mode)
|
||||
subroutine s_vect_all(n, x, info, mold)
|
||||
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
class(psb_s_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
class(psb_s_base_vect_type), intent(in), optional :: mold
|
||||
integer(psb_ipk_), intent(in), optional :: mode
|
||||
|
||||
if (allocated(x%v)) &
|
||||
& call x%free(info)
|
||||
@@ -439,9 +455,6 @@ contains
|
||||
else
|
||||
info = psb_err_alloc_dealloc_
|
||||
end if
|
||||
x%nrmv = 0
|
||||
x%remote_build = psb_matbld_noremote_
|
||||
if (present(mode)) call x%set_remote_build(mode)
|
||||
end subroutine s_vect_all
|
||||
|
||||
subroutine s_vect_reall(n, x, info)
|
||||
@@ -529,44 +542,44 @@ contains
|
||||
|
||||
end subroutine s_vect_free
|
||||
|
||||
subroutine s_vect_ins_a(n,irl,val,dupl,x,info)
|
||||
subroutine s_vect_ins_a(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_s_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
integer(psb_ipk_), intent(in) :: irl(:)
|
||||
real(psb_spk_), intent(in) :: val(:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.allocated(x%v)) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl,val,dupl,info)
|
||||
|
||||
end subroutine s_vect_ins_a
|
||||
|
||||
subroutine s_vect_ins_v(n,irl,val,dupl,x,info)
|
||||
subroutine s_vect_ins_v(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_s_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
class(psb_i_vect_type), intent(inout) :: irl
|
||||
class(psb_s_vect_type), intent(inout) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.(allocated(x%v).and.allocated(irl%v).and.allocated(val%v))) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl%v,val%v,dupl,info)
|
||||
|
||||
end subroutine s_vect_ins_v
|
||||
@@ -1749,23 +1762,23 @@ contains
|
||||
|
||||
end subroutine s_vect_free
|
||||
|
||||
subroutine s_vect_ins(n,irl,val,dupl,x,info)
|
||||
subroutine s_vect_ins(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_s_multivect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
integer(psb_ipk_), intent(in) :: irl(:)
|
||||
real(psb_spk_), intent(in) :: val(:,:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.allocated(x%v)) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl,val,dupl,info)
|
||||
|
||||
end subroutine s_vect_ins
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
!
|
||||
module psb_z_vect_mod
|
||||
|
||||
use psb_realloc_mod
|
||||
use psb_z_base_vect_mod
|
||||
use psb_i_vect_mod
|
||||
|
||||
@@ -56,7 +57,9 @@ module psb_z_vect_mod
|
||||
procedure, pass(x) :: is_remote_build => z_vect_is_remote_build
|
||||
procedure, pass(x) :: set_remote_build => z_vect_set_remote_build
|
||||
procedure, pass(x) :: get_dupl => z_vect_get_dupl
|
||||
procedure, pass(x) :: set_dupl => z_vect_set_dupl
|
||||
procedure, pass(x) :: set_dupl => z_vect_set_dupl
|
||||
procedure, pass(x) :: get_nrmv => z_vect_get_nrmv
|
||||
procedure, pass(x) :: set_nrmv => z_vect_set_nrmv
|
||||
procedure, pass(x) :: all => z_vect_all
|
||||
procedure, pass(x) :: reall => z_vect_reall
|
||||
procedure, pass(x) :: zero => z_vect_zero
|
||||
@@ -156,7 +159,7 @@ module psb_z_vect_mod
|
||||
& z_vect_is_dev, z_vect_is_sync, z_vect_set_host, &
|
||||
& z_vect_set_dev, z_vect_set_sync, &
|
||||
& z_vect_set_remote_build, z_is_remote_build, &
|
||||
& z_vect_set_dupl, z_get_dupl
|
||||
& z_vect_set_dupl, z_get_dupl, z_vect_set_nrmv, z_get_nrmv
|
||||
|
||||
private :: z_vect_dot_v, z_vect_dot_a, z_vect_axpby_v, z_vect_axpby_a, &
|
||||
& z_vect_mlt_v, z_vect_mlt_a, z_vect_mlt_a_2, z_vect_mlt_v_2, &
|
||||
@@ -178,7 +181,6 @@ module psb_z_vect_mod
|
||||
|
||||
contains
|
||||
|
||||
|
||||
function z_vect_get_dupl(x) result(res)
|
||||
implicit none
|
||||
class(psb_z_vect_type), intent(in) :: x
|
||||
@@ -197,6 +199,21 @@ contains
|
||||
x%dupl = psb_dupl_def_
|
||||
end if
|
||||
end subroutine z_vect_set_dupl
|
||||
|
||||
function z_vect_get_nrmv(x) result(res)
|
||||
implicit none
|
||||
class(psb_z_vect_type), intent(in) :: x
|
||||
integer(psb_ipk_) :: res
|
||||
res = x%nrmv
|
||||
end function z_vect_get_nrmv
|
||||
|
||||
subroutine z_vect_set_nrmv(x,val)
|
||||
implicit none
|
||||
class(psb_z_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: val
|
||||
|
||||
x%nrmv = val
|
||||
end subroutine z_vect_set_nrmv
|
||||
|
||||
|
||||
function z_vect_is_remote_build(x) result(res)
|
||||
@@ -410,14 +427,13 @@ contains
|
||||
if (allocated(x%v)) res = x%v%get_fmt()
|
||||
end function z_vect_get_fmt
|
||||
|
||||
subroutine z_vect_all(n, x, info, mold,mode)
|
||||
subroutine z_vect_all(n, x, info, mold)
|
||||
|
||||
implicit none
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
class(psb_z_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
class(psb_z_base_vect_type), intent(in), optional :: mold
|
||||
integer(psb_ipk_), intent(in), optional :: mode
|
||||
|
||||
if (allocated(x%v)) &
|
||||
& call x%free(info)
|
||||
@@ -432,9 +448,6 @@ contains
|
||||
else
|
||||
info = psb_err_alloc_dealloc_
|
||||
end if
|
||||
x%nrmv = 0
|
||||
x%remote_build = psb_matbld_noremote_
|
||||
if (present(mode)) call x%set_remote_build(mode)
|
||||
end subroutine z_vect_all
|
||||
|
||||
subroutine z_vect_reall(n, x, info)
|
||||
@@ -522,44 +535,44 @@ contains
|
||||
|
||||
end subroutine z_vect_free
|
||||
|
||||
subroutine z_vect_ins_a(n,irl,val,dupl,x,info)
|
||||
subroutine z_vect_ins_a(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_z_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
integer(psb_ipk_), intent(in) :: irl(:)
|
||||
complex(psb_dpk_), intent(in) :: val(:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.allocated(x%v)) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl,val,dupl,info)
|
||||
|
||||
end subroutine z_vect_ins_a
|
||||
|
||||
subroutine z_vect_ins_v(n,irl,val,dupl,x,info)
|
||||
subroutine z_vect_ins_v(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_z_vect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
class(psb_i_vect_type), intent(inout) :: irl
|
||||
class(psb_z_vect_type), intent(inout) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.(allocated(x%v).and.allocated(irl%v).and.allocated(val%v))) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl%v,val%v,dupl,info)
|
||||
|
||||
end subroutine z_vect_ins_v
|
||||
@@ -1670,23 +1683,23 @@ contains
|
||||
|
||||
end subroutine z_vect_free
|
||||
|
||||
subroutine z_vect_ins(n,irl,val,dupl,x,info)
|
||||
subroutine z_vect_ins(n,irl,val,x,info)
|
||||
use psi_serial_mod
|
||||
implicit none
|
||||
class(psb_z_multivect_type), intent(inout) :: x
|
||||
integer(psb_ipk_), intent(in) :: n, dupl
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
integer(psb_ipk_), intent(in) :: irl(:)
|
||||
complex(psb_dpk_), intent(in) :: val(:,:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: i
|
||||
integer(psb_ipk_) :: i, dupl
|
||||
|
||||
info = 0
|
||||
if (.not.allocated(x%v)) then
|
||||
info = psb_err_invalid_vect_state_
|
||||
return
|
||||
end if
|
||||
|
||||
dupl = x%get_dupl()
|
||||
call x%v%ins(n,irl,val,dupl,info)
|
||||
|
||||
end subroutine z_vect_ins
|
||||
|
||||
@@ -263,11 +263,15 @@ Module psb_c_tools_mod
|
||||
end interface
|
||||
|
||||
interface psb_remote_vect
|
||||
subroutine psb_c_remote_vect(v,desc_a, info)
|
||||
subroutine psb_c_remote_vect(n,v,iv,desc_a,x,ix, info)
|
||||
import
|
||||
implicit none
|
||||
type(psb_c_vect_type),Intent(inout) :: v
|
||||
type(psb_desc_type),intent(in) :: desc_a
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
complex(psb_spk_), intent(in) :: v(:)
|
||||
integer(psb_lpk_), intent(in) :: iv(:)
|
||||
type(psb_desc_type),intent(in) :: desc_a
|
||||
complex(psb_spk_), allocatable, intent(out) :: x(:)
|
||||
integer(psb_lpk_), allocatable, intent(out) :: ix(:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_c_remote_vect
|
||||
end interface psb_remote_vect
|
||||
|
||||
@@ -263,11 +263,15 @@ Module psb_d_tools_mod
|
||||
end interface
|
||||
|
||||
interface psb_remote_vect
|
||||
subroutine psb_d_remote_vect(v,desc_a, info)
|
||||
subroutine psb_d_remote_vect(n,v,iv,desc_a,x,ix, info)
|
||||
import
|
||||
implicit none
|
||||
type(psb_d_vect_type),Intent(inout) :: v
|
||||
type(psb_desc_type),intent(in) :: desc_a
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
real(psb_dpk_), intent(in) :: v(:)
|
||||
integer(psb_lpk_), intent(in) :: iv(:)
|
||||
type(psb_desc_type),intent(in) :: desc_a
|
||||
real(psb_dpk_), allocatable, intent(out) :: x(:)
|
||||
integer(psb_lpk_), allocatable, intent(out) :: ix(:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_d_remote_vect
|
||||
end interface psb_remote_vect
|
||||
|
||||
@@ -263,11 +263,15 @@ Module psb_s_tools_mod
|
||||
end interface
|
||||
|
||||
interface psb_remote_vect
|
||||
subroutine psb_s_remote_vect(v,desc_a, info)
|
||||
subroutine psb_s_remote_vect(n,v,iv,desc_a,x,ix, info)
|
||||
import
|
||||
implicit none
|
||||
type(psb_s_vect_type),Intent(inout) :: v
|
||||
type(psb_desc_type),intent(in) :: desc_a
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
real(psb_spk_), intent(in) :: v(:)
|
||||
integer(psb_lpk_), intent(in) :: iv(:)
|
||||
type(psb_desc_type),intent(in) :: desc_a
|
||||
real(psb_spk_), allocatable, intent(out) :: x(:)
|
||||
integer(psb_lpk_), allocatable, intent(out) :: ix(:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_s_remote_vect
|
||||
end interface psb_remote_vect
|
||||
|
||||
@@ -263,11 +263,15 @@ Module psb_z_tools_mod
|
||||
end interface
|
||||
|
||||
interface psb_remote_vect
|
||||
subroutine psb_z_remote_vect(v,desc_a, info)
|
||||
subroutine psb_z_remote_vect(n,v,iv,desc_a,x,ix, info)
|
||||
import
|
||||
implicit none
|
||||
type(psb_z_vect_type),Intent(inout) :: v
|
||||
type(psb_desc_type),intent(in) :: desc_a
|
||||
integer(psb_ipk_), intent(in) :: n
|
||||
complex(psb_dpk_), intent(in) :: v(:)
|
||||
integer(psb_lpk_), intent(in) :: iv(:)
|
||||
type(psb_desc_type),intent(in) :: desc_a
|
||||
complex(psb_dpk_), allocatable, intent(out) :: x(:)
|
||||
integer(psb_lpk_), allocatable, intent(out) :: ix(:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_z_remote_vect
|
||||
end interface psb_remote_vect
|
||||
|
||||
Reference in New Issue
Block a user