mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-24 14:51:49 +00:00
psblas3:
base/comm/psb_cgather.f90 base/comm/psb_cscatter.F90 base/comm/psb_dgather.f90 base/comm/psb_dscatter.F90 base/comm/psb_igather.f90 base/comm/psb_iscatter.F90 base/comm/psb_sgather.f90 base/comm/psb_sscatter.F90 base/comm/psb_zgather.f90 base/comm/psb_zscatter.F90 base/internals/Makefile base/internals/psb_indx_map_fnd_owner.F90 base/internals/psi_bld_g2lmap.f90 base/internals/psi_bld_tmphalo.f90 base/internals/psi_crea_index.f90 base/internals/psi_desc_index.F90 base/internals/psi_extrct_dl.F90 base/internals/psi_fnd_owner.F90 base/internals/psi_idx_cnv.f90 base/internals/psi_idx_ins_cnv.f90 base/internals/psi_ldsc_pre_halo.f90 base/modules/Makefile base/modules/psb_base_tools_mod.f90 base/modules/psb_desc_const_mod.f90 base/modules/psb_desc_type.f90 base/modules/psb_gen_block_map_mod.f03 base/modules/psb_glist_map_mod.f03 base/modules/psb_hash_map_mod.f03 base/modules/psb_indx_map_mod.f03 base/modules/psb_list_map_mod.f03 base/modules/psb_repl_map_mod.f03 base/modules/psb_sort_mod.f90 base/modules/psi_mod.f90 base/modules/psi_reduce_mod.F90 base/serial/f03/psb_c_coo_impl.f03 base/serial/f03/psb_d_coo_impl.f03 base/serial/f03/psb_s_coo_impl.f03 base/serial/f03/psb_z_coo_impl.f03 base/serial/psb_sort_impl.f90 base/tools/Makefile base/tools/psb_ccdbldext.F90 base/tools/psb_cd_inloc.f90 base/tools/psb_cd_set_bld.f90 base/tools/psb_cd_switch_ovl_indxmap.f90 base/tools/psb_cdall.f90 base/tools/psb_cdals.f90 base/tools/psb_cdalv.f90 base/tools/psb_cdcpy.f90 base/tools/psb_cdins.f90 base/tools/psb_cdprt.f90 base/tools/psb_cdren.f90 base/tools/psb_cdrep.f90 base/tools/psb_cspins.f90 base/tools/psb_dcdbldext.F90 base/tools/psb_dspins.f90 base/tools/psb_icdasb.F90 base/tools/psb_loc_to_glob.f90 base/tools/psb_scdbldext.F90 base/tools/psb_sspins.f90 base/tools/psb_zcdbldext.F90 base/tools/psb_zspins.f90 test/fileread/cf_sample.f90 test/fileread/df_sample.f90 test/fileread/runs/dfs.inp test/fileread/sf_sample.f90 test/fileread/zf_sample.f90 test/pargen/ppde.f90 test/pargen/runs/ppde.inp test/pargen/spde.f90 util/psb_mat_dist_impl.f90 Merge work on INDXMAP.
This commit is contained in:
@@ -299,8 +299,13 @@ end module psb_iv_tools_mod
|
||||
module psb_cd_if_tools_mod
|
||||
|
||||
use psb_const_mod
|
||||
|
||||
|
||||
use psb_descriptor_type
|
||||
use psb_gen_block_map_mod
|
||||
use psb_list_map_mod
|
||||
use psb_glist_map_mod
|
||||
use psb_hash_map_mod
|
||||
use psb_repl_map_mod
|
||||
|
||||
interface psb_cd_set_bld
|
||||
subroutine psb_cd_set_bld(desc,info)
|
||||
use psb_descriptor_type
|
||||
@@ -336,7 +341,7 @@ module psb_cd_if_tools_mod
|
||||
!....parameters...
|
||||
|
||||
type(psb_desc_type), intent(in) :: desc_in
|
||||
type(psb_desc_type), intent(out) :: desc_out
|
||||
type(psb_desc_type), intent(inout) :: desc_out
|
||||
integer, intent(out) :: info
|
||||
end subroutine psb_cdcpy
|
||||
end interface
|
||||
@@ -446,6 +451,15 @@ module psb_cd_tools_mod
|
||||
module procedure psb_get_boundary
|
||||
end interface
|
||||
|
||||
interface
|
||||
subroutine psb_cd_switch_ovl_indxmap(desc,info)
|
||||
use psb_descriptor_type
|
||||
implicit None
|
||||
include 'parts.fh'
|
||||
type(psb_desc_type), intent(inout) :: desc
|
||||
integer, intent(out) :: info
|
||||
end subroutine psb_cd_switch_ovl_indxmap
|
||||
end interface
|
||||
|
||||
contains
|
||||
|
||||
@@ -479,153 +493,3 @@ module psb_base_tools_mod
|
||||
|
||||
end module psb_base_tools_mod
|
||||
|
||||
|
||||
subroutine psb_cdall(ictxt, desc, info,mg,ng,parts,vg,vl,flag,nl,repl, globalcheck)
|
||||
use psb_descriptor_type
|
||||
use psb_serial_mod
|
||||
use psb_const_mod
|
||||
use psb_error_mod
|
||||
use psb_penv_mod
|
||||
implicit None
|
||||
include 'parts.fh'
|
||||
Integer, intent(in) :: mg,ng,ictxt, vg(:), vl(:),nl
|
||||
integer, intent(in) :: flag
|
||||
logical, intent(in) :: repl, globalcheck
|
||||
integer, intent(out) :: info
|
||||
type(psb_desc_type), intent(out) :: desc
|
||||
|
||||
optional :: mg,ng,parts,vg,vl,flag,nl,repl, globalcheck
|
||||
|
||||
interface
|
||||
subroutine psb_cdals(m, n, parts, ictxt, desc, info)
|
||||
use psb_descriptor_type
|
||||
include 'parts.fh'
|
||||
Integer, intent(in) :: m,n,ictxt
|
||||
Type(psb_desc_type), intent(out) :: desc
|
||||
integer, intent(out) :: info
|
||||
end subroutine psb_cdals
|
||||
subroutine psb_cdalv(v, ictxt, desc, info, flag)
|
||||
use psb_descriptor_type
|
||||
Integer, intent(in) :: ictxt, v(:)
|
||||
integer, intent(in), optional :: flag
|
||||
integer, intent(out) :: info
|
||||
Type(psb_desc_type), intent(out) :: desc
|
||||
end subroutine psb_cdalv
|
||||
subroutine psb_cd_inloc(v, ictxt, desc, info, globalcheck)
|
||||
use psb_descriptor_type
|
||||
implicit None
|
||||
Integer, intent(in) :: ictxt, v(:)
|
||||
integer, intent(out) :: info
|
||||
type(psb_desc_type), intent(out) :: desc
|
||||
logical, intent(in), optional :: globalcheck
|
||||
end subroutine psb_cd_inloc
|
||||
subroutine psb_cdrep(m, ictxt, desc,info)
|
||||
use psb_descriptor_type
|
||||
Integer, intent(in) :: m,ictxt
|
||||
Type(psb_desc_type), intent(out) :: desc
|
||||
integer, intent(out) :: info
|
||||
end subroutine psb_cdrep
|
||||
end interface
|
||||
character(len=20) :: name
|
||||
integer :: err_act, n_, flag_, i, me, np, nlp, nnv
|
||||
integer, allocatable :: itmpsz(:)
|
||||
|
||||
|
||||
|
||||
if (psb_get_errstatus() /= 0) return
|
||||
info=psb_success_
|
||||
name = 'psb_cdall'
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
call psb_info(ictxt, me, np)
|
||||
|
||||
if (count((/ present(vg),present(vl),&
|
||||
& present(parts),present(nl), present(repl) /)) /= 1) then
|
||||
info=psb_err_no_optional_arg_
|
||||
call psb_errpush(info,name,a_err=" vg, vl, parts, nl, repl")
|
||||
goto 999
|
||||
endif
|
||||
|
||||
desc%base_desc => null()
|
||||
|
||||
if (present(parts)) then
|
||||
if (.not.present(mg)) then
|
||||
info=psb_err_no_optional_arg_
|
||||
call psb_errpush(info,name)
|
||||
goto 999
|
||||
end if
|
||||
if (present(ng)) then
|
||||
n_ = ng
|
||||
else
|
||||
n_ = mg
|
||||
endif
|
||||
call psb_cdals(mg, n_, parts, ictxt, desc, info)
|
||||
|
||||
else if (present(repl)) then
|
||||
if (.not.present(mg)) then
|
||||
info=psb_err_no_optional_arg_
|
||||
call psb_errpush(info,name)
|
||||
goto 999
|
||||
end if
|
||||
if (.not.repl) then
|
||||
info=psb_err_no_optional_arg_
|
||||
call psb_errpush(info,name)
|
||||
goto 999
|
||||
end if
|
||||
call psb_cdrep(mg, ictxt, desc, info)
|
||||
|
||||
else if (present(vg)) then
|
||||
if (present(flag)) then
|
||||
flag_=flag
|
||||
else
|
||||
flag_=0
|
||||
endif
|
||||
if (present(mg)) then
|
||||
nnv = min(mg,size(vg))
|
||||
else
|
||||
nnv = size(vg)
|
||||
end if
|
||||
call psb_cdalv(vg(1:nnv), ictxt, desc, info, flag=flag_)
|
||||
|
||||
else if (present(vl)) then
|
||||
if (present(nl)) then
|
||||
nnv = min(nl,size(vl))
|
||||
else
|
||||
nnv = size(vl)
|
||||
end if
|
||||
call psb_cd_inloc(vl(1:nnv),ictxt,desc,info, globalcheck=globalcheck)
|
||||
|
||||
else if (present(nl)) then
|
||||
allocate(itmpsz(0:np-1),stat=info)
|
||||
if (info /= psb_success_) then
|
||||
info = psb_err_alloc_dealloc_
|
||||
call psb_errpush(info,name)
|
||||
goto 999
|
||||
endif
|
||||
|
||||
itmpsz = 0
|
||||
itmpsz(me) = nl
|
||||
call psb_sum(ictxt,itmpsz)
|
||||
nlp=0
|
||||
do i=0, me-1
|
||||
nlp = nlp + itmpsz(i)
|
||||
end do
|
||||
call psb_cd_inloc((/(i,i=nlp+1,nlp+nl)/),ictxt,desc,info,globalcheck=.false.)
|
||||
|
||||
endif
|
||||
|
||||
if (info /= psb_success_) goto 999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error(ictxt)
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
|
||||
end subroutine psb_cdall
|
||||
|
||||
Reference in New Issue
Block a user