psblas3-submodules:

base/internals/psi_dswapdata.F90
 base/internals/psi_dswaptran.F90
 base/internals/psi_ovrl_restr.f90
 base/internals/psi_ovrl_save.f90
 base/internals/psi_ovrl_upd.f90
 base/modules/psb_base_mat_mod.f90
 base/modules/psb_d_base_mat_mod.f90
 base/modules/psb_d_csc_mat_mod.f90
 base/modules/psb_d_csr_mat_mod.f90
 base/modules/psb_d_mat_mod.f90
 base/modules/psb_d_sort_mod.f90
 base/modules/psb_error_impl.F90
 base/modules/psb_error_mod.F90
 base/modules/psi_d_mod.f90
 base/modules/psi_serial_mod.f90
 base/serial/impl/psb_base_mat_impl.f90
 base/serial/impl/psb_d_base_mat_impl.F90
 base/serial/impl/psb_d_coo_impl.f90
 base/serial/impl/psb_d_csc_impl.f90
 base/serial/impl/psb_d_csr_impl.f90
 base/serial/impl/psb_d_mat_impl.F90
 base/serial/psi_serial_impl.f90
 base/serial/sort/psb_d_hsort_impl.f90
 base/serial/sort/psb_d_isort_impl.f90
 base/serial/sort/psb_d_msort_impl.f90
 base/serial/sort/psb_d_qsort_impl.f90
 prec/impl/psb_dilu_fct.f90
 test/pargen/runs/ppde.inp
 util/psb_d_renum_impl.F90
 util/psb_metispart_mod.F90

Encapsulated in submodules many of the D impl files.
Made CSR data components PRIVATE and adjusted prec/util accordingly
(defined special accessor functions).
psblas3-submodules
Salvatore Filippone 11 years ago
parent 8b994d012f
commit f63f52e21b

@ -83,9 +83,11 @@
! psb_comm_mov_ use ovr_mst_idx ! psb_comm_mov_ use ovr_mst_idx
! !
! !
submodule (psi_d_mod) psi_dswapdata_mod
contains
subroutine psi_dswapdatam(flag,n,beta,y,desc_a,work,info,data) subroutine psi_dswapdatam(flag,n,beta,y,desc_a,work,info,data)
use psi_mod, psb_protect_name => psi_dswapdatam
use psb_error_mod use psb_error_mod
use psb_desc_mod use psb_desc_mod
use psb_penv_mod use psb_penv_mod
@ -154,8 +156,7 @@ end subroutine psi_dswapdatam
subroutine psi_dswapidxm(iictxt,iicomm,flag,n,beta,y,idx, & subroutine psi_dswapidxm(iictxt,iicomm,flag,n,beta,y,idx, &
& totxch,totsnd,totrcv,work,info) & totxch,totsnd,totrcv,work,info)
use psi_serial_mod
use psi_mod, psb_protect_name => psi_dswapidxm
use psb_error_mod use psb_error_mod
use psb_desc_mod use psb_desc_mod
use psb_penv_mod use psb_penv_mod
@ -576,7 +577,6 @@ end subroutine psi_dswapidxm
! !
subroutine psi_dswapdatav(flag,beta,y,desc_a,work,info,data) subroutine psi_dswapdatav(flag,beta,y,desc_a,work,info,data)
use psi_mod, psb_protect_name => psi_dswapdatav
use psb_error_mod use psb_error_mod
use psb_desc_mod use psb_desc_mod
use psb_penv_mod use psb_penv_mod
@ -657,8 +657,7 @@ end subroutine psi_dswapdatav
! !
subroutine psi_dswapidxv(iictxt,iicomm,flag,beta,y,idx, & subroutine psi_dswapidxv(iictxt,iicomm,flag,beta,y,idx, &
& totxch,totsnd,totrcv,work,info) & totxch,totsnd,totrcv,work,info)
use psi_serial_mod
use psi_mod, psb_protect_name => psi_dswapidxv
use psb_error_mod use psb_error_mod
use psb_desc_mod use psb_desc_mod
use psb_penv_mod use psb_penv_mod
@ -1022,7 +1021,6 @@ end subroutine psi_dswapidxv
! !
subroutine psi_dswapdata_vect(flag,beta,y,desc_a,work,info,data) subroutine psi_dswapdata_vect(flag,beta,y,desc_a,work,info,data)
use psi_mod, psb_protect_name => psi_dswapdata_vect
use psb_d_base_vect_mod use psb_d_base_vect_mod
use psb_error_mod use psb_error_mod
use psb_desc_mod use psb_desc_mod
@ -1108,12 +1106,12 @@ end subroutine psi_dswapdata_vect
subroutine psi_dswap_vidx_vect(iictxt,iicomm,flag,beta,y,idx, & subroutine psi_dswap_vidx_vect(iictxt,iicomm,flag,beta,y,idx, &
& totxch,totsnd,totrcv,work,info) & totxch,totsnd,totrcv,work,info)
use psi_mod, psb_protect_name => psi_dswap_vidx_vect
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
use psb_desc_mod use psb_desc_mod
use psb_penv_mod use psb_penv_mod
use psb_d_base_vect_mod use psb_d_base_vect_mod
use psi_serial_mod
#ifdef MPI_MOD #ifdef MPI_MOD
use mpi use mpi
#endif #endif
@ -1351,3 +1349,4 @@ subroutine psi_dswap_vidx_vect(iictxt,iicomm,flag,beta,y,idx, &
return return
end subroutine psi_dswap_vidx_vect end subroutine psi_dswap_vidx_vect
end submodule psi_dswapdata_mod

@ -87,9 +87,11 @@
! psb_comm_mov_ use ovr_mst_idx ! psb_comm_mov_ use ovr_mst_idx
! !
! !
submodule (psi_d_mod) psi_dswaptran_mod
contains
subroutine psi_dswaptranm(flag,n,beta,y,desc_a,work,info,data) subroutine psi_dswaptranm(flag,n,beta,y,desc_a,work,info,data)
use psi_mod, psb_protect_name => psi_dswaptranm
use psb_error_mod use psb_error_mod
use psb_desc_mod use psb_desc_mod
use psb_penv_mod use psb_penv_mod
@ -158,8 +160,7 @@ subroutine psi_dswaptranm(flag,n,beta,y,desc_a,work,info,data)
end subroutine psi_dswaptranm end subroutine psi_dswaptranm
subroutine psi_dtranidxm(iictxt,iicomm,flag,n,beta,y,idx,totxch,totsnd,totrcv,work,info) subroutine psi_dtranidxm(iictxt,iicomm,flag,n,beta,y,idx,totxch,totsnd,totrcv,work,info)
use psi_serial_mod
use psi_mod, psb_protect_name => psi_dtranidxm
use psb_error_mod use psb_error_mod
use psb_desc_mod use psb_desc_mod
use psb_penv_mod use psb_penv_mod
@ -579,7 +580,6 @@ end subroutine psi_dtranidxm
! !
subroutine psi_dswaptranv(flag,beta,y,desc_a,work,info,data) subroutine psi_dswaptranv(flag,beta,y,desc_a,work,info,data)
use psi_mod, psb_protect_name => psi_dswaptranv
use psb_error_mod use psb_error_mod
use psb_desc_mod use psb_desc_mod
use psb_penv_mod use psb_penv_mod
@ -661,7 +661,7 @@ end subroutine psi_dswaptranv
subroutine psi_dtranidxv(iictxt,iicomm,flag,beta,y,idx,totxch,totsnd,totrcv,work,info) subroutine psi_dtranidxv(iictxt,iicomm,flag,beta,y,idx,totxch,totsnd,totrcv,work,info)
use psi_mod, psb_protect_name => psi_dtranidxv use psi_serial_mod
use psb_error_mod use psb_error_mod
use psb_desc_mod use psb_desc_mod
use psb_penv_mod use psb_penv_mod
@ -1042,7 +1042,6 @@ end subroutine psi_dtranidxv
! !
subroutine psi_dswaptran_vect(flag,beta,y,desc_a,work,info,data) subroutine psi_dswaptran_vect(flag,beta,y,desc_a,work,info,data)
use psi_mod, psb_protect_name => psi_dswaptran_vect
use psb_d_base_vect_mod use psb_d_base_vect_mod
use psb_error_mod use psb_error_mod
use psb_desc_mod use psb_desc_mod
@ -1128,8 +1127,7 @@ end subroutine psi_dswaptran_vect
! !
subroutine psi_dtran_vidx_vect(iictxt,iicomm,flag,beta,y,idx,& subroutine psi_dtran_vidx_vect(iictxt,iicomm,flag,beta,y,idx,&
& totxch,totsnd,totrcv,work,info) & totxch,totsnd,totrcv,work,info)
use psi_serial_mod
use psi_mod, psb_protect_name => psi_dtran_vidx_vect
use psb_error_mod use psb_error_mod
use psb_desc_mod use psb_desc_mod
use psb_penv_mod use psb_penv_mod
@ -1378,5 +1376,4 @@ subroutine psi_dtran_vidx_vect(iictxt,iicomm,flag,beta,y,idx,&
end subroutine psi_dtran_vidx_vect end subroutine psi_dtran_vidx_vect
end submodule psi_dswaptran_mod

@ -118,10 +118,14 @@ subroutine psi_sovrl_restrr2(x,xs,desc_a,info)
return return
end subroutine psi_sovrl_restrr2 end subroutine psi_sovrl_restrr2
submodule (psi_d_mod) psi_dovrl_restore_mod
subroutine psi_dovrl_restrr1(x,xs,desc_a,info) contains
use psi_mod, psi_protect_name => psi_dovrl_restrr1
subroutine psi_dovrl_restrr1(x,xs,desc_a,info)
use psb_const_mod
use psb_error_mod
use psb_penv_mod
implicit none implicit none
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -162,8 +166,9 @@ end subroutine psi_dovrl_restrr1
subroutine psi_dovrl_restrr2(x,xs,desc_a,info) subroutine psi_dovrl_restrr2(x,xs,desc_a,info)
use psi_mod, psi_protect_name => psi_dovrl_restrr2 use psb_const_mod
use psb_error_mod
use psb_penv_mod
implicit none implicit none
real(psb_dpk_), intent(inout) :: x(:,:) real(psb_dpk_), intent(inout) :: x(:,:)
@ -209,6 +214,48 @@ subroutine psi_dovrl_restrr2(x,xs,desc_a,info)
return return
end subroutine psi_dovrl_restrr2 end subroutine psi_dovrl_restrr2
subroutine psi_dovrl_restr_vect(x,xs,desc_a,info)
use psb_const_mod
use psb_error_mod
use psb_penv_mod
use psb_d_base_vect_mod
implicit none
class(psb_d_base_vect_type) :: x
real(psb_dpk_) :: xs(:)
type(psb_desc_type), intent(in) :: desc_a
integer(psb_ipk_), intent(out) :: info
! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, i, idx, isz
character(len=20) :: name, ch_err
name='psi_dovrl_restrr1'
if (psb_get_errstatus() /= 0) return
info = psb_success_
call psb_erractionsave(err_act)
ictxt = desc_a%get_context()
call psb_info(ictxt, me, np)
if (np == -1) then
info = psb_err_context_error_
call psb_errpush(info,name)
goto 9999
endif
isz = size(desc_a%ovrlap_elem,1)
call x%sct(isz,desc_a%ovrlap_elem(:,1),xs,dzero)
call psb_erractionrestore(err_act)
return
9999 call psb_error_handler(ictxt,err_act)
return
end subroutine psi_dovrl_restr_vect
end submodule psi_dovrl_restore_mod
subroutine psi_covrl_restrr1(x,xs,desc_a,info) subroutine psi_covrl_restrr1(x,xs,desc_a,info)
use psi_mod, psi_protect_name => psi_covrl_restrr1 use psi_mod, psi_protect_name => psi_covrl_restrr1
@ -561,47 +608,6 @@ subroutine psi_sovrl_restr_vect(x,xs,desc_a,info)
end subroutine psi_sovrl_restr_vect end subroutine psi_sovrl_restr_vect
subroutine psi_dovrl_restr_vect(x,xs,desc_a,info)
use psi_mod, psi_protect_name => psi_dovrl_restr_vect
use psb_d_base_vect_mod
implicit none
class(psb_d_base_vect_type) :: x
real(psb_dpk_) :: xs(:)
type(psb_desc_type), intent(in) :: desc_a
integer(psb_ipk_), intent(out) :: info
! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, i, idx, isz
character(len=20) :: name, ch_err
name='psi_dovrl_restrr1'
if (psb_get_errstatus() /= 0) return
info = psb_success_
call psb_erractionsave(err_act)
ictxt = desc_a%get_context()
call psb_info(ictxt, me, np)
if (np == -1) then
info = psb_err_context_error_
call psb_errpush(info,name)
goto 9999
endif
isz = size(desc_a%ovrlap_elem,1)
call x%sct(isz,desc_a%ovrlap_elem(:,1),xs,dzero)
call psb_erractionrestore(err_act)
return
9999 call psb_error_handler(ictxt,err_act)
return
end subroutine psi_dovrl_restr_vect
subroutine psi_covrl_restr_vect(x,xs,desc_a,info) subroutine psi_covrl_restr_vect(x,xs,desc_a,info)
use psi_mod, psi_protect_name => psi_covrl_restr_vect use psi_mod, psi_protect_name => psi_covrl_restr_vect

@ -127,10 +127,14 @@ subroutine psi_sovrl_saver2(x,xs,desc_a,info)
return return
end subroutine psi_sovrl_saver2 end subroutine psi_sovrl_saver2
submodule (psi_d_mod) psi_dovrl_save_mod
contains
subroutine psi_dovrl_saver1(x,xs,desc_a,info) subroutine psi_dovrl_saver1(x,xs,desc_a,info)
use psi_mod, psi_protect_name => psi_dovrl_saver1 use psb_penv_mod
use psb_realloc_mod use psb_realloc_mod
use psb_const_mod
use psb_error_mod
implicit none implicit none
@ -178,7 +182,9 @@ end subroutine psi_dovrl_saver1
subroutine psi_dovrl_saver2(x,xs,desc_a,info) subroutine psi_dovrl_saver2(x,xs,desc_a,info)
use psi_mod, psi_protect_name => psi_dovrl_saver2 use psb_penv_mod
use psb_const_mod
use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
implicit none implicit none
@ -226,6 +232,56 @@ subroutine psi_dovrl_saver2(x,xs,desc_a,info)
return return
end subroutine psi_dovrl_saver2 end subroutine psi_dovrl_saver2
subroutine psi_dovrl_save_vect(x,xs,desc_a,info)
use psb_penv_mod
use psb_const_mod
use psb_error_mod
use psb_realloc_mod
use psb_d_base_vect_mod
implicit none
class(psb_d_base_vect_type) :: x
real(psb_dpk_), allocatable :: xs(:)
type(psb_desc_type), intent(in) :: desc_a
integer(psb_ipk_), intent(out) :: info
! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, i, idx, isz
character(len=20) :: name, ch_err
name='psi_dovrl_saver1'
if (psb_get_errstatus() /= 0) return
info = psb_success_
call psb_erractionsave(err_act)
ictxt = desc_a%get_context()
call psb_info(ictxt, me, np)
if (np == -1) then
info = psb_err_context_error_
call psb_errpush(info,name)
goto 9999
endif
isz = size(desc_a%ovrlap_elem,1)
call psb_realloc(isz,xs,info)
if (info /= psb_success_) then
info = psb_err_alloc_dealloc_
call psb_errpush(info,name)
goto 9999
endif
call x%gth(isz,desc_a%ovrlap_elem(:,1),xs)
call psb_erractionrestore(err_act)
return
9999 call psb_error_handler(ictxt,err_act)
return
end subroutine psi_dovrl_save_vect
end submodule psi_dovrl_save_mod
subroutine psi_covrl_saver1(x,xs,desc_a,info) subroutine psi_covrl_saver1(x,xs,desc_a,info)
use psi_mod, psi_protect_name => psi_covrl_saver1 use psi_mod, psi_protect_name => psi_covrl_saver1
use psb_realloc_mod use psb_realloc_mod
@ -621,51 +677,6 @@ subroutine psi_sovrl_save_vect(x,xs,desc_a,info)
return return
end subroutine psi_sovrl_save_vect end subroutine psi_sovrl_save_vect
subroutine psi_dovrl_save_vect(x,xs,desc_a,info)
use psi_mod, psi_protect_name => psi_dovrl_save_vect
use psb_realloc_mod
use psb_d_base_vect_mod
implicit none
class(psb_d_base_vect_type) :: x
real(psb_dpk_), allocatable :: xs(:)
type(psb_desc_type), intent(in) :: desc_a
integer(psb_ipk_), intent(out) :: info
! locals
integer(psb_ipk_) :: ictxt, np, me, err_act, i, idx, isz
character(len=20) :: name, ch_err
name='psi_dovrl_saver1'
if (psb_get_errstatus() /= 0) return
info = psb_success_
call psb_erractionsave(err_act)
ictxt = desc_a%get_context()
call psb_info(ictxt, me, np)
if (np == -1) then
info = psb_err_context_error_
call psb_errpush(info,name)
goto 9999
endif
isz = size(desc_a%ovrlap_elem,1)
call psb_realloc(isz,xs,info)
if (info /= psb_success_) then
info = psb_err_alloc_dealloc_
call psb_errpush(info,name)
goto 9999
endif
call x%gth(isz,desc_a%ovrlap_elem(:,1),xs)
call psb_erractionrestore(err_act)
return
9999 call psb_error_handler(ictxt,err_act)
return
end subroutine psi_dovrl_save_vect
subroutine psi_covrl_save_vect(x,xs,desc_a,info) subroutine psi_covrl_save_vect(x,xs,desc_a,info)
use psi_mod, psi_protect_name => psi_covrl_save_vect use psi_mod, psi_protect_name => psi_covrl_save_vect

@ -163,8 +163,15 @@ subroutine psi_sovrl_updr2(x,desc_a,update,info)
return return
end subroutine psi_sovrl_updr2 end subroutine psi_sovrl_updr2
submodule (psi_d_mod) psi_dovrl_upd_mod
contains
subroutine psi_dovrl_updr1(x,desc_a,update,info) subroutine psi_dovrl_updr1(x,desc_a,update,info)
use psi_mod, psi_protect_name => psi_dovrl_updr1 use psb_penv_mod
use psb_const_mod
use psb_desc_const_mod
use psb_error_mod
implicit none implicit none
@ -231,7 +238,10 @@ end subroutine psi_dovrl_updr1
subroutine psi_dovrl_updr2(x,desc_a,update,info) subroutine psi_dovrl_updr2(x,desc_a,update,info)
use psi_mod, psi_protect_name => psi_dovrl_updr2 use psb_penv_mod
use psb_const_mod
use psb_desc_const_mod
use psb_error_mod
implicit none implicit none
@ -296,6 +306,91 @@ subroutine psi_dovrl_updr2(x,desc_a,update,info)
return return
end subroutine psi_dovrl_updr2 end subroutine psi_dovrl_updr2
subroutine psi_dovrl_upd_vect(x,desc_a,update,info)
use psb_penv_mod
use psb_const_mod
use psb_desc_const_mod
use psb_error_mod
use psb_realloc_mod
use psb_d_base_vect_mod
implicit none
class(psb_d_base_vect_type) :: x
type(psb_desc_type), intent(in) :: desc_a
integer(psb_ipk_), intent(in) :: update
integer(psb_ipk_), intent(out) :: info
! locals
real(psb_dpk_), allocatable :: xs(:)
integer(psb_ipk_) :: ictxt, np, me, err_act, i, idx, ndm, nx
integer(psb_ipk_) :: ierr(5)
character(len=20) :: name, ch_err
name='psi_dovrl_updr1'
if (psb_get_errstatus() /= 0) return
info = psb_success_
call psb_erractionsave(err_act)
ictxt = desc_a%get_context()
call psb_info(ictxt, me, np)
if (np == -1) then
info = psb_err_context_error_
call psb_errpush(info,name)
goto 9999
endif
nx = size(desc_a%ovrlap_elem,1)
call psb_realloc(nx,xs,info)
if (info /= psb_success_) then
info = psb_err_alloc_Dealloc_
call psb_errpush(info,name)
goto 9999
end if
if (update /= psb_sum_) then
call x%gth(nx,desc_a%ovrlap_elem(:,1),xs)
! switch on update type
select case (update)
case(psb_square_root_)
do i=1,nx
ndm = desc_a%ovrlap_elem(i,2)
xs(i) = xs(i)/sqrt(dble(ndm))
end do
case(psb_avg_)
do i=1,nx
ndm = desc_a%ovrlap_elem(i,2)
xs(i) = xs(i)/dble(ndm)
end do
case(psb_setzero_)
do i=1,nx
if (me /= desc_a%ovrlap_elem(i,3))&
& xs(i) = dzero
end do
case(psb_sum_)
! do nothing
case default
! wrong value for choice argument
info = psb_err_iarg_invalid_value_
ierr(1) = 3; ierr(2)=update;
call psb_errpush(info,name,i_err=ierr)
goto 9999
end select
call x%sct(nx,desc_a%ovrlap_elem(:,1),xs,dzero)
end if
call psb_erractionrestore(err_act)
return
9999 call psb_error_handler(ictxt,err_act)
return
end subroutine psi_dovrl_upd_vect
end submodule psi_dovrl_upd_mod
subroutine psi_covrl_updr1(x,desc_a,update,info) subroutine psi_covrl_updr1(x,desc_a,update,info)
use psi_mod, psi_protect_name => psi_covrl_updr1 use psi_mod, psi_protect_name => psi_covrl_updr1
@ -856,86 +951,6 @@ subroutine psi_sovrl_upd_vect(x,desc_a,update,info)
return return
end subroutine psi_sovrl_upd_vect end subroutine psi_sovrl_upd_vect
subroutine psi_dovrl_upd_vect(x,desc_a,update,info)
use psi_mod, psi_protect_name => psi_dovrl_upd_vect
use psb_realloc_mod
use psb_d_base_vect_mod
implicit none
class(psb_d_base_vect_type) :: x
type(psb_desc_type), intent(in) :: desc_a
integer(psb_ipk_), intent(in) :: update
integer(psb_ipk_), intent(out) :: info
! locals
real(psb_dpk_), allocatable :: xs(:)
integer(psb_ipk_) :: ictxt, np, me, err_act, i, idx, ndm, nx
integer(psb_ipk_) :: ierr(5)
character(len=20) :: name, ch_err
name='psi_dovrl_updr1'
if (psb_get_errstatus() /= 0) return
info = psb_success_
call psb_erractionsave(err_act)
ictxt = desc_a%get_context()
call psb_info(ictxt, me, np)
if (np == -1) then
info = psb_err_context_error_
call psb_errpush(info,name)
goto 9999
endif
nx = size(desc_a%ovrlap_elem,1)
call psb_realloc(nx,xs,info)
if (info /= psb_success_) then
info = psb_err_alloc_Dealloc_
call psb_errpush(info,name)
goto 9999
end if
if (update /= psb_sum_) then
call x%gth(nx,desc_a%ovrlap_elem(:,1),xs)
! switch on update type
select case (update)
case(psb_square_root_)
do i=1,nx
ndm = desc_a%ovrlap_elem(i,2)
xs(i) = xs(i)/sqrt(dble(ndm))
end do
case(psb_avg_)
do i=1,nx
ndm = desc_a%ovrlap_elem(i,2)
xs(i) = xs(i)/dble(ndm)
end do
case(psb_setzero_)
do i=1,nx
if (me /= desc_a%ovrlap_elem(i,3))&
& xs(i) = dzero
end do
case(psb_sum_)
! do nothing
case default
! wrong value for choice argument
info = psb_err_iarg_invalid_value_
ierr(1) = 3; ierr(2)=update;
call psb_errpush(info,name,i_err=ierr)
goto 9999
end select
call x%sct(nx,desc_a%ovrlap_elem(:,1),xs,dzero)
end if
call psb_erractionrestore(err_act)
return
9999 call psb_error_handler(ictxt,err_act)
return
end subroutine psi_dovrl_upd_vect
subroutine psi_covrl_upd_vect(x,desc_a,update,info) subroutine psi_covrl_upd_vect(x,desc_a,update,info)
use psi_mod, psi_protect_name => psi_covrl_upd_vect use psi_mod, psi_protect_name => psi_covrl_upd_vect
use psb_realloc_mod use psb_realloc_mod

@ -229,7 +229,7 @@ module psb_base_mat_mod
!! \param idx The line we are interested in. !! \param idx The line we are interested in.
! !
interface interface
function psb_base_get_nz_row(idx,a) result(res) module function psb_base_get_nz_row(idx,a) result(res)
import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat
integer(psb_ipk_), intent(in) :: idx integer(psb_ipk_), intent(in) :: idx
class(psb_base_sparse_mat), intent(in) :: a class(psb_base_sparse_mat), intent(in) :: a
@ -244,7 +244,7 @@ module psb_base_mat_mod
!! count(A(:,:)/=0) !! count(A(:,:)/=0)
! !
interface interface
function psb_base_get_nzeros(a) result(res) module function psb_base_get_nzeros(a) result(res)
import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat
class(psb_base_sparse_mat), intent(in) :: a class(psb_base_sparse_mat), intent(in) :: a
integer(psb_ipk_) :: res integer(psb_ipk_) :: res
@ -259,7 +259,7 @@ module psb_base_mat_mod
!! currently occupied) !! currently occupied)
! !
interface interface
function psb_base_get_size(a) result(res) module function psb_base_get_size(a) result(res)
import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat
class(psb_base_sparse_mat), intent(in) :: a class(psb_base_sparse_mat), intent(in) :: a
integer(psb_ipk_) :: res integer(psb_ipk_) :: res
@ -272,7 +272,7 @@ module psb_base_mat_mod
!! \param clear [true] explicitly zero out coefficients. !! \param clear [true] explicitly zero out coefficients.
! !
interface interface
subroutine psb_base_reinit(a,clear) module subroutine psb_base_reinit(a,clear)
import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat
class(psb_base_sparse_mat), intent(inout) :: a class(psb_base_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: clear logical, intent(in), optional :: clear
@ -291,7 +291,7 @@ module psb_base_mat_mod
!! \param ivc(:) [none] renumbering for the cols !! \param ivc(:) [none] renumbering for the cols
! !
interface interface
subroutine psb_base_sparse_print(iout,a,iv,head,ivr,ivc) module subroutine psb_base_sparse_print(iout,a,iv,head,ivr,ivc)
import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat
integer(psb_ipk_), intent(in) :: iout integer(psb_ipk_), intent(in) :: iout
class(psb_base_sparse_mat), intent(in) :: a class(psb_base_sparse_mat), intent(in) :: a
@ -330,7 +330,7 @@ module psb_base_mat_mod
! !
interface interface
subroutine psb_base_csgetptn(imin,imax,a,nz,ia,ja,info,& module subroutine psb_base_csgetptn(imin,imax,a,nz,ia,ja,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale) & jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat
class(psb_base_sparse_mat), intent(in) :: a class(psb_base_sparse_mat), intent(in) :: a
@ -361,7 +361,7 @@ module psb_base_mat_mod
!! i.e. when lev=2 find neighours of neighbours, etc. !! i.e. when lev=2 find neighours of neighbours, etc.
! !
interface interface
subroutine psb_base_get_neigh(a,idx,neigh,n,info,lev) module subroutine psb_base_get_neigh(a,idx,neigh,n,info,lev)
import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat
class(psb_base_sparse_mat), intent(in) :: a class(psb_base_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: idx integer(psb_ipk_), intent(in) :: idx
@ -383,7 +383,7 @@ module psb_base_mat_mod
!! \param nz [estimated internally] number of nonzeros to allocate for !! \param nz [estimated internally] number of nonzeros to allocate for
! !
interface interface
subroutine psb_base_allocate_mnnz(m,n,a,nz) module subroutine psb_base_allocate_mnnz(m,n,a,nz)
import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat
integer(psb_ipk_), intent(in) :: m,n integer(psb_ipk_), intent(in) :: m,n
class(psb_base_sparse_mat), intent(inout) :: a class(psb_base_sparse_mat), intent(inout) :: a
@ -401,7 +401,7 @@ module psb_base_mat_mod
!! \param nz number of nonzeros to allocate for !! \param nz number of nonzeros to allocate for
! !
interface interface
subroutine psb_base_reallocate_nz(nz,a) module subroutine psb_base_reallocate_nz(nz,a)
import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat
integer(psb_ipk_), intent(in) :: nz integer(psb_ipk_), intent(in) :: nz
class(psb_base_sparse_mat), intent(inout) :: a class(psb_base_sparse_mat), intent(inout) :: a
@ -414,7 +414,7 @@ module psb_base_mat_mod
!! \brief destructor !! \brief destructor
! !
interface interface
subroutine psb_base_free(a) module subroutine psb_base_free(a)
import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat
class(psb_base_sparse_mat), intent(inout) :: a class(psb_base_sparse_mat), intent(inout) :: a
end subroutine psb_base_free end subroutine psb_base_free
@ -428,7 +428,7 @@ module psb_base_mat_mod
!! possible given the actual number of nonzeros it contains. !! possible given the actual number of nonzeros it contains.
! !
interface interface
subroutine psb_base_trim(a) module subroutine psb_base_trim(a)
import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat import :: psb_ipk_, psb_long_int_k_, psb_base_sparse_mat
class(psb_base_sparse_mat), intent(inout) :: a class(psb_base_sparse_mat), intent(inout) :: a
end subroutine psb_base_trim end subroutine psb_base_trim

@ -257,7 +257,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) module subroutine psb_d_base_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: val(:) real(psb_dpk_), intent(in) :: val(:)
@ -268,7 +268,7 @@ module psb_d_base_mat_mod
end interface end interface
interface interface
subroutine psb_d_base_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) module subroutine psb_d_base_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_d_base_vect_type,& import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_d_base_vect_type,&
& psb_i_base_vect_type & psb_i_base_vect_type
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
@ -313,7 +313,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,& module subroutine psb_d_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale) & jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -352,7 +352,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_csgetblk(imin,imax,a,b,info,& module subroutine psb_d_base_csgetblk(imin,imax,a,b,info,&
& jmin,jmax,iren,append,rscale,cscale) & jmin,jmax,iren,append,rscale,cscale)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -390,7 +390,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_csclip(a,b,info,& module subroutine psb_d_base_csclip(a,b,info,&
& imin,imax,jmin,jmax,rscale,cscale) & imin,imax,jmin,jmax,rscale,cscale)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -430,7 +430,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_tril(a,b,info,diag,imin,imax,& module subroutine psb_d_base_tril(a,b,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale) & jmin,jmax,rscale,cscale)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -471,7 +471,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_triu(a,b,info,diag,imin,imax,& module subroutine psb_d_base_triu(a,b,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale) & jmin,jmax,rscale,cscale)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -494,7 +494,7 @@ module psb_d_base_mat_mod
!! \param info return code. !! \param info return code.
! !
interface interface
subroutine psb_d_base_get_diag(a,d,info) module subroutine psb_d_base_get_diag(a,d,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -513,7 +513,7 @@ module psb_d_base_mat_mod
!! \param info return code !! \param info return code
! !
interface interface
subroutine psb_d_base_mold(a,b,info) module subroutine psb_d_base_mold(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_long_int_k_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_long_int_k_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_d_base_sparse_mat), intent(inout), allocatable :: b class(psb_d_base_sparse_mat), intent(inout), allocatable :: b
@ -535,7 +535,7 @@ module psb_d_base_mat_mod
!! \param info return code !! \param info return code
! !
interface interface
subroutine psb_d_base_clone(a,b, info) module subroutine psb_d_base_clone(a,b, info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_long_int_k_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_long_int_k_
implicit none implicit none
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
@ -554,7 +554,7 @@ module psb_d_base_mat_mod
!! This is needed e.g. when scaling !! This is needed e.g. when scaling
! !
interface interface
subroutine psb_d_base_make_nonunit(a) module subroutine psb_d_base_make_nonunit(a)
import :: psb_d_base_sparse_mat import :: psb_d_base_sparse_mat
implicit none implicit none
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
@ -571,7 +571,7 @@ module psb_d_base_mat_mod
!! \param info return code !! \param info return code
! !
interface interface
subroutine psb_d_base_cp_to_coo(a,b,info) module subroutine psb_d_base_cp_to_coo(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b class(psb_d_coo_sparse_mat), intent(inout) :: b
@ -588,7 +588,7 @@ module psb_d_base_mat_mod
!! \param info return code !! \param info return code
! !
interface interface
subroutine psb_d_base_cp_from_coo(a,b,info) module subroutine psb_d_base_cp_from_coo(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(in) :: b class(psb_d_coo_sparse_mat), intent(in) :: b
@ -606,7 +606,7 @@ module psb_d_base_mat_mod
!! \param info return code !! \param info return code
! !
interface interface
subroutine psb_d_base_cp_to_fmt(a,b,info) module subroutine psb_d_base_cp_to_fmt(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -624,7 +624,7 @@ module psb_d_base_mat_mod
!! \param info return code !! \param info return code
! !
interface interface
subroutine psb_d_base_cp_from_fmt(a,b,info) module subroutine psb_d_base_cp_from_fmt(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(in) :: b class(psb_d_base_sparse_mat), intent(in) :: b
@ -641,7 +641,7 @@ module psb_d_base_mat_mod
!! \param info return code !! \param info return code
! !
interface interface
subroutine psb_d_base_mv_to_coo(a,b,info) module subroutine psb_d_base_mv_to_coo(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b class(psb_d_coo_sparse_mat), intent(inout) :: b
@ -658,7 +658,7 @@ module psb_d_base_mat_mod
!! \param info return code !! \param info return code
! !
interface interface
subroutine psb_d_base_mv_from_coo(a,b,info) module subroutine psb_d_base_mv_from_coo(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b class(psb_d_coo_sparse_mat), intent(inout) :: b
@ -676,7 +676,7 @@ module psb_d_base_mat_mod
!! \param info return code !! \param info return code
! !
interface interface
subroutine psb_d_base_mv_to_fmt(a,b,info) module subroutine psb_d_base_mv_to_fmt(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -694,7 +694,7 @@ module psb_d_base_mat_mod
!! \param info return code !! \param info return code
! !
interface interface
subroutine psb_d_base_mv_from_fmt(a,b,info) module subroutine psb_d_base_mv_from_fmt(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -711,7 +711,7 @@ module psb_d_base_mat_mod
!! \param b The output variable !! \param b The output variable
! !
interface interface
subroutine psb_d_base_transp_2mat(a,b) module subroutine psb_d_base_transp_2mat(a,b)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_base_sparse_mat), intent(out) :: b class(psb_base_sparse_mat), intent(out) :: b
@ -727,7 +727,7 @@ module psb_d_base_mat_mod
!! \param b The output variable !! \param b The output variable
! !
interface interface
subroutine psb_d_base_transc_2mat(a,b) module subroutine psb_d_base_transc_2mat(a,b)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_base_sparse_mat), intent(out) :: b class(psb_base_sparse_mat), intent(out) :: b
@ -742,7 +742,7 @@ module psb_d_base_mat_mod
!! In-place version. !! In-place version.
! !
interface interface
subroutine psb_d_base_transp_1mat(a) module subroutine psb_d_base_transp_1mat(a)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
end subroutine psb_d_base_transp_1mat end subroutine psb_d_base_transp_1mat
@ -756,7 +756,7 @@ module psb_d_base_mat_mod
!! In-place version. !! In-place version.
! !
interface interface
subroutine psb_d_base_transc_1mat(a) module subroutine psb_d_base_transc_1mat(a)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
end subroutine psb_d_base_transc_1mat end subroutine psb_d_base_transc_1mat
@ -781,7 +781,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_csmm(alpha,a,x,beta,y,info,trans) module subroutine psb_d_base_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -809,7 +809,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_csmv(alpha,a,x,beta,y,info,trans) module subroutine psb_d_base_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -844,7 +844,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_vect_mv(alpha,a,x,beta,y,info,trans) module subroutine psb_d_base_vect_mv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_d_base_vect_type import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_d_base_vect_type
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta real(psb_dpk_), intent(in) :: alpha, beta
@ -876,7 +876,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_inner_cssm(alpha,a,x,beta,y,info,trans) module subroutine psb_d_base_inner_cssm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -911,7 +911,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_inner_cssv(alpha,a,x,beta,y,info,trans) module subroutine psb_d_base_inner_cssv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -946,7 +946,7 @@ module psb_d_base_mat_mod
!! or its conjugate transpose (C) !! or its conjugate transpose (C)
! !
interface interface
subroutine psb_d_base_inner_vect_sv(alpha,a,x,beta,y,info,trans) module subroutine psb_d_base_inner_vect_sv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_d_base_vect_type import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_d_base_vect_type
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta real(psb_dpk_), intent(in) :: alpha, beta
@ -978,7 +978,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_cssm(alpha,a,x,beta,y,info,trans,scale,d) module subroutine psb_d_base_cssm(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -1011,7 +1011,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_cssv(alpha,a,x,beta,y,info,trans,scale,d) module subroutine psb_d_base_cssv(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -1045,7 +1045,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d) module subroutine psb_d_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_,psb_d_base_vect_type import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_,psb_d_base_vect_type
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta real(psb_dpk_), intent(in) :: alpha, beta
@ -1065,7 +1065,7 @@ module psb_d_base_mat_mod
!! \param info return code !! \param info return code
! !
interface interface
subroutine psb_d_base_scals(d,a,info) module subroutine psb_d_base_scals(d,a,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d real(psb_dpk_), intent(in) :: d
@ -1083,7 +1083,7 @@ module psb_d_base_mat_mod
!! \param side [L] Scale on the Left (rows) or on the Right (columns) !! \param side [L] Scale on the Left (rows) or on the Right (columns)
! !
interface interface
subroutine psb_d_base_scal(d,a,info,side) module subroutine psb_d_base_scal(d,a,info,side)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d(:) real(psb_dpk_), intent(in) :: d(:)
@ -1099,7 +1099,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
function psb_d_base_maxval(a) result(res) module function psb_d_base_maxval(a) result(res)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -1114,7 +1114,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
function psb_d_base_csnmi(a) result(res) module function psb_d_base_csnmi(a) result(res)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -1129,7 +1129,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
function psb_d_base_csnm1(a) result(res) module function psb_d_base_csnm1(a) result(res)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -1145,7 +1145,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_rowsum(d,a) module subroutine psb_d_base_rowsum(d,a)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1159,7 +1159,7 @@ module psb_d_base_mat_mod
!! \param d(:) The output row sums !! \param d(:) The output row sums
!! !!
interface interface
subroutine psb_d_base_arwsum(d,a) module subroutine psb_d_base_arwsum(d,a)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1175,7 +1175,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_base_colsum(d,a) module subroutine psb_d_base_colsum(d,a)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1189,7 +1189,7 @@ module psb_d_base_mat_mod
!! \param d(:) The output col sums !! \param d(:) The output col sums
!! !!
interface interface
subroutine psb_d_base_aclsum(d,a) module subroutine psb_d_base_aclsum(d,a)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1209,7 +1209,7 @@ module psb_d_base_mat_mod
!! \see psb_base_mat_mod::psb_base_reallocate_nz !! \see psb_base_mat_mod::psb_base_reallocate_nz
! !
interface interface
subroutine psb_d_coo_reallocate_nz(nz,a) module subroutine psb_d_coo_reallocate_nz(nz,a)
import :: psb_ipk_, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat
integer(psb_ipk_), intent(in) :: nz integer(psb_ipk_), intent(in) :: nz
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
@ -1222,7 +1222,7 @@ module psb_d_base_mat_mod
!! \see psb_base_mat_mod::psb_base_reinit !! \see psb_base_mat_mod::psb_base_reinit
! !
interface interface
subroutine psb_d_coo_reinit(a,clear) module subroutine psb_d_coo_reinit(a,clear)
import :: psb_ipk_, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: clear logical, intent(in), optional :: clear
@ -1234,7 +1234,7 @@ module psb_d_base_mat_mod
!! \see psb_base_mat_mod::psb_base_trim !! \see psb_base_mat_mod::psb_base_trim
! !
interface interface
subroutine psb_d_coo_trim(a) module subroutine psb_d_coo_trim(a)
import :: psb_ipk_, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
end subroutine psb_d_coo_trim end subroutine psb_d_coo_trim
@ -1246,7 +1246,7 @@ module psb_d_base_mat_mod
!! \see psb_base_mat_mod::psb_base_allocate_mnnz !! \see psb_base_mat_mod::psb_base_allocate_mnnz
! !
interface interface
subroutine psb_d_coo_allocate_mnnz(m,n,a,nz) module subroutine psb_d_coo_allocate_mnnz(m,n,a,nz)
import :: psb_ipk_, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat
integer(psb_ipk_), intent(in) :: m,n integer(psb_ipk_), intent(in) :: m,n
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
@ -1258,7 +1258,7 @@ module psb_d_base_mat_mod
!> \memberof psb_d_coo_sparse_mat !> \memberof psb_d_coo_sparse_mat
!| \see psb_base_mat_mod::psb_base_mold !| \see psb_base_mat_mod::psb_base_mold
interface interface
subroutine psb_d_coo_mold(a,b,info) module subroutine psb_d_coo_mold(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat, psb_long_int_k_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat, psb_long_int_k_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
class(psb_d_base_sparse_mat), intent(inout), allocatable :: b class(psb_d_base_sparse_mat), intent(inout), allocatable :: b
@ -1280,7 +1280,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_coo_print(iout,a,iv,head,ivr,ivc) module subroutine psb_d_coo_print(iout,a,iv,head,ivr,ivc)
import :: psb_ipk_, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat
integer(psb_ipk_), intent(in) :: iout integer(psb_ipk_), intent(in) :: iout
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
@ -1301,7 +1301,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
function psb_d_coo_get_nz_row(idx,a) result(res) module function psb_d_coo_get_nz_row(idx,a) result(res)
import :: psb_ipk_, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: idx integer(psb_ipk_), intent(in) :: idx
@ -1311,7 +1311,7 @@ module psb_d_base_mat_mod
! !
!> Funtion: fix_coo_inner !> Function: fix_coo_inner
!! \brief Make sure the entries are sorted and duplicates are handled. !! \brief Make sure the entries are sorted and duplicates are handled.
!! Used internally by fix_coo !! Used internally by fix_coo
!! \param nzin Number of entries on input to be handled !! \param nzin Number of entries on input to be handled
@ -1325,7 +1325,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir) module subroutine psb_d_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir)
import :: psb_ipk_, psb_dpk_ import :: psb_ipk_, psb_dpk_
integer(psb_ipk_), intent(in) :: nr,nc,nzin,dupl integer(psb_ipk_), intent(in) :: nr,nc,nzin,dupl
integer(psb_ipk_), intent(inout) :: ia(:), ja(:) integer(psb_ipk_), intent(inout) :: ia(:), ja(:)
@ -1344,7 +1344,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_fix_coo(a,info,idir) module subroutine psb_d_fix_coo(a,info,idir)
import :: psb_ipk_, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
@ -1356,7 +1356,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_cp_to_coo !! \see psb_d_base_mat_mod::psb_d_base_cp_to_coo
interface interface
subroutine psb_d_cp_coo_to_coo(a,b,info) module subroutine psb_d_cp_coo_to_coo(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b class(psb_d_coo_sparse_mat), intent(inout) :: b
@ -1368,7 +1368,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_cp_from_coo !! \see psb_d_base_mat_mod::psb_d_base_cp_from_coo
interface interface
subroutine psb_d_cp_coo_from_coo(a,b,info) module subroutine psb_d_cp_coo_from_coo(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(in) :: b class(psb_d_coo_sparse_mat), intent(in) :: b
@ -1381,7 +1381,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_cp_from_coo !! \see psb_d_base_mat_mod::psb_d_base_cp_from_coo
!! !!
interface interface
subroutine psb_d_cp_coo_to_fmt(a,b,info) module subroutine psb_d_cp_coo_to_fmt(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -1394,7 +1394,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_cp_from_fmt !! \see psb_d_base_mat_mod::psb_d_base_cp_from_fmt
!! !!
interface interface
subroutine psb_d_cp_coo_from_fmt(a,b,info) module subroutine psb_d_cp_coo_from_fmt(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(in) :: b class(psb_d_base_sparse_mat), intent(in) :: b
@ -1406,7 +1406,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_mv_to_coo !! \see psb_d_base_mat_mod::psb_d_base_mv_to_coo
interface interface
subroutine psb_d_mv_coo_to_coo(a,b,info) module subroutine psb_d_mv_coo_to_coo(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b class(psb_d_coo_sparse_mat), intent(inout) :: b
@ -1418,7 +1418,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_mv_from_coo !! \see psb_d_base_mat_mod::psb_d_base_mv_from_coo
interface interface
subroutine psb_d_mv_coo_from_coo(a,b,info) module subroutine psb_d_mv_coo_from_coo(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b class(psb_d_coo_sparse_mat), intent(inout) :: b
@ -1430,7 +1430,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_mv_to_fmt !! \see psb_d_base_mat_mod::psb_d_base_mv_to_fmt
interface interface
subroutine psb_d_mv_coo_to_fmt(a,b,info) module subroutine psb_d_mv_coo_to_fmt(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -1442,7 +1442,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_mv_from_fmt !! \see psb_d_base_mat_mod::psb_d_base_mv_from_fmt
interface interface
subroutine psb_d_mv_coo_from_fmt(a,b,info) module subroutine psb_d_mv_coo_from_fmt(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -1451,7 +1451,7 @@ module psb_d_base_mat_mod
end interface end interface
interface interface
subroutine psb_d_coo_cp_from(a,b) module subroutine psb_d_coo_cp_from(a,b)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
type(psb_d_coo_sparse_mat), intent(in) :: b type(psb_d_coo_sparse_mat), intent(in) :: b
@ -1459,7 +1459,7 @@ module psb_d_base_mat_mod
end interface end interface
interface interface
subroutine psb_d_coo_mv_from(a,b) module subroutine psb_d_coo_mv_from(a,b)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
type(psb_d_coo_sparse_mat), intent(inout) :: b type(psb_d_coo_sparse_mat), intent(inout) :: b
@ -1484,7 +1484,7 @@ module psb_d_base_mat_mod
!! !!
! !
interface interface
subroutine psb_d_coo_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) module subroutine psb_d_coo_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: val(:) real(psb_dpk_), intent(in) :: val(:)
@ -1499,7 +1499,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_base_mat_mod::psb_base_csgetptn !! \see psb_base_mat_mod::psb_base_csgetptn
interface interface
subroutine psb_d_coo_csgetptn(imin,imax,a,nz,ia,ja,info,& module subroutine psb_d_coo_csgetptn(imin,imax,a,nz,ia,ja,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale) & jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
@ -1518,7 +1518,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_csgetrow !! \see psb_d_base_mat_mod::psb_d_base_csgetrow
interface interface
subroutine psb_d_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,& module subroutine psb_d_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale) & jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
@ -1538,7 +1538,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_cssv !! \see psb_d_base_mat_mod::psb_d_base_cssv
interface interface
subroutine psb_d_coo_cssv(alpha,a,x,beta,y,info,trans) module subroutine psb_d_coo_cssv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -1551,7 +1551,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_cssm !! \see psb_d_base_mat_mod::psb_d_base_cssm
interface interface
subroutine psb_d_coo_cssm(alpha,a,x,beta,y,info,trans) module subroutine psb_d_coo_cssm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -1565,7 +1565,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_csmv !! \see psb_d_base_mat_mod::psb_d_base_csmv
interface interface
subroutine psb_d_coo_csmv(alpha,a,x,beta,y,info,trans) module subroutine psb_d_coo_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -1579,7 +1579,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_csmm !! \see psb_d_base_mat_mod::psb_d_base_csmm
interface interface
subroutine psb_d_coo_csmm(alpha,a,x,beta,y,info,trans) module subroutine psb_d_coo_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -1594,7 +1594,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_maxval !! \see psb_d_base_mat_mod::psb_d_base_maxval
interface interface
function psb_d_coo_maxval(a) result(res) module function psb_d_coo_maxval(a) result(res)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -1605,7 +1605,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_csnmi !! \see psb_d_base_mat_mod::psb_d_base_csnmi
interface interface
function psb_d_coo_csnmi(a) result(res) module function psb_d_coo_csnmi(a) result(res)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -1616,7 +1616,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_csnm1 !! \see psb_d_base_mat_mod::psb_d_base_csnm1
interface interface
function psb_d_coo_csnm1(a) result(res) module function psb_d_coo_csnm1(a) result(res)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -1627,7 +1627,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_rowsum !! \see psb_d_base_mat_mod::psb_d_base_rowsum
interface interface
subroutine psb_d_coo_rowsum(d,a) module subroutine psb_d_coo_rowsum(d,a)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1637,7 +1637,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_arwsum !! \see psb_d_base_mat_mod::psb_d_base_arwsum
interface interface
subroutine psb_d_coo_arwsum(d,a) module subroutine psb_d_coo_arwsum(d,a)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1648,7 +1648,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_colsum !! \see psb_d_base_mat_mod::psb_d_base_colsum
interface interface
subroutine psb_d_coo_colsum(d,a) module subroutine psb_d_coo_colsum(d,a)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1659,7 +1659,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_aclsum !! \see psb_d_base_mat_mod::psb_d_base_aclsum
interface interface
subroutine psb_d_coo_aclsum(d,a) module subroutine psb_d_coo_aclsum(d,a)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1670,7 +1670,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_get_diag !! \see psb_d_base_mat_mod::psb_d_base_get_diag
interface interface
subroutine psb_d_coo_get_diag(a,d,info) module subroutine psb_d_coo_get_diag(a,d,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1682,7 +1682,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_scal !! \see psb_d_base_mat_mod::psb_d_base_scal
interface interface
subroutine psb_d_coo_scal(d,a,info,side) module subroutine psb_d_coo_scal(d,a,info,side)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d(:) real(psb_dpk_), intent(in) :: d(:)
@ -1695,7 +1695,7 @@ module psb_d_base_mat_mod
!! \memberof psb_d_coo_sparse_mat !! \memberof psb_d_coo_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_scals !! \see psb_d_base_mat_mod::psb_d_base_scals
interface interface
subroutine psb_d_coo_scals(d,a,info) module subroutine psb_d_coo_scals(d,a,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d real(psb_dpk_), intent(in) :: d

@ -106,7 +106,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!| \see psb_base_mat_mod::psb_base_reallocate_nz !| \see psb_base_mat_mod::psb_base_reallocate_nz
interface interface
subroutine psb_d_csc_reallocate_nz(nz,a) module subroutine psb_d_csc_reallocate_nz(nz,a)
import :: psb_ipk_, psb_d_csc_sparse_mat import :: psb_ipk_, psb_d_csc_sparse_mat
integer(psb_ipk_), intent(in) :: nz integer(psb_ipk_), intent(in) :: nz
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
@ -116,7 +116,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!| \see psb_base_mat_mod::psb_base_reinit !| \see psb_base_mat_mod::psb_base_reinit
interface interface
subroutine psb_d_csc_reinit(a,clear) module subroutine psb_d_csc_reinit(a,clear)
import :: psb_ipk_, psb_d_csc_sparse_mat import :: psb_ipk_, psb_d_csc_sparse_mat
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: clear logical, intent(in), optional :: clear
@ -126,7 +126,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!| \see psb_base_mat_mod::psb_base_trim !| \see psb_base_mat_mod::psb_base_trim
interface interface
subroutine psb_d_csc_trim(a) module subroutine psb_d_csc_trim(a)
import :: psb_ipk_, psb_d_csc_sparse_mat import :: psb_ipk_, psb_d_csc_sparse_mat
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
end subroutine psb_d_csc_trim end subroutine psb_d_csc_trim
@ -135,7 +135,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!| \see psb_base_mat_mod::psb_base_mold !| \see psb_base_mat_mod::psb_base_mold
interface interface
subroutine psb_d_csc_mold(a,b,info) module subroutine psb_d_csc_mold(a,b,info)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_base_sparse_mat, psb_long_int_k_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_base_sparse_mat, psb_long_int_k_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
class(psb_d_base_sparse_mat), intent(inout), allocatable :: b class(psb_d_base_sparse_mat), intent(inout), allocatable :: b
@ -146,7 +146,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!| \see psb_base_mat_mod::psb_base_allocate_mnnz !| \see psb_base_mat_mod::psb_base_allocate_mnnz
interface interface
subroutine psb_d_csc_allocate_mnnz(m,n,a,nz) module subroutine psb_d_csc_allocate_mnnz(m,n,a,nz)
import :: psb_ipk_, psb_d_csc_sparse_mat import :: psb_ipk_, psb_d_csc_sparse_mat
integer(psb_ipk_), intent(in) :: m,n integer(psb_ipk_), intent(in) :: m,n
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
@ -158,7 +158,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_print !! \see psb_d_base_mat_mod::psb_d_base_print
interface interface
subroutine psb_d_csc_print(iout,a,iv,head,ivr,ivc) module subroutine psb_d_csc_print(iout,a,iv,head,ivr,ivc)
import :: psb_ipk_, psb_d_csc_sparse_mat import :: psb_ipk_, psb_d_csc_sparse_mat
integer(psb_ipk_), intent(in) :: iout integer(psb_ipk_), intent(in) :: iout
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
@ -171,7 +171,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_cp_to_coo !! \see psb_d_base_mat_mod::psb_d_base_cp_to_coo
interface interface
subroutine psb_d_cp_csc_to_coo(a,b,info) module subroutine psb_d_cp_csc_to_coo(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_csc_sparse_mat import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_csc_sparse_mat
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b class(psb_d_coo_sparse_mat), intent(inout) :: b
@ -182,7 +182,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_cp_from_coo !! \see psb_d_base_mat_mod::psb_d_base_cp_from_coo
interface interface
subroutine psb_d_cp_csc_from_coo(a,b,info) module subroutine psb_d_cp_csc_from_coo(a,b,info)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_coo_sparse_mat
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(in) :: b class(psb_d_coo_sparse_mat), intent(in) :: b
@ -193,7 +193,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_cp_to_fmt !! \see psb_d_base_mat_mod::psb_d_base_cp_to_fmt
interface interface
subroutine psb_d_cp_csc_to_fmt(a,b,info) module subroutine psb_d_cp_csc_to_fmt(a,b,info)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_base_sparse_mat import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_base_sparse_mat
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -204,7 +204,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_cp_from_fmt !! \see psb_d_base_mat_mod::psb_d_base_cp_from_fmt
interface interface
subroutine psb_d_cp_csc_from_fmt(a,b,info) module subroutine psb_d_cp_csc_from_fmt(a,b,info)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_base_sparse_mat import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_base_sparse_mat
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(in) :: b class(psb_d_base_sparse_mat), intent(in) :: b
@ -215,7 +215,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_mv_to_coo !! \see psb_d_base_mat_mod::psb_d_base_mv_to_coo
interface interface
subroutine psb_d_mv_csc_to_coo(a,b,info) module subroutine psb_d_mv_csc_to_coo(a,b,info)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_coo_sparse_mat
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b class(psb_d_coo_sparse_mat), intent(inout) :: b
@ -226,7 +226,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_mv_from_coo !! \see psb_d_base_mat_mod::psb_d_base_mv_from_coo
interface interface
subroutine psb_d_mv_csc_from_coo(a,b,info) module subroutine psb_d_mv_csc_from_coo(a,b,info)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_coo_sparse_mat
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b class(psb_d_coo_sparse_mat), intent(inout) :: b
@ -237,7 +237,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_mv_to_fmt !! \see psb_d_base_mat_mod::psb_d_base_mv_to_fmt
interface interface
subroutine psb_d_mv_csc_to_fmt(a,b,info) module subroutine psb_d_mv_csc_to_fmt(a,b,info)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_base_sparse_mat import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_base_sparse_mat
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -248,7 +248,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_mv_from_fmt !! \see psb_d_base_mat_mod::psb_d_base_mv_from_fmt
interface interface
subroutine psb_d_mv_csc_from_fmt(a,b,info) module subroutine psb_d_mv_csc_from_fmt(a,b,info)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_base_sparse_mat import :: psb_ipk_, psb_d_csc_sparse_mat, psb_d_base_sparse_mat
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -259,7 +259,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_cp_from !! \see psb_d_base_mat_mod::psb_d_base_cp_from
interface interface
subroutine psb_d_csc_cp_from(a,b) module subroutine psb_d_csc_cp_from(a,b)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
type(psb_d_csc_sparse_mat), intent(in) :: b type(psb_d_csc_sparse_mat), intent(in) :: b
@ -269,7 +269,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_mv_from !! \see psb_d_base_mat_mod::psb_d_base_mv_from
interface interface
subroutine psb_d_csc_mv_from(a,b) module subroutine psb_d_csc_mv_from(a,b)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
type(psb_d_csc_sparse_mat), intent(inout) :: b type(psb_d_csc_sparse_mat), intent(inout) :: b
@ -280,7 +280,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_csput_a !! \see psb_d_base_mat_mod::psb_d_base_csput_a
interface interface
subroutine psb_d_csc_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) module subroutine psb_d_csc_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: val(:) real(psb_dpk_), intent(in) :: val(:)
@ -294,7 +294,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_base_mat_mod::psb_base_csgetptn !! \see psb_base_mat_mod::psb_base_csgetptn
interface interface
subroutine psb_d_csc_csgetptn(imin,imax,a,nz,ia,ja,info,& module subroutine psb_d_csc_csgetptn(imin,imax,a,nz,ia,ja,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale) & jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
@ -312,7 +312,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_csgetrow !! \see psb_d_base_mat_mod::psb_d_base_csgetrow
interface interface
subroutine psb_d_csc_csgetrow(imin,imax,a,nz,ia,ja,val,info,& module subroutine psb_d_csc_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale) & jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
@ -331,7 +331,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_csgetblk !! \see psb_d_base_mat_mod::psb_d_base_csgetblk
interface interface
subroutine psb_d_csc_csgetblk(imin,imax,a,b,info,& module subroutine psb_d_csc_csgetblk(imin,imax,a,b,info,&
& jmin,jmax,iren,append,rscale,cscale) & jmin,jmax,iren,append,rscale,cscale)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_, psb_d_coo_sparse_mat import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_, psb_d_coo_sparse_mat
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
@ -348,7 +348,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_cssv !! \see psb_d_base_mat_mod::psb_d_base_cssv
interface interface
subroutine psb_d_csc_cssv(alpha,a,x,beta,y,info,trans) module subroutine psb_d_csc_cssv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -360,7 +360,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_cssm !! \see psb_d_base_mat_mod::psb_d_base_cssm
interface interface
subroutine psb_d_csc_cssm(alpha,a,x,beta,y,info,trans) module subroutine psb_d_csc_cssm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -373,7 +373,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_csmv !! \see psb_d_base_mat_mod::psb_d_base_csmv
interface interface
subroutine psb_d_csc_csmv(alpha,a,x,beta,y,info,trans) module subroutine psb_d_csc_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -386,7 +386,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_csmm !! \see psb_d_base_mat_mod::psb_d_base_csmm
interface interface
subroutine psb_d_csc_csmm(alpha,a,x,beta,y,info,trans) module subroutine psb_d_csc_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -400,7 +400,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_maxval !! \see psb_d_base_mat_mod::psb_d_base_maxval
interface interface
function psb_d_csc_maxval(a) result(res) module function psb_d_csc_maxval(a) result(res)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -410,7 +410,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_csnm1 !! \see psb_d_base_mat_mod::psb_d_base_csnm1
interface interface
function psb_d_csc_csnm1(a) result(res) module function psb_d_csc_csnm1(a) result(res)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -420,7 +420,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_rowsum !! \see psb_d_base_mat_mod::psb_d_base_rowsum
interface interface
subroutine psb_d_csc_rowsum(d,a) module subroutine psb_d_csc_rowsum(d,a)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -430,7 +430,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_arwsum !! \see psb_d_base_mat_mod::psb_d_base_arwsum
interface interface
subroutine psb_d_csc_arwsum(d,a) module subroutine psb_d_csc_arwsum(d,a)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -440,7 +440,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_colsum !! \see psb_d_base_mat_mod::psb_d_base_colsum
interface interface
subroutine psb_d_csc_colsum(d,a) module subroutine psb_d_csc_colsum(d,a)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -450,7 +450,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_aclsum !! \see psb_d_base_mat_mod::psb_d_base_aclsum
interface interface
subroutine psb_d_csc_aclsum(d,a) module subroutine psb_d_csc_aclsum(d,a)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -460,7 +460,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_get_diag !! \see psb_d_base_mat_mod::psb_d_base_get_diag
interface interface
subroutine psb_d_csc_get_diag(a,d,info) module subroutine psb_d_csc_get_diag(a,d,info)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -471,7 +471,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_scal !! \see psb_d_base_mat_mod::psb_d_base_scal
interface interface
subroutine psb_d_csc_scal(d,a,info,side) module subroutine psb_d_csc_scal(d,a,info,side)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d(:) real(psb_dpk_), intent(in) :: d(:)
@ -483,7 +483,7 @@ module psb_d_csc_mat_mod
!> \memberof psb_d_csc_sparse_mat !> \memberof psb_d_csc_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_scals !! \see psb_d_base_mat_mod::psb_d_base_scals
interface interface
subroutine psb_d_csc_scals(d,a,info) module subroutine psb_d_csc_scals(d,a,info)
import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csc_sparse_mat, psb_dpk_
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d real(psb_dpk_), intent(in) :: d

@ -52,7 +52,7 @@ module psb_d_csr_mat_mod
!! This is a very common storage type, and is the default for assembled !! This is a very common storage type, and is the default for assembled
!! matrices in our library !! matrices in our library
type, extends(psb_d_base_sparse_mat) :: psb_d_csr_sparse_mat type, extends(psb_d_base_sparse_mat) :: psb_d_csr_sparse_mat
private
!> Pointers to beginning of rows in JA and VAL. !> Pointers to beginning of rows in JA and VAL.
integer(psb_ipk_), allocatable :: irp(:) integer(psb_ipk_), allocatable :: irp(:)
!> Column indices. !> Column indices.
@ -99,6 +99,10 @@ module psb_d_csr_mat_mod
procedure, pass(a) :: free => d_csr_free procedure, pass(a) :: free => d_csr_free
procedure, pass(a) :: mold => psb_d_csr_mold procedure, pass(a) :: mold => psb_d_csr_mold
procedure, pass(a) :: get_irpp => d_csr_get_irpp
procedure, pass(a) :: get_jap => d_csr_get_jap
procedure, pass(a) :: get_valp => d_csr_get_valp
end type psb_d_csr_sparse_mat end type psb_d_csr_sparse_mat
private :: d_csr_get_nzeros, d_csr_free, d_csr_get_fmt, & private :: d_csr_get_nzeros, d_csr_free, d_csr_get_fmt, &
@ -403,7 +407,7 @@ module psb_d_csr_mat_mod
!> \memberof psb_d_csr_sparse_mat !> \memberof psb_d_csr_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_maxval !! \see psb_d_base_mat_mod::psb_d_base_maxval
interface interface
function psb_d_csr_maxval(a) result(res) module function psb_d_csr_maxval(a) result(res)
import :: psb_ipk_, psb_d_csr_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csr_sparse_mat, psb_dpk_
class(psb_d_csr_sparse_mat), intent(in) :: a class(psb_d_csr_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -413,7 +417,7 @@ module psb_d_csr_mat_mod
!> \memberof psb_d_csr_sparse_mat !> \memberof psb_d_csr_sparse_mat
!! \see psb_d_base_mat_mod::psb_d_base_csnmi !! \see psb_d_base_mat_mod::psb_d_base_csnmi
interface interface
function psb_d_csr_csnmi(a) result(res) module function psb_d_csr_csnmi(a) result(res)
import :: psb_ipk_, psb_d_csr_sparse_mat, psb_dpk_ import :: psb_ipk_, psb_d_csr_sparse_mat, psb_dpk_
class(psb_d_csr_sparse_mat), intent(in) :: a class(psb_d_csr_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -614,4 +618,48 @@ contains
end subroutine d_csr_free end subroutine d_csr_free
function d_csr_get_irpp(a) result(res)
implicit none
class(psb_d_csr_sparse_mat), intent(in), target :: a
integer(psb_ipk_), pointer :: res(:)
if (allocated(a%irp)) then
res => a%irp
else
res => null()
end if
end function d_csr_get_irpp
function d_csr_get_jap(a) result(res)
implicit none
class(psb_d_csr_sparse_mat), intent(in), target :: a
integer(psb_ipk_), pointer :: res(:)
if (allocated(a%ja)) then
res => a%ja
else
res => null()
end if
end function d_csr_get_jap
function d_csr_get_valp(a) result(res)
implicit none
class(psb_d_csr_sparse_mat), intent(in), target :: a
real(psb_dpk_), pointer :: res(:)
if (allocated(a%val)) then
res => a%val
else
res => null()
end if
end function d_csr_get_valp
end module psb_d_csr_mat_mod end module psb_d_csr_mat_mod

@ -248,7 +248,7 @@ module psb_d_mat_mod
interface interface
subroutine psb_d_set_nrows(m,a) module subroutine psb_d_set_nrows(m,a)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
integer(psb_ipk_), intent(in) :: m integer(psb_ipk_), intent(in) :: m
@ -256,7 +256,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_set_ncols(n,a) module subroutine psb_d_set_ncols(n,a)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
@ -264,7 +264,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_set_dupl(n,a) module subroutine psb_d_set_dupl(n,a)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
@ -272,35 +272,35 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_set_null(a) module subroutine psb_d_set_null(a)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
end subroutine psb_d_set_null end subroutine psb_d_set_null
end interface end interface
interface interface
subroutine psb_d_set_bld(a) module subroutine psb_d_set_bld(a)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
end subroutine psb_d_set_bld end subroutine psb_d_set_bld
end interface end interface
interface interface
subroutine psb_d_set_upd(a) module subroutine psb_d_set_upd(a)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
end subroutine psb_d_set_upd end subroutine psb_d_set_upd
end interface end interface
interface interface
subroutine psb_d_set_asb(a) module subroutine psb_d_set_asb(a)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
end subroutine psb_d_set_asb end subroutine psb_d_set_asb
end interface end interface
interface interface
subroutine psb_d_set_sorted(a,val) module subroutine psb_d_set_sorted(a,val)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
logical, intent(in), optional :: val logical, intent(in), optional :: val
@ -308,7 +308,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_set_triangle(a,val) module subroutine psb_d_set_triangle(a,val)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
logical, intent(in), optional :: val logical, intent(in), optional :: val
@ -316,7 +316,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_set_unit(a,val) module subroutine psb_d_set_unit(a,val)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
logical, intent(in), optional :: val logical, intent(in), optional :: val
@ -324,7 +324,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_set_lower(a,val) module subroutine psb_d_set_lower(a,val)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
logical, intent(in), optional :: val logical, intent(in), optional :: val
@ -332,7 +332,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_set_upper(a,val) module subroutine psb_d_set_upper(a,val)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
logical, intent(in), optional :: val logical, intent(in), optional :: val
@ -340,7 +340,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_sparse_print(iout,a,iv,head,ivr,ivc) module subroutine psb_d_sparse_print(iout,a,iv,head,ivr,ivc)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
integer(psb_ipk_), intent(in) :: iout integer(psb_ipk_), intent(in) :: iout
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -351,7 +351,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_n_sparse_print(fname,a,iv,head,ivr,ivc) module subroutine psb_d_n_sparse_print(fname,a,iv,head,ivr,ivc)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
character(len=*), intent(in) :: fname character(len=*), intent(in) :: fname
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -362,7 +362,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_get_neigh(a,idx,neigh,n,info,lev) module subroutine psb_d_get_neigh(a,idx,neigh,n,info,lev)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
integer(psb_ipk_), intent(in) :: idx integer(psb_ipk_), intent(in) :: idx
@ -374,7 +374,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_csall(nr,nc,a,info,nz) module subroutine psb_d_csall(nr,nc,a,info,nz)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
integer(psb_ipk_), intent(in) :: nr,nc integer(psb_ipk_), intent(in) :: nr,nc
@ -384,7 +384,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_reallocate_nz(nz,a) module subroutine psb_d_reallocate_nz(nz,a)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
integer(psb_ipk_), intent(in) :: nz integer(psb_ipk_), intent(in) :: nz
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -392,21 +392,21 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_free(a) module subroutine psb_d_free(a)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
end subroutine psb_d_free end subroutine psb_d_free
end interface end interface
interface interface
subroutine psb_d_trim(a) module subroutine psb_d_trim(a)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
end subroutine psb_d_trim end subroutine psb_d_trim
end interface end interface
interface interface
subroutine psb_d_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) module subroutine psb_d_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
real(psb_dpk_), intent(in) :: val(:) real(psb_dpk_), intent(in) :: val(:)
@ -418,7 +418,7 @@ module psb_d_mat_mod
interface interface
subroutine psb_d_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) module subroutine psb_d_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psb_d_vect_mod, only : psb_d_vect_type use psb_d_vect_mod, only : psb_d_vect_type
use psb_i_vect_mod, only : psb_i_vect_type use psb_i_vect_mod, only : psb_i_vect_type
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
@ -432,7 +432,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_csgetptn(imin,imax,a,nz,ia,ja,info,& module subroutine psb_d_csgetptn(imin,imax,a,nz,ia,ja,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale) & jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -448,7 +448,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_csgetrow(imin,imax,a,nz,ia,ja,val,info,& module subroutine psb_d_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale) & jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -465,7 +465,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_csgetblk(imin,imax,a,b,info,& module subroutine psb_d_csgetblk(imin,imax,a,b,info,&
& jmin,jmax,iren,append,rscale,cscale) & jmin,jmax,iren,append,rscale,cscale)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -480,7 +480,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_tril(a,b,info,diag,imin,imax,& module subroutine psb_d_tril(a,b,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale) & jmin,jmax,rscale,cscale)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -492,7 +492,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_triu(a,b,info,diag,imin,imax,& module subroutine psb_d_triu(a,b,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale) & jmin,jmax,rscale,cscale)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -505,7 +505,7 @@ module psb_d_mat_mod
interface interface
subroutine psb_d_csclip(a,b,info,& module subroutine psb_d_csclip(a,b,info,&
& imin,imax,jmin,jmax,rscale,cscale) & imin,imax,jmin,jmax,rscale,cscale)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -517,7 +517,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_b_csclip(a,b,info,& module subroutine psb_d_b_csclip(a,b,info,&
& imin,imax,jmin,jmax,rscale,cscale) & imin,imax,jmin,jmax,rscale,cscale)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_coo_sparse_mat import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_coo_sparse_mat
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -529,7 +529,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_mold(a,b) module subroutine psb_d_mold(a,b)
import :: psb_ipk_, psb_dspmat_type, psb_d_base_sparse_mat import :: psb_ipk_, psb_dspmat_type, psb_d_base_sparse_mat
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
class(psb_d_base_sparse_mat), allocatable, intent(out) :: b class(psb_d_base_sparse_mat), allocatable, intent(out) :: b
@ -537,7 +537,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_asb(a,mold) module subroutine psb_d_asb(a,mold)
import :: psb_ipk_, psb_dspmat_type, psb_d_base_sparse_mat import :: psb_ipk_, psb_dspmat_type, psb_d_base_sparse_mat
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
class(psb_d_base_sparse_mat), optional, intent(in) :: mold class(psb_d_base_sparse_mat), optional, intent(in) :: mold
@ -545,14 +545,14 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_transp_1mat(a) module subroutine psb_d_transp_1mat(a)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
end subroutine psb_d_transp_1mat end subroutine psb_d_transp_1mat
end interface end interface
interface interface
subroutine psb_d_transp_2mat(a,b) module subroutine psb_d_transp_2mat(a,b)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
class(psb_dspmat_type), intent(inout) :: b class(psb_dspmat_type), intent(inout) :: b
@ -560,14 +560,14 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_transc_1mat(a) module subroutine psb_d_transc_1mat(a)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
end subroutine psb_d_transc_1mat end subroutine psb_d_transc_1mat
end interface end interface
interface interface
subroutine psb_d_transc_2mat(a,b) module subroutine psb_d_transc_2mat(a,b)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
class(psb_dspmat_type), intent(inout) :: b class(psb_dspmat_type), intent(inout) :: b
@ -575,7 +575,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_reinit(a,clear) module subroutine psb_d_reinit(a,clear)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
logical, intent(in), optional :: clear logical, intent(in), optional :: clear
@ -598,7 +598,7 @@ module psb_d_mat_mod
! !
! !
interface interface
subroutine psb_d_cscnv(a,b,info,type,mold,upd,dupl) module subroutine psb_d_cscnv(a,b,info,type,mold,upd,dupl)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
class(psb_dspmat_type), intent(inout) :: b class(psb_dspmat_type), intent(inout) :: b
@ -611,7 +611,7 @@ module psb_d_mat_mod
interface interface
subroutine psb_d_cscnv_ip(a,iinfo,type,mold,dupl) module subroutine psb_d_cscnv_ip(a,iinfo,type,mold,dupl)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
integer(psb_ipk_), intent(out) :: iinfo integer(psb_ipk_), intent(out) :: iinfo
@ -623,7 +623,7 @@ module psb_d_mat_mod
interface interface
subroutine psb_d_cscnv_base(a,b,info,dupl) module subroutine psb_d_cscnv_base(a,b,info,dupl)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
class(psb_d_base_sparse_mat), intent(out) :: b class(psb_d_base_sparse_mat), intent(out) :: b
@ -637,7 +637,7 @@ module psb_d_mat_mod
! out; passes through a COO buffer. ! out; passes through a COO buffer.
! !
interface interface
subroutine psb_d_clip_d(a,b,info) module subroutine psb_d_clip_d(a,b,info)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
class(psb_dspmat_type), intent(inout) :: b class(psb_dspmat_type), intent(inout) :: b
@ -646,7 +646,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_clip_d_ip(a,info) module subroutine psb_d_clip_d_ip(a,info)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
integer(psb_ipk_),intent(out) :: info integer(psb_ipk_),intent(out) :: info
@ -658,7 +658,7 @@ module psb_d_mat_mod
! encapsulation between spmat_type and base_sparse_mat. ! encapsulation between spmat_type and base_sparse_mat.
! !
interface interface
subroutine psb_d_mv_from(a,b) module subroutine psb_d_mv_from(a,b)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -666,7 +666,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_cp_from(a,b) module subroutine psb_d_cp_from(a,b)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat
class(psb_dspmat_type), intent(out) :: a class(psb_dspmat_type), intent(out) :: a
class(psb_d_base_sparse_mat), intent(in) :: b class(psb_d_base_sparse_mat), intent(in) :: b
@ -674,7 +674,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_mv_to(a,b) module subroutine psb_d_mv_to(a,b)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -682,7 +682,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_d_cp_to(a,b) module subroutine psb_d_cp_to(a,b)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat import :: psb_ipk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -693,7 +693,7 @@ module psb_d_mat_mod
! Transfer the internal allocation to the target. ! Transfer the internal allocation to the target.
! !
interface psb_move_alloc interface psb_move_alloc
subroutine psb_dspmat_type_move(a,b,info) module subroutine psb_dspmat_type_move(a,b,info)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
class(psb_dspmat_type), intent(inout) :: b class(psb_dspmat_type), intent(inout) :: b
@ -702,7 +702,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
subroutine psb_dspmat_clone(a,b,info) module subroutine psb_dspmat_clone(a,b,info)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
class(psb_dspmat_type), intent(inout) :: b class(psb_dspmat_type), intent(inout) :: b
@ -727,7 +727,7 @@ module psb_d_mat_mod
! == =================================== ! == ===================================
interface psb_csmm interface psb_csmm
subroutine psb_d_csmm(alpha,a,x,beta,y,info,trans) module subroutine psb_d_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -735,7 +735,7 @@ module psb_d_mat_mod
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
character, optional, intent(in) :: trans character, optional, intent(in) :: trans
end subroutine psb_d_csmm end subroutine psb_d_csmm
subroutine psb_d_csmv(alpha,a,x,beta,y,info,trans) module subroutine psb_d_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -743,7 +743,7 @@ module psb_d_mat_mod
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
character, optional, intent(in) :: trans character, optional, intent(in) :: trans
end subroutine psb_d_csmv end subroutine psb_d_csmv
subroutine psb_d_csmv_vect(alpha,a,x,beta,y,info,trans) module subroutine psb_d_csmv_vect(alpha,a,x,beta,y,info,trans)
use psb_d_vect_mod, only : psb_d_vect_type use psb_d_vect_mod, only : psb_d_vect_type
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -756,7 +756,7 @@ module psb_d_mat_mod
end interface end interface
interface psb_cssm interface psb_cssm
subroutine psb_d_cssm(alpha,a,x,beta,y,info,trans,scale,d) module subroutine psb_d_cssm(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -765,7 +765,7 @@ module psb_d_mat_mod
character, optional, intent(in) :: trans, scale character, optional, intent(in) :: trans, scale
real(psb_dpk_), intent(in), optional :: d(:) real(psb_dpk_), intent(in), optional :: d(:)
end subroutine psb_d_cssm end subroutine psb_d_cssm
subroutine psb_d_cssv(alpha,a,x,beta,y,info,trans,scale,d) module subroutine psb_d_cssv(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -774,7 +774,7 @@ module psb_d_mat_mod
character, optional, intent(in) :: trans, scale character, optional, intent(in) :: trans, scale
real(psb_dpk_), intent(in), optional :: d(:) real(psb_dpk_), intent(in), optional :: d(:)
end subroutine psb_d_cssv end subroutine psb_d_cssv
subroutine psb_d_cssv_vect(alpha,a,x,beta,y,info,trans,scale,d) module subroutine psb_d_cssv_vect(alpha,a,x,beta,y,info,trans,scale,d)
use psb_d_vect_mod, only : psb_d_vect_type use psb_d_vect_mod, only : psb_d_vect_type
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -788,7 +788,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
function psb_d_maxval(a) result(res) module function psb_d_maxval(a) result(res)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -796,7 +796,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
function psb_d_csnmi(a) result(res) module function psb_d_csnmi(a) result(res)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -804,7 +804,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
function psb_d_csnm1(a) result(res) module function psb_d_csnm1(a) result(res)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -812,7 +812,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
function psb_d_rowsum(a,info) result(d) module function psb_d_rowsum(a,info) result(d)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), allocatable :: d(:) real(psb_dpk_), allocatable :: d(:)
@ -821,7 +821,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
function psb_d_arwsum(a,info) result(d) module function psb_d_arwsum(a,info) result(d)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), allocatable :: d(:) real(psb_dpk_), allocatable :: d(:)
@ -830,7 +830,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
function psb_d_colsum(a,info) result(d) module function psb_d_colsum(a,info) result(d)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), allocatable :: d(:) real(psb_dpk_), allocatable :: d(:)
@ -839,7 +839,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
function psb_d_aclsum(a,info) result(d) module function psb_d_aclsum(a,info) result(d)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), allocatable :: d(:) real(psb_dpk_), allocatable :: d(:)
@ -848,7 +848,7 @@ module psb_d_mat_mod
end interface end interface
interface interface
function psb_d_get_diag(a,info) result(d) module function psb_d_get_diag(a,info) result(d)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), allocatable :: d(:) real(psb_dpk_), allocatable :: d(:)
@ -857,14 +857,14 @@ module psb_d_mat_mod
end interface end interface
interface psb_scal interface psb_scal
subroutine psb_d_scal(d,a,info,side) module subroutine psb_d_scal(d,a,info,side)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
real(psb_dpk_), intent(in) :: d(:) real(psb_dpk_), intent(in) :: d(:)
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
character, intent(in), optional :: side character, intent(in), optional :: side
end subroutine psb_d_scal end subroutine psb_d_scal
subroutine psb_d_scals(d,a,info) module subroutine psb_d_scals(d,a,info)
import :: psb_ipk_, psb_dspmat_type, psb_dpk_ import :: psb_ipk_, psb_dspmat_type, psb_dpk_
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
real(psb_dpk_), intent(in) :: d real(psb_dpk_), intent(in) :: d

@ -71,7 +71,7 @@ module psb_d_sort_mod
interface psb_msort interface psb_msort
subroutine psb_dmsort(x,ix,dir,flag) module subroutine psb_dmsort(x,ix,dir,flag)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), optional, intent(in) :: dir, flag integer(psb_ipk_), optional, intent(in) :: dir, flag
@ -80,14 +80,14 @@ module psb_d_sort_mod
end interface psb_msort end interface psb_msort
interface interface
subroutine psi_d_msort_up(n,k,l,iret) module subroutine psi_d_msort_up(n,k,l,iret)
import import
implicit none implicit none
integer(psb_ipk_) :: n, iret integer(psb_ipk_) :: n, iret
real(psb_dpk_) :: k(n) real(psb_dpk_) :: k(n)
integer(psb_ipk_) :: l(0:n+1) integer(psb_ipk_) :: l(0:n+1)
end subroutine psi_d_msort_up end subroutine psi_d_msort_up
subroutine psi_d_msort_dw(n,k,l,iret) module subroutine psi_d_msort_dw(n,k,l,iret)
import import
implicit none implicit none
integer(psb_ipk_) :: n, iret integer(psb_ipk_) :: n, iret
@ -96,14 +96,14 @@ module psb_d_sort_mod
end subroutine psi_d_msort_dw end subroutine psi_d_msort_dw
end interface end interface
interface interface
subroutine psi_d_amsort_up(n,k,l,iret) module subroutine psi_d_amsort_up(n,k,l,iret)
import import
implicit none implicit none
integer(psb_ipk_) :: n, iret integer(psb_ipk_) :: n, iret
real(psb_dpk_) :: k(n) real(psb_dpk_) :: k(n)
integer(psb_ipk_) :: l(0:n+1) integer(psb_ipk_) :: l(0:n+1)
end subroutine psi_d_amsort_up end subroutine psi_d_amsort_up
subroutine psi_d_amsort_dw(n,k,l,iret) module subroutine psi_d_amsort_dw(n,k,l,iret)
import import
implicit none implicit none
integer(psb_ipk_) :: n, iret integer(psb_ipk_) :: n, iret
@ -114,7 +114,7 @@ module psb_d_sort_mod
interface psb_qsort interface psb_qsort
subroutine psb_dqsort(x,ix,dir,flag) module subroutine psb_dqsort(x,ix,dir,flag)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), optional, intent(in) :: dir, flag integer(psb_ipk_), optional, intent(in) :: dir, flag
@ -123,7 +123,7 @@ module psb_d_sort_mod
end interface psb_qsort end interface psb_qsort
interface psb_isort interface psb_isort
subroutine psb_disort(x,ix,dir,flag) module subroutine psb_disort(x,ix,dir,flag)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), optional, intent(in) :: dir, flag integer(psb_ipk_), optional, intent(in) :: dir, flag
@ -133,7 +133,7 @@ module psb_d_sort_mod
interface psb_hsort interface psb_hsort
subroutine psb_dhsort(x,ix,dir,flag) module subroutine psb_dhsort(x,ix,dir,flag)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), optional, intent(in) :: dir, flag integer(psb_ipk_), optional, intent(in) :: dir, flag
@ -142,35 +142,8 @@ module psb_d_sort_mod
end interface psb_hsort end interface psb_hsort
!!$ interface !psb_howmany_heap
!!$ module procedure psb_d_howmany, psb_d_idx_howmany
!!$ end interface
!!$
!!$
!!$ interface !psb_init_heap
!!$ module procedure psb_d_init_heap, psb_d_idx_init_heap
!!$ end interface
!!$
!!$
!!$ interface !psb_dump_heap
!!$ module procedure psb_d_dump_heap, psb_dump_d_idx_heap
!!$ end interface
!!$
!!$
!!$ interface !psb_insert_heap
!!$ module procedure psb_d_insert_heap, psb_d_idx_insert_heap
!!$ end interface
!!$
!!$ interface !psb_heap_get_first
!!$ module procedure psb_d_heap_get_first, psb_d_idx_heap_get_first
!!$ end interface
!!$
!!$ interface !psb_free_heap
!!$ module procedure psb_free_d_heap, psb_free_d_idx_heap
!!$ end interface
interface interface
subroutine psi_d_insert_heap(key,last,heap,dir,info) module subroutine psi_d_insert_heap(key,last,heap,dir,info)
import import
implicit none implicit none
@ -190,7 +163,7 @@ module psb_d_sort_mod
end interface end interface
interface interface
subroutine psi_d_idx_insert_heap(key,index,last,heap,idxs,dir,info) module subroutine psi_d_idx_insert_heap(key,index,last,heap,idxs,dir,info)
import import
implicit none implicit none
@ -213,7 +186,7 @@ module psb_d_sort_mod
interface interface
subroutine psi_d_heap_get_first(key,last,heap,dir,info) module subroutine psi_d_heap_get_first(key,last,heap,dir,info)
import import
implicit none implicit none
real(psb_dpk_), intent(inout) :: key real(psb_dpk_), intent(inout) :: key
@ -225,7 +198,7 @@ module psb_d_sort_mod
end interface end interface
interface interface
subroutine psi_d_idx_heap_get_first(key,index,last,heap,idxs,dir,info) module subroutine psi_d_idx_heap_get_first(key,index,last,heap,idxs,dir,info)
import import
real(psb_dpk_), intent(inout) :: key real(psb_dpk_), intent(inout) :: key
integer(psb_ipk_), intent(out) :: index integer(psb_ipk_), intent(out) :: index
@ -238,46 +211,46 @@ module psb_d_sort_mod
end interface end interface
interface interface
subroutine psi_disrx_up(n,x,ix) module subroutine psi_disrx_up(n,x,ix)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(inout) :: ix(:) integer(psb_ipk_), intent(inout) :: ix(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_disrx_up end subroutine psi_disrx_up
subroutine psi_disrx_dw(n,x,ix) module subroutine psi_disrx_dw(n,x,ix)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(inout) :: ix(:) integer(psb_ipk_), intent(inout) :: ix(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_disrx_dw end subroutine psi_disrx_dw
subroutine psi_disr_up(n,x) module subroutine psi_disr_up(n,x)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_disr_up end subroutine psi_disr_up
subroutine psi_disr_dw(n,x) module subroutine psi_disr_dw(n,x)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_disr_dw end subroutine psi_disr_dw
subroutine psi_daisrx_up(n,x,ix) module subroutine psi_daisrx_up(n,x,ix)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(inout) :: ix(:) integer(psb_ipk_), intent(inout) :: ix(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_daisrx_up end subroutine psi_daisrx_up
subroutine psi_daisrx_dw(n,x,ix) module subroutine psi_daisrx_dw(n,x,ix)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(inout) :: ix(:) integer(psb_ipk_), intent(inout) :: ix(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_daisrx_dw end subroutine psi_daisrx_dw
subroutine psi_daisr_up(n,x) module subroutine psi_daisr_up(n,x)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_daisr_up end subroutine psi_daisr_up
subroutine psi_daisr_dw(n,x) module subroutine psi_daisr_dw(n,x)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
@ -285,46 +258,46 @@ module psb_d_sort_mod
end interface end interface
interface interface
subroutine psi_dqsrx_up(n,x,ix) module subroutine psi_dqsrx_up(n,x,ix)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(inout) :: ix(:) integer(psb_ipk_), intent(inout) :: ix(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_dqsrx_up end subroutine psi_dqsrx_up
subroutine psi_dqsrx_dw(n,x,ix) module subroutine psi_dqsrx_dw(n,x,ix)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(inout) :: ix(:) integer(psb_ipk_), intent(inout) :: ix(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_dqsrx_dw end subroutine psi_dqsrx_dw
subroutine psi_dqsr_up(n,x) module subroutine psi_dqsr_up(n,x)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_dqsr_up end subroutine psi_dqsr_up
subroutine psi_dqsr_dw(n,x) module subroutine psi_dqsr_dw(n,x)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_dqsr_dw end subroutine psi_dqsr_dw
subroutine psi_daqsrx_up(n,x,ix) module subroutine psi_daqsrx_up(n,x,ix)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(inout) :: ix(:) integer(psb_ipk_), intent(inout) :: ix(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_daqsrx_up end subroutine psi_daqsrx_up
subroutine psi_daqsrx_dw(n,x,ix) module subroutine psi_daqsrx_dw(n,x,ix)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(inout) :: ix(:) integer(psb_ipk_), intent(inout) :: ix(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_daqsrx_dw end subroutine psi_daqsrx_dw
subroutine psi_daqsr_up(n,x) module subroutine psi_daqsr_up(n,x)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n
end subroutine psi_daqsr_up end subroutine psi_daqsr_up
subroutine psi_daqsr_dw(n,x) module subroutine psi_daqsr_dw(n,x)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(in) :: n integer(psb_ipk_), intent(in) :: n

@ -1,6 +1,8 @@
submodule (psb_error_mod) psb_error_impl_mod
contains
! checks wether an error has occurred on one of the porecesses in the execution pool ! checks wether an error has occurred on one of the porecesses in the execution pool
subroutine psb_errcomm(ictxt, err) subroutine psb_errcomm(ictxt, err)
use psb_error_mod, psb_protect_name => psb_errcomm
use psb_penv_mod use psb_penv_mod
integer(psb_mpik_), intent(in) :: ictxt integer(psb_mpik_), intent(in) :: ictxt
integer(psb_ipk_), intent(inout):: err integer(psb_ipk_), intent(inout):: err
@ -10,7 +12,6 @@ subroutine psb_errcomm(ictxt, err)
end subroutine psb_errcomm end subroutine psb_errcomm
subroutine psb_ser_error_handler(err_act) subroutine psb_ser_error_handler(err_act)
use psb_error_mod, psb_protect_name => psb_ser_error_handler
use psb_penv_mod use psb_penv_mod
implicit none implicit none
integer(psb_ipk_), intent(inout) :: err_act integer(psb_ipk_), intent(inout) :: err_act
@ -25,7 +26,6 @@ subroutine psb_ser_error_handler(err_act)
end subroutine psb_ser_error_handler end subroutine psb_ser_error_handler
subroutine psb_par_error_handler(ictxt,err_act) subroutine psb_par_error_handler(ictxt,err_act)
use psb_error_mod, psb_protect_name => psb_par_error_handler
use psb_penv_mod use psb_penv_mod
implicit none implicit none
integer(psb_mpik_), intent(in) :: ictxt integer(psb_mpik_), intent(in) :: ictxt
@ -43,7 +43,6 @@ subroutine psb_par_error_handler(ictxt,err_act)
end subroutine psb_par_error_handler end subroutine psb_par_error_handler
subroutine psb_par_error_print_stack(ictxt) subroutine psb_par_error_print_stack(ictxt)
use psb_error_mod, psb_protect_name => psb_par_error_print_stack
use psb_penv_mod use psb_penv_mod
integer(psb_mpik_), intent(in) :: ictxt integer(psb_mpik_), intent(in) :: ictxt
@ -52,7 +51,6 @@ subroutine psb_par_error_print_stack(ictxt)
end subroutine psb_par_error_print_stack end subroutine psb_par_error_print_stack
subroutine psb_ser_error_print_stack() subroutine psb_ser_error_print_stack()
use psb_error_mod, psb_protect_name => psb_ser_error_print_stack
call psb_error() call psb_error()
end subroutine psb_ser_error_print_stack end subroutine psb_ser_error_print_stack
@ -150,3 +148,4 @@ subroutine psb_perror(ictxt,abrt)
end subroutine psb_perror end subroutine psb_perror
end submodule psb_error_impl_mod

@ -67,11 +67,11 @@ module psb_error_mod
interface psb_error_handler interface psb_error_handler
subroutine psb_ser_error_handler(err_act) module subroutine psb_ser_error_handler(err_act)
import :: psb_ipk_ import :: psb_ipk_
integer(psb_ipk_), intent(inout) :: err_act integer(psb_ipk_), intent(inout) :: err_act
end subroutine psb_ser_error_handler end subroutine psb_ser_error_handler
subroutine psb_par_error_handler(ictxt,err_act) module subroutine psb_par_error_handler(ictxt,err_act)
import :: psb_ipk_,psb_mpik_ import :: psb_ipk_,psb_mpik_
integer(psb_mpik_), intent(in) :: ictxt integer(psb_mpik_), intent(in) :: ictxt
integer(psb_ipk_), intent(in) :: err_act integer(psb_ipk_), intent(in) :: err_act
@ -79,9 +79,9 @@ module psb_error_mod
end interface end interface
interface psb_error interface psb_error
subroutine psb_serror() module subroutine psb_serror()
end subroutine psb_serror end subroutine psb_serror
subroutine psb_perror(ictxt,abrt) module subroutine psb_perror(ictxt,abrt)
import :: psb_mpik_ import :: psb_mpik_
integer(psb_mpik_), intent(in) :: ictxt integer(psb_mpik_), intent(in) :: ictxt
logical, intent(in), optional :: abrt logical, intent(in), optional :: abrt
@ -90,16 +90,16 @@ module psb_error_mod
interface psb_error_print_stack interface psb_error_print_stack
subroutine psb_par_error_print_stack(ictxt) module subroutine psb_par_error_print_stack(ictxt)
import :: psb_ipk_,psb_mpik_ import :: psb_ipk_,psb_mpik_
integer(psb_mpik_), intent(in) :: ictxt integer(psb_mpik_), intent(in) :: ictxt
end subroutine psb_par_error_print_stack end subroutine psb_par_error_print_stack
subroutine psb_ser_error_print_stack() module subroutine psb_ser_error_print_stack()
end subroutine psb_ser_error_print_stack end subroutine psb_ser_error_print_stack
end interface end interface
interface psb_errcomm interface psb_errcomm
subroutine psb_errcomm(ictxt, err) module subroutine psb_errcomm(ictxt, err)
import :: psb_mpik_, psb_ipk_ import :: psb_mpik_, psb_ipk_
integer(psb_mpik_), intent(in) :: ictxt integer(psb_mpik_), intent(in) :: ictxt
integer(psb_ipk_), intent(inout):: err integer(psb_ipk_), intent(inout):: err

@ -35,7 +35,7 @@ module psi_d_mod
interface psi_swapdata interface psi_swapdata
subroutine psi_dswapdatam(flag,n,beta,y,desc_a,work,info,data) module subroutine psi_dswapdatam(flag,n,beta,y,desc_a,work,info,data)
import import
integer(psb_ipk_), intent(in) :: flag, n integer(psb_ipk_), intent(in) :: flag, n
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
@ -44,7 +44,7 @@ module psi_d_mod
type(psb_desc_type), target :: desc_a type(psb_desc_type), target :: desc_a
integer(psb_ipk_), optional :: data integer(psb_ipk_), optional :: data
end subroutine psi_dswapdatam end subroutine psi_dswapdatam
subroutine psi_dswapdatav(flag,beta,y,desc_a,work,info,data) module subroutine psi_dswapdatav(flag,beta,y,desc_a,work,info,data)
import import
integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(in) :: flag
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
@ -53,7 +53,7 @@ module psi_d_mod
type(psb_desc_type), target :: desc_a type(psb_desc_type), target :: desc_a
integer(psb_ipk_), optional :: data integer(psb_ipk_), optional :: data
end subroutine psi_dswapdatav end subroutine psi_dswapdatav
subroutine psi_dswapdata_vect(flag,beta,y,desc_a,work,info,data) module subroutine psi_dswapdata_vect(flag,beta,y,desc_a,work,info,data)
import import
integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(in) :: flag
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
@ -63,7 +63,7 @@ module psi_d_mod
type(psb_desc_type), target :: desc_a type(psb_desc_type), target :: desc_a
integer(psb_ipk_), optional :: data integer(psb_ipk_), optional :: data
end subroutine psi_dswapdata_vect end subroutine psi_dswapdata_vect
subroutine psi_dswapidxm(ictxt,icomm,flag,n,beta,y,idx,& module subroutine psi_dswapidxm(ictxt,icomm,flag,n,beta,y,idx,&
& totxch,totsnd,totrcv,work,info) & totxch,totsnd,totrcv,work,info)
import import
integer(psb_ipk_), intent(in) :: ictxt,icomm,flag, n integer(psb_ipk_), intent(in) :: ictxt,icomm,flag, n
@ -72,7 +72,7 @@ module psi_d_mod
real(psb_dpk_),target :: work(:) real(psb_dpk_),target :: work(:)
integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv
end subroutine psi_dswapidxm end subroutine psi_dswapidxm
subroutine psi_dswapidxv(ictxt,icomm,flag,beta,y,idx,& module subroutine psi_dswapidxv(ictxt,icomm,flag,beta,y,idx,&
& totxch,totsnd,totrcv,work,info) & totxch,totsnd,totrcv,work,info)
import import
integer(psb_ipk_), intent(in) :: ictxt,icomm,flag integer(psb_ipk_), intent(in) :: ictxt,icomm,flag
@ -81,7 +81,7 @@ module psi_d_mod
real(psb_dpk_),target :: work(:) real(psb_dpk_),target :: work(:)
integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv
end subroutine psi_dswapidxv end subroutine psi_dswapidxv
subroutine psi_dswap_vidx_vect(iictxt,iicomm,flag,beta,y,idx,& module subroutine psi_dswap_vidx_vect(iictxt,iicomm,flag,beta,y,idx,&
& totxch,totsnd,totrcv,work,info) & totxch,totsnd,totrcv,work,info)
import import
integer(psb_ipk_), intent(in) :: iictxt,iicomm,flag integer(psb_ipk_), intent(in) :: iictxt,iicomm,flag
@ -96,7 +96,7 @@ module psi_d_mod
interface psi_swaptran interface psi_swaptran
subroutine psi_dswaptranm(flag,n,beta,y,desc_a,work,info,data) module subroutine psi_dswaptranm(flag,n,beta,y,desc_a,work,info,data)
import import
integer(psb_ipk_), intent(in) :: flag, n integer(psb_ipk_), intent(in) :: flag, n
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
@ -105,7 +105,7 @@ module psi_d_mod
type(psb_desc_type), target :: desc_a type(psb_desc_type), target :: desc_a
integer(psb_ipk_), optional :: data integer(psb_ipk_), optional :: data
end subroutine psi_dswaptranm end subroutine psi_dswaptranm
subroutine psi_dswaptranv(flag,beta,y,desc_a,work,info,data) module subroutine psi_dswaptranv(flag,beta,y,desc_a,work,info,data)
import import
integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(in) :: flag
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
@ -114,7 +114,7 @@ module psi_d_mod
type(psb_desc_type), target :: desc_a type(psb_desc_type), target :: desc_a
integer(psb_ipk_), optional :: data integer(psb_ipk_), optional :: data
end subroutine psi_dswaptranv end subroutine psi_dswaptranv
subroutine psi_dswaptran_vect(flag,beta,y,desc_a,work,info,data) module subroutine psi_dswaptran_vect(flag,beta,y,desc_a,work,info,data)
import import
integer(psb_ipk_), intent(in) :: flag integer(psb_ipk_), intent(in) :: flag
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
@ -124,7 +124,7 @@ module psi_d_mod
type(psb_desc_type), target :: desc_a type(psb_desc_type), target :: desc_a
integer(psb_ipk_), optional :: data integer(psb_ipk_), optional :: data
end subroutine psi_dswaptran_vect end subroutine psi_dswaptran_vect
subroutine psi_dtranidxm(ictxt,icomm,flag,n,beta,y,idx,& module subroutine psi_dtranidxm(ictxt,icomm,flag,n,beta,y,idx,&
& totxch,totsnd,totrcv,work,info) & totxch,totsnd,totrcv,work,info)
import import
integer(psb_ipk_), intent(in) :: ictxt,icomm,flag, n integer(psb_ipk_), intent(in) :: ictxt,icomm,flag, n
@ -133,7 +133,7 @@ module psi_d_mod
real(psb_dpk_),target :: work(:) real(psb_dpk_),target :: work(:)
integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv
end subroutine psi_dtranidxm end subroutine psi_dtranidxm
subroutine psi_dtranidxv(ictxt,icomm,flag,beta,y,idx,& module subroutine psi_dtranidxv(ictxt,icomm,flag,beta,y,idx,&
& totxch,totsnd,totrcv,work,info) & totxch,totsnd,totrcv,work,info)
import import
integer(psb_ipk_), intent(in) :: ictxt,icomm,flag integer(psb_ipk_), intent(in) :: ictxt,icomm,flag
@ -142,7 +142,7 @@ module psi_d_mod
real(psb_dpk_),target :: work(:) real(psb_dpk_),target :: work(:)
integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv integer(psb_ipk_), intent(in) :: idx(:),totxch,totsnd,totrcv
end subroutine psi_dtranidxv end subroutine psi_dtranidxv
subroutine psi_dtran_vidx_vect(iictxt,iicomm,flag,beta,y,idx,& module subroutine psi_dtran_vidx_vect(iictxt,iicomm,flag,beta,y,idx,&
& totxch,totsnd,totrcv,work,info) & totxch,totsnd,totrcv,work,info)
import import
integer(psb_ipk_), intent(in) :: iictxt,iicomm,flag integer(psb_ipk_), intent(in) :: iictxt,iicomm,flag
@ -156,21 +156,21 @@ module psi_d_mod
end interface end interface
interface psi_ovrl_upd interface psi_ovrl_upd
subroutine psi_dovrl_updr1(x,desc_a,update,info) module subroutine psi_dovrl_updr1(x,desc_a,update,info)
import import
real(psb_dpk_), intent(inout), target :: x(:) real(psb_dpk_), intent(inout), target :: x(:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer(psb_ipk_), intent(in) :: update integer(psb_ipk_), intent(in) :: update
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_dovrl_updr1 end subroutine psi_dovrl_updr1
subroutine psi_dovrl_updr2(x,desc_a,update,info) module subroutine psi_dovrl_updr2(x,desc_a,update,info)
import import
real(psb_dpk_), intent(inout), target :: x(:,:) real(psb_dpk_), intent(inout), target :: x(:,:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer(psb_ipk_), intent(in) :: update integer(psb_ipk_), intent(in) :: update
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_dovrl_updr2 end subroutine psi_dovrl_updr2
subroutine psi_dovrl_upd_vect(x,desc_a,update,info) module subroutine psi_dovrl_upd_vect(x,desc_a,update,info)
import import
class(psb_d_base_vect_type) :: x class(psb_d_base_vect_type) :: x
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
@ -180,21 +180,21 @@ module psi_d_mod
end interface end interface
interface psi_ovrl_save interface psi_ovrl_save
subroutine psi_dovrl_saver1(x,xs,desc_a,info) module subroutine psi_dovrl_saver1(x,xs,desc_a,info)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
real(psb_dpk_), allocatable :: xs(:) real(psb_dpk_), allocatable :: xs(:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_dovrl_saver1 end subroutine psi_dovrl_saver1
subroutine psi_dovrl_saver2(x,xs,desc_a,info) module subroutine psi_dovrl_saver2(x,xs,desc_a,info)
import import
real(psb_dpk_), intent(inout) :: x(:,:) real(psb_dpk_), intent(inout) :: x(:,:)
real(psb_dpk_), allocatable :: xs(:,:) real(psb_dpk_), allocatable :: xs(:,:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_dovrl_saver2 end subroutine psi_dovrl_saver2
subroutine psi_dovrl_save_vect(x,xs,desc_a,info) module subroutine psi_dovrl_save_vect(x,xs,desc_a,info)
import import
class(psb_d_base_vect_type) :: x class(psb_d_base_vect_type) :: x
real(psb_dpk_), allocatable :: xs(:) real(psb_dpk_), allocatable :: xs(:)
@ -204,21 +204,21 @@ module psi_d_mod
end interface end interface
interface psi_ovrl_restore interface psi_ovrl_restore
subroutine psi_dovrl_restrr1(x,xs,desc_a,info) module subroutine psi_dovrl_restrr1(x,xs,desc_a,info)
import import
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
real(psb_dpk_) :: xs(:) real(psb_dpk_) :: xs(:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_dovrl_restrr1 end subroutine psi_dovrl_restrr1
subroutine psi_dovrl_restrr2(x,xs,desc_a,info) module subroutine psi_dovrl_restrr2(x,xs,desc_a,info)
import import
real(psb_dpk_), intent(inout) :: x(:,:) real(psb_dpk_), intent(inout) :: x(:,:)
real(psb_dpk_) :: xs(:,:) real(psb_dpk_) :: xs(:,:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_dovrl_restrr2 end subroutine psi_dovrl_restrr2
subroutine psi_dovrl_restr_vect(x,xs,desc_a,info) module subroutine psi_dovrl_restr_vect(x,xs,desc_a,info)
import import
class(psb_d_base_vect_type) :: x class(psb_d_base_vect_type) :: x
real(psb_dpk_) :: xs(:) real(psb_dpk_) :: xs(:)

@ -33,7 +33,7 @@ module psi_serial_mod
use psb_const_mod, only : psb_ipk_, psb_spk_, psb_dpk_ use psb_const_mod, only : psb_ipk_, psb_spk_, psb_dpk_
interface psb_gelp interface psb_gelp
! 2-D version ! 2-D version
subroutine psb_sgelp(trans,iperm,x,info) module subroutine psb_sgelp(trans,iperm,x,info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
real(psb_spk_), intent(inout) :: x(:,:) real(psb_spk_), intent(inout) :: x(:,:)
integer(psb_ipk_), intent(in) :: iperm(:) integer(psb_ipk_), intent(in) :: iperm(:)
@ -41,14 +41,14 @@ module psi_serial_mod
character, intent(in) :: trans character, intent(in) :: trans
end subroutine psb_sgelp end subroutine psb_sgelp
! 1-D version ! 1-D version
subroutine psb_sgelpv(trans,iperm,x,info) module subroutine psb_sgelpv(trans,iperm,x,info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
real(psb_spk_), intent(inout) :: x(:) real(psb_spk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(in) :: iperm(:) integer(psb_ipk_), intent(in) :: iperm(:)
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
character, intent(in) :: trans character, intent(in) :: trans
end subroutine psb_sgelpv end subroutine psb_sgelpv
subroutine psb_dgelp(trans,iperm,x,info) module subroutine psb_dgelp(trans,iperm,x,info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
real(psb_dpk_), intent(inout) :: x(:,:) real(psb_dpk_), intent(inout) :: x(:,:)
integer(psb_ipk_), intent(in) :: iperm(:) integer(psb_ipk_), intent(in) :: iperm(:)
@ -56,7 +56,7 @@ module psi_serial_mod
character, intent(in) :: trans character, intent(in) :: trans
end subroutine psb_dgelp end subroutine psb_dgelp
! 1-D version ! 1-D version
subroutine psb_dgelpv(trans,iperm,x,info) module subroutine psb_dgelpv(trans,iperm,x,info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(in) :: iperm(:) integer(psb_ipk_), intent(in) :: iperm(:)
@ -64,7 +64,7 @@ module psi_serial_mod
character, intent(in) :: trans character, intent(in) :: trans
end subroutine psb_dgelpv end subroutine psb_dgelpv
! 2-D version ! 2-D version
subroutine psb_cgelp(trans,iperm,x,info) module subroutine psb_cgelp(trans,iperm,x,info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
complex(psb_spk_), intent(inout) :: x(:,:) complex(psb_spk_), intent(inout) :: x(:,:)
integer(psb_ipk_), intent(in) :: iperm(:) integer(psb_ipk_), intent(in) :: iperm(:)
@ -72,7 +72,7 @@ module psi_serial_mod
character, intent(in) :: trans character, intent(in) :: trans
end subroutine psb_cgelp end subroutine psb_cgelp
! 1-D version ! 1-D version
subroutine psb_cgelpv(trans,iperm,x,info) module subroutine psb_cgelpv(trans,iperm,x,info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
complex(psb_spk_), intent(inout) :: x(:) complex(psb_spk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(in) :: iperm(:) integer(psb_ipk_), intent(in) :: iperm(:)
@ -80,7 +80,7 @@ module psi_serial_mod
character, intent(in) :: trans character, intent(in) :: trans
end subroutine psb_cgelpv end subroutine psb_cgelpv
! 2-D version ! 2-D version
subroutine psb_zgelp(trans,iperm,x,info) module subroutine psb_zgelp(trans,iperm,x,info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
complex(psb_dpk_), intent(inout) :: x(:,:) complex(psb_dpk_), intent(inout) :: x(:,:)
integer(psb_ipk_), intent(in) :: iperm(:) integer(psb_ipk_), intent(in) :: iperm(:)
@ -88,7 +88,7 @@ module psi_serial_mod
character, intent(in) :: trans character, intent(in) :: trans
end subroutine psb_zgelp end subroutine psb_zgelp
! 1-D version ! 1-D version
subroutine psb_zgelpv(trans,iperm,x,info) module subroutine psb_zgelpv(trans,iperm,x,info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
complex(psb_dpk_), intent(inout) :: x(:) complex(psb_dpk_), intent(inout) :: x(:)
integer(psb_ipk_), intent(in) :: iperm(:) integer(psb_ipk_), intent(in) :: iperm(:)
@ -100,77 +100,77 @@ module psi_serial_mod
interface psi_gth interface psi_gth
subroutine psi_igthv(n,idx,alpha,x,beta,y) module subroutine psi_igthv(n,idx,alpha,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
integer(psb_ipk_) :: x(:), y(:), alpha, beta integer(psb_ipk_) :: x(:), y(:), alpha, beta
end subroutine psi_igthv end subroutine psi_igthv
subroutine psi_sgthv(n,idx,alpha,x,beta,y) module subroutine psi_sgthv(n,idx,alpha,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
real(psb_spk_) :: x(:), y(:), alpha, beta real(psb_spk_) :: x(:), y(:), alpha, beta
end subroutine psi_sgthv end subroutine psi_sgthv
subroutine psi_dgthv(n,idx,alpha,x,beta,y) module subroutine psi_dgthv(n,idx,alpha,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
real(psb_dpk_) :: x(:), y(:), alpha, beta real(psb_dpk_) :: x(:), y(:), alpha, beta
end subroutine psi_dgthv end subroutine psi_dgthv
subroutine psi_cgthv(n,idx,alpha,x,beta,y) module subroutine psi_cgthv(n,idx,alpha,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
complex(psb_spk_) :: x(:), y(:),alpha,beta complex(psb_spk_) :: x(:), y(:),alpha,beta
end subroutine psi_cgthv end subroutine psi_cgthv
subroutine psi_zgthv(n,idx,alpha,x,beta,y) module subroutine psi_zgthv(n,idx,alpha,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
complex(psb_dpk_) :: x(:), y(:),alpha,beta complex(psb_dpk_) :: x(:), y(:),alpha,beta
end subroutine psi_zgthv end subroutine psi_zgthv
subroutine psi_sgthzmv(n,k,idx,x,y) module subroutine psi_sgthzmv(n,k,idx,x,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, k, idx(:) integer(psb_ipk_) :: n, k, idx(:)
real(psb_spk_) :: x(:,:), y(:) real(psb_spk_) :: x(:,:), y(:)
end subroutine psi_sgthzmv end subroutine psi_sgthzmv
subroutine psi_dgthzmv(n,k,idx,x,y) module subroutine psi_dgthzmv(n,k,idx,x,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, k, idx(:) integer(psb_ipk_) :: n, k, idx(:)
real(psb_dpk_) :: x(:,:), y(:) real(psb_dpk_) :: x(:,:), y(:)
end subroutine psi_dgthzmv end subroutine psi_dgthzmv
subroutine psi_igthzmv(n,k,idx,x,y) module subroutine psi_igthzmv(n,k,idx,x,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, k, idx(:) integer(psb_ipk_) :: n, k, idx(:)
integer(psb_ipk_) :: x(:,:), y(:) integer(psb_ipk_) :: x(:,:), y(:)
end subroutine psi_igthzmv end subroutine psi_igthzmv
subroutine psi_cgthzmv(n,k,idx,x,y) module subroutine psi_cgthzmv(n,k,idx,x,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, k, idx(:) integer(psb_ipk_) :: n, k, idx(:)
complex(psb_spk_) :: x(:,:), y(:) complex(psb_spk_) :: x(:,:), y(:)
end subroutine psi_cgthzmv end subroutine psi_cgthzmv
subroutine psi_zgthzmv(n,k,idx,x,y) module subroutine psi_zgthzmv(n,k,idx,x,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, k, idx(:) integer(psb_ipk_) :: n, k, idx(:)
complex(psb_dpk_) :: x(:,:), y(:) complex(psb_dpk_) :: x(:,:), y(:)
end subroutine psi_zgthzmv end subroutine psi_zgthzmv
subroutine psi_sgthzv(n,idx,x,y) module subroutine psi_sgthzv(n,idx,x,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
real(psb_spk_) :: x(:), y(:) real(psb_spk_) :: x(:), y(:)
end subroutine psi_sgthzv end subroutine psi_sgthzv
subroutine psi_dgthzv(n,idx,x,y) module subroutine psi_dgthzv(n,idx,x,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
real(psb_dpk_) :: x(:), y(:) real(psb_dpk_) :: x(:), y(:)
end subroutine psi_dgthzv end subroutine psi_dgthzv
subroutine psi_igthzv(n,idx,x,y) module subroutine psi_igthzv(n,idx,x,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
integer(psb_ipk_) :: x(:), y(:) integer(psb_ipk_) :: x(:), y(:)
end subroutine psi_igthzv end subroutine psi_igthzv
subroutine psi_cgthzv(n,idx,x,y) module subroutine psi_cgthzv(n,idx,x,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
complex(psb_spk_) :: x(:), y(:) complex(psb_spk_) :: x(:), y(:)
end subroutine psi_cgthzv end subroutine psi_cgthzv
subroutine psi_zgthzv(n,idx,x,y) module subroutine psi_zgthzv(n,idx,x,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
complex(psb_dpk_) :: x(:), y(:) complex(psb_dpk_) :: x(:), y(:)
@ -179,52 +179,52 @@ module psi_serial_mod
interface psi_sct interface psi_sct
subroutine psi_ssctmv(n,k,idx,x,beta,y) module subroutine psi_ssctmv(n,k,idx,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, k, idx(:) integer(psb_ipk_) :: n, k, idx(:)
real(psb_spk_) :: beta, x(:), y(:,:) real(psb_spk_) :: beta, x(:), y(:,:)
end subroutine psi_ssctmv end subroutine psi_ssctmv
subroutine psi_ssctv(n,idx,x,beta,y) module subroutine psi_ssctv(n,idx,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
real(psb_spk_) :: beta, x(:), y(:) real(psb_spk_) :: beta, x(:), y(:)
end subroutine psi_ssctv end subroutine psi_ssctv
subroutine psi_dsctmv(n,k,idx,x,beta,y) module subroutine psi_dsctmv(n,k,idx,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, k, idx(:) integer(psb_ipk_) :: n, k, idx(:)
real(psb_dpk_) :: beta, x(:), y(:,:) real(psb_dpk_) :: beta, x(:), y(:,:)
end subroutine psi_dsctmv end subroutine psi_dsctmv
subroutine psi_dsctv(n,idx,x,beta,y) module subroutine psi_dsctv(n,idx,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
real(psb_dpk_) :: beta, x(:), y(:) real(psb_dpk_) :: beta, x(:), y(:)
end subroutine psi_dsctv end subroutine psi_dsctv
subroutine psi_isctmv(n,k,idx,x,beta,y) module subroutine psi_isctmv(n,k,idx,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, k, idx(:) integer(psb_ipk_) :: n, k, idx(:)
integer(psb_ipk_) :: beta, x(:), y(:,:) integer(psb_ipk_) :: beta, x(:), y(:,:)
end subroutine psi_isctmv end subroutine psi_isctmv
subroutine psi_isctv(n,idx,x,beta,y) module subroutine psi_isctv(n,idx,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
integer(psb_ipk_) :: beta, x(:), y(:) integer(psb_ipk_) :: beta, x(:), y(:)
end subroutine psi_isctv end subroutine psi_isctv
subroutine psi_csctmv(n,k,idx,x,beta,y) module subroutine psi_csctmv(n,k,idx,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, k, idx(:) integer(psb_ipk_) :: n, k, idx(:)
complex(psb_spk_) :: beta, x(:), y(:,:) complex(psb_spk_) :: beta, x(:), y(:,:)
end subroutine psi_csctmv end subroutine psi_csctmv
subroutine psi_csctv(n,idx,x,beta,y) module subroutine psi_csctv(n,idx,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
complex(psb_spk_) :: beta, x(:), y(:) complex(psb_spk_) :: beta, x(:), y(:)
end subroutine psi_csctv end subroutine psi_csctv
subroutine psi_zsctmv(n,k,idx,x,beta,y) module subroutine psi_zsctmv(n,k,idx,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, k, idx(:) integer(psb_ipk_) :: n, k, idx(:)
complex(psb_dpk_) :: beta, x(:), y(:,:) complex(psb_dpk_) :: beta, x(:), y(:,:)
end subroutine psi_zsctmv end subroutine psi_zsctmv
subroutine psi_zsctv(n,idx,x,beta,y) module subroutine psi_zsctv(n,idx,x,beta,y)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_) :: n, idx(:) integer(psb_ipk_) :: n, idx(:)
complex(psb_dpk_) :: beta, x(:), y(:) complex(psb_dpk_) :: beta, x(:), y(:)
@ -233,7 +233,7 @@ module psi_serial_mod
interface psb_geaxpby interface psb_geaxpby
subroutine psi_iaxpbyv(m,alpha, x, beta, y, info) module subroutine psi_iaxpbyv(m,alpha, x, beta, y, info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_), intent(in) :: m integer(psb_ipk_), intent(in) :: m
integer(psb_ipk_), intent (in) :: x(:) integer(psb_ipk_), intent (in) :: x(:)
@ -241,7 +241,7 @@ module psi_serial_mod
integer(psb_ipk_), intent (in) :: alpha, beta integer(psb_ipk_), intent (in) :: alpha, beta
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_iaxpbyv end subroutine psi_iaxpbyv
subroutine psi_iaxpby(m,n,alpha, x, beta, y, info) module subroutine psi_iaxpby(m,n,alpha, x, beta, y, info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_), intent(in) :: m, n integer(psb_ipk_), intent(in) :: m, n
integer(psb_ipk_), intent (in) :: x(:,:) integer(psb_ipk_), intent (in) :: x(:,:)
@ -249,7 +249,7 @@ module psi_serial_mod
integer(psb_ipk_), intent (in) :: alpha, beta integer(psb_ipk_), intent (in) :: alpha, beta
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_iaxpby end subroutine psi_iaxpby
subroutine psi_saxpbyv(m,alpha, x, beta, y, info) module subroutine psi_saxpbyv(m,alpha, x, beta, y, info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_), intent(in) :: m integer(psb_ipk_), intent(in) :: m
real(psb_spk_), intent (in) :: x(:) real(psb_spk_), intent (in) :: x(:)
@ -257,7 +257,7 @@ module psi_serial_mod
real(psb_spk_), intent (in) :: alpha, beta real(psb_spk_), intent (in) :: alpha, beta
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_saxpbyv end subroutine psi_saxpbyv
subroutine psi_saxpby(m,n,alpha, x, beta, y, info) module subroutine psi_saxpby(m,n,alpha, x, beta, y, info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_), intent(in) :: m, n integer(psb_ipk_), intent(in) :: m, n
real(psb_spk_), intent (in) :: x(:,:) real(psb_spk_), intent (in) :: x(:,:)
@ -265,7 +265,7 @@ module psi_serial_mod
real(psb_spk_), intent (in) :: alpha, beta real(psb_spk_), intent (in) :: alpha, beta
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_saxpby end subroutine psi_saxpby
subroutine psi_daxpbyv(m,alpha, x, beta, y, info) module subroutine psi_daxpbyv(m,alpha, x, beta, y, info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_), intent(in) :: m integer(psb_ipk_), intent(in) :: m
real(psb_dpk_), intent (in) :: x(:) real(psb_dpk_), intent (in) :: x(:)
@ -273,7 +273,7 @@ module psi_serial_mod
real(psb_dpk_), intent (in) :: alpha, beta real(psb_dpk_), intent (in) :: alpha, beta
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_daxpbyv end subroutine psi_daxpbyv
subroutine psi_daxpby(m,n,alpha, x, beta, y, info) module subroutine psi_daxpby(m,n,alpha, x, beta, y, info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_), intent(in) :: m, n integer(psb_ipk_), intent(in) :: m, n
real(psb_dpk_), intent (in) :: x(:,:) real(psb_dpk_), intent (in) :: x(:,:)
@ -281,7 +281,7 @@ module psi_serial_mod
real(psb_dpk_), intent (in) :: alpha, beta real(psb_dpk_), intent (in) :: alpha, beta
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_daxpby end subroutine psi_daxpby
subroutine psi_caxpbyv(m,alpha, x, beta, y, info) module subroutine psi_caxpbyv(m,alpha, x, beta, y, info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_), intent(in) :: m integer(psb_ipk_), intent(in) :: m
complex(psb_spk_), intent (in) :: x(:) complex(psb_spk_), intent (in) :: x(:)
@ -289,7 +289,7 @@ module psi_serial_mod
complex(psb_spk_), intent (in) :: alpha, beta complex(psb_spk_), intent (in) :: alpha, beta
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_caxpbyv end subroutine psi_caxpbyv
subroutine psi_caxpby(m,n,alpha, x, beta, y, info) module subroutine psi_caxpby(m,n,alpha, x, beta, y, info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
implicit none implicit none
integer(psb_ipk_), intent(in) :: m, n integer(psb_ipk_), intent(in) :: m, n
@ -298,7 +298,7 @@ module psi_serial_mod
complex(psb_spk_), intent (in) :: alpha, beta complex(psb_spk_), intent (in) :: alpha, beta
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_caxpby end subroutine psi_caxpby
subroutine psi_zaxpbyv(m,alpha, x, beta, y, info) module subroutine psi_zaxpbyv(m,alpha, x, beta, y, info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_), intent(in) :: m integer(psb_ipk_), intent(in) :: m
complex(psb_dpk_), intent (in) :: x(:) complex(psb_dpk_), intent (in) :: x(:)
@ -306,7 +306,7 @@ module psi_serial_mod
complex(psb_dpk_), intent (in) :: alpha, beta complex(psb_dpk_), intent (in) :: alpha, beta
integer(psb_ipk_), intent(out) :: info integer(psb_ipk_), intent(out) :: info
end subroutine psi_zaxpbyv end subroutine psi_zaxpbyv
subroutine psi_zaxpby(m,n,alpha, x, beta, y, info) module subroutine psi_zaxpby(m,n,alpha, x, beta, y, info)
import :: psb_ipk_, psb_spk_, psb_dpk_ import :: psb_ipk_, psb_spk_, psb_dpk_
integer(psb_ipk_), intent(in) :: m, n integer(psb_ipk_), intent(in) :: m, n
complex(psb_dpk_), intent (in) :: x(:,:) complex(psb_dpk_), intent (in) :: x(:,:)

@ -1,6 +1,8 @@
submodule (psb_base_mat_mod) psb_base_mat_impl_mod
contains
function psb_base_get_nz_row(idx,a) result(res) function psb_base_get_nz_row(idx,a) result(res)
use psb_error_mod use psb_error_mod
use psb_base_mat_mod, psb_protect_name => psb_base_get_nz_row
implicit none implicit none
integer(psb_ipk_), intent(in) :: idx integer(psb_ipk_), intent(in) :: idx
class(psb_base_sparse_mat), intent(in) :: a class(psb_base_sparse_mat), intent(in) :: a
@ -21,7 +23,6 @@ function psb_base_get_nz_row(idx,a) result(res)
end function psb_base_get_nz_row end function psb_base_get_nz_row
function psb_base_get_nzeros(a) result(res) function psb_base_get_nzeros(a) result(res)
use psb_base_mat_mod, psb_protect_name => psb_base_get_nzeros
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_base_sparse_mat), intent(in) :: a class(psb_base_sparse_mat), intent(in) :: a
@ -42,7 +43,6 @@ function psb_base_get_nzeros(a) result(res)
end function psb_base_get_nzeros end function psb_base_get_nzeros
function psb_base_get_size(a) result(res) function psb_base_get_size(a) result(res)
use psb_base_mat_mod, psb_protect_name => psb_base_get_size
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_base_sparse_mat), intent(in) :: a class(psb_base_sparse_mat), intent(in) :: a
@ -63,7 +63,6 @@ function psb_base_get_size(a) result(res)
end function psb_base_get_size end function psb_base_get_size
subroutine psb_base_reinit(a,clear) subroutine psb_base_reinit(a,clear)
use psb_base_mat_mod, psb_protect_name => psb_base_reinit
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -85,7 +84,6 @@ subroutine psb_base_reinit(a,clear)
end subroutine psb_base_reinit end subroutine psb_base_reinit
subroutine psb_base_sparse_print(iout,a,iv,head,ivr,ivc) subroutine psb_base_sparse_print(iout,a,iv,head,ivr,ivc)
use psb_base_mat_mod, psb_protect_name => psb_base_sparse_print
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -114,7 +112,6 @@ subroutine psb_base_csgetptn(imin,imax,a,nz,ia,ja,info,&
! Output is always in COO format ! Output is always in COO format
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_base_mat_mod, psb_protect_name => psb_base_csgetptn
implicit none implicit none
class(psb_base_sparse_mat), intent(in) :: a class(psb_base_sparse_mat), intent(in) :: a
@ -141,7 +138,6 @@ subroutine psb_base_csgetptn(imin,imax,a,nz,ia,ja,info,&
end subroutine psb_base_csgetptn end subroutine psb_base_csgetptn
subroutine psb_base_get_neigh(a,idx,neigh,n,info,lev) subroutine psb_base_get_neigh(a,idx,neigh,n,info,lev)
use psb_base_mat_mod, psb_protect_name => psb_base_get_neigh
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
use psb_sort_mod use psb_sort_mod
@ -217,7 +213,6 @@ subroutine psb_base_get_neigh(a,idx,neigh,n,info,lev)
end subroutine psb_base_get_neigh end subroutine psb_base_get_neigh
subroutine psb_base_allocate_mnnz(m,n,a,nz) subroutine psb_base_allocate_mnnz(m,n,a,nz)
use psb_base_mat_mod, psb_protect_name => psb_base_allocate_mnnz
use psb_error_mod use psb_error_mod
implicit none implicit none
integer(psb_ipk_), intent(in) :: m,n integer(psb_ipk_), intent(in) :: m,n
@ -237,7 +232,6 @@ subroutine psb_base_allocate_mnnz(m,n,a,nz)
end subroutine psb_base_allocate_mnnz end subroutine psb_base_allocate_mnnz
subroutine psb_base_reallocate_nz(nz,a) subroutine psb_base_reallocate_nz(nz,a)
use psb_base_mat_mod, psb_protect_name => psb_base_reallocate_nz
use psb_error_mod use psb_error_mod
implicit none implicit none
integer(psb_ipk_), intent(in) :: nz integer(psb_ipk_), intent(in) :: nz
@ -256,7 +250,6 @@ subroutine psb_base_reallocate_nz(nz,a)
end subroutine psb_base_reallocate_nz end subroutine psb_base_reallocate_nz
subroutine psb_base_free(a) subroutine psb_base_free(a)
use psb_base_mat_mod, psb_protect_name => psb_base_free
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_base_sparse_mat), intent(inout) :: a class(psb_base_sparse_mat), intent(inout) :: a
@ -274,7 +267,6 @@ subroutine psb_base_free(a)
end subroutine psb_base_free end subroutine psb_base_free
subroutine psb_base_trim(a) subroutine psb_base_trim(a)
use psb_base_mat_mod, psb_protect_name => psb_base_trim
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_base_sparse_mat), intent(inout) :: a class(psb_base_sparse_mat), intent(inout) :: a
@ -293,3 +285,4 @@ subroutine psb_base_trim(a)
end subroutine psb_base_trim end subroutine psb_base_trim
end submodule psb_base_mat_impl_mod

@ -25,10 +25,15 @@
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS !!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN !!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) !!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
!!$ POSSIBILITY OF SUCH DAMAGE. !!$ POSSIBILITY OF SUCH DAMAGE.
!!$ !!$
!!$ !!$
submodule (psb_d_base_mat_mod) psb_d_base_mat_impl_mod
contains
! == ================================== ! == ==================================
! !
! !
@ -42,7 +47,6 @@
! == ================================== ! == ==================================
subroutine psb_d_base_cp_to_coo(a,b,info) subroutine psb_d_base_cp_to_coo(a,b,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_cp_to_coo
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
implicit none implicit none
@ -67,7 +71,6 @@ subroutine psb_d_base_cp_to_coo(a,b,info)
end subroutine psb_d_base_cp_to_coo end subroutine psb_d_base_cp_to_coo
subroutine psb_d_base_cp_from_coo(a,b,info) subroutine psb_d_base_cp_from_coo(a,b,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_cp_from_coo
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
implicit none implicit none
@ -93,7 +96,6 @@ end subroutine psb_d_base_cp_from_coo
subroutine psb_d_base_cp_to_fmt(a,b,info) subroutine psb_d_base_cp_to_fmt(a,b,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_cp_to_fmt
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
implicit none implicit none
@ -136,7 +138,6 @@ subroutine psb_d_base_cp_to_fmt(a,b,info)
end subroutine psb_d_base_cp_to_fmt end subroutine psb_d_base_cp_to_fmt
subroutine psb_d_base_cp_from_fmt(a,b,info) subroutine psb_d_base_cp_from_fmt(a,b,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_cp_from_fmt
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
implicit none implicit none
@ -182,7 +183,6 @@ end subroutine psb_d_base_cp_from_fmt
subroutine psb_d_base_mv_to_coo(a,b,info) subroutine psb_d_base_mv_to_coo(a,b,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_mv_to_coo
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
implicit none implicit none
@ -220,7 +220,6 @@ subroutine psb_d_base_mv_to_coo(a,b,info)
end subroutine psb_d_base_mv_to_coo end subroutine psb_d_base_mv_to_coo
subroutine psb_d_base_mv_from_coo(a,b,info) subroutine psb_d_base_mv_from_coo(a,b,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_mv_from_coo
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
implicit none implicit none
@ -258,7 +257,6 @@ end subroutine psb_d_base_mv_from_coo
subroutine psb_d_base_mv_to_fmt(a,b,info) subroutine psb_d_base_mv_to_fmt(a,b,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_mv_to_fmt
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
implicit none implicit none
@ -289,7 +287,6 @@ subroutine psb_d_base_mv_to_fmt(a,b,info)
end subroutine psb_d_base_mv_to_fmt end subroutine psb_d_base_mv_to_fmt
subroutine psb_d_base_mv_from_fmt(a,b,info) subroutine psb_d_base_mv_from_fmt(a,b,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_mv_from_fmt
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
implicit none implicit none
@ -320,7 +317,6 @@ end subroutine psb_d_base_mv_from_fmt
subroutine psb_d_base_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) subroutine psb_d_base_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_csput_a
implicit none implicit none
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: val(:) real(psb_dpk_), intent(in) :: val(:)
@ -346,7 +342,6 @@ end subroutine psb_d_base_csput_a
subroutine psb_d_base_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) subroutine psb_d_base_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_csput_v
use psb_d_base_vect_mod use psb_d_base_vect_mod
implicit none implicit none
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
@ -394,7 +389,6 @@ subroutine psb_d_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
! Output is always in COO format ! Output is always in COO format
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_csgetrow
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -435,7 +429,6 @@ subroutine psb_d_base_csgetblk(imin,imax,a,b,info,&
! Output is always in COO format ! Output is always in COO format
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_csgetblk
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -529,7 +522,6 @@ subroutine psb_d_base_csclip(a,b,info,&
! Output is always in COO format ! Output is always in COO format
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_csclip
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -619,7 +611,6 @@ subroutine psb_d_base_tril(a,b,info,&
! Output is always in COO format ! Output is always in COO format
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_tril
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -724,7 +715,6 @@ subroutine psb_d_base_triu(a,b,info,&
! Output is always in COO format ! Output is always in COO format
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_triu
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -827,7 +817,6 @@ end subroutine psb_d_base_triu
subroutine psb_d_base_clone(a,b,info) subroutine psb_d_base_clone(a,b,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_clone
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -857,7 +846,6 @@ subroutine psb_d_base_clone(a,b,info)
end subroutine psb_d_base_clone end subroutine psb_d_base_clone
subroutine psb_d_base_make_nonunit(a) subroutine psb_d_base_make_nonunit(a)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_make_nonunit
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
@ -888,7 +876,6 @@ subroutine psb_d_base_make_nonunit(a)
end subroutine psb_d_base_make_nonunit end subroutine psb_d_base_make_nonunit
subroutine psb_d_base_mold(a,b,info) subroutine psb_d_base_mold(a,b,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_mold
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -911,7 +898,6 @@ subroutine psb_d_base_mold(a,b,info)
end subroutine psb_d_base_mold end subroutine psb_d_base_mold
subroutine psb_d_base_transp_2mat(a,b) subroutine psb_d_base_transp_2mat(a,b)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_transp_2mat
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -950,7 +936,6 @@ subroutine psb_d_base_transp_2mat(a,b)
end subroutine psb_d_base_transp_2mat end subroutine psb_d_base_transp_2mat
subroutine psb_d_base_transc_2mat(a,b) subroutine psb_d_base_transc_2mat(a,b)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_transc_2mat
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -987,7 +972,6 @@ subroutine psb_d_base_transc_2mat(a,b)
end subroutine psb_d_base_transc_2mat end subroutine psb_d_base_transc_2mat
subroutine psb_d_base_transp_1mat(a) subroutine psb_d_base_transp_1mat(a)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_transp_1mat
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -1020,7 +1004,6 @@ subroutine psb_d_base_transp_1mat(a)
end subroutine psb_d_base_transp_1mat end subroutine psb_d_base_transp_1mat
subroutine psb_d_base_transc_1mat(a) subroutine psb_d_base_transc_1mat(a)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_transc_1mat
implicit none implicit none
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
@ -1066,7 +1049,6 @@ end subroutine psb_d_base_transc_1mat
! == ================================== ! == ==================================
subroutine psb_d_base_csmm(alpha,a,x,beta,y,info,trans) subroutine psb_d_base_csmm(alpha,a,x,beta,y,info,trans)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_csmm
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -1094,7 +1076,6 @@ end subroutine psb_d_base_csmm
subroutine psb_d_base_csmv(alpha,a,x,beta,y,info,trans) subroutine psb_d_base_csmv(alpha,a,x,beta,y,info,trans)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_csmv
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -1122,7 +1103,6 @@ end subroutine psb_d_base_csmv
subroutine psb_d_base_inner_cssm(alpha,a,x,beta,y,info,trans) subroutine psb_d_base_inner_cssm(alpha,a,x,beta,y,info,trans)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_inner_cssm
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -1149,7 +1129,6 @@ end subroutine psb_d_base_inner_cssm
subroutine psb_d_base_inner_cssv(alpha,a,x,beta,y,info,trans) subroutine psb_d_base_inner_cssv(alpha,a,x,beta,y,info,trans)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_inner_cssv
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -1176,7 +1155,6 @@ end subroutine psb_d_base_inner_cssv
subroutine psb_d_base_cssm(alpha,a,x,beta,y,info,trans,scale,d) subroutine psb_d_base_cssm(alpha,a,x,beta,y,info,trans,scale,d)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_cssm
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
implicit none implicit none
@ -1312,7 +1290,6 @@ end subroutine psb_d_base_cssm
subroutine psb_d_base_cssv(alpha,a,x,beta,y,info,trans,scale,d) subroutine psb_d_base_cssv(alpha,a,x,beta,y,info,trans,scale,d)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_cssv
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
implicit none implicit none
@ -1467,7 +1444,6 @@ end subroutine psb_d_base_cssv
subroutine psb_d_base_scals(d,a,info) subroutine psb_d_base_scals(d,a,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_scals
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
@ -1493,7 +1469,6 @@ end subroutine psb_d_base_scals
subroutine psb_d_base_scal(d,a,info,side) subroutine psb_d_base_scal(d,a,info,side)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_scal
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_d_base_sparse_mat), intent(inout) :: a class(psb_d_base_sparse_mat), intent(inout) :: a
@ -1518,11 +1493,9 @@ subroutine psb_d_base_scal(d,a,info,side)
end subroutine psb_d_base_scal end subroutine psb_d_base_scal
function psb_d_base_maxval(a) result(res) function psb_d_base_maxval(a) result(res)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_maxval
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -1550,7 +1523,6 @@ function psb_d_base_csnmi(a) result(res)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_realloc_mod use psb_realloc_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_csnmi
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -1589,7 +1561,6 @@ function psb_d_base_csnm1(a) result(res)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_realloc_mod use psb_realloc_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_csnm1
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -1627,7 +1598,6 @@ end function psb_d_base_csnm1
subroutine psb_d_base_rowsum(d,a) subroutine psb_d_base_rowsum(d,a)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_rowsum
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1650,7 +1620,6 @@ end subroutine psb_d_base_rowsum
subroutine psb_d_base_arwsum(d,a) subroutine psb_d_base_arwsum(d,a)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_arwsum
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1673,7 +1642,6 @@ end subroutine psb_d_base_arwsum
subroutine psb_d_base_colsum(d,a) subroutine psb_d_base_colsum(d,a)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_colsum
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1696,7 +1664,6 @@ end subroutine psb_d_base_colsum
subroutine psb_d_base_aclsum(d,a) subroutine psb_d_base_aclsum(d,a)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_aclsum
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1720,7 +1687,6 @@ end subroutine psb_d_base_aclsum
subroutine psb_d_base_get_diag(a,d,info) subroutine psb_d_base_get_diag(a,d,info)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_get_diag
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
@ -1762,7 +1728,6 @@ end subroutine psb_d_base_get_diag
subroutine psb_d_base_vect_mv(alpha,a,x,beta,y,info,trans) subroutine psb_d_base_vect_mv(alpha,a,x,beta,y,info,trans)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_vect_mv
implicit none implicit none
class(psb_d_base_sparse_mat), intent(in) :: a class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta real(psb_dpk_), intent(in) :: alpha, beta
@ -1780,7 +1745,6 @@ subroutine psb_d_base_vect_mv(alpha,a,x,beta,y,info,trans)
end subroutine psb_d_base_vect_mv end subroutine psb_d_base_vect_mv
subroutine psb_d_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d) subroutine psb_d_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_vect_cssv
use psb_d_base_vect_mod use psb_d_base_vect_mod
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
@ -1925,7 +1889,6 @@ end subroutine psb_d_base_vect_cssv
subroutine psb_d_base_inner_vect_sv(alpha,a,x,beta,y,info,trans) subroutine psb_d_base_inner_vect_sv(alpha,a,x,beta,y,info,trans)
use psb_d_base_mat_mod, psb_protect_name => psb_d_base_inner_vect_sv
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_base_vect_mod use psb_d_base_vect_mod
@ -1961,3 +1924,5 @@ subroutine psb_d_base_inner_vect_sv(alpha,a,x,beta,y,info,trans)
return return
end subroutine psb_d_base_inner_vect_sv end subroutine psb_d_base_inner_vect_sv
end submodule psb_d_base_mat_impl_mod

@ -29,9 +29,10 @@
!!$ POSSIBILITY OF SUCH DAMAGE. !!$ POSSIBILITY OF SUCH DAMAGE.
!!$ !!$
!!$ !!$
submodule (psb_d_base_mat_mod) psb_d_coo_impl_mod
contains
subroutine psb_d_coo_get_diag(a,d,info) subroutine psb_d_coo_get_diag(a,d,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_get_diag
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
implicit none implicit none
@ -78,7 +79,6 @@ end subroutine psb_d_coo_get_diag
subroutine psb_d_coo_scal(d,a,info,side) subroutine psb_d_coo_scal(d,a,info,side)
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_scal
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_string_mod use psb_string_mod
@ -150,7 +150,6 @@ end subroutine psb_d_coo_scal
subroutine psb_d_coo_scals(d,a,info) subroutine psb_d_coo_scals(d,a,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_scals
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
implicit none implicit none
@ -187,7 +186,6 @@ end subroutine psb_d_coo_scals
subroutine psb_d_coo_reallocate_nz(nz,a) subroutine psb_d_coo_reallocate_nz(nz,a)
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_reallocate_nz
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
implicit none implicit none
@ -217,7 +215,6 @@ subroutine psb_d_coo_reallocate_nz(nz,a)
end subroutine psb_d_coo_reallocate_nz end subroutine psb_d_coo_reallocate_nz
subroutine psb_d_coo_mold(a,b,info) subroutine psb_d_coo_mold(a,b,info)
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_mold
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
@ -251,7 +248,6 @@ subroutine psb_d_coo_mold(a,b,info)
end subroutine psb_d_coo_mold end subroutine psb_d_coo_mold
subroutine psb_d_coo_reinit(a,clear) subroutine psb_d_coo_reinit(a,clear)
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_reinit
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -300,7 +296,6 @@ end subroutine psb_d_coo_reinit
subroutine psb_d_coo_trim(a) subroutine psb_d_coo_trim(a)
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_trim
use psb_realloc_mod use psb_realloc_mod
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -330,7 +325,6 @@ end subroutine psb_d_coo_trim
subroutine psb_d_coo_allocate_mnnz(m,n,a,nz) subroutine psb_d_coo_allocate_mnnz(m,n,a,nz)
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_allocate_mnnz
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
implicit none implicit none
@ -395,7 +389,6 @@ end subroutine psb_d_coo_allocate_mnnz
subroutine psb_d_coo_print(iout,a,iv,head,ivr,ivc) subroutine psb_d_coo_print(iout,a,iv,head,ivr,ivc)
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_print
use psb_string_mod use psb_string_mod
implicit none implicit none
@ -466,7 +459,6 @@ end subroutine psb_d_coo_print
function psb_d_coo_get_nz_row(idx,a) result(res) function psb_d_coo_get_nz_row(idx,a) result(res)
use psb_const_mod use psb_const_mod
use psb_sort_mod use psb_sort_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_get_nz_row
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
@ -519,7 +511,6 @@ subroutine psb_d_coo_cssm(alpha,a,x,beta,y,info,trans)
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_cssm
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -875,7 +866,6 @@ subroutine psb_d_coo_cssv(alpha,a,x,beta,y,info,trans)
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_cssv
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -1219,7 +1209,6 @@ subroutine psb_d_coo_csmv(alpha,a,x,beta,y,info,trans)
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_csmv
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
@ -1415,7 +1404,6 @@ subroutine psb_d_coo_csmm(alpha,a,x,beta,y,info,trans)
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_csmm
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -1619,7 +1607,6 @@ end subroutine psb_d_coo_csmm
function psb_d_coo_maxval(a) result(res) function psb_d_coo_maxval(a) result(res)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_maxval
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -1646,7 +1633,6 @@ end function psb_d_coo_maxval
function psb_d_coo_csnmi(a) result(res) function psb_d_coo_csnmi(a) result(res)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_csnmi
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -1707,7 +1693,6 @@ end function psb_d_coo_csnmi
function psb_d_coo_csnm1(a) result(res) function psb_d_coo_csnm1(a) result(res)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_csnm1
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
@ -1748,7 +1733,6 @@ end function psb_d_coo_csnm1
subroutine psb_d_coo_rowsum(d,a) subroutine psb_d_coo_rowsum(d,a)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_rowsum
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1797,7 +1781,6 @@ end subroutine psb_d_coo_rowsum
subroutine psb_d_coo_arwsum(d,a) subroutine psb_d_coo_arwsum(d,a)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_arwsum
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1845,7 +1828,6 @@ end subroutine psb_d_coo_arwsum
subroutine psb_d_coo_colsum(d,a) subroutine psb_d_coo_colsum(d,a)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_colsum
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1894,7 +1876,6 @@ end subroutine psb_d_coo_colsum
subroutine psb_d_coo_aclsum(d,a) subroutine psb_d_coo_aclsum(d,a)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_aclsum
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1962,7 +1943,6 @@ subroutine psb_d_coo_csgetptn(imin,imax,a,nz,ia,ja,info,&
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_csgetptn
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
@ -2236,7 +2216,6 @@ subroutine psb_d_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_csgetrow
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
@ -2516,7 +2495,6 @@ subroutine psb_d_coo_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
use psb_sort_mod use psb_sort_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_csput_a
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
@ -2895,7 +2873,6 @@ end subroutine psb_d_coo_csput_a
subroutine psb_d_cp_coo_to_coo(a,b,info) subroutine psb_d_cp_coo_to_coo(a,b,info)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_cp_coo_to_coo
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b class(psb_d_coo_sparse_mat), intent(inout) :: b
@ -2938,7 +2915,6 @@ end subroutine psb_d_cp_coo_to_coo
subroutine psb_d_cp_coo_from_coo(a,b,info) subroutine psb_d_cp_coo_from_coo(a,b,info)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_cp_coo_from_coo
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(in) :: b class(psb_d_coo_sparse_mat), intent(in) :: b
@ -2985,7 +2961,6 @@ end subroutine psb_d_cp_coo_from_coo
subroutine psb_d_cp_coo_to_fmt(a,b,info) subroutine psb_d_cp_coo_to_fmt(a,b,info)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_cp_coo_to_fmt
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(in) :: a class(psb_d_coo_sparse_mat), intent(in) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -3018,7 +2993,6 @@ end subroutine psb_d_cp_coo_to_fmt
subroutine psb_d_cp_coo_from_fmt(a,b,info) subroutine psb_d_cp_coo_from_fmt(a,b,info)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_cp_coo_from_fmt
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(in) :: b class(psb_d_base_sparse_mat), intent(in) :: b
@ -3053,7 +3027,6 @@ end subroutine psb_d_cp_coo_from_fmt
subroutine psb_d_mv_coo_to_coo(a,b,info) subroutine psb_d_mv_coo_to_coo(a,b,info)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_mv_coo_to_coo
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b class(psb_d_coo_sparse_mat), intent(inout) :: b
@ -3096,7 +3069,6 @@ end subroutine psb_d_mv_coo_to_coo
subroutine psb_d_mv_coo_from_coo(a,b,info) subroutine psb_d_mv_coo_from_coo(a,b,info)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_mv_coo_from_coo
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b class(psb_d_coo_sparse_mat), intent(inout) :: b
@ -3141,7 +3113,6 @@ end subroutine psb_d_mv_coo_from_coo
subroutine psb_d_mv_coo_to_fmt(a,b,info) subroutine psb_d_mv_coo_to_fmt(a,b,info)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_mv_coo_to_fmt
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -3174,7 +3145,6 @@ end subroutine psb_d_mv_coo_to_fmt
subroutine psb_d_mv_coo_from_fmt(a,b,info) subroutine psb_d_mv_coo_from_fmt(a,b,info)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_mv_coo_from_fmt
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -3208,7 +3178,6 @@ end subroutine psb_d_mv_coo_from_fmt
subroutine psb_d_coo_cp_from(a,b) subroutine psb_d_coo_cp_from(a,b)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_cp_from
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
@ -3239,7 +3208,6 @@ end subroutine psb_d_coo_cp_from
subroutine psb_d_coo_mv_from(a,b) subroutine psb_d_coo_mv_from(a,b)
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_mv_from
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
@ -3273,7 +3241,6 @@ end subroutine psb_d_coo_mv_from
subroutine psb_d_fix_coo(a,info,idir) subroutine psb_d_fix_coo(a,info,idir)
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_fix_coo
implicit none implicit none
class(psb_d_coo_sparse_mat), intent(inout) :: a class(psb_d_coo_sparse_mat), intent(inout) :: a
@ -3332,7 +3299,6 @@ end subroutine psb_d_fix_coo
subroutine psb_d_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir) subroutine psb_d_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir)
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod, psb_protect_name => psb_d_fix_coo_inner
use psb_string_mod use psb_string_mod
use psb_ip_reord_mod use psb_ip_reord_mod
implicit none implicit none
@ -4040,3 +4006,4 @@ subroutine psb_d_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir)
end subroutine psb_d_fix_coo_inner end subroutine psb_d_fix_coo_inner
end submodule psb_d_coo_impl_mod

@ -30,6 +30,9 @@
!!$ !!$
!!$ !!$
submodule (psb_d_csc_mat_mod) psb_d_csc_impl_mod
contains
! == =================================== ! == ===================================
! !
! !
@ -46,7 +49,6 @@
subroutine psb_d_csc_csmv(alpha,a,x,beta,y,info,trans) subroutine psb_d_csc_csmv(alpha,a,x,beta,y,info,trans)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_csmv
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -323,7 +325,6 @@ end subroutine psb_d_csc_csmv
subroutine psb_d_csc_csmm(alpha,a,x,beta,y,info,trans) subroutine psb_d_csc_csmm(alpha,a,x,beta,y,info,trans)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_csmm
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -607,7 +608,6 @@ end subroutine psb_d_csc_csmm
subroutine psb_d_csc_cssv(alpha,a,x,beta,y,info,trans) subroutine psb_d_csc_cssv(alpha,a,x,beta,y,info,trans)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_cssv
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -826,7 +826,6 @@ end subroutine psb_d_csc_cssv
subroutine psb_d_csc_cssm(alpha,a,x,beta,y,info,trans) subroutine psb_d_csc_cssm(alpha,a,x,beta,y,info,trans)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_cssm
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -1055,7 +1054,6 @@ end subroutine psb_d_csc_cssm
function psb_d_csc_maxval(a) result(res) function psb_d_csc_maxval(a) result(res)
use psb_error_mod use psb_error_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_maxval
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -1083,7 +1081,6 @@ end function psb_d_csc_maxval
function psb_d_csc_csnm1(a) result(res) function psb_d_csc_csnm1(a) result(res)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_csnm1
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
@ -1123,7 +1120,6 @@ end function psb_d_csc_csnm1
subroutine psb_d_csc_colsum(d,a) subroutine psb_d_csc_colsum(d,a)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_colsum
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1171,7 +1167,6 @@ end subroutine psb_d_csc_colsum
subroutine psb_d_csc_aclsum(d,a) subroutine psb_d_csc_aclsum(d,a)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_aclsum
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1226,7 +1221,6 @@ end subroutine psb_d_csc_aclsum
subroutine psb_d_csc_rowsum(d,a) subroutine psb_d_csc_rowsum(d,a)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_rowsum
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1276,7 +1270,6 @@ end subroutine psb_d_csc_rowsum
subroutine psb_d_csc_arwsum(d,a) subroutine psb_d_csc_arwsum(d,a)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_arwsum
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1327,7 +1320,6 @@ end subroutine psb_d_csc_arwsum
subroutine psb_d_csc_get_diag(a,d,info) subroutine psb_d_csc_get_diag(a,d,info)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_get_diag
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:) real(psb_dpk_), intent(out) :: d(:)
@ -1380,7 +1372,6 @@ end subroutine psb_d_csc_get_diag
subroutine psb_d_csc_scal(d,a,info,side) subroutine psb_d_csc_scal(d,a,info,side)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_scal
use psb_string_mod use psb_string_mod
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
@ -1452,7 +1443,6 @@ end subroutine psb_d_csc_scal
subroutine psb_d_csc_scals(d,a,info) subroutine psb_d_csc_scals(d,a,info)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_scals
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d real(psb_dpk_), intent(in) :: d
@ -1505,7 +1495,6 @@ subroutine psb_d_csc_csgetptn(imin,imax,a,nz,ia,ja,info,&
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_csgetptn
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
@ -1692,7 +1681,6 @@ subroutine psb_d_csc_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_csgetrow
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
@ -1883,7 +1871,6 @@ end subroutine psb_d_csc_csgetrow
subroutine psb_d_csc_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) subroutine psb_d_csc_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_csput_a
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
@ -2152,7 +2139,6 @@ subroutine psb_d_cp_csc_from_coo(a,b,info)
use psb_const_mod use psb_const_mod
use psb_realloc_mod use psb_realloc_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_cp_csc_from_coo
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
@ -2179,7 +2165,6 @@ end subroutine psb_d_cp_csc_from_coo
subroutine psb_d_cp_csc_to_coo(a,b,info) subroutine psb_d_cp_csc_to_coo(a,b,info)
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_cp_csc_to_coo
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
@ -2222,7 +2207,6 @@ subroutine psb_d_mv_csc_to_coo(a,b,info)
use psb_const_mod use psb_const_mod
use psb_realloc_mod use psb_realloc_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_mv_csc_to_coo
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
@ -2266,7 +2250,6 @@ subroutine psb_d_mv_csc_from_coo(a,b,info)
use psb_realloc_mod use psb_realloc_mod
use psb_error_mod use psb_error_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_mv_csc_from_coo
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
@ -2323,7 +2306,6 @@ subroutine psb_d_mv_csc_to_fmt(a,b,info)
use psb_const_mod use psb_const_mod
use psb_realloc_mod use psb_realloc_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_mv_csc_to_fmt
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
@ -2364,7 +2346,6 @@ subroutine psb_d_cp_csc_to_fmt(a,b,info)
use psb_const_mod use psb_const_mod
use psb_realloc_mod use psb_realloc_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_cp_csc_to_fmt
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
@ -2406,7 +2387,6 @@ subroutine psb_d_mv_csc_from_fmt(a,b,info)
use psb_const_mod use psb_const_mod
use psb_realloc_mod use psb_realloc_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_mv_csc_from_fmt
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
@ -2450,7 +2430,6 @@ subroutine psb_d_cp_csc_from_fmt(a,b,info)
use psb_const_mod use psb_const_mod
use psb_realloc_mod use psb_realloc_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_cp_csc_from_fmt
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
@ -2490,7 +2469,6 @@ end subroutine psb_d_cp_csc_from_fmt
subroutine psb_d_csc_mold(a,b,info) subroutine psb_d_csc_mold(a,b,info)
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_mold
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
@ -2526,7 +2504,6 @@ end subroutine psb_d_csc_mold
subroutine psb_d_csc_reallocate_nz(nz,a) subroutine psb_d_csc_reallocate_nz(nz,a)
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_reallocate_nz
implicit none implicit none
integer(psb_ipk_), intent(in) :: nz integer(psb_ipk_), intent(in) :: nz
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
@ -2561,7 +2538,6 @@ subroutine psb_d_csc_csgetblk(imin,imax,a,b,info,&
! Output is always in COO format ! Output is always in COO format
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_csgetblk
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(in) :: a class(psb_d_csc_sparse_mat), intent(in) :: a
@ -2613,7 +2589,6 @@ end subroutine psb_d_csc_csgetblk
subroutine psb_d_csc_reinit(a,clear) subroutine psb_d_csc_reinit(a,clear)
use psb_error_mod use psb_error_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_reinit
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
@ -2661,7 +2636,6 @@ end subroutine psb_d_csc_reinit
subroutine psb_d_csc_trim(a) subroutine psb_d_csc_trim(a)
use psb_realloc_mod use psb_realloc_mod
use psb_error_mod use psb_error_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_trim
implicit none implicit none
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
integer(psb_ipk_) :: err_act, info, nz, n integer(psb_ipk_) :: err_act, info, nz, n
@ -2690,7 +2664,6 @@ end subroutine psb_d_csc_trim
subroutine psb_d_csc_allocate_mnnz(m,n,a,nz) subroutine psb_d_csc_allocate_mnnz(m,n,a,nz)
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_allocate_mnnz
implicit none implicit none
integer(psb_ipk_), intent(in) :: m,n integer(psb_ipk_), intent(in) :: m,n
class(psb_d_csc_sparse_mat), intent(inout) :: a class(psb_d_csc_sparse_mat), intent(inout) :: a
@ -2751,7 +2724,6 @@ end subroutine psb_d_csc_allocate_mnnz
subroutine psb_d_csc_print(iout,a,iv,head,ivr,ivc) subroutine psb_d_csc_print(iout,a,iv,head,ivr,ivc)
use psb_string_mod use psb_string_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_print
implicit none implicit none
integer(psb_ipk_), intent(in) :: iout integer(psb_ipk_), intent(in) :: iout
@ -2944,3 +2916,5 @@ contains
end subroutine csc_spspmm end subroutine csc_spspmm
end subroutine psb_dcscspspmm end subroutine psb_dcscspspmm
end submodule psb_d_csc_impl_mod

@ -2993,9 +2993,7 @@ contains
end subroutine psb_d_cp_csr_from_fmt end subroutine psb_d_cp_csr_from_fmt
subroutine psb_dcsrspspmm(a,b,c,info) subroutine psb_dcsrspspmm(a,b,c,info)
use psb_d_mat_mod use psb_error_mod
use psb_serial_mod, psb_protect_name => psb_dcsrspspmm
implicit none implicit none
class(psb_d_csr_sparse_mat), intent(in) :: a,b class(psb_d_csr_sparse_mat), intent(in) :: a,b
@ -3114,11 +3112,8 @@ contains
end subroutine psb_dcsrspspmm end subroutine psb_dcsrspspmm
end submodule psb_d_csr_mat_impl
function psb_d_csr_maxval(a) result(res) function psb_d_csr_maxval(a) result(res)
use psb_error_mod use psb_error_mod
use psb_d_csr_mat_mod, psb_protect_name => psb_d_csr_maxval
implicit none implicit none
class(psb_d_csr_sparse_mat), intent(in) :: a class(psb_d_csr_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -3140,7 +3135,6 @@ end function psb_d_csr_maxval
function psb_d_csr_csnmi(a) result(res) function psb_d_csr_csnmi(a) result(res)
use psb_error_mod use psb_error_mod
use psb_d_csr_mat_mod, psb_protect_name => psb_d_csr_csnmi
implicit none implicit none
class(psb_d_csr_sparse_mat), intent(in) :: a class(psb_d_csr_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res real(psb_dpk_) :: res
@ -3167,3 +3161,7 @@ function psb_d_csr_csnmi(a) result(res)
end function psb_d_csr_csnmi end function psb_d_csr_csnmi
end submodule psb_d_csr_mat_impl

@ -39,7 +39,9 @@
! !
! !
submodule (psb_d_mat_mod) psb_d_mat_impl_mod
contains
! == =================================== ! == ===================================
! !
@ -56,7 +58,6 @@
subroutine psb_d_set_nrows(m,a) subroutine psb_d_set_nrows(m,a)
use psb_d_mat_mod, psb_protect_name => psb_d_set_nrows
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -85,7 +86,6 @@ end subroutine psb_d_set_nrows
subroutine psb_d_set_ncols(n,a) subroutine psb_d_set_ncols(n,a)
use psb_d_mat_mod, psb_protect_name => psb_d_set_ncols
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -121,7 +121,6 @@ end subroutine psb_d_set_ncols
! !
subroutine psb_d_set_dupl(n,a) subroutine psb_d_set_dupl(n,a)
use psb_d_mat_mod, psb_protect_name => psb_d_set_dupl
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -154,7 +153,6 @@ end subroutine psb_d_set_dupl
! !
subroutine psb_d_set_null(a) subroutine psb_d_set_null(a)
use psb_d_mat_mod, psb_protect_name => psb_d_set_null
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -182,7 +180,6 @@ end subroutine psb_d_set_null
subroutine psb_d_set_bld(a) subroutine psb_d_set_bld(a)
use psb_d_mat_mod, psb_protect_name => psb_d_set_bld
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -211,7 +208,6 @@ end subroutine psb_d_set_bld
subroutine psb_d_set_upd(a) subroutine psb_d_set_upd(a)
use psb_d_mat_mod, psb_protect_name => psb_d_set_upd
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -241,7 +237,6 @@ end subroutine psb_d_set_upd
subroutine psb_d_set_asb(a) subroutine psb_d_set_asb(a)
use psb_d_mat_mod, psb_protect_name => psb_d_set_asb
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -270,7 +265,6 @@ end subroutine psb_d_set_asb
subroutine psb_d_set_sorted(a,val) subroutine psb_d_set_sorted(a,val)
use psb_d_mat_mod, psb_protect_name => psb_d_set_sorted
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -300,7 +294,6 @@ end subroutine psb_d_set_sorted
subroutine psb_d_set_triangle(a,val) subroutine psb_d_set_triangle(a,val)
use psb_d_mat_mod, psb_protect_name => psb_d_set_triangle
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -330,7 +323,6 @@ end subroutine psb_d_set_triangle
subroutine psb_d_set_unit(a,val) subroutine psb_d_set_unit(a,val)
use psb_d_mat_mod, psb_protect_name => psb_d_set_unit
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -360,7 +352,6 @@ end subroutine psb_d_set_unit
subroutine psb_d_set_lower(a,val) subroutine psb_d_set_lower(a,val)
use psb_d_mat_mod, psb_protect_name => psb_d_set_lower
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -390,7 +381,6 @@ end subroutine psb_d_set_lower
subroutine psb_d_set_upper(a,val) subroutine psb_d_set_upper(a,val)
use psb_d_mat_mod, psb_protect_name => psb_d_set_upper
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -434,7 +424,6 @@ end subroutine psb_d_set_upper
subroutine psb_d_sparse_print(iout,a,iv,head,ivr,ivc) subroutine psb_d_sparse_print(iout,a,iv,head,ivr,ivc)
use psb_d_mat_mod, psb_protect_name => psb_d_sparse_print
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -468,7 +457,6 @@ end subroutine psb_d_sparse_print
subroutine psb_d_n_sparse_print(fname,a,iv,head,ivr,ivc) subroutine psb_d_n_sparse_print(fname,a,iv,head,ivr,ivc)
use psb_d_mat_mod, psb_protect_name => psb_d_n_sparse_print
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -519,7 +507,6 @@ end subroutine psb_d_n_sparse_print
subroutine psb_d_get_neigh(a,idx,neigh,n,info,lev) subroutine psb_d_get_neigh(a,idx,neigh,n,info,lev)
use psb_d_mat_mod, psb_protect_name => psb_d_get_neigh
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -557,7 +544,6 @@ end subroutine psb_d_get_neigh
subroutine psb_d_csall(nr,nc,a,info,nz) subroutine psb_d_csall(nr,nc,a,info,nz)
use psb_d_mat_mod, psb_protect_name => psb_d_csall
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -594,7 +580,6 @@ end subroutine psb_d_csall
subroutine psb_d_reallocate_nz(nz,a) subroutine psb_d_reallocate_nz(nz,a)
use psb_d_mat_mod, psb_protect_name => psb_d_reallocate_nz
use psb_error_mod use psb_error_mod
implicit none implicit none
integer(psb_ipk_), intent(in) :: nz integer(psb_ipk_), intent(in) :: nz
@ -622,7 +607,6 @@ end subroutine psb_d_reallocate_nz
subroutine psb_d_free(a) subroutine psb_d_free(a)
use psb_d_mat_mod, psb_protect_name => psb_d_free
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -636,7 +620,6 @@ end subroutine psb_d_free
subroutine psb_d_trim(a) subroutine psb_d_trim(a)
use psb_d_mat_mod, psb_protect_name => psb_d_trim
use psb_error_mod use psb_error_mod
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -664,7 +647,6 @@ end subroutine psb_d_trim
subroutine psb_d_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) 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_d_base_mat_mod
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -701,7 +683,6 @@ subroutine psb_d_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
end subroutine psb_d_csput_a end subroutine psb_d_csput_a
subroutine psb_d_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl) 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_base_mat_mod
use psb_d_vect_mod, only : psb_d_vect_type use psb_d_vect_mod, only : psb_d_vect_type
use psb_i_vect_mod, only : psb_i_vect_type use psb_i_vect_mod, only : psb_i_vect_type
@ -751,7 +732,6 @@ subroutine psb_d_csgetptn(imin,imax,a,nz,ia,ja,info,&
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_mat_mod, psb_protect_name => psb_d_csgetptn
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -798,7 +778,6 @@ subroutine psb_d_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_mat_mod, psb_protect_name => psb_d_csgetrow
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -848,7 +827,6 @@ subroutine psb_d_csgetblk(imin,imax,a,b,info,&
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_mat_mod, psb_protect_name => psb_d_csgetblk
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -911,7 +889,6 @@ subroutine psb_d_tril(a,b,info,diag,imin,imax,&
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_mat_mod, psb_protect_name => psb_d_tril
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
class(psb_dspmat_type), intent(inout) :: b class(psb_dspmat_type), intent(inout) :: b
@ -961,7 +938,6 @@ subroutine psb_d_triu(a,b,info,diag,imin,imax,&
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_mat_mod, psb_protect_name => psb_d_triu
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
class(psb_dspmat_type), intent(inout) :: b class(psb_dspmat_type), intent(inout) :: b
@ -1014,7 +990,6 @@ subroutine psb_d_csclip(a,b,info,&
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_mat_mod, psb_protect_name => psb_d_csclip
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -1065,7 +1040,6 @@ subroutine psb_d_b_csclip(a,b,info,&
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_mat_mod, psb_protect_name => psb_d_b_csclip
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -1106,7 +1080,6 @@ end subroutine psb_d_b_csclip
subroutine psb_d_cscnv(a,b,info,type,mold,upd,dupl) subroutine psb_d_cscnv(a,b,info,type,mold,upd,dupl)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_mat_mod, psb_protect_name => psb_d_cscnv
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
class(psb_dspmat_type), intent(inout) :: b class(psb_dspmat_type), intent(inout) :: b
@ -1211,7 +1184,6 @@ end subroutine psb_d_cscnv
subroutine psb_d_cscnv_ip(a,info,type,mold,dupl) subroutine psb_d_cscnv_ip(a,info,type,mold,dupl)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_mat_mod, psb_protect_name => psb_d_cscnv_ip
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -1314,7 +1286,6 @@ end subroutine psb_d_cscnv_ip
subroutine psb_d_cscnv_base(a,b,info,dupl) subroutine psb_d_cscnv_base(a,b,info,dupl)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_mat_mod, psb_protect_name => psb_d_cscnv_base
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
class(psb_d_base_sparse_mat), intent(out) :: b class(psb_d_base_sparse_mat), intent(out) :: b
@ -1368,7 +1339,6 @@ subroutine psb_d_clip_d(a,b,info)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_mat_mod, psb_protect_name => psb_d_clip_d
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
@ -1428,7 +1398,6 @@ subroutine psb_d_clip_d_ip(a,info)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_base_mat_mod use psb_d_base_mat_mod
use psb_d_mat_mod, psb_protect_name => psb_d_clip_d_ip
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -1484,7 +1453,6 @@ end subroutine psb_d_clip_d_ip
subroutine psb_d_mv_from(a,b) subroutine psb_d_mv_from(a,b)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_mat_mod, psb_protect_name => psb_d_mv_from
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -1506,7 +1474,6 @@ end subroutine psb_d_mv_from
subroutine psb_d_cp_from(a,b) subroutine psb_d_cp_from(a,b)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_mat_mod, psb_protect_name => psb_d_cp_from
implicit none implicit none
class(psb_dspmat_type), intent(out) :: a class(psb_dspmat_type), intent(out) :: a
class(psb_d_base_sparse_mat), intent(in) :: b class(psb_d_base_sparse_mat), intent(in) :: b
@ -1545,7 +1512,6 @@ end subroutine psb_d_cp_from
subroutine psb_d_mv_to(a,b) subroutine psb_d_mv_to(a,b)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_mat_mod, psb_protect_name => psb_d_mv_to
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -1560,7 +1526,6 @@ end subroutine psb_d_mv_to
subroutine psb_d_cp_to(a,b) subroutine psb_d_cp_to(a,b)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_mat_mod, psb_protect_name => psb_d_cp_to
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b class(psb_d_base_sparse_mat), intent(inout) :: b
@ -1572,7 +1537,6 @@ subroutine psb_d_cp_to(a,b)
end subroutine psb_d_cp_to end subroutine psb_d_cp_to
subroutine psb_d_mold(a,b) subroutine psb_d_mold(a,b)
use psb_d_mat_mod, psb_protect_name => psb_d_mold
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
class(psb_d_base_sparse_mat), allocatable, intent(out) :: b class(psb_d_base_sparse_mat), allocatable, intent(out) :: b
integer(psb_ipk_) :: info integer(psb_ipk_) :: info
@ -1587,7 +1551,6 @@ end subroutine psb_d_mold
subroutine psb_dspmat_type_move(a,b,info) subroutine psb_dspmat_type_move(a,b,info)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_mat_mod, psb_protect_name => psb_dspmat_type_move
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
class(psb_dspmat_type), intent(inout) :: b class(psb_dspmat_type), intent(inout) :: b
@ -1608,7 +1571,6 @@ end subroutine psb_dspmat_type_move
subroutine psb_dspmat_clone(a,b,info) subroutine psb_dspmat_clone(a,b,info)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_mat_mod, psb_protect_name => psb_dspmat_clone
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
class(psb_dspmat_type), intent(inout) :: b class(psb_dspmat_type), intent(inout) :: b
@ -1640,7 +1602,6 @@ end subroutine psb_dspmat_clone
subroutine psb_d_transp_1mat(a) subroutine psb_d_transp_1mat(a)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_mat_mod, psb_protect_name => psb_d_transp_1mat
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -1673,7 +1634,6 @@ end subroutine psb_d_transp_1mat
subroutine psb_d_transp_2mat(a,b) subroutine psb_d_transp_2mat(a,b)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_mat_mod, psb_protect_name => psb_d_transp_2mat
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
class(psb_dspmat_type), intent(inout) :: b class(psb_dspmat_type), intent(inout) :: b
@ -1715,7 +1675,6 @@ end subroutine psb_d_transp_2mat
subroutine psb_d_transc_1mat(a) subroutine psb_d_transc_1mat(a)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_mat_mod, psb_protect_name => psb_d_transc_1mat
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
@ -1748,7 +1707,6 @@ end subroutine psb_d_transc_1mat
subroutine psb_d_transc_2mat(a,b) subroutine psb_d_transc_2mat(a,b)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_d_mat_mod, psb_protect_name => psb_d_transc_2mat
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
class(psb_dspmat_type), intent(inout) :: b class(psb_dspmat_type), intent(inout) :: b
@ -1788,7 +1746,6 @@ end subroutine psb_d_transc_2mat
subroutine psb_d_asb(a,mold) subroutine psb_d_asb(a,mold)
use psb_d_mat_mod, psb_protect_name => psb_d_asb
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -1827,7 +1784,6 @@ subroutine psb_d_asb(a,mold)
end subroutine psb_d_asb end subroutine psb_d_asb
subroutine psb_d_reinit(a,clear) subroutine psb_d_reinit(a,clear)
use psb_d_mat_mod, psb_protect_name => psb_d_reinit
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -1880,7 +1836,6 @@ end subroutine psb_d_reinit
subroutine psb_d_csmm(alpha,a,x,beta,y,info,trans) subroutine psb_d_csmm(alpha,a,x,beta,y,info,trans)
use psb_error_mod use psb_error_mod
use psb_d_mat_mod, psb_protect_name => psb_d_csmm
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -1913,7 +1868,6 @@ end subroutine psb_d_csmm
subroutine psb_d_csmv(alpha,a,x,beta,y,info,trans) subroutine psb_d_csmv(alpha,a,x,beta,y,info,trans)
use psb_error_mod use psb_error_mod
use psb_d_mat_mod, psb_protect_name => psb_d_csmv
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -1946,7 +1900,6 @@ end subroutine psb_d_csmv
subroutine psb_d_csmv_vect(alpha,a,x,beta,y,info,trans) subroutine psb_d_csmv_vect(alpha,a,x,beta,y,info,trans)
use psb_error_mod use psb_error_mod
use psb_d_vect_mod use psb_d_vect_mod
use psb_d_mat_mod, psb_protect_name => psb_d_csmv_vect
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta real(psb_dpk_), intent(in) :: alpha, beta
@ -1992,7 +1945,6 @@ end subroutine psb_d_csmv_vect
subroutine psb_d_cssm(alpha,a,x,beta,y,info,trans,scale,d) subroutine psb_d_cssm(alpha,a,x,beta,y,info,trans,scale,d)
use psb_error_mod use psb_error_mod
use psb_d_mat_mod, psb_protect_name => psb_d_cssm
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:) real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
@ -2027,7 +1979,6 @@ end subroutine psb_d_cssm
subroutine psb_d_cssv(alpha,a,x,beta,y,info,trans,scale,d) subroutine psb_d_cssv(alpha,a,x,beta,y,info,trans,scale,d)
use psb_error_mod use psb_error_mod
use psb_d_mat_mod, psb_protect_name => psb_d_cssv
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:) real(psb_dpk_), intent(in) :: alpha, beta, x(:)
@ -2064,7 +2015,6 @@ end subroutine psb_d_cssv
subroutine psb_d_cssv_vect(alpha,a,x,beta,y,info,trans,scale,d) subroutine psb_d_cssv_vect(alpha,a,x,beta,y,info,trans,scale,d)
use psb_error_mod use psb_error_mod
use psb_d_vect_mod use psb_d_vect_mod
use psb_d_mat_mod, psb_protect_name => psb_d_cssv_vect
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta real(psb_dpk_), intent(in) :: alpha, beta
@ -2117,7 +2067,6 @@ subroutine psb_d_cssv_vect(alpha,a,x,beta,y,info,trans,scale,d)
end subroutine psb_d_cssv_vect end subroutine psb_d_cssv_vect
function psb_d_maxval(a) result(res) function psb_d_maxval(a) result(res)
use psb_d_mat_mod, psb_protect_name => psb_d_maxval
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
implicit none implicit none
@ -2148,7 +2097,6 @@ function psb_d_maxval(a) result(res)
end function psb_d_maxval end function psb_d_maxval
function psb_d_csnmi(a) result(res) function psb_d_csnmi(a) result(res)
use psb_d_mat_mod, psb_protect_name => psb_d_csnmi
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
implicit none implicit none
@ -2179,7 +2127,6 @@ end function psb_d_csnmi
function psb_d_csnm1(a) result(res) function psb_d_csnm1(a) result(res)
use psb_d_mat_mod, psb_protect_name => psb_d_csnm1
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
implicit none implicit none
@ -2210,7 +2157,6 @@ end function psb_d_csnm1
function psb_d_rowsum(a,info) result(d) function psb_d_rowsum(a,info) result(d)
use psb_d_mat_mod, psb_protect_name => psb_d_rowsum
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
implicit none implicit none
@ -2243,7 +2189,6 @@ function psb_d_rowsum(a,info) result(d)
end function psb_d_rowsum end function psb_d_rowsum
function psb_d_arwsum(a,info) result(d) function psb_d_arwsum(a,info) result(d)
use psb_d_mat_mod, psb_protect_name => psb_d_arwsum
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
implicit none implicit none
@ -2277,7 +2222,6 @@ function psb_d_arwsum(a,info) result(d)
end function psb_d_arwsum end function psb_d_arwsum
function psb_d_colsum(a,info) result(d) function psb_d_colsum(a,info) result(d)
use psb_d_mat_mod, psb_protect_name => psb_d_colsum
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
implicit none implicit none
@ -2311,7 +2255,6 @@ function psb_d_colsum(a,info) result(d)
end function psb_d_colsum end function psb_d_colsum
function psb_d_aclsum(a,info) result(d) function psb_d_aclsum(a,info) result(d)
use psb_d_mat_mod, psb_protect_name => psb_d_aclsum
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
implicit none implicit none
@ -2346,7 +2289,6 @@ end function psb_d_aclsum
function psb_d_get_diag(a,info) result(d) function psb_d_get_diag(a,info) result(d)
use psb_d_mat_mod, psb_protect_name => psb_d_get_diag
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
implicit none implicit none
@ -2387,7 +2329,6 @@ end function psb_d_get_diag
subroutine psb_d_scal(d,a,info,side) subroutine psb_d_scal(d,a,info,side)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_mat_mod, psb_protect_name => psb_d_scal
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
real(psb_dpk_), intent(in) :: d(:) real(psb_dpk_), intent(in) :: d(:)
@ -2422,7 +2363,6 @@ end subroutine psb_d_scal
subroutine psb_d_scals(d,a,info) subroutine psb_d_scals(d,a,info)
use psb_error_mod use psb_error_mod
use psb_const_mod use psb_const_mod
use psb_d_mat_mod, psb_protect_name => psb_d_scals
implicit none implicit none
class(psb_dspmat_type), intent(inout) :: a class(psb_dspmat_type), intent(inout) :: a
real(psb_dpk_), intent(in) :: d real(psb_dpk_), intent(in) :: d
@ -2452,5 +2392,4 @@ subroutine psb_d_scals(d,a,info)
end subroutine psb_d_scals end subroutine psb_d_scals
end submodule psb_d_mat_impl_mod

@ -40,6 +40,9 @@
! Scatter: ! Scatter:
! Y(IDX(:)) = beta*Y(IDX(:)) + X(:) ! Y(IDX(:)) = beta*Y(IDX(:)) + X(:)
! !
submodule (psi_serial_mod) psi_serial_impl
contains
subroutine psi_igthv(n,idx,alpha,x,beta,y) subroutine psi_igthv(n,idx,alpha,x,beta,y)
use psb_const_mod use psb_const_mod
@ -1379,3 +1382,4 @@ subroutine psi_zaxpby(m,n,alpha, x, beta, y, info)
return return
end subroutine psi_zaxpby end subroutine psi_zaxpby
end submodule psi_serial_impl

@ -30,8 +30,6 @@
!!$ !!$
!!$ !!$
! !
! The merge-sort and quicksort routines are implemented in the
! serial/aux directory
! References: ! References:
! D. Knuth ! D. Knuth
! The Art of Computer Programming, vol. 3 ! The Art of Computer Programming, vol. 3
@ -41,8 +39,11 @@
! Data Structures and Algorithms ! Data Structures and Algorithms
! Addison-Wesley ! Addison-Wesley
! !
submodule (psb_d_sort_mod) psb_d_hsort_impl_mod
contains
subroutine psb_dhsort(x,ix,dir,flag) subroutine psb_dhsort(x,ix,dir,flag)
use psb_d_sort_mod, psb_protect_name => psb_dhsort
use psb_error_mod use psb_error_mod
implicit none implicit none
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -185,7 +186,6 @@ end subroutine psb_dhsort
! !
subroutine psi_d_insert_heap(key,last,heap,dir,info) subroutine psi_d_insert_heap(key,last,heap,dir,info)
use psb_d_sort_mod, psb_protect_name => psi_d_insert_heap
implicit none implicit none
! !
@ -291,7 +291,6 @@ end subroutine psi_d_insert_heap
subroutine psi_d_heap_get_first(key,last,heap,dir,info) subroutine psi_d_heap_get_first(key,last,heap,dir,info)
use psb_d_sort_mod, psb_protect_name => psi_d_heap_get_first
implicit none implicit none
real(psb_dpk_), intent(inout) :: key real(psb_dpk_), intent(inout) :: key
@ -415,7 +414,6 @@ end subroutine psi_d_heap_get_first
subroutine psi_d_idx_insert_heap(key,index,last,heap,idxs,dir,info) subroutine psi_d_idx_insert_heap(key,index,last,heap,idxs,dir,info)
use psb_d_sort_mod, psb_protect_name => psi_d_idx_insert_heap
implicit none implicit none
! !
@ -537,7 +535,6 @@ subroutine psi_d_idx_insert_heap(key,index,last,heap,idxs,dir,info)
end subroutine psi_d_idx_insert_heap end subroutine psi_d_idx_insert_heap
subroutine psi_d_idx_heap_get_first(key,index,last,heap,idxs,dir,info) subroutine psi_d_idx_heap_get_first(key,index,last,heap,idxs,dir,info)
use psb_d_sort_mod, psb_protect_name => psi_d_idx_heap_get_first
implicit none implicit none
real(psb_dpk_), intent(inout) :: heap(:) real(psb_dpk_), intent(inout) :: heap(:)
@ -673,6 +670,6 @@ subroutine psi_d_idx_heap_get_first(key,index,last,heap,idxs,dir,info)
return return
end subroutine psi_d_idx_heap_get_first end subroutine psi_d_idx_heap_get_first
end submodule psb_d_hsort_impl_mod

@ -40,8 +40,9 @@
! Data Structures and Algorithms ! Data Structures and Algorithms
! Addison-Wesley ! Addison-Wesley
! !
submodule (psb_d_sort_mod) psb_d_isort_impl_mod
contains
subroutine psb_disort(x,ix,dir,flag) subroutine psb_disort(x,ix,dir,flag)
use psb_d_sort_mod, psb_protect_name => psb_disort
use psb_error_mod use psb_error_mod
implicit none implicit none
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -130,7 +131,6 @@ subroutine psb_disort(x,ix,dir,flag)
end subroutine psb_disort end subroutine psb_disort
subroutine psi_disrx_up(n,x,idx) subroutine psi_disrx_up(n,x,idx)
use psb_d_sort_mod, psb_protect_name => psi_disrx_up
use psb_error_mod use psb_error_mod
implicit none implicit none
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -158,7 +158,6 @@ subroutine psi_disrx_up(n,x,idx)
end subroutine psi_disrx_up end subroutine psi_disrx_up
subroutine psi_disrx_dw(n,x,idx) subroutine psi_disrx_dw(n,x,idx)
use psb_d_sort_mod, psb_protect_name => psi_disrx_dw
use psb_error_mod use psb_error_mod
implicit none implicit none
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -187,7 +186,6 @@ end subroutine psi_disrx_dw
subroutine psi_disr_up(n,x) subroutine psi_disr_up(n,x)
use psb_d_sort_mod, psb_protect_name => psi_disr_up
use psb_error_mod use psb_error_mod
implicit none implicit none
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -211,7 +209,6 @@ subroutine psi_disr_up(n,x)
end subroutine psi_disr_up end subroutine psi_disr_up
subroutine psi_disr_dw(n,x) subroutine psi_disr_dw(n,x)
use psb_d_sort_mod, psb_protect_name => psi_disr_dw
use psb_error_mod use psb_error_mod
implicit none implicit none
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -235,7 +232,6 @@ subroutine psi_disr_dw(n,x)
end subroutine psi_disr_dw end subroutine psi_disr_dw
subroutine psi_daisrx_up(n,x,idx) subroutine psi_daisrx_up(n,x,idx)
use psb_d_sort_mod, psb_protect_name => psi_daisrx_up
use psb_error_mod use psb_error_mod
implicit none implicit none
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -263,7 +259,6 @@ subroutine psi_daisrx_up(n,x,idx)
end subroutine psi_daisrx_up end subroutine psi_daisrx_up
subroutine psi_daisrx_dw(n,x,idx) subroutine psi_daisrx_dw(n,x,idx)
use psb_d_sort_mod, psb_protect_name => psi_daisrx_dw
use psb_error_mod use psb_error_mod
implicit none implicit none
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -291,7 +286,6 @@ subroutine psi_daisrx_dw(n,x,idx)
end subroutine psi_daisrx_dw end subroutine psi_daisrx_dw
subroutine psi_daisr_up(n,x) subroutine psi_daisr_up(n,x)
use psb_d_sort_mod, psb_protect_name => psi_daisr_up
use psb_error_mod use psb_error_mod
implicit none implicit none
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -315,7 +309,6 @@ subroutine psi_daisr_up(n,x)
end subroutine psi_daisr_up end subroutine psi_daisr_up
subroutine psi_daisr_dw(n,x) subroutine psi_daisr_dw(n,x)
use psb_d_sort_mod, psb_protect_name => psi_daisr_dw
use psb_error_mod use psb_error_mod
implicit none implicit none
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -338,3 +331,4 @@ subroutine psi_daisr_dw(n,x)
enddo enddo
end subroutine psi_daisr_dw end subroutine psi_daisr_dw
end submodule psb_d_isort_impl_mod

@ -40,9 +40,9 @@
! Data Structures and Algorithms ! Data Structures and Algorithms
! Addison-Wesley ! Addison-Wesley
! !
submodule (psb_d_sort_mod) psb_d_msort_impl_mod
contains
subroutine psb_dmsort(x,ix,dir,flag) subroutine psb_dmsort(x,ix,dir,flag)
use psb_d_sort_mod, psb_protect_name => psb_dmsort
use psb_error_mod use psb_error_mod
use psb_ip_reord_mod use psb_ip_reord_mod
implicit none implicit none
@ -556,10 +556,4 @@
end subroutine psi_d_amsort_dw end subroutine psi_d_amsort_dw
end submodule psb_d_msort_impl_mod

@ -40,8 +40,9 @@
! Data Structures and Algorithms ! Data Structures and Algorithms
! Addison-Wesley ! Addison-Wesley
! !
submodule (psb_d_sort_mod) psb_d_qsort_impl_mod
contains
subroutine psb_dqsort(x,ix,dir,flag) subroutine psb_dqsort(x,ix,dir,flag)
use psb_d_sort_mod, psb_protect_name => psb_dqsort
use psb_error_mod use psb_error_mod
implicit none implicit none
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -130,7 +131,6 @@ subroutine psb_dqsort(x,ix,dir,flag)
end subroutine psb_dqsort end subroutine psb_dqsort
subroutine psi_dqsrx_up(n,x,idx) subroutine psi_dqsrx_up(n,x,idx)
use psb_d_sort_mod, psb_protect_name => psi_dqsrx_up
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -284,7 +284,6 @@ subroutine psi_dqsrx_up(n,x,idx)
end subroutine psi_dqsrx_up end subroutine psi_dqsrx_up
subroutine psi_dqsrx_dw(n,x,idx) subroutine psi_dqsrx_dw(n,x,idx)
use psb_d_sort_mod, psb_protect_name => psi_dqsrx_dw
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -439,7 +438,6 @@ subroutine psi_dqsrx_dw(n,x,idx)
end subroutine psi_dqsrx_dw end subroutine psi_dqsrx_dw
subroutine psi_dqsr_up(n,x) subroutine psi_dqsr_up(n,x)
use psb_d_sort_mod, psb_protect_name => psi_dqsr_up
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -580,7 +578,6 @@ subroutine psi_dqsr_up(n,x)
end subroutine psi_dqsr_up end subroutine psi_dqsr_up
subroutine psi_dqsr_dw(n,x) subroutine psi_dqsr_dw(n,x)
use psb_d_sort_mod, psb_protect_name => psi_dqsr_dw
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -721,7 +718,6 @@ subroutine psi_dqsr_dw(n,x)
end subroutine psi_dqsr_dw end subroutine psi_dqsr_dw
subroutine psi_daqsrx_up(n,x,idx) subroutine psi_daqsrx_up(n,x,idx)
use psb_d_sort_mod, psb_protect_name => psi_daqsrx_up
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -877,7 +873,6 @@ subroutine psi_daqsrx_up(n,x,idx)
end subroutine psi_daqsrx_up end subroutine psi_daqsrx_up
subroutine psi_daqsrx_dw(n,x,idx) subroutine psi_daqsrx_dw(n,x,idx)
use psb_d_sort_mod, psb_protect_name => psi_daqsrx_dw
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -1031,7 +1026,6 @@ subroutine psi_daqsrx_dw(n,x,idx)
end subroutine psi_daqsrx_dw end subroutine psi_daqsrx_dw
subroutine psi_daqsr_up(n,x) subroutine psi_daqsr_up(n,x)
use psb_d_sort_mod, psb_protect_name => psi_daqsr_up
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -1171,7 +1165,6 @@ subroutine psi_daqsr_up(n,x)
end subroutine psi_daqsr_up end subroutine psi_daqsr_up
subroutine psi_daqsr_dw(n,x) subroutine psi_daqsr_dw(n,x)
use psb_d_sort_mod, psb_protect_name => psi_daqsr_dw
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -1311,3 +1304,4 @@ subroutine psi_daqsr_dw(n,x)
end subroutine psi_daqsr_dw end subroutine psi_daqsr_dw
end submodule psb_d_qsort_impl_mod

@ -69,7 +69,8 @@ subroutine psb_dilu_fct(a,l,u,d,info,blck)
endif endif
call psb_dilu_fctint(m,a%get_nrows(),a,blck_%get_nrows(),blck_,& call psb_dilu_fctint(m,a%get_nrows(),a,blck_%get_nrows(),blck_,&
& d,l%val,l%ja,l%irp,u%val,u%ja,u%irp,l1,l2,info) & d,l%get_valp(),l%get_jap(),l%get_irpp(),&
& u%get_valp(),u%get_jap(),u%get_irpp(),l1,l2,info)
if(info /= psb_success_) then if(info /= psb_success_) then
info=psb_err_from_subroutine_ info=psb_err_from_subroutine_
ch_err='psb_dilu_fctint' ch_err='psb_dilu_fctint'
@ -129,6 +130,8 @@ contains
real(psb_dpk_) :: dia,temp real(psb_dpk_) :: dia,temp
integer(psb_ipk_), parameter :: nrb=60 integer(psb_ipk_), parameter :: nrb=60
type(psb_d_coo_sparse_mat) :: trw type(psb_d_coo_sparse_mat) :: trw
real(psb_dpk_), pointer :: aval(:), bval(:)
integer(psb_ipk_), pointer :: airp(:), aja(:), birp(:), bja(:)
integer(psb_ipk_) :: int_err(5) integer(psb_ipk_) :: int_err(5)
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -150,6 +153,27 @@ contains
l1=0 l1=0
l2=0 l2=0
m = ma+mb m = ma+mb
select type(aa => a%a)
type is (psb_d_csr_sparse_mat)
aval => aa%get_valp()
airp => aa%get_irpp()
aja => aa%get_jap()
class default
aval => null()
airp => null()
aja => null()
end select
select type(bb => b%a)
type is (psb_d_csr_sparse_mat)
bval => bb%get_valp()
birp => bb%get_irpp()
bja => bb%get_jap()
class default
bval => null()
birp => null()
bja => null()
end select
do i = 1, ma do i = 1, ma
d(i) = dzero d(i) = dzero
@ -157,18 +181,18 @@ contains
! !
select type(aa => a%a) select type(aa => a%a)
type is (psb_d_csr_sparse_mat) type is (psb_d_csr_sparse_mat)
do j = aa%irp(i), aa%irp(i+1) - 1 do j = airp(i), airp(i+1) - 1
k = aa%ja(j) k = aja(j)
! write(psb_err_unit,*)'KKKKK',k ! write(psb_err_unit,*)'KKKKK',k
if ((k < i).and.(k >= 1)) then if ((k < i).and.(k >= 1)) then
l1 = l1 + 1 l1 = l1 + 1
laspk(l1) = aa%val(j) laspk(l1) = aval(j)
lia1(l1) = k lia1(l1) = k
else if (k == i) then else if (k == i) then
d(i) = aa%val(j) d(i) = aval(j)
else if ((k > i).and.(k <= m)) then else if ((k > i).and.(k <= m)) then
l2 = l2 + 1 l2 = l2 + 1
uaspk(l2) = aa%val(j) uaspk(l2) = aval(j)
uia1(l2) = k uia1(l2) = k
end if end if
enddo enddo
@ -295,18 +319,18 @@ contains
select type(aa => b%a) select type(aa => b%a)
type is (psb_d_csr_sparse_mat) type is (psb_d_csr_sparse_mat)
do j = aa%irp(i-ma), aa%irp(i-ma+1) - 1 do j = birp(i-ma), birp(i-ma+1) - 1
k = aa%ja(j) k = bja(j)
! write(psb_err_unit,*)'KKKKK',k ! write(psb_err_unit,*)'KKKKK',k
if ((k < i).and.(k >= 1)) then if ((k < i).and.(k >= 1)) then
l1 = l1 + 1 l1 = l1 + 1
laspk(l1) = aa%val(j) laspk(l1) = bval(j)
lia1(l1) = k lia1(l1) = k
else if (k == i) then else if (k == i) then
d(i) = aa%val(j) d(i) = bval(j)
else if ((k > i).and.(k <= m)) then else if ((k > i).and.(k <= m)) then
l2 = l2 + 1 l2 = l2 + 1
uaspk(l2) = aa%val(j) uaspk(l2) = bval(j)
uia1(l2) = k uia1(l2) = k
end if end if
enddo enddo

@ -2,7 +2,7 @@
BICGSTAB Iterative method BICGSTAB CGS BICG BICGSTABL RGMRES BICGSTAB Iterative method BICGSTAB CGS BICG BICGSTABL RGMRES
BJAC Preconditioner NONE DIAG BJAC BJAC Preconditioner NONE DIAG BJAC
CSR Storage format for matrix A: CSR COO JAD CSR Storage format for matrix A: CSR COO JAD
100 Domain size (acutal system is this**3) 080 Domain size (acutal system is this**3)
2 Stopping criterion 2 Stopping criterion
1000 MAXIT 1000 MAXIT
-1 ITRACE -1 ITRACE

@ -155,6 +155,8 @@ contains
type(psb_d_csr_sparse_mat) :: acsr type(psb_d_csr_sparse_mat) :: acsr
type(psb_d_coo_sparse_mat) :: acoo type(psb_d_coo_sparse_mat) :: acoo
integer(psb_ipk_), pointer :: airp(:), aja(:)
real(psb_dpk_), pointer :: aval(:)
integer(psb_ipk_) :: err_act integer(psb_ipk_) :: err_act
character(len=20) :: name character(len=20) :: name
integer(psb_ipk_), allocatable :: ndstk(:,:), iold(:), ndeg(:), perm(:) integer(psb_ipk_), allocatable :: ndstk(:,:), iold(:), ndeg(:), perm(:)
@ -171,9 +173,12 @@ contains
call aa%mv_to_fmt(acsr,info) call aa%mv_to_fmt(acsr,info)
! Insert call to gps_reduce ! Insert call to gps_reduce
nr = acsr%get_nrows() nr = acsr%get_nrows()
airp => acsr%get_irpp()
aja => acsr%get_jap()
aval => acsr%get_valp()
ideg = 0 ideg = 0
do i=1, nr do i=1, nr
ideg = max(ideg,acsr%irp(i+1)-acsr%irp(i)) ideg = max(ideg,airp(i+1)-airp(i))
end do end do
allocate(ndstk(nr,ideg), iold(nr), perm(nr+1), ndeg(nr),stat=info) allocate(ndstk(nr,ideg), iold(nr), perm(nr+1), ndeg(nr),stat=info)
if (info /= 0) then if (info /= 0) then
@ -185,9 +190,9 @@ contains
iold(i) = i iold(i) = i
ndstk(i,:) = 0 ndstk(i,:) = 0
k = 0 k = 0
do j=acsr%irp(i),acsr%irp(i+1)-1 do j=airp(i),airp(i+1)-1
k = k + 1 k = k + 1
ndstk(i,k) = acsr%ja(j) ndstk(i,k) = aja(j)
end do end do
end do end do
perm = 0 perm = 0
@ -347,6 +352,8 @@ subroutine psb_d_cmp_bwpf(mat,bwl,bwu,prf,info)
! !
integer(psb_ipk_), allocatable :: irow(:), icol(:) integer(psb_ipk_), allocatable :: irow(:), icol(:)
real(psb_dpk_), allocatable :: val(:) real(psb_dpk_), allocatable :: val(:)
integer(psb_ipk_), pointer :: airp(:), aja(:)
real(psb_dpk_), pointer :: aval(:)
integer(psb_ipk_) :: nz integer(psb_ipk_) :: nz
integer(psb_ipk_) :: i, j, lrbu, lrbl integer(psb_ipk_) :: i, j, lrbu, lrbl
@ -356,12 +363,15 @@ subroutine psb_d_cmp_bwpf(mat,bwl,bwu,prf,info)
prf = 0 prf = 0
select type (aa=>mat%a) select type (aa=>mat%a)
class is (psb_d_csr_sparse_mat) class is (psb_d_csr_sparse_mat)
airp => aa%get_irpp()
aja => aa%get_jap()
aval => aa%get_valp()
do i=1, aa%get_nrows() do i=1, aa%get_nrows()
lrbl = 0 lrbl = 0
lrbu = 0 lrbu = 0
do j = aa%irp(i), aa%irp(i+1) - 1 do j = airp(i), airp(i+1) - 1
lrbl = max(lrbl,i-aa%ja(j)) lrbl = max(lrbl,i-aja(j))
lrbu = max(lrbu,aa%ja(j)-i) lrbu = max(lrbu,aja(j)-i)
end do end do
prf = prf + lrbl+lrbu prf = prf + lrbl+lrbu
bwu = max(bwu,lrbu) bwu = max(bwu,lrbu)

@ -159,9 +159,11 @@ contains
end if end if
end if end if
if (allocated(wgh_)) then if (allocated(wgh_)) then
call build_mtpart(aa%get_nrows(),aa%get_fmt(),aa%ja,aa%irp,nparts,wgh_) call build_mtpart(aa%get_nrows(),aa%get_fmt(),&
& aa%get_jap(),aa%get_irpp(),nparts,wgh_)
else else
call build_mtpart(aa%get_nrows(),aa%get_fmt(),aa%ja,aa%irp,nparts) call build_mtpart(aa%get_nrows(),aa%get_fmt(),&
& aa%get_jap(),aa%get_irpp(),nparts)
end if end if
class default class default
write(psb_err_unit,*) 'Sorry, right now we only take CSR input!' write(psb_err_unit,*) 'Sorry, right now we only take CSR input!'
@ -245,9 +247,11 @@ contains
end if end if
end if end if
if (allocated(wgh_)) then if (allocated(wgh_)) then
call build_mtpart(a%get_nrows(),a%get_fmt(),a%ja,a%irp,nparts,wgh_) call build_mtpart(a%get_nrows(),a%get_fmt(),&
& a%get_jap(),a%get_irpp(),nparts,wgh_)
else else
call build_mtpart(a%get_nrows(),a%get_fmt(),a%ja,a%irp,nparts) call build_mtpart(a%get_nrows(),a%get_fmt(),&
& a%get_jap(),a%get_irpp(),nparts)
end if end if
end subroutine d_csr_build_mtpart end subroutine d_csr_build_mtpart

Loading…
Cancel
Save