mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-20 04:42:08 +00:00
Merged MixedI8 in new branch (to be later merged into development)
This commit is contained in:
+15
-31
@@ -107,15 +107,18 @@ subroutine psb_cdrep(m, ictxt, desc, info)
|
||||
use psb_repl_map_mod
|
||||
implicit None
|
||||
!....Parameters...
|
||||
integer(psb_ipk_), intent(in) :: m,ictxt
|
||||
integer(psb_lpk_), intent(in) :: m
|
||||
integer(psb_ipk_), intent(in) :: ictxt
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
Type(psb_desc_type), intent(out) :: desc
|
||||
|
||||
!locals
|
||||
integer(psb_ipk_) :: i,np,me,err,n,err_act
|
||||
integer(psb_ipk_) :: int_err(5),exch(2), thalo(1), tovr(1), text(1)
|
||||
integer(psb_ipk_) :: i,np,me,err,err_act
|
||||
integer(psb_lpk_) :: n
|
||||
integer(psb_lpk_) :: l_err(5),exch(2)
|
||||
integer(psb_ipk_) :: thalo(1), tovr(1), text(1)
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
integer(psb_mpik_) :: iictxt
|
||||
integer(psb_mpk_) :: iictxt
|
||||
character(len=20) :: name
|
||||
|
||||
if(psb_get_errstatus() /= 0) return
|
||||
@@ -133,16 +136,16 @@ subroutine psb_cdrep(m, ictxt, desc, info)
|
||||
!... check m and n parameters....
|
||||
if (m < 1) then
|
||||
info = psb_err_iarg_neg_
|
||||
int_err(1) = 1
|
||||
int_err(2) = m
|
||||
l_err(1) = 1
|
||||
l_err(2) = m
|
||||
else if (n < 1) then
|
||||
info = psb_err_iarg_neg_
|
||||
int_err(1) = 2
|
||||
int_err(2) = n
|
||||
l_err(1) = 2
|
||||
l_err(2) = n
|
||||
endif
|
||||
|
||||
if (info /= psb_success_) then
|
||||
call psb_errpush(info,name,i_err=int_err)
|
||||
call psb_errpush(info,name,l_err=l_err)
|
||||
goto 9999
|
||||
end if
|
||||
|
||||
@@ -157,15 +160,15 @@ subroutine psb_cdrep(m, ictxt, desc, info)
|
||||
call psb_bcast(ictxt,exch(1:2),root=psb_root_)
|
||||
if (exch(1) /= m) then
|
||||
info=psb_err_parm_differs_among_procs_
|
||||
int_err(1)=1
|
||||
l_err(1)=1
|
||||
else if (exch(2) /= n) then
|
||||
info=psb_err_parm_differs_among_procs_
|
||||
int_err(1)=2
|
||||
l_err(1)=2
|
||||
endif
|
||||
endif
|
||||
|
||||
if (info /= psb_success_) then
|
||||
call psb_errpush(info,name,i_err=int_err)
|
||||
call psb_errpush(info,name,l_err=l_err)
|
||||
goto 9999
|
||||
end if
|
||||
|
||||
@@ -175,25 +178,6 @@ subroutine psb_cdrep(m, ictxt, desc, info)
|
||||
|
||||
!count local rows number
|
||||
! allocate work vector
|
||||
!!$ allocate(desc%matrix_data(psb_mdata_size_),&
|
||||
!!$ & desc%ovrlap_elem(0,3),stat=info)
|
||||
!!$ if (info /= psb_success_) then
|
||||
!!$ info=psb_err_alloc_request_
|
||||
!!$ int_err(1)=2*m+psb_mdata_size_+1
|
||||
!!$ call psb_errpush(info,name,i_err=int_err,a_err='integer')
|
||||
!!$ goto 9999
|
||||
!!$ endif
|
||||
!!$ ! If the index space is replicated there's no point in not having
|
||||
!!$ ! the full map on the current process.
|
||||
!!$
|
||||
!!$ desc%matrix_data(psb_m_) = m
|
||||
!!$ desc%matrix_data(psb_n_) = n
|
||||
!!$ desc%matrix_data(psb_n_row_) = m
|
||||
!!$ desc%matrix_data(psb_n_col_) = n
|
||||
!!$ desc%matrix_data(psb_ctxt_) = ictxt
|
||||
!!$ call psb_get_mpicomm(ictxt,desc%matrix_data(psb_mpi_c_))
|
||||
!!$ desc%matrix_data(psb_dec_type_) = psb_desc_bld_
|
||||
|
||||
|
||||
allocate(psb_repl_map :: desc%indxmap, stat=info)
|
||||
select type(aa => desc%indxmap)
|
||||
|
||||
Reference in New Issue
Block a user