mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-20 21:02:26 +00:00
psblas3:
base/internals/psi_idx_ins_cnv.f90 base/modules/psb_base_tools_mod.f90 base/modules/psb_gen_block_map_mod.f90 base/modules/psb_hash_map_mod.f90 base/modules/psb_indx_map_mod.f90 base/modules/psb_list_map_mod.f90 base/modules/psb_repl_map_mod.f90 base/modules/psi_i_mod.f90 base/tools/psb_cdins.f90 docs/html/footnode.html docs/html/index.html docs/html/node1.html docs/html/node10.html docs/html/node100.html docs/html/node101.html docs/html/node102.html docs/html/node103.html docs/html/node104.html docs/html/node105.html docs/html/node106.html docs/html/node107.html docs/html/node108.html docs/html/node109.html docs/html/node11.html docs/html/node110.html docs/html/node111.html docs/html/node112.html docs/html/node113.html docs/html/node114.html docs/html/node115.html docs/html/node116.html docs/html/node117.html docs/html/node118.html docs/html/node119.html docs/html/node12.html docs/html/node120.html docs/html/node13.html docs/html/node14.html docs/html/node15.html docs/html/node16.html docs/html/node17.html docs/html/node18.html docs/html/node19.html docs/html/node2.html docs/html/node20.html docs/html/node21.html docs/html/node22.html docs/html/node23.html docs/html/node24.html docs/html/node25.html docs/html/node26.html docs/html/node27.html docs/html/node28.html docs/html/node29.html docs/html/node3.html docs/html/node30.html docs/html/node31.html docs/html/node32.html docs/html/node33.html docs/html/node34.html docs/html/node35.html docs/html/node36.html docs/html/node37.html docs/html/node38.html docs/html/node39.html docs/html/node4.html docs/html/node40.html docs/html/node41.html docs/html/node42.html docs/html/node43.html docs/html/node44.html docs/html/node45.html docs/html/node46.html docs/html/node47.html docs/html/node48.html docs/html/node49.html docs/html/node5.html docs/html/node50.html docs/html/node51.html docs/html/node52.html docs/html/node53.html docs/html/node54.html docs/html/node55.html docs/html/node56.html docs/html/node57.html docs/html/node58.html docs/html/node59.html docs/html/node6.html docs/html/node60.html docs/html/node61.html docs/html/node62.html docs/html/node63.html docs/html/node64.html docs/html/node65.html docs/html/node66.html docs/html/node67.html docs/html/node68.html docs/html/node69.html docs/html/node7.html docs/html/node70.html docs/html/node71.html docs/html/node72.html docs/html/node73.html docs/html/node74.html docs/html/node75.html docs/html/node76.html docs/html/node77.html docs/html/node78.html docs/html/node79.html docs/html/node8.html docs/html/node80.html docs/html/node81.html docs/html/node82.html docs/html/node83.html docs/html/node84.html docs/html/node85.html docs/html/node86.html docs/html/node87.html docs/html/node88.html docs/html/node89.html docs/html/node9.html docs/html/node90.html docs/html/node91.html docs/html/node92.html docs/html/node93.html docs/html/node94.html docs/html/node95.html docs/html/node96.html docs/html/node97.html docs/html/node98.html docs/html/node99.html docs/html/userhtml.html docs/psblas-3.0.pdf docs/src/intro.tex New docs for LIDX. New LIDX parm in idx_cnv_ins.
This commit is contained in:
@@ -342,7 +342,7 @@ contains
|
||||
|
||||
|
||||
|
||||
subroutine repl_g2ls1_ins(idx,idxmap,info,mask)
|
||||
subroutine repl_g2ls1_ins(idx,idxmap,info,mask, lidx)
|
||||
use psb_realloc_mod
|
||||
use psb_sort_mod
|
||||
implicit none
|
||||
@@ -350,34 +350,41 @@ contains
|
||||
integer(psb_ipk_), intent(inout) :: idx
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
logical, intent(in), optional :: mask
|
||||
|
||||
integer(psb_ipk_) :: idxv(1)
|
||||
integer, intent(in), optional :: lidx
|
||||
|
||||
integer(psb_ipk_) :: idxv(1),lidxv(1)
|
||||
|
||||
info = 0
|
||||
if (present(mask)) then
|
||||
if (.not.mask) return
|
||||
end if
|
||||
idxv(1) = idx
|
||||
call idxmap%g2l_ins(idxv,info)
|
||||
if (present(lidx)) then
|
||||
lidxv(1) = lidx
|
||||
call idxmap%g2l_ins(idxv,info,lidx=lidxv)
|
||||
else
|
||||
call idxmap%g2l_ins(idxv,info)
|
||||
end if
|
||||
idx = idxv(1)
|
||||
|
||||
end subroutine repl_g2ls1_ins
|
||||
|
||||
subroutine repl_g2ls2_ins(idxin,idxout,idxmap,info,mask)
|
||||
subroutine repl_g2ls2_ins(idxin,idxout,idxmap,info,mask,lidx)
|
||||
implicit none
|
||||
class(psb_repl_map), intent(inout) :: idxmap
|
||||
integer(psb_ipk_), intent(in) :: idxin
|
||||
integer(psb_ipk_), intent(out) :: idxout
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
logical, intent(in), optional :: mask
|
||||
integer, intent(in), optional :: lidx
|
||||
|
||||
idxout = idxin
|
||||
call idxmap%g2l_ins(idxout,info,mask=mask)
|
||||
call idxmap%g2l_ins(idxout,info,mask=mask,lidx=lidx)
|
||||
|
||||
end subroutine repl_g2ls2_ins
|
||||
|
||||
|
||||
subroutine repl_g2lv1_ins(idx,idxmap,info,mask)
|
||||
subroutine repl_g2lv1_ins(idx,idxmap,info,mask,lidx)
|
||||
use psb_realloc_mod
|
||||
use psb_sort_mod
|
||||
implicit none
|
||||
@@ -385,6 +392,8 @@ contains
|
||||
integer(psb_ipk_), intent(inout) :: idx(:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
logical, intent(in), optional :: mask(:)
|
||||
integer, intent(in), optional :: lidx(:)
|
||||
|
||||
integer(psb_ipk_) :: i, is
|
||||
|
||||
info = 0
|
||||
@@ -396,6 +405,12 @@ contains
|
||||
return
|
||||
end if
|
||||
end if
|
||||
if (present(lidx)) then
|
||||
if (size(lidx) < size(idx)) then
|
||||
info = -1
|
||||
return
|
||||
end if
|
||||
end if
|
||||
|
||||
|
||||
if (idxmap%is_asb()) then
|
||||
@@ -404,29 +419,50 @@ contains
|
||||
info = -1
|
||||
|
||||
else if (idxmap%is_valid()) then
|
||||
if (present(lidx)) then
|
||||
if (present(mask)) then
|
||||
do i=1, is
|
||||
if (mask(i)) then
|
||||
if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then
|
||||
! do nothing
|
||||
else
|
||||
idx(i) = -1
|
||||
end if
|
||||
end if
|
||||
end do
|
||||
|
||||
if (present(mask)) then
|
||||
do i=1, is
|
||||
if (mask(i)) then
|
||||
else if (.not.present(mask)) then
|
||||
|
||||
do i=1, is
|
||||
if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then
|
||||
! do nothing
|
||||
else
|
||||
idx(i) = -1
|
||||
end if
|
||||
end if
|
||||
end do
|
||||
end do
|
||||
end if
|
||||
else if (.not.present(lidx)) then
|
||||
if (present(mask)) then
|
||||
do i=1, is
|
||||
if (mask(i)) then
|
||||
if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then
|
||||
! do nothing
|
||||
else
|
||||
idx(i) = -1
|
||||
end if
|
||||
end if
|
||||
end do
|
||||
|
||||
else if (.not.present(mask)) then
|
||||
|
||||
do i=1, is
|
||||
if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then
|
||||
! do nothing
|
||||
else
|
||||
idx(i) = -1
|
||||
end if
|
||||
end do
|
||||
else if (.not.present(mask)) then
|
||||
do i=1, is
|
||||
if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then
|
||||
! do nothing
|
||||
else
|
||||
idx(i) = -1
|
||||
end if
|
||||
end do
|
||||
end if
|
||||
end if
|
||||
|
||||
else
|
||||
idx = -1
|
||||
info = -1
|
||||
@@ -434,19 +470,21 @@ contains
|
||||
|
||||
end subroutine repl_g2lv1_ins
|
||||
|
||||
subroutine repl_g2lv2_ins(idxin,idxout,idxmap,info,mask)
|
||||
subroutine repl_g2lv2_ins(idxin,idxout,idxmap,info,mask,lidx)
|
||||
implicit none
|
||||
class(psb_repl_map), intent(inout) :: idxmap
|
||||
integer(psb_ipk_), intent(in) :: idxin(:)
|
||||
integer(psb_ipk_), intent(out) :: idxout(:)
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
logical, intent(in), optional :: mask(:)
|
||||
integer, intent(in), optional :: lidx(:)
|
||||
|
||||
integer(psb_ipk_) :: is, im
|
||||
|
||||
is = size(idxin)
|
||||
im = min(is,size(idxout))
|
||||
idxout(1:im) = idxin(1:im)
|
||||
call idxmap%g2l_ins(idxout(1:im),info,mask)
|
||||
call idxmap%g2l_ins(idxout(1:im),info,mask=mask,lidx=lidx)
|
||||
if (is > im) info = -3
|
||||
|
||||
end subroutine repl_g2lv2_ins
|
||||
|
||||
Reference in New Issue
Block a user