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.
psblas-3.0-maint
Salvatore Filippone 13 years ago
parent 4accecb0c9
commit fe85dcc848

@ -48,7 +48,7 @@
! info - integer. return code.
! mask(:) - logical, optional Only do the conversion for specific indices.
!
subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask)
subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask,lidx)
use psi_mod, psb_protect_name => psi_idx_ins_cnv1
use psb_descriptor_type
use psb_serial_mod
@ -61,6 +61,7 @@ subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask)
type(psb_desc_type), intent(inout) :: desc
integer(psb_ipk_), intent(out) :: info
logical, intent(in), optional :: mask(:)
integer, intent(in), optional :: lidx(:)
integer(psb_ipk_) :: ictxt,mglob, nglob
integer(psb_ipk_) :: np, me
integer(psb_ipk_) :: nrow,ncol, err_act
@ -82,7 +83,7 @@ subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask)
call psb_info(ictxt, me, np)
if ((.not.allocated(desc%indxmap)).or.&
& (.not.psb_is_bld_desc(desc))) then
& (.not.desc%is_bld())) then
info = psb_err_invalid_cd_state_
call psb_errpush(info,name)
goto 9999
@ -112,7 +113,7 @@ subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask)
endif
call desc%indxmap%g2l_ins(idxin(1:nv),info,mask)
call desc%indxmap%g2l_ins(idxin(1:nv),info,mask=mask,lidx=lidx)
if (info /= 0) then
call psb_errpush(psb_err_from_subroutine_,name,a_err='g2l_ins')
@ -184,7 +185,7 @@ end subroutine psi_idx_ins_cnv1
! info - integer. return code.
! mask(:) - logical, optional Only do the conversion for specific indices.
!
subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask)
subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask,lidx)
use psi_mod, psb_protect_name => psi_idx_ins_cnv2
use psb_descriptor_type
use psb_serial_mod
@ -197,6 +198,8 @@ subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask)
type(psb_desc_type), intent(inout) :: desc
integer(psb_ipk_), intent(out) :: info
logical, intent(in), optional :: mask(:)
integer, intent(in), optional :: lidx(:)
integer(psb_ipk_) :: i,ictxt,k,mglob, nglob
integer(psb_ipk_) :: np, me, isize
integer(psb_ipk_) :: pnt_halo,nrow,ncol, nh, ip, err_act,lip,nxt,lipf
@ -216,8 +219,9 @@ subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask)
call psb_info(ictxt, me, np)
if (.not.psb_is_ok_desc(desc)) then
info = psb_err_input_matrix_unassembled_
if ((.not.allocated(desc%indxmap)).or.&
& (.not.desc%is_bld())) then
info = psb_err_invalid_cd_state_
call psb_errpush(info,name)
goto 9999
endif
@ -242,7 +246,7 @@ subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask)
end if
idxout(1:nv) = idxin(1:nv)
call psi_idx_ins_cnv(nv,idxout,desc,info,mask)
call psi_idx_ins_cnv(nv,idxout,desc,info,mask=mask,lidx=lidx)
call psb_erractionrestore(err_act)
return
@ -307,7 +311,7 @@ end subroutine psi_idx_ins_cnv2
! info - integer. return code.
! mask - logical, optional Only do the conversion for specific indices.
!
subroutine psi_idx_ins_cnvs2(idxin,idxout,desc,info,mask)
subroutine psi_idx_ins_cnvs2(idxin,idxout,desc,info,mask,lidx)
use psi_mod, psb_protect_name => psi_idx_ins_cnvs2
use psb_descriptor_type
integer(psb_ipk_), intent(in) :: idxin
@ -315,7 +319,8 @@ subroutine psi_idx_ins_cnvs2(idxin,idxout,desc,info,mask)
type(psb_desc_type), intent(inout) :: desc
integer(psb_ipk_), intent(out) :: info
logical, intent(in), optional :: mask
integer(psb_ipk_) :: iout(1)
integer, intent(in), optional :: lidx
integer(psb_ipk_) :: iout(1),lidxv(1)
logical :: mask_(1)
if (present(mask)) then
@ -325,7 +330,12 @@ subroutine psi_idx_ins_cnvs2(idxin,idxout,desc,info,mask)
end if
iout(1) = idxin
call psi_idx_ins_cnv(ione,iout,desc,info,mask_)
if (present(lidx)) then
lidxv(1) = lidx
call psi_idx_ins_cnv(ione,iout,desc,info,mask=mask_,lidx=lidxv)
else
call psi_idx_ins_cnv(ione,iout,desc,info,mask=mask_)
end if
idxout = iout(1)
return
@ -378,14 +388,15 @@ end subroutine psi_idx_ins_cnvs2
! info - integer. return code.
! mask - logical, optional Only do the conversion for specific indices.
!
subroutine psi_idx_ins_cnvs1(idxin,desc,info,mask)
subroutine psi_idx_ins_cnvs1(idxin,desc,info,mask,lidx)
use psi_mod, psb_protect_name => psi_idx_ins_cnvs1
use psb_descriptor_type
integer(psb_ipk_), intent(inout) :: idxin
type(psb_desc_type), intent(inout) :: desc
integer(psb_ipk_), intent(out) :: info
logical, intent(in), optional :: mask
integer(psb_ipk_) :: iout(1)
integer, intent(in), optional :: lidx
integer(psb_ipk_) :: iout(1),lidxv(1)
logical :: mask_(1)
if (present(mask)) then
@ -395,7 +406,12 @@ subroutine psi_idx_ins_cnvs1(idxin,desc,info,mask)
end if
iout(1) = idxin
call psi_idx_ins_cnv(ione,iout,desc,info,mask_)
if (present(lidx)) then
lidxv(1) = lidx
call psi_idx_ins_cnv(ione,iout,desc,info,mask=mask_,lidx=lidxv)
else
call psi_idx_ins_cnv(ione,iout,desc,info,mask_)
end if
idxin = iout(1)
return

@ -360,13 +360,14 @@ module psb_cd_if_tools_mod
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), optional, intent(out) :: ila(:), jla(:)
end subroutine psb_cdinsrc
subroutine psb_cdinsc(nz,ja,desc,info,jla,mask)
subroutine psb_cdinsc(nz,ja,desc,info,jla,mask,lidx)
import :: psb_ipk_, psb_desc_type
type(psb_desc_type), intent(inout) :: desc
integer(psb_ipk_), intent(in) :: nz,ja(:)
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), optional, intent(out) :: jla(:)
logical, optional, target, intent(in) :: mask(:)
integer, intent(in), optional :: lidx(:)
end subroutine psb_cdinsc
end interface

@ -406,7 +406,7 @@ contains
subroutine block_g2ls1_ins(idx,idxmap,info,mask)
subroutine block_g2ls1_ins(idx,idxmap,info,mask, lidx)
use psb_realloc_mod
use psb_sort_mod
implicit none
@ -414,34 +414,41 @@ 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_) :: idxv(1)
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 block_g2ls1_ins
subroutine block_g2ls2_ins(idxin,idxout,idxmap,info,mask)
subroutine block_g2ls2_ins(idxin,idxout,idxmap,info,mask,lidx)
implicit none
class(psb_gen_block_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)
call idxmap%g2l_ins(idxout,info,mask=mask,lidx=lidx)
end subroutine block_g2ls2_ins
subroutine block_g2lv1_ins(idx,idxmap,info,mask)
subroutine block_g2lv1_ins(idx,idxmap,info,mask,lidx)
use psb_realloc_mod
use psb_sort_mod
implicit none
@ -449,6 +456,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, nv, is, ix
integer(psb_ipk_) :: ip, lip, nxt
@ -462,6 +471,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
@ -471,16 +486,61 @@ contains
else if (idxmap%is_valid()) then
if (present(mask)) then
do i=1, is
if (mask(i)) then
if (present(lidx)) then
if (present(mask)) then
do i=1, is
if (mask(i)) then
if ((idxmap%min_glob_row <= idx(i)).and.(idx(i) <= idxmap%max_glob_row)) then
idx(i) = idx(i) - idxmap%min_glob_row + 1
else if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then
if (lidx(i) <= idxmap%local_rows) then
info = -5
return
end if
nxt = lidx(i)-idxmap%local_rows
ip = idx(i)
call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info)
if (info >= 0) then
if (lip == nxt) then
! We have added one item
call psb_ensure_size(nxt,idxmap%loc_to_glob,info,addsz=laddsz)
if (info /= 0) then
info = -4
return
end if
idxmap%local_cols = max(lidx(i),idxmap%local_cols)
idxmap%loc_to_glob(nxt) = idx(i)
end if
info = psb_success_
else
info = -5
return
end if
idx(i) = lip + idxmap%local_rows
else
idx(i) = -1
info = -1
end if
end if
end do
else if (.not.present(mask)) then
do i=1, is
if ((idxmap%min_glob_row <= idx(i)).and.(idx(i) <= idxmap%max_glob_row)) then
idx(i) = idx(i) - idxmap%min_glob_row + 1
else if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then
nv = idxmap%local_cols-idxmap%local_rows
nxt = nv + 1
if (lidx(i) <= idxmap%local_rows) then
info = -5
return
end if
nxt = lidx(i)-idxmap%local_rows
ip = idx(i)
call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info)
if (info >= 0) then
if (lip == nxt) then
! We have added one item
@ -489,7 +549,7 @@ contains
info = -4
return
end if
idxmap%local_cols = nxt + idxmap%local_rows
idxmap%local_cols = max(lidx(i),idxmap%local_cols)
idxmap%loc_to_glob(nxt) = idx(i)
end if
info = psb_success_
@ -502,43 +562,80 @@ contains
idx(i) = -1
info = -1
end if
end if
end do
end do
end if
else if (.not.present(mask)) then
else if (.not.present(lidx)) then
if (present(mask)) then
do i=1, is
if (mask(i)) then
if ((idxmap%min_glob_row <= idx(i)).and.(idx(i) <= idxmap%max_glob_row)) then
idx(i) = idx(i) - idxmap%min_glob_row + 1
else if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then
nv = idxmap%local_cols-idxmap%local_rows
nxt = nv + 1
ip = idx(i)
call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info)
if (info >= 0) then
if (lip == nxt) then
! We have added one item
call psb_ensure_size(nxt,idxmap%loc_to_glob,info,addsz=laddsz)
if (info /= 0) then
info = -4
return
end if
idxmap%local_cols = nxt + idxmap%local_rows
idxmap%loc_to_glob(nxt) = idx(i)
end if
info = psb_success_
else
info = -5
return
end if
idx(i) = lip + idxmap%local_rows
else
idx(i) = -1
info = -1
end if
end if
end do
do i=1, is
else if (.not.present(mask)) then
if ((idxmap%min_glob_row <= idx(i)).and.(idx(i) <= idxmap%max_glob_row)) then
idx(i) = idx(i) - idxmap%min_glob_row + 1
else if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then
nv = idxmap%local_cols-idxmap%local_rows
nxt = nv + 1
ip = idx(i)
call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info)
if (info >= 0) then
if (lip == nxt) then
! We have added one item
call psb_ensure_size(nxt,idxmap%loc_to_glob,info,addsz=laddsz)
if (info /= 0) then
info = -4
return
do i=1, is
if ((idxmap%min_glob_row <= idx(i)).and.(idx(i) <= idxmap%max_glob_row)) then
idx(i) = idx(i) - idxmap%min_glob_row + 1
else if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then
nv = idxmap%local_cols-idxmap%local_rows
nxt = nv + 1
ip = idx(i)
call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info)
if (info >= 0) then
if (lip == nxt) then
! We have added one item
call psb_ensure_size(nxt,idxmap%loc_to_glob,info,addsz=laddsz)
if (info /= 0) then
info = -4
return
end if
idxmap%local_cols = nxt + idxmap%local_rows
idxmap%loc_to_glob(nxt) = idx(i)
end if
idxmap%local_cols = nxt + idxmap%local_rows
idxmap%loc_to_glob(nxt) = idx(i)
info = psb_success_
else
info = -5
return
end if
info = psb_success_
else
info = -5
return
idx(i) = lip + idxmap%local_rows
else
idx(i) = -1
info = -1
end if
idx(i) = lip + idxmap%local_rows
else
idx(i) = -1
info = -1
end if
end do
end do
end if
end if
else
@ -548,19 +645,21 @@ contains
end subroutine block_g2lv1_ins
subroutine block_g2lv2_ins(idxin,idxout,idxmap,info,mask)
subroutine block_g2lv2_ins(idxin,idxout,idxmap,info,mask,lidx)
implicit none
class(psb_gen_block_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) then
!!$ write(0,*) 'g2lv2_ins err -3'
info = -3

@ -439,7 +439,7 @@ contains
subroutine hash_g2ls1_ins(idx,idxmap,info,mask)
subroutine hash_g2ls1_ins(idx,idxmap,info,mask,lidx)
use psb_realloc_mod
use psb_sort_mod
implicit none
@ -447,34 +447,43 @@ 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_) :: idxv(1)
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 hash_g2ls1_ins
subroutine hash_g2ls2_ins(idxin,idxout,idxmap,info,mask)
subroutine hash_g2ls2_ins(idxin,idxout,idxmap,info,mask,lidx)
implicit none
class(psb_hash_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 hash_g2ls2_ins
subroutine hash_g2lv1_ins(idx,idxmap,info,mask)
subroutine hash_g2lv1_ins(idx,idxmap,info,mask,lidx)
use psb_error_mod
use psb_realloc_mod
use psb_sort_mod
@ -483,7 +492,9 @@ contains
class(psb_hash_map), intent(inout) :: idxmap
integer(psb_ipk_), intent(inout) :: idx(:)
integer(psb_ipk_), intent(out) :: info
logical, intent(in), optional :: mask(:)
logical, intent(in), optional :: mask(:)
integer, intent(in), optional :: lidx(:)
integer(psb_ipk_) :: i, is, mglob, ip, lip, nrow, ncol, &
& nxt, err_act
integer(psb_mpik_) :: ictxt, me, np
@ -504,16 +515,159 @@ contains
return
end if
end if
if (present(lidx)) then
if (size(lidx) < size(idx)) then
info = -1
return
end if
end if
mglob = idxmap%get_gr()
nrow = idxmap%get_lr()
if (idxmap%is_bld()) then
if (present(mask)) then
do i = 1, is
ncol = idxmap%get_lc()
if (mask(i)) then
if (present(lidx)) then
if (present(mask)) then
do i = 1, is
ncol = idxmap%get_lc()
if (mask(i)) then
ip = idx(i)
if ((ip < 1 ).or.(ip>mglob) ) then
idx(i) = -1
cycle
endif
call hash_inner_cnv(ip,lip,idxmap%hashvmask,idxmap%hashv,idxmap%glb_lc,ncol)
if (lip < 0) then
nxt = lidx(i)
if (nxt <= nrow) then
idx(i) = -1
cycle
endif
call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info)
if (info >=0) then
if (nxt == lip) then
ncol = max(ncol,nxt)
call psb_ensure_size(ncol,idxmap%loc_to_glob,info,pad=-ione,addsz=laddsz)
if (info /= psb_success_) then
info=1
ch_err='psb_ensure_size'
call psb_errpush(psb_err_from_subroutine_ai_,name,&
&a_err=ch_err,i_err=(/info,izero,izero,izero,izero/))
goto 9999
end if
idxmap%loc_to_glob(nxt) = ip
call idxmap%set_lc(ncol)
endif
info = psb_success_
else
ch_err='SearchInsKeyVal'
call psb_errpush(psb_err_from_subroutine_ai_,name,&
& a_err=ch_err,i_err=(/info,izero,izero,izero,izero/))
goto 9999
end if
end if
idx(i) = lip
info = psb_success_
else
idx(i) = -1
end if
enddo
else if (.not.present(mask)) then
do i = 1, is
ncol = idxmap%get_lc()
ip = idx(i)
if ((ip < 1 ).or.(ip>mglob)) then
idx(i) = -1
cycle
endif
call hash_inner_cnv(ip,lip,idxmap%hashvmask,idxmap%hashv,idxmap%glb_lc,ncol)
if (lip < 0) then
nxt = lidx(i)
if (nxt <= nrow) then
idx(i) = -1
cycle
endif
call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info)
if (info >=0) then
if (nxt == lip) then
ncol = max(nxt,ncol)
call psb_ensure_size(ncol,idxmap%loc_to_glob,info,pad=-ione,addsz=laddsz)
if (info /= psb_success_) then
info=1
ch_err='psb_ensure_size'
call psb_errpush(psb_err_from_subroutine_ai_,name,&
&a_err=ch_err,i_err=(/info,izero,izero,izero,izero/))
goto 9999
end if
idxmap%loc_to_glob(nxt) = ip
call idxmap%set_lc(ncol)
endif
info = psb_success_
else
ch_err='SearchInsKeyVal'
call psb_errpush(psb_err_from_subroutine_ai_,name,&
& a_err=ch_err,i_err=(/info,izero,izero,izero,izero/))
goto 9999
end if
end if
idx(i) = lip
info = psb_success_
enddo
end if
else if (.not.present(lidx)) then
if (present(mask)) then
do i = 1, is
ncol = idxmap%get_lc()
if (mask(i)) then
ip = idx(i)
if ((ip < 1 ).or.(ip>mglob)) then
idx(i) = -1
cycle
endif
nxt = ncol + 1
call hash_inner_cnv(ip,lip,idxmap%hashvmask,idxmap%hashv,idxmap%glb_lc,ncol)
if (lip < 0) &
& call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info)
if (info >=0) then
if (nxt == lip) then
ncol = nxt
call psb_ensure_size(ncol,idxmap%loc_to_glob,info,pad=-ione,addsz=laddsz)
if (info /= psb_success_) then
info=1
ch_err='psb_ensure_size'
call psb_errpush(psb_err_from_subroutine_ai_,name,&
&a_err=ch_err,i_err=(/info,izero,izero,izero,izero/))
goto 9999
end if
idxmap%loc_to_glob(nxt) = ip
call idxmap%set_lc(ncol)
endif
info = psb_success_
else
ch_err='SearchInsKeyVal'
call psb_errpush(psb_err_from_subroutine_ai_,name,&
& a_err=ch_err,i_err=(/info,izero,izero,izero,izero/))
goto 9999
end if
idx(i) = lip
info = psb_success_
else
idx(i) = -1
end if
enddo
else if (.not.present(mask)) then
do i = 1, is
ncol = idxmap%get_lc()
ip = idx(i)
if ((ip < 1 ).or.(ip>mglob)) then
idx(i) = -1
@ -547,52 +701,11 @@ contains
end if
idx(i) = lip
info = psb_success_
else
idx(i) = -1
end if
enddo
else
do i = 1, is
ncol = idxmap%get_lc()
ip = idx(i)
if ((ip < 1 ).or.(ip>mglob)) then
idx(i) = -1
cycle
endif
nxt = ncol + 1
call hash_inner_cnv(ip,lip,idxmap%hashvmask,idxmap%hashv,idxmap%glb_lc,ncol)
if (lip < 0) &
& call psb_hash_searchinskey(ip,lip,nxt,idxmap%hash,info)
if (info >=0) then
if (nxt == lip) then
ncol = nxt
call psb_ensure_size(ncol,idxmap%loc_to_glob,info,pad=-ione,addsz=laddsz)
if (info /= psb_success_) then
info=1
ch_err='psb_ensure_size'
call psb_errpush(psb_err_from_subroutine_ai_,name,&
&a_err=ch_err,i_err=(/info,izero,izero,izero,izero/))
goto 9999
end if
idxmap%loc_to_glob(nxt) = ip
call idxmap%set_lc(ncol)
endif
info = psb_success_
else
ch_err='SearchInsKeyVal'
call psb_errpush(psb_err_from_subroutine_ai_,name,&
& a_err=ch_err,i_err=(/info,izero,izero,izero,izero/))
goto 9999
end if
idx(i) = lip
info = psb_success_
enddo
enddo
end if
end if
else
! Wrong state
idx = -1
@ -613,19 +726,21 @@ contains
end subroutine hash_g2lv1_ins
subroutine hash_g2lv2_ins(idxin,idxout,idxmap,info,mask)
subroutine hash_g2lv2_ins(idxin,idxout,idxmap,info,mask,lidx)
implicit none
class(psb_hash_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) then
write(0,*) 'g2lv2_ins err -3'
info = -3

@ -659,13 +659,14 @@ contains
subroutine base_g2ls1_ins(idx,idxmap,info,mask)
subroutine base_g2ls1_ins(idx,idxmap,info,mask, lidx)
use psb_error_mod
implicit none
class(psb_indx_map), intent(inout) :: idxmap
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_) :: err_act
character(len=20) :: name='base_g2l_ins'
logical, parameter :: debug=.false.
@ -684,7 +685,7 @@ contains
end subroutine base_g2ls1_ins
subroutine base_g2ls2_ins(idxin,idxout,idxmap,info,mask)
subroutine base_g2ls2_ins(idxin,idxout,idxmap,info,mask, lidx)
use psb_error_mod
implicit none
class(psb_indx_map), intent(inout) :: idxmap
@ -692,6 +693,7 @@ contains
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_) :: err_act
character(len=20) :: name='base_g2l_ins'
@ -712,13 +714,14 @@ contains
end subroutine base_g2ls2_ins
subroutine base_g2lv1_ins(idx,idxmap,info,mask)
subroutine base_g2lv1_ins(idx,idxmap,info,mask, lidx)
use psb_error_mod
implicit none
class(psb_indx_map), intent(inout) :: idxmap
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_) :: err_act
character(len=20) :: name='base_g2l_ins'
@ -738,7 +741,7 @@ contains
end subroutine base_g2lv1_ins
subroutine base_g2lv2_ins(idxin,idxout,idxmap,info,mask)
subroutine base_g2lv2_ins(idxin,idxout,idxmap,info,mask,lidx)
use psb_error_mod
implicit none
class(psb_indx_map), intent(inout) :: idxmap
@ -746,6 +749,8 @@ contains
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_) :: err_act
character(len=20) :: name='base_g2l_ins'
logical, parameter :: debug=.false.

@ -349,7 +349,7 @@ contains
subroutine list_g2ls1_ins(idx,idxmap,info,mask)
subroutine list_g2ls1_ins(idx,idxmap,info,mask,lidx)
use psb_realloc_mod
use psb_sort_mod
implicit none
@ -357,34 +357,42 @@ 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 list_g2ls1_ins
subroutine list_g2ls2_ins(idxin,idxout,idxmap,info,mask)
subroutine list_g2ls2_ins(idxin,idxout,idxmap,info,mask,lidx)
implicit none
class(psb_list_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 list_g2ls2_ins
subroutine list_g2lv1_ins(idx,idxmap,info,mask)
subroutine list_g2lv1_ins(idx,idxmap,info,mask,lidx)
use psb_realloc_mod
use psb_sort_mod
implicit none
@ -392,7 +400,9 @@ contains
integer(psb_ipk_), intent(inout) :: idx(:)
integer(psb_ipk_), intent(out) :: info
logical, intent(in), optional :: mask(:)
integer(psb_ipk_) :: i, is, ix
integer, intent(in), optional :: lidx(:)
integer(psb_ipk_) :: i, is, ix, lix
info = 0
is = size(idx)
@ -403,6 +413,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
@ -412,50 +428,100 @@ contains
else if (idxmap%is_valid()) then
if (present(mask)) then
do i=1, is
if (mask(i)) 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
ix = idxmap%glob_to_loc(idx(i))
if (ix < 0) then
ix = lidx(i)
call psb_ensure_size(ix,idxmap%loc_to_glob,info,addsz=laddsz)
if ((ix <= idxmap%local_rows).or.(info /= 0)) then
info = -4
return
end if
idxmap%local_cols = max(ix,idxmap%local_cols)
idxmap%loc_to_glob(ix) = idx(i)
idxmap%glob_to_loc(idx(i)) = ix
end if
idx(i) = ix
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
ix = idxmap%glob_to_loc(idx(i))
if (ix < 0) then
ix = idxmap%local_cols + 1
ix = lidx(i)
call psb_ensure_size(ix,idxmap%loc_to_glob,info,addsz=laddsz)
if (info /= 0) then
if ((ix <= idxmap%local_rows).or.(info /= 0)) then
info = -4
return
end if
idxmap%local_cols = ix
idxmap%loc_to_glob(ix) = idx(i)
idxmap%local_cols = max(ix,idxmap%local_cols)
idxmap%loc_to_glob(ix) = idx(i)
idxmap%glob_to_loc(idx(i)) = ix
end if
idx(i) = ix
else
idx(i) = -1
end if
end if
end do
end do
end if
else if (.not.present(mask)) then
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
ix = idxmap%glob_to_loc(idx(i))
if (ix < 0) then
ix = idxmap%local_cols + 1
call psb_ensure_size(ix,idxmap%loc_to_glob,info,addsz=laddsz)
if (info /= 0) then
info = -4
return
end if
idxmap%local_cols = ix
idxmap%loc_to_glob(ix) = idx(i)
idxmap%glob_to_loc(idx(i)) = ix
end if
idx(i) = ix
else
idx(i) = -1
end if
end if
end do
do i=1, is
if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then
ix = idxmap%glob_to_loc(idx(i))
if (ix < 0) then
ix = idxmap%local_cols + 1
call psb_ensure_size(ix,idxmap%loc_to_glob,info,addsz=laddsz)
if (info /= 0) then
info = -4
return
else if (.not.present(mask)) then
do i=1, is
if ((1<= idx(i)).and.(idx(i) <= idxmap%global_rows)) then
ix = idxmap%glob_to_loc(idx(i))
if (ix < 0) then
ix = idxmap%local_cols + 1
call psb_ensure_size(ix,idxmap%loc_to_glob,info,addsz=laddsz)
if (info /= 0) then
info = -4
return
end if
idxmap%local_cols = ix
idxmap%loc_to_glob(ix) = idx(i)
idxmap%glob_to_loc(idx(i)) = ix
end if
idxmap%local_cols = ix
idxmap%loc_to_glob(ix) = idx(i)
idxmap%glob_to_loc(idx(i)) = ix
idx(i) = ix
else
idx(i) = -1
end if
idx(i) = ix
else
idx(i) = -1
end if
end do
end do
end if
end if
else
@ -465,83 +531,29 @@ contains
end subroutine list_g2lv1_ins
subroutine list_g2lv2_ins(idxin,idxout,idxmap,info,mask)
subroutine list_g2lv2_ins(idxin,idxout,idxmap,info,mask,lidx)
implicit none
class(psb_list_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 list_g2lv2_ins
!!$
!!$ subroutine list_initvg(idxmap,vg,ictxt,info)
!!$ use psb_penv_mod
!!$ use psb_error_mod
!!$ implicit none
!!$ class(psb_list_map), intent(inout) :: idxmap
!!$ integer(psb_ipk_), intent(in) :: ictxt, vg(:)
!!$ integer(psb_ipk_), intent(out) :: info
!!$ ! To be implemented
!!$ integer(psb_ipk_) :: iam, np, i, j, n, nl
!!$
!!$
!!$ info = 0
!!$ call psb_info(ictxt,iam,np)
!!$ if (np < 0) then
!!$ write(psb_err_unit,*) 'Invalid ictxt:',ictxt
!!$ info = -1
!!$ return
!!$ end if
!!$ n = size(vg)
!!$
!!$ idxmap%global_rows = n
!!$ idxmap%global_cols = n
!!$
!!$ allocate(idxmap%loc_to_glob(n),idxmap%glob_to_loc(n),&
!!$ & stat=info)
!!$ if (info /= 0) then
!!$ info = -2
!!$ return
!!$ end if
!!$
!!$ idxmap%ictxt = ictxt
!!$ idxmap%state = psb_desc_bld_
!!$ call psb_get_mpicomm(ictxt,idxmap%mpic)
!!$
!!$ nl = 0
!!$ do i=1, n
!!$ if ((vg(i) > np-1).or.(vg(i) < 0)) then
!!$ info=psb_err_partfunc_wrong_pid_
!!$ exit
!!$ end if
!!$ if (vg(i) == iam) then
!!$ ! this point belongs to me
!!$ nl = nl + 1
!!$ idxmap%glob_to_loc(i) = nl
!!$ idxmap%loc_to_glob(nl) = i
!!$ else
!!$ idxmap%glob_to_loc(i) = -(np+vg(i)+1)
!!$ end if
!!$ end do
!!$
!!$ call idxmap%set_lr(nl)
!!$ call idxmap%set_lc(nl)
!!$
!!$ end subroutine list_initvg
!!$
subroutine list_initvl(idxmap,ictxt,vL,info)
subroutine list_initvl(idxmap,ictxt,vl,info)
use psb_penv_mod
use psb_error_mod
implicit none

@ -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
else if (.not.present(mask)) then
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
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

@ -186,36 +186,40 @@ module psi_i_mod
end interface psi_idx_cnv
interface psi_idx_ins_cnv
subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask)
subroutine psi_idx_ins_cnv1(nv,idxin,desc,info,mask,lidx)
import :: psb_desc_type, psb_ipk_
integer(psb_ipk_), intent(in) :: nv
integer(psb_ipk_), intent(inout) :: idxin(:)
type(psb_desc_type), intent(inout) :: desc
integer(psb_ipk_), intent(out) :: info
logical, intent(in), optional :: mask(:)
integer, intent(in), optional :: lidx(:)
end subroutine psi_idx_ins_cnv1
subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask)
subroutine psi_idx_ins_cnv2(nv,idxin,idxout,desc,info,mask,lidx)
import :: psb_desc_type, psb_ipk_
integer(psb_ipk_), intent(in) :: nv, idxin(:)
integer(psb_ipk_), intent(out) :: idxout(:)
type(psb_desc_type), intent(inout) :: desc
integer(psb_ipk_), intent(out) :: info
logical, intent(in), optional :: mask(:)
integer, intent(in), optional :: lidx(:)
end subroutine psi_idx_ins_cnv2
subroutine psi_idx_ins_cnvs2(idxin,idxout,desc,info,mask)
subroutine psi_idx_ins_cnvs2(idxin,idxout,desc,info,mask,lidx)
import :: psb_desc_type, psb_ipk_
integer(psb_ipk_), intent(in) :: idxin
integer(psb_ipk_), intent(out) :: idxout
type(psb_desc_type), intent(inout) :: desc
integer(psb_ipk_), intent(out) :: info
logical, intent(in), optional :: mask
integer, intent(in), optional :: lidx
end subroutine psi_idx_ins_cnvs2
subroutine psi_idx_ins_cnvs1(idxin,desc,info,mask)
subroutine psi_idx_ins_cnvs1(idxin,desc,info,mask,lidx)
import :: psb_desc_type, psb_ipk_
integer(psb_ipk_), intent(inout) :: idxin
type(psb_desc_type), intent(inout) :: desc
integer(psb_ipk_), intent(out) :: info
logical, intent(in), optional :: mask
integer, intent(in), optional :: lidx
end subroutine psi_idx_ins_cnvs1
end interface psi_idx_ins_cnv

@ -167,17 +167,19 @@ end subroutine psb_cdinsrc
! jla(:) - integer(psb_ipk_), optional The col indices in local numbering
! mask(:) - logical, optional, target
!
subroutine psb_cdinsc(nz,ja,desc,info,jla,mask)
subroutine psb_cdinsc(nz,ja,desc,info,jla,mask,lidx)
use psb_base_mod, psb_protect_name => psb_cdinsc
use psi_mod
implicit none
!....PARAMETERS...
Type(psb_desc_type), intent(inout) :: desc
integer(psb_ipk_), intent(in) :: nz,ja(:)
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), optional, intent(out) :: jla(:)
logical, optional, target, intent(in) :: mask(:)
Type(psb_desc_type), intent(inout) :: desc
integer(psb_ipk_), intent(in) :: nz,ja(:)
integer(psb_ipk_), intent(out) :: info
integer(psb_ipk_), optional, intent(out) :: jla(:)
logical, optional, target, intent(in) :: mask(:)
integer, intent(in), optional :: lidx(:)
!LOCALS.....
@ -230,6 +232,13 @@ subroutine psb_cdinsc(nz,ja,desc,info,jla,mask)
goto 9999
end if
end if
if (present(lidx)) then
if (size(lidx) < nz) then
info = 1111
call psb_errpush(info,name)
goto 9999
end if
end if
if (present(mask)) then
if (size(mask) < nz) then
info = 1111
@ -244,7 +253,7 @@ subroutine psb_cdinsc(nz,ja,desc,info,jla,mask)
end if
if (present(jla)) then
call psi_idx_ins_cnv(nz,ja,jla,desc,info,mask=mask_)
call psi_idx_ins_cnv(nz,ja,jla,desc,info,mask=mask_,lidx=lidx)
else
allocate(jla_(nz),stat=info)
if (info /= psb_success_) then
@ -252,7 +261,7 @@ subroutine psb_cdinsc(nz,ja,desc,info,jla,mask)
call psb_errpush(info,name)
goto 9999
end if
call psi_idx_ins_cnv(nz,ja,jla_,desc,info,mask=mask_)
call psi_idx_ins_cnv(nz,ja,jla_,desc,info,mask=mask_,lidx=lidx)
deallocate(jla_)
end if

@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="previous" HREF="node118.html">
<LINK REL="previous" HREF="node119.html">
<LINK REL="up" HREF="userhtml.html">
</HEAD>
@ -104,8 +104,8 @@ sample scatter/gather routines.
.
</PRE>
</DD>
<DT><A NAME="foot7086">... follows</A><A
HREF="node112.html#tex2html30"><SUP>3</SUP></A></DT>
<DT><A NAME="foot7107">... follows</A><A
HREF="node113.html#tex2html30"><SUP>3</SUP></A></DT>
<DD>The string is case-insensitive
<PRE>.

@ -78,297 +78,301 @@ April 16, 2012.
HREF="node5.html">Library contents</A>
<LI><A NAME="tex2html40"
HREF="node6.html">Application structure</A>
<UL>
<LI><A NAME="tex2html41"
HREF="node7.html">Programming model</A>
HREF="node7.html">User-defined index mappings</A>
</UL>
<BR>
<LI><A NAME="tex2html42"
HREF="node8.html">Data Structures and Classes</A>
<UL>
HREF="node8.html">Programming model</A>
</UL>
<BR>
<LI><A NAME="tex2html43"
HREF="node9.html">Descriptor data structure</A>
HREF="node9.html">Data Structures and Classes</A>
<UL>
<LI><A NAME="tex2html44"
HREF="node10.html">Methods</A>
HREF="node10.html">Descriptor data structure</A>
<UL>
<LI><A NAME="tex2html45"
HREF="node11.html">get_local_rows -- Get number of local rows</A>
HREF="node11.html">Methods</A>
<LI><A NAME="tex2html46"
HREF="node12.html">get_local_cols -- Get number of local cols</A>
HREF="node12.html">get_local_rows -- Get number of local rows</A>
<LI><A NAME="tex2html47"
HREF="node13.html">get_global_rows -- Get number of global rows</A>
HREF="node13.html">get_local_cols -- Get number of local cols</A>
<LI><A NAME="tex2html48"
HREF="node14.html">get_global_cols -- Get number of global cols</A>
</UL>
HREF="node14.html">get_global_rows -- Get number of global rows</A>
<LI><A NAME="tex2html49"
HREF="node15.html">
HREF="node15.html">get_global_cols -- Get number of global cols</A>
</UL>
<LI><A NAME="tex2html50"
HREF="node16.html">
<DIV ALIGN="LEFT">
get_context--Get communication context
</DIV></A>
<UL>
<LI><A NAME="tex2html50"
HREF="node16.html">psb_cd_get_large_threshold -- Get threshold for
index mapping switch</A>
<LI><A NAME="tex2html51"
HREF="node17.html">psb_cd_set_large_threshold -- Set threshold for
HREF="node17.html">psb_cd_get_large_threshold -- Get threshold for
index mapping switch</A>
<LI><A NAME="tex2html52"
HREF="node18.html">Named Constants</A>
</UL>
HREF="node18.html">psb_cd_set_large_threshold -- Set threshold for
index mapping switch</A>
<LI><A NAME="tex2html53"
HREF="node19.html">Sparse Matrix class</A>
<UL>
HREF="node19.html">Named Constants</A>
</UL>
<LI><A NAME="tex2html54"
HREF="node20.html">Methods</A>
HREF="node20.html">Sparse Matrix class</A>
<UL>
<LI><A NAME="tex2html55"
HREF="node21.html">get_nrows -- Get number of rows in a sparse matrix</A>
HREF="node21.html">Methods</A>
<LI><A NAME="tex2html56"
HREF="node22.html">get_ncols -- Get number of columns in a sparse matrix</A>
HREF="node22.html">get_nrows -- Get number of rows in a sparse matrix</A>
<LI><A NAME="tex2html57"
HREF="node23.html">get_nnzeros -- Get number of nonzero elements
in a sparse matrix</A>
HREF="node23.html">get_ncols -- Get number of columns in a sparse matrix</A>
<LI><A NAME="tex2html58"
HREF="node24.html">get_size -- Get maximum number of nonzero elements
HREF="node24.html">get_nnzeros -- Get number of nonzero elements
in a sparse matrix</A>
<LI><A NAME="tex2html59"
HREF="node25.html">sizeof -- Get memory occupation in bytes
of a sparse matrix</A>
HREF="node25.html">get_size -- Get maximum number of nonzero elements
in a sparse matrix</A>
<LI><A NAME="tex2html60"
HREF="node26.html">get_fmt -- Short description of the dynamic type</A>
HREF="node26.html">sizeof -- Get memory occupation in bytes
of a sparse matrix</A>
<LI><A NAME="tex2html61"
HREF="node27.html">is_bld, is_upd, is_asb -- Status check</A>
HREF="node27.html">get_fmt -- Short description of the dynamic type</A>
<LI><A NAME="tex2html62"
HREF="node28.html">Named Constants</A>
</UL>
HREF="node28.html">is_bld, is_upd, is_asb -- Status check</A>
<LI><A NAME="tex2html63"
HREF="node29.html">Dense Vector Data Structure</A>
<UL>
HREF="node29.html">Named Constants</A>
</UL>
<LI><A NAME="tex2html64"
HREF="node30.html">Methods</A>
HREF="node30.html">Dense Vector Data Structure</A>
<UL>
<LI><A NAME="tex2html65"
HREF="node31.html">get_nrows -- Get number of rows in a dense vector</A>
HREF="node31.html">Methods</A>
<LI><A NAME="tex2html66"
HREF="node32.html">get_ncols -- Get number of columns in a sparse matrix</A>
HREF="node32.html">get_nrows -- Get number of rows in a dense vector</A>
<LI><A NAME="tex2html67"
HREF="node33.html">sizeof -- Get memory occupation in bytes
of a dense vector matrix</A>
HREF="node33.html">get_ncols -- Get number of columns in a sparse matrix</A>
<LI><A NAME="tex2html68"
HREF="node34.html">get_vect -- Get a copy of the vector contents</A>
</UL>
HREF="node34.html">sizeof -- Get memory occupation in bytes
of a dense vector matrix</A>
<LI><A NAME="tex2html69"
HREF="node35.html">Preconditioner data structure</A>
HREF="node35.html">get_vect -- Get a copy of the vector contents</A>
</UL>
<BR>
<LI><A NAME="tex2html70"
HREF="node36.html">Computational routines</A>
<UL>
HREF="node36.html">Preconditioner data structure</A>
</UL>
<BR>
<LI><A NAME="tex2html71"
HREF="node37.html">psb_geaxpby -- General Dense Matrix Sum</A>
HREF="node37.html">Computational routines</A>
<UL>
<LI><A NAME="tex2html72"
HREF="node38.html">psb_gedot -- Dot Product</A>
HREF="node38.html">psb_geaxpby -- General Dense Matrix Sum</A>
<LI><A NAME="tex2html73"
HREF="node39.html">psb_gedots -- Generalized Dot Product</A>
HREF="node39.html">psb_gedot -- Dot Product</A>
<LI><A NAME="tex2html74"
HREF="node40.html">psb_geamax -- Infinity-Norm of Vector</A>
HREF="node40.html">psb_gedots -- Generalized Dot Product</A>
<LI><A NAME="tex2html75"
HREF="node41.html">psb_geamaxs -- Generalized Infinity Norm</A>
HREF="node41.html">psb_geamax -- Infinity-Norm of Vector</A>
<LI><A NAME="tex2html76"
HREF="node42.html">psb_geasum -- 1-Norm of Vector</A>
HREF="node42.html">psb_geamaxs -- Generalized Infinity Norm</A>
<LI><A NAME="tex2html77"
HREF="node43.html">psb_geasums -- Generalized 1-Norm of Vector</A>
HREF="node43.html">psb_geasum -- 1-Norm of Vector</A>
<LI><A NAME="tex2html78"
HREF="node44.html">psb_genrm2 -- 2-Norm of Vector</A>
HREF="node44.html">psb_geasums -- Generalized 1-Norm of Vector</A>
<LI><A NAME="tex2html79"
HREF="node45.html">psb_genrm2s -- Generalized 2-Norm of Vector</A>
HREF="node45.html">psb_genrm2 -- 2-Norm of Vector</A>
<LI><A NAME="tex2html80"
HREF="node46.html">psb_spnrm1 -- 1-Norm of Sparse Matrix</A>
HREF="node46.html">psb_genrm2s -- Generalized 2-Norm of Vector</A>
<LI><A NAME="tex2html81"
HREF="node47.html">psb_spnrmi -- Infinity Norm of Sparse Matrix</A>
HREF="node47.html">psb_spnrm1 -- 1-Norm of Sparse Matrix</A>
<LI><A NAME="tex2html82"
HREF="node48.html">psb_spmm -- Sparse Matrix by Dense Matrix Product</A>
HREF="node48.html">psb_spnrmi -- Infinity Norm of Sparse Matrix</A>
<LI><A NAME="tex2html83"
HREF="node49.html">psb_spsm -- Triangular System Solve</A>
HREF="node49.html">psb_spmm -- Sparse Matrix by Dense Matrix Product</A>
<LI><A NAME="tex2html84"
HREF="node50.html">psb_spsm -- Triangular System Solve</A>
</UL>
<BR>
<LI><A NAME="tex2html84"
HREF="node50.html">Communication routines</A>
<UL>
<LI><A NAME="tex2html85"
HREF="node51.html">psb_halo -- Halo Data Communication</A>
HREF="node51.html">Communication routines</A>
<UL>
<LI><A NAME="tex2html86"
HREF="node52.html">psb_ovrl -- Overlap Update</A>
HREF="node52.html">psb_halo -- Halo Data Communication</A>
<LI><A NAME="tex2html87"
HREF="node53.html">psb_gather -- Gather Global Dense Matrix</A>
HREF="node53.html">psb_ovrl -- Overlap Update</A>
<LI><A NAME="tex2html88"
HREF="node54.html">psb_scatter -- Scatter Global Dense Matrix</A>
HREF="node54.html">psb_gather -- Gather Global Dense Matrix</A>
<LI><A NAME="tex2html89"
HREF="node55.html">psb_scatter -- Scatter Global Dense Matrix</A>
</UL>
<BR>
<LI><A NAME="tex2html89"
HREF="node55.html">Data management routines</A>
<UL>
<LI><A NAME="tex2html90"
HREF="node56.html">psb_cdall -- Allocates a communication descriptor</A>
HREF="node56.html">Data management routines</A>
<UL>
<LI><A NAME="tex2html91"
HREF="node57.html">psb_cdins -- Communication descriptor insert routine</A>
HREF="node57.html">psb_cdall -- Allocates a communication descriptor</A>
<LI><A NAME="tex2html92"
HREF="node58.html">psb_cdasb -- Communication descriptor assembly routine</A>
HREF="node58.html">psb_cdins -- Communication descriptor insert routine</A>
<LI><A NAME="tex2html93"
HREF="node59.html">psb_cdcpy -- Copies a communication descriptor</A>
HREF="node59.html">psb_cdasb -- Communication descriptor assembly routine</A>
<LI><A NAME="tex2html94"
HREF="node60.html">psb_cdfree -- Frees a communication descriptor</A>
HREF="node60.html">psb_cdcpy -- Copies a communication descriptor</A>
<LI><A NAME="tex2html95"
HREF="node61.html">psb_cdbldext -- Build an extended communication
descriptor</A>
HREF="node61.html">psb_cdfree -- Frees a communication descriptor</A>
<LI><A NAME="tex2html96"
HREF="node62.html">psb_spall -- Allocates a sparse matrix</A>
HREF="node62.html">psb_cdbldext -- Build an extended communication
descriptor</A>
<LI><A NAME="tex2html97"
HREF="node63.html">psb_spins -- Insert a cloud of elements into a sparse
matrix</A>
HREF="node63.html">psb_spall -- Allocates a sparse matrix</A>
<LI><A NAME="tex2html98"
HREF="node64.html">psb_spasb -- Sparse matrix assembly routine</A>
HREF="node64.html">psb_spins -- Insert a cloud of elements into a sparse
matrix</A>
<LI><A NAME="tex2html99"
HREF="node65.html">psb_spfree -- Frees a sparse matrix</A>
HREF="node65.html">psb_spasb -- Sparse matrix assembly routine</A>
<LI><A NAME="tex2html100"
HREF="node66.html">psb_sprn -- Reinit sparse matrix structure for psblas
routines.</A>
HREF="node66.html">psb_spfree -- Frees a sparse matrix</A>
<LI><A NAME="tex2html101"
HREF="node67.html">psb_geall -- Allocates a dense matrix</A>
HREF="node67.html">psb_sprn -- Reinit sparse matrix structure for psblas
routines.</A>
<LI><A NAME="tex2html102"
HREF="node68.html">psb_geins -- Dense matrix insertion routine</A>
HREF="node68.html">psb_geall -- Allocates a dense matrix</A>
<LI><A NAME="tex2html103"
HREF="node69.html">psb_geasb -- Assembly a dense matrix</A>
HREF="node69.html">psb_geins -- Dense matrix insertion routine</A>
<LI><A NAME="tex2html104"
HREF="node70.html">psb_gefree -- Frees a dense matrix</A>
HREF="node70.html">psb_geasb -- Assembly a dense matrix</A>
<LI><A NAME="tex2html105"
HREF="node71.html">psb_gelp -- Applies a left permutation to a dense
matrix</A>
HREF="node71.html">psb_gefree -- Frees a dense matrix</A>
<LI><A NAME="tex2html106"
HREF="node72.html">psb_glob_to_loc -- Global to local indices
convertion</A>
HREF="node72.html">psb_gelp -- Applies a left permutation to a dense
matrix</A>
<LI><A NAME="tex2html107"
HREF="node73.html">psb_loc_to_glob -- Local to global indices
conversion</A>
HREF="node73.html">psb_glob_to_loc -- Global to local indices
convertion</A>
<LI><A NAME="tex2html108"
HREF="node74.html">psb_is_owned </A>
HREF="node74.html">psb_loc_to_glob -- Local to global indices
conversion</A>
<LI><A NAME="tex2html109"
HREF="node75.html">psb_owned_index </A>
HREF="node75.html">psb_is_owned </A>
<LI><A NAME="tex2html110"
HREF="node76.html">psb_is_local </A>
HREF="node76.html">psb_owned_index </A>
<LI><A NAME="tex2html111"
HREF="node77.html">psb_local_index </A>
HREF="node77.html">psb_is_local </A>
<LI><A NAME="tex2html112"
HREF="node78.html">psb_get_boundary -- Extract list of boundary elements</A>
HREF="node78.html">psb_local_index </A>
<LI><A NAME="tex2html113"
HREF="node79.html">psb_get_overlap -- Extract list of overlap elements</A>
HREF="node79.html">psb_get_boundary -- Extract list of boundary elements</A>
<LI><A NAME="tex2html114"
HREF="node80.html">psb_sp_getrow -- Extract row(s) from a sparse matrix</A>
HREF="node80.html">psb_get_overlap -- Extract list of overlap elements</A>
<LI><A NAME="tex2html115"
HREF="node81.html">psb_sizeof -- Memory occupation</A>
HREF="node81.html">psb_sp_getrow -- Extract row(s) from a sparse matrix</A>
<LI><A NAME="tex2html116"
HREF="node82.html">Sorting utilities</A>
HREF="node82.html">psb_sizeof -- Memory occupation</A>
<LI><A NAME="tex2html117"
HREF="node83.html">Sorting utilities</A>
</UL>
<BR>
<LI><A NAME="tex2html117"
HREF="node83.html">Parallel environment routines</A>
<UL>
<LI><A NAME="tex2html118"
HREF="node84.html">psb_init -- Initializes PSBLAS parallel environment</A>
HREF="node84.html">Parallel environment routines</A>
<UL>
<LI><A NAME="tex2html119"
HREF="node85.html">psb_info -- Return information about PSBLAS parallel
environment</A>
HREF="node85.html">psb_init -- Initializes PSBLAS parallel environment</A>
<LI><A NAME="tex2html120"
HREF="node86.html">psb_exit -- Exit from PSBLAS parallel environment</A>
HREF="node86.html">psb_info -- Return information about PSBLAS parallel
environment</A>
<LI><A NAME="tex2html121"
HREF="node87.html">psb_get_mpicomm -- Get the MPI communicator</A>
HREF="node87.html">psb_exit -- Exit from PSBLAS parallel environment</A>
<LI><A NAME="tex2html122"
HREF="node88.html">psb_get_rank -- Get the MPI rank</A>
HREF="node88.html">psb_get_mpicomm -- Get the MPI communicator</A>
<LI><A NAME="tex2html123"
HREF="node89.html">psb_wtime -- Wall clock timing</A>
HREF="node89.html">psb_get_rank -- Get the MPI rank</A>
<LI><A NAME="tex2html124"
HREF="node90.html">psb_barrier -- Sinchronization point parallel
environment</A>
HREF="node90.html">psb_wtime -- Wall clock timing</A>
<LI><A NAME="tex2html125"
HREF="node91.html">psb_abort -- Abort a computation</A>
HREF="node91.html">psb_barrier -- Sinchronization point parallel
environment</A>
<LI><A NAME="tex2html126"
HREF="node92.html">psb_bcast -- Broadcast data</A>
HREF="node92.html">psb_abort -- Abort a computation</A>
<LI><A NAME="tex2html127"
HREF="node93.html">psb_sum -- Global sum</A>
HREF="node93.html">psb_bcast -- Broadcast data</A>
<LI><A NAME="tex2html128"
HREF="node94.html">psb_max -- Global maximum</A>
HREF="node94.html">psb_sum -- Global sum</A>
<LI><A NAME="tex2html129"
HREF="node95.html">psb_min -- Global minimum</A>
HREF="node95.html">psb_max -- Global maximum</A>
<LI><A NAME="tex2html130"
HREF="node96.html">psb_amx -- Global maximum absolute value</A>
HREF="node96.html">psb_min -- Global minimum</A>
<LI><A NAME="tex2html131"
HREF="node97.html">psb_amn -- Global minimum absolute value</A>
HREF="node97.html">psb_amx -- Global maximum absolute value</A>
<LI><A NAME="tex2html132"
HREF="node98.html">psb_snd -- Send data</A>
HREF="node98.html">psb_amn -- Global minimum absolute value</A>
<LI><A NAME="tex2html133"
HREF="node99.html">psb_rcv -- Receive data</A>
HREF="node99.html">psb_snd -- Send data</A>
<LI><A NAME="tex2html134"
HREF="node100.html">psb_rcv -- Receive data</A>
</UL>
<BR>
<LI><A NAME="tex2html134"
HREF="node100.html">Error handling</A>
<UL>
<LI><A NAME="tex2html135"
HREF="node101.html">psb_errpush -- Pushes an error code onto the error
stack</A>
HREF="node101.html">Error handling</A>
<UL>
<LI><A NAME="tex2html136"
HREF="node102.html">psb_error -- Prints the error stack content and aborts
execution</A>
HREF="node102.html">psb_errpush -- Pushes an error code onto the error
stack</A>
<LI><A NAME="tex2html137"
HREF="node103.html">psb_set_errverbosity -- Sets the verbosity of error
messages.</A>
HREF="node103.html">psb_error -- Prints the error stack content and aborts
execution</A>
<LI><A NAME="tex2html138"
HREF="node104.html">psb_set_erraction -- Set the type of action to be
HREF="node104.html">psb_set_errverbosity -- Sets the verbosity of error
messages.</A>
<LI><A NAME="tex2html139"
HREF="node105.html">psb_set_erraction -- Set the type of action to be
taken upon error condition.</A>
</UL>
<BR>
<LI><A NAME="tex2html139"
HREF="node105.html">Utilities</A>
<UL>
<LI><A NAME="tex2html140"
HREF="node106.html">hb_read -- Read a sparse matrix from a file in the
Harwell-Boeing format</A>
HREF="node106.html">Utilities</A>
<UL>
<LI><A NAME="tex2html141"
HREF="node107.html">hb_write -- Write a sparse matrix to a file
in the Harwell-Boeing format</A>
HREF="node107.html">hb_read -- Read a sparse matrix from a file in the
Harwell-Boeing format</A>
<LI><A NAME="tex2html142"
HREF="node108.html">mm_mat_read -- Read a sparse matrix from a
file in the MatrixMarket format</A>
HREF="node108.html">hb_write -- Write a sparse matrix to a file
in the Harwell-Boeing format</A>
<LI><A NAME="tex2html143"
HREF="node109.html">mm_vet_read -- Read a dense vector from a
HREF="node109.html">mm_mat_read -- Read a sparse matrix from a
file in the MatrixMarket format</A>
<LI><A NAME="tex2html144"
HREF="node110.html">mm_mat_write -- Write a sparse matrix to a
HREF="node110.html">mm_vet_read -- Read a dense vector from a
file in the MatrixMarket format</A>
<LI><A NAME="tex2html145"
HREF="node111.html">mm_mat_write -- Write a sparse matrix to a
file in the MatrixMarket format</A>
</UL>
<BR>
<LI><A NAME="tex2html145"
HREF="node111.html">Preconditioner routines</A>
<UL>
<LI><A NAME="tex2html146"
HREF="node112.html">psb_precinit -- Initialize a preconditioner</A>
HREF="node112.html">Preconditioner routines</A>
<UL>
<LI><A NAME="tex2html147"
HREF="node113.html">psb_precbld -- Builds a preconditioner</A>
HREF="node113.html">psb_precinit -- Initialize a preconditioner</A>
<LI><A NAME="tex2html148"
HREF="node114.html">psb_precaply -- Preconditioner application routine</A>
HREF="node114.html">psb_precbld -- Builds a preconditioner</A>
<LI><A NAME="tex2html149"
HREF="node115.html">psb_precdescr -- Prints a description of current
HREF="node115.html">psb_precaply -- Preconditioner application routine</A>
<LI><A NAME="tex2html150"
HREF="node116.html">psb_precdescr -- Prints a description of current
preconditioner</A>
</UL>
<BR>
<LI><A NAME="tex2html150"
HREF="node116.html">Iterative Methods</A>
<UL>
<LI><A NAME="tex2html151"
HREF="node117.html">psb_krylov -- Krylov Methods Driver
HREF="node117.html">Iterative Methods</A>
<UL>
<LI><A NAME="tex2html152"
HREF="node118.html">psb_krylov -- Krylov Methods Driver
Routine</A>
</UL>
<BR>
<LI><A NAME="tex2html152"
HREF="node118.html">Bibliography</A>
<LI><A NAME="tex2html153"
HREF="node119.html">About this document ...</A>
HREF="node119.html">Bibliography</A>
<LI><A NAME="tex2html154"
HREF="node120.html">About this document ...</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>

@ -26,21 +26,21 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html162"
<A NAME="tex2html163"
HREF="node2.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html160"
<A NAME="tex2html161"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html154"
<A NAME="tex2html155"
HREF="userhtml.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html163"
<B> Next:</B> <A NAME="tex2html164"
HREF="node2.html">Introduction</A>
<B> Up:</B> <A NAME="tex2html161"
<B> Up:</B> <A NAME="tex2html162"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html155"
<B> Previous:</B> <A NAME="tex2html156"
HREF="userhtml.html">userhtml</A>
<BR>
<BR>
@ -53,52 +53,52 @@ Contents</A>
<!--Table of Contents-->
<UL>
<LI><A NAME="tex2html164"
HREF="node2.html">Introduction</A>
<LI><A NAME="tex2html165"
HREF="node2.html">Introduction</A>
<LI><A NAME="tex2html166"
HREF="node3.html">General overview</A>
<UL>
<LI><A NAME="tex2html166"
HREF="node4.html">Basic Nomenclature</A>
<LI><A NAME="tex2html167"
HREF="node5.html">Library contents</A>
HREF="node4.html">Basic Nomenclature</A>
<LI><A NAME="tex2html168"
HREF="node6.html">Application structure</A>
HREF="node5.html">Library contents</A>
<LI><A NAME="tex2html169"
HREF="node7.html">Programming model</A>
HREF="node6.html">Application structure</A>
<LI><A NAME="tex2html170"
HREF="node8.html">Programming model</A>
</UL>
<BR>
<LI><A NAME="tex2html170"
HREF="node8.html">Data Structures and Classes</A>
<UL>
<LI><A NAME="tex2html171"
HREF="node9.html">Descriptor data structure</A>
HREF="node9.html">Data Structures and Classes</A>
<UL>
<LI><A NAME="tex2html172"
HREF="node19.html">Sparse Matrix class</A>
HREF="node10.html">Descriptor data structure</A>
<LI><A NAME="tex2html173"
HREF="node29.html">Dense Vector Data Structure</A>
HREF="node20.html">Sparse Matrix class</A>
<LI><A NAME="tex2html174"
HREF="node35.html">Preconditioner data structure</A>
HREF="node30.html">Dense Vector Data Structure</A>
<LI><A NAME="tex2html175"
HREF="node36.html">Preconditioner data structure</A>
</UL>
<BR>
<LI><A NAME="tex2html175"
HREF="node36.html">Computational routines</A>
<LI><A NAME="tex2html176"
HREF="node50.html">Communication routines</A>
HREF="node37.html">Computational routines</A>
<LI><A NAME="tex2html177"
HREF="node55.html">Data management routines</A>
HREF="node51.html">Communication routines</A>
<LI><A NAME="tex2html178"
HREF="node83.html">Parallel environment routines</A>
HREF="node56.html">Data management routines</A>
<LI><A NAME="tex2html179"
HREF="node100.html">Error handling</A>
HREF="node84.html">Parallel environment routines</A>
<LI><A NAME="tex2html180"
HREF="node105.html">Utilities</A>
HREF="node101.html">Error handling</A>
<LI><A NAME="tex2html181"
HREF="node111.html">Preconditioner routines</A>
HREF="node106.html">Utilities</A>
<LI><A NAME="tex2html182"
HREF="node116.html">Iterative Methods</A>
HREF="node112.html">Preconditioner routines</A>
<LI><A NAME="tex2html183"
HREF="node118.html">Bibliography</A>
HREF="node117.html">Iterative Methods</A>
<LI><A NAME="tex2html184"
HREF="node119.html">Bibliography</A>
</UL>
<!--End of Table of Contents-->
<P>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Methods</TITLE>
<META NAME="description" CONTENT="Methods">
<TITLE>Descriptor data structure</TITLE>
<META NAME="description" CONTENT="Descriptor data structure">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node11.html">
<LINK REL="next" HREF="node16.html">
<LINK REL="previous" HREF="node9.html">
<LINK REL="up" HREF="node9.html">
<LINK REL="next" HREF="node11.html">
@ -26,35 +26,265 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html324"
<A NAME="tex2html320"
HREF="node11.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html320"
<A NAME="tex2html316"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html314"
<A NAME="tex2html310"
HREF="node9.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html322"
<A NAME="tex2html318"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html325"
HREF="node11.html">get_local_rows Get</A>
<B> Up:</B> <A NAME="tex2html321"
HREF="node9.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html315"
HREF="node9.html">Descriptor data structure</A>
&nbsp; <B> <A NAME="tex2html323"
<B> Next:</B> <A NAME="tex2html321"
HREF="node11.html">Methods</A>
<B> Up:</B> <A NAME="tex2html317"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html311"
HREF="node9.html">Data Structures and Classes</A>
&nbsp; <B> <A NAME="tex2html319"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00041100000000000000">
Methods</A>
</H3>
<H2><A NAME="SECTION00041000000000000000"></A>
<A NAME="sec:desc"></A>
<BR>
Descriptor data structure
</H2>
All the general matrix informations and elements to be
exchanged among processes are stored within a data structure of the
type descdata<TT>psb_desc_type</TT>.
Every structure of this type is associated with a discretization
pattern and enables data communications and other operations that are
necessary for implementing the various algorithms of interest to us.
<P>
The data structure itself <code>psb_desc_type</code> can be treated as an
opaque object handled via the tools routines of
Sec.&nbsp;<A HREF="node56.html#sec:toolsrout">6</A> or the query routines detailed below;
nevertheless we include here a description for the curious
reader.
<P>
First we describe the <code>psb_indx_map</code> type. This is a data
structure that keeps track of a certain number of basic issues such
as:
<UL>
<LI>The value of the communication/MPI context;
</LI>
<LI>The number of indices in the index space, i.e. global number of
rows and columns of a sparse matrix;
</LI>
<LI>The local set of indices, including:
<UL>
<LI>The number of local indices (and local rows);
</LI>
<LI>The number of halo indices (and therefore local columns);
</LI>
<LI>The global indices corresponding to the local ones.
</LI>
</UL>
</LI>
</UL>
There are many different schemes for storing these data; therefore
there are a number of types extending the base one, and the descriptor
structure holds a polymorphic object whose dynamic type can be any of
the extended types.
The methods associated with this data type answer the following
queries:
<UL>
<LI>For a given set of local indices, find the corresponding indices
in the global numbering;
</LI>
<LI>For a given set of global indices, find the corresponding
indices in the local numbering, if any, or return an invalid
</LI>
<LI>Add a global index to the set of halo indices;
</LI>
<LI>Find the process owner of each member of a set of global
indices.
</LI>
</UL>
All methods but the last are purely local; the last method potentially
requires communication among processes, and thus is a synchronous
method. The choice of a specific dynamic type for the index map is
made at the time the descriptor is initially allocated, according to
the mode of initialization (see also&nbsp;<A HREF="node56.html#sec:toolsrout">6</A>).
<P>
The descriptor contents are as follows:
<DL>
<DT><STRONG><B>indxmap</B></STRONG></DT>
<DD>A polymorphic variable of a type that is any
extension of the indx_map type described above.
<BR></DD>
<DT><STRONG><B>halo_index</B></STRONG></DT>
<DD>A list of the halo and boundary elements for
the current process to be exchanged with other processes; for each
processes with which it is necessary to communicate:
<OL>
<LI>Process identifier;
</LI>
<LI>Number of points to be received;
</LI>
<LI>Indices of points to be received;
</LI>
<LI>Number of points to be sent;
</LI>
<LI>Indices of points to be sent;
</LI>
</OL>
The list may contain an arbitrary number of groups; its end is marked
by a -1.
<BR>
Specified as: an allocatable integer array of rank one.
</DD>
<DT><STRONG><B>ext_index</B></STRONG></DT>
<DD>A list of element indices to be exchanged to
implement the mapping between a base descriptor and a descriptor
with overlap.
</DD>
<DT><STRONG><B>ovrlap_index</B></STRONG></DT>
<DD>A list of the overlap elements for the
current process, organized in groups like the previous vector:
<OL>
<LI>Process identifier;
</LI>
<LI>Number of points to be received;
</LI>
<LI>Indices of points to be received;
</LI>
<LI>Number of points to be sent;
</LI>
<LI>Indices of points to be sent;
</LI>
</OL>
The list may contain an arbitrary number of groups; its end is marked
by a -1.
<BR>
Specified as: an allocatable integer array of rank one.
</DD>
<DT><STRONG><B>ovr_mst_idx</B></STRONG></DT>
<DD>A list to retrieve the value of each
overlap element from the respective master process.
<BR>
Specified as: an allocatable integer array of rank one.
</DD>
<DT><STRONG><B>ovrlap_elem</B></STRONG></DT>
<DD>For all overlap points belonging to th
ecurrent process:
<OL>
<LI>Overlap point index;
</LI>
<LI>Number of processes sharing that overlap points;
</LI>
<LI>Index of a ``master'' process:
</LI>
</OL>
Specified as: an allocatable integer array of rank two.
</DD>
<DT><STRONG><B>bnd_elem</B></STRONG></DT>
<DD>A list of all boundary points, i.e. points
that have a connection with other processes.
</DD>
</DL>
The Fortran&nbsp;2003 declaration for <code>psb_desc_type</code> structures is
as follows:
<DIV ALIGN="CENTER"><A NAME="fig:desctype"></A><A NAME="727"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
The PSBLAS defined data type that
contains the communication descriptor.</CAPTION>
<TR><TD><DIV ALIGN="CENTER">
</DIV><TABLE WIDTH="90%">
<TR><TD>
<PRE>
type psb_desc_type
class(psb_indx_map), allocatable :: indxmap
integer, allocatable :: halo_index(:)
integer, allocatable :: ext_index(:)
integer, allocatable :: ovrlap_index(:)
integer, allocatable :: ovrlap_elem(:,:)
integer, allocatable :: ovr_mst_idx(:)
integer, allocatable :: bnd_elem(:)
end type psb_desc_type
</PRE></TD></TR>
</TABLE>
<DIV ALIGN="CENTER">
</DIV></TD></TR>
</TABLE>
</DIV>
<P>
A communication descriptor associated with a sparse matrix has a
state, which can take the following values:
<DL>
<DT><STRONG>Build:</STRONG></DT>
<DD>State entered after the first allocation, and before the
first assembly; in this state it is possible to add communication
requirements among different processes.
</DD>
<DT><STRONG>Assembled:</STRONG></DT>
<DD>State entered after the assembly; computations using
the associated sparse matrix, such as matrix-vector products, are
only possible in this state.
</DD>
</DL>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html322"
HREF="node11.html">Methods</A>
<LI><A NAME="tex2html323"
HREF="node12.html">get_local_rows -- Get number of local rows</A>
<LI><A NAME="tex2html324"
HREF="node13.html">get_local_cols -- Get number of local cols</A>
<LI><A NAME="tex2html325"
HREF="node14.html">get_global_rows -- Get number of global rows</A>
<LI><A NAME="tex2html326"
HREF="node15.html">get_global_cols -- Get number of global cols</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html320"
HREF="node11.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html316"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html310"
HREF="node9.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html318"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html321"
HREF="node11.html">Methods</A>
<B> Up:</B> <A NAME="tex2html317"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html311"
HREF="node9.html">Data Structures and Classes</A>
&nbsp; <B> <A NAME="tex2html319"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Error handling</TITLE>
<META NAME="description" CONTENT="Error handling">
<TITLE>psb_rcv -- Receive data</TITLE>
<META NAME="description" CONTENT="psb_rcv -- Receive data">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,174 +18,172 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node105.html">
<LINK REL="previous" HREF="node83.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="previous" HREF="node99.html">
<LINK REL="up" HREF="node84.html">
<LINK REL="next" HREF="node101.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1463"
<A NAME="tex2html1464"
HREF="node101.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1459"
HREF="userhtml.html">
<A NAME="tex2html1460"
HREF="node84.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1453"
<A NAME="tex2html1456"
HREF="node99.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1461"
<A NAME="tex2html1462"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1464"
HREF="node101.html">psb_errpush Pushes</A>
<B> Up:</B> <A NAME="tex2html1460"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1454"
HREF="node99.html">psb_rcv Receive</A>
&nbsp; <B> <A NAME="tex2html1462"
<B> Next:</B> <A NAME="tex2html1465"
HREF="node101.html">Error handling</A>
<B> Up:</B> <A NAME="tex2html1461"
HREF="node84.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1457"
HREF="node99.html">psb_snd Send</A>
&nbsp; <B> <A NAME="tex2html1463"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00090000000000000000">
Error handling</A>
</H1>
<H2><A NAME="SECTION000816000000000000000">
psb_rcv -- Receive data</A>
</H2>
<P>
The PSBLAS library error handling policy has been completely rewritten
in version 2.0. The idea behind the design of this new error handling
strategy is to keep error messages on a stack allowing the user to
trace back up to the point where the first error message has been
generated. Every routine in the PSBLAS-2.0 library has, as last
non-optional argument, an integer <code>info</code> variable; whenever,
inside the routine, an error is detected, this variable is set to a
value corresponding to a specific error code. Then this error code is
also pushed on the error stack and then either control is returned to
the caller routine or the execution is aborted, depending on the users
choice. At the time when the execution is aborted, an error message is
printed on standard output with a level of verbosity than can be
chosen by the user. If the execution is not aborted, then, the caller
routine checks the value returned in the <code>info</code> variable and, if
not zero, an error condition is raised. This process continues on all the
levels of nested calls until the level where the user decides to abort
the program execution.
<PRE>
call psb_rcv(icontxt, dat, src, m)
</PRE>
<P>
Figure&nbsp;<A HREF="#fig:routerr">9</A> shows the layout of a generic <code>psb_foo</code>
routine with respect to the PSBLAS-2.0 error handling policy. It is
possible to see how, whenever an error condition is detected, the
<code>info</code> variable is set to the corresponding error code which is,
then, pushed on top of the stack by means of the
<code>psb_errpush</code>. An error condition may be directly detected inside
a routine or indirectly checking the error code returned returned by a
called routine. Whenever an error is encountered, after it has been
pushed on stack, the program execution skips to a point where the
error condition is handled; the error condition is handled either by
returning control to the caller routine or by calling the
<code>psb\_error</code> routine which prints the content of the error stack
and aborts the program execution, according to the choice made by the
user with <code>psb_set_erraction</code>. The default is to print the error
and terminate the program, but the user may choose to handle the error
explicitly.
<P>
<DIV ALIGN="CENTER"><A NAME="fig:routerr"></A><A NAME="6753"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 9:</STRONG>
The layout of a generic <TT>psb_foo</TT>
routine with respect to PSBLAS-2.0 error handling policy.</CAPTION>
<TR><TD>
<BR>
<DIV ALIGN="CENTER">
<!-- MATH
$\fbox{\TheSbox}$
This subroutine receives a packet of data to a destination.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous: see usage notes.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>icontxt</STRONG></DT>
<DD>the communication context identifying the virtual
parallel machine.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer variable.
</DD>
<DT><STRONG>src</STRONG></DT>
<DD>Source process.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value <!-- MATH
$0<= src <= np-1$
-->
<IMG
WIDTH="508" HEIGHT="142" ALIGN="MIDDLE" BORDER="0"
SRC="img134.png"
ALT="\fbox{\TheSbox}">
</DIV></TD></TR>
</TABLE>
</DIV>
WIDTH="147" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img131.png"
ALT="$0&lt;= src &lt;= np-1$">.
<BR></DD>
<DT><STRONG>m</STRONG></DT>
<DD>Number of rows.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>Optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value <!-- MATH
$0<= m <= size(dat,1)$
-->
<IMG
WIDTH="172" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img127.png"
ALT="$0&lt;= m &lt;= size(dat,1)$">.
<BR>
When <IMG
WIDTH="26" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img128.png"
ALT="$dat$"> is a rank 2 array, specifies the number of rows to be sent
independently of the leading dimension <IMG
WIDTH="83" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img129.png"
ALT="$size(dat,1)$">; must have the
same value on sending and receiving processes.
</DD>
</DL>
<P>
Figure&nbsp;<A HREF="#fig:errormsg">10</A> reports a sample error message generated by
the PSBLAS-2.0 library. This error has been generated by the fact that
the user has chosen the invalid ``FOO'' storage format to represent
the sparse matrix. From this error message it is possible to see that
the error has been detected inside the <code>psb_cest</code> subroutine
called by <code>psb_spasb</code> ... by process 0 (i.e. the root process).
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>The data to be received.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if <IMG
WIDTH="18" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img125.png"
ALT="$m$"> is
not specified, size must agree as well.
</DD>
</DL>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<DIV ALIGN="CENTER"><A NAME="fig:errormsg"></A><A NAME="6754"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 10:</STRONG>
A sample PSBLAS-2.0 error
message. Process 0 detected an error condition inside the psb_cest subroutine</CAPTION>
<TR><TD>
<BR>
<DIV ALIGN="CENTER">
<!-- MATH
$\fbox{\TheSbox}$
-->
<IMG
WIDTH="508" HEIGHT="142" ALIGN="MIDDLE" BORDER="0"
SRC="img134.png"
ALT="\fbox{\TheSbox}">
</DIV></TD></TR>
</TABLE>
</DIV>
<OL>
<LI>This subroutine implies a synchronization, but only between the
calling process and the source process <IMG
WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img132.png"
ALT="$src$">.
</LI>
</OL>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html1465"
HREF="node101.html">psb_errpush -- Pushes an error code onto the error
stack</A>
<LI><A NAME="tex2html1466"
HREF="node102.html">psb_error -- Prints the error stack content and aborts
execution</A>
<LI><A NAME="tex2html1467"
HREF="node103.html">psb_set_errverbosity -- Sets the verbosity of error
messages.</A>
<LI><A NAME="tex2html1468"
HREF="node104.html">psb_set_erraction -- Set the type of action to be
taken upon error condition.</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1463"
<A NAME="tex2html1464"
HREF="node101.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1459"
HREF="userhtml.html">
<A NAME="tex2html1460"
HREF="node84.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1453"
<A NAME="tex2html1456"
HREF="node99.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1461"
<A NAME="tex2html1462"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1464"
HREF="node101.html">psb_errpush Pushes</A>
<B> Up:</B> <A NAME="tex2html1460"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1454"
HREF="node99.html">psb_rcv Receive</A>
&nbsp; <B> <A NAME="tex2html1462"
<B> Next:</B> <A NAME="tex2html1465"
HREF="node101.html">Error handling</A>
<B> Up:</B> <A NAME="tex2html1461"
HREF="node84.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1457"
HREF="node99.html">psb_snd Send</A>
&nbsp; <B> <A NAME="tex2html1463"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_errpush -- Pushes an error code onto the error stack</TITLE>
<META NAME="description" CONTENT="psb_errpush -- Pushes an error code onto the error stack">
<TITLE>Error handling</TITLE>
<META NAME="description" CONTENT="Error handling">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,101 +18,176 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node102.html">
<LINK REL="previous" HREF="node100.html">
<LINK REL="up" HREF="node100.html">
<LINK REL="next" HREF="node106.html">
<LINK REL="previous" HREF="node84.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node102.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1479"
<A NAME="tex2html1476"
HREF="node102.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1475"
HREF="node100.html">
<A NAME="tex2html1472"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1469"
<A NAME="tex2html1466"
HREF="node100.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1477"
<A NAME="tex2html1474"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1480"
HREF="node102.html">psb_error Prints</A>
<B> Up:</B> <A NAME="tex2html1476"
HREF="node100.html">Error handling</A>
<B> Previous:</B> <A NAME="tex2html1470"
HREF="node100.html">Error handling</A>
&nbsp; <B> <A NAME="tex2html1478"
<B> Next:</B> <A NAME="tex2html1477"
HREF="node102.html">psb_errpush Pushes</A>
<B> Up:</B> <A NAME="tex2html1473"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1467"
HREF="node100.html">psb_rcv Receive</A>
&nbsp; <B> <A NAME="tex2html1475"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00091000000000000000">
psb_errpush -- Pushes an error code onto the error
stack</A>
</H2>
<H1><A NAME="SECTION00090000000000000000">
Error handling</A>
</H1>
<P>
<PRE>
call psb_errpush(err_c, r_name, i_err, a_err)
</PRE>
The PSBLAS library error handling policy has been completely rewritten
in version 2.0. The idea behind the design of this new error handling
strategy is to keep error messages on a stack allowing the user to
trace back up to the point where the first error message has been
generated. Every routine in the PSBLAS-2.0 library has, as last
non-optional argument, an integer <code>info</code> variable; whenever,
inside the routine, an error is detected, this variable is set to a
value corresponding to a specific error code. Then this error code is
also pushed on the error stack and then either control is returned to
the caller routine or the execution is aborted, depending on the users
choice. At the time when the execution is aborted, an error message is
printed on standard output with a level of verbosity than can be
chosen by the user. If the execution is not aborted, then, the caller
routine checks the value returned in the <code>info</code> variable and, if
not zero, an error condition is raised. This process continues on all the
levels of nested calls until the level where the user decides to abort
the program execution.
<P>
Figure&nbsp;<A HREF="#fig:routerr">9</A> shows the layout of a generic <code>psb_foo</code>
routine with respect to the PSBLAS-2.0 error handling policy. It is
possible to see how, whenever an error condition is detected, the
<code>info</code> variable is set to the corresponding error code which is,
then, pushed on top of the stack by means of the
<code>psb_errpush</code>. An error condition may be directly detected inside
a routine or indirectly checking the error code returned returned by a
called routine. Whenever an error is encountered, after it has been
pushed on stack, the program execution skips to a point where the
error condition is handled; the error condition is handled either by
returning control to the caller routine or by calling the
<code>psb\_error</code> routine which prints the content of the error stack
and aborts the program execution, according to the choice made by the
user with <code>psb_set_erraction</code>. The default is to print the error
and terminate the program, but the user may choose to handle the error
explicitly.
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>err_c</STRONG></DT>
<DD>the error code
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer.
</DD>
<DT><STRONG>r_name</STRONG></DT>
<DD>the soutine where the error has been caught.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a string.
<BR></DD>
<DT><STRONG>i_err</STRONG></DT>
<DD>addional info for error code
<BR>
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
<BR>
Specified as: an integer array
<BR></DD>
<DT><STRONG>a_err</STRONG></DT>
<DD>addional info for error code
<BR>
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
<BR>
Specified as: a string.
<BR></DD>
</DL>
<DIV ALIGN="CENTER"><A NAME="fig:routerr"></A><A NAME="6774"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 9:</STRONG>
The layout of a generic <TT>psb_foo</TT>
routine with respect to PSBLAS-2.0 error handling policy.</CAPTION>
<TR><TD>
<BR>
<DIV ALIGN="CENTER">
<!-- MATH
$\fbox{\TheSbox}$
-->
<IMG
WIDTH="508" HEIGHT="142" ALIGN="MIDDLE" BORDER="0"
SRC="img134.png"
ALT="\fbox{\TheSbox}">
</DIV></TD></TR>
</TABLE>
</DIV>
<P>
Figure&nbsp;<A HREF="#fig:errormsg">10</A> reports a sample error message generated by
the PSBLAS-2.0 library. This error has been generated by the fact that
the user has chosen the invalid ``FOO'' storage format to represent
the sparse matrix. From this error message it is possible to see that
the error has been detected inside the <code>psb_cest</code> subroutine
called by <code>psb_spasb</code> ... by process 0 (i.e. the root process).
<P>
<DIV ALIGN="CENTER"><A NAME="fig:errormsg"></A><A NAME="6775"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 10:</STRONG>
A sample PSBLAS-2.0 error
message. Process 0 detected an error condition inside the psb_cest subroutine</CAPTION>
<TR><TD>
<BR>
<DIV ALIGN="CENTER">
<!-- MATH
$\fbox{\TheSbox}$
-->
<IMG
WIDTH="508" HEIGHT="142" ALIGN="MIDDLE" BORDER="0"
SRC="img134.png"
ALT="\fbox{\TheSbox}">
</DIV></TD></TR>
</TABLE>
</DIV>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html1478"
HREF="node102.html">psb_errpush -- Pushes an error code onto the error
stack</A>
<LI><A NAME="tex2html1479"
HREF="node103.html">psb_error -- Prints the error stack content and aborts
execution</A>
<LI><A NAME="tex2html1480"
HREF="node104.html">psb_set_errverbosity -- Sets the verbosity of error
messages.</A>
<LI><A NAME="tex2html1481"
HREF="node105.html">psb_set_erraction -- Set the type of action to be
taken upon error condition.</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1476"
HREF="node102.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1472"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1466"
HREF="node100.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1474"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1477"
HREF="node102.html">psb_errpush Pushes</A>
<B> Up:</B> <A NAME="tex2html1473"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1467"
HREF="node100.html">psb_rcv Receive</A>
&nbsp; <B> <A NAME="tex2html1475"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_error -- Prints the error stack content and aborts execution</TITLE>
<META NAME="description" CONTENT="psb_error -- Prints the error stack content and aborts execution">
<TITLE>psb_errpush -- Pushes an error code onto the error stack</TITLE>
<META NAME="description" CONTENT="psb_errpush -- Pushes an error code onto the error stack">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node103.html">
<LINK REL="previous" HREF="node101.html">
<LINK REL="up" HREF="node100.html">
<LINK REL="up" HREF="node101.html">
<LINK REL="next" HREF="node103.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1491"
<A NAME="tex2html1492"
HREF="node103.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1487"
HREF="node100.html">
<A NAME="tex2html1488"
HREF="node101.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1481"
<A NAME="tex2html1482"
HREF="node101.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1489"
<A NAME="tex2html1490"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1492"
HREF="node103.html">psb_set_errverbosity Sets</A>
<B> Up:</B> <A NAME="tex2html1488"
HREF="node100.html">Error handling</A>
<B> Previous:</B> <A NAME="tex2html1482"
HREF="node101.html">psb_errpush Pushes</A>
&nbsp; <B> <A NAME="tex2html1490"
<B> Next:</B> <A NAME="tex2html1493"
HREF="node103.html">psb_error Prints</A>
<B> Up:</B> <A NAME="tex2html1489"
HREF="node101.html">Error handling</A>
<B> Previous:</B> <A NAME="tex2html1483"
HREF="node101.html">Error handling</A>
&nbsp; <B> <A NAME="tex2html1491"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00092000000000000000">
psb_error -- Prints the error stack content and aborts
execution</A>
<H2><A NAME="SECTION00091000000000000000">
psb_errpush -- Pushes an error code onto the error
stack</A>
</H2>
<P>
<PRE>
call psb_error(icontxt)
call psb_errpush(err_c, r_name, i_err, a_err)
</PRE>
<P>
@ -69,17 +69,46 @@ call psb_error(icontxt)
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>icontxt</STRONG></DT>
<DD>the communication context.
<DT><STRONG>err_c</STRONG></DT>
<DD>the error code
<BR>
Scope: <B>global</B>
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer.
</DD>
<DT><STRONG>r_name</STRONG></DT>
<DD>the soutine where the error has been caught.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a string.
<BR></DD>
<DT><STRONG>i_err</STRONG></DT>
<DD>addional info for error code
<BR>
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
<BR>
Specified as: an integer array
<BR></DD>
<DT><STRONG>a_err</STRONG></DT>
<DD>addional info for error code
<BR>
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
<BR>
Specified as: a string.
<BR></DD>
</DL>
<P>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_set_errverbosity -- Sets the verbosity of error messages.</TITLE>
<META NAME="description" CONTENT="psb_set_errverbosity -- Sets the verbosity of error messages.">
<TITLE>psb_error -- Prints the error stack content and aborts execution</TITLE>
<META NAME="description" CONTENT="psb_error -- Prints the error stack content and aborts execution">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node104.html">
<LINK REL="previous" HREF="node102.html">
<LINK REL="up" HREF="node100.html">
<LINK REL="up" HREF="node101.html">
<LINK REL="next" HREF="node104.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1503"
<A NAME="tex2html1504"
HREF="node104.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1499"
HREF="node100.html">
<A NAME="tex2html1500"
HREF="node101.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1493"
<A NAME="tex2html1494"
HREF="node102.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1501"
<A NAME="tex2html1502"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1504"
HREF="node104.html">psb_set_erraction Set</A>
<B> Up:</B> <A NAME="tex2html1500"
HREF="node100.html">Error handling</A>
<B> Previous:</B> <A NAME="tex2html1494"
HREF="node102.html">psb_error Prints</A>
&nbsp; <B> <A NAME="tex2html1502"
<B> Next:</B> <A NAME="tex2html1505"
HREF="node104.html">psb_set_errverbosity Sets</A>
<B> Up:</B> <A NAME="tex2html1501"
HREF="node101.html">Error handling</A>
<B> Previous:</B> <A NAME="tex2html1495"
HREF="node102.html">psb_errpush Pushes</A>
&nbsp; <B> <A NAME="tex2html1503"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00093000000000000000">
psb_set_errverbosity -- Sets the verbosity of error
messages.</A>
<H2><A NAME="SECTION00092000000000000000">
psb_error -- Prints the error stack content and aborts
execution</A>
</H2>
<P>
<PRE>
call psb_set_errverbosity(v)
call psb_error(icontxt)
</PRE>
<P>
@ -69,12 +69,12 @@ call psb_set_errverbosity(v)
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>v</STRONG></DT>
<DD>the verbosity level
<DT><STRONG>icontxt</STRONG></DT>
<DD>the communication context.
<BR>
Scope: <B>global</B>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_set_erraction -- Set the type of action to be taken upon error condition.</TITLE>
<META NAME="description" CONTENT="psb_set_erraction -- Set the type of action to be taken upon error condition.">
<TITLE>psb_set_errverbosity -- Sets the verbosity of error messages.</TITLE>
<META NAME="description" CONTENT="psb_set_errverbosity -- Sets the verbosity of error messages.">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,46 +18,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node105.html">
<LINK REL="previous" HREF="node103.html">
<LINK REL="up" HREF="node100.html">
<LINK REL="up" HREF="node101.html">
<LINK REL="next" HREF="node105.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1513"
<A NAME="tex2html1516"
HREF="node105.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1509"
HREF="node100.html">
<A NAME="tex2html1512"
HREF="node101.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1505"
<A NAME="tex2html1506"
HREF="node103.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1511"
<A NAME="tex2html1514"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1514"
HREF="node105.html">Utilities</A>
<B> Up:</B> <A NAME="tex2html1510"
HREF="node100.html">Error handling</A>
<B> Previous:</B> <A NAME="tex2html1506"
HREF="node103.html">psb_set_errverbosity Sets</A>
&nbsp; <B> <A NAME="tex2html1512"
<B> Next:</B> <A NAME="tex2html1517"
HREF="node105.html">psb_set_erraction Set</A>
<B> Up:</B> <A NAME="tex2html1513"
HREF="node101.html">Error handling</A>
<B> Previous:</B> <A NAME="tex2html1507"
HREF="node103.html">psb_error Prints</A>
&nbsp; <B> <A NAME="tex2html1515"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00094000000000000000">
psb_set_erraction -- Set the type of action to be
taken upon error condition.</A>
<H2><A NAME="SECTION00093000000000000000">
psb_set_errverbosity -- Sets the verbosity of error
messages.</A>
</H2>
<P>
<PRE>
call psb_set_erraction(err_act)
call psb_set_errverbosity(v)
</PRE>
<P>
@ -68,25 +69,19 @@ call psb_set_erraction(err_act)
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>err_act</STRONG></DT>
<DD>the type of action.
<DT><STRONG>v</STRONG></DT>
<DD>the verbosity level
<BR>
Scope: <B>global</B>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer. Possible values: <code>psb_act_ret</code>,
<code>psb_act_abort</code>.
Specified as: an integer.
</DD>
</DL>
<P>
<PRE>
call psb_errcomm(icontxt, err)
</PRE>
<P>
<BR><HR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Utilities</TITLE>
<META NAME="description" CONTENT="Utilities">
<TITLE>psb_set_erraction -- Set the type of action to be taken upon error condition.</TITLE>
<META NAME="description" CONTENT="psb_set_erraction -- Set the type of action to be taken upon error condition.">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,73 +18,76 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node111.html">
<LINK REL="previous" HREF="node100.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="previous" HREF="node104.html">
<LINK REL="up" HREF="node101.html">
<LINK REL="next" HREF="node106.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1525"
<A NAME="tex2html1526"
HREF="node106.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1521"
HREF="userhtml.html">
<A NAME="tex2html1522"
HREF="node101.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1515"
<A NAME="tex2html1518"
HREF="node104.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1523"
<A NAME="tex2html1524"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1526"
HREF="node106.html">hb_read Read</A>
<B> Up:</B> <A NAME="tex2html1522"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1516"
HREF="node104.html">psb_set_erraction Set</A>
&nbsp; <B> <A NAME="tex2html1524"
<B> Next:</B> <A NAME="tex2html1527"
HREF="node106.html">Utilities</A>
<B> Up:</B> <A NAME="tex2html1523"
HREF="node101.html">Error handling</A>
<B> Previous:</B> <A NAME="tex2html1519"
HREF="node104.html">psb_set_errverbosity Sets</A>
&nbsp; <B> <A NAME="tex2html1525"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION000100000000000000000"></A>
<A NAME="sec:util"></A>
<BR>
Utilities
</H1>
<H2><A NAME="SECTION00094000000000000000">
psb_set_erraction -- Set the type of action to be
taken upon error condition.</A>
</H2>
<P>
We have some utitlities available for input and output of
sparsematrices; the interfaces to these routines are available in the
module <code>psb_util_mod</code>.
<PRE>
call psb_set_erraction(err_act)
</PRE>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>err_act</STRONG></DT>
<DD>the type of action.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer. Possible values: <code>psb_act_ret</code>,
<code>psb_act_abort</code>.
</DD>
</DL>
<P>
<PRE>
call psb_errcomm(icontxt, err)
</PRE>
<UL>
<LI><A NAME="tex2html1527"
HREF="node106.html">hb_read -- Read a sparse matrix from a file in the
Harwell-Boeing format</A>
<LI><A NAME="tex2html1528"
HREF="node107.html">hb_write -- Write a sparse matrix to a file
in the Harwell-Boeing format</A>
<LI><A NAME="tex2html1529"
HREF="node108.html">mm_mat_read -- Read a sparse matrix from a
file in the MatrixMarket format</A>
<LI><A NAME="tex2html1530"
HREF="node109.html">mm_vet_read -- Read a dense vector from a
file in the MatrixMarket format</A>
<LI><A NAME="tex2html1531"
HREF="node110.html">mm_mat_write -- Write a sparse matrix to a
file in the MatrixMarket format</A>
</UL>
<!--End of Table of Child-Links-->
<P>
<BR><HR>
</BODY>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format</TITLE>
<META NAME="description" CONTENT="hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format">
<TITLE>Utilities</TITLE>
<META NAME="description" CONTENT="Utilities">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,139 +18,74 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node107.html">
<LINK REL="previous" HREF="node105.html">
<LINK REL="up" HREF="node105.html">
<LINK REL="next" HREF="node112.html">
<LINK REL="previous" HREF="node101.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node107.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1542"
<A NAME="tex2html1538"
HREF="node107.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1538"
HREF="node105.html">
<A NAME="tex2html1534"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1532"
<A NAME="tex2html1528"
HREF="node105.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1540"
<A NAME="tex2html1536"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1543"
HREF="node107.html">hb_write Write</A>
<B> Up:</B> <A NAME="tex2html1539"
HREF="node105.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1533"
HREF="node105.html">Utilities</A>
&nbsp; <B> <A NAME="tex2html1541"
<B> Next:</B> <A NAME="tex2html1539"
HREF="node107.html">hb_read Read</A>
<B> Up:</B> <A NAME="tex2html1535"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1529"
HREF="node105.html">psb_set_erraction Set</A>
&nbsp; <B> <A NAME="tex2html1537"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000101000000000000000">
hb_read -- Read a sparse matrix from a file in the
Harwell-Boeing format</A>
</H2>
<P>
<PRE>
call hb_read(a, iret, iunit, filename, b, mtitle)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be read.
<H1><A NAME="SECTION000100000000000000000"></A>
<A NAME="sec:util"></A>
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default input unit 5 (i.e. standard input
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
<DD>The Fortran file unit number.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
</DD>
</DL>
Utilities
</H1>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix read from file.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>Rigth hand side(s).
<BR>
Type: <B>Optional</B>
<BR>
An array of type real or complex, rank 2 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side, otherwise will be left in the UNALLOCATED state.
</DD>
<DT><STRONG>mtitle</STRONG></DT>
<DD>Matrix title.
<BR>
Type: <B>Optional</B>
<BR>
A charachter variable of length 72 holding a copy of the
matrix title as specified by the Harwell-Boeing format and contained
in the input file.
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
<BR>
Type: <B>required</B>
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
We have some utitlities available for input and output of
sparsematrices; the interfaces to these routines are available in the
module <code>psb_util_mod</code>.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1542"
HREF="node107.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1538"
HREF="node105.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1532"
HREF="node105.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1540"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1543"
HREF="node107.html">hb_write Write</A>
<B> Up:</B> <A NAME="tex2html1539"
HREF="node105.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1533"
HREF="node105.html">Utilities</A>
&nbsp; <B> <A NAME="tex2html1541"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html1540"
HREF="node107.html">hb_read -- Read a sparse matrix from a file in the
Harwell-Boeing format</A>
<LI><A NAME="tex2html1541"
HREF="node108.html">hb_write -- Write a sparse matrix to a file
in the Harwell-Boeing format</A>
<LI><A NAME="tex2html1542"
HREF="node109.html">mm_mat_read -- Read a sparse matrix from a
file in the MatrixMarket format</A>
<LI><A NAME="tex2html1543"
HREF="node110.html">mm_vet_read -- Read a dense vector from a
file in the MatrixMarket format</A>
<LI><A NAME="tex2html1544"
HREF="node111.html">mm_mat_write -- Write a sparse matrix to a
file in the MatrixMarket format</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format</TITLE>
<META NAME="description" CONTENT="hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format">
<TITLE>hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format</TITLE>
<META NAME="description" CONTENT="hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node108.html">
<LINK REL="previous" HREF="node106.html">
<LINK REL="up" HREF="node105.html">
<LINK REL="up" HREF="node106.html">
<LINK REL="next" HREF="node108.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1554"
<A NAME="tex2html1555"
HREF="node108.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1550"
HREF="node105.html">
<A NAME="tex2html1551"
HREF="node106.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1544"
<A NAME="tex2html1545"
HREF="node106.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1552"
<A NAME="tex2html1553"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1555"
HREF="node108.html">mm_mat_read Read</A>
<B> Up:</B> <A NAME="tex2html1551"
HREF="node105.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1545"
HREF="node106.html">hb_read Read</A>
&nbsp; <B> <A NAME="tex2html1553"
<B> Next:</B> <A NAME="tex2html1556"
HREF="node108.html">hb_write Write</A>
<B> Up:</B> <A NAME="tex2html1552"
HREF="node106.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1546"
HREF="node106.html">Utilities</A>
&nbsp; <B> <A NAME="tex2html1554"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000102000000000000000">
hb_write -- Write a sparse matrix to a file
in the Harwell-Boeing format</A>
<H2><A NAME="SECTION000101000000000000000">
hb_read -- Read a sparse matrix from a file in the
Harwell-Boeing format</A>
</H2>
<P>
<PRE>
call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
call hb_read(a, iret, iunit, filename, b, mtitle)
</PRE>
<P>
@ -69,29 +69,13 @@ call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix to be written.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>Rigth hand side.
<BR>
Type: <B>Optional</B>
<BR>
An array of type real or complex, rank 1 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side.
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be written to.
<DD>The name of the file to be read.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default output unit 6 (i.e. standard output
<code>-</code>, in which case the default input unit 5 (i.e. standard input
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
@ -101,30 +85,37 @@ Type:<B>optional</B>.
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
</DD>
<DT><STRONG>key</STRONG></DT>
<DD>Matrix key.
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix read from file.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>Rigth hand side(s).
<BR>
Type: <B>Optional</B>
<BR>
A charachter variable of length 8 holding the
matrix key as specified by the Harwell-Boeing format and to be
written to file.
An array of type real or complex, rank 2 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side, otherwise will be left in the UNALLOCATED state.
</DD>
<DT><STRONG>mtitle</STRONG></DT>
<DD>Matrix title.
<BR>
Type: <B>Optional</B>
<BR>
A charachter variable of length 72 holding the
matrix title as specified by the Harwell-Boeing format and to be
written to file.
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
A charachter variable of length 72 holding a copy of the
matrix title as specified by the Harwell-Boeing format and contained
in the input file.
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
@ -138,26 +129,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1554"
<A NAME="tex2html1555"
HREF="node108.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1550"
HREF="node105.html">
<A NAME="tex2html1551"
HREF="node106.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1544"
<A NAME="tex2html1545"
HREF="node106.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1552"
<A NAME="tex2html1553"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1555"
HREF="node108.html">mm_mat_read Read</A>
<B> Up:</B> <A NAME="tex2html1551"
HREF="node105.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1545"
HREF="node106.html">hb_read Read</A>
&nbsp; <B> <A NAME="tex2html1553"
<B> Next:</B> <A NAME="tex2html1556"
HREF="node108.html">hb_write Write</A>
<B> Up:</B> <A NAME="tex2html1552"
HREF="node106.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1546"
HREF="node106.html">Utilities</A>
&nbsp; <B> <A NAME="tex2html1554"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format</TITLE>
<META NAME="description" CONTENT="mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format">
<TITLE>hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format</TITLE>
<META NAME="description" CONTENT="hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node109.html">
<LINK REL="previous" HREF="node107.html">
<LINK REL="up" HREF="node105.html">
<LINK REL="up" HREF="node106.html">
<LINK REL="next" HREF="node109.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1566"
<A NAME="tex2html1567"
HREF="node109.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1562"
HREF="node105.html">
<A NAME="tex2html1563"
HREF="node106.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1556"
<A NAME="tex2html1557"
HREF="node107.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1564"
<A NAME="tex2html1565"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1567"
HREF="node109.html">mm_vet_read Read</A>
<B> Up:</B> <A NAME="tex2html1563"
HREF="node105.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1557"
HREF="node107.html">hb_write Write</A>
&nbsp; <B> <A NAME="tex2html1565"
<B> Next:</B> <A NAME="tex2html1568"
HREF="node109.html">mm_mat_read Read</A>
<B> Up:</B> <A NAME="tex2html1564"
HREF="node106.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1558"
HREF="node107.html">hb_read Read</A>
&nbsp; <B> <A NAME="tex2html1566"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000103000000000000000">
mm_mat_read -- Read a sparse matrix from a
file in the MatrixMarket format</A>
<H2><A NAME="SECTION000102000000000000000">
hb_write -- Write a sparse matrix to a file
in the Harwell-Boeing format</A>
</H2>
<P>
<PRE>
call mm_mat_read(a, iret, iunit, filename)
call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
</PRE>
<P>
@ -69,13 +69,29 @@ call mm_mat_read(a, iret, iunit, filename)
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix to be written.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>Rigth hand side.
<BR>
Type: <B>Optional</B>
<BR>
An array of type real or complex, rank 1 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side.
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be read.
<DD>The name of the file to be written to.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default input unit 5 (i.e. standard input
<code>-</code>, in which case the default output unit 6 (i.e. standard output
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
@ -85,6 +101,24 @@ Type:<B>optional</B>.
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
</DD>
<DT><STRONG>key</STRONG></DT>
<DD>Matrix key.
<BR>
Type: <B>Optional</B>
<BR>
A charachter variable of length 8 holding the
matrix key as specified by the Harwell-Boeing format and to be
written to file.
</DD>
<DT><STRONG>mtitle</STRONG></DT>
<DD>Matrix title.
<BR>
Type: <B>Optional</B>
<BR>
A charachter variable of length 72 holding the
matrix title as specified by the Harwell-Boeing format and to be
written to file.
</DD>
</DL>
<P>
@ -92,13 +126,6 @@ Specified as: an integer value. Only meaningful if filename is not <code>-</code
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix read from file.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
<BR>
@ -109,7 +136,30 @@ An integer value; 0 means no error has been detected.
</DL>
<P>
<BR><HR>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1567"
HREF="node109.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1563"
HREF="node106.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1557"
HREF="node107.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1565"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1568"
HREF="node109.html">mm_mat_read Read</A>
<B> Up:</B> <A NAME="tex2html1564"
HREF="node106.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1558"
HREF="node107.html">hb_read Read</A>
&nbsp; <B> <A NAME="tex2html1566"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>mm_vet_read -- Read a dense vector from a file in the MatrixMarket format</TITLE>
<META NAME="description" CONTENT="mm_vet_read -- Read a dense vector from a file in the MatrixMarket format">
<TITLE>mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format</TITLE>
<META NAME="description" CONTENT="mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,44 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node110.html">
<LINK REL="previous" HREF="node108.html">
<LINK REL="up" HREF="node105.html">
<LINK REL="up" HREF="node106.html">
<LINK REL="next" HREF="node110.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1578"
<A NAME="tex2html1579"
HREF="node110.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1574"
HREF="node105.html">
<A NAME="tex2html1575"
HREF="node106.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1568"
<A NAME="tex2html1569"
HREF="node108.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1576"
<A NAME="tex2html1577"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1579"
HREF="node110.html">mm_mat_write Write</A>
<B> Up:</B> <A NAME="tex2html1575"
HREF="node105.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1569"
HREF="node108.html">mm_mat_read Read</A>
&nbsp; <B> <A NAME="tex2html1577"
<B> Next:</B> <A NAME="tex2html1580"
HREF="node110.html">mm_vet_read Read</A>
<B> Up:</B> <A NAME="tex2html1576"
HREF="node106.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1570"
HREF="node108.html">hb_write Write</A>
&nbsp; <B> <A NAME="tex2html1578"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000104000000000000000">
mm_vet_read -- Read a dense vector from a
<H2><A NAME="SECTION000103000000000000000">
mm_mat_read -- Read a sparse matrix from a
file in the MatrixMarket format</A>
</H2>
<P>
<PRE>
call mm_vet_read(b, iret, iunit, filename)
call mm_mat_read(a, iret, iunit, filename)
</PRE>
<P>
@ -91,14 +92,12 @@ Specified as: an integer value. Only meaningful if filename is not <code>-</code
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>Rigth hand side(s).
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix read from file.
<BR>
Type: <B>required</B>
Type:<B>required</B>.
<BR>
An array of type real or complex, rank 2 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side, otherwise will be left in the UNALLOCATED state.
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_local_rows -- Get number of local rows</TITLE>
<META NAME="description" CONTENT="get_local_rows -- Get number of local rows">
<TITLE>Methods</TITLE>
<META NAME="description" CONTENT="Methods">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,81 +20,40 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node12.html">
<LINK REL="previous" HREF="node10.html">
<LINK REL="up" HREF="node9.html">
<LINK REL="up" HREF="node10.html">
<LINK REL="next" HREF="node12.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html336"
<A NAME="tex2html337"
HREF="node12.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html332"
HREF="node9.html">
<A NAME="tex2html333"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html326"
<A NAME="tex2html327"
HREF="node10.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html334"
<A NAME="tex2html335"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html337"
HREF="node12.html">get_local_cols Get</A>
<B> Up:</B> <A NAME="tex2html333"
HREF="node9.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html327"
HREF="node10.html">Methods</A>
&nbsp; <B> <A NAME="tex2html335"
<B> Next:</B> <A NAME="tex2html338"
HREF="node12.html">get_local_rows Get</A>
<B> Up:</B> <A NAME="tex2html334"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html328"
HREF="node10.html">Descriptor data structure</A>
&nbsp; <B> <A NAME="tex2html336"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00041200000000000000">
get_local_rows -- Get number of local rows</A>
<H3><A NAME="SECTION00041100000000000000">
Methods</A>
</H3>
<P>
<PRE>
nr = desc%get_local_rows()
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>desc</STRONG></DT>
<DD>the communication descriptor.
<BR>
Scope: <B>local</B>.
<BR></DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The number of local rows, i.e. the number of
rows owned by the current process; as explained in&nbsp;<A HREF="node2.html#sec:intro">1</A>,
it is equal to <!-- MATH
$|{\cal I}_i| + |{\cal B}_i|$
-->
<IMG
WIDTH="70" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img10.png"
ALT="$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert$">. The returned value is
specific to the calling process.
</DD>
</DL>
<P>
<BR><HR>
</BODY>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format</TITLE>
<META NAME="description" CONTENT="mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format">
<TITLE>mm_vet_read -- Read a dense vector from a file in the MatrixMarket format</TITLE>
<META NAME="description" CONTENT="mm_vet_read -- Read a dense vector from a file in the MatrixMarket format">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,46 +18,49 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node111.html">
<LINK REL="previous" HREF="node109.html">
<LINK REL="up" HREF="node105.html">
<LINK REL="up" HREF="node106.html">
<LINK REL="next" HREF="node111.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1588"
<A NAME="tex2html1591"
HREF="node111.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1584"
HREF="node105.html">
<A NAME="tex2html1587"
HREF="node106.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1580"
<A NAME="tex2html1581"
HREF="node109.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1586"
<A NAME="tex2html1589"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1589"
HREF="node111.html">Preconditioner routines</A>
<B> Up:</B> <A NAME="tex2html1585"
HREF="node105.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1581"
HREF="node109.html">mm_vet_read Read</A>
&nbsp; <B> <A NAME="tex2html1587"
<B> Next:</B> <A NAME="tex2html1592"
HREF="node111.html">mm_mat_write Write</A>
<B> Up:</B> <A NAME="tex2html1588"
HREF="node106.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1582"
HREF="node109.html">mm_mat_read Read</A>
&nbsp; <B> <A NAME="tex2html1590"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000105000000000000000">
mm_mat_write -- Write a sparse matrix to a
<H2><A NAME="SECTION000104000000000000000">
mm_vet_read -- Read a dense vector from a
file in the MatrixMarket format</A>
</H2>
<PRE>
call mm_mat_write(a, mtitle, iret, iunit, filename)
call mm_vet_read(b, iret, iunit, filename)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
@ -65,28 +68,13 @@ call mm_mat_write(a, mtitle, iret, iunit, filename)
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix to be written.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>mtitle</STRONG></DT>
<DD>Matrix title.
<BR>
Type: <B>required</B>
<BR>
A charachter variable holding a descriptive title for the matrix to be
written to file.
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be written to.
<DD>The name of the file to be read.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default output unit 6 (i.e. standard output
<code>-</code>, in which case the default input unit 5 (i.e. standard input
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
@ -103,6 +91,15 @@ Specified as: an integer value. Only meaningful if filename is not <code>-</code
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>Rigth hand side(s).
<BR>
Type: <B>required</B>
<BR>
An array of type real or complex, rank 2 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side, otherwise will be left in the UNALLOCATED state.
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
<BR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Preconditioner routines</TITLE>
<META NAME="description" CONTENT="Preconditioner routines">
<TITLE>mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format</TITLE>
<META NAME="description" CONTENT="mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,76 +18,102 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node116.html">
<LINK REL="previous" HREF="node105.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="previous" HREF="node110.html">
<LINK REL="up" HREF="node106.html">
<LINK REL="next" HREF="node112.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1600"
<A NAME="tex2html1601"
HREF="node112.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1596"
HREF="userhtml.html">
<A NAME="tex2html1597"
HREF="node106.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1590"
<A NAME="tex2html1593"
HREF="node110.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1598"
<A NAME="tex2html1599"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1601"
HREF="node112.html">psb_precinit Initialize</A>
<B> Up:</B> <A NAME="tex2html1597"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1591"
HREF="node110.html">mm_mat_write Write</A>
&nbsp; <B> <A NAME="tex2html1599"
<B> Next:</B> <A NAME="tex2html1602"
HREF="node112.html">Preconditioner routines</A>
<B> Up:</B> <A NAME="tex2html1598"
HREF="node106.html">Utilities</A>
<B> Previous:</B> <A NAME="tex2html1594"
HREF="node110.html">mm_vet_read Read</A>
&nbsp; <B> <A NAME="tex2html1600"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION000110000000000000000"></A>
<A NAME="sec:precs"></A>
<H2><A NAME="SECTION000105000000000000000">
mm_mat_write -- Write a sparse matrix to a
file in the MatrixMarket format</A>
</H2>
<PRE>
call mm_mat_write(a, mtitle, iret, iunit, filename)
</PRE>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix to be written.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>mtitle</STRONG></DT>
<DD>Matrix title.
<BR>
Type: <B>required</B>
<BR>
A charachter variable holding a descriptive title for the matrix to be
written to file.
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be written to.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default output unit 6 (i.e. standard output
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
<DD>The Fortran file unit number.
<BR>
Preconditioner routines
</H1>
Type:<B>optional</B>.
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
</DD>
</DL>
<P>
<A NAME="sec:psprecs"></A>The base PSBLAS library contains the implementation of two simple
preconditioning techniques:
<UL>
<LI>Diagonal Scaling
</LI>
<LI>Block Jacobi with ILU(0) factorization
</LI>
</UL>
The supporting data type and subroutine interfaces are defined in the
module <code>psb_prec_mod</code>.
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
<BR>
Type: <B>required</B>
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html1602"
HREF="node112.html">psb_precinit -- Initialize a preconditioner</A>
<LI><A NAME="tex2html1603"
HREF="node113.html">psb_precbld -- Builds a preconditioner</A>
<LI><A NAME="tex2html1604"
HREF="node114.html">psb_precaply -- Preconditioner application routine</A>
<LI><A NAME="tex2html1605"
HREF="node115.html">psb_precdescr -- Prints a description of current
preconditioner</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_precinit -- Initialize a preconditioner</TITLE>
<META NAME="description" CONTENT="psb_precinit -- Initialize a preconditioner">
<TITLE>Preconditioner routines</TITLE>
<META NAME="description" CONTENT="Preconditioner routines">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,125 +18,76 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node113.html">
<LINK REL="previous" HREF="node111.html">
<LINK REL="up" HREF="node111.html">
<LINK REL="next" HREF="node117.html">
<LINK REL="previous" HREF="node106.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node113.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1616"
<A NAME="tex2html1613"
HREF="node113.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1612"
HREF="node111.html">
<A NAME="tex2html1609"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1606"
<A NAME="tex2html1603"
HREF="node111.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1614"
<A NAME="tex2html1611"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1617"
HREF="node113.html">psb_precbld Builds</A>
<B> Up:</B> <A NAME="tex2html1613"
HREF="node111.html">Preconditioner routines</A>
<B> Previous:</B> <A NAME="tex2html1607"
HREF="node111.html">Preconditioner routines</A>
&nbsp; <B> <A NAME="tex2html1615"
<B> Next:</B> <A NAME="tex2html1614"
HREF="node113.html">psb_precinit Initialize</A>
<B> Up:</B> <A NAME="tex2html1610"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1604"
HREF="node111.html">mm_mat_write Write</A>
&nbsp; <B> <A NAME="tex2html1612"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000111000000000000000">
psb_precinit -- Initialize a preconditioner</A>
</H2>
<H1><A NAME="SECTION000110000000000000000"></A>
<A NAME="sec:precs"></A>
<BR>
Preconditioner routines
</H1>
<P>
<PRE>
call psb_precinit(prec, ptype, info)
</PRE>
<A NAME="sec:psprecs"></A>The base PSBLAS library contains the implementation of two simple
preconditioning techniques:
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>ptype</STRONG></DT>
<DD>the type of preconditioner.
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a character string, see usage notes.
</DD>
<DT><STRONG><B>On Exit</B></STRONG></DT>
<DD><P>
</DD>
<DT><STRONG>prec</STRONG></DT>
<DD>Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a preconditioner data structure precdata<TT>psb_prec_type</TT>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
Error code: if no error, 0 is returned.
</DD>
</DL>
<FONT SIZE="+1"><B>Notes</B></FONT>
Legal inputs to this subroutine are interpreted depending on the
<IMG
WIDTH="42" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img136.png"
ALT="$ptype$"> string as follows<A NAME="tex2html30"
HREF="footnode.html#foot7086"><SUP>3</SUP></A>:
<DL>
<DT><STRONG>NONE</STRONG></DT>
<DD>No preconditioning, i.e. the preconditioner is just a copy
operator.
</DD>
<DT><STRONG>DIAG</STRONG></DT>
<DD>Diagonal scaling; each entry of the input vector is
multiplied by the reciprocal of the sum of the absolute values of
the coefficients in the corresponding row of matrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">;
</DD>
<DT><STRONG>BJAC</STRONG></DT>
<DD>Precondition by a factorization of the
block-diagonal of matrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">, where block boundaries are determined
by the data allocation boundaries for each process; requires no
communication. Only the incomplete factorization <IMG
WIDTH="56" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img137.png"
ALT="$ILU(0)$"> is
currently implemented.
</DD>
</DL>
<UL>
<LI>Diagonal Scaling
</LI>
<LI>Block Jacobi with ILU(0) factorization
</LI>
</UL>
The supporting data type and subroutine interfaces are defined in the
module <code>psb_prec_mod</code>.
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html1615"
HREF="node113.html">psb_precinit -- Initialize a preconditioner</A>
<LI><A NAME="tex2html1616"
HREF="node114.html">psb_precbld -- Builds a preconditioner</A>
<LI><A NAME="tex2html1617"
HREF="node115.html">psb_precaply -- Preconditioner application routine</A>
<LI><A NAME="tex2html1618"
HREF="node116.html">psb_precdescr -- Prints a description of current
preconditioner</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_precbld -- Builds a preconditioner</TITLE>
<META NAME="description" CONTENT="psb_precbld -- Builds a preconditioner">
<TITLE>psb_precinit -- Initialize a preconditioner</TITLE>
<META NAME="description" CONTENT="psb_precinit -- Initialize a preconditioner">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,137 +20,118 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node114.html">
<LINK REL="previous" HREF="node112.html">
<LINK REL="up" HREF="node111.html">
<LINK REL="up" HREF="node112.html">
<LINK REL="next" HREF="node114.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1628"
<A NAME="tex2html1629"
HREF="node114.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1624"
HREF="node111.html">
<A NAME="tex2html1625"
HREF="node112.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1618"
<A NAME="tex2html1619"
HREF="node112.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1626"
<A NAME="tex2html1627"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1629"
HREF="node114.html">psb_precaply Preconditioner</A>
<B> Up:</B> <A NAME="tex2html1625"
HREF="node111.html">Preconditioner routines</A>
<B> Previous:</B> <A NAME="tex2html1619"
HREF="node112.html">psb_precinit Initialize</A>
&nbsp; <B> <A NAME="tex2html1627"
<B> Next:</B> <A NAME="tex2html1630"
HREF="node114.html">psb_precbld Builds</A>
<B> Up:</B> <A NAME="tex2html1626"
HREF="node112.html">Preconditioner routines</A>
<B> Previous:</B> <A NAME="tex2html1620"
HREF="node112.html">Preconditioner routines</A>
&nbsp; <B> <A NAME="tex2html1628"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000112000000000000000">
psb_precbld -- Builds a preconditioner</A>
<H2><A NAME="SECTION000111000000000000000">
psb_precinit -- Initialize a preconditioner</A>
</H2>
<P>
<PRE>
call psb_precbld(a, desc_a, prec, info,amold,vmold)
call psb_precinit(prec, ptype, info)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the system sparse matrix.
Scope: <B>local</B>
<DT><STRONG>ptype</STRONG></DT>
<DD>the type of preconditioner.
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>, target.
Intent: <B>in</B>.
<BR>
Specified as: a sparse matrix data structure spdata<TT>psb_Tspmat_type</TT>.
Specified as: a character string, see usage notes.
</DD>
<DT><STRONG><B>On Exit</B></STRONG></DT>
<DD><P>
</DD>
<DT><STRONG>prec</STRONG></DT>
<DD>the preconditioner.
<BR>
Scope: <B>local</B>
<DD>Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: an already initialized precondtioner data structure precdata<TT>psb_prec_type</TT>
<BR></DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the problem communication descriptor.
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>, target.
<BR>
Specified as: a communication descriptor data structure descdata<TT>psb_desc_type</TT>.
Specified as: a preconditioner data structure precdata<TT>psb_prec_type</TT>.
</DD>
<DT><STRONG>amold</STRONG></DT>
<DD>The desired dynamic type for the internal matrix storage.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an object of a class derived from spbasedata<TT>psb_T_base_sparse_mat</TT>.
</DD>
<DT><STRONG>vmold</STRONG></DT>
<DD>The desired dynamic type for the internal vector storage.
<BR>
Scope: <B>local</B>.
<DT><STRONG>info</STRONG></DT>
<DD>Scope: <B>global</B>
<BR>
Type: <B>optional</B>.
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
Intent: <B>out</B>.
<BR>
Specified as: an object of a class derived from vbasedata<TT>psb_T_base_vect_type</TT>.
<P>
Error code: if no error, 0 is returned.
</DD>
</DL>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
Legal inputs to this subroutine are interpreted depending on the
<IMG
WIDTH="42" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img136.png"
ALT="$ptype$"> string as follows<A NAME="tex2html30"
HREF="footnode.html#foot7107"><SUP>3</SUP></A>:
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
<DT><STRONG>NONE</STRONG></DT>
<DD>No preconditioning, i.e. the preconditioner is just a copy
operator.
</DD>
<DT><STRONG>prec</STRONG></DT>
<DD>the preconditioner.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a precondtioner data structure precdata<TT>psb_prec_type</TT>
<BR></DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
An integer value; 0 means no error has been detected.
<DT><STRONG>DIAG</STRONG></DT>
<DD>Diagonal scaling; each entry of the input vector is
multiplied by the reciprocal of the sum of the absolute values of
the coefficients in the corresponding row of matrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">;
</DD>
<DT><STRONG>BJAC</STRONG></DT>
<DD>Precondition by a factorization of the
block-diagonal of matrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">, where block boundaries are determined
by the data allocation boundaries for each process; requires no
communication. Only the incomplete factorization <IMG
WIDTH="56" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img137.png"
ALT="$ILU(0)$"> is
currently implemented.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_precaply -- Preconditioner application routine</TITLE>
<META NAME="description" CONTENT="psb_precaply -- Preconditioner application routine">
<TITLE>psb_precbld -- Builds a preconditioner</TITLE>
<META NAME="description" CONTENT="psb_precbld -- Builds a preconditioner">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,45 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node115.html">
<LINK REL="previous" HREF="node113.html">
<LINK REL="up" HREF="node111.html">
<LINK REL="up" HREF="node112.html">
<LINK REL="next" HREF="node115.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1640"
<A NAME="tex2html1641"
HREF="node115.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1636"
HREF="node111.html">
<A NAME="tex2html1637"
HREF="node112.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1630"
<A NAME="tex2html1631"
HREF="node113.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1638"
<A NAME="tex2html1639"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1641"
HREF="node115.html">psb_precdescr Prints</A>
<B> Up:</B> <A NAME="tex2html1637"
HREF="node111.html">Preconditioner routines</A>
<B> Previous:</B> <A NAME="tex2html1631"
HREF="node113.html">psb_precbld Builds</A>
&nbsp; <B> <A NAME="tex2html1639"
<B> Next:</B> <A NAME="tex2html1642"
HREF="node115.html">psb_precaply Preconditioner</A>
<B> Up:</B> <A NAME="tex2html1638"
HREF="node112.html">Preconditioner routines</A>
<B> Previous:</B> <A NAME="tex2html1632"
HREF="node113.html">psb_precinit Initialize</A>
&nbsp; <B> <A NAME="tex2html1640"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000113000000000000000">
psb_precaply -- Preconditioner application routine</A>
<H2><A NAME="SECTION000112000000000000000">
psb_precbld -- Builds a preconditioner</A>
</H2>
<P>
<PRE>
call psb_precaply(prec,x,y,desc_a,info,trans,work)
call psb_precaply(prec,x,desc_a,info,trans)
call psb_precbld(a, desc_a, prec, info,amold,vmold)
</PRE>
<P>
@ -69,54 +68,60 @@ call psb_precaply(prec,x,desc_a,info,trans)
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>prec</STRONG></DT>
<DD>the preconditioner.
<DT><STRONG>a</STRONG></DT>
<DD>the system sparse matrix.
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
Intent: <B>in</B>, target.
<BR>
Specified as: a preconditioner data structure precdata<TT>psb_prec_type</TT>.
Specified as: a sparse matrix data structure spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>the source vector.
<DT><STRONG>prec</STRONG></DT>
<DD>the preconditioner.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one array or an object of type vdata<TT>psb_T_vect_type</TT>.
</DD>
Specified as: an already initialized precondtioner data structure precdata<TT>psb_prec_type</TT>
<BR></DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the problem communication descriptor.
<DD>the problem communication descriptor.
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
Intent: <B>in</B>, target.
<BR>
Specified as: a communication data structure descdata<TT>psb_desc_type</TT>.
Specified as: a communication descriptor data structure descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>trans</STRONG></DT>
<DD>Scope:
<DT><STRONG>amold</STRONG></DT>
<DD>The desired dynamic type for the internal matrix storage.
<BR>
Type: <B>optional</B>
Scope: <B>local</B>.
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a character.
Specified as: an object of a class derived from spbasedata<TT>psb_T_base_sparse_mat</TT>.
</DD>
<DT><STRONG>work</STRONG></DT>
<DD>an optional work space
Scope: <B>local</B>
<DT><STRONG>vmold</STRONG></DT>
<DD>The desired dynamic type for the internal vector storage.
<BR>
Type: <B>optional</B>
Scope: <B>local</B>.
<BR>
Intent: <B>inout</B>.
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a double precision array.
Specified as: an object of a class derived from vbasedata<TT>psb_T_base_vect_type</TT>.
<P>
</DD>
</DL>
@ -125,16 +130,17 @@ Specified as: a double precision array.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>the destination vector.
<DT><STRONG>prec</STRONG></DT>
<DD>the preconditioner.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one array or an object of type vdata<TT>psb_T_vect_type</TT>.
</DD>
Specified as: a precondtioner data structure precdata<TT>psb_prec_type</TT>
<BR></DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_precdescr -- Prints a description of current preconditioner</TITLE>
<META NAME="description" CONTENT="psb_precdescr -- Prints a description of current preconditioner">
<TITLE>psb_precaply -- Preconditioner application routine</TITLE>
<META NAME="description" CONTENT="psb_precaply -- Preconditioner application routine">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,53 +18,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node116.html">
<LINK REL="previous" HREF="node114.html">
<LINK REL="up" HREF="node111.html">
<LINK REL="up" HREF="node112.html">
<LINK REL="next" HREF="node116.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1650"
<A NAME="tex2html1653"
HREF="node116.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1646"
HREF="node111.html">
<A NAME="tex2html1649"
HREF="node112.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1642"
<A NAME="tex2html1643"
HREF="node114.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1648"
<A NAME="tex2html1651"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1651"
HREF="node116.html">Iterative Methods</A>
<B> Up:</B> <A NAME="tex2html1647"
HREF="node111.html">Preconditioner routines</A>
<B> Previous:</B> <A NAME="tex2html1643"
HREF="node114.html">psb_precaply Preconditioner</A>
&nbsp; <B> <A NAME="tex2html1649"
<B> Next:</B> <A NAME="tex2html1654"
HREF="node116.html">psb_precdescr Prints</A>
<B> Up:</B> <A NAME="tex2html1650"
HREF="node112.html">Preconditioner routines</A>
<B> Previous:</B> <A NAME="tex2html1644"
HREF="node114.html">psb_precbld Builds</A>
&nbsp; <B> <A NAME="tex2html1652"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000114000000000000000">
psb_precdescr -- Prints a description of current
preconditioner</A>
<H2><A NAME="SECTION000113000000000000000">
psb_precaply -- Preconditioner application routine</A>
</H2>
<P>
<PRE>
call psb_precdescr(prec)
call psb_precdescr(prec, iout)
call psb_precaply(prec,x,y,desc_a,info,trans,work)
call psb_precaply(prec,x,desc_a,info,trans)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
@ -79,15 +79,72 @@ Intent: <B>in</B>.
<BR>
Specified as: a preconditioner data structure precdata<TT>psb_prec_type</TT>.
</DD>
<DT><STRONG>iout</STRONG></DT>
<DD>output unit.
<DT><STRONG>x</STRONG></DT>
<DD>the source vector.
Scope: <B>local</B>
<BR>
Type: <B>optiona</B>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one array or an object of type vdata<TT>psb_T_vect_type</TT>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the problem communication descriptor.
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a communication data structure descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>trans</STRONG></DT>
<DD>Scope:
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer number.
Specified as: a character.
</DD>
<DT><STRONG>work</STRONG></DT>
<DD>an optional work space
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a double precision array.
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>the destination vector.
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one array or an object of type vdata<TT>psb_T_vect_type</TT>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Iterative Methods</TITLE>
<META NAME="description" CONTENT="Iterative Methods">
<TITLE>psb_precdescr -- Prints a description of current preconditioner</TITLE>
<META NAME="description" CONTENT="psb_precdescr -- Prints a description of current preconditioner">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,61 +18,80 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node118.html">
<LINK REL="previous" HREF="node111.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="previous" HREF="node115.html">
<LINK REL="up" HREF="node112.html">
<LINK REL="next" HREF="node117.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1662"
<A NAME="tex2html1663"
HREF="node117.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1658"
HREF="userhtml.html">
<A NAME="tex2html1659"
HREF="node112.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1652"
<A NAME="tex2html1655"
HREF="node115.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1660"
<A NAME="tex2html1661"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1663"
HREF="node117.html">psb_krylov Krylov</A>
<B> Up:</B> <A NAME="tex2html1659"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1653"
HREF="node115.html">psb_precdescr Prints</A>
&nbsp; <B> <A NAME="tex2html1661"
<B> Next:</B> <A NAME="tex2html1664"
HREF="node117.html">Iterative Methods</A>
<B> Up:</B> <A NAME="tex2html1660"
HREF="node112.html">Preconditioner routines</A>
<B> Previous:</B> <A NAME="tex2html1656"
HREF="node115.html">psb_precaply Preconditioner</A>
&nbsp; <B> <A NAME="tex2html1662"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION000120000000000000000"></A>
<A NAME="sec:methods"></A>
<BR>
Iterative Methods
</H1>
<H2><A NAME="SECTION000114000000000000000">
psb_precdescr -- Prints a description of current
preconditioner</A>
</H2>
<P>
In this chapter we provide routines for preconditioners and iterative
methods. The interfaces for Krylov subspace methods are available in
the module <code>psb_krylov_mod</code>.
<PRE>
call psb_precdescr(prec)
call psb_precdescr(prec, iout)
</PRE>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>prec</STRONG></DT>
<DD>the preconditioner.
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a preconditioner data structure precdata<TT>psb_prec_type</TT>.
</DD>
<DT><STRONG>iout</STRONG></DT>
<DD>output unit.
Scope: <B>local</B>
<BR>
Type: <B>optiona</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer number.
</DD>
</DL>
<UL>
<LI><A NAME="tex2html1664"
HREF="node117.html">psb_krylov -- Krylov Methods Driver
Routine</A>
</UL>
<!--End of Table of Child-Links-->
<P>
<BR><HR>
</BODY>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_krylov -- Krylov Methods Driver Routine</TITLE>
<META NAME="description" CONTENT="psb_krylov -- Krylov Methods Driver Routine">
<TITLE>Iterative Methods</TITLE>
<META NAME="description" CONTENT="Iterative Methods">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,372 +18,62 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="previous" HREF="node116.html">
<LINK REL="up" HREF="node116.html">
<LINK REL="next" HREF="node119.html">
<LINK REL="previous" HREF="node112.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node118.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1673"
<A NAME="tex2html1675"
HREF="node118.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1669"
HREF="node116.html">
<A NAME="tex2html1671"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1665"
HREF="node116.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1671"
<A NAME="tex2html1673"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1674"
HREF="node118.html">Bibliography</A>
<B> Up:</B> <A NAME="tex2html1670"
HREF="node116.html">Iterative Methods</A>
<B> Next:</B> <A NAME="tex2html1676"
HREF="node118.html">psb_krylov Krylov</A>
<B> Up:</B> <A NAME="tex2html1672"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1666"
HREF="node116.html">Iterative Methods</A>
&nbsp; <B> <A NAME="tex2html1672"
HREF="node116.html">psb_precdescr Prints</A>
&nbsp; <B> <A NAME="tex2html1674"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000121000000000000000"></A><A NAME="krylov"></A>
<H1><A NAME="SECTION000120000000000000000"></A>
<A NAME="sec:methods"></A>
<BR>
psb_krylov -- Krylov Methods Driver
Routine
</H2>
<P>
This subroutine is a driver that provides a general interface for all
the Krylov-Subspace family methods implemented in PSBLAS version 2.
<P>
The stopping criterion is the normwise backward error, in the infinity
norm, i.e. the iteration is stopped when
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
err = \frac{\|r_i\|}{(\|A\|\|x_i\|+\|b\|)} < eps
\end{displaymath}
-->
<IMG
WIDTH="204" HEIGHT="44" BORDER="0"
SRC="img138.png"
ALT="\begin{displaymath}err = \frac{\Vert r_i\Vert}{(\Vert A\Vert\Vert x_i\Vert+\Vert b\Vert)} &lt; eps \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
or the 2-norm residual reduction
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
err = \frac{\|r_i\|}{\|b\|_2} < eps
\end{displaymath}
-->
<IMG
WIDTH="121" HEIGHT="44" BORDER="0"
SRC="img139.png"
ALT="\begin{displaymath}err = \frac{\Vert r_i\Vert}{\Vert b\Vert _2} &lt; eps \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
according to the value passed through the istop argument (see
later). In the above formulae, <IMG
WIDTH="19" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img140.png"
ALT="$x_i$"> is the tentative solution and
<IMG
WIDTH="90" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img141.png"
ALT="$r_i=b-Ax_i$"> the corresponding residual at the <IMG
WIDTH="9" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$i$">-th iteration.
<P>
<PRE>
call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&amp;
&amp; itmax,iter,err,itrace,irst,istop,cond)
</PRE>
Iterative Methods
</H1>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>method</STRONG></DT>
<DD>a string that defines the iterative method to be
used. Supported values are:
<DL>
<DT><STRONG>CG:</STRONG></DT>
<DD>the Conjugate Gradient method;
</DD>
<DT><STRONG>CGS:</STRONG></DT>
<DD>the Conjugate Gradient Stabilized method;
In this chapter we provide routines for preconditioners and iterative
methods. The interfaces for Krylov subspace methods are available in
the module <code>psb_krylov_mod</code>.
<P>
</DD>
<DT><STRONG>BICG:</STRONG></DT>
<DD>the Bi-Conjugate Gradient method;
</DD>
<DT><STRONG>BICGSTAB:</STRONG></DT>
<DD>the Bi-Conjugate Gradient Stabilized method;
</DD>
<DT><STRONG>BICGSTABL:</STRONG></DT>
<DD>the Bi-Conjugate Gradient Stabilized method with restarting;
</DD>
<DT><STRONG>RGMRES:</STRONG></DT>
<DD>the Generalized Minimal Residual method with restarting.
</DD>
</DL>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the local portion of global sparse matrix
<IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>prec</STRONG></DT>
<DD>The data structure containing the preconditioner.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type precdata<TT>psb_prec_type</TT>.
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>The RHS vector.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one array or an object of type vdata<TT>psb_T_vect_type</TT>.
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>The initial guess.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one array or an object of type vdata<TT>psb_T_vect_type</TT>.
</DD>
<DT><STRONG>eps</STRONG></DT>
<DD>The stopping tolerance.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a real number.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>itmax</STRONG></DT>
<DD>The maximum number of iterations to perform.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Default: <IMG
WIDTH="100" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
SRC="img142.png"
ALT="$itmax = 1000$">.
<BR>
Specified as: an integer variable <IMG
WIDTH="75" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
SRC="img143.png"
ALT="$itmax \ge 1$">.
</DD>
<DT><STRONG>itrace</STRONG></DT>
<DD>If <IMG
WIDTH="29" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img103.png"
ALT="$&gt;0$"> print out an informational message about
convergence every <IMG
WIDTH="46" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
SRC="img144.png"
ALT="$itrace$"> iterations.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR></DD>
<DT><STRONG>irst</STRONG></DT>
<DD>An integer specifying the restart parameter.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Values: <IMG
WIDTH="59" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
SRC="img145.png"
ALT="$irst&gt;0$">. This is employed for the BiCGSTABL or RGMRES
methods, otherwise it is ignored.
<P>
</DD>
<DT><STRONG>istop</STRONG></DT>
<DD>An integer specifying the stopping criterion.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Values: 1: use the normwise backward error, 2: use the scaled 2-norm
of the residual. Default: 2.
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>The computed solution.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one array or an object of type vdata<TT>psb_T_vect_type</TT>.
</DD>
<DT><STRONG>iter</STRONG></DT>
<DD>The number of iterations performed.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>out</B>.
<BR>
Returned as: an integer variable.
</DD>
<DT><STRONG>err</STRONG></DT>
<DD>The convergence estimate on exit.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>out</B>.
<BR>
Returned as: a real number.
</DD>
<DT><STRONG>cond</STRONG></DT>
<DD>An estimate of the condition number of matrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">; only
available with the <IMG
WIDTH="29" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img146.png"
ALT="$CG$"> method.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>out</B>.
<BR>
Returned as: a real number.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<P>
<P>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1673"
HREF="node118.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1669"
HREF="node116.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1665"
HREF="node116.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1671"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1674"
HREF="node118.html">Bibliography</A>
<B> Up:</B> <A NAME="tex2html1670"
HREF="node116.html">Iterative Methods</A>
<B> Previous:</B> <A NAME="tex2html1666"
HREF="node116.html">Iterative Methods</A>
&nbsp; <B> <A NAME="tex2html1672"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html1677"
HREF="node118.html">psb_krylov -- Krylov Methods Driver
Routine</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Bibliography</TITLE>
<META NAME="description" CONTENT="Bibliography">
<TITLE>psb_krylov -- Krylov Methods Driver Routine</TITLE>
<META NAME="description" CONTENT="psb_krylov -- Krylov Methods Driver Routine">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,166 +18,372 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node119.html">
<LINK REL="previous" HREF="node116.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="previous" HREF="node117.html">
<LINK REL="up" HREF="node117.html">
<LINK REL="next" HREF="node119.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1685"
<A NAME="tex2html1686"
HREF="node119.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1681"
HREF="userhtml.html">
<A NAME="tex2html1682"
HREF="node117.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1675"
<A NAME="tex2html1678"
HREF="node117.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1683"
<A NAME="tex2html1684"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1686"
HREF="node119.html">About this document ...</A>
<B> Up:</B> <A NAME="tex2html1682"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1676"
HREF="node117.html">psb_krylov Krylov</A>
&nbsp; <B> <A NAME="tex2html1684"
<B> Next:</B> <A NAME="tex2html1687"
HREF="node119.html">Bibliography</A>
<B> Up:</B> <A NAME="tex2html1683"
HREF="node117.html">Iterative Methods</A>
<B> Previous:</B> <A NAME="tex2html1679"
HREF="node117.html">Iterative Methods</A>
&nbsp; <B> <A NAME="tex2html1685"
HREF="node1.html">Contents</A></B>
<BR><BR>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000130000000000000000">
Bibliography</A>
</H2><DL COMPACT><DD><P></P><DT><A NAME="DesPat:11">1</A>
<DD>
D.&nbsp;Barbieri, V.&nbsp;Cardellini, S.&nbsp;Filippone and D.&nbsp;Rouson
<EM>Design Patterns for Scientific Computations on Sparse Matrices</EM>,
HPSS 2011, Algorithms and Programming Tools for Next-Generation High-Performance Scientific Software, Bordeaux, Sep. 2011
<H2><A NAME="SECTION000121000000000000000"></A><A NAME="krylov"></A>
<BR>
psb_krylov -- Krylov Methods Driver
Routine
</H2>
<P>
<P></P><DT><A NAME="PARA04FOREST">2</A>
<DD>
G.&nbsp;Bella, S.&nbsp;Filippone, A.&nbsp;De Maio and M.&nbsp;Testa,
<EM>A Simulation Model for Forest Fires</EM>,
in J.&nbsp;Dongarra, K.&nbsp;Madsen, J.&nbsp;Wasniewski, editors,
Proceedings of PARA&nbsp;04 Workshop on State of the Art
in Scientific Computing, pp.&nbsp;546-553, Lecture Notes in Computer Science,
Springer, 2005.
<P></P><DT><A NAME="2007d">3</A>
<DD> A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,<BR>
2LEV-D2P4: a package of high-performance preconditioners,<BR>
Applicable Algebra in Engineering, Communications and Computing,
Volume 18, Number 3, May, 2007, pp. 223-239
<P></P><DT><A NAME="2007c">4</A>
<DD> P. D'Ambra, S. Filippone, D. Di Serafino<BR>
On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners
<BR>
Applied Numerical Mathematics, Elsevier Science,
Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196.
This subroutine is a driver that provides a general interface for all
the Krylov-Subspace family methods implemented in PSBLAS version 2.
<P>
<P></P><DT><A NAME="BLAS2">5</A>
<DD>
Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R.,
An Extended Set of Fortran Basic Linear Algebra Subprograms,
ACM Trans. Math. Softw. vol.&nbsp;14, 1-17, 1988.
<P></P><DT><A NAME="BLAS3">6</A>
<DD>
Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I.,
A Set of level 3 Basic Linear Algebra Subprograms,
ACM Trans. Math. Softw. vol.&nbsp;16, 1-17, 1990.
<P></P><DT><A NAME="BLACS">7</A>
<DD>
J.&nbsp;J.&nbsp;Dongarra and R.&nbsp;C.&nbsp;Whaley,
<EM>A User's Guide to the BLACS v.&nbsp;1.1</EM>,
Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of
Tennessee, March 1995 (updated May 1997).
<P></P><DT><A NAME="sblas97">8</A>
<DD>
I.&nbsp;Duff, M.&nbsp;Marrone, G.&nbsp;Radicati and C.&nbsp;Vittoli,
<EM>Level 3 Basic Linear Algebra Subprograms for Sparse Matrices:
a User Level Interface</EM>,
ACM Transactions on Mathematical Software, 23(3), pp.&nbsp;379-401, 1997.
<P></P><DT><A NAME="sblas02">9</A>
<DD>
I.&nbsp;Duff, M.&nbsp;Heroux and R.&nbsp;Pozo,
<EM>An Overview of the Sparse Basic Linear
Algebra Subprograms: the New Standard from the BLAS Technical Forum</EM>,
ACM Transactions on Mathematical Software, 28(2), pp.&nbsp;239-267, 2002.
<P></P><DT><A NAME="PSBLAS">10</A>
The stopping criterion is the normwise backward error, in the infinity
norm, i.e. the iteration is stopped when
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
err = \frac{\|r_i\|}{(\|A\|\|x_i\|+\|b\|)} < eps
\end{displaymath}
-->
<IMG
WIDTH="204" HEIGHT="44" BORDER="0"
SRC="img138.png"
ALT="\begin{displaymath}err = \frac{\Vert r_i\Vert}{(\Vert A\Vert\Vert x_i\Vert+\Vert b\Vert)} &lt; eps \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
or the 2-norm residual reduction
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
err = \frac{\|r_i\|}{\|b\|_2} < eps
\end{displaymath}
-->
<IMG
WIDTH="121" HEIGHT="44" BORDER="0"
SRC="img139.png"
ALT="\begin{displaymath}err = \frac{\Vert r_i\Vert}{\Vert b\Vert _2} &lt; eps \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
according to the value passed through the istop argument (see
later). In the above formulae, <IMG
WIDTH="19" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img140.png"
ALT="$x_i$"> is the tentative solution and
<IMG
WIDTH="90" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img141.png"
ALT="$r_i=b-Ax_i$"> the corresponding residual at the <IMG
WIDTH="9" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$i$">-th iteration.
<P>
<PRE>
call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&amp;
&amp; itmax,iter,err,itrace,irst,istop,cond)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
S.&nbsp;Filippone and M.&nbsp;Colajanni,
<EM>PSBLAS: A Library for Parallel Linear Algebra
Computation on Sparse Matrices</EM>,
</DD>
<DT><STRONG>method</STRONG></DT>
<DD>a string that defines the iterative method to be
used. Supported values are:
<DL>
<DT><STRONG>CG:</STRONG></DT>
<DD>the Conjugate Gradient method;
</DD>
<DT><STRONG>CGS:</STRONG></DT>
<DD>the Conjugate Gradient Stabilized method;
<P>
</DD>
<DT><STRONG>BICG:</STRONG></DT>
<DD>the Bi-Conjugate Gradient method;
</DD>
<DT><STRONG>BICGSTAB:</STRONG></DT>
<DD>the Bi-Conjugate Gradient Stabilized method;
</DD>
<DT><STRONG>BICGSTABL:</STRONG></DT>
<DD>the Bi-Conjugate Gradient Stabilized method with restarting;
</DD>
<DT><STRONG>RGMRES:</STRONG></DT>
<DD>the Generalized Minimal Residual method with restarting.
</DD>
</DL>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the local portion of global sparse matrix
<IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">.
<BR>
ACM Transactions on Mathematical Software, 26(4), pp.&nbsp;527-550, 2000.
<P></P><DT><A NAME="Sparse03">11</A>
<DD>
S.&nbsp;Filippone and A.&nbsp;Buttari,
<EM>Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003</EM>,
Scope: <B>local</B>
<BR>
ACM Transactions on Mathematical Software, to appear.
<P></P><DT><A NAME="KIVA3PSBLAS">12</A>
<DD>
S.&nbsp;Filippone, P.&nbsp;D'Ambra, M.&nbsp;Colajanni,
<EM>Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics
Applications Code on Linux Clusters</EM>,
in G.&nbsp;Joubert, A.&nbsp;Murli, F.&nbsp;Peters, M.&nbsp;Vanneschi, editors,
Parallel Computing - Advances &amp; Current Issues,
pp.&nbsp;441-448, Imperial College Press, 2002.
<P></P><DT><A NAME="DesignPatterns">13</A>
<DD>
Gamma, E., Helm, R., Johnson, R., and Vlissides,
J. 1995.
<EM>Design Patterns: Elements of Reusable Object-Oriented Software</EM>.
Addison-Wesley.
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>prec</STRONG></DT>
<DD>The data structure containing the preconditioner.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type precdata<TT>psb_prec_type</TT>.
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>The RHS vector.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one array or an object of type vdata<TT>psb_T_vect_type</TT>.
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>The initial guess.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one array or an object of type vdata<TT>psb_T_vect_type</TT>.
</DD>
<DT><STRONG>eps</STRONG></DT>
<DD>The stopping tolerance.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a real number.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>itmax</STRONG></DT>
<DD>The maximum number of iterations to perform.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Default: <IMG
WIDTH="100" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
SRC="img142.png"
ALT="$itmax = 1000$">.
<BR>
Specified as: an integer variable <IMG
WIDTH="75" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
SRC="img143.png"
ALT="$itmax \ge 1$">.
</DD>
<DT><STRONG>itrace</STRONG></DT>
<DD>If <IMG
WIDTH="29" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img103.png"
ALT="$&gt;0$"> print out an informational message about
convergence every <IMG
WIDTH="46" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
SRC="img144.png"
ALT="$itrace$"> iterations.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR></DD>
<DT><STRONG>irst</STRONG></DT>
<DD>An integer specifying the restart parameter.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Values: <IMG
WIDTH="59" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
SRC="img145.png"
ALT="$irst&gt;0$">. This is employed for the BiCGSTABL or RGMRES
methods, otherwise it is ignored.
<P>
<P></P><DT><A NAME="METIS">14</A>
<DD>
Karypis, G. and Kumar, V.,
<EM>METIS: Unstructured Graph Partitioning and Sparse Matrix
Ordering System</EM>.
Minneapolis, MN 55455: University of Minnesota, Department of
Computer Science, 1995.
Internet Address: <code>http://www.cs.umn.edu/~karypis</code>.
<P></P><DT><A NAME="BLAS1">15</A>
</DD>
<DT><STRONG>istop</STRONG></DT>
<DD>An integer specifying the stopping criterion.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Values: 1: use the normwise backward error, 2: use the scaled 2-norm
of the residual. Default: 2.
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
Lawson, C., Hanson, R., Kincaid, D. and Krogh, F.,
Basic Linear Algebra Subprograms for Fortran usage,
ACM Trans. Math. Softw. vol.&nbsp;5, 38-329, 1979.
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>The computed solution.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one array or an object of type vdata<TT>psb_T_vect_type</TT>.
</DD>
<DT><STRONG>iter</STRONG></DT>
<DD>The number of iterations performed.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>out</B>.
<BR>
Returned as: an integer variable.
</DD>
<DT><STRONG>err</STRONG></DT>
<DD>The convergence estimate on exit.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>out</B>.
<BR>
Returned as: a real number.
</DD>
<DT><STRONG>cond</STRONG></DT>
<DD>An estimate of the condition number of matrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">; only
available with the <IMG
WIDTH="29" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img146.png"
ALT="$CG$"> method.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>out</B>.
<BR>
Returned as: a real number.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<P>
<P></P><DT><A NAME="machiels">16</A>
<DD>
Machiels, L. and Deville, M.
<EM>Fortran 90: An entry to object-oriented programming for the solution
of partial differential equations.</EM>
ACM Trans. Math. Softw. vol.&nbsp;23, 32-49.
<P></P><DT><A NAME="metcalf">17</A>
<DD>
Metcalf, M., Reid, J. and Cohen, M.
<EM>Fortran 95/2003 explained.</EM>
Oxford University Press, 2004.
<P></P><DT><A NAME="RouXiaXu:11">18</A>
<DD>
Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The
Object-Oriented Way. Cambridge University Press (2011)
<P>
<P></P><DT><A NAME="MPI1">19</A>
<DD>
M.&nbsp;Snir, S.&nbsp;Otto, S.&nbsp;Huss-Lederman, D.&nbsp;Walker and J.&nbsp;Dongarra,
<EM>MPI: The Complete Reference. Volume 1 - The MPI Core</EM>, second edition,
MIT Press, 1998.
</DL>
<P>
<BR><HR>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1686"
HREF="node119.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1682"
HREF="node117.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1678"
HREF="node117.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1684"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1687"
HREF="node119.html">Bibliography</A>
<B> Up:</B> <A NAME="tex2html1683"
HREF="node117.html">Iterative Methods</A>
<B> Previous:</B> <A NAME="tex2html1679"
HREF="node117.html">Iterative Methods</A>
&nbsp; <B> <A NAME="tex2html1685"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>About this document ...</TITLE>
<META NAME="description" CONTENT="About this document ...">
<TITLE>Bibliography</TITLE>
<META NAME="description" CONTENT="Bibliography">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,52 +18,165 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="previous" HREF="node118.html">
<LINK REL="next" HREF="node120.html">
<LINK REL="previous" HREF="node117.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node120.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_g.png">
<A NAME="tex2html1691"
<A NAME="tex2html1698"
HREF="node120.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1694"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1687"
<A NAME="tex2html1688"
HREF="node118.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1693"
<A NAME="tex2html1696"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Up:</B> <A NAME="tex2html1692"
<B> Next:</B> <A NAME="tex2html1699"
HREF="node120.html">About this document ...</A>
<B> Up:</B> <A NAME="tex2html1695"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1688"
HREF="node118.html">Bibliography</A>
&nbsp; <B> <A NAME="tex2html1694"
<B> Previous:</B> <A NAME="tex2html1689"
HREF="node118.html">psb_krylov Krylov</A>
&nbsp; <B> <A NAME="tex2html1697"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<BR><BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000130000000000000000">
Bibliography</A>
</H2><DL COMPACT><DD><P></P><DT><A NAME="DesPat:11">1</A>
<DD>
D.&nbsp;Barbieri, V.&nbsp;Cardellini, S.&nbsp;Filippone and D.&nbsp;Rouson
<EM>Design Patterns for Scientific Computations on Sparse Matrices</EM>,
HPSS 2011, Algorithms and Programming Tools for Next-Generation High-Performance Scientific Software, Bordeaux, Sep. 2011
<P>
<P></P><DT><A NAME="PARA04FOREST">2</A>
<DD>
G.&nbsp;Bella, S.&nbsp;Filippone, A.&nbsp;De Maio and M.&nbsp;Testa,
<EM>A Simulation Model for Forest Fires</EM>,
in J.&nbsp;Dongarra, K.&nbsp;Madsen, J.&nbsp;Wasniewski, editors,
Proceedings of PARA&nbsp;04 Workshop on State of the Art
in Scientific Computing, pp.&nbsp;546-553, Lecture Notes in Computer Science,
Springer, 2005.
<P></P><DT><A NAME="2007d">3</A>
<DD> A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,<BR>
2LEV-D2P4: a package of high-performance preconditioners,<BR>
Applicable Algebra in Engineering, Communications and Computing,
Volume 18, Number 3, May, 2007, pp. 223-239
<P></P><DT><A NAME="2007c">4</A>
<DD> P. D'Ambra, S. Filippone, D. Di Serafino<BR>
On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners
<BR>
Applied Numerical Mathematics, Elsevier Science,
Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196.
<H1><A NAME="SECTION000140000000000000000">
About this document ...</A>
</H1>
<P>
This document was generated using the
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2008 (1.71)
<P>
Copyright &#169; 1993, 1994, 1995, 1996,
<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
Computer Based Learning Unit, University of Leeds.
<P></P><DT><A NAME="BLAS2">5</A>
<DD>
Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R.,
An Extended Set of Fortran Basic Linear Algebra Subprograms,
ACM Trans. Math. Softw. vol.&nbsp;14, 1-17, 1988.
<P></P><DT><A NAME="BLAS3">6</A>
<DD>
Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I.,
A Set of level 3 Basic Linear Algebra Subprograms,
ACM Trans. Math. Softw. vol.&nbsp;16, 1-17, 1990.
<P></P><DT><A NAME="BLACS">7</A>
<DD>
J.&nbsp;J.&nbsp;Dongarra and R.&nbsp;C.&nbsp;Whaley,
<EM>A User's Guide to the BLACS v.&nbsp;1.1</EM>,
Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of
Tennessee, March 1995 (updated May 1997).
<P></P><DT><A NAME="sblas97">8</A>
<DD>
I.&nbsp;Duff, M.&nbsp;Marrone, G.&nbsp;Radicati and C.&nbsp;Vittoli,
<EM>Level 3 Basic Linear Algebra Subprograms for Sparse Matrices:
a User Level Interface</EM>,
ACM Transactions on Mathematical Software, 23(3), pp.&nbsp;379-401, 1997.
<P></P><DT><A NAME="sblas02">9</A>
<DD>
I.&nbsp;Duff, M.&nbsp;Heroux and R.&nbsp;Pozo,
<EM>An Overview of the Sparse Basic Linear
Algebra Subprograms: the New Standard from the BLAS Technical Forum</EM>,
ACM Transactions on Mathematical Software, 28(2), pp.&nbsp;239-267, 2002.
<P></P><DT><A NAME="PSBLAS">10</A>
<DD>
S.&nbsp;Filippone and M.&nbsp;Colajanni,
<EM>PSBLAS: A Library for Parallel Linear Algebra
Computation on Sparse Matrices</EM>,
<BR>
ACM Transactions on Mathematical Software, 26(4), pp.&nbsp;527-550, 2000.
<P></P><DT><A NAME="Sparse03">11</A>
<DD>
S.&nbsp;Filippone and A.&nbsp;Buttari,
<EM>Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003</EM>,
<BR>
Copyright &#169; 1997, 1998, 1999,
<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
Mathematics Department, Macquarie University, Sydney.
ACM Transactions on Mathematical Software, to appear.
<P></P><DT><A NAME="KIVA3PSBLAS">12</A>
<DD>
S.&nbsp;Filippone, P.&nbsp;D'Ambra, M.&nbsp;Colajanni,
<EM>Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics
Applications Code on Linux Clusters</EM>,
in G.&nbsp;Joubert, A.&nbsp;Murli, F.&nbsp;Peters, M.&nbsp;Vanneschi, editors,
Parallel Computing - Advances &amp; Current Issues,
pp.&nbsp;441-448, Imperial College Press, 2002.
<P></P><DT><A NAME="DesignPatterns">13</A>
<DD>
Gamma, E., Helm, R., Johnson, R., and Vlissides,
J. 1995.
<EM>Design Patterns: Elements of Reusable Object-Oriented Software</EM>.
Addison-Wesley.
<P>
<P></P><DT><A NAME="METIS">14</A>
<DD>
Karypis, G. and Kumar, V.,
<EM>METIS: Unstructured Graph Partitioning and Sparse Matrix
Ordering System</EM>.
Minneapolis, MN 55455: University of Minnesota, Department of
Computer Science, 1995.
Internet Address: <code>http://www.cs.umn.edu/~karypis</code>.
<P></P><DT><A NAME="BLAS1">15</A>
<DD>
Lawson, C., Hanson, R., Kincaid, D. and Krogh, F.,
Basic Linear Algebra Subprograms for Fortran usage,
ACM Trans. Math. Softw. vol.&nbsp;5, 38-329, 1979.
<P>
The command line arguments were: <BR>
<STRONG>latex2html</STRONG> <TT>-local_icons -noaddress -dir ../../html userhtml.tex</TT>
<P></P><DT><A NAME="machiels">16</A>
<DD>
Machiels, L. and Deville, M.
<EM>Fortran 90: An entry to object-oriented programming for the solution
of partial differential equations.</EM>
ACM Trans. Math. Softw. vol.&nbsp;23, 32-49.
<P></P><DT><A NAME="metcalf">17</A>
<DD>
Metcalf, M., Reid, J. and Cohen, M.
<EM>Fortran 95/2003 explained.</EM>
Oxford University Press, 2004.
<P></P><DT><A NAME="RouXiaXu:11">18</A>
<DD>
Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The
Object-Oriented Way. Cambridge University Press (2011)
<P>
<P></P><DT><A NAME="MPI1">19</A>
<DD>
M.&nbsp;Snir, S.&nbsp;Otto, S.&nbsp;Huss-Lederman, D.&nbsp;Walker and J.&nbsp;Dongarra,
<EM>MPI: The Complete Reference. Volume 1 - The MPI Core</EM>, second edition,
MIT Press, 1998.
</DL>
<P>
The translation was initiated by Salvatore Filippone on 2012-04-16
<BR><HR>
</BODY>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_local_cols -- Get number of local cols</TITLE>
<META NAME="description" CONTENT="get_local_cols -- Get number of local cols">
<TITLE>get_local_rows -- Get number of local rows</TITLE>
<META NAME="description" CONTENT="get_local_rows -- Get number of local rows">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,54 +20,54 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node13.html">
<LINK REL="previous" HREF="node11.html">
<LINK REL="up" HREF="node9.html">
<LINK REL="up" HREF="node10.html">
<LINK REL="next" HREF="node13.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html348"
<A NAME="tex2html349"
HREF="node13.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html344"
HREF="node9.html">
<A NAME="tex2html345"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html338"
<A NAME="tex2html339"
HREF="node11.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html346"
<A NAME="tex2html347"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html349"
HREF="node13.html">get_global_rows Get</A>
<B> Up:</B> <A NAME="tex2html345"
HREF="node9.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html339"
HREF="node11.html">get_local_rows Get</A>
&nbsp; <B> <A NAME="tex2html347"
<B> Next:</B> <A NAME="tex2html350"
HREF="node13.html">get_local_cols Get</A>
<B> Up:</B> <A NAME="tex2html346"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html340"
HREF="node11.html">Methods</A>
&nbsp; <B> <A NAME="tex2html348"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00041300000000000000">
get_local_cols -- Get number of local cols</A>
<H3><A NAME="SECTION00041200000000000000">
get_local_rows -- Get number of local rows</A>
</H3>
<P>
<PRE>
nc = desc%get_local_cols()
nr = desc%get_local_rows()
</PRE>
<P>
<DL>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>desc</STRONG></DT>
<DD>the communication descriptor.
<BR>
@ -81,17 +81,16 @@ Scope: <B>local</B>.
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The number of local cols, i.e. the number of
indices used by the current process, including both local and halo
indices; as explained in&nbsp;<A HREF="node2.html#sec:intro">1</A>,
it is equal to <!-- MATH
$|{\cal I}_i| + |{\cal B}_i| +|{\cal H}_i|$
<DD>The number of local rows, i.e. the number of
rows owned by the current process; as explained in&nbsp;<A HREF="node2.html#sec:intro">1</A>,
it is equal to <!-- MATH
$|{\cal I}_i| + |{\cal B}_i|$
-->
<IMG
WIDTH="118" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img11.png"
ALT="$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert +\vert{\cal H}_i\vert$">. The
returned value is specific to the calling process.
WIDTH="70" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img10.png"
ALT="$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert$">. The returned value is
specific to the calling process.
</DD>
</DL>

@ -0,0 +1,70 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--Converted with LaTeX2HTML 2008 (1.71)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>About this document ...</TITLE>
<META NAME="description" CONTENT="About this document ...">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2008">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="previous" HREF="node119.html">
<LINK REL="up" HREF="userhtml.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_g.png">
<A NAME="tex2html1704"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1700"
HREF="node119.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1706"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Up:</B> <A NAME="tex2html1705"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1701"
HREF="node119.html">Bibliography</A>
&nbsp; <B> <A NAME="tex2html1707"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION000140000000000000000">
About this document ...</A>
</H1>
<P>
This document was generated using the
<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2008 (1.71)
<P>
Copyright &#169; 1993, 1994, 1995, 1996,
<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
Computer Based Learning Unit, University of Leeds.
<BR>
Copyright &#169; 1997, 1998, 1999,
<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
Mathematics Department, Macquarie University, Sydney.
<P>
The command line arguments were: <BR>
<STRONG>latex2html</STRONG> <TT>-local_icons -noaddress -dir ../../html userhtml.tex</TT>
<P>
The translation was initiated by Salvatore Filippone on 2012-04-17
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_global_rows -- Get number of global rows</TITLE>
<META NAME="description" CONTENT="get_global_rows -- Get number of global rows">
<TITLE>get_local_cols -- Get number of local cols</TITLE>
<META NAME="description" CONTENT="get_local_cols -- Get number of local cols">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node14.html">
<LINK REL="previous" HREF="node12.html">
<LINK REL="up" HREF="node9.html">
<LINK REL="up" HREF="node10.html">
<LINK REL="next" HREF="node14.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html360"
<A NAME="tex2html361"
HREF="node14.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html356"
HREF="node9.html">
<A NAME="tex2html357"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html350"
<A NAME="tex2html351"
HREF="node12.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html358"
<A NAME="tex2html359"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html361"
HREF="node14.html">get_global_cols Get</A>
<B> Up:</B> <A NAME="tex2html357"
HREF="node9.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html351"
HREF="node12.html">get_local_cols Get</A>
&nbsp; <B> <A NAME="tex2html359"
<B> Next:</B> <A NAME="tex2html362"
HREF="node14.html">get_global_rows Get</A>
<B> Up:</B> <A NAME="tex2html358"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html352"
HREF="node12.html">get_local_rows Get</A>
&nbsp; <B> <A NAME="tex2html360"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00041400000000000000">
get_global_rows -- Get number of global rows</A>
<H3><A NAME="SECTION00041300000000000000">
get_local_cols -- Get number of local cols</A>
</H3>
<P>
<PRE>
nr = desc%get_global_rows()
nc = desc%get_local_cols()
</PRE>
<P>
@ -81,8 +81,17 @@ Scope: <B>local</B>.
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The number of global rows, i.e. the size of the
global index space.
<DD>The number of local cols, i.e. the number of
indices used by the current process, including both local and halo
indices; as explained in&nbsp;<A HREF="node2.html#sec:intro">1</A>,
it is equal to <!-- MATH
$|{\cal I}_i| + |{\cal B}_i| +|{\cal H}_i|$
-->
<IMG
WIDTH="118" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img11.png"
ALT="$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert +\vert{\cal H}_i\vert$">. The
returned value is specific to the calling process.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_global_cols -- Get number of global cols</TITLE>
<META NAME="description" CONTENT="get_global_cols -- Get number of global cols">
<TITLE>get_global_rows -- Get number of global rows</TITLE>
<META NAME="description" CONTENT="get_global_rows -- Get number of global rows">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,55 +18,56 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node15.html">
<LINK REL="previous" HREF="node13.html">
<LINK REL="up" HREF="node9.html">
<LINK REL="up" HREF="node10.html">
<LINK REL="next" HREF="node15.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html370"
<A NAME="tex2html373"
HREF="node15.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html366"
HREF="node9.html">
<A NAME="tex2html369"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html362"
<A NAME="tex2html363"
HREF="node13.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html368"
<A NAME="tex2html371"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html371"
HREF="node15.html">get_context Get communication context</A>
<B> Up:</B> <A NAME="tex2html367"
HREF="node9.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html363"
HREF="node13.html">get_global_rows Get</A>
&nbsp; <B> <A NAME="tex2html369"
<B> Next:</B> <A NAME="tex2html374"
HREF="node15.html">get_global_cols Get</A>
<B> Up:</B> <A NAME="tex2html370"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html364"
HREF="node13.html">get_local_cols Get</A>
&nbsp; <B> <A NAME="tex2html372"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00041500000000000000">
get_global_cols -- Get number of global cols</A>
<H3><A NAME="SECTION00041400000000000000">
get_global_rows -- Get number of global rows</A>
</H3>
<P>
<PRE>
nr = desc%get_global_cols()
nr = desc%get_global_rows()
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG>desc</STRONG></DT>
<DD>the communication descriptor.
<BR>
@ -80,8 +81,8 @@ Scope: <B>local</B>.
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The number of global cols; usually this is equal
to the number of global rows.
<DD>The number of global rows, i.e. the size of the
global index space.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_context--Get communication context </TITLE>
<META NAME="description" CONTENT="get_context--Get communication context ">
<TITLE>get_global_cols -- Get number of global cols</TITLE>
<META NAME="description" CONTENT="get_global_cols -- Get number of global cols">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,46 +18,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node19.html">
<LINK REL="previous" HREF="node9.html">
<LINK REL="up" HREF="node8.html">
<LINK REL="previous" HREF="node14.html">
<LINK REL="up" HREF="node10.html">
<LINK REL="next" HREF="node16.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html382"
<A NAME="tex2html383"
HREF="node16.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html378"
HREF="node8.html">
<A NAME="tex2html379"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html372"
<A NAME="tex2html375"
HREF="node14.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html380"
<A NAME="tex2html381"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html383"
HREF="node16.html">psb_cd_get_large_threshold Get</A>
<B> Up:</B> <A NAME="tex2html379"
HREF="node8.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html373"
HREF="node14.html">get_global_cols Get</A>
&nbsp; <B> <A NAME="tex2html381"
<B> Next:</B> <A NAME="tex2html384"
HREF="node16.html">get_context Get communication context</A>
<B> Up:</B> <A NAME="tex2html380"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html376"
HREF="node14.html">get_global_rows Get</A>
&nbsp; <B> <A NAME="tex2html382"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00042000000000000000">
<DIV ALIGN="LEFT">
get_context--Get communication context
</DIV></A>
</H2>
<H3><A NAME="SECTION00041500000000000000">
get_global_cols -- Get number of global cols</A>
</H3>
<P>
<PRE>
ictxt = desc%get_context()
nr = desc%get_global_cols()
</PRE>
<P>
@ -81,27 +80,13 @@ Scope: <B>local</B>.
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The communication context.
<DD>The number of global cols; usually this is equal
to the number of global rows.
</DD>
</DL>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html384"
HREF="node16.html">psb_cd_get_large_threshold -- Get threshold for
index mapping switch</A>
<LI><A NAME="tex2html385"
HREF="node17.html">psb_cd_set_large_threshold -- Set threshold for
index mapping switch</A>
<LI><A NAME="tex2html386"
HREF="node18.html">Named Constants</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_cd_get_large_threshold -- Get threshold for index mapping switch</TITLE>
<META NAME="description" CONTENT="psb_cd_get_large_threshold -- Get threshold for index mapping switch">
<TITLE>get_context--Get communication context </TITLE>
<META NAME="description" CONTENT="get_context--Get communication context ">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,46 +18,46 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node17.html">
<LINK REL="previous" HREF="node15.html">
<LINK REL="up" HREF="node15.html">
<LINK REL="next" HREF="node20.html">
<LINK REL="previous" HREF="node10.html">
<LINK REL="up" HREF="node9.html">
<LINK REL="next" HREF="node17.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html397"
<A NAME="tex2html395"
HREF="node17.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html393"
HREF="node15.html">
<A NAME="tex2html391"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html387"
<A NAME="tex2html385"
HREF="node15.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html395"
<A NAME="tex2html393"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html398"
HREF="node17.html">psb_cd_set_large_threshold Set</A>
<B> Up:</B> <A NAME="tex2html394"
HREF="node15.html">get_context Get communication context</A>
<B> Previous:</B> <A NAME="tex2html388"
HREF="node15.html">get_context Get communication context</A>
&nbsp; <B> <A NAME="tex2html396"
<B> Next:</B> <A NAME="tex2html396"
HREF="node17.html">psb_cd_get_large_threshold Get</A>
<B> Up:</B> <A NAME="tex2html392"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html386"
HREF="node15.html">get_global_cols Get</A>
&nbsp; <B> <A NAME="tex2html394"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00042100000000000000">
psb_cd_get_large_threshold -- Get threshold for
index mapping switch</A>
</H3>
<H2><A NAME="SECTION00042000000000000000">
<DIV ALIGN="LEFT">
get_context--Get communication context
</DIV></A>
</H2>
<PRE>
ith = psb_cd_get_large_threshold()
ictxt = desc%get_context()
</PRE>
<P>
@ -65,18 +65,43 @@ ith = psb_cd_get_large_threshold()
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The current value for the size threshold.
<DT><STRONG>desc</STRONG></DT>
<DD>the communication descriptor.
<BR>
Scope: <B>local</B>.
<BR></DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The communication context.
</DD>
</DL>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html397"
HREF="node17.html">psb_cd_get_large_threshold -- Get threshold for
index mapping switch</A>
<LI><A NAME="tex2html398"
HREF="node18.html">psb_cd_set_large_threshold -- Set threshold for
index mapping switch</A>
<LI><A NAME="tex2html399"
HREF="node19.html">Named Constants</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_cd_set_large_threshold -- Set threshold for index mapping switch</TITLE>
<META NAME="description" CONTENT="psb_cd_set_large_threshold -- Set threshold for index mapping switch">
<TITLE>psb_cd_get_large_threshold -- Get threshold for index mapping switch</TITLE>
<META NAME="description" CONTENT="psb_cd_get_large_threshold -- Get threshold for index mapping switch">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,71 +20,60 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node18.html">
<LINK REL="previous" HREF="node16.html">
<LINK REL="up" HREF="node15.html">
<LINK REL="up" HREF="node16.html">
<LINK REL="next" HREF="node18.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html409"
<A NAME="tex2html410"
HREF="node18.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html405"
HREF="node15.html">
<A NAME="tex2html406"
HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html399"
<A NAME="tex2html400"
HREF="node16.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html407"
<A NAME="tex2html408"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html410"
HREF="node18.html">Named Constants</A>
<B> Up:</B> <A NAME="tex2html406"
HREF="node15.html">get_context Get communication context</A>
<B> Previous:</B> <A NAME="tex2html400"
HREF="node16.html">psb_cd_get_large_threshold Get</A>
&nbsp; <B> <A NAME="tex2html408"
<B> Next:</B> <A NAME="tex2html411"
HREF="node18.html">psb_cd_set_large_threshold Set</A>
<B> Up:</B> <A NAME="tex2html407"
HREF="node16.html">get_context Get communication context</A>
<B> Previous:</B> <A NAME="tex2html401"
HREF="node16.html">get_context Get communication context</A>
&nbsp; <B> <A NAME="tex2html409"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00042200000000000000">
psb_cd_set_large_threshold -- Set threshold for
<H3><A NAME="SECTION00042100000000000000">
psb_cd_get_large_threshold -- Get threshold for
index mapping switch</A>
</H3>
<PRE>
call psb_cd_set_large_threshold(ith)
ith = psb_cd_get_large_threshold()
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>ith</STRONG></DT>
<DD>the new threshold for communication descriptors.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value greater than zero.
<DT><STRONG>Function value</STRONG></DT>
<DD>The current value for the size threshold.
<P>
</DD>
</DL>
Note: the threshold value is only queried by the library at the time a
call to <code>psb_cdall</code> is executed, therefore changing the threshold
has no effect on communication descriptors that have already been
initialized. Moreover the threshold must have the same value on all
processes.
<P>
<BR><HR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Named Constants</TITLE>
<META NAME="description" CONTENT="Named Constants">
<TITLE>psb_cd_set_large_threshold -- Set threshold for index mapping switch</TITLE>
<META NAME="description" CONTENT="psb_cd_set_large_threshold -- Set threshold for index mapping switch">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,78 +18,73 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node19.html">
<LINK REL="previous" HREF="node17.html">
<LINK REL="up" HREF="node15.html">
<LINK REL="up" HREF="node16.html">
<LINK REL="next" HREF="node19.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html419"
<A NAME="tex2html422"
HREF="node19.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html415"
HREF="node15.html">
<A NAME="tex2html418"
HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html411"
<A NAME="tex2html412"
HREF="node17.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html417"
<A NAME="tex2html420"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html420"
HREF="node19.html">Sparse Matrix class</A>
<B> Up:</B> <A NAME="tex2html416"
HREF="node15.html">get_context Get communication context</A>
<B> Previous:</B> <A NAME="tex2html412"
HREF="node17.html">psb_cd_set_large_threshold Set</A>
&nbsp; <B> <A NAME="tex2html418"
<B> Next:</B> <A NAME="tex2html423"
HREF="node19.html">Named Constants</A>
<B> Up:</B> <A NAME="tex2html419"
HREF="node16.html">get_context Get communication context</A>
<B> Previous:</B> <A NAME="tex2html413"
HREF="node17.html">psb_cd_get_large_threshold Get</A>
&nbsp; <B> <A NAME="tex2html421"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00042300000000000000"></A>
<A NAME="sec:cd_constants"></A>
<BR>
Named Constants
<H3><A NAME="SECTION00042200000000000000">
psb_cd_set_large_threshold -- Set threshold for
index mapping switch</A>
</H3>
<PRE>
call psb_cd_set_large_threshold(ith)
</PRE>
<P>
<DL>
<DT><STRONG>psb_none_</STRONG></DT>
<DD>Generic no-op;
</DD>
<DT><STRONG>psb_nohalo_</STRONG></DT>
<DD>Do not fetch halo elements;
</DD>
<DT><STRONG>psb_halo_</STRONG></DT>
<DD>Fetch halo elements from neighbouring processes;
</DD>
<DT><STRONG>psb_sum_</STRONG></DT>
<DD>Sum overlapped elements
</DD>
<DT><STRONG>psb_avg_</STRONG></DT>
<DD>Average overlapped elements
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
</DD>
<DT><STRONG>psb_comm_halo_</STRONG></DT>
<DD>Exchange data based on the <code>halo_index</code>
list;
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>psb_comm_ext_</STRONG></DT>
<DD>Exchange data based on the <code>ext_index</code>
list;
</DD>
<DT><STRONG>psb_comm_ovr_</STRONG></DT>
<DD>Exchange data based on the <code>ovrlap_index</code>
list;
</DD>
<DT><STRONG>psb_comm_mov_</STRONG></DT>
<DD>Exchange data based on the <code>ovr_mst_idx</code>
list;
<P>
<DT><STRONG>ith</STRONG></DT>
<DD>the new threshold for communication descriptors.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value greater than zero.
</DD>
</DL>
Note: the threshold value is only queried by the library at the time a
call to <code>psb_cdall</code> is executed, therefore changing the threshold
has no effect on communication descriptors that have already been
initialized. Moreover the threshold must have the same value on all
processes.
<P>
<BR><HR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Sparse Matrix class</TITLE>
<META NAME="description" CONTENT="Sparse Matrix class">
<TITLE>Named Constants</TITLE>
<META NAME="description" CONTENT="Named Constants">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,181 +18,81 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node29.html">
<LINK REL="previous" HREF="node15.html">
<LINK REL="up" HREF="node8.html">
<LINK REL="previous" HREF="node18.html">
<LINK REL="up" HREF="node16.html">
<LINK REL="next" HREF="node20.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html431"
<A NAME="tex2html432"
HREF="node20.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html427"
HREF="node8.html">
<A NAME="tex2html428"
HREF="node16.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html421"
<A NAME="tex2html424"
HREF="node18.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html429"
<A NAME="tex2html430"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html432"
HREF="node20.html">Methods</A>
<B> Up:</B> <A NAME="tex2html428"
HREF="node8.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html422"
HREF="node18.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html430"
<B> Next:</B> <A NAME="tex2html433"
HREF="node20.html">Sparse Matrix class</A>
<B> Up:</B> <A NAME="tex2html429"
HREF="node16.html">get_context Get communication context</A>
<B> Previous:</B> <A NAME="tex2html425"
HREF="node18.html">psb_cd_set_large_threshold Set</A>
&nbsp; <B> <A NAME="tex2html431"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00043000000000000000"></A>
<A NAME="sec:spmat"></A>
<H3><A NAME="SECTION00042300000000000000"></A>
<A NAME="sec:cd_constants"></A>
<BR>
Sparse Matrix class
</H2>
The spdata<TT>psb_Tspmat_type</TT> class
contains all information about the local portion of the sparse matrix and
its storage mode. Its design is
based on the STATE design pattern&nbsp;[<A
HREF="node118.html#DesignPatterns">13</A>] as detailed
in&nbsp;[<A
HREF="node118.html#Sparse03">11</A>]; the type declaration is shown in
figure&nbsp;<A HREF="#fig:spmattype">4</A> where <code>T</code> is a placeholder for the
data type and precision variants
Named Constants
</H3>
<DL>
<DT><STRONG>S</STRONG></DT>
<DD>Single precision real;
<DT><STRONG>psb_none_</STRONG></DT>
<DD>Generic no-op;
</DD>
<DT><STRONG>D</STRONG></DT>
<DD>Double precision real;
<DT><STRONG>psb_nohalo_</STRONG></DT>
<DD>Do not fetch halo elements;
</DD>
<DT><STRONG>C</STRONG></DT>
<DD>Single precision complex;
<DT><STRONG>psb_halo_</STRONG></DT>
<DD>Fetch halo elements from neighbouring processes;
</DD>
<DT><STRONG>Z</STRONG></DT>
<DD>Double precision complex.
<DT><STRONG>psb_sum_</STRONG></DT>
<DD>Sum overlapped elements
</DD>
</DL>
The actual data is contained in the polymorphic component <code>a%a</code>
of type spbasedata<TT>psb_T_base_sparse_mat</TT>; its
specific layout can be chosen dynamically among the predefined types,
or an entirely new storage layout can be implemented and passed to the
library at runtime via the <code>psb_spasb</code> routine.
<DIV ALIGN="CENTER"><A NAME="fig:spmattype"></A><A NAME="709"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
The PSBLAS defined data type that
contains a sparse matrix.</CAPTION>
<TR><TD><DIV ALIGN="CENTER">
</DIV><TABLE WIDTH="85%">
<TR><TD>
<PRE>
type :: psb_Tspmat_type
class(psb_T_base_sparse_mat), allocatable :: a
end type psb_Tspmat_type
</PRE></TD></TR>
</TABLE>
<DIV ALIGN="CENTER">
</DIV></TD></TR>
</TABLE>
</DIV>
The following very common formats are precompiled in PSBLAS and thus
are always available:
<DL>
<DT><STRONG>psb_T_coo_sparse_mat</STRONG></DT>
<DD>Coordinate storage;
<DT><STRONG>psb_avg_</STRONG></DT>
<DD>Average overlapped elements
</DD>
<DT><STRONG>psb_T_csr_sparse_mat</STRONG></DT>
<DD>Compressed storage by rows;
<DT><STRONG>psb_comm_halo_</STRONG></DT>
<DD>Exchange data based on the <code>halo_index</code>
list;
</DD>
<DT><STRONG>psb_T_csc_sparse_mat</STRONG></DT>
<DD>Compressed storage by columns;
<DT><STRONG>psb_comm_ext_</STRONG></DT>
<DD>Exchange data based on the <code>ext_index</code>
list;
</DD>
</DL>
The inner sparse matrix has an associated state, which can take the
following values:
<DL>
<DT><STRONG>Build:</STRONG></DT>
<DD>State entered after the first allocation, and before the
first assembly; in this state it is possible to add nonzero entries.
</DD>
<DT><STRONG>Assembled:</STRONG></DT>
<DD>State entered after the assembly; computations using
the sparse matrix, such as matrix-vector products, are only possible
in this state;
<DT><STRONG>psb_comm_ovr_</STRONG></DT>
<DD>Exchange data based on the <code>ovrlap_index</code>
list;
</DD>
<DT><STRONG>Update:</STRONG></DT>
<DD>State entered after a reinitalization; this is used to
handle applications in which the same sparsity pattern is used
multiple times with different coefficients. In this state it is only
possible to enter coefficients for already existing nonzero entries.
<DT><STRONG>psb_comm_mov_</STRONG></DT>
<DD>Exchange data based on the <code>ovr_mst_idx</code>
list;
<P>
</DD>
</DL>
The only storage variant supporting the build state is COO; all other
variants are obtained by conversion to/from it.
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html433"
HREF="node20.html">Methods</A>
<LI><A NAME="tex2html434"
HREF="node21.html">get_nrows -- Get number of rows in a sparse matrix</A>
<LI><A NAME="tex2html435"
HREF="node22.html">get_ncols -- Get number of columns in a sparse matrix</A>
<LI><A NAME="tex2html436"
HREF="node23.html">get_nnzeros -- Get number of nonzero elements
in a sparse matrix</A>
<LI><A NAME="tex2html437"
HREF="node24.html">get_size -- Get maximum number of nonzero elements
in a sparse matrix</A>
<LI><A NAME="tex2html438"
HREF="node25.html">sizeof -- Get memory occupation in bytes
of a sparse matrix</A>
<LI><A NAME="tex2html439"
HREF="node26.html">get_fmt -- Short description of the dynamic type</A>
<LI><A NAME="tex2html440"
HREF="node27.html">is_bld, is_upd, is_asb -- Status check</A>
<LI><A NAME="tex2html441"
HREF="node28.html">Named Constants</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html431"
HREF="node20.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html427"
HREF="node8.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html421"
HREF="node18.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html429"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html432"
HREF="node20.html">Methods</A>
<B> Up:</B> <A NAME="tex2html428"
HREF="node8.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html422"
HREF="node18.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html430"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html194"
<A NAME="tex2html195"
HREF="node3.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html190"
<A NAME="tex2html191"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html184"
<A NAME="tex2html185"
HREF="node1.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html192"
<A NAME="tex2html193"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html195"
<B> Next:</B> <A NAME="tex2html196"
HREF="node3.html">General overview</A>
<B> Up:</B> <A NAME="tex2html191"
<B> Up:</B> <A NAME="tex2html192"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html185"
<B> Previous:</B> <A NAME="tex2html186"
HREF="node1.html">Contents</A>
&nbsp; <B> <A NAME="tex2html193"
&nbsp; <B> <A NAME="tex2html194"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
@ -71,7 +71,7 @@ passing.
<P>
The PSBLAS library version 3 is implemented in
the Fortran&nbsp;2003&nbsp;[<A
HREF="node118.html#metcalf">17</A>] programming language, with reuse and/or
HREF="node119.html#metcalf">17</A>] programming language, with reuse and/or
adaptation of existing Fortran&nbsp;77 and Fortran&nbsp;95 software, plus a
handful of C routines.
@ -81,11 +81,11 @@ mostly in the handling of requirements for evolution and adaptation of
the library to new computing architectures and integration of
new algorithms.
For a detailed discussion of our design see&nbsp;[<A
HREF="node118.html#Sparse03">11</A>]; other
HREF="node119.html#Sparse03">11</A>]; other
works discussing advanced programming in Fortran&nbsp;2003
include&nbsp;[<A
HREF="node118.html#DesPat:11">1</A>,<A
HREF="node118.html#RouXiaXu:11">18</A>]; sufficient support for
HREF="node119.html#DesPat:11">1</A>,<A
HREF="node119.html#RouXiaXu:11">18</A>]; sufficient support for
Fortran&nbsp;2003 is now available from many compilers, including the GNU
Fortran compiler from the Free Software Foundation (as of version 4.6).
@ -94,7 +94,7 @@ Previous approaches have been based on mixing Fortran&nbsp;95, with its
support for object-based design, with other languages; these have
been advocated by a number of authors,
e.g.&nbsp;[<A
HREF="node118.html#machiels">16</A>]. Moreover, the Fortran&nbsp;95 facilities for dynamic
HREF="node119.html#machiels">16</A>]. Moreover, the Fortran&nbsp;95 facilities for dynamic
memory management and interface overloading greatly enhance the
usability of the PSBLAS
subroutines. In this way, the library can take care of runtime memory
@ -105,12 +105,12 @@ implementation or compilation time.
The presentation of the
PSBLAS library follows the general structure of the proposal for
serial Sparse BLAS&nbsp;[<A
HREF="node118.html#sblas97">8</A>,<A
HREF="node118.html#sblas02">9</A>], which in its turn is based on the
HREF="node119.html#sblas97">8</A>,<A
HREF="node119.html#sblas02">9</A>], which in its turn is based on the
proposal for BLAS on dense matrices&nbsp;[<A
HREF="node118.html#BLAS1">15</A>,<A
HREF="node118.html#BLAS2">5</A>,<A
HREF="node118.html#BLAS3">6</A>].
HREF="node119.html#BLAS1">15</A>,<A
HREF="node119.html#BLAS2">5</A>,<A
HREF="node119.html#BLAS3">6</A>].
<P>
The applicability of sparse iterative solvers to many different areas
@ -144,26 +144,26 @@ computational fluid dynamics applications.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html194"
<A NAME="tex2html195"
HREF="node3.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html190"
<A NAME="tex2html191"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html184"
<A NAME="tex2html185"
HREF="node1.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html192"
<A NAME="tex2html193"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html195"
<B> Next:</B> <A NAME="tex2html196"
HREF="node3.html">General overview</A>
<B> Up:</B> <A NAME="tex2html191"
<B> Up:</B> <A NAME="tex2html192"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html185"
<B> Previous:</B> <A NAME="tex2html186"
HREF="node1.html">Contents</A>
&nbsp; <B> <A NAME="tex2html193"
&nbsp; <B> <A NAME="tex2html194"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Methods</TITLE>
<META NAME="description" CONTENT="Methods">
<TITLE>Sparse Matrix class</TITLE>
<META NAME="description" CONTENT="Sparse Matrix class">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,43 +18,181 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node21.html">
<LINK REL="previous" HREF="node19.html">
<LINK REL="up" HREF="node19.html">
<LINK REL="next" HREF="node30.html">
<LINK REL="previous" HREF="node16.html">
<LINK REL="up" HREF="node9.html">
<LINK REL="next" HREF="node21.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html452"
<A NAME="tex2html444"
HREF="node21.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html448"
HREF="node19.html">
<A NAME="tex2html440"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html442"
<A NAME="tex2html434"
HREF="node19.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html450"
<A NAME="tex2html442"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html453"
HREF="node21.html">get_nrows Get</A>
<B> Up:</B> <A NAME="tex2html449"
HREF="node19.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html443"
HREF="node19.html">Sparse Matrix class</A>
&nbsp; <B> <A NAME="tex2html451"
<B> Next:</B> <A NAME="tex2html445"
HREF="node21.html">Methods</A>
<B> Up:</B> <A NAME="tex2html441"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html435"
HREF="node19.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html443"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00043100000000000000">
Methods</A>
</H3>
<H2><A NAME="SECTION00043000000000000000"></A>
<A NAME="sec:spmat"></A>
<BR>
Sparse Matrix class
</H2>
The spdata<TT>psb_Tspmat_type</TT> class
contains all information about the local portion of the sparse matrix and
its storage mode. Its design is
based on the STATE design pattern&nbsp;[<A
HREF="node119.html#DesignPatterns">13</A>] as detailed
in&nbsp;[<A
HREF="node119.html#Sparse03">11</A>]; the type declaration is shown in
figure&nbsp;<A HREF="#fig:spmattype">4</A> where <code>T</code> is a placeholder for the
data type and precision variants
<DL>
<DT><STRONG>S</STRONG></DT>
<DD>Single precision real;
</DD>
<DT><STRONG>D</STRONG></DT>
<DD>Double precision real;
</DD>
<DT><STRONG>C</STRONG></DT>
<DD>Single precision complex;
</DD>
<DT><STRONG>Z</STRONG></DT>
<DD>Double precision complex.
</DD>
</DL>
The actual data is contained in the polymorphic component <code>a%a</code>
of type spbasedata<TT>psb_T_base_sparse_mat</TT>; its
specific layout can be chosen dynamically among the predefined types,
or an entirely new storage layout can be implemented and passed to the
library at runtime via the <code>psb_spasb</code> routine.
<DIV ALIGN="CENTER"><A NAME="fig:spmattype"></A><A NAME="730"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
The PSBLAS defined data type that
contains a sparse matrix.</CAPTION>
<TR><TD><DIV ALIGN="CENTER">
</DIV><TABLE WIDTH="85%">
<TR><TD>
<PRE>
type :: psb_Tspmat_type
class(psb_T_base_sparse_mat), allocatable :: a
end type psb_Tspmat_type
</PRE></TD></TR>
</TABLE>
<DIV ALIGN="CENTER">
</DIV></TD></TR>
</TABLE>
</DIV>
The following very common formats are precompiled in PSBLAS and thus
are always available:
<DL>
<DT><STRONG>psb_T_coo_sparse_mat</STRONG></DT>
<DD>Coordinate storage;
</DD>
<DT><STRONG>psb_T_csr_sparse_mat</STRONG></DT>
<DD>Compressed storage by rows;
</DD>
<DT><STRONG>psb_T_csc_sparse_mat</STRONG></DT>
<DD>Compressed storage by columns;
</DD>
</DL>
The inner sparse matrix has an associated state, which can take the
following values:
<DL>
<DT><STRONG>Build:</STRONG></DT>
<DD>State entered after the first allocation, and before the
first assembly; in this state it is possible to add nonzero entries.
</DD>
<DT><STRONG>Assembled:</STRONG></DT>
<DD>State entered after the assembly; computations using
the sparse matrix, such as matrix-vector products, are only possible
in this state;
</DD>
<DT><STRONG>Update:</STRONG></DT>
<DD>State entered after a reinitalization; this is used to
handle applications in which the same sparsity pattern is used
multiple times with different coefficients. In this state it is only
possible to enter coefficients for already existing nonzero entries.
</DD>
</DL>
The only storage variant supporting the build state is COO; all other
variants are obtained by conversion to/from it.
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html446"
HREF="node21.html">Methods</A>
<LI><A NAME="tex2html447"
HREF="node22.html">get_nrows -- Get number of rows in a sparse matrix</A>
<LI><A NAME="tex2html448"
HREF="node23.html">get_ncols -- Get number of columns in a sparse matrix</A>
<LI><A NAME="tex2html449"
HREF="node24.html">get_nnzeros -- Get number of nonzero elements
in a sparse matrix</A>
<LI><A NAME="tex2html450"
HREF="node25.html">get_size -- Get maximum number of nonzero elements
in a sparse matrix</A>
<LI><A NAME="tex2html451"
HREF="node26.html">sizeof -- Get memory occupation in bytes
of a sparse matrix</A>
<LI><A NAME="tex2html452"
HREF="node27.html">get_fmt -- Short description of the dynamic type</A>
<LI><A NAME="tex2html453"
HREF="node28.html">is_bld, is_upd, is_asb -- Status check</A>
<LI><A NAME="tex2html454"
HREF="node29.html">Named Constants</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html444"
HREF="node21.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html440"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html434"
HREF="node19.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html442"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html445"
HREF="node21.html">Methods</A>
<B> Up:</B> <A NAME="tex2html441"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html435"
HREF="node19.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html443"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_nrows -- Get number of rows in a sparse matrix</TITLE>
<META NAME="description" CONTENT="get_nrows -- Get number of rows in a sparse matrix">
<TITLE>Methods</TITLE>
<META NAME="description" CONTENT="Methods">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,72 +20,40 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node22.html">
<LINK REL="previous" HREF="node20.html">
<LINK REL="up" HREF="node19.html">
<LINK REL="up" HREF="node20.html">
<LINK REL="next" HREF="node22.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html464"
<A NAME="tex2html465"
HREF="node22.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html460"
HREF="node19.html">
<A NAME="tex2html461"
HREF="node20.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html454"
<A NAME="tex2html455"
HREF="node20.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html462"
<A NAME="tex2html463"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html465"
HREF="node22.html">get_ncols Get</A>
<B> Up:</B> <A NAME="tex2html461"
HREF="node19.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html455"
HREF="node20.html">Methods</A>
&nbsp; <B> <A NAME="tex2html463"
<B> Next:</B> <A NAME="tex2html466"
HREF="node22.html">get_nrows Get</A>
<B> Up:</B> <A NAME="tex2html462"
HREF="node20.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html456"
HREF="node20.html">Sparse Matrix class</A>
&nbsp; <B> <A NAME="tex2html464"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00043200000000000000">
get_nrows -- Get number of rows in a sparse matrix</A>
<H3><A NAME="SECTION00043100000000000000">
Methods</A>
</H3>
<P>
<PRE>
nr = a%get_nrows()
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix
<BR>
Scope: <B>local</B>
<BR></DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The number of rows of sparse matrix <code>a</code>.
</DD>
</DL>
<P>
<BR><HR>
</BODY>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_ncols -- Get number of columns in a sparse matrix</TITLE>
<META NAME="description" CONTENT="get_ncols -- Get number of columns in a sparse matrix">
<TITLE>get_nrows -- Get number of rows in a sparse matrix</TITLE>
<META NAME="description" CONTENT="get_nrows -- Get number of rows in a sparse matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node23.html">
<LINK REL="previous" HREF="node21.html">
<LINK REL="up" HREF="node19.html">
<LINK REL="up" HREF="node20.html">
<LINK REL="next" HREF="node23.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html476"
<A NAME="tex2html477"
HREF="node23.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html472"
HREF="node19.html">
<A NAME="tex2html473"
HREF="node20.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html466"
<A NAME="tex2html467"
HREF="node21.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html474"
<A NAME="tex2html475"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html477"
HREF="node23.html">get_nnzeros Get</A>
<B> Up:</B> <A NAME="tex2html473"
HREF="node19.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html467"
HREF="node21.html">get_nrows Get</A>
&nbsp; <B> <A NAME="tex2html475"
<B> Next:</B> <A NAME="tex2html478"
HREF="node23.html">get_ncols Get</A>
<B> Up:</B> <A NAME="tex2html474"
HREF="node20.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html468"
HREF="node21.html">Methods</A>
&nbsp; <B> <A NAME="tex2html476"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00043300000000000000">
get_ncols -- Get number of columns in a sparse matrix</A>
<H3><A NAME="SECTION00043200000000000000">
get_nrows -- Get number of rows in a sparse matrix</A>
</H3>
<P>
<PRE>
nc = a%get_ncols()
nr = a%get_nrows()
</PRE>
<P>
@ -81,7 +81,7 @@ Scope: <B>local</B>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The number of columns of sparse matrix <code>a</code>.
<DD>The number of rows of sparse matrix <code>a</code>.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_nnzeros -- Get number of nonzero elements in a sparse matrix</TITLE>
<META NAME="description" CONTENT="get_nnzeros -- Get number of nonzero elements in a sparse matrix">
<TITLE>get_ncols -- Get number of columns in a sparse matrix</TITLE>
<META NAME="description" CONTENT="get_ncols -- Get number of columns in a sparse matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,45 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node24.html">
<LINK REL="previous" HREF="node22.html">
<LINK REL="up" HREF="node19.html">
<LINK REL="up" HREF="node20.html">
<LINK REL="next" HREF="node24.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html488"
<A NAME="tex2html489"
HREF="node24.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html484"
HREF="node19.html">
<A NAME="tex2html485"
HREF="node20.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html478"
<A NAME="tex2html479"
HREF="node22.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html486"
<A NAME="tex2html487"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html489"
HREF="node24.html">get_size Get</A>
<B> Up:</B> <A NAME="tex2html485"
HREF="node19.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html479"
HREF="node22.html">get_ncols Get</A>
&nbsp; <B> <A NAME="tex2html487"
<B> Next:</B> <A NAME="tex2html490"
HREF="node24.html">get_nnzeros Get</A>
<B> Up:</B> <A NAME="tex2html486"
HREF="node20.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html480"
HREF="node22.html">get_nrows Get</A>
&nbsp; <B> <A NAME="tex2html488"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00043400000000000000">
get_nnzeros -- Get number of nonzero elements
in a sparse matrix</A>
<H3><A NAME="SECTION00043300000000000000">
get_ncols -- Get number of columns in a sparse matrix</A>
</H3>
<P>
<PRE>
nz = a%get_nnzeros()
nc = a%get_ncols()
</PRE>
<P>
@ -82,20 +81,10 @@ Scope: <B>local</B>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The number of nonzero elements stored in sparse matrix <code>a</code>.
<DD>The number of columns of sparse matrix <code>a</code>.
</DD>
</DL>
<P>
<B>Notes</B>
<OL>
<LI>The function value is specific to the storage format of matrix
<code>a</code>; some storage formats employ padding, thus the returned
value for the same matrix may be different for different storage choices.
</LI>
</OL>
<P>
<BR><HR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_size -- Get maximum number of nonzero elements in a sparse matrix</TITLE>
<META NAME="description" CONTENT="get_size -- Get maximum number of nonzero elements in a sparse matrix">
<TITLE>get_nnzeros -- Get number of nonzero elements in a sparse matrix</TITLE>
<META NAME="description" CONTENT="get_nnzeros -- Get number of nonzero elements in a sparse matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node25.html">
<LINK REL="previous" HREF="node23.html">
<LINK REL="up" HREF="node19.html">
<LINK REL="up" HREF="node20.html">
<LINK REL="next" HREF="node25.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html500"
<A NAME="tex2html501"
HREF="node25.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html496"
HREF="node19.html">
<A NAME="tex2html497"
HREF="node20.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html490"
<A NAME="tex2html491"
HREF="node23.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html498"
<A NAME="tex2html499"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html501"
HREF="node25.html">sizeof Get</A>
<B> Up:</B> <A NAME="tex2html497"
HREF="node19.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html491"
HREF="node23.html">get_nnzeros Get</A>
&nbsp; <B> <A NAME="tex2html499"
<B> Next:</B> <A NAME="tex2html502"
HREF="node25.html">get_size Get</A>
<B> Up:</B> <A NAME="tex2html498"
HREF="node20.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html492"
HREF="node23.html">get_ncols Get</A>
&nbsp; <B> <A NAME="tex2html500"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00043500000000000000">
get_size -- Get maximum number of nonzero elements
<H3><A NAME="SECTION00043400000000000000">
get_nnzeros -- Get number of nonzero elements
in a sparse matrix</A>
</H3>
<P>
<PRE>
maxnz = a%get_size()
nz = a%get_nnzeros()
</PRE>
<P>
@ -82,11 +82,20 @@ Scope: <B>local</B>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The maximum number of nonzero elements that can
be stored in sparse matrix <code>a</code> using its current memory allocation.
<DD>The number of nonzero elements stored in sparse matrix <code>a</code>.
</DD>
</DL>
<P>
<B>Notes</B>
<OL>
<LI>The function value is specific to the storage format of matrix
<code>a</code>; some storage formats employ padding, thus the returned
value for the same matrix may be different for different storage choices.
</LI>
</OL>
<P>
<BR><HR>

@ -7,10 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>sizeof -- Get memory occupation in bytes
of a sparse matrix</TITLE>
<META NAME="description" CONTENT="sizeof -- Get memory occupation in bytes
of a sparse matrix">
<TITLE>get_size -- Get maximum number of nonzero elements in a sparse matrix</TITLE>
<META NAME="description" CONTENT="get_size -- Get maximum number of nonzero elements in a sparse matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -22,45 +20,45 @@ of a sparse matrix">
<LINK REL="next" HREF="node26.html">
<LINK REL="previous" HREF="node24.html">
<LINK REL="up" HREF="node19.html">
<LINK REL="up" HREF="node20.html">
<LINK REL="next" HREF="node26.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html512"
<A NAME="tex2html513"
HREF="node26.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html508"
HREF="node19.html">
<A NAME="tex2html509"
HREF="node20.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html502"
<A NAME="tex2html503"
HREF="node24.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html510"
<A NAME="tex2html511"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html513"
HREF="node26.html">get_fmt Short</A>
<B> Up:</B> <A NAME="tex2html509"
HREF="node19.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html503"
HREF="node24.html">get_size Get</A>
&nbsp; <B> <A NAME="tex2html511"
<B> Next:</B> <A NAME="tex2html514"
HREF="node26.html">sizeof Get</A>
<B> Up:</B> <A NAME="tex2html510"
HREF="node20.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html504"
HREF="node24.html">get_nnzeros Get</A>
&nbsp; <B> <A NAME="tex2html512"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00043600000000000000">
sizeof -- Get memory occupation in bytes
of a sparse matrix</A>
<H3><A NAME="SECTION00043500000000000000">
get_size -- Get maximum number of nonzero elements
in a sparse matrix</A>
</H3>
<P>
<PRE>
memory_size = a%sizeof()
maxnz = a%get_size()
</PRE>
<P>
@ -84,7 +82,8 @@ Scope: <B>local</B>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The memory occupation in bytes.
<DD>The maximum number of nonzero elements that can
be stored in sparse matrix <code>a</code> using its current memory allocation.
</DD>
</DL>

@ -7,8 +7,10 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_fmt -- Short description of the dynamic type</TITLE>
<META NAME="description" CONTENT="get_fmt -- Short description of the dynamic type">
<TITLE>sizeof -- Get memory occupation in bytes
of a sparse matrix</TITLE>
<META NAME="description" CONTENT="sizeof -- Get memory occupation in bytes
of a sparse matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,44 +22,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node27.html">
<LINK REL="previous" HREF="node25.html">
<LINK REL="up" HREF="node19.html">
<LINK REL="up" HREF="node20.html">
<LINK REL="next" HREF="node27.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html524"
<A NAME="tex2html525"
HREF="node27.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html520"
HREF="node19.html">
<A NAME="tex2html521"
HREF="node20.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html514"
<A NAME="tex2html515"
HREF="node25.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html522"
<A NAME="tex2html523"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html525"
HREF="node27.html">is_bld, is_upd, is_asb </A>
<B> Up:</B> <A NAME="tex2html521"
HREF="node19.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html515"
HREF="node25.html">sizeof Get</A>
&nbsp; <B> <A NAME="tex2html523"
<B> Next:</B> <A NAME="tex2html526"
HREF="node27.html">get_fmt Short</A>
<B> Up:</B> <A NAME="tex2html522"
HREF="node20.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html516"
HREF="node25.html">get_size Get</A>
&nbsp; <B> <A NAME="tex2html524"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00043700000000000000">
get_fmt -- Short description of the dynamic type</A>
<H3><A NAME="SECTION00043600000000000000">
sizeof -- Get memory occupation in bytes
of a sparse matrix</A>
</H3>
<P>
<PRE>
write(*,*) a%get_fmt()
memory_size = a%sizeof()
</PRE>
<P>
@ -81,9 +84,7 @@ Scope: <B>local</B>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>A short string describing the dynamic type of
the matrix. Predefined values include <code>NULL</code>, <code>COO</code>,
<code>CSR</code> and <code>CSC</code>.
<DD>The memory occupation in bytes.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>is_bld, is_upd, is_asb -- Status check</TITLE>
<META NAME="description" CONTENT="is_bld, is_upd, is_asb -- Status check">
<TITLE>get_fmt -- Short description of the dynamic type</TITLE>
<META NAME="description" CONTENT="get_fmt -- Short description of the dynamic type">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,46 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node28.html">
<LINK REL="previous" HREF="node26.html">
<LINK REL="up" HREF="node19.html">
<LINK REL="up" HREF="node20.html">
<LINK REL="next" HREF="node28.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html536"
<A NAME="tex2html537"
HREF="node28.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html532"
HREF="node19.html">
<A NAME="tex2html533"
HREF="node20.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html526"
<A NAME="tex2html527"
HREF="node26.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html534"
<A NAME="tex2html535"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html537"
HREF="node28.html">Named Constants</A>
<B> Up:</B> <A NAME="tex2html533"
HREF="node19.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html527"
HREF="node26.html">get_fmt Short</A>
&nbsp; <B> <A NAME="tex2html535"
<B> Next:</B> <A NAME="tex2html538"
HREF="node28.html">is_bld, is_upd, is_asb </A>
<B> Up:</B> <A NAME="tex2html534"
HREF="node20.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html528"
HREF="node26.html">sizeof Get</A>
&nbsp; <B> <A NAME="tex2html536"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00043800000000000000">
is_bld, is_upd, is_asb -- Status check</A>
<H3><A NAME="SECTION00043700000000000000">
get_fmt -- Short description of the dynamic type</A>
</H3>
<P>
<PRE>
if (a%is_bld()) then
if (a%is_upd()) then
if (a%is_asb()) then
write(*,*) a%get_fmt()
</PRE>
<P>
@ -83,8 +81,9 @@ Scope: <B>local</B>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>A <code>logical</code> value indicating whether the
matrix is in the Build, Update or Assembled state, respectively.
<DD>A short string describing the dynamic type of
the matrix. Predefined values include <code>NULL</code>, <code>COO</code>,
<code>CSR</code> and <code>CSC</code>.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Named Constants</TITLE>
<META NAME="description" CONTENT="Named Constants">
<TITLE>is_bld, is_upd, is_asb -- Status check</TITLE>
<META NAME="description" CONTENT="is_bld, is_upd, is_asb -- Status check">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,63 +18,73 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node29.html">
<LINK REL="previous" HREF="node27.html">
<LINK REL="up" HREF="node19.html">
<LINK REL="up" HREF="node20.html">
<LINK REL="next" HREF="node29.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html546"
<A NAME="tex2html549"
HREF="node29.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html542"
HREF="node19.html">
<A NAME="tex2html545"
HREF="node20.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html538"
<A NAME="tex2html539"
HREF="node27.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html544"
<A NAME="tex2html547"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html547"
HREF="node29.html">Dense Vector Data Structure</A>
<B> Up:</B> <A NAME="tex2html543"
HREF="node19.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html539"
HREF="node27.html">is_bld, is_upd, is_asb </A>
&nbsp; <B> <A NAME="tex2html545"
<B> Next:</B> <A NAME="tex2html550"
HREF="node29.html">Named Constants</A>
<B> Up:</B> <A NAME="tex2html546"
HREF="node20.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html540"
HREF="node27.html">get_fmt Short</A>
&nbsp; <B> <A NAME="tex2html548"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00043900000000000000"></A>
<A NAME="sec:sp_constants"></A>
<BR>
Named Constants
<H3><A NAME="SECTION00043800000000000000">
is_bld, is_upd, is_asb -- Status check</A>
</H3>
<P>
<PRE>
if (a%is_bld()) then
if (a%is_upd()) then
if (a%is_asb()) then
</PRE>
<P>
<DL>
<DT><STRONG>psb_dupl_ovwrt_</STRONG></DT>
<DD>Duplicate coefficients should be overwritten
(i.e. ignore duplications)
</DD>
<DT><STRONG>psb_dupl_add_</STRONG></DT>
<DD>Duplicate coefficients should be added;
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG>psb_dupl_err_</STRONG></DT>
<DD>Duplicate coefficients should trigger an error conditino
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>psb_upd_dflt_</STRONG></DT>
<DD>Default update strategy for matrix coefficients;
</DD>
<DT><STRONG>psb_upd_srch_</STRONG></DT>
<DD>Update strategy based on search into the data structure;
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix
<BR>
Scope: <B>local</B>
<BR></DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>psb_upd_perm_</STRONG></DT>
<DD>Update strategy based on additional
permutation data (see tools routine description).
<DT><STRONG>Function value</STRONG></DT>
<DD>A <code>logical</code> value indicating whether the
matrix is in the Build, Update or Assembled state, respectively.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Dense Vector Data Structure</TITLE>
<META NAME="description" CONTENT="Dense Vector Data Structure">
<TITLE>Named Constants</TITLE>
<META NAME="description" CONTENT="Named Constants">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,147 +18,68 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node35.html">
<LINK REL="previous" HREF="node19.html">
<LINK REL="up" HREF="node8.html">
<LINK REL="previous" HREF="node28.html">
<LINK REL="up" HREF="node20.html">
<LINK REL="next" HREF="node30.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html558"
<A NAME="tex2html559"
HREF="node30.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html554"
HREF="node8.html">
<A NAME="tex2html555"
HREF="node20.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html548"
<A NAME="tex2html551"
HREF="node28.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html556"
<A NAME="tex2html557"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html559"
HREF="node30.html">Methods</A>
<B> Up:</B> <A NAME="tex2html555"
HREF="node8.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html549"
HREF="node28.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html557"
<B> Next:</B> <A NAME="tex2html560"
HREF="node30.html">Dense Vector Data Structure</A>
<B> Up:</B> <A NAME="tex2html556"
HREF="node20.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html552"
HREF="node28.html">is_bld, is_upd, is_asb </A>
&nbsp; <B> <A NAME="tex2html558"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00044000000000000000"></A>
<A NAME="sec:vecttype"></A>
<H3><A NAME="SECTION00043900000000000000"></A>
<A NAME="sec:sp_constants"></A>
<BR>
Dense Vector Data Structure
</H2>
The vdata<TT>psb_T_vect_type</TT> data structure
encapsulates the dense vectors in a way similar to sparse matrices,
i.e. including a base type vbasedata<TT> psb_T_base_vect_type</TT>.
The user will not, in general, access the vector components directly,
but rather via the routines of sec.&nbsp;<A HREF="node55.html#sec:toolsrout">6</A>. Among other
simple things, we define here an extraction method that can be used to
get a full copy of the part of the vector stored on the local
process.
<P>
The type declaration is shown in
figure&nbsp;<A HREF="#fig:vectype">5</A> where <code>T</code> is a placeholder for the
data type and precision variants
Named Constants
</H3>
<DL>
<DT><STRONG>I</STRONG></DT>
<DD>Integer;
<DT><STRONG>psb_dupl_ovwrt_</STRONG></DT>
<DD>Duplicate coefficients should be overwritten
(i.e. ignore duplications)
</DD>
<DT><STRONG>psb_dupl_add_</STRONG></DT>
<DD>Duplicate coefficients should be added;
</DD>
<DT><STRONG>S</STRONG></DT>
<DD>Single precision real;
<DT><STRONG>psb_dupl_err_</STRONG></DT>
<DD>Duplicate coefficients should trigger an error conditino
</DD>
<DT><STRONG>D</STRONG></DT>
<DD>Double precision real;
<DT><STRONG>psb_upd_dflt_</STRONG></DT>
<DD>Default update strategy for matrix coefficients;
</DD>
<DT><STRONG>C</STRONG></DT>
<DD>Single precision complex;
<DT><STRONG>psb_upd_srch_</STRONG></DT>
<DD>Update strategy based on search into the data structure;
</DD>
<DT><STRONG>Z</STRONG></DT>
<DD>Double precision complex.
<DT><STRONG>psb_upd_perm_</STRONG></DT>
<DD>Update strategy based on additional
permutation data (see tools routine description).
</DD>
</DL>
The actual data is contained in the polymorphic component <code>v%v</code>;
the separation between the application and the actual data is
essential for cases where it is necessary to link to data storage made
available elsewhere outside the direct control of the
compiler/application, e.g. data stored in a graphics accelerator's
private memory.
<DIV ALIGN="CENTER"><A NAME="fig:vectype"></A><A NAME="712"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
The PSBLAS defined data type that
contains a dense vector.</CAPTION>
<TR><TD><DIV ALIGN="CENTER">
</DIV><TABLE WIDTH="85%">
<TR><TD>
<PRE>
type psb_T_base_vect_type
TYPE(KIND_), allocatable :: v(:)
end type psb_T_base_vect_type
type psb_T_vect_type
class(psb_T_base_vect_type), allocatable :: v
end type psb_T_vect_type
</PRE></TD></TR>
</TABLE>
<DIV ALIGN="CENTER">
</DIV></TD></TR>
</TABLE>
</DIV>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html560"
HREF="node30.html">Methods</A>
<LI><A NAME="tex2html561"
HREF="node31.html">get_nrows -- Get number of rows in a dense vector</A>
<LI><A NAME="tex2html562"
HREF="node32.html">get_ncols -- Get number of columns in a sparse matrix</A>
<LI><A NAME="tex2html563"
HREF="node33.html">sizeof -- Get memory occupation in bytes
of a dense vector matrix</A>
<LI><A NAME="tex2html564"
HREF="node34.html">get_vect -- Get a copy of the vector contents</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html558"
HREF="node30.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html554"
HREF="node8.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html548"
HREF="node28.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html556"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html559"
HREF="node30.html">Methods</A>
<B> Up:</B> <A NAME="tex2html555"
HREF="node8.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html549"
HREF="node28.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html557"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node8.html">
<LINK REL="next" HREF="node9.html">
<LINK REL="previous" HREF="node2.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node4.html">
@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html206"
<A NAME="tex2html207"
HREF="node4.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html202"
<A NAME="tex2html203"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html196"
<A NAME="tex2html197"
HREF="node2.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html204"
<A NAME="tex2html205"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html207"
<B> Next:</B> <A NAME="tex2html208"
HREF="node4.html">Basic Nomenclature</A>
<B> Up:</B> <A NAME="tex2html203"
<B> Up:</B> <A NAME="tex2html204"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html197"
<B> Previous:</B> <A NAME="tex2html198"
HREF="node2.html">Introduction</A>
&nbsp; <B> <A NAME="tex2html205"
&nbsp; <B> <A NAME="tex2html206"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
@ -78,14 +78,14 @@ calls to the serial sparse BLAS subroutines.
In a similar way, the inter-process message exchanges are encapsulated
in an applicaiton layer that has been strongly inspired by the Basic
Linear Algebra Communication Subroutines (BLACS) library&nbsp;[<A
HREF="node118.html#BLACS">7</A>].
HREF="node119.html#BLACS">7</A>].
Usually there is no need to deal directly with MPI; however, in some
cases, MPI routines are used directly to improve efficiency. For
further details on our communication layer see Sec.&nbsp;<A HREF="node83.html#sec:parenv">7</A>.
further details on our communication layer see Sec.&nbsp;<A HREF="node84.html#sec:parenv">7</A>.
<P>
<DIV ALIGN="CENTER"><A NAME="fig:psblas"></A><A NAME="246"></A>
<DIV ALIGN="CENTER"><A NAME="fig:psblas"></A><A NAME="256"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
PSBLAS library components hierarchy.</CAPTION>
@ -134,7 +134,7 @@ equation indices to processes.
In particular it is consistent with the
usage of graph partitioning tools commonly available in the
literature, e.g. METIS&nbsp;[<A
HREF="node118.html#METIS">14</A>].
HREF="node119.html#METIS">14</A>].
Dense vectors conform to sparse
matrices, that is, the entries of a vector follow the same distribution
of the matrix rows.
@ -154,38 +154,43 @@ bottleneck would make this option unattractive in most cases.
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html208"
HREF="node4.html">Basic Nomenclature</A>
<LI><A NAME="tex2html209"
HREF="node5.html">Library contents</A>
HREF="node4.html">Basic Nomenclature</A>
<LI><A NAME="tex2html210"
HREF="node6.html">Application structure</A>
HREF="node5.html">Library contents</A>
<LI><A NAME="tex2html211"
HREF="node7.html">Programming model</A>
HREF="node6.html">Application structure</A>
<UL>
<LI><A NAME="tex2html212"
HREF="node7.html">User-defined index mappings</A>
</UL>
<BR>
<LI><A NAME="tex2html213"
HREF="node8.html">Programming model</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html206"
<A NAME="tex2html207"
HREF="node4.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html202"
<A NAME="tex2html203"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html196"
<A NAME="tex2html197"
HREF="node2.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html204"
<A NAME="tex2html205"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html207"
<B> Next:</B> <A NAME="tex2html208"
HREF="node4.html">Basic Nomenclature</A>
<B> Up:</B> <A NAME="tex2html203"
<B> Up:</B> <A NAME="tex2html204"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html197"
<B> Previous:</B> <A NAME="tex2html198"
HREF="node2.html">Introduction</A>
&nbsp; <B> <A NAME="tex2html205"
&nbsp; <B> <A NAME="tex2html206"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Methods</TITLE>
<META NAME="description" CONTENT="Methods">
<TITLE>Dense Vector Data Structure</TITLE>
<META NAME="description" CONTENT="Dense Vector Data Structure">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,43 +18,147 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node31.html">
<LINK REL="previous" HREF="node29.html">
<LINK REL="up" HREF="node29.html">
<LINK REL="next" HREF="node36.html">
<LINK REL="previous" HREF="node20.html">
<LINK REL="up" HREF="node9.html">
<LINK REL="next" HREF="node31.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html575"
<A NAME="tex2html571"
HREF="node31.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html571"
HREF="node29.html">
<A NAME="tex2html567"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html565"
<A NAME="tex2html561"
HREF="node29.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html573"
<A NAME="tex2html569"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html576"
HREF="node31.html">get_nrows Get</A>
<B> Up:</B> <A NAME="tex2html572"
HREF="node29.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html566"
HREF="node29.html">Dense Vector Data Structure</A>
&nbsp; <B> <A NAME="tex2html574"
<B> Next:</B> <A NAME="tex2html572"
HREF="node31.html">Methods</A>
<B> Up:</B> <A NAME="tex2html568"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html562"
HREF="node29.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html570"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00044100000000000000">
Methods</A>
</H3>
<H2><A NAME="SECTION00044000000000000000"></A>
<A NAME="sec:vecttype"></A>
<BR>
Dense Vector Data Structure
</H2>
The vdata<TT>psb_T_vect_type</TT> data structure
encapsulates the dense vectors in a way similar to sparse matrices,
i.e. including a base type vbasedata<TT> psb_T_base_vect_type</TT>.
The user will not, in general, access the vector components directly,
but rather via the routines of sec.&nbsp;<A HREF="node56.html#sec:toolsrout">6</A>. Among other
simple things, we define here an extraction method that can be used to
get a full copy of the part of the vector stored on the local
process.
<P>
The type declaration is shown in
figure&nbsp;<A HREF="#fig:vectype">5</A> where <code>T</code> is a placeholder for the
data type and precision variants
<DL>
<DT><STRONG>I</STRONG></DT>
<DD>Integer;
</DD>
<DT><STRONG>S</STRONG></DT>
<DD>Single precision real;
</DD>
<DT><STRONG>D</STRONG></DT>
<DD>Double precision real;
</DD>
<DT><STRONG>C</STRONG></DT>
<DD>Single precision complex;
</DD>
<DT><STRONG>Z</STRONG></DT>
<DD>Double precision complex.
</DD>
</DL>
The actual data is contained in the polymorphic component <code>v%v</code>;
the separation between the application and the actual data is
essential for cases where it is necessary to link to data storage made
available elsewhere outside the direct control of the
compiler/application, e.g. data stored in a graphics accelerator's
private memory.
<DIV ALIGN="CENTER"><A NAME="fig:vectype"></A><A NAME="733"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
The PSBLAS defined data type that
contains a dense vector.</CAPTION>
<TR><TD><DIV ALIGN="CENTER">
</DIV><TABLE WIDTH="85%">
<TR><TD>
<PRE>
type psb_T_base_vect_type
TYPE(KIND_), allocatable :: v(:)
end type psb_T_base_vect_type
type psb_T_vect_type
class(psb_T_base_vect_type), allocatable :: v
end type psb_T_vect_type
</PRE></TD></TR>
</TABLE>
<DIV ALIGN="CENTER">
</DIV></TD></TR>
</TABLE>
</DIV>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html573"
HREF="node31.html">Methods</A>
<LI><A NAME="tex2html574"
HREF="node32.html">get_nrows -- Get number of rows in a dense vector</A>
<LI><A NAME="tex2html575"
HREF="node33.html">get_ncols -- Get number of columns in a sparse matrix</A>
<LI><A NAME="tex2html576"
HREF="node34.html">sizeof -- Get memory occupation in bytes
of a dense vector matrix</A>
<LI><A NAME="tex2html577"
HREF="node35.html">get_vect -- Get a copy of the vector contents</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html571"
HREF="node31.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html567"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html561"
HREF="node29.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html569"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html572"
HREF="node31.html">Methods</A>
<B> Up:</B> <A NAME="tex2html568"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html562"
HREF="node29.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html570"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_nrows -- Get number of rows in a dense vector</TITLE>
<META NAME="description" CONTENT="get_nrows -- Get number of rows in a dense vector">
<TITLE>Methods</TITLE>
<META NAME="description" CONTENT="Methods">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,72 +20,40 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node32.html">
<LINK REL="previous" HREF="node30.html">
<LINK REL="up" HREF="node29.html">
<LINK REL="up" HREF="node30.html">
<LINK REL="next" HREF="node32.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html587"
<A NAME="tex2html588"
HREF="node32.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html583"
HREF="node29.html">
<A NAME="tex2html584"
HREF="node30.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html577"
<A NAME="tex2html578"
HREF="node30.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html585"
<A NAME="tex2html586"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html588"
HREF="node32.html">get_ncols Get</A>
<B> Up:</B> <A NAME="tex2html584"
HREF="node29.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html578"
HREF="node30.html">Methods</A>
&nbsp; <B> <A NAME="tex2html586"
<B> Next:</B> <A NAME="tex2html589"
HREF="node32.html">get_nrows Get</A>
<B> Up:</B> <A NAME="tex2html585"
HREF="node30.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html579"
HREF="node30.html">Dense Vector Data Structure</A>
&nbsp; <B> <A NAME="tex2html587"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00044200000000000000">
get_nrows -- Get number of rows in a dense vector</A>
<H3><A NAME="SECTION00044100000000000000">
Methods</A>
</H3>
<P>
<PRE>
nr = v%get_nrows()
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>v</STRONG></DT>
<DD>the dense vector
<BR>
Scope: <B>local</B>
<BR></DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The number of rows of sparse matrix <code>a</code>.
</DD>
</DL>
<P>
<BR><HR>
</BODY>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_ncols -- Get number of columns in a sparse matrix</TITLE>
<META NAME="description" CONTENT="get_ncols -- Get number of columns in a sparse matrix">
<TITLE>get_nrows -- Get number of rows in a dense vector</TITLE>
<META NAME="description" CONTENT="get_nrows -- Get number of rows in a dense vector">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,41 +20,71 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node33.html">
<LINK REL="previous" HREF="node31.html">
<LINK REL="up" HREF="node29.html">
<LINK REL="up" HREF="node30.html">
<LINK REL="next" HREF="node33.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html599"
<A NAME="tex2html600"
HREF="node33.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html595"
HREF="node29.html">
<A NAME="tex2html596"
HREF="node30.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html589"
<A NAME="tex2html590"
HREF="node31.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html597"
<A NAME="tex2html598"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html600"
HREF="node33.html">sizeof Get</A>
<B> Up:</B> <A NAME="tex2html596"
HREF="node29.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html590"
HREF="node31.html">get_nrows Get</A>
&nbsp; <B> <A NAME="tex2html598"
<B> Next:</B> <A NAME="tex2html601"
HREF="node33.html">get_ncols Get</A>
<B> Up:</B> <A NAME="tex2html597"
HREF="node30.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html591"
HREF="node31.html">Methods</A>
&nbsp; <B> <A NAME="tex2html599"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00044300000000000000">
get_ncols -- Get number of columns in a sparse matrix</A>
<H3><A NAME="SECTION00044200000000000000">
get_nrows -- Get number of rows in a dense vector</A>
</H3>
<P>
<PRE>
nr = v%get_nrows()
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>v</STRONG></DT>
<DD>the dense vector
<BR>
Scope: <B>local</B>
<BR></DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The number of rows of sparse matrix <code>a</code>.
</DD>
</DL>
<P>
<BR><HR>

@ -7,10 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>sizeof -- Get memory occupation in bytes
of a dense vector matrix</TITLE>
<META NAME="description" CONTENT="sizeof -- Get memory occupation in bytes
of a dense vector matrix">
<TITLE>get_ncols -- Get number of columns in a sparse matrix</TITLE>
<META NAME="description" CONTENT="get_ncols -- Get number of columns in a sparse matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -22,72 +20,41 @@ of a dense vector matrix">
<LINK REL="next" HREF="node34.html">
<LINK REL="previous" HREF="node32.html">
<LINK REL="up" HREF="node29.html">
<LINK REL="up" HREF="node30.html">
<LINK REL="next" HREF="node34.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html611"
<A NAME="tex2html612"
HREF="node34.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html607"
HREF="node29.html">
<A NAME="tex2html608"
HREF="node30.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html601"
<A NAME="tex2html602"
HREF="node32.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html609"
<A NAME="tex2html610"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html612"
HREF="node34.html">get_vect Get</A>
<B> Up:</B> <A NAME="tex2html608"
HREF="node29.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html602"
HREF="node32.html">get_ncols Get</A>
&nbsp; <B> <A NAME="tex2html610"
<B> Next:</B> <A NAME="tex2html613"
HREF="node34.html">sizeof Get</A>
<B> Up:</B> <A NAME="tex2html609"
HREF="node30.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html603"
HREF="node32.html">get_nrows Get</A>
&nbsp; <B> <A NAME="tex2html611"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00044400000000000000">
sizeof -- Get memory occupation in bytes
of a dense vector matrix</A>
<H3><A NAME="SECTION00044300000000000000">
get_ncols -- Get number of columns in a sparse matrix</A>
</H3>
<P>
<PRE>
memory_size = v%sizeof()
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>v</STRONG></DT>
<DD>the dense vector
<BR>
Scope: <B>local</B>
<BR></DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The memory occupation in bytes.
</DD>
</DL>
<P>
<BR><HR>

@ -7,8 +7,10 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_vect -- Get a copy of the vector contents</TITLE>
<META NAME="description" CONTENT="get_vect -- Get a copy of the vector contents">
<TITLE>sizeof -- Get memory occupation in bytes
of a dense vector matrix</TITLE>
<META NAME="description" CONTENT="sizeof -- Get memory occupation in bytes
of a dense vector matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,45 +20,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node35.html">
<LINK REL="previous" HREF="node33.html">
<LINK REL="up" HREF="node29.html">
<LINK REL="up" HREF="node30.html">
<LINK REL="next" HREF="node35.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html621"
<A NAME="tex2html624"
HREF="node35.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html617"
HREF="node29.html">
<A NAME="tex2html620"
HREF="node30.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html613"
<A NAME="tex2html614"
HREF="node33.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html619"
<A NAME="tex2html622"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html622"
HREF="node35.html">Preconditioner data structure</A>
<B> Up:</B> <A NAME="tex2html618"
HREF="node29.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html614"
HREF="node33.html">sizeof Get</A>
&nbsp; <B> <A NAME="tex2html620"
<B> Next:</B> <A NAME="tex2html625"
HREF="node35.html">get_vect Get</A>
<B> Up:</B> <A NAME="tex2html621"
HREF="node30.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html615"
HREF="node33.html">get_ncols Get</A>
&nbsp; <B> <A NAME="tex2html623"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00044500000000000000">
get_vect -- Get a copy of the vector contents</A>
<H3><A NAME="SECTION00044400000000000000">
sizeof -- Get memory occupation in bytes
of a dense vector matrix</A>
</H3>
<P>
<PRE>
extv = v%get_vect()
memory_size = v%sizeof()
</PRE>
<P>
@ -80,8 +84,7 @@ Scope: <B>local</B>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>An allocatable array holding a copy of the dense
vector contents.
<DD>The memory occupation in bytes.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Preconditioner data structure</TITLE>
<META NAME="description" CONTENT="Preconditioner data structure">
<TITLE>get_vect -- Get a copy of the vector contents</TITLE>
<META NAME="description" CONTENT="get_vect -- Get a copy of the vector contents">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,70 +18,72 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="previous" HREF="node29.html">
<LINK REL="up" HREF="node8.html">
<LINK REL="previous" HREF="node34.html">
<LINK REL="up" HREF="node30.html">
<LINK REL="next" HREF="node36.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html631"
<A NAME="tex2html634"
HREF="node36.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html627"
HREF="node8.html">
<A NAME="tex2html630"
HREF="node30.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html623"
<A NAME="tex2html626"
HREF="node34.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html629"
<A NAME="tex2html632"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html632"
HREF="node36.html">Computational routines</A>
<B> Up:</B> <A NAME="tex2html628"
HREF="node8.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html624"
HREF="node34.html">get_vect Get</A>
&nbsp; <B> <A NAME="tex2html630"
<B> Next:</B> <A NAME="tex2html635"
HREF="node36.html">Preconditioner data structure</A>
<B> Up:</B> <A NAME="tex2html631"
HREF="node30.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html627"
HREF="node34.html">sizeof Get</A>
&nbsp; <B> <A NAME="tex2html633"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00045000000000000000"></A>
<A NAME="sec:prec"></A>
<BR>
Preconditioner data structure
</H2>
Our base library offers support for simple well known preconditioners
like Diagonal Scaling or Block Jacobi with incomplete
factorization ILU(0).
<H3><A NAME="SECTION00044500000000000000">
get_vect -- Get a copy of the vector contents</A>
</H3>
<P>
A preconditioner is held in the precdata<TT> psb_prec_type</TT> data structure reported in
figure&nbsp;<A HREF="#fig:prectype">6</A>. The <code>psb_prec_type</code>
data type may contain a simple preconditioning matrix with the
associated communication descriptor.The internal preconditioner is allocated appropriately with the
dynamic type corresponding to the desired preconditioner.
<DIV ALIGN="CENTER"><A NAME="fig:prectype"></A><A NAME="714"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 6:</STRONG>
The PSBLAS defined data type that contains a preconditioner.</CAPTION>
<TR><TD><FONT SIZE="-1"> </FONT>
<DIV ALIGN="CENTER"></DIV><TABLE WIDTH="90%">
<TR><TD>
<PRE>
type psb_Tprec_type
class(psb_T_base_prec_type), allocatable :: prec
end type psb_Tprec_type
</PRE></TD></TR>
</TABLE>
<DIV ALIGN="CENTER"></DIV></TD></TR>
</TABLE>
</DIV>
extv = v%get_vect()
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>v</STRONG></DT>
<DD>the dense vector
<BR>
Scope: <B>local</B>
<BR></DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>An allocatable array holding a copy of the dense
vector contents.
</DD>
</DL>
<P>
<BR><HR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Computational routines</TITLE>
<META NAME="description" CONTENT="Computational routines">
<TITLE>Preconditioner data structure</TITLE>
<META NAME="description" CONTENT="Preconditioner data structure">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,77 +18,72 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node50.html">
<LINK REL="previous" HREF="node8.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="previous" HREF="node30.html">
<LINK REL="up" HREF="node9.html">
<LINK REL="next" HREF="node37.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html643"
<A NAME="tex2html644"
HREF="node37.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html639"
HREF="userhtml.html">
<A NAME="tex2html640"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html633"
<A NAME="tex2html636"
HREF="node35.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html641"
<A NAME="tex2html642"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html644"
HREF="node37.html">psb_geaxpby General</A>
<B> Up:</B> <A NAME="tex2html640"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html634"
HREF="node35.html">Preconditioner data structure</A>
&nbsp; <B> <A NAME="tex2html642"
<B> Next:</B> <A NAME="tex2html645"
HREF="node37.html">Computational routines</A>
<B> Up:</B> <A NAME="tex2html641"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html637"
HREF="node35.html">get_vect Get</A>
&nbsp; <B> <A NAME="tex2html643"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00050000000000000000">
Computational routines</A>
</H1>
<H2><A NAME="SECTION00045000000000000000"></A>
<A NAME="sec:prec"></A>
<BR>
Preconditioner data structure
</H2>
Our base library offers support for simple well known preconditioners
like Diagonal Scaling or Block Jacobi with incomplete
factorization ILU(0).
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
A preconditioner is held in the precdata<TT> psb_prec_type</TT> data structure reported in
figure&nbsp;<A HREF="#fig:prectype">6</A>. The <code>psb_prec_type</code>
data type may contain a simple preconditioning matrix with the
associated communication descriptor.The internal preconditioner is allocated appropriately with the
dynamic type corresponding to the desired preconditioner.
<UL>
<LI><A NAME="tex2html645"
HREF="node37.html">psb_geaxpby -- General Dense Matrix Sum</A>
<LI><A NAME="tex2html646"
HREF="node38.html">psb_gedot -- Dot Product</A>
<LI><A NAME="tex2html647"
HREF="node39.html">psb_gedots -- Generalized Dot Product</A>
<LI><A NAME="tex2html648"
HREF="node40.html">psb_geamax -- Infinity-Norm of Vector</A>
<LI><A NAME="tex2html649"
HREF="node41.html">psb_geamaxs -- Generalized Infinity Norm</A>
<LI><A NAME="tex2html650"
HREF="node42.html">psb_geasum -- 1-Norm of Vector</A>
<LI><A NAME="tex2html651"
HREF="node43.html">psb_geasums -- Generalized 1-Norm of Vector</A>
<LI><A NAME="tex2html652"
HREF="node44.html">psb_genrm2 -- 2-Norm of Vector</A>
<LI><A NAME="tex2html653"
HREF="node45.html">psb_genrm2s -- Generalized 2-Norm of Vector</A>
<LI><A NAME="tex2html654"
HREF="node46.html">psb_spnrm1 -- 1-Norm of Sparse Matrix</A>
<LI><A NAME="tex2html655"
HREF="node47.html">psb_spnrmi -- Infinity Norm of Sparse Matrix</A>
<LI><A NAME="tex2html656"
HREF="node48.html">psb_spmm -- Sparse Matrix by Dense Matrix Product</A>
<LI><A NAME="tex2html657"
HREF="node49.html">psb_spsm -- Triangular System Solve</A>
</UL>
<!--End of Table of Child-Links-->
<DIV ALIGN="CENTER"><A NAME="fig:prectype"></A><A NAME="735"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 6:</STRONG>
The PSBLAS defined data type that contains a preconditioner.</CAPTION>
<TR><TD><FONT SIZE="-1"> </FONT>
<DIV ALIGN="CENTER"></DIV><TABLE WIDTH="90%">
<TR><TD>
<PRE>
type psb_Tprec_type
class(psb_T_base_prec_type), allocatable :: prec
end type psb_Tprec_type
</PRE></TD></TR>
</TABLE>
<DIV ALIGN="CENTER"></DIV></TD></TR>
</TABLE>
</DIV>
<P>
<BR><HR>
</BODY>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_geaxpby -- General Dense Matrix Sum</TITLE>
<META NAME="description" CONTENT="psb_geaxpby -- General Dense Matrix Sum">
<TITLE>Computational routines</TITLE>
<META NAME="description" CONTENT="Computational routines">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,264 +18,78 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node38.html">
<LINK REL="previous" HREF="node36.html">
<LINK REL="up" HREF="node36.html">
<LINK REL="next" HREF="node51.html">
<LINK REL="previous" HREF="node9.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node38.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html668"
<A NAME="tex2html656"
HREF="node38.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html664"
HREF="node36.html">
<A NAME="tex2html652"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html658"
<A NAME="tex2html646"
HREF="node36.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html666"
<A NAME="tex2html654"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html669"
HREF="node38.html">psb_gedot Dot</A>
<B> Up:</B> <A NAME="tex2html665"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html659"
HREF="node36.html">Computational routines</A>
&nbsp; <B> <A NAME="tex2html667"
<B> Next:</B> <A NAME="tex2html657"
HREF="node38.html">psb_geaxpby General</A>
<B> Up:</B> <A NAME="tex2html653"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html647"
HREF="node36.html">Preconditioner data structure</A>
&nbsp; <B> <A NAME="tex2html655"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00051000000000000000">
psb_geaxpby -- General Dense Matrix Sum</A>
</H2>
<P>
This subroutine is an interface to the computational kernel for
dense matrix sum:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
y \leftarrow \alpha\> x+ \beta y
\end{displaymath}
-->
<IMG
WIDTH="93" HEIGHT="27" BORDER="0"
SRC="img19.png"
ALT="\begin{displaymath}y \leftarrow \alpha\&gt; x+ \beta y \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
<P>
<PRE>
call psb_geaxpby(alpha, x, beta, y, desc_a, info)
</PRE>
<H1><A NAME="SECTION00050000000000000000">
Computational routines</A>
</H1>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1535"></A>
<TABLE>
<CAPTION><STRONG>Table 1:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">, <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">, <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">, <IMG
WIDTH="14" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img23.png"
ALT="$\beta$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_geaxpby</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_geaxpby</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_geaxpby</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_geaxpby</TD>
</TR>
</TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>alpha</STRONG></DT>
<DD>the scalar <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a number of the data type indicated in Table&nbsp;<A HREF="#tab:f90axpby">1</A>.
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type
specified in Table&nbsp;<A HREF="#tab:f90axpby">1</A>. The rank of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> must be the same of <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
</DD>
<DT><STRONG>beta</STRONG></DT>
<DD>the scalar <IMG
WIDTH="14" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img23.png"
ALT="$\beta$">.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a number of the data type indicated in Table&nbsp;<A HREF="#tab:f90axpby">1</A>.
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>the local portion of the global dense matrix
<IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT> containing numbers of the type
indicated in Table&nbsp;<A HREF="#tab:f90axpby">1</A>. The rank of <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"> must be the same of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an object of type descdata<TT>psb_desc_type</TT>.
<P>
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>the local portion of result submatrix <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT> containing numbers of the type
indicated in Table&nbsp;<A HREF="#tab:f90axpby">1</A>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html668"
HREF="node38.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html664"
HREF="node36.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html658"
HREF="node36.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html666"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html669"
HREF="node38.html">psb_gedot Dot</A>
<B> Up:</B> <A NAME="tex2html665"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html659"
HREF="node36.html">Computational routines</A>
&nbsp; <B> <A NAME="tex2html667"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
<UL>
<LI><A NAME="tex2html658"
HREF="node38.html">psb_geaxpby -- General Dense Matrix Sum</A>
<LI><A NAME="tex2html659"
HREF="node39.html">psb_gedot -- Dot Product</A>
<LI><A NAME="tex2html660"
HREF="node40.html">psb_gedots -- Generalized Dot Product</A>
<LI><A NAME="tex2html661"
HREF="node41.html">psb_geamax -- Infinity-Norm of Vector</A>
<LI><A NAME="tex2html662"
HREF="node42.html">psb_geamaxs -- Generalized Infinity Norm</A>
<LI><A NAME="tex2html663"
HREF="node43.html">psb_geasum -- 1-Norm of Vector</A>
<LI><A NAME="tex2html664"
HREF="node44.html">psb_geasums -- Generalized 1-Norm of Vector</A>
<LI><A NAME="tex2html665"
HREF="node45.html">psb_genrm2 -- 2-Norm of Vector</A>
<LI><A NAME="tex2html666"
HREF="node46.html">psb_genrm2s -- Generalized 2-Norm of Vector</A>
<LI><A NAME="tex2html667"
HREF="node47.html">psb_spnrm1 -- 1-Norm of Sparse Matrix</A>
<LI><A NAME="tex2html668"
HREF="node48.html">psb_spnrmi -- Infinity Norm of Sparse Matrix</A>
<LI><A NAME="tex2html669"
HREF="node49.html">psb_spmm -- Sparse Matrix by Dense Matrix Product</A>
<LI><A NAME="tex2html670"
HREF="node50.html">psb_spsm -- Triangular System Solve</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_gedot -- Dot Product</TITLE>
<META NAME="description" CONTENT="psb_gedot -- Dot Product">
<TITLE>psb_geaxpby -- General Dense Matrix Sum</TITLE>
<META NAME="description" CONTENT="psb_geaxpby -- General Dense Matrix Sum">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,132 +20,100 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node39.html">
<LINK REL="previous" HREF="node37.html">
<LINK REL="up" HREF="node36.html">
<LINK REL="up" HREF="node37.html">
<LINK REL="next" HREF="node39.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html680"
<A NAME="tex2html681"
HREF="node39.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html676"
HREF="node36.html">
<A NAME="tex2html677"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html670"
<A NAME="tex2html671"
HREF="node37.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html678"
<A NAME="tex2html679"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html681"
HREF="node39.html">psb_gedots Generalized</A>
<B> Up:</B> <A NAME="tex2html677"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html671"
HREF="node37.html">psb_geaxpby General</A>
&nbsp; <B> <A NAME="tex2html679"
<B> Next:</B> <A NAME="tex2html682"
HREF="node39.html">psb_gedot Dot</A>
<B> Up:</B> <A NAME="tex2html678"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html672"
HREF="node37.html">Computational routines</A>
&nbsp; <B> <A NAME="tex2html680"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00052000000000000000">
psb_gedot -- Dot Product</A>
<H2><A NAME="SECTION00051000000000000000">
psb_geaxpby -- General Dense Matrix Sum</A>
</H2>
<P>
This function computes dot product between two vectors <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> and
<IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
If <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> and <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"> are real vectors
it computes dot-product as:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
dot \leftarrow x^T y
\end{displaymath}
-->
<IMG
WIDTH="74" HEIGHT="27" BORDER="0"
SRC="img24.png"
ALT="\begin{displaymath}dot \leftarrow x^T y\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
Else if <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> and <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"> are complex vectors then it computes dot-product as:
This subroutine is an interface to the computational kernel for
dense matrix sum:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
dot \leftarrow x^H y
y \leftarrow \alpha\> x+ \beta y
\end{displaymath}
-->
<IMG
WIDTH="76" HEIGHT="27" BORDER="0"
SRC="img25.png"
ALT="\begin{displaymath}dot \leftarrow x^H y\end{displaymath}">
WIDTH="93" HEIGHT="27" BORDER="0"
SRC="img19.png"
ALT="\begin{displaymath}y \leftarrow \alpha\&gt; x+ \beta y \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
<P></P>
<P>
<PRE>
psb_gedot(x, y, desc_a, info)
call psb_geaxpby(alpha, x, beta, y, desc_a, info)
</PRE>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1536"></A>
<DIV ALIGN="CENTER"><A NAME="1556"></A>
<TABLE>
<CAPTION><STRONG>Table 2:</STRONG>
<CAPTION><STRONG>Table 1:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="25" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img26.png"
ALT="$dot$">, <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">, <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"></TD>
<TD ALIGN="LEFT"><B>Function</B></TD>
ALT="$y$">, <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">, <IMG
WIDTH="14" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img23.png"
ALT="$\beta$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_gedot</TD>
<TD ALIGN="LEFT">psb_geaxpby</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_gedot</TD>
<TD ALIGN="LEFT">psb_geaxpby</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_gedot</TD>
<TD ALIGN="LEFT">psb_geaxpby</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_gedot</TD>
<TD ALIGN="LEFT">psb_geaxpby</TD>
</TR>
</TABLE>
</DIV>
@ -162,6 +130,20 @@ Data types</CAPTION>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>alpha</STRONG></DT>
<DD>the scalar <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a number of the data type indicated in Table&nbsp;<A HREF="#tab:f90axpby">1</A>.
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
@ -175,9 +157,9 @@ Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90dot">2</A>. The rank of <IMG
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type
specified in Table&nbsp;<A HREF="#tab:f90axpby">1</A>. The rank of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> must be the same of <IMG
@ -185,8 +167,22 @@ Table&nbsp;<A HREF="#tab:f90dot">2</A>. The rank of <IMG
SRC="img21.png"
ALT="$y$">.
</DD>
<DT><STRONG>beta</STRONG></DT>
<DD>the scalar <IMG
WIDTH="14" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img23.png"
ALT="$\beta$">.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a number of the data type indicated in Table&nbsp;<A HREF="#tab:f90axpby">1</A>.
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>the local portion of global dense matrix
<DD>the local portion of the global dense matrix
<IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
@ -196,11 +192,10 @@ Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90dot">2</A>. The rank of <IMG
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT> containing numbers of the type
indicated in Table&nbsp;<A HREF="#tab:f90axpby">1</A>. The rank of <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"> must be the same of <IMG
@ -221,21 +216,27 @@ Specified as: an object of type descdata<TT>psb_desc_type</TT>.
<P>
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>is the dot product of subvectors <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> and <IMG
<DT><STRONG>y</STRONG></DT>
<DD>the local portion of result submatrix <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
Scope: <B>global</B>
Scope: <B>local</B>
<BR>
Specified as: a number of the data type indicated in Table&nbsp;<A HREF="#tab:f90dot">2</A>.
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT> containing numbers of the type
indicated in Table&nbsp;<A HREF="#tab:f90axpby">1</A>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -253,26 +254,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html680"
<A NAME="tex2html681"
HREF="node39.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html676"
HREF="node36.html">
<A NAME="tex2html677"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html670"
<A NAME="tex2html671"
HREF="node37.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html678"
<A NAME="tex2html679"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html681"
HREF="node39.html">psb_gedots Generalized</A>
<B> Up:</B> <A NAME="tex2html677"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html671"
HREF="node37.html">psb_geaxpby General</A>
&nbsp; <B> <A NAME="tex2html679"
<B> Next:</B> <A NAME="tex2html682"
HREF="node39.html">psb_gedot Dot</A>
<B> Up:</B> <A NAME="tex2html678"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html672"
HREF="node37.html">Computational routines</A>
&nbsp; <B> <A NAME="tex2html680"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_gedots -- Generalized Dot Product</TITLE>
<META NAME="description" CONTENT="psb_gedots -- Generalized Dot Product">
<TITLE>psb_gedot -- Dot Product</TITLE>
<META NAME="description" CONTENT="psb_gedot -- Dot Product">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,117 +20,132 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node40.html">
<LINK REL="previous" HREF="node38.html">
<LINK REL="up" HREF="node36.html">
<LINK REL="up" HREF="node37.html">
<LINK REL="next" HREF="node40.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html692"
<A NAME="tex2html693"
HREF="node40.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html688"
HREF="node36.html">
<A NAME="tex2html689"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html682"
<A NAME="tex2html683"
HREF="node38.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html690"
<A NAME="tex2html691"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html693"
HREF="node40.html">psb_geamax Infinity-Norm</A>
<B> Up:</B> <A NAME="tex2html689"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html683"
HREF="node38.html">psb_gedot Dot</A>
&nbsp; <B> <A NAME="tex2html691"
<B> Next:</B> <A NAME="tex2html694"
HREF="node40.html">psb_gedots Generalized</A>
<B> Up:</B> <A NAME="tex2html690"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html684"
HREF="node38.html">psb_geaxpby General</A>
&nbsp; <B> <A NAME="tex2html692"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00053000000000000000">
psb_gedots -- Generalized Dot Product</A>
<H2><A NAME="SECTION00052000000000000000">
psb_gedot -- Dot Product</A>
</H2>
<P>
This subroutine computes a series of dot products among the columns of
two dense matrices <IMG
This function computes dot product between two vectors <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> and
<IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
If <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> and <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">:
ALT="$y$"> are real vectors
it computes dot-product as:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
res(i) \leftarrow x(:,i)^T y(:,i)
dot \leftarrow x^T y
\end{displaymath}
-->
<IMG
WIDTH="150" HEIGHT="28" BORDER="0"
SRC="img27.png"
ALT="\begin{displaymath}res(i) \leftarrow x(:,i)^T y(:,i)\end{displaymath}">
WIDTH="74" HEIGHT="27" BORDER="0"
SRC="img24.png"
ALT="\begin{displaymath}dot \leftarrow x^T y\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
If the matrices are complex, then the
usual convention applies, i.e. the conjugate transpose of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is
used. If <IMG
Else if <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> and <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"> are of rank one, then <IMG
WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img28.png"
ALT="$res$"> is a scalar, else it
is a rank one array.
ALT="$y$"> are complex vectors then it computes dot-product as:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
dot \leftarrow x^H y
\end{displaymath}
-->
<IMG
WIDTH="76" HEIGHT="27" BORDER="0"
SRC="img25.png"
ALT="\begin{displaymath}dot \leftarrow x^H y\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
<P>
<PRE>
call psb_gedots(res, x, y, desc_a, info)
psb_gedot(x, y, desc_a, info)
</PRE>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1537"></A>
<DIV ALIGN="CENTER"><A NAME="1557"></A>
<TABLE>
<CAPTION><STRONG>Table 3:</STRONG>
<CAPTION><STRONG>Table 2:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img28.png"
ALT="$res$">, <IMG
WIDTH="25" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img26.png"
ALT="$dot$">, <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">, <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
<TD ALIGN="LEFT"><B>Function</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_gedots</TD>
<TD ALIGN="LEFT">psb_gedot</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_gedots</TD>
<TD ALIGN="LEFT">psb_gedot</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_gedots</TD>
<TD ALIGN="LEFT">psb_gedot</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_gedots</TD>
<TD ALIGN="LEFT">psb_gedot</TD>
</TR>
</TABLE>
</DIV>
@ -152,7 +167,7 @@ Data types</CAPTION>
<IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
ALT="$x$">.
<BR>
Scope: <B>local</B>
<BR>
@ -162,7 +177,7 @@ Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90mdot">3</A>. The rank of <IMG
Table&nbsp;<A HREF="#tab:f90dot">2</A>. The rank of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> must be the same of <IMG
@ -185,7 +200,7 @@ Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90mdot">3</A>. The rank of <IMG
Table&nbsp;<A HREF="#tab:f90dot">2</A>. The rank of <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"> must be the same of <IMG
@ -203,11 +218,13 @@ Type: <B>required</B>
Intent: <B>in</B>.
<BR>
Specified as: an object of type descdata<TT>psb_desc_type</TT>.
<P>
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>res</STRONG></DT>
<DT><STRONG>Function value</STRONG></DT>
<DD>is the dot product of subvectors <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
@ -218,10 +235,7 @@ Specified as: an object of type descdata<TT>psb_desc_type</TT>.
<BR>
Scope: <B>global</B>
<BR>
Intent: <B>out</B>.
<BR>
Specified as: a number or a rank-one array of the data type indicated
in Table&nbsp;<A HREF="#tab:f90dot">2</A>.
Specified as: a number of the data type indicated in Table&nbsp;<A HREF="#tab:f90dot">2</A>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -239,26 +253,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html692"
<A NAME="tex2html693"
HREF="node40.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html688"
HREF="node36.html">
<A NAME="tex2html689"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html682"
<A NAME="tex2html683"
HREF="node38.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html690"
<A NAME="tex2html691"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html693"
HREF="node40.html">psb_geamax Infinity-Norm</A>
<B> Up:</B> <A NAME="tex2html689"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html683"
HREF="node38.html">psb_gedot Dot</A>
&nbsp; <B> <A NAME="tex2html691"
<B> Next:</B> <A NAME="tex2html694"
HREF="node40.html">psb_gedots Generalized</A>
<B> Up:</B> <A NAME="tex2html690"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html684"
HREF="node38.html">psb_geaxpby General</A>
&nbsp; <B> <A NAME="tex2html692"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html222"
<A NAME="tex2html224"
HREF="node5.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html218"
<A NAME="tex2html220"
HREF="node3.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html212"
<A NAME="tex2html214"
HREF="node3.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html220"
<A NAME="tex2html222"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html223"
<B> Next:</B> <A NAME="tex2html225"
HREF="node5.html">Library contents</A>
<B> Up:</B> <A NAME="tex2html219"
<B> Up:</B> <A NAME="tex2html221"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html213"
<B> Previous:</B> <A NAME="tex2html215"
HREF="node3.html">General overview</A>
&nbsp; <B> <A NAME="tex2html221"
&nbsp; <B> <A NAME="tex2html223"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
@ -126,8 +126,8 @@ Overlap points do not usually exist in the basic data
distributions; however they are a feature of Domain Decomposition
Schwarz preconditioners which are the subject of related research
work&nbsp;[<A
HREF="node118.html#2007c">4</A>,<A
HREF="node118.html#2007d">3</A>].
HREF="node119.html#2007c">4</A>,<A
HREF="node119.html#2007d">3</A>].
<P>
We denote the sets of internal, boundary and halo points for a given
@ -166,7 +166,7 @@ local rows) is <!-- MATH
<P>
<DIV ALIGN="CENTER"><A NAME="fig:points"></A><A NAME="248"></A>
<DIV ALIGN="CENTER"><A NAME="fig:points"></A><A NAME="258"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
Point classfication.</CAPTION>
@ -197,26 +197,26 @@ points in the literature.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html222"
<A NAME="tex2html224"
HREF="node5.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html218"
<A NAME="tex2html220"
HREF="node3.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html212"
<A NAME="tex2html214"
HREF="node3.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html220"
<A NAME="tex2html222"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html223"
<B> Next:</B> <A NAME="tex2html225"
HREF="node5.html">Library contents</A>
<B> Up:</B> <A NAME="tex2html219"
<B> Up:</B> <A NAME="tex2html221"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html213"
<B> Previous:</B> <A NAME="tex2html215"
HREF="node3.html">General overview</A>
&nbsp; <B> <A NAME="tex2html221"
&nbsp; <B> <A NAME="tex2html223"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_geamax -- Infinity-Norm of Vector</TITLE>
<META NAME="description" CONTENT="psb_geamax -- Infinity-Norm of Vector">
<TITLE>psb_gedots -- Generalized Dot Product</TITLE>
<META NAME="description" CONTENT="psb_gedots -- Generalized Dot Product">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,127 +20,117 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node41.html">
<LINK REL="previous" HREF="node39.html">
<LINK REL="up" HREF="node36.html">
<LINK REL="up" HREF="node37.html">
<LINK REL="next" HREF="node41.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html704"
<A NAME="tex2html705"
HREF="node41.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html700"
HREF="node36.html">
<A NAME="tex2html701"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html694"
<A NAME="tex2html695"
HREF="node39.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html702"
<A NAME="tex2html703"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html705"
HREF="node41.html">psb_geamaxs Generalized</A>
<B> Up:</B> <A NAME="tex2html701"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html695"
HREF="node39.html">psb_gedots Generalized</A>
&nbsp; <B> <A NAME="tex2html703"
<B> Next:</B> <A NAME="tex2html706"
HREF="node41.html">psb_geamax Infinity-Norm</A>
<B> Up:</B> <A NAME="tex2html702"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html696"
HREF="node39.html">psb_gedot Dot</A>
&nbsp; <B> <A NAME="tex2html704"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00054000000000000000">
psb_geamax -- Infinity-Norm of Vector</A>
<H2><A NAME="SECTION00053000000000000000">
psb_gedots -- Generalized Dot Product</A>
</H2>
<P>
This function computes
the infinity-norm of a vector <IMG
This subroutine computes a series of dot products among the columns of
two dense matrices <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
If <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a real vector
it computes infinity norm as:
ALT="$x$"> and <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
amax \leftarrow \max_i |x_i|
res(i) \leftarrow x(:,i)^T y(:,i)
\end{displaymath}
-->
<IMG
WIDTH="118" HEIGHT="36" BORDER="0"
SRC="img29.png"
ALT="\begin{displaymath}amax \leftarrow \max_i \vert x_i\vert\end{displaymath}">
WIDTH="150" HEIGHT="28" BORDER="0"
SRC="img27.png"
ALT="\begin{displaymath}res(i) \leftarrow x(:,i)^T y(:,i)\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
else if <IMG
If the matrices are complex, then the
usual convention applies, i.e. the conjugate transpose of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a complex vector then it computes the infinity-norm as:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
amax \leftarrow \max_i {(|re(x_i)| + |im(x_i)|)}
\end{displaymath}
-->
<IMG
WIDTH="233" HEIGHT="36" BORDER="0"
SRC="img30.png"
ALT="\begin{displaymath}amax \leftarrow \max_i {(\vert re(x_i)\vert + \vert im(x_i)\vert)}\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
ALT="$x$"> is
used. If <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> and <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"> are of rank one, then <IMG
WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img28.png"
ALT="$res$"> is a scalar, else it
is a rank one array.
<P>
<PRE>
psb_geamax(x, desc_a, info)
call psb_gedots(res, x, y, desc_a, info)
</PRE>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1538"></A>
<DIV ALIGN="CENTER"><A NAME="1558"></A>
<TABLE>
<CAPTION><STRONG>Table 4:</STRONG>
<CAPTION><STRONG>Table 3:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="44" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img31.png"
ALT="$amax$"></TD>
<TD ALIGN="LEFT"><IMG
WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img28.png"
ALT="$res$">, <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></TD>
<TD ALIGN="LEFT"><B>Function</B></TD>
ALT="$x$">, <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_geamax</TD>
<TD ALIGN="LEFT">psb_gedots</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_geamax</TD>
<TD ALIGN="LEFT">psb_gedots</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_geamax</TD>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_gedots</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_geamax</TD>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_gedots</TD>
</TR>
</TABLE>
</DIV>
@ -163,7 +153,6 @@ Data types</CAPTION>
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>local</B>
<BR>
@ -171,9 +160,38 @@ Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90amax">4</A>.
Table&nbsp;<A HREF="#tab:f90mdot">3</A>. The rank of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> must be the same of <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90mdot">3</A>. The rank of <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"> must be the same of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
@ -185,21 +203,25 @@ Type: <B>required</B>
Intent: <B>in</B>.
<BR>
Specified as: an object of type descdata<TT>psb_desc_type</TT>.
<P>
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>is the infinity norm of subvector <IMG
<DT><STRONG>res</STRONG></DT>
<DD>is the dot product of subvectors <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
ALT="$x$"> and <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
Scope: <B>global</B>
<BR>
Specified as: a long precision real number.
Intent: <B>out</B>.
<BR>
Specified as: a number or a rank-one array of the data type indicated
in Table&nbsp;<A HREF="#tab:f90dot">2</A>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -217,26 +239,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html704"
<A NAME="tex2html705"
HREF="node41.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html700"
HREF="node36.html">
<A NAME="tex2html701"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html694"
<A NAME="tex2html695"
HREF="node39.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html702"
<A NAME="tex2html703"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html705"
HREF="node41.html">psb_geamaxs Generalized</A>
<B> Up:</B> <A NAME="tex2html701"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html695"
HREF="node39.html">psb_gedots Generalized</A>
&nbsp; <B> <A NAME="tex2html703"
<B> Next:</B> <A NAME="tex2html706"
HREF="node41.html">psb_geamax Infinity-Norm</A>
<B> Up:</B> <A NAME="tex2html702"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html696"
HREF="node39.html">psb_gedot Dot</A>
&nbsp; <B> <A NAME="tex2html704"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_geamaxs -- Generalized Infinity Norm</TITLE>
<META NAME="description" CONTENT="psb_geamaxs -- Generalized Infinity Norm">
<TITLE>psb_geamax -- Infinity-Norm of Vector</TITLE>
<META NAME="description" CONTENT="psb_geamax -- Infinity-Norm of Vector">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,102 +20,127 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node42.html">
<LINK REL="previous" HREF="node40.html">
<LINK REL="up" HREF="node36.html">
<LINK REL="up" HREF="node37.html">
<LINK REL="next" HREF="node42.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html716"
<A NAME="tex2html717"
HREF="node42.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html712"
HREF="node36.html">
<A NAME="tex2html713"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html706"
<A NAME="tex2html707"
HREF="node40.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html714"
<A NAME="tex2html715"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html717"
HREF="node42.html">psb_geasum 1-Norm</A>
<B> Up:</B> <A NAME="tex2html713"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html707"
HREF="node40.html">psb_geamax Infinity-Norm</A>
&nbsp; <B> <A NAME="tex2html715"
<B> Next:</B> <A NAME="tex2html718"
HREF="node42.html">psb_geamaxs Generalized</A>
<B> Up:</B> <A NAME="tex2html714"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html708"
HREF="node40.html">psb_gedots Generalized</A>
&nbsp; <B> <A NAME="tex2html716"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00055000000000000000">
psb_geamaxs -- Generalized Infinity Norm</A>
<H2><A NAME="SECTION00054000000000000000">
psb_geamax -- Infinity-Norm of Vector</A>
</H2>
<P>
This subroutine computes a series of infinity norms on the columns of
a dense matrix <IMG
This function computes
the infinity-norm of a vector <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">:
ALT="$x$">.
<BR>
If <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a real vector
it computes infinity norm as:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
amax \leftarrow \max_i |x_i|
\end{displaymath}
-->
<IMG
WIDTH="118" HEIGHT="36" BORDER="0"
SRC="img29.png"
ALT="\begin{displaymath}amax \leftarrow \max_i \vert x_i\vert\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
else if <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a complex vector then it computes the infinity-norm as:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
res(i) \leftarrow \max_k |x(k,i)|
amax \leftarrow \max_i {(|re(x_i)| + |im(x_i)|)}
\end{displaymath}
-->
<IMG
WIDTH="147" HEIGHT="36" BORDER="0"
SRC="img32.png"
ALT="\begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath}">
WIDTH="233" HEIGHT="36" BORDER="0"
SRC="img30.png"
ALT="\begin{displaymath}amax \leftarrow \max_i {(\vert re(x_i)\vert + \vert im(x_i)\vert)}\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
<P>
<PRE>
call psb_geamaxs(res, x, desc_a, info)
psb_geamax(x, desc_a, info)
</PRE>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1539"></A>
<DIV ALIGN="CENTER"><A NAME="1559"></A>
<TABLE>
<CAPTION><STRONG>Table 5:</STRONG>
<CAPTION><STRONG>Table 4:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img28.png"
ALT="$res$"></TD>
WIDTH="44" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img31.png"
ALT="$amax$"></TD>
<TD ALIGN="LEFT"><IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
<TD ALIGN="LEFT"><B>Function</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_geamaxs</TD>
<TD ALIGN="LEFT">psb_geamax</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_geamaxs</TD>
<TD ALIGN="LEFT">psb_geamax</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_geamaxs</TD>
<TD ALIGN="LEFT">psb_geamax</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_geamaxs</TD>
<TD ALIGN="LEFT">psb_geamax</TD>
</TR>
</TABLE>
</DIV>
@ -138,6 +163,7 @@ Data types</CAPTION>
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>local</B>
<BR>
@ -145,9 +171,9 @@ Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90mamax">5</A>.
Table&nbsp;<A HREF="#tab:f90amax">4</A>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
@ -159,21 +185,21 @@ Type: <B>required</B>
Intent: <B>in</B>.
<BR>
Specified as: an object of type descdata<TT>psb_desc_type</TT>.
<P>
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>res</STRONG></DT>
<DD>is the infinity norm of the columns of <IMG
<DT><STRONG>Function value</STRONG></DT>
<DD>is the infinity norm of subvector <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>global</B>
<BR>
Intent: <B>out</B>.
<BR>
Specified as: a number or a rank-one array of long precision real numbers.
Specified as: a long precision real number.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -191,26 +217,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html716"
<A NAME="tex2html717"
HREF="node42.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html712"
HREF="node36.html">
<A NAME="tex2html713"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html706"
<A NAME="tex2html707"
HREF="node40.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html714"
<A NAME="tex2html715"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html717"
HREF="node42.html">psb_geasum 1-Norm</A>
<B> Up:</B> <A NAME="tex2html713"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html707"
HREF="node40.html">psb_geamax Infinity-Norm</A>
&nbsp; <B> <A NAME="tex2html715"
<B> Next:</B> <A NAME="tex2html718"
HREF="node42.html">psb_geamaxs Generalized</A>
<B> Up:</B> <A NAME="tex2html714"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html708"
HREF="node40.html">psb_gedots Generalized</A>
&nbsp; <B> <A NAME="tex2html716"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_geasum -- 1-Norm of Vector</TITLE>
<META NAME="description" CONTENT="psb_geasum -- 1-Norm of Vector">
<TITLE>psb_geamaxs -- Generalized Infinity Norm</TITLE>
<META NAME="description" CONTENT="psb_geamaxs -- Generalized Infinity Norm">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,126 +20,102 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node43.html">
<LINK REL="previous" HREF="node41.html">
<LINK REL="up" HREF="node36.html">
<LINK REL="up" HREF="node37.html">
<LINK REL="next" HREF="node43.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html728"
<A NAME="tex2html729"
HREF="node43.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html724"
HREF="node36.html">
<A NAME="tex2html725"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html718"
<A NAME="tex2html719"
HREF="node41.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html726"
<A NAME="tex2html727"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html729"
HREF="node43.html">psb_geasums Generalized</A>
<B> Up:</B> <A NAME="tex2html725"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html719"
HREF="node41.html">psb_geamaxs Generalized</A>
&nbsp; <B> <A NAME="tex2html727"
<B> Next:</B> <A NAME="tex2html730"
HREF="node43.html">psb_geasum 1-Norm</A>
<B> Up:</B> <A NAME="tex2html726"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html720"
HREF="node41.html">psb_geamax Infinity-Norm</A>
&nbsp; <B> <A NAME="tex2html728"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00056000000000000000">
psb_geasum -- 1-Norm of Vector</A>
<H2><A NAME="SECTION00055000000000000000">
psb_geamaxs -- Generalized Infinity Norm</A>
</H2>
<P>
This function computes the 1-norm of a vector <IMG
This subroutine computes a series of infinity norms on the columns of
a dense matrix <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
If <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a real vector
it computes 1-norm as:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
asum \leftarrow \|x_i\|
\end{displaymath}
-->
<IMG
WIDTH="92" HEIGHT="28" BORDER="0"
SRC="img33.png"
ALT="\begin{displaymath}asum \leftarrow \Vert x_i\Vert\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
else if <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a complex vector then it computes 1-norm as:
ALT="$x$">:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
asum \leftarrow \|re(x)\|_1 + \|im(x)\|_1
res(i) \leftarrow \max_k |x(k,i)|
\end{displaymath}
-->
<IMG
WIDTH="205" HEIGHT="28" BORDER="0"
SRC="img34.png"
ALT="\begin{displaymath}asum \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath}">
WIDTH="147" HEIGHT="36" BORDER="0"
SRC="img32.png"
ALT="\begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
<P>
<PRE>
psb_geasum(x, desc_a, info)
call psb_geamaxs(res, x, desc_a, info)
</PRE>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1540"></A>
<DIV ALIGN="CENTER"><A NAME="1560"></A>
<TABLE>
<CAPTION><STRONG>Table 6:</STRONG>
<CAPTION><STRONG>Table 5:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="43" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img35.png"
ALT="$asum$"></TD>
WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img28.png"
ALT="$res$"></TD>
<TD ALIGN="LEFT"><IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></TD>
<TD ALIGN="LEFT"><B>Function</B></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_geasum</TD>
<TD ALIGN="LEFT">psb_geamaxs</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_geasum</TD>
<TD ALIGN="LEFT">psb_geamaxs</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_geasum</TD>
<TD ALIGN="LEFT">psb_geamaxs</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_geasum</TD>
<TD ALIGN="LEFT">psb_geamaxs</TD>
</TR>
</TABLE>
</DIV>
@ -162,7 +138,6 @@ Data types</CAPTION>
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>local</B>
<BR>
@ -172,7 +147,7 @@ Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90asum">6</A>.
Table&nbsp;<A HREF="#tab:f90mamax">5</A>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
@ -184,21 +159,21 @@ Type: <B>required</B>
Intent: <B>in</B>.
<BR>
Specified as: an object of type descdata<TT>psb_desc_type</TT>.
<P>
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>is the 1-norm of vector <IMG
<DT><STRONG>res</STRONG></DT>
<DD>is the infinity norm of the columns of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>global</B>
<BR>
Specified as: a long precision real number.
Intent: <B>out</B>.
<BR>
Specified as: a number or a rank-one array of long precision real numbers.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -216,26 +191,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html728"
<A NAME="tex2html729"
HREF="node43.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html724"
HREF="node36.html">
<A NAME="tex2html725"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html718"
<A NAME="tex2html719"
HREF="node41.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html726"
<A NAME="tex2html727"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html729"
HREF="node43.html">psb_geasums Generalized</A>
<B> Up:</B> <A NAME="tex2html725"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html719"
HREF="node41.html">psb_geamaxs Generalized</A>
&nbsp; <B> <A NAME="tex2html727"
<B> Next:</B> <A NAME="tex2html730"
HREF="node43.html">psb_geasum 1-Norm</A>
<B> Up:</B> <A NAME="tex2html726"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html720"
HREF="node41.html">psb_geamax Infinity-Norm</A>
&nbsp; <B> <A NAME="tex2html728"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_geasums -- Generalized 1-Norm of Vector</TITLE>
<META NAME="description" CONTENT="psb_geasums -- Generalized 1-Norm of Vector">
<TITLE>psb_geasum -- 1-Norm of Vector</TITLE>
<META NAME="description" CONTENT="psb_geasum -- 1-Norm of Vector">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,62 +20,42 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node44.html">
<LINK REL="previous" HREF="node42.html">
<LINK REL="up" HREF="node36.html">
<LINK REL="up" HREF="node37.html">
<LINK REL="next" HREF="node44.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html740"
<A NAME="tex2html741"
HREF="node44.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html736"
HREF="node36.html">
<A NAME="tex2html737"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html730"
<A NAME="tex2html731"
HREF="node42.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html738"
<A NAME="tex2html739"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html741"
HREF="node44.html">psb_genrm2 2-Norm</A>
<B> Up:</B> <A NAME="tex2html737"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html731"
HREF="node42.html">psb_geasum 1-Norm</A>
&nbsp; <B> <A NAME="tex2html739"
<B> Next:</B> <A NAME="tex2html742"
HREF="node44.html">psb_geasums Generalized</A>
<B> Up:</B> <A NAME="tex2html738"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html732"
HREF="node42.html">psb_geamaxs Generalized</A>
&nbsp; <B> <A NAME="tex2html740"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00057000000000000000">
psb_geasums -- Generalized 1-Norm of Vector</A>
<H2><A NAME="SECTION00056000000000000000">
psb_geasum -- 1-Norm of Vector</A>
</H2>
<P>
This subroutine computes a series of 1-norms on the columns of
a dense matrix <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
res(i) \leftarrow \max_k |x(k,i)|
\end{displaymath}
-->
<IMG
WIDTH="147" HEIGHT="36" BORDER="0"
SRC="img32.png"
ALT="\begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
This function computes the 1-norm of a vector <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
@ -84,20 +64,20 @@ This function computes the 1-norm of a vector <IMG
If <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a real vector
ALT="$x$"> is a real vector
it computes 1-norm as:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
res(i) \leftarrow \|x_i\|
asum \leftarrow \|x_i\|
\end{displaymath}
-->
<IMG
WIDTH="94" HEIGHT="28" BORDER="0"
SRC="img36.png"
ALT="\begin{displaymath}res(i) \leftarrow \Vert x_i\Vert\end{displaymath}">
WIDTH="92" HEIGHT="28" BORDER="0"
SRC="img33.png"
ALT="\begin{displaymath}asum \leftarrow \Vert x_i\Vert\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
@ -109,57 +89,57 @@ else if <IMG
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
res(i) \leftarrow \|re(x)\|_1 + \|im(x)\|_1
asum \leftarrow \|re(x)\|_1 + \|im(x)\|_1
\end{displaymath}
-->
<IMG
WIDTH="206" HEIGHT="28" BORDER="0"
SRC="img37.png"
ALT="\begin{displaymath}res(i) \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath}">
WIDTH="205" HEIGHT="28" BORDER="0"
SRC="img34.png"
ALT="\begin{displaymath}asum \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
<P>
<PRE>
call psb_geasums(res, x, desc_a, info)
psb_geasum(x, desc_a, info)
</PRE>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1541"></A>
<DIV ALIGN="CENTER"><A NAME="1561"></A>
<TABLE>
<CAPTION><STRONG>Table 7:</STRONG>
<CAPTION><STRONG>Table 6:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img28.png"
ALT="$res$"></TD>
WIDTH="43" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img35.png"
ALT="$asum$"></TD>
<TD ALIGN="LEFT"><IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
<TD ALIGN="LEFT"><B>Function</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_geasums</TD>
<TD ALIGN="LEFT">psb_geasum</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_geasums</TD>
<TD ALIGN="LEFT">psb_geasum</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_geasums</TD>
<TD ALIGN="LEFT">psb_geasum</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_geasums</TD>
<TD ALIGN="LEFT">psb_geasum</TD>
</TR>
</TABLE>
</DIV>
@ -192,7 +172,7 @@ Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90asums">7</A>.
Table&nbsp;<A HREF="#tab:f90asum">6</A>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
@ -210,17 +190,14 @@ Specified as: an object of type descdata<TT>psb_desc_type</TT>.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>res</STRONG></DT>
<DD>contains the 1-norm of (the columns of) <IMG
<DT><STRONG>Function value</STRONG></DT>
<DD>is the 1-norm of vector <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>global</B>
<BR>
Intent: <B>out</B>.
<BR>
Short as: a long precision real number.
Specified as: a long precision real number.
</DD>
<DT><STRONG>info</STRONG></DT>
@ -239,26 +216,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html740"
<A NAME="tex2html741"
HREF="node44.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html736"
HREF="node36.html">
<A NAME="tex2html737"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html730"
<A NAME="tex2html731"
HREF="node42.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html738"
<A NAME="tex2html739"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html741"
HREF="node44.html">psb_genrm2 2-Norm</A>
<B> Up:</B> <A NAME="tex2html737"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html731"
HREF="node42.html">psb_geasum 1-Norm</A>
&nbsp; <B> <A NAME="tex2html739"
<B> Next:</B> <A NAME="tex2html742"
HREF="node44.html">psb_geasums Generalized</A>
<B> Up:</B> <A NAME="tex2html738"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html732"
HREF="node42.html">psb_geamaxs Generalized</A>
&nbsp; <B> <A NAME="tex2html740"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_genrm2 -- 2-Norm of Vector</TITLE>
<META NAME="description" CONTENT="psb_genrm2 -- 2-Norm of Vector">
<TITLE>psb_geasums -- Generalized 1-Norm of Vector</TITLE>
<META NAME="description" CONTENT="psb_geasums -- Generalized 1-Norm of Vector">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,43 +20,63 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node45.html">
<LINK REL="previous" HREF="node43.html">
<LINK REL="up" HREF="node36.html">
<LINK REL="up" HREF="node37.html">
<LINK REL="next" HREF="node45.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html752"
<A NAME="tex2html753"
HREF="node45.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html748"
HREF="node36.html">
<A NAME="tex2html749"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html742"
<A NAME="tex2html743"
HREF="node43.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html750"
<A NAME="tex2html751"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html753"
HREF="node45.html">psb_genrm2s Generalized</A>
<B> Up:</B> <A NAME="tex2html749"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html743"
HREF="node43.html">psb_geasums Generalized</A>
&nbsp; <B> <A NAME="tex2html751"
<B> Next:</B> <A NAME="tex2html754"
HREF="node45.html">psb_genrm2 2-Norm</A>
<B> Up:</B> <A NAME="tex2html750"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html744"
HREF="node43.html">psb_geasum 1-Norm</A>
&nbsp; <B> <A NAME="tex2html752"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00058000000000000000">
psb_genrm2 -- 2-Norm of Vector</A>
<H2><A NAME="SECTION00057000000000000000">
psb_geasums -- Generalized 1-Norm of Vector</A>
</H2>
<P>
This function computes the 2-norm of a vector <IMG
This subroutine computes a series of 1-norms on the columns of
a dense matrix <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
res(i) \leftarrow \max_k |x(k,i)|
\end{displaymath}
-->
<IMG
WIDTH="147" HEIGHT="36" BORDER="0"
SRC="img32.png"
ALT="\begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
This function computes the 1-norm of a vector <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
@ -64,77 +84,82 @@ This function computes the 2-norm of a vector <IMG
If <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a real vector
it computes 2-norm as:
ALT="$x$"> is a real vector
it computes 1-norm as:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
nrm2 \leftarrow \sqrt{x^T x}
res(i) \leftarrow \|x_i\|
\end{displaymath}
-->
<IMG
WIDTH="106" HEIGHT="24" BORDER="0"
SRC="img38.png"
ALT="\begin{displaymath}nrm2 \leftarrow \sqrt{x^T x}\end{displaymath}">
WIDTH="94" HEIGHT="28" BORDER="0"
SRC="img36.png"
ALT="\begin{displaymath}res(i) \leftarrow \Vert x_i\Vert\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
else if <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a complex vector then it computes 2-norm as:
ALT="$x$"> is a complex vector then it computes 1-norm as:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
nrm2 \leftarrow \sqrt{x^H x}
res(i) \leftarrow \|re(x)\|_1 + \|im(x)\|_1
\end{displaymath}
-->
<IMG
WIDTH="108" HEIGHT="24" BORDER="0"
SRC="img39.png"
ALT="\begin{displaymath}nrm2 \leftarrow \sqrt{x^H x}\end{displaymath}">
WIDTH="206" HEIGHT="28" BORDER="0"
SRC="img37.png"
ALT="\begin{displaymath}res(i) \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
<P>
<PRE>
call psb_geasums(res, x, desc_a, info)
</PRE>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1542"></A>
<DIV ALIGN="CENTER"><A NAME="1562"></A>
<TABLE>
<CAPTION><STRONG>Table 8:</STRONG>
<CAPTION><STRONG>Table 7:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="43" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img40.png"
ALT="$nrm2$"></TD>
WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img28.png"
ALT="$res$"></TD>
<TD ALIGN="LEFT"><IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></TD>
<TD ALIGN="LEFT"><B>Function</B></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_genrm2</TD>
<TD ALIGN="LEFT">psb_geasums</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_genrm2</TD>
<TD ALIGN="LEFT">psb_geasums</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_genrm2</TD>
<TD ALIGN="LEFT">psb_geasums</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_genrm2</TD>
<TD ALIGN="LEFT">psb_geasums</TD>
</TR>
</TABLE>
</DIV>
@ -143,11 +168,6 @@ Data types</CAPTION>
</DIV><P></P>
<BR>
<P>
<PRE>
psb_genrm2(x, desc_a, info)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
@ -161,7 +181,8 @@ psb_genrm2(x, desc_a, info)
<IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
ALT="$x$">.
<BR>
Scope: <B>local</B>
<BR>
@ -169,9 +190,9 @@ Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90nrm2">8</A>.
Table&nbsp;<A HREF="#tab:f90asums">7</A>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
@ -189,17 +210,18 @@ Specified as: an object of type descdata<TT>psb_desc_type</TT>.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function Value</STRONG></DT>
<DD>is the 2-norm of subvector <IMG
<DT><STRONG>res</STRONG></DT>
<DD>contains the 1-norm of (the columns of) <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
Intent: <B>out</B>.
<BR>
Specified as: a long precision real number.
Short as: a long precision real number.
Specified as: a long precision real number.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -217,26 +239,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html752"
<A NAME="tex2html753"
HREF="node45.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html748"
HREF="node36.html">
<A NAME="tex2html749"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html742"
<A NAME="tex2html743"
HREF="node43.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html750"
<A NAME="tex2html751"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html753"
HREF="node45.html">psb_genrm2s Generalized</A>
<B> Up:</B> <A NAME="tex2html749"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html743"
HREF="node43.html">psb_geasums Generalized</A>
&nbsp; <B> <A NAME="tex2html751"
<B> Next:</B> <A NAME="tex2html754"
HREF="node45.html">psb_genrm2 2-Norm</A>
<B> Up:</B> <A NAME="tex2html750"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html744"
HREF="node43.html">psb_geasum 1-Norm</A>
&nbsp; <B> <A NAME="tex2html752"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_genrm2s -- Generalized 2-Norm of Vector</TITLE>
<META NAME="description" CONTENT="psb_genrm2s -- Generalized 2-Norm of Vector">
<TITLE>psb_genrm2 -- 2-Norm of Vector</TITLE>
<META NAME="description" CONTENT="psb_genrm2 -- 2-Norm of Vector">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,102 +20,121 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node46.html">
<LINK REL="previous" HREF="node44.html">
<LINK REL="up" HREF="node36.html">
<LINK REL="up" HREF="node37.html">
<LINK REL="next" HREF="node46.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html764"
<A NAME="tex2html765"
HREF="node46.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html760"
HREF="node36.html">
<A NAME="tex2html761"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html754"
<A NAME="tex2html755"
HREF="node44.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html762"
<A NAME="tex2html763"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html765"
HREF="node46.html">psb_spnrm1 1-Norm</A>
<B> Up:</B> <A NAME="tex2html761"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html755"
HREF="node44.html">psb_genrm2 2-Norm</A>
&nbsp; <B> <A NAME="tex2html763"
<B> Next:</B> <A NAME="tex2html766"
HREF="node46.html">psb_genrm2s Generalized</A>
<B> Up:</B> <A NAME="tex2html762"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html756"
HREF="node44.html">psb_geasums Generalized</A>
&nbsp; <B> <A NAME="tex2html764"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00059000000000000000">
psb_genrm2s -- Generalized 2-Norm of Vector</A>
<H2><A NAME="SECTION00058000000000000000">
psb_genrm2 -- 2-Norm of Vector</A>
</H2>
<P>
This subroutine computes a series of 2-norms on the columns of
a dense matrix <IMG
This function computes the 2-norm of a vector <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">:
ALT="$x$">.
<BR>
If <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a real vector
it computes 2-norm as:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
res(i) \leftarrow \|x(:,i)\|_2
nrm2 \leftarrow \sqrt{x^T x}
\end{displaymath}
-->
<IMG
WIDTH="124" HEIGHT="28" BORDER="0"
SRC="img41.png"
ALT="\begin{displaymath}res(i) \leftarrow \Vert x(:,i)\Vert _2 \end{displaymath}">
WIDTH="106" HEIGHT="24" BORDER="0"
SRC="img38.png"
ALT="\begin{displaymath}nrm2 \leftarrow \sqrt{x^T x}\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
else if <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a complex vector then it computes 2-norm as:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
nrm2 \leftarrow \sqrt{x^H x}
\end{displaymath}
-->
<P>
<PRE>
call psb_genrm2s(res, x, desc_a, info)
</PRE>
<IMG
WIDTH="108" HEIGHT="24" BORDER="0"
SRC="img39.png"
ALT="\begin{displaymath}nrm2 \leftarrow \sqrt{x^H x}\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1543"></A>
<DIV ALIGN="CENTER"><A NAME="1563"></A>
<TABLE>
<CAPTION><STRONG>Table 9:</STRONG>
<CAPTION><STRONG>Table 8:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img28.png"
ALT="$res$"></TD>
WIDTH="43" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img40.png"
ALT="$nrm2$"></TD>
<TD ALIGN="LEFT"><IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
<TD ALIGN="LEFT"><B>Function</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_genrm2s</TD>
<TD ALIGN="LEFT">psb_genrm2</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_genrm2s</TD>
<TD ALIGN="LEFT">psb_genrm2</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_genrm2s</TD>
<TD ALIGN="LEFT">psb_genrm2</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_genrm2s</TD>
<TD ALIGN="LEFT">psb_genrm2</TD>
</TR>
</TABLE>
</DIV>
@ -124,6 +143,11 @@ Data types</CAPTION>
</DIV><P></P>
<BR>
<P>
<PRE>
psb_genrm2(x, desc_a, info)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
@ -137,8 +161,7 @@ Data types</CAPTION>
<IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
ALT="$x$">.
<BR>
Scope: <B>local</B>
<BR>
@ -146,9 +169,9 @@ Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90nrm2s">9</A>.
Table&nbsp;<A HREF="#tab:f90nrm2">8</A>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
@ -166,17 +189,17 @@ Specified as: an object of type descdata<TT>psb_desc_type</TT>.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>res</STRONG></DT>
<DD>contains the 1-norm of (the columns of) <IMG
<DT><STRONG>Function Value</STRONG></DT>
<DD>is the 2-norm of subvector <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>global</B>
<BR>
Intent: <B>out</B>.
Type: <B>required</B>
<BR>
Specified as: a long precision real number.
Specified as: a long precision real number.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -194,26 +217,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html764"
<A NAME="tex2html765"
HREF="node46.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html760"
HREF="node36.html">
<A NAME="tex2html761"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html754"
<A NAME="tex2html755"
HREF="node44.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html762"
<A NAME="tex2html763"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html765"
HREF="node46.html">psb_spnrm1 1-Norm</A>
<B> Up:</B> <A NAME="tex2html761"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html755"
HREF="node44.html">psb_genrm2 2-Norm</A>
&nbsp; <B> <A NAME="tex2html763"
<B> Next:</B> <A NAME="tex2html766"
HREF="node46.html">psb_genrm2s Generalized</A>
<B> Up:</B> <A NAME="tex2html762"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html756"
HREF="node44.html">psb_geasums Generalized</A>
&nbsp; <B> <A NAME="tex2html764"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_spnrm1 -- 1-Norm of Sparse Matrix</TITLE>
<META NAME="description" CONTENT="psb_spnrm1 -- 1-Norm of Sparse Matrix">
<TITLE>psb_genrm2s -- Generalized 2-Norm of Vector</TITLE>
<META NAME="description" CONTENT="psb_genrm2s -- Generalized 2-Norm of Vector">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,102 +20,102 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node47.html">
<LINK REL="previous" HREF="node45.html">
<LINK REL="up" HREF="node36.html">
<LINK REL="up" HREF="node37.html">
<LINK REL="next" HREF="node47.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html776"
<A NAME="tex2html777"
HREF="node47.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html772"
HREF="node36.html">
<A NAME="tex2html773"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html766"
<A NAME="tex2html767"
HREF="node45.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html774"
<A NAME="tex2html775"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html777"
HREF="node47.html">psb_spnrmi Infinity</A>
<B> Up:</B> <A NAME="tex2html773"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html767"
HREF="node45.html">psb_genrm2s Generalized</A>
&nbsp; <B> <A NAME="tex2html775"
<B> Next:</B> <A NAME="tex2html778"
HREF="node47.html">psb_spnrm1 1-Norm</A>
<B> Up:</B> <A NAME="tex2html774"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html768"
HREF="node45.html">psb_genrm2 2-Norm</A>
&nbsp; <B> <A NAME="tex2html776"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000510000000000000000">
psb_spnrm1 -- 1-Norm of Sparse Matrix</A>
<H2><A NAME="SECTION00059000000000000000">
psb_genrm2s -- Generalized 2-Norm of Vector</A>
</H2>
<P>
This function computes the 1-norm of a matrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">:
<BR>
<P>
This subroutine computes a series of 2-norms on the columns of
a dense matrix <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
nrm1 \leftarrow \|A\|_1
res(i) \leftarrow \|x(:,i)\|_2
\end{displaymath}
-->
<IMG
WIDTH="97" HEIGHT="28" BORDER="0"
SRC="img42.png"
ALT="\begin{displaymath}nrm1 \leftarrow \Vert A\Vert _1 \end{displaymath}">
WIDTH="124" HEIGHT="28" BORDER="0"
SRC="img41.png"
ALT="\begin{displaymath}res(i) \leftarrow \Vert x(:,i)\Vert _2 \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where:
<DL>
<DT><STRONG><IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$"></STRONG></DT>
<DD>represents the global matrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">
</DD>
</DL>
<P>
<PRE>
call psb_genrm2s(res, x, desc_a, info)
</PRE>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1544"></A>
<DIV ALIGN="CENTER"><A NAME="1564"></A>
<TABLE>
<CAPTION><STRONG>Table 10:</STRONG>
<CAPTION><STRONG>Table 9:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$"></TD>
<TD ALIGN="LEFT"><B>Function</B></TD>
WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img28.png"
ALT="$res$"></TD>
<TD ALIGN="LEFT"><IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_spnrm1</TD>
<TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_genrm2s</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_spnrm1</TD>
<TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_genrm2s</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_spnrm1</TD>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_genrm2s</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_spnrm1</TD>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_genrm2s</TD>
</TR>
</TABLE>
</DIV>
@ -124,11 +124,6 @@ Data types</CAPTION>
</DIV><P></P>
<BR>
<P>
<PRE>
psb_spnrm1(A, desc_a, info)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
@ -137,20 +132,23 @@ psb_spnrm1(A, desc_a, info)
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the local portion of the global sparse matrix
<DT><STRONG>x</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">.
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an object of type spdata<TT>psb_Tspmat_type</TT>.
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90nrm2s">9</A>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
@ -162,19 +160,23 @@ Type: <B>required</B>
Intent: <B>in</B>.
<BR>
Specified as: an object of type descdata<TT>psb_desc_type</TT>.
<P>
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>is the 1-norm of sparse submatrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">.
<DT><STRONG>res</STRONG></DT>
<DD>contains the 1-norm of (the columns of) <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>global</B>
<BR>
Specified as: a long precision real number.
Intent: <B>out</B>.
<BR>
Specified as: a long precision real number.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -192,26 +194,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html776"
<A NAME="tex2html777"
HREF="node47.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html772"
HREF="node36.html">
<A NAME="tex2html773"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html766"
<A NAME="tex2html767"
HREF="node45.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html774"
<A NAME="tex2html775"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html777"
HREF="node47.html">psb_spnrmi Infinity</A>
<B> Up:</B> <A NAME="tex2html773"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html767"
HREF="node45.html">psb_genrm2s Generalized</A>
&nbsp; <B> <A NAME="tex2html775"
<B> Next:</B> <A NAME="tex2html778"
HREF="node47.html">psb_spnrm1 1-Norm</A>
<B> Up:</B> <A NAME="tex2html774"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html768"
HREF="node45.html">psb_genrm2 2-Norm</A>
&nbsp; <B> <A NAME="tex2html776"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_spnrmi -- Infinity Norm of Sparse Matrix</TITLE>
<META NAME="description" CONTENT="psb_spnrmi -- Infinity Norm of Sparse Matrix">
<TITLE>psb_spnrm1 -- 1-Norm of Sparse Matrix</TITLE>
<META NAME="description" CONTENT="psb_spnrm1 -- 1-Norm of Sparse Matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,43 +20,43 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node48.html">
<LINK REL="previous" HREF="node46.html">
<LINK REL="up" HREF="node36.html">
<LINK REL="up" HREF="node37.html">
<LINK REL="next" HREF="node48.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html788"
<A NAME="tex2html789"
HREF="node48.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html784"
HREF="node36.html">
<A NAME="tex2html785"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html778"
<A NAME="tex2html779"
HREF="node46.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html786"
<A NAME="tex2html787"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html789"
HREF="node48.html">psb_spmm Sparse</A>
<B> Up:</B> <A NAME="tex2html785"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html779"
HREF="node46.html">psb_spnrm1 1-Norm</A>
&nbsp; <B> <A NAME="tex2html787"
<B> Next:</B> <A NAME="tex2html790"
HREF="node48.html">psb_spnrmi Infinity</A>
<B> Up:</B> <A NAME="tex2html786"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html780"
HREF="node46.html">psb_genrm2s Generalized</A>
&nbsp; <B> <A NAME="tex2html788"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000511000000000000000">
psb_spnrmi -- Infinity Norm of Sparse Matrix</A>
<H2><A NAME="SECTION000510000000000000000">
psb_spnrm1 -- 1-Norm of Sparse Matrix</A>
</H2>
<P>
This function computes the infinity-norm of a matrix <IMG
This function computes the 1-norm of a matrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">:
@ -66,14 +66,14 @@ This function computes the infinity-norm of a matrix <IMG
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
nrmi \leftarrow \|A\|_\infty
nrm1 \leftarrow \|A\|_1
\end{displaymath}
-->
<IMG
WIDTH="101" HEIGHT="28" BORDER="0"
SRC="img43.png"
ALT="\begin{displaymath}nrmi \leftarrow \Vert A\Vert _\infty \end{displaymath}">
WIDTH="97" HEIGHT="28" BORDER="0"
SRC="img42.png"
ALT="\begin{displaymath}nrm1 \leftarrow \Vert A\Vert _1 \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
@ -92,9 +92,9 @@ where:
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1545"></A>
<DIV ALIGN="CENTER"><A NAME="1565"></A>
<TABLE>
<CAPTION><STRONG>Table 11:</STRONG>
<CAPTION><STRONG>Table 10:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
@ -106,16 +106,16 @@ Data types</CAPTION>
<TD ALIGN="LEFT"><B>Function</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_spnrmi</TD>
<TD ALIGN="LEFT">psb_spnrm1</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_spnrmi</TD>
<TD ALIGN="LEFT">psb_spnrm1</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_spnrmi</TD>
<TD ALIGN="LEFT">psb_spnrm1</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_spnrmi</TD>
<TD ALIGN="LEFT">psb_spnrm1</TD>
</TR>
</TABLE>
</DIV>
@ -126,7 +126,7 @@ Data types</CAPTION>
<P>
<PRE>
psb_spnrmi(A, desc_a, info)
psb_spnrm1(A, desc_a, info)
</PRE>
<P>
@ -167,7 +167,7 @@ Specified as: an object of type descdata<TT>psb_desc_type</TT>.
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>is the infinity-norm of sparse submatrix <IMG
<DD>is the 1-norm of sparse submatrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">.
@ -192,26 +192,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html788"
<A NAME="tex2html789"
HREF="node48.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html784"
HREF="node36.html">
<A NAME="tex2html785"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html778"
<A NAME="tex2html779"
HREF="node46.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html786"
<A NAME="tex2html787"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html789"
HREF="node48.html">psb_spmm Sparse</A>
<B> Up:</B> <A NAME="tex2html785"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html779"
HREF="node46.html">psb_spnrm1 1-Norm</A>
&nbsp; <B> <A NAME="tex2html787"
<B> Next:</B> <A NAME="tex2html790"
HREF="node48.html">psb_spnrmi Infinity</A>
<B> Up:</B> <A NAME="tex2html786"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html780"
HREF="node46.html">psb_genrm2s Generalized</A>
&nbsp; <B> <A NAME="tex2html788"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_spmm -- Sparse Matrix by Dense Matrix Product</TITLE>
<META NAME="description" CONTENT="psb_spmm -- Sparse Matrix by Dense Matrix Product">
<TITLE>psb_spnrmi -- Infinity Norm of Sparse Matrix</TITLE>
<META NAME="description" CONTENT="psb_spnrmi -- Infinity Norm of Sparse Matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,129 +20,70 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node49.html">
<LINK REL="previous" HREF="node47.html">
<LINK REL="up" HREF="node36.html">
<LINK REL="up" HREF="node37.html">
<LINK REL="next" HREF="node49.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html800"
<A NAME="tex2html801"
HREF="node49.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html796"
HREF="node36.html">
<A NAME="tex2html797"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html790"
<A NAME="tex2html791"
HREF="node47.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html798"
<A NAME="tex2html799"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html801"
HREF="node49.html">psb_spsm Triangular</A>
<B> Up:</B> <A NAME="tex2html797"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html791"
HREF="node47.html">psb_spnrmi Infinity</A>
&nbsp; <B> <A NAME="tex2html799"
<B> Next:</B> <A NAME="tex2html802"
HREF="node49.html">psb_spmm Sparse</A>
<B> Up:</B> <A NAME="tex2html798"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html792"
HREF="node47.html">psb_spnrm1 1-Norm</A>
&nbsp; <B> <A NAME="tex2html800"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000512000000000000000">
psb_spmm -- Sparse Matrix by Dense Matrix Product</A>
<H2><A NAME="SECTION000511000000000000000">
psb_spnrmi -- Infinity Norm of Sparse Matrix</A>
</H2>
<P>
This subroutine computes the Sparse Matrix by Dense Matrix Product:
<P>
<BR>
<DIV ALIGN="RIGHT">
<!-- MATH
\begin{equation}
y \leftarrow \alpha A x + \beta y
\end{equation}
-->
<TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:f90spmm_no_tra"></A><IMG
WIDTH="102" HEIGHT="27" BORDER="0"
SRC="img44.png"
ALT="\begin{displaymath}
y \leftarrow \alpha A x + \beta y
\end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT">
(1)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P>
<BR>
<DIV ALIGN="RIGHT">
<!-- MATH
\begin{equation}
y \leftarrow \alpha A^T x + \beta y
\end{equation}
-->
<TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:f90spmm_tra"></A><IMG
WIDTH="112" HEIGHT="27" BORDER="0"
SRC="img45.png"
ALT="\begin{displaymath}
y \leftarrow \alpha A^T x + \beta y
\end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT">
(2)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P>
This function computes the infinity-norm of a matrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">:
<BR>
<DIV ALIGN="RIGHT">
<P>
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{equation}
y \leftarrow \alpha A^H x + \beta y
\end{equation}
\begin{displaymath}
nrmi \leftarrow \|A\|_\infty
\end{displaymath}
-->
<TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:f90spmm_con"></A><IMG
WIDTH="114" HEIGHT="27" BORDER="0"
SRC="img46.png"
ALT="\begin{displaymath}
y \leftarrow \alpha A^H x + \beta y
\end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT">
(3)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P>
<P>
<IMG
WIDTH="101" HEIGHT="28" BORDER="0"
SRC="img43.png"
ALT="\begin{displaymath}nrmi \leftarrow \Vert A\Vert _\infty \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where:
<DL>
<DT><STRONG><IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></STRONG></DT>
<DD>is the global dense matrix <IMG
WIDTH="25" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img47.png"
ALT="$x_{:, :}$">
</DD>
<DT><STRONG><IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"></STRONG></DT>
<DD>is the global dense matrix <IMG
WIDTH="23" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img48.png"
ALT="$y_{:, :}$">
</DD>
<DT><STRONG><IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$"></STRONG></DT>
<DD>is the global sparse matrix <IMG
<DD>represents the global matrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">
@ -151,9 +92,9 @@ where:
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1546"></A>
<DIV ALIGN="CENTER"><A NAME="1566"></A>
<TABLE>
<CAPTION><STRONG>Table 12:</STRONG>
<CAPTION><STRONG>Table 11:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
@ -161,32 +102,20 @@ Data types</CAPTION>
<TR><TD ALIGN="LEFT"><IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">, <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">, <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">, <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">, <IMG
WIDTH="14" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img23.png"
ALT="$\beta$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
ALT="$A$"></TD>
<TD ALIGN="LEFT"><B>Function</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_spmm</TD>
<TD ALIGN="LEFT">psb_spnrmi</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_spmm</TD>
<TD ALIGN="LEFT">psb_spnrmi</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_spmm</TD>
<TD ALIGN="LEFT">psb_spnrmi</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_spmm</TD>
<TD ALIGN="LEFT">psb_spnrmi</TD>
</TR>
</TABLE>
</DIV>
@ -197,10 +126,8 @@ Data types</CAPTION>
<P>
<PRE>
call psb_spmm(alpha, a, x, beta, y, desc_a, info)
call psb_spmm(alpha, a, x, beta, y,desc_a, info, &amp;
&amp; trans, work)
</PRE>
psb_spnrmi(A, desc_a, info)
</PRE>
<P>
<DL>
@ -210,23 +137,8 @@ call psb_spmm(alpha, a, x, beta, y,desc_a, info, &amp;
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>alpha</STRONG></DT>
<DD>the scalar <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a number of the data type indicated in
Table&nbsp;<A HREF="#tab:f90spmm">12</A>.
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the local portion of the sparse matrix
<DD>the local portion of the global sparse matrix
<IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
@ -240,68 +152,6 @@ Intent: <B>in</B>.
<BR>
Specified as: an object of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90spmm">12</A>. The rank of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> must be the same of <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
</DD>
<DT><STRONG>beta</STRONG></DT>
<DD>the scalar <IMG
WIDTH="14" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img23.png"
ALT="$\beta$">.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a number of the data type indicated in Table&nbsp;<A HREF="#tab:f90spmm">12</A>.
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90spmm">12</A>. The rank of <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"> must be the same of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
<BR>
@ -313,74 +163,18 @@ Intent: <B>in</B>.
<BR>
Specified as: an object of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>trans</STRONG></DT>
<DD>indicates what kind of operation to perform.
<DL>
<DT><STRONG>trans = N</STRONG></DT>
<DD>the operation is specified by equation <A HREF="#eq:f90spmm_no_tra">1</A>
</DD>
<DT><STRONG>trans = T</STRONG></DT>
<DD>the operation is specified by equation
<A HREF="#eq:f90spmm_tra">2</A>
</DD>
<DT><STRONG>trans = C</STRONG></DT>
<DD>the operation is specified by equation
<A HREF="#eq:f90spmm_con">3</A>
</DD>
</DL>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Default: <IMG
WIDTH="79" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img49.png"
ALT="$trans = N$">
<BR>
Specified as: a character variable.
<P>
</DD>
<DT><STRONG>work</STRONG></DT>
<DD>work array.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one array of the same type of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> and <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"> with
the TARGET attribute.
<P>
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>the local portion of result matrix <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<DT><STRONG>Function value</STRONG></DT>
<DD>is the infinity-norm of sparse submatrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img1.png"
ALT="$A$">.
<BR>
Intent: <B>inout</B>.
Scope: <B>global</B>
<BR>
Specified as: an array of rank one or two
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90spmm">12</A>.
Specified as: a long precision real number.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -398,26 +192,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html800"
<A NAME="tex2html801"
HREF="node49.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html796"
HREF="node36.html">
<A NAME="tex2html797"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html790"
<A NAME="tex2html791"
HREF="node47.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html798"
<A NAME="tex2html799"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html801"
HREF="node49.html">psb_spsm Triangular</A>
<B> Up:</B> <A NAME="tex2html797"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html791"
HREF="node47.html">psb_spnrmi Infinity</A>
&nbsp; <B> <A NAME="tex2html799"
<B> Next:</B> <A NAME="tex2html802"
HREF="node49.html">psb_spmm Sparse</A>
<B> Up:</B> <A NAME="tex2html798"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html792"
HREF="node47.html">psb_spnrm1 1-Norm</A>
&nbsp; <B> <A NAME="tex2html800"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_spsm -- Triangular System Solve</TITLE>
<META NAME="description" CONTENT="psb_spsm -- Triangular System Solve">
<TITLE>psb_spmm -- Sparse Matrix by Dense Matrix Product</TITLE>
<META NAME="description" CONTENT="psb_spmm -- Sparse Matrix by Dense Matrix Product">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,71 +18,104 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node50.html">
<LINK REL="previous" HREF="node48.html">
<LINK REL="up" HREF="node36.html">
<LINK REL="up" HREF="node37.html">
<LINK REL="next" HREF="node50.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html810"
<A NAME="tex2html813"
HREF="node50.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html806"
HREF="node36.html">
<A NAME="tex2html809"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html802"
<A NAME="tex2html803"
HREF="node48.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html808"
<A NAME="tex2html811"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html811"
HREF="node50.html">Communication routines</A>
<B> Up:</B> <A NAME="tex2html807"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html803"
HREF="node48.html">psb_spmm Sparse</A>
&nbsp; <B> <A NAME="tex2html809"
<B> Next:</B> <A NAME="tex2html814"
HREF="node50.html">psb_spsm Triangular</A>
<B> Up:</B> <A NAME="tex2html810"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html804"
HREF="node48.html">psb_spnrmi Infinity</A>
&nbsp; <B> <A NAME="tex2html812"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000513000000000000000">
psb_spsm -- Triangular System Solve</A>
<H2><A NAME="SECTION000512000000000000000">
psb_spmm -- Sparse Matrix by Dense Matrix Product</A>
</H2>
<P>
This subroutine computes the Triangular System Solve:
This subroutine computes the Sparse Matrix by Dense Matrix Product:
<P>
<P></P>
<DIV ALIGN="CENTER">
<BR>
<DIV ALIGN="RIGHT">
<!-- MATH
\begin{eqnarray*}
y &\leftarrow& \alpha T^{-1} x + \beta y\\
y &\leftarrow& \alpha D T^{-1} x + \beta y\\
y &\leftarrow& \alpha T^{-1} D x + \beta y\\
y &\leftarrow& \alpha T^{-T} x + \beta y\\
y &\leftarrow& \alpha D T^{-T} x + \beta y\\
y &\leftarrow& \alpha T^{-T} D x + \beta y\\
y &\leftarrow& \alpha T^{-H} x + \beta y\\
y &\leftarrow& \alpha D T^{-H} x + \beta y\\
y &\leftarrow& \alpha T^{-H} D x + \beta y\\
\end{eqnarray*}
\begin{equation}
y \leftarrow \alpha A x + \beta y
\end{equation}
-->
<IMG
WIDTH="160" HEIGHT="239" BORDER="0"
SRC="img50.png"
ALT="\begin{eqnarray*}
y &amp;\leftarrow&amp; \alpha T^{-1} x + \beta y\\
y &amp;\leftarrow&amp; \al...
...-H} x + \beta y\\
y &amp;\leftarrow&amp; \alpha T^{-H} D x + \beta y\\
\end{eqnarray*}"></DIV>
<BR CLEAR="ALL"><P></P>
<TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:f90spmm_no_tra"></A><IMG
WIDTH="102" HEIGHT="27" BORDER="0"
SRC="img44.png"
ALT="\begin{displaymath}
y \leftarrow \alpha A x + \beta y
\end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT">
(1)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P>
<BR>
<DIV ALIGN="RIGHT">
<!-- MATH
\begin{equation}
y \leftarrow \alpha A^T x + \beta y
\end{equation}
-->
<TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:f90spmm_tra"></A><IMG
WIDTH="112" HEIGHT="27" BORDER="0"
SRC="img45.png"
ALT="\begin{displaymath}
y \leftarrow \alpha A^T x + \beta y
\end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT">
(2)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P>
<BR>
<DIV ALIGN="RIGHT">
<!-- MATH
\begin{equation}
y \leftarrow \alpha A^H x + \beta y
\end{equation}
-->
<TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:f90spmm_con"></A><IMG
WIDTH="114" HEIGHT="27" BORDER="0"
SRC="img46.png"
ALT="\begin{displaymath}
y \leftarrow \alpha A^H x + \beta y
\end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT">
(3)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P>
<P>
where:
@ -107,50 +140,34 @@ where:
</DD>
<DT><STRONG><IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img51.png"
ALT="$T$"></STRONG></DT>
<DD>is the global sparse block triangular submatrix <IMG
SRC="img1.png"
ALT="$A$"></STRONG></DT>
<DD>is the global sparse matrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img51.png"
ALT="$T$">
</DD>
<DT><STRONG><IMG
WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img52.png"
ALT="$D$"></STRONG></DT>
<DD>is the scaling diagonal matrix.
SRC="img1.png"
ALT="$A$">
</DD>
</DL>
<P>
<PRE>
call psb_spsm(alpha, t, x, beta, y, desc_a, info)
call psb_spsm(alpha, t, x, beta, y, desc_a, info,&amp;
&amp; trans, unit, choice, diag, work)
</PRE>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1547"></A>
<DIV ALIGN="CENTER"><A NAME="1567"></A>
<TABLE>
<CAPTION><STRONG>Table 13:</STRONG>
<CAPTION><STRONG>Table 12:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img51.png"
ALT="$T$">, <IMG
SRC="img1.png"
ALT="$A$">, <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">, <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">, <IMG
WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img52.png"
ALT="$D$">, <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">, <IMG
@ -160,16 +177,16 @@ Data types</CAPTION>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_spsm</TD>
<TD ALIGN="LEFT">psb_spmm</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_spsm</TD>
<TD ALIGN="LEFT">psb_spmm</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_spsm</TD>
<TD ALIGN="LEFT">psb_spmm</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_spsm</TD>
<TD ALIGN="LEFT">psb_spmm</TD>
</TR>
</TABLE>
</DIV>
@ -178,6 +195,13 @@ Data types</CAPTION>
</DIV><P></P>
<BR>
<P>
<PRE>
call psb_spmm(alpha, a, x, beta, y, desc_a, info)
call psb_spmm(alpha, a, x, beta, y,desc_a, info, &amp;
&amp; trans, work)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
@ -199,14 +223,14 @@ Type: <B>required</B>
Intent: <B>in</B>.
<BR>
Specified as: a number of the data type indicated in
Table&nbsp;<A HREF="#tab:f90spsm">13</A>.
Table&nbsp;<A HREF="#tab:f90spmm">12</A>.
</DD>
<DT><STRONG>t</STRONG></DT>
<DD>the global portion of the sparse matrix
<DT><STRONG>a</STRONG></DT>
<DD>the local portion of the sparse matrix
<IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img51.png"
ALT="$T$">.
SRC="img1.png"
ALT="$A$">.
<BR>
Scope: <B>local</B>
<BR>
@ -214,8 +238,7 @@ Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an object type specified in
&#167;&nbsp;<A HREF="node8.html#sec:datastruct">3</A>.
Specified as: an object of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>the local portion of global dense matrix
@ -233,7 +256,7 @@ Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90spsm">13</A>. The rank of <IMG
Table&nbsp;<A HREF="#tab:f90spmm">12</A>. The rank of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> must be the same of <IMG
@ -253,7 +276,7 @@ Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a number of the data type indicated in Table&nbsp;<A HREF="#tab:f90spsm">13</A>.
Specified as: a number of the data type indicated in Table&nbsp;<A HREF="#tab:f90spmm">12</A>.
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>the local portion of global dense matrix
@ -271,7 +294,7 @@ Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90spsm">13</A>. The rank of <IMG
Table&nbsp;<A HREF="#tab:f90spmm">12</A>. The rank of <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"> must be the same of <IMG
@ -291,16 +314,18 @@ Intent: <B>in</B>.
Specified as: an object of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>trans</STRONG></DT>
<DD>specify with <EM>unitd</EM> the operation to perform.
<DD>indicates what kind of operation to perform.
<DL>
<DT><STRONG>trans = 'N'</STRONG></DT>
<DD>the operation is with no transposed matrix
<DT><STRONG>trans = N</STRONG></DT>
<DD>the operation is specified by equation <A HREF="#eq:f90spmm_no_tra">1</A>
</DD>
<DT><STRONG>trans = 'T'</STRONG></DT>
<DD>the operation is with transposed matrix.
<DT><STRONG>trans = T</STRONG></DT>
<DD>the operation is specified by equation
<A HREF="#eq:f90spmm_tra">2</A>
</DD>
<DT><STRONG>trans = 'C'</STRONG></DT>
<DD>the operation is with conjugate transposed matrix.
<DT><STRONG>trans = C</STRONG></DT>
<DD>the operation is specified by equation
<A HREF="#eq:f90spmm_con">3</A>
</DD>
</DL>
Scope: <B>global</B>
@ -315,82 +340,11 @@ Default: <IMG
ALT="$trans = N$">
<BR>
Specified as: a character variable.
</DD>
<DT><STRONG>unitd</STRONG></DT>
<DD>specify with <EM>trans</EM> the operation to perform.
<DL>
<DT><STRONG>unitd = 'U'</STRONG></DT>
<DD>the operation is with no scaling
</DD>
<DT><STRONG>unitd = 'L'</STRONG></DT>
<DD>the operation is with left scaling
</DD>
<DT><STRONG>unitd = 'R'</STRONG></DT>
<DD>the operation is with right scaling.
</DD>
</DL>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Default: <IMG
WIDTH="76" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img53.png"
ALT="$unitd = U$">
<BR>
Specified as: a character variable.
</DD>
<DT><STRONG>choice</STRONG></DT>
<DD>specifies the update of overlap elements to be performed
on exit:
<DL>
<DT></DT>
<DD><code>psb_none_</code>
</DD>
<DT></DT>
<DD><code>psb_sum_</code>
</DD>
<DT></DT>
<DD><code>psb_avg_</code>
</DD>
<DT></DT>
<DD><code>psb_square_root_</code>
</DD>
</DL>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Default: <code>psb_avg_</code>
<BR>
Specified as: an integer variable.
</DD>
<DT><STRONG>diag</STRONG></DT>
<DD>the diagonal scaling matrix.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Default: <!-- MATH
$diag(1) = 1 (no scaling)$
-->
<IMG
WIDTH="164" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img54.png"
ALT="$diag(1) = 1 (no scaling)$">
<BR>
Specified as: a rank one array containing numbers of the type
indicated in Table&nbsp;<A HREF="#tab:f90spsm">13</A>.
<P>
</DD>
<DT><STRONG>work</STRONG></DT>
<DD>a work array.
<DD>work array.
<BR>
Scope: <B>local</B>
<BR>
@ -401,8 +355,11 @@ Intent: <B>inout</B>.
Specified as: a rank one array of the same type of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> with the
TARGET attribute.
ALT="$x$"> and <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"> with
the TARGET attribute.
<P>
</DD>
@ -410,12 +367,10 @@ TARGET attribute.
<DD>
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
<DD>the local portion of result matrix <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
ALT="$y$">.
<BR>
Scope: <B>local</B>
<BR>
@ -425,7 +380,7 @@ Intent: <B>inout</B>.
<BR>
Specified as: an array of rank one or two
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90spsm">13</A>.
Table&nbsp;<A HREF="#tab:f90spmm">12</A>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -443,26 +398,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html810"
<A NAME="tex2html813"
HREF="node50.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html806"
HREF="node36.html">
<A NAME="tex2html809"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html802"
<A NAME="tex2html803"
HREF="node48.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html808"
<A NAME="tex2html811"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html811"
HREF="node50.html">Communication routines</A>
<B> Up:</B> <A NAME="tex2html807"
HREF="node36.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html803"
HREF="node48.html">psb_spmm Sparse</A>
&nbsp; <B> <A NAME="tex2html809"
<B> Next:</B> <A NAME="tex2html814"
HREF="node50.html">psb_spsm Triangular</A>
<B> Up:</B> <A NAME="tex2html810"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html804"
HREF="node48.html">psb_spnrmi Infinity</A>
&nbsp; <B> <A NAME="tex2html812"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html234"
<A NAME="tex2html236"
HREF="node6.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html230"
<A NAME="tex2html232"
HREF="node3.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html224"
<A NAME="tex2html226"
HREF="node4.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html232"
<A NAME="tex2html234"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html235"
<B> Next:</B> <A NAME="tex2html237"
HREF="node6.html">Application structure</A>
<B> Up:</B> <A NAME="tex2html231"
<B> Up:</B> <A NAME="tex2html233"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html225"
<B> Previous:</B> <A NAME="tex2html227"
HREF="node4.html">Basic Nomenclature</A>
&nbsp; <B> <A NAME="tex2html233"
&nbsp; <B> <A NAME="tex2html235"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
@ -123,12 +123,12 @@ internally defined in the PSBLAS software package:
<LI><code>sp</code>: the routine is related to sparse data,
</LI>
<LI><code>cd</code>: the routine is related to communication descriptor
(see&nbsp;<A HREF="node8.html#sec:datastruct">3</A>).
(see&nbsp;<A HREF="node9.html#sec:datastruct">3</A>).
</LI>
</UL>
For example the <code>psb_geins</code>, <code>psb_spins</code> and
<code>psb_cdins</code> perform the same action (see&nbsp;<A HREF="node55.html#sec:toolsrout">6</A>) on
<code>psb_cdins</code> perform the same action (see&nbsp;<A HREF="node56.html#sec:toolsrout">6</A>) on
dense matrices, sparse matrices and communication descriptors
respectively.
Interface overloading allows the usage of the same subroutine
@ -169,26 +169,26 @@ whose current value is <code>3.0.0</code>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html234"
<A NAME="tex2html236"
HREF="node6.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html230"
<A NAME="tex2html232"
HREF="node3.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html224"
<A NAME="tex2html226"
HREF="node4.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html232"
<A NAME="tex2html234"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html235"
<B> Next:</B> <A NAME="tex2html237"
HREF="node6.html">Application structure</A>
<B> Up:</B> <A NAME="tex2html231"
<B> Up:</B> <A NAME="tex2html233"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html225"
<B> Previous:</B> <A NAME="tex2html227"
HREF="node4.html">Basic Nomenclature</A>
&nbsp; <B> <A NAME="tex2html233"
&nbsp; <B> <A NAME="tex2html235"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Communication routines</TITLE>
<META NAME="description" CONTENT="Communication routines">
<TITLE>psb_spsm -- Triangular System Solve</TITLE>
<META NAME="description" CONTENT="psb_spsm -- Triangular System Solve">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,63 +18,453 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node55.html">
<LINK REL="previous" HREF="node36.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="previous" HREF="node49.html">
<LINK REL="up" HREF="node37.html">
<LINK REL="next" HREF="node51.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html822"
<A NAME="tex2html823"
HREF="node51.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html818"
HREF="userhtml.html">
<A NAME="tex2html819"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html812"
<A NAME="tex2html815"
HREF="node49.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html820"
<A NAME="tex2html821"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html823"
HREF="node51.html">psb_halo Halo</A>
<B> Up:</B> <A NAME="tex2html819"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html813"
HREF="node49.html">psb_spsm Triangular</A>
&nbsp; <B> <A NAME="tex2html821"
<B> Next:</B> <A NAME="tex2html824"
HREF="node51.html">Communication routines</A>
<B> Up:</B> <A NAME="tex2html820"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html816"
HREF="node49.html">psb_spmm Sparse</A>
&nbsp; <B> <A NAME="tex2html822"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00060000000000000000">
Communication routines</A>
</H1>
The routines in this chapter implement various global communication operators
on vectors associated with a discretization mesh. For auxiliary communication
routines not tied to a discretization space see&nbsp;<A HREF="node55.html#sec:toolsrout">6</A>.
<H2><A NAME="SECTION000513000000000000000">
psb_spsm -- Triangular System Solve</A>
</H2>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html824"
HREF="node51.html">psb_halo -- Halo Data Communication</A>
<LI><A NAME="tex2html825"
HREF="node52.html">psb_ovrl -- Overlap Update</A>
<LI><A NAME="tex2html826"
HREF="node53.html">psb_gather -- Gather Global Dense Matrix</A>
<LI><A NAME="tex2html827"
HREF="node54.html">psb_scatter -- Scatter Global Dense Matrix</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
This subroutine computes the Triangular System Solve:
<P>
<P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{eqnarray*}
y &\leftarrow& \alpha T^{-1} x + \beta y\\
y &\leftarrow& \alpha D T^{-1} x + \beta y\\
y &\leftarrow& \alpha T^{-1} D x + \beta y\\
y &\leftarrow& \alpha T^{-T} x + \beta y\\
y &\leftarrow& \alpha D T^{-T} x + \beta y\\
y &\leftarrow& \alpha T^{-T} D x + \beta y\\
y &\leftarrow& \alpha T^{-H} x + \beta y\\
y &\leftarrow& \alpha D T^{-H} x + \beta y\\
y &\leftarrow& \alpha T^{-H} D x + \beta y\\
\end{eqnarray*}
-->
<IMG
WIDTH="160" HEIGHT="239" BORDER="0"
SRC="img50.png"
ALT="\begin{eqnarray*}
y &amp;\leftarrow&amp; \alpha T^{-1} x + \beta y\\
y &amp;\leftarrow&amp; \al...
...-H} x + \beta y\\
y &amp;\leftarrow&amp; \alpha T^{-H} D x + \beta y\\
\end{eqnarray*}"></DIV>
<BR CLEAR="ALL"><P></P>
<P>
where:
<DL>
<DT><STRONG><IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></STRONG></DT>
<DD>is the global dense matrix <IMG
WIDTH="25" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img47.png"
ALT="$x_{:, :}$">
</DD>
<DT><STRONG><IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"></STRONG></DT>
<DD>is the global dense matrix <IMG
WIDTH="23" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img48.png"
ALT="$y_{:, :}$">
</DD>
<DT><STRONG><IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img51.png"
ALT="$T$"></STRONG></DT>
<DD>is the global sparse block triangular submatrix <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img51.png"
ALT="$T$">
</DD>
<DT><STRONG><IMG
WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img52.png"
ALT="$D$"></STRONG></DT>
<DD>is the scaling diagonal matrix.
</DD>
</DL>
<P>
<PRE>
call psb_spsm(alpha, t, x, beta, y, desc_a, info)
call psb_spsm(alpha, t, x, beta, y, desc_a, info,&amp;
&amp; trans, unit, choice, diag, work)
</PRE>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1568"></A>
<TABLE>
<CAPTION><STRONG>Table 13:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img51.png"
ALT="$T$">, <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">, <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">, <IMG
WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img52.png"
ALT="$D$">, <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">, <IMG
WIDTH="14" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img23.png"
ALT="$\beta$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_spsm</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_spsm</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_spsm</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_spsm</TD>
</TR>
</TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>alpha</STRONG></DT>
<DD>the scalar <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a number of the data type indicated in
Table&nbsp;<A HREF="#tab:f90spsm">13</A>.
</DD>
<DT><STRONG>t</STRONG></DT>
<DD>the global portion of the sparse matrix
<IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img51.png"
ALT="$T$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an object type specified in
&#167;&nbsp;<A HREF="node9.html#sec:datastruct">3</A>.
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90spsm">13</A>. The rank of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> must be the same of <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
</DD>
<DT><STRONG>beta</STRONG></DT>
<DD>the scalar <IMG
WIDTH="14" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img23.png"
ALT="$\beta$">.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a number of the data type indicated in Table&nbsp;<A HREF="#tab:f90spsm">13</A>.
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90spsm">13</A>. The rank of <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$"> must be the same of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an object of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>trans</STRONG></DT>
<DD>specify with <EM>unitd</EM> the operation to perform.
<DL>
<DT><STRONG>trans = 'N'</STRONG></DT>
<DD>the operation is with no transposed matrix
</DD>
<DT><STRONG>trans = 'T'</STRONG></DT>
<DD>the operation is with transposed matrix.
</DD>
<DT><STRONG>trans = 'C'</STRONG></DT>
<DD>the operation is with conjugate transposed matrix.
</DD>
</DL>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Default: <IMG
WIDTH="79" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img49.png"
ALT="$trans = N$">
<BR>
Specified as: a character variable.
</DD>
<DT><STRONG>unitd</STRONG></DT>
<DD>specify with <EM>trans</EM> the operation to perform.
<DL>
<DT><STRONG>unitd = 'U'</STRONG></DT>
<DD>the operation is with no scaling
</DD>
<DT><STRONG>unitd = 'L'</STRONG></DT>
<DD>the operation is with left scaling
</DD>
<DT><STRONG>unitd = 'R'</STRONG></DT>
<DD>the operation is with right scaling.
</DD>
</DL>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Default: <IMG
WIDTH="76" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img53.png"
ALT="$unitd = U$">
<BR>
Specified as: a character variable.
</DD>
<DT><STRONG>choice</STRONG></DT>
<DD>specifies the update of overlap elements to be performed
on exit:
<DL>
<DT></DT>
<DD><code>psb_none_</code>
</DD>
<DT></DT>
<DD><code>psb_sum_</code>
</DD>
<DT></DT>
<DD><code>psb_avg_</code>
</DD>
<DT></DT>
<DD><code>psb_square_root_</code>
</DD>
</DL>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Default: <code>psb_avg_</code>
<BR>
Specified as: an integer variable.
</DD>
<DT><STRONG>diag</STRONG></DT>
<DD>the diagonal scaling matrix.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Default: <!-- MATH
$diag(1) = 1 (no scaling)$
-->
<IMG
WIDTH="164" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img54.png"
ALT="$diag(1) = 1 (no scaling)$">
<BR>
Specified as: a rank one array containing numbers of the type
indicated in Table&nbsp;<A HREF="#tab:f90spsm">13</A>.
</DD>
<DT><STRONG>work</STRONG></DT>
<DD>a work array.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one array of the same type of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> with the
TARGET attribute.
<P>
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: an array of rank one or two
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90spsm">13</A>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html823"
HREF="node51.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html819"
HREF="node37.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html815"
HREF="node49.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html821"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html824"
HREF="node51.html">Communication routines</A>
<B> Up:</B> <A NAME="tex2html820"
HREF="node37.html">Computational routines</A>
<B> Previous:</B> <A NAME="tex2html816"
HREF="node49.html">psb_spmm Sparse</A>
&nbsp; <B> <A NAME="tex2html822"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_halo -- Halo Data Communication</TITLE>
<META NAME="description" CONTENT="psb_halo -- Halo Data Communication">
<TITLE>Communication routines</TITLE>
<META NAME="description" CONTENT="Communication routines">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,635 +18,63 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node52.html">
<LINK REL="previous" HREF="node50.html">
<LINK REL="up" HREF="node50.html">
<LINK REL="next" HREF="node56.html">
<LINK REL="previous" HREF="node37.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node52.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html838"
<A NAME="tex2html835"
HREF="node52.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html834"
HREF="node50.html">
<A NAME="tex2html831"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html828"
<A NAME="tex2html825"
HREF="node50.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html836"
<A NAME="tex2html833"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html839"
HREF="node52.html">psb_ovrl Overlap</A>
<B> Up:</B> <A NAME="tex2html835"
HREF="node50.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html829"
HREF="node50.html">Communication routines</A>
&nbsp; <B> <A NAME="tex2html837"
<B> Next:</B> <A NAME="tex2html836"
HREF="node52.html">psb_halo Halo</A>
<B> Up:</B> <A NAME="tex2html832"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html826"
HREF="node50.html">psb_spsm Triangular</A>
&nbsp; <B> <A NAME="tex2html834"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00061000000000000000">
psb_halo -- Halo Data Communication</A>
</H2>
<P>
These subroutines gathers the values of the halo
elements, and (optionally) scale the result:
<P>
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
x \leftarrow \alpha x
\end{displaymath}
-->
<IMG
WIDTH="53" HEIGHT="24" BORDER="0"
SRC="img55.png"
ALT="\begin{displaymath}x \leftarrow \alpha x \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where:
<DL>
<DT><STRONG><IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></STRONG></DT>
<DD>is a global dense submatrix.
</DD>
</DL>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="2926"></A>
<TABLE>
<CAPTION><STRONG>Table 14:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">, <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Integer</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
</TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR>
<P>
<PRE>
call psb_halo(x, desc_a, info)
call psb_halo(x, desc_a, info, alpha, work, data)
</PRE>
<H1><A NAME="SECTION00060000000000000000">
Communication routines</A>
</H1>
The routines in this chapter implement various global communication operators
on vectors associated with a discretization mesh. For auxiliary communication
routines not tied to a discretization space see&nbsp;<A HREF="node56.html#sec:toolsrout">6</A>.
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>global dense matrix <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90halo">14</A>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>alpha</STRONG></DT>
<DD>the scalar <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Default: <IMG
WIDTH="72" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img56.png"
ALT="$alpha = 1 $">
<BR>
Specified as: a number of the data type indicated in Table&nbsp;<A HREF="#tab:f90halo">14</A>.
</DD>
<DT><STRONG>work</STRONG></DT>
<DD>the work array.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one array of the same type of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
</DD>
<DT><STRONG>data</STRONG></DT>
<DD>index list selector.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Specified as: an integer. Values:<code>psb_comm_halo_</code>,<code>psb_comm_mov_</code>,
<code>psb_comm_ext_</code>, default: <code>psb_comm_halo_</code>. Chooses the
index list on which to base the data exchange.
<P>
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>global dense result matrix <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Returned as: a rank one or two array
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90halo">14</A>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>the local portion of result submatrix <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
An integer value that contains an error code.
</DD>
</DL>
<DIV ALIGN="CENTER"><A NAME="fig:try8x8"></A><A NAME="2928"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 7:</STRONG>
Sample discretization mesh.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<IMG
WIDTH="357" HEIGHT="313" ALIGN="BOTTOM" BORDER="0"
SRC="img58.png"
ALT="\includegraphics[scale=0.45]{figures/try8x8.eps}">
<!-- MATH
$\rotatebox{-90}{\includegraphics[scale=0.45]{figures/try8x8}}$
-->
<IMG
WIDTH="1" HEIGHT="2" ALIGN="BOTTOM" BORDER="0"
SRC="img57.png"
ALT="\rotatebox{-90}{\includegraphics[scale=0.45]{figures/try8x8}}">
</DIV></TD></TR>
</TABLE>
</DIV>
<P>
<FONT SIZE="+1"><B>Usage Example</B></FONT>
Consider the discretization mesh depicted in fig.&nbsp;<A HREF="#fig:try8x8">7</A>,
partitioned among two processes as shown by the dashed line; the data
distribution is such that each process will own 32 entries in the
index space, with a halo made of 8 entries placed at local indices 33
through 40. If process 0 assigns an initial value of 1 to its entries
in the <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> vector, and process 1 assigns a value of 2, then after a
call to <code>psb_halo</code> the contents of the local vectors will be the
following:
<BR>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 ALIGN="CENTER">
<TR><TD ALIGN="CENTER" COLSPAN=3><FONT SIZE="-1">
Process 0</FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="CENTER" COLSPAN=3><FONT SIZE="-1">
Process 1</FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
I </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> GLOB(I) </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> X(I) </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> I </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> GLOB(I) </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> X(I) </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
1 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 1 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
2 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 2 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
3 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 3 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 3 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
4 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 4 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 4 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
6 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 6 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 6 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
7 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 7 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 7 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
8 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 8 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 8 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
9 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 9 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 9 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 41 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
10 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 10 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 10 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 42 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
11 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 11 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 11 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 43 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
12 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 12 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 12 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 44 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
13 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 13 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 13 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 45 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
14 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 14 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 14 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 46 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
15 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 15 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 15 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 47 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
16 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 16 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 16 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 48 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
17 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 17 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 17 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 49 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
18 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 18 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 18 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 50 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
19 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 19 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 19 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 51 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
20 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 20 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 20 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 52 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
21 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 21 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 21 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 53 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
22 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 22 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 22 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 54 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
23 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 23 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 23 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 55 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
24 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 24 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 24 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 56 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 57 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 58 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 59 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 60 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 61 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 62 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 63 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 64 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
</TABLE></DIV>
<BR>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html838"
HREF="node52.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html834"
HREF="node50.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html828"
HREF="node50.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html836"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html839"
HREF="node52.html">psb_ovrl Overlap</A>
<B> Up:</B> <A NAME="tex2html835"
HREF="node50.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html829"
HREF="node50.html">Communication routines</A>
&nbsp; <B> <A NAME="tex2html837"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html837"
HREF="node52.html">psb_halo -- Halo Data Communication</A>
<LI><A NAME="tex2html838"
HREF="node53.html">psb_ovrl -- Overlap Update</A>
<LI><A NAME="tex2html839"
HREF="node54.html">psb_gather -- Gather Global Dense Matrix</A>
<LI><A NAME="tex2html840"
HREF="node55.html">psb_scatter -- Scatter Global Dense Matrix</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_ovrl -- Overlap Update</TITLE>
<META NAME="description" CONTENT="psb_ovrl -- Overlap Update">
<TITLE>psb_halo -- Halo Data Communication</TITLE>
<META NAME="description" CONTENT="psb_halo -- Halo Data Communication">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,57 +20,58 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node53.html">
<LINK REL="previous" HREF="node51.html">
<LINK REL="up" HREF="node50.html">
<LINK REL="up" HREF="node51.html">
<LINK REL="next" HREF="node53.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html850"
<A NAME="tex2html851"
HREF="node53.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html846"
HREF="node50.html">
<A NAME="tex2html847"
HREF="node51.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html840"
<A NAME="tex2html841"
HREF="node51.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html848"
<A NAME="tex2html849"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html851"
HREF="node53.html">psb_gather Gather</A>
<B> Up:</B> <A NAME="tex2html847"
HREF="node50.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html841"
HREF="node51.html">psb_halo Halo</A>
&nbsp; <B> <A NAME="tex2html849"
<B> Next:</B> <A NAME="tex2html852"
HREF="node53.html">psb_ovrl Overlap</A>
<B> Up:</B> <A NAME="tex2html848"
HREF="node51.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html842"
HREF="node51.html">Communication routines</A>
&nbsp; <B> <A NAME="tex2html850"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00062000000000000000">
psb_ovrl -- Overlap Update</A>
<H2><A NAME="SECTION00061000000000000000">
psb_halo -- Halo Data Communication</A>
</H2>
<P>
These subroutines applies an overlap operator to the input vector:
These subroutines gathers the values of the halo
elements, and (optionally) scale the result:
<P>
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
x \leftarrow Q x
x \leftarrow \alpha x
\end{displaymath}
-->
<IMG
WIDTH="55" HEIGHT="27" BORDER="0"
SRC="img59.png"
ALT="\begin{displaymath}x \leftarrow Q x \end{displaymath}">
WIDTH="53" HEIGHT="24" BORDER="0"
SRC="img55.png"
ALT="\begin{displaymath}x \leftarrow \alpha x \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
@ -80,52 +81,42 @@ where:
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></STRONG></DT>
<DD>is the global dense submatrix <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">
</DD>
<DT><STRONG><IMG
WIDTH="16" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img60.png"
ALT="$Q$"></STRONG></DT>
<DD>is the overlap operator; it is the composition of two
operators <IMG
WIDTH="22" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img61.png"
ALT="$ P_a$"> and <IMG
WIDTH="26" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
SRC="img62.png"
ALT="$ P^{T}$">.
<DD>is a global dense submatrix.
</DD>
</DL>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="2930"></A>
<DIV ALIGN="CENTER"><A NAME="2947"></A>
<TABLE>
<CAPTION><STRONG>Table 15:</STRONG>
<CAPTION><STRONG>Table 14:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">, <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Integer</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_ovrl</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_ovrl</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_ovrl</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_ovrl</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
</TABLE>
</DIV>
@ -136,9 +127,9 @@ Data types</CAPTION>
<P>
<PRE>
call psb_ovrl(x, desc_a, info)
call psb_ovrl(x, desc_a, info, update=update_type, work=work)
</PRE>
call psb_halo(x, desc_a, info)
call psb_halo(x, desc_a, info, alpha, work, data)
</PRE>
<P>
<DL>
@ -162,7 +153,7 @@ Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90ovrl">15</A>.
Table&nbsp;<A HREF="#tab:f90halo">14</A>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
@ -175,40 +166,24 @@ Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>update</STRONG></DT>
<DD>Update operator.
<BR><DL>
<DT><STRONG>update = psb_none_</STRONG></DT>
<DD>Do nothing;
</DD>
<DT><STRONG>update = psb_add_</STRONG></DT>
<DD>Sum overlap entries, i.e. apply <IMG
WIDTH="27" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
SRC="img63.png"
ALT="$P^T$">;
</DD>
<DT><STRONG>update = psb_avg_</STRONG></DT>
<DD>Average overlap entries, i.e. apply <IMG
WIDTH="44" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
SRC="img64.png"
ALT="$P_aP^T$">;
</DD>
</DL>
<DT><STRONG>alpha</STRONG></DT>
<DD>the scalar <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">.
<BR>
Scope: <B>global</B>
<BR>
Intent: <B>in</B>.
Type: <B>optional</B>
<BR>
Default: <!-- MATH
$update\_type = psb\_avg\_$
-->
<IMG
WIDTH="166" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img65.png"
ALT="$update\_type = psb\_avg\_ $">
Intent: <B>in</B>.
<BR>
Scope: <B>global</B>
Default: <IMG
WIDTH="72" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img56.png"
ALT="$alpha = 1 $">
<BR>
Specified as: a integer variable.
Specified as: a number of the data type indicated in Table&nbsp;<A HREF="#tab:f90halo">14</A>.
</DD>
<DT><STRONG>work</STRONG></DT>
<DD>the work array.
@ -219,10 +194,21 @@ Type: <B>optional</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a one dimensional array of the same type of <IMG
Specified as: a rank one array of the same type of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
ALT="$x$">.
</DD>
<DT><STRONG>data</STRONG></DT>
<DD>index list selector.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Specified as: an integer. Values:<code>psb_comm_halo_</code>,<code>psb_comm_mov_</code>,
<code>psb_comm_ext_</code>, default: <code>psb_comm_halo_</code>. Chooses the
index list on which to base the data exchange.
<P>
</DD>
@ -241,12 +227,15 @@ Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: an array of rank one or two
Returned as: a rank one or two array
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90ovrl">15</A>.
Table&nbsp;<A HREF="#tab:f90halo">14</A>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<DD>the local portion of result submatrix <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
Scope: <B>local</B>
<BR>
@ -254,80 +243,46 @@ Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
An integer value; 0 means no error has been detected.
An integer value that contains an error code.
</DD>
</DL>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>If there is no overlap in the data distribution associated with
the descriptor, no operations are performed;
</LI>
<LI>The operator <IMG
WIDTH="26" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
SRC="img62.png"
ALT="$ P^{T}$"> performs the reduction sum of overlap
elements; it is a ``prolongation'' operator <IMG
WIDTH="27" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
SRC="img63.png"
ALT="$P^T$"> that
replicates overlap elements, accounting for the physical replication
of data;
</LI>
<LI>The operator <IMG
WIDTH="22" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img61.png"
ALT="$ P_a$"> performs a scaling on the overlap elements by
the amount of replication; thus, when combined with the reduction
operator, it implements the average of replicated elements over all of
their instances.
</LI>
</OL>
<P>
<DIV ALIGN="CENTER"><A NAME="fig:try8x8_ov"></A><A NAME="2932"></A>
<DIV ALIGN="CENTER"><A NAME="fig:try8x8"></A><A NAME="2949"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 8:</STRONG>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 7:</STRONG>
Sample discretization mesh.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<IMG
WIDTH="533" HEIGHT="453" ALIGN="BOTTOM" BORDER="0"
SRC="img67.png"
ALT="\includegraphics[scale=0.65]{figures/try8x8_ov.eps}">
WIDTH="357" HEIGHT="313" ALIGN="BOTTOM" BORDER="0"
SRC="img58.png"
ALT="\includegraphics[scale=0.45]{figures/try8x8.eps}">
<!-- MATH
$\rotatebox{-90}{\includegraphics[scale=0.65]{figures/try8x8_ov}}$
$\rotatebox{-90}{\includegraphics[scale=0.45]{figures/try8x8}}$
-->
<IMG
WIDTH="76" HEIGHT="2" ALIGN="BOTTOM" BORDER="0"
SRC="img66.png"
ALT="\rotatebox{-90}{\includegraphics[scale=0.65]{figures/try8x8_ov}}">
WIDTH="1" HEIGHT="2" ALIGN="BOTTOM" BORDER="0"
SRC="img57.png"
ALT="\rotatebox{-90}{\includegraphics[scale=0.45]{figures/try8x8}}">
</DIV></TD></TR>
</TABLE>
</DIV>
<FONT SIZE="+1"><B>Example of use</B></FONT>
Consider the discretization mesh depicted in fig.&nbsp;<A HREF="#fig:try8x8_ov">8</A>,
partitioned among two processes as shown by the dashed lines, with an
overlap of 1 extra layer with respect to the partition of
fig.&nbsp;<A HREF="node51.html#fig:try8x8">7</A>; the data
distribution is such that each process will own 40 entries in the
index space, with an overlap of 16 entries placed at local indices 25
through 40; the halo will run from local index 41 through local index 48.. If process 0 assigns an initial value of 1 to its entries
<P>
<FONT SIZE="+1"><B>Usage Example</B></FONT>
Consider the discretization mesh depicted in fig.&nbsp;<A HREF="#fig:try8x8">7</A>,
partitioned among two processes as shown by the dashed line; the data
distribution is such that each process will own 32 entries in the
index space, with a halo made of 8 entries placed at local indices 33
through 40. If process 0 assigns an initial value of 1 to its entries
in the <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> vector, and process 1 assigns a value of 2, then after a
call to <code>psb_ovrl</code> with <code>psb_avg_</code> and a call to
<code>psb_halo_</code> the contents of the local vectors will be the
following (showing a transition among the two subdomains)
<P>
call to <code>psb_halo</code> the contents of the local vectors will be the
following:
<BR>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 ALIGN="CENTER">
@ -350,7 +305,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 1 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
2 </FONT></TD>
@ -358,7 +313,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 2 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
3 </FONT></TD>
@ -366,7 +321,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 3 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
4 </FONT></TD>
@ -374,7 +329,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 4 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
5 </FONT></TD>
@ -382,7 +337,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
6 </FONT></TD>
@ -390,7 +345,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 6 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
7 </FONT></TD>
@ -398,7 +353,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 7 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
8 </FONT></TD>
@ -406,7 +361,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 8 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
9 </FONT></TD>
@ -505,7 +460,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
21 </FONT></TD>
21 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 21 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 21 </FONT></TD>
@ -513,7 +468,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
22 </FONT></TD>
22 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 22 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 22 </FONT></TD>
@ -521,7 +476,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
23 </FONT></TD>
23 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 23 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 23 </FONT></TD>
@ -529,7 +484,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
24 </FONT></TD>
24 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 24 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 24 </FONT></TD>
@ -537,195 +492,131 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
25 </FONT></TD>
25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 57 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
26 </FONT></TD>
26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 58 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
27 </FONT></TD>
27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 59 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
28 </FONT></TD>
28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 60 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
29 </FONT></TD>
29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 61 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
30 </FONT></TD>
30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 62 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
31 </FONT></TD>
31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 63 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
32 </FONT></TD>
32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 64 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
33 </FONT></TD>
33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
34 </FONT></TD>
34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
35 </FONT></TD>
35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
36 </FONT></TD>
36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
37 </FONT></TD>
37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
38 </FONT></TD>
38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
39 </FONT></TD>
39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
40 </FONT></TD>
40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
41 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 41 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 41 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 17 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
42 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 42 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 42 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 18 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
43 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 43 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 43 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 19 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
44 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 44 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 44 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 20 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
45 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 45 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 45 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 21 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
46 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 46 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 46 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 22 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
47 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 47 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 47 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 23 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
48 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 48 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 48 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 24 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
</TABLE></DIV>
@ -734,26 +625,26 @@ Process 1</FONT></TD>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html850"
<A NAME="tex2html851"
HREF="node53.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html846"
HREF="node50.html">
<A NAME="tex2html847"
HREF="node51.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html840"
<A NAME="tex2html841"
HREF="node51.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html848"
<A NAME="tex2html849"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html851"
HREF="node53.html">psb_gather Gather</A>
<B> Up:</B> <A NAME="tex2html847"
HREF="node50.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html841"
HREF="node51.html">psb_halo Halo</A>
&nbsp; <B> <A NAME="tex2html849"
<B> Next:</B> <A NAME="tex2html852"
HREF="node53.html">psb_ovrl Overlap</A>
<B> Up:</B> <A NAME="tex2html848"
HREF="node51.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html842"
HREF="node51.html">Communication routines</A>
&nbsp; <B> <A NAME="tex2html850"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_gather -- Gather Global Dense Matrix</TITLE>
<META NAME="description" CONTENT="psb_gather -- Gather Global Dense Matrix">
<TITLE>psb_ovrl -- Overlap Update</TITLE>
<META NAME="description" CONTENT="psb_ovrl -- Overlap Update">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,123 +20,112 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node54.html">
<LINK REL="previous" HREF="node52.html">
<LINK REL="up" HREF="node50.html">
<LINK REL="up" HREF="node51.html">
<LINK REL="next" HREF="node54.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html862"
<A NAME="tex2html863"
HREF="node54.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html858"
HREF="node50.html">
<A NAME="tex2html859"
HREF="node51.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html852"
<A NAME="tex2html853"
HREF="node52.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html860"
<A NAME="tex2html861"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html863"
HREF="node54.html">psb_scatter Scatter</A>
<B> Up:</B> <A NAME="tex2html859"
HREF="node50.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html853"
HREF="node52.html">psb_ovrl Overlap</A>
&nbsp; <B> <A NAME="tex2html861"
<B> Next:</B> <A NAME="tex2html864"
HREF="node54.html">psb_gather Gather</A>
<B> Up:</B> <A NAME="tex2html860"
HREF="node51.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html854"
HREF="node52.html">psb_halo Halo</A>
&nbsp; <B> <A NAME="tex2html862"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00063000000000000000">
psb_gather -- Gather Global Dense Matrix</A>
<H2><A NAME="SECTION00062000000000000000">
psb_ovrl -- Overlap Update</A>
</H2>
<P>
These subroutines collect the portions of global dense matrix
distributed over all process into one single array stored on one
process.
These subroutines applies an overlap operator to the input vector:
<P>
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
glob\_x \leftarrow collect(loc\_x_i)
x \leftarrow Q x
\end{displaymath}
-->
<IMG
WIDTH="162" HEIGHT="28" BORDER="0"
SRC="img68.png"
ALT="\begin{displaymath}glob\_x \leftarrow collect(loc\_x_i) \end{displaymath}">
WIDTH="55" HEIGHT="27" BORDER="0"
SRC="img59.png"
ALT="\begin{displaymath}x \leftarrow Q x \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where:
<DL>
<DT><STRONG><IMG
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img69.png"
ALT="$glob\_x$"></STRONG></DT>
<DD>is the global submatrix <!-- MATH
$glob\_x_{1:m,1:n}$
-->
<IMG
WIDTH="90" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img70.png"
ALT="$glob\_x_{1:m,1:n}$">
</DD>
<DT><STRONG><IMG
WIDTH="44" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img71.png"
ALT="$loc\_x_i$"></STRONG></DT>
<DD>is the local portion of global dense matrix on
process <IMG
WIDTH="9" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$i$">.
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></STRONG></DT>
<DD>is the global dense submatrix <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">
</DD>
<DT><STRONG><IMG
WIDTH="48" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img72.png"
ALT="$collect$"></STRONG></DT>
<DD>is the collect function.
WIDTH="16" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img60.png"
ALT="$Q$"></STRONG></DT>
<DD>is the overlap operator; it is the composition of two
operators <IMG
WIDTH="22" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img61.png"
ALT="$ P_a$"> and <IMG
WIDTH="26" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
SRC="img62.png"
ALT="$ P^{T}$">.
</DD>
</DL>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="2934"></A>
<DIV ALIGN="CENTER"><A NAME="2951"></A>
<TABLE>
<CAPTION><STRONG>Table 16:</STRONG>
<CAPTION><STRONG>Table 15:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="34" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img73.png"
ALT="$x_i, y$"></TD>
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Integer</TD>
<TD ALIGN="LEFT">psb_gather</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_gather</TD>
<TD ALIGN="LEFT">psb_ovrl</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_gather</TD>
<TD ALIGN="LEFT">psb_ovrl</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_gather</TD>
<TD ALIGN="LEFT">psb_ovrl</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_gather</TD>
<TD ALIGN="LEFT">psb_ovrl</TD>
</TR>
</TABLE>
</DIV>
@ -147,9 +136,9 @@ Data types</CAPTION>
<P>
<PRE>
call psb_gather(glob_x, loc_x, desc_a, info, root)
call psb_gather(glob_x, loc_x, desc_a, info, root)
</PRE>
call psb_ovrl(x, desc_a, info)
call psb_ovrl(x, desc_a, info, update=update_type, work=work)
</PRE>
<P>
<DL>
@ -159,21 +148,21 @@ call psb_gather(glob_x, loc_x, desc_a, info, root)
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>loc_x</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img69.png"
ALT="$glob\_x$">.
<DT><STRONG>x</STRONG></DT>
<DD>global dense matrix <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
indicated in Table&nbsp;<A HREF="#tab:gather">16</A>.
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90ovrl">15</A>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
@ -186,43 +175,75 @@ Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>root</STRONG></DT>
<DD>The process that holds the global copy. If <IMG
WIDTH="74" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img74.png"
ALT="$root=-1$"> all
the processes will have a copy of the global vector.
<BR>
<DT><STRONG>update</STRONG></DT>
<DD>Update operator.
<BR><DL>
<DT><STRONG>update = psb_none_</STRONG></DT>
<DD>Do nothing;
</DD>
<DT><STRONG>update = psb_add_</STRONG></DT>
<DD>Sum overlap entries, i.e. apply <IMG
WIDTH="27" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
SRC="img63.png"
ALT="$P^T$">;
</DD>
<DT><STRONG>update = psb_avg_</STRONG></DT>
<DD>Average overlap entries, i.e. apply <IMG
WIDTH="44" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
SRC="img64.png"
ALT="$P_aP^T$">;
</DD>
</DL>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer variable <!-- MATH
$-1\le root\le np-1$
Default: <!-- MATH
$update\_type = psb\_avg\_$
-->
<IMG
WIDTH="141" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img75.png"
ALT="$-1\le root\le np-1$">, default <IMG
WIDTH="24" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img76.png"
ALT="$-1$">.
WIDTH="166" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img65.png"
ALT="$update\_type = psb\_avg\_ $">
<BR>
Scope: <B>global</B>
<BR>
Specified as: a integer variable.
</DD>
<DT><STRONG>work</STRONG></DT>
<DD>the work array.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a one dimensional array of the same type of <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<P>
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>glob_x</STRONG></DT>
<DD>The array where the local parts must be gathered.
<DT><STRONG>x</STRONG></DT>
<DD>global dense result matrix <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
<BR>
Scope: <B>global</B>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array with the <code>ALLOCATABLE</code> attribute.
Specified as: an array of rank one or two
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90ovrl">15</A>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -237,29 +258,502 @@ An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>If there is no overlap in the data distribution associated with
the descriptor, no operations are performed;
</LI>
<LI>The operator <IMG
WIDTH="26" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
SRC="img62.png"
ALT="$ P^{T}$"> performs the reduction sum of overlap
elements; it is a ``prolongation'' operator <IMG
WIDTH="27" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
SRC="img63.png"
ALT="$P^T$"> that
replicates overlap elements, accounting for the physical replication
of data;
</LI>
<LI>The operator <IMG
WIDTH="22" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img61.png"
ALT="$ P_a$"> performs a scaling on the overlap elements by
the amount of replication; thus, when combined with the reduction
operator, it implements the average of replicated elements over all of
their instances.
</LI>
</OL>
<P>
<DIV ALIGN="CENTER"><A NAME="fig:try8x8_ov"></A><A NAME="2953"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 8:</STRONG>
Sample discretization mesh.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<IMG
WIDTH="533" HEIGHT="453" ALIGN="BOTTOM" BORDER="0"
SRC="img67.png"
ALT="\includegraphics[scale=0.65]{figures/try8x8_ov.eps}">
<!-- MATH
$\rotatebox{-90}{\includegraphics[scale=0.65]{figures/try8x8_ov}}$
-->
<IMG
WIDTH="76" HEIGHT="2" ALIGN="BOTTOM" BORDER="0"
SRC="img66.png"
ALT="\rotatebox{-90}{\includegraphics[scale=0.65]{figures/try8x8_ov}}">
</DIV></TD></TR>
</TABLE>
</DIV>
<FONT SIZE="+1"><B>Example of use</B></FONT>
Consider the discretization mesh depicted in fig.&nbsp;<A HREF="#fig:try8x8_ov">8</A>,
partitioned among two processes as shown by the dashed lines, with an
overlap of 1 extra layer with respect to the partition of
fig.&nbsp;<A HREF="node52.html#fig:try8x8">7</A>; the data
distribution is such that each process will own 40 entries in the
index space, with an overlap of 16 entries placed at local indices 25
through 40; the halo will run from local index 41 through local index 48.. If process 0 assigns an initial value of 1 to its entries
in the <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> vector, and process 1 assigns a value of 2, then after a
call to <code>psb_ovrl</code> with <code>psb_avg_</code> and a call to
<code>psb_halo_</code> the contents of the local vectors will be the
following (showing a transition among the two subdomains)
<P>
<BR>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 ALIGN="CENTER">
<TR><TD ALIGN="CENTER" COLSPAN=3><FONT SIZE="-1">
Process 0</FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="CENTER" COLSPAN=3><FONT SIZE="-1">
Process 1</FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
I </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> GLOB(I) </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> X(I) </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> I </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> GLOB(I) </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> X(I) </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
1 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 1 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
2 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 2 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
3 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 3 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 3 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
4 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 4 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 4 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
6 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 6 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 6 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
7 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 7 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 7 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
8 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 8 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 8 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
9 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 9 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 9 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 41 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
10 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 10 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 10 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 42 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
11 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 11 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 11 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 43 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
12 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 12 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 12 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 44 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
13 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 13 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 13 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 45 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
14 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 14 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 14 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 46 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
15 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 15 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 15 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 47 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
16 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 16 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 16 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 48 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
17 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 17 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 17 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 49 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
18 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 18 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 18 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 50 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
19 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 19 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 19 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 51 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
20 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 20 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 20 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 52 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
21 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 21 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 21 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 53 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
22 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 22 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 22 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 54 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
23 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 23 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 23 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 55 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
24 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 24 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 24 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 56 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 57 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 58 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 59 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 60 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 61 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 62 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 63 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 64 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
41 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 41 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 41 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 17 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
42 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 42 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 42 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 18 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
43 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 43 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 43 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 19 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
44 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 44 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 44 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 20 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
45 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 45 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 45 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 21 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
46 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 46 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 46 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 22 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
47 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 47 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 47 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 23 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
48 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 48 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 48 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 24 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
</TABLE></DIV>
<BR>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html862"
<A NAME="tex2html863"
HREF="node54.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html858"
HREF="node50.html">
<A NAME="tex2html859"
HREF="node51.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html852"
<A NAME="tex2html853"
HREF="node52.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html860"
<A NAME="tex2html861"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html863"
HREF="node54.html">psb_scatter Scatter</A>
<B> Up:</B> <A NAME="tex2html859"
HREF="node50.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html853"
HREF="node52.html">psb_ovrl Overlap</A>
&nbsp; <B> <A NAME="tex2html861"
<B> Next:</B> <A NAME="tex2html864"
HREF="node54.html">psb_gather Gather</A>
<B> Up:</B> <A NAME="tex2html860"
HREF="node51.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html854"
HREF="node52.html">psb_halo Halo</A>
&nbsp; <B> <A NAME="tex2html862"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_scatter -- Scatter Global Dense Matrix</TITLE>
<META NAME="description" CONTENT="psb_scatter -- Scatter Global Dense Matrix">
<TITLE>psb_gather -- Gather Global Dense Matrix</TITLE>
<META NAME="description" CONTENT="psb_gather -- Gather Global Dense Matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,59 +18,61 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node55.html">
<LINK REL="previous" HREF="node53.html">
<LINK REL="up" HREF="node50.html">
<LINK REL="up" HREF="node51.html">
<LINK REL="next" HREF="node55.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html872"
<A NAME="tex2html875"
HREF="node55.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html868"
HREF="node50.html">
<A NAME="tex2html871"
HREF="node51.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html864"
<A NAME="tex2html865"
HREF="node53.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html870"
<A NAME="tex2html873"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html873"
HREF="node55.html">Data management routines</A>
<B> Up:</B> <A NAME="tex2html869"
HREF="node50.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html865"
HREF="node53.html">psb_gather Gather</A>
&nbsp; <B> <A NAME="tex2html871"
<B> Next:</B> <A NAME="tex2html876"
HREF="node55.html">psb_scatter Scatter</A>
<B> Up:</B> <A NAME="tex2html872"
HREF="node51.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html866"
HREF="node53.html">psb_ovrl Overlap</A>
&nbsp; <B> <A NAME="tex2html874"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00064000000000000000">
psb_scatter -- Scatter Global Dense Matrix</A>
<H2><A NAME="SECTION00063000000000000000">
psb_gather -- Gather Global Dense Matrix</A>
</H2>
<P>
These subroutines scatters the portions of global dense matrix owned
by a process to all the processes in the processes grid.
These subroutines collect the portions of global dense matrix
distributed over all process into one single array stored on one
process.
<P>
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
loc\_x_i \leftarrow scatter(glob\_x)
glob\_x \leftarrow collect(loc\_x_i)
\end{displaymath}
-->
<IMG
WIDTH="167" HEIGHT="28" BORDER="0"
SRC="img77.png"
ALT="\begin{displaymath}loc\_x_i \leftarrow scatter(glob\_x) \end{displaymath}">
WIDTH="162" HEIGHT="28" BORDER="0"
SRC="img68.png"
ALT="\begin{displaymath}glob\_x \leftarrow collect(loc\_x_i) \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
@ -80,7 +82,7 @@ where:
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img69.png"
ALT="$glob\_x$"></STRONG></DT>
<DD>is the global matrix <!-- MATH
<DD>is the global submatrix <!-- MATH
$glob\_x_{1:m,1:n}$
-->
<IMG
@ -99,18 +101,18 @@ process <IMG
ALT="$i$">.
</DD>
<DT><STRONG><IMG
WIDTH="53" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img78.png"
ALT="$scatter$"></STRONG></DT>
<DD>is the scatter function.
WIDTH="48" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img72.png"
ALT="$collect$"></STRONG></DT>
<DD>is the collect function.
</DD>
</DL>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="2935"></A>
<DIV ALIGN="CENTER"><A NAME="2955"></A>
<TABLE>
<CAPTION><STRONG>Table 17:</STRONG>
<CAPTION><STRONG>Table 16:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
@ -122,19 +124,19 @@ Data types</CAPTION>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Integer</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
<TD ALIGN="LEFT">psb_gather</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
<TD ALIGN="LEFT">psb_gather</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
<TD ALIGN="LEFT">psb_gather</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
<TD ALIGN="LEFT">psb_gather</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
<TD ALIGN="LEFT">psb_gather</TD>
</TR>
</TABLE>
</DIV>
@ -145,8 +147,8 @@ Data types</CAPTION>
<P>
<PRE>
call psb_scatter(glob_x, loc_x, desc_a, info, root)
call psb_scatter(glob_x, loc_x, desc_a, info, root)
call psb_gather(glob_x, loc_x, desc_a, info, root)
call psb_gather(glob_x, loc_x, desc_a, info, root)
</PRE>
<P>
@ -157,16 +159,21 @@ call psb_scatter(glob_x, loc_x, desc_a, info, root)
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>glob_x</STRONG></DT>
<DD>The array that must be scattered into local pieces.
<DT><STRONG>loc_x</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img69.png"
ALT="$glob\_x$">.
<BR>
Scope: <B>global</B>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array.
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
indicated in Table&nbsp;<A HREF="#tab:gather">16</A>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
@ -184,7 +191,7 @@ Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
WIDTH="74" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img74.png"
ALT="$root=-1$"> all
the processes have a copy of the global vector.
the processes will have a copy of the global vector.
<BR>
Scope: <B>global</B>
<BR>
@ -206,21 +213,16 @@ Specified as: an integer variable <!-- MATH
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>loc_x</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img69.png"
ALT="$glob\_x$">.
<DT><STRONG>glob_x</STRONG></DT>
<DD>The array where the local parts must be gathered.
<BR>
Scope: <B>local</B>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
Specified as: a rank one or two array containing numbers of the type
indicated in Table&nbsp;<A HREF="#tab:scatter">17</A>.
Specified as: a rank one or two array with the <code>ALLOCATABLE</code> attribute.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -238,26 +240,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html872"
<A NAME="tex2html875"
HREF="node55.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html868"
HREF="node50.html">
<A NAME="tex2html871"
HREF="node51.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html864"
<A NAME="tex2html865"
HREF="node53.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html870"
<A NAME="tex2html873"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html873"
HREF="node55.html">Data management routines</A>
<B> Up:</B> <A NAME="tex2html869"
HREF="node50.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html865"
HREF="node53.html">psb_gather Gather</A>
&nbsp; <B> <A NAME="tex2html871"
<B> Next:</B> <A NAME="tex2html876"
HREF="node55.html">psb_scatter Scatter</A>
<B> Up:</B> <A NAME="tex2html872"
HREF="node51.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html866"
HREF="node53.html">psb_ovrl Overlap</A>
&nbsp; <B> <A NAME="tex2html874"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Data management routines</TITLE>
<META NAME="description" CONTENT="Data management routines">
<TITLE>psb_scatter -- Scatter Global Dense Matrix</TITLE>
<META NAME="description" CONTENT="psb_scatter -- Scatter Global Dense Matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,114 +18,248 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node83.html">
<LINK REL="previous" HREF="node50.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="previous" HREF="node54.html">
<LINK REL="up" HREF="node51.html">
<LINK REL="next" HREF="node56.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html884"
<A NAME="tex2html885"
HREF="node56.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html880"
HREF="userhtml.html">
<A NAME="tex2html881"
HREF="node51.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html874"
<A NAME="tex2html877"
HREF="node54.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html882"
<A NAME="tex2html883"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html885"
HREF="node56.html">psb_cdall Allocates</A>
<B> Up:</B> <A NAME="tex2html881"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html875"
HREF="node54.html">psb_scatter Scatter</A>
&nbsp; <B> <A NAME="tex2html883"
<B> Next:</B> <A NAME="tex2html886"
HREF="node56.html">Data management routines</A>
<B> Up:</B> <A NAME="tex2html882"
HREF="node51.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html878"
HREF="node54.html">psb_gather Gather</A>
&nbsp; <B> <A NAME="tex2html884"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00070000000000000000"></A>
<A NAME="sec:toolsrout"></A>
<H2><A NAME="SECTION00064000000000000000">
psb_scatter -- Scatter Global Dense Matrix</A>
</H2>
<P>
These subroutines scatters the portions of global dense matrix owned
by a process to all the processes in the processes grid.
<P>
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
loc\_x_i \leftarrow scatter(glob\_x)
\end{displaymath}
-->
<IMG
WIDTH="167" HEIGHT="28" BORDER="0"
SRC="img77.png"
ALT="\begin{displaymath}loc\_x_i \leftarrow scatter(glob\_x) \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where:
<DL>
<DT><STRONG><IMG
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img69.png"
ALT="$glob\_x$"></STRONG></DT>
<DD>is the global matrix <!-- MATH
$glob\_x_{1:m,1:n}$
-->
<IMG
WIDTH="90" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img70.png"
ALT="$glob\_x_{1:m,1:n}$">
</DD>
<DT><STRONG><IMG
WIDTH="44" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img71.png"
ALT="$loc\_x_i$"></STRONG></DT>
<DD>is the local portion of global dense matrix on
process <IMG
WIDTH="9" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$i$">.
</DD>
<DT><STRONG><IMG
WIDTH="53" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img78.png"
ALT="$scatter$"></STRONG></DT>
<DD>is the scatter function.
</DD>
</DL>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="2956"></A>
<TABLE>
<CAPTION><STRONG>Table 17:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="34" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img73.png"
ALT="$x_i, y$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Integer</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
</TR>
</TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR>
Data management routines
</H1>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<PRE>
call psb_scatter(glob_x, loc_x, desc_a, info, root)
call psb_scatter(glob_x, loc_x, desc_a, info, root)
</PRE>
<UL>
<LI><A NAME="tex2html886"
HREF="node56.html">psb_cdall -- Allocates a communication descriptor</A>
<LI><A NAME="tex2html887"
HREF="node57.html">psb_cdins -- Communication descriptor insert routine</A>
<LI><A NAME="tex2html888"
HREF="node58.html">psb_cdasb -- Communication descriptor assembly routine</A>
<LI><A NAME="tex2html889"
HREF="node59.html">psb_cdcpy -- Copies a communication descriptor</A>
<LI><A NAME="tex2html890"
HREF="node60.html">psb_cdfree -- Frees a communication descriptor</A>
<LI><A NAME="tex2html891"
HREF="node61.html">psb_cdbldext -- Build an extended communication
descriptor</A>
<LI><A NAME="tex2html892"
HREF="node62.html">psb_spall -- Allocates a sparse matrix</A>
<LI><A NAME="tex2html893"
HREF="node63.html">psb_spins -- Insert a cloud of elements into a sparse
matrix</A>
<LI><A NAME="tex2html894"
HREF="node64.html">psb_spasb -- Sparse matrix assembly routine</A>
<LI><A NAME="tex2html895"
HREF="node65.html">psb_spfree -- Frees a sparse matrix</A>
<LI><A NAME="tex2html896"
HREF="node66.html">psb_sprn -- Reinit sparse matrix structure for psblas
routines.</A>
<LI><A NAME="tex2html897"
HREF="node67.html">psb_geall -- Allocates a dense matrix</A>
<LI><A NAME="tex2html898"
HREF="node68.html">psb_geins -- Dense matrix insertion routine</A>
<LI><A NAME="tex2html899"
HREF="node69.html">psb_geasb -- Assembly a dense matrix</A>
<LI><A NAME="tex2html900"
HREF="node70.html">psb_gefree -- Frees a dense matrix</A>
<LI><A NAME="tex2html901"
HREF="node71.html">psb_gelp -- Applies a left permutation to a dense
matrix</A>
<LI><A NAME="tex2html902"
HREF="node72.html">psb_glob_to_loc -- Global to local indices
convertion</A>
<LI><A NAME="tex2html903"
HREF="node73.html">psb_loc_to_glob -- Local to global indices
conversion</A>
<LI><A NAME="tex2html904"
HREF="node74.html">psb_is_owned </A>
<LI><A NAME="tex2html905"
HREF="node75.html">psb_owned_index </A>
<LI><A NAME="tex2html906"
HREF="node76.html">psb_is_local </A>
<LI><A NAME="tex2html907"
HREF="node77.html">psb_local_index </A>
<LI><A NAME="tex2html908"
HREF="node78.html">psb_get_boundary -- Extract list of boundary elements</A>
<LI><A NAME="tex2html909"
HREF="node79.html">psb_get_overlap -- Extract list of overlap elements</A>
<LI><A NAME="tex2html910"
HREF="node80.html">psb_sp_getrow -- Extract row(s) from a sparse matrix</A>
<LI><A NAME="tex2html911"
HREF="node81.html">psb_sizeof -- Memory occupation</A>
<LI><A NAME="tex2html912"
HREF="node82.html">Sorting utilities</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>glob_x</STRONG></DT>
<DD>The array that must be scattered into local pieces.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>root</STRONG></DT>
<DD>The process that holds the global copy. If <IMG
WIDTH="74" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img74.png"
ALT="$root=-1$"> all
the processes have a copy of the global vector.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer variable <!-- MATH
$-1\le root\le np-1$
-->
<IMG
WIDTH="141" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img75.png"
ALT="$-1\le root\le np-1$">, default <IMG
WIDTH="24" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img76.png"
ALT="$-1$">.
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>loc_x</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img69.png"
ALT="$glob\_x$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
Specified as: a rank one or two array containing numbers of the type
indicated in Table&nbsp;<A HREF="#tab:scatter">17</A>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html885"
HREF="node56.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html881"
HREF="node51.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html877"
HREF="node54.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html883"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html886"
HREF="node56.html">Data management routines</A>
<B> Up:</B> <A NAME="tex2html882"
HREF="node51.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html878"
HREF="node54.html">psb_gather Gather</A>
&nbsp; <B> <A NAME="tex2html884"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_cdall -- Allocates a communication descriptor</TITLE>
<META NAME="description" CONTENT="psb_cdall -- Allocates a communication descriptor">
<TITLE>Data management routines</TITLE>
<META NAME="description" CONTENT="Data management routines">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,429 +18,114 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node57.html">
<LINK REL="previous" HREF="node55.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="next" HREF="node84.html">
<LINK REL="previous" HREF="node51.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node57.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html923"
<A NAME="tex2html897"
HREF="node57.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html919"
HREF="node55.html">
<A NAME="tex2html893"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html913"
<A NAME="tex2html887"
HREF="node55.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html921"
<A NAME="tex2html895"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html924"
HREF="node57.html">psb_cdins Communication</A>
<B> Up:</B> <A NAME="tex2html920"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html914"
HREF="node55.html">Data management routines</A>
&nbsp; <B> <A NAME="tex2html922"
<B> Next:</B> <A NAME="tex2html898"
HREF="node57.html">psb_cdall Allocates</A>
<B> Up:</B> <A NAME="tex2html894"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html888"
HREF="node55.html">psb_scatter Scatter</A>
&nbsp; <B> <A NAME="tex2html896"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00071000000000000000">
psb_cdall -- Allocates a communication descriptor</A>
</H2>
<P>
<PRE>
call psb_cdall(icontxt, desc_a, info,mg=mg,parts=parts)
call psb_cdall(icontxt, desc_a, info,vg=vg,[mg=mg,flag=flag])
call psb_cdall(icontxt, desc_a, info,vl=vl,[nl=nl,globalcheck=.true.,lidx=lidx])
call psb_cdall(icontxt, desc_a, info,nl=nl)
call psb_cdall(icontxt, desc_a, info,mg=mg,repl=.true.)
</PRE>
<P>
This subroutine initializes the communication descriptor associated
with an index space. One of the optional arguments
<code>parts</code>, <code>vg</code>, <code>vl</code>, <code>nl</code> or <code>repl</code>
must be specified, thereby choosing
the specific initialization strategy.
<DL>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
</DD>
<DT><STRONG>icontxt</STRONG></DT>
<DD>the communication context.
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value.
</DD>
<DT><STRONG>vg</STRONG></DT>
<DD>Data allocation: each index <!-- MATH
$i\in \{1\dots mg\}$
-->
<IMG
WIDTH="99" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img79.png"
ALT="$i\in \{1\dots mg\}$"> is allocated
to process <IMG
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img80.png"
ALT="$vg(i)$">.
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array.
</DD>
<DT><STRONG>flag</STRONG></DT>
<DD>Specifies whether entries in <IMG
WIDTH="21" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img81.png"
ALT="$vg$"> are zero- or one-based.
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value <IMG
WIDTH="27" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img82.png"
ALT="$0,1$">, default <IMG
WIDTH="12" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img83.png"
ALT="$0$">.
<P>
</DD>
<DT><STRONG>mg</STRONG></DT>
<DD>the (global) number of rows of the problem.
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value. It is required if <code>parts</code> or
<code>repl</code> is specified, it is optional if <code>vg</code> is specified.
</DD>
<DT><STRONG>parts</STRONG></DT>
<DD>the subroutine that defines the partitioning scheme.
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a subroutine.
</DD>
<DT><STRONG>vl</STRONG></DT>
<DD>Data allocation: the set of global indices
<IMG
WIDTH="65" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img84.png"
ALT="$vl(1:nl)$"> belonging to the calling process.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array.
</DD>
<DT><STRONG>nl</STRONG></DT>
<DD>Data allocation: in a generalized block-row distribution the
number of indices belonging to the current process.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value. May be specified together with
<code>vl</code>.
</DD>
<DT><STRONG>repl</STRONG></DT>
<DD>Data allocation: build a replicated index space
(i.e. all processes own all indices).
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: the logical value <code>.true.</code>
</DD>
<DT><STRONG>globalcheck</STRONG></DT>
<DD>Data allocation: do global checks on the local
index lists <code>vl</code>
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a logical value, default: <code>.true.</code>
</DD>
<DT><STRONG>lidx</STRONG></DT>
<DD>Data allocation: the set of local indices
<IMG
WIDTH="81" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img85.png"
ALT="$lidx(1:nl)$"> to be assigned to the global indices <IMG
WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img86.png"
ALT="$vl$">.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array.
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>out</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<H1><A NAME="SECTION00070000000000000000"></A>
<A NAME="sec:toolsrout"></A>
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
Data management routines
</H1>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<OL>
<LI>One of the optional arguments <code>parts</code>, <code>vg</code>,
<code>vl</code>, <code>nl</code> or <code>repl</code> must be specified, thereby choosing the
initialization strategy as follows:
<DL>
<DT><STRONG>parts</STRONG></DT>
<DD>In this case we have a subroutine specifying the mapping
between global indices and process/local index pairs. If this
optional argument is specified, then it is mandatory to
specify the argument <code>mg</code> as well.
The subroutine must conform to the following interface:
<PRE>
interface
subroutine psb_parts(glob_index,mg,np,pv,nv)
integer, intent (in) :: glob_index,np,mg
integer, intent (out) :: nv, pv(*)
end subroutine psb_parts
end interface
</PRE>
The input arguments are:
<DL>
<DT><STRONG>glob_index</STRONG></DT>
<DD>The global index to be mapped;
</DD>
<DT><STRONG>np</STRONG></DT>
<DD>The number of processes in the mapping;
</DD>
<DT><STRONG>mg</STRONG></DT>
<DD>The total number of global rows in the mapping;
</DD>
</DL>
The output arguments are:
<DL>
<DT><STRONG>nv</STRONG></DT>
<DD>The number of entries in <code>pv</code>;
</DD>
<DT><STRONG>pv</STRONG></DT>
<DD>A vector containing the indices of the processes to
which the global index should be assigend; each entry must satisfy
<!-- MATH
$0\le pv(i) < np$
-->
<IMG
WIDTH="107" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img87.png"
ALT="$0\le pv(i) &lt; np$">; if <IMG
WIDTH="51" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$nv&gt;1$"> we have an index assigned to multiple
processes, i.e. we have an overlap among the subdomains.
</DD>
</DL>
</DD>
<DT><STRONG>vg</STRONG></DT>
<DD>In this case the association between an index and a process
is specified via an integer vector <code>vg(1:mg)</code>;
each index <!-- MATH
$i \in \{1\dots mg\}$
-->
<IMG
WIDTH="99" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img79.png"
ALT="$i\in \{1\dots mg\}$"> is assigned to process <IMG
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img80.png"
ALT="$vg(i)$">.
The vector <code>vg</code> must be identical on all
calling processes; its entries may have the ranges <IMG
WIDTH="94" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img89.png"
ALT="$(0\dots np-1)$">
or <IMG
WIDTH="65" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img90.png"
ALT="$(1\dots np)$"> according to the value of <code>flag</code>.
The size <IMG
WIDTH="27" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img91.png"
ALT="$mg$"> may be specified via the optional argument <code>mg</code>;
the default is to use the entire vector <code>vg</code>, thus having
<code>mg=size(vg)</code>.
</DD>
<DT><STRONG>vl</STRONG></DT>
<DD>In this case we are specifying the list of indices
<code>vl(1:nl)</code> assigned to the current process; thus, the global
problem size <IMG
WIDTH="27" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img91.png"
ALT="$mg$"> is given by
the range of the aggregate of the individual vectors <code>vl</code> specified
in the calling processes. The size may be specified via the optional
argument <code>nl</code>; the default is to use the entire vector
<code>vl</code>, thus having <code>nl=size(vl)</code>.
If <code>globalcheck=.true.</code> the subroutine will check how many
times each entry in the global index space <IMG
WIDTH="70" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img92.png"
ALT="$(1\dots mg)$"> is
specified in the input lists <code>vl</code>, thus allowing for the
presence of overlap in the input, and checking for ``orphan''
indices. If <code>globalcheck=.false.</code>, the subroutine will not
check for overlap, and may be significantly faster, but the user
is implicitly guaranteeing that there are neither orphan nor
overlap indices. The optional argument <code>lidx</code> is available for
those cases in which the user has already established a
global-to-local mapping; if it is specified, each index in
<code>vl(i)</code> will be mapped to the corresponding local index
<code>lidx(i)</code>.
</DD>
<DT><STRONG>nl</STRONG></DT>
<DD>If this argument is specified alone (i.e. without <code>vl</code>)
the result is a generalized row-block distribution in which each
process <IMG
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img93.png"
ALT="$I$"> gets assigned a consecutive chunk of <IMG
WIDTH="60" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img94.png"
ALT="$N_I=nl$"> global
indices.
</DD>
<DT><STRONG>repl</STRONG></DT>
<DD>This arguments specifies to replicate all indices on
all processes. This is a special purpose data allocation that is
useful in the construction of some multilevel preconditioners.
</DD>
</DL>
</LI>
<LI>On exit from this routine the descriptor is in the build
state.
</LI>
<LI>Calling the routine with <code>vg</code> or <code>parts</code> implies that
every process will scan the entire index space to figure out the
local indices.
</LI>
<LI>Overlapped indices are possible with both <code>parts</code> and
<code>vl</code> invocations.
</LI>
<LI>When the subroutine is invoked with <code>vl</code> in
conjunction with <code>globalcheck=.true.</code>, it will perform a scan
of the index space to search for overlap or orphan indices.
</LI>
<LI>When the subroutine is invoked with <code>vl</code> in
conjunction with <code>globalcheck=.false.</code>, no index space scan
will take place. Thus it is the responsibility of the user to make
sure that the indices specified in <code>vl</code> have neither orphans nor
overlaps; if this assumption fails, results will be
unpredictable.
</LI>
<LI>Orphan and overlap indices are
impossible by construction when the subroutine is invoked with
<code>nl</code> (alone), or <code>vg</code>.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html923"
HREF="node57.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html919"
HREF="node55.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html913"
HREF="node55.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html921"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html924"
HREF="node57.html">psb_cdins Communication</A>
<B> Up:</B> <A NAME="tex2html920"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html914"
HREF="node55.html">Data management routines</A>
&nbsp; <B> <A NAME="tex2html922"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
<UL>
<LI><A NAME="tex2html899"
HREF="node57.html">psb_cdall -- Allocates a communication descriptor</A>
<LI><A NAME="tex2html900"
HREF="node58.html">psb_cdins -- Communication descriptor insert routine</A>
<LI><A NAME="tex2html901"
HREF="node59.html">psb_cdasb -- Communication descriptor assembly routine</A>
<LI><A NAME="tex2html902"
HREF="node60.html">psb_cdcpy -- Copies a communication descriptor</A>
<LI><A NAME="tex2html903"
HREF="node61.html">psb_cdfree -- Frees a communication descriptor</A>
<LI><A NAME="tex2html904"
HREF="node62.html">psb_cdbldext -- Build an extended communication
descriptor</A>
<LI><A NAME="tex2html905"
HREF="node63.html">psb_spall -- Allocates a sparse matrix</A>
<LI><A NAME="tex2html906"
HREF="node64.html">psb_spins -- Insert a cloud of elements into a sparse
matrix</A>
<LI><A NAME="tex2html907"
HREF="node65.html">psb_spasb -- Sparse matrix assembly routine</A>
<LI><A NAME="tex2html908"
HREF="node66.html">psb_spfree -- Frees a sparse matrix</A>
<LI><A NAME="tex2html909"
HREF="node67.html">psb_sprn -- Reinit sparse matrix structure for psblas
routines.</A>
<LI><A NAME="tex2html910"
HREF="node68.html">psb_geall -- Allocates a dense matrix</A>
<LI><A NAME="tex2html911"
HREF="node69.html">psb_geins -- Dense matrix insertion routine</A>
<LI><A NAME="tex2html912"
HREF="node70.html">psb_geasb -- Assembly a dense matrix</A>
<LI><A NAME="tex2html913"
HREF="node71.html">psb_gefree -- Frees a dense matrix</A>
<LI><A NAME="tex2html914"
HREF="node72.html">psb_gelp -- Applies a left permutation to a dense
matrix</A>
<LI><A NAME="tex2html915"
HREF="node73.html">psb_glob_to_loc -- Global to local indices
convertion</A>
<LI><A NAME="tex2html916"
HREF="node74.html">psb_loc_to_glob -- Local to global indices
conversion</A>
<LI><A NAME="tex2html917"
HREF="node75.html">psb_is_owned </A>
<LI><A NAME="tex2html918"
HREF="node76.html">psb_owned_index </A>
<LI><A NAME="tex2html919"
HREF="node77.html">psb_is_local </A>
<LI><A NAME="tex2html920"
HREF="node78.html">psb_local_index </A>
<LI><A NAME="tex2html921"
HREF="node79.html">psb_get_boundary -- Extract list of boundary elements</A>
<LI><A NAME="tex2html922"
HREF="node80.html">psb_get_overlap -- Extract list of overlap elements</A>
<LI><A NAME="tex2html923"
HREF="node81.html">psb_sp_getrow -- Extract row(s) from a sparse matrix</A>
<LI><A NAME="tex2html924"
HREF="node82.html">psb_sizeof -- Memory occupation</A>
<LI><A NAME="tex2html925"
HREF="node83.html">Sorting utilities</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_cdins -- Communication descriptor insert routine</TITLE>
<META NAME="description" CONTENT="psb_cdins -- Communication descriptor insert routine">
<TITLE>psb_cdall -- Allocates a communication descriptor</TITLE>
<META NAME="description" CONTENT="psb_cdall -- Allocates a communication descriptor">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,98 +20,207 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node58.html">
<LINK REL="previous" HREF="node56.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node58.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html935"
<A NAME="tex2html936"
HREF="node58.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html931"
HREF="node55.html">
<A NAME="tex2html932"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html925"
<A NAME="tex2html926"
HREF="node56.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html933"
<A NAME="tex2html934"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html936"
HREF="node58.html">psb_cdasb Communication</A>
<B> Up:</B> <A NAME="tex2html932"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html926"
HREF="node56.html">psb_cdall Allocates</A>
&nbsp; <B> <A NAME="tex2html934"
<B> Next:</B> <A NAME="tex2html937"
HREF="node58.html">psb_cdins Communication</A>
<B> Up:</B> <A NAME="tex2html933"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html927"
HREF="node56.html">Data management routines</A>
&nbsp; <B> <A NAME="tex2html935"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00072000000000000000">
psb_cdins -- Communication descriptor insert routine</A>
<H2><A NAME="SECTION00071000000000000000">
psb_cdall -- Allocates a communication descriptor</A>
</H2>
<P>
<PRE>
call psb_cdins(nz, ia, ja, desc_a, info)
call psb_cdall(icontxt, desc_a, info,mg=mg,parts=parts)
call psb_cdall(icontxt, desc_a, info,vg=vg,[mg=mg,flag=flag])
call psb_cdall(icontxt, desc_a, info,vl=vl,[nl=nl,globalcheck=.true.,lidx=lidx])
call psb_cdall(icontxt, desc_a, info,nl=nl)
call psb_cdall(icontxt, desc_a, info,mg=mg,repl=.true.)
</PRE>
<P>
This subroutine examines the edges of the graph associated with the
discretization mesh (and isomorphic to the sparsity pattern of a
linear system coefficient matrix), storing them as necessary into the
communication descriptor.
<P>
This subroutine initializes the communication descriptor associated
with an index space. One of the optional arguments
<code>parts</code>, <code>vg</code>, <code>vl</code>, <code>nl</code> or <code>repl</code>
must be specified, thereby choosing
the specific initialization strategy.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>nz</STRONG></DT>
<DD>the number of points being inserted.
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
</DD>
<DT><STRONG>icontxt</STRONG></DT>
<DD>the communication context.
<BR>
Scope: <B>local</B>.
Scope:<B>global</B>.
<BR>
Type: <B>required</B>.
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value.
</DD>
<DT><STRONG>ia</STRONG></DT>
<DD>the indices of the starting vertex of the edges being inserted.
<DT><STRONG>vg</STRONG></DT>
<DD>Data allocation: each index <!-- MATH
$i\in \{1\dots mg\}$
-->
<IMG
WIDTH="99" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img79.png"
ALT="$i\in \{1\dots mg\}$"> is allocated
to process <IMG
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img80.png"
ALT="$vg(i)$">.
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array.
</DD>
<DT><STRONG>flag</STRONG></DT>
<DD>Specifies whether entries in <IMG
WIDTH="21" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img81.png"
ALT="$vg$"> are zero- or one-based.
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value <IMG
WIDTH="27" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img82.png"
ALT="$0,1$">, default <IMG
WIDTH="12" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img83.png"
ALT="$0$">.
<P>
</DD>
<DT><STRONG>mg</STRONG></DT>
<DD>the (global) number of rows of the problem.
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value. It is required if <code>parts</code> or
<code>repl</code> is specified, it is optional if <code>vg</code> is specified.
</DD>
<DT><STRONG>parts</STRONG></DT>
<DD>the subroutine that defines the partitioning scheme.
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a subroutine.
</DD>
<DT><STRONG>vl</STRONG></DT>
<DD>Data allocation: the set of global indices
<IMG
WIDTH="65" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img84.png"
ALT="$vl(1:nl)$"> belonging to the calling process.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array.
</DD>
<DT><STRONG>nl</STRONG></DT>
<DD>Data allocation: in a generalized block-row distribution the
number of indices belonging to the current process.
<BR>
Scope: <B>local</B>.
Scope:<B>local</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value. May be specified together with
<code>vl</code>.
</DD>
<DT><STRONG>repl</STRONG></DT>
<DD>Data allocation: build a replicated index space
(i.e. all processes own all indices).
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Type: <B>required</B>.
Specified as: the logical value <code>.true.</code>
</DD>
<DT><STRONG>globalcheck</STRONG></DT>
<DD>Data allocation: do global checks on the local
index lists <code>vl</code>
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array of length <IMG
WIDTH="22" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img95.png"
ALT="$nz$">.
Specified as: a logical value, default: <code>.true.</code>
</DD>
<DT><STRONG>ja</STRONG></DT>
<DD>the indices of the end vertex of the edges being inserted.
<DT><STRONG>lidx</STRONG></DT>
<DD>Data allocation: the set of local indices
<IMG
WIDTH="81" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img85.png"
ALT="$lidx(1:nl)$"> to be assigned to the global indices <IMG
WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img86.png"
ALT="$vl$">.
<BR>
Scope: <B>local</B>.
Scope:<B>local</B>.
<BR>
Type: <B>required</B>.
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array of length <IMG
WIDTH="22" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img95.png"
ALT="$nz$">.
Specified as: an integer array.
</DD>
</DL>
@ -121,13 +230,13 @@ Specified as: an integer array of length <IMG
<DD>
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the updated communication descriptor.
<DD>the communication descriptor.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>inout</B>.
Intent: <B>out</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
@ -143,48 +252,193 @@ Intent: <B>out</B>.
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>This routine may only be called if the descriptor is in the
build state;
</LI>
<LI>This routine automatically ignores edges that do not
insist on the current process, i.e. edges for which neither the starting
nor the end vertex belong to the current process.
</LI>
<LI>There exists another interface for this routine
<LI>One of the optional arguments <code>parts</code>, <code>vg</code>,
<code>vl</code>, <code>nl</code> or <code>repl</code> must be specified, thereby choosing the
initialization strategy as follows:
<DL>
<DT><STRONG>parts</STRONG></DT>
<DD>In this case we have a subroutine specifying the mapping
between global indices and process/local index pairs. If this
optional argument is specified, then it is mandatory to
specify the argument <code>mg</code> as well.
The subroutine must conform to the following interface:
<PRE>
call psb_cdins(nz, ja, desc_a, info)
interface
subroutine psb_parts(glob_index,mg,np,pv,nv)
integer, intent (in) :: glob_index,np,mg
integer, intent (out) :: nv, pv(*)
end subroutine psb_parts
end interface
</PRE>
which will digest all entries in <code>ja</code> and add them to the
communication requirements.
The input arguments are:
<DL>
<DT><STRONG>glob_index</STRONG></DT>
<DD>The global index to be mapped;
</DD>
<DT><STRONG>np</STRONG></DT>
<DD>The number of processes in the mapping;
</DD>
<DT><STRONG>mg</STRONG></DT>
<DD>The total number of global rows in the mapping;
</DD>
</DL>
The output arguments are:
<DL>
<DT><STRONG>nv</STRONG></DT>
<DD>The number of entries in <code>pv</code>;
</DD>
<DT><STRONG>pv</STRONG></DT>
<DD>A vector containing the indices of the processes to
which the global index should be assigend; each entry must satisfy
<!-- MATH
$0\le pv(i) < np$
-->
<IMG
WIDTH="107" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img87.png"
ALT="$0\le pv(i) &lt; np$">; if <IMG
WIDTH="51" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$nv&gt;1$"> we have an index assigned to multiple
processes, i.e. we have an overlap among the subdomains.
</DD>
</DL>
</DD>
<DT><STRONG>vg</STRONG></DT>
<DD>In this case the association between an index and a process
is specified via an integer vector <code>vg(1:mg)</code>;
each index <!-- MATH
$i \in \{1\dots mg\}$
-->
<IMG
WIDTH="99" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img79.png"
ALT="$i\in \{1\dots mg\}$"> is assigned to process <IMG
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img80.png"
ALT="$vg(i)$">.
The vector <code>vg</code> must be identical on all
calling processes; its entries may have the ranges <IMG
WIDTH="94" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img89.png"
ALT="$(0\dots np-1)$">
or <IMG
WIDTH="65" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img90.png"
ALT="$(1\dots np)$"> according to the value of <code>flag</code>.
The size <IMG
WIDTH="27" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img91.png"
ALT="$mg$"> may be specified via the optional argument <code>mg</code>;
the default is to use the entire vector <code>vg</code>, thus having
<code>mg=size(vg)</code>.
</DD>
<DT><STRONG>vl</STRONG></DT>
<DD>In this case we are specifying the list of indices
<code>vl(1:nl)</code> assigned to the current process; thus, the global
problem size <IMG
WIDTH="27" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img91.png"
ALT="$mg$"> is given by
the range of the aggregate of the individual vectors <code>vl</code> specified
in the calling processes. The size may be specified via the optional
argument <code>nl</code>; the default is to use the entire vector
<code>vl</code>, thus having <code>nl=size(vl)</code>.
If <code>globalcheck=.true.</code> the subroutine will check how many
times each entry in the global index space <IMG
WIDTH="70" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img92.png"
ALT="$(1\dots mg)$"> is
specified in the input lists <code>vl</code>, thus allowing for the
presence of overlap in the input, and checking for ``orphan''
indices. If <code>globalcheck=.false.</code>, the subroutine will not
check for overlap, and may be significantly faster, but the user
is implicitly guaranteeing that there are neither orphan nor
overlap indices. The optional argument <code>lidx</code> is available for
those cases in which the user has already established a
global-to-local mapping; if it is specified, each index in
<code>vl(i)</code> will be mapped to the corresponding local index
<code>lidx(i)</code>.
</DD>
<DT><STRONG>nl</STRONG></DT>
<DD>If this argument is specified alone (i.e. without <code>vl</code>)
the result is a generalized row-block distribution in which each
process <IMG
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img93.png"
ALT="$I$"> gets assigned a consecutive chunk of <IMG
WIDTH="60" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img94.png"
ALT="$N_I=nl$"> global
indices.
</DD>
<DT><STRONG>repl</STRONG></DT>
<DD>This arguments specifies to replicate all indices on
all processes. This is a special purpose data allocation that is
useful in the construction of some multilevel preconditioners.
</DD>
</DL>
</LI>
<LI>On exit from this routine the descriptor is in the build
state.
</LI>
<LI>Calling the routine with <code>vg</code> or <code>parts</code> implies that
every process will scan the entire index space to figure out the
local indices.
</LI>
<LI>Overlapped indices are possible with both <code>parts</code> and
<code>vl</code> invocations.
</LI>
<LI>When the subroutine is invoked with <code>vl</code> in
conjunction with <code>globalcheck=.true.</code>, it will perform a scan
of the index space to search for overlap or orphan indices.
</LI>
<LI>When the subroutine is invoked with <code>vl</code> in
conjunction with <code>globalcheck=.false.</code>, no index space scan
will take place. Thus it is the responsibility of the user to make
sure that the indices specified in <code>vl</code> have neither orphans nor
overlaps; if this assumption fails, results will be
unpredictable.
</LI>
<LI>Orphan and overlap indices are
impossible by construction when the subroutine is invoked with
<code>nl</code> (alone), or <code>vg</code>.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html935"
<A NAME="tex2html936"
HREF="node58.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html931"
HREF="node55.html">
<A NAME="tex2html932"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html925"
<A NAME="tex2html926"
HREF="node56.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html933"
<A NAME="tex2html934"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html936"
HREF="node58.html">psb_cdasb Communication</A>
<B> Up:</B> <A NAME="tex2html932"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html926"
HREF="node56.html">psb_cdall Allocates</A>
&nbsp; <B> <A NAME="tex2html934"
<B> Next:</B> <A NAME="tex2html937"
HREF="node58.html">psb_cdins Communication</A>
<B> Up:</B> <A NAME="tex2html933"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html927"
HREF="node56.html">Data management routines</A>
&nbsp; <B> <A NAME="tex2html935"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_cdasb -- Communication descriptor assembly routine</TITLE>
<META NAME="description" CONTENT="psb_cdasb -- Communication descriptor assembly routine">
<TITLE>psb_cdins -- Communication descriptor insert routine</TITLE>
<META NAME="description" CONTENT="psb_cdins -- Communication descriptor insert routine">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,64 +20,98 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node59.html">
<LINK REL="previous" HREF="node57.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node59.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html947"
<A NAME="tex2html948"
HREF="node59.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html943"
HREF="node55.html">
<A NAME="tex2html944"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html937"
<A NAME="tex2html938"
HREF="node57.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html945"
<A NAME="tex2html946"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html948"
HREF="node59.html">psb_cdcpy Copies</A>
<B> Up:</B> <A NAME="tex2html944"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html938"
HREF="node57.html">psb_cdins Communication</A>
&nbsp; <B> <A NAME="tex2html946"
<B> Next:</B> <A NAME="tex2html949"
HREF="node59.html">psb_cdasb Communication</A>
<B> Up:</B> <A NAME="tex2html945"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html939"
HREF="node57.html">psb_cdall Allocates</A>
&nbsp; <B> <A NAME="tex2html947"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00073000000000000000">
psb_cdasb -- Communication descriptor assembly routine</A>
<H2><A NAME="SECTION00072000000000000000">
psb_cdins -- Communication descriptor insert routine</A>
</H2>
<P>
<PRE>
call psb_cdasb(desc_a, info)
call psb_cdins(nz, ia, ja, desc_a, info)
</PRE>
<P>
This subroutine examines the edges of the graph associated with the
discretization mesh (and isomorphic to the sparsity pattern of a
linear system coefficient matrix), storing them as necessary into the
communication descriptor.
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<DT><STRONG>nz</STRONG></DT>
<DD>the number of points being inserted.
<BR>
Scope:<B>local</B>.
Scope: <B>local</B>.
<BR>
Type:<B>required</B>.
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
Specified as: an integer value.
</DD>
<DT><STRONG>ia</STRONG></DT>
<DD>the indices of the starting vertex of the edges being inserted.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array of length <IMG
WIDTH="22" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img95.png"
ALT="$nz$">.
</DD>
<DT><STRONG>ja</STRONG></DT>
<DD>the indices of the end vertex of the edges being inserted.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array of length <IMG
WIDTH="22" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img95.png"
ALT="$nz$">.
</DD>
</DL>
@ -87,7 +121,7 @@ Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
<DD>
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<DD>the updated communication descriptor.
<BR>
Scope:<B>local</B>.
<BR>
@ -112,13 +146,47 @@ An integer value; 0 means no error has been detected.
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>On exit from this routine the descriptor is in the assembled
state.
<LI>This routine may only be called if the descriptor is in the
build state;
</LI>
<LI>This routine automatically ignores edges that do not
insist on the current process, i.e. edges for which neither the starting
nor the end vertex belong to the current process.
</LI>
<LI>There exists another interface for this routine
<PRE>
call psb_cdins(nz, ja, desc_a, info)
</PRE>
which will digest all entries in <code>ja</code> and add them to the
communication requirements.
</LI>
</OL>
<P>
<BR><HR>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html948"
HREF="node59.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html944"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html938"
HREF="node57.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html946"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html949"
HREF="node59.html">psb_cdasb Communication</A>
<B> Up:</B> <A NAME="tex2html945"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html939"
HREF="node57.html">psb_cdall Allocates</A>
&nbsp; <B> <A NAME="tex2html947"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_cdcpy -- Copies a communication descriptor</TITLE>
<META NAME="description" CONTENT="psb_cdcpy -- Copies a communication descriptor">
<TITLE>psb_cdasb -- Communication descriptor assembly routine</TITLE>
<META NAME="description" CONTENT="psb_cdasb -- Communication descriptor assembly routine">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,66 +20,64 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node60.html">
<LINK REL="previous" HREF="node58.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node60.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html959"
<A NAME="tex2html960"
HREF="node60.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html955"
HREF="node55.html">
<A NAME="tex2html956"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html949"
<A NAME="tex2html950"
HREF="node58.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html957"
<A NAME="tex2html958"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html960"
HREF="node60.html">psb_cdfree Frees</A>
<B> Up:</B> <A NAME="tex2html956"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html950"
HREF="node58.html">psb_cdasb Communication</A>
&nbsp; <B> <A NAME="tex2html958"
<B> Next:</B> <A NAME="tex2html961"
HREF="node60.html">psb_cdcpy Copies</A>
<B> Up:</B> <A NAME="tex2html957"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html951"
HREF="node58.html">psb_cdins Communication</A>
&nbsp; <B> <A NAME="tex2html959"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00074000000000000000">
psb_cdcpy -- Copies a communication descriptor</A>
<H2><A NAME="SECTION00073000000000000000">
psb_cdasb -- Communication descriptor assembly routine</A>
</H2>
<P>
<PRE>
call psb_cdcpy(desc_in, desc_out, info)
call psb_cdasb(desc_a, info)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>desc_in</STRONG></DT>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
Intent: <B>inout</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
<P>
</DD>
</DL>
@ -88,14 +86,14 @@ Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>desc_out</STRONG></DT>
<DD>the communication descriptor copy.
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>out</B>.
Intent: <B>inout</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
@ -111,6 +109,13 @@ Intent: <B>out</B>.
An integer value; 0 means no error has been detected.
</DD>
</DL>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>On exit from this routine the descriptor is in the assembled
state.
</LI>
</OL>
<P>
<BR><HR>

@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node7.html">
<LINK REL="next" HREF="node8.html">
<LINK REL="previous" HREF="node5.html">
<LINK REL="up" HREF="node3.html">
<LINK REL="next" HREF="node7.html">
@ -26,33 +26,35 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html246"
<A NAME="tex2html248"
HREF="node7.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html242"
<A NAME="tex2html244"
HREF="node3.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html236"
<A NAME="tex2html238"
HREF="node5.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html244"
<A NAME="tex2html246"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html247"
HREF="node7.html">Programming model</A>
<B> Up:</B> <A NAME="tex2html243"
<B> Next:</B> <A NAME="tex2html249"
HREF="node7.html">User-defined index mappings</A>
<B> Up:</B> <A NAME="tex2html245"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html237"
<B> Previous:</B> <A NAME="tex2html239"
HREF="node5.html">Library contents</A>
&nbsp; <B> <A NAME="tex2html245"
&nbsp; <B> <A NAME="tex2html247"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00033000000000000000">
Application structure</A>
<H2><A NAME="SECTION00033000000000000000"></A>
<A NAME="sec:appstruct"></A>
<BR>
Application structure
</H2>
<P>
@ -242,28 +244,37 @@ doubling of memory occupation, and thus would be almost always far
from optimal.
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html250"
HREF="node7.html">User-defined index mappings</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html246"
<A NAME="tex2html248"
HREF="node7.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html242"
<A NAME="tex2html244"
HREF="node3.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html236"
<A NAME="tex2html238"
HREF="node5.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html244"
<A NAME="tex2html246"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html247"
HREF="node7.html">Programming model</A>
<B> Up:</B> <A NAME="tex2html243"
<B> Next:</B> <A NAME="tex2html249"
HREF="node7.html">User-defined index mappings</A>
<B> Up:</B> <A NAME="tex2html245"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html237"
<B> Previous:</B> <A NAME="tex2html239"
HREF="node5.html">Library contents</A>
&nbsp; <B> <A NAME="tex2html245"
&nbsp; <B> <A NAME="tex2html247"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_cdfree -- Frees a communication descriptor</TITLE>
<META NAME="description" CONTENT="psb_cdfree -- Frees a communication descriptor">
<TITLE>psb_cdcpy -- Copies a communication descriptor</TITLE>
<META NAME="description" CONTENT="psb_cdcpy -- Copies a communication descriptor">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,64 +20,66 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node61.html">
<LINK REL="previous" HREF="node59.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node61.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html971"
<A NAME="tex2html972"
HREF="node61.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html967"
HREF="node55.html">
<A NAME="tex2html968"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html961"
<A NAME="tex2html962"
HREF="node59.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html969"
<A NAME="tex2html970"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html972"
HREF="node61.html">psb_cdbldext Build</A>
<B> Up:</B> <A NAME="tex2html968"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html962"
HREF="node59.html">psb_cdcpy Copies</A>
&nbsp; <B> <A NAME="tex2html970"
<B> Next:</B> <A NAME="tex2html973"
HREF="node61.html">psb_cdfree Frees</A>
<B> Up:</B> <A NAME="tex2html969"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html963"
HREF="node59.html">psb_cdasb Communication</A>
&nbsp; <B> <A NAME="tex2html971"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00075000000000000000">
psb_cdfree -- Frees a communication descriptor</A>
<H2><A NAME="SECTION00074000000000000000">
psb_cdcpy -- Copies a communication descriptor</A>
</H2>
<P>
<PRE>
call psb_cdfree(desc_a, info)
call psb_cdcpy(desc_in, desc_out, info)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor to be freed.
<DT><STRONG>desc_in</STRONG></DT>
<DD>the communication descriptor.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>inout</B>.
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
<P>
</DD>
</DL>
@ -86,6 +88,17 @@ Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>desc_out</STRONG></DT>
<DD>the communication descriptor copy.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>out</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_cdbldext -- Build an extended communication descriptor</TITLE>
<META NAME="description" CONTENT="psb_cdbldext -- Build an extended communication descriptor">
<TITLE>psb_cdfree -- Frees a communication descriptor</TITLE>
<META NAME="description" CONTENT="psb_cdfree -- Frees a communication descriptor">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,51 +20,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node62.html">
<LINK REL="previous" HREF="node60.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node62.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html983"
<A NAME="tex2html984"
HREF="node62.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html979"
HREF="node55.html">
<A NAME="tex2html980"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html973"
<A NAME="tex2html974"
HREF="node60.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html981"
<A NAME="tex2html982"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html984"
HREF="node62.html">psb_spall Allocates</A>
<B> Up:</B> <A NAME="tex2html980"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html974"
HREF="node60.html">psb_cdfree Frees</A>
&nbsp; <B> <A NAME="tex2html982"
<B> Next:</B> <A NAME="tex2html985"
HREF="node62.html">psb_cdbldext Build</A>
<B> Up:</B> <A NAME="tex2html981"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html975"
HREF="node60.html">psb_cdcpy Copies</A>
&nbsp; <B> <A NAME="tex2html983"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00076000000000000000">
psb_cdbldext -- Build an extended communication
descriptor</A>
<H2><A NAME="SECTION00075000000000000000">
psb_cdfree -- Frees a communication descriptor</A>
</H2>
<P>
<PRE>
call psb_cdbldext(a,desc_a,nl,desc_out, info, extype)
call psb_cdfree(desc_a, info)
</PRE>
<P>
This subroutine builds an extended communication descriptor, based on
the input descriptor <code>desc_a</code> and on the stencil specified
through the input sparse matrix <code>a</code>.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
@ -72,54 +68,16 @@ through the input sparse matrix <code>a</code>.
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>A sparse matrix
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data type.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<DD>the communication descriptor to be freed.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>nl</STRONG></DT>
<DD>the number of additional layers desired.
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value <IMG
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img96.png"
ALT="$nl\ge 0$">.
</DD>
<DT><STRONG>extype</STRONG></DT>
<DD>the kind of estension required.
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>optional </B>.
<BR>
Intent: <B>in</B>.
Intent: <B>inout</B>.
<BR>
Specified as: an integer value
<code>psb_ovt_xhal_</code>, <code>psb_ovt_asov_</code>, default: <code>psb_ovt_xhal_</code>
<P>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
</DL>
@ -128,17 +86,6 @@ Specified as: an integer value
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>desc_out</STRONG></DT>
<DD>the extended communication descriptor.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
@ -153,48 +100,7 @@ An integer value; 0 means no error has been detected.
</DL>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>Specifying <code>psb_ovt_xhal_</code> for the <code>extype</code> argument
the user will obtain a descriptor for a domain partition in which
the additional layers are fetched as part of an (extended) halo;
however the index-to-process mapping is identical to that of the
base descriptor;
</LI>
<LI>Specifying <code>psb_ovt_asov_</code> for the <code>extype</code> argument
the user will obtain a descriptor with an overlapped decomposition:
the additional layer is aggregated to the local subdomain (and thus
is an overlap), and a new halo extending beyond the last additional
layer is formed.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html983"
HREF="node62.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html979"
HREF="node55.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html973"
HREF="node60.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html981"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html984"
HREF="node62.html">psb_spall Allocates</A>
<B> Up:</B> <A NAME="tex2html980"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html974"
HREF="node60.html">psb_cdfree Frees</A>
&nbsp; <B> <A NAME="tex2html982"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_spall -- Allocates a sparse matrix</TITLE>
<META NAME="description" CONTENT="psb_spall -- Allocates a sparse matrix">
<TITLE>psb_cdbldext -- Build an extended communication descriptor</TITLE>
<META NAME="description" CONTENT="psb_cdbldext -- Build an extended communication descriptor">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,47 +20,51 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node63.html">
<LINK REL="previous" HREF="node61.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node63.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html995"
<A NAME="tex2html996"
HREF="node63.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html991"
HREF="node55.html">
<A NAME="tex2html992"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html985"
<A NAME="tex2html986"
HREF="node61.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html993"
<A NAME="tex2html994"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html996"
HREF="node63.html">psb_spins Insert</A>
<B> Up:</B> <A NAME="tex2html992"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html986"
HREF="node61.html">psb_cdbldext Build</A>
&nbsp; <B> <A NAME="tex2html994"
<B> Next:</B> <A NAME="tex2html997"
HREF="node63.html">psb_spall Allocates</A>
<B> Up:</B> <A NAME="tex2html993"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html987"
HREF="node61.html">psb_cdfree Frees</A>
&nbsp; <B> <A NAME="tex2html995"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00077000000000000000">
psb_spall -- Allocates a sparse matrix</A>
<H2><A NAME="SECTION00076000000000000000">
psb_cdbldext -- Build an extended communication
descriptor</A>
</H2>
<P>
<PRE>
call psb_spall(a, desc_a, info, nnz)
call psb_cdbldext(a,desc_a,nl,desc_out, info, extype)
</PRE>
<P>
This subroutine builds an extended communication descriptor, based on
the input descriptor <code>desc_a</code> and on the stencil specified
through the input sparse matrix <code>a</code>.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
@ -68,6 +72,16 @@ call psb_spall(a, desc_a, info, nnz)
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>A sparse matrix
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data type.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<BR>
@ -77,19 +91,35 @@ Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>nl</STRONG></DT>
<DD>the number of additional layers desired.
<BR>
Scope:<B>global</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value <IMG
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img96.png"
ALT="$nl\ge 0$">.
</DD>
<DT><STRONG>nnz</STRONG></DT>
<DD>An estimate of the number of nonzeroes in the local
part of the assembled matrix.
<DT><STRONG>extype</STRONG></DT>
<DD>the kind of estension required.
<BR>
Scope: <B>global</B>.
Scope:<B>global</B>.
<BR>
Type: <B>optional</B>.
Type:<B>optional </B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value.
Specified as: an integer value
<code>psb_ovt_xhal_</code>, <code>psb_ovt_asov_</code>, default: <code>psb_ovt_xhal_</code>
<P>
</DD>
</DL>
@ -98,16 +128,16 @@ Specified as: an integer value.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the matrix to be allocated.
<DT><STRONG>desc_out</STRONG></DT>
<DD>the extended communication descriptor.
<BR>
Scope:<B>local</B>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>
Type:<B>required</B>.
<BR>
Intent: <B>out</B>.
Intent: <B>inout</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -121,47 +151,48 @@ Intent: <B>out</B>.
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>On exit from this routine the sparse matrix is in the build
state.
</LI>
<LI>The descriptor may be in either the build or assembled state.
<LI>Specifying <code>psb_ovt_xhal_</code> for the <code>extype</code> argument
the user will obtain a descriptor for a domain partition in which
the additional layers are fetched as part of an (extended) halo;
however the index-to-process mapping is identical to that of the
base descriptor;
</LI>
<LI>Providing a good estimate for the number of nonzeroes <IMG
WIDTH="32" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img97.png"
ALT="$nnz$"> in
the assembled matrix may substantially improve performance in the
matrix build phase, as it will reduce or eliminate the need for
(potentially multiple) data reallocations.
<LI>Specifying <code>psb_ovt_asov_</code> for the <code>extype</code> argument
the user will obtain a descriptor with an overlapped decomposition:
the additional layer is aggregated to the local subdomain (and thus
is an overlap), and a new halo extending beyond the last additional
layer is formed.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html995"
<A NAME="tex2html996"
HREF="node63.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html991"
HREF="node55.html">
<A NAME="tex2html992"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html985"
<A NAME="tex2html986"
HREF="node61.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html993"
<A NAME="tex2html994"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html996"
HREF="node63.html">psb_spins Insert</A>
<B> Up:</B> <A NAME="tex2html992"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html986"
HREF="node61.html">psb_cdbldext Build</A>
&nbsp; <B> <A NAME="tex2html994"
<B> Next:</B> <A NAME="tex2html997"
HREF="node63.html">psb_spall Allocates</A>
<B> Up:</B> <A NAME="tex2html993"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html987"
HREF="node61.html">psb_cdfree Frees</A>
&nbsp; <B> <A NAME="tex2html995"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_spins -- Insert a cloud of elements into a sparse matrix</TITLE>
<META NAME="description" CONTENT="psb_spins -- Insert a cloud of elements into a sparse matrix">
<TITLE>psb_spall -- Allocates a sparse matrix</TITLE>
<META NAME="description" CONTENT="psb_spall -- Allocates a sparse matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,82 +20,56 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node64.html">
<LINK REL="previous" HREF="node62.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node64.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1007"
<A NAME="tex2html1008"
HREF="node64.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1003"
HREF="node55.html">
<A NAME="tex2html1004"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html997"
<A NAME="tex2html998"
HREF="node62.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1005"
<A NAME="tex2html1006"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1008"
HREF="node64.html">psb_spasb Sparse</A>
<B> Up:</B> <A NAME="tex2html1004"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html998"
HREF="node62.html">psb_spall Allocates</A>
&nbsp; <B> <A NAME="tex2html1006"
<B> Next:</B> <A NAME="tex2html1009"
HREF="node64.html">psb_spins Insert</A>
<B> Up:</B> <A NAME="tex2html1005"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html999"
HREF="node62.html">psb_cdbldext Build</A>
&nbsp; <B> <A NAME="tex2html1007"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00078000000000000000">
psb_spins -- Insert a cloud of elements into a sparse
matrix</A>
<H2><A NAME="SECTION00077000000000000000">
psb_spall -- Allocates a sparse matrix</A>
</H2>
<P>
<PRE>
call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
call psb_spall(a, desc_a, info, nnz)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>nz</STRONG></DT>
<DD>the number of elements to be inserted.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer scalar.
</DD>
<DT><STRONG>ia</STRONG></DT>
<DD>the row indices of the elements to be inserted.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array of size <IMG
WIDTH="22" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img95.png"
ALT="$nz$">.
</DD>
<DT><STRONG>ja</STRONG></DT>
<DD>the column indices of the elements to be inserted.
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<BR>
Scope:<B>local</B>.
<BR>
@ -103,51 +77,19 @@ Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array of size <IMG
WIDTH="22" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img95.png"
ALT="$nz$">.
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>val</STRONG></DT>
<DD>the elements to be inserted.
<DT><STRONG>nnz</STRONG></DT>
<DD>An estimate of the number of nonzeroes in the local
part of the assembled matrix.
<BR>
Scope:<B>local</B>.
Scope: <B>global</B>.
<BR>
Type:<B>required</B>.
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an array of size <IMG
WIDTH="22" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img95.png"
ALT="$nz$">. Must be of the same type and kind
of the <code>aspk</code> component of the sparse matrix <IMG
WIDTH="12" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img98.png"
ALT="$a$">.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>The communication descriptor.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a variable of type descdata<TT>psb_desc_type</TT>.
<BR></DD>
<DT><STRONG>local</STRONG></DT>
<DD>Whether the entries in the indices vectors <code>ia</code>,
<code>ja</code> are already in local numbering.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a logical value; default: <code>.false.</code>.
<P>
Specified as: an integer value.
</DD>
</DL>
@ -157,27 +99,16 @@ Specified as: a logical value; default: <code>.false.</code>.
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the matrix into which elements will be inserted.
<DD>the matrix to be allocated.
<BR>
Scope:<B>local</B>
<BR>
Type:<B>required</B>
<BR>
Intent: <B>inout</B>.
Intent: <B>out</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>The communication descriptor.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a variable of type descdata<TT>psb_desc_type</TT>.
<BR></DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
@ -190,59 +121,47 @@ Intent: <B>out</B>.
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>On entry to this routine the descriptor may be in either the
build or assembled state.
</LI>
<LI>On entry to this routine the sparse matrix may be in either the
build or update state.
</LI>
<LI>If the descriptor is in the build state, then the sparse matrix
must also be in the build state; the action of the routine is to
(implicitly) call <code>psb_cdins</code> to add entries to the sparsity
pattern; each sparse matrix entry implicitly defines a graph edge,
that is passed to the descriptor routine for the appropriate
processing.
</LI>
<LI>Any coefficients from matrix rows not assigned to the calling
process are silently ignored;
<LI>On exit from this routine the sparse matrix is in the build
state.
</LI>
<LI>If the descriptor is in the assembled state, then any entries in
the sparse matrix that would generate additional communication
requirements will be ignored;
<LI>The descriptor may be in either the build or assembled state.
</LI>
<LI>If the matrix is in the update state, any entries in positions
that were not present in the original matrix will be ignored.
<LI>Providing a good estimate for the number of nonzeroes <IMG
WIDTH="32" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img97.png"
ALT="$nnz$"> in
the assembled matrix may substantially improve performance in the
matrix build phase, as it will reduce or eliminate the need for
(potentially multiple) data reallocations.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1007"
<A NAME="tex2html1008"
HREF="node64.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1003"
HREF="node55.html">
<A NAME="tex2html1004"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html997"
<A NAME="tex2html998"
HREF="node62.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1005"
<A NAME="tex2html1006"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1008"
HREF="node64.html">psb_spasb Sparse</A>
<B> Up:</B> <A NAME="tex2html1004"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html998"
HREF="node62.html">psb_spall Allocates</A>
&nbsp; <B> <A NAME="tex2html1006"
<B> Next:</B> <A NAME="tex2html1009"
HREF="node64.html">psb_spins Insert</A>
<B> Up:</B> <A NAME="tex2html1005"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html999"
HREF="node62.html">psb_cdbldext Build</A>
&nbsp; <B> <A NAME="tex2html1007"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_spasb -- Sparse matrix assembly routine</TITLE>
<META NAME="description" CONTENT="psb_spasb -- Sparse matrix assembly routine">
<TITLE>psb_spins -- Insert a cloud of elements into a sparse matrix</TITLE>
<META NAME="description" CONTENT="psb_spins -- Insert a cloud of elements into a sparse matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,56 +20,57 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node65.html">
<LINK REL="previous" HREF="node63.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node65.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1019"
<A NAME="tex2html1020"
HREF="node65.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1015"
HREF="node55.html">
<A NAME="tex2html1016"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1009"
<A NAME="tex2html1010"
HREF="node63.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1017"
<A NAME="tex2html1018"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1020"
HREF="node65.html">psb_spfree Frees</A>
<B> Up:</B> <A NAME="tex2html1016"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1010"
HREF="node63.html">psb_spins Insert</A>
&nbsp; <B> <A NAME="tex2html1018"
<B> Next:</B> <A NAME="tex2html1021"
HREF="node65.html">psb_spasb Sparse</A>
<B> Up:</B> <A NAME="tex2html1017"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1011"
HREF="node63.html">psb_spall Allocates</A>
&nbsp; <B> <A NAME="tex2html1019"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00079000000000000000">
psb_spasb -- Sparse matrix assembly routine</A>
<H2><A NAME="SECTION00078000000000000000">
psb_spins -- Insert a cloud of elements into a sparse
matrix</A>
</H2>
<P>
<PRE>
call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<DT><STRONG>nz</STRONG></DT>
<DD>the number of elements to be inserted.
<BR>
Scope:<B>local</B>.
<BR>
@ -77,52 +78,76 @@ Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
Specified as: an integer scalar.
</DD>
<DT><STRONG>afmt</STRONG></DT>
<DD>the storage format for the sparse matrix.
<DT><STRONG>ia</STRONG></DT>
<DD>the row indices of the elements to be inserted.
<BR>
Scope: <B>local</B>.
Scope:<B>local</B>.
<BR>
Type: <B>optional</B>.
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an array of characters. Defalt: 'CSR'.
Specified as: an integer array of size <IMG
WIDTH="22" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img95.png"
ALT="$nz$">.
</DD>
<DT><STRONG>upd</STRONG></DT>
<DD>Provide for updates to the matrix coefficients.
<DT><STRONG>ja</STRONG></DT>
<DD>the column indices of the elements to be inserted.
<BR>
Scope: <B>global</B>.
Scope:<B>local</B>.
<BR>
Type: <B>optional</B>.
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: integer, possible values: <code>psb_upd_srch_</code>, <code>psb_upd_perm_</code>
Specified as: an integer array of size <IMG
WIDTH="22" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img95.png"
ALT="$nz$">.
</DD>
<DT><STRONG>dupl</STRONG></DT>
<DD>How to handle duplicate coefficients.
<DT><STRONG>val</STRONG></DT>
<DD>the elements to be inserted.
<BR>
Scope: <B>global</B>.
Scope:<B>local</B>.
<BR>
Type: <B>optional</B>.
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: integer, possible values: <code>psb_dupl_ovwrt_</code>,
<code>psb_dupl_add_</code>, <code>psb_dupl_err_</code>.
Specified as: an array of size <IMG
WIDTH="22" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img95.png"
ALT="$nz$">. Must be of the same type and kind
of the <code>aspk</code> component of the sparse matrix <IMG
WIDTH="12" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img98.png"
ALT="$a$">.
</DD>
<DT><STRONG>mold</STRONG></DT>
<DD>The desired dynamic type for the internal matrix storage.
<DT><STRONG>desc_a</STRONG></DT>
<DD>The communication descriptor.
<BR>
Scope: <B>local</B>.
Scope: <B>local</B>.
<BR>
Type: <B>optional</B>.
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
Intent: <B>inout</B>.
<BR>
Specified as: a variable of type descdata<TT>psb_desc_type</TT>.
<BR></DD>
<DT><STRONG>local</STRONG></DT>
<DD>Whether the entries in the indices vectors <code>ia</code>,
<code>ja</code> are already in local numbering.
<BR>
Specified as: an object of a class derived from spbasedata<TT>psb_T_base_sparse_mat</TT>.
Scope:<B>local</B>.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a logical value; default: <code>.false.</code>.
<P>
</DD>
</DL>
@ -132,7 +157,7 @@ Specified as: an object of a class derived from spbasedata<TT>psb_T_base_sparse_
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the matrix to be assembled.
<DD>the matrix into which elements will be inserted.
<BR>
Scope:<B>local</B>
<BR>
@ -142,6 +167,17 @@ Intent: <B>inout</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>The communication descriptor.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a variable of type descdata<TT>psb_desc_type</TT>.
<BR></DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
@ -159,51 +195,54 @@ An integer value; 0 means no error has been detected.
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>On entry to this routine the descriptor must be in the
assembled state, i.e. <code>psb_cdasb</code> must already have been called.
<LI>On entry to this routine the descriptor may be in either the
build or assembled state.
</LI>
<LI>The sparse matrix may be in either the build or update state;
<LI>On entry to this routine the sparse matrix may be in either the
build or update state.
</LI>
<LI>Duplicate entries are detected and handled in both build and
update state, with the exception of the error action that is only
taken in the build state, i.e. on the first assembly;
<LI>If the descriptor is in the build state, then the sparse matrix
must also be in the build state; the action of the routine is to
(implicitly) call <code>psb_cdins</code> to add entries to the sparsity
pattern; each sparse matrix entry implicitly defines a graph edge,
that is passed to the descriptor routine for the appropriate
processing.
</LI>
<LI>If the update choice is <code>psb_upd_perm_</code>, then subsequent
calls to <code>psb_spins</code> to update the matrix must be arranged in
such a way as to produce exactly the same sequence of coefficient
values as encountered at the first assembly;
<LI>Any coefficients from matrix rows not assigned to the calling
process are silently ignored;
</LI>
<LI>The output storage format need not be the same on all
processes;
<LI>If the descriptor is in the assembled state, then any entries in
the sparse matrix that would generate additional communication
requirements will be ignored;
</LI>
<LI>On exit from this routine the matrix is in the assembled state,
and thus is suitable for the computational routines.
<LI>If the matrix is in the update state, any entries in positions
that were not present in the original matrix will be ignored.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1019"
<A NAME="tex2html1020"
HREF="node65.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1015"
HREF="node55.html">
<A NAME="tex2html1016"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1009"
<A NAME="tex2html1010"
HREF="node63.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1017"
<A NAME="tex2html1018"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1020"
HREF="node65.html">psb_spfree Frees</A>
<B> Up:</B> <A NAME="tex2html1016"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1010"
HREF="node63.html">psb_spins Insert</A>
&nbsp; <B> <A NAME="tex2html1018"
<B> Next:</B> <A NAME="tex2html1021"
HREF="node65.html">psb_spasb Sparse</A>
<B> Up:</B> <A NAME="tex2html1017"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1011"
HREF="node63.html">psb_spall Allocates</A>
&nbsp; <B> <A NAME="tex2html1019"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_spfree -- Frees a sparse matrix</TITLE>
<META NAME="description" CONTENT="psb_spfree -- Frees a sparse matrix">
<TITLE>psb_spasb -- Sparse matrix assembly routine</TITLE>
<META NAME="description" CONTENT="psb_spasb -- Sparse matrix assembly routine">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node66.html">
<LINK REL="previous" HREF="node64.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node66.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1031"
<A NAME="tex2html1032"
HREF="node66.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1027"
HREF="node55.html">
<A NAME="tex2html1028"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1021"
<A NAME="tex2html1022"
HREF="node64.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1029"
<A NAME="tex2html1030"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1032"
HREF="node66.html">psb_sprn Reinit</A>
<B> Up:</B> <A NAME="tex2html1028"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1022"
HREF="node64.html">psb_spasb Sparse</A>
&nbsp; <B> <A NAME="tex2html1030"
<B> Next:</B> <A NAME="tex2html1033"
HREF="node66.html">psb_spfree Frees</A>
<B> Up:</B> <A NAME="tex2html1029"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1023"
HREF="node64.html">psb_spins Insert</A>
&nbsp; <B> <A NAME="tex2html1031"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000710000000000000000">
psb_spfree -- Frees a sparse matrix</A>
<H2><A NAME="SECTION00079000000000000000">
psb_spasb -- Sparse matrix assembly routine</A>
</H2>
<P>
<PRE>
call psb_spfree(a, desc_a, info)
call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
</PRE>
<P>
@ -68,17 +68,6 @@ call psb_spfree(a, desc_a, info)
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the matrix to be freed.
<BR>
Scope:<B>local</B>
<BR>
Type:<B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<BR>
@ -90,6 +79,51 @@ Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>afmt</STRONG></DT>
<DD>the storage format for the sparse matrix.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an array of characters. Defalt: 'CSR'.
</DD>
<DT><STRONG>upd</STRONG></DT>
<DD>Provide for updates to the matrix coefficients.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: integer, possible values: <code>psb_upd_srch_</code>, <code>psb_upd_perm_</code>
</DD>
<DT><STRONG>dupl</STRONG></DT>
<DD>How to handle duplicate coefficients.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: integer, possible values: <code>psb_dupl_ovwrt_</code>,
<code>psb_dupl_add_</code>, <code>psb_dupl_err_</code>.
</DD>
<DT><STRONG>mold</STRONG></DT>
<DD>The desired dynamic type for the internal matrix storage.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an object of a class derived from spbasedata<TT>psb_T_base_sparse_mat</TT>.
</DD>
</DL>
<P>
@ -97,6 +131,17 @@ Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the matrix to be assembled.
<BR>
Scope:<B>local</B>
<BR>
Type:<B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
@ -111,7 +156,56 @@ An integer value; 0 means no error has been detected.
</DL>
<P>
<BR><HR>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>On entry to this routine the descriptor must be in the
assembled state, i.e. <code>psb_cdasb</code> must already have been called.
</LI>
<LI>The sparse matrix may be in either the build or update state;
</LI>
<LI>Duplicate entries are detected and handled in both build and
update state, with the exception of the error action that is only
taken in the build state, i.e. on the first assembly;
</LI>
<LI>If the update choice is <code>psb_upd_perm_</code>, then subsequent
calls to <code>psb_spins</code> to update the matrix must be arranged in
such a way as to produce exactly the same sequence of coefficient
values as encountered at the first assembly;
</LI>
<LI>The output storage format need not be the same on all
processes;
</LI>
<LI>On exit from this routine the matrix is in the assembled state,
and thus is suitable for the computational routines.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1032"
HREF="node66.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1028"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1022"
HREF="node64.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1030"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1033"
HREF="node66.html">psb_spfree Frees</A>
<B> Up:</B> <A NAME="tex2html1029"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1023"
HREF="node64.html">psb_spins Insert</A>
&nbsp; <B> <A NAME="tex2html1031"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_sprn -- Reinit sparse matrix structure for psblas routines.</TITLE>
<META NAME="description" CONTENT="psb_sprn -- Reinit sparse matrix structure for psblas routines.">
<TITLE>psb_spfree -- Frees a sparse matrix</TITLE>
<META NAME="description" CONTENT="psb_spfree -- Frees a sparse matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,45 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node67.html">
<LINK REL="previous" HREF="node65.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node67.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1043"
<A NAME="tex2html1044"
HREF="node67.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1039"
HREF="node55.html">
<A NAME="tex2html1040"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1033"
<A NAME="tex2html1034"
HREF="node65.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1041"
<A NAME="tex2html1042"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1044"
HREF="node67.html">psb_geall Allocates</A>
<B> Up:</B> <A NAME="tex2html1040"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1034"
HREF="node65.html">psb_spfree Frees</A>
&nbsp; <B> <A NAME="tex2html1042"
<B> Next:</B> <A NAME="tex2html1045"
HREF="node67.html">psb_sprn Reinit</A>
<B> Up:</B> <A NAME="tex2html1041"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1035"
HREF="node65.html">psb_spasb Sparse</A>
&nbsp; <B> <A NAME="tex2html1043"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000711000000000000000">
psb_sprn -- Reinit sparse matrix structure for psblas
routines.</A>
<H2><A NAME="SECTION000710000000000000000">
psb_spfree -- Frees a sparse matrix</A>
</H2>
<P>
<PRE>
call psb_sprn(a, decsc_a, info, clear)
call psb_spfree(a, desc_a, info)
</PRE>
<P>
@ -70,7 +69,7 @@ call psb_sprn(a, decsc_a, info, clear)
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the matrix to be reinitialized.
<DD>the matrix to be freed.
<BR>
Scope:<B>local</B>
<BR>
@ -91,17 +90,6 @@ Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>clear</STRONG></DT>
<DD>Choose whether to zero out matrix coefficients
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Default: true.
</DD>
</DL>
<P>
@ -121,13 +109,6 @@ Intent: <B>out</B>.
An integer value; 0 means no error has been detected.
</DD>
</DL>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>On exit from this routine the sparse matrix is in the update
state.
</LI>
</OL>
<P>
<BR><HR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_geall -- Allocates a dense matrix</TITLE>
<META NAME="description" CONTENT="psb_geall -- Allocates a dense matrix">
<TITLE>psb_sprn -- Reinit sparse matrix structure for psblas routines.</TITLE>
<META NAME="description" CONTENT="psb_sprn -- Reinit sparse matrix structure for psblas routines.">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,44 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node68.html">
<LINK REL="previous" HREF="node66.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node68.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1055"
<A NAME="tex2html1056"
HREF="node68.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1051"
HREF="node55.html">
<A NAME="tex2html1052"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1045"
<A NAME="tex2html1046"
HREF="node66.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1053"
<A NAME="tex2html1054"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1056"
HREF="node68.html">psb_geins Dense</A>
<B> Up:</B> <A NAME="tex2html1052"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1046"
HREF="node66.html">psb_sprn Reinit</A>
&nbsp; <B> <A NAME="tex2html1054"
<B> Next:</B> <A NAME="tex2html1057"
HREF="node68.html">psb_geall Allocates</A>
<B> Up:</B> <A NAME="tex2html1053"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1047"
HREF="node66.html">psb_spfree Frees</A>
&nbsp; <B> <A NAME="tex2html1055"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000712000000000000000">
psb_geall -- Allocates a dense matrix</A>
<H2><A NAME="SECTION000711000000000000000">
psb_sprn -- Reinit sparse matrix structure for psblas
routines.</A>
</H2>
<P>
<PRE>
call psb_geall(x, desc_a, info, n, lb)
call psb_sprn(a, decsc_a, info, clear)
</PRE>
<P>
@ -68,52 +69,38 @@ call psb_geall(x, desc_a, info, n, lb)
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>The communication descriptor.
<DT><STRONG>a</STRONG></DT>
<DD>the matrix to be reinitialized.
<BR>
Scope: <B>local</B>
Scope:<B>local</B>
<BR>
Type: <B>required</B>
Type:<B>required</B>
<BR>
Intent: <B>in</B>.
Intent: <B>inout</B>.
<BR>
Specified as: a variable of type descdata<TT>psb_desc_type</TT>.
<BR></DD>
<DT><STRONG>n</STRONG></DT>
<DD>The number of columns of the dense matrix to be allocated.
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<BR>
Scope: <B>local</B>
Scope:<B>local</B>.
<BR>
Type: <B>optional</B>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: Integer scalar, default <IMG
WIDTH="12" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img99.png"
ALT="$1$">. It is not a valid argument if <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a
rank-1 array.
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>lb</STRONG></DT>
<DD>The lower bound for the column index range of the dense matrix to be allocated.
<DT><STRONG>clear</STRONG></DT>
<DD>Choose whether to zero out matrix coefficients
<BR>
Scope: <B>local</B>
Scope:<B>local</B>.
<BR>
Type: <B>optional</B>
Type:<B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: Integer scalar, default <IMG
WIDTH="12" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img99.png"
ALT="$1$">. It is not a valid argument if <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a
rank-1 array.
Default: true.
</DD>
</DL>
@ -122,18 +109,6 @@ rank-1 array.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>The dense matrix to be allocated.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
Specified as: a rank one or two array with the ALLOCATABLE attribute
or an object of type vdata<TT>psb_T_vect_type</TT>, of type real, complex or integer.
<BR></DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
@ -146,32 +121,16 @@ Intent: <B>out</B>.
An integer value; 0 means no error has been detected.
</DD>
</DL>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>On exit from this routine the sparse matrix is in the update
state.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1055"
HREF="node68.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1051"
HREF="node55.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1045"
HREF="node66.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1053"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1056"
HREF="node68.html">psb_geins Dense</A>
<B> Up:</B> <A NAME="tex2html1052"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1046"
HREF="node66.html">psb_sprn Reinit</A>
&nbsp; <B> <A NAME="tex2html1054"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_geins -- Dense matrix insertion routine</TITLE>
<META NAME="description" CONTENT="psb_geins -- Dense matrix insertion routine">
<TITLE>psb_geall -- Allocates a dense matrix</TITLE>
<META NAME="description" CONTENT="psb_geall -- Allocates a dense matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,135 +20,100 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node69.html">
<LINK REL="previous" HREF="node67.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node69.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1067"
<A NAME="tex2html1068"
HREF="node69.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1063"
HREF="node55.html">
<A NAME="tex2html1064"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1057"
<A NAME="tex2html1058"
HREF="node67.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1065"
<A NAME="tex2html1066"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1068"
HREF="node69.html">psb_geasb Assembly</A>
<B> Up:</B> <A NAME="tex2html1064"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1058"
HREF="node67.html">psb_geall Allocates</A>
&nbsp; <B> <A NAME="tex2html1066"
<B> Next:</B> <A NAME="tex2html1069"
HREF="node69.html">psb_geins Dense</A>
<B> Up:</B> <A NAME="tex2html1065"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1059"
HREF="node67.html">psb_sprn Reinit</A>
&nbsp; <B> <A NAME="tex2html1067"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000713000000000000000">
psb_geins -- Dense matrix insertion routine</A>
<H2><A NAME="SECTION000712000000000000000">
psb_geall -- Allocates a dense matrix</A>
</H2>
<P>
<PRE>
call psb_geins(m, irw, val, x, desc_a, info [,dupl,local])
call psb_geall(x, desc_a, info, n, lb)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>m</STRONG></DT>
<DD>Number of rows in <IMG
WIDTH="25" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img100.png"
ALT="$val$"> to be inserted.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value.
</DD>
<DT><STRONG>irw</STRONG></DT>
<DD>Indices of the rows to be inserted. Specifically, row <IMG
WIDTH="9" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$i$">
of <IMG
WIDTH="25" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img100.png"
ALT="$val$"> will be inserted into the local row corresponding to the
global row index <IMG
WIDTH="47" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img101.png"
ALT="$irw(i)$">.
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array.
</DD>
<DT><STRONG>val</STRONG></DT>
<DD>the dense submatrix to be inserted.
<DT><STRONG>desc_a</STRONG></DT>
<DD>The communication descriptor.
<BR>
Scope:<B>local</B>.
Scope: <B>local</B>
<BR>
Type:<B>required</B>.
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank 1 or 2 array.
Specified as: an integer value.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
Specified as: a variable of type descdata<TT>psb_desc_type</TT>.
<BR></DD>
<DT><STRONG>n</STRONG></DT>
<DD>The number of columns of the dense matrix to be allocated.
<BR>
Scope:<B>local</B>.
Scope: <B>local</B>
<BR>
Type:<B>required</B>.
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
Specified as: Integer scalar, default <IMG
WIDTH="12" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img99.png"
ALT="$1$">. It is not a valid argument if <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a
rank-1 array.
</DD>
<DT><STRONG>dupl</STRONG></DT>
<DD>How to handle duplicate coefficients.
<DT><STRONG>lb</STRONG></DT>
<DD>The lower bound for the column index range of the dense matrix to be allocated.
<BR>
Scope: <B>global</B>.
Scope: <B>local</B>
<BR>
Type: <B>optional</B>.
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: integer, possible values: <code>psb_dupl_ovwrt_</code>,
<code>psb_dupl_add_</code>.
</DD>
<DT><STRONG>local</STRONG></DT>
<DD>Whether the entries in the index vector <code>irw</code>,
are already in local numbering.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a logical value; default: <code>.false.</code>.
<P>
Specified as: Integer scalar, default <IMG
WIDTH="12" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img99.png"
ALT="$1$">. It is not a valid argument if <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is a
rank-1 array.
</DD>
</DL>
@ -158,16 +123,16 @@ Specified as: a logical value; default: <code>.false.</code>.
<DD>
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>the output dense matrix.
<DD>The dense matrix to be allocated.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
Intent: <B>out</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>, of
type real, complex or integer.
Specified as: a rank one or two array with the ALLOCATABLE attribute
or an object of type vdata<TT>psb_T_vect_type</TT>, of type real, complex or integer.
<BR></DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -182,40 +147,29 @@ An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>Dense vectors/matrices do not have an associated state;
</LI>
<LI>Duplicate entries are either overwritten or added, there is no
provision for raising an error condition.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1067"
<A NAME="tex2html1068"
HREF="node69.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1063"
HREF="node55.html">
<A NAME="tex2html1064"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1057"
<A NAME="tex2html1058"
HREF="node67.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1065"
<A NAME="tex2html1066"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1068"
HREF="node69.html">psb_geasb Assembly</A>
<B> Up:</B> <A NAME="tex2html1064"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1058"
HREF="node67.html">psb_geall Allocates</A>
&nbsp; <B> <A NAME="tex2html1066"
<B> Next:</B> <A NAME="tex2html1069"
HREF="node69.html">psb_geins Dense</A>
<B> Up:</B> <A NAME="tex2html1065"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1059"
HREF="node67.html">psb_sprn Reinit</A>
&nbsp; <B> <A NAME="tex2html1067"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_geasb -- Assembly a dense matrix</TITLE>
<META NAME="description" CONTENT="psb_geasb -- Assembly a dense matrix">
<TITLE>psb_geins -- Dense matrix insertion routine</TITLE>
<META NAME="description" CONTENT="psb_geins -- Dense matrix insertion routine">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,79 +20,135 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node70.html">
<LINK REL="previous" HREF="node68.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node70.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1079"
<A NAME="tex2html1080"
HREF="node70.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1075"
HREF="node55.html">
<A NAME="tex2html1076"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1069"
<A NAME="tex2html1070"
HREF="node68.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1077"
<A NAME="tex2html1078"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1080"
HREF="node70.html">psb_gefree Frees</A>
<B> Up:</B> <A NAME="tex2html1076"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1070"
HREF="node68.html">psb_geins Dense</A>
&nbsp; <B> <A NAME="tex2html1078"
<B> Next:</B> <A NAME="tex2html1081"
HREF="node70.html">psb_geasb Assembly</A>
<B> Up:</B> <A NAME="tex2html1077"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1071"
HREF="node68.html">psb_geall Allocates</A>
&nbsp; <B> <A NAME="tex2html1079"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000714000000000000000">
psb_geasb -- Assembly a dense matrix</A>
<H2><A NAME="SECTION000713000000000000000">
psb_geins -- Dense matrix insertion routine</A>
</H2>
<P>
<PRE>
call psb_geasb(x, desc_a, info, mold)
call psb_geins(m, irw, val, x, desc_a, info [,dupl,local])
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>m</STRONG></DT>
<DD>Number of rows in <IMG
WIDTH="25" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img100.png"
ALT="$val$"> to be inserted.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value.
</DD>
<DT><STRONG>irw</STRONG></DT>
<DD>Indices of the rows to be inserted. Specifically, row <IMG
WIDTH="9" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$i$">
of <IMG
WIDTH="25" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img100.png"
ALT="$val$"> will be inserted into the local row corresponding to the
global row index <IMG
WIDTH="47" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img101.png"
ALT="$irw(i)$">.
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array.
</DD>
<DT><STRONG>val</STRONG></DT>
<DD>the dense submatrix to be inserted.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank 1 or 2 array.
Specified as: an integer value.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>The communication descriptor.
<DD>the communication descriptor.
<BR>
Scope: <B>local</B>
Scope:<B>local</B>.
<BR>
Type: <B>required</B>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a variable of type descdata<TT>psb_desc_type</TT>.
<BR></DD>
<DT><STRONG>mold</STRONG></DT>
<DD>The desired dynamic type for the internal vector storage.
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>dupl</STRONG></DT>
<DD>How to handle duplicate coefficients.
<BR>
Scope: <B>local</B>.
Scope: <B>global</B>.
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an object of a class derived from vbasedata<TT>psb_T_base_vect_type</TT>; this is
only allowed when <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is of type vdata<TT>psb_T_vect_type</TT>.
Specified as: integer, possible values: <code>psb_dupl_ovwrt_</code>,
<code>psb_dupl_add_</code>.
</DD>
<DT><STRONG>local</STRONG></DT>
<DD>Whether the entries in the index vector <code>irw</code>,
are already in local numbering.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a logical value; default: <code>.false.</code>.
<P>
</DD>
</DL>
@ -102,7 +158,7 @@ only allowed when <IMG
<DD>
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>The dense matrix to be assembled.
<DD>the output dense matrix.
<BR>
Scope: <B>local</B>
<BR>
@ -110,8 +166,8 @@ Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array with the ALLOCATABLE or an
object of type vdata<TT>psb_T_vect_type</TT>, of type real, complex or integer.
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>, of
type real, complex or integer.
<BR></DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -125,7 +181,43 @@ Intent: <B>out</B>.
An integer value; 0 means no error has been detected.
</DD>
</DL>
<BR><HR>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>Dense vectors/matrices do not have an associated state;
</LI>
<LI>Duplicate entries are either overwritten or added, there is no
provision for raising an error condition.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1080"
HREF="node70.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1076"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1070"
HREF="node68.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1078"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1081"
HREF="node70.html">psb_geasb Assembly</A>
<B> Up:</B> <A NAME="tex2html1077"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1071"
HREF="node68.html">psb_geall Allocates</A>
&nbsp; <B> <A NAME="tex2html1079"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Programming model</TITLE>
<META NAME="description" CONTENT="Programming model">
<TITLE>User-defined index mappings</TITLE>
<META NAME="description" CONTENT="User-defined index mappings">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -19,105 +19,93 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="previous" HREF="node6.html">
<LINK REL="up" HREF="node3.html">
<LINK REL="up" HREF="node6.html">
<LINK REL="next" HREF="node8.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html256"
<A NAME="tex2html259"
HREF="node8.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html252"
HREF="node3.html">
<A NAME="tex2html255"
HREF="node6.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html248"
<A NAME="tex2html251"
HREF="node6.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html254"
<A NAME="tex2html257"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html257"
HREF="node8.html">Data Structures and Classes</A>
<B> Up:</B> <A NAME="tex2html253"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html249"
<B> Next:</B> <A NAME="tex2html260"
HREF="node8.html">Programming model</A>
<B> Up:</B> <A NAME="tex2html256"
HREF="node6.html">Application structure</A>
<B> Previous:</B> <A NAME="tex2html252"
HREF="node6.html">Application structure</A>
&nbsp; <B> <A NAME="tex2html255"
&nbsp; <B> <A NAME="tex2html258"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00034000000000000000">
Programming model</A>
</H2>
<H3><A NAME="SECTION00033100000000000000">
User-defined index mappings</A>
</H3>
<P>
The PSBLAS librarary is based on the Single Program Multiple Data
(SPMD) programming model: each process participating in the
computation performs the same actions on a chunk of data. Parallelism
is thus data-driven.
PSBLAS supports user-defined global to local index mappings, subject
to the constraints outlined in sec.&nbsp;<A HREF="node6.html#sec:appstruct">2.3</A>:
<P>
Because of this structure, many subroutines coordinate their action
across the various processes, thus providing an implicit
synchronization point, and therefore <I>must</I> be
called simultaneously by all processes participating in the
computation. This is certainly true for the data allocation and
assembly routines, for all the computational routines and for some of
the tools routines.
<OL>
<LI>The set of indices owned locally must be mapped to the set
<!-- MATH
$1\dots n_{\hbox{row}_i}$
-->
<IMG
WIDTH="77" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img17.png"
ALT="$1\dots n_{\hbox{row}_i}$">;
</LI>
<LI>The set of halo points must be mapped to the set
<!-- MATH
$n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$
-->
<IMG
WIDTH="130" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img18.png"
ALT="$n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$">;
</LI>
</OL>
but otherwise the mapping is arbitrary. The user application is
responsible to ensure consistency of this mapping; some errors may be
catched by the library, but this is not guaranteed.
The application structure to
support this usage is as follows:
<P>
However there are many cases where no synchronization, and indeed no
communication among processes, is implied; for instance, all the routines in
sec.&nbsp;<A HREF="#sec:dataquery"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A> are only acting on the local data structures,
and thus may be called independently. The most important case is that
of the coefficient insertion routines: since the number of
coefficients in the sparse and dense matrices varies among the
processors, and since the user is free to choose an arbitrary order in
builiding the matrix entries, these routines cannot imply a
synchronization.
<OL>
<LI>Initialize index space with
<code>psb_cdall(ictx,desc,info,vl=vl,lidx=lidx)</code> passing the vectors
<code>vl(:)</code> containing the set of global indices owned by the
current process and <code>lidx(:)</code> containing the corresponding
local indices;
</LI>
<LI>Add the halo points <code>ja(:)</code> and their associated local
indices <code>lidx(:)</code> with a(some) call(s) to
<code>psb_cdins(nz,ja,desc,info,lidx=lidx)</code>;
</LI>
<LI>Assemble the descriptor with <code>psb_cdasb</code>;
</LI>
<LI>Build the sparse matrices and vectors, optionally making use in
<code>psb_spins</code> and <code>psb_geins</code> of the <code>local</code> argument
specifying that the indices in <code>ia</code>, <code>ja</code> and <code>irw</code>,
respectively, are already local indices.
</LI>
</OL>
<P>
Throughout this user's guide each subroutine will be clearly indicated
as:
<DL>
<DT><STRONG>Synchronous:</STRONG></DT>
<DD>must be called simultaneously by all the
processes in the relevant communication context;
</DD>
<DT><STRONG>Asynchronous:</STRONG></DT>
<DD>may be called in a totally independent manner.
</DD>
</DL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html256"
HREF="node8.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html252"
HREF="node3.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html248"
HREF="node6.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html254"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html257"
HREF="node8.html">Data Structures and Classes</A>
<B> Up:</B> <A NAME="tex2html253"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html249"
HREF="node6.html">Application structure</A>
&nbsp; <B> <A NAME="tex2html255"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_gefree -- Frees a dense matrix</TITLE>
<META NAME="description" CONTENT="psb_gefree -- Frees a dense matrix">
<TITLE>psb_geasb -- Assembly a dense matrix</TITLE>
<META NAME="description" CONTENT="psb_geasb -- Assembly a dense matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node71.html">
<LINK REL="previous" HREF="node69.html">
<LINK REL="up" HREF="node55.html">
<LINK REL="up" HREF="node56.html">
<LINK REL="next" HREF="node71.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1091"
<A NAME="tex2html1092"
HREF="node71.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1087"
HREF="node55.html">
<A NAME="tex2html1088"
HREF="node56.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1081"
<A NAME="tex2html1082"
HREF="node69.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1089"
<A NAME="tex2html1090"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1092"
HREF="node71.html">psb_gelp Applies</A>
<B> Up:</B> <A NAME="tex2html1088"
HREF="node55.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1082"
HREF="node69.html">psb_geasb Assembly</A>
&nbsp; <B> <A NAME="tex2html1090"
<B> Next:</B> <A NAME="tex2html1093"
HREF="node71.html">psb_gefree Frees</A>
<B> Up:</B> <A NAME="tex2html1089"
HREF="node56.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1083"
HREF="node69.html">psb_geins Dense</A>
&nbsp; <B> <A NAME="tex2html1091"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000715000000000000000">
psb_gefree -- Frees a dense matrix</A>
<H2><A NAME="SECTION000714000000000000000">
psb_geasb -- Assembly a dense matrix</A>
</H2>
<P>
<PRE>
call psb_gefree(x, desc_a, info)
call psb_geasb(x, desc_a, info, mold)
</PRE>
<P>
@ -68,21 +68,6 @@ call psb_gefree(x, desc_a, info)
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>The dense matrix to
be freed.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array with the ALLOCATABLE or an
object of type vdata<TT>psb_T_vect_type</TT>, of type real, complex or integer.
<BR>
<P>
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>The communication descriptor.
<BR>
@ -94,6 +79,21 @@ Intent: <B>in</B>.
<BR>
Specified as: a variable of type descdata<TT>psb_desc_type</TT>.
<BR></DD>
<DT><STRONG>mold</STRONG></DT>
<DD>The desired dynamic type for the internal vector storage.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an object of a class derived from vbasedata<TT>psb_T_base_vect_type</TT>; this is
only allowed when <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> is of type vdata<TT>psb_T_vect_type</TT>.
</DD>
</DL>
<P>
@ -101,6 +101,18 @@ Specified as: a variable of type descdata<TT>psb_desc_type</TT>.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>The dense matrix to be assembled.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array with the ALLOCATABLE or an
object of type vdata<TT>psb_T_vect_type</TT>, of type real, complex or integer.
<BR></DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
@ -113,8 +125,6 @@ Intent: <B>out</B>.
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<BR><HR>
</BODY>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save