base/Makefile
 base/modules/Makefile
 base/modules/psb_psblas_mod.f90
 base/modules/psb_tools_mod.f90
 base/newserial/Makefile
 base/newserial/README
 base/newserial/psbn_base_mat_mod.f03
 base/newserial/psbn_d_base_mat_mod.f03
 base/newserial/psbn_d_coo_impl.f03
 base/newserial/psbn_d_csr_impl.f03
 base/newserial/psbn_d_csr_mat_mod.f03
 base/newserial/psbn_mat_mod.f03
 base/psblas/psb_dnrmi.f90
 base/psblas/psb_dspmm.f90
 base/tools/psb_dspalloc.f90
 base/tools/psb_dspasb.f90
 base/tools/psb_dspfree.f90
 base/tools/psb_dspins.f90
 krylov/psb_dbicg.f90
 krylov/psb_dcg.F90
 krylov/psb_dcgs.f90
 krylov/psb_dcgstab.F90
 krylov/psb_dcgstabl.f90
 krylov/psb_drgmres.f90
 krylov/psb_krylov_mod.f90
 prec/psb_dprecbld.f90
 prec/psb_dprecinit.f90
 prec/psb_dprecset.f90
 prec/psb_prec_mod.f90
 test/pargen/ppde.f90
 test/pargen/runs/ppde.inp
 test/serial/d_coo_matgen.f03
 test/serial/d_matgen.f03
 test/serial/psbn_d_cxx_mat_mod.f03


Minimal set of changes to run BICGSTAB in serial mode with NONE as a
preconditioner. It does now!
psblas3-type-indexed
Salvatore Filippone 16 years ago
parent 434085380d
commit 9bfb2980e3

@ -7,11 +7,11 @@ LIBMOD=psb_base_mod$(.mod)
lib: lib:
(cd modules; make lib LIBNAME=$(BASELIBNAME) F90=$(MPF90) F90COPT="$(F90COPT) $(MPI_OPT)") (cd modules; make lib LIBNAME=$(BASELIBNAME) F90=$(MPF90) F90COPT="$(F90COPT) $(MPI_OPT)")
(cd serial; make lib LIBNAME=$(BASELIBNAME)) (cd serial; make lib LIBNAME=$(BASELIBNAME))
(cd newserial; make lib LIBNAME=$(BASELIBNAME) )
(cd comm; make lib LIBNAME=$(BASELIBNAME)) (cd comm; make lib LIBNAME=$(BASELIBNAME))
(cd internals; make lib LIBNAME=$(BASELIBNAME)) (cd internals; make lib LIBNAME=$(BASELIBNAME))
(cd tools; make lib LIBNAME=$(BASELIBNAME)) (cd tools; make lib LIBNAME=$(BASELIBNAME))
(cd psblas; make lib LIBNAME=$(BASELIBNAME)) (cd psblas; make lib LIBNAME=$(BASELIBNAME))
(cd newserial; make lib LIBNAME=$(BASELIBNAME) )
/bin/cp -p $(HERE)/$(LIBNAME) $(LIBDIR) /bin/cp -p $(HERE)/$(LIBNAME) $(LIBDIR)
/bin/cp -p $(LIBMOD) *$(.mod) $(LIBDIR) /bin/cp -p $(LIBMOD) *$(.mod) $(LIBDIR)

@ -17,7 +17,7 @@ CINCLUDES=-I.
FINCLUDES=$(FMFLAG)$(LIBDIR) $(FMFLAG). $(FIFLAG). FINCLUDES=$(FMFLAG)$(LIBDIR) $(FMFLAG). $(FIFLAG).
lib: $(BASIC_MODS) blacsmod $(UTIL_MODS) $(OBJS) $(LIBMOD) lib: $(BASIC_MODS) blacsmod newmods $(UTIL_MODS) $(OBJS) $(LIBMOD)
$(AR) $(LIBDIR)/$(LIBNAME) $(MODULES) $(OBJS) $(MPFOBJS) $(AR) $(LIBDIR)/$(LIBNAME) $(MODULES) $(OBJS) $(MPFOBJS)
$(RANLIB) $(LIBDIR)/$(LIBNAME) $(RANLIB) $(LIBDIR)/$(LIBNAME)
/bin/cp -p $(LIBMOD) $(LIBDIR) /bin/cp -p $(LIBMOD) $(LIBDIR)
@ -44,7 +44,8 @@ psb_hash_mod.o: psb_const_mod.o psb_realloc_mod.o
psb_base_mod.o: $(MODULES) psb_base_mod.o: $(MODULES)
newmods: $(BASIC_MODS) psb_string_mod.o psb_sort_mod.o psb_ip_reord_mod.o
(cd ../newserial; make lib LIBNAME=$(LIBNAME))
blacsmod: blacsmod:
(make psb_blacs_mod.o psb_penv_mod.o F90COPT="$(F90COPT) $(EXTRA_OPT)") (make psb_blacs_mod.o psb_penv_mod.o F90COPT="$(F90COPT) $(EXTRA_OPT)")

@ -589,8 +589,9 @@ module psb_psblas_mod
function psb_dnrmi(a, desc_a,info) function psb_dnrmi(a, desc_a,info)
use psb_serial_mod use psb_serial_mod
use psb_descriptor_type use psb_descriptor_type
use psbn_d_mat_mod
real(psb_dpk_) :: psb_dnrmi real(psb_dpk_) :: psb_dnrmi
type(psb_dspmat_type), intent (in) :: a type(psbn_d_sparse_mat), intent (in) :: a
type(psb_desc_type), intent (in) :: desc_a type(psb_desc_type), intent (in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
end function psb_dnrmi end function psb_dnrmi
@ -646,7 +647,8 @@ module psb_psblas_mod
&trans, k, jx, jy,work,doswap) &trans, k, jx, jy,work,doswap)
use psb_serial_mod use psb_serial_mod
use psb_descriptor_type use psb_descriptor_type
type(psb_dspmat_type), intent(in) :: a use psbn_d_mat_mod
type(psbn_d_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(inout) :: x(:,:) real(psb_dpk_), intent(inout) :: x(:,:)
real(psb_dpk_), intent(inout) :: y(:,:) real(psb_dpk_), intent(inout) :: y(:,:)
real(psb_dpk_), intent(in) :: alpha, beta real(psb_dpk_), intent(in) :: alpha, beta
@ -661,7 +663,8 @@ module psb_psblas_mod
& desc_a, info, trans, work,doswap) & desc_a, info, trans, work,doswap)
use psb_serial_mod use psb_serial_mod
use psb_descriptor_type use psb_descriptor_type
type(psb_dspmat_type), intent(in) :: a use psbn_d_mat_mod
type(psbn_d_sparse_mat), intent(in) :: a
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
real(psb_dpk_), intent(inout) :: y(:) real(psb_dpk_), intent(inout) :: y(:)
real(psb_dpk_), intent(in) :: alpha, beta real(psb_dpk_), intent(in) :: alpha, beta

@ -550,8 +550,9 @@ Module psb_tools_mod
subroutine psb_dspalloc(a, desc_a, info, nnz) subroutine psb_dspalloc(a, desc_a, info, nnz)
use psb_descriptor_type use psb_descriptor_type
use psb_spmat_type use psb_spmat_type
use psbn_d_mat_mod
type(psb_desc_type), intent(inout) :: desc_a type(psb_desc_type), intent(inout) :: desc_a
type(psb_dspmat_type), intent(out) :: a type(psbn_d_sparse_mat), intent(out) :: a
integer, intent(out) :: info integer, intent(out) :: info
integer, optional, intent(in) :: nnz integer, optional, intent(in) :: nnz
end subroutine psb_dspalloc end subroutine psb_dspalloc
@ -586,7 +587,8 @@ Module psb_tools_mod
subroutine psb_dspasb(a,desc_a, info, afmt, upd, dupl) subroutine psb_dspasb(a,desc_a, info, afmt, upd, dupl)
use psb_descriptor_type use psb_descriptor_type
use psb_spmat_type use psb_spmat_type
type(psb_dspmat_type), intent (inout) :: a use psbn_d_mat_mod
type(psbn_d_sparse_mat), intent (inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer,optional, intent(in) :: dupl, upd integer,optional, intent(in) :: dupl, upd
@ -627,8 +629,9 @@ Module psb_tools_mod
subroutine psb_dspfree(a, desc_a,info) subroutine psb_dspfree(a, desc_a,info)
use psb_descriptor_type use psb_descriptor_type
use psb_spmat_type use psb_spmat_type
use psbn_d_mat_mod
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(psb_dspmat_type), intent(inout) ::a type(psbn_d_sparse_mat), intent(inout) ::a
integer, intent(out) :: info integer, intent(out) :: info
end subroutine psb_dspfree end subroutine psb_dspfree
subroutine psb_cspfree(a, desc_a,info) subroutine psb_cspfree(a, desc_a,info)
@ -672,8 +675,9 @@ Module psb_tools_mod
subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild) subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild)
use psb_descriptor_type use psb_descriptor_type
use psb_spmat_type use psb_spmat_type
use psbn_d_mat_mod
type(psb_desc_type), intent(inout) :: desc_a type(psb_desc_type), intent(inout) :: desc_a
type(psb_dspmat_type), intent(inout) :: a type(psbn_d_sparse_mat), intent(inout) :: a
integer, intent(in) :: nz,ia(:),ja(:) integer, intent(in) :: nz,ia(:),ja(:)
real(psb_dpk_), intent(in) :: val(:) real(psb_dpk_), intent(in) :: val(:)
integer, intent(out) :: info integer, intent(out) :: info

@ -8,7 +8,7 @@ LIBMOD=
OBJS = OBJS =
LIBDIR=.. LIBDIR=..
CINCLUDES=-I. CINCLUDES=-I.
FINCLUDES=$(FMFLAG)$(LIBDIR) $(FMFLAG). $(FIFLAG). FINCLUDES=$(FMFLAG)$(LIBDIR) $(FMFLAG). $(FIFLAG). $(FMFLAG)../modules
lib: $(MODULES) $(OBJS) $(LIBMOD) lib: $(MODULES) $(OBJS) $(LIBMOD)
@ -16,7 +16,7 @@ lib: $(MODULES) $(OBJS) $(LIBMOD)
$(RANLIB) $(LIBDIR)/$(LIBNAME) # /bin/cp -p $(LIBMOD) $(LIBDIR) $(RANLIB) $(LIBDIR)/$(LIBNAME) # /bin/cp -p $(LIBMOD) $(LIBDIR)
/bin/cp -p *$(.mod) $(LIBDIR) /bin/cp -p *$(.mod) $(LIBDIR)
psbn_mat_mod.o: psbn_base_mat_mod.o psbn_mat_mod.o: psbn_base_mat_mod.o psbn_d_csr_mat_mod.o
psbn_coo_mat.o psbn_csr_mat.o: psbn_d_base_mat_mod.o psbn_coo_mat.o psbn_csr_mat.o: psbn_d_base_mat_mod.o
psbn_d_coo_impl.o: psbn_d_base_mat_mod.o psbn_d_coo_impl.o: psbn_d_base_mat_mod.o

@ -15,11 +15,11 @@ Design principles for this directory.
type. At this level we define the computational interfaces to type. At this level we define the computational interfaces to
MV and SV, since they require the type of the vectors/scalars MV and SV, since they require the type of the vectors/scalars
involved (should also add NRMI here!!!!), but again they will involved (should also add NRMI here!!!!), but again they will
be empty shells. We also define the interface to CSINS, be empty shells. We also define the interface to CSPUT,
required to build the object, and TO_COO,FROM_COO (see required to build the object, and TO_COO,FROM_COO (see
below). below).
iii. The X_YYY_object where the real implementation of the iii. The X_YYY_object where the real implementation of the
MV/SV/NRMI/CSINS/ALLOCATE/FREE/TO_COO/FROM_COO takes place. MV/SV/NRMI/CSPUT/ALLOCATE/FREE/TO_COO/FROM_COO takes place.
2. What is a sparse matrix (take 2)? 2. What is a sparse matrix (take 2)?
The above structure by itself does not allow a sparse matrix to The above structure by itself does not allow a sparse matrix to

@ -369,8 +369,7 @@ contains
end function get_size end function get_size
subroutine sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc) subroutine sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
use psb_spmat_type use psb_error_mod
use psb_string_mod
implicit none implicit none
integer, intent(in) :: iout integer, intent(in) :: iout

@ -191,7 +191,7 @@ module psbn_d_base_mat_mod
interface interface
subroutine d_coo_csput_impl(nz,val,ia,ja,a,imin,imax,jmin,jmax,info,gtl) subroutine d_coo_csput_impl(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psb_const_mod use psb_const_mod
import psbn_d_coo_sparse_mat import psbn_d_coo_sparse_mat
class(psbn_d_coo_sparse_mat), intent(inout) :: a class(psbn_d_coo_sparse_mat), intent(inout) :: a
@ -504,7 +504,7 @@ contains
end subroutine mv_from_fmt end subroutine mv_from_fmt
subroutine csput(nz,val,ia,ja,a,imin,imax,jmin,jmax,info,gtl) subroutine csput(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
implicit none implicit none
@ -1283,7 +1283,7 @@ contains
end subroutine d_coo_reallocate_nz end subroutine d_coo_reallocate_nz
subroutine d_coo_csput(nz,val,ia,ja,a,imin,imax,jmin,jmax,info,gtl) subroutine d_coo_csput(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
implicit none implicit none
@ -1330,7 +1330,7 @@ contains
if (nz == 0) return if (nz == 0) return
nza = a%get_nzeros() nza = a%get_nzeros()
call d_coo_csput_impl(nz,val,ia,ja,a,imin,imax,jmin,jmax,info,gtl) call d_coo_csput_impl(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
if (info /= 0) goto 9999 if (info /= 0) goto 9999
call psb_erractionrestore(err_act) call psb_erractionrestore(err_act)
@ -1694,7 +1694,6 @@ contains
subroutine d_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc) subroutine d_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
use psb_spmat_type
use psb_string_mod use psb_string_mod
implicit none implicit none

@ -1184,9 +1184,10 @@ contains
end subroutine d_coo_csgetrow_impl end subroutine d_coo_csgetrow_impl
subroutine d_coo_csput_impl(nz,val,ia,ja,a,imin,imax,jmin,jmax,info,gtl) subroutine d_coo_csput_impl(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
use psb_sort_mod
use psbn_d_base_mat_mod, psb_protect_name => d_coo_csput_impl use psbn_d_base_mat_mod, psb_protect_name => d_coo_csput_impl
implicit none implicit none
@ -1346,7 +1347,6 @@ contains
use psb_const_mod use psb_const_mod
use psb_realloc_mod use psb_realloc_mod
use psb_string_mod use psb_string_mod
use psb_serial_mod
implicit none implicit none
class(psbn_d_coo_sparse_mat), intent(inout) :: a class(psbn_d_coo_sparse_mat), intent(inout) :: a
@ -1742,9 +1742,9 @@ subroutine d_fix_coo_impl(a,info,idir)
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
use psbn_d_base_mat_mod, psb_protect_name => d_fix_coo_impl
use psb_string_mod use psb_string_mod
use psb_ip_reord_mod use psb_ip_reord_mod
use psbn_d_base_mat_mod, psb_protect_name => d_fix_coo_impl
implicit none implicit none
class(psbn_d_coo_sparse_mat), intent(inout) :: a class(psbn_d_coo_sparse_mat), intent(inout) :: a

@ -1172,7 +1172,7 @@ end subroutine d_csr_csgetrow_impl
subroutine d_csr_csput_impl(nz,val,ia,ja,a,imin,imax,jmin,jmax,info,gtl) subroutine d_csr_csput_impl(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psb_error_mod use psb_error_mod
use psb_realloc_mod use psb_realloc_mod
use psbn_d_csr_mat_mod, psb_protect_name => d_csr_csput_impl use psbn_d_csr_mat_mod, psb_protect_name => d_csr_csput_impl
@ -1236,7 +1236,7 @@ contains
use psb_const_mod use psb_const_mod
use psb_realloc_mod use psb_realloc_mod
use psb_string_mod use psb_string_mod
use psb_serial_mod use psb_sort_mod
implicit none implicit none
class(psbn_d_csr_sparse_mat), intent(inout) :: a class(psbn_d_csr_sparse_mat), intent(inout) :: a

@ -139,7 +139,7 @@ module psbn_d_csr_mat_mod
end interface end interface
interface interface
subroutine d_csr_csput_impl(nz,val,ia,ja,a,imin,imax,jmin,jmax,info,gtl) subroutine d_csr_csput_impl(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psb_const_mod use psb_const_mod
import psbn_d_csr_sparse_mat import psbn_d_csr_sparse_mat
class(psbn_d_csr_sparse_mat), intent(inout) :: a class(psbn_d_csr_sparse_mat), intent(inout) :: a
@ -322,7 +322,7 @@ contains
end subroutine d_csr_reallocate_nz end subroutine d_csr_reallocate_nz
subroutine d_csr_csput(nz,val,ia,ja,a,imin,imax,jmin,jmax,info,gtl) subroutine d_csr_csput(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -369,7 +369,7 @@ contains
if (nz == 0) return if (nz == 0) return
call d_csr_csput_impl(nz,val,ia,ja,a,imin,imax,jmin,jmax,info,gtl) call d_csr_csput_impl(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
if (info /= 0) goto 9999 if (info /= 0) goto 9999
call psb_erractionrestore(err_act) call psb_erractionrestore(err_act)
@ -948,7 +948,6 @@ contains
subroutine d_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc) subroutine d_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
use psb_spmat_type
use psb_string_mod use psb_string_mod
implicit none implicit none

@ -66,7 +66,6 @@ module psbn_d_mat_mod
procedure, pass(a) :: d_scals procedure, pass(a) :: d_scals
procedure, pass(a) :: d_scal procedure, pass(a) :: d_scal
generic, public :: scal => d_scals, d_scal generic, public :: scal => d_scals, d_scal
procedure, pass(a) :: d_cssv procedure, pass(a) :: d_cssv
procedure, pass(a) :: d_cssm procedure, pass(a) :: d_cssm
generic, public :: cssm => d_cssm, d_cssv generic, public :: cssm => d_cssm, d_cssv
@ -78,9 +77,12 @@ module psbn_d_mat_mod
& is_asb, is_sorted, is_upper, is_lower, is_triangle, & & is_asb, is_sorted, is_upper, is_lower, is_triangle, &
& is_unit, get_neigh, csall, csput, d_csgetrow,& & is_unit, get_neigh, csall, csput, d_csgetrow,&
& d_csgetblk, csclip, d_cscnv, d_cscnv_ip, & & d_csgetblk, csclip, d_cscnv, d_cscnv_ip, &
& reallocate_nz, free, trim, d_csmv, d_csmm, d_cssv, d_cssm, sparse_print, & & reallocate_nz, free, trim, &
& set_nrows, set_ncols, set_dupl, set_state, set_null, set_bld, & & d_csmv, d_csmm, d_cssv, d_cssm, sparse_print, &
& set_upd, set_asb, set_sorted, set_upper, set_lower, set_triangle, & & set_nrows, set_ncols, set_dupl, &
& set_state, set_null, set_bld, &
& set_upd, set_asb, set_sorted, &
& set_upper, set_lower, set_triangle, &
& set_unit, csnmi, get_diag, d_scals, d_scal & set_unit, csnmi, get_diag, d_scals, d_scal
contains contains
@ -994,7 +996,7 @@ contains
end subroutine trim end subroutine trim
subroutine csput(nz,val,ia,ja,a,imin,imax,jmin,jmax,info,gtl) subroutine csput(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psbn_d_base_mat_mod use psbn_d_base_mat_mod
use psb_error_mod use psb_error_mod
implicit none implicit none
@ -1017,7 +1019,7 @@ contains
endif endif
call a%a%csput(nz,val,ia,ja,imin,imax,jmin,jmax,info,gtl) call a%a%csput(nz,ia,ja,val,imin,imax,jmin,jmax,info,gtl)
if (info /= 0) goto 9999 if (info /= 0) goto 9999
call psb_erractionrestore(err_act) call psb_erractionrestore(err_act)

@ -47,9 +47,10 @@ function psb_dnrmi(a,desc_a,info)
use psb_check_mod use psb_check_mod
use psb_error_mod use psb_error_mod
use psb_penv_mod use psb_penv_mod
use psbn_d_mat_mod
implicit none implicit none
type(psb_dspmat_type), intent(in) :: a type(psbn_d_sparse_mat), intent(in) :: a
integer, intent(out) :: info integer, intent(out) :: info
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
real(psb_dpk_) :: psb_dnrmi real(psb_dpk_) :: psb_dnrmi
@ -94,7 +95,7 @@ function psb_dnrmi(a,desc_a,info)
end if end if
if ((m /= 0).and.(n /= 0)) then if ((m /= 0).and.(n /= 0)) then
nrmi = psb_csnmi(a,info) nrmi = a%csnmi()
if(info /= 0) then if(info /= 0) then
info=4010 info=4010
ch_err='psb_csnmi' ch_err='psb_csnmi'

@ -74,12 +74,13 @@ subroutine psb_dspmm(alpha,a,x,beta,y,desc_a,info,&
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_penv_mod use psb_penv_mod
use psbn_d_mat_mod
implicit none implicit none
real(psb_dpk_), intent(in) :: alpha, beta real(psb_dpk_), intent(in) :: alpha, beta
real(psb_dpk_), intent(inout), target :: x(:,:) real(psb_dpk_), intent(inout), target :: x(:,:)
real(psb_dpk_), intent(inout), target :: y(:,:) real(psb_dpk_), intent(inout), target :: y(:,:)
type(psb_dspmat_type), intent(in) :: a type(psbn_d_sparse_mat), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
real(psb_dpk_), optional, target :: work(:) real(psb_dpk_), optional, target :: work(:)
@ -435,12 +436,14 @@ subroutine psb_dspmv(alpha,a,x,beta,y,desc_a,info,&
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_penv_mod use psb_penv_mod
use psbn_d_mat_mod
implicit none implicit none
real(psb_dpk_), intent(in) :: alpha, beta real(psb_dpk_), intent(in) :: alpha, beta
real(psb_dpk_), intent(inout), target :: x(:) real(psb_dpk_), intent(inout), target :: x(:)
real(psb_dpk_), intent(inout), target :: y(:) real(psb_dpk_), intent(inout), target :: y(:)
type(psb_dspmat_type), intent(in) :: a type(psbn_d_sparse_mat), intent(in) :: a
!!$ type(psb_dspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
real(psb_dpk_), optional, target :: work(:) real(psb_dpk_), optional, target :: work(:)

@ -49,11 +49,12 @@ subroutine psb_dspalloc(a, desc_a, info, nnz)
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psb_penv_mod use psb_penv_mod
use psbn_d_mat_mod
implicit none implicit none
!....parameters... !....parameters...
type(psb_desc_type), intent(inout) :: desc_a type(psb_desc_type), intent(inout) :: desc_a
type(psb_dspmat_type), intent(out) :: a type(psbn_d_sparse_mat), intent(out) :: a
integer, intent(out) :: info integer, intent(out) :: info
integer, optional, intent(in) :: nnz integer, optional, intent(in) :: nnz
@ -108,7 +109,7 @@ subroutine psb_dspalloc(a, desc_a, info, nnz)
& write(debug_unit,*) me,' ',trim(name),':allocating size:',length_ia1 & write(debug_unit,*) me,' ',trim(name),':allocating size:',length_ia1
!....allocate aspk, ia1, ia2..... !....allocate aspk, ia1, ia2.....
call psb_sp_all(loc_row,loc_col,a,length_ia1,info) call a%csall(loc_row,loc_col,length_ia1,info)
if(info /= 0) then if(info /= 0) then
info=4010 info=4010
ch_err='sp_all' ch_err='sp_all'

@ -57,11 +57,12 @@ subroutine psb_dspasb(a,desc_a, info, afmt, upd, dupl)
use psb_error_mod use psb_error_mod
use psb_string_mod use psb_string_mod
use psb_penv_mod use psb_penv_mod
use psbn_d_mat_mod
implicit none implicit none
!...Parameters.... !...Parameters....
type(psb_dspmat_type), intent (inout) :: a type(psbn_d_sparse_mat), intent (inout) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer,optional, intent(in) :: dupl, upd integer,optional, intent(in) :: dupl, upd
@ -106,23 +107,27 @@ subroutine psb_dspasb(a,desc_a, info, afmt, upd, dupl)
!check on errors encountered in psdspins !check on errors encountered in psdspins
spstate = a%infoa(psb_state_)
if (spstate == psb_spmat_bld_) then if (a%is_bld()) then
! !
! First case: we come from a fresh build. ! First case: we come from a fresh build.
! !
n_row = psb_cd_get_local_rows(desc_a) n_row = psb_cd_get_local_rows(desc_a)
n_col = psb_cd_get_local_cols(desc_a) n_col = psb_cd_get_local_cols(desc_a)
a%m = n_row call a%set_nrows(n_row)
a%k = n_col call a%set_ncols(n_col)
end if end if
call psb_spcnv(a,info,afmt=afmt,upd=upd,dupl=dupl) call a%cscnv(info,type=afmt,dupl=dupl)
IF (debug_level >= psb_debug_ext_) then
ch_err=a%get_fmt()
write(debug_unit, *) me,' ',trim(name),': From SPCNV',&
& info,' ',ch_err
end IF
IF (debug_level >= psb_debug_ext_)&
& write(debug_unit, *) me,' ',trim(name),': From SPCNV',&
& info,' ',A%FIDA
if (info /= psb_no_err_) then if (info /= psb_no_err_) then
info=4010 info=4010
ch_err='psb_spcnv' ch_err='psb_spcnv'

@ -46,11 +46,12 @@ subroutine psb_dspfree(a, desc_a,info)
use psb_serial_mod use psb_serial_mod
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psbn_d_mat_mod
implicit none implicit none
!....parameters... !....parameters...
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(psb_dspmat_type), intent(inout) :: a type(psbn_d_sparse_mat), intent(inout) :: a
integer, intent(out) :: info integer, intent(out) :: info
!...locals.... !...locals....
integer :: ictxt,err_act integer :: ictxt,err_act
@ -70,14 +71,14 @@ subroutine psb_dspfree(a, desc_a,info)
end if end if
!...deallocate a.... !...deallocate a....
call psb_sp_free(a,info) call a%free()
if(info /= 0) then !!$ if(info /= 0) then
info=2045 !!$ info=2045
call psb_errpush(info,name) !!$ call psb_errpush(info,name)
goto 9999 !!$ goto 9999
end if !!$ end if
call psb_erractionrestore(err_act) call psb_erractionrestore(err_act)
return return

@ -57,11 +57,12 @@ subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild)
use psb_const_mod use psb_const_mod
use psb_error_mod use psb_error_mod
use psb_penv_mod use psb_penv_mod
use psbn_d_mat_mod
implicit none implicit none
!....parameters... !....parameters...
type(psb_desc_type), intent(inout) :: desc_a type(psb_desc_type), intent(inout) :: desc_a
type(psb_dspmat_type), intent(inout) :: a type(psbn_d_sparse_mat), intent(inout) :: a
integer, intent(in) :: nz,ia(:),ja(:) integer, intent(in) :: nz,ia(:),ja(:)
real(psb_dpk_), intent(in) :: val(:) real(psb_dpk_), intent(in) :: val(:)
integer, intent(out) :: info integer, intent(out) :: info
@ -120,7 +121,6 @@ subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild)
rebuild_ = .false. rebuild_ = .false.
endif endif
spstate = a%infoa(psb_state_)
if (psb_is_bld_desc(desc_a)) then if (psb_is_bld_desc(desc_a)) then
if (psb_is_large_desc(desc_a)) then if (psb_is_large_desc(desc_a)) then
@ -139,8 +139,8 @@ subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild)
nrow = psb_cd_get_local_rows(desc_a) nrow = psb_cd_get_local_rows(desc_a)
ncol = psb_cd_get_local_cols(desc_a) ncol = psb_cd_get_local_cols(desc_a)
if (spstate == psb_spmat_bld_) then if (a%is_bld()) then
call psb_coins(nz,ila,jla,val,a,1,nrow,1,ncol,info) call a%csput(nz,ila,jla,val,1,nrow,1,ncol,info)
if (info /= 0) then if (info /= 0) then
info=4010 info=4010
ch_err='psb_coins' ch_err='psb_coins'
@ -164,8 +164,8 @@ subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild)
nrow = psb_cd_get_local_rows(desc_a) nrow = psb_cd_get_local_rows(desc_a)
ncol = psb_cd_get_local_cols(desc_a) ncol = psb_cd_get_local_cols(desc_a)
if (spstate == psb_spmat_bld_) then if (a%is_bld()) then
call psb_coins(nz,ia,ja,val,a,1,nrow,1,ncol,info,gtl=desc_a%idxmap%glob_to_loc) call a%csput(nz,ia,ja,val,1,nrow,1,ncol,info,gtl=desc_a%idxmap%glob_to_loc)
if (info /= 0) then if (info /= 0) then
info=4010 info=4010
ch_err='psb_coins' ch_err='psb_coins'
@ -198,8 +198,7 @@ subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild)
nrow = psb_cd_get_local_rows(desc_a) nrow = psb_cd_get_local_rows(desc_a)
ncol = psb_cd_get_local_cols(desc_a) ncol = psb_cd_get_local_cols(desc_a)
call psb_coins(nz,ila,jla,val,a,1,nrow,1,ncol,& call a%csput(nz,ila,jla,val,1,nrow,1,ncol,info)
& info,rebuild=rebuild_)
if (info /= 0) then if (info /= 0) then
info=4010 info=4010
ch_err='psb_coins' ch_err='psb_coins'
@ -210,8 +209,8 @@ subroutine psb_dspins(nz,ia,ja,val,a,desc_a,info,rebuild)
else else
nrow = psb_cd_get_local_rows(desc_a) nrow = psb_cd_get_local_rows(desc_a)
ncol = psb_cd_get_local_cols(desc_a) ncol = psb_cd_get_local_cols(desc_a)
call psb_coins(nz,ia,ja,val,a,1,nrow,1,ncol,& call a%csput(nz,ia,ja,val,1,nrow,1,ncol,&
& info,gtl=desc_a%idxmap%glob_to_loc,rebuild=rebuild_) & info,gtl=desc_a%idxmap%glob_to_loc)
if (info /= 0) then if (info /= 0) then
info=4010 info=4010
ch_err='psb_coins' ch_err='psb_coins'

@ -98,10 +98,12 @@ subroutine psb_dbicg(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,istop)
use psb_base_mod use psb_base_mod
use psb_prec_mod use psb_prec_mod
use psb_krylov_mod, psb_protect_name => psb_dbicg use psb_krylov_mod, psb_protect_name => psb_dbicg
use psbn_d_mat_mod
implicit none implicit none
type(psbn_d_sparse_mat), intent(in) :: a
!!$ parameters !!$ parameters
type(psb_dspmat_type), intent(in) :: a !!$ type(psb_dspmat_type), intent(in) :: a
type(psb_dprec_type), intent(in) :: prec type(psb_dprec_type), intent(in) :: prec
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
real(psb_dpk_), intent(in) :: b(:) real(psb_dpk_), intent(in) :: b(:)

@ -99,10 +99,14 @@ subroutine psb_dcg(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,istop,cond)
use psb_base_mod use psb_base_mod
use psb_prec_mod use psb_prec_mod
use psb_krylov_mod, psb_protect_name => psb_dcg use psb_krylov_mod, psb_protect_name => psb_dcg
use psbn_d_mat_mod
implicit none implicit none
type(psbn_d_sparse_mat), intent(in) :: a
!!$ Parameters !!$ Parameters
Type(psb_dspmat_type), Intent(in) :: a !!$ Type(psb_dspmat_type), Intent(in) :: a
Type(psb_dprec_type), Intent(in) :: prec Type(psb_dprec_type), Intent(in) :: prec
Type(psb_desc_type), Intent(in) :: desc_a Type(psb_desc_type), Intent(in) :: desc_a
Real(psb_dpk_), Intent(in) :: b(:) Real(psb_dpk_), Intent(in) :: b(:)

@ -98,10 +98,13 @@ Subroutine psb_dcgs(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,istop)
use psb_base_mod use psb_base_mod
use psb_prec_mod use psb_prec_mod
use psb_krylov_mod, psb_protect_name => psb_dcgs use psb_krylov_mod, psb_protect_name => psb_dcgs
use psbn_d_mat_mod
implicit none implicit none
type(psbn_d_sparse_mat), intent(in) :: a
!!$ parameters !!$ parameters
Type(psb_dspmat_type), Intent(in) :: a !!$ Type(psb_dspmat_type), Intent(in) :: a
Type(psb_desc_type), Intent(in) :: desc_a Type(psb_desc_type), Intent(in) :: desc_a
Type(psb_dprec_type), Intent(in) :: prec Type(psb_dprec_type), Intent(in) :: prec
Real(psb_dpk_), Intent(in) :: b(:) Real(psb_dpk_), Intent(in) :: b(:)

@ -98,9 +98,13 @@ Subroutine psb_dcgstab(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,istop)
use psb_base_mod use psb_base_mod
use psb_prec_mod use psb_prec_mod
use psb_krylov_mod, psb_protect_name => psb_dcgstab use psb_krylov_mod, psb_protect_name => psb_dcgstab
Implicit None use psbn_d_mat_mod
implicit none
type(psbn_d_sparse_mat), intent(in) :: a
!!$ parameters !!$ parameters
Type(psb_dspmat_type), Intent(in) :: a !!$ Type(psb_dspmat_type), Intent(in) :: a
Type(psb_dprec_type), Intent(in) :: prec Type(psb_dprec_type), Intent(in) :: prec
Type(psb_desc_type), Intent(in) :: desc_a Type(psb_desc_type), Intent(in) :: desc_a
Real(psb_dpk_), Intent(in) :: b(:) Real(psb_dpk_), Intent(in) :: b(:)

@ -107,10 +107,13 @@ Subroutine psb_dcgstabl(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,irst,is
use psb_base_mod use psb_base_mod
use psb_prec_mod use psb_prec_mod
use psb_krylov_mod, psb_protect_name => psb_dcgstabl use psb_krylov_mod, psb_protect_name => psb_dcgstabl
use psbn_d_mat_mod
implicit none implicit none
type(psbn_d_sparse_mat), intent(in) :: a
!!$ parameters !!$ parameters
Type(psb_dspmat_type), Intent(in) :: a !!$ Type(psb_dspmat_type), Intent(in) :: a
Type(psb_dprec_type), Intent(in) :: prec Type(psb_dprec_type), Intent(in) :: prec
Type(psb_desc_type), Intent(in) :: desc_a Type(psb_desc_type), Intent(in) :: desc_a
Real(psb_dpk_), Intent(in) :: b(:) Real(psb_dpk_), Intent(in) :: b(:)

@ -110,10 +110,13 @@ subroutine psb_drgmres(a,prec,b,x,eps,desc_a,info,itmax,iter,err,itrace,irst,ist
use psb_base_mod use psb_base_mod
use psb_prec_mod use psb_prec_mod
use psb_krylov_mod, psb_protect_name => psb_drgmres use psb_krylov_mod, psb_protect_name => psb_drgmres
use psbn_d_mat_mod
implicit none implicit none
type(psbn_d_sparse_mat), intent(in) :: a
!!$ Parameters !!$ Parameters
Type(psb_dspmat_type), Intent(in) :: a !!$ Type(psb_dspmat_type), Intent(in) :: a
Type(psb_dprec_type), Intent(in) :: prec Type(psb_dprec_type), Intent(in) :: prec
Type(psb_desc_type), Intent(in) :: desc_a Type(psb_desc_type), Intent(in) :: desc_a
Real(psb_dpk_), Intent(in) :: b(:) Real(psb_dpk_), Intent(in) :: b(:)

@ -62,7 +62,8 @@ Module psb_krylov_mod
& desc_a,info,itmax,iter,err,itrace,istop,cond) & desc_a,info,itmax,iter,err,itrace,istop,cond)
use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_ use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_
use psb_prec_mod, only : psb_dprec_type use psb_prec_mod, only : psb_dprec_type
type(psb_dspmat_type), intent(in) :: a use psbn_d_mat_mod
type(psbn_d_sparse_mat), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
real(psb_dpk_), intent(in) :: b(:) real(psb_dpk_), intent(in) :: b(:)
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -125,7 +126,8 @@ Module psb_krylov_mod
& desc_a,info,itmax,iter,err,itrace,istop) & desc_a,info,itmax,iter,err,itrace,istop)
use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_ use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_
use psb_prec_mod, only : psb_dprec_type use psb_prec_mod, only : psb_dprec_type
type(psb_dspmat_type), intent(in) :: a use psbn_d_mat_mod
type(psbn_d_sparse_mat), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
real(psb_dpk_), intent(in) :: b(:) real(psb_dpk_), intent(in) :: b(:)
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -188,7 +190,8 @@ Module psb_krylov_mod
& desc_a,info,itmax,iter,err,itrace,istop) & desc_a,info,itmax,iter,err,itrace,istop)
use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_ use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_
use psb_prec_mod, only : psb_dprec_type use psb_prec_mod, only : psb_dprec_type
type(psb_dspmat_type), intent(in) :: a use psbn_d_mat_mod
type(psbn_d_sparse_mat), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
real(psb_dpk_), intent(in) :: b(:) real(psb_dpk_), intent(in) :: b(:)
real(psb_dpk_), intent(inout) :: x(:) real(psb_dpk_), intent(inout) :: x(:)
@ -251,7 +254,8 @@ Module psb_krylov_mod
&itmax,iter,err, itrace,irst,istop) &itmax,iter,err, itrace,irst,istop)
use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_ use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_
use psb_prec_mod, only : psb_dprec_type use psb_prec_mod, only : psb_dprec_type
Type(psb_dspmat_type), Intent(in) :: a use psbn_d_mat_mod
type(psbn_d_sparse_mat), intent(in) :: a
Type(psb_desc_type), Intent(in) :: desc_a Type(psb_desc_type), Intent(in) :: desc_a
type(psb_dprec_type), intent(in) :: prec type(psb_dprec_type), intent(in) :: prec
Real(psb_dpk_), Intent(in) :: b(:) Real(psb_dpk_), Intent(in) :: b(:)
@ -314,7 +318,8 @@ Module psb_krylov_mod
&itmax,iter,err,itrace,irst,istop) &itmax,iter,err,itrace,irst,istop)
use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_ use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_
use psb_prec_mod, only : psb_dprec_type use psb_prec_mod, only : psb_dprec_type
Type(psb_dspmat_type), Intent(in) :: a use psbn_d_mat_mod
type(psbn_d_sparse_mat), intent(in) :: a
Type(psb_desc_type), Intent(in) :: desc_a Type(psb_desc_type), Intent(in) :: desc_a
type(psb_dprec_type), intent(in) :: prec type(psb_dprec_type), intent(in) :: prec
Real(psb_dpk_), Intent(in) :: b(:) Real(psb_dpk_), Intent(in) :: b(:)
@ -377,7 +382,8 @@ Module psb_krylov_mod
&itmax,iter,err,itrace,istop) &itmax,iter,err,itrace,istop)
use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_ use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_
use psb_prec_mod, only : psb_dprec_type use psb_prec_mod, only : psb_dprec_type
type(psb_dspmat_type), intent(in) :: a use psbn_d_mat_mod
type(psbn_d_sparse_mat), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(psb_dprec_type), intent(in) :: prec type(psb_dprec_type), intent(in) :: prec
real(psb_dpk_), intent(in) :: b(:) real(psb_dpk_), intent(in) :: b(:)
@ -613,9 +619,12 @@ contains
use psb_base_mod use psb_base_mod
use psb_prec_mod,only : psb_sprec_type, psb_dprec_type, psb_cprec_type, psb_zprec_type use psb_prec_mod,only : psb_sprec_type, psb_dprec_type, psb_cprec_type, psb_zprec_type
use psbn_d_mat_mod
type(psbn_d_sparse_mat), intent(in) :: a
character(len=*) :: method character(len=*) :: method
Type(psb_dspmat_type), Intent(in) :: a !!$ Type(psb_dspmat_type), Intent(in) :: a
Type(psb_desc_type), Intent(in) :: desc_a Type(psb_desc_type), Intent(in) :: desc_a
type(psb_dprec_type), intent(in) :: prec type(psb_dprec_type), intent(in) :: prec
Real(psb_dpk_), Intent(in) :: b(:) Real(psb_dpk_), Intent(in) :: b(:)
@ -1059,10 +1068,12 @@ contains
subroutine psb_d_init_conv(methdname,stopc,trace,itmax,a,b,eps,desc_a,stopdat,info) subroutine psb_d_init_conv(methdname,stopc,trace,itmax,a,b,eps,desc_a,stopdat,info)
use psb_base_mod use psb_base_mod
use psbn_d_mat_mod
implicit none implicit none
type(psbn_d_sparse_mat), intent(in) :: a
character(len=*), intent(in) :: methdname character(len=*), intent(in) :: methdname
integer, intent(in) :: stopc, trace,itmax integer, intent(in) :: stopc, trace,itmax
type(psb_dspmat_type), intent(in) :: a !!$ type(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), intent(in) :: b(:), eps real(psb_dpk_), intent(in) :: b(:), eps
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
type(psb_itconv_type) :: stopdat type(psb_itconv_type) :: stopdat

@ -29,13 +29,14 @@
!!$ POSSIBILITY OF SUCH DAMAGE. !!$ POSSIBILITY OF SUCH DAMAGE.
!!$ !!$
!!$ !!$
subroutine psb_dprecbld(a,desc_a,p,info,upd) subroutine psb_dprecbld(aa,desc_a,p,info,upd)
use psb_base_mod use psb_base_mod
use psbn_d_mat_mod
use psb_prec_mod, psb_protect_name => psb_dprecbld use psb_prec_mod, psb_protect_name => psb_dprecbld
Implicit None Implicit None
type(psb_dspmat_type), intent(in), target :: a type(psbn_d_sparse_mat), intent(in), target :: aa
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(psb_dprec_type),intent(inout) :: p type(psb_dprec_type),intent(inout) :: p
integer, intent(out) :: info integer, intent(out) :: info
@ -46,6 +47,7 @@ subroutine psb_dprecbld(a,desc_a,p,info,upd)
& me,np,mglob, err_act & me,np,mglob, err_act
integer :: int_err(5) integer :: int_err(5)
character :: upd_ character :: upd_
type(psb_dspmat_type), target :: a
integer,parameter :: iroot=psb_root_,iout=60,ilout=40 integer,parameter :: iroot=psb_root_,iout=60,ilout=40
character(len=20) :: name, ch_err character(len=20) :: name, ch_err
@ -86,6 +88,7 @@ subroutine psb_dprecbld(a,desc_a,p,info,upd)
call psb_nullify_desc(p%desc_data) call psb_nullify_desc(p%desc_data)
select case(p%iprcparm(psb_p_type_)) select case(p%iprcparm(psb_p_type_))
case (psb_noprec_) case (psb_noprec_)
! Do nothing. ! Do nothing.

@ -44,7 +44,11 @@ subroutine psb_dprecinit(p,ptype,info)
if (info == 0) call psb_realloc(psb_rfpsz,p%rprcparm,info) if (info == 0) call psb_realloc(psb_rfpsz,p%rprcparm,info)
if (info /= 0) return if (info /= 0) return
p%iprcparm(:) = 0 p%iprcparm(:) = 0
p%iprcparm(:) = 0
p%iprcparm(psb_p_type_) = psb_noprec_
p%iprcparm(psb_f_type_) = psb_f_none_
return
select case(psb_toupper(ptype(1:len_trim(ptype)))) select case(psb_toupper(ptype(1:len_trim(ptype))))
case ('NONE','NOPREC') case ('NONE','NOPREC')
p%iprcparm(:) = 0 p%iprcparm(:) = 0

@ -39,7 +39,7 @@ subroutine psb_dprecseti(p,what,val,info)
integer, intent(out) :: info integer, intent(out) :: info
info = 0 info = 0
return
select case(what) select case(what)
case (psb_f_type_) case (psb_f_type_)
if (p%iprcparm(psb_p_type_) /= psb_bjac_) then if (p%iprcparm(psb_p_type_) /= psb_bjac_) then

@ -45,10 +45,11 @@ module psb_prec_mod
character, intent(in),optional :: upd character, intent(in),optional :: upd
end subroutine psb_sprecbld end subroutine psb_sprecbld
subroutine psb_dprecbld(a,desc_a,prec,info,upd) subroutine psb_dprecbld(a,desc_a,prec,info,upd)
use psbn_d_mat_mod
use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_ use psb_base_mod, only : psb_desc_type, psb_dspmat_type, psb_dpk_
use psb_prec_type, only : psb_dprec_type use psb_prec_type, only : psb_dprec_type
implicit none implicit none
type(psb_dspmat_type), intent(in), target :: a type(psbn_d_sparse_mat), intent(in), target :: a
type(psb_desc_type), intent(in), target :: desc_a type(psb_desc_type), intent(in), target :: desc_a
type(psb_dprec_type), intent(inout) :: prec type(psb_dprec_type), intent(inout) :: prec
integer, intent(out) :: info integer, intent(out) :: info

@ -65,6 +65,7 @@ program ppde
use psb_base_mod use psb_base_mod
use psb_prec_mod use psb_prec_mod
use psb_krylov_mod use psb_krylov_mod
use psbn_d_mat_mod
implicit none implicit none
! input parameters ! input parameters
@ -77,7 +78,8 @@ program ppde
real(psb_dpk_) :: t1, t2, tprec real(psb_dpk_) :: t1, t2, tprec
! sparse matrix and preconditioner ! sparse matrix and preconditioner
type(psb_dspmat_type) :: a type(psbn_d_sparse_mat) :: a
!!$ type(psb_dspmat_type) :: a
type(psb_dprec_type) :: prec type(psb_dprec_type) :: prec
! descriptor ! descriptor
type(psb_desc_type) :: desc_a type(psb_desc_type) :: desc_a
@ -176,7 +178,8 @@ program ppde
t2 = psb_wtime() - t1 t2 = psb_wtime() - t1
call psb_amx(ictxt,t2) call psb_amx(ictxt,t2)
amatsize = psb_sizeof(a) !!$ amatsize = psb_sizeof(a)
amatsize = 0
descsize = psb_sizeof(desc_a) descsize = psb_sizeof(desc_a)
precsize = psb_sizeof(prec) precsize = psb_sizeof(prec)
call psb_sum(ictxt,amatsize) call psb_sum(ictxt,amatsize)
@ -343,6 +346,7 @@ contains
! Note that if a1=a2=a3=a4=0., the PDE is the well-known Laplace equation. ! Note that if a1=a2=a3=a4=0., the PDE is the well-known Laplace equation.
! !
use psb_base_mod use psb_base_mod
use psbn_d_mat_mod
implicit none implicit none
integer :: idim integer :: idim
integer, parameter :: nb=20 integer, parameter :: nb=20
@ -350,7 +354,7 @@ contains
type(psb_desc_type) :: desc_a type(psb_desc_type) :: desc_a
integer :: ictxt, info integer :: ictxt, info
character :: afmt*5 character :: afmt*5
type(psb_dspmat_type) :: a type(psbn_d_sparse_mat) :: a
real(psb_dpk_) :: zt(nb),glob_x,glob_y,glob_z real(psb_dpk_) :: zt(nb),glob_x,glob_y,glob_z
integer :: m,n,nnz,glob_row,nlr,i,ii,ib,k integer :: m,n,nnz,glob_row,nlr,i,ii,ib,k
integer :: x,y,z,ia,indx_owner integer :: x,y,z,ia,indx_owner
@ -359,6 +363,7 @@ contains
integer, allocatable :: irow(:),icol(:),myidx(:) integer, allocatable :: irow(:),icol(:),myidx(:)
real(psb_dpk_), allocatable :: val(:) real(psb_dpk_), allocatable :: val(:)
! deltah dimension of each grid cell ! deltah dimension of each grid cell
! deltat discretization time ! deltat discretization time
real(psb_dpk_) :: deltah real(psb_dpk_) :: deltah
real(psb_dpk_),parameter :: rhs=0.d0,one=1.d0,zero=0.d0 real(psb_dpk_),parameter :: rhs=0.d0,one=1.d0,zero=0.d0
@ -367,7 +372,7 @@ contains
external :: a1, a2, a3, a4, b1, b2, b3 external :: a1, a2, a3, a4, b1, b2, b3
integer :: err_act integer :: err_act
character(len=20) :: name, ch_err character(len=20) :: name, ch_err,tmpfmt
info = 0 info = 0
name = 'create_matrix' name = 'create_matrix'
@ -612,8 +617,9 @@ contains
call psb_amx(ictxt,tasb) call psb_amx(ictxt,tasb)
call psb_amx(ictxt,ttot) call psb_amx(ictxt,ttot)
if(iam == psb_root_) then if(iam == psb_root_) then
tmpfmt = a%get_fmt()
write(*,'("The matrix has been generated and assembled in ",a3," format.")')& write(*,'("The matrix has been generated and assembled in ",a3," format.")')&
& a%fida(1:3) & tmpfmt
write(*,'("-allocation time : ",es12.5)') talc write(*,'("-allocation time : ",es12.5)') talc
write(*,'("-coeff. gen. time : ",es12.5)') tgen write(*,'("-coeff. gen. time : ",es12.5)') tgen
write(*,'("-assembly time : ",es12.5)') tasb write(*,'("-assembly time : ",es12.5)') tasb

@ -1,9 +1,11 @@
7 Number of entries below this 7 Number of entries below this
BICGSTAB Iterative method BICGSTAB CGS BICG BICGSTABL RGMRES BICGSTAB Iterative method BICGSTAB CGS BICG BICGSTABL RGMRES
BJAC Preconditioner NONE DIAG BJAC NONE Preconditioner NONE DIAG BJAC
CSR Storage format for matrix A: CSR COO JAD CSR Storage format for matrix A: CSR COO JAD
060 Domain size (acutal system is this**3) 050 Domain size (acutal system is this**3)
1 Stopping criterion 1 Stopping criterion
200 MAXIT 1000 MAXIT
-1 ITRACE 040 ITRACE
20 IRST restart for RGMRES and BiCGSTABL 20 IRST restart for RGMRES and BiCGSTABL

@ -357,7 +357,7 @@ contains
endif endif
end do end do
call acoo%csput(element-1,val,irow,icol,1,nr,1,nr,info) call acoo%csput(element-1,irow,icol,val,1,nr,1,nr,info)
end do end do

@ -357,7 +357,7 @@ contains
endif endif
end do end do
call a_n%csput(element-1,val,irow,icol,1,nr,1,nr,info) call a_n%csput(element-1,irow,icol,val,1,nr,1,nr,info)
end do end do

@ -129,7 +129,7 @@ module psbn_d_cxx_mat_mod
end interface end interface
interface interface
subroutine d_cxx_csput_impl(nz,val,ia,ja,a,imin,imax,jmin,jmax,info,gtl) subroutine d_cxx_csput_impl(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl)
use psb_const_mod use psb_const_mod
import psbn_d_cxx_sparse_mat import psbn_d_cxx_sparse_mat
class(psbn_d_cxx_sparse_mat), intent(inout) :: a class(psbn_d_cxx_sparse_mat), intent(inout) :: a

Loading…
Cancel
Save