New strategy for LD: use new LBASE.

ILmat
Salvatore Filippone 8 years ago
parent d9bc473b6e
commit 4e40837aeb

@ -97,7 +97,7 @@ UTIL_MODS = auxil/psb_string_mod.o desc/psb_desc_const_mod.o desc/psb_indx_map_m
serial/psb_d_base_mat_mod.o serial/psb_d_csr_mat_mod.o serial/psb_d_csc_mat_mod.o serial/psb_d_mat_mod.o \
serial/psb_c_base_mat_mod.o serial/psb_c_csr_mat_mod.o serial/psb_c_csc_mat_mod.o serial/psb_c_mat_mod.o \
serial/psb_z_base_mat_mod.o serial/psb_z_csr_mat_mod.o serial/psb_z_csc_mat_mod.o serial/psb_z_mat_mod.o \
serial/psb_ld_base_mat_mod.o
serial/psb_ld_base_mat_mod.o serial/psb_lbase_mat_mod.o
@ -194,6 +194,7 @@ auxil/psb_ip_reord_mod.o: auxil/psb_m_ip_reord_mod.o auxil/psb_e_ip_reord_mod.o
auxil/psb_s_ip_reord_mod.o auxil/psb_d_ip_reord_mod.o \
auxil/psb_c_ip_reord_mod.o auxil/psb_z_ip_reord_mod.o
serial/psb_ld_base_mat_mod.o: serial/psb_lbase_mat_mod.o
serial/psb_base_mat_mod.o: auxil/psi_serial_mod.o
serial/psb_s_base_mat_mod.o serial/psb_d_base_mat_mod.o serial/psb_c_base_mat_mod.o serial/psb_z_base_mat_mod.o: serial/psb_base_mat_mod.o

@ -150,14 +150,15 @@ module psb_const_mod
real(psb_dpk_), parameter :: d_epstol=1.1e-16_psb_dpk_ ! Unit roundoff.
real(psb_spk_), parameter :: s_epstol=5.e-8_psb_spk_ ! Is this right?
character, parameter :: psb_all_='A', psb_topdef_=' '
logical, parameter :: psb_m_is_complex_ = .false.
logical, parameter :: psb_e_is_complex_ = .false.
logical, parameter :: psb_i_is_complex_ = .false.
logical, parameter :: psb_l_is_complex_ = .false.
logical, parameter :: psb_s_is_complex_ = .false.
logical, parameter :: psb_d_is_complex_ = .false.
logical, parameter :: psb_c_is_complex_ = .true.
logical, parameter :: psb_z_is_complex_ = .true.
logical, parameter :: psb_m_is_complex_ = .false.
logical, parameter :: psb_e_is_complex_ = .false.
logical, parameter :: psb_i_is_complex_ = .false.
logical, parameter :: psb_l_is_complex_ = .false.
logical, parameter :: psb_s_is_complex_ = .false.
logical, parameter :: psb_d_is_complex_ = .false.
logical, parameter :: psb_c_is_complex_ = .true.
logical, parameter :: psb_z_is_complex_ = .true.
logical, parameter :: psb_ld_is_complex_ = .false.
!
! Sort routines constants

@ -260,7 +260,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(inout) :: a
complex(psb_spk_), intent(in) :: val(:)
integer(psb_ipk_), intent(in) :: nz, ia(:), ja(:), imin,imax,jmin,jmax
@ -271,8 +271,7 @@ module psb_c_base_mat_mod
interface
subroutine psb_c_base_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_, &
& psb_c_base_vect_type, psb_i_base_vect_type
import
class(psb_c_base_sparse_mat), intent(inout) :: a
class(psb_c_base_vect_type), intent(inout) :: val
class(psb_i_base_vect_type), intent(inout) :: ia, ja
@ -317,7 +316,7 @@ module psb_c_base_mat_mod
interface
subroutine psb_c_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: imin,imax
integer(psb_ipk_), intent(out) :: nz
@ -356,7 +355,7 @@ module psb_c_base_mat_mod
interface
subroutine psb_c_base_csgetblk(imin,imax,a,b,info,&
& jmin,jmax,iren,append,rscale,cscale)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_c_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
class(psb_c_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(in) :: imin,imax
@ -394,7 +393,7 @@ module psb_c_base_mat_mod
interface
subroutine psb_c_base_csclip(a,b,info,&
& imin,imax,jmin,jmax,rscale,cscale)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_c_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
class(psb_c_coo_sparse_mat), intent(out) :: b
integer(psb_ipk_),intent(out) :: info
@ -435,7 +434,7 @@ module psb_c_base_mat_mod
interface
subroutine psb_c_base_tril(a,l,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale,u)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_c_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
class(psb_c_coo_sparse_mat), intent(out) :: l
integer(psb_ipk_),intent(out) :: info
@ -479,7 +478,7 @@ module psb_c_base_mat_mod
interface
subroutine psb_c_base_triu(a,u,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale,l)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_c_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
class(psb_c_coo_sparse_mat), intent(out) :: u
integer(psb_ipk_),intent(out) :: info
@ -502,7 +501,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_get_diag(a,d,info)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(out) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -521,7 +520,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_mold(a,b,info)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_epk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
class(psb_c_base_sparse_mat), intent(inout), allocatable :: b
integer(psb_ipk_), intent(out) :: info
@ -543,7 +542,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_clone(a,b, info)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_epk_
import
implicit none
class(psb_c_base_sparse_mat), intent(inout) :: a
class(psb_c_base_sparse_mat), allocatable, intent(inout) :: b
@ -562,7 +561,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_make_nonunit(a)
import :: psb_c_base_sparse_mat
import
implicit none
class(psb_c_base_sparse_mat), intent(inout) :: a
end subroutine psb_c_base_make_nonunit
@ -579,7 +578,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_cp_to_coo(a,b,info)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
class(psb_c_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -596,7 +595,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_cp_from_coo(a,b,info)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_c_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(inout) :: a
class(psb_c_coo_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -614,7 +613,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_cp_to_fmt(a,b,info)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
class(psb_c_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -632,7 +631,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_cp_from_fmt(a,b,info)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(inout) :: a
class(psb_c_base_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -649,7 +648,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_mv_to_coo(a,b,info)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_c_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(inout) :: a
class(psb_c_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -666,7 +665,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_mv_from_coo(a,b,info)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_c_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(inout) :: a
class(psb_c_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -684,7 +683,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_mv_to_fmt(a,b,info)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(inout) :: a
class(psb_c_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -702,7 +701,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_mv_from_fmt(a,b,info)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(inout) :: a
class(psb_c_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -715,7 +714,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_clean_zeros(a, info)
import :: psb_ipk_, psb_c_base_sparse_mat
import
class(psb_c_base_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
end subroutine psb_c_base_clean_zeros
@ -731,7 +730,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_transp_2mat(a,b)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
class(psb_base_sparse_mat), intent(out) :: b
end subroutine psb_c_base_transp_2mat
@ -747,7 +746,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_transc_2mat(a,b)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
class(psb_base_sparse_mat), intent(out) :: b
end subroutine psb_c_base_transc_2mat
@ -762,7 +761,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_transp_1mat(a)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(inout) :: a
end subroutine psb_c_base_transp_1mat
end interface
@ -776,7 +775,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_transc_1mat(a)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(inout) :: a
end subroutine psb_c_base_transc_1mat
end interface
@ -801,7 +800,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(in) :: alpha, beta, x(:,:)
complex(psb_spk_), intent(inout) :: y(:,:)
@ -829,7 +828,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(in) :: alpha, beta, x(:)
complex(psb_spk_), intent(inout) :: y(:)
@ -864,7 +863,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_vect_mv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_c_base_vect_type, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(in) :: alpha, beta
class(psb_c_base_vect_type), intent(inout) :: x
@ -896,7 +895,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_inner_cssm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(in) :: alpha, beta, x(:,:)
complex(psb_spk_), intent(inout) :: y(:,:)
@ -931,7 +930,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_inner_cssv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(in) :: alpha, beta, x(:)
complex(psb_spk_), intent(inout) :: y(:)
@ -966,7 +965,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_inner_vect_sv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_c_base_vect_type, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(in) :: alpha, beta
class(psb_c_base_vect_type), intent(inout) :: x, y
@ -998,7 +997,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_cssm(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(in) :: alpha, beta, x(:,:)
complex(psb_spk_), intent(inout) :: y(:,:)
@ -1031,7 +1030,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_cssv(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(in) :: alpha, beta, x(:)
complex(psb_spk_), intent(inout) :: y(:)
@ -1065,7 +1064,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_,psb_c_base_vect_type, psb_ipk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(in) :: alpha, beta
class(psb_c_base_vect_type), intent(inout) :: x,y
@ -1085,7 +1084,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_scals(d,a,info)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_
import
class(psb_c_base_sparse_mat), intent(inout) :: a
complex(psb_spk_), intent(in) :: d
integer(psb_ipk_), intent(out) :: info
@ -1103,7 +1102,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_scal(d,a,info,side)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_
import
class(psb_c_base_sparse_mat), intent(inout) :: a
complex(psb_spk_), intent(in) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1119,7 +1118,7 @@ module psb_c_base_mat_mod
!
interface
function psb_c_base_maxval(a) result(res)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
real(psb_spk_) :: res
end function psb_c_base_maxval
@ -1134,7 +1133,7 @@ module psb_c_base_mat_mod
!
interface
function psb_c_base_csnmi(a) result(res)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
real(psb_spk_) :: res
end function psb_c_base_csnmi
@ -1149,7 +1148,7 @@ module psb_c_base_mat_mod
!
interface
function psb_c_base_csnm1(a) result(res)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
real(psb_spk_) :: res
end function psb_c_base_csnm1
@ -1165,7 +1164,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_rowsum(d,a)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(out) :: d(:)
end subroutine psb_c_base_rowsum
@ -1179,7 +1178,7 @@ module psb_c_base_mat_mod
!!
interface
subroutine psb_c_base_arwsum(d,a)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
end subroutine psb_c_base_arwsum
@ -1195,7 +1194,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_base_colsum(d,a)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(out) :: d(:)
end subroutine psb_c_base_colsum
@ -1209,7 +1208,7 @@ module psb_c_base_mat_mod
!!
interface
subroutine psb_c_base_aclsum(d,a)
import :: psb_ipk_, psb_c_base_sparse_mat, psb_spk_
import
class(psb_c_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
end subroutine psb_c_base_aclsum
@ -1229,7 +1228,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_coo_reallocate_nz(nz,a)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_ipk_
import
integer(psb_ipk_), intent(in) :: nz
class(psb_c_coo_sparse_mat), intent(inout) :: a
end subroutine psb_c_coo_reallocate_nz
@ -1242,7 +1241,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_coo_reinit(a,clear)
import :: psb_ipk_, psb_c_coo_sparse_mat
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: clear
end subroutine psb_c_coo_reinit
@ -1254,7 +1253,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_coo_trim(a)
import :: psb_ipk_, psb_c_coo_sparse_mat
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
end subroutine psb_c_coo_trim
end interface
@ -1265,7 +1264,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_coo_clean_zeros(a,info)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_ipk_
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
end subroutine psb_c_coo_clean_zeros
@ -1278,7 +1277,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_coo_allocate_mnnz(m,n,a,nz)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_ipk_
import
integer(psb_ipk_), intent(in) :: m,n
class(psb_c_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(in), optional :: nz
@ -1290,7 +1289,7 @@ module psb_c_base_mat_mod
!| \see psb_base_mat_mod::psb_base_mold
interface
subroutine psb_c_coo_mold(a,b,info)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_c_base_sparse_mat, psb_epk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
class(psb_c_base_sparse_mat), intent(inout), allocatable :: b
integer(psb_ipk_), intent(out) :: info
@ -1312,7 +1311,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_coo_print(iout,a,iv,head,ivr,ivc)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_ipk_
import
integer(psb_ipk_), intent(in) :: iout
class(psb_c_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in), optional :: iv(:)
@ -1333,7 +1332,7 @@ module psb_c_base_mat_mod
!
interface
function psb_c_coo_get_nz_row(idx,a) result(res)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_ipk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: idx
integer(psb_ipk_) :: res
@ -1357,7 +1356,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir)
import :: psb_ipk_, psb_spk_, psb_ipk_
import
integer(psb_ipk_), intent(in) :: nr,nc,nzin,dupl
integer(psb_ipk_), intent(inout) :: ia(:), ja(:)
complex(psb_spk_), intent(inout) :: val(:)
@ -1377,7 +1376,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_fix_coo(a,info,idir)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_ipk_
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), intent(in), optional :: idir
@ -1389,7 +1388,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_cp_to_coo
interface
subroutine psb_c_cp_coo_to_coo(a,b,info)
import :: psb_ipk_, psb_c_coo_sparse_mat
import
class(psb_c_coo_sparse_mat), intent(in) :: a
class(psb_c_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1401,7 +1400,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_cp_from_coo
interface
subroutine psb_c_cp_coo_from_coo(a,b,info)
import :: psb_ipk_, psb_c_coo_sparse_mat
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
class(psb_c_coo_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -1414,7 +1413,7 @@ module psb_c_base_mat_mod
!!
interface
subroutine psb_c_cp_coo_to_fmt(a,b,info)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_c_base_sparse_mat
import
class(psb_c_coo_sparse_mat), intent(in) :: a
class(psb_c_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1427,7 +1426,7 @@ module psb_c_base_mat_mod
!!
interface
subroutine psb_c_cp_coo_from_fmt(a,b,info)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_c_base_sparse_mat
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
class(psb_c_base_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -1439,7 +1438,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_mv_to_coo
interface
subroutine psb_c_mv_coo_to_coo(a,b,info)
import :: psb_ipk_, psb_c_coo_sparse_mat
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
class(psb_c_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1451,7 +1450,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_mv_from_coo
interface
subroutine psb_c_mv_coo_from_coo(a,b,info)
import :: psb_ipk_, psb_c_coo_sparse_mat
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
class(psb_c_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1463,7 +1462,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_mv_to_fmt
interface
subroutine psb_c_mv_coo_to_fmt(a,b,info)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_c_base_sparse_mat
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
class(psb_c_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1475,7 +1474,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_mv_from_fmt
interface
subroutine psb_c_mv_coo_from_fmt(a,b,info)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_c_base_sparse_mat
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
class(psb_c_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1484,7 +1483,7 @@ module psb_c_base_mat_mod
interface
subroutine psb_c_coo_cp_from(a,b)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
type(psb_c_coo_sparse_mat), intent(in) :: b
end subroutine psb_c_coo_cp_from
@ -1492,7 +1491,7 @@ module psb_c_base_mat_mod
interface
subroutine psb_c_coo_mv_from(a,b)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
type(psb_c_coo_sparse_mat), intent(inout) :: b
end subroutine psb_c_coo_mv_from
@ -1517,7 +1516,7 @@ module psb_c_base_mat_mod
!
interface
subroutine psb_c_coo_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
complex(psb_spk_), intent(in) :: val(:)
integer(psb_ipk_), intent(in) :: nz,ia(:), ja(:),&
@ -1533,7 +1532,7 @@ module psb_c_base_mat_mod
interface
subroutine psb_c_coo_csgetptn(imin,imax,a,nz,ia,ja,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: imin,imax
integer(psb_ipk_), intent(out) :: nz
@ -1552,7 +1551,7 @@ module psb_c_base_mat_mod
interface
subroutine psb_c_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: imin,imax
integer(psb_ipk_), intent(out) :: nz
@ -1571,7 +1570,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_cssv
interface
subroutine psb_c_coo_cssv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(in) :: alpha, beta, x(:)
complex(psb_spk_), intent(inout) :: y(:)
@ -1584,7 +1583,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_cssm
interface
subroutine psb_c_coo_cssm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(in) :: alpha, beta, x(:,:)
complex(psb_spk_), intent(inout) :: y(:,:)
@ -1598,7 +1597,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_csmv
interface
subroutine psb_c_coo_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(in) :: alpha, beta, x(:)
complex(psb_spk_), intent(inout) :: y(:)
@ -1612,7 +1611,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_csmm
interface
subroutine psb_c_coo_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(in) :: alpha, beta, x(:,:)
complex(psb_spk_), intent(inout) :: y(:,:)
@ -1627,7 +1626,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_maxval
interface
function psb_c_coo_maxval(a) result(res)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
real(psb_spk_) :: res
end function psb_c_coo_maxval
@ -1638,7 +1637,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_csnmi
interface
function psb_c_coo_csnmi(a) result(res)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
real(psb_spk_) :: res
end function psb_c_coo_csnmi
@ -1649,7 +1648,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_csnm1
interface
function psb_c_coo_csnm1(a) result(res)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
real(psb_spk_) :: res
end function psb_c_coo_csnm1
@ -1660,7 +1659,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_rowsum
interface
subroutine psb_c_coo_rowsum(d,a)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(out) :: d(:)
end subroutine psb_c_coo_rowsum
@ -1670,7 +1669,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_arwsum
interface
subroutine psb_c_coo_arwsum(d,a)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
end subroutine psb_c_coo_arwsum
@ -1681,7 +1680,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_colsum
interface
subroutine psb_c_coo_colsum(d,a)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(out) :: d(:)
end subroutine psb_c_coo_colsum
@ -1692,7 +1691,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_aclsum
interface
subroutine psb_c_coo_aclsum(d,a)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
end subroutine psb_c_coo_aclsum
@ -1703,7 +1702,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_get_diag
interface
subroutine psb_c_coo_get_diag(a,d,info)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(in) :: a
complex(psb_spk_), intent(out) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1715,7 +1714,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_scal
interface
subroutine psb_c_coo_scal(d,a,info,side)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
complex(psb_spk_), intent(in) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1728,7 +1727,7 @@ module psb_c_base_mat_mod
!! \see psb_c_base_mat_mod::psb_c_base_scals
interface
subroutine psb_c_coo_scals(d,a,info)
import :: psb_ipk_, psb_c_coo_sparse_mat, psb_spk_
import
class(psb_c_coo_sparse_mat), intent(inout) :: a
complex(psb_spk_), intent(in) :: d
integer(psb_ipk_), intent(out) :: info

@ -260,7 +260,7 @@ module psb_d_base_mat_mod
!
interface
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_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: val(:)
integer(psb_ipk_), intent(in) :: nz, ia(:), ja(:), imin,imax,jmin,jmax
@ -271,8 +271,7 @@ module psb_d_base_mat_mod
interface
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_ipk_, &
& psb_d_base_vect_type, psb_i_base_vect_type
import
class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_base_vect_type), intent(inout) :: val
class(psb_i_base_vect_type), intent(inout) :: ia, ja
@ -317,7 +316,7 @@ module psb_d_base_mat_mod
interface
subroutine psb_d_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: imin,imax
integer(psb_ipk_), intent(out) :: nz
@ -356,7 +355,7 @@ module psb_d_base_mat_mod
interface
subroutine psb_d_base_csgetblk(imin,imax,a,b,info,&
& jmin,jmax,iren,append,rscale,cscale)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(in) :: imin,imax
@ -394,7 +393,7 @@ module psb_d_base_mat_mod
interface
subroutine psb_d_base_csclip(a,b,info,&
& imin,imax,jmin,jmax,rscale,cscale)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_d_coo_sparse_mat), intent(out) :: b
integer(psb_ipk_),intent(out) :: info
@ -435,7 +434,7 @@ module psb_d_base_mat_mod
interface
subroutine psb_d_base_tril(a,l,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale,u)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_d_coo_sparse_mat), intent(out) :: l
integer(psb_ipk_),intent(out) :: info
@ -479,7 +478,7 @@ module psb_d_base_mat_mod
interface
subroutine psb_d_base_triu(a,u,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale,l)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_d_coo_sparse_mat), intent(out) :: u
integer(psb_ipk_),intent(out) :: info
@ -502,7 +501,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_get_diag(a,d,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -521,7 +520,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_mold(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_epk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_d_base_sparse_mat), intent(inout), allocatable :: b
integer(psb_ipk_), intent(out) :: info
@ -543,7 +542,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_clone(a,b, info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_epk_
import
implicit none
class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), allocatable, intent(inout) :: b
@ -562,7 +561,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_make_nonunit(a)
import :: psb_d_base_sparse_mat
import
implicit none
class(psb_d_base_sparse_mat), intent(inout) :: a
end subroutine psb_d_base_make_nonunit
@ -579,7 +578,7 @@ module psb_d_base_mat_mod
!
interface
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
class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -596,7 +595,7 @@ module psb_d_base_mat_mod
!
interface
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_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -614,7 +613,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_cp_to_fmt(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -632,7 +631,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_cp_from_fmt(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -649,7 +648,7 @@ module psb_d_base_mat_mod
!
interface
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_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -666,7 +665,7 @@ module psb_d_base_mat_mod
!
interface
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_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -684,7 +683,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_mv_to_fmt(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -702,7 +701,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_mv_from_fmt(a,b,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -715,7 +714,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_clean_zeros(a, info)
import :: psb_ipk_, psb_d_base_sparse_mat
import
class(psb_d_base_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
end subroutine psb_d_base_clean_zeros
@ -731,7 +730,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_transp_2mat(a,b)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_base_sparse_mat), intent(out) :: b
end subroutine psb_d_base_transp_2mat
@ -747,7 +746,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_transc_2mat(a,b)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
class(psb_base_sparse_mat), intent(out) :: b
end subroutine psb_d_base_transc_2mat
@ -762,7 +761,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_transp_1mat(a)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(inout) :: a
end subroutine psb_d_base_transp_1mat
end interface
@ -776,7 +775,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_transc_1mat(a)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(inout) :: a
end subroutine psb_d_base_transc_1mat
end interface
@ -801,7 +800,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
real(psb_dpk_), intent(inout) :: y(:,:)
@ -829,7 +828,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:)
real(psb_dpk_), intent(inout) :: y(:)
@ -864,7 +863,7 @@ module psb_d_base_mat_mod
!
interface
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, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta
class(psb_d_base_vect_type), intent(inout) :: x
@ -896,7 +895,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_inner_cssm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
real(psb_dpk_), intent(inout) :: y(:,:)
@ -931,7 +930,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_inner_cssv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:)
real(psb_dpk_), intent(inout) :: y(:)
@ -966,7 +965,7 @@ module psb_d_base_mat_mod
!
interface
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, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta
class(psb_d_base_vect_type), intent(inout) :: x, y
@ -998,7 +997,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_cssm(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
real(psb_dpk_), intent(inout) :: y(:,:)
@ -1031,7 +1030,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_cssv(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:)
real(psb_dpk_), intent(inout) :: y(:)
@ -1065,7 +1064,7 @@ module psb_d_base_mat_mod
!
interface
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, psb_ipk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta
class(psb_d_base_vect_type), intent(inout) :: x,y
@ -1085,7 +1084,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_scals(d,a,info)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
import
class(psb_d_base_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d
integer(psb_ipk_), intent(out) :: info
@ -1103,7 +1102,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_scal(d,a,info,side)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
import
class(psb_d_base_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1119,7 +1118,7 @@ module psb_d_base_mat_mod
!
interface
function psb_d_base_maxval(a) result(res)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_d_base_maxval
@ -1134,7 +1133,7 @@ module psb_d_base_mat_mod
!
interface
function psb_d_base_csnmi(a) result(res)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_d_base_csnmi
@ -1149,7 +1148,7 @@ module psb_d_base_mat_mod
!
interface
function psb_d_base_csnm1(a) result(res)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_d_base_csnm1
@ -1165,7 +1164,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_rowsum(d,a)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_d_base_rowsum
@ -1179,7 +1178,7 @@ module psb_d_base_mat_mod
!!
interface
subroutine psb_d_base_arwsum(d,a)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_d_base_arwsum
@ -1195,7 +1194,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_base_colsum(d,a)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_d_base_colsum
@ -1209,7 +1208,7 @@ module psb_d_base_mat_mod
!!
interface
subroutine psb_d_base_aclsum(d,a)
import :: psb_ipk_, psb_d_base_sparse_mat, psb_dpk_
import
class(psb_d_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_d_base_aclsum
@ -1229,7 +1228,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_coo_reallocate_nz(nz,a)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_ipk_
import
integer(psb_ipk_), intent(in) :: nz
class(psb_d_coo_sparse_mat), intent(inout) :: a
end subroutine psb_d_coo_reallocate_nz
@ -1242,7 +1241,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_coo_reinit(a,clear)
import :: psb_ipk_, psb_d_coo_sparse_mat
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: clear
end subroutine psb_d_coo_reinit
@ -1254,7 +1253,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_coo_trim(a)
import :: psb_ipk_, psb_d_coo_sparse_mat
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
end subroutine psb_d_coo_trim
end interface
@ -1265,7 +1264,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_coo_clean_zeros(a,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_ipk_
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
end subroutine psb_d_coo_clean_zeros
@ -1278,7 +1277,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_coo_allocate_mnnz(m,n,a,nz)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_ipk_
import
integer(psb_ipk_), intent(in) :: m,n
class(psb_d_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(in), optional :: nz
@ -1290,7 +1289,7 @@ module psb_d_base_mat_mod
!| \see psb_base_mat_mod::psb_base_mold
interface
subroutine psb_d_coo_mold(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat, psb_epk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
class(psb_d_base_sparse_mat), intent(inout), allocatable :: b
integer(psb_ipk_), intent(out) :: info
@ -1312,7 +1311,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_coo_print(iout,a,iv,head,ivr,ivc)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_ipk_
import
integer(psb_ipk_), intent(in) :: iout
class(psb_d_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in), optional :: iv(:)
@ -1333,7 +1332,7 @@ module psb_d_base_mat_mod
!
interface
function psb_d_coo_get_nz_row(idx,a) result(res)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_ipk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: idx
integer(psb_ipk_) :: res
@ -1357,7 +1356,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir)
import :: psb_ipk_, psb_dpk_, psb_ipk_
import
integer(psb_ipk_), intent(in) :: nr,nc,nzin,dupl
integer(psb_ipk_), intent(inout) :: ia(:), ja(:)
real(psb_dpk_), intent(inout) :: val(:)
@ -1377,7 +1376,7 @@ module psb_d_base_mat_mod
!
interface
subroutine psb_d_fix_coo(a,info,idir)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_ipk_
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), intent(in), optional :: idir
@ -1389,7 +1388,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_cp_to_coo
interface
subroutine psb_d_cp_coo_to_coo(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat
import
class(psb_d_coo_sparse_mat), intent(in) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1401,7 +1400,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_cp_from_coo
interface
subroutine psb_d_cp_coo_from_coo(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -1414,7 +1413,7 @@ module psb_d_base_mat_mod
!!
interface
subroutine psb_d_cp_coo_to_fmt(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat
import
class(psb_d_coo_sparse_mat), intent(in) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1427,7 +1426,7 @@ module psb_d_base_mat_mod
!!
interface
subroutine psb_d_cp_coo_from_fmt(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -1439,7 +1438,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_mv_to_coo
interface
subroutine psb_d_mv_coo_to_coo(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1451,7 +1450,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_mv_from_coo
interface
subroutine psb_d_mv_coo_from_coo(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1463,7 +1462,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_mv_to_fmt
interface
subroutine psb_d_mv_coo_to_fmt(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1475,7 +1474,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_mv_from_fmt
interface
subroutine psb_d_mv_coo_from_fmt(a,b,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_d_base_sparse_mat
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
class(psb_d_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1484,7 +1483,7 @@ module psb_d_base_mat_mod
interface
subroutine psb_d_coo_cp_from(a,b)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
type(psb_d_coo_sparse_mat), intent(in) :: b
end subroutine psb_d_coo_cp_from
@ -1492,7 +1491,7 @@ module psb_d_base_mat_mod
interface
subroutine psb_d_coo_mv_from(a,b)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
type(psb_d_coo_sparse_mat), intent(inout) :: b
end subroutine psb_d_coo_mv_from
@ -1517,7 +1516,7 @@ module psb_d_base_mat_mod
!
interface
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_, psb_ipk_
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: val(:)
integer(psb_ipk_), intent(in) :: nz,ia(:), ja(:),&
@ -1533,7 +1532,7 @@ module psb_d_base_mat_mod
interface
subroutine psb_d_coo_csgetptn(imin,imax,a,nz,ia,ja,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: imin,imax
integer(psb_ipk_), intent(out) :: nz
@ -1552,7 +1551,7 @@ module psb_d_base_mat_mod
interface
subroutine psb_d_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: imin,imax
integer(psb_ipk_), intent(out) :: nz
@ -1571,7 +1570,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_cssv
interface
subroutine psb_d_coo_cssv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:)
real(psb_dpk_), intent(inout) :: y(:)
@ -1584,7 +1583,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_cssm
interface
subroutine psb_d_coo_cssm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
real(psb_dpk_), intent(inout) :: y(:,:)
@ -1598,7 +1597,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_csmv
interface
subroutine psb_d_coo_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:)
real(psb_dpk_), intent(inout) :: y(:)
@ -1612,7 +1611,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_csmm
interface
subroutine psb_d_coo_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
real(psb_dpk_), intent(inout) :: y(:,:)
@ -1627,7 +1626,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_maxval
interface
function psb_d_coo_maxval(a) result(res)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_d_coo_maxval
@ -1638,7 +1637,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_csnmi
interface
function psb_d_coo_csnmi(a) result(res)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_d_coo_csnmi
@ -1649,7 +1648,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_csnm1
interface
function psb_d_coo_csnm1(a) result(res)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_d_coo_csnm1
@ -1660,7 +1659,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_rowsum
interface
subroutine psb_d_coo_rowsum(d,a)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_d_coo_rowsum
@ -1670,7 +1669,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_arwsum
interface
subroutine psb_d_coo_arwsum(d,a)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_d_coo_arwsum
@ -1681,7 +1680,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_colsum
interface
subroutine psb_d_coo_colsum(d,a)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_d_coo_colsum
@ -1692,7 +1691,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_aclsum
interface
subroutine psb_d_coo_aclsum(d,a)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_d_coo_aclsum
@ -1703,7 +1702,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_get_diag
interface
subroutine psb_d_coo_get_diag(a,d,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1715,7 +1714,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_scal
interface
subroutine psb_d_coo_scal(d,a,info,side)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1728,7 +1727,7 @@ module psb_d_base_mat_mod
!! \see psb_d_base_mat_mod::psb_d_base_scals
interface
subroutine psb_d_coo_scals(d,a,info)
import :: psb_ipk_, psb_d_coo_sparse_mat, psb_dpk_
import
class(psb_d_coo_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d
integer(psb_ipk_), intent(out) :: info

@ -0,0 +1,901 @@
!
! Parallel Sparse BLAS version 3.5
! (C) Copyright 2006-2018
! Salvatore Filippone
! Alfredo Buttari
!
! Redistribution and use in source and binary forms, with or without
! modification, are permitted provided that the following conditions
! are met:
! 1. Redistributions of source code must retain the above copyright
! notice, this list of conditions and the following disclaimer.
! 2. Redistributions in binary form must reproduce the above copyright
! notice, this list of conditions, and the following disclaimer in the
! documentation and/or other materials provided with the distribution.
! 3. The name of the PSBLAS group or the names of its contributors may
! not be used to endorse or promote products derived from this
! software without specific written permission.
!
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
! ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
! TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
! 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.
!
!
!
! package: psb_lbase_mat_mod
!
! This module contains the definition of the very basic object
! psb_lbase_sparse_mat holding some information common to all matrix
! type variants, such as number of rows and columns, whether the
! matrix is supposed to be triangular (upper or lower) and with a unit
! (i.e. assumed) diagonal, together with some state variables. This
! base class is in common among all variants of real/complex,
! short/long precision; as such, it only contains information that is
! inherently integer in nature.
!
! The methods associated to this class can be grouped into three sets:
! 1) Fully implemented methods: some methods such as get_nrows or
! set_nrows can be fully implemented at this level.
! 2) Partially implemented methods: Some methods have an
! implementation that is split between this level and the leaf
! level. For example, the matrix transposition can be partially
! done at this level (swapping of the rows and columns dimensions)
! but it has to be completed by a method defined at the leaf level
! (for actually transposing the row and column indices).
! 3) Other methods: There are a number of methods that are defined
! (i.e their interface is defined) but not implemented at this
! level. This methods will be overwritten at the leaf level with
! an actual implementation. If it is not the case, the method
! defined at this level will raise an error. These methods are
! defined in the serial/f03/psb_lbase_mat_impl.f03 file
!
!
module psb_lbase_mat_mod
use psb_const_mod
use psi_serial_mod
!
!> \namespace psb_lbase_mod \class psb_lbase_sparse_mat
!! The basic data about your matrix.
!! This class is extended twice, to provide the various
!! data variations S/D/C/Z and to implement the actual
!! storage formats. The grandchild classes are then
!! encapsulated to implement the STATE design pattern.
!! We have an ambiguity in that the inner class has a
!! "state" variable; we hope the context will make it clear.
!!
!!
!! The methods associated to this class can be grouped into three sets:
!! - Fully implemented methods: some methods such as get_nrows or
!! set_nrows can be fully implemented at this level.
!! - Partially implemented methods: Some methods have an
!! implementation that is split between this level and the leaf
!! level. For example, the matrix transposition can be partially
!! done at this level (swapping of the rows and columns dimensions)
!! but it has to be completed by a method defined at the leaf level
!! (for actually transposing the row and column indices).
!! - Other methods: There are a number of methods that are defined
!! (i.e their interface is defined) but not implemented at this
!! level. This methods will be overwritten at the leaf level with
!! an actual implementation. If it is not the case, the method
!! defined at this level will raise an error. These methods are
!! defined in the serial/impl/psb_lbase_mat_impl.f90 file
!!
!
type :: psb_lbase_sparse_mat
!> Row size
integer(psb_lpk_), private :: m
!> Col size
integer(psb_lpk_), private :: n
!> Matrix state:
!! null: pristine;
!! build: it's being filled with entries;
!! assembled: ready to use in computations;
!! update: accepts coefficients but only
!! in already existing entries.
!! The transitions among the states are detailed in
!! psb_T_mat_mod.
integer(psb_ipk_), private :: state
!> How to treat duplicate elements when
!! transitioning from the BUILD to the ASSEMBLED state.
!! While many formats would allow for duplicate
!! entries, it is much better to constrain the matrices
!! NOT to have duplicate entries, except while in the
!! BUILD state; in our overall design, only COO matrices
!! can ever be in the BUILD state, hence all other formats
!! cannot have duplicate entries.
integer(psb_ipk_), private :: duplicate
!> Is the matrix triangular? (must also be square)
logical, private :: triangle
!> Is the matrix upper or lower? (only if triangular)
logical, private :: upper
!> Is the matrix diagonal stored or assumed unitary? (only if triangular)
logical, private :: unitd
!> Are the coefficients sorted ?
logical, private :: sorted
logical, private :: repeatable_updates=.false.
contains
! == = =================================
!
! Getters
!
!
! == = =================================
procedure, pass(a) :: get_nrows => psb_lbase_get_nrows
procedure, pass(a) :: get_ncols => psb_lbase_get_ncols
procedure, pass(a) :: get_nzeros => psb_lbase_get_nzeros
procedure, pass(a) :: get_nz_row => psb_lbase_get_nz_row
procedure, pass(a) :: get_size => psb_lbase_get_size
procedure, pass(a) :: get_state => psb_lbase_get_state
procedure, pass(a) :: get_dupl => psb_lbase_get_dupl
procedure, nopass :: get_fmt => psb_lbase_get_fmt
procedure, nopass :: has_update => psb_lbase_has_update
procedure, pass(a) :: is_null => psb_lbase_is_null
procedure, pass(a) :: is_bld => psb_lbase_is_bld
procedure, pass(a) :: is_upd => psb_lbase_is_upd
procedure, pass(a) :: is_asb => psb_lbase_is_asb
procedure, pass(a) :: is_sorted => psb_lbase_is_sorted
procedure, pass(a) :: is_upper => psb_lbase_is_upper
procedure, pass(a) :: is_lower => psb_lbase_is_lower
procedure, pass(a) :: is_triangle => psb_lbase_is_triangle
procedure, pass(a) :: is_unit => psb_lbase_is_unit
procedure, pass(a) :: is_by_rows => psb_lbase_is_by_rows
procedure, pass(a) :: is_by_cols => psb_lbase_is_by_cols
procedure, pass(a) :: is_repeatable_updates => psb_lbase_is_repeatable_updates
! == = =================================
!
! Setters
!
! == = =================================
procedure, pass(a) :: set_nrows => psb_lbase_set_nrows
procedure, pass(a) :: set_ncols => psb_lbase_set_ncols
procedure, pass(a) :: set_dupl => psb_lbase_set_dupl
procedure, pass(a) :: set_state => psb_lbase_set_state
procedure, pass(a) :: set_null => psb_lbase_set_null
procedure, pass(a) :: set_bld => psb_lbase_set_bld
procedure, pass(a) :: set_upd => psb_lbase_set_upd
procedure, pass(a) :: set_asb => psb_lbase_set_asb
procedure, pass(a) :: set_sorted => psb_lbase_set_sorted
procedure, pass(a) :: set_upper => psb_lbase_set_upper
procedure, pass(a) :: set_lower => psb_lbase_set_lower
procedure, pass(a) :: set_triangle => psb_lbase_set_triangle
procedure, pass(a) :: set_unit => psb_lbase_set_unit
procedure, pass(a) :: set_repeatable_updates => psb_lbase_set_repeatable_updates
! == = =================================
!
! Data management
!
! == = =================================
procedure, pass(a) :: get_neigh => psb_lbase_get_neigh
procedure, pass(a) :: free => psb_lbase_free
procedure, pass(a) :: asb => psb_lbase_mat_asb
procedure, pass(a) :: trim => psb_lbase_trim
procedure, pass(a) :: reinit => psb_lbase_reinit
procedure, pass(a) :: allocate_mnnz => psb_lbase_allocate_mnnz
procedure, pass(a) :: reallocate_nz => psb_lbase_reallocate_nz
generic, public :: allocate => allocate_mnnz
generic, public :: reallocate => reallocate_nz
procedure, pass(a) :: csgetptn => psb_lbase_csgetptn
generic, public :: csget => csgetptn
procedure, pass(a) :: print => psb_lbase_sparse_print
procedure, pass(a) :: sizeof => psb_lbase_sizeof
procedure, pass(a) :: transp_1mat => psb_lbase_transp_1mat
procedure, pass(a) :: transp_2mat => psb_lbase_transp_2mat
generic, public :: transp => transp_1mat, transp_2mat
procedure, pass(a) :: transc_1mat => psb_lbase_transc_1mat
procedure, pass(a) :: transc_2mat => psb_lbase_transc_2mat
generic, public :: transc => transc_1mat, transc_2mat
!
! Sync: centerpiece of handling of external storage.
! Any derived class having extra storage upon sync
! will guarantee that both fortran/host side and
! external side contain the same data. The base
! version is only a placeholder.
!
procedure, pass(a) :: sync => psb_lbase_mat_sync
procedure, pass(a) :: is_host => psb_lbase_mat_is_host
procedure, pass(a) :: is_dev => psb_lbase_mat_is_dev
procedure, pass(a) :: is_sync => psb_lbase_mat_is_sync
procedure, pass(a) :: set_host => psb_lbase_mat_set_host
procedure, pass(a) :: set_dev => psb_lbase_mat_set_dev
procedure, pass(a) :: set_sync => psb_lbase_mat_set_sync
end type psb_lbase_sparse_mat
!> Function: psb_lbase_get_nz_row
!! \memberof psb_lbase_sparse_mat
!! Interface for the get_nz_row method. Equivalent to:
!! count(A(idx,:)/=0)
!! \param idx The line we are interested in.
!
interface
function psb_lbase_get_nz_row(idx,a) result(res)
import :: psb_lpk_, psb_epk_, psb_lbase_sparse_mat
integer(psb_lpk_), intent(in) :: idx
class(psb_lbase_sparse_mat), intent(in) :: a
integer(psb_lpk_) :: res
end function psb_lbase_get_nz_row
end interface
!
!> Function: psb_lbase_get_nzeros
!! \memberof psb_lbase_sparse_mat
!! Interface for the get_nzeros method. Equivalent to:
!! count(A(:,:)/=0)
!
interface
function psb_lbase_get_nzeros(a) result(res)
import :: psb_lpk_, psb_epk_, psb_lbase_sparse_mat
class(psb_lbase_sparse_mat), intent(in) :: a
integer(psb_lpk_) :: res
end function psb_lbase_get_nzeros
end interface
!> Function get_size
!! \memberof psb_lbase_sparse_mat
!! how many items can A hold with
!! its current space allocation?
!! (as opposed to how many are
!! currently occupied)
!
interface
function psb_lbase_get_size(a) result(res)
import :: psb_lpk_, psb_epk_, psb_lbase_sparse_mat
class(psb_lbase_sparse_mat), intent(in) :: a
integer(psb_lpk_) :: res
end function psb_lbase_get_size
end interface
!
!> Function reinit: transition state from ASB to UPDATE
!! \memberof psb_lbase_sparse_mat
!! \param clear [true] explicitly zero out coefficients.
!
interface
subroutine psb_lbase_reinit(a,clear)
import :: psb_ipk_, psb_epk_, psb_lbase_sparse_mat
class(psb_lbase_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: clear
end subroutine psb_lbase_reinit
end interface
!
!> Function
!! \memberof psb_lbase_sparse_mat
!! print on file in Matrix Market format.
!! \param iout the output unit
!! \param iv(:) [none] renumber both row and column indices
!! \param head [none] a descriptive header for the matrix data
!! \param ivr(:) [none] renumbering for the rows
!! \param ivc(:) [none] renumbering for the cols
!
interface
subroutine psb_lbase_sparse_print(iout,a,iv,head,ivr,ivc)
import :: psb_ipk_, psb_lpk_, psb_epk_, psb_lbase_sparse_mat
integer(psb_ipk_), intent(in) :: iout
class(psb_lbase_sparse_mat), intent(in) :: a
integer(psb_lpk_), intent(in), optional :: iv(:)
character(len=*), optional :: head
integer(psb_lpk_), intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_lbase_sparse_print
end interface
!
!> Function getptn:
!! \memberof psb_lbase_sparse_mat
!! \brief Get the pattern.
!!
!!
!! Return a list of NZ pairs
!! (IA(i),JA(i))
!! each identifying the position of a nonzero in A
!! between row indices IMIN:IMAX;
!! IA,JA are reallocated as necessary.
!! \param imin the minimum row index we are interested in
!! \param imax the minimum row index we are interested in
!! \param nz the number of output coefficients
!! \param ia(:) the output row indices
!! \param ja(:) the output col indices
!! \param info return code
!! \param jmin [1] minimum col index
!! \param jmax [a\%get_ncols()] maximum col index
!! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:))
!! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1]
!! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1]
!! ( iren cannot be specified with rscale/cscale)
!! \param append [false] append to ia,ja
!! \param nzin [none] if append, then first new entry should go in entry nzin+1
!
interface
subroutine psb_lbase_csgetptn(imin,imax,a,nz,ia,ja,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_lpk_, psb_epk_, psb_lbase_sparse_mat
class(psb_lbase_sparse_mat), intent(in) :: a
integer(psb_lpk_), intent(in) :: imin,imax
integer(psb_lpk_), intent(out) :: nz
integer(psb_lpk_), allocatable, intent(inout) :: ia(:), ja(:)
integer(psb_ipk_),intent(out) :: info
logical, intent(in), optional :: append
integer(psb_lpk_), intent(in), optional :: iren(:)
integer(psb_lpk_), intent(in), optional :: jmin,jmax, nzin
logical, intent(in), optional :: rscale,cscale
end subroutine psb_lbase_csgetptn
end interface
!
!> Function get_neigh:
!! \memberof psb_lbase_sparse_mat
!! \brief Get the neighbours.
!!
!!
!! Return a list of N indices of neighbours of index idx,
!! i.e. the indices of the nonzeros in row idx of matrix A
!! \param idx the index we are interested in
!! \param neigh(:) the list of indices, reallocated as necessary
!! \param n the number of indices returned
!! \param info return code
!! \param lev [1] find neighbours recursively for LEV levels,
!! i.e. when lev=2 find neighours of neighbours, etc.
!
interface
subroutine psb_lbase_get_neigh(a,idx,neigh,n,info,lev)
import :: psb_ipk_, psb_lpk_, psb_epk_, psb_lbase_sparse_mat
class(psb_lbase_sparse_mat), intent(in) :: a
integer(psb_lpk_), intent(in) :: idx
integer(psb_lpk_), intent(out) :: n
integer(psb_lpk_), allocatable, intent(out) :: neigh(:)
integer(psb_ipk_), intent(out) :: info
integer(psb_lpk_), optional, intent(in) :: lev
end subroutine psb_lbase_get_neigh
end interface
!
!
!> Function allocate_mnnz
!! \memberof psb_lbase_sparse_mat
!! \brief Three-parameters version of allocate
!!
!! \param m number of rows
!! \param n number of cols
!! \param nz [estimated internally] number of nonzeros to allocate for
!
interface
subroutine psb_lbase_allocate_mnnz(m,n,a,nz)
import :: psb_ipk_, psb_lpk_, psb_epk_, psb_lbase_sparse_mat
integer(psb_lpk_), intent(in) :: m,n
class(psb_lbase_sparse_mat), intent(inout) :: a
integer(psb_lpk_), intent(in), optional :: nz
end subroutine psb_lbase_allocate_mnnz
end interface
!
!
!> Function reallocate_nz
!! \memberof psb_lbase_sparse_mat
!! \brief One--parameter version of (re)allocate
!!
!! \param nz number of nonzeros to allocate for
!
interface
subroutine psb_lbase_reallocate_nz(nz,a)
import :: psb_ipk_, psb_lpk_, psb_epk_, psb_lbase_sparse_mat
integer(psb_lpk_), intent(in) :: nz
class(psb_lbase_sparse_mat), intent(inout) :: a
end subroutine psb_lbase_reallocate_nz
end interface
!
!> Function free
!! \memberof psb_lbase_sparse_mat
!! \brief destructor
!
interface
subroutine psb_lbase_free(a)
import :: psb_ipk_, psb_lpk_, psb_epk_, psb_lbase_sparse_mat
class(psb_lbase_sparse_mat), intent(inout) :: a
end subroutine psb_lbase_free
end interface
!
!> Function trim
!! \memberof psb_lbase_sparse_mat
!! \brief Memory trim
!! Make sure the memory allocation of the sparse matrix is as tight as
!! possible given the actual number of nonzeros it contains.
!
interface
subroutine psb_lbase_trim(a)
import :: psb_ipk_, psb_lpk_, psb_epk_, psb_lbase_sparse_mat
class(psb_lbase_sparse_mat), intent(inout) :: a
end subroutine psb_lbase_trim
end interface
contains
!
!> Function sizeof
!! \memberof psb_lbase_sparse_mat
!! \brief Memory occupation in byes
!
function psb_lbase_sizeof(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
integer(psb_epk_) :: res
res = 8
end function psb_lbase_sizeof
!
!> Function get_fmt
!! \memberof psb_lbase_sparse_mat
!! \brief return a short descriptive name (e.g. COO CSR etc.)
!
function psb_lbase_get_fmt() result(res)
implicit none
character(len=5) :: res
res = 'NULL'
end function psb_lbase_get_fmt
!
!> Function has_update
!! \memberof psb_lbase_sparse_mat
!! \brief Does the forma have the UPDATE functionality?
!
function psb_lbase_has_update() result(res)
implicit none
logical :: res
res = .true.
end function psb_lbase_has_update
!
! Standard getter functions: self-explaining.
!
function psb_lbase_get_dupl(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
integer(psb_ipk_) :: res
res = a%duplicate
end function psb_lbase_get_dupl
function psb_lbase_get_state(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
integer(psb_ipk_) :: res
res = a%state
end function psb_lbase_get_state
function psb_lbase_get_nrows(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
integer(psb_lpk_) :: res
res = a%m
end function psb_lbase_get_nrows
function psb_lbase_get_ncols(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
integer(psb_lpk_) :: res
res = a%n
end function psb_lbase_get_ncols
subroutine psb_lbase_set_nrows(m,a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
integer(psb_lpk_), intent(in) :: m
a%m = m
end subroutine psb_lbase_set_nrows
subroutine psb_lbase_set_ncols(n,a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
integer(psb_lpk_), intent(in) :: n
a%n = n
end subroutine psb_lbase_set_ncols
subroutine psb_lbase_set_state(n,a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
integer(psb_lpk_), intent(in) :: n
a%state = n
end subroutine psb_lbase_set_state
subroutine psb_lbase_set_dupl(n,a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(in) :: n
a%duplicate = n
end subroutine psb_lbase_set_dupl
subroutine psb_lbase_set_null(a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
a%state = psb_spmat_null_
end subroutine psb_lbase_set_null
subroutine psb_lbase_set_bld(a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
a%state = psb_spmat_bld_
end subroutine psb_lbase_set_bld
subroutine psb_lbase_set_upd(a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
a%state = psb_spmat_upd_
end subroutine psb_lbase_set_upd
subroutine psb_lbase_set_asb(a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
a%state = psb_spmat_asb_
end subroutine psb_lbase_set_asb
subroutine psb_lbase_set_sorted(a,val)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: val
if (present(val)) then
a%sorted = val
else
a%sorted = .true.
end if
end subroutine psb_lbase_set_sorted
subroutine psb_lbase_set_triangle(a,val)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: val
if (present(val)) then
a%triangle = val
else
a%triangle = .true.
end if
end subroutine psb_lbase_set_triangle
subroutine psb_lbase_set_unit(a,val)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: val
if (present(val)) then
a%unitd = val
else
a%unitd = .true.
end if
end subroutine psb_lbase_set_unit
subroutine psb_lbase_set_lower(a,val)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: val
if (present(val)) then
a%upper = .not.val
else
a%upper = .false.
end if
end subroutine psb_lbase_set_lower
subroutine psb_lbase_set_upper(a,val)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: val
if (present(val)) then
a%upper = val
else
a%upper = .true.
end if
end subroutine psb_lbase_set_upper
subroutine psb_lbase_set_repeatable_updates(a,val)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: val
if (present(val)) then
a%repeatable_updates = val
else
a%repeatable_updates = .true.
end if
end subroutine psb_lbase_set_repeatable_updates
function psb_lbase_is_triangle(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = a%triangle
end function psb_lbase_is_triangle
function psb_lbase_is_unit(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = a%unitd
end function psb_lbase_is_unit
function psb_lbase_is_upper(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = a%upper
end function psb_lbase_is_upper
function psb_lbase_is_lower(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = .not.a%upper
end function psb_lbase_is_lower
function psb_lbase_is_null(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = (a%state == psb_spmat_null_)
end function psb_lbase_is_null
function psb_lbase_is_bld(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = (a%state == psb_spmat_bld_)
end function psb_lbase_is_bld
function psb_lbase_is_upd(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = (a%state == psb_spmat_upd_)
end function psb_lbase_is_upd
function psb_lbase_is_asb(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = (a%state == psb_spmat_asb_)
end function psb_lbase_is_asb
function psb_lbase_is_sorted(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = a%sorted
end function psb_lbase_is_sorted
function psb_lbase_is_by_rows(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = .false.
end function psb_lbase_is_by_rows
function psb_lbase_is_by_cols(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = .false.
end function psb_lbase_is_by_cols
function psb_lbase_is_repeatable_updates(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = a%repeatable_updates
end function psb_lbase_is_repeatable_updates
!
! TRANSP: note sorted=.false.
! better invoke a fix() too many than
! regret it later...
!
subroutine psb_lbase_transp_2mat(a,b)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
class(psb_lbase_sparse_mat), intent(out) :: b
b%m = a%n
b%n = a%m
b%state = a%state
b%duplicate = a%duplicate
b%triangle = a%triangle
b%unitd = a%unitd
b%upper = .not.a%upper
b%sorted = .false.
b%repeatable_updates = .false.
end subroutine psb_lbase_transp_2mat
subroutine psb_lbase_transc_2mat(a,b)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
class(psb_lbase_sparse_mat), intent(out) :: b
b%m = a%n
b%n = a%m
b%state = a%state
b%duplicate = a%duplicate
b%triangle = a%triangle
b%unitd = a%unitd
b%upper = .not.a%upper
b%sorted = .false.
b%repeatable_updates = .false.
end subroutine psb_lbase_transc_2mat
subroutine psb_lbase_transp_1mat(a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
integer(psb_lpk_) :: itmp
itmp = a%m
a%m = a%n
a%n = itmp
a%state = a%state
a%duplicate = a%duplicate
a%triangle = a%triangle
a%unitd = a%unitd
a%upper = .not.a%upper
a%sorted = .false.
a%repeatable_updates = .false.
end subroutine psb_lbase_transp_1mat
subroutine psb_lbase_transc_1mat(a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
call a%transp()
end subroutine psb_lbase_transc_1mat
!
!> Function base_asb:
!! \memberof psb_lbase_sparse_mat
!! \brief Sync: base version calls sync and the set_asb.
!!
!
subroutine psb_lbase_mat_asb(a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
call a%sync()
call a%set_asb()
end subroutine psb_lbase_mat_asb
!
! The base version of SYNC & friends does nothing, it's just
! a placeholder.
!
!
!> Function base_sync:
!! \memberof psb_lbase_sparse_mat
!! \brief Sync: base version is a no-op.
!!
!
subroutine psb_lbase_mat_sync(a)
implicit none
class(psb_lbase_sparse_mat), target, intent(in) :: a
end subroutine psb_lbase_mat_sync
!
!> Function base_set_host:
!! \memberof psb_lbase_sparse_mat
!! \brief Set_host: base version is a no-op.
!!
!
subroutine psb_lbase_mat_set_host(a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
end subroutine psb_lbase_mat_set_host
!
!> Function base_set_dev:
!! \memberof psb_lbase_sparse_mat
!! \brief Set_dev: base version is a no-op.
!!
!
subroutine psb_lbase_mat_set_dev(a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
end subroutine psb_lbase_mat_set_dev
!
!> Function base_set_sync:
!! \memberof psb_lbase_sparse_mat
!! \brief Set_sync: base version is a no-op.
!!
!
subroutine psb_lbase_mat_set_sync(a)
implicit none
class(psb_lbase_sparse_mat), intent(inout) :: a
end subroutine psb_lbase_mat_set_sync
!
!> Function base_is_dev:
!! \memberof psb_lbase_sparse_mat
!! \brief Is matrix on eaternal device .
!!
!
function psb_lbase_mat_is_dev(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = .false.
end function psb_lbase_mat_is_dev
!
!> Function base_is_host
!! \memberof psb_lbase_sparse_mat
!! \brief Is matrix on standard memory .
!!
!
function psb_lbase_mat_is_host(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = .true.
end function psb_lbase_mat_is_host
!
!> Function base_is_sync
!! \memberof psb_lbase_sparse_mat
!! \brief Is matrix on sync .
!!
!
function psb_lbase_mat_is_sync(a) result(res)
implicit none
class(psb_lbase_sparse_mat), intent(in) :: a
logical :: res
res = .true.
end function psb_lbase_mat_is_sync
end module psb_lbase_mat_mod

@ -33,13 +33,13 @@
!
module psb_ld_base_mat_mod
use psb_base_mat_mod
use psb_ld_base_vect_mod
use psb_lbase_mat_mod
use psb_d_base_vect_mod
!> \namespace psb_base_mod \class psb_ld_base_sparse_mat
!! \extends psb_base_mat_mod::psb_base_sparse_mat
!! The psb_ld_base_sparse_mat type, extending psb_base_sparse_mat,
!! \extends psb_lbase_mat_mod::psb_lbase_sparse_mat
!! The psb_ld_base_sparse_mat type, extending psb_lbase_sparse_mat,
!! defines a middle level real(psb_dpk_) sparse matrix object.
!! This class object itself does not have any additional members
!! with respect to those of the base class. Most methods cannot be fully
@ -52,7 +52,7 @@ module psb_ld_base_mat_mod
!! not yet supporting ALLOCATE( ...,MOLD=...); it's otherwise silly to
!! duplicate "by hand" what is specified in the language (in this case F2008)
!!
type, extends(psb_base_sparse_mat) :: psb_ld_base_sparse_mat
type, extends(psb_lbase_sparse_mat) :: psb_ld_base_sparse_mat
contains
!
! Data management methods: defined here, but (mostly) not implemented.
@ -260,7 +260,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: val(:)
integer(psb_lpk_), intent(in) :: nz, ia(:), ja(:), imin,imax,jmin,jmax
@ -271,10 +271,9 @@ module psb_ld_base_mat_mod
interface
subroutine psb_ld_base_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_, &
& psb_ld_base_vect_type, psb_i_base_vect_type
import
class(psb_ld_base_sparse_mat), intent(inout) :: a
class(psb_ld_base_vect_type), intent(inout) :: val
class(psb_d_base_vect_type), intent(inout) :: val
class(psb_i_base_vect_type), intent(inout) :: ia, ja
integer(psb_lpk_), intent(in) :: nz, imin, imax,jmin,jmax
integer(psb_ipk_), intent(out) :: info
@ -317,7 +316,7 @@ module psb_ld_base_mat_mod
interface
subroutine psb_ld_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
integer(psb_lpk_), intent(in) :: imin,imax
integer(psb_lpk_), intent(out) :: nz
@ -356,7 +355,7 @@ module psb_ld_base_mat_mod
interface
subroutine psb_ld_base_csgetblk(imin,imax,a,b,info,&
& jmin,jmax,iren,append,rscale,cscale)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_ld_coo_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
class(psb_ld_coo_sparse_mat), intent(inout) :: b
integer(psb_lpk_), intent(in) :: imin,imax
@ -394,7 +393,7 @@ module psb_ld_base_mat_mod
interface
subroutine psb_ld_base_csclip(a,b,info,&
& imin,imax,jmin,jmax,rscale,cscale)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_ld_coo_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
class(psb_ld_coo_sparse_mat), intent(out) :: b
integer(psb_ipk_),intent(out) :: info
@ -435,7 +434,7 @@ module psb_ld_base_mat_mod
interface
subroutine psb_ld_base_tril(a,l,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale,u)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_ld_coo_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
class(psb_ld_coo_sparse_mat), intent(out) :: l
integer(psb_ipk_),intent(out) :: info
@ -479,7 +478,7 @@ module psb_ld_base_mat_mod
interface
subroutine psb_ld_base_triu(a,u,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale,l)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_ld_coo_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
class(psb_ld_coo_sparse_mat), intent(out) :: u
integer(psb_ipk_),intent(out) :: info
@ -502,7 +501,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_get_diag(a,d,info)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -521,7 +520,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_mold(a,b,info)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_epk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
class(psb_ld_base_sparse_mat), intent(inout), allocatable :: b
integer(psb_ipk_), intent(out) :: info
@ -543,7 +542,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_clone(a,b, info)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_epk_
import
implicit none
class(psb_ld_base_sparse_mat), intent(inout) :: a
class(psb_ld_base_sparse_mat), allocatable, intent(inout) :: b
@ -562,7 +561,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_make_nonunit(a)
import :: psb_ld_base_sparse_mat
import
implicit none
class(psb_ld_base_sparse_mat), intent(inout) :: a
end subroutine psb_ld_base_make_nonunit
@ -579,7 +578,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_cp_to_coo(a,b,info)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
class(psb_ld_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -596,7 +595,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_cp_from_coo(a,b,info)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_ld_coo_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(inout) :: a
class(psb_ld_coo_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -614,7 +613,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_cp_to_fmt(a,b,info)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
class(psb_ld_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -632,7 +631,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_cp_from_fmt(a,b,info)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(inout) :: a
class(psb_ld_base_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -649,7 +648,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_mv_to_coo(a,b,info)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_ld_coo_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(inout) :: a
class(psb_ld_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -666,7 +665,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_mv_from_coo(a,b,info)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_ld_coo_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(inout) :: a
class(psb_ld_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -684,7 +683,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_mv_to_fmt(a,b,info)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(inout) :: a
class(psb_ld_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -702,7 +701,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_mv_from_fmt(a,b,info)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(inout) :: a
class(psb_ld_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -715,7 +714,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_clean_zeros(a, info)
import :: psb_ipk_, psb_ld_base_sparse_mat
import
class(psb_ld_base_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
end subroutine psb_ld_base_clean_zeros
@ -731,9 +730,9 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_transp_2mat(a,b)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
class(psb_base_sparse_mat), intent(out) :: b
class(psb_lbase_sparse_mat), intent(out) :: b
end subroutine psb_ld_base_transp_2mat
end interface
@ -747,9 +746,9 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_transc_2mat(a,b)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
class(psb_base_sparse_mat), intent(out) :: b
class(psb_lbase_sparse_mat), intent(out) :: b
end subroutine psb_ld_base_transc_2mat
end interface
@ -762,7 +761,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_transp_1mat(a)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(inout) :: a
end subroutine psb_ld_base_transp_1mat
end interface
@ -776,7 +775,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_transc_1mat(a)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(inout) :: a
end subroutine psb_ld_base_transc_1mat
end interface
@ -801,7 +800,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
real(psb_dpk_), intent(inout) :: y(:,:)
@ -829,7 +828,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:)
real(psb_dpk_), intent(inout) :: y(:)
@ -864,11 +863,11 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_vect_mv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_ld_base_vect_type, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta
class(psb_ld_base_vect_type), intent(inout) :: x
class(psb_ld_base_vect_type), intent(inout) :: y
class(psb_d_base_vect_type), intent(inout) :: x
class(psb_d_base_vect_type), intent(inout) :: y
integer(psb_ipk_), intent(out) :: info
character, optional, intent(in) :: trans
end subroutine psb_ld_base_vect_mv
@ -896,7 +895,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_inner_cssm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
real(psb_dpk_), intent(inout) :: y(:,:)
@ -931,7 +930,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_inner_cssv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:)
real(psb_dpk_), intent(inout) :: y(:)
@ -966,10 +965,10 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_inner_vect_sv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_ld_base_vect_type, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta
class(psb_ld_base_vect_type), intent(inout) :: x, y
class(psb_d_base_vect_type), intent(inout) :: x, y
integer(psb_ipk_), intent(out) :: info
character, optional, intent(in) :: trans
end subroutine psb_ld_base_inner_vect_sv
@ -998,7 +997,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_cssm(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
real(psb_dpk_), intent(inout) :: y(:,:)
@ -1031,7 +1030,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_cssv(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:)
real(psb_dpk_), intent(inout) :: y(:)
@ -1065,13 +1064,13 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_,psb_ld_base_vect_type, psb_lpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta
class(psb_ld_base_vect_type), intent(inout) :: x,y
class(psb_d_base_vect_type), intent(inout) :: x,y
integer(psb_ipk_), intent(out) :: info
character, optional, intent(in) :: trans, scale
class(psb_ld_base_vect_type), optional, intent(inout) :: d
class(psb_d_base_vect_type), optional, intent(inout) :: d
end subroutine psb_ld_base_vect_cssv
end interface
@ -1085,7 +1084,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_scals(d,a,info)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_
import
class(psb_ld_base_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d
integer(psb_ipk_), intent(out) :: info
@ -1103,7 +1102,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_scal(d,a,info,side)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_
import
class(psb_ld_base_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1119,7 +1118,7 @@ module psb_ld_base_mat_mod
!
interface
function psb_ld_base_maxval(a) result(res)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_ld_base_maxval
@ -1134,7 +1133,7 @@ module psb_ld_base_mat_mod
!
interface
function psb_ld_base_csnmi(a) result(res)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_ld_base_csnmi
@ -1149,7 +1148,7 @@ module psb_ld_base_mat_mod
!
interface
function psb_ld_base_csnm1(a) result(res)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_ld_base_csnm1
@ -1165,7 +1164,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_rowsum(d,a)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_ld_base_rowsum
@ -1179,7 +1178,7 @@ module psb_ld_base_mat_mod
!!
interface
subroutine psb_ld_base_arwsum(d,a)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_ld_base_arwsum
@ -1195,7 +1194,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_base_colsum(d,a)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_ld_base_colsum
@ -1209,7 +1208,7 @@ module psb_ld_base_mat_mod
!!
interface
subroutine psb_ld_base_aclsum(d,a)
import :: psb_ipk_, psb_ld_base_sparse_mat, psb_dpk_
import
class(psb_ld_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_ld_base_aclsum
@ -1225,11 +1224,11 @@ module psb_ld_base_mat_mod
!
!>
!! \memberof psb_ld_coo_sparse_mat
!! \see psb_base_mat_mod::psb_base_reallocate_nz
!! \see psb_lbase_mat_mod::psb_base_reallocate_nz
!
interface
subroutine psb_ld_coo_reallocate_nz(nz,a)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_lpk_
import
integer(psb_ipk_), intent(in) :: nz
class(psb_ld_coo_sparse_mat), intent(inout) :: a
end subroutine psb_ld_coo_reallocate_nz
@ -1238,11 +1237,11 @@ module psb_ld_base_mat_mod
!
!>
!! \memberof psb_ld_coo_sparse_mat
!! \see psb_base_mat_mod::psb_base_reinit
!! \see psb_lbase_mat_mod::psb_base_reinit
!
interface
subroutine psb_ld_coo_reinit(a,clear)
import :: psb_ipk_, psb_ld_coo_sparse_mat
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: clear
end subroutine psb_ld_coo_reinit
@ -1250,11 +1249,11 @@ module psb_ld_base_mat_mod
!
!>
!! \memberof psb_ld_coo_sparse_mat
!! \see psb_base_mat_mod::psb_base_trim
!! \see psb_lbase_mat_mod::psb_base_trim
!
interface
subroutine psb_ld_coo_trim(a)
import :: psb_ipk_, psb_ld_coo_sparse_mat
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
end subroutine psb_ld_coo_trim
end interface
@ -1265,7 +1264,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_coo_clean_zeros(a,info)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_lpk_
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
end subroutine psb_ld_coo_clean_zeros
@ -1274,11 +1273,11 @@ module psb_ld_base_mat_mod
!
!>
!! \memberof psb_ld_coo_sparse_mat
!! \see psb_base_mat_mod::psb_base_allocate_mnnz
!! \see psb_lbase_mat_mod::psb_base_allocate_mnnz
!
interface
subroutine psb_ld_coo_allocate_mnnz(m,n,a,nz)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_lpk_
import
integer(psb_lpk_), intent(in) :: m,n
class(psb_ld_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(in), optional :: nz
@ -1287,10 +1286,10 @@ module psb_ld_base_mat_mod
!> \memberof psb_ld_coo_sparse_mat
!| \see psb_base_mat_mod::psb_base_mold
!| \see psb_lbase_mat_mod::psb_base_mold
interface
subroutine psb_ld_coo_mold(a,b,info)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_ld_base_sparse_mat, psb_epk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
class(psb_ld_base_sparse_mat), intent(inout), allocatable :: b
integer(psb_ipk_), intent(out) :: info
@ -1312,7 +1311,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_coo_print(iout,a,iv,head,ivr,ivc)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_lpk_
import
integer(psb_ipk_), intent(in) :: iout
class(psb_ld_coo_sparse_mat), intent(in) :: a
integer(psb_lpk_), intent(in), optional :: iv(:)
@ -1333,7 +1332,7 @@ module psb_ld_base_mat_mod
!
interface
function psb_ld_coo_get_nz_row(idx,a) result(res)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_lpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: idx
integer(psb_lpk_) :: res
@ -1357,7 +1356,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir)
import :: psb_ipk_, psb_dpk_, psb_lpk_
import
integer(psb_ipk_), intent(in) :: nr,nc,nzin,dupl
integer(psb_lpk_), intent(inout) :: ia(:), ja(:)
real(psb_dpk_), intent(inout) :: val(:)
@ -1377,7 +1376,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_fix_coo(a,info,idir)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_lpk_
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), intent(in), optional :: idir
@ -1389,7 +1388,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_cp_to_coo
interface
subroutine psb_ld_cp_coo_to_coo(a,b,info)
import :: psb_ipk_, psb_ld_coo_sparse_mat
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
class(psb_ld_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1401,7 +1400,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_cp_from_coo
interface
subroutine psb_ld_cp_coo_from_coo(a,b,info)
import :: psb_ipk_, psb_ld_coo_sparse_mat
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
class(psb_ld_coo_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -1414,7 +1413,7 @@ module psb_ld_base_mat_mod
!!
interface
subroutine psb_ld_cp_coo_to_fmt(a,b,info)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_ld_base_sparse_mat
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
class(psb_ld_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1427,7 +1426,7 @@ module psb_ld_base_mat_mod
!!
interface
subroutine psb_ld_cp_coo_from_fmt(a,b,info)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_ld_base_sparse_mat
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
class(psb_ld_base_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -1439,7 +1438,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_mv_to_coo
interface
subroutine psb_ld_mv_coo_to_coo(a,b,info)
import :: psb_ipk_, psb_ld_coo_sparse_mat
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
class(psb_ld_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1451,7 +1450,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_mv_from_coo
interface
subroutine psb_ld_mv_coo_from_coo(a,b,info)
import :: psb_ipk_, psb_ld_coo_sparse_mat
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
class(psb_ld_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1463,7 +1462,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_mv_to_fmt
interface
subroutine psb_ld_mv_coo_to_fmt(a,b,info)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_ld_base_sparse_mat
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
class(psb_ld_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1475,7 +1474,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_mv_from_fmt
interface
subroutine psb_ld_mv_coo_from_fmt(a,b,info)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_ld_base_sparse_mat
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
class(psb_ld_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1484,7 +1483,7 @@ module psb_ld_base_mat_mod
interface
subroutine psb_ld_coo_cp_from(a,b)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
type(psb_ld_coo_sparse_mat), intent(in) :: b
end subroutine psb_ld_coo_cp_from
@ -1492,7 +1491,7 @@ module psb_ld_base_mat_mod
interface
subroutine psb_ld_coo_mv_from(a,b)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
type(psb_ld_coo_sparse_mat), intent(inout) :: b
end subroutine psb_ld_coo_mv_from
@ -1517,7 +1516,7 @@ module psb_ld_base_mat_mod
!
interface
subroutine psb_ld_coo_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: val(:)
integer(psb_lpk_), intent(in) :: nz,ia(:), ja(:),&
@ -1529,11 +1528,11 @@ module psb_ld_base_mat_mod
!>
!! \memberof psb_ld_coo_sparse_mat
!! \see psb_base_mat_mod::psb_base_csgetptn
!! \see psb_lbase_mat_mod::psb_base_csgetptn
interface
subroutine psb_ld_coo_csgetptn(imin,imax,a,nz,ia,ja,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
integer(psb_lpk_), intent(in) :: imin,imax
integer(psb_lpk_), intent(out) :: nz
@ -1552,7 +1551,7 @@ module psb_ld_base_mat_mod
interface
subroutine psb_ld_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_, psb_lpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
integer(psb_lpk_), intent(in) :: imin,imax
integer(psb_lpk_), intent(out) :: nz
@ -1571,7 +1570,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_cssv
interface
subroutine psb_ld_coo_cssv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:)
real(psb_dpk_), intent(inout) :: y(:)
@ -1584,7 +1583,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_cssm
interface
subroutine psb_ld_coo_cssm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
real(psb_dpk_), intent(inout) :: y(:,:)
@ -1598,7 +1597,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_csmv
interface
subroutine psb_ld_coo_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:)
real(psb_dpk_), intent(inout) :: y(:)
@ -1612,7 +1611,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_csmm
interface
subroutine psb_ld_coo_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
real(psb_dpk_), intent(inout) :: y(:,:)
@ -1627,7 +1626,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_maxval
interface
function psb_ld_coo_maxval(a) result(res)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_ld_coo_maxval
@ -1638,7 +1637,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_csnmi
interface
function psb_ld_coo_csnmi(a) result(res)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_ld_coo_csnmi
@ -1649,7 +1648,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_csnm1
interface
function psb_ld_coo_csnm1(a) result(res)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_ld_coo_csnm1
@ -1660,7 +1659,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_rowsum
interface
subroutine psb_ld_coo_rowsum(d,a)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_ld_coo_rowsum
@ -1670,7 +1669,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_arwsum
interface
subroutine psb_ld_coo_arwsum(d,a)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_ld_coo_arwsum
@ -1681,7 +1680,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_colsum
interface
subroutine psb_ld_coo_colsum(d,a)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_ld_coo_colsum
@ -1692,7 +1691,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_aclsum
interface
subroutine psb_ld_coo_aclsum(d,a)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_ld_coo_aclsum
@ -1703,7 +1702,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_get_diag
interface
subroutine psb_ld_coo_get_diag(a,d,info)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1715,7 +1714,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_scal
interface
subroutine psb_ld_coo_scal(d,a,info,side)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1728,7 +1727,7 @@ module psb_ld_base_mat_mod
!! \see psb_ld_base_mat_mod::psb_ld_base_scals
interface
subroutine psb_ld_coo_scals(d,a,info)
import :: psb_ipk_, psb_ld_coo_sparse_mat, psb_dpk_
import
class(psb_ld_coo_sparse_mat), intent(inout) :: a
real(psb_dpk_), intent(in) :: d
integer(psb_ipk_), intent(out) :: info
@ -1937,7 +1936,7 @@ contains
integer(psb_lpk_), allocatable :: itemp(:)
integer(psb_ipk_) :: info
call a%psb_ld_base_sparse_mat%psb_base_sparse_mat%transp()
call a%psb_ld_base_sparse_mat%psb_lbase_sparse_mat%transp()
call move_alloc(a%ia,itemp)
call move_alloc(a%ja,a%ia)
call move_alloc(itemp,a%ja)

@ -260,7 +260,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(inout) :: a
real(psb_spk_), intent(in) :: val(:)
integer(psb_ipk_), intent(in) :: nz, ia(:), ja(:), imin,imax,jmin,jmax
@ -271,8 +271,7 @@ module psb_s_base_mat_mod
interface
subroutine psb_s_base_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_, &
& psb_s_base_vect_type, psb_i_base_vect_type
import
class(psb_s_base_sparse_mat), intent(inout) :: a
class(psb_s_base_vect_type), intent(inout) :: val
class(psb_i_base_vect_type), intent(inout) :: ia, ja
@ -317,7 +316,7 @@ module psb_s_base_mat_mod
interface
subroutine psb_s_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: imin,imax
integer(psb_ipk_), intent(out) :: nz
@ -356,7 +355,7 @@ module psb_s_base_mat_mod
interface
subroutine psb_s_base_csgetblk(imin,imax,a,b,info,&
& jmin,jmax,iren,append,rscale,cscale)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_s_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
class(psb_s_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(in) :: imin,imax
@ -394,7 +393,7 @@ module psb_s_base_mat_mod
interface
subroutine psb_s_base_csclip(a,b,info,&
& imin,imax,jmin,jmax,rscale,cscale)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_s_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
class(psb_s_coo_sparse_mat), intent(out) :: b
integer(psb_ipk_),intent(out) :: info
@ -435,7 +434,7 @@ module psb_s_base_mat_mod
interface
subroutine psb_s_base_tril(a,l,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale,u)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_s_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
class(psb_s_coo_sparse_mat), intent(out) :: l
integer(psb_ipk_),intent(out) :: info
@ -479,7 +478,7 @@ module psb_s_base_mat_mod
interface
subroutine psb_s_base_triu(a,u,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale,l)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_s_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
class(psb_s_coo_sparse_mat), intent(out) :: u
integer(psb_ipk_),intent(out) :: info
@ -502,7 +501,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_get_diag(a,d,info)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -521,7 +520,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_mold(a,b,info)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_epk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
class(psb_s_base_sparse_mat), intent(inout), allocatable :: b
integer(psb_ipk_), intent(out) :: info
@ -543,7 +542,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_clone(a,b, info)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_epk_
import
implicit none
class(psb_s_base_sparse_mat), intent(inout) :: a
class(psb_s_base_sparse_mat), allocatable, intent(inout) :: b
@ -562,7 +561,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_make_nonunit(a)
import :: psb_s_base_sparse_mat
import
implicit none
class(psb_s_base_sparse_mat), intent(inout) :: a
end subroutine psb_s_base_make_nonunit
@ -579,7 +578,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_cp_to_coo(a,b,info)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
class(psb_s_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -596,7 +595,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_cp_from_coo(a,b,info)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_s_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(inout) :: a
class(psb_s_coo_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -614,7 +613,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_cp_to_fmt(a,b,info)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
class(psb_s_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -632,7 +631,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_cp_from_fmt(a,b,info)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(inout) :: a
class(psb_s_base_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -649,7 +648,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_mv_to_coo(a,b,info)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_s_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(inout) :: a
class(psb_s_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -666,7 +665,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_mv_from_coo(a,b,info)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_s_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(inout) :: a
class(psb_s_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -684,7 +683,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_mv_to_fmt(a,b,info)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(inout) :: a
class(psb_s_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -702,7 +701,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_mv_from_fmt(a,b,info)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(inout) :: a
class(psb_s_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -715,7 +714,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_clean_zeros(a, info)
import :: psb_ipk_, psb_s_base_sparse_mat
import
class(psb_s_base_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
end subroutine psb_s_base_clean_zeros
@ -731,7 +730,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_transp_2mat(a,b)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
class(psb_base_sparse_mat), intent(out) :: b
end subroutine psb_s_base_transp_2mat
@ -747,7 +746,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_transc_2mat(a,b)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
class(psb_base_sparse_mat), intent(out) :: b
end subroutine psb_s_base_transc_2mat
@ -762,7 +761,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_transp_1mat(a)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(inout) :: a
end subroutine psb_s_base_transp_1mat
end interface
@ -776,7 +775,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_transc_1mat(a)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(inout) :: a
end subroutine psb_s_base_transc_1mat
end interface
@ -801,7 +800,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(in) :: alpha, beta, x(:,:)
real(psb_spk_), intent(inout) :: y(:,:)
@ -829,7 +828,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(in) :: alpha, beta, x(:)
real(psb_spk_), intent(inout) :: y(:)
@ -864,7 +863,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_vect_mv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_s_base_vect_type, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(in) :: alpha, beta
class(psb_s_base_vect_type), intent(inout) :: x
@ -896,7 +895,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_inner_cssm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(in) :: alpha, beta, x(:,:)
real(psb_spk_), intent(inout) :: y(:,:)
@ -931,7 +930,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_inner_cssv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(in) :: alpha, beta, x(:)
real(psb_spk_), intent(inout) :: y(:)
@ -966,7 +965,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_inner_vect_sv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_s_base_vect_type, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(in) :: alpha, beta
class(psb_s_base_vect_type), intent(inout) :: x, y
@ -998,7 +997,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_cssm(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(in) :: alpha, beta, x(:,:)
real(psb_spk_), intent(inout) :: y(:,:)
@ -1031,7 +1030,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_cssv(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(in) :: alpha, beta, x(:)
real(psb_spk_), intent(inout) :: y(:)
@ -1065,7 +1064,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_,psb_s_base_vect_type, psb_ipk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(in) :: alpha, beta
class(psb_s_base_vect_type), intent(inout) :: x,y
@ -1085,7 +1084,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_scals(d,a,info)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_
import
class(psb_s_base_sparse_mat), intent(inout) :: a
real(psb_spk_), intent(in) :: d
integer(psb_ipk_), intent(out) :: info
@ -1103,7 +1102,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_scal(d,a,info,side)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_
import
class(psb_s_base_sparse_mat), intent(inout) :: a
real(psb_spk_), intent(in) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1119,7 +1118,7 @@ module psb_s_base_mat_mod
!
interface
function psb_s_base_maxval(a) result(res)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_) :: res
end function psb_s_base_maxval
@ -1134,7 +1133,7 @@ module psb_s_base_mat_mod
!
interface
function psb_s_base_csnmi(a) result(res)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_) :: res
end function psb_s_base_csnmi
@ -1149,7 +1148,7 @@ module psb_s_base_mat_mod
!
interface
function psb_s_base_csnm1(a) result(res)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_) :: res
end function psb_s_base_csnm1
@ -1165,7 +1164,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_rowsum(d,a)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
end subroutine psb_s_base_rowsum
@ -1179,7 +1178,7 @@ module psb_s_base_mat_mod
!!
interface
subroutine psb_s_base_arwsum(d,a)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
end subroutine psb_s_base_arwsum
@ -1195,7 +1194,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_base_colsum(d,a)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
end subroutine psb_s_base_colsum
@ -1209,7 +1208,7 @@ module psb_s_base_mat_mod
!!
interface
subroutine psb_s_base_aclsum(d,a)
import :: psb_ipk_, psb_s_base_sparse_mat, psb_spk_
import
class(psb_s_base_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
end subroutine psb_s_base_aclsum
@ -1229,7 +1228,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_coo_reallocate_nz(nz,a)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_ipk_
import
integer(psb_ipk_), intent(in) :: nz
class(psb_s_coo_sparse_mat), intent(inout) :: a
end subroutine psb_s_coo_reallocate_nz
@ -1242,7 +1241,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_coo_reinit(a,clear)
import :: psb_ipk_, psb_s_coo_sparse_mat
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: clear
end subroutine psb_s_coo_reinit
@ -1254,7 +1253,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_coo_trim(a)
import :: psb_ipk_, psb_s_coo_sparse_mat
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
end subroutine psb_s_coo_trim
end interface
@ -1265,7 +1264,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_coo_clean_zeros(a,info)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_ipk_
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
end subroutine psb_s_coo_clean_zeros
@ -1278,7 +1277,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_coo_allocate_mnnz(m,n,a,nz)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_ipk_
import
integer(psb_ipk_), intent(in) :: m,n
class(psb_s_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(in), optional :: nz
@ -1290,7 +1289,7 @@ module psb_s_base_mat_mod
!| \see psb_base_mat_mod::psb_base_mold
interface
subroutine psb_s_coo_mold(a,b,info)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_s_base_sparse_mat, psb_epk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
class(psb_s_base_sparse_mat), intent(inout), allocatable :: b
integer(psb_ipk_), intent(out) :: info
@ -1312,7 +1311,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_coo_print(iout,a,iv,head,ivr,ivc)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_ipk_
import
integer(psb_ipk_), intent(in) :: iout
class(psb_s_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in), optional :: iv(:)
@ -1333,7 +1332,7 @@ module psb_s_base_mat_mod
!
interface
function psb_s_coo_get_nz_row(idx,a) result(res)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_ipk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: idx
integer(psb_ipk_) :: res
@ -1357,7 +1356,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir)
import :: psb_ipk_, psb_spk_, psb_ipk_
import
integer(psb_ipk_), intent(in) :: nr,nc,nzin,dupl
integer(psb_ipk_), intent(inout) :: ia(:), ja(:)
real(psb_spk_), intent(inout) :: val(:)
@ -1377,7 +1376,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_fix_coo(a,info,idir)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_ipk_
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), intent(in), optional :: idir
@ -1389,7 +1388,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_cp_to_coo
interface
subroutine psb_s_cp_coo_to_coo(a,b,info)
import :: psb_ipk_, psb_s_coo_sparse_mat
import
class(psb_s_coo_sparse_mat), intent(in) :: a
class(psb_s_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1401,7 +1400,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_cp_from_coo
interface
subroutine psb_s_cp_coo_from_coo(a,b,info)
import :: psb_ipk_, psb_s_coo_sparse_mat
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
class(psb_s_coo_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -1414,7 +1413,7 @@ module psb_s_base_mat_mod
!!
interface
subroutine psb_s_cp_coo_to_fmt(a,b,info)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_s_base_sparse_mat
import
class(psb_s_coo_sparse_mat), intent(in) :: a
class(psb_s_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1427,7 +1426,7 @@ module psb_s_base_mat_mod
!!
interface
subroutine psb_s_cp_coo_from_fmt(a,b,info)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_s_base_sparse_mat
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
class(psb_s_base_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -1439,7 +1438,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_mv_to_coo
interface
subroutine psb_s_mv_coo_to_coo(a,b,info)
import :: psb_ipk_, psb_s_coo_sparse_mat
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
class(psb_s_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1451,7 +1450,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_mv_from_coo
interface
subroutine psb_s_mv_coo_from_coo(a,b,info)
import :: psb_ipk_, psb_s_coo_sparse_mat
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
class(psb_s_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1463,7 +1462,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_mv_to_fmt
interface
subroutine psb_s_mv_coo_to_fmt(a,b,info)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_s_base_sparse_mat
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
class(psb_s_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1475,7 +1474,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_mv_from_fmt
interface
subroutine psb_s_mv_coo_from_fmt(a,b,info)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_s_base_sparse_mat
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
class(psb_s_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1484,7 +1483,7 @@ module psb_s_base_mat_mod
interface
subroutine psb_s_coo_cp_from(a,b)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
type(psb_s_coo_sparse_mat), intent(in) :: b
end subroutine psb_s_coo_cp_from
@ -1492,7 +1491,7 @@ module psb_s_base_mat_mod
interface
subroutine psb_s_coo_mv_from(a,b)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
type(psb_s_coo_sparse_mat), intent(inout) :: b
end subroutine psb_s_coo_mv_from
@ -1517,7 +1516,7 @@ module psb_s_base_mat_mod
!
interface
subroutine psb_s_coo_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
real(psb_spk_), intent(in) :: val(:)
integer(psb_ipk_), intent(in) :: nz,ia(:), ja(:),&
@ -1533,7 +1532,7 @@ module psb_s_base_mat_mod
interface
subroutine psb_s_coo_csgetptn(imin,imax,a,nz,ia,ja,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: imin,imax
integer(psb_ipk_), intent(out) :: nz
@ -1552,7 +1551,7 @@ module psb_s_base_mat_mod
interface
subroutine psb_s_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_, psb_ipk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: imin,imax
integer(psb_ipk_), intent(out) :: nz
@ -1571,7 +1570,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_cssv
interface
subroutine psb_s_coo_cssv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
real(psb_spk_), intent(in) :: alpha, beta, x(:)
real(psb_spk_), intent(inout) :: y(:)
@ -1584,7 +1583,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_cssm
interface
subroutine psb_s_coo_cssm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
real(psb_spk_), intent(in) :: alpha, beta, x(:,:)
real(psb_spk_), intent(inout) :: y(:,:)
@ -1598,7 +1597,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_csmv
interface
subroutine psb_s_coo_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
real(psb_spk_), intent(in) :: alpha, beta, x(:)
real(psb_spk_), intent(inout) :: y(:)
@ -1612,7 +1611,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_csmm
interface
subroutine psb_s_coo_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
real(psb_spk_), intent(in) :: alpha, beta, x(:,:)
real(psb_spk_), intent(inout) :: y(:,:)
@ -1627,7 +1626,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_maxval
interface
function psb_s_coo_maxval(a) result(res)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
real(psb_spk_) :: res
end function psb_s_coo_maxval
@ -1638,7 +1637,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_csnmi
interface
function psb_s_coo_csnmi(a) result(res)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
real(psb_spk_) :: res
end function psb_s_coo_csnmi
@ -1649,7 +1648,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_csnm1
interface
function psb_s_coo_csnm1(a) result(res)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
real(psb_spk_) :: res
end function psb_s_coo_csnm1
@ -1660,7 +1659,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_rowsum
interface
subroutine psb_s_coo_rowsum(d,a)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
end subroutine psb_s_coo_rowsum
@ -1670,7 +1669,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_arwsum
interface
subroutine psb_s_coo_arwsum(d,a)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
end subroutine psb_s_coo_arwsum
@ -1681,7 +1680,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_colsum
interface
subroutine psb_s_coo_colsum(d,a)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
end subroutine psb_s_coo_colsum
@ -1692,7 +1691,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_aclsum
interface
subroutine psb_s_coo_aclsum(d,a)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
end subroutine psb_s_coo_aclsum
@ -1703,7 +1702,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_get_diag
interface
subroutine psb_s_coo_get_diag(a,d,info)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(in) :: a
real(psb_spk_), intent(out) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1715,7 +1714,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_scal
interface
subroutine psb_s_coo_scal(d,a,info,side)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
real(psb_spk_), intent(in) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1728,7 +1727,7 @@ module psb_s_base_mat_mod
!! \see psb_s_base_mat_mod::psb_s_base_scals
interface
subroutine psb_s_coo_scals(d,a,info)
import :: psb_ipk_, psb_s_coo_sparse_mat, psb_spk_
import
class(psb_s_coo_sparse_mat), intent(inout) :: a
real(psb_spk_), intent(in) :: d
integer(psb_ipk_), intent(out) :: info

@ -260,7 +260,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(inout) :: a
complex(psb_dpk_), intent(in) :: val(:)
integer(psb_ipk_), intent(in) :: nz, ia(:), ja(:), imin,imax,jmin,jmax
@ -271,8 +271,7 @@ module psb_z_base_mat_mod
interface
subroutine psb_z_base_csput_v(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_, &
& psb_z_base_vect_type, psb_i_base_vect_type
import
class(psb_z_base_sparse_mat), intent(inout) :: a
class(psb_z_base_vect_type), intent(inout) :: val
class(psb_i_base_vect_type), intent(inout) :: ia, ja
@ -317,7 +316,7 @@ module psb_z_base_mat_mod
interface
subroutine psb_z_base_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: imin,imax
integer(psb_ipk_), intent(out) :: nz
@ -356,7 +355,7 @@ module psb_z_base_mat_mod
interface
subroutine psb_z_base_csgetblk(imin,imax,a,b,info,&
& jmin,jmax,iren,append,rscale,cscale)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
class(psb_z_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(in) :: imin,imax
@ -394,7 +393,7 @@ module psb_z_base_mat_mod
interface
subroutine psb_z_base_csclip(a,b,info,&
& imin,imax,jmin,jmax,rscale,cscale)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
class(psb_z_coo_sparse_mat), intent(out) :: b
integer(psb_ipk_),intent(out) :: info
@ -435,7 +434,7 @@ module psb_z_base_mat_mod
interface
subroutine psb_z_base_tril(a,l,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale,u)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
class(psb_z_coo_sparse_mat), intent(out) :: l
integer(psb_ipk_),intent(out) :: info
@ -479,7 +478,7 @@ module psb_z_base_mat_mod
interface
subroutine psb_z_base_triu(a,u,info,diag,imin,imax,&
& jmin,jmax,rscale,cscale,l)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
class(psb_z_coo_sparse_mat), intent(out) :: u
integer(psb_ipk_),intent(out) :: info
@ -502,7 +501,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_get_diag(a,d,info)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(out) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -521,7 +520,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_mold(a,b,info)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_epk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
class(psb_z_base_sparse_mat), intent(inout), allocatable :: b
integer(psb_ipk_), intent(out) :: info
@ -543,7 +542,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_clone(a,b, info)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_epk_
import
implicit none
class(psb_z_base_sparse_mat), intent(inout) :: a
class(psb_z_base_sparse_mat), allocatable, intent(inout) :: b
@ -562,7 +561,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_make_nonunit(a)
import :: psb_z_base_sparse_mat
import
implicit none
class(psb_z_base_sparse_mat), intent(inout) :: a
end subroutine psb_z_base_make_nonunit
@ -579,7 +578,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_cp_to_coo(a,b,info)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
class(psb_z_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -596,7 +595,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_cp_from_coo(a,b,info)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(inout) :: a
class(psb_z_coo_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -614,7 +613,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_cp_to_fmt(a,b,info)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
class(psb_z_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -632,7 +631,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_cp_from_fmt(a,b,info)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(inout) :: a
class(psb_z_base_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -649,7 +648,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_mv_to_coo(a,b,info)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(inout) :: a
class(psb_z_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -666,7 +665,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_mv_from_coo(a,b,info)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(inout) :: a
class(psb_z_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -684,7 +683,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_mv_to_fmt(a,b,info)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(inout) :: a
class(psb_z_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -702,7 +701,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_mv_from_fmt(a,b,info)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(inout) :: a
class(psb_z_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -715,7 +714,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_clean_zeros(a, info)
import :: psb_ipk_, psb_z_base_sparse_mat
import
class(psb_z_base_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
end subroutine psb_z_base_clean_zeros
@ -731,7 +730,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_transp_2mat(a,b)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
class(psb_base_sparse_mat), intent(out) :: b
end subroutine psb_z_base_transp_2mat
@ -747,7 +746,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_transc_2mat(a,b)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
class(psb_base_sparse_mat), intent(out) :: b
end subroutine psb_z_base_transc_2mat
@ -762,7 +761,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_transp_1mat(a)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(inout) :: a
end subroutine psb_z_base_transp_1mat
end interface
@ -776,7 +775,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_transc_1mat(a)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(inout) :: a
end subroutine psb_z_base_transc_1mat
end interface
@ -801,7 +800,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
complex(psb_dpk_), intent(inout) :: y(:,:)
@ -829,7 +828,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(in) :: alpha, beta, x(:)
complex(psb_dpk_), intent(inout) :: y(:)
@ -864,7 +863,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_vect_mv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_z_base_vect_type, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(in) :: alpha, beta
class(psb_z_base_vect_type), intent(inout) :: x
@ -896,7 +895,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_inner_cssm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
complex(psb_dpk_), intent(inout) :: y(:,:)
@ -931,7 +930,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_inner_cssv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(in) :: alpha, beta, x(:)
complex(psb_dpk_), intent(inout) :: y(:)
@ -966,7 +965,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_inner_vect_sv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_z_base_vect_type, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(in) :: alpha, beta
class(psb_z_base_vect_type), intent(inout) :: x, y
@ -998,7 +997,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_cssm(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
complex(psb_dpk_), intent(inout) :: y(:,:)
@ -1031,7 +1030,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_cssv(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(in) :: alpha, beta, x(:)
complex(psb_dpk_), intent(inout) :: y(:)
@ -1065,7 +1064,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_vect_cssv(alpha,a,x,beta,y,info,trans,scale,d)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_,psb_z_base_vect_type, psb_ipk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(in) :: alpha, beta
class(psb_z_base_vect_type), intent(inout) :: x,y
@ -1085,7 +1084,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_scals(d,a,info)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_
import
class(psb_z_base_sparse_mat), intent(inout) :: a
complex(psb_dpk_), intent(in) :: d
integer(psb_ipk_), intent(out) :: info
@ -1103,7 +1102,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_scal(d,a,info,side)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_
import
class(psb_z_base_sparse_mat), intent(inout) :: a
complex(psb_dpk_), intent(in) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1119,7 +1118,7 @@ module psb_z_base_mat_mod
!
interface
function psb_z_base_maxval(a) result(res)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_z_base_maxval
@ -1134,7 +1133,7 @@ module psb_z_base_mat_mod
!
interface
function psb_z_base_csnmi(a) result(res)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_z_base_csnmi
@ -1149,7 +1148,7 @@ module psb_z_base_mat_mod
!
interface
function psb_z_base_csnm1(a) result(res)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_z_base_csnm1
@ -1165,7 +1164,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_rowsum(d,a)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(out) :: d(:)
end subroutine psb_z_base_rowsum
@ -1179,7 +1178,7 @@ module psb_z_base_mat_mod
!!
interface
subroutine psb_z_base_arwsum(d,a)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_z_base_arwsum
@ -1195,7 +1194,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_base_colsum(d,a)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(out) :: d(:)
end subroutine psb_z_base_colsum
@ -1209,7 +1208,7 @@ module psb_z_base_mat_mod
!!
interface
subroutine psb_z_base_aclsum(d,a)
import :: psb_ipk_, psb_z_base_sparse_mat, psb_dpk_
import
class(psb_z_base_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_z_base_aclsum
@ -1229,7 +1228,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_coo_reallocate_nz(nz,a)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_ipk_
import
integer(psb_ipk_), intent(in) :: nz
class(psb_z_coo_sparse_mat), intent(inout) :: a
end subroutine psb_z_coo_reallocate_nz
@ -1242,7 +1241,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_coo_reinit(a,clear)
import :: psb_ipk_, psb_z_coo_sparse_mat
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: clear
end subroutine psb_z_coo_reinit
@ -1254,7 +1253,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_coo_trim(a)
import :: psb_ipk_, psb_z_coo_sparse_mat
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
end subroutine psb_z_coo_trim
end interface
@ -1265,7 +1264,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_coo_clean_zeros(a,info)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_ipk_
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
end subroutine psb_z_coo_clean_zeros
@ -1278,7 +1277,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_coo_allocate_mnnz(m,n,a,nz)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_ipk_
import
integer(psb_ipk_), intent(in) :: m,n
class(psb_z_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(in), optional :: nz
@ -1290,7 +1289,7 @@ module psb_z_base_mat_mod
!| \see psb_base_mat_mod::psb_base_mold
interface
subroutine psb_z_coo_mold(a,b,info)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_z_base_sparse_mat, psb_epk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
class(psb_z_base_sparse_mat), intent(inout), allocatable :: b
integer(psb_ipk_), intent(out) :: info
@ -1312,7 +1311,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_coo_print(iout,a,iv,head,ivr,ivc)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_ipk_
import
integer(psb_ipk_), intent(in) :: iout
class(psb_z_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in), optional :: iv(:)
@ -1333,7 +1332,7 @@ module psb_z_base_mat_mod
!
interface
function psb_z_coo_get_nz_row(idx,a) result(res)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_ipk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: idx
integer(psb_ipk_) :: res
@ -1357,7 +1356,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_fix_coo_inner(nr,nc,nzin,dupl,ia,ja,val,nzout,info,idir)
import :: psb_ipk_, psb_dpk_, psb_ipk_
import
integer(psb_ipk_), intent(in) :: nr,nc,nzin,dupl
integer(psb_ipk_), intent(inout) :: ia(:), ja(:)
complex(psb_dpk_), intent(inout) :: val(:)
@ -1377,7 +1376,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_fix_coo(a,info,idir)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_ipk_
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), intent(in), optional :: idir
@ -1389,7 +1388,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_cp_to_coo
interface
subroutine psb_z_cp_coo_to_coo(a,b,info)
import :: psb_ipk_, psb_z_coo_sparse_mat
import
class(psb_z_coo_sparse_mat), intent(in) :: a
class(psb_z_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1401,7 +1400,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_cp_from_coo
interface
subroutine psb_z_cp_coo_from_coo(a,b,info)
import :: psb_ipk_, psb_z_coo_sparse_mat
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
class(psb_z_coo_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -1414,7 +1413,7 @@ module psb_z_base_mat_mod
!!
interface
subroutine psb_z_cp_coo_to_fmt(a,b,info)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_z_base_sparse_mat
import
class(psb_z_coo_sparse_mat), intent(in) :: a
class(psb_z_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1427,7 +1426,7 @@ module psb_z_base_mat_mod
!!
interface
subroutine psb_z_cp_coo_from_fmt(a,b,info)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_z_base_sparse_mat
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
class(psb_z_base_sparse_mat), intent(in) :: b
integer(psb_ipk_), intent(out) :: info
@ -1439,7 +1438,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_mv_to_coo
interface
subroutine psb_z_mv_coo_to_coo(a,b,info)
import :: psb_ipk_, psb_z_coo_sparse_mat
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
class(psb_z_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1451,7 +1450,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_mv_from_coo
interface
subroutine psb_z_mv_coo_from_coo(a,b,info)
import :: psb_ipk_, psb_z_coo_sparse_mat
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
class(psb_z_coo_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1463,7 +1462,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_mv_to_fmt
interface
subroutine psb_z_mv_coo_to_fmt(a,b,info)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_z_base_sparse_mat
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
class(psb_z_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1475,7 +1474,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_mv_from_fmt
interface
subroutine psb_z_mv_coo_from_fmt(a,b,info)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_z_base_sparse_mat
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
class(psb_z_base_sparse_mat), intent(inout) :: b
integer(psb_ipk_), intent(out) :: info
@ -1484,7 +1483,7 @@ module psb_z_base_mat_mod
interface
subroutine psb_z_coo_cp_from(a,b)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
type(psb_z_coo_sparse_mat), intent(in) :: b
end subroutine psb_z_coo_cp_from
@ -1492,7 +1491,7 @@ module psb_z_base_mat_mod
interface
subroutine psb_z_coo_mv_from(a,b)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
type(psb_z_coo_sparse_mat), intent(inout) :: b
end subroutine psb_z_coo_mv_from
@ -1517,7 +1516,7 @@ module psb_z_base_mat_mod
!
interface
subroutine psb_z_coo_csput_a(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
complex(psb_dpk_), intent(in) :: val(:)
integer(psb_ipk_), intent(in) :: nz,ia(:), ja(:),&
@ -1533,7 +1532,7 @@ module psb_z_base_mat_mod
interface
subroutine psb_z_coo_csgetptn(imin,imax,a,nz,ia,ja,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: imin,imax
integer(psb_ipk_), intent(out) :: nz
@ -1552,7 +1551,7 @@ module psb_z_base_mat_mod
interface
subroutine psb_z_coo_csgetrow(imin,imax,a,nz,ia,ja,val,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_, psb_ipk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
integer(psb_ipk_), intent(in) :: imin,imax
integer(psb_ipk_), intent(out) :: nz
@ -1571,7 +1570,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_cssv
interface
subroutine psb_z_coo_cssv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(in) :: alpha, beta, x(:)
complex(psb_dpk_), intent(inout) :: y(:)
@ -1584,7 +1583,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_cssm
interface
subroutine psb_z_coo_cssm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
complex(psb_dpk_), intent(inout) :: y(:,:)
@ -1598,7 +1597,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_csmv
interface
subroutine psb_z_coo_csmv(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(in) :: alpha, beta, x(:)
complex(psb_dpk_), intent(inout) :: y(:)
@ -1612,7 +1611,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_csmm
interface
subroutine psb_z_coo_csmm(alpha,a,x,beta,y,info,trans)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(in) :: alpha, beta, x(:,:)
complex(psb_dpk_), intent(inout) :: y(:,:)
@ -1627,7 +1626,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_maxval
interface
function psb_z_coo_maxval(a) result(res)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_z_coo_maxval
@ -1638,7 +1637,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_csnmi
interface
function psb_z_coo_csnmi(a) result(res)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_z_coo_csnmi
@ -1649,7 +1648,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_csnm1
interface
function psb_z_coo_csnm1(a) result(res)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
real(psb_dpk_) :: res
end function psb_z_coo_csnm1
@ -1660,7 +1659,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_rowsum
interface
subroutine psb_z_coo_rowsum(d,a)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(out) :: d(:)
end subroutine psb_z_coo_rowsum
@ -1670,7 +1669,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_arwsum
interface
subroutine psb_z_coo_arwsum(d,a)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_z_coo_arwsum
@ -1681,7 +1680,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_colsum
interface
subroutine psb_z_coo_colsum(d,a)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(out) :: d(:)
end subroutine psb_z_coo_colsum
@ -1692,7 +1691,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_aclsum
interface
subroutine psb_z_coo_aclsum(d,a)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(out) :: d(:)
end subroutine psb_z_coo_aclsum
@ -1703,7 +1702,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_get_diag
interface
subroutine psb_z_coo_get_diag(a,d,info)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(in) :: a
complex(psb_dpk_), intent(out) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1715,7 +1714,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_scal
interface
subroutine psb_z_coo_scal(d,a,info,side)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
complex(psb_dpk_), intent(in) :: d(:)
integer(psb_ipk_), intent(out) :: info
@ -1728,7 +1727,7 @@ module psb_z_base_mat_mod
!! \see psb_z_base_mat_mod::psb_z_base_scals
interface
subroutine psb_z_coo_scals(d,a,info)
import :: psb_ipk_, psb_z_coo_sparse_mat, psb_dpk_
import
class(psb_z_coo_sparse_mat), intent(inout) :: a
complex(psb_dpk_), intent(in) :: d
integer(psb_ipk_), intent(out) :: info

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

Loading…
Cancel
Save