mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-20 12:52:14 +00:00
psblas-typext
Modified the spmat_types to contain type-bound procedures for CSMM and CSSM. Modified the PSBLAS and psb_map accordingly.
This commit is contained in:
@@ -23,7 +23,7 @@ lib: mpfobjs $(MODULES) $(OBJS) $(LIBMOD)
|
||||
/bin/cp -p *$(.mod) $(LIBDIR)
|
||||
|
||||
psb_realloc_mod.o : psb_error_mod.o
|
||||
psb_spmat_type.o : psb_realloc_mod.o psb_error_mod.o psb_const_mod.o psb_string_mod.o
|
||||
psb_spmat_type.o : psb_realloc_mod.o psb_error_mod.o psb_const_mod.o psb_string_mod.o psb_sort_mod.o
|
||||
psb_error_mod.o: psb_const_mod.o
|
||||
psb_penv_mod.o: psb_const_mod.o psb_error_mod.o psb_realloc_mod.o psb_blacs_mod.o
|
||||
psb_blacs_mod.o: psb_const_mod.o
|
||||
|
||||
+142
-140
@@ -58,147 +58,149 @@ module psb_serial_mod
|
||||
end subroutine psb_zcsrws
|
||||
end interface
|
||||
|
||||
interface psb_cssm
|
||||
subroutine psb_scssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_sspmat_type) :: t
|
||||
real(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
real(psb_spk_), optional, target :: d(:)
|
||||
end subroutine psb_scssm
|
||||
subroutine psb_scssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_sspmat_type) :: t
|
||||
real(psb_spk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
real(psb_spk_), optional, target :: d(:)
|
||||
end subroutine psb_scssv
|
||||
subroutine psb_dcssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_dspmat_type) :: t
|
||||
real(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
real(psb_dpk_), optional, target :: d(:)
|
||||
end subroutine psb_dcssm
|
||||
subroutine psb_dcssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_dspmat_type) :: t
|
||||
real(psb_dpk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
real(psb_dpk_), optional, target :: d(:)
|
||||
end subroutine psb_dcssv
|
||||
subroutine psb_ccssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_cspmat_type) :: t
|
||||
complex(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
complex(psb_spk_), optional, target :: d(:)
|
||||
end subroutine psb_ccssm
|
||||
subroutine psb_ccssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_cspmat_type) :: t
|
||||
complex(psb_spk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
complex(psb_spk_), optional, target :: d(:)
|
||||
end subroutine psb_ccssv
|
||||
subroutine psb_zcssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_zspmat_type) :: t
|
||||
complex(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
complex(psb_dpk_), optional, target :: d(:)
|
||||
end subroutine psb_zcssm
|
||||
subroutine psb_zcssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_zspmat_type) :: t
|
||||
complex(psb_dpk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
complex(psb_dpk_), optional, target :: d(:)
|
||||
end subroutine psb_zcssv
|
||||
end interface
|
||||
!!$ interface psb_cssm
|
||||
!!$ subroutine psb_scssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_sspmat_type) :: t
|
||||
!!$ real(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans, unitd
|
||||
!!$ real(psb_spk_), optional, target :: d(:)
|
||||
!!$ end subroutine psb_scssm
|
||||
!!$ subroutine psb_scssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_sspmat_type) :: t
|
||||
!!$ real(psb_spk_) :: alpha, beta, b(:), c(:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans, unitd
|
||||
!!$ real(psb_spk_), optional, target :: d(:)
|
||||
!!$ end subroutine psb_scssv
|
||||
!!$ subroutine psb_dcssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_dspmat_type) :: t
|
||||
!!$ real(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans, unitd
|
||||
!!$ real(psb_dpk_), optional, target :: d(:)
|
||||
!!$ end subroutine psb_dcssm
|
||||
!!$ subroutine psb_dcssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_dspmat_type) :: t
|
||||
!!$ real(psb_dpk_) :: alpha, beta, b(:), c(:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans, unitd
|
||||
!!$ real(psb_dpk_), optional, target :: d(:)
|
||||
!!$ end subroutine psb_dcssv
|
||||
!!$ subroutine psb_ccssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_cspmat_type) :: t
|
||||
!!$ complex(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans, unitd
|
||||
!!$ complex(psb_spk_), optional, target :: d(:)
|
||||
!!$ end subroutine psb_ccssm
|
||||
!!$ subroutine psb_ccssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_cspmat_type) :: t
|
||||
!!$ complex(psb_spk_) :: alpha, beta, b(:), c(:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans, unitd
|
||||
!!$ complex(psb_spk_), optional, target :: d(:)
|
||||
!!$ end subroutine psb_ccssv
|
||||
!!$ subroutine psb_zcssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_zspmat_type) :: t
|
||||
!!$ complex(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans, unitd
|
||||
!!$ complex(psb_dpk_), optional, target :: d(:)
|
||||
!!$ end subroutine psb_zcssm
|
||||
!!$ subroutine psb_zcssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_zspmat_type) :: t
|
||||
!!$ complex(psb_dpk_) :: alpha, beta, b(:), c(:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans, unitd
|
||||
!!$ complex(psb_dpk_), optional, target :: d(:)
|
||||
!!$ end subroutine psb_zcssv
|
||||
!!$ end interface
|
||||
|
||||
interface psb_csmm
|
||||
subroutine psb_scsmv(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_sspmat_type) :: a
|
||||
real(psb_spk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_scsmv
|
||||
subroutine psb_scsmm(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_sspmat_type) :: a
|
||||
real(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_scsmm
|
||||
subroutine psb_dcsmv(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_dspmat_type) :: a
|
||||
real(psb_dpk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_dcsmv
|
||||
subroutine psb_dcsmm(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_dspmat_type) :: a
|
||||
real(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_dcsmm
|
||||
subroutine psb_ccsmv(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_cspmat_type) :: a
|
||||
complex(psb_spk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_ccsmv
|
||||
subroutine psb_ccsmm(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_cspmat_type) :: a
|
||||
complex(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_ccsmm
|
||||
subroutine psb_zcsmv(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_zspmat_type) :: a
|
||||
complex(psb_dpk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_zcsmv
|
||||
subroutine psb_zcsmm(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_zspmat_type) :: a
|
||||
complex(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_zcsmm
|
||||
end interface
|
||||
!!$ interface psb_csmm
|
||||
!!$ module procedure psb_scsmm, psb_scsmv, psb_dcsmm, psb_dcsmv,&
|
||||
!!$ & psb_ccsmm, psb_ccsmv, psb_zcsmm, psb_zcsmv
|
||||
!!$ subroutine psb_scsmv(alpha,a,b,beta,c,info,trans)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_sspmat_type) :: a
|
||||
!!$ real(psb_spk_) :: alpha, beta, b(:), c(:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans
|
||||
!!$ end subroutine psb_scsmv
|
||||
!!$ subroutine psb_scsmm(alpha,a,b,beta,c,info,trans)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_sspmat_type) :: a
|
||||
!!$ real(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans
|
||||
!!$ end subroutine psb_scsmm
|
||||
!!$ subroutine psb_dcsmv(alpha,a,b,beta,c,info,trans)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_dspmat_type) :: a
|
||||
!!$ real(psb_dpk_) :: alpha, beta, b(:), c(:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans
|
||||
!!$ end subroutine psb_dcsmv
|
||||
!!$ subroutine psb_dcsmm(alpha,a,b,beta,c,info,trans)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_dspmat_type) :: a
|
||||
!!$ real(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans
|
||||
!!$ end subroutine psb_dcsmm
|
||||
!!$ subroutine psb_ccsmv(alpha,a,b,beta,c,info,trans)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_cspmat_type) :: a
|
||||
!!$ complex(psb_spk_) :: alpha, beta, b(:), c(:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans
|
||||
!!$ end subroutine psb_ccsmv
|
||||
!!$ subroutine psb_ccsmm(alpha,a,b,beta,c,info,trans)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_cspmat_type) :: a
|
||||
!!$ complex(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans
|
||||
!!$ end subroutine psb_ccsmm
|
||||
!!$ subroutine psb_zcsmv(alpha,a,b,beta,c,info,trans)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_zspmat_type) :: a
|
||||
!!$ complex(psb_dpk_) :: alpha, beta, b(:), c(:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans
|
||||
!!$ end subroutine psb_zcsmv
|
||||
!!$ subroutine psb_zcsmm(alpha,a,b,beta,c,info,trans)
|
||||
!!$ use psb_spmat_type, only : psb_sspmat_type, psb_dspmat_type,&
|
||||
!!$ & psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
!!$ type(psb_zspmat_type) :: a
|
||||
!!$ complex(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
!!$ integer :: info
|
||||
!!$ character, optional :: trans
|
||||
!!$ end subroutine psb_zcsmm
|
||||
!!$ end interface
|
||||
|
||||
interface psb_cest
|
||||
subroutine psb_cest(afmt, m,n,nnz, lia1, lia2, lar, iup, info)
|
||||
|
||||
+164
-22
@@ -127,28 +127,52 @@ module psb_spmat_type
|
||||
integer :: infoa(psb_ifasize_)
|
||||
integer, allocatable :: ia1(:), ia2(:)
|
||||
integer, allocatable :: pl(:), pr(:)
|
||||
|
||||
end type psb_base_spmat_type
|
||||
|
||||
|
||||
type, extends(psb_base_spmat_type) :: psb_sspmat_type
|
||||
real(psb_spk_), allocatable :: aspk(:)
|
||||
contains
|
||||
procedure, pass(a) :: psb_scsmm
|
||||
procedure, pass(a) :: psb_scsmv
|
||||
generic, public :: csmm => psb_scsmm, psb_scsmv
|
||||
procedure, pass(t) :: psb_scssm
|
||||
procedure, pass(t) :: psb_scssv
|
||||
generic, public :: cssm => psb_scssm, psb_scssv
|
||||
end type psb_sspmat_type
|
||||
|
||||
type, extends(psb_base_spmat_type) :: psb_cspmat_type
|
||||
complex(psb_spk_), allocatable :: aspk(:)
|
||||
contains
|
||||
procedure, pass(a) :: psb_ccsmm
|
||||
procedure, pass(a) :: psb_ccsmv
|
||||
generic, public :: csmm => psb_ccsmm, psb_ccsmv
|
||||
procedure, pass(t) :: psb_ccssm
|
||||
procedure, pass(t) :: psb_ccssv
|
||||
generic, public :: cssm => psb_ccssm, psb_ccssv
|
||||
end type psb_cspmat_type
|
||||
|
||||
type, extends(psb_base_spmat_type) :: psb_dspmat_type
|
||||
real(psb_dpk_), allocatable :: aspk(:)
|
||||
|
||||
contains
|
||||
procedure, pass(a) :: i_spmv => psb_dspmv_inner
|
||||
procedure, pass(a) :: i_spmm => psb_dspmm_inner
|
||||
generic, public :: spmm => i_spmv, i_spmm
|
||||
procedure, pass(a) :: psb_dcsmm
|
||||
procedure, pass(a) :: psb_dcsmv
|
||||
generic, public :: csmm => psb_dcsmm, psb_dcsmv
|
||||
procedure, pass(t) :: psb_dcssm
|
||||
procedure, pass(t) :: psb_dcssv
|
||||
generic, public :: cssm => psb_dcssm, psb_dcssv
|
||||
end type psb_dspmat_type
|
||||
|
||||
type, extends(psb_base_spmat_type) :: psb_zspmat_type
|
||||
complex(psb_dpk_), allocatable :: aspk(:)
|
||||
contains
|
||||
procedure, pass(a) :: psb_zcsmm
|
||||
procedure, pass(a) :: psb_zcsmv
|
||||
generic, public :: csmm => psb_zcsmm, psb_zcsmv
|
||||
procedure, pass(t) :: psb_zcssm
|
||||
procedure, pass(t) :: psb_zcssv
|
||||
generic, public :: cssm => psb_zcssm, psb_zcssv
|
||||
end type psb_zspmat_type
|
||||
|
||||
interface psb_nullify_sp
|
||||
@@ -247,27 +271,145 @@ module psb_spmat_type
|
||||
& psb_dspinfo, psb_zspinfo
|
||||
end interface
|
||||
|
||||
private psb_dspmm_inner, psb_dspmv_inner
|
||||
|
||||
interface psb_csmm
|
||||
subroutine psb_scsmv(alpha,a,b,beta,c,info,trans)
|
||||
import :: psb_sspmat_type, psb_spk_
|
||||
type(psb_sspmat_type) :: a
|
||||
real(psb_spk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_scsmv
|
||||
subroutine psb_scsmm(alpha,a,b,beta,c,info,trans)
|
||||
import :: psb_sspmat_type, psb_spk_
|
||||
type(psb_sspmat_type) :: a
|
||||
real(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_scsmm
|
||||
subroutine psb_dcsmv(alpha,a,b,beta,c,info,trans)
|
||||
import :: psb_dspmat_type, psb_dpk_
|
||||
type(psb_dspmat_type) :: a
|
||||
real(psb_dpk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_dcsmv
|
||||
subroutine psb_dcsmm(alpha,a,b,beta,c,info,trans)
|
||||
import :: psb_dspmat_type, psb_dpk_
|
||||
type(psb_dspmat_type) :: a
|
||||
real(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_dcsmm
|
||||
subroutine psb_ccsmv(alpha,a,b,beta,c,info,trans)
|
||||
import :: psb_cspmat_type, psb_spk_
|
||||
type(psb_cspmat_type) :: a
|
||||
complex(psb_spk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_ccsmv
|
||||
subroutine psb_ccsmm(alpha,a,b,beta,c,info,trans)
|
||||
import :: psb_cspmat_type, psb_spk_
|
||||
type(psb_cspmat_type) :: a
|
||||
complex(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_ccsmm
|
||||
subroutine psb_zcsmv(alpha,a,b,beta,c,info,trans)
|
||||
import :: psb_zspmat_type, psb_dpk_
|
||||
type(psb_zspmat_type) :: a
|
||||
complex(psb_dpk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_zcsmv
|
||||
subroutine psb_zcsmm(alpha,a,b,beta,c,info,trans)
|
||||
import :: psb_zspmat_type, psb_dpk_
|
||||
type(psb_zspmat_type) :: a
|
||||
complex(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans
|
||||
end subroutine psb_zcsmm
|
||||
end interface
|
||||
|
||||
interface psb_cssm
|
||||
subroutine psb_scssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
import :: psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_sspmat_type) :: t
|
||||
real(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
real(psb_spk_), optional, target :: d(:)
|
||||
end subroutine psb_scssm
|
||||
subroutine psb_scssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
import :: psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_sspmat_type) :: t
|
||||
real(psb_spk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
real(psb_spk_), optional, target :: d(:)
|
||||
end subroutine psb_scssv
|
||||
subroutine psb_dcssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
import :: psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_dspmat_type) :: t
|
||||
real(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
real(psb_dpk_), optional, target :: d(:)
|
||||
end subroutine psb_dcssm
|
||||
subroutine psb_dcssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
import :: psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_dspmat_type) :: t
|
||||
real(psb_dpk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
real(psb_dpk_), optional, target :: d(:)
|
||||
end subroutine psb_dcssv
|
||||
subroutine psb_ccssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
import :: psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_cspmat_type) :: t
|
||||
complex(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
complex(psb_spk_), optional, target :: d(:)
|
||||
end subroutine psb_ccssm
|
||||
subroutine psb_ccssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
import :: psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_cspmat_type) :: t
|
||||
complex(psb_spk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
complex(psb_spk_), optional, target :: d(:)
|
||||
end subroutine psb_ccssv
|
||||
subroutine psb_zcssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
import :: psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_zspmat_type) :: t
|
||||
complex(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
complex(psb_dpk_), optional, target :: d(:)
|
||||
end subroutine psb_zcssm
|
||||
subroutine psb_zcssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
import :: psb_sspmat_type, psb_dspmat_type,&
|
||||
& psb_cspmat_type, psb_zspmat_type, psb_spk_, psb_dpk_
|
||||
type(psb_zspmat_type) :: t
|
||||
complex(psb_dpk_) :: alpha, beta, b(:), c(:)
|
||||
integer :: info
|
||||
character, optional :: trans, unitd
|
||||
complex(psb_dpk_), optional, target :: d(:)
|
||||
end subroutine psb_zcssv
|
||||
end interface
|
||||
|
||||
|
||||
|
||||
contains
|
||||
|
||||
subroutine psb_dspmv_inner(alpha,a,x,beta,y,info)
|
||||
type(psb_dspmat_type), intent(in) :: a
|
||||
real(psb_dpk_), intent(in) :: alpha,beta,x(:)
|
||||
real(psb_dpk_), intent(inout) :: y(:)
|
||||
integer, intent(out) :: info
|
||||
|
||||
write(0,*) 'Inner spmv was invoked!'
|
||||
end subroutine psb_dspmv_inner
|
||||
|
||||
subroutine psb_dspmm_inner(alpha,a,x,beta,y,info)
|
||||
type(psb_dspmat_type), intent(in) :: a
|
||||
real(psb_dpk_), intent(in) :: alpha,beta,x(:,:)
|
||||
real(psb_dpk_), intent(inout) :: y(:,:)
|
||||
integer, intent(out) :: info
|
||||
|
||||
write(0,*) 'Inner spmm was invoked!'
|
||||
end subroutine psb_dspmm_inner
|
||||
|
||||
integer function psb_get_ssp_nrows(a)
|
||||
type(psb_sspmat_type), intent(in) :: a
|
||||
|
||||
@@ -250,7 +250,7 @@ subroutine psb_cspmm(alpha,a,x,beta,y,desc_a,info,&
|
||||
if(info /= 0) exit blk
|
||||
|
||||
! local Matrix-vector product
|
||||
call psb_csmm(alpha,a,x(:,jjx+i-1:jjx+i+ib-1),&
|
||||
call a%csmm(alpha,x(:,jjx+i-1:jjx+i+ib-1),&
|
||||
& beta,y(:,jjy+i-1:jjy+i+ib-1),info,trans=trans_)
|
||||
|
||||
if(info /= 0) exit blk
|
||||
@@ -265,7 +265,7 @@ subroutine psb_cspmm(alpha,a,x,beta,y,desc_a,info,&
|
||||
if (doswap_)&
|
||||
& call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),&
|
||||
& ib1,czero,x(:,1:ik),desc_a,iwork,info)
|
||||
if (info == 0) call psb_csmm(alpha,a,x(:,1:ik),beta,y(:,1:ik),info)
|
||||
if (info == 0) call a%csmm(alpha,x(:,1:ik),beta,y(:,1:ik),info)
|
||||
end if
|
||||
|
||||
if(info /= 0) then
|
||||
@@ -311,7 +311,7 @@ subroutine psb_cspmm(alpha,a,x,beta,y,desc_a,info,&
|
||||
if (info == 0) call psi_ovrl_upd(x,desc_a,psb_avg_,info)
|
||||
y(nrow+1:ncol,1:ik) = czero
|
||||
|
||||
if (info == 0) call psb_csmm(alpha,a,x(:,1:ik),beta,y(:,1:ik),info,trans=trans_)
|
||||
if (info == 0) call a%csmm(alpha,x(:,1:ik),beta,y(:,1:ik),info,trans=trans_)
|
||||
if (debug_level >= psb_debug_comp_) &
|
||||
& write(debug_unit,*) me,' ',trim(name),' csmm ', info
|
||||
if (info /= 0) then
|
||||
@@ -581,7 +581,7 @@ subroutine psb_cspmv(alpha,a,x,beta,y,desc_a,info,&
|
||||
end if
|
||||
|
||||
! local Matrix-vector product
|
||||
call psb_csmm(alpha,a,x(iix:lldx),beta,y(iiy:lldy),info)
|
||||
call a%csmm(alpha,x(iix:lldx),beta,y(iiy:lldy),info)
|
||||
|
||||
if(info /= 0) then
|
||||
info = 4011
|
||||
@@ -628,7 +628,7 @@ subroutine psb_cspmv(alpha,a,x,beta,y,desc_a,info,&
|
||||
yp(nrow+1:ncol) = czero
|
||||
|
||||
! local Matrix-vector product
|
||||
if (info == 0) call psb_csmm(alpha,a,x,beta,yp,info,trans=trans_)
|
||||
if (info == 0) call a%csmm(alpha,x,beta,yp,info,trans=trans_)
|
||||
|
||||
if (debug_level >= psb_debug_comp_) &
|
||||
& write(debug_unit,*) me,' ',trim(name),' csmm ', info
|
||||
|
||||
@@ -258,7 +258,7 @@ subroutine psb_cspsm(alpha,a,x,beta,y,desc_a,info,&
|
||||
! Perform local triangular system solve
|
||||
xp => x(iix:lldx,jjx:jjx+ik-1)
|
||||
yp => y(iiy:lldy,jjy:jjy+ik-1)
|
||||
call psb_cssm(alpha,a,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
call a%cssm(alpha,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
|
||||
if(info /= 0) then
|
||||
info = 4010
|
||||
@@ -528,7 +528,7 @@ subroutine psb_cspsv(alpha,a,x,beta,y,desc_a,info,&
|
||||
! Perform local triangular system solve
|
||||
xp => x(iix:lldx)
|
||||
yp => y(iiy:lldy)
|
||||
call psb_cssm(alpha,a,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
call a%cssm(alpha,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
|
||||
if(info /= 0) then
|
||||
info = 4010
|
||||
|
||||
@@ -250,7 +250,7 @@ subroutine psb_dspmm(alpha,a,x,beta,y,desc_a,info,&
|
||||
if(info /= 0) exit blk
|
||||
|
||||
! local Matrix-vector product
|
||||
call psb_csmm(alpha,a,x(:,jjx+i-1:jjx+i+ib-1),&
|
||||
call a%csmm(alpha,x(:,jjx+i-1:jjx+i+ib-1),&
|
||||
& beta,y(:,jjy+i-1:jjy+i+ib-1),info,trans=trans_)
|
||||
|
||||
if(info /= 0) exit blk
|
||||
@@ -265,7 +265,7 @@ subroutine psb_dspmm(alpha,a,x,beta,y,desc_a,info,&
|
||||
if (doswap_)&
|
||||
& call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),&
|
||||
& ib1,dzero,x(:,1:ik),desc_a,iwork,info)
|
||||
if (info == 0) call psb_csmm(alpha,a,x(:,1:ik),beta,y(:,1:ik),info)
|
||||
if (info == 0) call a%csmm(alpha,x(:,1:ik),beta,y(:,1:ik),info)
|
||||
end if
|
||||
if(info /= 0) then
|
||||
info = 4011
|
||||
@@ -310,7 +310,7 @@ subroutine psb_dspmm(alpha,a,x,beta,y,desc_a,info,&
|
||||
if (info == 0) call psi_ovrl_upd(x,desc_a,psb_avg_,info)
|
||||
y(nrow+1:ncol,1:ik) = dzero
|
||||
|
||||
if (info == 0) call psb_csmm(alpha,a,x(:,1:ik),beta,y(:,1:ik),info,trans=trans_)
|
||||
if (info == 0) call a%csmm(alpha,x(:,1:ik),beta,y(:,1:ik),info,trans=trans_)
|
||||
if (debug_level >= psb_debug_comp_) &
|
||||
& write(debug_unit,*) me,' ',trim(name),' csmm ', info
|
||||
if (info /= 0) then
|
||||
@@ -579,10 +579,7 @@ subroutine psb_dspmv(alpha,a,x,beta,y,desc_a,info,&
|
||||
& dzero,x,desc_a,iwork,info,data=psb_comm_halo_)
|
||||
end if
|
||||
! Just for fun
|
||||
call a%spmm(alpha,x,beta,y,info)
|
||||
|
||||
! local Matrix-vector product
|
||||
call psb_csmm(alpha,a,x(iix:lldx),beta,y(iiy:lldy),info)
|
||||
call a%csmm(alpha,x,beta,y,info)
|
||||
|
||||
if(info /= 0) then
|
||||
info = 4011
|
||||
@@ -629,7 +626,7 @@ subroutine psb_dspmv(alpha,a,x,beta,y,desc_a,info,&
|
||||
yp(nrow+1:ncol) = dzero
|
||||
|
||||
! local Matrix-vector product
|
||||
if (info == 0) call psb_csmm(alpha,a,x,beta,yp,info,trans=trans_)
|
||||
if (info == 0) call a%csmm(alpha,x,beta,y,info,trans=trans_)
|
||||
|
||||
if (debug_level >= psb_debug_comp_) &
|
||||
& write(debug_unit,*) me,' ',trim(name),' csmm ', info
|
||||
|
||||
@@ -259,7 +259,7 @@ subroutine psb_dspsm(alpha,a,x,beta,y,desc_a,info,&
|
||||
! Perform local triangular system solve
|
||||
xp => x(iix:lldx,jjx:jjx+ik-1)
|
||||
yp => y(iiy:lldy,jjy:jjy+ik-1)
|
||||
call psb_cssm(alpha,a,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
call a%cssm(alpha,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
|
||||
if(info /= 0) then
|
||||
info = 4010
|
||||
@@ -529,7 +529,7 @@ subroutine psb_dspsv(alpha,a,x,beta,y,desc_a,info,&
|
||||
! Perform local triangular system solve
|
||||
xp => x(iix:lldx)
|
||||
yp => y(iiy:lldy)
|
||||
call psb_cssm(alpha,a,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
call a%cssm(alpha,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
|
||||
if(info /= 0) then
|
||||
info = 4010
|
||||
|
||||
@@ -250,7 +250,7 @@ subroutine psb_sspmm(alpha,a,x,beta,y,desc_a,info,&
|
||||
if(info /= 0) exit blk
|
||||
|
||||
! local Matrix-vector product
|
||||
call psb_csmm(alpha,a,x(:,jjx+i-1:jjx+i+ib-1),&
|
||||
call a%csmm(alpha,x(:,jjx+i-1:jjx+i+ib-1),&
|
||||
& beta,y(:,jjy+i-1:jjy+i+ib-1),info,trans=trans_)
|
||||
|
||||
if(info /= 0) exit blk
|
||||
@@ -265,7 +265,7 @@ subroutine psb_sspmm(alpha,a,x,beta,y,desc_a,info,&
|
||||
if (doswap_)&
|
||||
& call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),&
|
||||
& ib1,szero,x(:,1:ik),desc_a,iwork,info)
|
||||
if (info == 0) call psb_csmm(alpha,a,x(:,1:ik),beta,y(:,1:ik),info)
|
||||
if (info == 0) call a%csmm(alpha,x(:,1:ik),beta,y(:,1:ik),info)
|
||||
end if
|
||||
if(info /= 0) then
|
||||
info = 4011
|
||||
@@ -310,7 +310,7 @@ subroutine psb_sspmm(alpha,a,x,beta,y,desc_a,info,&
|
||||
if (info == 0) call psi_ovrl_upd(x,desc_a,psb_avg_,info)
|
||||
y(nrow+1:ncol,1:ik) = szero
|
||||
|
||||
if (info == 0) call psb_csmm(alpha,a,x(:,1:ik),beta,y(:,1:ik),info,trans=trans_)
|
||||
if (info == 0) call a%csmm(alpha,x(:,1:ik),beta,y(:,1:ik),info,trans=trans_)
|
||||
if (debug_level >= psb_debug_comp_) &
|
||||
& write(debug_unit,*) me,' ',trim(name),' csmm ', info
|
||||
if (info /= 0) then
|
||||
@@ -580,7 +580,7 @@ subroutine psb_sspmv(alpha,a,x,beta,y,desc_a,info,&
|
||||
end if
|
||||
|
||||
! local Matrix-vector product
|
||||
call psb_csmm(alpha,a,x(iix:lldx),beta,y(iiy:lldy),info)
|
||||
call a%csmm(alpha,x(iix:lldx),beta,y(iiy:lldy),info)
|
||||
|
||||
if(info /= 0) then
|
||||
info = 4011
|
||||
@@ -627,7 +627,7 @@ subroutine psb_sspmv(alpha,a,x,beta,y,desc_a,info,&
|
||||
yp(nrow+1:ncol) = szero
|
||||
|
||||
! local Matrix-vector product
|
||||
if (info == 0) call psb_csmm(alpha,a,x,beta,yp,info,trans=trans_)
|
||||
if (info == 0) call a%csmm(alpha,x,beta,yp,info,trans=trans_)
|
||||
|
||||
if (debug_level >= psb_debug_comp_) &
|
||||
& write(debug_unit,*) me,' ',trim(name),' csmm ', info
|
||||
|
||||
@@ -259,7 +259,7 @@ subroutine psb_sspsm(alpha,a,x,beta,y,desc_a,info,&
|
||||
! Perform local triangular system solve
|
||||
xp => x(iix:lldx,jjx:jjx+ik-1)
|
||||
yp => y(iiy:lldy,jjy:jjy+ik-1)
|
||||
call psb_cssm(alpha,a,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
call a%cssm(alpha,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
|
||||
if(info /= 0) then
|
||||
info = 4010
|
||||
@@ -529,7 +529,7 @@ subroutine psb_sspsv(alpha,a,x,beta,y,desc_a,info,&
|
||||
! Perform local triangular system solve
|
||||
xp => x(iix:lldx)
|
||||
yp => y(iiy:lldy)
|
||||
call psb_cssm(alpha,a,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
call a%cssm(alpha,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
|
||||
if(info /= 0) then
|
||||
info = 4010
|
||||
|
||||
@@ -250,7 +250,7 @@ subroutine psb_zspmm(alpha,a,x,beta,y,desc_a,info,&
|
||||
if(info /= 0) exit blk
|
||||
|
||||
! local Matrix-vector product
|
||||
call psb_csmm(alpha,a,x(:,jjx+i-1:jjx+i+ib-1),&
|
||||
call a%csmm(alpha,x(:,jjx+i-1:jjx+i+ib-1),&
|
||||
& beta,y(:,jjy+i-1:jjy+i+ib-1),info,trans=trans_)
|
||||
|
||||
if(info /= 0) exit blk
|
||||
@@ -265,7 +265,7 @@ subroutine psb_zspmm(alpha,a,x,beta,y,desc_a,info,&
|
||||
if (doswap_)&
|
||||
& call psi_swapdata(ior(psb_swap_send_,psb_swap_recv_),&
|
||||
& ib1,zzero,x(:,1:ik),desc_a,iwork,info)
|
||||
if (info == 0) call psb_csmm(alpha,a,x(:,1:ik),beta,y(:,1:ik),info)
|
||||
if (info == 0) call a%csmm(alpha,x(:,1:ik),beta,y(:,1:ik),info)
|
||||
end if
|
||||
|
||||
if(info /= 0) then
|
||||
@@ -311,7 +311,7 @@ subroutine psb_zspmm(alpha,a,x,beta,y,desc_a,info,&
|
||||
if (info == 0) call psi_ovrl_upd(x,desc_a,psb_avg_,info)
|
||||
y(nrow+1:ncol,1:ik) = zzero
|
||||
|
||||
if (info == 0) call psb_csmm(alpha,a,x(:,1:ik),beta,y(:,1:ik),info,trans=trans_)
|
||||
if (info == 0) call a%csmm(alpha,x(:,1:ik),beta,y(:,1:ik),info,trans=trans_)
|
||||
if (debug_level >= psb_debug_comp_) &
|
||||
& write(debug_unit,*) me,' ',trim(name),' csmm ', info
|
||||
if (info /= 0) then
|
||||
@@ -581,7 +581,7 @@ subroutine psb_zspmv(alpha,a,x,beta,y,desc_a,info,&
|
||||
end if
|
||||
|
||||
! local Matrix-vector product
|
||||
call psb_csmm(alpha,a,x(iix:lldx),beta,y(iiy:lldy),info)
|
||||
call a%csmm(alpha,x(iix:lldx),beta,y(iiy:lldy),info)
|
||||
|
||||
if(info /= 0) then
|
||||
info = 4011
|
||||
@@ -628,7 +628,7 @@ subroutine psb_zspmv(alpha,a,x,beta,y,desc_a,info,&
|
||||
yp(nrow+1:ncol) = zzero
|
||||
|
||||
! local Matrix-vector product
|
||||
if (info == 0) call psb_csmm(alpha,a,x,beta,yp,info,trans=trans_)
|
||||
if (info == 0) call a%csmm(alpha,x,beta,yp,info,trans=trans_)
|
||||
|
||||
if (debug_level >= psb_debug_comp_) &
|
||||
& write(debug_unit,*) me,' ',trim(name),' csmm ', info
|
||||
|
||||
@@ -258,7 +258,7 @@ subroutine psb_zspsm(alpha,a,x,beta,y,desc_a,info,&
|
||||
! Perform local triangular system solve
|
||||
xp => x(iix:lldx,jjx:jjx+ik-1)
|
||||
yp => y(iiy:lldy,jjy:jjy+ik-1)
|
||||
call psb_cssm(alpha,a,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
call a%cssm(alpha,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
|
||||
if(info /= 0) then
|
||||
info = 4010
|
||||
@@ -528,7 +528,7 @@ subroutine psb_zspsv(alpha,a,x,beta,y,desc_a,info,&
|
||||
! Perform local triangular system solve
|
||||
xp => x(iix:lldx)
|
||||
yp => y(iiy:lldy)
|
||||
call psb_cssm(alpha,a,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
call a%cssm(alpha,xp,beta,yp,info,unitd=lunitd,d=id,trans=itrans)
|
||||
|
||||
if(info /= 0) then
|
||||
info = 4010
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
! Subroutine:
|
||||
! Arguments:
|
||||
subroutine psb_ccsmm(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_ccsmm
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
|
||||
@@ -34,7 +34,8 @@
|
||||
! Arguments:
|
||||
|
||||
subroutine psb_ccsmv(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_ccsmv
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
type(psb_cspmat_type) :: a
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
! Arguments:
|
||||
|
||||
subroutine psb_ccssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_ccssm
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
! Arguments:
|
||||
|
||||
subroutine psb_ccssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_ccssv
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
! Subroutine:
|
||||
! Arguments:
|
||||
subroutine psb_dcsmm(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_dcsmm
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
|
||||
@@ -34,7 +34,8 @@
|
||||
! Arguments:
|
||||
|
||||
subroutine psb_dcsmv(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_dcsmv
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
type(psb_dspmat_type) :: a
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
! Arguments:
|
||||
|
||||
subroutine psb_dcssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_dcssm
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
! Arguments:
|
||||
|
||||
subroutine psb_dcssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_dcssv
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
! Subroutine:
|
||||
! Arguments:
|
||||
subroutine psb_scsmm(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_scsmm
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
|
||||
@@ -34,7 +34,9 @@
|
||||
! Arguments:
|
||||
|
||||
subroutine psb_scsmv(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_scsmv
|
||||
use psb_error_mod
|
||||
|
||||
implicit none
|
||||
|
||||
type(psb_sspmat_type) :: a
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
! Arguments:
|
||||
|
||||
subroutine psb_scssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_scssm
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
! Arguments:
|
||||
|
||||
subroutine psb_scssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_scssv
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
! Subroutine:
|
||||
! Arguments:
|
||||
subroutine psb_zcsmm(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_zcsmm
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
|
||||
@@ -34,7 +34,8 @@
|
||||
! Arguments:
|
||||
|
||||
subroutine psb_zcsmv(alpha,a,b,beta,c,info,trans)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_zcsmv
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
type(psb_zspmat_type) :: a
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
! Arguments:
|
||||
|
||||
subroutine psb_zcssm(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_zcssm
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
! Arguments:
|
||||
|
||||
subroutine psb_zcssv(alpha,t,b,beta,c,info,trans,unitd,d)
|
||||
use psb_spmat_type
|
||||
use psb_spmat_type, psb_protect_name => psb_zcssv
|
||||
use psb_error_mod
|
||||
implicit none
|
||||
|
||||
|
||||
@@ -219,7 +219,8 @@ subroutine psb_d_forward_map(alpha,x,beta,y,desc,info,work)
|
||||
! Ok, we just need to call a halo update on the base desc
|
||||
! and a matrix-vector product.
|
||||
call psb_halo(x,desc%desc_1,info,work=work)
|
||||
if (info == 0) call psb_csmm(alpha,desc%dmap%map_fw,x,beta,y,info)
|
||||
if (info == 0) call desc%dmap%map_fw%spmm(alpha,x,beta,y,info)
|
||||
!!$ if (info == 0) call psb_csmm(alpha,desc%dmap%map_fw,x,beta,y,info)
|
||||
if ((info == 0) .and. psb_is_repl_desc(desc%desc_2)) then
|
||||
ictxt = psb_cd_get_context(desc%desc_2)
|
||||
nr = psb_cd_get_global_rows(desc%desc_2)
|
||||
@@ -294,7 +295,8 @@ subroutine psb_d_backward_map(alpha,x,beta,y,desc,info,work)
|
||||
case(psb_map_aggr_)
|
||||
! Ok, we just need to call a halo update and a matrix-vector product.
|
||||
call psb_halo(x,desc%desc_2,info,work=work)
|
||||
if (info == 0) call psb_csmm(alpha,desc%dmap%map_bk,x,beta,y,info)
|
||||
!!$ if (info == 0) call psb_csmm(alpha,desc%dmap%map_bk,x,beta,y,info)
|
||||
if (info == 0) call desc%dmap%map_bk%spmm(alpha,x,beta,y,info)
|
||||
if ((info == 0) .and. psb_is_repl_desc(desc%desc_1)) then
|
||||
ictxt = psb_cd_get_context(desc%desc_1)
|
||||
nr = psb_cd_get_global_rows(desc%desc_1)
|
||||
@@ -660,7 +662,8 @@ subroutine psb_d_apply_linmap(alpha,x,beta,y,a_map,cd_xt,descin,descout)
|
||||
allocate(tmp(nct),stat=info)
|
||||
if (info == 0) tmp(1:nrt) = x(1:nrt)
|
||||
if (info == 0) call psb_halo(tmp,cd_xt,info)
|
||||
if (info == 0) call psb_csmm(alpha,a_map,tmp,beta,y,info)
|
||||
if (info == 0) call a_map%spmm(alpha,tmp,beta,y,info)
|
||||
!!$ if (info == 0) call psb_csmm(alpha,a_map,tmp,beta,y,info)
|
||||
if (info /= 0) then
|
||||
write(0,*) 'Error in apply_map'
|
||||
endif
|
||||
|
||||
@@ -4,7 +4,7 @@ BJAC Preconditioner NONE DIAG BJAC
|
||||
CSR Storage format for matrix A: CSR COO JAD
|
||||
080 Domain size (acutal system is this**3)
|
||||
1 Stopping criterion
|
||||
20 MAXIT
|
||||
200 MAXIT
|
||||
-1 ITRACE
|
||||
20 IRST restart for RGMRES and BiCGSTABL
|
||||
|
||||
|
||||
Reference in New Issue
Block a user