diff --git a/base/internals/psi_idx_ins_cnv.f90 b/base/internals/psi_idx_ins_cnv.f90 index f48c46dc..87e38c27 100644 --- a/base/internals/psi_idx_ins_cnv.f90 +++ b/base/internals/psi_idx_ins_cnv.f90 @@ -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 diff --git a/base/modules/psb_base_tools_mod.f90 b/base/modules/psb_base_tools_mod.f90 index c24a4e4c..d40a5e4e 100644 --- a/base/modules/psb_base_tools_mod.f90 +++ b/base/modules/psb_base_tools_mod.f90 @@ -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 diff --git a/base/modules/psb_gen_block_map_mod.f90 b/base/modules/psb_gen_block_map_mod.f90 index 415dcde8..5378ed1e 100644 --- a/base/modules/psb_gen_block_map_mod.f90 +++ b/base/modules/psb_gen_block_map_mod.f90 @@ -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 diff --git a/base/modules/psb_hash_map_mod.f90 b/base/modules/psb_hash_map_mod.f90 index e57b6199..7511dac3 100644 --- a/base/modules/psb_hash_map_mod.f90 +++ b/base/modules/psb_hash_map_mod.f90 @@ -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 diff --git a/base/modules/psb_indx_map_mod.f90 b/base/modules/psb_indx_map_mod.f90 index 06fdb588..929db679 100644 --- a/base/modules/psb_indx_map_mod.f90 +++ b/base/modules/psb_indx_map_mod.f90 @@ -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. diff --git a/base/modules/psb_list_map_mod.f90 b/base/modules/psb_list_map_mod.f90 index 8074af8d..5d976d65 100644 --- a/base/modules/psb_list_map_mod.f90 +++ b/base/modules/psb_list_map_mod.f90 @@ -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 diff --git a/base/modules/psb_repl_map_mod.f90 b/base/modules/psb_repl_map_mod.f90 index 7a646fd0..5f8ffcf7 100644 --- a/base/modules/psb_repl_map_mod.f90 +++ b/base/modules/psb_repl_map_mod.f90 @@ -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 diff --git a/base/modules/psi_i_mod.f90 b/base/modules/psi_i_mod.f90 index 0f4c4733..af3b24dc 100644 --- a/base/modules/psi_i_mod.f90 +++ b/base/modules/psi_i_mod.f90 @@ -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 diff --git a/base/tools/psb_cdins.f90 b/base/tools/psb_cdins.f90 index 41e1002e..1c1268d3 100644 --- a/base/tools/psb_cdins.f90 +++ b/base/tools/psb_cdins.f90 @@ -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 diff --git a/docs/html/footnode.html b/docs/html/footnode.html index 13ed18b1..47d6655b 100644 --- a/docs/html/footnode.html +++ b/docs/html/footnode.html @@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -104,8 +104,8 @@ sample scatter/gather routines. . -
... follows3
+
... follows3
The string is case-insensitive
.
diff --git a/docs/html/index.html b/docs/html/index.html
index a3f23fda..90a70876 100644
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -78,297 +78,301 @@ April 16, 2012.
   HREF="node5.html">Library contents
 
  • Application structure + -
  • Data Structures and Classes -
      + HREF="node8.html">Programming model +
    +
  • Descriptor data structure + HREF="node9.html">Data Structures and Classes +
  • get_context--Get communication context
    + HREF="node18.html">psb_cd_set_large_threshold -- Set threshold for + index mapping switch
  • Sparse Matrix class -
      + HREF="node19.html">Named Constants +
  • Methods + HREF="node20.html">Sparse Matrix class + + HREF="node28.html">is_bld, is_upd, is_asb -- Status check
  • Dense Vector Data Structure -
      + HREF="node29.html">Named Constants +
  • Methods + HREF="node30.html">Dense Vector Data Structure + + HREF="node34.html">sizeof -- Get memory occupation in bytes +of a dense vector matrix
  • Preconditioner data structure + HREF="node35.html">get_vect -- Get a copy of the vector contents -
  • Computational routines -
      + HREF="node36.html">Preconditioner data structure +
    +
  • psb_geaxpby -- General Dense Matrix Sum + HREF="node37.html">Computational routines +
    -
  • Communication routines -
  • +
    m
    +
    Number of rows. +
    +Scope: global. +
    +Type: Optional. +
    +Intent: in. +
    +Specified as: an integer value +$0<= m <= size(dat,1)$. +
    +When $dat$ is a rank 2 array, specifies the number of rows to be sent +independently of the leading dimension $size(dat,1)$; must have the +same value on sending and receiving processes. +
    +

    -Figure 10 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 psb_cest subroutine -called by psb_spasb ... by process 0 (i.e. the root process). +

    +
    On Return
    +
    +
    +
    dat
    +
    The data to be received. +
    +Scope: local. +
    +Type: required. +
    +Intent: inout. +
    +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 $m$ is +not specified, size must agree as well. +
    +

    +Notes -

    - - - -
    Figure 10: -A sample PSBLAS-2.0 error - message. Process 0 detected an error condition inside the psb_cest subroutine
    -
    - -
    - -\fbox{\TheSbox} -
    -
    +
      +
    1. This subroutine implies a synchronization, but only between the + calling process and the source process $src$. +
    2. +

    -


    - -Subsections - - -
    - next - + up - previous - contents
    - Next: psb_errpush Pushes - Up: userhtml - Previous: psb_rcv Receive -   Next: Error handling + Up: Parallel environment routines + Previous: psb_snd Send +   Contents diff --git a/docs/html/node101.html b/docs/html/node101.html index f5df1b42..b9e41bfc 100644 --- a/docs/html/node101.html +++ b/docs/html/node101.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_errpush -- Pushes an error code onto the error stack - +Error handling + @@ -18,101 +18,176 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: psb_error Prints - Up: Error handling - Previous: Error handling -   Next: psb_errpush Pushes + Up: userhtml + Previous: psb_rcv Receive +   Contents

    -

    -psb_errpush -- Pushes an error code onto the error - stack -

    +

    +Error handling +

    -

    -call psb_errpush(err_c, r_name, i_err, a_err)
    -
    +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 info 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 info 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. + +

    +Figure 9 shows the layout of a generic psb_foo +routine with respect to the PSBLAS-2.0 error handling policy. It is +possible to see how, whenever an error condition is detected, the +info variable is set to the corresponding error code which is, +then, pushed on top of the stack by means of the +psb_errpush. 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 +psb\_error routine which prints the content of the error stack +and aborts the program execution, according to the choice made by the +user with psb_set_erraction. The default is to print the error +and terminate the program, but the user may choose to handle the error +explicitly.

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    err_c
    -
    the error code -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: an integer. -
    -
    r_name
    -
    the soutine where the error has been caught. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a string. -
    -
    i_err
    -
    addional info for error code -
    -Scope: local -
    -Type: optional -
    -Specified as: an integer array -
    -
    a_err
    -
    addional info for error code -
    -Scope: local -
    -Type: optional -
    -Specified as: a string. -
    -
    + +
    + + + +
    Figure 9: +The layout of a generic psb_foo + routine with respect to PSBLAS-2.0 error handling policy.
    +
    + +
    + +\fbox{\TheSbox} +
    +
    + +

    +Figure 10 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 psb_cest subroutine +called by psb_spasb ... by process 0 (i.e. the root process). + +

    + +

    + + + +
    Figure 10: +A sample PSBLAS-2.0 error + message. Process 0 detected an error condition inside the psb_cest subroutine
    +
    + +
    + +\fbox{\TheSbox} +
    +



    + +Subsections + + + +
    + + +next + +up + +previous + +contents +
    + Next: psb_errpush Pushes + Up: userhtml + Previous: psb_rcv Receive +   Contents + diff --git a/docs/html/node102.html b/docs/html/node102.html index aea3a015..8dbfc463 100644 --- a/docs/html/node102.html +++ b/docs/html/node102.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_error -- Prints the error stack content and aborts execution - +psb_errpush -- Pushes an error code onto the error stack + @@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_set_errverbosity Sets - Up: Error handling - Previous: psb_errpush Pushes -   Next: psb_error Prints + Up: Error handling + Previous: Error handling +   Contents

    -

    -psb_error -- Prints the error stack content and aborts - execution +

    +psb_errpush -- Pushes an error code onto the error + stack

    -call psb_error(icontxt)
    +call psb_errpush(err_c, r_name, i_err, a_err)
     

    @@ -69,17 +69,46 @@ call psb_error(icontxt)

    On Entry
    -
    icontxt
    -
    the communication context. +
    err_c
    +
    the error code
    -Scope: global +Scope: local
    -Type: optional +Type: required
    Intent: in.
    Specified as: an integer.
    +
    r_name
    +
    the soutine where the error has been caught. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a string. +
    +
    i_err
    +
    addional info for error code +
    +Scope: local +
    +Type: optional +
    +Specified as: an integer array +
    +
    a_err
    +
    addional info for error code +
    +Scope: local +
    +Type: optional +
    +Specified as: a string. +

    diff --git a/docs/html/node103.html b/docs/html/node103.html index 1203e4ff..71c492a9 100644 --- a/docs/html/node103.html +++ b/docs/html/node103.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_set_errverbosity -- Sets the verbosity of error messages. - +psb_error -- Prints the error stack content and aborts execution + @@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_set_erraction Set - Up: Error handling - Previous: psb_error Prints -   Next: psb_set_errverbosity Sets + Up: Error handling + Previous: psb_errpush Pushes +   Contents

    -

    -psb_set_errverbosity -- Sets the verbosity of error - messages. +

    +psb_error -- Prints the error stack content and aborts + execution

    -call psb_set_errverbosity(v)
    +call psb_error(icontxt)
     

    @@ -69,12 +69,12 @@ call psb_set_errverbosity(v)

    On Entry
    -
    v
    -
    the verbosity level +
    icontxt
    +
    the communication context.
    -Scope: global +Scope: global
    -Type: required +Type: optional
    Intent: in.
    diff --git a/docs/html/node104.html b/docs/html/node104.html index 80493d57..e74622c6 100644 --- a/docs/html/node104.html +++ b/docs/html/node104.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_set_erraction -- Set the type of action to be taken upon error condition. - +psb_set_errverbosity -- Sets the verbosity of error messages. + @@ -18,46 +18,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Utilities - Up: Error handling - Previous: psb_set_errverbosity Sets -   Next: psb_set_erraction Set + Up: Error handling + Previous: psb_error Prints +   Contents

    -

    -psb_set_erraction -- Set the type of action to be - taken upon error condition. +

    +psb_set_errverbosity -- Sets the verbosity of error + messages.

    -call psb_set_erraction(err_act)
    +call psb_set_errverbosity(v)
     

    @@ -68,25 +69,19 @@ call psb_set_erraction(err_act)

    On Entry
    -
    err_act
    -
    the type of action. +
    v
    +
    the verbosity level
    -Scope: global +Scope: global
    Type: required
    Intent: in.
    -Specified as: an integer. Possible values: psb_act_ret, -psb_act_abort. +Specified as: an integer.
    -

    -

    -call psb_errcomm(icontxt, err)
    -
    -



    diff --git a/docs/html/node105.html b/docs/html/node105.html index 8d385f3b..1a877774 100644 --- a/docs/html/node105.html +++ b/docs/html/node105.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Utilities - +psb_set_erraction -- Set the type of action to be taken upon error condition. + @@ -18,73 +18,76 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: hb_read Read - Up: userhtml - Previous: psb_set_erraction Set -   Next: Utilities + Up: Error handling + Previous: psb_set_errverbosity Sets +   Contents

    -

    - -
    -Utilities -

    +

    +psb_set_erraction -- Set the type of action to be + taken upon error condition. +

    -We have some utitlities available for input and output of -sparsematrices; the interfaces to these routines are available in the -module psb_util_mod. +

    +call psb_set_erraction(err_act)
    +

    -


    - -Subsections +
    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    err_act
    +
    the type of action. +
    +Scope: global +
    +Type: required +
    +Intent: in. +
    +Specified as: an integer. Possible values: psb_act_ret, +psb_act_abort. +
    +
    + +

    +

    +call psb_errcomm(icontxt, err)
    +
    - - +



    diff --git a/docs/html/node106.html b/docs/html/node106.html index 0e912dc5..1ce258d9 100644 --- a/docs/html/node106.html +++ b/docs/html/node106.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format - +Utilities + @@ -18,139 +18,74 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: hb_write Write - Up: Utilities - Previous: Utilities -   Next: hb_read Read + Up: userhtml + Previous: psb_set_erraction Set +   Contents

    -

    -hb_read -- Read a sparse matrix from a file in the - Harwell-Boeing format -

    - -

    -

    -call hb_read(a, iret, iunit, filename, b, mtitle)
    -
    - -

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    filename
    -
    The name of the file to be read. +

    +
    -Type:optional. -
    -Specified as: a character variable containing a valid file name, or --, in which case the default input unit 5 (i.e. standard input -in Unix jargon) is used. Default: -. -

    -
    iunit
    -
    The Fortran file unit number. -
    -Type:optional. -
    -Specified as: an integer value. Only meaningful if filename is not -. -
    -
    +Utilities +

    -

    -
    On Return
    -
    -
    -
    a
    -
    the sparse matrix read from file. -
    -Type:required. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    b
    -
    Rigth hand side(s). -
    -Type: Optional -
    -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. -
    -
    mtitle
    -
    Matrix title. -
    -Type: Optional -
    -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. -
    -
    iret
    -
    Error code. -
    -Type: required -
    -An integer value; 0 means no error has been detected. -
    -
    +We have some utitlities available for input and output of +sparsematrices; the interfaces to these routines are available in the +module psb_util_mod.

    -


    - - -next - -up - -previous - -contents -
    - Next: hb_write Write - Up: Utilities - Previous: Utilities -   Contents - +

    + +Subsections + + + +

    diff --git a/docs/html/node107.html b/docs/html/node107.html index 688867dd..8124a246 100644 --- a/docs/html/node107.html +++ b/docs/html/node107.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format - +hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format + @@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: mm_mat_read Read - Up: Utilities - Previous: hb_read Read -   Next: hb_write Write + Up: Utilities + Previous: Utilities +   Contents

    -

    -hb_write -- Write a sparse matrix to a file - in the Harwell-Boeing format +

    +hb_read -- Read a sparse matrix from a file in the + Harwell-Boeing format

    -call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
    +call hb_read(a, iret, iunit, filename, b, mtitle)
     

    @@ -69,29 +69,13 @@ call hb_write(a, iret, iunit, filename, key, rhs, mtitle)

    On Entry
    -
    a
    -
    the sparse matrix to be written. -
    -Type:required. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    b
    -
    Rigth hand side. -
    -Type: Optional -
    -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. -
    filename
    -
    The name of the file to be written to. +
    The name of the file to be read.
    Type:optional.
    Specified as: a character variable containing a valid file name, or --, in which case the default output unit 6 (i.e. standard output +-, in which case the default input unit 5 (i.e. standard input in Unix jargon) is used. Default: -.
    iunit
    @@ -101,30 +85,37 @@ Type:optional.
    Specified as: an integer value. Only meaningful if filename is not -. -
    key
    -
    Matrix key. + + +

    +

    +
    On Return
    +
    +
    +
    a
    +
    the sparse matrix read from file. +
    +Type:required. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    b
    +
    Rigth hand side(s).
    Type: Optional
    -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.
    mtitle
    Matrix title.
    Type: Optional
    -A charachter variable of length 72 holding the -matrix title as specified by the Harwell-Boeing format and to be -written to file. -
    -
    - -

    -

    -
    On Return
    -
    +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.
    iret
    Error code. @@ -138,26 +129,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: mm_mat_read Read - Up: Utilities - Previous: hb_read Read -   Next: hb_write Write + Up: Utilities + Previous: Utilities +   Contents diff --git a/docs/html/node108.html b/docs/html/node108.html index 8bc1e0fd..6b42f189 100644 --- a/docs/html/node108.html +++ b/docs/html/node108.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format - +hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format + @@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: mm_vet_read Read - Up: Utilities - Previous: hb_write Write -   Next: mm_mat_read Read + Up: Utilities + Previous: hb_read Read +   Contents

    -

    -mm_mat_read -- Read a sparse matrix from a - file in the MatrixMarket format +

    +hb_write -- Write a sparse matrix to a file + in the Harwell-Boeing format

    -call mm_mat_read(a, iret, iunit, filename)
    +call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
     

    @@ -69,13 +69,29 @@ call mm_mat_read(a, iret, iunit, filename)

    On Entry
    +
    a
    +
    the sparse matrix to be written. +
    +Type:required. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    b
    +
    Rigth hand side. +
    +Type: Optional +
    +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. +
    filename
    -
    The name of the file to be read. +
    The name of the file to be written to.
    Type:optional.
    Specified as: a character variable containing a valid file name, or --, in which case the default input unit 5 (i.e. standard input +-, in which case the default output unit 6 (i.e. standard output in Unix jargon) is used. Default: -.
    iunit
    @@ -85,6 +101,24 @@ Type:optional.
    Specified as: an integer value. Only meaningful if filename is not -.
    +
    key
    +
    Matrix key. +
    +Type: Optional +
    +A charachter variable of length 8 holding the +matrix key as specified by the Harwell-Boeing format and to be +written to file. +
    +
    mtitle
    +
    Matrix title. +
    +Type: Optional +
    +A charachter variable of length 72 holding the +matrix title as specified by the Harwell-Boeing format and to be +written to file. +

    @@ -92,13 +126,6 @@ Specified as: an integer value. Only meaningful if filename is not -On Return

    -
    a
    -
    the sparse matrix read from file. -
    -Type:required. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    iret
    Error code.
    @@ -109,7 +136,30 @@ An integer value; 0 means no error has been detected.

    -


    +
    + + +next + +up + +previous + +contents +
    + Next: mm_mat_read Read + Up: Utilities + Previous: hb_read Read +   Contents + diff --git a/docs/html/node109.html b/docs/html/node109.html index 477bd497..3931edcc 100644 --- a/docs/html/node109.html +++ b/docs/html/node109.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -mm_vet_read -- Read a dense vector from a file in the MatrixMarket format - +mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format + @@ -20,44 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: mm_mat_write Write - Up: Utilities - Previous: mm_mat_read Read -   Next: mm_vet_read Read + Up: Utilities + Previous: hb_write Write +   Contents

    -

    -mm_vet_read -- Read a dense vector from a +

    +mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format

    +

    -call mm_vet_read(b, iret, iunit, filename)
    +call mm_mat_read(a, iret, iunit, filename)
     

    @@ -91,14 +92,12 @@ Specified as: an integer value. Only meaningful if filename is not -On Return

    -
    b
    -
    Rigth hand side(s). +
    a
    +
    the sparse matrix read from file.
    -Type: required +Type:required.
    -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 spdatapsb_Tspmat_type.
    iret
    Error code. diff --git a/docs/html/node11.html b/docs/html/node11.html index 2f89501f..93acd3ba 100644 --- a/docs/html/node11.html +++ b/docs/html/node11.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_local_rows -- Get number of local rows - +Methods + @@ -20,81 +20,40 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: get_local_cols Get - Up: Descriptor data structure - Previous: Methods -   Next: get_local_rows Get + Up: Descriptor data structure + Previous: Descriptor data structure +   Contents

    -

    -get_local_rows -- Get number of local rows +

    +Methods

    - -

    -

    -nr = desc%get_local_rows()
    -
    - -

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    desc
    -
    the communication descriptor. -
    -Scope: local. -
    -
    - -

    -

    -
    On Return
    -
    -
    -
    Function value
    -
    The number of local rows, i.e. the number of - rows owned by the current process; as explained in 1, - it is equal to -$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert$. The returned value is - specific to the calling process. -
    -
    - -



    diff --git a/docs/html/node110.html b/docs/html/node110.html index 54ddaa1b..b9f2a496 100644 --- a/docs/html/node110.html +++ b/docs/html/node110.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format - +mm_vet_read -- Read a dense vector from a file in the MatrixMarket format + @@ -18,46 +18,49 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Preconditioner routines - Up: Utilities - Previous: mm_vet_read Read -   Next: mm_mat_write Write + Up: Utilities + Previous: mm_mat_read Read +   Contents

    -

    -mm_mat_write -- Write a sparse matrix to a +

    +mm_vet_read -- Read a dense vector from a file in the MatrixMarket format

    -call mm_mat_write(a, mtitle, iret, iunit, filename)
    +call mm_vet_read(b, iret, iunit, filename)
     
    + +

    Type:
    Asynchronous. @@ -65,28 +68,13 @@ call mm_mat_write(a, mtitle, iret, iunit, filename)
    On Entry
    -
    a
    -
    the sparse matrix to be written. -
    -Type:required. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    mtitle
    -
    Matrix title. -
    -Type: required -
    -A charachter variable holding a descriptive title for the matrix to be - written to file. -
    filename
    -
    The name of the file to be written to. +
    The name of the file to be read.
    Type:optional.
    Specified as: a character variable containing a valid file name, or --, in which case the default output unit 6 (i.e. standard output +-, in which case the default input unit 5 (i.e. standard input in Unix jargon) is used. Default: -.
    iunit
    @@ -103,6 +91,15 @@ Specified as: an integer value. Only meaningful if filename is not -On Return
    +
    b
    +
    Rigth hand side(s). +
    +Type: required +
    +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. +
    iret
    Error code.
    diff --git a/docs/html/node111.html b/docs/html/node111.html index 2abd518e..2837be7c 100644 --- a/docs/html/node111.html +++ b/docs/html/node111.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Preconditioner routines - +mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format + @@ -18,76 +18,102 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: psb_precinit Initialize - Up: userhtml - Previous: mm_mat_write Write -   Next: Preconditioner routines + Up: Utilities + Previous: mm_vet_read Read +   Contents

    -

    - +

    +mm_mat_write -- Write a sparse matrix to a + file in the MatrixMarket format +

    + +
    +call mm_mat_write(a, mtitle, iret, iunit, filename)
    +
    +
    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    a
    +
    the sparse matrix to be written. +
    +Type:required. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    mtitle
    +
    Matrix title. +
    +Type: required +
    +A charachter variable holding a descriptive title for the matrix to be + written to file. +
    +
    filename
    +
    The name of the file to be written to. +
    +Type:optional. +
    +Specified as: a character variable containing a valid file name, or +-, in which case the default output unit 6 (i.e. standard output +in Unix jargon) is used. Default: -. +
    +
    iunit
    +
    The Fortran file unit number.
    -Preconditioner routines -

    +Type:optional. +
    +Specified as: an integer value. Only meaningful if filename is not -. +
    +

    -The base PSBLAS library contains the implementation of two simple -preconditioning techniques: - -

    -The supporting data type and subroutine interfaces are defined in the -module psb_prec_mod. +
    +
    On Return
    +
    +
    +
    iret
    +
    Error code. +
    +Type: required +
    +An integer value; 0 means no error has been detected. +
    +



    - -Subsections - - - -

    diff --git a/docs/html/node112.html b/docs/html/node112.html index 961c15a0..56f63714 100644 --- a/docs/html/node112.html +++ b/docs/html/node112.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_precinit -- Initialize a preconditioner - +Preconditioner routines + @@ -18,125 +18,76 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: psb_precbld Builds - Up: Preconditioner routines - Previous: Preconditioner routines -   Next: psb_precinit Initialize + Up: userhtml + Previous: mm_mat_write Write +   Contents

    -

    -psb_precinit -- Initialize a preconditioner -

    +

    + +
    +Preconditioner routines +

    -

    -call psb_precinit(prec, ptype, info)
    -
    +The base PSBLAS library contains the implementation of two simple +preconditioning techniques: -

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    ptype
    -
    the type of preconditioner. -Scope: global -
    -Type: required -
    -Intent: in. -
    -Specified as: a character string, see usage notes. -
    -
    On Exit
    -

    -

    -
    prec
    -
    Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a preconditioner data structure precdatapsb_prec_type. -
    -
    info
    -
    Scope: global -
    -Type: required -
    -Intent: out. -
    -Error code: if no error, 0 is returned. -
    -
    -Notes -Legal inputs to this subroutine are interpreted depending on the -$ptype$ string as follows3: -
    -
    NONE
    -
    No preconditioning, i.e. the preconditioner is just a copy - operator. -
    -
    DIAG
    -
    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 $A$; -
    -
    BJAC
    -
    Precondition by a factorization of the - block-diagonal of matrix $A$, where block boundaries are determined - by the data allocation boundaries for each process; requires no - communication. Only the incomplete factorization $ILU(0)$ is - currently implemented. -
    -
    + +The supporting data type and subroutine interfaces are defined in the +module psb_prec_mod.



    + +Subsections + + + +

    diff --git a/docs/html/node113.html b/docs/html/node113.html index 8fd09099..e1095ded 100644 --- a/docs/html/node113.html +++ b/docs/html/node113.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_precbld -- Builds a preconditioner - +psb_precinit -- Initialize a preconditioner + @@ -20,137 +20,118 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_precaply Preconditioner - Up: Preconditioner routines - Previous: psb_precinit Initialize -   Next: psb_precbld Builds + Up: Preconditioner routines + Previous: Preconditioner routines +   Contents

    -

    -psb_precbld -- Builds a preconditioner +

    +psb_precinit -- Initialize a preconditioner

    -call psb_precbld(a, desc_a, prec, info,amold,vmold)
    +call psb_precinit(prec, ptype, info)
     

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    -
    a
    -
    the system sparse matrix. -Scope: local +
    ptype
    +
    the type of preconditioner. +Scope: global
    Type: required
    -Intent: in, target. +Intent: in.
    -Specified as: a sparse matrix data structure spdatapsb_Tspmat_type. +Specified as: a character string, see usage notes. +
    +
    On Exit
    +

    prec
    -
    the preconditioner. -
    -Scope: local +
    Scope: local
    Type: required
    Intent: inout.
    -Specified as: an already initialized precondtioner data structure precdatapsb_prec_type -
    -
    desc_a
    -
    the problem communication descriptor. -Scope: local -
    -Type: required -
    -Intent: in, target. -
    -Specified as: a communication descriptor data structure descdatapsb_desc_type. +Specified as: a preconditioner data structure precdatapsb_prec_type.
    -
    amold
    -
    The desired dynamic type for the internal matrix storage. -
    -Scope: local. -
    -Type: optional. -
    -Intent: in. -
    -Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat. -
    -
    vmold
    -
    The desired dynamic type for the internal vector storage. -
    -Scope: local. +
    info
    +
    Scope: global
    -Type: optional. +Type: required
    -Intent: in. +Intent: out.
    -Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type. - -

    +Error code: if no error, 0 is returned.

    - -

    +Notes +Legal inputs to this subroutine are interpreted depending on the +$ptype$ string as follows3:

    -
    On Return
    -
    +
    NONE
    +
    No preconditioning, i.e. the preconditioner is just a copy + operator.
    -
    prec
    -
    the preconditioner. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a precondtioner data structure precdatapsb_prec_type -
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. +
    DIAG
    +
    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 $A$; +
    +
    BJAC
    +
    Precondition by a factorization of the + block-diagonal of matrix $A$, where block boundaries are determined + by the data allocation boundaries for each process; requires no + communication. Only the incomplete factorization $ILU(0)$ is + currently implemented.
    diff --git a/docs/html/node114.html b/docs/html/node114.html index a88fde6f..0d05d317 100644 --- a/docs/html/node114.html +++ b/docs/html/node114.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_precaply -- Preconditioner application routine - +psb_precbld -- Builds a preconditioner + @@ -20,45 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_precdescr Prints - Up: Preconditioner routines - Previous: psb_precbld Builds -   Next: psb_precaply Preconditioner + Up: Preconditioner routines + Previous: psb_precinit Initialize +   Contents

    -

    -psb_precaply -- Preconditioner application routine +

    +psb_precbld -- Builds a preconditioner

    -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)
     

    @@ -69,54 +68,60 @@ call psb_precaply(prec,x,desc_a,info,trans)

    On Entry
    -
    prec
    -
    the preconditioner. +
    a
    +
    the system sparse matrix. Scope: local
    Type: required
    -Intent: in. +Intent: in, target.
    -Specified as: a preconditioner data structure precdatapsb_prec_type. +Specified as: a sparse matrix data structure spdatapsb_Tspmat_type.
    -
    x
    -
    the source vector. +
    prec
    +
    the preconditioner. +
    Scope: local
    Type: required
    Intent: inout.
    -Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
    +Specified as: an already initialized precondtioner data structure precdatapsb_prec_type +
    desc_a
    -
    the problem communication descriptor. +
    the problem communication descriptor. Scope: local
    Type: required
    -Intent: in. +Intent: in, target.
    -Specified as: a communication data structure descdatapsb_desc_type. +Specified as: a communication descriptor data structure descdatapsb_desc_type.
    -
    trans
    -
    Scope: +
    amold
    +
    The desired dynamic type for the internal matrix storage.
    -Type: optional +Scope: local. +
    +Type: optional.
    Intent: in.
    -Specified as: a character. +Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat.
    -
    work
    -
    an optional work space -Scope: local +
    vmold
    +
    The desired dynamic type for the internal vector storage.
    -Type: optional +Scope: local.
    -Intent: inout. +Type: optional. +
    +Intent: in.
    -Specified as: a double precision array. +Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type. + +

    @@ -125,16 +130,17 @@ Specified as: a double precision array.
    On Return
    -
    y
    -
    the destination vector. +
    prec
    +
    the preconditioner. +
    Scope: local
    Type: required
    Intent: inout.
    -Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
    +Specified as: a precondtioner data structure precdatapsb_prec_type +
    info
    Error code.
    diff --git a/docs/html/node115.html b/docs/html/node115.html index a81962e6..f72936a0 100644 --- a/docs/html/node115.html +++ b/docs/html/node115.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_precdescr -- Prints a description of current preconditioner - +psb_precaply -- Preconditioner application routine + @@ -18,53 +18,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Iterative Methods - Up: Preconditioner routines - Previous: psb_precaply Preconditioner -   Next: psb_precdescr Prints + Up: Preconditioner routines + Previous: psb_precbld Builds +   Contents

    -

    -psb_precdescr -- Prints a description of current - preconditioner +

    +psb_precaply -- Preconditioner application routine

    -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)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    @@ -79,15 +79,72 @@ Intent: in.
    Specified as: a preconditioner data structure precdatapsb_prec_type.
    -
    iout
    -
    output unit. +
    x
    +
    the source vector. Scope: local
    -Type: optiona +Type: required +
    +Intent: inout. +
    +Specified as: a rank one array or an object of type vdatapsb_T_vect_type. +
    +
    desc_a
    +
    the problem communication descriptor. +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a communication data structure descdatapsb_desc_type. +
    +
    trans
    +
    Scope: +
    +Type: optional
    Intent: in.
    -Specified as: an integer number. +Specified as: a character. +
    +
    work
    +
    an optional work space +Scope: local +
    +Type: optional +
    +Intent: inout. +
    +Specified as: a double precision array. +
    +
    + +

    +

    +
    On Return
    +
    +
    +
    y
    +
    the destination vector. +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one array or an object of type vdatapsb_T_vect_type. +
    +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected.
    diff --git a/docs/html/node116.html b/docs/html/node116.html index 91d965f5..6391df3f 100644 --- a/docs/html/node116.html +++ b/docs/html/node116.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Iterative Methods - +psb_precdescr -- Prints a description of current preconditioner + @@ -18,61 +18,80 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: psb_krylov Krylov - Up: userhtml - Previous: psb_precdescr Prints -   Next: Iterative Methods + Up: Preconditioner routines + Previous: psb_precaply Preconditioner +   Contents

    -

    - -
    -Iterative Methods -

    +

    +psb_precdescr -- Prints a description of current + preconditioner +

    -In this chapter we provide routines for preconditioners and iterative -methods. The interfaces for Krylov subspace methods are available in -the module psb_krylov_mod. +

    +call psb_precdescr(prec)
    +call psb_precdescr(prec, iout)
    +

    -


    - -Subsections +
    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    prec
    +
    the preconditioner. +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a preconditioner data structure precdatapsb_prec_type. +
    +
    iout
    +
    output unit. +Scope: local +
    +Type: optiona +
    +Intent: in. +
    +Specified as: an integer number. +
    +
    - - +



    diff --git a/docs/html/node117.html b/docs/html/node117.html index f220bef5..46984ee1 100644 --- a/docs/html/node117.html +++ b/docs/html/node117.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_krylov -- Krylov Methods Driver Routine - +Iterative Methods + @@ -18,372 +18,62 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - + + + - next - + up previous - contents
    - Next: Bibliography - Up: Iterative Methods + Next: psb_krylov Krylov + Up: userhtml Previous: Iterative Methods -   psb_precdescr Prints +   Contents

    -

    +

    +
    -psb_krylov -- Krylov Methods Driver - Routine -

    - -

    -This subroutine is a driver that provides a general interface for all -the Krylov-Subspace family methods implemented in PSBLAS version 2. - -

    -The stopping criterion is the normwise backward error, in the infinity -norm, i.e. the iteration is stopped when -

    -
    - - -\begin{displaymath}err = \frac{\Vert r_i\Vert}{(\Vert A\Vert\Vert x_i\Vert+\Vert b\Vert)} < eps \end{displaymath} -
    -
    -

    -or the 2-norm residual reduction -

    -
    - - -\begin{displaymath}err = \frac{\Vert r_i\Vert}{\Vert b\Vert _2} < eps \end{displaymath} -
    -
    -

    -according to the value passed through the istop argument (see -later). In the above formulae, $x_i$ is the tentative solution and -$r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration. - -

    -

    -call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&
    -     & itmax,iter,err,itrace,irst,istop,cond)
    -
    +Iterative Methods +

    -

    -
    Type:
    -
    Synchronous. -
    -
    On Entry
    -
    -
    -
    method
    -
    a string that defines the iterative method to be - used. Supported values are: -
    -
    CG:
    -
    the Conjugate Gradient method; - -
    -
    CGS:
    -
    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 psb_krylov_mod.

    -

    -
    BICG:
    -
    the Bi-Conjugate Gradient method; - -
    -
    BICGSTAB:
    -
    the Bi-Conjugate Gradient Stabilized method; - -
    -
    BICGSTABL:
    -
    the Bi-Conjugate Gradient Stabilized method with restarting; - -
    -
    RGMRES:
    -
    the Generalized Minimal Residual method with restarting. - -
    -
    -
    -
    a
    -
    the local portion of global sparse matrix -$A$. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    prec
    -
    The data structure containing the preconditioner. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a structured data of type precdatapsb_prec_type. -
    -
    b
    -
    The RHS vector. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
    -
    x
    -
    The initial guess. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
    -
    eps
    -
    The stopping tolerance. -
    -Scope: global -
    -Type: required -
    -Intent: in. -
    -Specified as: a real number. -
    -
    desc_a
    -
    contains data structures for communications. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    itmax
    -
    The maximum number of iterations to perform. -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Default: $itmax = 1000$. -
    -Specified as: an integer variable $itmax \ge 1$. -
    -
    itrace
    -
    If $>0$ print out an informational message about - convergence every $itrace$ iterations. -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -
    irst
    -
    An integer specifying the restart parameter. -
    -Scope: global -
    -Type: optional. -
    -Intent: in. -
    -Values: $irst>0$. This is employed for the BiCGSTABL or RGMRES -methods, otherwise it is ignored. - -

    -

    -
    istop
    -
    An integer specifying the stopping criterion. -
    -Scope: global -
    -Type: optional. -
    -Intent: in. -
    -Values: 1: use the normwise backward error, 2: use the scaled 2-norm -of the residual. Default: 2. -
    -
    On Return
    -
    -
    -
    x
    -
    The computed solution. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
    -
    iter
    -
    The number of iterations performed. -
    -Scope: global -
    -Type: optional -
    -Intent: out. -
    -Returned as: an integer variable. -
    -
    err
    -
    The convergence estimate on exit. -
    -Scope: global -
    -Type: optional -
    -Intent: out. -
    -Returned as: a real number. -
    -
    cond
    -
    An estimate of the condition number of matrix $A$; only - available with the $CG$ method. -
    -Scope: global -
    -Type: optional -
    -Intent: out. -
    -Returned as: a real number. -
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -
    -
    - -

    - -

    - -

    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: Bibliography - Up: Iterative Methods - Previous: Iterative Methods -   Contents - +

    + +Subsections + + + +

    diff --git a/docs/html/node118.html b/docs/html/node118.html index 21313b13..4ce044c4 100644 --- a/docs/html/node118.html +++ b/docs/html/node118.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Bibliography - +psb_krylov -- Krylov Methods Driver Routine + @@ -18,166 +18,372 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: About this document ... - Up: userhtml - Previous: psb_krylov Krylov -   Next: Bibliography + Up: Iterative Methods + Previous: Iterative Methods +   Contents -

    +
    +
    - -

    -Bibliography -

    1 -
    - D. Barbieri, V. Cardellini, S. Filippone and D. Rouson -Design Patterns for Scientific Computations on Sparse Matrices, - HPSS 2011, Algorithms and Programming Tools for Next-Generation High-Performance Scientific Software, Bordeaux, Sep. 2011 + +

    +
    +psb_krylov -- Krylov Methods Driver + Routine +

    -

    2 -
    -G. Bella, S. Filippone, A. De Maio and M. Testa, -A Simulation Model for Forest Fires, -in J. Dongarra, K. Madsen, J. Wasniewski, editors, -Proceedings of PARA 04 Workshop on State of the Art -in Scientific Computing, pp. 546-553, Lecture Notes in Computer Science, -Springer, 2005. -

    3 -
    A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,
    -2LEV-D2P4: a package of high-performance preconditioners,
    -Applicable Algebra in Engineering, Communications and Computing, -Volume 18, Number 3, May, 2007, pp. 223-239 -

    4 -
    P. D'Ambra, S. Filippone, D. Di Serafino
    -On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners -
    -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.

    -

    5 -
    - Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R., -An Extended Set of Fortran Basic Linear Algebra Subprograms, -ACM Trans. Math. Softw. vol. 14, 1-17, 1988. -

    6 -
    - Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I., -A Set of level 3 Basic Linear Algebra Subprograms, -ACM Trans. Math. Softw. vol. 16, 1-17, 1990. -

    7 -
    -J. J. Dongarra and R. C. Whaley, -A User's Guide to the BLACS v. 1.1, -Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of -Tennessee, March 1995 (updated May 1997). -

    8 -
    -I. Duff, M. Marrone, G. Radicati and C. Vittoli, -Level 3 Basic Linear Algebra Subprograms for Sparse Matrices: -a User Level Interface, -ACM Transactions on Mathematical Software, 23(3), pp. 379-401, 1997. -

    9 -
    -I. Duff, M. Heroux and R. Pozo, -An Overview of the Sparse Basic Linear -Algebra Subprograms: the New Standard from the BLAS Technical Forum, -ACM Transactions on Mathematical Software, 28(2), pp. 239-267, 2002. -

    10 +The stopping criterion is the normwise backward error, in the infinity +norm, i.e. the iteration is stopped when +

    +
    + + +\begin{displaymath}err = \frac{\Vert r_i\Vert}{(\Vert A\Vert\Vert x_i\Vert+\Vert b\Vert)} < eps \end{displaymath} +
    +
    +

    +or the 2-norm residual reduction +

    +
    + + +\begin{displaymath}err = \frac{\Vert r_i\Vert}{\Vert b\Vert _2} < eps \end{displaymath} +
    +
    +

    +according to the value passed through the istop argument (see +later). In the above formulae, $x_i$ is the tentative solution and +$r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration. + +

    +

    +call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&
    +     & itmax,iter,err,itrace,irst,istop,cond)
    +
    + +

    +

    +
    Type:
    +
    Synchronous. +
    +
    On Entry
    -S. Filippone and M. Colajanni, -PSBLAS: A Library for Parallel Linear Algebra -Computation on Sparse Matrices, +
    +
    method
    +
    a string that defines the iterative method to be + used. Supported values are: +
    +
    CG:
    +
    the Conjugate Gradient method; + +
    +
    CGS:
    +
    the Conjugate Gradient Stabilized method; + +

    +

    +
    BICG:
    +
    the Bi-Conjugate Gradient method; + +
    +
    BICGSTAB:
    +
    the Bi-Conjugate Gradient Stabilized method; + +
    +
    BICGSTABL:
    +
    the Bi-Conjugate Gradient Stabilized method with restarting; + +
    +
    RGMRES:
    +
    the Generalized Minimal Residual method with restarting. + +
    +
    +
    +
    a
    +
    the local portion of global sparse matrix +$A$.
    -ACM Transactions on Mathematical Software, 26(4), pp. 527-550, 2000. -

    11 -
    -S. Filippone and A. Buttari, -Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003, +Scope: local
    -ACM Transactions on Mathematical Software, to appear. -

    12 -
    -S. Filippone, P. D'Ambra, M. Colajanni, -Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics -Applications Code on Linux Clusters, -in G. Joubert, A. Murli, F. Peters, M. Vanneschi, editors, -Parallel Computing - Advances & Current Issues, -pp. 441-448, Imperial College Press, 2002. -

    13 -
    - Gamma, E., Helm, R., Johnson, R., and Vlissides, - J. 1995. - Design Patterns: Elements of Reusable Object-Oriented Software. - Addison-Wesley. +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    prec
    +
    The data structure containing the preconditioner. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type precdatapsb_prec_type. +
    +
    b
    +
    The RHS vector. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a rank one array or an object of type vdatapsb_T_vect_type. +
    +
    x
    +
    The initial guess. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one array or an object of type vdatapsb_T_vect_type. +
    +
    eps
    +
    The stopping tolerance. +
    +Scope: global +
    +Type: required +
    +Intent: in. +
    +Specified as: a real number. +
    +
    desc_a
    +
    contains data structures for communications. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type descdatapsb_desc_type. +
    +
    itmax
    +
    The maximum number of iterations to perform. +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Default: $itmax = 1000$. +
    +Specified as: an integer variable $itmax \ge 1$. +
    +
    itrace
    +
    If $>0$ print out an informational message about + convergence every $itrace$ iterations. +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +
    irst
    +
    An integer specifying the restart parameter. +
    +Scope: global +
    +Type: optional. +
    +Intent: in. +
    +Values: $irst>0$. This is employed for the BiCGSTABL or RGMRES +methods, otherwise it is ignored.

    -

    14 -
    -Karypis, G. and Kumar, V., -METIS: Unstructured Graph Partitioning and Sparse Matrix - Ordering System. -Minneapolis, MN 55455: University of Minnesota, Department of - Computer Science, 1995. -Internet Address: http://www.cs.umn.edu/~karypis. -

    15 +
    +
    istop
    +
    An integer specifying the stopping criterion. +
    +Scope: global +
    +Type: optional. +
    +Intent: in. +
    +Values: 1: use the normwise backward error, 2: use the scaled 2-norm +of the residual. Default: 2. +
    +
    On Return
    -Lawson, C., Hanson, R., Kincaid, D. and Krogh, F., - Basic Linear Algebra Subprograms for Fortran usage, -ACM Trans. Math. Softw. vol. 5, 38-329, 1979. +
    +
    x
    +
    The computed solution. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one array or an object of type vdatapsb_T_vect_type. +
    +
    iter
    +
    The number of iterations performed. +
    +Scope: global +
    +Type: optional +
    +Intent: out. +
    +Returned as: an integer variable. +
    +
    err
    +
    The convergence estimate on exit. +
    +Scope: global +
    +Type: optional +
    +Intent: out. +
    +Returned as: a real number. +
    +
    cond
    +
    An estimate of the condition number of matrix $A$; only + available with the $CG$ method. +
    +Scope: global +
    +Type: optional +
    +Intent: out. +
    +Returned as: a real number. +
    +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +
    + + +

    -

    16 -
    -Machiels, L. and Deville, M. -Fortran 90: An entry to object-oriented programming for the solution - of partial differential equations. -ACM Trans. Math. Softw. vol. 23, 32-49. -

    17 -
    -Metcalf, M., Reid, J. and Cohen, M. -Fortran 95/2003 explained. -Oxford University Press, 2004. -

    18 -
    -Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The - Object-Oriented Way. Cambridge University Press (2011)

    -

    19 -
    -M. Snir, S. Otto, S. Huss-Lederman, D. Walker and J. Dongarra, -MPI: The Complete Reference. Volume 1 - The MPI Core, second edition, -MIT Press, 1998. -

    -


    +
    + + +next + +up + +previous + +contents +
    + Next: Bibliography + Up: Iterative Methods + Previous: Iterative Methods +   Contents + diff --git a/docs/html/node119.html b/docs/html/node119.html index 7060aa2f..b69ac18d 100644 --- a/docs/html/node119.html +++ b/docs/html/node119.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -About this document ... - +Bibliography + @@ -18,52 +18,165 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + + + -next - +next + up - previous - contents
    - Up: Next:
    About this document ... + Up: userhtml - Previous: Bibliography -   Previous: psb_krylov Krylov +   Contents -
    -
    +

    + +

    +Bibliography +

    1 +
    + D. Barbieri, V. Cardellini, S. Filippone and D. Rouson +Design Patterns for Scientific Computations on Sparse Matrices, + HPSS 2011, Algorithms and Programming Tools for Next-Generation High-Performance Scientific Software, Bordeaux, Sep. 2011 + +

    +

    2 +
    +G. Bella, S. Filippone, A. De Maio and M. Testa, +A Simulation Model for Forest Fires, +in J. Dongarra, K. Madsen, J. Wasniewski, editors, +Proceedings of PARA 04 Workshop on State of the Art +in Scientific Computing, pp. 546-553, Lecture Notes in Computer Science, +Springer, 2005. +

    3 +
    A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,
    +2LEV-D2P4: a package of high-performance preconditioners,
    +Applicable Algebra in Engineering, Communications and Computing, +Volume 18, Number 3, May, 2007, pp. 223-239 +

    4 +
    P. D'Ambra, S. Filippone, D. Di Serafino
    +On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners +
    +Applied Numerical Mathematics, Elsevier Science, +Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196. -

    -About this document ... -

    -

    -This document was generated using the -LaTeX2HTML translator Version 2008 (1.71)

    -Copyright © 1993, 1994, 1995, 1996, -Nikos Drakos, -Computer Based Learning Unit, University of Leeds. +

    5 +
    + Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R., +An Extended Set of Fortran Basic Linear Algebra Subprograms, +ACM Trans. Math. Softw. vol. 14, 1-17, 1988. +

    6 +
    + Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I., +A Set of level 3 Basic Linear Algebra Subprograms, +ACM Trans. Math. Softw. vol. 16, 1-17, 1990. +

    7 +
    +J. J. Dongarra and R. C. Whaley, +A User's Guide to the BLACS v. 1.1, +Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of +Tennessee, March 1995 (updated May 1997). +

    8 +
    +I. Duff, M. Marrone, G. Radicati and C. Vittoli, +Level 3 Basic Linear Algebra Subprograms for Sparse Matrices: +a User Level Interface, +ACM Transactions on Mathematical Software, 23(3), pp. 379-401, 1997. +

    9 +
    +I. Duff, M. Heroux and R. Pozo, +An Overview of the Sparse Basic Linear +Algebra Subprograms: the New Standard from the BLAS Technical Forum, +ACM Transactions on Mathematical Software, 28(2), pp. 239-267, 2002. +

    10 +
    +S. Filippone and M. Colajanni, +PSBLAS: A Library for Parallel Linear Algebra +Computation on Sparse Matrices, +
    +ACM Transactions on Mathematical Software, 26(4), pp. 527-550, 2000. +

    11 +
    +S. Filippone and A. Buttari, +Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003,
    -Copyright © 1997, 1998, 1999, -Ross Moore, -Mathematics Department, Macquarie University, Sydney. +ACM Transactions on Mathematical Software, to appear. +

    12 +
    +S. Filippone, P. D'Ambra, M. Colajanni, +Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics +Applications Code on Linux Clusters, +in G. Joubert, A. Murli, F. Peters, M. Vanneschi, editors, +Parallel Computing - Advances & Current Issues, +pp. 441-448, Imperial College Press, 2002. +

    13 +
    + Gamma, E., Helm, R., Johnson, R., and Vlissides, + J. 1995. + Design Patterns: Elements of Reusable Object-Oriented Software. + Addison-Wesley. + +

    +

    14 +
    +Karypis, G. and Kumar, V., +METIS: Unstructured Graph Partitioning and Sparse Matrix + Ordering System. +Minneapolis, MN 55455: University of Minnesota, Department of + Computer Science, 1995. +Internet Address: http://www.cs.umn.edu/~karypis. +

    15 +
    +Lawson, C., Hanson, R., Kincaid, D. and Krogh, F., + Basic Linear Algebra Subprograms for Fortran usage, +ACM Trans. Math. Softw. vol. 5, 38-329, 1979. +

    -The command line arguments were:
    - latex2html -local_icons -noaddress -dir ../../html userhtml.tex +

    16 +
    +Machiels, L. and Deville, M. +Fortran 90: An entry to object-oriented programming for the solution + of partial differential equations. +ACM Trans. Math. Softw. vol. 23, 32-49. +

    17 +
    +Metcalf, M., Reid, J. and Cohen, M. +Fortran 95/2003 explained. +Oxford University Press, 2004. +

    18 +
    +Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The + Object-Oriented Way. Cambridge University Press (2011) + +

    +

    19 +
    +M. Snir, S. Otto, S. Huss-Lederman, D. Walker and J. Dongarra, +MPI: The Complete Reference. Volume 1 - The MPI Core, second edition, +MIT Press, 1998. +
    +

    -The translation was initiated by Salvatore Filippone on 2012-04-16


    diff --git a/docs/html/node12.html b/docs/html/node12.html index 32eab5c9..f196940c 100644 --- a/docs/html/node12.html +++ b/docs/html/node12.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_local_cols -- Get number of local cols - +get_local_rows -- Get number of local rows + @@ -20,54 +20,54 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: get_global_rows Get - Up: Descriptor data structure - Previous: get_local_rows Get -   Next: get_local_cols Get + Up: Descriptor data structure + Previous: Methods +   Contents

    -

    -get_local_cols -- Get number of local cols +

    +get_local_rows -- Get number of local rows

    -nc = desc%get_local_cols()
    +nr = desc%get_local_rows()
     

    -
    On Entry
    -
    -
    Type:
    Asynchronous.
    +
    On Entry
    +
    +
    desc
    the communication descriptor.
    @@ -81,17 +81,16 @@ Scope: local.
    Function value
    -
    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 1, - it is equal to $\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.
    diff --git a/docs/html/node120.html b/docs/html/node120.html new file mode 100644 index 00000000..0a0a33ad --- /dev/null +++ b/docs/html/node120.html @@ -0,0 +1,70 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
    + Up: userhtml + Previous: Bibliography +   Contents +
    +
    + + +

    +About this document ... +

    +

    +This document was generated using the +LaTeX2HTML translator Version 2008 (1.71) +

    +Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
    +Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

    +The command line arguments were:
    + latex2html -local_icons -noaddress -dir ../../html userhtml.tex +

    +The translation was initiated by Salvatore Filippone on 2012-04-17 +


    + + + diff --git a/docs/html/node13.html b/docs/html/node13.html index 3402b788..72c02d97 100644 --- a/docs/html/node13.html +++ b/docs/html/node13.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_global_rows -- Get number of global rows - +get_local_cols -- Get number of local cols + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: get_global_cols Get - Up: Descriptor data structure - Previous: get_local_cols Get -   Next: get_global_rows Get + Up: Descriptor data structure + Previous: get_local_rows Get +   Contents

    -

    -get_global_rows -- Get number of global rows +

    +get_local_cols -- Get number of local cols

    -nr = desc%get_global_rows()
    +nc = desc%get_local_cols()
     

    @@ -81,8 +81,17 @@ Scope: local.

    Function value
    -
    The number of global rows, i.e. the size of the - global index space. +
    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 1, + it is equal to +$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert +\vert{\cal H}_i\vert$. The + returned value is specific to the calling process.
    diff --git a/docs/html/node14.html b/docs/html/node14.html index 89e00849..24667baf 100644 --- a/docs/html/node14.html +++ b/docs/html/node14.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_global_cols -- Get number of global cols - +get_global_rows -- Get number of global rows + @@ -18,55 +18,56 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: get_context Get communication context - Up: Descriptor data structure - Previous: get_global_rows Get -   Next: get_global_cols Get + Up: Descriptor data structure + Previous: get_local_cols Get +   Contents

    -

    -get_global_cols -- Get number of global cols +

    +get_global_rows -- Get number of global rows

    -nr = desc%get_global_cols()
    +nr = desc%get_global_rows()
     

    -
    Type:
    -
    Asynchronous. -
    On Entry
    +
    Type:
    +
    Asynchronous. +
    desc
    the communication descriptor.
    @@ -80,8 +81,8 @@ Scope: local.
    Function value
    -
    The number of global cols; usually this is equal - to the number of global rows. +
    The number of global rows, i.e. the size of the + global index space.
    diff --git a/docs/html/node15.html b/docs/html/node15.html index e2ee16b1..d56f398c 100644 --- a/docs/html/node15.html +++ b/docs/html/node15.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_context--Get communication context - +get_global_cols -- Get number of global cols + @@ -18,46 +18,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: psb_cd_get_large_threshold Get - Up: Data Structures and Classes - Previous: get_global_cols Get -   Next: get_context Get communication context + Up: Descriptor data structure + Previous: get_global_rows Get +   Contents

    -

    -
    -get_context--Get communication context -
    -

    +

    +get_global_cols -- Get number of global cols +

    + +

    -ictxt = desc%get_context()
    +nr = desc%get_global_cols()
     

    @@ -81,27 +80,13 @@ Scope: local.

    Function value
    -
    The communication context. +
    The number of global cols; usually this is equal + to the number of global rows.



    - -Subsections - - - -

    diff --git a/docs/html/node16.html b/docs/html/node16.html index eae5495c..4c552fdc 100644 --- a/docs/html/node16.html +++ b/docs/html/node16.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cd_get_large_threshold -- Get threshold for index mapping switch - +get_context--Get communication context + @@ -18,46 +18,46 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: psb_cd_set_large_threshold Set - Up: get_context Get communication context - Previous: get_context Get communication context -   Next: psb_cd_get_large_threshold Get + Up: Data Structures and Classes + Previous: get_global_cols Get +   Contents

    -

    -psb_cd_get_large_threshold -- Get threshold for - index mapping switch -

    - +

    +
    +get_context--Get communication context +
    +

    -ith = psb_cd_get_large_threshold()
    +ictxt = desc%get_context()
     

    @@ -65,18 +65,43 @@ ith = psb_cd_get_large_threshold()

    Type:
    Asynchronous.
    -
    On Return
    +
    On Entry
    -
    Function value
    -
    The current value for the size threshold. +
    desc
    +
    the communication descriptor. +
    +Scope: local. +
    +

    +

    +
    On Return
    +
    +
    +
    Function value
    +
    The communication context.



    + +Subsections + + + +

    diff --git a/docs/html/node17.html b/docs/html/node17.html index b2995c8a..ea533b7d 100644 --- a/docs/html/node17.html +++ b/docs/html/node17.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cd_set_large_threshold -- Set threshold for index mapping switch - +psb_cd_get_large_threshold -- Get threshold for index mapping switch + @@ -20,71 +20,60 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: Named Constants - Up: get_context Get communication context - Previous: psb_cd_get_large_threshold Get -   Next: psb_cd_set_large_threshold Set + Up: get_context Get communication context + Previous: get_context Get communication context +   Contents

    -

    -psb_cd_set_large_threshold -- Set threshold for +

    +psb_cd_get_large_threshold -- Get threshold for index mapping switch

    -call psb_cd_set_large_threshold(ith)
    +ith = psb_cd_get_large_threshold()
     

    Type:
    -
    Synchronous. +
    Asynchronous.
    -
    On Entry
    +
    On Return
    -
    ith
    -
    the new threshold for communication descriptors. -
    -Scope: global. -
    -Type: required. -
    -Intent: in. -
    -Specified as: an integer value greater than zero. +
    Function value
    +
    The current value for the size threshold. + +

    -Note: the threshold value is only queried by the library at the time a -call to psb_cdall 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.



    diff --git a/docs/html/node18.html b/docs/html/node18.html index 81221718..14e7187d 100644 --- a/docs/html/node18.html +++ b/docs/html/node18.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Named Constants - +psb_cd_set_large_threshold -- Set threshold for index mapping switch + @@ -18,78 +18,73 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Sparse Matrix class - Up: get_context Get communication context - Previous: psb_cd_set_large_threshold Set -   Next: Named Constants + Up: get_context Get communication context + Previous: psb_cd_get_large_threshold Get +   Contents

    -

    - -
    -Named Constants +

    +psb_cd_set_large_threshold -- Set threshold for + index mapping switch

    + +
    +call psb_cd_set_large_threshold(ith)
    +
    + +

    -
    psb_none_
    -
    Generic no-op; -
    -
    psb_nohalo_
    -
    Do not fetch halo elements; -
    -
    psb_halo_
    -
    Fetch halo elements from neighbouring processes; -
    -
    psb_sum_
    -
    Sum overlapped elements -
    -
    psb_avg_
    -
    Average overlapped elements +
    Type:
    +
    Synchronous.
    -
    psb_comm_halo_
    -
    Exchange data based on the halo_index - list; +
    On Entry
    +
    -
    psb_comm_ext_
    -
    Exchange data based on the ext_index - list; -
    -
    psb_comm_ovr_
    -
    Exchange data based on the ovrlap_index - list; -
    -
    psb_comm_mov_
    -
    Exchange data based on the ovr_mst_idx - list; - -

    +

    ith
    +
    the new threshold for communication descriptors. +
    +Scope: global. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer value greater than zero.
    +Note: the threshold value is only queried by the library at the time a +call to psb_cdall 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.



    diff --git a/docs/html/node19.html b/docs/html/node19.html index 1e980d73..c6d964fe 100644 --- a/docs/html/node19.html +++ b/docs/html/node19.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Sparse Matrix class - +Named Constants + @@ -18,181 +18,81 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: Methods - Up: Data Structures and Classes - Previous: Named Constants -   Next: Sparse Matrix class + Up: get_context Get communication context + Previous: psb_cd_set_large_threshold Set +   Contents

    -

    - +

    +
    -Sparse Matrix class -

    -The spdatapsb_Tspmat_type 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 [13] as detailed -in [11]; the type declaration is shown in -figure 4 where T is a placeholder for the -data type and precision variants +Named Constants +
    -
    S
    -
    Single precision real; +
    psb_none_
    +
    Generic no-op;
    -
    D
    -
    Double precision real; +
    psb_nohalo_
    +
    Do not fetch halo elements;
    -
    C
    -
    Single precision complex; +
    psb_halo_
    +
    Fetch halo elements from neighbouring processes;
    -
    Z
    -
    Double precision complex. +
    psb_sum_
    +
    Sum overlapped elements
    -
    -The actual data is contained in the polymorphic component a%a -of type spbasedatapsb_T_base_sparse_mat; 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 psb_spasb routine. - -
    - - - -
    Figure 4: - The PSBLAS defined data type that - contains a sparse matrix.
    -
    - -
    -
    -  type :: psb_Tspmat_type
    -
    -    class(psb_T_base_sparse_mat), allocatable  :: a 
    -
    -  end type  psb_Tspmat_type
    -
    -
    -
    -
    -The following very common formats are precompiled in PSBLAS and thus -are always available: -
    -
    psb_T_coo_sparse_mat
    -
    Coordinate storage; +
    psb_avg_
    +
    Average overlapped elements
    -
    psb_T_csr_sparse_mat
    -
    Compressed storage by rows; +
    psb_comm_halo_
    +
    Exchange data based on the halo_index + list;
    -
    psb_T_csc_sparse_mat
    -
    Compressed storage by columns; +
    psb_comm_ext_
    +
    Exchange data based on the ext_index + list;
    -
    -The inner sparse matrix has an associated state, which can take the -following values: -
    -
    Build:
    -
    State entered after the first allocation, and before the - first assembly; in this state it is possible to add nonzero entries. -
    -
    Assembled:
    -
    State entered after the assembly; computations using - the sparse matrix, such as matrix-vector products, are only possible - in this state; +
    psb_comm_ovr_
    +
    Exchange data based on the ovrlap_index + list;
    -
    Update:
    -
    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. +
    psb_comm_mov_
    +
    Exchange data based on the ovr_mst_idx + list; + +

    -The only storage variant supporting the build state is COO; all other -variants are obtained by conversion to/from it.



    - -Subsections - - - -
    - - -next - -up - -previous - -contents -
    - Next: Methods - Up: Data Structures and Classes - Previous: Named Constants -   Contents - diff --git a/docs/html/node2.html b/docs/html/node2.html index c8d7c660..b8b22555 100644 --- a/docs/html/node2.html +++ b/docs/html/node2.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next: General overview - Up: Up: userhtml - Previous: Previous: Contents -   Contents

    @@ -71,7 +71,7 @@ passing.

    The PSBLAS library version 3 is implemented in the Fortran 2003 [17] programming language, with reuse and/or + HREF="node119.html#metcalf">17] programming language, with reuse and/or adaptation of existing Fortran 77 and Fortran 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 [11]; other + HREF="node119.html#Sparse03">11]; other works discussing advanced programming in Fortran 2003 include [1,18]; sufficient support for + HREF="node119.html#DesPat:11">1,18]; sufficient support for Fortran 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 95, with its support for object-based design, with other languages; these have been advocated by a number of authors, e.g. [16]. Moreover, the Fortran 95 facilities for dynamic + HREF="node119.html#machiels">16]. Moreover, the Fortran 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 [8,9], which in its turn is based on the + HREF="node119.html#sblas97">8,9], which in its turn is based on the proposal for BLAS on dense matrices [15,5,6]. + HREF="node119.html#BLAS1">15,5,6].

    The applicability of sparse iterative solvers to many different areas @@ -144,26 +144,26 @@ computational fluid dynamics applications.


    - next - up - previous - contents
    - Next: Next: General overview - Up: Up: userhtml - Previous: Previous: Contents -   Contents diff --git a/docs/html/node20.html b/docs/html/node20.html index 0011c939..d6c7a971 100644 --- a/docs/html/node20.html +++ b/docs/html/node20.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Methods - +Sparse Matrix class + @@ -18,43 +18,181 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: get_nrows Get - Up: Sparse Matrix class - Previous: Sparse Matrix class -   Next: Methods + Up: Data Structures and Classes + Previous: Named Constants +   Contents

    -

    -Methods -

    +

    + +
    +Sparse Matrix class +

    +The spdatapsb_Tspmat_type 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 [13] as detailed +in [11]; the type declaration is shown in +figure 4 where T is a placeholder for the +data type and precision variants +
    +
    S
    +
    Single precision real; +
    +
    D
    +
    Double precision real; +
    +
    C
    +
    Single precision complex; +
    +
    Z
    +
    Double precision complex. +
    +
    +The actual data is contained in the polymorphic component a%a +of type spbasedatapsb_T_base_sparse_mat; 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 psb_spasb routine. + +
    + + + +
    Figure 4: + The PSBLAS defined data type that + contains a sparse matrix.
    +
    + +
    +
    +  type :: psb_Tspmat_type
    +
    +    class(psb_T_base_sparse_mat), allocatable  :: a 
    +
    +  end type  psb_Tspmat_type
    +
    +
    +
    +
    +The following very common formats are precompiled in PSBLAS and thus +are always available: +
    +
    psb_T_coo_sparse_mat
    +
    Coordinate storage; +
    +
    psb_T_csr_sparse_mat
    +
    Compressed storage by rows; +
    +
    psb_T_csc_sparse_mat
    +
    Compressed storage by columns; +
    +
    +The inner sparse matrix has an associated state, which can take the +following values: +
    +
    Build:
    +
    State entered after the first allocation, and before the + first assembly; in this state it is possible to add nonzero entries. +
    +
    Assembled:
    +
    State entered after the assembly; computations using + the sparse matrix, such as matrix-vector products, are only possible + in this state; +
    +
    Update:
    +
    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. +
    +
    +The only storage variant supporting the build state is COO; all other +variants are obtained by conversion to/from it. + +



    + +Subsections + + + +
    + + +next + +up + +previous + +contents +
    + Next: Methods + Up: Data Structures and Classes + Previous: Named Constants +   Contents + diff --git a/docs/html/node21.html b/docs/html/node21.html index de71e506..c72eb73b 100644 --- a/docs/html/node21.html +++ b/docs/html/node21.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_nrows -- Get number of rows in a sparse matrix - +Methods + @@ -20,72 +20,40 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: get_ncols Get - Up: Sparse Matrix class - Previous: Methods -   Next: get_nrows Get + Up: Sparse Matrix class + Previous: Sparse Matrix class +   Contents

    -

    -get_nrows -- Get number of rows in a sparse matrix +

    +Methods

    - -

    -

    -nr = a%get_nrows()
    -
    - -

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    a
    -
    the sparse matrix -
    -Scope: local -
    -
    - -

    -

    -
    On Return
    -
    -
    -
    Function value
    -
    The number of rows of sparse matrix a. -
    -
    - -



    diff --git a/docs/html/node22.html b/docs/html/node22.html index 0d132dc8..d88d2f3b 100644 --- a/docs/html/node22.html +++ b/docs/html/node22.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_ncols -- Get number of columns in a sparse matrix - +get_nrows -- Get number of rows in a sparse matrix + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: get_nnzeros Get - Up: Sparse Matrix class - Previous: get_nrows Get -   Next: get_ncols Get + Up: Sparse Matrix class + Previous: Methods +   Contents

    -

    -get_ncols -- Get number of columns in a sparse matrix +

    +get_nrows -- Get number of rows in a sparse matrix

    -nc = a%get_ncols()
    +nr = a%get_nrows()
     

    @@ -81,7 +81,7 @@ Scope: local

    Function value
    -
    The number of columns of sparse matrix a. +
    The number of rows of sparse matrix a.
    diff --git a/docs/html/node23.html b/docs/html/node23.html index b6da4a85..ad347d89 100644 --- a/docs/html/node23.html +++ b/docs/html/node23.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_nnzeros -- Get number of nonzero elements in a sparse matrix - +get_ncols -- Get number of columns in a sparse matrix + @@ -20,45 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: get_size Get - Up: Sparse Matrix class - Previous: get_ncols Get -   Next: get_nnzeros Get + Up: Sparse Matrix class + Previous: get_nrows Get +   Contents

    -

    -get_nnzeros -- Get number of nonzero elements - in a sparse matrix +

    +get_ncols -- Get number of columns in a sparse matrix

    -nz = a%get_nnzeros()
    +nc = a%get_ncols()
     

    @@ -82,20 +81,10 @@ Scope: local

    Function value
    -
    The number of nonzero elements stored in sparse matrix a. +
    The number of columns of sparse matrix a.
    -

    -Notes - -

      -
    1. The function value is specific to the storage format of matrix - a; some storage formats employ padding, thus the returned - value for the same matrix may be different for different storage choices. -
    2. -
    -



    diff --git a/docs/html/node24.html b/docs/html/node24.html index 850bc087..0789665c 100644 --- a/docs/html/node24.html +++ b/docs/html/node24.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_size -- Get maximum number of nonzero elements in a sparse matrix - +get_nnzeros -- Get number of nonzero elements in a sparse matrix + @@ -20,45 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: sizeof Get - Up: Sparse Matrix class - Previous: get_nnzeros Get -   Next: get_size Get + Up: Sparse Matrix class + Previous: get_ncols Get +   Contents

    -

    -get_size -- Get maximum number of nonzero elements +

    +get_nnzeros -- Get number of nonzero elements in a sparse matrix

    -maxnz = a%get_size()
    +nz = a%get_nnzeros()
     

    @@ -82,11 +82,20 @@ Scope: local

    Function value
    -
    The maximum number of nonzero elements that can - be stored in sparse matrix a using its current memory allocation. +
    The number of nonzero elements stored in sparse matrix a.
    +

    +Notes + +

      +
    1. The function value is specific to the storage format of matrix + a; some storage formats employ padding, thus the returned + value for the same matrix may be different for different storage choices. +
    2. +
    +



    diff --git a/docs/html/node25.html b/docs/html/node25.html index 2151abc4..f8430abc 100644 --- a/docs/html/node25.html +++ b/docs/html/node25.html @@ -7,10 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -sizeof -- Get memory occupation in bytes -of a sparse matrix - +get_size -- Get maximum number of nonzero elements in a sparse matrix + @@ -22,45 +20,45 @@ of a sparse matrix"> - + - next - + up - previous - contents
    - Next: get_fmt Short - Up: Sparse Matrix class - Previous: get_size Get -   Next: sizeof Get + Up: Sparse Matrix class + Previous: get_nnzeros Get +   Contents

    -

    -sizeof -- Get memory occupation in bytes -of a sparse matrix +

    +get_size -- Get maximum number of nonzero elements + in a sparse matrix

    -memory_size = a%sizeof()
    +maxnz = a%get_size()
     

    @@ -84,7 +82,8 @@ Scope: local

    Function value
    -
    The memory occupation in bytes. +
    The maximum number of nonzero elements that can + be stored in sparse matrix a using its current memory allocation.
    diff --git a/docs/html/node26.html b/docs/html/node26.html index d592e6d8..c6abf81e 100644 --- a/docs/html/node26.html +++ b/docs/html/node26.html @@ -7,8 +7,10 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_fmt -- Short description of the dynamic type - +sizeof -- Get memory occupation in bytes +of a sparse matrix + @@ -20,44 +22,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: is_bld, is_upd, is_asb - Up: Sparse Matrix class - Previous: sizeof Get -   Next: get_fmt Short + Up: Sparse Matrix class + Previous: get_size Get +   Contents

    -

    -get_fmt -- Short description of the dynamic type +

    +sizeof -- Get memory occupation in bytes +of a sparse matrix

    -write(*,*) a%get_fmt()
    +memory_size = a%sizeof()
     

    @@ -81,9 +84,7 @@ Scope: local

    Function value
    -
    A short string describing the dynamic type of - the matrix. Predefined values include NULL, COO, - CSR and CSC. +
    The memory occupation in bytes.
    diff --git a/docs/html/node27.html b/docs/html/node27.html index e918ba8d..6f75ccd9 100644 --- a/docs/html/node27.html +++ b/docs/html/node27.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -is_bld, is_upd, is_asb -- Status check - +get_fmt -- Short description of the dynamic type + @@ -20,46 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: Named Constants - Up: Sparse Matrix class - Previous: get_fmt Short -   Next: is_bld, is_upd, is_asb + Up: Sparse Matrix class + Previous: sizeof Get +   Contents

    -

    -is_bld, is_upd, is_asb -- Status check +

    +get_fmt -- Short description of the dynamic type

    -if (a%is_bld()) then 
    -if (a%is_upd()) then 
    -if (a%is_asb()) then 
    +write(*,*) a%get_fmt()
     

    @@ -83,8 +81,9 @@ Scope: local

    Function value
    -
    A logical value indicating whether the - matrix is in the Build, Update or Assembled state, respectively. +
    A short string describing the dynamic type of + the matrix. Predefined values include NULL, COO, + CSR and CSC.
    diff --git a/docs/html/node28.html b/docs/html/node28.html index e3f027ce..5b56a554 100644 --- a/docs/html/node28.html +++ b/docs/html/node28.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Named Constants - +is_bld, is_upd, is_asb -- Status check + @@ -18,63 +18,73 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Dense Vector Data Structure - Up: Sparse Matrix class - Previous: is_bld, is_upd, is_asb -   Next: Named Constants + Up: Sparse Matrix class + Previous: get_fmt Short +   Contents

    -

    - -
    -Named Constants +

    +is_bld, is_upd, is_asb -- Status check

    + +

    +

    +if (a%is_bld()) then 
    +if (a%is_upd()) then 
    +if (a%is_asb()) then 
    +
    + +

    -
    psb_dupl_ovwrt_
    -
    Duplicate coefficients should be overwritten - (i.e. ignore duplications) -
    -
    psb_dupl_add_
    -
    Duplicate coefficients should be added; +
    Type:
    +
    Asynchronous.
    -
    psb_dupl_err_
    -
    Duplicate coefficients should trigger an error conditino +
    On Entry
    +
    -
    psb_upd_dflt_
    -
    Default update strategy for matrix coefficients; -
    -
    psb_upd_srch_
    -
    Update strategy based on search into the data structure; +
    a
    +
    the sparse matrix +
    +Scope: local +
    +
    + +

    +

    +
    On Return
    +
    -
    psb_upd_perm_
    -
    Update strategy based on additional - permutation data (see tools routine description). +
    Function value
    +
    A logical value indicating whether the + matrix is in the Build, Update or Assembled state, respectively.
    diff --git a/docs/html/node29.html b/docs/html/node29.html index dffb7400..2d19df44 100644 --- a/docs/html/node29.html +++ b/docs/html/node29.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Dense Vector Data Structure - +Named Constants + @@ -18,147 +18,68 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: Methods - Up: Data Structures and Classes - Previous: Named Constants -   Next: Dense Vector Data Structure + Up: Sparse Matrix class + Previous: is_bld, is_upd, is_asb +   Contents

    -

    - +

    +
    -Dense Vector Data Structure -

    -The vdatapsb_T_vect_type data structure -encapsulates the dense vectors in a way similar to sparse matrices, -i.e. including a base type vbasedata psb_T_base_vect_type. -The user will not, in general, access the vector components directly, -but rather via the routines of sec. 6. 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. - -

    -The type declaration is shown in -figure 5 where T is a placeholder for the -data type and precision variants +Named Constants +

    -
    I
    -
    Integer; +
    psb_dupl_ovwrt_
    +
    Duplicate coefficients should be overwritten + (i.e. ignore duplications) +
    +
    psb_dupl_add_
    +
    Duplicate coefficients should be added;
    -
    S
    -
    Single precision real; +
    psb_dupl_err_
    +
    Duplicate coefficients should trigger an error conditino
    -
    D
    -
    Double precision real; +
    psb_upd_dflt_
    +
    Default update strategy for matrix coefficients;
    -
    C
    -
    Single precision complex; +
    psb_upd_srch_
    +
    Update strategy based on search into the data structure;
    -
    Z
    -
    Double precision complex. +
    psb_upd_perm_
    +
    Update strategy based on additional + permutation data (see tools routine description).
    -The actual data is contained in the polymorphic component v%v; -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. - -
    - - - -
    Figure 5: - The PSBLAS defined data type that - contains a dense vector.
    -
    - -
    -
    -  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
    -
    -
    -
    -



    - -Subsections - - - -
    - - -next - -up - -previous - -contents -
    - Next: Methods - Up: Data Structures and Classes - Previous: Named Constants -   Contents - diff --git a/docs/html/node3.html b/docs/html/node3.html index 5c5fec1f..f4798101 100644 --- a/docs/html/node3.html +++ b/docs/html/node3.html @@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next: Basic Nomenclature - Up: Up: userhtml - Previous: Previous: Introduction -   Contents

    @@ -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 [7]. + HREF="node119.html#BLACS">7]. 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. 7. +further details on our communication layer see Sec. 7.

    -

    +
    @@ -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 [14]. + HREF="node119.html#METIS">14]. 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. Subsections
    - next - up - previous - contents
    - Next: Next: Basic Nomenclature - Up: Up: userhtml - Previous: Previous: Introduction -   Contents diff --git a/docs/html/node30.html b/docs/html/node30.html index 7dbebefc..37c0a49a 100644 --- a/docs/html/node30.html +++ b/docs/html/node30.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Methods - +Dense Vector Data Structure + @@ -18,43 +18,147 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next:get_nrows Get - Up:Dense Vector Data Structure - Previous:Dense Vector Data Structure -   Next:Methods + Up:Data Structures and Classes + Previous:Named Constants +   Contents

    -

    -Methods -

    +

    + +
    +Dense Vector Data Structure +

    +The vdatapsb_T_vect_type data structure +encapsulates the dense vectors in a way similar to sparse matrices, +i.e. including a base type vbasedata psb_T_base_vect_type. +The user will not, in general, access the vector components directly, +but rather via the routines of sec. 6. 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. + +

    +The type declaration is shown in +figure 5 where T is a placeholder for the +data type and precision variants +

    +
    I
    +
    Integer; +
    +
    S
    +
    Single precision real; +
    +
    D
    +
    Double precision real; +
    +
    C
    +
    Single precision complex; +
    +
    Z
    +
    Double precision complex. +
    +
    +The actual data is contained in the polymorphic component v%v; +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. + +
    +
    Figure 1: PSBLAS library components hierarchy.
    + + +
    Figure 5: + The PSBLAS defined data type that + contains a dense vector.
    +
    + +
    +
    +  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
    +
    +
    +
    +
    + +



    + +Subsections + + + +
    + + +next + +up + +previous + +contents +
    + Next: Methods + Up: Data Structures and Classes + Previous: Named Constants +   Contents + diff --git a/docs/html/node31.html b/docs/html/node31.html index b708cc1a..b34304b8 100644 --- a/docs/html/node31.html +++ b/docs/html/node31.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_nrows -- Get number of rows in a dense vector - +Methods + @@ -20,72 +20,40 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: get_ncols Get - Up: Dense Vector Data Structure - Previous: Methods -   Next: get_nrows Get + Up: Dense Vector Data Structure + Previous: Dense Vector Data Structure +   Contents

    -

    -get_nrows -- Get number of rows in a dense vector +

    +Methods

    - -

    -

    -nr = v%get_nrows()
    -
    - -

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    v
    -
    the dense vector -
    -Scope: local -
    -
    - -

    -

    -
    On Return
    -
    -
    -
    Function value
    -
    The number of rows of sparse matrix a. -
    -
    - -



    diff --git a/docs/html/node32.html b/docs/html/node32.html index 61b7a9e0..9ff87361 100644 --- a/docs/html/node32.html +++ b/docs/html/node32.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_ncols -- Get number of columns in a sparse matrix - +get_nrows -- Get number of rows in a dense vector + @@ -20,41 +20,71 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: sizeof Get - Up: Dense Vector Data Structure - Previous: get_nrows Get -   Next: get_ncols Get + Up: Dense Vector Data Structure + Previous: Methods +   Contents

    -

    -get_ncols -- Get number of columns in a sparse matrix +

    +get_nrows -- Get number of rows in a dense vector

    +

    +

    +nr = v%get_nrows()
    +
    + +

    +

    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    v
    +
    the dense vector +
    +Scope: local +
    +
    + +

    +

    +
    On Return
    +
    +
    +
    Function value
    +
    The number of rows of sparse matrix a. +
    +
    +



    diff --git a/docs/html/node33.html b/docs/html/node33.html index 2a905ce4..b1a38c2e 100644 --- a/docs/html/node33.html +++ b/docs/html/node33.html @@ -7,10 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -sizeof -- Get memory occupation in bytes -of a dense vector matrix - +get_ncols -- Get number of columns in a sparse matrix + @@ -22,72 +20,41 @@ of a dense vector matrix"> - + - next - + up - previous - contents
    - Next: get_vect Get - Up: Dense Vector Data Structure - Previous: get_ncols Get -   Next: sizeof Get + Up: Dense Vector Data Structure + Previous: get_nrows Get +   Contents

    -

    -sizeof -- Get memory occupation in bytes -of a dense vector matrix +

    +get_ncols -- Get number of columns in a sparse matrix

    -

    -

    -memory_size = v%sizeof()
    -
    - -

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    v
    -
    the dense vector -
    -Scope: local -
    -
    - -

    -

    -
    On Return
    -
    -
    -
    Function value
    -
    The memory occupation in bytes. -
    -
    -



    diff --git a/docs/html/node34.html b/docs/html/node34.html index c6d784f9..a4d7d073 100644 --- a/docs/html/node34.html +++ b/docs/html/node34.html @@ -7,8 +7,10 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -get_vect -- Get a copy of the vector contents - +sizeof -- Get memory occupation in bytes +of a dense vector matrix + @@ -18,45 +20,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Preconditioner data structure - Up: Dense Vector Data Structure - Previous: sizeof Get -   Next: get_vect Get + Up: Dense Vector Data Structure + Previous: get_ncols Get +   Contents

    -

    -get_vect -- Get a copy of the vector contents +

    +sizeof -- Get memory occupation in bytes +of a dense vector matrix

    -extv = v%get_vect()
    +memory_size = v%sizeof()
     

    @@ -80,8 +84,7 @@ Scope: local

    Function value
    -
    An allocatable array holding a copy of the dense - vector contents. +
    The memory occupation in bytes.
    diff --git a/docs/html/node35.html b/docs/html/node35.html index c22c353a..d5b6dec9 100644 --- a/docs/html/node35.html +++ b/docs/html/node35.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Preconditioner data structure - +get_vect -- Get a copy of the vector contents + @@ -18,70 +18,72 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - + + - next - + up - previous - contents
    - Next: Computational routines - Up: Data Structures and Classes - Previous: get_vect Get -   Next: Preconditioner data structure + Up: Dense Vector Data Structure + Previous: sizeof Get +   Contents

    -

    - -
    -Preconditioner data structure -

    -Our base library offers support for simple well known preconditioners -like Diagonal Scaling or Block Jacobi with incomplete -factorization ILU(0). +

    +get_vect -- Get a copy of the vector contents +

    -A preconditioner is held in the precdata psb_prec_type data structure reported in -figure 6. The psb_prec_type -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. - -

    - - - -
    Figure 6: -The PSBLAS defined data type that contains a preconditioner.
    -
    - -
    -  type psb_Tprec_type
    -    class(psb_T_base_prec_type), allocatable :: prec
    -  end type psb_Tprec_type
    -
    -
    -
    +extv = v%get_vect() + + +

    +

    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    v
    +
    the dense vector +
    +Scope: local +
    +
    + +

    +

    +
    On Return
    +
    +
    +
    Function value
    +
    An allocatable array holding a copy of the dense + vector contents. +
    +



    diff --git a/docs/html/node36.html b/docs/html/node36.html index 6bfb0c1f..204ce4f7 100644 --- a/docs/html/node36.html +++ b/docs/html/node36.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Computational routines - +Preconditioner data structure + @@ -18,77 +18,72 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: psb_geaxpby General - Up: userhtml - Previous: Preconditioner data structure -   Next: Computational routines + Up: Data Structures and Classes + Previous: get_vect Get +   Contents

    -

    -Computational routines -

    +

    + +
    +Preconditioner data structure +

    +Our base library offers support for simple well known preconditioners +like Diagonal Scaling or Block Jacobi with incomplete +factorization ILU(0).

    -


    - -Subsections +A preconditioner is held in the precdata psb_prec_type data structure reported in +figure 6. The psb_prec_type +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. - - +
    + + + +
    Figure 6: +The PSBLAS defined data type that contains a preconditioner.
    +
    + +
    +
    +  type psb_Tprec_type
    +    class(psb_T_base_prec_type), allocatable :: prec
    +  end type psb_Tprec_type
    +
    +
    +
    + +



    diff --git a/docs/html/node37.html b/docs/html/node37.html index cc2f05af..fa6c6c29 100644 --- a/docs/html/node37.html +++ b/docs/html/node37.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_geaxpby -- General Dense Matrix Sum - +Computational routines + @@ -18,264 +18,78 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: psb_gedot Dot - Up: Computational routines - Previous: Computational routines -   Next: psb_geaxpby General + Up: userhtml + Previous: Preconditioner data structure +   Contents

    -

    -psb_geaxpby -- General Dense Matrix Sum -

    - -

    -This subroutine is an interface to the computational kernel for -dense matrix sum: -

    -
    - - -\begin{displaymath}y \leftarrow \alpha\> x+ \beta y \end{displaymath} -
    -
    -

    - -

    -

    -call psb_geaxpby(alpha, x, beta, y, desc_a, info)
    -
    +

    +Computational routines +

    -

    -
    - - - -
    Table 1: -Data types
    -
    - - - - - - - - - - - - - - - - -
    $x$, $y$, $\alpha$, $\beta$Subroutine
    Short Precision Realpsb_geaxpby
    Long Precision Realpsb_geaxpby
    Short Precision Complexpsb_geaxpby
    Long Precision Complexpsb_geaxpby
    -
    -
    -

    -
    +

    + +Subsections -

    -

    -
    Type:
    -
    Synchronous. -
    -
    On Entry
    -
    -
    -
    alpha
    -
    the scalar $\alpha$. -
    -Scope: global -
    -Type: required -
    -Intent: in. -
    -Specified as: a number of the data type indicated in Table 1. -
    -
    x
    -
    the local portion of global dense matrix -$x$. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type -specified in Table 1. The rank of $x$ must be the same of $y$. -
    -
    beta
    -
    the scalar $\beta$. -
    -Scope: global -
    -Type: required -
    -Intent: in. -
    -Specified as: a number of the data type indicated in Table 1. -
    -
    y
    -
    the local portion of the global dense matrix -$y$. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of the type -indicated in Table 1. The rank of $y$ must be the same of $x$. -
    -
    desc_a
    -
    contains data structures for communications. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: an object of type descdatapsb_desc_type. - -

    -

    -
    - -

    -

    -
    On Return
    -
    -
    -
    y
    -
    the local portion of result submatrix $y$. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of the type -indicated in Table 1. -
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -
    -
    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_gedot Dot - Up: Computational routines - Previous: Computational routines -   Contents - + + +

    diff --git a/docs/html/node38.html b/docs/html/node38.html index 2cc5d7e6..8f388121 100644 --- a/docs/html/node38.html +++ b/docs/html/node38.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_gedot -- Dot Product - +psb_geaxpby -- General Dense Matrix Sum + @@ -20,132 +20,100 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_gedots Generalized - Up: Computational routines - Previous: psb_geaxpby General -   Next: psb_gedot Dot + Up: Computational routines + Previous: Computational routines +   Contents

    -

    -psb_gedot -- Dot Product +

    +psb_geaxpby -- General Dense Matrix Sum

    -This function computes dot product between two vectors $x$ and -$y$. -
    -If $x$ and $y$ are real vectors -it computes dot-product as: -

    -
    - - -\begin{displaymath}dot \leftarrow x^T y\end{displaymath} -
    -
    -

    -Else if $x$ and $y$ are complex vectors then it computes dot-product as: +This subroutine is an interface to the computational kernel for +dense matrix sum:

    \begin{displaymath}dot \leftarrow x^H y\end{displaymath} + WIDTH="93" HEIGHT="27" BORDER="0" + SRC="img19.png" + ALT="\begin{displaymath}y \leftarrow \alpha\> x+ \beta y \end{displaymath}">

    -

    +

    -psb_gedot(x, y, desc_a, info)
    +call psb_geaxpby(alpha, x, beta, y, desc_a, info)
     
    + +


    -
    +
    -
    Table 2: +Table 1: Data types
    - + ALT="$y$">, $\alpha$, $\beta$ + - + - + - + - +
    $dot$, $x$, $y$FunctionSubroutine
    Short Precision Realpsb_gedotpsb_geaxpby
    Long Precision Realpsb_gedotpsb_geaxpby
    Short Precision Complexpsb_gedotpsb_geaxpby
    Long Precision Complexpsb_gedotpsb_geaxpby
    @@ -162,6 +130,20 @@ Data types
    On Entry
    +
    alpha
    +
    the scalar $\alpha$. +
    +Scope: global +
    +Type: required +
    +Intent: in. +
    +Specified as: a number of the data type indicated in Table 1. +
    x
    the local portion of global dense matrix required
    Intent: in.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 2. The rank of psb_T_vect_type +containing numbers of type +specified in Table 1. The rank of $x$ must be the same of 2. The rank of $y$.
    +
    beta
    +
    the scalar $\beta$. +
    +Scope: global +
    +Type: required +
    +Intent: in. +
    +Specified as: a number of the data type indicated in Table 1. +
    y
    -
    the local portion of global dense matrix +
    the local portion of the global dense matrix local
    Type: required
    -Intent: in. +Intent: inout.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 2. The rank of psb_T_vect_type containing numbers of the type +indicated in Table 1. The rank of $y$ must be the same of psb_desc_type.

    + + +

    +

    On Return
    -
    Function value
    -
    is the dot product of subvectors $x$ and y +
    the local portion of result submatrix $y$.
    -Scope: global +Scope: local
    -Specified as: a number of the data type indicated in Table 2. +Type: required +
    +Intent: inout. +
    +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of the type +indicated in Table 1.
    info
    Error code. @@ -253,26 +254,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: psb_gedots Generalized - Up: Computational routines - Previous: psb_geaxpby General -   Next: psb_gedot Dot + Up: Computational routines + Previous: Computational routines +   Contents diff --git a/docs/html/node39.html b/docs/html/node39.html index 97f8be78..79f3f501 100644 --- a/docs/html/node39.html +++ b/docs/html/node39.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_gedots -- Generalized Dot Product - +psb_gedot -- Dot Product + @@ -20,117 +20,132 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_geamax Infinity-Norm - Up: Computational routines - Previous: psb_gedot Dot -   Next: psb_gedots Generalized + Up: Computational routines + Previous: psb_geaxpby General +   Contents

    -

    -psb_gedots -- Generalized Dot Product +

    +psb_gedot -- Dot Product

    -This subroutine computes a series of dot products among the columns of -two dense matrices $x$ and +$y$. +
    +If $x$ and $y$: + ALT="$y$"> are real vectors +it computes dot-product as:

    \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}">

    -If the matrices are complex, then the -usual convention applies, i.e. the conjugate transpose of $x$ is -used. If $x$ and $y$ are of rank one, then $res$ is a scalar, else it -is a rank one array. + ALT="$y$"> are complex vectors then it computes dot-product as: +

    +
    + + +\begin{displaymath}dot \leftarrow x^H y\end{displaymath} +
    +
    +

    -call psb_gedots(res, x, y, desc_a, info)
    +psb_gedot(x, y, desc_a, info)
     

    -
    +
    -
    Table 3: +Table 2: Data types
    - + - + - + - + - +
    $res$, $dot$, $x$, $y$SubroutineFunction
    Short Precision Realpsb_gedotspsb_gedot
    Long Precision Realpsb_gedotspsb_gedot
    Short Precision Complexpsb_gedotspsb_gedot
    Long Precision Complexpsb_gedotspsb_gedot
    @@ -152,7 +167,7 @@ Data types $x$. + ALT="$x$">.
    Scope: local
    @@ -162,7 +177,7 @@ Intent: in.
    Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 3. The rank of 2. The rank of $x$ must be the same of in.
    Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 3. The rank of 2. The rank of $y$ must be the same of required Intent: in.
    Specified as: an object of type descdatapsb_desc_type. + +

    On Return
    -
    res
    +
    Function value
    is the dot product of subvectors psb_desc_type.
    Scope: global
    -Intent: out. -
    -Specified as: a number or a rank-one array of the data type indicated -in Table 2. +Specified as: a number of the data type indicated in Table 2.
    info
    Error code. @@ -239,26 +253,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: psb_geamax Infinity-Norm - Up: Computational routines - Previous: psb_gedot Dot -   Next: psb_gedots Generalized + Up: Computational routines + Previous: psb_geaxpby General +   Contents diff --git a/docs/html/node4.html b/docs/html/node4.html index eaa1e8c2..9c5c4315 100644 --- a/docs/html/node4.html +++ b/docs/html/node4.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next: Library contents - Up: Up: General overview - Previous: Previous: General overview -   Contents

    @@ -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 [4,3]. + HREF="node119.html#2007c">4,3].

    We denote the sets of internal, boundary and halo points for a given @@ -166,7 +166,7 @@ local rows) is - next - up - previous - contents
    - Next: Next: Library contents - Up: Up: General overview - Previous: Previous: General overview -   Contents diff --git a/docs/html/node40.html b/docs/html/node40.html index f02d997a..ca4b9f9e 100644 --- a/docs/html/node40.html +++ b/docs/html/node40.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_geamax -- Infinity-Norm of Vector - +psb_gedots -- Generalized Dot Product + @@ -20,127 +20,117 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_geamaxs Generalized - Up: Computational routines - Previous: psb_gedots Generalized -   Next: psb_geamax Infinity-Norm + Up: Computational routines + Previous: psb_gedot Dot +   Contents

    -

    -psb_geamax -- Infinity-Norm of Vector +

    +psb_gedots -- Generalized Dot Product

    -This function computes - the infinity-norm of a vector $x$. -
    -If $x$ is a real vector -it computes infinity norm as: + ALT="$x$"> and $y$:

    \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}">

    -else if $x$ is a complex vector then it computes the infinity-norm as: -

    -
    - - -\begin{displaymath}amax \leftarrow \max_i {(\vert re(x_i)\vert + \vert im(x_i)\vert)}\end{displaymath} -
    -
    -

    + ALT="$x$"> is +used. If $x$ and $y$ are of rank one, then $res$ is a scalar, else it +is a rank one array.

    -psb_geamax(x, desc_a, info)
    +call psb_gedots(res, x, y, desc_a, info)
     
    - -


    -
    +
    -
    Table 4: +Table 3: Data types
    - - + ALT="$x$">, $y$ + - - + - - + - - - + + - - - + +
    $amax$$res$, $x$FunctionSubroutine
    Short Precision RealShort Precision Realpsb_geamaxpsb_gedots
    Long Precision RealLong Precision Realpsb_geamaxpsb_gedots
    Short Precision RealShort Precision Complexpsb_geamax
    Short Precision Complexpsb_gedots
    Long Precision RealLong Precision Complexpsb_geamax
    Long Precision Complexpsb_gedots
    @@ -163,7 +153,6 @@ Data types WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0" SRC="img20.png" ALT="$x$">. -
    Scope: local
    @@ -171,9 +160,38 @@ Type: required
    Intent: in.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 4. +Table 3. The rank of $x$ must be the same of $y$. + +
    y
    +
    the local portion of global dense matrix +$y$. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +containing numbers of type specified in +Table 3. The rank of $y$ must be the same of $x$.
    desc_a
    contains data structures for communications. @@ -185,21 +203,25 @@ Type: required Intent: in.
    Specified as: an object of type descdatapsb_desc_type. - -

    On Return
    -
    Function value
    -
    is the infinity norm of subvector res +
    is the dot product of subvectors $x$. + ALT="$x$"> and $y$.
    Scope: global
    -Specified as: a long precision real number. +Intent: out. +
    +Specified as: a number or a rank-one array of the data type indicated +in Table 2.
    info
    Error code. @@ -217,26 +239,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: psb_geamaxs Generalized - Up: Computational routines - Previous: psb_gedots Generalized -   Next: psb_geamax Infinity-Norm + Up: Computational routines + Previous: psb_gedot Dot +   Contents diff --git a/docs/html/node41.html b/docs/html/node41.html index a75cdc8f..c7e90745 100644 --- a/docs/html/node41.html +++ b/docs/html/node41.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_geamaxs -- Generalized Infinity Norm - +psb_geamax -- Infinity-Norm of Vector + @@ -20,102 +20,127 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_geasum 1-Norm - Up: Computational routines - Previous: psb_geamax Infinity-Norm -   Next: psb_geamaxs Generalized + Up: Computational routines + Previous: psb_gedots Generalized +   Contents

    -

    -psb_geamaxs -- Generalized Infinity Norm +

    +psb_geamax -- Infinity-Norm of Vector

    -This subroutine computes a series of infinity norms on the columns of -a dense matrix $x$: + ALT="$x$">. +
    +If $x$ is a real vector +it computes infinity norm as: +

    +
    + + +\begin{displaymath}amax \leftarrow \max_i \vert x_i\vert\end{displaymath} +
    +
    +

    +else if $x$ is a complex vector then it computes the infinity-norm as:

    \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}">

    -call psb_geamaxs(res, x, desc_a, info)
    +psb_geamax(x, desc_a, info)
     


    -
    +
    -
    Table 5: +Table 4: Data types
    + WIDTH="44" HEIGHT="13" ALIGN="BOTTOM" BORDER="0" + SRC="img31.png" + ALT="$amax$"> - + - + - + - + - +
    $res$ $x$SubroutineFunction
    Short Precision Real Short Precision Realpsb_geamaxspsb_geamax
    Long Precision Real Long Precision Realpsb_geamaxspsb_geamax
    Short Precision Real Short Precision Complexpsb_geamaxspsb_geamax
    Long Precision Real Long Precision Complexpsb_geamaxspsb_geamax
    @@ -138,6 +163,7 @@ Data types WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0" SRC="img20.png" ALT="$x$">. +
    Scope: local
    @@ -145,9 +171,9 @@ Type: required
    Intent: in.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 5. +Table 4.
    desc_a
    contains data structures for communications. @@ -159,21 +185,21 @@ Type: required Intent: in.
    Specified as: an object of type descdatapsb_desc_type. + +

    On Return
    -
    res
    -
    is the infinity norm of the columns of Function value +
    is the infinity norm of subvector $x$.
    Scope: global
    -Intent: out. -
    -Specified as: a number or a rank-one array of long precision real numbers. +Specified as: a long precision real number.
    info
    Error code. @@ -191,26 +217,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: psb_geasum 1-Norm - Up: Computational routines - Previous: psb_geamax Infinity-Norm -   Next: psb_geamaxs Generalized + Up: Computational routines + Previous: psb_gedots Generalized +   Contents diff --git a/docs/html/node42.html b/docs/html/node42.html index 3bee51ac..3421f161 100644 --- a/docs/html/node42.html +++ b/docs/html/node42.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_geasum -- 1-Norm of Vector - +psb_geamaxs -- Generalized Infinity Norm + @@ -20,126 +20,102 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_geasums Generalized - Up: Computational routines - Previous: psb_geamaxs Generalized -   Next: psb_geasum 1-Norm + Up: Computational routines + Previous: psb_geamax Infinity-Norm +   Contents

    -

    -psb_geasum -- 1-Norm of Vector +

    +psb_geamaxs -- Generalized Infinity Norm

    -This function computes the 1-norm of a vector $x$. -
    -If $x$ is a real vector -it computes 1-norm as: -

    -
    - - -\begin{displaymath}asum \leftarrow \Vert x_i\Vert\end{displaymath} -
    -
    -

    -else if $x$ is a complex vector then it computes 1-norm as: + ALT="$x$">:

    \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}">

    -psb_geasum(x, desc_a, info)
    +call psb_geamaxs(res, x, desc_a, info)
     


    -
    +
    -
    Table 6: +Table 5: Data types
    + WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0" + SRC="img28.png" + ALT="$res$"> - + - + - + - + - +
    $asum$ $x$FunctionSubroutine
    Short Precision Real Short Precision Realpsb_geasumpsb_geamaxs
    Long Precision Real Long Precision Realpsb_geasumpsb_geamaxs
    Short Precision Real Short Precision Complexpsb_geasumpsb_geamaxs
    Long Precision Real Long Precision Complexpsb_geasumpsb_geamaxs
    @@ -162,7 +138,6 @@ Data types WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0" SRC="img20.png" ALT="$x$">. -
    Scope: local
    @@ -172,7 +147,7 @@ Intent: in.
    Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 6. +Table 5.
    desc_a
    contains data structures for communications. @@ -184,21 +159,21 @@ Type: required Intent: in.
    Specified as: an object of type descdatapsb_desc_type. - -

    On Return
    -
    Function value
    -
    is the 1-norm of vector res +
    is the infinity norm of the columns of $x$.
    Scope: global
    -Specified as: a long precision real number. +Intent: out. +
    +Specified as: a number or a rank-one array of long precision real numbers.
    info
    Error code. @@ -216,26 +191,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: psb_geasums Generalized - Up: Computational routines - Previous: psb_geamaxs Generalized -   Next: psb_geasum 1-Norm + Up: Computational routines + Previous: psb_geamax Infinity-Norm +   Contents diff --git a/docs/html/node43.html b/docs/html/node43.html index 28b1795f..041357bd 100644 --- a/docs/html/node43.html +++ b/docs/html/node43.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_geasums -- Generalized 1-Norm of Vector - +psb_geasum -- 1-Norm of Vector + @@ -20,62 +20,42 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_genrm2 2-Norm - Up: Computational routines - Previous: psb_geasum 1-Norm -   Next: psb_geasums Generalized + Up: Computational routines + Previous: psb_geamaxs Generalized +   Contents

    -

    -psb_geasums -- Generalized 1-Norm of Vector +

    +psb_geasum -- 1-Norm of Vector

    -This subroutine computes a series of 1-norms on the columns of -a dense matrix $x$: -

    -
    - - -\begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath} -
    -
    -

    This function computes the 1-norm of a vector $x$ is a real vector + ALT="$x$"> is a real vector it computes 1-norm as:

    \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}">

    @@ -109,57 +89,57 @@ else if \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}">

    -call psb_geasums(res, x, desc_a, info)
    +psb_geasum(x, desc_a, info)
     


    -
    +
    -
    Table 7: +Table 6: Data types
    + WIDTH="43" HEIGHT="13" ALIGN="BOTTOM" BORDER="0" + SRC="img35.png" + ALT="$asum$"> - + - + - + - + - +
    $res$ $x$SubroutineFunction
    Short Precision Real Short Precision Realpsb_geasumspsb_geasum
    Long Precision Real Long Precision Realpsb_geasumspsb_geasum
    Short Precision Real Short Precision Complexpsb_geasumspsb_geasum
    Long Precision Real Long Precision Complexpsb_geasumspsb_geasum
    @@ -192,7 +172,7 @@ Intent: in.
    Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 7. +Table 6.
    desc_a
    contains data structures for communications. @@ -210,17 +190,14 @@ Specified as: an object of type descdatapsb_desc_type.
    On Return
    -
    res
    -
    contains the 1-norm of (the columns of) Function value +
    is the 1-norm of vector $x$.
    Scope: global
    -Intent: out. -
    -Short as: a long precision real number. Specified as: a long precision real number.
    info
    @@ -239,26 +216,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: psb_genrm2 2-Norm - Up: Computational routines - Previous: psb_geasum 1-Norm -   Next: psb_geasums Generalized + Up: Computational routines + Previous: psb_geamaxs Generalized +   Contents diff --git a/docs/html/node44.html b/docs/html/node44.html index 0f2b0261..bbfb2ef4 100644 --- a/docs/html/node44.html +++ b/docs/html/node44.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_genrm2 -- 2-Norm of Vector - +psb_geasums -- Generalized 1-Norm of Vector + @@ -20,43 +20,63 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_genrm2s Generalized - Up: Computational routines - Previous: psb_geasums Generalized -   Next: psb_genrm2 2-Norm + Up: Computational routines + Previous: psb_geasum 1-Norm +   Contents

    -

    -psb_genrm2 -- 2-Norm of Vector +

    +psb_geasums -- Generalized 1-Norm of Vector

    -This function computes the 2-norm of a vector $x$: +

    +
    + + +\begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath} +
    +
    +

    +This function computes the 1-norm of a vector $x$. @@ -64,77 +84,82 @@ This function computes the 2-norm of a vector $x$ is a real vector -it computes 2-norm as: + ALT="$x$"> is a real vector +it computes 1-norm as:

    \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}">

    else if $x$ is a complex vector then it computes 2-norm as: + ALT="$x$"> is a complex vector then it computes 1-norm as:

    \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}">

    +

    +

    +call psb_geasums(res, x, desc_a, info)
    +
    +


    -
    +
    -
    Table 8: +Table 7: Data types
    + WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0" + SRC="img28.png" + ALT="$res$"> - + - + - + - + - +
    $nrm2$ $x$FunctionSubroutine
    Short Precision Real Short Precision Realpsb_genrm2psb_geasums
    Long Precision Real Long Precision Realpsb_genrm2psb_geasums
    Short Precision Real Short Precision Complexpsb_genrm2psb_geasums
    Long Precision Real Long Precision Complexpsb_genrm2psb_geasums
    @@ -143,11 +168,6 @@ Data types


    -

    -

    -psb_genrm2(x, desc_a, info)
    -
    -

    Type:
    @@ -161,7 +181,8 @@ psb_genrm2(x, desc_a, info) $x$. + ALT="$x$">. +
    Scope: local
    @@ -169,9 +190,9 @@ Type: required
    Intent: in.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 8. +Table 7.
    desc_a
    contains data structures for communications. @@ -189,17 +210,18 @@ Specified as: an object of type descdatapsb_desc_type.
    On Return
    -
    Function Value
    -
    is the 2-norm of subvector res +
    contains the 1-norm of (the columns of) $x$.
    Scope: global
    -Type: required +Intent: out.
    -Specified as: a long precision real number. +Short as: a long precision real number. +Specified as: a long precision real number.
    info
    Error code. @@ -217,26 +239,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: psb_genrm2s Generalized - Up: Computational routines - Previous: psb_geasums Generalized -   Next: psb_genrm2 2-Norm + Up: Computational routines + Previous: psb_geasum 1-Norm +   Contents diff --git a/docs/html/node45.html b/docs/html/node45.html index 76e13683..0ce26998 100644 --- a/docs/html/node45.html +++ b/docs/html/node45.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_genrm2s -- Generalized 2-Norm of Vector - +psb_genrm2 -- 2-Norm of Vector + @@ -20,102 +20,121 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_spnrm1 1-Norm - Up: Computational routines - Previous: psb_genrm2 2-Norm -   Next: psb_genrm2s Generalized + Up: Computational routines + Previous: psb_geasums Generalized +   Contents

    -

    -psb_genrm2s -- Generalized 2-Norm of Vector +

    +psb_genrm2 -- 2-Norm of Vector

    -This subroutine computes a series of 2-norms on the columns of -a dense matrix $x$: + ALT="$x$">. +
    +If $x$ is a real vector +it computes 2-norm as:

    \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}">

    +else if $x$ is a complex vector then it computes 2-norm as: +

    +
    + -

    -

    -call psb_genrm2s(res, x, desc_a, info)
    -
    +\begin{displaymath}nrm2 \leftarrow \sqrt{x^H x}\end{displaymath} +
    +
    +


    -
    +
    -
    Table 9: +Table 8: Data types
    + WIDTH="43" HEIGHT="13" ALIGN="BOTTOM" BORDER="0" + SRC="img40.png" + ALT="$nrm2$"> - + - + - + - + - +
    $res$ $x$SubroutineFunction
    Short Precision Real Short Precision Realpsb_genrm2spsb_genrm2
    Long Precision Real Long Precision Realpsb_genrm2spsb_genrm2
    Short Precision Real Short Precision Complexpsb_genrm2spsb_genrm2
    Long Precision Real Long Precision Complexpsb_genrm2spsb_genrm2
    @@ -124,6 +143,11 @@ Data types


    +

    +

    +psb_genrm2(x, desc_a, info)
    +
    +

    Type:
    @@ -137,8 +161,7 @@ Data types $x$. - + ALT="$x$">.
    Scope: local
    @@ -146,9 +169,9 @@ Type: required
    Intent: in.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 9. +Table 8.
    desc_a
    contains data structures for communications. @@ -166,17 +189,17 @@ Specified as: an object of type descdatapsb_desc_type.
    On Return
    -
    res
    -
    contains the 1-norm of (the columns of) Function Value +
    is the 2-norm of subvector $x$.
    Scope: global
    -Intent: out. +Type: required
    -Specified as: a long precision real number. +Specified as: a long precision real number.
    info
    Error code. @@ -194,26 +217,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: psb_spnrm1 1-Norm - Up: Computational routines - Previous: psb_genrm2 2-Norm -   Next: psb_genrm2s Generalized + Up: Computational routines + Previous: psb_geasums Generalized +   Contents diff --git a/docs/html/node46.html b/docs/html/node46.html index 130eb8cc..5284e655 100644 --- a/docs/html/node46.html +++ b/docs/html/node46.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spnrm1 -- 1-Norm of Sparse Matrix - +psb_genrm2s -- Generalized 2-Norm of Vector + @@ -20,102 +20,102 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_spnrmi Infinity - Up: Computational routines - Previous: psb_genrm2s Generalized -   Next: psb_spnrm1 1-Norm + Up: Computational routines + Previous: psb_genrm2 2-Norm +   Contents

    -

    -psb_spnrm1 -- 1-Norm of Sparse Matrix +

    +psb_genrm2s -- Generalized 2-Norm of Vector

    -This function computes the 1-norm of a matrix $A$: -
    -

    +This subroutine computes a series of 2-norms on the columns of +a dense matrix $x$:

    \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}">

    -where: -
    -
    $A$
    -
    represents the global matrix $A$ -
    -
    + +

    +

    +call psb_genrm2s(res, x, desc_a, info)
    +


    -
    +
    -
    Table 10: +Table 9: Data types
    - + WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0" + SRC="img28.png" + ALT="$res$"> + + - + + - + + - - + + + - - + + +
    $A$Function$x$Subroutine
    Short Precision Realpsb_spnrm1Short Precision Realpsb_genrm2s
    Long Precision Realpsb_spnrm1Long Precision Realpsb_genrm2s
    Short Precision Complexpsb_spnrm1
    Short Precision RealShort Precision Complexpsb_genrm2s
    Long Precision Complexpsb_spnrm1
    Long Precision RealLong Precision Complexpsb_genrm2s
    @@ -124,11 +124,6 @@ Data types


    -

    -

    -psb_spnrm1(A, desc_a, info)
    -
    -

    Type:
    @@ -137,20 +132,23 @@ psb_spnrm1(A, desc_a, info)
    On Entry
    -
    a
    -
    the local portion of the global sparse matrix +
    x
    +
    the local portion of global dense matrix $A$. + WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0" + SRC="img20.png" + ALT="$x$">. +
    Scope: local
    -Type: required +Type: required
    Intent: in.
    -Specified as: an object of type spdatapsb_Tspmat_type. +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +containing numbers of type specified in +Table 9.
    desc_a
    contains data structures for communications. @@ -162,19 +160,23 @@ Type: required Intent: in.
    Specified as: an object of type descdatapsb_desc_type. + +

    On Return
    -
    Function value
    -
    is the 1-norm of sparse submatrix $A$. +
    res
    +
    contains the 1-norm of (the columns of) $x$.
    Scope: global
    -Specified as: a long precision real number. +Intent: out. +
    +Specified as: a long precision real number.
    info
    Error code. @@ -192,26 +194,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: psb_spnrmi Infinity - Up: Computational routines - Previous: psb_genrm2s Generalized -   Next: psb_spnrm1 1-Norm + Up: Computational routines + Previous: psb_genrm2 2-Norm +   Contents diff --git a/docs/html/node47.html b/docs/html/node47.html index 45fb609c..70b4a5e5 100644 --- a/docs/html/node47.html +++ b/docs/html/node47.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spnrmi -- Infinity Norm of Sparse Matrix - +psb_spnrm1 -- 1-Norm of Sparse Matrix + @@ -20,43 +20,43 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_spmm Sparse - Up: Computational routines - Previous: psb_spnrm1 1-Norm -   Next: psb_spnrmi Infinity + Up: Computational routines + Previous: psb_genrm2s Generalized +   Contents

    -

    -psb_spnrmi -- Infinity Norm of Sparse Matrix +

    +psb_spnrm1 -- 1-Norm of Sparse Matrix

    -This function computes the infinity-norm of a matrix $A$: @@ -66,14 +66,14 @@ This function computes the infinity-norm of a matrix \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}">

    @@ -92,9 +92,9 @@ where:


    -
    +
    - - + - + - + - +
    Table 11: +Table 10: Data types
    @@ -106,16 +106,16 @@ Data types
    Function
    Short Precision Realpsb_spnrmipsb_spnrm1
    Long Precision Realpsb_spnrmipsb_spnrm1
    Short Precision Complexpsb_spnrmipsb_spnrm1
    Long Precision Complexpsb_spnrmipsb_spnrm1
    @@ -126,7 +126,7 @@ Data types

    -psb_spnrmi(A, desc_a, info)
    +psb_spnrm1(A, desc_a, info)
     

    @@ -167,7 +167,7 @@ Specified as: an object of type descdatapsb_desc_type.

    Function value
    -
    is the infinity-norm of sparse submatrix is the 1-norm of sparse submatrix $A$. @@ -192,26 +192,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: psb_spmm Sparse - Up: Computational routines - Previous: psb_spnrm1 1-Norm -   Next: psb_spnrmi Infinity + Up: Computational routines + Previous: psb_genrm2s Generalized +   Contents diff --git a/docs/html/node48.html b/docs/html/node48.html index 82c38034..499c8205 100644 --- a/docs/html/node48.html +++ b/docs/html/node48.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spmm -- Sparse Matrix by Dense Matrix Product - +psb_spnrmi -- Infinity Norm of Sparse Matrix + @@ -20,129 +20,70 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_spsm Triangular - Up: Computational routines - Previous: psb_spnrmi Infinity -   Next: psb_spmm Sparse + Up: Computational routines + Previous: psb_spnrm1 1-Norm +   Contents

    -

    -psb_spmm -- Sparse Matrix by Dense Matrix Product +

    +psb_spnrmi -- Infinity Norm of Sparse Matrix

    -This subroutine computes the Sparse Matrix by Dense Matrix Product: - -

    -
    -

    - - - - - -
    \begin{displaymath}
-y \leftarrow \alpha A x + \beta y
-\end{displaymath} -(1)
    -

    -
    -
    - - - - - -
    \begin{displaymath}
-y \leftarrow \alpha A^T x + \beta y
-\end{displaymath} -(2)
    -

    +This function computes the infinity-norm of a matrix $A$:
    -
    - +

    +

    +
    - - - -
    \begin{displaymath}
-y \leftarrow \alpha A^H x + \beta y
-\end{displaymath} -(3)
    -

    -

    +\begin{displaymath}nrmi \leftarrow \Vert A\Vert _\infty \end{displaymath} +

    +
    +

    where:
    -
    $x$
    -
    is the global dense matrix $x_{:, :}$ -
    -
    $y$
    -
    is the global dense matrix $y_{:, :}$ -
    $A$
    -
    is the global sparse matrix represents the global matrix $A$ @@ -151,9 +92,9 @@ where:


    -
    +
    - - + ALT="$A$"> + - + - + - + - +
    Table 12: +Table 11: Data types
    @@ -161,32 +102,20 @@ Data types
    $A$, $x$, $y$, $\alpha$, $\beta$SubroutineFunction
    Short Precision Realpsb_spmmpsb_spnrmi
    Long Precision Realpsb_spmmpsb_spnrmi
    Short Precision Complexpsb_spmmpsb_spnrmi
    Long Precision Complexpsb_spmmpsb_spnrmi
    @@ -197,10 +126,8 @@ Data types

    -call psb_spmm(alpha, a, x, beta, y, desc_a, info)
    -call psb_spmm(alpha, a, x, beta, y,desc_a, info, &
    -             & trans, work)
    -
    +psb_spnrmi(A, desc_a, info) +

    @@ -210,23 +137,8 @@ call psb_spmm(alpha, a, x, beta, y,desc_a, info, &
    On Entry
    -
    alpha
    -
    the scalar $\alpha$. -
    -Scope: global -
    -Type: required -
    -Intent: in. -
    -Specified as: a number of the data type indicated in -Table 12. -
    a
    -
    the local portion of the sparse matrix +
    the local portion of the global sparse matrix in.
    Specified as: an object of type spdatapsb_Tspmat_type.
    -
    x
    -
    the local portion of global dense matrix -$x$. - -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 12. The rank of $x$ must be the same of $y$. -
    -
    beta
    -
    the scalar $\beta$. -
    -Scope: global -
    -Type: required -
    -Intent: in. -
    -Specified as: a number of the data type indicated in Table 12. -
    -
    y
    -
    the local portion of global dense matrix -$y$. - -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 12. The rank of $y$ must be the same of $x$. -
    desc_a
    contains data structures for communications.
    @@ -313,74 +163,18 @@ Intent: in.
    Specified as: an object of type descdatapsb_desc_type.
    -
    trans
    -
    indicates what kind of operation to perform. -
    -
    trans = N
    -
    the operation is specified by equation 1 -
    -
    trans = T
    -
    the operation is specified by equation -2 -
    -
    trans = C
    -
    the operation is specified by equation -3 -
    -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Default: $trans = N$ -
    -Specified as: a character variable. - -

    -

    -
    work
    -
    work array. -
    -Scope: local -
    -Type: optional -
    -Intent: inout. -
    -Specified as: a rank one array of the same type of $x$ and $y$ with -the TARGET attribute. - -

    -

    On Return
    -
    y
    -
    the local portion of result matrix $y$. -
    -Scope: local -
    -Type: required +
    Function value
    +
    is the infinity-norm of sparse submatrix $A$.
    -Intent: inout. +Scope: global
    -Specified as: an array of rank one or two -containing numbers of type specified in -Table 12. +Specified as: a long precision real number.
    info
    Error code. @@ -398,26 +192,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: psb_spsm Triangular - Up: Computational routines - Previous: psb_spnrmi Infinity -   Next: psb_spmm Sparse + Up: Computational routines + Previous: psb_spnrm1 1-Norm +   Contents diff --git a/docs/html/node49.html b/docs/html/node49.html index bc9247fe..b6374c5e 100644 --- a/docs/html/node49.html +++ b/docs/html/node49.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spsm -- Triangular System Solve - +psb_spmm -- Sparse Matrix by Dense Matrix Product + @@ -18,71 +18,104 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Communication routines - Up: Computational routines - Previous: psb_spmm Sparse -   Next: psb_spsm Triangular + Up: Computational routines + Previous: psb_spnrmi Infinity +   Contents

    -

    -psb_spsm -- Triangular System Solve +

    +psb_spmm -- Sparse Matrix by Dense Matrix Product

    -This subroutine computes the Triangular System Solve: +This subroutine computes the Sparse Matrix by Dense Matrix Product:

    -

    -
    +
    +
    + -\begin{eqnarray*}
-y &\leftarrow& \alpha T^{-1} x + \beta y\\
-y &\leftarrow& \al...
-...-H} x + \beta y\\
-y &\leftarrow& \alpha T^{-H} D x + \beta y\\
-\end{eqnarray*}
    -

    + + + +
    \begin{displaymath}
+y \leftarrow \alpha A x + \beta y
+\end{displaymath} +(1)
    +

    +
    +
    + + + + + +
    \begin{displaymath}
+y \leftarrow \alpha A^T x + \beta y
+\end{displaymath} +(2)
    +

    +
    +
    + + + + + +
    \begin{displaymath}
+y \leftarrow \alpha A^H x + \beta y
+\end{displaymath} +(3)
    +

    where: @@ -107,50 +140,34 @@ where:

    $T$
    -
    is the global sparse block triangular submatrix $A$ +
    is the global sparse matrix $T$ -
    -
    $D$
    -
    is the scaling diagonal matrix. + SRC="img1.png" + ALT="$A$">
    -

    -

    -call psb_spsm(alpha, t, x, beta, y, desc_a, info)
    -call psb_spsm(alpha, t, x, beta, y, desc_a, info,&
    -             & trans, unit, choice, diag, work)
    -
    -


    -
    +
    -
    Table 13: +Table 12: Data types
    - + - + - + - +
    $T$, $A$, $x$, $y$, $D$, $\alpha$, Subroutine
    Short Precision Realpsb_spsmpsb_spmm
    Long Precision Realpsb_spsmpsb_spmm
    Short Precision Complexpsb_spsmpsb_spmm
    Long Precision Complexpsb_spsmpsb_spmm
    @@ -178,6 +195,13 @@ Data types


    +

    +

    +call psb_spmm(alpha, a, x, beta, y, desc_a, info)
    +call psb_spmm(alpha, a, x, beta, y,desc_a, info, &
    +             & trans, work)
    +
    +

    Type:
    @@ -199,14 +223,14 @@ Type: required Intent: in.
    Specified as: a number of the data type indicated in -Table 13. +Table 12. -
    t
    -
    the global portion of the sparse matrix +
    a
    +
    the local portion of the sparse matrix $T$. + SRC="img1.png" + ALT="$A$">.
    Scope: local
    @@ -214,8 +238,7 @@ Type: required
    Intent: in.
    -Specified as: an object type specified in -§ 3. +Specified as: an object of type spdatapsb_Tspmat_type.
    x
    the local portion of global dense matrix @@ -233,7 +256,7 @@ Intent: in.
    Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 13. The rank of 12. The rank of $x$ must be the same of required
    Intent: in.
    -Specified as: a number of the data type indicated in Table 13. +Specified as: a number of the data type indicated in Table 12.
    y
    the local portion of global dense matrix @@ -271,7 +294,7 @@ Intent: inout.
    Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 13. The rank of 12. The rank of $y$ must be the same of in. Specified as: an object of type descdatapsb_desc_type.
    trans
    -
    specify with unitd the operation to perform. +
    indicates what kind of operation to perform.
    -
    trans = 'N'
    -
    the operation is with no transposed matrix +
    trans = N
    +
    the operation is specified by equation 1
    -
    trans = 'T'
    -
    the operation is with transposed matrix. +
    trans = T
    +
    the operation is specified by equation +2
    -
    trans = 'C'
    -
    the operation is with conjugate transposed matrix. +
    trans = C
    +
    the operation is specified by equation +3
    Scope: global @@ -315,82 +340,11 @@ Default: $trans = N$
    Specified as: a character variable. -
    -
    unitd
    -
    specify with trans the operation to perform. -
    -
    unitd = 'U'
    -
    the operation is with no scaling -
    -
    unitd = 'L'
    -
    the operation is with left scaling -
    -
    unitd = 'R'
    -
    the operation is with right scaling. -
    -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Default: $unitd = U$ -
    -Specified as: a character variable. -
    -
    choice
    -
    specifies the update of overlap elements to be performed - on exit: -
    -
    -
    psb_none_ -
    -
    -
    psb_sum_ -
    -
    -
    psb_avg_ -
    -
    -
    psb_square_root_ -
    -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Default: psb_avg_ -
    -Specified as: an integer variable. -
    -
    diag
    -
    the diagonal scaling matrix. -
    -Scope: local -
    -Type: optional -
    -Intent: in. -
    -Default: -$diag(1) = 1 (no scaling)$ -
    -Specified as: a rank one array containing numbers of the type -indicated in Table 13. + +

    work
    -
    a work array. +
    work array.
    Scope: local
    @@ -401,8 +355,11 @@ Intent: inout. Specified as: a rank one array of the same type of $x$ with the -TARGET attribute. + ALT="$x$"> and $y$ with +the TARGET attribute.

    @@ -410,12 +367,10 @@ TARGET attribute.
    y
    -
    the local portion of global dense matrix -the local portion of result matrix $y$. - + ALT="$y$">.
    Scope: local
    @@ -425,7 +380,7 @@ Intent: inout.
    Specified as: an array of rank one or two containing numbers of type specified in -Table 13. +Table 12.
    info
    Error code. @@ -443,26 +398,26 @@ An integer value; 0 means no error has been detected.


    - next - + up - previous - contents
    - Next: Communication routines - Up: Computational routines - Previous: psb_spmm Sparse -   Next: psb_spsm Triangular + Up: Computational routines + Previous: psb_spnrmi Infinity +   Contents diff --git a/docs/html/node5.html b/docs/html/node5.html index 52bb0a15..b441f311 100644 --- a/docs/html/node5.html +++ b/docs/html/node5.html @@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Next: Application structure - Up: Up: General overview - Previous: Previous: Basic Nomenclature -   Contents

    @@ -123,12 +123,12 @@ internally defined in the PSBLAS software package:
  • sp: the routine is related to sparse data,
  • cd: the routine is related to communication descriptor - (see 3). + (see 3).
  • For example the psb_geins, psb_spins and - psb_cdins perform the same action (see 6) on + psb_cdins perform the same action (see 6) 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 3.0.0


    - next - up - previous - contents
    - Next: Next: Application structure - Up: Up: General overview - Previous: Previous: Basic Nomenclature -   Contents diff --git a/docs/html/node50.html b/docs/html/node50.html index 0dae2e01..0f8cc79c 100644 --- a/docs/html/node50.html +++ b/docs/html/node50.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Communication routines - +psb_spsm -- Triangular System Solve + @@ -18,63 +18,453 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: psb_halo Halo - Up: userhtml - Previous: psb_spsm Triangular -   Next: Communication routines + Up: Computational routines + Previous: psb_spmm Sparse +   Contents

    -

    -Communication routines -

    -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 6. +

    +psb_spsm -- Triangular System Solve +

    -


    - -Subsections - - - -

    +This subroutine computes the Triangular System Solve: + +

    +

    +
    + +\begin{eqnarray*}
+y &\leftarrow& \alpha T^{-1} x + \beta y\\
+y &\leftarrow& \al...
+...-H} x + \beta y\\
+y &\leftarrow& \alpha T^{-H} D x + \beta y\\
+\end{eqnarray*}
    +

    + +

    +where: +

    +
    $x$
    +
    is the global dense matrix $x_{:, :}$ +
    +
    $y$
    +
    is the global dense matrix $y_{:, :}$ +
    +
    $T$
    +
    is the global sparse block triangular submatrix $T$ +
    +
    $D$
    +
    is the scaling diagonal matrix. +
    +
    + +

    +

    +call psb_spsm(alpha, t, x, beta, y, desc_a, info)
    +call psb_spsm(alpha, t, x, beta, y, desc_a, info,&
    +             & trans, unit, choice, diag, work)
    +
    + +

    +

    +
    + + + +
    Table 13: +Data types
    +
    + + + + + + + + + + + + + + + + +
    $T$, $x$, $y$, $D$, $\alpha$, $\beta$Subroutine
    Short Precision Realpsb_spsm
    Long Precision Realpsb_spsm
    Short Precision Complexpsb_spsm
    Long Precision Complexpsb_spsm
    +
    +
    +

    +
    + +

    +

    +
    Type:
    +
    Synchronous. +
    +
    On Entry
    +
    +
    +
    alpha
    +
    the scalar $\alpha$. +
    +Scope: global +
    +Type: required +
    +Intent: in. +
    +Specified as: a number of the data type indicated in +Table 13. +
    +
    t
    +
    the global portion of the sparse matrix +$T$. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: an object type specified in +§ 3. +
    +
    x
    +
    the local portion of global dense matrix +$x$. + +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +containing numbers of type specified in +Table 13. The rank of $x$ must be the same of $y$. +
    +
    beta
    +
    the scalar $\beta$. +
    +Scope: global +
    +Type: required +
    +Intent: in. +
    +Specified as: a number of the data type indicated in Table 13. +
    +
    y
    +
    the local portion of global dense matrix +$y$. + +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +containing numbers of type specified in +Table 13. The rank of $y$ must be the same of $x$. +
    +
    desc_a
    +
    contains data structures for communications. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: an object of type descdatapsb_desc_type. +
    +
    trans
    +
    specify with unitd the operation to perform. +
    +
    trans = 'N'
    +
    the operation is with no transposed matrix +
    +
    trans = 'T'
    +
    the operation is with transposed matrix. +
    +
    trans = 'C'
    +
    the operation is with conjugate transposed matrix. +
    +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Default: $trans = N$ +
    +Specified as: a character variable. +
    +
    unitd
    +
    specify with trans the operation to perform. +
    +
    unitd = 'U'
    +
    the operation is with no scaling +
    +
    unitd = 'L'
    +
    the operation is with left scaling +
    +
    unitd = 'R'
    +
    the operation is with right scaling. +
    +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Default: $unitd = U$ +
    +Specified as: a character variable. +
    +
    choice
    +
    specifies the update of overlap elements to be performed + on exit: +
    +
    +
    psb_none_ +
    +
    +
    psb_sum_ +
    +
    +
    psb_avg_ +
    +
    +
    psb_square_root_ +
    +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Default: psb_avg_ +
    +Specified as: an integer variable. +
    +
    diag
    +
    the diagonal scaling matrix. +
    +Scope: local +
    +Type: optional +
    +Intent: in. +
    +Default: +$diag(1) = 1 (no scaling)$ +
    +Specified as: a rank one array containing numbers of the type +indicated in Table 13. +
    +
    work
    +
    a work array. +
    +Scope: local +
    +Type: optional +
    +Intent: inout. +
    +Specified as: a rank one array of the same type of $x$ with the +TARGET attribute. + +

    +

    +
    On Return
    +
    +
    +
    y
    +
    the local portion of global dense matrix +$y$. + +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: an array of rank one or two +containing numbers of type specified in +Table 13. +
    +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +
    +
    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: Communication routines + Up: Computational routines + Previous: psb_spmm Sparse +   Contents + diff --git a/docs/html/node51.html b/docs/html/node51.html index 59a921b2..d921e10b 100644 --- a/docs/html/node51.html +++ b/docs/html/node51.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_halo -- Halo Data Communication - +Communication routines + @@ -18,635 +18,63 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: psb_ovrl Overlap - Up: Communication routines - Previous: Communication routines -   Next: psb_halo Halo + Up: userhtml + Previous: psb_spsm Triangular +   Contents

    -

    -psb_halo -- Halo Data Communication -

    - -

    -These subroutines gathers the values of the halo -elements, and (optionally) scale the result: - -

    -

    -
    - - -\begin{displaymath}x \leftarrow \alpha x \end{displaymath} -
    -
    -

    -where: -
    -
    $x$
    -
    is a global dense submatrix. -
    -
    - -

    -

    -
    - - - -
    Table 14: -Data types
    -
    - - - - - - - - - - - - - - - - - - - -
    $\alpha$, $x$Subroutine
    Integerpsb_halo
    Short Precision Realpsb_halo
    Long Precision Realpsb_halo
    Short Precision Complexpsb_halo
    Long Precision Complexpsb_halo
    -
    -
    -

    -
    - -

    -

    -call psb_halo(x, desc_a, info)
    -call psb_halo(x, desc_a, info, alpha, work, data)
    -
    +

    +Communication routines +

    +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 6.

    -

    -
    Type:
    -
    Synchronous. -
    -
    On Entry
    -
    -
    -
    x
    -
    global dense matrix $x$. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 14. -
    -
    desc_a
    -
    contains data structures for communications. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    alpha
    -
    the scalar $\alpha$. -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Default: $alpha = 1 $ -
    -Specified as: a number of the data type indicated in Table 14. -
    -
    work
    -
    the work array. -
    -Scope: local -
    -Type: optional -
    -Intent: inout. -
    -Specified as: a rank one array of the same type of $x$. -
    -
    data
    -
    index list selector. -
    -Scope: global -
    -Type: optional -
    -Specified as: an integer. Values:psb_comm_halo_,psb_comm_mov_, -psb_comm_ext_, default: psb_comm_halo_. Chooses the -index list on which to base the data exchange. - -

    -

    -
    On Return
    -
    -
    -
    x
    -
    global dense result matrix $x$. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Returned as: a rank one or two array -containing numbers of type specified in -Table 14. -
    -
    info
    -
    the local portion of result submatrix $y$. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value that contains an error code. -
    -
    - -
    - - - -
    Figure 7: -Sample discretization mesh.
    -
    -\includegraphics[scale=0.45]{figures/try8x8.eps} - - -\rotatebox{-90}{\includegraphics[scale=0.45]{figures/try8x8}} - -
    -
    - -

    -Usage Example -Consider the discretization mesh depicted in fig. 7, -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 $x$ vector, and process 1 assigns a value of 2, then after a -call to psb_halo the contents of the local vectors will be the -following: -
    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -Process 0  -Process 1
    - I GLOB(I) X(I)   I GLOB(I) X(I)
    - 1 1 1.0   1 33 2.0
    - 2 2 1.0   2 34 2.0
    - 3 3 1.0   3 35 2.0
    - 4 4 1.0   4 36 2.0
    - 5 5 1.0   5 37 2.0
    - 6 6 1.0   6 38 2.0
    - 7 7 1.0   7 39 2.0
    - 8 8 1.0   8 40 2.0
    - 9 9 1.0   9 41 2.0
    - 10 10 1.0   10 42 2.0
    - 11 11 1.0   11 43 2.0
    - 12 12 1.0   12 44 2.0
    - 13 13 1.0   13 45 2.0
    - 14 14 1.0   14 46 2.0
    - 15 15 1.0   15 47 2.0
    - 16 16 1.0   16 48 2.0
    - 17 17 1.0   17 49 2.0
    - 18 18 1.0   18 50 2.0
    - 19 19 1.0   19 51 2.0
    - 20 20 1.0   20 52 2.0
    -21 21 1.0   21 53 2.0
    -22 22 1.0   22 54 2.0
    -23 23 1.0   23 55 2.0
    -24 24 1.0   24 56 2.0
    -25 25 1.0   25 57 2.0
    -26 26 1.0   26 58 2.0
    -27 27 1.0   27 59 2.0
    -28 28 1.0   28 60 2.0
    -29 29 1.0   29 61 2.0
    -30 30 1.0   30 62 2.0
    -31 31 1.0   31 63 2.0
    -32 32 1.0   32 64 2.0
    -33 33 2.0   33 25 1.0
    -34 34 2.0   34 26 1.0
    -35 35 2.0   35 27 1.0
    -36 36 2.0   36 28 1.0
    -37 37 2.0   37 29 1.0
    -38 38 2.0   38 30 1.0
    -39 39 2.0   39 31 1.0
    -40 40 2.0   40 32 1.0
    -
    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_ovrl Overlap - Up: Communication routines - Previous: Communication routines -   Contents - +

    + +Subsections + + + +

    diff --git a/docs/html/node52.html b/docs/html/node52.html index 921f4e8e..54bef97c 100644 --- a/docs/html/node52.html +++ b/docs/html/node52.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_ovrl -- Overlap Update - +psb_halo -- Halo Data Communication + @@ -20,57 +20,58 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_gather Gather - Up: Communication routines - Previous: psb_halo Halo -   Next: psb_ovrl Overlap + Up: Communication routines + Previous: Communication routines +   Contents

    -

    -psb_ovrl -- Overlap Update +

    +psb_halo -- Halo Data Communication

    -These subroutines applies an overlap operator to the input vector: +These subroutines gathers the values of the halo +elements, and (optionally) scale the result:


    \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}">

    @@ -80,52 +81,42 @@ where: WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0" SRC="img20.png" ALT="$x$"> -
    is the global dense submatrix $x$ -
    -
    $Q$
    -
    is the overlap operator; it is the composition of two -operators $ P_a$ and $ P^{T}$. +
    is a global dense submatrix.


    -
    +
    -


    - next - + up - previous - contents
    - Next:psb_gather Gather - Up:Communication routines - Previous:psb_halo Halo -   Next:psb_ovrl Overlap + Up:Communication routines + Previous:Communication routines +   Contents diff --git a/docs/html/node53.html b/docs/html/node53.html index 2f646ae9..7a9360ec 100644 --- a/docs/html/node53.html +++ b/docs/html/node53.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_gather -- Gather Global Dense Matrix - +psb_ovrl -- Overlap Update + @@ -20,123 +20,112 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next:psb_scatter Scatter - Up:Communication routines - Previous:psb_ovrl Overlap -   Next:psb_gather Gather + Up:Communication routines + Previous:psb_halo Halo +   Contents

    -

    -psb_gather -- Gather Global Dense Matrix +

    +psb_ovrl -- Overlap Update

    -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:


    \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}">

    where:
    $glob\_x$
    -
    is the global submatrix -$glob\_x_{1:m,1:n}$ -
    -
    $loc\_x_i$
    -
    is the local portion of global dense matrix on -process $i$. + WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0" + SRC="img20.png" + ALT="$x$"> +
    is the global dense submatrix $x$
    $collect$
    -
    is the collect function. + WIDTH="16" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" + SRC="img60.png" + ALT="$Q$"> +
    is the overlap operator; it is the composition of two +operators $ P_a$ and $ P^{T}$.


    -
    +
    Table 15: +Table 14: Data types
    + + + - + - + - + - +
    $\alpha$, $x$ Subroutine
    Integerpsb_halo
    Short Precision Realpsb_ovrlpsb_halo
    Long Precision Realpsb_ovrlpsb_halo
    Short Precision Complexpsb_ovrlpsb_halo
    Long Precision Complexpsb_ovrlpsb_halo
    @@ -136,9 +127,9 @@ Data types

    -call psb_ovrl(x, desc_a, info)
    -call psb_ovrl(x, desc_a, info, update=update_type, work=work)
    -
    +call psb_halo(x, desc_a, info) +call psb_halo(x, desc_a, info, alpha, work, data) +

    @@ -162,7 +153,7 @@ Intent: inout.
    Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in -Table 15. +Table 14.
    desc_a
    contains data structures for communications. @@ -175,40 +166,24 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    -
    update
    -
    Update operator. -
    -
    update = psb_none_
    -
    Do nothing; -
    -
    update = psb_add_
    -
    Sum overlap entries, i.e. apply $P^T$; -
    -
    update = psb_avg_
    -
    Average overlap entries, i.e. apply $P_aP^T$; -
    -
    +
    alpha
    +
    the scalar $\alpha$. +
    Scope: global
    -Intent: in. +Type: optional
    -Default: -$update\_type = psb\_avg\_ $ +Intent: in.
    -Scope: global +Default: $alpha = 1 $
    -Specified as: a integer variable. +Specified as: a number of the data type indicated in Table 14.
    work
    the work array. @@ -219,10 +194,21 @@ Type: optional
    Intent: inout.
    -Specified as: a one dimensional array of the same type of $x$. + ALT="$x$">. +
    +
    data
    +
    index list selector. +
    +Scope: global +
    +Type: optional +
    +Specified as: an integer. Values:psb_comm_halo_,psb_comm_mov_, +psb_comm_ext_, default: psb_comm_halo_. Chooses the +index list on which to base the data exchange.

    @@ -241,12 +227,15 @@ Type: required
    Intent: inout.
    -Specified as: an array of rank one or two +Returned as: a rank one or two array containing numbers of type specified in -Table 15. +Table 14.
    info
    -
    Error code. +
    the local portion of result submatrix $y$.
    Scope: local
    @@ -254,80 +243,46 @@ Type: required
    Intent: out.
    -An integer value; 0 means no error has been detected. +An integer value that contains an error code.
    -

    -Notes - -

      -
    1. If there is no overlap in the data distribution associated with - the descriptor, no operations are performed; -
    2. -
    3. The operator $ P^{T}$ performs the reduction sum of overlap -elements; it is a ``prolongation'' operator $P^T$ that -replicates overlap elements, accounting for the physical replication -of data; -
    4. -
    5. The operator $ 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. -
    6. -
    - -

    - -

    +
    -
    Figure 8: +Figure 7: Sample discretization mesh.
    \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}"> \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}}">
    -Example of use -Consider the discretization mesh depicted in fig. 8, -partitioned among two processes as shown by the dashed lines, with an -overlap of 1 extra layer with respect to the partition of -fig. 7; 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 +

    +Usage Example +Consider the discretization mesh depicted in fig. 7, +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 $x$ vector, and process 1 assigns a value of 2, then after a -call to psb_ovrl with psb_avg_ and a call to -psb_halo_ the contents of the local vectors will be the -following (showing a transition among the two subdomains) - -

    +call to psb_halo the contents of the local vectors will be the +following:

    @@ -350,7 +305,7 @@ Process 1 - + @@ -358,7 +313,7 @@ Process 1 - + @@ -366,7 +321,7 @@ Process 1 - + @@ -374,7 +329,7 @@ Process 1 - + @@ -382,7 +337,7 @@ Process 1 - + @@ -390,7 +345,7 @@ Process 1 - + @@ -398,7 +353,7 @@ Process 1 - + @@ -406,7 +361,7 @@ Process 1 - + @@ -505,7 +460,7 @@ Process 1 +21 @@ -513,7 +468,7 @@ Process 1 +22 @@ -521,7 +476,7 @@ Process 1 +23 @@ -529,7 +484,7 @@ Process 1 +24 @@ -537,195 +492,131 @@ Process 1 +25 - + +26 - + +27 - + +28 - + +29 - + +30 - + +31 - + +32 - + +33 - + - + +34 - + - + +35 - + - + +36 - + - + +37 - + - + +38 - + - + +39 - + - + +40 - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    1.0   1 33 1.5 2.0
    2 1.0   2 34 1.5 2.0
    3 1.0   3 35 1.5 2.0
    4 1.0   4 36 1.5 2.0
    5 1.0   5 37 1.5 2.0
    6 1.0   6 38 1.5 2.0
    7 1.0   7 39 1.5 2.0
    8 1.0   8 40 1.5 2.0
    9 2.0
    - 21 21 1.0   21 2.0
    - 22 22 1.0   22 2.0
    - 23 23 1.0   23 2.0
    - 24 24 1.0   24 2.0
    - 25 25 1.5 1.0   25 57 2.0
    - 26 26 1.5 1.0   26 58 2.0
    - 27 27 1.5 1.0   27 59 2.0
    - 28 28 1.5 1.0   28 60 2.0
    - 29 29 1.5 1.0   29 61 2.0
    - 30 30 1.5 1.0   30 62 2.0
    - 31 31 1.5 1.0   31 63 2.0
    - 32 32 1.5 1.0   32 64 2.0
    - 33 33 1.5 2.0   33 25 1.5 1.0
    - 34 34 1.5 2.0   34 26 1.5 1.0
    - 35 35 1.5 2.0   35 27 1.5 1.0
    - 36 36 1.5 2.0   36 28 1.5 1.0
    - 37 37 1.5 2.0   37 29 1.5 1.0
    - 38 38 1.5 2.0   38 30 1.5 1.0
    - 39 39 1.5 2.0   39 31 1.5 1.0
    - 40 40 1.5 2.0   40 32 1.5
    - 41 41 2.0   41 17 1.0
    - 42 42 2.0   42 18 1.0
    - 43 43 2.0   43 19 1.0
    - 44 44 2.0   44 20 1.0
    - 45 45 2.0   45 21 1.0
    - 46 46 2.0   46 22 1.0
    - 47 47 2.0   47 23 1.0
    - 48 48 2.0   48 24 1.0
    @@ -734,26 +625,26 @@ Process 1
    -
    Table 16: +Table 15: Data types
    + WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0" + SRC="img20.png" + ALT="$x$"> - - - - + - + - + - +
    $x_i, y$ Subroutine
    Integerpsb_gather
    Short Precision Realpsb_gatherpsb_ovrl
    Long Precision Realpsb_gatherpsb_ovrl
    Short Precision Complexpsb_gatherpsb_ovrl
    Long Precision Complexpsb_gatherpsb_ovrl
    @@ -147,9 +136,9 @@ Data types

    -call psb_gather(glob_x, loc_x, desc_a, info, root)
    -call psb_gather(glob_x, loc_x, desc_a, info, root)
    -
    +call psb_ovrl(x, desc_a, info) +call psb_ovrl(x, desc_a, info, update=update_type, work=work) +

    @@ -159,21 +148,21 @@ call psb_gather(glob_x, loc_x, desc_a, info, root)
    On Entry
    -
    loc_x
    -
    the local portion of global dense matrix -$glob\_x$. +
    x
    +
    global dense matrix $x$.
    Scope: local
    -Type: required +Type: required
    -Intent: in. +Intent: inout.
    Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -indicated in Table 16. +containing numbers of type specified in +Table 15.
    desc_a
    contains data structures for communications. @@ -186,43 +175,75 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    -
    root
    -
    The process that holds the global copy. If $root=-1$ all - the processes will have a copy of the global vector. -
    +
    update
    +
    Update operator. +
    +
    update = psb_none_
    +
    Do nothing; +
    +
    update = psb_add_
    +
    Sum overlap entries, i.e. apply $P^T$; +
    +
    update = psb_avg_
    +
    Average overlap entries, i.e. apply $P_aP^T$; +
    +
    Scope: global
    -Type: optional -
    Intent: in.
    -Specified as: an integer variable $-1\le root\le np-1$, default $-1$. + WIDTH="166" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" + SRC="img65.png" + ALT="$update\_type = psb\_avg\_ $"> +
    +Scope: global +
    +Specified as: a integer variable. +
    +
    work
    +
    the work array. +
    +Scope: local +
    +Type: optional +
    +Intent: inout. +
    +Specified as: a one dimensional array of the same type of $x$. + +

    On Return
    -
    glob_x
    -
    The array where the local parts must be gathered. +
    x
    +
    global dense result matrix $x$.
    -Scope: global +Scope: local
    -Type: required +Type: required
    -Intent: out. +Intent: inout.
    -Specified as: a rank one or two array with the ALLOCATABLE attribute. +Specified as: an array of rank one or two +containing numbers of type specified in +Table 15.
    info
    Error code. @@ -237,29 +258,502 @@ An integer value; 0 means no error has been detected.
    +

    +Notes + +

      +
    1. If there is no overlap in the data distribution associated with + the descriptor, no operations are performed; +
    2. +
    3. The operator $ P^{T}$ performs the reduction sum of overlap +elements; it is a ``prolongation'' operator $P^T$ that +replicates overlap elements, accounting for the physical replication +of data; +
    4. +
    5. The operator $ 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. +
    6. +
    + +

    + +

    + + + +
    Figure 8: +Sample discretization mesh.
    +
    +\includegraphics[scale=0.65]{figures/try8x8_ov.eps} + + +\rotatebox{-90}{\includegraphics[scale=0.65]{figures/try8x8_ov}} + +
    +
    + +Example of use +Consider the discretization mesh depicted in fig. 8, +partitioned among two processes as shown by the dashed lines, with an +overlap of 1 extra layer with respect to the partition of +fig. 7; 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 $x$ vector, and process 1 assigns a value of 2, then after a +call to psb_ovrl with psb_avg_ and a call to +psb_halo_ the contents of the local vectors will be the +following (showing a transition among the two subdomains) + +

    +
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +Process 0  +Process 1
    + I GLOB(I) X(I)   I GLOB(I) X(I)
    + 1 1 1.0   1 33 1.5
    + 2 2 1.0   2 34 1.5
    + 3 3 1.0   3 35 1.5
    + 4 4 1.0   4 36 1.5
    + 5 5 1.0   5 37 1.5
    + 6 6 1.0   6 38 1.5
    + 7 7 1.0   7 39 1.5
    + 8 8 1.0   8 40 1.5
    + 9 9 1.0   9 41 2.0
    + 10 10 1.0   10 42 2.0
    + 11 11 1.0   11 43 2.0
    + 12 12 1.0   12 44 2.0
    + 13 13 1.0   13 45 2.0
    + 14 14 1.0   14 46 2.0
    + 15 15 1.0   15 47 2.0
    + 16 16 1.0   16 48 2.0
    + 17 17 1.0   17 49 2.0
    + 18 18 1.0   18 50 2.0
    + 19 19 1.0   19 51 2.0
    + 20 20 1.0   20 52 2.0
    + 21 21 1.0   21 53 2.0
    + 22 22 1.0   22 54 2.0
    + 23 23 1.0   23 55 2.0
    + 24 24 1.0   24 56 2.0
    + 25 25 1.5   25 57 2.0
    + 26 26 1.5   26 58 2.0
    + 27 27 1.5   27 59 2.0
    + 28 28 1.5   28 60 2.0
    + 29 29 1.5   29 61 2.0
    + 30 30 1.5   30 62 2.0
    + 31 31 1.5   31 63 2.0
    + 32 32 1.5   32 64 2.0
    + 33 33 1.5   33 25 1.5
    + 34 34 1.5   34 26 1.5
    + 35 35 1.5   35 27 1.5
    + 36 36 1.5   36 28 1.5
    + 37 37 1.5   37 29 1.5
    + 38 38 1.5   38 30 1.5
    + 39 39 1.5   39 31 1.5
    + 40 40 1.5   40 32 1.5
    + 41 41 2.0   41 17 1.0
    + 42 42 2.0   42 18 1.0
    + 43 43 2.0   43 19 1.0
    + 44 44 2.0   44 20 1.0
    + 45 45 2.0   45 21 1.0
    + 46 46 2.0   46 22 1.0
    + 47 47 2.0   47 23 1.0
    + 48 48 2.0   48 24 1.0
    +
    +


    - next - + up - previous - contents
    - Next: psb_scatter Scatter - Up: Communication routines - Previous: psb_ovrl Overlap -   Next: psb_gather Gather + Up: Communication routines + Previous: psb_halo Halo +   Contents diff --git a/docs/html/node54.html b/docs/html/node54.html index 6750c915..090ae904 100644 --- a/docs/html/node54.html +++ b/docs/html/node54.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_scatter -- Scatter Global Dense Matrix - +psb_gather -- Gather Global Dense Matrix + @@ -18,59 +18,61 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Data management routines - Up: Communication routines - Previous: psb_gather Gather -   Next: psb_scatter Scatter + Up: Communication routines + Previous: psb_ovrl Overlap +   Contents

    -

    -psb_scatter -- Scatter Global Dense Matrix +

    +psb_gather -- Gather Global Dense Matrix

    -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.


    \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}">

    @@ -80,7 +82,7 @@ where: WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" SRC="img69.png" ALT="$glob\_x$"> -
    is the global matrix $i$.
    $scatter$
    -
    is the scatter function. + WIDTH="48" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" + SRC="img72.png" + ALT="$collect$"> +
    is the collect function.


    -
    +
    - - + - + - + - + - +
    Table 17: +Table 16: Data types
    @@ -122,19 +124,19 @@ Data types
    Subroutine
    Integerpsb_scatterpsb_gather
    Short Precision Realpsb_scatterpsb_gather
    Long Precision Realpsb_scatterpsb_gather
    Short Precision Complexpsb_scatterpsb_gather
    Long Precision Complexpsb_scatterpsb_gather
    @@ -145,8 +147,8 @@ Data types

    -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)
     

    @@ -157,16 +159,21 @@ call psb_scatter(glob_x, loc_x, desc_a, info, root)

    On Entry
    -
    glob_x
    -
    The array that must be scattered into local pieces. +
    loc_x
    +
    the local portion of global dense matrix +$glob\_x$.
    -Scope: global +Scope: local
    Type: required
    Intent: in.
    -Specified as: a rank one or two array. +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +indicated in Table 16.
    desc_a
    contains data structures for communications. @@ -184,7 +191,7 @@ Specified as: a structured data of type descdatapsb_desc_type. 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.
    Scope: global
    @@ -206,21 +213,16 @@ Specified as: an integer variable - next - + up - previous - contents
    - Next: Data management routines - Up: Communication routines - Previous: psb_gather Gather -   Next: psb_scatter Scatter + Up: Communication routines + Previous: psb_ovrl Overlap +   Contents diff --git a/docs/html/node55.html b/docs/html/node55.html index 789becdb..d5a55345 100644 --- a/docs/html/node55.html +++ b/docs/html/node55.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Data management routines - +psb_scatter -- Scatter Global Dense Matrix + @@ -18,114 +18,248 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: psb_cdall Allocates - Up: userhtml - Previous: psb_scatter Scatter -   Next: Data management routines + Up: Communication routines + Previous: psb_gather Gather +   Contents

    -

    - +

    +psb_scatter -- Scatter Global Dense Matrix +

    + +

    +These subroutines scatters the portions of global dense matrix owned +by a process to all the processes in the processes grid. + +

    +

    +
    + + +\begin{displaymath}loc\_x_i \leftarrow scatter(glob\_x) \end{displaymath} +
    +
    +

    +where: +
    +
    $glob\_x$
    +
    is the global matrix +$glob\_x_{1:m,1:n}$ +
    +
    $loc\_x_i$
    +
    is the local portion of global dense matrix on +process $i$. +
    +
    $scatter$
    +
    is the scatter function. +
    +
    + +

    +

    +
    + + + +
    Table 17: +Data types
    +
    + + + + + + + + + + + + + + + + + + + +
    $x_i, y$Subroutine
    Integerpsb_scatter
    Short Precision Realpsb_scatter
    Long Precision Realpsb_scatter
    Short Precision Complexpsb_scatter
    Long Precision Complexpsb_scatter
    +
    +
    +


    -Data management routines -

    -


    - -Subsections +
    +call psb_scatter(glob_x, loc_x, desc_a, info, root)
    +call psb_scatter(glob_x, loc_x, desc_a, info, root)
    +
    - - -

    +

    +

    +
    Type:
    +
    Synchronous. +
    +
    On Entry
    +
    +
    +
    glob_x
    +
    The array that must be scattered into local pieces. +
    +Scope: global +
    +Type: required +
    +Intent: in. +
    +Specified as: a rank one or two array. +
    +
    desc_a
    +
    contains data structures for communications. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type descdatapsb_desc_type. +
    +
    root
    +
    The process that holds the global copy. If $root=-1$ all + the processes have a copy of the global vector. +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Specified as: an integer variable +$-1\le root\le np-1$, default $-1$. +
    +
    On Return
    +
    +
    +
    loc_x
    +
    the local portion of global dense matrix +$glob\_x$. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +Specified as: a rank one or two array containing numbers of the type +indicated in Table 17. +
    +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +
    +
    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: Data management routines + Up: Communication routines + Previous: psb_gather Gather +   Contents + diff --git a/docs/html/node56.html b/docs/html/node56.html index 245d166d..c4f500cb 100644 --- a/docs/html/node56.html +++ b/docs/html/node56.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cdall -- Allocates a communication descriptor - +Data management routines + @@ -18,429 +18,114 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: psb_cdins Communication - Up: Data management routines - Previous: Data management routines -   Next: psb_cdall Allocates + Up: userhtml + Previous: psb_scatter Scatter +   Contents

    -

    -psb_cdall -- Allocates a communication descriptor -

    - -

    -

    -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.)
    -
    - -

    -This subroutine initializes the communication descriptor associated -with an index space. One of the optional arguments -parts, vg, vl, nl or repl -must be specified, thereby choosing -the specific initialization strategy. -

    -
    On Entry
    -
    -
    -
    Type:
    -
    Synchronous. -
    -
    icontxt
    -
    the communication context. -
    -Scope:global. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer value. -
    -
    vg
    -
    Data allocation: each index -$i\in \{1\dots mg\}$ is allocated - to process $vg(i)$. -
    -Scope:global. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer array. -
    -
    flag
    -
    Specifies whether entries in $vg$ are zero- or one-based. -
    -Scope:global. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer value $0,1$, default $0$. - -

    -

    -
    mg
    -
    the (global) number of rows of the problem. -
    -Scope:global. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer value. It is required if parts or -repl is specified, it is optional if vg is specified. -
    -
    parts
    -
    the subroutine that defines the partitioning scheme. -
    -Scope:global. -
    -Type:required. -
    -Specified as: a subroutine. -
    -
    vl
    -
    Data allocation: the set of global indices - $vl(1:nl)$ belonging to the calling process. -
    -Scope:local. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer array. -
    -
    nl
    -
    Data allocation: in a generalized block-row distribution the - number of indices belonging to the current process. -
    -Scope:local. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer value. May be specified together with -vl. -
    -
    repl
    -
    Data allocation: build a replicated index space - (i.e. all processes own all indices). -
    -Scope:global. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: the logical value .true. -
    -
    globalcheck
    -
    Data allocation: do global checks on the local - index lists vl -
    -Scope:global. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: a logical value, default: .true. -
    -
    lidx
    -
    Data allocation: the set of local indices - $lidx(1:nl)$ to be assigned to the global indices $vl$. -
    -Scope:local. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer array. -
    -
    - -

    -

    -
    On Return
    -
    -
    -
    desc_a
    -
    the communication descriptor. -
    -Scope:local. -
    -Type:required. -
    -Intent: out. -
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    info
    -
    Error code. +

    +
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -

    -
    +Data management routines +

    -Notes +


    + +Subsections -
      -
    1. One of the optional arguments parts, vg, - vl, nl or repl must be specified, thereby choosing the - initialization strategy as follows: -
      -
      parts
      -
      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 mg as well. - The subroutine must conform to the following interface: -
      -  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
      -
      - The input arguments are: -
      -
      glob_index
      -
      The global index to be mapped; - -
      -
      np
      -
      The number of processes in the mapping; - -
      -
      mg
      -
      The total number of global rows in the mapping; - -
      -
      - The output arguments are: -
      -
      nv
      -
      The number of entries in pv; - -
      -
      pv
      -
      A vector containing the indices of the processes to - which the global index should be assigend; each entry must satisfy - -$0\le pv(i) < np$; if $nv>1$ we have an index assigned to multiple - processes, i.e. we have an overlap among the subdomains. - -
      -
      -
      -
      vg
      -
      In this case the association between an index and a process - is specified via an integer vector vg(1:mg); - each index -$i\in \{1\dots mg\}$ is assigned to process $vg(i)$. - The vector vg must be identical on all - calling processes; its entries may have the ranges $(0\dots np-1)$ - or $(1\dots np)$ according to the value of flag. - The size $mg$ may be specified via the optional argument mg; - the default is to use the entire vector vg, thus having - mg=size(vg). -
      -
      vl
      -
      In this case we are specifying the list of indices - vl(1:nl) assigned to the current process; thus, the global - problem size $mg$ is given by - the range of the aggregate of the individual vectors vl specified - in the calling processes. The size may be specified via the optional - argument nl; the default is to use the entire vector - vl, thus having nl=size(vl). - If globalcheck=.true. the subroutine will check how many - times each entry in the global index space $(1\dots mg)$ is - specified in the input lists vl, thus allowing for the - presence of overlap in the input, and checking for ``orphan'' - indices. If globalcheck=.false., 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 lidx is available for - those cases in which the user has already established a - global-to-local mapping; if it is specified, each index in - vl(i) will be mapped to the corresponding local index - lidx(i). -
      -
      nl
      -
      If this argument is specified alone (i.e. without vl) - the result is a generalized row-block distribution in which each - process $I$ gets assigned a consecutive chunk of $N_I=nl$ global - indices. -
      -
      repl
      -
      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. -
      -
      -
    2. -
    3. On exit from this routine the descriptor is in the build - state. -
    4. -
    5. Calling the routine with vg or parts implies that - every process will scan the entire index space to figure out the - local indices. -
    6. -
    7. Overlapped indices are possible with both parts and - vl invocations. -
    8. -
    9. When the subroutine is invoked with vl in - conjunction with globalcheck=.true., it will perform a scan - of the index space to search for overlap or orphan indices. -
    10. -
    11. When the subroutine is invoked with vl in - conjunction with globalcheck=.false., no index space scan - will take place. Thus it is the responsibility of the user to make - sure that the indices specified in vl have neither orphans nor - overlaps; if this assumption fails, results will be - unpredictable. -
    12. -
    13. Orphan and overlap indices are - impossible by construction when the subroutine is invoked with - nl (alone), or vg. -
    14. -
    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_cdins Communication - Up: Data management routines - Previous: Data management routines -   Contents - + + +

    diff --git a/docs/html/node57.html b/docs/html/node57.html index 948a2653..9bcd90ce 100644 --- a/docs/html/node57.html +++ b/docs/html/node57.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cdins -- Communication descriptor insert routine - +psb_cdall -- Allocates a communication descriptor + @@ -20,98 +20,207 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_cdasb Communication - Up: Data management routines - Previous: psb_cdall Allocates -   Next: psb_cdins Communication + Up: Data management routines + Previous: Data management routines +   Contents

    -

    -psb_cdins -- Communication descriptor insert routine +

    +psb_cdall -- Allocates a communication descriptor

    -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.)
     

    -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. - -

    +This subroutine initializes the communication descriptor associated +with an index space. One of the optional arguments +parts, vg, vl, nl or repl +must be specified, thereby choosing +the specific initialization strategy.

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    +
    On Entry
    -
    nz
    -
    the number of points being inserted. +
    Type:
    +
    Synchronous. +
    +
    icontxt
    +
    the communication context.
    -Scope: local. +Scope:global.
    -Type: required. +Type:required.
    Intent: in.
    Specified as: an integer value.
    -
    ia
    -
    the indices of the starting vertex of the edges being inserted. +
    vg
    +
    Data allocation: each index +$i\in \{1\dots mg\}$ is allocated + to process $vg(i)$. +
    +Scope:global. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer array. +
    +
    flag
    +
    Specifies whether entries in $vg$ are zero- or one-based. +
    +Scope:global. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer value $0,1$, default $0$. + +

    +

    +
    mg
    +
    the (global) number of rows of the problem. +
    +Scope:global. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer value. It is required if parts or +repl is specified, it is optional if vg is specified. +
    +
    parts
    +
    the subroutine that defines the partitioning scheme. +
    +Scope:global. +
    +Type:required. +
    +Specified as: a subroutine. +
    +
    vl
    +
    Data allocation: the set of global indices + $vl(1:nl)$ belonging to the calling process. +
    +Scope:local. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer array. +
    +
    nl
    +
    Data allocation: in a generalized block-row distribution the + number of indices belonging to the current process.
    -Scope: local. +Scope:local. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer value. May be specified together with +vl. +
    +
    repl
    +
    Data allocation: build a replicated index space + (i.e. all processes own all indices). +
    +Scope:global. +
    +Type:optional. +
    +Intent: in.
    -Type: required. +Specified as: the logical value .true. +
    +
    globalcheck
    +
    Data allocation: do global checks on the local + index lists vl +
    +Scope:global. +
    +Type:optional.
    Intent: in.
    -Specified as: an integer array of length $nz$. +Specified as: a logical value, default: .true.
    -
    ja
    -
    the indices of the end vertex of the edges being inserted. +
    lidx
    +
    Data allocation: the set of local indices + $lidx(1:nl)$ to be assigned to the global indices $vl$.
    -Scope: local. +Scope:local.
    -Type: required. +Type:optional.
    Intent: in.
    -Specified as: an integer array of length $nz$. +Specified as: an integer array.
    @@ -121,13 +230,13 @@ Specified as: an integer array of length
    desc_a
    -
    the updated communication descriptor. +
    the communication descriptor.
    Scope:local.
    Type:required.
    -Intent: inout. +Intent: out.
    Specified as: a structured data of type descdatapsb_desc_type.
    @@ -143,48 +252,193 @@ Intent: out. An integer value; 0 means no error has been detected. + +

    Notes

      -
    1. This routine may only be called if the descriptor is in the - build state; -
    2. -
    3. 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. -
    4. -
    5. There exists another interface for this routine +
    6. One of the optional arguments parts, vg, + vl, nl or repl must be specified, thereby choosing the + initialization strategy as follows: +
      +
      parts
      +
      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 mg as well. + The subroutine must conform to the following interface:
      -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
       
      -which will digest all entries in ja and add them to the -communication requirements. + The input arguments are: +
      +
      glob_index
      +
      The global index to be mapped; + +
      +
      np
      +
      The number of processes in the mapping; + +
      +
      mg
      +
      The total number of global rows in the mapping; + +
      +
      + The output arguments are: +
      +
      nv
      +
      The number of entries in pv; + +
      +
      pv
      +
      A vector containing the indices of the processes to + which the global index should be assigend; each entry must satisfy + +$0\le pv(i) < np$; if $nv>1$ we have an index assigned to multiple + processes, i.e. we have an overlap among the subdomains. + +
      +
      +
      +
      vg
      +
      In this case the association between an index and a process + is specified via an integer vector vg(1:mg); + each index +$i\in \{1\dots mg\}$ is assigned to process $vg(i)$. + The vector vg must be identical on all + calling processes; its entries may have the ranges $(0\dots np-1)$ + or $(1\dots np)$ according to the value of flag. + The size $mg$ may be specified via the optional argument mg; + the default is to use the entire vector vg, thus having + mg=size(vg). +
      +
      vl
      +
      In this case we are specifying the list of indices + vl(1:nl) assigned to the current process; thus, the global + problem size $mg$ is given by + the range of the aggregate of the individual vectors vl specified + in the calling processes. The size may be specified via the optional + argument nl; the default is to use the entire vector + vl, thus having nl=size(vl). + If globalcheck=.true. the subroutine will check how many + times each entry in the global index space $(1\dots mg)$ is + specified in the input lists vl, thus allowing for the + presence of overlap in the input, and checking for ``orphan'' + indices. If globalcheck=.false., 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 lidx is available for + those cases in which the user has already established a + global-to-local mapping; if it is specified, each index in + vl(i) will be mapped to the corresponding local index + lidx(i). +
      +
      nl
      +
      If this argument is specified alone (i.e. without vl) + the result is a generalized row-block distribution in which each + process $I$ gets assigned a consecutive chunk of $N_I=nl$ global + indices. +
      +
      repl
      +
      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. +
      +
      +
    7. +
    8. On exit from this routine the descriptor is in the build + state. +
    9. +
    10. Calling the routine with vg or parts implies that + every process will scan the entire index space to figure out the + local indices. +
    11. +
    12. Overlapped indices are possible with both parts and + vl invocations. +
    13. +
    14. When the subroutine is invoked with vl in + conjunction with globalcheck=.true., it will perform a scan + of the index space to search for overlap or orphan indices. +
    15. +
    16. When the subroutine is invoked with vl in + conjunction with globalcheck=.false., no index space scan + will take place. Thus it is the responsibility of the user to make + sure that the indices specified in vl have neither orphans nor + overlaps; if this assumption fails, results will be + unpredictable. +
    17. +
    18. Orphan and overlap indices are + impossible by construction when the subroutine is invoked with + nl (alone), or vg.


    - next - + up - previous - contents
    - Next: psb_cdasb Communication - Up: Data management routines - Previous: psb_cdall Allocates -   Next: psb_cdins Communication + Up: Data management routines + Previous: Data management routines +   Contents diff --git a/docs/html/node58.html b/docs/html/node58.html index e69857e5..a96236f7 100644 --- a/docs/html/node58.html +++ b/docs/html/node58.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cdasb -- Communication descriptor assembly routine - +psb_cdins -- Communication descriptor insert routine + @@ -20,64 +20,98 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_cdcpy Copies - Up: Data management routines - Previous: psb_cdins Communication -   Next: psb_cdasb Communication + Up: Data management routines + Previous: psb_cdall Allocates +   Contents

    -

    -psb_cdasb -- Communication descriptor assembly routine +

    +psb_cdins -- Communication descriptor insert routine

    -call psb_cdasb(desc_a, info)
    +call psb_cdins(nz, ia, ja, desc_a, info)
     
    +

    +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. +

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    -
    desc_a
    -
    the communication descriptor. +
    nz
    +
    the number of points being inserted.
    -Scope:local. +Scope: local.
    -Type:required. +Type: required.
    -Intent: inout. +Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: an integer value. +
    +
    ia
    +
    the indices of the starting vertex of the edges being inserted. +
    +Scope: local. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer array of length $nz$. +
    +
    ja
    +
    the indices of the end vertex of the edges being inserted. +
    +Scope: local. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer array of length $nz$.
    @@ -87,7 +121,7 @@ Specified as: a structured data of type descdatapsb_desc_type.
    desc_a
    -
    the communication descriptor. +
    the updated communication descriptor.
    Scope:local.
    @@ -112,13 +146,47 @@ An integer value; 0 means no error has been detected. Notes
      -
    1. On exit from this routine the descriptor is in the assembled - state. +
    2. This routine may only be called if the descriptor is in the + build state; +
    3. +
    4. 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. +
    5. +
    6. There exists another interface for this routine +
      +call psb_cdins(nz, ja, desc_a, info)
      +
      +which will digest all entries in ja and add them to the +communication requirements.

    -


    +
    + + +next + +up + +previous + +contents +
    + Next: psb_cdasb Communication + Up: Data management routines + Previous: psb_cdall Allocates +   Contents + diff --git a/docs/html/node59.html b/docs/html/node59.html index 81fe7c90..bcacd90c 100644 --- a/docs/html/node59.html +++ b/docs/html/node59.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cdcpy -- Copies a communication descriptor - +psb_cdasb -- Communication descriptor assembly routine + @@ -20,66 +20,64 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_cdfree Frees - Up: Data management routines - Previous: psb_cdasb Communication -   Next: psb_cdcpy Copies + Up: Data management routines + Previous: psb_cdins Communication +   Contents

    -

    -psb_cdcpy -- Copies a communication descriptor +

    +psb_cdasb -- Communication descriptor assembly routine

    -call psb_cdcpy(desc_in, desc_out, info)
    +call psb_cdasb(desc_a, info)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    -
    desc_in
    +
    desc_a
    the communication descriptor.
    Scope:local.
    Type:required.
    -Intent: in. +Intent: inout.
    Specified as: a structured data of type descdatapsb_desc_type. - -

    @@ -88,14 +86,14 @@ Specified as: a structured data of type descdatapsb_desc_type.
    On Return
    -
    desc_out
    -
    the communication descriptor copy. +
    desc_a
    +
    the communication descriptor.
    Scope:local.
    Type:required.
    -Intent: out. +Intent: inout.
    Specified as: a structured data of type descdatapsb_desc_type.
    @@ -111,6 +109,13 @@ Intent: out. An integer value; 0 means no error has been detected. +Notes + +
      +
    1. On exit from this routine the descriptor is in the assembled + state. +
    2. +



    diff --git a/docs/html/node6.html b/docs/html/node6.html index af78326b..d5f1b8da 100644 --- a/docs/html/node6.html +++ b/docs/html/node6.html @@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + @@ -26,33 +26,35 @@ original version by: Nikos Drakos, CBLU, University of Leeds - next - up - previous - contents
    - Next: Programming model - Up: Next: User-defined index mappings + Up: General overview - Previous: Previous: Library contents -   Contents

    -

    -Application structure +

    + +
    +Application structure

    @@ -242,28 +244,37 @@ doubling of memory occupation, and thus would be almost always far from optimal.

    +


    + +Subsections + + +
    - next - up - previous - contents
    - Next: Programming model - Up: Next: User-defined index mappings + Up: General overview - Previous: Previous: Library contents -   Contents diff --git a/docs/html/node60.html b/docs/html/node60.html index 0d218d1d..5a95618c 100644 --- a/docs/html/node60.html +++ b/docs/html/node60.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cdfree -- Frees a communication descriptor - +psb_cdcpy -- Copies a communication descriptor + @@ -20,64 +20,66 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_cdbldext Build - Up: Data management routines - Previous: psb_cdcpy Copies -   Next: psb_cdfree Frees + Up: Data management routines + Previous: psb_cdasb Communication +   Contents

    -

    -psb_cdfree -- Frees a communication descriptor +

    +psb_cdcpy -- Copies a communication descriptor

    -call psb_cdfree(desc_a, info)
    +call psb_cdcpy(desc_in, desc_out, info)
     

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    -
    desc_a
    -
    the communication descriptor to be freed. +
    desc_in
    +
    the communication descriptor.
    Scope:local.
    Type:required.
    -Intent: inout. +Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type. + +

    @@ -86,6 +88,17 @@ Specified as: a structured data of type descdatapsb_desc_type.
    On Return
    +
    desc_out
    +
    the communication descriptor copy. +
    +Scope:local. +
    +Type:required. +
    +Intent: out. +
    +Specified as: a structured data of type descdatapsb_desc_type. +
    info
    Error code.
    diff --git a/docs/html/node61.html b/docs/html/node61.html index 96bbcfe6..b709dcf4 100644 --- a/docs/html/node61.html +++ b/docs/html/node61.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_cdbldext -- Build an extended communication descriptor - +psb_cdfree -- Frees a communication descriptor + @@ -20,51 +20,47 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_spall Allocates - Up: Data management routines - Previous: psb_cdfree Frees -   Next: psb_cdbldext Build + Up: Data management routines + Previous: psb_cdcpy Copies +   Contents

    -

    -psb_cdbldext -- Build an extended communication - descriptor +

    +psb_cdfree -- Frees a communication descriptor

    -call psb_cdbldext(a,desc_a,nl,desc_out, info, extype)
    +call psb_cdfree(desc_a, info)
     

    -This subroutine builds an extended communication descriptor, based on -the input descriptor desc_a and on the stencil specified -through the input sparse matrix a.

    Type:
    Synchronous. @@ -72,54 +68,16 @@ through the input sparse matrix a.
    On Entry
    -
    a
    -
    A sparse matrix -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: a structured data type. -
    desc_a
    -
    the communication descriptor. +
    the communication descriptor to be freed.
    Scope:local.
    Type:required.
    -Intent: in. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    nl
    -
    the number of additional layers desired. -
    -Scope:global. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer value $nl\ge 0$. -
    -
    extype
    -
    the kind of estension required. -
    -Scope:global. -
    -Type:optional . -
    -Intent: in. +Intent: inout.
    -Specified as: an integer value -psb_ovt_xhal_, psb_ovt_asov_, default: psb_ovt_xhal_ - -

    +Specified as: a structured data of type descdatapsb_desc_type.

    @@ -128,17 +86,6 @@ Specified as: an integer value
    On Return
    -
    desc_out
    -
    the extended communication descriptor. -
    -Scope:local. -
    -Type:required. -
    -Intent: inout. -
    -Specified as: a structured data of type descdatapsb_desc_type. -
    info
    Error code.
    @@ -153,48 +100,7 @@ An integer value; 0 means no error has been detected.

    -Notes - -

      -
    1. Specifying psb_ovt_xhal_ for the extype 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; -
    2. -
    3. Specifying psb_ovt_asov_ for the extype 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. -
    4. -
    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_spall Allocates - Up: Data management routines - Previous: psb_cdfree Frees -   Contents - +

    diff --git a/docs/html/node62.html b/docs/html/node62.html index 760860c2..2b030a30 100644 --- a/docs/html/node62.html +++ b/docs/html/node62.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spall -- Allocates a sparse matrix - +psb_cdbldext -- Build an extended communication descriptor + @@ -20,47 +20,51 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_spins Insert - Up: Data management routines - Previous: psb_cdbldext Build -   Next: psb_spall Allocates + Up: Data management routines + Previous: psb_cdfree Frees +   Contents

    -

    -psb_spall -- Allocates a sparse matrix +

    +psb_cdbldext -- Build an extended communication + descriptor

    -call psb_spall(a, desc_a, info, nnz)
    +call psb_cdbldext(a,desc_a,nl,desc_out, info, extype)
     

    +This subroutine builds an extended communication descriptor, based on +the input descriptor desc_a and on the stencil specified +through the input sparse matrix a.

    Type:
    Synchronous. @@ -68,6 +72,16 @@ call psb_spall(a, desc_a, info, nnz)
    On Entry
    +
    a
    +
    A sparse matrix +Scope:local. +
    +Type:required. +
    +Intent: in. +
    +Specified as: a structured data type. +
    desc_a
    the communication descriptor.
    @@ -77,19 +91,35 @@ Type:required.
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    nl
    +
    the number of additional layers desired. +
    +Scope:global. +
    +Type:required. +
    +Intent: in. +
    +Specified as: an integer value $nl\ge 0$.
    -
    nnz
    -
    An estimate of the number of nonzeroes in the local - part of the assembled matrix. +
    extype
    +
    the kind of estension required.
    -Scope: global. +Scope:global.
    -Type: optional. +Type:optional .
    Intent: in.
    -Specified as: an integer value. +Specified as: an integer value +psb_ovt_xhal_, psb_ovt_asov_, default: psb_ovt_xhal_ + +

    @@ -98,16 +128,16 @@ Specified as: an integer value.
    On Return
    -
    a
    -
    the matrix to be allocated. +
    desc_out
    +
    the extended communication descriptor.
    -Scope:local +Scope:local.
    -Type:required +Type:required.
    -Intent: out. +Intent: inout.
    -Specified as: a structured data of type spdatapsb_Tspmat_type. +Specified as: a structured data of type descdatapsb_desc_type.
    info
    Error code. @@ -121,47 +151,48 @@ Intent: out. An integer value; 0 means no error has been detected.
    + +

    Notes

      -
    1. On exit from this routine the sparse matrix is in the build - state. -
    2. -
    3. The descriptor may be in either the build or assembled state. +
    4. Specifying psb_ovt_xhal_ for the extype 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;
    5. -
    6. Providing a good estimate for the number of nonzeroes $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. +
    7. Specifying psb_ovt_asov_ for the extype 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.


    - next - + up - previous - contents
    - Next: psb_spins Insert - Up: Data management routines - Previous: psb_cdbldext Build -   Next: psb_spall Allocates + Up: Data management routines + Previous: psb_cdfree Frees +   Contents diff --git a/docs/html/node63.html b/docs/html/node63.html index b5987033..437e5073 100644 --- a/docs/html/node63.html +++ b/docs/html/node63.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spins -- Insert a cloud of elements into a sparse matrix - +psb_spall -- Allocates a sparse matrix + @@ -20,82 +20,56 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_spasb Sparse - Up: Data management routines - Previous: psb_spall Allocates -   Next: psb_spins Insert + Up: Data management routines + Previous: psb_cdbldext Build +   Contents

    -

    -psb_spins -- Insert a cloud of elements into a sparse - matrix +

    +psb_spall -- Allocates a sparse matrix

    -call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
    +call psb_spall(a, desc_a, info, nnz)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    -
    nz
    -
    the number of elements to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer scalar. -
    -
    ia
    -
    the row indices of the elements to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer array of size $nz$. -
    -
    ja
    -
    the column indices of the elements to be inserted. +
    desc_a
    +
    the communication descriptor.
    Scope:local.
    @@ -103,51 +77,19 @@ Type:required.
    Intent: in.
    -Specified as: an integer array of size $nz$. +Specified as: a structured data of type descdatapsb_desc_type.
    -
    val
    -
    the elements to be inserted. +
    nnz
    +
    An estimate of the number of nonzeroes in the local + part of the assembled matrix.
    -Scope:local. +Scope: global.
    -Type:required. +Type: optional.
    Intent: in.
    -Specified as: an array of size $nz$. Must be of the same type and kind -of the aspk component of the sparse matrix $a$. -
    -
    desc_a
    -
    The communication descriptor. -
    -Scope: local. -
    -Type: required. -
    -Intent: inout. -
    -Specified as: a variable of type descdatapsb_desc_type. -
    -
    local
    -
    Whether the entries in the indices vectors ia, - ja are already in local numbering. -
    -Scope:local. -
    -Type:optional. -
    -Specified as: a logical value; default: .false.. - -

    +Specified as: an integer value.

    @@ -157,27 +99,16 @@ Specified as: a logical value; default: .false..
    a
    -
    the matrix into which elements will be inserted. +
    the matrix to be allocated.
    Scope:local
    Type:required
    -Intent: inout. +Intent: out.
    Specified as: a structured data of type spdatapsb_Tspmat_type.
    -
    desc_a
    -
    The communication descriptor. -
    -Scope: local. -
    -Type: required. -
    -Intent: inout. -
    -Specified as: a variable of type descdatapsb_desc_type. -
    info
    Error code.
    @@ -190,59 +121,47 @@ Intent: out. An integer value; 0 means no error has been detected.
    - -

    Notes

      -
    1. On entry to this routine the descriptor may be in either the - build or assembled state. -
    2. -
    3. On entry to this routine the sparse matrix may be in either the - build or update state. -
    4. -
    5. 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 psb_cdins 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. -
    6. -
    7. Any coefficients from matrix rows not assigned to the calling - process are silently ignored; +
    8. On exit from this routine the sparse matrix is in the build + state.
    9. -
    10. If the descriptor is in the assembled state, then any entries in - the sparse matrix that would generate additional communication - requirements will be ignored; +
    11. The descriptor may be in either the build or assembled state.
    12. -
    13. If the matrix is in the update state, any entries in positions - that were not present in the original matrix will be ignored. +
    14. Providing a good estimate for the number of nonzeroes $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.


    - next - + up - previous - contents
    - Next: psb_spasb Sparse - Up: Data management routines - Previous: psb_spall Allocates -   Next: psb_spins Insert + Up: Data management routines + Previous: psb_cdbldext Build +   Contents diff --git a/docs/html/node64.html b/docs/html/node64.html index fa82c8aa..137a5b4c 100644 --- a/docs/html/node64.html +++ b/docs/html/node64.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spasb -- Sparse matrix assembly routine - +psb_spins -- Insert a cloud of elements into a sparse matrix + @@ -20,56 +20,57 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_spfree Frees - Up: Data management routines - Previous: psb_spins Insert -   Next: psb_spasb Sparse + Up: Data management routines + Previous: psb_spall Allocates +   Contents

    -

    -psb_spasb -- Sparse matrix assembly routine +

    +psb_spins -- Insert a cloud of elements into a sparse + matrix

    -call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
    +call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
     

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    -
    desc_a
    -
    the communication descriptor. +
    nz
    +
    the number of elements to be inserted.
    Scope:local.
    @@ -77,52 +78,76 @@ Type:required.
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: an integer scalar.
    -
    afmt
    -
    the storage format for the sparse matrix. +
    ia
    +
    the row indices of the elements to be inserted.
    -Scope: local. +Scope:local.
    -Type: optional. +Type:required.
    Intent: in.
    -Specified as: an array of characters. Defalt: 'CSR'. +Specified as: an integer array of size $nz$.
    -
    upd
    -
    Provide for updates to the matrix coefficients. +
    ja
    +
    the column indices of the elements to be inserted.
    -Scope: global. +Scope:local.
    -Type: optional. +Type:required.
    Intent: in.
    -Specified as: integer, possible values: psb_upd_srch_, psb_upd_perm_ +Specified as: an integer array of size $nz$.
    -
    dupl
    -
    How to handle duplicate coefficients. +
    val
    +
    the elements to be inserted.
    -Scope: global. +Scope:local.
    -Type: optional. +Type:required.
    Intent: in.
    -Specified as: integer, possible values: psb_dupl_ovwrt_, -psb_dupl_add_, psb_dupl_err_. +Specified as: an array of size $nz$. Must be of the same type and kind +of the aspk component of the sparse matrix $a$.
    -
    mold
    -
    The desired dynamic type for the internal matrix storage. +
    desc_a
    +
    The communication descriptor.
    -Scope: local. +Scope: local.
    -Type: optional. +Type: required.
    -Intent: in. +Intent: inout. +
    +Specified as: a variable of type descdatapsb_desc_type. +
    +
    local
    +
    Whether the entries in the indices vectors ia, + ja are already in local numbering.
    -Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat. +Scope:local. +
    +Type:optional. +
    +Specified as: a logical value; default: .false.. + +

    @@ -132,7 +157,7 @@ Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_
    a
    -
    the matrix to be assembled. +
    the matrix into which elements will be inserted.
    Scope:local
    @@ -142,6 +167,17 @@ Intent: inout.
    Specified as: a structured data of type spdatapsb_Tspmat_type.
    +
    desc_a
    +
    The communication descriptor. +
    +Scope: local. +
    +Type: required. +
    +Intent: inout. +
    +Specified as: a variable of type descdatapsb_desc_type. +
    info
    Error code.
    @@ -159,51 +195,54 @@ An integer value; 0 means no error has been detected. Notes
      -
    1. On entry to this routine the descriptor must be in the - assembled state, i.e. psb_cdasb must already have been called. +
    2. On entry to this routine the descriptor may be in either the + build or assembled state.
    3. -
    4. The sparse matrix may be in either the build or update state; +
    5. On entry to this routine the sparse matrix may be in either the + build or update state.
    6. -
    7. 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; +
    8. 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 psb_cdins 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.
    9. -
    10. If the update choice is psb_upd_perm_, then subsequent - calls to psb_spins 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; +
    11. Any coefficients from matrix rows not assigned to the calling + process are silently ignored;
    12. -
    13. The output storage format need not be the same on all - processes; +
    14. If the descriptor is in the assembled state, then any entries in + the sparse matrix that would generate additional communication + requirements will be ignored;
    15. -
    16. On exit from this routine the matrix is in the assembled state, - and thus is suitable for the computational routines. +
    17. If the matrix is in the update state, any entries in positions + that were not present in the original matrix will be ignored.


    - next - + up - previous - contents
    - Next: psb_spfree Frees - Up: Data management routines - Previous: psb_spins Insert -   Next: psb_spasb Sparse + Up: Data management routines + Previous: psb_spall Allocates +   Contents diff --git a/docs/html/node65.html b/docs/html/node65.html index 760bc475..206eeea6 100644 --- a/docs/html/node65.html +++ b/docs/html/node65.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_spfree -- Frees a sparse matrix - +psb_spasb -- Sparse matrix assembly routine + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_sprn Reinit - Up: Data management routines - Previous: psb_spasb Sparse -   Next: psb_spfree Frees + Up: Data management routines + Previous: psb_spins Insert +   Contents

    -

    -psb_spfree -- Frees a sparse matrix +

    +psb_spasb -- Sparse matrix assembly routine

    -call psb_spfree(a, desc_a, info)
    +call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
     

    @@ -68,17 +68,6 @@ call psb_spfree(a, desc_a, info)

    On Entry
    -
    a
    -
    the matrix to be freed. -
    -Scope:local -
    -Type:required -
    -Intent: inout. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    desc_a
    the communication descriptor.
    @@ -90,6 +79,51 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    +
    afmt
    +
    the storage format for the sparse matrix. +
    +Scope: local. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an array of characters. Defalt: 'CSR'. +
    +
    upd
    +
    Provide for updates to the matrix coefficients. +
    +Scope: global. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: integer, possible values: psb_upd_srch_, psb_upd_perm_ +
    +
    dupl
    +
    How to handle duplicate coefficients. +
    +Scope: global. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: integer, possible values: psb_dupl_ovwrt_, +psb_dupl_add_, psb_dupl_err_. +
    +
    mold
    +
    The desired dynamic type for the internal matrix storage. +
    +Scope: local. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat. +

    @@ -97,6 +131,17 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    +
    a
    +
    the matrix to be assembled. +
    +Scope:local +
    +Type:required +
    +Intent: inout. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    info
    Error code.
    @@ -111,7 +156,56 @@ An integer value; 0 means no error has been detected.

    -


    +Notes + +
      +
    1. On entry to this routine the descriptor must be in the + assembled state, i.e. psb_cdasb must already have been called. +
    2. +
    3. The sparse matrix may be in either the build or update state; +
    4. +
    5. 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; +
    6. +
    7. If the update choice is psb_upd_perm_, then subsequent + calls to psb_spins 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; +
    8. +
    9. The output storage format need not be the same on all + processes; +
    10. +
    11. On exit from this routine the matrix is in the assembled state, + and thus is suitable for the computational routines. +
    12. +
    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: psb_spfree Frees + Up: Data management routines + Previous: psb_spins Insert +   Contents + diff --git a/docs/html/node66.html b/docs/html/node66.html index a9b43af6..16b4a9f3 100644 --- a/docs/html/node66.html +++ b/docs/html/node66.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_sprn -- Reinit sparse matrix structure for psblas routines. - +psb_spfree -- Frees a sparse matrix + @@ -20,45 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_geall Allocates - Up: Data management routines - Previous: psb_spfree Frees -   Next: psb_sprn Reinit + Up: Data management routines + Previous: psb_spasb Sparse +   Contents

    -

    -psb_sprn -- Reinit sparse matrix structure for psblas - routines. +

    +psb_spfree -- Frees a sparse matrix

    -call psb_sprn(a, decsc_a, info, clear)
    +call psb_spfree(a, desc_a, info)
     

    @@ -70,7 +69,7 @@ call psb_sprn(a, decsc_a, info, clear)

    a
    -
    the matrix to be reinitialized. +
    the matrix to be freed.
    Scope:local
    @@ -91,17 +90,6 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    -
    clear
    -
    Choose whether to zero out matrix coefficients -
    -Scope:local. -
    -Type:optional. -
    -Intent: in. -
    -Default: true. -

    @@ -121,13 +109,6 @@ Intent: out. An integer value; 0 means no error has been detected. -Notes - -

      -
    1. On exit from this routine the sparse matrix is in the update - state. -
    2. -



    diff --git a/docs/html/node67.html b/docs/html/node67.html index 39cfd4ec..36d0c035 100644 --- a/docs/html/node67.html +++ b/docs/html/node67.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_geall -- Allocates a dense matrix - +psb_sprn -- Reinit sparse matrix structure for psblas routines. + @@ -20,44 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_geins Dense - Up: Data management routines - Previous: psb_sprn Reinit -   Next: psb_geall Allocates + Up: Data management routines + Previous: psb_spfree Frees +   Contents

    -

    -psb_geall -- Allocates a dense matrix +

    +psb_sprn -- Reinit sparse matrix structure for psblas + routines.

    -call psb_geall(x, desc_a, info, n, lb)
    +call psb_sprn(a, decsc_a, info, clear)
     

    @@ -68,52 +69,38 @@ call psb_geall(x, desc_a, info, n, lb)

    On Entry
    -
    desc_a
    -
    The communication descriptor. +
    a
    +
    the matrix to be reinitialized.
    -Scope: local +Scope:local
    -Type: required +Type:required
    -Intent: in. +Intent: inout.
    -Specified as: a variable of type descdatapsb_desc_type. -
    -
    n
    -
    The number of columns of the dense matrix to be allocated. +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    desc_a
    +
    the communication descriptor.
    -Scope: local +Scope:local.
    -Type: optional +Type:required.
    Intent: in.
    -Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a -rank-1 array. +Specified as: a structured data of type descdatapsb_desc_type.
    -
    lb
    -
    The lower bound for the column index range of the dense matrix to be allocated. +
    clear
    +
    Choose whether to zero out matrix coefficients
    -Scope: local +Scope:local.
    -Type: optional +Type:optional.
    Intent: in.
    -Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a -rank-1 array. +Default: true.
    @@ -122,18 +109,6 @@ rank-1 array.
    On Return
    -
    x
    -
    The dense matrix to be allocated. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -Specified as: a rank one or two array with the ALLOCATABLE attribute -or an object of type vdatapsb_T_vect_type, of type real, complex or integer. -
    info
    Error code.
    @@ -146,32 +121,16 @@ Intent: out. An integer value; 0 means no error has been detected.
    +Notes + +
      +
    1. On exit from this routine the sparse matrix is in the update + state. +
    2. +

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_geins Dense - Up: Data management routines - Previous: psb_sprn Reinit -   Contents - +

    diff --git a/docs/html/node68.html b/docs/html/node68.html index e6301c4a..e5ed9c68 100644 --- a/docs/html/node68.html +++ b/docs/html/node68.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_geins -- Dense matrix insertion routine - +psb_geall -- Allocates a dense matrix + @@ -20,135 +20,100 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_geasb Assembly - Up: Data management routines - Previous: psb_geall Allocates -   Next: psb_geins Dense + Up: Data management routines + Previous: psb_sprn Reinit +   Contents

    -

    -psb_geins -- Dense matrix insertion routine +

    +psb_geall -- Allocates a dense matrix

    -call psb_geins(m, irw, val, x, desc_a, info [,dupl,local])
    +call psb_geall(x, desc_a, info, n, lb)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    -
    m
    -
    Number of rows in $val$ to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer value. -
    -
    irw
    -
    Indices of the rows to be inserted. Specifically, row $i$ - of $val$ will be inserted into the local row corresponding to the - global row index $irw(i)$. -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer array. -
    -
    val
    -
    the dense submatrix to be inserted. +
    desc_a
    +
    The communication descriptor.
    -Scope:local. +Scope: local
    -Type:required. +Type: required
    Intent: in.
    -Specified as: a rank 1 or 2 array. -Specified as: an integer value. -
    -
    desc_a
    -
    the communication descriptor. +Specified as: a variable of type descdatapsb_desc_type. +
    +
    n
    +
    The number of columns of the dense matrix to be allocated.
    -Scope:local. +Scope: local
    -Type:required. +Type: optional
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a +rank-1 array.
    -
    dupl
    -
    How to handle duplicate coefficients. +
    lb
    +
    The lower bound for the column index range of the dense matrix to be allocated.
    -Scope: global. +Scope: local
    -Type: optional. +Type: optional
    Intent: in.
    -Specified as: integer, possible values: psb_dupl_ovwrt_, -psb_dupl_add_. -
    -
    local
    -
    Whether the entries in the index vector irw, - are already in local numbering. -
    -Scope:local. -
    -Type:optional. -
    -Specified as: a logical value; default: .false.. - -

    +Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a +rank-1 array.

    @@ -158,16 +123,16 @@ Specified as: a logical value; default: .false..
    x
    -
    the output dense matrix. +
    The dense matrix to be allocated.
    Scope: local
    Type: required
    -Intent: inout. +Intent: out.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type, of -type real, complex or integer. +Specified as: a rank one or two array with the ALLOCATABLE attribute +or an object of type vdatapsb_T_vect_type, of type real, complex or integer.
    info
    Error code. @@ -182,40 +147,29 @@ An integer value; 0 means no error has been detected.
    -

    -Notes - -

      -
    1. Dense vectors/matrices do not have an associated state; -
    2. -
    3. Duplicate entries are either overwritten or added, there is no - provision for raising an error condition. -
    4. -
    -


    - next - + up - previous - contents
    - Next: psb_geasb Assembly - Up: Data management routines - Previous: psb_geall Allocates -   Next: psb_geins Dense + Up: Data management routines + Previous: psb_sprn Reinit +   Contents diff --git a/docs/html/node69.html b/docs/html/node69.html index 50e6802d..67309211 100644 --- a/docs/html/node69.html +++ b/docs/html/node69.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_geasb -- Assembly a dense matrix - +psb_geins -- Dense matrix insertion routine + @@ -20,79 +20,135 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_gefree Frees - Up: Data management routines - Previous: psb_geins Dense -   Next: psb_geasb Assembly + Up: Data management routines + Previous: psb_geall Allocates +   Contents

    -

    -psb_geasb -- Assembly a dense matrix +

    +psb_geins -- Dense matrix insertion routine

    -call psb_geasb(x, desc_a, info, mold)
    +call psb_geins(m, irw, val, x, desc_a, info [,dupl,local])
     

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    +
    m
    +
    Number of rows in $val$ to be inserted. +
    +Scope:local. +
    +Type:required. +
    +Intent: in. +
    +Specified as: an integer value. +
    +
    irw
    +
    Indices of the rows to be inserted. Specifically, row $i$ + of $val$ will be inserted into the local row corresponding to the + global row index $irw(i)$. +Scope:local. +
    +Type:required. +
    +Intent: in. +
    +Specified as: an integer array. +
    +
    val
    +
    the dense submatrix to be inserted. +
    +Scope:local. +
    +Type:required. +
    +Intent: in. +
    +Specified as: a rank 1 or 2 array. +Specified as: an integer value. +
    desc_a
    -
    The communication descriptor. +
    the communication descriptor.
    -Scope: local +Scope:local.
    -Type: required +Type:required.
    Intent: in.
    -Specified as: a variable of type descdatapsb_desc_type. -
    -
    mold
    -
    The desired dynamic type for the internal vector storage. +Specified as: a structured data of type descdatapsb_desc_type. +
    +
    dupl
    +
    How to handle duplicate coefficients.
    -Scope: local. +Scope: global.
    Type: optional.
    Intent: in.
    -Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type; this is -only allowed when $x$ is of type vdatapsb_T_vect_type. +Specified as: integer, possible values: psb_dupl_ovwrt_, +psb_dupl_add_. +
    +
    local
    +
    Whether the entries in the index vector irw, + are already in local numbering. +
    +Scope:local. +
    +Type:optional. +
    +Specified as: a logical value; default: .false.. + +

    @@ -102,7 +158,7 @@ only allowed when
    x
    -
    The dense matrix to be assembled. +
    the output dense matrix.
    Scope: local
    @@ -110,8 +166,8 @@ Type: required
    Intent: inout.
    -Specified as: a rank one or two array with the ALLOCATABLE or an -object of type vdatapsb_T_vect_type, of type real, complex or integer. +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type, of +type real, complex or integer.
    info
    Error code. @@ -125,7 +181,43 @@ Intent: out. An integer value; 0 means no error has been detected.
    -

    + +

    +Notes + +

      +
    1. Dense vectors/matrices do not have an associated state; +
    2. +
    3. Duplicate entries are either overwritten or added, there is no + provision for raising an error condition. +
    4. +
    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: psb_geasb Assembly + Up: Data management routines + Previous: psb_geall Allocates +   Contents + diff --git a/docs/html/node7.html b/docs/html/node7.html index 102b65ec..26c6621d 100644 --- a/docs/html/node7.html +++ b/docs/html/node7.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Programming model - +User-defined index mappings + @@ -19,105 +19,93 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: Data Structures and Classes - Up: General overview - Previous: Next: Programming model + Up: Application structure + Previous: Application structure -   Contents

    -

    -Programming model -

    +

    +User-defined index mappings +

    -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. 2.3: -

    -Because of this structure, many subroutines coordinate their action -across the various processes, thus providing an implicit -synchronization point, and therefore must 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. +

      +
    1. The set of indices owned locally must be mapped to the set + +$1\dots n_{\hbox{row}_i}$; +
    2. +
    3. The set of halo points must be mapped to the set + +$n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$; +
    4. +
    +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: -

    -However there are many cases where no synchronization, and indeed no -communication among processes, is implied; for instance, all the routines in -sec. [*] 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. +

      +
    1. Initialize index space with + psb_cdall(ictx,desc,info,vl=vl,lidx=lidx) passing the vectors + vl(:) containing the set of global indices owned by the + current process and lidx(:) containing the corresponding + local indices; +
    2. +
    3. Add the halo points ja(:) and their associated local + indices lidx(:) with a(some) call(s) to + psb_cdins(nz,ja,desc,info,lidx=lidx); +
    4. +
    5. Assemble the descriptor with psb_cdasb; +
    6. +
    7. Build the sparse matrices and vectors, optionally making use in + psb_spins and psb_geins of the local argument + specifying that the indices in ia, ja and irw, + respectively, are already local indices. +
    8. +

    -Throughout this user's guide each subroutine will be clearly indicated -as: -

    -
    Synchronous:
    -
    must be called simultaneously by all the - processes in the relevant communication context; -
    -
    Asynchronous:
    -
    may be called in a totally independent manner. -
    -
    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: Data Structures and Classes - Up: General overview - Previous: Application structure -   Contents - +

    diff --git a/docs/html/node70.html b/docs/html/node70.html index 381d256c..9f1059c5 100644 --- a/docs/html/node70.html +++ b/docs/html/node70.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_gefree -- Frees a dense matrix - +psb_geasb -- Assembly a dense matrix + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_gelp Applies - Up: Data management routines - Previous: psb_geasb Assembly -   Next: psb_gefree Frees + Up: Data management routines + Previous: psb_geins Dense +   Contents

    -

    -psb_gefree -- Frees a dense matrix +

    +psb_geasb -- Assembly a dense matrix

    -call psb_gefree(x, desc_a, info)
    +call psb_geasb(x, desc_a, info, mold)
     

    @@ -68,21 +68,6 @@ call psb_gefree(x, desc_a, info)

    On Entry
    -
    x
    -
    The dense matrix to - be freed. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one or two array with the ALLOCATABLE or an -object of type vdatapsb_T_vect_type, of type real, complex or integer. -
    -

    -

    desc_a
    The communication descriptor.
    @@ -94,6 +79,21 @@ Intent: in.
    Specified as: a variable of type descdatapsb_desc_type.
    +
    mold
    +
    The desired dynamic type for the internal vector storage. +
    +Scope: local. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type; this is +only allowed when $x$ is of type vdatapsb_T_vect_type. +

    @@ -101,6 +101,18 @@ Specified as: a variable of type descdatapsb_desc_type.

    On Return
    +
    x
    +
    The dense matrix to be assembled. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one or two array with the ALLOCATABLE or an +object of type vdatapsb_T_vect_type, of type real, complex or integer. +
    info
    Error code.
    @@ -113,8 +125,6 @@ Intent: out. An integer value; 0 means no error has been detected.
    - -



    diff --git a/docs/html/node71.html b/docs/html/node71.html index 3137eea2..eff0bcc2 100644 --- a/docs/html/node71.html +++ b/docs/html/node71.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_gelp -- Applies a left permutation to a dense matrix - +psb_gefree -- Frees a dense matrix + @@ -20,99 +20,79 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_glob_to_loc Global - Up: Data management routines - Previous: psb_gefree Frees -   Next: psb_gelp Applies + Up: Data management routines + Previous: psb_geasb Assembly +   Contents

    -

    -psb_gelp -- Applies a left permutation to a dense - matrix +

    +psb_gefree -- Frees a dense matrix

    -call psb_gelp(trans, iperm, x, info)
    +call psb_gefree(x, desc_a, info)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    -
    trans
    -
    A character that specifies whether to permute $A$ or $A^T$. +
    x
    +
    The dense matrix to + be freed.
    Scope: local
    Type: required
    -Intent: in. -
    -Specified as: a single character with value 'N' for $A$ or 'T' for $A^T$. -
    -
    iperm
    -
    An integer array containing permutation information. -
    -Scope: local -
    -Type: required +Intent: inout.
    -Intent: in. +Specified as: a rank one or two array with the ALLOCATABLE or an +object of type vdatapsb_T_vect_type, of type real, complex or integer.
    -Specified as: an integer one-dimensional array. -
    -
    x
    -
    The dense matrix to be permuted. +

    +

    +
    desc_a
    +
    The communication descriptor.
    Scope: local
    Type: required
    -Intent: inout. +Intent: in.
    -Specified as: a one or two dimensional array. +Specified as: a variable of type descdatapsb_desc_type.
    diff --git a/docs/html/node72.html b/docs/html/node72.html index 72b56d89..1b733761 100644 --- a/docs/html/node72.html +++ b/docs/html/node72.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_glob_to_loc -- Global to local indices convertion - +psb_gelp -- Applies a left permutation to a dense matrix + @@ -20,46 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_loc_to_glob Local - Up: Data management routines - Previous: psb_gelp Applies -   Next: psb_glob_to_loc Global + Up: Data management routines + Previous: psb_gefree Frees +   Contents

    -

    -psb_glob_to_loc -- Global to local indices - convertion +

    +psb_gelp -- Applies a left permutation to a dense + matrix

    -call psb_glob_to_loc(x, y, desc_a, info, iact,owned)
    -call psb_glob_to_loc(x, desc_a, info, iact,owned)
    +call psb_gelp(trans, iperm, x, info)
     

    @@ -70,51 +69,51 @@ call psb_glob_to_loc(x, desc_a, info, iact,owned)

    On Entry
    -
    x
    -
    An integer vector of indices to be converted. +
    trans
    +
    A character that specifies whether to permute $A$ or $A^T$.
    Scope: local
    Type: required
    -Intent: in, inout. +Intent: in.
    -Specified as: a rank one integer array. +Specified as: a single character with value 'N' for $A$ or 'T' for $A^T$.
    -
    desc_a
    -
    the communication descriptor. +
    iperm
    +
    An integer array containing permutation information.
    -Scope:local. +Scope: local
    -Type:required. +Type: required
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    iact
    -
    specifies action to be taken in case of range errors. -Scope: global -
    -Type: optional -
    -Intent: in. +Specified as: an integer one-dimensional array. +
    +
    x
    +
    The dense matrix to be permuted.
    -Specified as: a character variable Ignore, Warning or -Abort, default Ignore. -
    -
    owned
    -
    Specfies valid range of input -Scope: global +Scope: local
    -Type: optional +Type: required
    -Intent: in. +Intent: inout.
    -If true, then only indices strictly owned by the current process are -considered valid, if false then halo indices are also -accepted. Default: false. -
    +Specified as: a one or two dimensional array. +

    @@ -122,44 +121,6 @@ accepted. Default: false.

    On Return
    -
    x
    -
    If $y$ is not present, - then $x$ is overwritten with the translated integer indices. -Scope: global -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one integer array. -
    -
    y
    -
    If $y$ is present, - then $y$ is overwritten with the translated integer indices, and $x$ - is left unchanged. -Scope: global -
    -Type: optional -
    -Intent: out. -
    -Specified as: a rank one integer array. -
    info
    Error code.
    @@ -174,42 +135,7 @@ An integer value; 0 means no error has been detected.

    -Notes - -

      -
    1. If an input index is out of range, then the corresponding output - index is set to a negative number; -
    2. -
    3. The default Ignore means that the negative output is the - only action taken on an out-of-range input. -
    4. -
    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_loc_to_glob Local - Up: Data management routines - Previous: psb_gelp Applies -   Contents - +

    diff --git a/docs/html/node73.html b/docs/html/node73.html index 85468a2d..07c57997 100644 --- a/docs/html/node73.html +++ b/docs/html/node73.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_loc_to_glob -- Local to global indices conversion - +psb_glob_to_loc -- Global to local indices convertion + @@ -20,46 +20,46 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_is_owned - Up: Data management routines - Previous: psb_glob_to_loc Global -   Next: psb_loc_to_glob Local + Up: Data management routines + Previous: psb_gelp Applies +   Contents

    -

    -psb_loc_to_glob -- Local to global indices - conversion +

    +psb_glob_to_loc -- Global to local indices + convertion

    -call psb_loc_to_glob(x, y, desc_a, info, iact)
    -call psb_loc_to_glob(x, desc_a, info, iact)
    +call psb_glob_to_loc(x, y, desc_a, info, iact,owned)
    +call psb_glob_to_loc(x, desc_a, info, iact,owned)
     

    @@ -103,6 +103,18 @@ Intent: in. Specified as: a character variable Ignore, Warning or Abort, default Ignore.

    +
    owned
    +
    Specfies valid range of input +Scope: global +
    +Type: optional +
    +Intent: in. +
    +If true, then only indices strictly owned by the current process are +considered valid, if false then halo indices are also +accepted. Default: false. +

    @@ -131,7 +143,7 @@ Specified as: a rank one integer array.

    If $y$ is not present, + ALT="$y$"> is present, then +

    +Notes + +

      +
    1. If an input index is out of range, then the corresponding output + index is set to a negative number; +
    2. +
    3. The default Ignore means that the negative output is the + only action taken on an out-of-range input. +
    4. +
    +


    - next - + up - previous - contents
    - Next: psb_is_owned - Up: Data management routines - Previous: psb_glob_to_loc Global -   Next: psb_loc_to_glob Local + Up: Data management routines + Previous: psb_gelp Applies +   Contents diff --git a/docs/html/node74.html b/docs/html/node74.html index cdd37c8d..2c850d7e 100644 --- a/docs/html/node74.html +++ b/docs/html/node74.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_is_owned - +psb_loc_to_glob -- Local to global indices conversion + @@ -20,44 +20,46 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_owned_index - Up: Data management routines - Previous: psb_loc_to_glob Local -   Next: psb_is_owned + Up: Data management routines + Previous: psb_glob_to_loc Global +   Contents

    -

    -psb_is_owned +

    +psb_loc_to_glob -- Local to global indices + conversion

    -call psb_is_owned(x, desc_a)
    +call psb_loc_to_glob(x, y, desc_a, info, iact)
    +call psb_loc_to_glob(x, desc_a, info, iact)
     

    @@ -69,15 +71,15 @@ call psb_is_owned(x, desc_a)

    x
    -
    Integer index. +
    An integer vector of indices to be converted.
    Scope: local
    Type: required
    -Intent: in. +Intent: in, inout.
    -Specified as: a scalar integer. +Specified as: a rank one integer array.
    desc_a
    the communication descriptor. @@ -90,6 +92,17 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    +
    iact
    +
    specifies action to be taken in case of range errors. +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Specified as: a character variable Ignore, Warning or +Abort, default Ignore. +

    @@ -97,32 +110,82 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    -
    Function value
    -
    A logical mask which is true if - x +
    If $y$ is not present, + then $x$ is owned by the current process -Scope: local + ALT="$x$"> is overwritten with the translated integer indices. +Scope: global
    Type: required
    +Intent: inout. +
    +Specified as: a rank one integer array. +
    +
    y
    +
    If $y$ is not present, + then $y$ is overwritten with the translated integer indices, and $x$ + is left unchanged. +Scope: global +
    +Type: optional +
    Intent: out. -
    +
    +Specified as: a rank one integer array. + +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +

    -Notes - -

      -
    1. This routine returns a .true. value for an index - that is strictly owned by the current process, excluding the halo - indices -
    2. -
    - -

    -


    +
    + + +next + +up + +previous + +contents +
    + Next: psb_is_owned + Up: Data management routines + Previous: psb_glob_to_loc Global +   Contents + diff --git a/docs/html/node75.html b/docs/html/node75.html index d09f8315..07a37400 100644 --- a/docs/html/node75.html +++ b/docs/html/node75.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_owned_index - +psb_is_owned + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_is_local - Up: Data management routines - Previous: psb_is_owned -   Next: psb_owned_index + Up: Data management routines + Previous: psb_loc_to_glob Local +   Contents

    -

    -psb_owned_index +

    +psb_is_owned

    -call psb_owned_index(y, x, desc_a, info)
    +call psb_is_owned(x, desc_a)
     

    @@ -69,15 +69,15 @@ call psb_owned_index(y, x, desc_a, info)

    x
    -
    Integer indices. +
    Integer index.
    Scope: local
    Type: required
    -Intent: in, inout. +Intent: in.
    -Specified as: a scalar or a rank one integer array. +Specified as: a scalar integer.
    desc_a
    the communication descriptor. @@ -90,17 +90,6 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    -
    iact
    -
    specifies action to be taken in case of range errors. -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Specified as: a character variable Ignore, Warning or -Abort, default Ignore. -

    @@ -108,39 +97,26 @@ Specified as: a character variable Ignore, Warning or

    On Return
    -
    y
    -
    A logical mask which is true for all corresponding entries of +
    Function value
    +
    A logical mask which is true if $x$ that are owned by the current process + ALT="$x$"> is owned by the current process Scope: local
    Type: required
    Intent: out. -
    -Specified as: a scalar or rank one logical array. -
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -
    +

    Notes

      -
    1. This routine returns a .true. value for those indices - that are strictly owned by the current process, excluding the halo +
    2. This routine returns a .true. value for an index + that is strictly owned by the current process, excluding the halo indices
    diff --git a/docs/html/node76.html b/docs/html/node76.html index fd9be5d5..334a9307 100644 --- a/docs/html/node76.html +++ b/docs/html/node76.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_is_local - +psb_owned_index + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_local_index - Up: Data management routines - Previous: psb_owned_index -   Next: psb_is_local + Up: Data management routines + Previous: psb_is_owned +   Contents

    -

    -psb_is_local +

    +psb_owned_index

    -call psb_is_local(x, desc_a)
    +call psb_owned_index(y, x, desc_a, info)
     

    @@ -69,15 +69,15 @@ call psb_is_local(x, desc_a)

    x
    -
    Integer index. +
    Integer indices.
    Scope: local
    Type: required
    -Intent: in. +Intent: in, inout.
    -Specified as: a scalar integer. +Specified as: a scalar or a rank one integer array.
    desc_a
    the communication descriptor. @@ -90,6 +90,17 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    +
    iact
    +
    specifies action to be taken in case of range errors. +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Specified as: a character variable Ignore, Warning or +Abort, default Ignore. +

    @@ -97,26 +108,39 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    -
    Function value
    -
    A logical mask which is true if +
    y
    +
    A logical mask which is true for all corresponding entries of $x$ is local to the current process + ALT="$x$"> that are owned by the current process Scope: local
    Type: required
    Intent: out. -
    +
    +Specified as: a scalar or rank one logical array. + +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +

    Notes

      -
    1. This routine returns a .true. value for an index - that is local to the current process, including the halo +
    2. This routine returns a .true. value for those indices + that are strictly owned by the current process, excluding the halo indices
    diff --git a/docs/html/node77.html b/docs/html/node77.html index 29643d9b..cdaa6257 100644 --- a/docs/html/node77.html +++ b/docs/html/node77.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_local_index - +psb_is_local + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_get_boundary Extract - Up: Data management routines - Previous: psb_is_local -   Next: psb_local_index + Up: Data management routines + Previous: psb_owned_index +   Contents

    -

    -psb_local_index +

    +psb_is_local

    -call psb_local_index(y, x, desc_a, info)
    +call psb_is_local(x, desc_a)
     

    @@ -69,15 +69,15 @@ call psb_local_index(y, x, desc_a, info)

    x
    -
    Integer indices. +
    Integer index.
    Scope: local
    Type: required
    -Intent: in, inout. +Intent: in.
    -Specified as: a scalar or a rank one integer array. +Specified as: a scalar integer.
    desc_a
    the communication descriptor. @@ -90,17 +90,6 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    -
    iact
    -
    specifies action to be taken in case of range errors. -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Specified as: a character variable Ignore, Warning or -Abort, default Ignore. -

    @@ -108,40 +97,27 @@ Specified as: a character variable Ignore, Warning or

    On Return
    -
    y
    -
    A logical mask which is true for all corresponding entries of +
    Function value
    +
    A logical mask which is true if $x$ that are local to the current process + ALT="$x$"> is local to the current process Scope: local
    Type: required
    Intent: out. -
    -Specified as: a scalar or rank one logical array. -
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -
    +

    Notes

      -
    1. This routine returns a .true. value for those indices - that are local to the current process, including the halo - indices. +
    2. This routine returns a .true. value for an index + that is local to the current process, including the halo + indices
    diff --git a/docs/html/node78.html b/docs/html/node78.html index 1a52d7e2..41a42cd1 100644 --- a/docs/html/node78.html +++ b/docs/html/node78.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_get_boundary -- Extract list of boundary elements - +psb_local_index + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_get_overlap Extract - Up: Data management routines - Previous: psb_local_index -   Next: psb_get_boundary Extract + Up: Data management routines + Previous: psb_is_local +   Contents

    -

    -psb_get_boundary -- Extract list of boundary elements +

    +psb_local_index

    -call psb_get_boundary(bndel, desc, info)
    +call psb_local_index(y, x, desc_a, info)
     

    @@ -68,7 +68,18 @@ call psb_get_boundary(bndel, desc, info)

    On Entry
    -
    desc
    +
    x
    +
    Integer indices. +
    +Scope: local +
    +Type: required +
    +Intent: in, inout. +
    +Specified as: a scalar or a rank one integer array. +
    +
    desc_a
    the communication descriptor.
    Scope:local. @@ -79,6 +90,17 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    +
    iact
    +
    specifies action to be taken in case of range errors. +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Specified as: a character variable Ignore, Warning or +Abort, default Ignore. +

    @@ -86,19 +108,20 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    -
    bndel
    -
    The list of boundary elements on the calling process, in - local numbering. -
    +
    y
    +
    A logical mask which is true for all corresponding entries of + $x$ that are local to the current process Scope: local
    Type: required
    Intent: out.
    -Specified as: a rank one array with the ALLOCATABLE -attribute, of type integer. -
    +Specified as: a scalar or rank one logical array. +
    info
    Error code.
    @@ -116,12 +139,9 @@ An integer value; 0 means no error has been detected. Notes
      -
    1. If there are no boundary elements (i.e., if the local part of - the connectivity graph is self-contained) the output vector is set - to the ``not allocated'' state. -
    2. -
    3. Otherwise the size of bndel will be exactly equal to the - number of boundary elements. +
    4. This routine returns a .true. value for those indices + that are local to the current process, including the halo + indices.
    diff --git a/docs/html/node79.html b/docs/html/node79.html index 2fc320ef..9c52e269 100644 --- a/docs/html/node79.html +++ b/docs/html/node79.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_get_overlap -- Extract list of overlap elements - +psb_get_boundary -- Extract list of boundary elements + @@ -20,44 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_sp_getrow Extract - Up: Data management routines - Previous: psb_get_boundary Extract -   Next: psb_get_overlap Extract + Up: Data management routines + Previous: psb_local_index +   Contents

    -

    -psb_get_overlap -- Extract list of overlap elements +

    +psb_get_boundary -- Extract list of boundary elements

    -call psb_get_overlap(ovrel, desc, info)
    +call psb_get_boundary(bndel, desc, info)
     

    @@ -86,8 +86,8 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    -
    ovrel
    -
    The list of overlap elements on the calling process, in +
    bndel
    +
    The list of boundary elements on the calling process, in local numbering.
    Scope: local @@ -116,11 +116,12 @@ An integer value; 0 means no error has been detected. Notes
      -
    1. If there are no overlap elements the output vector is set - to the ``not allocated'' state. +
    2. If there are no boundary elements (i.e., if the local part of + the connectivity graph is self-contained) the output vector is set + to the ``not allocated'' state.
    3. -
    4. Otherwise the size of ovrel will be exactly equal to the - number of overlap elements. +
    5. Otherwise the size of bndel will be exactly equal to the + number of boundary elements.
    diff --git a/docs/html/node8.html b/docs/html/node8.html index 0bf20630..5ac1d581 100644 --- a/docs/html/node8.html +++ b/docs/html/node8.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Data Structures and Classes - +Programming model + @@ -18,198 +18,104 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: Descriptor data structure - Up: userhtml - Previous: Programming model -   Next: Data Structures and Classes + Up: General overview + Previous: User-defined index mappings +   Contents

    -

    - -
    -Data Structures and Classes -

    +

    +Programming model +

    + +

    +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.

    -In this chapter we illustrate the data structures used for definition of -routines interfaces. They include data structures for sparse matrices, -communication descriptors and preconditioners. +Because of this structure, many subroutines coordinate their action +across the various processes, thus providing an implicit +synchronization point, and therefore must 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. +

    -All the data types and the basic subroutine interfaces related to -descriptors and sparse matrices are defined in -the module psb_base_mod; this will have to be included by every -user subroutine that makes use of the library. The preconditioners are -defined in the module psb_prec_mod +However there are many cases where no synchronization, and indeed no +communication among processes, is implied; for instance, all the routines in +sec. [*] 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.

    -Integer, real and complex data types are parametrized with a kind type -defined in the library as follows: +Throughout this user's guide each subroutine will be clearly indicated +as:

    -
    psb_spk_
    -
    Kind parameter for short precision real and complex - data; corresponds to a REAL declaration and is - normally 4 bytes; -
    -
    psb_dpk_
    -
    Kind parameter for long precision real and complex - data; corresponds to a DOUBLE PRECISION declaration and is - normally 8 bytes; -
    -
    psb_ipk_
    -
    Kind parameter for integer data; - with default build options this is a 4 bytes integer, but there is - (highly) experimental support for 8-bytes integers; +
    Synchronous:
    +
    must be called simultaneously by all the + processes in the relevant communication context;
    -
    psb_mpik_
    -
    Kind parameter for 4-bytes integer data, as is - always used by MPI; -
    -
    psb_long_int_k_
    -
    Kind parameter for long (8 bytes) integers, - which are always used by the sizeof methods. +
    Asynchronous:
    +
    may be called in a totally independent manner.
    -Together with the classes attributes we also discuss their -methods. Most methods detailed here only act on the local variable, -i.e. their action is purely local and asynchronous unless otherwise -stated. -The list of methods here is not completely exhaustive; many methods, -especially those that alter the contents of the various objects, are -usually not needed by the end-user, and therefore are described in the -developer's documentation.

    -


    - -Subsections - - -
    - next - + up - previous - contents
    - Next: Descriptor data structure - Up: userhtml - Previous: Programming model -   Next: Data Structures and Classes + Up: General overview + Previous: User-defined index mappings +   Contents diff --git a/docs/html/node80.html b/docs/html/node80.html index 7febbf48..73d19447 100644 --- a/docs/html/node80.html +++ b/docs/html/node80.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_sp_getrow -- Extract row(s) from a sparse matrix - +psb_get_overlap -- Extract list of overlap elements + @@ -20,45 +20,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_sizeof Memory - Up: Data management routines - Previous: psb_get_overlap Extract -   Next: psb_sp_getrow Extract + Up: Data management routines + Previous: psb_get_boundary Extract +   Contents

    -

    -psb_sp_getrow -- Extract row(s) from a sparse matrix +

    +psb_get_overlap -- Extract list of overlap elements

    -call psb_sp_getrow(row, a, nz, ia, ja, val, info, &
    -              & append, nzin, lrw)
    +call psb_get_overlap(ovrel, desc, info)
     

    @@ -69,75 +68,16 @@ call psb_sp_getrow(row, a, nz, ia, ja, val, info, &

    On Entry
    -
    row
    -
    The (first) row to be extracted. +
    desc
    +
    the communication descriptor.
    -Scope:local -
    -Type:required -
    -Intent: in. -
    -Specified as: an integer $>0$. -
    -
    a
    -
    the matrix from which to get rows. -
    -Scope:local -
    -Type:required -
    -Intent: in. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    append
    -
    Whether to append or overwrite existing output. -
    -Scope:local -
    -Type:optional -
    -Intent: in. -
    -Specified as: a logical value default: false (overwrite). -
    -
    nzin
    -
    Input size to be appended to. -
    -Scope:local -
    -Type:optional -
    -Intent: in. -
    -Specified as: an integer $>0$. When append is true, specifies how many -entries in the output vectors are already filled. -
    -
    lrw
    -
    The last row to be extracted. -
    -Scope:local +Scope:local.
    -Type:optional +Type:required.
    Intent: in.
    -Specified as: an integer $>0$, default: $row$. - -

    +Specified as: a structured data of type descdatapsb_desc_type.

    @@ -146,50 +86,19 @@ Specified as: an integer On Return
    -
    nz
    -
    the number of elements returned by this call. +
    ovrel
    +
    The list of overlap elements on the calling process, in + local numbering.
    -Scope:local. +Scope: local
    -Type:required. +Type: required
    Intent: out.
    -Returned as: an integer scalar. -
    -
    ia
    -
    the row indices. -
    -Scope:local. -
    -Type:required. -
    -Intent: inout. -
    -Specified as: an integer array with the ALLOCATABLE attribute. -
    -
    ja
    -
    the column indices of the elements to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: inout. -
    -Specified as: an integer array with the ALLOCATABLE attribute. -
    -
    val
    -
    the elements to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: inout. -
    -Specified as: a real array with the ALLOCATABLE attribute. -
    +Specified as: a rank one array with the ALLOCATABLE +attribute, of type integer. +
    info
    Error code.
    @@ -207,51 +116,16 @@ An integer value; 0 means no error has been detected. Notes
      -
    1. The output $nz$ is always the size of the output generated by - the current call; thus, if append=.true., the total output - size will be $nzin+nz$, with the newly extracted coefficients stored in - entries nzin+1:nzin+nz of the array arguments; +
    2. If there are no overlap elements the output vector is set + to the ``not allocated'' state.
    3. -
    4. When append=.true. the output arrays are reallocated as - necessary; -
    5. -
    6. The row and column indices are returned in the local numbering - scheme; if the global numbering is desired, the user may employ the - psb_loc_to_glob routine on the output. +
    7. Otherwise the size of ovrel will be exactly equal to the + number of overlap elements.

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_sizeof Memory - Up: Data management routines - Previous: psb_get_overlap Extract -   Contents - +

    diff --git a/docs/html/node81.html b/docs/html/node81.html index 564d09a0..528ad4e7 100644 --- a/docs/html/node81.html +++ b/docs/html/node81.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_sizeof -- Memory occupation - +psb_sp_getrow -- Extract row(s) from a sparse matrix + @@ -20,49 +20,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: Sorting utilities - Up: Data management routines - Previous: psb_sp_getrow Extract -   Next: psb_sizeof Memory + Up: Data management routines + Previous: psb_get_overlap Extract +   Contents

    -

    -psb_sizeof -- Memory occupation +

    +psb_sp_getrow -- Extract row(s) from a sparse matrix

    -

    -This function computes the memory occupation of a PSBLAS object. -

    -isz = psb_sizeof(a)
    -isz = psb_sizeof(desc_a)
    -isz = psb_sizeof(prec)
    +call psb_sp_getrow(row, a, nz, ia, ja, val, info, &
    +              & append, nzin, lrw)
     

    @@ -73,56 +69,189 @@ isz = psb_sizeof(prec)

    On Entry
    +
    row
    +
    The (first) row to be extracted. +
    +Scope:local +
    +Type:required +
    +Intent: in. +
    +Specified as: an integer $>0$. +
    a
    -
    A sparse matrix -$A$. +
    the matrix from which to get rows.
    -Scope: local +Scope:local
    -Type: required +Type:required
    Intent: in.
    Specified as: a structured data of type spdatapsb_Tspmat_type.
    -
    desc_a
    -
    Communication descriptor. +
    append
    +
    Whether to append or overwrite existing output.
    -Scope: local +Scope:local +
    +Type:optional +
    +Intent: in. +
    +Specified as: a logical value default: false (overwrite). +
    +
    nzin
    +
    Input size to be appended to.
    -Type: required +Scope:local +
    +Type:optional
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: an integer $>0$. When append is true, specifies how many +entries in the output vectors are already filled.
    -
    prec
    -
    Scope: local +
    lrw
    +
    The last row to be extracted. +
    +Scope:local
    -Type: required +Type:optional
    Intent: in.
    -Specified as: a preconditioner data structure precdatapsb_prec_type. +Specified as: an integer $>0$, default: $row$. + +

    + + +

    +

    On Return
    -
    Function value
    -
    The memory occupation of the object specified in - the calling sequence, in bytes. +
    nz
    +
    the number of elements returned by this call. +
    +Scope:local. +
    +Type:required. +
    +Intent: out. +
    +Returned as: an integer scalar. +
    +
    ia
    +
    the row indices. +
    +Scope:local. +
    +Type:required. +
    +Intent: inout. +
    +Specified as: an integer array with the ALLOCATABLE attribute. +
    +
    ja
    +
    the column indices of the elements to be inserted. +
    +Scope:local. +
    +Type:required. +
    +Intent: inout. +
    +Specified as: an integer array with the ALLOCATABLE attribute. +
    +
    val
    +
    the elements to be inserted. +
    +Scope:local. +
    +Type:required. +
    +Intent: inout. +
    +Specified as: a real array with the ALLOCATABLE attribute. +
    +
    info
    +
    Error code.
    Scope: local
    -Returned as: an integer(psb_long_int_k_) number. +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected.

    -


    +Notes + +
      +
    1. The output $nz$ is always the size of the output generated by + the current call; thus, if append=.true., the total output + size will be $nzin+nz$, with the newly extracted coefficients stored in + entries nzin+1:nzin+nz of the array arguments; +
    2. +
    3. When append=.true. the output arrays are reallocated as + necessary; +
    4. +
    5. The row and column indices are returned in the local numbering + scheme; if the global numbering is desired, the user may employ the + psb_loc_to_glob routine on the output. +
    6. +
    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: psb_sizeof Memory + Up: Data management routines + Previous: psb_get_overlap Extract +   Contents + diff --git a/docs/html/node82.html b/docs/html/node82.html index 23e45474..c22ccffe 100644 --- a/docs/html/node82.html +++ b/docs/html/node82.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Sorting utilities - +psb_sizeof -- Memory occupation + @@ -18,276 +18,111 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Parallel environment routines - Up: Data management routines - Previous: psb_sizeof Memory -   Next: Sorting utilities + Up: Data management routines + Previous: psb_sp_getrow Extract +   Contents

    -

    -Sorting utilities +

    +psb_sizeof -- Memory occupation

    -psb_msort -- Sorting by the Merge-sort - algorithm - -

    -psb_qsort -- Sorting by the Quicksort - algorithm +This function computes the memory occupation of a PSBLAS object.

    -psb_hsort -- Sorting by the Heapsort algorithm

    -call psb_msort(x,ix,dir,flag)
    -call psb_qsort(x,ix,dir,flag)
    -call psb_hsort(x,ix,dir,flag)
    +isz = psb_sizeof(a)
    +isz = psb_sizeof(desc_a)
    +isz = psb_sizeof(prec)
     

    -These serial routines sort a sequence $X$ into ascending or -descending order. The argument meaning is identical for the three -calls; the only difference is the algorithm used to accomplish the -task (see Usage Notes below).

    Type:
    Asynchronous.
    -
    On Entry
    +
    On Entry
    -
    x
    -
    The sequence to be sorted. +
    a
    +
    A sparse matrix +$A$.
    -Type:required. +Scope: local
    -Specified as: an integer, real or complex array of rank 1. -
    -
    ix
    -
    A vector of indices. +Type: required
    -Type:optional. +Intent: in.
    -Specified as: an integer array of (at least) the same size as $X$. +Specified as: a structured data of type spdatapsb_Tspmat_type.
    -
    dir
    -
    The desired ordering. +
    desc_a
    +
    Communication descriptor.
    -Type:optional. +Scope: local
    -Specified as: an integer value:
    -
    Integer and real data:
    -
    psb_sort_up_, -psb_sort_down_, psb_asort_up_, psb_asort_down_; -default psb_sort_up_. -
    -
    Complex data:
    -
    psb_lsort_up_, -psb_lsort_down_, psb_asort_up_, psb_asort_down_; -default psb_lsort_up_. -
    -
    +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type descdatapsb_desc_type.
    -
    flag
    -
    Whether to keep the original values in $IX$. +
    prec
    +
    Scope: local
    -Type:optional. +Type: required
    -Specified as: an integer value psb_sort_ovw_idx_ or -psb_sort_keep_idx_; default psb_sort_ovw_idx_. - -

    +Intent: in. +
    +Specified as: a preconditioner data structure precdatapsb_prec_type.

    -
    - -

    -

    On Return
    -
    x
    -
    The sequence of values, in the chosen ordering. +
    Function value
    +
    The memory occupation of the object specified in + the calling sequence, in bytes.
    -Type:required. +Scope: local
    -Specified as: an integer, real or complex array of rank 1. -
    -
    ix
    -
    A vector of indices. -
    -Type: Optional -
    -An integer array of rank 1, whose entries are moved to the same -position as the corresponding entries in $x$. +Returned as: an integer(psb_long_int_k_) number.

    - -

    -Notes - -

      -
    1. For integer or real data the sorting can be performed in the up/down direction, on the - natural or absolute values; -
    2. -
    3. For complex data the sorting can be done in a lexicographic - order (i.e.: sort on the real part with ties broken according to - the imaginary part) or on the absolute values; -
    4. -
    5. The routines return the items in the chosen ordering; the - output difference is the handling of ties (i.e. items with an - equal value) in the original input. With the merge-sort algorithm - ties are preserved in the same relative order as they had in the - original sequence, while this is not guaranteed for quicksort or - heapsort; -
    6. -
    7. If -$flag = psb\_sort\_ovw\_idx\_$ then the entries in $ix(1:n)$ - where $n$ is the size of $x$ are initialized to -$ix(i) \leftarrow
-i$; thus, upon return from the subroutine, for each - index $i$ we have in $ix(i)$ the position that the item $x(i)$ - occupied in the original data sequence; -
    8. -
    9. If -$flag = psb\_sort\_keep\_idx\_$ the routine will assume that - the entries in $ix(:)$ have already been initialized by the user; -
    10. -
    11. The three sorting algorithms have a similar $O(n \log n)$ expected - running time; in the average case quicksort will be the - fastest and merge-sort the slowest. However note that: - -
        -
      1. The worst case running time for quicksort is $O(n^2)$; the algorithm - implemented here follows the well-known median-of-three heuristics, - but the worst case may still apply; -
      2. -
      3. The worst case running time for merge-sort and heap-sort is - $O(n \log n)$ as the average case; -
      4. -
      5. The merge-sort algorithm is implemented to take advantage of - subsequences that may be already in the desired ordering prior to - the subroutine call; this situation is relatively common when - dealing with groups of indices of sparse matrix entries, thus - merge-sort is the preferred choice when a sorting is needed - by other routines in the library. -
      6. -
      -
    12. -
    - -

    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: Parallel environment routines - Up: Data management routines - Previous: psb_sizeof Memory -   Contents - +

    diff --git a/docs/html/node83.html b/docs/html/node83.html index 28b1e21a..de325fce 100644 --- a/docs/html/node83.html +++ b/docs/html/node83.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Parallel environment routines - +Sorting utilities + @@ -18,88 +18,276 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + - next - + up - previous - contents
    - Next: psb_init Initializes - Up: userhtml - Previous: Sorting utilities -   Next: Parallel environment routines + Up: Data management routines + Previous: psb_sizeof Memory +   Contents

    -

    - +

    +Sorting utilities +

    + +

    +psb_msort -- Sorting by the Merge-sort + algorithm + +

    +psb_qsort -- Sorting by the Quicksort + algorithm + +

    +psb_hsort -- Sorting by the Heapsort algorithm +

    +call psb_msort(x,ix,dir,flag)
    +call psb_qsort(x,ix,dir,flag)
    +call psb_hsort(x,ix,dir,flag)
    +
    + +

    +These serial routines sort a sequence $X$ into ascending or +descending order. The argument meaning is identical for the three +calls; the only difference is the algorithm used to accomplish the +task (see Usage Notes below). +

    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    x
    +
    The sequence to be sorted. +
    +Type:required. +
    +Specified as: an integer, real or complex array of rank 1. +
    +
    ix
    +
    A vector of indices. +
    +Type:optional. +
    +Specified as: an integer array of (at least) the same size as $X$. +
    +
    dir
    +
    The desired ordering. +
    +Type:optional. +
    +Specified as: an integer value:
    +
    Integer and real data:
    +
    psb_sort_up_, +psb_sort_down_, psb_asort_up_, psb_asort_down_; +default psb_sort_up_. +
    +
    Complex data:
    +
    psb_lsort_up_, +psb_lsort_down_, psb_asort_up_, psb_asort_down_; +default psb_lsort_up_. +
    +
    +
    +
    flag
    +
    Whether to keep the original values in $IX$. +
    +Type:optional. +
    +Specified as: an integer value psb_sort_ovw_idx_ or +psb_sort_keep_idx_; default psb_sort_ovw_idx_. + +

    +

    +
    + +

    +

    +
    On Return
    +
    +
    +
    x
    +
    The sequence of values, in the chosen ordering. +
    +Type:required.
    -Parallel environment routines - +Specified as: an integer, real or complex array of rank 1. +
    +
    ix
    +
    A vector of indices. +
    +Type: Optional +
    +An integer array of rank 1, whose entries are moved to the same +position as the corresponding entries in $x$. +
    +
    + +

    -


    - -Subsections - - - -

    +Notes + +
      +
    1. For integer or real data the sorting can be performed in the up/down direction, on the + natural or absolute values; +
    2. +
    3. For complex data the sorting can be done in a lexicographic + order (i.e.: sort on the real part with ties broken according to + the imaginary part) or on the absolute values; +
    4. +
    5. The routines return the items in the chosen ordering; the + output difference is the handling of ties (i.e. items with an + equal value) in the original input. With the merge-sort algorithm + ties are preserved in the same relative order as they had in the + original sequence, while this is not guaranteed for quicksort or + heapsort; +
    6. +
    7. If +$flag = psb\_sort\_ovw\_idx\_$ then the entries in $ix(1:n)$ + where $n$ is the size of $x$ are initialized to +$ix(i) \leftarrow
+i$; thus, upon return from the subroutine, for each + index $i$ we have in $ix(i)$ the position that the item $x(i)$ + occupied in the original data sequence; +
    8. +
    9. If +$flag = psb\_sort\_keep\_idx\_$ the routine will assume that + the entries in $ix(:)$ have already been initialized by the user; +
    10. +
    11. The three sorting algorithms have a similar $O(n \log n)$ expected + running time; in the average case quicksort will be the + fastest and merge-sort the slowest. However note that: + +
        +
      1. The worst case running time for quicksort is $O(n^2)$; the algorithm + implemented here follows the well-known median-of-three heuristics, + but the worst case may still apply; +
      2. +
      3. The worst case running time for merge-sort and heap-sort is + $O(n \log n)$ as the average case; +
      4. +
      5. The merge-sort algorithm is implemented to take advantage of + subsequences that may be already in the desired ordering prior to + the subroutine call; this situation is relatively common when + dealing with groups of indices of sparse matrix entries, thus + merge-sort is the preferred choice when a sorting is needed + by other routines in the library. +
      6. +
      +
    12. +
    + +

    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: Parallel environment routines + Up: Data management routines + Previous: psb_sizeof Memory +   Contents + diff --git a/docs/html/node84.html b/docs/html/node84.html index 30f6b215..b948a6f3 100644 --- a/docs/html/node84.html +++ b/docs/html/node84.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_init -- Initializes PSBLAS parallel environment - +Parallel environment routines + @@ -18,161 +18,88 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: psb_info Return - Up: Parallel environment routines - Previous: Parallel environment routines -   Next: psb_init Initializes + Up: userhtml + Previous: Sorting utilities +   Contents

    -

    -psb_init -- Initializes PSBLAS parallel environment -

    - -

    -

    -call psb_init(icontxt, np, basectxt, ids)
    -
    - -

    -This subroutine initializes the PSBLAS parallel environment, defining -a virtual parallel machine. -

    -
    Type:
    -
    Synchronous. -
    -
    On Entry
    -
    -
    -
    np
    -
    Number of processes in the PSBLAS virtual parallel machine. -
    -Scope: global. -
    -Type: optional. -
    -Intent: in. -
    -Specified as: an integer value. Default: use all available processes. -
    -
    basectxt
    -
    the initial communication context. The new context - will be defined from the processes participating in the initial one. +

    +
    -Scope: global. -
    -Type: optional. -
    -Intent: in. -
    -Specified as: an integer value. Default: use MPI_COMM_WORLD. -

    -
    ids
    -
    Identities of the processes to use for the new context; the - argument is ignored when np is not specified. This allows the - processes in the new environment to be in an order different from the - original one. -
    -Scope: global. -
    -Type: optional. -
    -Intent: in. -
    -Specified as: an integer array. Default: use the indices $(0\dots np-1)$. -
    -
    +Parallel environment routines +

    -

    -
    On Return
    -
    -
    -
    icontxt
    -
    the communication context identifying the virtual - parallel machine. Note that this is always a duplicate of - basectxt, so that library communications are completely - separated from other communication operations. -
    -Scope: global. -
    -Type: required. -
    -Intent: out. -
    -Specified as: an integer variable. -
    -
    - -

    -Notes - -

      -
    1. A call to this routine must precede any other PSBLAS call. -
    2. -
    3. It is an error to specify a value for $np$ greater than the - number of processes available in the underlying base parallel - environment. -
    4. -
    +

    + +Subsections -

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_info Return - Up: Parallel environment routines - Previous: Parallel environment routines -   Contents - + + +

    diff --git a/docs/html/node85.html b/docs/html/node85.html index 67c9f955..e4801a28 100644 --- a/docs/html/node85.html +++ b/docs/html/node85.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_info -- Return information about PSBLAS parallel environment - +psb_init -- Initializes PSBLAS parallel environment + @@ -20,68 +20,95 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_exit Exit - Up: Parallel environment routines - Previous: psb_init Initializes -   Next: psb_info Return + Up: Parallel environment routines + Previous: Parallel environment routines +   Contents

    -

    -psb_info -- Return information about PSBLAS parallel - environment +

    +psb_init -- Initializes PSBLAS parallel environment

    -call psb_info(icontxt, iam, np)
    +call psb_init(icontxt, np, basectxt, ids)
     

    -This subroutine returns information about the PSBLAS parallel environment, defining +This subroutine initializes the PSBLAS parallel environment, defining a virtual parallel machine.

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    -
    icontxt
    -
    the communication context identifying the virtual - parallel machine. +
    np
    +
    Number of processes in the PSBLAS virtual parallel machine.
    Scope: global.
    -Type: required. +Type: optional.
    Intent: in.
    -Specified as: an integer variable. +Specified as: an integer value. Default: use all available processes. +
    +
    basectxt
    +
    the initial communication context. The new context + will be defined from the processes participating in the initial one. +
    +Scope: global. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an integer value. Default: use MPI_COMM_WORLD. +
    +
    ids
    +
    Identities of the processes to use for the new context; the + argument is ignored when np is not specified. This allows the + processes in the new environment to be in an order different from the + original one. +
    +Scope: global. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an integer array. Default: use the indices $(0\dots np-1)$.
    @@ -90,24 +117,11 @@ Specified as: an integer variable.
    On Return
    -
    iam
    -
    Identifier of current process in the PSBLAS virtual parallel machine. -
    -Scope: local. -
    -Type: required. -
    -Intent: out. -
    -Specified as: an integer value. -$-1 \le iam \le np-1$
    -
    np
    -
    Number of processes in the PSBLAS virtual parallel machine. +
    icontxt
    +
    the communication context identifying the virtual + parallel machine. Note that this is always a duplicate of + basectxt, so that library communications are completely + separated from other communication operations.
    Scope: global.
    @@ -115,56 +129,48 @@ Type: required.
    Intent: out.
    -Specified as: an integer variable.
    +Specified as: an integer variable. +

    Notes

      -
    1. For processes in the virtual parallel machine the identifier - will satisfy -$0 \le iam \le np-1$; +
    2. A call to this routine must precede any other PSBLAS call.
    3. -
    4. If the user has requested on psb_init a number of - processes less than the total available in the parallel execution - environment, the remaining processes will have on return $iam=-1$; - the only call involving icontxt that any such process may - execute is to psb_exit. +
    5. It is an error to specify a value for $np$ greater than the + number of processes available in the underlying base parallel + environment.


    - next - + up - previous - contents
    - Next: psb_exit Exit - Up: Parallel environment routines - Previous: psb_init Initializes -   Next: psb_info Return + Up: Parallel environment routines + Previous: Parallel environment routines +   Contents diff --git a/docs/html/node86.html b/docs/html/node86.html index b9475530..0174e24f 100644 --- a/docs/html/node86.html +++ b/docs/html/node86.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_exit -- Exit from PSBLAS parallel environment - +psb_info -- Return information about PSBLAS parallel environment + @@ -20,52 +20,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_get_mpicomm Get - Up: Parallel environment routines - Previous: psb_info Return -   Next: psb_exit Exit + Up: Parallel environment routines + Previous: psb_init Initializes +   Contents

    -

    -psb_exit -- Exit from PSBLAS parallel environment +

    +psb_info -- Return information about PSBLAS parallel + environment

    -call psb_exit(icontxt)
    -call psb_exit(icontxt,close)
    +call psb_info(icontxt, iam, np)
     

    -This subroutine exits from the PSBLAS parallel virtual machine. +This subroutine returns information about the PSBLAS parallel environment, defining +a virtual parallel machine.

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    @@ -82,67 +83,88 @@ Intent: in.
    Specified as: an integer variable.
    -
    close
    -
    Whether to close all data structures related to the - virtual parallel machine, besides those associated with icontxt. +
    + +

    +

    +
    On Return
    +
    +
    +
    iam
    +
    Identifier of current process in the PSBLAS virtual parallel machine. +
    +Scope: local. +
    +Type: required. +
    +Intent: out. +
    +Specified as: an integer value. +$-1 \le iam \le np-1$
    +
    np
    +
    Number of processes in the PSBLAS virtual parallel machine.
    Scope: global.
    -Type: optional. +Type: required.
    -Intent: in. +Intent: out.
    -Specified as: a logical variable, default value: true. -
    +Specified as: an integer variable.

    Notes

      -
    1. This routine may be called even if a previous call to - psb_info has returned with For processes in the virtual parallel machine the identifier + will satisfy +$0 \le iam \le np-1$; +
    2. +
    3. If the user has requested on psb_init a number of + processes less than the total available in the parallel execution + environment, the remaining processes will have on return $iam=-1$; indeed, it it is the only - routine that may be called with argument icontxt in this - situation. -
    4. -
    5. A call to this routine with close=.true. implies a call - to MPI_Finalize, after which no parallel routine may be called. -
    6. -
    7. If the user whishes to use multiple communication contexts in the - same program, or to enter and exit multiple times into the parallel - environment, this routine may be called to - selectively close the contexts with close=.false., while on - the last call it should be called with close=.true. to - shutdown in a clean way the entire parallel environment. + ALT="$iam=-1$">; + the only call involving icontxt that any such process may + execute is to psb_exit.


    - next - + up - previous - contents
    - Next: psb_get_mpicomm Get - Up: Parallel environment routines - Previous: psb_info Return -   Next: psb_exit Exit + Up: Parallel environment routines + Previous: psb_init Initializes +   Contents diff --git a/docs/html/node87.html b/docs/html/node87.html index 40b1523c..5c61ca8b 100644 --- a/docs/html/node87.html +++ b/docs/html/node87.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_get_mpicomm -- Get the MPI communicator - +psb_exit -- Exit from PSBLAS parallel environment + @@ -20,51 +20,52 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_get_rank Get - Up: Parallel environment routines - Previous: psb_exit Exit -   Next: psb_get_mpicomm Get + Up: Parallel environment routines + Previous: psb_info Return +   Contents

    -

    -psb_get_mpicomm -- Get the MPI communicator +

    +psb_exit -- Exit from PSBLAS parallel environment

    -call psb_get_mpicomm(icontxt, icomm)
    +call psb_exit(icontxt)
    +call psb_exit(icontxt,close)
     

    -This subroutine returns the MPI communicator associated with a PSBLAS context +This subroutine exits from the PSBLAS parallel virtual machine.

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    @@ -81,26 +82,69 @@ Intent: in.
    Specified as: an integer variable.
    -
    - -

    -

    -
    On Return
    -
    -
    -
    icomm
    -
    The MPI communicator associated with the PSBLAS virtual parallel machine. +
    close
    +
    Whether to close all data structures related to the + virtual parallel machine, besides those associated with icontxt.
    Scope: global.
    -Type: required. +Type: optional. +
    +Intent: in.
    -Intent: out. -
    +Specified as: a logical variable, default value: true. +

    -


    +Notes + +
      +
    1. This routine may be called even if a previous call to + psb_info has returned with $iam=-1$; indeed, it it is the only + routine that may be called with argument icontxt in this + situation. +
    2. +
    3. A call to this routine with close=.true. implies a call + to MPI_Finalize, after which no parallel routine may be called. +
    4. +
    5. If the user whishes to use multiple communication contexts in the + same program, or to enter and exit multiple times into the parallel + environment, this routine may be called to + selectively close the contexts with close=.false., while on + the last call it should be called with close=.true. to + shutdown in a clean way the entire parallel environment. +
    6. +
    + +

    +


    + + +next + +up + +previous + +contents +
    + Next: psb_get_mpicomm Get + Up: Parallel environment routines + Previous: psb_info Return +   Contents + diff --git a/docs/html/node88.html b/docs/html/node88.html index 8b9a7cd6..53c3fbd3 100644 --- a/docs/html/node88.html +++ b/docs/html/node88.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_get_rank -- Get the MPI rank - +psb_get_mpicomm -- Get the MPI communicator + @@ -20,51 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_wtime Wall - Up: Parallel environment routines - Previous: psb_get_mpicomm Get -   Next: psb_get_rank Get + Up: Parallel environment routines + Previous: psb_exit Exit +   Contents

    -

    -psb_get_rank -- Get the MPI rank +

    +psb_get_mpicomm -- Get the MPI communicator

    -call psb_get_rank(rank, icontxt, id)
    +call psb_get_mpicomm(icontxt, icomm)
     

    -This subroutine returns the MPI rank of the PSBLAS process $id$ +This subroutine returns the MPI communicator associated with a PSBLAS context

    Type:
    Asynchronous. @@ -84,22 +81,6 @@ Intent: in.
    Specified as: an integer variable.
    -
    id
    -
    Identifier of a process in the PSBLAS virtual parallel machine. -
    -Scope: local. -
    -Type: required. -
    -Intent: in. -
    -Specified as: an integer value. -$0 \le id \le np-1$

    @@ -107,13 +88,10 @@ Specified as: an integer value. -psb_wtime -- Wall clock timing - +psb_get_rank -- Get the MPI rank + @@ -20,61 +20,105 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_barrier Sinchronization - Up: Parallel environment routines - Previous: psb_get_rank Get -   Next: psb_wtime Wall + Up: Parallel environment routines + Previous: psb_get_mpicomm Get +   Contents

    -

    -psb_wtime -- Wall clock timing +

    +psb_get_rank -- Get the MPI rank

    -time = psb_wtime()
    +call psb_get_rank(rank, icontxt, id)
     

    -This function returns a wall clock timer. The resolution of the timer -is dependent on the underlying parallel environment implementation. +This subroutine returns the MPI rank of the PSBLAS process $id$

    Type:
    Asynchronous.
    -
    On Exit
    +
    On Entry
    -
    Function value
    -
    the elapsed time in seconds. +
    icontxt
    +
    the communication context identifying the virtual + parallel machine.
    -Returned as: a real(psb_dpk_) variable. +Scope: global. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer variable. +
    +
    id
    +
    Identifier of a process in the PSBLAS virtual parallel machine. +
    +Scope: local. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer value. +$0 \le id \le np-1$
    +
    + +

    +

    +
    On Return
    +
    +
    rank
    +
    The MPI rank associated with the PSBLAS process $id$. +
    +Scope: local. +
    +Type: required. +
    +Intent: out. +

    diff --git a/docs/html/node9.html b/docs/html/node9.html index d8cd0512..ae8052ae 100644 --- a/docs/html/node9.html +++ b/docs/html/node9.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -Descriptor data structure - +Data Structures and Classes + @@ -18,230 +18,92 @@ original version by: Nikos Drakos, CBLU, University of Leeds - - - + + + - next - + up - previous - contents
    - Next: Methods - Up: Data Structures and Classes - Previous: Data Structures and Classes -   Next: Descriptor data structure + Up: userhtml + Previous: Programming model +   Contents

    -

    - +

    +
    -Descriptor data structure -

    -All the general matrix informations and elements to be -exchanged among processes are stored within a data structure of the -type descdatapsb_desc_type. -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. +Data Structures and Classes +

    -The data structure itself psb_desc_type can be treated as an -opaque object handled via the tools routines of -Sec. 6 or the query routines detailed below; -nevertheless we include here a description for the curious -reader. - +In this chapter we illustrate the data structures used for definition of +routines interfaces. They include data structures for sparse matrices, +communication descriptors and preconditioners.

    -First we describe the psb_indx_map type. This is a data -structure that keeps track of a certain number of basic issues such -as: - -

      -
    • The value of the communication/MPI context; -
    • -
    • The number of indices in the index space, i.e. global number of - rows and columns of a sparse matrix; -
    • -
    • The local set of indices, including: - -
        -
      • The number of local indices (and local rows); -
      • -
      • The number of halo indices (and therefore local columns); -
      • -
      • The global indices corresponding to the local ones. -
      • -
      -
    • -
    -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: - -
      -
    • For a given set of local indices, find the corresponding indices - in the global numbering; -
    • -
    • For a given set of global indices, find the corresponding - indices in the local numbering, if any, or return an invalid -
    • -
    • Add a global index to the set of halo indices; -
    • -
    • Find the process owner of each member of a set of global - indices. -
    • -
    -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 6). +All the data types and the basic subroutine interfaces related to +descriptors and sparse matrices are defined in +the module psb_base_mod; this will have to be included by every +user subroutine that makes use of the library. The preconditioners are +defined in the module psb_prec_mod

    -The descriptor contents are as follows: +Integer, real and complex data types are parametrized with a kind type +defined in the library as follows:

    -
    indxmap
    -
    A polymorphic variable of a type that is any - extension of the indx_map type described above. -
    -
    halo_index
    -
    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: - -
      -
    1. Process identifier; -
    2. -
    3. Number of points to be received; -
    4. -
    5. Indices of points to be received; -
    6. -
    7. Number of points to be sent; -
    8. -
    9. Indices of points to be sent; -
    10. -
    -The list may contain an arbitrary number of groups; its end is marked -by a -1. -
    -Specified as: an allocatable integer array of rank one. -
    -
    ext_index
    -
    A list of element indices to be exchanged to - implement the mapping between a base descriptor and a descriptor - with overlap. -
    -
    ovrlap_index
    -
    A list of the overlap elements for the -current process, organized in groups like the previous vector: - -
      -
    1. Process identifier; -
    2. -
    3. Number of points to be received; -
    4. -
    5. Indices of points to be received; -
    6. -
    7. Number of points to be sent; -
    8. -
    9. Indices of points to be sent; -
    10. -
    -The list may contain an arbitrary number of groups; its end is marked -by a -1. -
    -Specified as: an allocatable integer array of rank one. -
    -
    ovr_mst_idx
    -
    A list to retrieve the value of each - overlap element from the respective master process. -
    -Specified as: an allocatable integer array of rank one. +
    psb_spk_
    +
    Kind parameter for short precision real and complex + data; corresponds to a REAL declaration and is + normally 4 bytes;
    -
    ovrlap_elem
    -
    For all overlap points belonging to th -ecurrent process: - -
      -
    1. Overlap point index; -
    2. -
    3. Number of processes sharing that overlap points; -
    4. -
    5. Index of a ``master'' process: -
    6. -
    -Specified as: an allocatable integer array of rank two. +
    psb_dpk_
    +
    Kind parameter for long precision real and complex + data; corresponds to a DOUBLE PRECISION declaration and is + normally 8 bytes;
    -
    bnd_elem
    -
    A list of all boundary points, i.e. points - that have a connection with other processes. +
    psb_ipk_
    +
    Kind parameter for integer data; + with default build options this is a 4 bytes integer, but there is + (highly) experimental support for 8-bytes integers;
    -
    -The Fortran 2003 declaration for psb_desc_type structures is -as follows: - -
    - - - -
    Figure 3: -The PSBLAS defined data type that - contains the communication descriptor.
    -
    - -
    -
     
    -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
    -
    -
    -
    -
    - -

    -A communication descriptor associated with a sparse matrix has a -state, which can take the following values: -

    -
    Build:
    -
    State entered after the first allocation, and before the - first assembly; in this state it is possible to add communication - requirements among different processes. +
    psb_mpik_
    +
    Kind parameter for 4-bytes integer data, as is + always used by MPI;
    -
    Assembled:
    -
    State entered after the assembly; computations using - the associated sparse matrix, such as matrix-vector products, are - only possible in this state. +
    psb_long_int_k_
    +
    Kind parameter for long (8 bytes) integers, + which are always used by the sizeof methods.
    +Together with the classes attributes we also discuss their +methods. Most methods detailed here only act on the local variable, +i.e. their action is purely local and asynchronous unless otherwise +stated. +The list of methods here is not completely exhaustive; many methods, +especially those that alter the contents of the various objects, are +usually not needed by the end-user, and therefore are described in the +developer's documentation.



    @@ -249,40 +111,105 @@ state, which can take the following values: Subsections
    - next - + up - previous - contents
    - Next: Methods - Up: Data Structures and Classes - Previous: Data Structures and Classes -   Next: Descriptor data structure + Up: userhtml + Previous: Programming model +   Contents diff --git a/docs/html/node90.html b/docs/html/node90.html index b4d0de13..3ae77e64 100644 --- a/docs/html/node90.html +++ b/docs/html/node90.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_barrier -- Sinchronization point parallel environment - +psb_wtime -- Wall clock timing + @@ -20,68 +20,60 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_abort Abort - Up: Parallel environment routines - Previous: psb_wtime Wall -   Next: psb_barrier Sinchronization + Up: Parallel environment routines + Previous: psb_get_rank Get +   Contents

    -

    -psb_barrier -- Sinchronization point parallel - environment +

    +psb_wtime -- Wall clock timing

    -call psb_barrier(icontxt)
    +time = psb_wtime()
     

    -This subroutine acts as an explicit synchronization point for the PSBLAS -parallel virtual machine. +This function returns a wall clock timer. The resolution of the timer +is dependent on the underlying parallel environment implementation.

    Type:
    -
    Synchronous. +
    Asynchronous.
    -
    On Entry
    +
    On Exit
    -
    icontxt
    -
    the communication context identifying the virtual - parallel machine. +
    Function value
    +
    the elapsed time in seconds.
    -Scope: global. -
    -Type: required. -
    -Intent: in. -
    -Specified as: an integer variable. +Returned as: a real(psb_dpk_) variable.
    diff --git a/docs/html/node91.html b/docs/html/node91.html index 8b80b3ef..a5ac9abf 100644 --- a/docs/html/node91.html +++ b/docs/html/node91.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_abort -- Abort a computation - +psb_barrier -- Sinchronization point parallel environment + @@ -20,51 +20,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_bcast Broadcast - Up: Parallel environment routines - Previous: psb_barrier Sinchronization -   Next: psb_abort Abort + Up: Parallel environment routines + Previous: psb_wtime Wall +   Contents

    -

    -psb_abort -- Abort a computation +

    +psb_barrier -- Sinchronization point parallel + environment

    -call psb_abort(icontxt)
    +call psb_barrier(icontxt)
     

    -This subroutine aborts computation on the parallel virtual machine. +This subroutine acts as an explicit synchronization point for the PSBLAS +parallel virtual machine.

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    diff --git a/docs/html/node92.html b/docs/html/node92.html index c692a699..ac22fe2f 100644 --- a/docs/html/node92.html +++ b/docs/html/node92.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_bcast -- Broadcast data - +psb_abort -- Abort a computation + @@ -20,52 +20,51 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_sum Global - Up: Parallel environment routines - Previous: psb_abort Abort -   Next: psb_bcast Broadcast + Up: Parallel environment routines + Previous: psb_barrier Sinchronization +   Contents

    -

    -psb_bcast -- Broadcast data +

    +psb_abort -- Abort a computation

    -call psb_bcast(icontxt, dat, root)
    +call psb_abort(icontxt)
     

    -This subroutine implements a broadcast operation based on the -underlying communication library. +This subroutine aborts computation on the parallel virtual machine.

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    @@ -82,81 +81,10 @@ Intent: in.
    Specified as: an integer variable.
    -
    dat
    -
    On the root process, the data to be broadcast. -
    -Scope: global. -
    -Type: required. -
    -Intent: inout. -
    -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 variable, -which may be a scalar or rank 1 array. Type, kind, rank and size must agree on all processes. -
    -
    root
    -
    Root process holding data to be broadcast. -
    -Scope: global. -
    -Type: optional. -
    -Intent: in. -
    -Specified as: an integer value -$0<= root <= np-1$, default 0

    -

    -
    On Return
    -
    -
    -
    dat
    -
    On processes other than root, the data to be broadcast. -
    -Scope: global. -
    -Type: required. -
    -Intent: inout. -
    -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, rank and size must agree on all processes. -
    -
    - -

    -


    - - -next - -up - -previous - -contents -
    - Next: psb_sum Global - Up: Parallel environment routines - Previous: psb_abort Abort -   Contents - +

    diff --git a/docs/html/node93.html b/docs/html/node93.html index 3d90ef31..6e300aa2 100644 --- a/docs/html/node93.html +++ b/docs/html/node93.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_sum -- Global sum - +psb_bcast -- Broadcast data + @@ -20,48 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_max Global - Up: Parallel environment routines - Previous: psb_bcast Broadcast -   Next: psb_sum Global + Up: Parallel environment routines + Previous: psb_abort Abort +   Contents

    -

    -psb_sum -- Global sum +

    +psb_bcast -- Broadcast data

    -call psb_sum(icontxt, dat, root)
    +call psb_bcast(icontxt, dat, root)
     

    -This subroutine implements a sum reduction operation based on the +This subroutine implements a broadcast operation based on the underlying communication library.

    Type:
    @@ -83,7 +83,7 @@ Intent: in. Specified as: an integer variable.
    dat
    -
    The local contribution to the global sum. +
    On the root process, the data to be broadcast.
    Scope: global.
    @@ -92,14 +92,11 @@ Type: required. Intent: inout.
    Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. +scalar, or a rank 1 or 2 array, or a character or logical variable, +which may be a scalar or rank 1 array. Type, kind, rank and size must agree on all processes.
    root
    -
    Process to hold the final sum, or $-1$ to make it available - on all processes. +
    Root process holding data to be broadcast.
    Scope: global.
    @@ -108,12 +105,12 @@ Type: optional. Intent: in.
    Specified as: an integer value $-1<= root <= np-1$, default -1.
    + WIDTH="153" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" + SRC="img123.png" + ALT="$0<= root <= np-1$">, default 0

    @@ -122,7 +119,7 @@ Specified as: an integer value - next - + up - previous - contents
    - Next: psb_max Global - Up: Parallel environment routines - Previous: psb_bcast Broadcast -   Next: psb_sum Global + Up: Parallel environment routines + Previous: psb_abort Abort +   Contents diff --git a/docs/html/node94.html b/docs/html/node94.html index 25821a98..c4df8477 100644 --- a/docs/html/node94.html +++ b/docs/html/node94.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_max -- Global maximum - +psb_sum -- Global sum + @@ -20,49 +20,49 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_min Global - Up: Parallel environment routines - Previous: psb_sum Global -   Next: psb_max Global + Up: Parallel environment routines + Previous: psb_bcast Broadcast +   Contents

    -

    -psb_max -- Global maximum +

    +psb_sum -- Global sum

    -call psb_max(icontxt, dat, root)
    +call psb_sum(icontxt, dat, root)
     

    -This subroutine implements a maximum valuereduction -operation based on the underlying communication library. +This subroutine implements a sum reduction operation based on the +underlying communication library.

    Type:
    Synchronous. @@ -83,19 +83,19 @@ Intent: in. Specified as: an integer variable.
    dat
    -
    The local contribution to the global maximum. +
    The local contribution to the global sum.
    -Scope: local. +Scope: global.
    Type: required.
    Intent: inout.
    -Specified as: an integer or real variable, which may be a +Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
    root
    -
    Process to hold the final maximum, or Process to hold the final sum, or $-1$ to make it available @@ -113,8 +113,7 @@ Specified as: an integer value - next - + up - previous - contents
    - Next: psb_min Global - Up: Parallel environment routines - Previous: psb_sum Global -   Next: psb_max Global + Up: Parallel environment routines + Previous: psb_bcast Broadcast +   Contents diff --git a/docs/html/node95.html b/docs/html/node95.html index d0f84582..90293ae3 100644 --- a/docs/html/node95.html +++ b/docs/html/node95.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_min -- Global minimum - +psb_max -- Global maximum + @@ -20,48 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_amx Global - Up: Parallel environment routines - Previous: psb_max Global -   Next: psb_min Global + Up: Parallel environment routines + Previous: psb_sum Global +   Contents

    -

    -psb_min -- Global minimum +

    +psb_max -- Global maximum

    -call psb_min(icontxt, dat, root)
    +call psb_max(icontxt, dat, root)
     

    -This subroutine implements a minimum value reduction +This subroutine implements a maximum valuereduction operation based on the underlying communication library.

    Type:
    @@ -83,7 +83,7 @@ Intent: in. Specified as: an integer variable.
    dat
    -
    The local contribution to the global minimum. +
    The local contribution to the global maximum.
    Scope: local.
    @@ -91,11 +91,11 @@ Type: required.
    Intent: inout.
    -Specified as: an integer or real variable, which may be a +Specified as: an integer or real variable, which may be a scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
    root
    -
    Process to hold the final value, or Process to hold the final maximum, or $-1$ to make it available @@ -123,18 +123,16 @@ Specified as: an integer value - next - + up - previous - contents
    - Next: psb_amx Global - Up: Parallel environment routines - Previous: psb_max Global -   Next: psb_min Global + Up: Parallel environment routines + Previous: psb_sum Global +   Contents diff --git a/docs/html/node96.html b/docs/html/node96.html index 05bf1c34..0ef3a529 100644 --- a/docs/html/node96.html +++ b/docs/html/node96.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_amx -- Global maximum absolute value - +psb_min -- Global minimum + @@ -20,48 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_amn Global - Up: Parallel environment routines - Previous: psb_min Global -   Next: psb_amx Global + Up: Parallel environment routines + Previous: psb_max Global +   Contents

    -

    -psb_amx -- Global maximum absolute value +

    +psb_min -- Global minimum

    -call psb_amx(icontxt, dat, root)
    +call psb_min(icontxt, dat, root)
     

    -This subroutine implements a maximum absolute value reduction +This subroutine implements a minimum value reduction operation based on the underlying communication library.

    Type:
    @@ -83,7 +83,7 @@ Intent: in. Specified as: an integer variable.
    dat
    -
    The local contribution to the global maximum. +
    The local contribution to the global minimum.
    Scope: local.
    @@ -91,7 +91,7 @@ Type: required.
    Intent: inout.
    -Specified as: an integer, real or complex variable, which may be a +Specified as: an integer or real variable, which may be a scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
    root
    @@ -123,7 +123,7 @@ Specified as: an integer value - next - + up - previous - contents
    - Next: psb_amn Global - Up: Parallel environment routines - Previous: psb_min Global -   Next: psb_amx Global + Up: Parallel environment routines + Previous: psb_max Global +   Contents diff --git a/docs/html/node97.html b/docs/html/node97.html index f2a8a1ab..0e67dd48 100644 --- a/docs/html/node97.html +++ b/docs/html/node97.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_amn -- Global minimum absolute value - +psb_amx -- Global maximum absolute value + @@ -20,48 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_snd Send - Up: Parallel environment routines - Previous: psb_amx Global -   Next: psb_amn Global + Up: Parallel environment routines + Previous: psb_min Global +   Contents

    -

    -psb_amn -- Global minimum absolute value +

    +psb_amx -- Global maximum absolute value

    -call psb_amn(icontxt, dat, root)
    +call psb_amx(icontxt, dat, root)
     

    -This subroutine implements a minimum absolute value reduction +This subroutine implements a maximum absolute value reduction operation based on the underlying communication library.

    Type:
    @@ -83,7 +83,7 @@ Intent: in. Specified as: an integer variable.
    dat
    -
    The local contribution to the global minimum. +
    The local contribution to the global maximum.
    Scope: local.
    @@ -123,7 +123,7 @@ Specified as: an integer value - next - + up - previous - contents
    - Next: psb_snd Send - Up: Parallel environment routines - Previous: psb_amx Global -   Next: psb_amn Global + Up: Parallel environment routines + Previous: psb_min Global +   Contents diff --git a/docs/html/node98.html b/docs/html/node98.html index af1d8104..de9cbbdf 100644 --- a/docs/html/node98.html +++ b/docs/html/node98.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_snd -- Send data - +psb_amn -- Global minimum absolute value + @@ -20,51 +20,52 @@ original version by: Nikos Drakos, CBLU, University of Leeds - + - next - + up - previous - contents
    - Next: psb_rcv Receive - Up: Parallel environment routines - Previous: psb_amn Global -   Next: psb_snd Send + Up: Parallel environment routines + Previous: psb_amx Global +   Contents

    -

    -psb_snd -- Send data +

    +psb_amn -- Global minimum absolute value

    -call psb_snd(icontxt, dat, dst, m)
    +call psb_amn(icontxt, dat, root)
     

    -This subroutine sends a packet of data to a destination. +This subroutine implements a minimum absolute value reduction +operation based on the underlying communication library.

    Type:
    -
    Synchronous: see usage notes. +
    Synchronous.
    On Entry
    @@ -82,65 +83,38 @@ Intent: in. Specified as: an integer variable.
    dat
    -
    The data to be sent. +
    The local contribution to the global minimum.
    Scope: local.
    Type: required.
    -Intent: in. +Intent: inout.
    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 $m$ is -not specified, size must agree as well. +scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
    -
    dst
    -
    Destination process. +
    root
    +
    Process to hold the final value, or $-1$ to make it available + on all processes.
    Scope: global.
    -Type: required. +Type: optional.
    Intent: in.
    Specified as: an integer value $0<= dst <= np-1$. + WIDTH="165" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" + SRC="img124.png" + ALT="$-1<= root <= np-1$">, default -1.
    -
    m
    -
    Number of rows. -
    -Scope: global. -
    -Type: Optional. -
    -Intent: in. -
    -Specified as: an integer value -$0<= m <= size(dat,1)$. -
    -When $dat$ is a rank 2 array, specifies the number of rows to be sent -independently of the leading dimension $size(dat,1)$; must have the -same value on sending and receiving processes. -

    @@ -148,43 +122,57 @@ same value on sending and receiving processes.

    On Return
    +
    dat
    +
    On destination process(es), the result of the minimum operation. +
    +Scope: global. +
    +Type: required. +
    +Intent: inout. +
    +Specified as: an integer, real or complex variable, which may be a +scalar, or a rank 1 or 2 array. +
    +Type, kind, rank and size must agree on all processes. +

    Notes

      -
    1. This subroutine implies a synchronization, but only between the - calling process and the destination process $dst$. +
    2. The dat argument is both input and output, and its + value may be changed even on processes different from the final + result destination. +
    3. +
    4. The dat argument may also be a long integer scalar.


    - next - + up - previous - contents
    - Next: psb_rcv Receive - Up: Parallel environment routines - Previous: psb_amn Global -   Next: psb_snd Send + Up: Parallel environment routines + Previous: psb_amx Global +   Contents diff --git a/docs/html/node99.html b/docs/html/node99.html index 6a9983fa..62c941f4 100644 --- a/docs/html/node99.html +++ b/docs/html/node99.html @@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds Jens Lippmann, Marek Rouchal, Martin Wilck and others --> -psb_rcv -- Receive data - +psb_snd -- Send data + @@ -18,52 +18,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds + - + - next - + up - previous - contents
    - Next: Error handling - Up: Parallel environment routines - Previous: psb_snd Send -   Next: psb_rcv Receive + Up: Parallel environment routines + Previous: psb_amn Global +   Contents

    -

    -psb_rcv -- Receive data +

    +psb_snd -- Send data

    -call psb_rcv(icontxt, dat, src, m)
    +call psb_snd(icontxt, dat, dst, m)
     

    -This subroutine receives a packet of data to a destination. +This subroutine sends a packet of data to a destination.

    Type:
    -
    Synchronous: see usage notes. +
    Synchronous: see usage notes.
    On Entry
    @@ -80,8 +81,24 @@ Intent: in.
    Specified as: an integer variable.
    -
    src
    -
    Source process. +
    dat
    +
    The data to be sent. +
    +Scope: local. +
    +Type: required. +
    +Intent: in. +
    +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 $m$ is +not specified, size must agree as well. +
    +
    dst
    +
    Destination process.
    Scope: global.
    @@ -90,12 +107,12 @@ Type: required. Intent: in.
    Specified as: an integer value $0<= src <= np-1$. + WIDTH="145" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" + SRC="img126.png" + ALT="$0<= dst <= np-1$">.
    m
    Number of rows. @@ -131,22 +148,6 @@ same value on sending and receiving processes.
    On Return
    -
    dat
    -
    The data to be received. -
    -Scope: local. -
    -Type: required. -
    -Intent: inout. -
    -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 $m$ is -not specified, size must agree as well. -

    @@ -154,36 +155,36 @@ not specified, size must agree as well.

    1. This subroutine implies a synchronization, but only between the - calling process and the source process $src$. + calling process and the destination process $dst$.


    - next - + up - previous - contents
    - Next: Error handling - Up: Parallel environment routines - Previous: psb_snd Send -   Next: psb_rcv Receive + Up: Parallel environment routines + Previous: psb_amn Global +   Contents diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html index a3f23fda..90a70876 100644 --- a/docs/html/userhtml.html +++ b/docs/html/userhtml.html @@ -78,297 +78,301 @@ April 16, 2012. HREF="node5.html">Library contents
  • Application structure + -
  • Data Structures and Classes -
      + HREF="node8.html">Programming model +
    +
  • Descriptor data structure + HREF="node9.html">Data Structures and Classes +
  • get_context--Get communication context
    + HREF="node18.html">psb_cd_set_large_threshold -- Set threshold for + index mapping switch
  • Sparse Matrix class -
      + HREF="node19.html">Named Constants +
  • Methods + HREF="node20.html">Sparse Matrix class + + HREF="node28.html">is_bld, is_upd, is_asb -- Status check
  • Dense Vector Data Structure -
      + HREF="node29.html">Named Constants +
  • Methods + HREF="node30.html">Dense Vector Data Structure + + HREF="node34.html">sizeof -- Get memory occupation in bytes +of a dense vector matrix
  • Preconditioner data structure + HREF="node35.html">get_vect -- Get a copy of the vector contents -
  • Computational routines -
      + HREF="node36.html">Preconditioner data structure +
    +
  • psb_geaxpby -- General Dense Matrix Sum + HREF="node37.html">Computational routines +
    -
  • Communication routines -
    • psb_halo -- Halo Data Communication + HREF="node51.html">Communication routines +
      -
    • Data management routines -
      • psb_cdall -- Allocates a communication descriptor + HREF="node56.html">Data management routines +
        -
      • Parallel environment routines -
        • psb_init -- Initializes PSBLAS parallel environment + HREF="node84.html">Parallel environment routines +
          -
        • Error handling -
          • psb_errpush -- Pushes an error code onto the error - stack + HREF="node101.html">Error handling +
            -
          • Utilities -
            • hb_read -- Read a sparse matrix from a file in the - Harwell-Boeing format + HREF="node106.html">Utilities +
              -
            • Preconditioner routines -
              • psb_precinit -- Initialize a preconditioner + HREF="node112.html">Preconditioner routines +
                -
              • Iterative Methods -

                diff --git a/docs/psblas-3.0.pdf b/docs/psblas-3.0.pdf index a4df5d0d..f26903a2 100644 --- a/docs/psblas-3.0.pdf +++ b/docs/psblas-3.0.pdf @@ -37,669 +37,675 @@ endobj (2.3 Application structure) endobj 29 0 obj -<< /S /GoTo /D (subsection.2.4) >> +<< /S /GoTo /D (subsubsection.2.3.1) >> endobj 32 0 obj -(2.4 Programming model) +(2.3.1 User-defined index mappings) endobj 33 0 obj -<< /S /GoTo /D (section.3) >> +<< /S /GoTo /D (subsection.2.4) >> endobj 36 0 obj -(3 Data Structures and Classes) +(2.4 Programming model) endobj 37 0 obj -<< /S /GoTo /D (subsection.3.1) >> +<< /S /GoTo /D (section.3) >> endobj 40 0 obj -(3.1 Descriptor data structure) +(3 Data Structures and Classes) endobj 41 0 obj -<< /S /GoTo /D (subsubsection.3.1.1) >> +<< /S /GoTo /D (subsection.3.1) >> endobj 44 0 obj -(3.1.1 Methods) +(3.1 Descriptor data structure) endobj 45 0 obj -<< /S /GoTo /D (section*.2) >> +<< /S /GoTo /D (subsubsection.3.1.1) >> endobj 48 0 obj -(get\137local\137rows ) +(3.1.1 Methods) endobj 49 0 obj -<< /S /GoTo /D (section*.3) >> +<< /S /GoTo /D (section*.2) >> endobj 52 0 obj -(get\137local\137cols ) +(get\137local\137rows ) endobj 53 0 obj -<< /S /GoTo /D (section*.4) >> +<< /S /GoTo /D (section*.3) >> endobj 56 0 obj -(get\137global\137rows ) +(get\137local\137cols ) endobj 57 0 obj -<< /S /GoTo /D (section*.5) >> +<< /S /GoTo /D (section*.4) >> endobj 60 0 obj -(get\137global\137cols ) +(get\137global\137rows ) endobj 61 0 obj -<< /S /GoTo /D (section*.6) >> +<< /S /GoTo /D (section*.5) >> endobj 64 0 obj -(get\137context) +(get\137global\137cols ) endobj 65 0 obj -<< /S /GoTo /D (section*.7) >> +<< /S /GoTo /D (section*.6) >> endobj 68 0 obj -(psb\137cd\137get\137large\137threshold) +(get\137context) endobj 69 0 obj -<< /S /GoTo /D (section*.8) >> +<< /S /GoTo /D (section*.7) >> endobj 72 0 obj -(psb\137cd\137set\137large\137threshold) +(psb\137cd\137get\137large\137threshold) endobj 73 0 obj -<< /S /GoTo /D (subsubsection.3.1.2) >> +<< /S /GoTo /D (section*.8) >> endobj 76 0 obj -(3.1.2 Named Constants) +(psb\137cd\137set\137large\137threshold) endobj 77 0 obj -<< /S /GoTo /D (subsection.3.2) >> +<< /S /GoTo /D (subsubsection.3.1.2) >> endobj 80 0 obj -(3.2 Sparse Matrix class) +(3.1.2 Named Constants) endobj 81 0 obj -<< /S /GoTo /D (subsubsection.3.2.1) >> +<< /S /GoTo /D (subsection.3.2) >> endobj 84 0 obj -(3.2.1 Methods) +(3.2 Sparse Matrix class) endobj 85 0 obj -<< /S /GoTo /D (section*.9) >> +<< /S /GoTo /D (subsubsection.3.2.1) >> endobj 88 0 obj -(get\137nrows) +(3.2.1 Methods) endobj 89 0 obj -<< /S /GoTo /D (section*.10) >> +<< /S /GoTo /D (section*.9) >> endobj 92 0 obj -(get\137ncols) +(get\137nrows) endobj 93 0 obj -<< /S /GoTo /D (section*.11) >> +<< /S /GoTo /D (section*.10) >> endobj 96 0 obj -(get\137nnzeros) +(get\137ncols) endobj 97 0 obj -<< /S /GoTo /D (section*.12) >> +<< /S /GoTo /D (section*.11) >> endobj 100 0 obj -(get\137size) +(get\137nnzeros) endobj 101 0 obj -<< /S /GoTo /D (section*.13) >> +<< /S /GoTo /D (section*.12) >> endobj 104 0 obj -(sizeof) +(get\137size) endobj 105 0 obj -<< /S /GoTo /D (section*.14) >> +<< /S /GoTo /D (section*.13) >> endobj 108 0 obj -(get\137fmt) +(sizeof) endobj 109 0 obj -<< /S /GoTo /D (section*.15) >> +<< /S /GoTo /D (section*.14) >> endobj 112 0 obj -(is\137bld, is\137upd, is\137asb) +(get\137fmt) endobj 113 0 obj -<< /S /GoTo /D (subsubsection.3.2.2) >> +<< /S /GoTo /D (section*.15) >> endobj 116 0 obj -(3.2.2 Named Constants) +(is\137bld, is\137upd, is\137asb) endobj 117 0 obj -<< /S /GoTo /D (subsection.3.3) >> +<< /S /GoTo /D (subsubsection.3.2.2) >> endobj 120 0 obj -(3.3 Dense Vector Data Structure) +(3.2.2 Named Constants) endobj 121 0 obj -<< /S /GoTo /D (subsubsection.3.3.1) >> +<< /S /GoTo /D (subsection.3.3) >> endobj 124 0 obj -(3.3.1 Methods) +(3.3 Dense Vector Data Structure) endobj 125 0 obj -<< /S /GoTo /D (section*.16) >> +<< /S /GoTo /D (subsubsection.3.3.1) >> endobj 128 0 obj -(v\137get\137nrows) +(3.3.1 Methods) endobj 129 0 obj -<< /S /GoTo /D (section*.18) >> +<< /S /GoTo /D (section*.16) >> endobj 132 0 obj -(v\137sizeof) +(v\137get\137nrows) endobj 133 0 obj -<< /S /GoTo /D (section*.19) >> +<< /S /GoTo /D (section*.18) >> endobj 136 0 obj -(v\137get\137vect) +(v\137sizeof) endobj 137 0 obj -<< /S /GoTo /D (subsection.3.4) >> +<< /S /GoTo /D (section*.19) >> endobj 140 0 obj -(3.4 Preconditioner data structure) +(v\137get\137vect) endobj 141 0 obj -<< /S /GoTo /D (section.4) >> +<< /S /GoTo /D (subsection.3.4) >> endobj 144 0 obj -(4 Computational routines) +(3.4 Preconditioner data structure) endobj 145 0 obj -<< /S /GoTo /D (section*.20) >> +<< /S /GoTo /D (section.4) >> endobj 148 0 obj -(psb\137geaxpby) +(4 Computational routines) endobj 149 0 obj -<< /S /GoTo /D (section*.21) >> +<< /S /GoTo /D (section*.20) >> endobj 152 0 obj -(psb\137gedot) +(psb\137geaxpby) endobj 153 0 obj -<< /S /GoTo /D (section*.22) >> +<< /S /GoTo /D (section*.21) >> endobj 156 0 obj -(psb\137gedots) +(psb\137gedot) endobj 157 0 obj -<< /S /GoTo /D (section*.23) >> +<< /S /GoTo /D (section*.22) >> endobj 160 0 obj -(psb\137geamax) +(psb\137gedots) endobj 161 0 obj -<< /S /GoTo /D (section*.24) >> +<< /S /GoTo /D (section*.23) >> endobj 164 0 obj -(psb\137geamaxs) +(psb\137geamax) endobj 165 0 obj -<< /S /GoTo /D (section*.25) >> +<< /S /GoTo /D (section*.24) >> endobj 168 0 obj -(psb\137geasum) +(psb\137geamaxs) endobj 169 0 obj -<< /S /GoTo /D (section*.26) >> +<< /S /GoTo /D (section*.25) >> endobj 172 0 obj -(psb\137geasums) +(psb\137geasum) endobj 173 0 obj -<< /S /GoTo /D (section*.27) >> +<< /S /GoTo /D (section*.26) >> endobj 176 0 obj (psb\137geasums) endobj 177 0 obj -<< /S /GoTo /D (section*.28) >> +<< /S /GoTo /D (section*.27) >> endobj 180 0 obj -(psb\137genrm2s) +(psb\137geasums) endobj 181 0 obj -<< /S /GoTo /D (section*.29) >> +<< /S /GoTo /D (section*.28) >> endobj 184 0 obj -(psb\137spnrm1) +(psb\137genrm2s) endobj 185 0 obj -<< /S /GoTo /D (section*.30) >> +<< /S /GoTo /D (section*.29) >> endobj 188 0 obj -(psb\137spnrmi) +(psb\137spnrm1) endobj 189 0 obj -<< /S /GoTo /D (section*.31) >> +<< /S /GoTo /D (section*.30) >> endobj 192 0 obj -(psb\137spmm) +(psb\137spnrmi) endobj 193 0 obj -<< /S /GoTo /D (section*.32) >> +<< /S /GoTo /D (section*.31) >> endobj 196 0 obj -(psb\137spsm) +(psb\137spmm) endobj 197 0 obj -<< /S /GoTo /D (section.5) >> +<< /S /GoTo /D (section*.32) >> endobj 200 0 obj -(5 Communication routines) +(psb\137spsm) endobj 201 0 obj -<< /S /GoTo /D (section*.33) >> +<< /S /GoTo /D (section.5) >> endobj 204 0 obj -(psb\137halo) +(5 Communication routines) endobj 205 0 obj -<< /S /GoTo /D (section*.34) >> +<< /S /GoTo /D (section*.33) >> endobj 208 0 obj -(psb\137ovrl) +(psb\137halo) endobj 209 0 obj -<< /S /GoTo /D (section*.35) >> +<< /S /GoTo /D (section*.34) >> endobj 212 0 obj -(psb\137gather) +(psb\137ovrl) endobj 213 0 obj -<< /S /GoTo /D (section*.36) >> +<< /S /GoTo /D (section*.35) >> endobj 216 0 obj -(psb\137scatter) +(psb\137gather) endobj 217 0 obj -<< /S /GoTo /D (section.6) >> +<< /S /GoTo /D (section*.36) >> endobj 220 0 obj -(6 Data management routines) +(psb\137scatter) endobj 221 0 obj -<< /S /GoTo /D (section*.37) >> +<< /S /GoTo /D (section.6) >> endobj 224 0 obj -(psb\137cdall) +(6 Data management routines) endobj 225 0 obj -<< /S /GoTo /D (section*.38) >> +<< /S /GoTo /D (section*.37) >> endobj 228 0 obj -(psb\137cdins) +(psb\137cdall) endobj 229 0 obj -<< /S /GoTo /D (section*.39) >> +<< /S /GoTo /D (section*.38) >> endobj 232 0 obj -(psb\137cdasb) +(psb\137cdins) endobj 233 0 obj -<< /S /GoTo /D (section*.40) >> +<< /S /GoTo /D (section*.39) >> endobj 236 0 obj -(psb\137cdcpy) +(psb\137cdasb) endobj 237 0 obj -<< /S /GoTo /D (section*.41) >> +<< /S /GoTo /D (section*.40) >> endobj 240 0 obj -(psb\137cdfree) +(psb\137cdcpy) endobj 241 0 obj -<< /S /GoTo /D (section*.42) >> +<< /S /GoTo /D (section*.41) >> endobj 244 0 obj -(psb\137cdbldext) +(psb\137cdfree) endobj 245 0 obj -<< /S /GoTo /D (section*.43) >> +<< /S /GoTo /D (section*.42) >> endobj 248 0 obj -(psb\137spall) +(psb\137cdbldext) endobj 249 0 obj -<< /S /GoTo /D (section*.44) >> +<< /S /GoTo /D (section*.43) >> endobj 252 0 obj -(psb\137spins) +(psb\137spall) endobj 253 0 obj -<< /S /GoTo /D (section*.45) >> +<< /S /GoTo /D (section*.44) >> endobj 256 0 obj -(psb\137spasb) +(psb\137spins) endobj 257 0 obj -<< /S /GoTo /D (section*.46) >> +<< /S /GoTo /D (section*.45) >> endobj 260 0 obj -(psb\137spfree) +(psb\137spasb) endobj 261 0 obj -<< /S /GoTo /D (section*.47) >> +<< /S /GoTo /D (section*.46) >> endobj 264 0 obj -(psb\137sprn) +(psb\137spfree) endobj 265 0 obj -<< /S /GoTo /D (section*.48) >> +<< /S /GoTo /D (section*.47) >> endobj 268 0 obj -(psb\137geall) +(psb\137sprn) endobj 269 0 obj -<< /S /GoTo /D (section*.49) >> +<< /S /GoTo /D (section*.48) >> endobj 272 0 obj -(psb\137geins) +(psb\137geall) endobj 273 0 obj -<< /S /GoTo /D (section*.50) >> +<< /S /GoTo /D (section*.49) >> endobj 276 0 obj -(psb\137geasb) +(psb\137geins) endobj 277 0 obj -<< /S /GoTo /D (section*.51) >> +<< /S /GoTo /D (section*.50) >> endobj 280 0 obj -(psb\137gefree) +(psb\137geasb) endobj 281 0 obj -<< /S /GoTo /D (section*.52) >> +<< /S /GoTo /D (section*.51) >> endobj 284 0 obj -(psb\137gelp) +(psb\137gefree) endobj 285 0 obj -<< /S /GoTo /D (section*.53) >> +<< /S /GoTo /D (section*.52) >> endobj 288 0 obj -(psb\137glob\137to\137loc) +(psb\137gelp) endobj 289 0 obj -<< /S /GoTo /D (section*.54) >> +<< /S /GoTo /D (section*.53) >> endobj 292 0 obj -(psb\137loc\137to\137glob) +(psb\137glob\137to\137loc) endobj 293 0 obj -<< /S /GoTo /D (section*.55) >> +<< /S /GoTo /D (section*.54) >> endobj 296 0 obj -(psb\137is\137owned) +(psb\137loc\137to\137glob) endobj 297 0 obj -<< /S /GoTo /D (section*.56) >> +<< /S /GoTo /D (section*.55) >> endobj 300 0 obj -(psb\137owned\137index) +(psb\137is\137owned) endobj 301 0 obj -<< /S /GoTo /D (section*.57) >> +<< /S /GoTo /D (section*.56) >> endobj 304 0 obj -(psb\137is\137local) +(psb\137owned\137index) endobj 305 0 obj -<< /S /GoTo /D (section*.58) >> +<< /S /GoTo /D (section*.57) >> endobj 308 0 obj -(psb\137local\137index) +(psb\137is\137local) endobj 309 0 obj -<< /S /GoTo /D (section*.59) >> +<< /S /GoTo /D (section*.58) >> endobj 312 0 obj -(psb\137get\137boundary) +(psb\137local\137index) endobj 313 0 obj -<< /S /GoTo /D (section*.60) >> +<< /S /GoTo /D (section*.59) >> endobj 316 0 obj -(psb\137get\137overlap) +(psb\137get\137boundary) endobj 317 0 obj -<< /S /GoTo /D (section*.61) >> +<< /S /GoTo /D (section*.60) >> endobj 320 0 obj -(psb\137sp\137getrow) +(psb\137get\137overlap) endobj 321 0 obj -<< /S /GoTo /D (section*.62) >> +<< /S /GoTo /D (section*.61) >> endobj 324 0 obj -(psb\137sizeof) +(psb\137sp\137getrow) endobj 325 0 obj -<< /S /GoTo /D (section*.63) >> +<< /S /GoTo /D (section*.62) >> endobj 328 0 obj -(Sorting utilities) +(psb\137sizeof) endobj 329 0 obj -<< /S /GoTo /D (section.7) >> +<< /S /GoTo /D (section*.63) >> endobj 332 0 obj -(7 Parallel environment routines) +(Sorting utilities) endobj 333 0 obj -<< /S /GoTo /D (section*.64) >> +<< /S /GoTo /D (section.7) >> endobj 336 0 obj -(psb\137init) +(7 Parallel environment routines) endobj 337 0 obj -<< /S /GoTo /D (section*.65) >> +<< /S /GoTo /D (section*.64) >> endobj 340 0 obj +(psb\137init) +endobj +341 0 obj +<< /S /GoTo /D (section*.65) >> +endobj +344 0 obj (psb\137info) endobj -341 0 obj +345 0 obj << /S /GoTo /D (section*.66) >> endobj -344 0 obj +348 0 obj (psb\137exit) endobj -345 0 obj +349 0 obj << /S /GoTo /D (section*.67) >> endobj -348 0 obj +352 0 obj (psb\137get\137mpicomm) endobj -349 0 obj +353 0 obj << /S /GoTo /D (section*.68) >> endobj -352 0 obj +356 0 obj (psb\137get\137rank) endobj -353 0 obj +357 0 obj << /S /GoTo /D (section*.69) >> endobj -356 0 obj +360 0 obj (psb\137wtime) endobj -357 0 obj +361 0 obj << /S /GoTo /D (section*.70) >> endobj -360 0 obj +364 0 obj (psb\137barrier) endobj -361 0 obj +365 0 obj << /S /GoTo /D (section*.71) >> endobj -364 0 obj +368 0 obj (psb\137abort) endobj -365 0 obj +369 0 obj << /S /GoTo /D (section*.72) >> endobj -368 0 obj +372 0 obj (psb\137bcast) endobj -369 0 obj +373 0 obj << /S /GoTo /D (section*.73) >> endobj -372 0 obj +376 0 obj (psb\137sum) endobj -373 0 obj +377 0 obj << /S /GoTo /D (section*.74) >> endobj -376 0 obj +380 0 obj (psb\137max) endobj -377 0 obj +381 0 obj << /S /GoTo /D (section*.75) >> endobj -380 0 obj +384 0 obj (psb\137min) endobj -381 0 obj +385 0 obj << /S /GoTo /D (section*.76) >> endobj -384 0 obj +388 0 obj (psb\137amx) endobj -385 0 obj +389 0 obj << /S /GoTo /D (section*.77) >> endobj -388 0 obj +392 0 obj (psb\137amn) endobj -389 0 obj +393 0 obj << /S /GoTo /D (section*.78) >> endobj -392 0 obj +396 0 obj (psb\137snd) endobj -393 0 obj +397 0 obj << /S /GoTo /D (section*.79) >> endobj -396 0 obj +400 0 obj (psb\137rcv) endobj -397 0 obj +401 0 obj << /S /GoTo /D (section.8) >> endobj -400 0 obj +404 0 obj (8 Error handling) endobj -401 0 obj +405 0 obj << /S /GoTo /D (section*.80) >> endobj -404 0 obj +408 0 obj (psb\137errpush) endobj -405 0 obj +409 0 obj << /S /GoTo /D (section*.81) >> endobj -408 0 obj +412 0 obj (psb\137error) endobj -409 0 obj +413 0 obj << /S /GoTo /D (section*.82) >> endobj -412 0 obj +416 0 obj (psb\137set\137errverbosity) endobj -413 0 obj +417 0 obj << /S /GoTo /D (section*.83) >> endobj -416 0 obj +420 0 obj (psb\137set\137erraction) endobj -417 0 obj +421 0 obj << /S /GoTo /D (section.9) >> endobj -420 0 obj +424 0 obj (9 Utilities) endobj -421 0 obj +425 0 obj << /S /GoTo /D (section*.84) >> endobj -424 0 obj +428 0 obj (hb\137read) endobj -425 0 obj +429 0 obj << /S /GoTo /D (section*.85) >> endobj -428 0 obj +432 0 obj (hb\137write) endobj -429 0 obj +433 0 obj << /S /GoTo /D (section*.86) >> endobj -432 0 obj +436 0 obj (mm\137mat\137read) endobj -433 0 obj +437 0 obj << /S /GoTo /D (section*.87) >> endobj -436 0 obj +440 0 obj (mm\137vet\137read ) endobj -437 0 obj +441 0 obj << /S /GoTo /D (section*.88) >> endobj -440 0 obj +444 0 obj (mm\137mat\137write) endobj -441 0 obj +445 0 obj << /S /GoTo /D (section.10) >> endobj -444 0 obj +448 0 obj (10 Preconditioner routines) endobj -445 0 obj +449 0 obj << /S /GoTo /D (section*.89) >> endobj -448 0 obj +452 0 obj (psb\137precinit) endobj -449 0 obj +453 0 obj << /S /GoTo /D (section*.90) >> endobj -452 0 obj +456 0 obj (psb\137precbld) endobj -453 0 obj +457 0 obj << /S /GoTo /D (section*.91) >> endobj -456 0 obj +460 0 obj (psb\137precaply) endobj -457 0 obj +461 0 obj << /S /GoTo /D (section*.92) >> endobj -460 0 obj +464 0 obj (psb\137precdescr) endobj -461 0 obj +465 0 obj << /S /GoTo /D (section.11) >> endobj -464 0 obj +468 0 obj (11 Iterative Methods) endobj -465 0 obj +469 0 obj << /S /GoTo /D (section*.93) >> endobj -468 0 obj +472 0 obj (krylov) endobj -469 0 obj -<< /S /GoTo /D [470 0 R /Fit ] >> +473 0 obj +<< /S /GoTo /D [474 0 R /Fit ] >> endobj -472 0 obj << +476 0 obj << /Length 709 >> stream @@ -725,27 +731,27 @@ BT ET endstream endobj -470 0 obj << +474 0 obj << /Type /Page -/Contents 472 0 R -/Resources 471 0 R +/Contents 476 0 R +/Resources 475 0 R /MediaBox [0 0 595.276 841.89] -/Parent 479 0 R +/Parent 483 0 R >> endobj -473 0 obj << -/D [470 0 R /XYZ 99.895 740.998 null] +477 0 obj << +/D [474 0 R /XYZ 99.895 740.998 null] >> endobj -474 0 obj << -/D [470 0 R /XYZ 99.895 716.092 null] +478 0 obj << +/D [474 0 R /XYZ 99.895 716.092 null] >> endobj 6 0 obj << -/D [470 0 R /XYZ 99.895 716.092 null] +/D [474 0 R /XYZ 99.895 716.092 null] >> endobj -471 0 obj << -/Font << /F16 475 0 R /F18 476 0 R /F27 477 0 R /F8 478 0 R >> +475 0 obj << +/Font << /F16 479 0 R /F18 480 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -482 0 obj << +486 0 obj << /Length 77 >> stream @@ -758,22 +764,22 @@ BT ET endstream endobj -481 0 obj << +485 0 obj << /Type /Page -/Contents 482 0 R -/Resources 480 0 R +/Contents 486 0 R +/Resources 484 0 R /MediaBox [0 0 595.276 841.89] -/Parent 479 0 R +/Parent 483 0 R >> endobj -483 0 obj << -/D [481 0 R /XYZ 150.705 740.998 null] +487 0 obj << +/D [485 0 R /XYZ 150.705 740.998 null] >> endobj -480 0 obj << -/Font << /F8 478 0 R >> +484 0 obj << +/Font << /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -532 0 obj << -/Length 17970 +536 0 obj << +/Length 17798 >> stream 0 g 0 G @@ -810,7 +816,14 @@ BT [-1584(6)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.123 Td [(2.4)-1022(Programming)-334(mo)-27(del)]TJ + 22.914 -12.123 Td [(2.3.1)-1144(Us)-1(er-de\014n)1(e)-1(d)-333(index)-333(mappings)]TJ +0 g 0 G + [-847(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ +0 g 0 G + [-1584(8)]TJ +0 g 0 G +0 0 1 rg 0 0 1 RG + -22.914 -12.122 Td [(2.4)-1022(Programming)-334(mo)-27(del)]TJ 0 g 0 G [-736(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ 0 g 0 G @@ -821,56 +834,56 @@ BT 0 g 0 G [-18144(9)]TJ 0 0 1 rg 0 0 1 RG -/F8 9.9626 Tf 14.944 -12.122 Td [(3.1)-1022(Descriptor)-334(data)-333(structure)]TJ +/F8 9.9626 Tf 14.944 -12.123 Td [(3.1)-1022(Descriptor)-334(data)-333(structure)]TJ 0 g 0 G [-886(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1584(9)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.123 Td [(3.1.1)-1144(Metho)-28(ds)]TJ + 22.914 -12.122 Td [(3.1.1)-1144(Metho)-28(ds)]TJ 0 g 0 G [-356(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.122 Td [(get)]TJ + 0 -12.123 Td [(get)]TJ ET q -1 0 0 1 151.635 554.882 cm +1 0 0 1 151.635 542.76 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 554.683 Td [(lo)-28(cal)]TJ +/F8 9.9626 Tf 154.624 542.56 Td [(lo)-28(cal)]TJ ET q -1 0 0 1 175.423 554.882 cm +1 0 0 1 175.423 542.76 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 178.412 554.683 Td [(ro)28(ws)]TJ +/F8 9.9626 Tf 178.412 542.56 Td [(ro)28(ws)]TJ 0 g 0 G [-1277(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1083(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -40.659 -12.123 Td [(get)]TJ + -40.659 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 542.76 cm +1 0 0 1 151.635 530.637 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 542.56 Td [(lo)-28(cal)]TJ +/F8 9.9626 Tf 154.624 530.438 Td [(lo)-28(cal)]TJ ET q -1 0 0 1 175.423 542.76 cm +1 0 0 1 175.423 530.637 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 178.412 542.56 Td [(cols)]TJ +/F8 9.9626 Tf 178.412 530.438 Td [(cols)]TJ 0 g 0 G [-863(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -880,53 +893,53 @@ BT -40.659 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 530.637 cm +1 0 0 1 151.635 518.515 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 530.438 Td [(global)]TJ +/F8 9.9626 Tf 154.624 518.316 Td [(global)]TJ ET q -1 0 0 1 181.235 530.637 cm +1 0 0 1 181.235 518.515 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.224 530.438 Td [(ro)28(ws)]TJ +/F8 9.9626 Tf 184.224 518.316 Td [(ro)28(ws)]TJ 0 g 0 G [-694(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(12)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -46.47 -12.122 Td [(get)]TJ + -46.47 -12.123 Td [(get)]TJ ET q -1 0 0 1 151.635 518.515 cm +1 0 0 1 151.635 506.393 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 518.316 Td [(global)]TJ +/F8 9.9626 Tf 154.624 506.193 Td [(global)]TJ ET q -1 0 0 1 181.235 518.515 cm +1 0 0 1 181.235 506.393 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.224 518.316 Td [(cols)]TJ +/F8 9.9626 Tf 184.224 506.193 Td [(cols)]TJ 0 g 0 G [-1058(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(13)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -46.47 -12.123 Td [(get)]TJ + -46.47 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 506.393 cm +1 0 0 1 151.635 494.27 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 506.193 Td [(con)28(text)]TJ +/F8 9.9626 Tf 154.624 494.071 Td [(con)28(text)]TJ 0 g 0 G [-868(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -936,88 +949,88 @@ BT -16.87 -12.122 Td [(psb)]TJ ET q -1 0 0 1 153.351 494.27 cm +1 0 0 1 153.351 482.148 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 156.339 494.071 Td [(cd)]TJ +/F8 9.9626 Tf 156.339 481.949 Td [(cd)]TJ ET q -1 0 0 1 166.9 494.27 cm +1 0 0 1 166.9 482.148 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 169.889 494.071 Td [(get)]TJ +/F8 9.9626 Tf 169.889 481.949 Td [(get)]TJ ET q -1 0 0 1 183.77 494.27 cm +1 0 0 1 183.77 482.148 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 186.759 494.071 Td [(large)]TJ +/F8 9.9626 Tf 186.759 481.949 Td [(large)]TJ ET q -1 0 0 1 208.416 494.27 cm +1 0 0 1 208.416 482.148 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 211.405 494.071 Td [(threshold)]TJ +/F8 9.9626 Tf 211.405 481.949 Td [(threshold)]TJ 0 g 0 G [-549(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(13)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -73.652 -12.122 Td [(psb)]TJ + -73.652 -12.123 Td [(psb)]TJ ET q -1 0 0 1 153.351 482.148 cm +1 0 0 1 153.351 470.025 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 156.339 481.949 Td [(cd)]TJ +/F8 9.9626 Tf 156.339 469.826 Td [(cd)]TJ ET q -1 0 0 1 166.9 482.148 cm +1 0 0 1 166.9 470.025 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 169.889 481.949 Td [(set)]TJ +/F8 9.9626 Tf 169.889 469.826 Td [(set)]TJ ET q -1 0 0 1 182.718 482.148 cm +1 0 0 1 182.718 470.025 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 185.707 481.949 Td [(large)]TJ +/F8 9.9626 Tf 185.707 469.826 Td [(large)]TJ ET q -1 0 0 1 207.365 482.148 cm +1 0 0 1 207.365 470.025 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 210.354 481.949 Td [(threshold)]TJ +/F8 9.9626 Tf 210.354 469.826 Td [(threshold)]TJ 0 g 0 G [-654(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(13)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -72.601 -12.123 Td [(3.1.2)-1144(Nam)-1(ed)-333(Constan)28(ts)]TJ + -72.601 -12.122 Td [(3.1.2)-1144(Nam)-1(ed)-333(Constan)28(ts)]TJ 0 g 0 G [-1017(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(14)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -22.914 -12.122 Td [(3.2)-1022(Sparse)-334(Matri)1(x)-334(class)]TJ + -22.914 -12.123 Td [(3.2)-1022(Sparse)-334(Matri)1(x)-334(class)]TJ 0 g 0 G [-372(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(14)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.123 Td [(3.2.1)-1144(Metho)-28(ds)]TJ + 22.914 -12.122 Td [(3.2.1)-1144(Metho)-28(ds)]TJ 0 g 0 G [-356(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1027,39 +1040,39 @@ BT 0 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 433.658 cm +1 0 0 1 151.635 421.536 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 433.459 Td [(nro)28(ws)]TJ +/F8 9.9626 Tf 154.624 421.337 Td [(nro)28(ws)]TJ 0 g 0 G [-776(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(15)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -16.87 -12.122 Td [(get)]TJ + -16.87 -12.123 Td [(get)]TJ ET q -1 0 0 1 151.635 421.536 cm +1 0 0 1 151.635 409.414 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 421.337 Td [(ncols)]TJ +/F8 9.9626 Tf 154.624 409.214 Td [(ncols)]TJ 0 g 0 G [-362(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(15)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -16.87 -12.123 Td [(get)]TJ + -16.87 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 409.414 cm +1 0 0 1 151.635 397.291 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 409.214 Td [(nnzeros)]TJ +/F8 9.9626 Tf 154.624 397.092 Td [(nnzeros)]TJ 0 g 0 G [-804(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1069,67 +1082,67 @@ BT -16.87 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 397.291 cm +1 0 0 1 151.635 385.169 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 397.092 Td [(size)]TJ +/F8 9.9626 Tf 154.624 384.97 Td [(size)]TJ 0 g 0 G [-973(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(16)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -16.87 -12.122 Td [(sizeof)]TJ + -16.87 -12.123 Td [(sizeof)]TJ 0 g 0 G [-305(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ 0 g 0 G [-1084(17)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.123 Td [(get)]TJ + 0 -12.122 Td [(get)]TJ ET q -1 0 0 1 151.635 373.046 cm +1 0 0 1 151.635 360.924 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 154.624 372.847 Td [(fm)28(t)]TJ +/F8 9.9626 Tf 154.624 360.725 Td [(fm)28(t)]TJ 0 g 0 G [-257(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(17)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -16.87 -12.122 Td [(is)]TJ + -16.87 -12.123 Td [(is)]TJ ET q -1 0 0 1 145.048 360.924 cm +1 0 0 1 145.048 348.802 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 148.037 360.725 Td [(bld,)-333(is)]TJ +/F8 9.9626 Tf 148.037 348.602 Td [(bld,)-333(is)]TJ ET q -1 0 0 1 175.257 360.924 cm +1 0 0 1 175.257 348.802 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 178.246 360.725 Td [(up)-28(d,)-333(is)]TJ +/F8 9.9626 Tf 178.246 348.602 Td [(up)-28(d,)-333(is)]TJ ET q -1 0 0 1 208.51 360.924 cm +1 0 0 1 208.51 348.802 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 211.499 360.725 Td [(asb)]TJ +/F8 9.9626 Tf 211.499 348.602 Td [(asb)]TJ 0 g 0 G [-820(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(17)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -73.746 -12.123 Td [(3.2.2)-1144(Nam)-1(ed)-333(Constan)28(ts)]TJ + -73.746 -12.122 Td [(3.2.2)-1144(Nam)-1(ed)-333(Constan)28(ts)]TJ 0 g 0 G [-1017(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1143,28 +1156,28 @@ BT [-1084(18)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 22.914 -12.122 Td [(3.3.1)-1144(Metho)-28(ds)]TJ + 22.914 -12.123 Td [(3.3.1)-1144(Metho)-28(ds)]TJ 0 g 0 G [-356(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(19)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - 0 -12.123 Td [(v)]TJ + 0 -12.122 Td [(v)]TJ ET q -1 0 0 1 143.609 312.435 cm +1 0 0 1 143.609 300.312 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 146.598 312.235 Td [(get)]TJ +/F8 9.9626 Tf 146.598 300.113 Td [(get)]TJ ET q -1 0 0 1 160.479 312.435 cm +1 0 0 1 160.479 300.312 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 163.468 312.235 Td [(nro)28(ws)]TJ +/F8 9.9626 Tf 163.468 300.113 Td [(nro)28(ws)]TJ 0 g 0 G [-666(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1174,57 +1187,57 @@ BT -25.715 -12.122 Td [(v)]TJ ET q -1 0 0 1 143.609 300.312 cm +1 0 0 1 143.609 288.19 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 146.598 300.113 Td [(sizeof)]TJ +/F8 9.9626 Tf 146.598 287.991 Td [(sizeof)]TJ 0 g 0 G [-973(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(19)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -8.845 -12.122 Td [(v)]TJ + -8.845 -12.123 Td [(v)]TJ ET q -1 0 0 1 143.609 288.19 cm +1 0 0 1 143.609 276.067 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 146.598 287.991 Td [(get)]TJ +/F8 9.9626 Tf 146.598 275.868 Td [(get)]TJ ET q -1 0 0 1 160.479 288.19 cm +1 0 0 1 160.479 276.067 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 163.468 287.991 Td [(v)28(ect)]TJ +/F8 9.9626 Tf 163.468 275.868 Td [(v)28(ect)]TJ 0 g 0 G [-647(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(19)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -48.629 -12.123 Td [(3.4)-1022(Preconditioner)-333(data)-334(structure)]TJ + -48.629 -12.122 Td [(3.4)-1022(Preconditioner)-333(data)-334(structure)]TJ 0 g 0 G [-586(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(20)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F27 9.9626 Tf -14.944 -22.196 Td [(4)-925(Computational)-383(r)-1(ou)1(t)-1(ines)]TJ +/F27 9.9626 Tf -14.944 -22.197 Td [(4)-925(Computational)-383(r)-1(ou)1(t)-1(ines)]TJ 0 g 0 G [-19886(21)]TJ 0 0 1 rg 0 0 1 RG -/F8 9.9626 Tf 14.944 -12.123 Td [(psb)]TJ +/F8 9.9626 Tf 14.944 -12.122 Td [(psb)]TJ ET q -1 0 0 1 130.436 241.749 cm +1 0 0 1 130.436 229.626 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 241.549 Td [(geaxpb)28(y)]TJ +/F8 9.9626 Tf 133.425 229.427 Td [(geaxpb)28(y)]TJ 0 g 0 G [-301(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1234,39 +1247,39 @@ BT -18.586 -12.122 Td [(psb)]TJ ET q -1 0 0 1 130.436 229.626 cm +1 0 0 1 130.436 217.504 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 229.427 Td [(gedot)]TJ +/F8 9.9626 Tf 133.425 217.305 Td [(gedot)]TJ 0 g 0 G [-718(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1083(24)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.122 Td [(psb)]TJ + -18.586 -12.123 Td [(psb)]TJ ET q -1 0 0 1 130.436 217.504 cm +1 0 0 1 130.436 205.382 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 217.305 Td [(gedots)]TJ +/F8 9.9626 Tf 133.425 205.182 Td [(gedots)]TJ 0 g 0 G [-323(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(26)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.123 Td [(psb)]TJ + -18.586 -12.122 Td [(psb)]TJ ET q -1 0 0 1 130.436 205.382 cm +1 0 0 1 130.436 193.259 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 205.182 Td [(geamax)]TJ +/F8 9.9626 Tf 133.425 193.06 Td [(geamax)]TJ 0 g 0 G [-579(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1276,11 +1289,11 @@ BT -18.586 -12.122 Td [(psb)]TJ ET q -1 0 0 1 130.436 193.259 cm +1 0 0 1 130.436 181.137 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 193.06 Td [(geamaxs)]TJ +/F8 9.9626 Tf 133.425 180.937 Td [(geamaxs)]TJ 0 g 0 G [-962(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1290,11 +1303,11 @@ BT -18.586 -12.122 Td [(psb)]TJ ET q -1 0 0 1 130.436 181.137 cm +1 0 0 1 130.436 169.014 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 180.937 Td [(geasum)]TJ +/F8 9.9626 Tf 133.425 168.815 Td [(geasum)]TJ 0 g 0 G [-657(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1304,20 +1317,6 @@ BT -18.586 -12.122 Td [(psb)]TJ ET q -1 0 0 1 130.436 169.014 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F8 9.9626 Tf 133.425 168.815 Td [(geasums)]TJ -0 g 0 G - [-262(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ -0 g 0 G - [-1084(31)]TJ -0 g 0 G -0 0 1 rg 0 0 1 RG - -18.586 -12.122 Td [(psb)]TJ -ET -q 1 0 0 1 130.436 156.892 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q @@ -1326,7 +1325,7 @@ BT 0 g 0 G [-262(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(33)]TJ + [-1084(31)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.123 Td [(psb)]TJ @@ -1336,11 +1335,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 144.57 Td [(genrm2s)]TJ +/F8 9.9626 Tf 133.425 144.57 Td [(geasums)]TJ 0 g 0 G - [-265(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-262(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(34)]TJ + [-1084(33)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.122 Td [(psb)]TJ @@ -1350,11 +1349,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 132.448 Td [(spnrm1)]TJ +/F8 9.9626 Tf 133.425 132.448 Td [(genrm2s)]TJ 0 g 0 G - [-654(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-265(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(35)]TJ + [-1084(34)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.122 Td [(psb)]TJ @@ -1364,11 +1363,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 120.326 Td [(spnrmi)]TJ +/F8 9.9626 Tf 133.425 120.326 Td [(spnrm1)]TJ 0 g 0 G - [-876(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-654(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G - [-1084(36)]TJ + [-1084(35)]TJ 0 g 0 G 0 g 0 G 136.942 -29.888 Td [(i)]TJ @@ -1376,341 +1375,341 @@ BT ET endstream endobj -531 0 obj << +535 0 obj << /Type /Page -/Contents 532 0 R -/Resources 530 0 R +/Contents 536 0 R +/Resources 534 0 R /MediaBox [0 0 595.276 841.89] -/Parent 479 0 R -/Annots [ 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R 528 0 R ] +/Parent 483 0 R +/Annots [ 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R 528 0 R 529 0 R 530 0 R 531 0 R 532 0 R ] >> endobj -484 0 obj << +488 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [98.899 682.936 179.001 691.847] /Subtype /Link /A << /S /GoTo /D (section.1) >> >> endobj -485 0 obj << +489 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [98.899 660.74 202.863 669.651] /Subtype /Link /A << /S /GoTo /D (section.2) >> >> endobj -486 0 obj << +490 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 648.617 225.868 657.528] /Subtype /Link /A << /S /GoTo /D (subsection.2.1) >> >> endobj -487 0 obj << +491 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [113.843 634.558 210.675 645.406] /Subtype /Link /A << /S /GoTo /D (subsection.2.2) >> >> endobj -488 0 obj << +492 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.843 622.435 232.122 633.284] +/Subtype /Link +/A << /S /GoTo /D (subsection.2.3) >> +>> endobj +493 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 622.435 232.122 633.284] +/Rect [136.757 610.313 296.409 621.161] /Subtype /Link -/A << /S /GoTo /D (subsection.2.3) >> +/A << /S /GoTo /D (subsubsection.2.3.1) >> >> endobj -489 0 obj << +494 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 610.313 227.777 621.161] +/Rect [113.843 598.191 227.777 609.039] /Subtype /Link /A << /S /GoTo /D (subsection.2.4) >> >> endobj -490 0 obj << +495 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 590.054 258.112 598.965] +/Rect [98.899 577.931 258.112 586.842] /Subtype /Link /A << /S /GoTo /D (section.3) >> >> endobj -491 0 obj << +496 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 575.994 249.529 586.842] +/Rect [113.843 563.872 249.529 574.72] /Subtype /Link /A << /S /GoTo /D (subsection.3.1) >> >> endobj -492 0 obj << +497 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 565.809 208.322 574.72] +/Rect [136.757 553.687 208.322 562.598] /Subtype /Link /A << /S /GoTo /D (subsubsection.3.1.1) >> >> endobj -493 0 obj << +498 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 551.749 202.461 562.598] +/Rect [136.757 539.627 202.461 550.475] /Subtype /Link /A << /S /GoTo /D (section*.2) >> >> endobj -494 0 obj << +499 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 539.627 198.836 550.475] +/Rect [136.757 527.505 198.836 538.353] /Subtype /Link /A << /S /GoTo /D (section*.3) >> >> endobj -495 0 obj << +500 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 527.505 208.273 538.353] +/Rect [136.757 515.382 208.273 526.23] /Subtype /Link /A << /S /GoTo /D (section*.4) >> >> endobj -496 0 obj << +501 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 515.382 204.647 526.23] +/Rect [136.757 503.26 204.647 514.108] /Subtype /Link /A << /S /GoTo /D (section*.5) >> >> endobj -497 0 obj << +502 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 503.26 187.722 513.61] +/Rect [136.757 491.137 187.722 501.488] /Subtype /Link /A << /S /GoTo /D (section*.6) >> >> endobj -498 0 obj << +503 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 491.137 252.889 501.986] +/Rect [136.757 479.015 252.889 489.863] /Subtype /Link /A << /S /GoTo /D (section*.7) >> >> endobj -499 0 obj << +504 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 479.015 251.837 489.863] +/Rect [136.757 466.893 251.837 477.741] /Subtype /Link /A << /S /GoTo /D (section*.8) >> >> endobj -500 0 obj << +505 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 468.83 248.228 477.741] +/Rect [136.757 456.708 248.228 465.619] /Subtype /Link /A << /S /GoTo /D (subsubsection.3.1.2) >> >> endobj -501 0 obj << +506 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 454.77 223.654 465.619] +/Rect [113.843 442.648 223.654 453.496] /Subtype /Link /A << /S /GoTo /D (subsection.3.2) >> >> endobj -502 0 obj << +507 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 444.585 208.322 453.496] +/Rect [136.757 432.463 208.322 441.374] /Subtype /Link /A << /S /GoTo /D (subsubsection.3.2.1) >> >> endobj -503 0 obj << +508 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 430.526 180.886 440.876] +/Rect [136.757 418.403 180.886 428.753] /Subtype /Link /A << /S /GoTo /D (section*.9) >> >> endobj -504 0 obj << +509 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 418.403 177.261 429.251] +/Rect [136.757 406.281 177.261 417.129] /Subtype /Link /A << /S /GoTo /D (section*.10) >> >> endobj -505 0 obj << +510 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 406.281 188.358 416.631] +/Rect [136.757 394.159 188.358 404.509] /Subtype /Link /A << /S /GoTo /D (section*.11) >> >> endobj -506 0 obj << +511 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 394.159 171.173 404.742] +/Rect [136.757 382.036 171.173 392.619] /Subtype /Link /A << /S /GoTo /D (section*.12) >> >> endobj -507 0 obj << +512 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 383.973 162.328 392.884] +/Rect [136.757 371.851 162.328 380.762] /Subtype /Link /A << /S /GoTo /D (section*.13) >> >> endobj -508 0 obj << +513 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 369.914 170.564 380.762] +/Rect [136.757 357.791 170.564 368.64] /Subtype /Link /A << /S /GoTo /D (section*.14) >> >> endobj -509 0 obj << +514 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 357.791 226.941 368.64] +/Rect [136.757 345.669 226.941 356.517] /Subtype /Link /A << /S /GoTo /D (section*.15) >> >> endobj -510 0 obj << +515 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 347.606 248.228 356.517] +/Rect [136.757 335.484 248.228 344.395] /Subtype /Link /A << /S /GoTo /D (subsubsection.3.2.2) >> >> endobj -511 0 obj << +516 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 335.484 265.358 344.284] +/Rect [113.843 323.361 265.358 332.162] /Subtype /Link /A << /S /GoTo /D (subsection.3.3) >> >> endobj -512 0 obj << +517 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 323.361 208.322 332.272] +/Rect [136.757 311.239 208.322 320.15] /Subtype /Link /A << /S /GoTo /D (subsubsection.3.3.1) >> >> endobj -513 0 obj << +518 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 309.302 189.731 319.652] +/Rect [136.757 297.18 189.731 307.53] /Subtype /Link /A << /S /GoTo /D (section*.16) >> >> endobj -514 0 obj << +519 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 299.117 171.173 308.028] +/Rect [136.757 286.994 171.173 295.905] /Subtype /Link /A << /S /GoTo /D (section*.18) >> >> endobj -515 0 obj << +520 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 285.057 182.176 295.407] +/Rect [136.757 272.935 182.176 283.285] /Subtype /Link /A << /S /GoTo /D (section*.19) >> >> endobj -516 0 obj << +521 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 274.872 268.015 283.783] +/Rect [113.843 262.75 268.015 271.661] /Subtype /Link /A << /S /GoTo /D (subsection.3.4) >> >> endobj -517 0 obj << +522 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 250.738 235.028 261.586] +/Rect [98.899 238.616 235.028 249.464] /Subtype /Link /A << /S /GoTo /D (section.4) >> >> endobj -518 0 obj << +523 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 238.616 170.121 249.464] +/Rect [113.843 226.494 170.121 237.342] /Subtype /Link /A << /S /GoTo /D (section*.20) >> >> endobj -519 0 obj << +524 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 226.494 158.221 237.342] +/Rect [113.843 214.371 158.221 225.219] /Subtype /Link /A << /S /GoTo /D (section*.21) >> >> endobj -520 0 obj << +525 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 214.371 162.151 225.219] +/Rect [113.843 202.249 162.151 213.097] /Subtype /Link /A << /S /GoTo /D (section*.22) >> >> endobj -521 0 obj << +526 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 202.249 167.354 213.097] +/Rect [113.843 190.126 167.354 200.975] /Subtype /Link /A << /S /GoTo /D (section*.23) >> >> endobj -522 0 obj << +527 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 190.126 171.283 200.975] +/Rect [113.843 178.004 171.283 188.852] /Subtype /Link /A << /S /GoTo /D (section*.24) >> >> endobj -523 0 obj << +528 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 178.004 166.579 188.852] +/Rect [113.843 165.882 166.579 176.73] /Subtype /Link /A << /S /GoTo /D (section*.25) >> >> endobj -524 0 obj << +529 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 165.882 170.508 176.73] +/Rect [113.843 153.759 170.508 164.608] /Subtype /Link /A << /S /GoTo /D (section*.26) >> >> endobj -525 0 obj << +530 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 153.759 170.508 164.608] +/Rect [113.843 141.637 170.508 152.485] /Subtype /Link /A << /S /GoTo /D (section*.27) >> >> endobj -526 0 obj << +531 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 141.637 170.481 152.485] +/Rect [113.843 129.515 170.481 140.363] /Subtype /Link /A << /S /GoTo /D (section*.28) >> >> endobj -527 0 obj << +532 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 129.515 166.606 140.363] +/Rect [113.843 117.392 166.606 128.24] /Subtype /Link /A << /S /GoTo /D (section*.29) >> >> endobj -528 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 117.392 164.393 128.24] -/Subtype /Link -/A << /S /GoTo /D (section*.30) >> +537 0 obj << +/D [535 0 R /XYZ 99.895 740.998 null] >> endobj -533 0 obj << -/D [531 0 R /XYZ 99.895 740.998 null] +538 0 obj << +/D [535 0 R /XYZ 99.895 696.143 null] >> endobj 534 0 obj << -/D [531 0 R /XYZ 99.895 696.143 null] ->> endobj -530 0 obj << -/Font << /F16 475 0 R /F27 477 0 R /F8 478 0 R >> +/Font << /F16 479 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -584 0 obj << -/Length 21523 +588 0 obj << +/Length 21513 >> stream 0 g 0 G @@ -1724,7 +1723,21 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 706.129 Td [(spmm)]TJ +/F8 9.9626 Tf 184.235 706.129 Td [(spnrmi)]TJ +0 g 0 G + [-876(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ +0 g 0 G + [-1084(36)]TJ +0 g 0 G +0 0 1 rg 0 0 1 RG + -18.586 -12.08 Td [(psb)]TJ +ET +q +1 0 0 1 181.246 694.248 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F8 9.9626 Tf 184.235 694.049 Td [(spmm)]TJ 0 g 0 G [-490(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1734,11 +1747,11 @@ BT -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 694.248 cm +1 0 0 1 181.246 682.169 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 694.049 Td [(spsm)]TJ +/F8 9.9626 Tf 184.235 681.969 Td [(spsm)]TJ 0 g 0 G [-929(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1752,39 +1765,39 @@ BT /F8 9.9626 Tf 14.944 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 660.043 cm +1 0 0 1 181.246 647.964 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 659.844 Td [(halo)]TJ +/F8 9.9626 Tf 184.235 647.764 Td [(halo)]TJ 0 g 0 G [-495(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(43)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ + -18.586 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 647.964 cm +1 0 0 1 181.246 635.884 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 647.764 Td [(o)28(vrl)]TJ +/F8 9.9626 Tf 184.235 635.685 Td [(o)28(vrl)]TJ 0 g 0 G [-659(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ 0 g 0 G [-1084(46)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.079 Td [(psb)]TJ + -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 635.884 cm +1 0 0 1 181.246 623.804 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 635.685 Td [(gather)]TJ +/F8 9.9626 Tf 184.235 623.605 Td [(gather)]TJ 0 g 0 G [-326(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1794,11 +1807,11 @@ BT -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 623.804 cm +1 0 0 1 181.246 611.725 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 623.605 Td [(scatter)]TJ +/F8 9.9626 Tf 184.235 611.525 Td [(scatter)]TJ 0 g 0 G [-932(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1812,39 +1825,39 @@ BT /F8 9.9626 Tf 14.944 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 589.599 cm +1 0 0 1 181.246 577.519 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 589.4 Td [(cdall)]TJ +/F8 9.9626 Tf 184.235 577.32 Td [(cdall)]TJ 0 g 0 G [-273(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(54)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ + -18.586 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 577.519 cm +1 0 0 1 181.246 565.44 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 577.32 Td [(cdins)]TJ +/F8 9.9626 Tf 184.235 565.241 Td [(cdins)]TJ 0 g 0 G [-879(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(58)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.079 Td [(psb)]TJ + -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 565.44 cm +1 0 0 1 181.246 553.36 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 565.241 Td [(cdasb)]TJ +/F8 9.9626 Tf 184.235 553.161 Td [(cdasb)]TJ 0 g 0 G [-657(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1854,11 +1867,11 @@ BT -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 553.36 cm +1 0 0 1 181.246 541.28 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 553.161 Td [(cdcp)28(y)]TJ +/F8 9.9626 Tf 184.235 541.081 Td [(cdcp)28(y)]TJ 0 g 0 G [-607(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1868,39 +1881,39 @@ BT -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 541.28 cm +1 0 0 1 181.246 529.201 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 541.081 Td [(cdfree)]TJ +/F8 9.9626 Tf 184.235 529.001 Td [(cdfree)]TJ 0 g 0 G [-520(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(62)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ + -18.586 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 529.201 cm +1 0 0 1 181.246 517.121 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 529.001 Td [(cdbldext)]TJ +/F8 9.9626 Tf 184.235 516.922 Td [(cdbldext)]TJ 0 g 0 G [-912(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(63)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.079 Td [(psb)]TJ + -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 517.121 cm +1 0 0 1 181.246 505.041 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 516.922 Td [(spall)]TJ +/F8 9.9626 Tf 184.235 504.842 Td [(spall)]TJ 0 g 0 G [-323(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1910,39 +1923,39 @@ BT -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 505.041 cm +1 0 0 1 181.246 492.962 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 504.842 Td [(spins)]TJ +/F8 9.9626 Tf 184.235 492.762 Td [(spins)]TJ 0 g 0 G [-929(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(66)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ + -18.586 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 492.962 cm +1 0 0 1 181.246 480.882 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 492.762 Td [(spasb)]TJ +/F8 9.9626 Tf 184.235 480.683 Td [(spasb)]TJ 0 g 0 G [-707(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1083(68)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.079 Td [(psb)]TJ + -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 480.882 cm +1 0 0 1 181.246 468.802 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 480.683 Td [(spfree)]TJ +/F8 9.9626 Tf 184.235 468.603 Td [(spfree)]TJ 0 g 0 G [-570(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1952,39 +1965,39 @@ BT -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 468.802 cm +1 0 0 1 181.246 456.722 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 468.603 Td [(sprn)]TJ +/F8 9.9626 Tf 184.235 456.523 Td [(sprn)]TJ 0 g 0 G [-431(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ 0 g 0 G [-1084(71)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ + -18.586 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 456.722 cm +1 0 0 1 181.246 444.643 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 456.523 Td [(geall)]TJ +/F8 9.9626 Tf 184.235 444.444 Td [(geall)]TJ 0 g 0 G [-329(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(72)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.079 Td [(psb)]TJ + -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 444.643 cm +1 0 0 1 181.246 432.563 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 444.444 Td [(geins)]TJ +/F8 9.9626 Tf 184.235 432.364 Td [(geins)]TJ 0 g 0 G [-934(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -1994,11 +2007,11 @@ BT -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 432.563 cm +1 0 0 1 181.246 420.483 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 432.364 Td [(geasb)]TJ +/F8 9.9626 Tf 184.235 420.284 Td [(geasb)]TJ 0 g 0 G [-712(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2008,53 +2021,53 @@ BT -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 420.483 cm +1 0 0 1 181.246 408.404 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 420.284 Td [(gefree)]TJ +/F8 9.9626 Tf 184.235 408.204 Td [(gefree)]TJ 0 g 0 G [-576(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(76)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ + -18.586 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 408.404 cm +1 0 0 1 181.246 396.324 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 408.204 Td [(gelp)]TJ +/F8 9.9626 Tf 184.235 396.125 Td [(gelp)]TJ 0 g 0 G [-551(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(77)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.079 Td [(psb)]TJ + -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 396.324 cm +1 0 0 1 181.246 384.244 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 396.125 Td [(glob)]TJ +/F8 9.9626 Tf 184.235 384.045 Td [(glob)]TJ ET q -1 0 0 1 203.097 396.324 cm +1 0 0 1 203.097 384.244 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 206.086 396.125 Td [(to)]TJ +/F8 9.9626 Tf 206.086 384.045 Td [(to)]TJ ET q -1 0 0 1 215.54 396.324 cm +1 0 0 1 215.54 384.244 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 218.528 396.125 Td [(lo)-28(c)]TJ +/F8 9.9626 Tf 218.528 384.045 Td [(lo)-28(c)]TJ 0 g 0 G [-747(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2064,67 +2077,67 @@ BT -52.879 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 384.244 cm +1 0 0 1 181.246 372.165 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 384.045 Td [(lo)-28(c)]TJ +/F8 9.9626 Tf 184.235 371.965 Td [(lo)-28(c)]TJ ET q -1 0 0 1 197.286 384.244 cm +1 0 0 1 197.286 372.165 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 200.275 384.045 Td [(to)]TJ +/F8 9.9626 Tf 200.275 371.965 Td [(to)]TJ ET q -1 0 0 1 209.728 384.244 cm +1 0 0 1 209.728 372.165 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 212.717 384.045 Td [(glob)]TJ +/F8 9.9626 Tf 212.717 371.965 Td [(glob)]TJ 0 g 0 G [-748(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1083(80)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -47.068 -12.08 Td [(psb)]TJ + -47.068 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 372.165 cm +1 0 0 1 181.246 360.085 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 371.965 Td [(is)]TJ +/F8 9.9626 Tf 184.235 359.886 Td [(is)]TJ ET q -1 0 0 1 191.53 372.165 cm +1 0 0 1 191.53 360.085 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 194.518 371.965 Td [(o)28(wned)]TJ +/F8 9.9626 Tf 194.518 359.886 Td [(o)28(wned)]TJ 0 g 0 G [-880(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(81)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -28.869 -12.079 Td [(psb)]TJ + -28.869 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 360.085 cm +1 0 0 1 181.246 348.005 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 359.886 Td [(o)28(wned)]TJ +/F8 9.9626 Tf 184.235 347.806 Td [(o)28(wned)]TJ ET q -1 0 0 1 212.23 360.085 cm +1 0 0 1 212.23 348.005 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 215.219 359.886 Td [(index)]TJ +/F8 9.9626 Tf 215.219 347.806 Td [(index)]TJ 0 g 0 G [-746(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2134,18 +2147,18 @@ BT -49.57 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 348.005 cm +1 0 0 1 181.246 335.925 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 347.806 Td [(is)]TJ +/F8 9.9626 Tf 184.235 335.726 Td [(is)]TJ ET q -1 0 0 1 191.53 348.005 cm +1 0 0 1 191.53 335.925 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 194.518 347.806 Td [(lo)-28(cal)]TJ +/F8 9.9626 Tf 194.518 335.726 Td [(lo)-28(cal)]TJ 0 g 0 G [-824(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2155,18 +2168,18 @@ BT -28.869 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 335.925 cm +1 0 0 1 181.246 323.846 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 335.726 Td [(lo)-28(cal)]TJ +/F8 9.9626 Tf 184.235 323.647 Td [(lo)-28(cal)]TJ ET q -1 0 0 1 205.035 335.925 cm +1 0 0 1 205.035 323.846 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 208.023 335.726 Td [(index)]TJ +/F8 9.9626 Tf 208.023 323.647 Td [(index)]TJ 0 g 0 G [-691(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2176,18 +2189,18 @@ BT -42.374 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 323.846 cm +1 0 0 1 181.246 311.766 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 323.647 Td [(get)]TJ +/F8 9.9626 Tf 184.235 311.567 Td [(get)]TJ ET q -1 0 0 1 198.116 323.846 cm +1 0 0 1 198.116 311.766 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 201.105 323.647 Td [(b)-28(oundary)]TJ +/F8 9.9626 Tf 201.105 311.567 Td [(b)-28(oundary)]TJ 0 g 0 G [-354(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2197,18 +2210,18 @@ BT -35.456 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 311.766 cm +1 0 0 1 181.246 299.686 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 311.567 Td [(get)]TJ +/F8 9.9626 Tf 184.235 299.487 Td [(get)]TJ ET q -1 0 0 1 198.116 311.766 cm +1 0 0 1 198.116 299.686 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 201.105 311.567 Td [(o)28(v)28(erlap)]TJ +/F8 9.9626 Tf 201.105 299.487 Td [(o)28(v)28(erlap)]TJ 0 g 0 G [-605(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2218,57 +2231,57 @@ BT -35.456 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 299.686 cm +1 0 0 1 181.246 287.607 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 299.487 Td [(sp)]TJ +/F8 9.9626 Tf 184.235 287.407 Td [(sp)]TJ ET q -1 0 0 1 194.297 299.686 cm +1 0 0 1 194.297 287.607 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 197.286 299.487 Td [(getro)28(w)]TJ +/F8 9.9626 Tf 197.286 287.407 Td [(getro)28(w)]TJ 0 g 0 G [-433(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(87)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -31.637 -12.08 Td [(psb)]TJ + -31.637 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 287.607 cm +1 0 0 1 181.246 275.527 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 287.407 Td [(sizeof)]TJ +/F8 9.9626 Tf 184.235 275.328 Td [(sizeof)]TJ 0 g 0 G [-740(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(89)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.079 Td [(Sorting)-333(utilities)]TJ + -18.586 -12.08 Td [(Sorting)-333(utilities)]TJ 0 g 0 G [-519(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1083(90)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F27 9.9626 Tf -14.944 -22.126 Td [(7)-925(P)32(arallel)-384(en)32(vironmen)32(t)-383(routines)]TJ +/F27 9.9626 Tf -14.944 -22.125 Td [(7)-925(P)32(arallel)-384(en)32(vironmen)32(t)-383(routines)]TJ 0 g 0 G [-16891(92)]TJ 0 0 1 rg 0 0 1 RG -/F8 9.9626 Tf 14.944 -12.079 Td [(psb)]TJ +/F8 9.9626 Tf 14.944 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 241.322 cm +1 0 0 1 181.246 229.242 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 241.123 Td [(init)]TJ +/F8 9.9626 Tf 184.235 229.043 Td [(init)]TJ 0 g 0 G [-829(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2278,46 +2291,46 @@ BT -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 229.242 cm +1 0 0 1 181.246 217.162 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 229.043 Td [(info)]TJ +/F8 9.9626 Tf 184.235 216.963 Td [(info)]TJ 0 g 0 G [-690(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(94)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ + -18.586 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 217.162 cm +1 0 0 1 181.246 205.083 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 216.963 Td [(exit)]TJ +/F8 9.9626 Tf 184.235 204.884 Td [(exit)]TJ 0 g 0 G [-690(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(95)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.079 Td [(psb)]TJ + -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 205.083 cm +1 0 0 1 181.246 193.003 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 204.884 Td [(get)]TJ +/F8 9.9626 Tf 184.235 192.804 Td [(get)]TJ ET q -1 0 0 1 198.116 205.083 cm +1 0 0 1 198.116 193.003 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 201.105 204.884 Td [(mpicomm)]TJ +/F8 9.9626 Tf 201.105 192.804 Td [(mpicomm)]TJ 0 g 0 G [-1024(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2327,18 +2340,18 @@ BT -35.456 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 193.003 cm +1 0 0 1 181.246 180.923 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 192.804 Td [(get)]TJ +/F8 9.9626 Tf 184.235 180.724 Td [(get)]TJ ET q -1 0 0 1 198.116 193.003 cm +1 0 0 1 198.116 180.923 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 201.105 192.804 Td [(rank)]TJ +/F8 9.9626 Tf 201.105 180.724 Td [(rank)]TJ 0 g 0 G [-994(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2348,39 +2361,39 @@ BT -35.456 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 180.923 cm +1 0 0 1 181.246 168.844 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 180.724 Td [(wtime)]TJ +/F8 9.9626 Tf 184.235 168.644 Td [(wtime)]TJ 0 g 0 G [-440(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-1084(98)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ + -18.586 -12.079 Td [(psb)]TJ ET q -1 0 0 1 181.246 168.844 cm +1 0 0 1 181.246 156.764 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 168.644 Td [(barrier)]TJ +/F8 9.9626 Tf 184.235 156.565 Td [(barrier)]TJ 0 g 0 G [-931(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ 0 g 0 G [-1084(99)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -12.079 Td [(psb)]TJ + -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 156.764 cm +1 0 0 1 181.246 144.684 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 156.565 Td [(ab)-28(ort)]TJ +/F8 9.9626 Tf 184.235 144.485 Td [(ab)-28(ort)]TJ 0 g 0 G [-742(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2390,30 +2403,16 @@ BT -18.586 -12.08 Td [(psb)]TJ ET q -1 0 0 1 181.246 144.684 cm +1 0 0 1 181.246 132.605 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 144.485 Td [(b)-28(cast)]TJ +/F8 9.9626 Tf 184.235 132.405 Td [(b)-28(cast)]TJ 0 g 0 G [-795(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-584(101)]TJ 0 g 0 G -0 0 1 rg 0 0 1 RG - -18.586 -12.08 Td [(psb)]TJ -ET -q -1 0 0 1 181.246 132.605 cm -[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S -Q -BT -/F8 9.9626 Tf 184.235 132.405 Td [(sum)]TJ -0 g 0 G - [-545(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)]TJ -0 g 0 G - [-584(102)]TJ -0 g 0 G 0 0 1 rg 0 0 1 RG -18.586 -12.079 Td [(psb)]TJ ET @@ -2422,11 +2421,11 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 184.235 120.326 Td [(max)]TJ +/F8 9.9626 Tf 184.235 120.326 Td [(sum)]TJ 0 g 0 G - [-468(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ + [-545(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)]TJ 0 g 0 G - [-583(103)]TJ + [-584(102)]TJ 0 g 0 G 0 g 0 G 135.558 -29.888 Td [(ii)]TJ @@ -2434,352 +2433,352 @@ BT ET endstream endobj -583 0 obj << +587 0 obj << /Type /Page -/Contents 584 0 R -/Resources 582 0 R +/Contents 588 0 R +/Resources 586 0 R /MediaBox [0 0 595.276 841.89] -/Parent 479 0 R -/Annots [ 529 0 R 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R ] +/Parent 483 0 R +/Annots [ 533 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R 581 0 R 582 0 R 583 0 R 584 0 R ] >> endobj -529 0 obj << +533 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.653 703.195 215.202 714.044] +/Subtype /Link +/A << /S /GoTo /D (section*.30) >> +>> endobj +539 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 703.195 211.3 714.044] +/Rect [164.653 691.116 211.3 701.964] /Subtype /Link /A << /S /GoTo /D (section*.31) >> >> endobj -535 0 obj << +540 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 691.116 206.927 701.964] +/Rect [164.653 679.036 206.927 689.884] /Subtype /Link /A << /S /GoTo /D (section*.32) >> >> endobj -536 0 obj << +541 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 670.928 290.134 679.839] +/Rect [149.709 658.848 290.134 667.759] /Subtype /Link /A << /S /GoTo /D (section.5) >> >> endobj -537 0 obj << +542 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 656.911 203.496 667.759] +/Rect [164.653 644.831 203.496 655.679] /Subtype /Link /A << /S /GoTo /D (section*.33) >> >> endobj -538 0 obj << +543 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 644.831 201.863 655.679] +/Rect [164.653 632.751 201.863 643.599] /Subtype /Link /A << /S /GoTo /D (section*.34) >> >> endobj -539 0 obj << +544 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 632.751 212.933 643.599] +/Rect [164.653 620.672 212.933 631.52] /Subtype /Link /A << /S /GoTo /D (section*.35) >> >> endobj -540 0 obj << +545 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 620.672 214.648 631.52] +/Rect [164.653 608.592 214.648 619.44] /Subtype /Link /A << /S /GoTo /D (section*.36) >> >> endobj -541 0 obj << +546 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 598.546 302.58 609.394] +/Rect [149.709 586.466 302.58 597.315] /Subtype /Link /A << /S /GoTo /D (section.6) >> >> endobj -542 0 obj << +547 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 586.466 205.71 597.315] +/Rect [164.653 574.387 205.71 585.235] /Subtype /Link /A << /S /GoTo /D (section*.37) >> >> endobj -543 0 obj << +548 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 574.387 207.426 585.235] +/Rect [164.653 562.307 207.426 573.155] /Subtype /Link /A << /S /GoTo /D (section*.38) >> >> endobj -544 0 obj << +549 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 562.307 209.639 573.155] +/Rect [164.653 550.227 209.639 561.076] /Subtype /Link /A << /S /GoTo /D (section*.39) >> >> endobj -545 0 obj << +550 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 550.227 210.138 561.076] +/Rect [164.653 538.148 210.138 548.996] /Subtype /Link /A << /S /GoTo /D (section*.40) >> >> endobj -546 0 obj << +551 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 538.148 210.996 548.996] +/Rect [164.653 526.068 210.996 536.916] /Subtype /Link /A << /S /GoTo /D (section*.41) >> >> endobj -547 0 obj << +552 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 526.068 222.591 536.916] +/Rect [164.653 513.988 222.591 524.836] /Subtype /Link /A << /S /GoTo /D (section*.42) >> >> endobj -548 0 obj << +553 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 513.988 205.212 524.836] +/Rect [164.653 501.909 205.212 512.757] /Subtype /Link /A << /S /GoTo /D (section*.43) >> >> endobj -549 0 obj << +554 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 501.909 206.927 512.757] +/Rect [164.653 489.829 206.927 500.677] /Subtype /Link /A << /S /GoTo /D (section*.44) >> >> endobj -550 0 obj << +555 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 489.829 209.141 500.677] +/Rect [164.653 477.749 209.141 488.597] /Subtype /Link /A << /S /GoTo /D (section*.45) >> >> endobj -551 0 obj << +556 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 477.749 210.497 488.597] +/Rect [164.653 465.669 210.497 476.518] /Subtype /Link /A << /S /GoTo /D (section*.46) >> >> endobj -552 0 obj << +557 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 465.669 204.132 476.518] +/Rect [164.653 453.59 204.132 464.438] /Subtype /Link /A << /S /GoTo /D (section*.47) >> >> endobj -553 0 obj << +558 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 453.59 205.156 464.438] +/Rect [164.653 441.51 205.156 452.358] /Subtype /Link /A << /S /GoTo /D (section*.48) >> >> endobj -554 0 obj << +559 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 441.51 206.872 452.358] +/Rect [164.653 429.43 206.872 440.279] /Subtype /Link /A << /S /GoTo /D (section*.49) >> >> endobj -555 0 obj << +560 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 429.43 209.086 440.279] +/Rect [164.653 417.351 209.086 428.199] /Subtype /Link /A << /S /GoTo /D (section*.50) >> >> endobj -556 0 obj << +561 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 417.351 210.442 428.199] +/Rect [164.653 405.271 210.442 416.119] /Subtype /Link /A << /S /GoTo /D (section*.51) >> >> endobj -557 0 obj << +562 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 405.271 202.942 416.119] +/Rect [164.653 393.191 202.942 404.039] /Subtype /Link /A << /S /GoTo /D (section*.52) >> >> endobj -558 0 obj << +563 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 393.191 231.978 404.039] +/Rect [164.653 381.112 231.978 391.96] /Subtype /Link /A << /S /GoTo /D (section*.53) >> >> endobj -559 0 obj << +564 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 381.112 231.978 391.96] +/Rect [164.653 369.032 231.978 379.88] /Subtype /Link /A << /S /GoTo /D (section*.54) >> >> endobj -560 0 obj << +565 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 369.032 222.912 379.88] +/Rect [164.653 356.952 222.912 367.8] /Subtype /Link /A << /S /GoTo /D (section*.55) >> >> endobj -561 0 obj << +566 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 356.952 239.738 367.8] +/Rect [164.653 344.872 239.738 355.721] /Subtype /Link /A << /S /GoTo /D (section*.56) >> >> endobj -562 0 obj << +567 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 344.872 215.717 355.721] +/Rect [164.653 332.793 215.717 343.641] /Subtype /Link /A << /S /GoTo /D (section*.57) >> >> endobj -563 0 obj << +568 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 332.793 232.543 343.641] +/Rect [164.653 320.713 232.543 331.561] /Subtype /Link /A << /S /GoTo /D (section*.58) >> >> endobj -564 0 obj << +569 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 320.713 243.64 331.561] +/Rect [164.653 308.633 243.64 319.482] /Subtype /Link /A << /S /GoTo /D (section*.59) >> >> endobj -565 0 obj << +570 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 308.633 233.4 319.482] +/Rect [164.653 296.554 233.4 307.402] /Subtype /Link /A << /S /GoTo /D (section*.60) >> >> endobj -566 0 obj << +571 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 296.554 227.367 307.402] +/Rect [164.653 284.474 227.367 295.322] /Subtype /Link /A << /S /GoTo /D (section*.61) >> >> endobj -567 0 obj << +572 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 284.474 208.809 295.322] +/Rect [164.653 272.394 208.809 283.242] /Subtype /Link /A << /S /GoTo /D (section*.62) >> >> endobj -568 0 obj << +573 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 272.394 234.253 283.242] +/Rect [164.653 260.315 234.253 271.163] /Subtype /Link /A << /S /GoTo /D (section*.63) >> >> endobj -569 0 obj << +574 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.709 252.206 315.677 261.117] +/Rect [149.709 240.126 315.677 249.037] /Subtype /Link /A << /S /GoTo /D (section.7) >> >> endobj -570 0 obj << +575 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 238.189 200.175 249.037] +/Rect [164.653 226.109 200.175 236.958] /Subtype /Link /A << /S /GoTo /D (section*.64) >> >> endobj -571 0 obj << +576 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 226.109 201.559 236.958] +/Rect [164.653 214.03 201.559 224.878] /Subtype /Link /A << /S /GoTo /D (section*.65) >> >> endobj -572 0 obj << +577 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 214.03 201.559 224.878] +/Rect [164.653 201.95 201.559 212.798] /Subtype /Link /A << /S /GoTo /D (section*.66) >> >> endobj -573 0 obj << +578 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 201.95 244.719 212.798] +/Rect [164.653 189.87 244.719 200.719] /Subtype /Link /A << /S /GoTo /D (section*.67) >> >> endobj -574 0 obj << +579 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 189.87 221.777 200.719] +/Rect [164.653 177.791 221.777 188.639] /Subtype /Link /A << /S /GoTo /D (section*.68) >> >> endobj -575 0 obj << +580 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 177.791 211.798 188.639] +/Rect [164.653 165.711 211.798 176.559] /Subtype /Link /A << /S /GoTo /D (section*.69) >> >> endobj -576 0 obj << +581 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 165.711 214.648 176.559] +/Rect [164.653 153.631 214.648 164.48] /Subtype /Link /A << /S /GoTo /D (section*.70) >> >> endobj -577 0 obj << +582 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 153.631 208.782 164.48] +/Rect [164.653 141.552 208.782 152.4] /Subtype /Link /A << /S /GoTo /D (section*.71) >> >> endobj -578 0 obj << +583 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 141.552 208.256 152.4] +/Rect [164.653 129.472 208.256 140.32] /Subtype /Link /A << /S /GoTo /D (section*.72) >> >> endobj -579 0 obj << +584 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 129.472 202.998 140.32] +/Rect [164.653 117.392 202.998 128.24] /Subtype /Link /A << /S /GoTo /D (section*.73) >> >> endobj -580 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.653 117.392 203.773 128.24] -/Subtype /Link -/A << /S /GoTo /D (section*.74) >> ->> endobj -585 0 obj << -/D [583 0 R /XYZ 150.705 740.998 null] +589 0 obj << +/D [587 0 R /XYZ 150.705 740.998 null] >> endobj -582 0 obj << -/Font << /F8 478 0 R /F27 477 0 R >> +586 0 obj << +/Font << /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -610 0 obj << -/Length 9400 +615 0 obj << +/Length 9852 >> stream 0 g 0 G @@ -2793,7 +2792,21 @@ q []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 706.129 Td [(min)]TJ +/F8 9.9626 Tf 133.425 706.129 Td [(max)]TJ +0 g 0 G + [-468(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ +0 g 0 G + [-583(103)]TJ +0 g 0 G +0 0 1 rg 0 0 1 RG + -18.586 -11.955 Td [(psb)]TJ +ET +q +1 0 0 1 130.436 694.373 cm +[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S +Q +BT +/F8 9.9626 Tf 133.425 694.174 Td [(min)]TJ 0 g 0 G [-662(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2803,39 +2816,39 @@ BT -18.586 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 694.373 cm +1 0 0 1 130.436 682.418 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 694.174 Td [(amx)]TJ +/F8 9.9626 Tf 133.425 682.219 Td [(amx)]TJ 0 g 0 G [-468(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-583(105)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -11.955 Td [(psb)]TJ + -18.586 -11.956 Td [(psb)]TJ ET q -1 0 0 1 130.436 682.418 cm +1 0 0 1 130.436 670.463 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 682.219 Td [(amn)]TJ +/F8 9.9626 Tf 133.425 670.263 Td [(amn)]TJ 0 g 0 G [-440(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-584(106)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -11.956 Td [(psb)]TJ + -18.586 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 670.463 cm +1 0 0 1 130.436 658.507 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 670.263 Td [(snd)]TJ +/F8 9.9626 Tf 133.425 658.308 Td [(snd)]TJ 0 g 0 G [-823(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2845,11 +2858,11 @@ BT -18.586 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 658.507 cm +1 0 0 1 130.436 646.552 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 658.308 Td [(rcv)]TJ +/F8 9.9626 Tf 133.425 646.353 Td [(rcv)]TJ 0 g 0 G [-965(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2863,11 +2876,11 @@ BT /F8 9.9626 Tf 14.944 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 624.634 cm +1 0 0 1 130.436 612.679 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 624.435 Td [(errpush)]TJ +/F8 9.9626 Tf 133.425 612.48 Td [(errpush)]TJ 0 g 0 G [-595(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2877,11 +2890,11 @@ BT -18.586 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 612.679 cm +1 0 0 1 130.436 600.724 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 612.48 Td [(error)]TJ +/F8 9.9626 Tf 133.425 600.525 Td [(error)]TJ 0 g 0 G [-987(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2891,18 +2904,18 @@ BT -18.586 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 600.724 cm +1 0 0 1 130.436 588.769 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 600.525 Td [(set)]TJ +/F8 9.9626 Tf 133.425 588.57 Td [(set)]TJ ET q -1 0 0 1 146.255 600.724 cm +1 0 0 1 146.255 588.769 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 149.244 600.525 Td [(errv)28(erb)-28(osit)28(y)]TJ +/F8 9.9626 Tf 149.244 588.57 Td [(errv)28(erb)-28(osit)28(y)]TJ 0 g 0 G [-977(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2912,18 +2925,18 @@ BT -34.405 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 588.769 cm +1 0 0 1 130.436 576.814 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 588.57 Td [(set)]TJ +/F8 9.9626 Tf 133.425 576.615 Td [(set)]TJ ET q -1 0 0 1 146.255 588.769 cm +1 0 0 1 146.255 576.814 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 149.244 588.57 Td [(erraction)]TJ +/F8 9.9626 Tf 149.244 576.615 Td [(erraction)]TJ 0 g 0 G [-735(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)]TJ 0 g 0 G @@ -2937,46 +2950,46 @@ BT /F8 9.9626 Tf 37.859 -11.955 Td [(h)28(b)]TJ ET q -1 0 0 1 149.144 554.896 cm +1 0 0 1 149.144 542.941 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 152.133 554.697 Td [(read)]TJ +/F8 9.9626 Tf 152.133 542.742 Td [(read)]TJ 0 g 0 G [-893(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-583(116)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -14.38 -11.955 Td [(h)28(b)]TJ + -14.38 -11.956 Td [(h)28(b)]TJ ET q -1 0 0 1 149.144 542.941 cm +1 0 0 1 149.144 530.986 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 152.133 542.742 Td [(write)]TJ +/F8 9.9626 Tf 152.133 530.786 Td [(write)]TJ 0 g 0 G [-559(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-584(117)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -14.38 -11.956 Td [(mm)]TJ + -14.38 -11.955 Td [(mm)]TJ ET q -1 0 0 1 154.956 530.986 cm +1 0 0 1 154.956 519.03 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 157.944 530.786 Td [(mat)]TJ +/F8 9.9626 Tf 157.944 518.831 Td [(mat)]TJ ET q -1 0 0 1 175.7 530.986 cm +1 0 0 1 175.7 519.03 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 178.689 530.786 Td [(read)]TJ +/F8 9.9626 Tf 178.689 518.831 Td [(read)]TJ 0 g 0 G [-560(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -2986,18 +2999,18 @@ BT -40.935 -11.955 Td [(mm)]TJ ET q -1 0 0 1 154.956 519.03 cm +1 0 0 1 154.956 507.075 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 157.944 518.831 Td [(v)28(et)]TJ +/F8 9.9626 Tf 157.944 506.876 Td [(v)28(et)]TJ ET q -1 0 0 1 171.826 519.03 cm +1 0 0 1 171.826 507.075 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 174.815 518.831 Td [(read)]TJ +/F8 9.9626 Tf 174.815 506.876 Td [(read)]TJ 0 g 0 G [-949(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -3007,18 +3020,18 @@ BT -37.062 -11.955 Td [(mm)]TJ ET q -1 0 0 1 154.956 507.075 cm +1 0 0 1 154.956 495.12 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 157.944 506.876 Td [(mat)]TJ +/F8 9.9626 Tf 157.944 494.921 Td [(mat)]TJ ET q -1 0 0 1 175.7 507.075 cm +1 0 0 1 175.7 495.12 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 178.689 506.876 Td [(write)]TJ +/F8 9.9626 Tf 178.689 494.921 Td [(write)]TJ 0 g 0 G [-1005(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -3032,11 +3045,11 @@ BT /F8 9.9626 Tf 14.944 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 473.202 cm +1 0 0 1 130.436 461.247 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 473.003 Td [(precinit)]TJ +/F8 9.9626 Tf 133.425 461.048 Td [(precinit)]TJ 0 g 0 G [-548(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -3046,11 +3059,11 @@ BT -18.586 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 461.247 cm +1 0 0 1 130.436 449.292 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 461.048 Td [(precbld)]TJ +/F8 9.9626 Tf 133.425 449.093 Td [(precbld)]TJ 0 g 0 G [-659(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G @@ -3060,224 +3073,231 @@ BT -18.586 -11.955 Td [(psb)]TJ ET q -1 0 0 1 130.436 449.292 cm +1 0 0 1 130.436 437.337 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 449.093 Td [(precaply)]TJ +/F8 9.9626 Tf 133.425 437.138 Td [(precaply)]TJ 0 g 0 G [-965(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-584(124)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG - -18.586 -11.955 Td [(psb)]TJ + -18.586 -11.956 Td [(psb)]TJ ET q -1 0 0 1 130.436 437.337 cm +1 0 0 1 130.436 425.382 cm []0 d 0 J 0.398 w 0 0 m 2.989 0 l S Q BT -/F8 9.9626 Tf 133.425 437.138 Td [(precdescr)]TJ +/F8 9.9626 Tf 133.425 425.182 Td [(precdescr)]TJ 0 g 0 G [-596(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-583(125)]TJ 0 g 0 G 0 0 1 rg 0 0 1 RG -/F27 9.9626 Tf -33.53 -21.918 Td [(11)-350(Iterativ)32(e)-384(Metho)-31(ds)]TJ +/F27 9.9626 Tf -33.53 -21.917 Td [(11)-350(Iterativ)32(e)-384(Metho)-31(ds)]TJ 0 g 0 G [-22176(126)]TJ 0 0 1 rg 0 0 1 RG -/F8 9.9626 Tf 14.944 -11.955 Td [(krylo)28(v)]TJ +/F8 9.9626 Tf 14.944 -11.956 Td [(krylo)28(v)]TJ 0 g 0 G [-692(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-499(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ 0 g 0 G [-583(127)]TJ 0 g 0 G 0 g 0 G - 152.761 -312.827 Td [(iii)]TJ + 152.761 -300.871 Td [(iii)]TJ 0 g 0 G ET endstream endobj -609 0 obj << +614 0 obj << /Type /Page -/Contents 610 0 R -/Resources 608 0 R +/Contents 615 0 R +/Resources 613 0 R /MediaBox [0 0 595.276 841.89] -/Parent 479 0 R -/Annots [ 581 0 R 586 0 R 587 0 R 588 0 R 589 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R 600 0 R 601 0 R 602 0 R 603 0 R 604 0 R 605 0 R 606 0 R 607 0 R ] +/Parent 483 0 R +/Annots [ 585 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R 600 0 R 601 0 R 602 0 R 603 0 R 604 0 R 605 0 R 606 0 R 607 0 R 608 0 R 609 0 R 610 0 R 611 0 R 612 0 R ] >> endobj -581 0 obj << +585 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.843 703.195 152.963 714.044] +/Subtype /Link +/A << /S /GoTo /D (section*.74) >> +>> endobj +590 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 703.195 151.026 714.044] +/Rect [113.843 691.24 151.026 702.088] /Subtype /Link /A << /S /GoTo /D (section*.75) >> >> endobj -586 0 obj << +591 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 691.24 152.963 702.088] +/Rect [113.843 679.285 152.963 690.133] /Subtype /Link /A << /S /GoTo /D (section*.76) >> >> endobj -587 0 obj << +592 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 679.285 153.24 690.133] +/Rect [113.843 667.33 153.24 678.178] /Subtype /Link /A << /S /GoTo /D (section*.77) >> >> endobj -588 0 obj << +593 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 667.33 149.421 678.178] +/Rect [113.843 655.375 149.421 666.223] /Subtype /Link /A << /S /GoTo /D (section*.78) >> >> endobj -589 0 obj << +594 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 655.375 148.009 666.223] +/Rect [113.843 643.42 148.009 654.268] /Subtype /Link /A << /S /GoTo /D (section*.79) >> >> endobj -590 0 obj << +595 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 633.457 190.188 644.305] +/Rect [98.899 621.502 190.188 632.35] /Subtype /Link /A << /S /GoTo /D (section.8) >> >> endobj -591 0 obj << +596 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 621.502 167.188 632.35] +/Rect [113.843 609.547 167.188 620.395] /Subtype /Link /A << /S /GoTo /D (section*.80) >> >> endobj -592 0 obj << +597 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 609.547 155.537 620.395] +/Rect [113.843 597.591 155.537 608.44] /Subtype /Link /A << /S /GoTo /D (section*.81) >> >> endobj -593 0 obj << +598 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 597.591 202.129 608.44] +/Rect [113.843 585.636 202.129 596.484] /Subtype /Link /A << /S /GoTo /D (section*.82) >> >> endobj -594 0 obj << +599 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 585.636 189.039 596.484] +/Rect [113.843 573.681 189.039 584.529] /Subtype /Link /A << /S /GoTo /D (section*.83) >> >> endobj -595 0 obj << +600 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 565.656 156.061 574.567] +/Rect [98.899 553.7 156.061 562.611] /Subtype /Link /A << /S /GoTo /D (section.9) >> >> endobj -596 0 obj << +601 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 553.7 171.975 562.611] +/Rect [136.757 541.745 171.975 550.656] /Subtype /Link /A << /S /GoTo /D (section*.84) >> >> endobj -597 0 obj << +602 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 541.745 175.296 550.656] +/Rect [136.757 529.79 175.296 538.701] /Subtype /Link /A << /S /GoTo /D (section*.85) >> >> endobj -598 0 obj << +603 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 529.79 198.531 538.701] +/Rect [136.757 517.835 198.531 526.746] /Subtype /Link /A << /S /GoTo /D (section*.86) >> >> endobj -599 0 obj << +604 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 517.835 197.978 526.746] +/Rect [136.757 505.88 197.978 514.791] /Subtype /Link /A << /S /GoTo /D (section*.87) >> >> endobj -600 0 obj << +605 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.757 505.88 201.852 514.526] +/Rect [136.757 493.925 201.852 502.571] /Subtype /Link /A << /S /GoTo /D (section*.88) >> >> endobj -601 0 obj << +606 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 483.962 234.475 492.873] +/Rect [98.899 472.007 234.475 480.918] /Subtype /Link /A << /S /GoTo /D (section.10) >> >> endobj -602 0 obj << +607 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 470.07 167.658 480.918] +/Rect [113.843 458.114 167.658 468.963] /Subtype /Link /A << /S /GoTo /D (section*.89) >> >> endobj -603 0 obj << +608 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 458.114 166.551 468.963] +/Rect [113.843 446.159 166.551 457.007] /Subtype /Link /A << /S /GoTo /D (section*.90) >> >> endobj -604 0 obj << +609 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 446.159 171.256 457.007] +/Rect [113.843 434.204 171.256 445.052] /Subtype /Link /A << /S /GoTo /D (section*.91) >> >> endobj -605 0 obj << +610 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 434.204 174.936 445.052] +/Rect [113.843 422.249 174.936 433.097] /Subtype /Link /A << /S /GoTo /D (section*.92) >> >> endobj -606 0 obj << +611 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [98.899 414.223 206.49 423.134] +/Rect [98.899 402.268 206.49 411.179] /Subtype /Link /A << /S /GoTo /D (section.11) >> >> endobj -607 0 obj << +612 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.843 400.331 142.984 411.179] +/Rect [113.843 388.376 142.984 399.224] /Subtype /Link /A << /S /GoTo /D (section*.93) >> >> endobj -611 0 obj << -/D [609 0 R /XYZ 99.895 740.998 null] +616 0 obj << +/D [614 0 R /XYZ 99.895 740.998 null] >> endobj -608 0 obj << -/Font << /F8 478 0 R /F27 477 0 R >> +613 0 obj << +/Font << /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -614 0 obj << +619 0 obj << /Length 79 >> stream @@ -3290,21 +3310,21 @@ BT ET endstream endobj -613 0 obj << +618 0 obj << /Type /Page -/Contents 614 0 R -/Resources 612 0 R +/Contents 619 0 R +/Resources 617 0 R /MediaBox [0 0 595.276 841.89] -/Parent 479 0 R +/Parent 483 0 R >> endobj -615 0 obj << -/D [613 0 R /XYZ 150.705 740.998 null] +620 0 obj << +/D [618 0 R /XYZ 150.705 740.998 null] >> endobj -612 0 obj << -/Font << /F8 478 0 R >> +617 0 obj << +/Font << /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -628 0 obj << +633 0 obj << /Length 8518 >> stream @@ -3358,78 +3378,78 @@ BT ET endstream endobj -627 0 obj << +632 0 obj << /Type /Page -/Contents 628 0 R -/Resources 626 0 R +/Contents 633 0 R +/Resources 631 0 R /MediaBox [0 0 595.276 841.89] -/Parent 630 0 R -/Annots [ 616 0 R 617 0 R 618 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R ] +/Parent 635 0 R +/Annots [ 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R 628 0 R 629 0 R 630 0 R ] >> endobj -616 0 obj << +621 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [408.982 586.91 420.937 595.323] /Subtype /Link /A << /S /GoTo /D (cite.metcalf) >> >> endobj -617 0 obj << +622 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [277.684 514.913 289.639 523.326] /Subtype /Link /A << /S /GoTo /D (cite.Sparse03) >> >> endobj -618 0 obj << +623 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [265.763 502.958 272.737 511.371] /Subtype /Link /A << /S /GoTo /D (cite.DesPat:11) >> >> endobj -619 0 obj << +624 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [276.283 502.958 288.238 511.371] /Subtype /Link /A << /S /GoTo /D (cite.RouXiaXu:11) >> >> endobj -620 0 obj << +625 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [210.166 442.916 222.121 451.329] /Subtype /Link /A << /S /GoTo /D (cite.machiels) >> >> endobj -621 0 obj << +626 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [241.566 370.919 248.54 379.332] /Subtype /Link /A << /S /GoTo /D (cite.sblas97) >> >> endobj -622 0 obj << +627 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [252.056 370.919 259.03 379.332] /Subtype /Link /A << /S /GoTo /D (cite.sblas02) >> >> endobj -623 0 obj << +628 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [227.473 358.964 239.428 367.377] /Subtype /Link /A << /S /GoTo /D (cite.BLAS1) >> >> endobj -624 0 obj << +629 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [243.524 358.964 250.498 367.377] /Subtype /Link /A << /S /GoTo /D (cite.BLAS2) >> >> endobj -625 0 obj << +630 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [254.593 358.964 261.567 367.377] @@ -3437,13 +3457,13 @@ endobj /A << /S /GoTo /D (cite.BLAS3) >> >> endobj 10 0 obj << -/D [627 0 R /XYZ 99.895 716.092 null] +/D [632 0 R /XYZ 99.895 716.092 null] >> endobj -626 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F17 629 0 R >> +631 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F17 634 0 R >> /ProcSet [ /PDF /Text ] >> endobj -648 0 obj << +653 0 obj << /Length 5581 >> stream @@ -3488,29 +3508,29 @@ BT ET endstream endobj -647 0 obj << +652 0 obj << /Type /Page -/Contents 648 0 R -/Resources 646 0 R +/Contents 653 0 R +/Resources 651 0 R /MediaBox [0 0 595.276 841.89] -/Parent 630 0 R -/Annots [ 641 0 R 642 0 R 643 0 R ] +/Parent 635 0 R +/Annots [ 646 0 R 647 0 R 648 0 R ] >> endobj -644 0 obj << +649 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/psblas.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 651 0 R +/PTEX.InfoDict 656 0 R /BBox [0 0 197 215] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 652 0 R ->>/Font << /R8 653 0 R>> +/R7 657 0 R +>>/Font << /R8 658 0 R>> >> -/Length 654 0 R +/Length 659 0 R /Filter /FlateDecode >> stream @@ -3529,7 +3549,7 @@ x «Ͻ'ƒÇ›ÇÇùaÚ>=|9Êh±Büuæ¹£$îËLËàq·–ÑÃÊŸ5×k^Þ½;>íN÷Ûi™ZŠ\V+9D£­8îNËLÓG™÷×»~0+¾’”àŠ'¢ˆ±íúmw>o÷;{·=ŸŽûEý—»a¥ÃѲîîÝâ8SË4Â%ÕÇ¥_¾œžNÛ#OαéƒùüÐ endstream endobj -651 0 obj +656 0 obj << /Producer (GPL Ghostscript 9.04) /CreationDate (D:20111215145523+01'00') @@ -3539,16 +3559,16 @@ endobj /Author (sfilippo@donald \(Salvatore Filippone\)) >> endobj -652 0 obj +657 0 obj << /Type /ExtGState /OPM 1 >> endobj -653 0 obj +658 0 obj << /BaseFont /JEJNJE#2BTimes-Roman -/FontDescriptor 655 0 R +/FontDescriptor 660 0 R /Type /Font /FirstChar 32 /LastChar 116 @@ -3557,10 +3577,10 @@ endobj /Subtype /Type1 >> endobj -654 0 obj +659 0 obj 898 endobj -655 0 obj +660 0 obj << /Type /FontDescriptor /FontName /JEJNJE#2BTimes-Roman @@ -3574,10 +3594,10 @@ endobj /MissingWidth 500 /XHeight 460 /CharSet (/A/B/F/I/L/M/P/S/a/c/e/f/g/i/l/n/o/p/r/s/space/t/three/two/zero) -/FontFile3 656 0 R +/FontFile3 661 0 R >> endobj -656 0 obj +661 0 obj << /Filter /FlateDecode /Subtype /Type1C @@ -3597,21 +3617,21 @@ p IZ¹t4¤w!}^€gì½—ú€h9@±^è Ò…s2•=3B2H>ÉçynÞÌû7ŠC‰#ˆþhñÚï-whèÇGtBŒV²Õºø`uÞ1èFæ3ÑvðøçÓ÷à´ÛoÝ34\z"ž“,P&+š´®¿Ú»oB03¼å㣶xsÉÝä!FáŽ/†m'~¼êŒn?àßvaÝDëÑ÷ì+°¥¸5ïšôt0Ü ¶æ+ÉÔ·ÆsRz…t¥J–xFzëþƒöÁQîè`û¼/dŠº2›åž™j@7GÛú.º?Üwyc$O‘œÀI‘(S¥ME®ƒßŒô| Áõ^`‚2!-›’"VîIN™"Ì‚B-ÌÎe³/uV9:Î6:.Ç°ÿMɪH endstream endobj -641 0 obj << +646 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.543 541.042 317.517 551.89] /Subtype /Link /A << /S /GoTo /D (figure.1) >> >> endobj -642 0 obj << +647 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [446.018 471.248 452.992 479.661] /Subtype /Link /A << /S /GoTo /D (cite.BLACS) >> >> endobj -643 0 obj << +648 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [210.398 433.445 217.372 444.294] @@ -3619,17 +3639,17 @@ endobj /A << /S /GoTo /D (section.7) >> >> endobj 14 0 obj << -/D [647 0 R /XYZ 150.705 677.433 null] +/D [652 0 R /XYZ 150.705 677.433 null] >> endobj -650 0 obj << -/D [647 0 R /XYZ 258.703 263.3 null] +655 0 obj << +/D [652 0 R /XYZ 258.703 263.3 null] >> endobj -646 0 obj << -/Font << /F8 478 0 R /F16 475 0 R /F11 649 0 R >> -/XObject << /Im1 644 0 R >> +651 0 obj << +/Font << /F8 482 0 R /F16 479 0 R /F11 654 0 R >> +/XObject << /Im1 649 0 R >> /ProcSet [ /PDF /Text ] >> endobj -662 0 obj << +667 0 obj << /Length 8854 >> stream @@ -3676,52 +3696,52 @@ BT ET endstream endobj -661 0 obj << +666 0 obj << /Type /Page -/Contents 662 0 R -/Resources 660 0 R +/Contents 667 0 R +/Resources 665 0 R /MediaBox [0 0 595.276 841.89] -/Parent 630 0 R -/Annots [ 645 0 R 658 0 R 659 0 R ] +/Parent 635 0 R +/Annots [ 650 0 R 663 0 R 664 0 R ] >> endobj -645 0 obj << +650 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [219.5 609.491 231.455 617.904] /Subtype /Link /A << /S /GoTo /D (cite.METIS) >> >> endobj -658 0 obj << +663 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [210.854 546.467 217.316 558.506] /Subtype /Link /A << /S /GoTo /D (Hfootnote.1) >> >> endobj -659 0 obj << +664 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [155.908 188.124 162.37 200.163] /Subtype /Link /A << /S /GoTo /D (Hfootnote.2) >> >> endobj -663 0 obj << -/D [661 0 R /XYZ 99.895 740.998 null] +668 0 obj << +/D [666 0 R /XYZ 99.895 740.998 null] >> endobj 18 0 obj << -/D [661 0 R /XYZ 99.895 515.919 null] +/D [666 0 R /XYZ 99.895 515.919 null] >> endobj -669 0 obj << -/D [661 0 R /XYZ 115.138 167.688 null] +674 0 obj << +/D [666 0 R /XYZ 115.138 167.688 null] >> endobj -671 0 obj << -/D [661 0 R /XYZ 115.138 158.184 null] +676 0 obj << +/D [666 0 R /XYZ 115.138 158.184 null] >> endobj -660 0 obj << -/Font << /F8 478 0 R /F17 629 0 R /F30 664 0 R /F7 665 0 R /F16 475 0 R /F11 649 0 R /F10 666 0 R /F14 667 0 R /F27 477 0 R /F32 668 0 R /F31 670 0 R >> +665 0 obj << +/Font << /F8 482 0 R /F17 634 0 R /F30 669 0 R /F7 670 0 R /F16 479 0 R /F11 654 0 R /F10 671 0 R /F14 672 0 R /F27 481 0 R /F32 673 0 R /F31 675 0 R >> /ProcSet [ /PDF /Text ] >> endobj -678 0 obj << +683 0 obj << /Length 5348 >> stream @@ -3796,29 +3816,29 @@ BT ET endstream endobj -677 0 obj << +682 0 obj << /Type /Page -/Contents 678 0 R -/Resources 676 0 R +/Contents 683 0 R +/Resources 681 0 R /MediaBox [0 0 595.276 841.89] -/Parent 630 0 R -/Annots [ 673 0 R 674 0 R ] +/Parent 635 0 R +/Annots [ 678 0 R 679 0 R ] >> endobj -675 0 obj << +680 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/points.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 681 0 R +/PTEX.InfoDict 686 0 R /BBox [0 0 274 308] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 682 0 R ->>/Font << /R8 683 0 R>> +/R7 687 0 R +>>/Font << /R8 688 0 R>> >> -/Length 684 0 R +/Length 689 0 R /Filter /FlateDecode >> stream @@ -3826,58 +3846,58 @@ x – 󣄠¹3ÊBü=®§«æ±bA‡HŒ}Ï©c·í²»?­é”ׄÿäïÍeùö]_?ü¾¤Ó©d êwßGüðaù´d"®òçæ²¾¾ä}ÍíëÕûe4­ß ,äýÔ×sÿ»º,_ýx÷Ç/w×·¯®~[¾»ZÞ.ø›Œ1¸ð™âuóâ¯ïÿ¼ûùúáoO*žþx/þÃõí½Î22Tø<ᜇd†&Âoî/×ïV˜âÿõèCê1V^õd¨æõãR ¬Û9ŸÎç¶^–ºµÓ¾ÍšÚýÝz¦zõ¯7‹!€S®ûj짔êJÚR¿–ðWZSöN•m˜´ ide«3çûfyÿõROÛú×|J_F¿~]~z2ò–}×òVÐÕämë¦Î€sQ<I<³¦uiüd¸r͵9.Ö¤¢ÆR’ÉÑãY~ОÐCÑÝ¥Ÿ}öçÙ^â<3LA ‰c‹YÒ¶®ôçY¯qž&mCÙØâÌû懣ç—Ñ#|H–_rƧšÇÒ³,wš0s>}yüÇ5ÒNóË p%U¤ –ðW@E’§$§•|¡pxõE`&ÆøåU ™¤ó«›%AÝIUÍ0Gš]ý‘&ûÖM’ î Jšx÷¬…T.ù)~¼C²8˜}~‚­ÛÍWÛ¢íÁvKÑö¶K,8ÛÍ—&†`[C*—ü¨ONÔÇs­ƒ ½m‚ê ò9؆Áu¶!×`{P9¦m‚êKI7oÛB*—ü¨O샹~ñ̳·Ç'­¡Á^ÝIaÏvRy!œzw'ó¤`Íx"0.Ѥb'…iÄù|ùÌs¼žP:-%X/[´^º“#Àa°há…dÞPÓY/)Z‡Ýqˆ&-VŠÖ½ON¬Çtnƒ®G±À¹ÍY–& é›Ë’וB¿Ìœ¤¡¹M…ÁnngäŽ%¤Ò#ØœÃÉÙÇ‚"d;’Àô)ùÃ(˜\X‹³Ž¥²£0}Z¡pø#`Ó†Sò‹%Hvt§Ð̧f£`ú`-Î+”ÐŽQ4ó9ƒ…Ç,x›O/,îf,z»âißn«ªÝìv«$½úæ-ÜŒå`?›“禩™|,ˆ7cïó™;Ìñº@!osõé]Š¦?ݲta0€yýÒ¥¤Zdy›«OïRÜ<%9­äƒ€[}拇ú6m8uõIPžþhǃf>m))…YÞæê“ Ò<%9­äƒ€[}ækçÿÜæ“WO’rõ= A} £ Ñ0'Ë 9‘S,irêÕ÷+\_ã­uâÝ¿›ÑÆE?æóé{¦ƒÙÇá'È‹ÎB#4_²$&†`[–’qq‘‘&/> Mõ5^_'†`[Bý˜OõºÖÁ–%©¡ ª/]07o[šqq ’&/M Íõ5^_'nÞ¶†4.ú1Ÿ6ØsýÜ¥%]Š!ƒCÞgVe@Ù–‹’…$)š5-ƒÃØ5}‡ä²?ÖLg+‡ |>{é>hO‘jøX5~,ê>–0àxÕ},1’š¬ác ”ø±ŠûX€5‹ûXb$3òø³ Ú…t¡í¡=Å>tpº8Õ‡’Ô$iÎ>´-ö¡Ç%ÀšTÔXJR#ÞgL¼í“-J/0®jãȶw.Þâªick£Z,”Ô¤š^”Ñk·ì«éUÝ ‹¯WjÇ‚µÛçƒ.ÁºUE³zÉgýãPˆ,é"›Ñe±ûÌ‹:t˜!*%~ Ö *«QÊÒ@emPMÓ1:¾Þ’àX¼÷(˜®4æ ¤Nƒ¾]þÎJ¦' endstream endobj -681 0 obj +686 0 obj << /Producer (ESP Ghostscript 815.03) /CreationDate (D:20070123225315) /ModDate (D:20070123225315) >> endobj -682 0 obj +687 0 obj << /Type /ExtGState /OPM 1 >> endobj -683 0 obj +688 0 obj << /BaseFont /Times-Roman /Type /Font /Subtype /Type1 >> endobj -684 0 obj +689 0 obj 1397 endobj -673 0 obj << +678 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [294.665 637.885 301.639 646.297] /Subtype /Link /A << /S /GoTo /D (cite.2007c) >> >> endobj -674 0 obj << +679 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [305.735 637.885 312.709 646.297] /Subtype /Link /A << /S /GoTo /D (cite.2007d) >> >> endobj -679 0 obj << -/D [677 0 R /XYZ 150.705 740.998 null] +684 0 obj << +/D [682 0 R /XYZ 150.705 740.998 null] >> endobj -680 0 obj << -/D [677 0 R /XYZ 303.562 347.015 null] +685 0 obj << +/D [682 0 R /XYZ 303.562 347.015 null] >> endobj 22 0 obj << -/D [677 0 R /XYZ 150.705 272.271 null] +/D [682 0 R /XYZ 150.705 272.271 null] >> endobj -676 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F14 667 0 R /F11 649 0 R /F10 666 0 R /F16 475 0 R >> -/XObject << /Im2 675 0 R >> +681 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F14 672 0 R /F11 654 0 R /F10 671 0 R /F16 479 0 R >> +/XObject << /Im2 680 0 R >> /ProcSet [ /PDF /Text ] >> endobj -691 0 obj << +696 0 obj << /Length 5462 >> stream @@ -3965,36 +3985,36 @@ BT ET endstream endobj -690 0 obj << +695 0 obj << /Type /Page -/Contents 691 0 R -/Resources 689 0 R +/Contents 696 0 R +/Resources 694 0 R /MediaBox [0 0 595.276 841.89] -/Parent 630 0 R -/Annots [ 687 0 R 688 0 R ] +/Parent 635 0 R +/Annots [ 692 0 R 693 0 R ] >> endobj -687 0 obj << +692 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [406.358 354.515 413.331 366.47] /Subtype /Link /A << /S /GoTo /D (section.3) >> >> endobj -688 0 obj << +693 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [173.863 318.352 180.837 330.307] /Subtype /Link /A << /S /GoTo /D (section.6) >> >> endobj -692 0 obj << -/D [690 0 R /XYZ 99.895 740.998 null] +697 0 obj << +/D [695 0 R /XYZ 99.895 740.998 null] >> endobj -689 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F14 667 0 R /F30 664 0 R >> +694 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F14 672 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -695 0 obj << +700 0 obj << /Length 8657 >> stream @@ -4040,48 +4060,48 @@ BT ET endstream endobj -694 0 obj << +699 0 obj << /Type /Page -/Contents 695 0 R -/Resources 693 0 R +/Contents 700 0 R +/Resources 698 0 R /MediaBox [0 0 595.276 841.89] -/Parent 630 0 R +/Parent 635 0 R >> endobj -696 0 obj << -/D [694 0 R /XYZ 150.705 740.998 null] +701 0 obj << +/D [699 0 R /XYZ 150.705 740.998 null] >> endobj 26 0 obj << -/D [694 0 R /XYZ 150.705 716.092 null] +/D [699 0 R /XYZ 150.705 716.092 null] >> endobj -698 0 obj << -/D [694 0 R /XYZ 150.705 285.279 null] +703 0 obj << +/D [699 0 R /XYZ 150.705 285.279 null] >> endobj -699 0 obj << -/D [694 0 R /XYZ 150.705 264.776 null] +704 0 obj << +/D [699 0 R /XYZ 150.705 264.776 null] >> endobj -700 0 obj << -/D [694 0 R /XYZ 150.705 243.997 null] +705 0 obj << +/D [699 0 R /XYZ 150.705 243.997 null] >> endobj -701 0 obj << -/D [694 0 R /XYZ 150.705 223.218 null] +706 0 obj << +/D [699 0 R /XYZ 150.705 223.218 null] >> endobj -702 0 obj << -/D [694 0 R /XYZ 150.705 190.483 null] +707 0 obj << +/D [699 0 R /XYZ 150.705 190.483 null] >> endobj -703 0 obj << -/D [694 0 R /XYZ 150.705 169.712 null] +708 0 obj << +/D [699 0 R /XYZ 150.705 169.712 null] >> endobj -704 0 obj << -/D [694 0 R /XYZ 150.705 150.854 null] +709 0 obj << +/D [699 0 R /XYZ 150.705 150.854 null] >> endobj -705 0 obj << -/D [694 0 R /XYZ 150.705 134.487 null] +710 0 obj << +/D [699 0 R /XYZ 150.705 134.487 null] >> endobj -693 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F30 664 0 R /F9 697 0 R /F17 629 0 R >> +698 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F30 669 0 R /F9 702 0 R /F17 634 0 R >> /ProcSet [ /PDF /Text ] >> endobj -708 0 obj << +714 0 obj << /Length 6893 >> stream @@ -4146,99 +4166,156 @@ BT ET endstream endobj -707 0 obj << +713 0 obj << /Type /Page -/Contents 708 0 R -/Resources 706 0 R +/Contents 714 0 R +/Resources 712 0 R /MediaBox [0 0 595.276 841.89] -/Parent 723 0 R ->> endobj -709 0 obj << -/D [707 0 R /XYZ 99.895 740.998 null] ->> endobj -710 0 obj << -/D [707 0 R /XYZ 99.895 716.092 null] ->> endobj -711 0 obj << -/D [707 0 R /XYZ 99.895 685.535 null] ->> endobj -712 0 obj << -/D [707 0 R /XYZ 99.895 613.511 null] ->> endobj -713 0 obj << -/D [707 0 R /XYZ 99.895 588.43 null] ->> endobj -714 0 obj << -/D [707 0 R /XYZ 99.895 563.625 null] +/Parent 729 0 R >> endobj 715 0 obj << -/D [707 0 R /XYZ 99.895 526.865 null] +/D [713 0 R /XYZ 99.895 740.998 null] >> endobj 716 0 obj << -/D [707 0 R /XYZ 99.895 502.06 null] +/D [713 0 R /XYZ 99.895 716.092 null] >> endobj 717 0 obj << -/D [707 0 R /XYZ 99.895 477.255 null] +/D [713 0 R /XYZ 99.895 685.535 null] >> endobj 718 0 obj << -/D [707 0 R /XYZ 99.895 449.514 null] +/D [713 0 R /XYZ 99.895 613.511 null] >> endobj 719 0 obj << -/D [707 0 R /XYZ 99.895 419.179 null] +/D [713 0 R /XYZ 99.895 588.43 null] >> endobj 720 0 obj << -/D [707 0 R /XYZ 99.895 388.567 null] +/D [713 0 R /XYZ 99.895 563.625 null] >> endobj 721 0 obj << -/D [707 0 R /XYZ 99.895 369.91 null] +/D [713 0 R /XYZ 99.895 526.865 null] >> endobj 722 0 obj << -/D [707 0 R /XYZ 99.895 351.53 null] +/D [713 0 R /XYZ 99.895 502.06 null] >> endobj -706 0 obj << -/Font << /F8 478 0 R /F30 664 0 R >> -/ProcSet [ /PDF /Text ] +723 0 obj << +/D [713 0 R /XYZ 99.895 477.255 null] +>> endobj +724 0 obj << +/D [713 0 R /XYZ 99.895 449.514 null] +>> endobj +725 0 obj << +/D [713 0 R /XYZ 99.895 419.179 null] >> endobj 726 0 obj << -/Length 3523 +/D [713 0 R /XYZ 99.895 388.567 null] +>> endobj +727 0 obj << +/D [713 0 R /XYZ 99.895 369.91 null] +>> endobj +728 0 obj << +/D [713 0 R /XYZ 99.895 351.53 null] +>> endobj +712 0 obj << +/Font << /F8 482 0 R /F30 669 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +732 0 obj << +/Length 7491 >> stream 0 g 0 G 0 g 0 G BT -/F16 11.9552 Tf 150.705 706.129 Td [(2.4)-1125(Programming)-375(mo)-31(del)]TJ/F8 9.9626 Tf 0 -18.389 Td [(The)-325(PSBLAS)-324(librarary)-325(is)-325(based)-324(o)-1(n)-324(the)-325(Single)-325(Program)-324(Multiple)-325(Data)-325(\050SPMD\051)]TJ 0 -11.956 Td [(programming)-413(mo)-28(del:)-603(eac)27(h)-413(pro)-27(cess)-413(participating)-413(in)-413(the)-413(computation)-413(p)-28(erforms)]TJ 0 -11.955 Td [(the)-333(same)-334(actions)-333(on)-333(a)-334(c)28(h)28(unk)-333(of)-334(data.)-444(P)28(arallelism)-334(is)-333(th)28(us)-334(data-d)1(riv)27(en.)]TJ 14.944 -11.955 Td [(Because)-389(of)-389(this)-389(structure,)-402(m)-1(an)28(y)-389(subrou)1(tines)-389(co)-28(ordinate)-389(their)-389(action)-389(across)]TJ -14.944 -11.955 Td [(the)-478(v)56(arious)-478(pro)-28(cesses,)-514(th)28(us)-478(pro)28(viding)-477(a)-1(n)-477(implicit)-478(sync)28(hronization)-478(p)-28(oin)28(t,)-514(and)]TJ 0 -11.955 Td [(therefore)]TJ/F17 9.9626 Tf 43.026 0 Td [(must)]TJ/F8 9.9626 Tf 26.326 0 Td [(b)-28(e)-452(called)-452(sim)28(ultaneously)-452(b)28(y)-452(all)-452(pro)-28(cesses)-452(participating)-452(in)-452(the)]TJ -69.352 -11.956 Td [(computation.)-597(This)-384(is)-384(certainly)-384(true)-385(for)-384(the)-384(data)-384(allo)-28(cation)-384(and)-384(assem)28(bly)-385(rou)1(-)]TJ 0 -11.955 Td [(tines,)-333(for)-334(all)-333(the)-333(computational)-333(routines)-334(and)-333(for)-333(some)-334(of)-333(the)-333(to)-28(ols)-334(r)1(outines.)]TJ 14.944 -11.955 Td [(Ho)28(w)28(e)-1(v)28(er)-490(there)-490(are)-490(m)-1(an)28(y)-490(cases)-490(where)-491(no)-490(sync)28(hronization,)-529(and)-491(in)1(dee)-1(d)-490(no)]TJ -14.944 -11.955 Td [(comm)28(unication)-459(among)-458(pro)-28(cesses,)-489(is)-459(implied;)-521(f)1(or)-459(instance,)-489(all)-459(the)-458(routines)-458(in)]TJ 0 -11.955 Td [(sec.)]TJ/F27 9.9626 Tf 19.88 0 Td [(??)]TJ/F8 9.9626 Tf 15.147 0 Td [(are)-434(only)-435(acting)-434(on)-434(the)-434(lo)-28(cal)-434(data)-435(structures,)-459(and)-435(th)28(us)-434(ma)28(y)-435(b)-27(e)-435(called)]TJ -35.027 -11.955 Td [(indep)-28(enden)28(tly)84(.)-917(The)-491(most)-491(imp)-27(ortan)27(t)-490(case)-491(is)-491(that)-491(of)-490(the)-491(co)-28(e\016cien)28(t)-491(insertion)]TJ 0 -11.956 Td [(routines:)-409(since)-263(the)-263(n)27(um)28(b)-28(er)-263(of)-263(co)-27(e\016c)-1(i)1(e)-1(n)28(ts)-263(in)-263(the)-263(sparse)-263(and)-263(dense)-263(matrices)-263(v)55(aries)]TJ 0 -11.955 Td [(among)-323(the)-322(pro)-28(cessors,)-325(and)-323(since)-322(the)-323(user)-323(is)-322(free)-323(to)-323(c)28(ho)-28(ose)-322(an)-323(arbitrary)-323(ord)1(e)-1(r)-322(in)]TJ 0 -11.955 Td [(builiding)-333(the)-333(matrix)-334(en)28(tries,)-333(these)-334(routines)-333(cannot)-333(imply)-334(a)-333(sync)28(hronization.)]TJ 14.944 -11.955 Td [(Throughout)-333(this)-333(use)-1(r)1('s)-334(guide)-333(eac)28(h)-334(subroutine)-333(will)-333(b)-28(e)-333(clearly)-334(indicated)-333(as:)]TJ +/F27 9.9626 Tf 150.705 706.129 Td [(2.3.1)-1150(User-de\014ned)-383(index)-384(mappings)]TJ/F8 9.9626 Tf 0 -18.389 Td [(PSBLAS)-385(s)-1(u)1(pp)-28(orts)-386(user-de\014ned)-385(global)-386(to)-386(lo)-27(cal)-386(index)-386(mappings,)-398(sub)-56(ject)-385(to)-386(the)]TJ 0 -11.956 Td [(constrain)28(ts)-334(ou)1(tlined)-334(in)-333(sec.)]TJ +0 0 1 rg 0 0 1 RG + [-333(2.3)]TJ +0 g 0 G + [(:)]TJ +0 g 0 G + 12.176 -19.925 Td [(1.)]TJ +0 g 0 G + [-500(The)-333(set)-334(of)-333(indices)-333(o)27(wned)-333(lo)-28(cally)-333(m)28(ust)-334(b)-27(e)-334(mapp)-28(ed)-333(to)-333(the)-334(set)-333(1)]TJ/F11 9.9626 Tf 282.774 0 Td [(:)-167(:)-166(:)-167(n)]TJ/F8 9.9626 Tf 19.263 -1.494 Td [(ro)28(w)]TJ/F9 4.9813 Tf 15.802 -0.997 Td [(i)]TJ/F8 9.9626 Tf 3.654 2.491 Td [(;)]TJ +0 g 0 G + -321.493 -19.925 Td [(2.)]TJ +0 g 0 G + [-500(The)-333(set)-334(of)-333(halo)-333(p)-28(oin)28(ts)-334(m)28(ust)-333(b)-28(e)-333(mapp)-28(ed)-333(to)-334(the)-333(set)]TJ/F11 9.9626 Tf 232.684 0 Td [(n)]TJ/F8 9.9626 Tf 5.98 -1.495 Td [(ro)28(w)]TJ/F9 4.9813 Tf 15.802 -0.996 Td [(i)]TJ/F8 9.9626 Tf 5.868 2.491 Td [(+)-222(1)]TJ/F11 9.9626 Tf 16.604 0 Td [(:)-167(:)-166(:)-167(n)]TJ/F8 9.9626 Tf 19.263 -3.487 Td [(col)]TJ/F9 4.9813 Tf 12.177 -0.996 Td [(i)]TJ/F8 9.9626 Tf 3.654 4.483 Td [(;)]TJ -324.208 -19.926 Td [(but)-366(otherwise)-366(the)-365(mapping)-366(is)-366(arbitrary)84(.)-542(The)-366(user)-366(application)-366(is)-365(resp)-28(onsible)-366(to)]TJ 0 -11.955 Td [(ensure)-324(consistency)-325(of)-324(this)-324(mapping;)-327(some)-325(errors)-324(ma)28(y)-325(b)-27(e)-325(catc)28(hed)-324(b)28(y)-325(the)-324(library)84(,)]TJ 0 -11.955 Td [(but)-377(this)-378(is)-377(not)-377(guaran)28(te)-1(ed.)-576(The)-377(application)-378(structure)-377(to)-377(s)-1(u)1(pp)-28(ort)-378(t)1(his)-378(usage)-377(is)]TJ 0 -11.955 Td [(as)-333(follo)27(ws:)]TJ +0 g 0 G + 12.176 -19.925 Td [(1.)]TJ +0 g 0 G + [-500(Initialize)-222(index)-222(space)-223(with)]TJ/F30 9.9626 Tf 125.696 0 Td [(psb_cdall\050ictx,desc,info,vl=vl,lidx=lidx\051)]TJ/F8 9.9626 Tf -112.966 -11.955 Td [(passing)-253(the)-254(v)28(ectors)]TJ/F30 9.9626 Tf 83.59 0 Td [(vl\050:\051)]TJ/F8 9.9626 Tf 28.674 0 Td [(con)28(taining)-253(the)-254(set)-253(of)-253(global)-253(indices)-254(o)28(wned)-253(b)28(y)-253(the)]TJ -112.264 -11.956 Td [(curren)28(t)-334(pr)1(o)-28(cess)-334(and)]TJ/F30 9.9626 Tf 88.751 0 Td [(lidx\050:\051)]TJ/F8 9.9626 Tf 39.933 0 Td [(con)28(taining)-333(the)-334(corresp)-28(ondin)1(g)-334(lo)-28(cal)-333(indices;)]TJ +0 g 0 G + -141.414 -19.925 Td [(2.)]TJ 0 g 0 G -/F27 9.9626 Tf -14.944 -19.925 Td [(Sync)32(hronous:)]TJ + [-500(Add)-266(the)-266(halo)-266(p)-27(oin)27(ts)]TJ/F30 9.9626 Tf 100.593 0 Td [(ja\050:\051)]TJ/F8 9.9626 Tf 28.801 0 Td [(and)-266(their)-266(asso)-28(ciated)-265(lo)-28(cal)-266(indices)]TJ/F30 9.9626 Tf 143.508 0 Td [(lidx\050:\051)]TJ/F8 9.9626 Tf 39.261 0 Td [(with)]TJ -299.433 -11.955 Td [(a\050some\051)-333(c)-1(all\050)1(s)-1(\051)-333(to)]TJ/F30 9.9626 Tf 79.812 0 Td [(psb_cdins\050nz,ja,desc,info,lidx=lidx\051)]TJ/F8 9.9626 Tf 188.293 0 Td [(;)]TJ 0 g 0 G -/F8 9.9626 Tf 71.504 0 Td [(m)28(ust)-359(b)-28(e)-359(called)-359(sim)28(ultaneously)-359(b)28(y)-359(all)-359(the)-359(pro)-28(cesses)-359(in)-359(the)-359(rele-)]TJ -46.597 -11.956 Td [(v)56(an)27(t)-333(comm)28(unication)-333(c)-1(on)28(text;)]TJ + -280.835 -19.925 Td [(3.)]TJ +0 g 0 G + [-500(Assem)28(ble)-334(the)-333(descriptor)-333(with)]TJ/F30 9.9626 Tf 143.02 0 Td [(psb_cdasb)]TJ/F8 9.9626 Tf 47.073 0 Td [(;)]TJ +0 g 0 G + -190.093 -19.926 Td [(4.)]TJ +0 g 0 G + [-500(Build)-240(the)-240(sparse)-240(matrices)-240(and)-240(v)27(ectors,)-258(optionally)-240(making)-240(use)-241(in)]TJ/F30 9.9626 Tf 284.462 0 Td [(psb_spins)]TJ/F8 9.9626 Tf -271.732 -11.955 Td [(and)]TJ/F30 9.9626 Tf 19.727 0 Td [(psb_geins)]TJ/F8 9.9626 Tf 50.749 0 Td [(of)-369(the)]TJ/F30 9.9626 Tf 29.214 0 Td [(local)]TJ/F8 9.9626 Tf 29.827 0 Td [(argumen)28(t)-369(sp)-28(ecifying)-369(that)-369(the)-369(indices)-369(in)]TJ/F30 9.9626 Tf 176.06 0 Td [(ia)]TJ/F8 9.9626 Tf 10.461 0 Td [(,)]TJ/F30 9.9626 Tf -316.038 -11.955 Td [(ja)]TJ/F8 9.9626 Tf 13.782 0 Td [(and)]TJ/F30 9.9626 Tf 19.372 0 Td [(irw)]TJ/F8 9.9626 Tf 15.691 0 Td [(,)-333(resp)-28(ectiv)28(ely)83(,)-333(are)-334(already)-333(lo)-28(cal)-333(indices.)]TJ/F16 11.9552 Tf -73.751 -27.888 Td [(2.4)-1125(Programming)-375(mo)-31(del)]TJ/F8 9.9626 Tf 0 -18.39 Td [(The)-325(PSBLAS)-324(librarary)-325(is)-325(based)-324(o)-1(n)-324(the)-325(Single)-325(Program)-324(Multiple)-325(Data)-325(\050SPMD\051)]TJ 0 -11.955 Td [(programming)-413(mo)-28(del:)-603(eac)27(h)-413(pro)-27(cess)-413(participating)-413(in)-413(the)-413(computation)-413(p)-28(erforms)]TJ 0 -11.955 Td [(the)-333(same)-334(actions)-333(on)-333(a)-334(c)28(h)28(unk)-333(of)-334(data.)-444(P)28(arallelism)-334(is)-333(th)28(us)-334(data-d)1(riv)27(en.)]TJ 14.944 -11.955 Td [(Because)-389(of)-389(this)-389(structure,)-402(m)-1(an)28(y)-389(subrou)1(tines)-389(co)-28(ordinate)-389(their)-389(action)-389(across)]TJ -14.944 -11.956 Td [(the)-478(v)56(arious)-478(pro)-28(cesses,)-514(th)28(us)-478(pro)28(viding)-477(a)-1(n)-477(implicit)-478(sync)28(hronization)-478(p)-28(oin)28(t,)-514(and)]TJ 0 -11.955 Td [(therefore)]TJ/F17 9.9626 Tf 43.026 0 Td [(must)]TJ/F8 9.9626 Tf 26.326 0 Td [(b)-28(e)-452(called)-452(sim)28(ultaneously)-452(b)28(y)-452(all)-452(pro)-28(cesses)-452(participating)-452(in)-452(the)]TJ -69.352 -11.955 Td [(computation.)-597(This)-384(is)-384(certainly)-384(true)-385(for)-384(the)-384(data)-384(allo)-28(cation)-384(and)-384(assem)28(bly)-385(rou)1(-)]TJ 0 -11.955 Td [(tines,)-333(for)-334(all)-333(the)-333(computational)-333(routines)-334(and)-333(for)-333(some)-334(of)-333(the)-333(to)-28(ols)-334(r)1(outines.)]TJ 14.944 -11.955 Td [(Ho)28(w)28(e)-1(v)28(er)-490(there)-490(are)-490(m)-1(an)28(y)-490(cases)-490(where)-491(no)-490(sync)28(hronization,)-529(and)-491(in)1(dee)-1(d)-490(no)]TJ -14.944 -11.955 Td [(comm)28(unication)-459(among)-458(pro)-28(cesses,)-489(is)-459(implied;)-521(f)1(or)-459(instance,)-489(all)-459(the)-458(routines)-458(in)]TJ 0 -11.956 Td [(sec.)]TJ/F27 9.9626 Tf 19.88 0 Td [(??)]TJ/F8 9.9626 Tf 15.147 0 Td [(are)-434(only)-435(acting)-434(on)-434(the)-434(lo)-28(cal)-434(data)-435(structures,)-459(and)-435(th)28(us)-434(ma)28(y)-435(b)-27(e)-435(called)]TJ -35.027 -11.955 Td [(indep)-28(enden)28(tly)84(.)-917(The)-491(most)-491(imp)-27(ortan)27(t)-490(case)-491(is)-491(that)-491(of)-490(the)-491(co)-28(e\016cien)28(t)-491(insertion)]TJ 0 -11.955 Td [(routines:)-409(since)-263(the)-263(n)27(um)28(b)-28(er)-263(of)-263(co)-27(e\016c)-1(i)1(e)-1(n)28(ts)-263(in)-263(the)-263(sparse)-263(and)-263(dense)-263(matrices)-263(v)55(aries)]TJ 0 -11.955 Td [(among)-323(the)-322(pro)-28(cessors,)-325(and)-323(since)-322(the)-323(user)-323(is)-322(free)-323(to)-323(c)28(ho)-28(ose)-322(an)-323(arbitrary)-323(ord)1(e)-1(r)-322(in)]TJ 0 -11.955 Td [(builiding)-333(the)-333(matrix)-334(en)28(tries,)-333(these)-334(routines)-333(cannot)-333(imply)-334(a)-333(sync)28(hronization.)]TJ 14.944 -11.955 Td [(Throughout)-333(this)-333(use)-1(r)1('s)-334(guide)-333(eac)28(h)-334(subroutine)-333(will)-333(b)-28(e)-333(clearly)-334(indicated)-333(as:)]TJ +0 g 0 G +/F27 9.9626 Tf -14.944 -19.926 Td [(Sync)32(hronous:)]TJ +0 g 0 G +/F8 9.9626 Tf 71.504 0 Td [(m)28(ust)-359(b)-28(e)-359(called)-359(sim)28(ultaneously)-359(b)28(y)-359(all)-359(the)-359(pro)-28(cesses)-359(in)-359(the)-359(rele-)]TJ -46.597 -11.955 Td [(v)56(an)27(t)-333(comm)28(unication)-333(c)-1(on)28(text;)]TJ 0 g 0 G /F27 9.9626 Tf -24.907 -19.925 Td [(Async)32(hronous:)]TJ 0 g 0 G /F8 9.9626 Tf 78.32 0 Td [(ma)28(y)-334(b)-27(e)-334(called)-333(in)-333(a)-334(totally)-333(indep)-28(enden)28(t)-333(manner.)]TJ 0 g 0 G - 91.045 -366.168 Td [(8)]TJ + 91.045 -72.817 Td [(8)]TJ 0 g 0 G ET endstream endobj -725 0 obj << +731 0 obj << /Type /Page -/Contents 726 0 R -/Resources 724 0 R +/Contents 732 0 R +/Resources 730 0 R /MediaBox [0 0 595.276 841.89] -/Parent 723 0 R +/Parent 729 0 R +/Annots [ 711 0 R ] >> endobj -727 0 obj << -/D [725 0 R /XYZ 150.705 740.998 null] +711 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [269.731 674.788 284.454 683.699] +/Subtype /Link +/A << /S /GoTo /D (subsection.2.3) >> +>> endobj +733 0 obj << +/D [731 0 R /XYZ 150.705 740.998 null] >> endobj 30 0 obj << -/D [725 0 R /XYZ 150.705 716.092 null] +/D [731 0 R /XYZ 150.705 716.092 null] >> endobj -724 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F17 629 0 R /F27 477 0 R >> +734 0 obj << +/D [731 0 R /XYZ 150.705 671.799 null] +>> endobj +735 0 obj << +/D [731 0 R /XYZ 150.705 649.383 null] +>> endobj +736 0 obj << +/D [731 0 R /XYZ 150.705 576.158 null] +>> endobj +737 0 obj << +/D [731 0 R /XYZ 150.705 530.385 null] +>> endobj +738 0 obj << +/D [731 0 R /XYZ 150.705 497.951 null] +>> endobj +739 0 obj << +/D [731 0 R /XYZ 150.705 478.303 null] +>> endobj +34 0 obj << +/D [731 0 R /XYZ 150.705 424.511 null] +>> endobj +730 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F11 654 0 R /F9 702 0 R /F30 669 0 R /F16 479 0 R /F17 634 0 R >> /ProcSet [ /PDF /Text ] >> endobj -731 0 obj << +743 0 obj << /Length 8440 >> stream @@ -4381,38 +4458,38 @@ BT ET endstream endobj -730 0 obj << +742 0 obj << /Type /Page -/Contents 731 0 R -/Resources 729 0 R +/Contents 743 0 R +/Resources 741 0 R /MediaBox [0 0 595.276 841.89] -/Parent 723 0 R -/Annots [ 728 0 R ] +/Parent 729 0 R +/Annots [ 740 0 R ] >> endobj -728 0 obj << +740 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [269.318 225.936 276.292 236.784] /Subtype /Link /A << /S /GoTo /D (section.6) >> >> endobj -732 0 obj << -/D [730 0 R /XYZ 99.895 740.998 null] ->> endobj -34 0 obj << -/D [730 0 R /XYZ 99.895 716.092 null] +744 0 obj << +/D [742 0 R /XYZ 99.895 740.998 null] >> endobj 38 0 obj << -/D [730 0 R /XYZ 99.895 331.305 null] +/D [742 0 R /XYZ 99.895 716.092 null] >> endobj -733 0 obj << -/D [730 0 R /XYZ 342.427 288.724 null] +42 0 obj << +/D [742 0 R /XYZ 99.895 331.305 null] >> endobj -729 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F30 664 0 R /F27 477 0 R /F14 667 0 R >> +745 0 obj << +/D [742 0 R /XYZ 342.427 288.724 null] +>> endobj +741 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F30 669 0 R /F27 481 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -737 0 obj << +749 0 obj << /Length 6708 >> stream @@ -4533,53 +4610,53 @@ BT ET endstream endobj -736 0 obj << +748 0 obj << /Type /Page -/Contents 737 0 R -/Resources 735 0 R +/Contents 749 0 R +/Resources 747 0 R /MediaBox [0 0 595.276 841.89] -/Parent 723 0 R -/Annots [ 734 0 R ] +/Parent 729 0 R +/Annots [ 746 0 R ] >> endobj -734 0 obj << +746 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [452.103 457.229 459.077 469.184] /Subtype /Link /A << /S /GoTo /D (section.6) >> >> endobj -738 0 obj << -/D [736 0 R /XYZ 150.705 740.998 null] +750 0 obj << +/D [748 0 R /XYZ 150.705 740.998 null] >> endobj -739 0 obj << -/D [736 0 R /XYZ 150.705 353.756 null] +751 0 obj << +/D [748 0 R /XYZ 150.705 353.756 null] >> endobj -740 0 obj << -/D [736 0 R /XYZ 150.705 337.982 null] +752 0 obj << +/D [748 0 R /XYZ 150.705 337.982 null] >> endobj -741 0 obj << -/D [736 0 R /XYZ 150.705 322.207 null] +753 0 obj << +/D [748 0 R /XYZ 150.705 322.207 null] >> endobj -742 0 obj << -/D [736 0 R /XYZ 150.705 306.433 null] +754 0 obj << +/D [748 0 R /XYZ 150.705 306.433 null] >> endobj -743 0 obj << -/D [736 0 R /XYZ 150.705 290.659 null] +755 0 obj << +/D [748 0 R /XYZ 150.705 290.659 null] >> endobj -744 0 obj << -/D [736 0 R /XYZ 150.705 163.801 null] +756 0 obj << +/D [748 0 R /XYZ 150.705 163.801 null] >> endobj -745 0 obj << -/D [736 0 R /XYZ 150.705 148.027 null] +757 0 obj << +/D [748 0 R /XYZ 150.705 148.027 null] >> endobj -746 0 obj << -/D [736 0 R /XYZ 150.705 132.253 null] +758 0 obj << +/D [748 0 R /XYZ 150.705 132.253 null] >> endobj -735 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F14 667 0 R >> +747 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -749 0 obj << +761 0 obj << /Length 5012 >> stream @@ -4668,39 +4745,39 @@ BT ET endstream endobj -748 0 obj << +760 0 obj << /Type /Page -/Contents 749 0 R -/Resources 747 0 R +/Contents 761 0 R +/Resources 759 0 R /MediaBox [0 0 595.276 841.89] -/Parent 723 0 R +/Parent 729 0 R >> endobj -750 0 obj << -/D [748 0 R /XYZ 99.895 740.998 null] +762 0 obj << +/D [760 0 R /XYZ 99.895 740.998 null] >> endobj -751 0 obj << -/D [748 0 R /XYZ 99.895 716.092 null] +763 0 obj << +/D [760 0 R /XYZ 99.895 716.092 null] >> endobj -752 0 obj << -/D [748 0 R /XYZ 99.895 700.92 null] +764 0 obj << +/D [760 0 R /XYZ 99.895 700.92 null] >> endobj -753 0 obj << -/D [748 0 R /XYZ 99.895 552.932 null] +765 0 obj << +/D [760 0 R /XYZ 99.895 552.932 null] >> endobj -754 0 obj << -/D [748 0 R /XYZ 99.895 534.433 null] +766 0 obj << +/D [760 0 R /XYZ 99.895 534.433 null] >> endobj -755 0 obj << -/D [748 0 R /XYZ 99.895 515.935 null] +767 0 obj << +/D [760 0 R /XYZ 99.895 515.935 null] >> endobj -756 0 obj << -/D [748 0 R /XYZ 147.412 280.287 null] +768 0 obj << +/D [760 0 R /XYZ 147.412 280.287 null] >> endobj -747 0 obj << -/Font << /F8 478 0 R /F27 477 0 R /F30 664 0 R >> +759 0 obj << +/Font << /F8 482 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -761 0 obj << +773 0 obj << /Length 5177 >> stream @@ -4827,48 +4904,48 @@ BT ET endstream endobj -760 0 obj << +772 0 obj << /Type /Page -/Contents 761 0 R -/Resources 759 0 R +/Contents 773 0 R +/Resources 771 0 R /MediaBox [0 0 595.276 841.89] -/Parent 723 0 R -/Annots [ 757 0 R 758 0 R ] +/Parent 729 0 R +/Annots [ 769 0 R 770 0 R ] >> endobj -757 0 obj << +769 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [351.231 525.114 358.204 537.069] /Subtype /Link /A << /S /GoTo /D (section.1) >> >> endobj -758 0 obj << +770 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [186.34 315.967 193.314 327.923] /Subtype /Link /A << /S /GoTo /D (section.1) >> >> endobj -762 0 obj << -/D [760 0 R /XYZ 150.705 740.998 null] ->> endobj -42 0 obj << -/D [760 0 R /XYZ 150.705 716.092 null] +774 0 obj << +/D [772 0 R /XYZ 150.705 740.998 null] >> endobj 46 0 obj << -/D [760 0 R /XYZ 150.705 679.209 null] +/D [772 0 R /XYZ 150.705 716.092 null] >> endobj 50 0 obj << -/D [760 0 R /XYZ 150.705 482.017 null] +/D [772 0 R /XYZ 150.705 679.209 null] >> endobj 54 0 obj << -/D [760 0 R /XYZ 150.705 272.871 null] +/D [772 0 R /XYZ 150.705 482.017 null] >> endobj -759 0 obj << -/Font << /F27 477 0 R /F30 664 0 R /F8 478 0 R /F14 667 0 R /F10 666 0 R >> +58 0 obj << +/D [772 0 R /XYZ 150.705 272.871 null] +>> endobj +771 0 obj << +/Font << /F27 481 0 R /F30 669 0 R /F8 482 0 R /F14 672 0 R /F10 671 0 R >> /ProcSet [ /PDF /Text ] >> endobj -765 0 obj << +777 0 obj << /Length 4238 >> stream @@ -5028,33 +5105,33 @@ BT ET endstream endobj -764 0 obj << +776 0 obj << /Type /Page -/Contents 765 0 R -/Resources 763 0 R +/Contents 777 0 R +/Resources 775 0 R /MediaBox [0 0 595.276 841.89] -/Parent 767 0 R +/Parent 779 0 R >> endobj -766 0 obj << -/D [764 0 R /XYZ 99.895 740.998 null] ->> endobj -58 0 obj << -/D [764 0 R /XYZ 99.895 697.426 null] +778 0 obj << +/D [776 0 R /XYZ 99.895 740.998 null] >> endobj 62 0 obj << -/D [764 0 R /XYZ 99.895 469.407 null] +/D [776 0 R /XYZ 99.895 697.426 null] >> endobj 66 0 obj << -/D [764 0 R /XYZ 99.895 288.306 null] +/D [776 0 R /XYZ 99.895 469.407 null] >> endobj 70 0 obj << -/D [764 0 R /XYZ 99.895 175.264 null] +/D [776 0 R /XYZ 99.895 288.306 null] >> endobj -763 0 obj << -/Font << /F27 477 0 R /F30 664 0 R /F8 478 0 R /F16 475 0 R >> +74 0 obj << +/D [776 0 R /XYZ 99.895 175.264 null] +>> endobj +775 0 obj << +/Font << /F27 481 0 R /F30 669 0 R /F8 482 0 R /F16 479 0 R >> /ProcSet [ /PDF /Text ] >> endobj -773 0 obj << +785 0 obj << /Length 9813 >> stream @@ -5386,55 +5463,55 @@ BT ET endstream endobj -772 0 obj << +784 0 obj << /Type /Page -/Contents 773 0 R -/Resources 771 0 R +/Contents 785 0 R +/Resources 783 0 R /MediaBox [0 0 595.276 841.89] -/Parent 767 0 R -/Annots [ 768 0 R 769 0 R 770 0 R ] +/Parent 779 0 R +/Annots [ 780 0 R 781 0 R 782 0 R ] >> endobj -768 0 obj << +780 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [188.06 320.929 200.015 329.342] /Subtype /Link /A << /S /GoTo /D (cite.DesignPatterns) >> >> endobj -769 0 obj << +781 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[0 1 0] /Rect [268.904 320.929 280.86 329.342] /Subtype /Link /A << /S /GoTo /D (cite.Sparse03) >> >> endobj -770 0 obj << +782 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [459.496 318.438 466.47 330.393] /Subtype /Link /A << /S /GoTo /D (figure.4) >> >> endobj -774 0 obj << -/D [772 0 R /XYZ 150.705 740.998 null] ->> endobj -74 0 obj << -/D [772 0 R /XYZ 150.705 583.867 null] +786 0 obj << +/D [784 0 R /XYZ 150.705 740.998 null] >> endobj 78 0 obj << -/D [772 0 R /XYZ 150.705 376.504 null] +/D [784 0 R /XYZ 150.705 583.867 null] >> endobj -775 0 obj << -/D [772 0 R /XYZ 171.358 345.835 null] +82 0 obj << +/D [784 0 R /XYZ 150.705 376.504 null] >> endobj -776 0 obj << -/D [772 0 R /XYZ 455.673 208.654 null] +787 0 obj << +/D [784 0 R /XYZ 171.358 345.835 null] >> endobj -771 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R /F16 475 0 R >> +788 0 obj << +/D [784 0 R /XYZ 455.673 208.654 null] +>> endobj +783 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R /F16 479 0 R >> /ProcSet [ /PDF /Text ] >> endobj -781 0 obj << +793 0 obj << /Length 4702 >> stream @@ -5546,33 +5623,33 @@ BT ET endstream endobj -780 0 obj << +792 0 obj << /Type /Page -/Contents 781 0 R -/Resources 779 0 R +/Contents 793 0 R +/Resources 791 0 R /MediaBox [0 0 595.276 841.89] -/Parent 767 0 R +/Parent 779 0 R >> endobj -782 0 obj << -/D [780 0 R /XYZ 99.895 740.998 null] ->> endobj -778 0 obj << -/D [780 0 R /XYZ 155.561 628.476 null] +794 0 obj << +/D [792 0 R /XYZ 99.895 740.998 null] >> endobj -82 0 obj << -/D [780 0 R /XYZ 99.895 383.119 null] +790 0 obj << +/D [792 0 R /XYZ 155.561 628.476 null] >> endobj 86 0 obj << -/D [780 0 R /XYZ 99.895 346.601 null] +/D [792 0 R /XYZ 99.895 383.119 null] >> endobj 90 0 obj << -/D [780 0 R /XYZ 99.895 172.816 null] +/D [792 0 R /XYZ 99.895 346.601 null] >> endobj -779 0 obj << -/Font << /F30 664 0 R /F8 478 0 R /F27 477 0 R >> +94 0 obj << +/D [792 0 R /XYZ 99.895 172.816 null] +>> endobj +791 0 obj << +/Font << /F30 669 0 R /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -785 0 obj << +797 0 obj << /Length 3487 >> stream @@ -5656,30 +5733,30 @@ BT ET endstream endobj -784 0 obj << +796 0 obj << /Type /Page -/Contents 785 0 R -/Resources 783 0 R +/Contents 797 0 R +/Resources 795 0 R /MediaBox [0 0 595.276 841.89] -/Parent 767 0 R +/Parent 779 0 R >> endobj -786 0 obj << -/D [784 0 R /XYZ 150.705 740.998 null] +798 0 obj << +/D [796 0 R /XYZ 150.705 740.998 null] >> endobj -94 0 obj << -/D [784 0 R /XYZ 150.705 588.746 null] +98 0 obj << +/D [796 0 R /XYZ 150.705 588.746 null] >> endobj -787 0 obj << -/D [784 0 R /XYZ 150.705 393.655 null] +799 0 obj << +/D [796 0 R /XYZ 150.705 393.655 null] >> endobj -98 0 obj << -/D [784 0 R /XYZ 150.705 298.75 null] +102 0 obj << +/D [796 0 R /XYZ 150.705 298.75 null] >> endobj -783 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R >> +795 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -790 0 obj << +802 0 obj << /Length 3701 >> stream @@ -5784,30 +5861,30 @@ BT ET endstream endobj -789 0 obj << +801 0 obj << /Type /Page -/Contents 790 0 R -/Resources 788 0 R +/Contents 802 0 R +/Resources 800 0 R /MediaBox [0 0 595.276 841.89] -/Parent 767 0 R ->> endobj -791 0 obj << -/D [789 0 R /XYZ 99.895 740.998 null] +/Parent 779 0 R >> endobj -102 0 obj << -/D [789 0 R /XYZ 99.895 697.187 null] +803 0 obj << +/D [801 0 R /XYZ 99.895 740.998 null] >> endobj 106 0 obj << -/D [789 0 R /XYZ 99.895 508.701 null] +/D [801 0 R /XYZ 99.895 697.187 null] >> endobj 110 0 obj << -/D [789 0 R /XYZ 99.895 308.26 null] +/D [801 0 R /XYZ 99.895 508.701 null] >> endobj -788 0 obj << -/Font << /F27 477 0 R /F30 664 0 R /F8 478 0 R >> +114 0 obj << +/D [801 0 R /XYZ 99.895 308.26 null] +>> endobj +800 0 obj << +/Font << /F27 481 0 R /F30 669 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -796 0 obj << +808 0 obj << /Length 7793 >> stream @@ -6052,51 +6129,51 @@ BT ET endstream endobj -795 0 obj << +807 0 obj << /Type /Page -/Contents 796 0 R -/Resources 794 0 R +/Contents 808 0 R +/Resources 806 0 R /MediaBox [0 0 595.276 841.89] -/Parent 767 0 R -/Annots [ 792 0 R 793 0 R ] +/Parent 779 0 R +/Annots [ 804 0 R 805 0 R ] >> endobj -792 0 obj << +804 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [250.191 478.535 257.165 489.383] /Subtype /Link /A << /S /GoTo /D (section.6) >> >> endobj -793 0 obj << +805 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [343.178 442.649 350.152 453.497] /Subtype /Link /A << /S /GoTo /D (figure.5) >> >> endobj -797 0 obj << -/D [795 0 R /XYZ 150.705 740.998 null] ->> endobj -114 0 obj << -/D [795 0 R /XYZ 150.705 716.092 null] +809 0 obj << +/D [807 0 R /XYZ 150.705 740.998 null] >> endobj 118 0 obj << -/D [795 0 R /XYZ 150.705 547.238 null] +/D [807 0 R /XYZ 150.705 716.092 null] >> endobj -798 0 obj << -/D [795 0 R /XYZ 171.961 517.334 null] +122 0 obj << +/D [807 0 R /XYZ 150.705 547.238 null] >> endobj -799 0 obj << -/D [795 0 R /XYZ 392.9 505.378 null] +810 0 obj << +/D [807 0 R /XYZ 171.961 517.334 null] >> endobj -800 0 obj << -/D [795 0 R /XYZ 209.041 146.214 null] +811 0 obj << +/D [807 0 R /XYZ 392.9 505.378 null] >> endobj -794 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F16 475 0 R /F30 664 0 R >> +812 0 obj << +/D [807 0 R /XYZ 209.041 146.214 null] +>> endobj +806 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F16 479 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -804 0 obj << +816 0 obj << /Length 3278 >> stream @@ -6194,36 +6271,36 @@ BT ET endstream endobj -803 0 obj << +815 0 obj << /Type /Page -/Contents 804 0 R -/Resources 802 0 R +/Contents 816 0 R +/Resources 814 0 R /MediaBox [0 0 595.276 841.89] -/Parent 807 0 R ->> endobj -805 0 obj << -/D [803 0 R /XYZ 99.895 740.998 null] +/Parent 819 0 R >> endobj -122 0 obj << -/D [803 0 R /XYZ 99.895 716.092 null] +817 0 obj << +/D [815 0 R /XYZ 99.895 740.998 null] >> endobj 126 0 obj << -/D [803 0 R /XYZ 99.895 677.617 null] ->> endobj -806 0 obj << -/D [803 0 R /XYZ 99.895 489.623 null] +/D [815 0 R /XYZ 99.895 716.092 null] >> endobj 130 0 obj << -/D [803 0 R /XYZ 99.895 470.036 null] +/D [815 0 R /XYZ 99.895 677.617 null] +>> endobj +818 0 obj << +/D [815 0 R /XYZ 99.895 489.623 null] >> endobj 134 0 obj << -/D [803 0 R /XYZ 99.895 282.042 null] +/D [815 0 R /XYZ 99.895 470.036 null] >> endobj -802 0 obj << -/Font << /F27 477 0 R /F30 664 0 R /F8 478 0 R >> +138 0 obj << +/D [815 0 R /XYZ 99.895 282.042 null] +>> endobj +814 0 obj << +/Font << /F27 481 0 R /F30 669 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -810 0 obj << +822 0 obj << /Length 2032 >> stream @@ -6265,38 +6342,38 @@ BT ET endstream endobj -809 0 obj << +821 0 obj << /Type /Page -/Contents 810 0 R -/Resources 808 0 R +/Contents 822 0 R +/Resources 820 0 R /MediaBox [0 0 595.276 841.89] -/Parent 807 0 R -/Annots [ 801 0 R ] +/Parent 819 0 R +/Annots [ 813 0 R ] >> endobj -801 0 obj << +813 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [177.685 648.664 184.659 659.789] /Subtype /Link /A << /S /GoTo /D (figure.6) >> >> endobj -811 0 obj << -/D [809 0 R /XYZ 150.705 740.998 null] +823 0 obj << +/D [821 0 R /XYZ 150.705 740.998 null] >> endobj -138 0 obj << -/D [809 0 R /XYZ 150.705 716.092 null] +142 0 obj << +/D [821 0 R /XYZ 150.705 716.092 null] >> endobj -812 0 obj << -/D [809 0 R /XYZ 308.372 663.829 null] +824 0 obj << +/D [821 0 R /XYZ 308.372 663.829 null] >> endobj -814 0 obj << -/D [809 0 R /XYZ 206.288 542.396 null] +826 0 obj << +/D [821 0 R /XYZ 206.288 542.396 null] >> endobj -808 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F30 664 0 R /F46 813 0 R >> +820 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F30 669 0 R /F46 825 0 R >> /ProcSet [ /PDF /Text ] >> endobj -817 0 obj << +829 0 obj << /Length 157 >> stream @@ -6310,24 +6387,24 @@ BT ET endstream endobj -816 0 obj << +828 0 obj << /Type /Page -/Contents 817 0 R -/Resources 815 0 R +/Contents 829 0 R +/Resources 827 0 R /MediaBox [0 0 595.276 841.89] -/Parent 807 0 R +/Parent 819 0 R >> endobj -818 0 obj << -/D [816 0 R /XYZ 99.895 740.998 null] +830 0 obj << +/D [828 0 R /XYZ 99.895 740.998 null] >> endobj -142 0 obj << -/D [816 0 R /XYZ 99.895 716.092 null] +146 0 obj << +/D [828 0 R /XYZ 99.895 716.092 null] >> endobj -815 0 obj << -/Font << /F16 475 0 R /F8 478 0 R >> +827 0 obj << +/Font << /F16 479 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -828 0 obj << +840 0 obj << /Length 7321 >> stream @@ -6506,70 +6583,70 @@ BT ET endstream endobj -827 0 obj << +839 0 obj << /Type /Page -/Contents 828 0 R -/Resources 826 0 R +/Contents 840 0 R +/Resources 838 0 R /MediaBox [0 0 595.276 841.89] -/Parent 807 0 R -/Annots [ 819 0 R 820 0 R 821 0 R 822 0 R 823 0 R 824 0 R ] +/Parent 819 0 R +/Annots [ 831 0 R 832 0 R 833 0 R 834 0 R 835 0 R 836 0 R ] >> endobj -819 0 obj << +831 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [432.897 401.949 439.871 412.798] /Subtype /Link /A << /S /GoTo /D (table.1) >> >> endobj -820 0 obj << +832 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 333.522 495.412 344.647] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -821 0 obj << +833 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [379.142 321.844 386.116 332.692] /Subtype /Link /A << /S /GoTo /D (table.1) >> >> endobj -822 0 obj << +834 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [432.897 241.738 439.871 252.586] /Subtype /Link /A << /S /GoTo /D (table.1) >> >> endobj -823 0 obj << +835 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 173.311 495.412 184.436] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -824 0 obj << +836 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [396.435 161.632 403.409 172.481] /Subtype /Link /A << /S /GoTo /D (table.1) >> >> endobj -829 0 obj << -/D [827 0 R /XYZ 150.705 740.998 null] +841 0 obj << +/D [839 0 R /XYZ 150.705 740.998 null] >> endobj -146 0 obj << -/D [827 0 R /XYZ 150.705 697.283 null] +150 0 obj << +/D [839 0 R /XYZ 150.705 697.283 null] >> endobj -830 0 obj << -/D [827 0 R /XYZ 318.451 539.42 null] +842 0 obj << +/D [839 0 R /XYZ 318.451 539.42 null] >> endobj -826 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F30 664 0 R /F27 477 0 R >> +838 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -835 0 obj << +847 0 obj << /Length 2659 >> stream @@ -6641,43 +6718,43 @@ BT ET endstream endobj -834 0 obj << +846 0 obj << /Type /Page -/Contents 835 0 R -/Resources 833 0 R +/Contents 847 0 R +/Resources 845 0 R /MediaBox [0 0 595.276 841.89] -/Parent 807 0 R -/Annots [ 825 0 R 831 0 R 832 0 R ] +/Parent 819 0 R +/Annots [ 837 0 R 843 0 R 844 0 R ] >> endobj -825 0 obj << +837 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [259.464 679.008 326.522 690.133] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -831 0 obj << +843 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [368.549 589.345 444.603 600.47] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -832 0 obj << +844 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.558 577.666 352.532 588.514] /Subtype /Link /A << /S /GoTo /D (table.1) >> >> endobj -836 0 obj << -/D [834 0 R /XYZ 99.895 740.998 null] +848 0 obj << +/D [846 0 R /XYZ 99.895 740.998 null] >> endobj -833 0 obj << -/Font << /F8 478 0 R /F27 477 0 R /F30 664 0 R /F11 649 0 R >> +845 0 obj << +/Font << /F8 482 0 R /F27 481 0 R /F30 669 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -845 0 obj << +857 0 obj << /Length 7891 >> stream @@ -6869,70 +6946,70 @@ BT ET endstream endobj -844 0 obj << +856 0 obj << /Type /Page -/Contents 845 0 R -/Resources 843 0 R +/Contents 857 0 R +/Resources 855 0 R /MediaBox [0 0 595.276 841.89] -/Parent 807 0 R -/Annots [ 837 0 R 838 0 R 839 0 R 840 0 R 841 0 R 842 0 R ] +/Parent 819 0 R +/Annots [ 849 0 R 850 0 R 851 0 R 852 0 R 853 0 R 854 0 R ] >> endobj -837 0 obj << +849 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 361.842 495.412 372.967] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -838 0 obj << +850 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [379.142 350.163 386.116 361.011] /Subtype /Link /A << /S /GoTo /D (table.2) >> >> endobj -839 0 obj << +851 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 270.772 495.412 281.897] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -840 0 obj << +852 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [379.353 259.094 386.327 269.942] /Subtype /Link /A << /S /GoTo /D (table.2) >> >> endobj -841 0 obj << +853 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.273 179.703 377.331 190.828] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -842 0 obj << +854 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [432.897 117.392 439.871 128.24] /Subtype /Link /A << /S /GoTo /D (table.2) >> >> endobj -846 0 obj << -/D [844 0 R /XYZ 150.705 740.998 null] +858 0 obj << +/D [856 0 R /XYZ 150.705 740.998 null] >> endobj -150 0 obj << -/D [844 0 R /XYZ 150.705 697.37 null] +154 0 obj << +/D [856 0 R /XYZ 150.705 697.37 null] >> endobj -847 0 obj << -/D [844 0 R /XYZ 318.451 495.047 null] +859 0 obj << +/D [856 0 R /XYZ 318.451 495.047 null] >> endobj -843 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F30 664 0 R /F27 477 0 R >> +855 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -850 0 obj << +862 0 obj << /Length 624 >> stream @@ -6949,21 +7026,21 @@ BT ET endstream endobj -849 0 obj << +861 0 obj << /Type /Page -/Contents 850 0 R -/Resources 848 0 R +/Contents 862 0 R +/Resources 860 0 R /MediaBox [0 0 595.276 841.89] -/Parent 852 0 R +/Parent 864 0 R >> endobj -851 0 obj << -/D [849 0 R /XYZ 99.895 740.998 null] +863 0 obj << +/D [861 0 R /XYZ 99.895 740.998 null] >> endobj -848 0 obj << -/Font << /F27 477 0 R /F8 478 0 R >> +860 0 obj << +/Font << /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -861 0 obj << +873 0 obj << /Length 8416 >> stream @@ -7155,70 +7232,70 @@ BT ET endstream endobj -860 0 obj << +872 0 obj << /Type /Page -/Contents 861 0 R -/Resources 859 0 R +/Contents 873 0 R +/Resources 871 0 R /MediaBox [0 0 595.276 841.89] -/Parent 852 0 R -/Annots [ 853 0 R 854 0 R 855 0 R 856 0 R 857 0 R 858 0 R ] +/Parent 864 0 R +/Annots [ 865 0 R 866 0 R 867 0 R 868 0 R 869 0 R 870 0 R ] >> endobj -853 0 obj << +865 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 382.111 495.412 393.236] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -854 0 obj << +866 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [379.142 370.432 386.116 381.28] /Subtype /Link /A << /S /GoTo /D (table.3) >> >> endobj -855 0 obj << +867 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 291.951 495.412 303.076] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -856 0 obj << +868 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [379.353 280.273 386.327 291.121] /Subtype /Link /A << /S /GoTo /D (table.3) >> >> endobj -857 0 obj << +869 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.273 201.792 377.331 212.917] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -858 0 obj << +870 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [202.013 119.329 208.986 128.24] /Subtype /Link /A << /S /GoTo /D (table.2) >> >> endobj -862 0 obj << -/D [860 0 R /XYZ 150.705 740.998 null] +874 0 obj << +/D [872 0 R /XYZ 150.705 740.998 null] >> endobj -154 0 obj << -/D [860 0 R /XYZ 150.705 697.37 null] +158 0 obj << +/D [872 0 R /XYZ 150.705 697.37 null] >> endobj -863 0 obj << -/D [860 0 R /XYZ 318.451 510.309 null] +875 0 obj << +/D [872 0 R /XYZ 318.451 510.309 null] >> endobj -859 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F30 664 0 R /F27 477 0 R >> +871 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -866 0 obj << +878 0 obj << /Length 624 >> stream @@ -7235,21 +7312,21 @@ BT ET endstream endobj -865 0 obj << +877 0 obj << /Type /Page -/Contents 866 0 R -/Resources 864 0 R +/Contents 878 0 R +/Resources 876 0 R /MediaBox [0 0 595.276 841.89] -/Parent 852 0 R +/Parent 864 0 R >> endobj -867 0 obj << -/D [865 0 R /XYZ 99.895 740.998 null] +879 0 obj << +/D [877 0 R /XYZ 99.895 740.998 null] >> endobj -864 0 obj << -/Font << /F27 477 0 R /F8 478 0 R >> +876 0 obj << +/Font << /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -873 0 obj << +885 0 obj << /Length 7033 >> stream @@ -7408,49 +7485,49 @@ BT ET endstream endobj -872 0 obj << +884 0 obj << /Type /Page -/Contents 873 0 R -/Resources 871 0 R +/Contents 885 0 R +/Resources 883 0 R /MediaBox [0 0 595.276 841.89] -/Parent 852 0 R -/Annots [ 868 0 R 869 0 R 870 0 R ] +/Parent 864 0 R +/Annots [ 880 0 R 881 0 R 882 0 R ] >> endobj -868 0 obj << +880 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 344.231 495.412 355.355] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -869 0 obj << +881 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [376.221 332.552 383.195 343.4] /Subtype /Link /A << /S /GoTo /D (table.4) >> >> endobj -870 0 obj << +882 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.273 264.529 377.331 275.654] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -874 0 obj << -/D [872 0 R /XYZ 150.705 740.998 null] +886 0 obj << +/D [884 0 R /XYZ 150.705 740.998 null] >> endobj -158 0 obj << -/D [872 0 R /XYZ 150.705 697.37 null] +162 0 obj << +/D [884 0 R /XYZ 150.705 697.37 null] >> endobj -875 0 obj << -/D [872 0 R /XYZ 318.451 480.663 null] +887 0 obj << +/D [884 0 R /XYZ 318.451 480.663 null] >> endobj -871 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F30 664 0 R /F27 477 0 R >> +883 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -881 0 obj << +893 0 obj << /Length 6326 >> stream @@ -7609,49 +7686,49 @@ BT ET endstream endobj -880 0 obj << +892 0 obj << /Type /Page -/Contents 881 0 R -/Resources 879 0 R +/Contents 893 0 R +/Resources 891 0 R /MediaBox [0 0 595.276 841.89] -/Parent 852 0 R -/Annots [ 876 0 R 877 0 R 878 0 R ] +/Parent 864 0 R +/Annots [ 888 0 R 889 0 R 890 0 R ] >> endobj -876 0 obj << +888 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [368.549 401.031 444.603 412.156] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -877 0 obj << +889 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [325.411 389.353 332.385 400.201] /Subtype /Link /A << /S /GoTo /D (table.5) >> >> endobj -878 0 obj << +890 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [259.464 321.33 326.522 332.455] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -882 0 obj << -/D [880 0 R /XYZ 99.895 740.998 null] +894 0 obj << +/D [892 0 R /XYZ 99.895 740.998 null] >> endobj -162 0 obj << -/D [880 0 R /XYZ 99.895 697.37 null] +166 0 obj << +/D [892 0 R /XYZ 99.895 697.37 null] >> endobj -883 0 obj << -/D [880 0 R /XYZ 267.641 537.464 null] +895 0 obj << +/D [892 0 R /XYZ 267.641 537.464 null] >> endobj -879 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F30 664 0 R /F27 477 0 R >> +891 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -889 0 obj << +901 0 obj << /Length 6665 >> stream @@ -7810,49 +7887,49 @@ BT ET endstream endobj -888 0 obj << +900 0 obj << /Type /Page -/Contents 889 0 R -/Resources 887 0 R +/Contents 901 0 R +/Resources 899 0 R /MediaBox [0 0 595.276 841.89] -/Parent 852 0 R -/Annots [ 884 0 R 885 0 R 886 0 R ] +/Parent 864 0 R +/Annots [ 896 0 R 897 0 R 898 0 R ] >> endobj -884 0 obj << +896 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 350.692 495.412 361.817] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -885 0 obj << +897 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [376.221 339.014 383.195 349.862] /Subtype /Link /A << /S /GoTo /D (table.6) >> >> endobj -886 0 obj << +898 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.273 270.991 377.331 282.116] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -890 0 obj << -/D [888 0 R /XYZ 150.705 740.998 null] +902 0 obj << +/D [900 0 R /XYZ 150.705 740.998 null] >> endobj -166 0 obj << -/D [888 0 R /XYZ 150.705 697.37 null] +170 0 obj << +/D [900 0 R /XYZ 150.705 697.37 null] >> endobj -891 0 obj << -/D [888 0 R /XYZ 318.451 487.125 null] +903 0 obj << +/D [900 0 R /XYZ 318.451 487.125 null] >> endobj -887 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F7 665 0 R /F30 664 0 R /F27 477 0 R >> +899 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F7 670 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -897 0 obj << +909 0 obj << /Length 7318 >> stream @@ -8007,49 +8084,49 @@ BT ET endstream endobj -896 0 obj << +908 0 obj << /Type /Page -/Contents 897 0 R -/Resources 895 0 R +/Contents 909 0 R +/Resources 907 0 R /MediaBox [0 0 595.276 841.89] -/Parent 900 0 R -/Annots [ 892 0 R 893 0 R 894 0 R ] +/Parent 912 0 R +/Annots [ 904 0 R 905 0 R 906 0 R ] >> endobj -892 0 obj << +904 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [368.549 289.84 444.603 300.965] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -893 0 obj << +905 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [325.411 278.162 332.385 289.01] /Subtype /Link /A << /S /GoTo /D (table.7) >> >> endobj -894 0 obj << +906 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [259.464 208.355 326.522 219.48] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -898 0 obj << -/D [896 0 R /XYZ 99.895 740.998 null] +910 0 obj << +/D [908 0 R /XYZ 99.895 740.998 null] >> endobj -170 0 obj << -/D [896 0 R /XYZ 99.895 696.986 null] +174 0 obj << +/D [908 0 R /XYZ 99.895 696.986 null] >> endobj -899 0 obj << -/D [896 0 R /XYZ 267.641 432.072 null] +911 0 obj << +/D [908 0 R /XYZ 267.641 432.072 null] >> endobj -895 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F7 665 0 R /F30 664 0 R /F27 477 0 R >> +907 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F7 670 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -903 0 obj << +915 0 obj << /Length 625 >> stream @@ -8066,21 +8143,21 @@ BT ET endstream endobj -902 0 obj << +914 0 obj << /Type /Page -/Contents 903 0 R -/Resources 901 0 R +/Contents 915 0 R +/Resources 913 0 R /MediaBox [0 0 595.276 841.89] -/Parent 900 0 R +/Parent 912 0 R >> endobj -904 0 obj << -/D [902 0 R /XYZ 150.705 740.998 null] +916 0 obj << +/D [914 0 R /XYZ 150.705 740.998 null] >> endobj -901 0 obj << -/Font << /F27 477 0 R /F8 478 0 R >> +913 0 obj << +/Font << /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -910 0 obj << +922 0 obj << /Length 6709 >> stream @@ -8253,49 +8330,49 @@ BT ET endstream endobj -909 0 obj << +921 0 obj << /Type /Page -/Contents 910 0 R -/Resources 908 0 R +/Contents 922 0 R +/Resources 920 0 R /MediaBox [0 0 595.276 841.89] -/Parent 900 0 R -/Annots [ 905 0 R 906 0 R 907 0 R ] +/Parent 912 0 R +/Annots [ 917 0 R 918 0 R 919 0 R ] >> endobj -905 0 obj << +917 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [368.549 351.231 444.603 362.356] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -906 0 obj << +918 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [325.411 339.553 332.385 350.401] /Subtype /Link /A << /S /GoTo /D (table.8) >> >> endobj -907 0 obj << +919 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [259.464 271.676 326.522 282.801] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -911 0 obj << -/D [909 0 R /XYZ 99.895 740.998 null] +923 0 obj << +/D [921 0 R /XYZ 99.895 740.998 null] >> endobj -174 0 obj << -/D [909 0 R /XYZ 99.895 697.37 null] +178 0 obj << +/D [921 0 R /XYZ 99.895 697.37 null] >> endobj -912 0 obj << -/D [909 0 R /XYZ 267.641 510.406 null] +924 0 obj << +/D [921 0 R /XYZ 267.641 510.406 null] >> endobj -908 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F27 477 0 R /F30 664 0 R >> +920 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -918 0 obj << +930 0 obj << /Length 6162 >> stream @@ -8454,49 +8531,49 @@ BT ET endstream endobj -917 0 obj << +929 0 obj << /Type /Page -/Contents 918 0 R -/Resources 916 0 R +/Contents 930 0 R +/Resources 928 0 R /MediaBox [0 0 595.276 841.89] -/Parent 900 0 R -/Annots [ 913 0 R 914 0 R 915 0 R ] +/Parent 912 0 R +/Annots [ 925 0 R 926 0 R 927 0 R ] >> endobj -913 0 obj << +925 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 404.491 495.412 415.616] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -914 0 obj << +926 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [376.221 392.812 383.195 403.66] /Subtype /Link /A << /S /GoTo /D (table.9) >> >> endobj -915 0 obj << +927 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.273 324.789 377.331 335.914] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -919 0 obj << -/D [917 0 R /XYZ 150.705 740.998 null] +931 0 obj << +/D [929 0 R /XYZ 150.705 740.998 null] >> endobj -178 0 obj << -/D [917 0 R /XYZ 150.705 697.37 null] +182 0 obj << +/D [929 0 R /XYZ 150.705 697.37 null] >> endobj -920 0 obj << -/D [917 0 R /XYZ 318.451 540.923 null] +932 0 obj << +/D [929 0 R /XYZ 318.451 540.923 null] >> endobj -916 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F7 665 0 R /F30 664 0 R /F27 477 0 R >> +928 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F7 670 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -925 0 obj << +937 0 obj << /Length 5455 >> stream @@ -8648,42 +8725,42 @@ BT ET endstream endobj -924 0 obj << +936 0 obj << /Type /Page -/Contents 925 0 R -/Resources 923 0 R +/Contents 937 0 R +/Resources 935 0 R /MediaBox [0 0 595.276 841.89] -/Parent 900 0 R -/Annots [ 921 0 R 922 0 R ] +/Parent 912 0 R +/Annots [ 933 0 R 934 0 R ] >> endobj -921 0 obj << +933 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [259.464 354.677 336.983 365.802] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -922 0 obj << +934 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [259.464 286.931 326.522 298.056] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -926 0 obj << -/D [924 0 R /XYZ 99.895 740.998 null] +938 0 obj << +/D [936 0 R /XYZ 99.895 740.998 null] >> endobj -182 0 obj << -/D [924 0 R /XYZ 99.895 697.37 null] +186 0 obj << +/D [936 0 R /XYZ 99.895 697.37 null] >> endobj -927 0 obj << -/D [924 0 R /XYZ 270.132 513.305 null] +939 0 obj << +/D [936 0 R /XYZ 270.132 513.305 null] >> endobj -923 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F7 665 0 R /F27 477 0 R /F30 664 0 R >> +935 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F7 670 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -932 0 obj << +944 0 obj << /Length 5462 >> stream @@ -8835,42 +8912,42 @@ BT ET endstream endobj -931 0 obj << +943 0 obj << /Type /Page -/Contents 932 0 R -/Resources 930 0 R +/Contents 944 0 R +/Resources 942 0 R /MediaBox [0 0 595.276 841.89] -/Parent 900 0 R -/Annots [ 928 0 R 929 0 R ] +/Parent 912 0 R +/Annots [ 940 0 R 941 0 R ] >> endobj -928 0 obj << +940 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.273 354.677 387.792 365.802] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -929 0 obj << +941 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.273 286.931 377.331 298.056] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -933 0 obj << -/D [931 0 R /XYZ 150.705 740.998 null] +945 0 obj << +/D [943 0 R /XYZ 150.705 740.998 null] >> endobj -186 0 obj << -/D [931 0 R /XYZ 150.705 697.37 null] +190 0 obj << +/D [943 0 R /XYZ 150.705 697.37 null] >> endobj -935 0 obj << -/D [931 0 R /XYZ 320.941 513.305 null] +947 0 obj << +/D [943 0 R /XYZ 320.941 513.305 null] >> endobj -930 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F13 934 0 R /F27 477 0 R /F30 664 0 R >> +942 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F13 946 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -943 0 obj << +955 0 obj << /Length 7328 >> stream @@ -9043,65 +9120,65 @@ BT ET endstream endobj -942 0 obj << +954 0 obj << /Type /Page -/Contents 943 0 R -/Resources 941 0 R +/Contents 955 0 R +/Resources 953 0 R /MediaBox [0 0 595.276 841.89] -/Parent 949 0 R -/Annots [ 936 0 R 937 0 R 938 0 R 939 0 R ] +/Parent 961 0 R +/Annots [ 948 0 R 949 0 R 950 0 R 951 0 R ] >> endobj -936 0 obj << +948 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [382.088 276.095 394.043 286.943] /Subtype /Link /A << /S /GoTo /D (table.12) >> >> endobj -937 0 obj << +949 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [259.464 208.422 336.983 219.547] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -938 0 obj << +950 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [368.549 141.026 444.603 152.151] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -939 0 obj << +951 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [326.008 129.347 337.963 140.196] /Subtype /Link /A << /S /GoTo /D (table.12) >> >> endobj -944 0 obj << -/D [942 0 R /XYZ 99.895 740.998 null] +956 0 obj << +/D [954 0 R /XYZ 99.895 740.998 null] >> endobj -190 0 obj << -/D [942 0 R /XYZ 99.895 697.37 null] +194 0 obj << +/D [954 0 R /XYZ 99.895 697.37 null] >> endobj -945 0 obj << -/D [942 0 R /XYZ 239.804 675.784 null] +957 0 obj << +/D [954 0 R /XYZ 239.804 675.784 null] >> endobj -946 0 obj << -/D [942 0 R /XYZ 236.666 658.376 null] +958 0 obj << +/D [954 0 R /XYZ 236.666 658.376 null] >> endobj -947 0 obj << -/D [942 0 R /XYZ 236.025 640.968 null] +959 0 obj << +/D [954 0 R /XYZ 236.025 640.968 null] >> endobj -948 0 obj << -/D [942 0 R /XYZ 270.132 455.558 null] +960 0 obj << +/D [954 0 R /XYZ 270.132 455.558 null] >> endobj -941 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F7 665 0 R /F27 477 0 R /F30 664 0 R >> +953 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F7 670 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -959 0 obj << +971 0 obj << /Length 6975 >> stream @@ -9229,78 +9306,78 @@ BT ET endstream endobj -958 0 obj << +970 0 obj << /Type /Page -/Contents 959 0 R -/Resources 957 0 R +/Contents 971 0 R +/Resources 969 0 R /MediaBox [0 0 595.276 841.89] -/Parent 949 0 R -/Annots [ 940 0 R 950 0 R 951 0 R 952 0 R 953 0 R 954 0 R 955 0 R 956 0 R ] +/Parent 961 0 R +/Annots [ 952 0 R 962 0 R 963 0 R 964 0 R 965 0 R 966 0 R 967 0 R 968 0 R ] >> endobj -940 0 obj << +952 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [432.897 655.375 444.852 666.223] /Subtype /Link /A << /S /GoTo /D (table.12) >> >> endobj -950 0 obj << +962 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 588.824 495.412 599.949] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -951 0 obj << +963 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [377.029 577.145 388.984 587.994] /Subtype /Link /A << /S /GoTo /D (table.12) >> >> endobj -952 0 obj << +964 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.273 498.639 377.331 509.764] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -953 0 obj << +965 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [397.199 462.009 404.172 472.858] /Subtype /Link /A << /S /GoTo /D (equation.1) >> >> endobj -954 0 obj << +966 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [396.202 447.541 403.176 458.389] /Subtype /Link /A << /S /GoTo /D (equation.2) >> >> endobj -955 0 obj << +967 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [396.507 433.073 403.481 443.921] /Subtype /Link /A << /S /GoTo /D (equation.3) >> >> endobj -956 0 obj << +968 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [253.818 191.887 265.774 202.735] /Subtype /Link /A << /S /GoTo /D (table.12) >> >> endobj -960 0 obj << -/D [958 0 R /XYZ 150.705 740.998 null] +972 0 obj << +/D [970 0 R /XYZ 150.705 740.998 null] >> endobj -957 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F11 649 0 R /F30 664 0 R >> +969 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F11 654 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -965 0 obj << +977 0 obj << /Length 6787 >> stream @@ -9410,35 +9487,35 @@ BT ET endstream endobj -964 0 obj << +976 0 obj << /Type /Page -/Contents 965 0 R -/Resources 963 0 R +/Contents 977 0 R +/Resources 975 0 R /MediaBox [0 0 595.276 841.89] -/Parent 949 0 R -/Annots [ 961 0 R ] +/Parent 961 0 R +/Annots [ 973 0 R ] >> endobj -961 0 obj << +973 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [382.088 117.392 394.043 128.24] /Subtype /Link /A << /S /GoTo /D (table.13) >> >> endobj -966 0 obj << -/D [964 0 R /XYZ 99.895 740.998 null] +978 0 obj << +/D [976 0 R /XYZ 99.895 740.998 null] >> endobj -194 0 obj << -/D [964 0 R /XYZ 99.895 697.044 null] +198 0 obj << +/D [976 0 R /XYZ 99.895 697.044 null] >> endobj -967 0 obj << -/D [964 0 R /XYZ 270.132 258.477 null] +979 0 obj << +/D [976 0 R /XYZ 270.132 258.477 null] >> endobj -963 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F13 934 0 R /F7 665 0 R /F10 666 0 R /F30 664 0 R /F27 477 0 R >> +975 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F13 946 0 R /F7 670 0 R /F10 671 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -976 0 obj << +988 0 obj << /Length 7789 >> stream @@ -9594,71 +9671,71 @@ BT ET endstream endobj -975 0 obj << +987 0 obj << /Type /Page -/Contents 976 0 R -/Resources 974 0 R +/Contents 988 0 R +/Resources 986 0 R /MediaBox [0 0 595.276 841.89] -/Parent 949 0 R -/Annots [ 962 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 973 0 R ] +/Parent 961 0 R +/Annots [ 974 0 R 980 0 R 981 0 R 982 0 R 983 0 R 984 0 R 985 0 R ] >> endobj -962 0 obj << +974 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [358.482 655.375 365.455 666.223] /Subtype /Link /A << /S /GoTo /D (section.3) >> >> endobj -968 0 obj << +980 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 586.627 495.412 597.752] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -969 0 obj << +981 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [376.818 574.949 388.773 585.797] /Subtype /Link /A << /S /GoTo /D (table.13) >> >> endobj -970 0 obj << +982 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [432.897 494.523 444.852 505.372] /Subtype /Link /A << /S /GoTo /D (table.13) >> >> endobj -971 0 obj << +983 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 425.776 495.412 436.901] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -972 0 obj << +984 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [377.029 414.098 388.984 424.946] /Subtype /Link /A << /S /GoTo /D (table.13) >> >> endobj -973 0 obj << +985 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [310.273 333.395 377.331 344.52] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -977 0 obj << -/D [975 0 R /XYZ 150.705 740.998 null] +989 0 obj << +/D [987 0 R /XYZ 150.705 740.998 null] >> endobj -974 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F30 664 0 R /F17 629 0 R >> +986 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F30 669 0 R /F17 634 0 R >> /ProcSet [ /PDF /Text ] >> endobj -982 0 obj << +994 0 obj << /Length 4663 >> stream @@ -9715,36 +9792,36 @@ BT ET endstream endobj -981 0 obj << +993 0 obj << /Type /Page -/Contents 982 0 R -/Resources 980 0 R +/Contents 994 0 R +/Resources 992 0 R /MediaBox [0 0 595.276 841.89] -/Parent 949 0 R -/Annots [ 978 0 R 979 0 R ] +/Parent 961 0 R +/Annots [ 990 0 R 991 0 R ] >> endobj -978 0 obj << +990 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [162.826 410.238 174.781 419.149] /Subtype /Link /A << /S /GoTo /D (table.13) >> >> endobj -979 0 obj << +991 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [203.009 228.974 214.964 239.822] /Subtype /Link /A << /S /GoTo /D (table.13) >> >> endobj -983 0 obj << -/D [981 0 R /XYZ 99.895 740.998 null] +995 0 obj << +/D [993 0 R /XYZ 99.895 740.998 null] >> endobj -980 0 obj << -/Font << /F8 478 0 R /F27 477 0 R /F11 649 0 R /F30 664 0 R >> +992 0 obj << +/Font << /F8 482 0 R /F27 481 0 R /F11 654 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -987 0 obj << +999 0 obj << /Length 651 >> stream @@ -9762,32 +9839,32 @@ BT ET endstream endobj -986 0 obj << +998 0 obj << /Type /Page -/Contents 987 0 R -/Resources 985 0 R +/Contents 999 0 R +/Resources 997 0 R /MediaBox [0 0 595.276 841.89] -/Parent 949 0 R -/Annots [ 984 0 R ] +/Parent 961 0 R +/Annots [ 996 0 R ] >> endobj -984 0 obj << +996 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [350.345 657.464 357.319 668.312] /Subtype /Link /A << /S /GoTo /D (section.6) >> >> endobj -988 0 obj << -/D [986 0 R /XYZ 150.705 740.998 null] +1000 0 obj << +/D [998 0 R /XYZ 150.705 740.998 null] >> endobj -198 0 obj << -/D [986 0 R /XYZ 150.705 716.092 null] +202 0 obj << +/D [998 0 R /XYZ 150.705 716.092 null] >> endobj -985 0 obj << -/Font << /F16 475 0 R /F8 478 0 R >> +997 0 obj << +/Font << /F16 479 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -995 0 obj << +1007 0 obj << /Length 6399 >> stream @@ -9958,56 +10035,56 @@ BT ET endstream endobj -994 0 obj << +1006 0 obj << /Type /Page -/Contents 995 0 R -/Resources 993 0 R +/Contents 1007 0 R +/Resources 1005 0 R /MediaBox [0 0 595.276 841.89] -/Parent 998 0 R -/Annots [ 989 0 R 990 0 R 991 0 R 992 0 R ] +/Parent 1010 0 R +/Annots [ 1001 0 R 1002 0 R 1003 0 R 1004 0 R ] >> endobj -989 0 obj << +1001 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [368.549 342.336 444.603 353.461] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -990 0 obj << +1002 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [325.411 330.657 337.366 341.505] /Subtype /Link /A << /S /GoTo /D (table.14) >> >> endobj -991 0 obj << +1003 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 263.277 361.779 274.402] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -992 0 obj << +1004 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [382.088 184.495 394.043 195.344] /Subtype /Link /A << /S /GoTo /D (table.14) >> >> endobj -996 0 obj << -/D [994 0 R /XYZ 99.895 740.998 null] +1008 0 obj << +/D [1006 0 R /XYZ 99.895 740.998 null] >> endobj -202 0 obj << -/D [994 0 R /XYZ 99.895 697.37 null] +206 0 obj << +/D [1006 0 R /XYZ 99.895 697.37 null] >> endobj -997 0 obj << -/D [994 0 R /XYZ 270.132 507.777 null] +1009 0 obj << +/D [1006 0 R /XYZ 270.132 507.777 null] >> endobj -993 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F27 477 0 R /F30 664 0 R >> +1005 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1004 0 obj << +1016 0 obj << /Length 4119 >> stream @@ -10065,29 +10142,29 @@ BT ET endstream endobj -1003 0 obj << +1015 0 obj << /Type /Page -/Contents 1004 0 R -/Resources 1002 0 R +/Contents 1016 0 R +/Resources 1014 0 R /MediaBox [0 0 595.276 841.89] -/Parent 998 0 R -/Annots [ 999 0 R 1001 0 R ] +/Parent 1010 0 R +/Annots [ 1011 0 R 1013 0 R ] >> endobj -1000 0 obj << +1012 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1007 0 R +/PTEX.InfoDict 1019 0 R /BBox [0 0 436 496] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1008 0 R ->>/Font << /R8 1009 0 R/R9 1010 0 R>> +/R7 1020 0 R +>>/Font << /R8 1021 0 R/R9 1022 0 R>> >> -/Length 1011 0 R +/Length 1023 0 R /Filter /FlateDecode >> stream @@ -10103,62 +10180,62 @@ QI* d)eI%}QÉ'?+ä°~I*écÂ\‚?XO#~Ã[!©äX‚?fJÇüÁaî‹J8ù9â÷%©¤ s‰ù`=ø Ÿ× ,ªƒ1Œ|?ª$6ŠázžAª@}¡J¢¿R©’#‡z|]ñd•9ÔãýL G„z8¯—÷¬’Ï€äcD¾P%ùàgÌcå‘#<¾®x²J2³jˆÏÕpD„ó¢¼g•mø»ãoÇßþžŸúö§Ç6Úë¸w¶W~ûùñéØ?ûçãK߯åÌÞ>Øíƒ]?Øeµûü`ŸìqÛ{éÏ/m;±ù"×~¢WëÖëj¾Z…3lï²ÛÂ?|Ïz¼Ú½m[{힦„iÿb¬m»¦øóe•Ï¿{üáÛã¯×¿ÿ-3‡à endstream endobj -1007 0 obj +1019 0 obj << /Producer (ESP Ghostscript 815.03) /CreationDate (D:20070118112257) /ModDate (D:20070118112257) >> endobj -1008 0 obj +1020 0 obj << /Type /ExtGState /OPM 1 >> endobj -1009 0 obj +1021 0 obj << /BaseFont /Times-Roman /Type /Font /Subtype /Type1 >> endobj -1010 0 obj +1022 0 obj << /BaseFont /Times-Bold /Type /Font /Subtype /Type1 >> endobj -1011 0 obj +1023 0 obj 3571 endobj -999 0 obj << +1011 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [213.636 545.73 225.591 554.641] /Subtype /Link /A << /S /GoTo /D (table.14) >> >> endobj -1001 0 obj << +1013 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [457.906 203.856 464.88 216.476] /Subtype /Link /A << /S /GoTo /D (figure.7) >> >> endobj -1005 0 obj << -/D [1003 0 R /XYZ 150.705 740.998 null] +1017 0 obj << +/D [1015 0 R /XYZ 150.705 740.998 null] >> endobj -1006 0 obj << -/D [1003 0 R /XYZ 283.692 243.043 null] +1018 0 obj << +/D [1015 0 R /XYZ 283.692 243.043 null] >> endobj -1002 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R /F11 649 0 R /F16 475 0 R >> -/XObject << /Im3 1000 0 R >> +1014 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R /F11 654 0 R /F16 479 0 R >> +/XObject << /Im3 1012 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1014 0 obj << +1026 0 obj << /Length 3050 >> stream @@ -10176,21 +10253,21 @@ BT ET endstream endobj -1013 0 obj << +1025 0 obj << /Type /Page -/Contents 1014 0 R -/Resources 1012 0 R +/Contents 1026 0 R +/Resources 1024 0 R /MediaBox [0 0 595.276 841.89] -/Parent 998 0 R +/Parent 1010 0 R >> endobj -1015 0 obj << -/D [1013 0 R /XYZ 99.895 740.998 null] +1027 0 obj << +/D [1025 0 R /XYZ 99.895 740.998 null] >> endobj -1012 0 obj << -/Font << /F45 1016 0 R /F8 478 0 R >> +1024 0 obj << +/Font << /F45 1028 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1022 0 obj << +1034 0 obj << /Length 7493 >> stream @@ -10422,49 +10499,49 @@ BT ET endstream endobj -1021 0 obj << +1033 0 obj << /Type /Page -/Contents 1022 0 R -/Resources 1020 0 R +/Contents 1034 0 R +/Resources 1032 0 R /MediaBox [0 0 595.276 841.89] -/Parent 998 0 R -/Annots [ 1017 0 R 1018 0 R 1019 0 R ] +/Parent 1010 0 R +/Annots [ 1029 0 R 1030 0 R 1031 0 R ] >> endobj -1017 0 obj << +1029 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 344.545 495.412 355.67] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -1018 0 obj << +1030 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [376.221 332.866 388.176 343.714] /Subtype /Link /A << /S /GoTo /D (table.15) >> >> endobj -1019 0 obj << +1031 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 265.461 412.588 276.586] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1023 0 obj << -/D [1021 0 R /XYZ 150.705 740.998 null] +1035 0 obj << +/D [1033 0 R /XYZ 150.705 740.998 null] >> endobj -206 0 obj << -/D [1021 0 R /XYZ 150.705 697.37 null] +210 0 obj << +/D [1033 0 R /XYZ 150.705 697.37 null] >> endobj -1024 0 obj << -/D [1021 0 R /XYZ 320.941 510.188 null] +1036 0 obj << +/D [1033 0 R /XYZ 320.941 510.188 null] >> endobj -1020 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F27 477 0 R /F30 664 0 R >> +1032 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1031 0 obj << +1043 0 obj << /Length 5866 >> stream @@ -10516,52 +10593,52 @@ BT ET endstream endobj -1030 0 obj << +1042 0 obj << /Type /Page -/Contents 1031 0 R -/Resources 1029 0 R +/Contents 1043 0 R +/Resources 1041 0 R /MediaBox [0 0 595.276 841.89] -/Parent 998 0 R -/Annots [ 1025 0 R 1027 0 R 1028 0 R ] +/Parent 1010 0 R +/Annots [ 1037 0 R 1039 0 R 1040 0 R ] >> endobj -1025 0 obj << +1037 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [203.009 555.748 214.964 566.597] /Subtype /Link /A << /S /GoTo /D (table.15) >> >> endobj -1027 0 obj << +1039 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [407.019 326.22 413.993 338.84] /Subtype /Link /A << /S /GoTo /D (figure.8) >> >> endobj -1028 0 obj << +1040 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [306.759 302.697 313.733 313.546] /Subtype /Link /A << /S /GoTo /D (figure.7) >> >> endobj -1032 0 obj << -/D [1030 0 R /XYZ 99.895 740.998 null] +1044 0 obj << +/D [1042 0 R /XYZ 99.895 740.998 null] >> endobj -1033 0 obj << -/D [1030 0 R /XYZ 99.895 465.033 null] +1045 0 obj << +/D [1042 0 R /XYZ 99.895 465.033 null] >> endobj -1034 0 obj << -/D [1030 0 R /XYZ 99.895 431.215 null] +1046 0 obj << +/D [1042 0 R /XYZ 99.895 431.215 null] >> endobj -1035 0 obj << -/D [1030 0 R /XYZ 99.895 387.38 null] +1047 0 obj << +/D [1042 0 R /XYZ 99.895 387.38 null] >> endobj -1029 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F11 649 0 R /F16 475 0 R /F10 666 0 R /F30 664 0 R >> +1041 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F11 654 0 R /F16 479 0 R /F10 671 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1039 0 obj << +1051 0 obj << /Length 3619 >> stream @@ -10579,21 +10656,21 @@ BT ET endstream endobj -1038 0 obj << +1050 0 obj << /Type /Page -/Contents 1039 0 R -/Resources 1037 0 R +/Contents 1051 0 R +/Resources 1049 0 R /MediaBox [0 0 595.276 841.89] -/Parent 998 0 R +/Parent 1010 0 R >> endobj -1040 0 obj << -/D [1038 0 R /XYZ 150.705 740.998 null] +1052 0 obj << +/D [1050 0 R /XYZ 150.705 740.998 null] >> endobj -1037 0 obj << -/Font << /F31 670 0 R /F8 478 0 R >> +1049 0 obj << +/Font << /F31 675 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1043 0 obj << +1055 0 obj << /Length 347 >> stream @@ -10625,28 +10702,28 @@ BT ET endstream endobj -1042 0 obj << +1054 0 obj << /Type /Page -/Contents 1043 0 R -/Resources 1041 0 R +/Contents 1055 0 R +/Resources 1053 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1045 0 R +/Parent 1057 0 R >> endobj -1026 0 obj << +1038 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./figures/try8x8_ov.pdf) /PTEX.PageNumber 1 -/PTEX.InfoDict 1046 0 R +/PTEX.InfoDict 1058 0 R /BBox [0 0 436 514] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << -/R7 1047 0 R ->>/Font << /R8 1048 0 R/R9 1049 0 R>> +/R7 1059 0 R +>>/Font << /R8 1060 0 R/R9 1061 0 R>> >> -/Length 1050 0 R +/Length 1062 0 R /Filter /FlateDecode >> stream @@ -10660,48 +10737,48 @@ V óá!Zäÿ/L)ÇÇ8ú:ß=þ êë¼® endstream endobj -1046 0 obj +1058 0 obj << /Producer (ESP Ghostscript 815.03) /CreationDate (D:20070118114343) /ModDate (D:20070118114343) >> endobj -1047 0 obj +1059 0 obj << /Type /ExtGState /OPM 1 >> endobj -1048 0 obj +1060 0 obj << /BaseFont /Times-Roman /Type /Font /Subtype /Type1 >> endobj -1049 0 obj +1061 0 obj << /BaseFont /Times-Bold /Type /Font /Subtype /Type1 >> endobj -1050 0 obj +1062 0 obj 3652 endobj -1044 0 obj << -/D [1042 0 R /XYZ 99.895 740.998 null] +1056 0 obj << +/D [1054 0 R /XYZ 99.895 740.998 null] >> endobj -1036 0 obj << -/D [1042 0 R /XYZ 232.883 275.514 null] +1048 0 obj << +/D [1054 0 R /XYZ 232.883 275.514 null] >> endobj -1041 0 obj << -/Font << /F8 478 0 R >> -/XObject << /Im4 1026 0 R >> +1053 0 obj << +/Font << /F8 482 0 R >> +/XObject << /Im4 1038 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1056 0 obj << +1068 0 obj << /Length 8006 >> stream @@ -10924,49 +11001,49 @@ BT ET endstream endobj -1055 0 obj << +1067 0 obj << /Type /Page -/Contents 1056 0 R -/Resources 1054 0 R +/Contents 1068 0 R +/Resources 1066 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1045 0 R -/Annots [ 1051 0 R 1052 0 R 1053 0 R ] +/Parent 1057 0 R +/Annots [ 1063 0 R 1064 0 R 1065 0 R ] >> endobj -1051 0 obj << +1063 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [419.358 295.469 495.412 306.594] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -1052 0 obj << +1064 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [256.807 285.728 268.762 294.639] /Subtype /Link /A << /S /GoTo /D (table.16) >> >> endobj -1053 0 obj << +1065 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 216.093 412.588 227.218] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1057 0 obj << -/D [1055 0 R /XYZ 150.705 740.998 null] +1069 0 obj << +/D [1067 0 R /XYZ 150.705 740.998 null] >> endobj -210 0 obj << -/D [1055 0 R /XYZ 150.705 697.37 null] +214 0 obj << +/D [1067 0 R /XYZ 150.705 697.37 null] >> endobj -1058 0 obj << -/D [1055 0 R /XYZ 320.941 465.393 null] +1070 0 obj << +/D [1067 0 R /XYZ 320.941 465.393 null] >> endobj -1054 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F7 665 0 R /F27 477 0 R /F30 664 0 R >> +1066 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F7 670 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1061 0 obj << +1073 0 obj << /Length 1455 >> stream @@ -10994,21 +11071,21 @@ BT ET endstream endobj -1060 0 obj << +1072 0 obj << /Type /Page -/Contents 1061 0 R -/Resources 1059 0 R +/Contents 1073 0 R +/Resources 1071 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1045 0 R +/Parent 1057 0 R >> endobj -1062 0 obj << -/D [1060 0 R /XYZ 99.895 740.998 null] +1074 0 obj << +/D [1072 0 R /XYZ 99.895 740.998 null] >> endobj -1059 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R >> +1071 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1067 0 obj << +1079 0 obj << /Length 7211 >> stream @@ -11195,35 +11272,35 @@ BT ET endstream endobj -1066 0 obj << +1078 0 obj << /Type /Page -/Contents 1067 0 R -/Resources 1065 0 R +/Contents 1079 0 R +/Resources 1077 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1045 0 R -/Annots [ 1063 0 R ] +/Parent 1057 0 R +/Annots [ 1075 0 R ] >> endobj -1063 0 obj << +1075 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 217.448 412.588 228.573] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1068 0 obj << -/D [1066 0 R /XYZ 150.705 740.998 null] +1080 0 obj << +/D [1078 0 R /XYZ 150.705 740.998 null] >> endobj -214 0 obj << -/D [1066 0 R /XYZ 150.705 697.294 null] +218 0 obj << +/D [1078 0 R /XYZ 150.705 697.294 null] >> endobj -1069 0 obj << -/D [1066 0 R /XYZ 320.941 459.569 null] +1081 0 obj << +/D [1078 0 R /XYZ 320.941 459.569 null] >> endobj -1065 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F10 666 0 R /F14 667 0 R /F7 665 0 R /F27 477 0 R /F30 664 0 R >> +1077 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F10 671 0 R /F14 672 0 R /F7 670 0 R /F27 481 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1072 0 obj << +1084 0 obj << /Length 1718 >> stream @@ -11262,29 +11339,29 @@ BT ET endstream endobj -1071 0 obj << +1083 0 obj << /Type /Page -/Contents 1072 0 R -/Resources 1070 0 R +/Contents 1084 0 R +/Resources 1082 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1045 0 R -/Annots [ 1064 0 R ] +/Parent 1057 0 R +/Annots [ 1076 0 R ] >> endobj -1064 0 obj << +1076 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [205.998 645.357 217.953 654.268] /Subtype /Link /A << /S /GoTo /D (table.17) >> >> endobj -1073 0 obj << -/D [1071 0 R /XYZ 99.895 740.998 null] +1085 0 obj << +/D [1083 0 R /XYZ 99.895 740.998 null] >> endobj -1070 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1082 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1076 0 obj << +1088 0 obj << /Length 6539 >> stream @@ -11339,27 +11416,27 @@ BT ET endstream endobj -1075 0 obj << +1087 0 obj << /Type /Page -/Contents 1076 0 R -/Resources 1074 0 R +/Contents 1088 0 R +/Resources 1086 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1045 0 R ->> endobj -1077 0 obj << -/D [1075 0 R /XYZ 150.705 740.998 null] +/Parent 1057 0 R >> endobj -218 0 obj << -/D [1075 0 R /XYZ 150.705 716.092 null] +1089 0 obj << +/D [1087 0 R /XYZ 150.705 740.998 null] >> endobj 222 0 obj << -/D [1075 0 R /XYZ 150.705 673.557 null] +/D [1087 0 R /XYZ 150.705 716.092 null] >> endobj -1074 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +226 0 obj << +/D [1087 0 R /XYZ 150.705 673.557 null] +>> endobj +1086 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1081 0 obj << +1093 0 obj << /Length 6637 >> stream @@ -11435,32 +11512,32 @@ BT ET endstream endobj -1080 0 obj << +1092 0 obj << /Type /Page -/Contents 1081 0 R -/Resources 1079 0 R +/Contents 1093 0 R +/Resources 1091 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1084 0 R -/Annots [ 1078 0 R ] +/Parent 1096 0 R +/Annots [ 1090 0 R ] >> endobj -1078 0 obj << +1090 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 325.282 361.779 336.407] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1082 0 obj << -/D [1080 0 R /XYZ 99.895 740.998 null] +1094 0 obj << +/D [1092 0 R /XYZ 99.895 740.998 null] >> endobj -1083 0 obj << -/D [1080 0 R /XYZ 99.895 234.372 null] +1095 0 obj << +/D [1092 0 R /XYZ 99.895 234.372 null] >> endobj -1079 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R /F11 649 0 R /F16 475 0 R >> +1091 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R /F11 654 0 R /F16 479 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1087 0 obj << +1099 0 obj << /Length 9672 >> stream @@ -11525,27 +11602,27 @@ BT ET endstream endobj -1086 0 obj << +1098 0 obj << /Type /Page -/Contents 1087 0 R -/Resources 1085 0 R +/Contents 1099 0 R +/Resources 1097 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1084 0 R +/Parent 1096 0 R >> endobj -1088 0 obj << -/D [1086 0 R /XYZ 150.705 740.998 null] +1100 0 obj << +/D [1098 0 R /XYZ 150.705 740.998 null] >> endobj -1089 0 obj << -/D [1086 0 R /XYZ 150.705 167.063 null] +1101 0 obj << +/D [1098 0 R /XYZ 150.705 167.063 null] >> endobj -1090 0 obj << -/D [1086 0 R /XYZ 150.705 146.569 null] +1102 0 obj << +/D [1098 0 R /XYZ 150.705 146.569 null] >> endobj -1085 0 obj << -/Font << /F30 664 0 R /F8 478 0 R /F27 477 0 R /F14 667 0 R /F11 649 0 R /F10 666 0 R >> +1097 0 obj << +/Font << /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R /F10 671 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1093 0 obj << +1105 0 obj << /Length 2214 >> stream @@ -11574,33 +11651,33 @@ BT ET endstream endobj -1092 0 obj << +1104 0 obj << /Type /Page -/Contents 1093 0 R -/Resources 1091 0 R +/Contents 1105 0 R +/Resources 1103 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1084 0 R +/Parent 1096 0 R >> endobj -1094 0 obj << -/D [1092 0 R /XYZ 99.895 740.998 null] +1106 0 obj << +/D [1104 0 R /XYZ 99.895 740.998 null] >> endobj -1095 0 obj << -/D [1092 0 R /XYZ 99.895 716.092 null] +1107 0 obj << +/D [1104 0 R /XYZ 99.895 716.092 null] >> endobj -1096 0 obj << -/D [1092 0 R /XYZ 99.895 699.93 null] +1108 0 obj << +/D [1104 0 R /XYZ 99.895 699.93 null] >> endobj -1097 0 obj << -/D [1092 0 R /XYZ 99.895 658.308 null] +1109 0 obj << +/D [1104 0 R /XYZ 99.895 658.308 null] >> endobj -1098 0 obj << -/D [1092 0 R /XYZ 99.895 600.58 null] +1110 0 obj << +/D [1104 0 R /XYZ 99.895 600.58 null] >> endobj -1091 0 obj << -/Font << /F8 478 0 R /F30 664 0 R >> +1103 0 obj << +/Font << /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1102 0 obj << +1114 0 obj << /Length 5712 >> stream @@ -11691,41 +11768,41 @@ BT ET endstream endobj -1101 0 obj << +1113 0 obj << /Type /Page -/Contents 1102 0 R -/Resources 1100 0 R +/Contents 1114 0 R +/Resources 1112 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1084 0 R -/Annots [ 1099 0 R ] +/Parent 1096 0 R +/Annots [ 1111 0 R ] >> endobj -1099 0 obj << +1111 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 291.028 412.588 302.153] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1103 0 obj << -/D [1101 0 R /XYZ 150.705 740.998 null] +1115 0 obj << +/D [1113 0 R /XYZ 150.705 740.998 null] >> endobj -226 0 obj << -/D [1101 0 R /XYZ 150.705 697.345 null] +230 0 obj << +/D [1113 0 R /XYZ 150.705 697.345 null] >> endobj -1104 0 obj << -/D [1101 0 R /XYZ 150.705 200.323 null] +1116 0 obj << +/D [1113 0 R /XYZ 150.705 200.323 null] >> endobj -1105 0 obj << -/D [1101 0 R /XYZ 150.705 178.342 null] +1117 0 obj << +/D [1113 0 R /XYZ 150.705 178.342 null] >> endobj -1106 0 obj << -/D [1101 0 R /XYZ 150.705 134.388 null] +1118 0 obj << +/D [1113 0 R /XYZ 150.705 134.388 null] >> endobj -1100 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R >> +1112 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1109 0 obj << +1121 0 obj << /Length 468 >> stream @@ -11741,21 +11818,21 @@ BT ET endstream endobj -1108 0 obj << +1120 0 obj << /Type /Page -/Contents 1109 0 R -/Resources 1107 0 R +/Contents 1121 0 R +/Resources 1119 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1084 0 R +/Parent 1096 0 R >> endobj -1110 0 obj << -/D [1108 0 R /XYZ 99.895 740.998 null] +1122 0 obj << +/D [1120 0 R /XYZ 99.895 740.998 null] >> endobj -1107 0 obj << -/Font << /F30 664 0 R /F8 478 0 R >> +1119 0 obj << +/Font << /F30 669 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1115 0 obj << +1127 0 obj << /Length 3493 >> stream @@ -11855,42 +11932,42 @@ BT ET endstream endobj -1114 0 obj << +1126 0 obj << /Type /Page -/Contents 1115 0 R -/Resources 1113 0 R +/Contents 1127 0 R +/Resources 1125 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1084 0 R -/Annots [ 1111 0 R 1112 0 R ] +/Parent 1096 0 R +/Annots [ 1123 0 R 1124 0 R ] >> endobj -1111 0 obj << +1123 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 574.94 412.588 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1112 0 obj << +1124 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 485.277 412.588 496.401] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1116 0 obj << -/D [1114 0 R /XYZ 150.705 740.998 null] +1128 0 obj << +/D [1126 0 R /XYZ 150.705 740.998 null] >> endobj -230 0 obj << -/D [1114 0 R /XYZ 150.705 697.37 null] +234 0 obj << +/D [1126 0 R /XYZ 150.705 697.37 null] >> endobj -1117 0 obj << -/D [1114 0 R /XYZ 150.705 394.838 null] +1129 0 obj << +/D [1126 0 R /XYZ 150.705 394.838 null] >> endobj -1113 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1125 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1122 0 obj << +1134 0 obj << /Length 3277 >> stream @@ -11986,39 +12063,39 @@ BT ET endstream endobj -1121 0 obj << +1133 0 obj << /Type /Page -/Contents 1122 0 R -/Resources 1120 0 R +/Contents 1134 0 R +/Resources 1132 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1124 0 R -/Annots [ 1118 0 R 1119 0 R ] +/Parent 1136 0 R +/Annots [ 1130 0 R 1131 0 R ] >> endobj -1118 0 obj << +1130 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 574.94 361.779 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1119 0 obj << +1131 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 485.277 361.779 496.401] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1123 0 obj << -/D [1121 0 R /XYZ 99.895 740.998 null] +1135 0 obj << +/D [1133 0 R /XYZ 99.895 740.998 null] >> endobj -234 0 obj << -/D [1121 0 R /XYZ 99.895 697.37 null] +238 0 obj << +/D [1133 0 R /XYZ 99.895 697.37 null] >> endobj -1120 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1132 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1128 0 obj << +1140 0 obj << /Length 2243 >> stream @@ -12085,32 +12162,32 @@ BT ET endstream endobj -1127 0 obj << +1139 0 obj << /Type /Page -/Contents 1128 0 R -/Resources 1126 0 R +/Contents 1140 0 R +/Resources 1138 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1124 0 R -/Annots [ 1125 0 R ] +/Parent 1136 0 R +/Annots [ 1137 0 R ] >> endobj -1125 0 obj << +1137 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 574.94 412.588 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1129 0 obj << -/D [1127 0 R /XYZ 150.705 740.998 null] +1141 0 obj << +/D [1139 0 R /XYZ 150.705 740.998 null] >> endobj -238 0 obj << -/D [1127 0 R /XYZ 150.705 697.37 null] +242 0 obj << +/D [1139 0 R /XYZ 150.705 697.37 null] >> endobj -1126 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1138 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1134 0 obj << +1146 0 obj << /Length 5927 >> stream @@ -12218,39 +12295,39 @@ BT ET endstream endobj -1133 0 obj << +1145 0 obj << /Type /Page -/Contents 1134 0 R -/Resources 1132 0 R +/Contents 1146 0 R +/Resources 1144 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1124 0 R -/Annots [ 1130 0 R 1131 0 R ] +/Parent 1136 0 R +/Annots [ 1142 0 R 1143 0 R ] >> endobj -1130 0 obj << +1142 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 453.24 372.239 464.364] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1131 0 obj << +1143 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 209.896 361.779 221.021] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1135 0 obj << -/D [1133 0 R /XYZ 99.895 740.998 null] +1147 0 obj << +/D [1145 0 R /XYZ 99.895 740.998 null] >> endobj -242 0 obj << -/D [1133 0 R /XYZ 99.895 685.412 null] +246 0 obj << +/D [1145 0 R /XYZ 99.895 685.412 null] >> endobj -1132 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +1144 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1138 0 obj << +1150 0 obj << /Length 1587 >> stream @@ -12271,27 +12348,27 @@ BT ET endstream endobj -1137 0 obj << +1149 0 obj << /Type /Page -/Contents 1138 0 R -/Resources 1136 0 R +/Contents 1150 0 R +/Resources 1148 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1124 0 R +/Parent 1136 0 R >> endobj -1139 0 obj << -/D [1137 0 R /XYZ 150.705 740.998 null] +1151 0 obj << +/D [1149 0 R /XYZ 150.705 740.998 null] >> endobj -1140 0 obj << -/D [1137 0 R /XYZ 150.705 716.092 null] +1152 0 obj << +/D [1149 0 R /XYZ 150.705 716.092 null] >> endobj -1141 0 obj << -/D [1137 0 R /XYZ 150.705 664.341 null] +1153 0 obj << +/D [1149 0 R /XYZ 150.705 664.341 null] >> endobj -1136 0 obj << -/Font << /F8 478 0 R /F30 664 0 R >> +1148 0 obj << +/Font << /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1146 0 obj << +1158 0 obj << /Length 4887 >> stream @@ -12396,48 +12473,48 @@ BT ET endstream endobj -1145 0 obj << +1157 0 obj << /Type /Page -/Contents 1146 0 R -/Resources 1144 0 R +/Contents 1158 0 R +/Resources 1156 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1124 0 R -/Annots [ 1142 0 R 1143 0 R ] +/Parent 1136 0 R +/Annots [ 1154 0 R 1155 0 R ] >> endobj -1142 0 obj << +1154 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 574.94 361.779 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1143 0 obj << +1155 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 405.575 372.239 416.7] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1147 0 obj << -/D [1145 0 R /XYZ 99.895 740.998 null] +1159 0 obj << +/D [1157 0 R /XYZ 99.895 740.998 null] >> endobj -246 0 obj << -/D [1145 0 R /XYZ 99.895 697.37 null] +250 0 obj << +/D [1157 0 R /XYZ 99.895 697.37 null] >> endobj -1148 0 obj << -/D [1145 0 R /XYZ 99.895 315.137 null] +1160 0 obj << +/D [1157 0 R /XYZ 99.895 315.137 null] >> endobj -1149 0 obj << -/D [1145 0 R /XYZ 99.895 293.274 null] +1161 0 obj << +/D [1157 0 R /XYZ 99.895 293.274 null] >> endobj -1150 0 obj << -/D [1145 0 R /XYZ 99.895 273.349 null] +1162 0 obj << +/D [1157 0 R /XYZ 99.895 273.349 null] >> endobj -1144 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1156 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1156 0 obj << +1168 0 obj << /Length 6504 >> stream @@ -12542,39 +12619,39 @@ BT ET endstream endobj -1155 0 obj << +1167 0 obj << /Type /Page -/Contents 1156 0 R -/Resources 1154 0 R +/Contents 1168 0 R +/Resources 1166 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1124 0 R -/Annots [ 1151 0 R 1152 0 R ] +/Parent 1136 0 R +/Annots [ 1163 0 R 1164 0 R ] >> endobj -1151 0 obj << +1163 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [311.962 288.004 379.019 299.129] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1152 0 obj << +1164 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 117.115 423.049 128.24] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1157 0 obj << -/D [1155 0 R /XYZ 150.705 740.998 null] +1169 0 obj << +/D [1167 0 R /XYZ 150.705 740.998 null] >> endobj -250 0 obj << -/D [1155 0 R /XYZ 150.705 697.251 null] +254 0 obj << +/D [1167 0 R /XYZ 150.705 697.251 null] >> endobj -1154 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1166 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1160 0 obj << +1172 0 obj << /Length 4029 >> stream @@ -12644,47 +12721,47 @@ BT ET endstream endobj -1159 0 obj << +1171 0 obj << /Type /Page -/Contents 1160 0 R -/Resources 1158 0 R +/Contents 1172 0 R +/Resources 1170 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1168 0 R -/Annots [ 1153 0 R ] +/Parent 1180 0 R +/Annots [ 1165 0 R ] >> endobj -1153 0 obj << +1165 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [261.152 655.098 328.21 666.223] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1161 0 obj << -/D [1159 0 R /XYZ 99.895 740.998 null] +1173 0 obj << +/D [1171 0 R /XYZ 99.895 740.998 null] >> endobj -1162 0 obj << -/D [1159 0 R /XYZ 99.895 552.704 null] +1174 0 obj << +/D [1171 0 R /XYZ 99.895 552.704 null] >> endobj -1163 0 obj << -/D [1159 0 R /XYZ 99.895 520.824 null] +1175 0 obj << +/D [1171 0 R /XYZ 99.895 520.824 null] >> endobj -1164 0 obj << -/D [1159 0 R /XYZ 99.895 487.006 null] +1176 0 obj << +/D [1171 0 R /XYZ 99.895 487.006 null] >> endobj -1165 0 obj << -/D [1159 0 R /XYZ 99.895 419.26 null] +1177 0 obj << +/D [1171 0 R /XYZ 99.895 419.26 null] >> endobj -1166 0 obj << -/D [1159 0 R /XYZ 99.895 387.38 null] +1178 0 obj << +/D [1171 0 R /XYZ 99.895 387.38 null] >> endobj -1167 0 obj << -/D [1159 0 R /XYZ 99.895 343.544 null] +1179 0 obj << +/D [1171 0 R /XYZ 99.895 343.544 null] >> endobj -1158 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R /F16 475 0 R >> +1170 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R /F16 479 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1173 0 obj << +1185 0 obj << /Length 6648 >> stream @@ -12817,39 +12894,39 @@ BT ET endstream endobj -1172 0 obj << +1184 0 obj << /Type /Page -/Contents 1173 0 R -/Resources 1171 0 R +/Contents 1185 0 R +/Resources 1183 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1168 0 R -/Annots [ 1169 0 R 1170 0 R ] +/Parent 1180 0 R +/Annots [ 1181 0 R 1182 0 R ] >> endobj -1169 0 obj << +1181 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 576.23 412.588 587.355] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1170 0 obj << +1182 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 205.776 423.049 216.901] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1174 0 obj << -/D [1172 0 R /XYZ 150.705 740.998 null] +1186 0 obj << +/D [1184 0 R /XYZ 150.705 740.998 null] >> endobj -254 0 obj << -/D [1172 0 R /XYZ 150.705 697.37 null] +258 0 obj << +/D [1184 0 R /XYZ 150.705 697.37 null] >> endobj -1171 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1183 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1177 0 obj << +1189 0 obj << /Length 2248 >> stream @@ -12886,39 +12963,39 @@ BT ET endstream endobj -1176 0 obj << +1188 0 obj << /Type /Page -/Contents 1177 0 R -/Resources 1175 0 R +/Contents 1189 0 R +/Resources 1187 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1168 0 R +/Parent 1180 0 R >> endobj -1178 0 obj << -/D [1176 0 R /XYZ 99.895 740.998 null] +1190 0 obj << +/D [1188 0 R /XYZ 99.895 740.998 null] >> endobj -1179 0 obj << -/D [1176 0 R /XYZ 99.895 716.092 null] +1191 0 obj << +/D [1188 0 R /XYZ 99.895 716.092 null] >> endobj -1180 0 obj << -/D [1176 0 R /XYZ 99.895 687.975 null] +1192 0 obj << +/D [1188 0 R /XYZ 99.895 687.975 null] >> endobj -1181 0 obj << -/D [1176 0 R /XYZ 99.895 668.326 null] +1193 0 obj << +/D [1188 0 R /XYZ 99.895 668.326 null] >> endobj -1182 0 obj << -/D [1176 0 R /XYZ 99.895 624.491 null] +1194 0 obj << +/D [1188 0 R /XYZ 99.895 624.491 null] >> endobj -1183 0 obj << -/D [1176 0 R /XYZ 99.895 580.655 null] +1195 0 obj << +/D [1188 0 R /XYZ 99.895 580.655 null] >> endobj -1184 0 obj << -/D [1176 0 R /XYZ 99.895 560.73 null] +1196 0 obj << +/D [1188 0 R /XYZ 99.895 560.73 null] >> endobj -1175 0 obj << -/Font << /F8 478 0 R /F30 664 0 R >> +1187 0 obj << +/Font << /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1189 0 obj << +1201 0 obj << /Length 3084 >> stream @@ -13007,39 +13084,39 @@ BT ET endstream endobj -1188 0 obj << +1200 0 obj << /Type /Page -/Contents 1189 0 R -/Resources 1187 0 R +/Contents 1201 0 R +/Resources 1199 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1168 0 R -/Annots [ 1185 0 R 1186 0 R ] +/Parent 1180 0 R +/Annots [ 1197 0 R 1198 0 R ] >> endobj -1185 0 obj << +1197 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 574.94 423.049 586.065] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1186 0 obj << +1198 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 507.194 412.588 518.319] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1190 0 obj << -/D [1188 0 R /XYZ 150.705 740.998 null] +1202 0 obj << +/D [1200 0 R /XYZ 150.705 740.998 null] >> endobj -258 0 obj << -/D [1188 0 R /XYZ 150.705 697.37 null] +262 0 obj << +/D [1200 0 R /XYZ 150.705 697.37 null] >> endobj -1187 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1199 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1195 0 obj << +1207 0 obj << /Length 3991 >> stream @@ -13136,42 +13213,42 @@ BT ET endstream endobj -1194 0 obj << +1206 0 obj << /Type /Page -/Contents 1195 0 R -/Resources 1193 0 R +/Contents 1207 0 R +/Resources 1205 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1168 0 R -/Annots [ 1191 0 R 1192 0 R ] +/Parent 1180 0 R +/Annots [ 1203 0 R 1204 0 R ] >> endobj -1191 0 obj << +1203 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 560.993 372.239 572.118] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1192 0 obj << +1204 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 493.247 361.779 504.372] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1196 0 obj << -/D [1194 0 R /XYZ 99.895 740.998 null] +1208 0 obj << +/D [1206 0 R /XYZ 99.895 740.998 null] >> endobj -262 0 obj << -/D [1194 0 R /XYZ 99.895 685.747 null] +266 0 obj << +/D [1206 0 R /XYZ 99.895 685.747 null] >> endobj -1197 0 obj << -/D [1194 0 R /XYZ 99.895 313.144 null] +1209 0 obj << +/D [1206 0 R /XYZ 99.895 313.144 null] >> endobj -1193 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1205 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1202 0 obj << +1214 0 obj << /Length 5111 >> stream @@ -13275,39 +13352,39 @@ BT ET endstream endobj -1201 0 obj << +1213 0 obj << /Type /Page -/Contents 1202 0 R -/Resources 1200 0 R +/Contents 1214 0 R +/Resources 1212 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1168 0 R -/Annots [ 1198 0 R 1199 0 R ] +/Parent 1180 0 R +/Annots [ 1210 0 R 1211 0 R ] >> endobj -1198 0 obj << +1210 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [311.962 574.94 379.019 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1199 0 obj << +1211 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [264.584 290.009 340.638 301.134] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -1203 0 obj << -/D [1201 0 R /XYZ 150.705 740.998 null] +1215 0 obj << +/D [1213 0 R /XYZ 150.705 740.998 null] >> endobj -266 0 obj << -/D [1201 0 R /XYZ 150.705 697.37 null] +270 0 obj << +/D [1213 0 R /XYZ 150.705 697.37 null] >> endobj -1200 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1212 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1208 0 obj << +1220 0 obj << /Length 6817 >> stream @@ -13419,39 +13496,39 @@ BT ET endstream endobj -1207 0 obj << +1219 0 obj << /Type /Page -/Contents 1208 0 R -/Resources 1206 0 R +/Contents 1220 0 R +/Resources 1218 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1210 0 R -/Annots [ 1204 0 R 1205 0 R ] +/Parent 1222 0 R +/Annots [ 1216 0 R 1217 0 R ] >> endobj -1204 0 obj << +1216 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 363.459 361.779 374.584] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1205 0 obj << +1217 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [365.781 141.026 441.835 152.151] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -1209 0 obj << -/D [1207 0 R /XYZ 99.895 740.998 null] +1221 0 obj << +/D [1219 0 R /XYZ 99.895 740.998 null] >> endobj -270 0 obj << -/D [1207 0 R /XYZ 99.895 697.37 null] +274 0 obj << +/D [1219 0 R /XYZ 99.895 697.37 null] >> endobj -1206 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1218 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1213 0 obj << +1225 0 obj << /Length 1115 >> stream @@ -13476,27 +13553,27 @@ BT ET endstream endobj -1212 0 obj << +1224 0 obj << /Type /Page -/Contents 1213 0 R -/Resources 1211 0 R +/Contents 1225 0 R +/Resources 1223 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1210 0 R +/Parent 1222 0 R >> endobj -1214 0 obj << -/D [1212 0 R /XYZ 150.705 740.998 null] +1226 0 obj << +/D [1224 0 R /XYZ 150.705 740.998 null] >> endobj -1215 0 obj << -/D [1212 0 R /XYZ 150.705 632.405 null] +1227 0 obj << +/D [1224 0 R /XYZ 150.705 632.405 null] >> endobj -1216 0 obj << -/D [1212 0 R /XYZ 150.705 609.989 null] +1228 0 obj << +/D [1224 0 R /XYZ 150.705 609.989 null] >> endobj -1211 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F16 475 0 R >> +1223 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F16 479 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1222 0 obj << +1234 0 obj << /Length 5215 >> stream @@ -13649,46 +13726,46 @@ BT ET endstream endobj -1221 0 obj << +1233 0 obj << /Type /Page -/Contents 1222 0 R -/Resources 1220 0 R +/Contents 1234 0 R +/Resources 1232 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1210 0 R -/Annots [ 1217 0 R 1218 0 R 1219 0 R ] +/Parent 1222 0 R +/Annots [ 1229 0 R 1230 0 R 1231 0 R ] >> endobj -1217 0 obj << +1229 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [261.152 574.94 328.21 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1218 0 obj << +1230 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [269.918 483.284 345.972 494.409] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -1219 0 obj << +1231 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [187.733 381.665 263.787 392.79] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -1223 0 obj << -/D [1221 0 R /XYZ 99.895 740.998 null] +1235 0 obj << +/D [1233 0 R /XYZ 99.895 740.998 null] >> endobj -274 0 obj << -/D [1221 0 R /XYZ 99.895 697.37 null] +278 0 obj << +/D [1233 0 R /XYZ 99.895 697.37 null] >> endobj -1220 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1232 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1228 0 obj << +1240 0 obj << /Length 3379 >> stream @@ -13784,39 +13861,39 @@ BT ET endstream endobj -1227 0 obj << +1239 0 obj << /Type /Page -/Contents 1228 0 R -/Resources 1226 0 R +/Contents 1240 0 R +/Resources 1238 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1210 0 R -/Annots [ 1224 0 R 1225 0 R ] +/Parent 1222 0 R +/Annots [ 1236 0 R 1237 0 R ] >> endobj -1224 0 obj << +1236 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [238.542 562.985 314.596 574.11] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -1225 0 obj << +1237 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [311.962 483.284 379.019 494.409] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1229 0 obj << -/D [1227 0 R /XYZ 150.705 740.998 null] +1241 0 obj << +/D [1239 0 R /XYZ 150.705 740.998 null] >> endobj -278 0 obj << -/D [1227 0 R /XYZ 150.705 697.37 null] +282 0 obj << +/D [1239 0 R /XYZ 150.705 697.37 null] >> endobj -1226 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1238 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1232 0 obj << +1244 0 obj << /Length 3437 >> stream @@ -13866,24 +13943,24 @@ BT ET endstream endobj -1231 0 obj << +1243 0 obj << /Type /Page -/Contents 1232 0 R -/Resources 1230 0 R +/Contents 1244 0 R +/Resources 1242 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1210 0 R +/Parent 1222 0 R >> endobj -1233 0 obj << -/D [1231 0 R /XYZ 99.895 740.998 null] +1245 0 obj << +/D [1243 0 R /XYZ 99.895 740.998 null] >> endobj -282 0 obj << -/D [1231 0 R /XYZ 99.895 697.37 null] +286 0 obj << +/D [1243 0 R /XYZ 99.895 697.37 null] >> endobj -1230 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R /F10 666 0 R >> +1242 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R /F10 671 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1237 0 obj << +1249 0 obj << /Length 6547 >> stream @@ -13984,32 +14061,32 @@ BT ET endstream endobj -1236 0 obj << +1248 0 obj << /Type /Page -/Contents 1237 0 R -/Resources 1235 0 R +/Contents 1249 0 R +/Resources 1247 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1210 0 R -/Annots [ 1234 0 R ] +/Parent 1222 0 R +/Annots [ 1246 0 R ] >> endobj -1234 0 obj << +1246 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 484.86 412.588 495.985] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1238 0 obj << -/D [1236 0 R /XYZ 150.705 740.998 null] +1250 0 obj << +/D [1248 0 R /XYZ 150.705 740.998 null] >> endobj -286 0 obj << -/D [1236 0 R /XYZ 150.705 697.37 null] +290 0 obj << +/D [1248 0 R /XYZ 150.705 697.37 null] >> endobj -1235 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1247 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1241 0 obj << +1253 0 obj << /Length 692 >> stream @@ -14030,27 +14107,27 @@ BT ET endstream endobj -1240 0 obj << +1252 0 obj << /Type /Page -/Contents 1241 0 R -/Resources 1239 0 R +/Contents 1253 0 R +/Resources 1251 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1245 0 R +/Parent 1257 0 R >> endobj -1242 0 obj << -/D [1240 0 R /XYZ 99.895 740.998 null] +1254 0 obj << +/D [1252 0 R /XYZ 99.895 740.998 null] >> endobj -1243 0 obj << -/D [1240 0 R /XYZ 99.895 716.092 null] +1255 0 obj << +/D [1252 0 R /XYZ 99.895 716.092 null] >> endobj -1244 0 obj << -/D [1240 0 R /XYZ 99.895 688.251 null] +1256 0 obj << +/D [1252 0 R /XYZ 99.895 688.251 null] >> endobj -1239 0 obj << -/Font << /F8 478 0 R /F30 664 0 R >> +1251 0 obj << +/Font << /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1249 0 obj << +1261 0 obj << /Length 5736 >> stream @@ -14147,32 +14224,32 @@ BT ET endstream endobj -1248 0 obj << +1260 0 obj << /Type /Page -/Contents 1249 0 R -/Resources 1247 0 R +/Contents 1261 0 R +/Resources 1259 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1245 0 R -/Annots [ 1246 0 R ] +/Parent 1257 0 R +/Annots [ 1258 0 R ] >> endobj -1246 0 obj << +1258 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 483.284 412.588 494.409] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1250 0 obj << -/D [1248 0 R /XYZ 150.705 740.998 null] +1262 0 obj << +/D [1260 0 R /XYZ 150.705 740.998 null] >> endobj -290 0 obj << -/D [1248 0 R /XYZ 150.705 697.37 null] +294 0 obj << +/D [1260 0 R /XYZ 150.705 697.37 null] >> endobj -1247 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1259 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1254 0 obj << +1266 0 obj << /Length 3264 >> stream @@ -14254,35 +14331,35 @@ BT ET endstream endobj -1253 0 obj << +1265 0 obj << /Type /Page -/Contents 1254 0 R -/Resources 1252 0 R +/Contents 1266 0 R +/Resources 1264 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1245 0 R -/Annots [ 1251 0 R ] +/Parent 1257 0 R +/Annots [ 1263 0 R ] >> endobj -1251 0 obj << +1263 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 495.239 361.779 506.364] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1255 0 obj << -/D [1253 0 R /XYZ 99.895 740.998 null] +1267 0 obj << +/D [1265 0 R /XYZ 99.895 740.998 null] >> endobj -294 0 obj << -/D [1253 0 R /XYZ 99.895 697.37 null] +298 0 obj << +/D [1265 0 R /XYZ 99.895 697.37 null] >> endobj -1256 0 obj << -/D [1253 0 R /XYZ 99.895 382.883 null] +1268 0 obj << +/D [1265 0 R /XYZ 99.895 382.883 null] >> endobj -1252 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1264 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1260 0 obj << +1272 0 obj << /Length 4976 >> stream @@ -14372,35 +14449,35 @@ BT ET endstream endobj -1259 0 obj << +1271 0 obj << /Type /Page -/Contents 1260 0 R -/Resources 1258 0 R +/Contents 1272 0 R +/Resources 1270 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1245 0 R -/Annots [ 1257 0 R ] +/Parent 1257 0 R +/Annots [ 1269 0 R ] >> endobj -1257 0 obj << +1269 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 495.239 412.588 506.364] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1261 0 obj << -/D [1259 0 R /XYZ 150.705 740.998 null] +1273 0 obj << +/D [1271 0 R /XYZ 150.705 740.998 null] >> endobj -298 0 obj << -/D [1259 0 R /XYZ 150.705 697.37 null] +302 0 obj << +/D [1271 0 R /XYZ 150.705 697.37 null] >> endobj -1262 0 obj << -/D [1259 0 R /XYZ 150.705 259.346 null] +1274 0 obj << +/D [1271 0 R /XYZ 150.705 259.346 null] >> endobj -1258 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1270 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1266 0 obj << +1278 0 obj << /Length 3233 >> stream @@ -14482,35 +14559,35 @@ BT ET endstream endobj -1265 0 obj << +1277 0 obj << /Type /Page -/Contents 1266 0 R -/Resources 1264 0 R +/Contents 1278 0 R +/Resources 1276 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1245 0 R -/Annots [ 1263 0 R ] +/Parent 1257 0 R +/Annots [ 1275 0 R ] >> endobj -1263 0 obj << +1275 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 495.239 361.779 506.364] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1267 0 obj << -/D [1265 0 R /XYZ 99.895 740.998 null] +1279 0 obj << +/D [1277 0 R /XYZ 99.895 740.998 null] >> endobj -302 0 obj << -/D [1265 0 R /XYZ 99.895 697.37 null] +306 0 obj << +/D [1277 0 R /XYZ 99.895 697.37 null] >> endobj -1268 0 obj << -/D [1265 0 R /XYZ 99.895 382.883 null] +1280 0 obj << +/D [1277 0 R /XYZ 99.895 382.883 null] >> endobj -1264 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1276 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1272 0 obj << +1284 0 obj << /Length 4985 >> stream @@ -14600,35 +14677,35 @@ BT ET endstream endobj -1271 0 obj << +1283 0 obj << /Type /Page -/Contents 1272 0 R -/Resources 1270 0 R +/Contents 1284 0 R +/Resources 1282 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1245 0 R -/Annots [ 1269 0 R ] +/Parent 1257 0 R +/Annots [ 1281 0 R ] >> endobj -1269 0 obj << +1281 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 495.239 412.588 506.364] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1273 0 obj << -/D [1271 0 R /XYZ 150.705 740.998 null] +1285 0 obj << +/D [1283 0 R /XYZ 150.705 740.998 null] >> endobj -306 0 obj << -/D [1271 0 R /XYZ 150.705 697.37 null] +310 0 obj << +/D [1283 0 R /XYZ 150.705 697.37 null] >> endobj -1274 0 obj << -/D [1271 0 R /XYZ 150.705 259.346 null] +1286 0 obj << +/D [1283 0 R /XYZ 150.705 259.346 null] >> endobj -1270 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1282 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1278 0 obj << +1290 0 obj << /Length 3821 >> stream @@ -14707,38 +14784,38 @@ BT ET endstream endobj -1277 0 obj << +1289 0 obj << /Type /Page -/Contents 1278 0 R -/Resources 1276 0 R +/Contents 1290 0 R +/Resources 1288 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1282 0 R -/Annots [ 1275 0 R ] +/Parent 1294 0 R +/Annots [ 1287 0 R ] >> endobj -1275 0 obj << +1287 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 574.94 361.779 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1279 0 obj << -/D [1277 0 R /XYZ 99.895 740.998 null] +1291 0 obj << +/D [1289 0 R /XYZ 99.895 740.998 null] >> endobj -310 0 obj << -/D [1277 0 R /XYZ 99.895 697.37 null] +314 0 obj << +/D [1289 0 R /XYZ 99.895 697.37 null] >> endobj -1280 0 obj << -/D [1277 0 R /XYZ 99.895 370.928 null] +1292 0 obj << +/D [1289 0 R /XYZ 99.895 370.928 null] >> endobj -1281 0 obj << -/D [1277 0 R /XYZ 99.895 327.092 null] +1293 0 obj << +/D [1289 0 R /XYZ 99.895 327.092 null] >> endobj -1276 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1288 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1286 0 obj << +1298 0 obj << /Length 3654 >> stream @@ -14817,38 +14894,38 @@ BT ET endstream endobj -1285 0 obj << +1297 0 obj << /Type /Page -/Contents 1286 0 R -/Resources 1284 0 R +/Contents 1298 0 R +/Resources 1296 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1282 0 R -/Annots [ 1283 0 R ] +/Parent 1294 0 R +/Annots [ 1295 0 R ] >> endobj -1283 0 obj << +1295 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 574.94 412.588 586.065] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1287 0 obj << -/D [1285 0 R /XYZ 150.705 740.998 null] +1299 0 obj << +/D [1297 0 R /XYZ 150.705 740.998 null] >> endobj -314 0 obj << -/D [1285 0 R /XYZ 150.705 697.37 null] +318 0 obj << +/D [1297 0 R /XYZ 150.705 697.37 null] >> endobj -1288 0 obj << -/D [1285 0 R /XYZ 150.705 370.928 null] +1300 0 obj << +/D [1297 0 R /XYZ 150.705 370.928 null] >> endobj -1289 0 obj << -/D [1285 0 R /XYZ 150.705 339.047 null] +1301 0 obj << +/D [1297 0 R /XYZ 150.705 339.047 null] >> endobj -1284 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1296 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1293 0 obj << +1305 0 obj << /Length 5783 >> stream @@ -14935,32 +15012,32 @@ BT ET endstream endobj -1292 0 obj << +1304 0 obj << /Type /Page -/Contents 1293 0 R -/Resources 1291 0 R +/Contents 1305 0 R +/Resources 1303 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1282 0 R -/Annots [ 1290 0 R ] +/Parent 1294 0 R +/Annots [ 1302 0 R ] >> endobj -1290 0 obj << +1302 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 492.904 372.239 504.029] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1294 0 obj << -/D [1292 0 R /XYZ 99.895 740.998 null] +1306 0 obj << +/D [1304 0 R /XYZ 99.895 740.998 null] >> endobj -318 0 obj << -/D [1292 0 R /XYZ 99.895 696.587 null] +322 0 obj << +/D [1304 0 R /XYZ 99.895 696.587 null] >> endobj -1291 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1303 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1297 0 obj << +1309 0 obj << /Length 3711 >> stream @@ -14997,30 +15074,30 @@ BT ET endstream endobj -1296 0 obj << +1308 0 obj << /Type /Page -/Contents 1297 0 R -/Resources 1295 0 R +/Contents 1309 0 R +/Resources 1307 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1282 0 R +/Parent 1294 0 R >> endobj -1298 0 obj << -/D [1296 0 R /XYZ 150.705 740.998 null] +1310 0 obj << +/D [1308 0 R /XYZ 150.705 740.998 null] >> endobj -1299 0 obj << -/D [1296 0 R /XYZ 150.705 496.913 null] +1311 0 obj << +/D [1308 0 R /XYZ 150.705 496.913 null] >> endobj -1300 0 obj << -/D [1296 0 R /XYZ 150.705 439.185 null] +1312 0 obj << +/D [1308 0 R /XYZ 150.705 439.185 null] >> endobj -1301 0 obj << -/D [1296 0 R /XYZ 150.705 418.983 null] +1313 0 obj << +/D [1308 0 R /XYZ 150.705 418.983 null] >> endobj -1295 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R /F16 475 0 R /F11 649 0 R >> +1307 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R /F16 479 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1307 0 obj << +1319 0 obj << /Length 4123 >> stream @@ -15131,46 +15208,46 @@ BT ET endstream endobj -1306 0 obj << +1318 0 obj << /Type /Page -/Contents 1307 0 R -/Resources 1305 0 R +/Contents 1319 0 R +/Resources 1317 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1282 0 R -/Annots [ 1302 0 R 1303 0 R 1304 0 R ] +/Parent 1294 0 R +/Annots [ 1314 0 R 1315 0 R 1316 0 R ] >> endobj -1302 0 obj << +1314 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 529.112 372.239 540.237] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1303 0 obj << +1315 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 461.366 361.779 472.491] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1304 0 obj << +1316 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [321.343 405.575 388.401 416.7] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1308 0 obj << -/D [1306 0 R /XYZ 99.895 740.998 null] +1320 0 obj << +/D [1318 0 R /XYZ 99.895 740.998 null] >> endobj -322 0 obj << -/D [1306 0 R /XYZ 99.895 697.37 null] +326 0 obj << +/D [1318 0 R /XYZ 99.895 697.37 null] >> endobj -1305 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F30 664 0 R /F27 477 0 R /F11 649 0 R >> +1317 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F30 669 0 R /F27 481 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1311 0 obj << +1323 0 obj << /Length 5766 >> stream @@ -15250,24 +15327,24 @@ BT ET endstream endobj -1310 0 obj << +1322 0 obj << /Type /Page -/Contents 1311 0 R -/Resources 1309 0 R +/Contents 1323 0 R +/Resources 1321 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1282 0 R +/Parent 1294 0 R >> endobj -1312 0 obj << -/D [1310 0 R /XYZ 150.705 740.998 null] +1324 0 obj << +/D [1322 0 R /XYZ 150.705 740.998 null] >> endobj -326 0 obj << -/D [1310 0 R /XYZ 150.705 696.813 null] +330 0 obj << +/D [1322 0 R /XYZ 150.705 696.813 null] >> endobj -1309 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F11 649 0 R /F27 477 0 R >> +1321 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F11 654 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1315 0 obj << +1327 0 obj << /Length 6993 >> stream @@ -15373,48 +15450,48 @@ BT ET endstream endobj -1314 0 obj << +1326 0 obj << /Type /Page -/Contents 1315 0 R -/Resources 1313 0 R +/Contents 1327 0 R +/Resources 1325 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1326 0 R +/Parent 1338 0 R >> endobj -1316 0 obj << -/D [1314 0 R /XYZ 99.895 740.998 null] +1328 0 obj << +/D [1326 0 R /XYZ 99.895 740.998 null] >> endobj -1317 0 obj << -/D [1314 0 R /XYZ 99.895 702.144 null] +1329 0 obj << +/D [1326 0 R /XYZ 99.895 702.144 null] >> endobj -1318 0 obj << -/D [1314 0 R /XYZ 99.895 668.326 null] +1330 0 obj << +/D [1326 0 R /XYZ 99.895 668.326 null] >> endobj -1319 0 obj << -/D [1314 0 R /XYZ 99.895 624.491 null] +1331 0 obj << +/D [1326 0 R /XYZ 99.895 624.491 null] >> endobj -1320 0 obj << -/D [1314 0 R /XYZ 99.895 556.745 null] +1332 0 obj << +/D [1326 0 R /XYZ 99.895 556.745 null] >> endobj -1321 0 obj << -/D [1314 0 R /XYZ 99.895 500.954 null] +1333 0 obj << +/D [1326 0 R /XYZ 99.895 500.954 null] >> endobj -1322 0 obj << -/D [1314 0 R /XYZ 99.895 468.52 null] +1334 0 obj << +/D [1326 0 R /XYZ 99.895 468.52 null] >> endobj -1323 0 obj << -/D [1314 0 R /XYZ 99.895 425.182 null] +1335 0 obj << +/D [1326 0 R /XYZ 99.895 425.182 null] >> endobj -1324 0 obj << -/D [1314 0 R /XYZ 99.895 383.395 null] +1336 0 obj << +/D [1326 0 R /XYZ 99.895 383.395 null] >> endobj -1325 0 obj << -/D [1314 0 R /XYZ 99.895 355.499 null] +1337 0 obj << +/D [1326 0 R /XYZ 99.895 355.499 null] >> endobj -1313 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F7 665 0 R >> +1325 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F7 670 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1329 0 obj << +1341 0 obj << /Length 186 >> stream @@ -15428,24 +15505,24 @@ BT ET endstream endobj -1328 0 obj << +1340 0 obj << /Type /Page -/Contents 1329 0 R -/Resources 1327 0 R +/Contents 1341 0 R +/Resources 1339 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1326 0 R +/Parent 1338 0 R >> endobj -1330 0 obj << -/D [1328 0 R /XYZ 150.705 740.998 null] +1342 0 obj << +/D [1340 0 R /XYZ 150.705 740.998 null] >> endobj -330 0 obj << -/D [1328 0 R /XYZ 150.705 716.092 null] +334 0 obj << +/D [1340 0 R /XYZ 150.705 716.092 null] >> endobj -1327 0 obj << -/Font << /F16 475 0 R /F8 478 0 R >> +1339 0 obj << +/Font << /F16 479 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1333 0 obj << +1345 0 obj << /Length 5566 >> stream @@ -15517,30 +15594,30 @@ BT ET endstream endobj -1332 0 obj << +1344 0 obj << /Type /Page -/Contents 1333 0 R -/Resources 1331 0 R +/Contents 1345 0 R +/Resources 1343 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1326 0 R +/Parent 1338 0 R >> endobj -1334 0 obj << -/D [1332 0 R /XYZ 99.895 740.998 null] +1346 0 obj << +/D [1344 0 R /XYZ 99.895 740.998 null] >> endobj -334 0 obj << -/D [1332 0 R /XYZ 99.895 697.37 null] +338 0 obj << +/D [1344 0 R /XYZ 99.895 697.37 null] >> endobj -1335 0 obj << -/D [1332 0 R /XYZ 99.895 235.436 null] +1347 0 obj << +/D [1344 0 R /XYZ 99.895 235.436 null] >> endobj -1336 0 obj << -/D [1332 0 R /XYZ 99.895 213.573 null] +1348 0 obj << +/D [1344 0 R /XYZ 99.895 213.573 null] >> endobj -1331 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +1343 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1339 0 obj << +1351 0 obj << /Length 4638 >> stream @@ -15594,30 +15671,30 @@ BT ET endstream endobj -1338 0 obj << +1350 0 obj << /Type /Page -/Contents 1339 0 R -/Resources 1337 0 R +/Contents 1351 0 R +/Resources 1349 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1326 0 R +/Parent 1338 0 R >> endobj -1340 0 obj << -/D [1338 0 R /XYZ 150.705 740.998 null] +1352 0 obj << +/D [1350 0 R /XYZ 150.705 740.998 null] >> endobj -338 0 obj << -/D [1338 0 R /XYZ 150.705 685.747 null] +342 0 obj << +/D [1350 0 R /XYZ 150.705 685.747 null] >> endobj -1341 0 obj << -/D [1338 0 R /XYZ 150.705 349.01 null] +1353 0 obj << +/D [1350 0 R /XYZ 150.705 349.01 null] >> endobj -1342 0 obj << -/D [1338 0 R /XYZ 150.705 315.192 null] +1354 0 obj << +/D [1350 0 R /XYZ 150.705 315.192 null] >> endobj -1337 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F14 667 0 R /F11 649 0 R >> +1349 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1345 0 obj << +1357 0 obj << /Length 4355 >> stream @@ -15668,33 +15745,33 @@ BT ET endstream endobj -1344 0 obj << +1356 0 obj << /Type /Page -/Contents 1345 0 R -/Resources 1343 0 R +/Contents 1357 0 R +/Resources 1355 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1326 0 R +/Parent 1338 0 R >> endobj -1346 0 obj << -/D [1344 0 R /XYZ 99.895 740.998 null] +1358 0 obj << +/D [1356 0 R /XYZ 99.895 740.998 null] >> endobj -342 0 obj << -/D [1344 0 R /XYZ 99.895 697.37 null] +346 0 obj << +/D [1356 0 R /XYZ 99.895 697.37 null] >> endobj -1347 0 obj << -/D [1344 0 R /XYZ 99.895 442.659 null] +1359 0 obj << +/D [1356 0 R /XYZ 99.895 442.659 null] >> endobj -1348 0 obj << -/D [1344 0 R /XYZ 99.895 396.886 null] +1360 0 obj << +/D [1356 0 R /XYZ 99.895 396.886 null] >> endobj -1349 0 obj << -/D [1344 0 R /XYZ 99.895 365.005 null] +1361 0 obj << +/D [1356 0 R /XYZ 99.895 365.005 null] >> endobj -1343 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +1355 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1352 0 obj << +1364 0 obj << /Length 2159 >> stream @@ -15743,24 +15820,24 @@ BT ET endstream endobj -1351 0 obj << +1363 0 obj << /Type /Page -/Contents 1352 0 R -/Resources 1350 0 R +/Contents 1364 0 R +/Resources 1362 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1326 0 R +/Parent 1338 0 R >> endobj -1353 0 obj << -/D [1351 0 R /XYZ 150.705 740.998 null] +1365 0 obj << +/D [1363 0 R /XYZ 150.705 740.998 null] >> endobj -346 0 obj << -/D [1351 0 R /XYZ 150.705 697.37 null] +350 0 obj << +/D [1363 0 R /XYZ 150.705 697.37 null] >> endobj -1350 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R >> +1362 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1356 0 obj << +1368 0 obj << /Length 3019 >> stream @@ -15813,24 +15890,24 @@ BT ET endstream endobj -1355 0 obj << +1367 0 obj << /Type /Page -/Contents 1356 0 R -/Resources 1354 0 R +/Contents 1368 0 R +/Resources 1366 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1358 0 R +/Parent 1370 0 R >> endobj -1357 0 obj << -/D [1355 0 R /XYZ 99.895 740.998 null] +1369 0 obj << +/D [1367 0 R /XYZ 99.895 740.998 null] >> endobj -350 0 obj << -/D [1355 0 R /XYZ 99.895 697.37 null] +354 0 obj << +/D [1367 0 R /XYZ 99.895 697.37 null] >> endobj -1354 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F11 649 0 R /F27 477 0 R /F14 667 0 R >> +1366 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F11 654 0 R /F27 481 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1361 0 obj << +1373 0 obj << /Length 1201 >> stream @@ -15865,24 +15942,24 @@ BT ET endstream endobj -1360 0 obj << +1372 0 obj << /Type /Page -/Contents 1361 0 R -/Resources 1359 0 R +/Contents 1373 0 R +/Resources 1371 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1358 0 R +/Parent 1370 0 R >> endobj -1362 0 obj << -/D [1360 0 R /XYZ 150.705 740.998 null] +1374 0 obj << +/D [1372 0 R /XYZ 150.705 740.998 null] >> endobj -354 0 obj << -/D [1360 0 R /XYZ 150.705 697.37 null] +358 0 obj << +/D [1372 0 R /XYZ 150.705 697.37 null] >> endobj -1359 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R >> +1371 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1365 0 obj << +1377 0 obj << /Length 1483 >> stream @@ -15917,24 +15994,24 @@ BT ET endstream endobj -1364 0 obj << +1376 0 obj << /Type /Page -/Contents 1365 0 R -/Resources 1363 0 R +/Contents 1377 0 R +/Resources 1375 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1358 0 R +/Parent 1370 0 R >> endobj -1366 0 obj << -/D [1364 0 R /XYZ 99.895 740.998 null] +1378 0 obj << +/D [1376 0 R /XYZ 99.895 740.998 null] >> endobj -358 0 obj << -/D [1364 0 R /XYZ 99.895 697.37 null] +362 0 obj << +/D [1376 0 R /XYZ 99.895 697.37 null] >> endobj -1363 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R >> +1375 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1369 0 obj << +1381 0 obj << /Length 1357 >> stream @@ -15969,24 +16046,24 @@ BT ET endstream endobj -1368 0 obj << +1380 0 obj << /Type /Page -/Contents 1369 0 R -/Resources 1367 0 R +/Contents 1381 0 R +/Resources 1379 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1358 0 R +/Parent 1370 0 R >> endobj -1370 0 obj << -/D [1368 0 R /XYZ 150.705 740.998 null] +1382 0 obj << +/D [1380 0 R /XYZ 150.705 740.998 null] >> endobj -362 0 obj << -/D [1368 0 R /XYZ 150.705 697.37 null] +366 0 obj << +/D [1380 0 R /XYZ 150.705 697.37 null] >> endobj -1367 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R >> +1379 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1373 0 obj << +1385 0 obj << /Length 4552 >> stream @@ -16036,24 +16113,24 @@ BT ET endstream endobj -1372 0 obj << +1384 0 obj << /Type /Page -/Contents 1373 0 R -/Resources 1371 0 R +/Contents 1385 0 R +/Resources 1383 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1358 0 R +/Parent 1370 0 R >> endobj -1374 0 obj << -/D [1372 0 R /XYZ 99.895 740.998 null] +1386 0 obj << +/D [1384 0 R /XYZ 99.895 740.998 null] >> endobj -366 0 obj << -/D [1372 0 R /XYZ 99.895 697.37 null] +370 0 obj << +/D [1384 0 R /XYZ 99.895 697.37 null] >> endobj -1371 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +1383 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1377 0 obj << +1389 0 obj << /Length 5199 >> stream @@ -16111,30 +16188,30 @@ BT ET endstream endobj -1376 0 obj << +1388 0 obj << /Type /Page -/Contents 1377 0 R -/Resources 1375 0 R +/Contents 1389 0 R +/Resources 1387 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1358 0 R +/Parent 1370 0 R >> endobj -1378 0 obj << -/D [1376 0 R /XYZ 150.705 740.998 null] +1390 0 obj << +/D [1388 0 R /XYZ 150.705 740.998 null] >> endobj -370 0 obj << -/D [1376 0 R /XYZ 150.705 697.37 null] +374 0 obj << +/D [1388 0 R /XYZ 150.705 697.37 null] >> endobj -1379 0 obj << -/D [1376 0 R /XYZ 150.705 247.391 null] +1391 0 obj << +/D [1388 0 R /XYZ 150.705 247.391 null] >> endobj -1380 0 obj << -/D [1376 0 R /XYZ 150.705 213.573 null] +1392 0 obj << +/D [1388 0 R /XYZ 150.705 213.573 null] >> endobj -1375 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F14 667 0 R /F11 649 0 R >> +1387 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1383 0 obj << +1395 0 obj << /Length 5151 >> stream @@ -16192,30 +16269,30 @@ BT ET endstream endobj -1382 0 obj << +1394 0 obj << /Type /Page -/Contents 1383 0 R -/Resources 1381 0 R +/Contents 1395 0 R +/Resources 1393 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1387 0 R +/Parent 1399 0 R >> endobj -1384 0 obj << -/D [1382 0 R /XYZ 99.895 740.998 null] +1396 0 obj << +/D [1394 0 R /XYZ 99.895 740.998 null] >> endobj -374 0 obj << -/D [1382 0 R /XYZ 99.895 697.37 null] +378 0 obj << +/D [1394 0 R /XYZ 99.895 697.37 null] >> endobj -1385 0 obj << -/D [1382 0 R /XYZ 99.895 247.391 null] +1397 0 obj << +/D [1394 0 R /XYZ 99.895 247.391 null] >> endobj -1386 0 obj << -/D [1382 0 R /XYZ 99.895 213.573 null] +1398 0 obj << +/D [1394 0 R /XYZ 99.895 213.573 null] >> endobj -1381 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F14 667 0 R /F11 649 0 R >> +1393 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1390 0 obj << +1402 0 obj << /Length 5183 >> stream @@ -16273,30 +16350,30 @@ BT ET endstream endobj -1389 0 obj << +1401 0 obj << /Type /Page -/Contents 1390 0 R -/Resources 1388 0 R +/Contents 1402 0 R +/Resources 1400 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1387 0 R +/Parent 1399 0 R >> endobj -1391 0 obj << -/D [1389 0 R /XYZ 150.705 740.998 null] +1403 0 obj << +/D [1401 0 R /XYZ 150.705 740.998 null] >> endobj -378 0 obj << -/D [1389 0 R /XYZ 150.705 697.37 null] +382 0 obj << +/D [1401 0 R /XYZ 150.705 697.37 null] >> endobj -1392 0 obj << -/D [1389 0 R /XYZ 150.705 247.391 null] +1404 0 obj << +/D [1401 0 R /XYZ 150.705 247.391 null] >> endobj -1393 0 obj << -/D [1389 0 R /XYZ 150.705 213.573 null] +1405 0 obj << +/D [1401 0 R /XYZ 150.705 213.573 null] >> endobj -1388 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F14 667 0 R /F11 649 0 R >> +1400 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1396 0 obj << +1408 0 obj << /Length 5239 >> stream @@ -16354,30 +16431,30 @@ BT ET endstream endobj -1395 0 obj << +1407 0 obj << /Type /Page -/Contents 1396 0 R -/Resources 1394 0 R +/Contents 1408 0 R +/Resources 1406 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1387 0 R +/Parent 1399 0 R >> endobj -1397 0 obj << -/D [1395 0 R /XYZ 99.895 740.998 null] +1409 0 obj << +/D [1407 0 R /XYZ 99.895 740.998 null] >> endobj -382 0 obj << -/D [1395 0 R /XYZ 99.895 697.37 null] +386 0 obj << +/D [1407 0 R /XYZ 99.895 697.37 null] >> endobj -1398 0 obj << -/D [1395 0 R /XYZ 99.895 235.436 null] +1410 0 obj << +/D [1407 0 R /XYZ 99.895 235.436 null] >> endobj -1399 0 obj << -/D [1395 0 R /XYZ 99.895 201.618 null] +1411 0 obj << +/D [1407 0 R /XYZ 99.895 201.618 null] >> endobj -1394 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F14 667 0 R /F11 649 0 R >> +1406 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1402 0 obj << +1414 0 obj << /Length 5273 >> stream @@ -16435,30 +16512,30 @@ BT ET endstream endobj -1401 0 obj << +1413 0 obj << /Type /Page -/Contents 1402 0 R -/Resources 1400 0 R +/Contents 1414 0 R +/Resources 1412 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1387 0 R +/Parent 1399 0 R >> endobj -1403 0 obj << -/D [1401 0 R /XYZ 150.705 740.998 null] +1415 0 obj << +/D [1413 0 R /XYZ 150.705 740.998 null] >> endobj -386 0 obj << -/D [1401 0 R /XYZ 150.705 697.37 null] +390 0 obj << +/D [1413 0 R /XYZ 150.705 697.37 null] >> endobj -1404 0 obj << -/D [1401 0 R /XYZ 150.705 235.436 null] +1416 0 obj << +/D [1413 0 R /XYZ 150.705 235.436 null] >> endobj -1405 0 obj << -/D [1401 0 R /XYZ 150.705 201.618 null] +1417 0 obj << +/D [1413 0 R /XYZ 150.705 201.618 null] >> endobj -1400 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F14 667 0 R /F11 649 0 R >> +1412 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F14 672 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1408 0 obj << +1420 0 obj << /Length 5346 >> stream @@ -16513,27 +16590,27 @@ BT ET endstream endobj -1407 0 obj << +1419 0 obj << /Type /Page -/Contents 1408 0 R -/Resources 1406 0 R +/Contents 1420 0 R +/Resources 1418 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1387 0 R +/Parent 1399 0 R >> endobj -1409 0 obj << -/D [1407 0 R /XYZ 99.895 740.998 null] +1421 0 obj << +/D [1419 0 R /XYZ 99.895 740.998 null] >> endobj -390 0 obj << -/D [1407 0 R /XYZ 99.895 697.37 null] +394 0 obj << +/D [1419 0 R /XYZ 99.895 697.37 null] >> endobj -1410 0 obj << -/D [1407 0 R /XYZ 99.895 223.48 null] +1422 0 obj << +/D [1419 0 R /XYZ 99.895 223.48 null] >> endobj -1406 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +1418 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1413 0 obj << +1425 0 obj << /Length 5364 >> stream @@ -16587,27 +16664,27 @@ BT ET endstream endobj -1412 0 obj << +1424 0 obj << /Type /Page -/Contents 1413 0 R -/Resources 1411 0 R +/Contents 1425 0 R +/Resources 1423 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1387 0 R +/Parent 1399 0 R >> endobj -1414 0 obj << -/D [1412 0 R /XYZ 150.705 740.998 null] +1426 0 obj << +/D [1424 0 R /XYZ 150.705 740.998 null] >> endobj -394 0 obj << -/D [1412 0 R /XYZ 150.705 697.37 null] +398 0 obj << +/D [1424 0 R /XYZ 150.705 697.37 null] >> endobj -1415 0 obj << -/D [1412 0 R /XYZ 150.705 223.48 null] +1427 0 obj << +/D [1424 0 R /XYZ 150.705 223.48 null] >> endobj -1411 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F8 478 0 R /F27 477 0 R /F11 649 0 R /F14 667 0 R >> +1423 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F8 482 0 R /F27 481 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1420 0 obj << +1432 0 obj << /Length 6381 >> stream @@ -16629,39 +16706,39 @@ BT ET endstream endobj -1419 0 obj << +1431 0 obj << /Type /Page -/Contents 1420 0 R -/Resources 1418 0 R +/Contents 1432 0 R +/Resources 1430 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1422 0 R -/Annots [ 1416 0 R 1417 0 R ] +/Parent 1434 0 R +/Annots [ 1428 0 R 1429 0 R ] >> endobj -1416 0 obj << +1428 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [145.477 501.77 152.451 512.895] /Subtype /Link /A << /S /GoTo /D (figure.9) >> >> endobj -1417 0 obj << +1429 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [146.734 346.63 158.689 357.478] /Subtype /Link /A << /S /GoTo /D (figure.10) >> >> endobj -1421 0 obj << -/D [1419 0 R /XYZ 99.895 740.998 null] +1433 0 obj << +/D [1431 0 R /XYZ 99.895 740.998 null] >> endobj -398 0 obj << -/D [1419 0 R /XYZ 99.895 716.092 null] +402 0 obj << +/D [1431 0 R /XYZ 99.895 716.092 null] >> endobj -1418 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F30 664 0 R >> +1430 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1427 0 obj << +1439 0 obj << /Length 3841 >> stream @@ -16742,27 +16819,27 @@ BT ET endstream endobj -1426 0 obj << +1438 0 obj << /Type /Page -/Contents 1427 0 R -/Resources 1425 0 R +/Contents 1439 0 R +/Resources 1437 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1422 0 R +/Parent 1434 0 R >> endobj -1428 0 obj << -/D [1426 0 R /XYZ 150.705 740.998 null] +1440 0 obj << +/D [1438 0 R /XYZ 150.705 740.998 null] >> endobj -1423 0 obj << -/D [1426 0 R /XYZ 194.261 412.237 null] +1435 0 obj << +/D [1438 0 R /XYZ 194.261 412.237 null] >> endobj -1424 0 obj << -/D [1426 0 R /XYZ 200.884 171.074 null] +1436 0 obj << +/D [1438 0 R /XYZ 200.884 171.074 null] >> endobj -1425 0 obj << -/Font << /F46 813 0 R /F8 478 0 R /F30 664 0 R >> +1437 0 obj << +/Font << /F46 825 0 R /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1431 0 obj << +1443 0 obj << /Length 2958 >> stream @@ -16837,24 +16914,24 @@ BT ET endstream endobj -1430 0 obj << +1442 0 obj << /Type /Page -/Contents 1431 0 R -/Resources 1429 0 R +/Contents 1443 0 R +/Resources 1441 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1422 0 R +/Parent 1434 0 R >> endobj -1432 0 obj << -/D [1430 0 R /XYZ 99.895 740.998 null] +1444 0 obj << +/D [1442 0 R /XYZ 99.895 740.998 null] >> endobj -402 0 obj << -/D [1430 0 R /XYZ 99.895 697.37 null] +406 0 obj << +/D [1442 0 R /XYZ 99.895 697.37 null] >> endobj -1429 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1441 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1435 0 obj << +1447 0 obj << /Length 1148 >> stream @@ -16889,24 +16966,24 @@ BT ET endstream endobj -1434 0 obj << +1446 0 obj << /Type /Page -/Contents 1435 0 R -/Resources 1433 0 R +/Contents 1447 0 R +/Resources 1445 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1422 0 R +/Parent 1434 0 R >> endobj -1436 0 obj << -/D [1434 0 R /XYZ 150.705 740.998 null] +1448 0 obj << +/D [1446 0 R /XYZ 150.705 740.998 null] >> endobj -406 0 obj << -/D [1434 0 R /XYZ 150.705 685.747 null] +410 0 obj << +/D [1446 0 R /XYZ 150.705 685.747 null] >> endobj -1433 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1445 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1439 0 obj << +1451 0 obj << /Length 1247 >> stream @@ -16948,24 +17025,24 @@ BT ET endstream endobj -1438 0 obj << +1450 0 obj << /Type /Page -/Contents 1439 0 R -/Resources 1437 0 R +/Contents 1451 0 R +/Resources 1449 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1422 0 R +/Parent 1434 0 R >> endobj -1440 0 obj << -/D [1438 0 R /XYZ 99.895 740.998 null] +1452 0 obj << +/D [1450 0 R /XYZ 99.895 740.998 null] >> endobj -410 0 obj << -/D [1438 0 R /XYZ 99.895 683.422 null] +414 0 obj << +/D [1450 0 R /XYZ 99.895 683.422 null] >> endobj -1437 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1449 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1443 0 obj << +1455 0 obj << /Length 1714 >> stream @@ -17017,24 +17094,24 @@ BT ET endstream endobj -1442 0 obj << +1454 0 obj << /Type /Page -/Contents 1443 0 R -/Resources 1441 0 R +/Contents 1455 0 R +/Resources 1453 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1422 0 R +/Parent 1434 0 R >> endobj -1444 0 obj << -/D [1442 0 R /XYZ 150.705 740.998 null] +1456 0 obj << +/D [1454 0 R /XYZ 150.705 740.998 null] >> endobj -414 0 obj << -/D [1442 0 R /XYZ 150.705 685.747 null] +418 0 obj << +/D [1454 0 R /XYZ 150.705 685.747 null] >> endobj -1441 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1453 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1447 0 obj << +1459 0 obj << /Length 525 >> stream @@ -17048,24 +17125,24 @@ BT ET endstream endobj -1446 0 obj << +1458 0 obj << /Type /Page -/Contents 1447 0 R -/Resources 1445 0 R +/Contents 1459 0 R +/Resources 1457 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1449 0 R +/Parent 1461 0 R >> endobj -1448 0 obj << -/D [1446 0 R /XYZ 99.895 740.998 null] +1460 0 obj << +/D [1458 0 R /XYZ 99.895 740.998 null] >> endobj -418 0 obj << -/D [1446 0 R /XYZ 99.895 716.092 null] +422 0 obj << +/D [1458 0 R /XYZ 99.895 716.092 null] >> endobj -1445 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F30 664 0 R >> +1457 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1453 0 obj << +1465 0 obj << /Length 4430 >> stream @@ -17141,32 +17218,32 @@ BT ET endstream endobj -1452 0 obj << +1464 0 obj << /Type /Page -/Contents 1453 0 R -/Resources 1451 0 R +/Contents 1465 0 R +/Resources 1463 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1449 0 R -/Annots [ 1450 0 R ] +/Parent 1461 0 R +/Annots [ 1462 0 R ] >> endobj -1450 0 obj << +1462 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 451.404 423.049 462.529] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1454 0 obj << -/D [1452 0 R /XYZ 150.705 740.998 null] +1466 0 obj << +/D [1464 0 R /XYZ 150.705 740.998 null] >> endobj -422 0 obj << -/D [1452 0 R /XYZ 150.705 683.422 null] +426 0 obj << +/D [1464 0 R /XYZ 150.705 683.422 null] >> endobj -1451 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1463 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1458 0 obj << +1470 0 obj << /Length 4878 >> stream @@ -17246,32 +17323,32 @@ BT ET endstream endobj -1457 0 obj << +1469 0 obj << /Type /Page -/Contents 1458 0 R -/Resources 1456 0 R +/Contents 1470 0 R +/Resources 1468 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1449 0 R -/Annots [ 1455 0 R ] +/Parent 1461 0 R +/Annots [ 1467 0 R ] >> endobj -1455 0 obj << +1467 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 584.903 372.239 596.028] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1459 0 obj << -/D [1457 0 R /XYZ 99.895 740.998 null] +1471 0 obj << +/D [1469 0 R /XYZ 99.895 740.998 null] >> endobj -426 0 obj << -/D [1457 0 R /XYZ 99.895 683.422 null] +430 0 obj << +/D [1469 0 R /XYZ 99.895 683.422 null] >> endobj -1456 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1468 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1463 0 obj << +1475 0 obj << /Length 3229 >> stream @@ -17346,32 +17423,32 @@ BT ET endstream endobj -1462 0 obj << +1474 0 obj << /Type /Page -/Contents 1463 0 R -/Resources 1461 0 R +/Contents 1475 0 R +/Resources 1473 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1449 0 R -/Annots [ 1460 0 R ] +/Parent 1461 0 R +/Annots [ 1472 0 R ] >> endobj -1460 0 obj << +1472 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 451.404 423.049 462.529] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1464 0 obj << -/D [1462 0 R /XYZ 150.705 740.998 null] +1476 0 obj << +/D [1474 0 R /XYZ 150.705 740.998 null] >> endobj -430 0 obj << -/D [1462 0 R /XYZ 150.705 685.747 null] +434 0 obj << +/D [1474 0 R /XYZ 150.705 685.747 null] >> endobj -1461 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1473 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1467 0 obj << +1479 0 obj << /Length 3261 >> stream @@ -17428,24 +17505,24 @@ BT ET endstream endobj -1466 0 obj << +1478 0 obj << /Type /Page -/Contents 1467 0 R -/Resources 1465 0 R +/Contents 1479 0 R +/Resources 1477 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1449 0 R +/Parent 1461 0 R >> endobj -1468 0 obj << -/D [1466 0 R /XYZ 99.895 740.998 null] +1480 0 obj << +/D [1478 0 R /XYZ 99.895 740.998 null] >> endobj -434 0 obj << -/D [1466 0 R /XYZ 99.895 685.747 null] +438 0 obj << +/D [1478 0 R /XYZ 99.895 685.747 null] >> endobj -1465 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1477 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1472 0 obj << +1484 0 obj << /Length 3719 >> stream @@ -17524,32 +17601,32 @@ BT ET endstream endobj -1471 0 obj << +1483 0 obj << /Type /Page -/Contents 1472 0 R -/Resources 1470 0 R +/Contents 1484 0 R +/Resources 1482 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1449 0 R -/Annots [ 1469 0 R ] +/Parent 1461 0 R +/Annots [ 1481 0 R ] >> endobj -1469 0 obj << +1481 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 584.903 423.049 596.028] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1473 0 obj << -/D [1471 0 R /XYZ 150.705 740.998 null] +1485 0 obj << +/D [1483 0 R /XYZ 150.705 740.998 null] >> endobj -438 0 obj << -/D [1471 0 R /XYZ 150.705 685.747 null] +442 0 obj << +/D [1483 0 R /XYZ 150.705 685.747 null] >> endobj -1470 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1482 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1476 0 obj << +1488 0 obj << /Length 910 >> stream @@ -17571,24 +17648,24 @@ BT ET endstream endobj -1475 0 obj << +1487 0 obj << /Type /Page -/Contents 1476 0 R -/Resources 1474 0 R +/Contents 1488 0 R +/Resources 1486 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1478 0 R +/Parent 1490 0 R >> endobj -1477 0 obj << -/D [1475 0 R /XYZ 99.895 740.998 null] +1489 0 obj << +/D [1487 0 R /XYZ 99.895 740.998 null] >> endobj -442 0 obj << -/D [1475 0 R /XYZ 99.895 716.092 null] +446 0 obj << +/D [1487 0 R /XYZ 99.895 716.092 null] >> endobj -1474 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F14 667 0 R /F30 664 0 R >> +1486 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F14 672 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1483 0 obj << +1495 0 obj << /Length 4654 >> stream @@ -17677,42 +17754,42 @@ BT ET endstream endobj -1482 0 obj << +1494 0 obj << /Type /Page -/Contents 1483 0 R -/Resources 1481 0 R +/Contents 1495 0 R +/Resources 1493 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1478 0 R -/Annots [ 1479 0 R 1480 0 R ] +/Parent 1490 0 R +/Annots [ 1491 0 R 1492 0 R ] >> endobj -1479 0 obj << +1491 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [372.153 511.179 439.211 522.304] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1480 0 obj << +1492 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [219.641 421.792 226.103 433.832] /Subtype /Link /A << /S /GoTo /D (Hfootnote.3) >> >> endobj -1484 0 obj << -/D [1482 0 R /XYZ 150.705 740.998 null] +1496 0 obj << +/D [1494 0 R /XYZ 150.705 740.998 null] >> endobj -446 0 obj << -/D [1482 0 R /XYZ 150.705 697.37 null] +450 0 obj << +/D [1494 0 R /XYZ 150.705 697.37 null] >> endobj -1485 0 obj << -/D [1482 0 R /XYZ 165.948 129.79 null] +1497 0 obj << +/D [1494 0 R /XYZ 165.948 129.79 null] >> endobj -1481 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R /F11 649 0 R /F7 665 0 R /F32 668 0 R /F31 670 0 R >> +1493 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R /F11 654 0 R /F7 670 0 R /F32 673 0 R /F31 675 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1492 0 obj << +1504 0 obj << /Length 7157 >> stream @@ -17907,53 +17984,53 @@ BT ET endstream endobj -1491 0 obj << +1503 0 obj << /Type /Page -/Contents 1492 0 R -/Resources 1490 0 R +/Contents 1504 0 R +/Resources 1502 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1478 0 R -/Annots [ 1486 0 R 1487 0 R 1488 0 R 1489 0 R ] +/Parent 1490 0 R +/Annots [ 1498 0 R 1499 0 R 1500 0 R 1501 0 R ] >> endobj -1486 0 obj << +1498 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [317.856 586.895 395.375 598.02] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1487 0 obj << +1499 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [396.921 519.15 463.979 530.274] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1488 0 obj << +1500 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [371.488 451.404 438.546 462.529] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1489 0 obj << +1501 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [318.576 226.248 385.634 237.373] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1493 0 obj << -/D [1491 0 R /XYZ 99.895 740.998 null] +1505 0 obj << +/D [1503 0 R /XYZ 99.895 740.998 null] >> endobj -450 0 obj << -/D [1491 0 R /XYZ 99.895 697.37 null] +454 0 obj << +/D [1503 0 R /XYZ 99.895 697.37 null] >> endobj -1490 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1502 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1500 0 obj << +1512 0 obj << /Length 5992 >> stream @@ -18108,53 +18185,53 @@ BT ET endstream endobj -1499 0 obj << +1511 0 obj << /Type /Page -/Contents 1500 0 R -/Resources 1498 0 R +/Contents 1512 0 R +/Resources 1510 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1478 0 R -/Annots [ 1494 0 R 1495 0 R 1496 0 R 1497 0 R ] +/Parent 1490 0 R +/Annots [ 1506 0 R 1507 0 R 1508 0 R 1509 0 R ] >> endobj -1494 0 obj << +1506 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [372.153 574.94 439.211 586.065] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1495 0 obj << +1507 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [398.111 519.15 474.165 530.274] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -1496 0 obj << +1508 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [375.695 463.359 442.753 474.484] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1497 0 obj << +1509 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [398.111 274.069 474.165 285.194] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -1501 0 obj << -/D [1499 0 R /XYZ 150.705 740.998 null] +1513 0 obj << +/D [1511 0 R /XYZ 150.705 740.998 null] >> endobj -454 0 obj << -/D [1499 0 R /XYZ 150.705 697.37 null] +458 0 obj << +/D [1511 0 R /XYZ 150.705 697.37 null] >> endobj -1498 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1510 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1505 0 obj << +1517 0 obj << /Length 2003 >> stream @@ -18211,32 +18288,32 @@ BT ET endstream endobj -1504 0 obj << +1516 0 obj << /Type /Page -/Contents 1505 0 R -/Resources 1503 0 R +/Contents 1517 0 R +/Resources 1515 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1478 0 R -/Annots [ 1502 0 R ] +/Parent 1490 0 R +/Annots [ 1514 0 R ] >> endobj -1502 0 obj << +1514 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [321.343 560.993 388.401 572.118] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1506 0 obj << -/D [1504 0 R /XYZ 99.895 740.998 null] +1518 0 obj << +/D [1516 0 R /XYZ 99.895 740.998 null] >> endobj -458 0 obj << -/D [1504 0 R /XYZ 99.895 685.747 null] +462 0 obj << +/D [1516 0 R /XYZ 99.895 685.747 null] >> endobj -1503 0 obj << -/Font << /F16 475 0 R /F30 664 0 R /F27 477 0 R /F8 478 0 R >> +1515 0 obj << +/Font << /F16 479 0 R /F30 669 0 R /F27 481 0 R /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1509 0 obj << +1521 0 obj << /Length 608 >> stream @@ -18250,24 +18327,24 @@ BT ET endstream endobj -1508 0 obj << +1520 0 obj << /Type /Page -/Contents 1509 0 R -/Resources 1507 0 R +/Contents 1521 0 R +/Resources 1519 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1478 0 R +/Parent 1490 0 R >> endobj -1510 0 obj << -/D [1508 0 R /XYZ 150.705 740.998 null] +1522 0 obj << +/D [1520 0 R /XYZ 150.705 740.998 null] >> endobj -462 0 obj << -/D [1508 0 R /XYZ 150.705 716.092 null] +466 0 obj << +/D [1520 0 R /XYZ 150.705 716.092 null] >> endobj -1507 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F30 664 0 R >> +1519 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1517 0 obj << +1529 0 obj << /Length 7730 >> stream @@ -18413,46 +18490,46 @@ BT ET endstream endobj -1516 0 obj << +1528 0 obj << /Type /Page -/Contents 1517 0 R -/Resources 1515 0 R +/Contents 1529 0 R +/Resources 1527 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1519 0 R -/Annots [ 1511 0 R 1512 0 R 1513 0 R ] +/Parent 1531 0 R +/Annots [ 1523 0 R 1524 0 R 1525 0 R ] >> endobj -1511 0 obj << +1523 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 250.914 372.239 262.039] /Subtype /Link /A << /S /GoTo /D (spdata) >> >> endobj -1512 0 obj << +1524 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [294.721 184.015 361.779 195.14] /Subtype /Link /A << /S /GoTo /D (precdata) >> >> endobj -1513 0 obj << +1525 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [347.301 117.115 423.355 128.24] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -1518 0 obj << -/D [1516 0 R /XYZ 99.895 740.998 null] +1530 0 obj << +/D [1528 0 R /XYZ 99.895 740.998 null] >> endobj -466 0 obj << -/D [1516 0 R /XYZ 99.895 697.37 null] +470 0 obj << +/D [1528 0 R /XYZ 99.895 697.37 null] >> endobj -1515 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F11 649 0 R /F14 667 0 R /F10 666 0 R /F7 665 0 R /F30 664 0 R /F27 477 0 R >> +1527 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F11 654 0 R /F14 672 0 R /F10 671 0 R /F7 670 0 R /F30 669 0 R /F27 481 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1524 0 obj << +1536 0 obj << /Length 6690 >> stream @@ -18575,43 +18652,43 @@ BT ET endstream endobj -1523 0 obj << +1535 0 obj << /Type /Page -/Contents 1524 0 R -/Resources 1522 0 R +/Contents 1536 0 R +/Resources 1534 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1519 0 R -/Annots [ 1514 0 R 1520 0 R 1521 0 R ] +/Parent 1531 0 R +/Annots [ 1526 0 R 1532 0 R 1533 0 R ] >> endobj -1514 0 obj << +1526 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [398.111 655.098 474.165 666.223] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -1520 0 obj << +1532 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [345.53 520.602 412.588 531.727] /Subtype /Link /A << /S /GoTo /D (descdata) >> >> endobj -1521 0 obj << +1533 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [398.111 117.115 474.165 128.24] /Subtype /Link /A << /S /GoTo /D (vdata) >> >> endobj -1525 0 obj << -/D [1523 0 R /XYZ 150.705 740.998 null] +1537 0 obj << +/D [1535 0 R /XYZ 150.705 740.998 null] >> endobj -1522 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F30 664 0 R /F11 649 0 R /F14 667 0 R >> +1534 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F30 669 0 R /F11 654 0 R /F14 672 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1528 0 obj << +1540 0 obj << /Length 2478 >> stream @@ -18640,21 +18717,21 @@ BT ET endstream endobj -1527 0 obj << +1539 0 obj << /Type /Page -/Contents 1528 0 R -/Resources 1526 0 R +/Contents 1540 0 R +/Resources 1538 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1519 0 R +/Parent 1531 0 R >> endobj -1529 0 obj << -/D [1527 0 R /XYZ 99.895 740.998 null] +1541 0 obj << +/D [1539 0 R /XYZ 99.895 740.998 null] >> endobj -1526 0 obj << -/Font << /F27 477 0 R /F8 478 0 R /F11 649 0 R >> +1538 0 obj << +/Font << /F27 481 0 R /F8 482 0 R /F11 654 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1532 0 obj << +1544 0 obj << /Length 80 >> stream @@ -18667,21 +18744,21 @@ BT ET endstream endobj -1531 0 obj << +1543 0 obj << /Type /Page -/Contents 1532 0 R -/Resources 1530 0 R +/Contents 1544 0 R +/Resources 1542 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1519 0 R +/Parent 1531 0 R >> endobj -1533 0 obj << -/D [1531 0 R /XYZ 150.705 740.998 null] +1545 0 obj << +/D [1543 0 R /XYZ 150.705 740.998 null] >> endobj -1530 0 obj << -/Font << /F8 478 0 R >> +1542 0 obj << +/Font << /F8 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1536 0 obj << +1548 0 obj << /Length 7011 >> stream @@ -18743,60 +18820,60 @@ BT ET endstream endobj -1535 0 obj << +1547 0 obj << /Type /Page -/Contents 1536 0 R -/Resources 1534 0 R +/Contents 1548 0 R +/Resources 1546 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1519 0 R +/Parent 1531 0 R >> endobj -1537 0 obj << -/D [1535 0 R /XYZ 99.895 740.998 null] +1549 0 obj << +/D [1547 0 R /XYZ 99.895 740.998 null] >> endobj -1538 0 obj << -/D [1535 0 R /XYZ 99.895 696.263 null] +1550 0 obj << +/D [1547 0 R /XYZ 99.895 696.263 null] >> endobj -633 0 obj << -/D [1535 0 R /XYZ 99.895 699.619 null] +638 0 obj << +/D [1547 0 R /XYZ 99.895 699.619 null] >> endobj -1539 0 obj << -/D [1535 0 R /XYZ 99.895 643.15 null] +1551 0 obj << +/D [1547 0 R /XYZ 99.895 643.15 null] >> endobj -686 0 obj << -/D [1535 0 R /XYZ 99.895 588.618 null] +691 0 obj << +/D [1547 0 R /XYZ 99.895 588.618 null] >> endobj -685 0 obj << -/D [1535 0 R /XYZ 99.895 534.087 null] +690 0 obj << +/D [1547 0 R /XYZ 99.895 534.087 null] >> endobj -639 0 obj << -/D [1535 0 R /XYZ 99.895 479.555 null] +644 0 obj << +/D [1547 0 R /XYZ 99.895 479.555 null] >> endobj -640 0 obj << -/D [1535 0 R /XYZ 99.895 436.978 null] +645 0 obj << +/D [1547 0 R /XYZ 99.895 436.978 null] >> endobj -657 0 obj << -/D [1535 0 R /XYZ 99.895 394.402 null] +662 0 obj << +/D [1547 0 R /XYZ 99.895 394.402 null] >> endobj -636 0 obj << -/D [1535 0 R /XYZ 99.895 351.272 null] +641 0 obj << +/D [1547 0 R /XYZ 99.895 351.272 null] >> endobj -637 0 obj << -/D [1535 0 R /XYZ 99.895 308.696 null] +642 0 obj << +/D [1547 0 R /XYZ 99.895 308.696 null] >> endobj -1540 0 obj << -/D [1535 0 R /XYZ 99.895 266.119 null] +1552 0 obj << +/D [1547 0 R /XYZ 99.895 266.119 null] >> endobj -632 0 obj << -/D [1535 0 R /XYZ 99.895 223.543 null] +637 0 obj << +/D [1547 0 R /XYZ 99.895 223.543 null] >> endobj -1541 0 obj << -/D [1535 0 R /XYZ 99.895 181.52 null] +1553 0 obj << +/D [1547 0 R /XYZ 99.895 181.52 null] >> endobj -1534 0 obj << -/Font << /F16 475 0 R /F8 478 0 R /F17 629 0 R >> +1546 0 obj << +/Font << /F16 479 0 R /F8 482 0 R /F17 634 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1544 0 obj << +1556 0 obj << /Length 3124 >> stream @@ -18837,94 +18914,94 @@ BT ET endstream endobj -1543 0 obj << +1555 0 obj << /Type /Page -/Contents 1544 0 R -/Resources 1542 0 R +/Contents 1556 0 R +/Resources 1554 0 R /MediaBox [0 0 595.276 841.89] -/Parent 1519 0 R +/Parent 1531 0 R >> endobj -1545 0 obj << -/D [1543 0 R /XYZ 150.705 740.998 null] +1557 0 obj << +/D [1555 0 R /XYZ 150.705 740.998 null] >> endobj -777 0 obj << -/D [1543 0 R /XYZ 150.705 716.092 null] +789 0 obj << +/D [1555 0 R /XYZ 150.705 716.092 null] >> endobj -672 0 obj << -/D [1543 0 R /XYZ 150.705 688.251 null] +677 0 obj << +/D [1555 0 R /XYZ 150.705 688.251 null] >> endobj -638 0 obj << -/D [1543 0 R /XYZ 150.705 632.184 null] +643 0 obj << +/D [1555 0 R /XYZ 150.705 632.184 null] >> endobj -635 0 obj << -/D [1543 0 R /XYZ 150.705 590.562 null] +640 0 obj << +/D [1555 0 R /XYZ 150.705 590.562 null] >> endobj -631 0 obj << -/D [1543 0 R /XYZ 150.705 544.789 null] +636 0 obj << +/D [1555 0 R /XYZ 150.705 544.789 null] >> endobj -634 0 obj << -/D [1543 0 R /XYZ 150.705 512.909 null] +639 0 obj << +/D [1555 0 R /XYZ 150.705 512.909 null] >> endobj -1546 0 obj << -/D [1543 0 R /XYZ 150.705 480.475 null] +1558 0 obj << +/D [1555 0 R /XYZ 150.705 480.475 null] >> endobj -1542 0 obj << -/Font << /F8 478 0 R /F17 629 0 R /F30 664 0 R >> +1554 0 obj << +/Font << /F8 482 0 R /F17 634 0 R /F30 669 0 R >> /ProcSet [ /PDF /Text ] >> endobj -1547 0 obj +1559 0 obj [399.7 399.7 513.9 799.4 285.5 342.6 285.5 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 285.5 285.5 285.5 799.4 485.3 485.3 799.4 770.7 727.9 742.3 785 699.4 670.8 806.5 770.7 371 528.1 799.2 642.3 942 770.7 799.4 699.4 799.4 756.5 571 742.3 770.7 770.7 1056.2 770.7 770.7 628.1 285.5 513.9 285.5 513.9 285.5 285.5 513.9 571 456.8 571 457.2 314 513.9 571 285.5 314 542.4 285.5 856.5 571 513.9 571 542.4 402 405.4] endobj -1548 0 obj +1560 0 obj [892.9 339.3 892.9 585.3 892.9 585.3 892.9 892.9 892.9 892.9 892.9 892.9 892.9 1138.9 585.3 585.3 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 1138.9 1138.9 892.9 892.9 1138.9 1138.9 585.3 585.3 1138.9 1138.9 1138.9 892.9 1138.9 1138.9 708.3 708.3 1138.9 1138.9 1138.9 892.9 329.4 1138.9] endobj -1549 0 obj +1561 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj -1550 0 obj +1562 0 obj [533.6] endobj -1551 0 obj +1563 0 obj [413.2 413.2 531.3 826.4 295.1 354.2 295.1 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 295.1 295.1 826.4 501.7 501.7 826.4 795.8 752.1 767.4 811.1 722.6 693.1 833.5 795.8 382.6 545.5 825.4 663.6 972.9 795.8 826.4 722.6 826.4 781.6 590.3 767.4 795.8 795.8 1091 795.8 795.8 649.3 295.1 531.3 295.1 531.3 295.1 295.1 531.3 590.3 472.2 590.3 472.2 324.7 531.3 590.3 295.1 324.7 560.8 295.1 885.4 590.3 531.3 590.3 560.8 414.1 419.1 413.2 590.3 560.8 767.4 560.8 560.8] endobj -1552 0 obj +1564 0 obj [611.1 611.1 611.1] endobj -1553 0 obj +1565 0 obj [777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500 277.8 833.3 750 833.3 416.7 666.7 666.7 777.8 777.8 444.4] endobj -1554 0 obj +1566 0 obj [339.3 892.9 585.3 892.9 585.3 610.1 859.1 863.2 819.4 934.1 838.7 724.5 889.4 935.6 506.3 632 959.9 783.7 1089.4 904.9 868.9 727.3 899.7 860.6 701.5 674.8 778.2 674.6 1074.4 936.9 671.5 778.4 462.3 462.3 462.3 1138.9 1138.9 478.2 619.7 502.4 510.5 594.7 542 557.1 557.3 668.8 404.2 472.7 607.3 361.3 1013.7 706.2] endobj -1555 0 obj +1567 0 obj [569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 323.4] endobj -1556 0 obj +1568 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj -1557 0 obj +1569 0 obj [639.7 565.6 517.7 444.4 405.9 437.5 496.5 469.4 353.9 576.2 583.3 602.6 494 437.5 570 517 571.4 437.2 540.3 595.8 625.7 651.4 622.5 466.3 591.4 828.1 517 362.8 654.2 1000 1000 1000 1000 277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.3 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2 484.7 503.1 446.4 451.2 468.8 361.1 572.5 484.7 715.9 571.5 490.3 465.1] endobj -1558 0 obj +1570 0 obj [613.3 562.2 587.8 881.7 894.4 306.7 332.2 511.1 511.1 511.1 511.1 511.1 831.3 460 536.7 715.6 715.6 511.1 882.8 985 766.7 255.6 306.7 514.4 817.8 769.1 817.8 766.7 306.7 408.9 408.9 511.1 766.7 306.7 357.8 306.7 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 306.7 306.7 766.7 511.1 511.1 766.7 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6 525 768.9 627.2 896.7 743.3 766.7 678.3 766.7 729.4 562.2 715.6 743.3 743.3 998.9 743.3 743.3 613.3 306.7 514.4 306.7 511.1 306.7 306.7 511.1 460 460 511.1 460 306.7 460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 460 664.4 463.9 485.6] endobj -1559 0 obj +1571 0 obj [583.3 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500] endobj -1560 0 obj +1572 0 obj [638.9 638.9 958.3 958.3 319.4 351.4 575 575 575 575 575 869.4 511.1 597.2 830.6 894.4 575 1041.7 1169.4 894.4 319.4 350 602.8 958.3 575 958.3 894.4 319.4 447.2 447.2 575 894.4 319.4 383.3 319.4 575 575 575 575 575 575 575 575 575 575 575 319.4 319.4 350 894.4 543.1 543.1 894.4 869.4 818.1 830.6 881.9 755.6 723.6 904.2 900 436.1 594.4 901.4 691.7 1091.7 900 863.9 786.1 863.9 862.5 638.9 800 884.7 869.4 1188.9 869.4 869.4 702.8 319.4 602.8 319.4 575 319.4 319.4 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9 511.1 575 1150] endobj -1561 0 obj +1573 0 obj [726.9 688.4 700 738.4 663.4 638.4 756.7 726.9 376.9 513.4 751.9 613.4 876.9 726.9 750 663.4 750 713.4 550 700 726.9 726.9 976.9 726.9 726.9 600 300 500 300 500 300 300 500 450 450 500 450 300 450 500 300 300 450 250 800 550 500 500 450 412.5 400 325 525 450 650 450 475] endobj -1562 0 obj +1574 0 obj [625 625 937.5 937.5 312.5 343.7 562.5 562.5 562.5 562.5 562.5 849.5 500 574.1 812.5 875 562.5 1018.5 1143.5 875 312.5 342.6 581 937.5 562.5 937.5 875 312.5 437.5 437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 875 531.2 531.2 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 343.7 593.7 312.5 937.5 625 562.5 625 593.7 459.5 443.8 437.5 625 593.7 812.5 593.7 593.7 500 562.5 1125] endobj -1563 0 obj << -/Length1 1766 -/Length2 12221 +1575 0 obj << +/Length1 1785 +/Length2 12275 /Length3 0 -/Length 13987 +/Length 14060 >> stream %!PS-AdobeFont-1.1: CMBX10 1.00B @@ -18940,7 +19017,7 @@ stream /ItalicAngle 0 def /isFixedPitch false def end readonly def -/FontName /ESTTHA+CMBX10 def +/FontName /GLQIZN+CMBX10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def @@ -18985,6 +19062,7 @@ dup 13 /fl put dup 52 /four put dup 103 /g put dup 104 /h put +dup 45 /hyphen put dup 105 /i put dup 106 /j put dup 107 /k put @@ -19027,45 +19105,51 @@ S ?] •ˆFÂx¸Âºþz¯‹DÈL•_‰¡>b T¼vÊ»¿b–Þ§œ×ÈÆpñ'aŽ™uµšˆ…á&õzØM7nGkßÚÈhûjúÙÖ”µa#ÄÙõSfÐSµ/+ 츮 †Å5æ&`8­¬þ1?Îá¢æ‰’¬Ê{·ù—p~£wÓ~¦ÿ5¿¼(f¥r³‘ù¸Eh]º^bñfè‰÷hü•»Ç‘XÂ;/Ñ%o†¦OvÙšcŠÀÜß9³ÁÂÙr²çXo$²Ý’-#z}ÿýfSUÏ»îy;ÿÍ”Ïýº>r^ÜôÍä0~;‘‰:6]ô:S½ÒSŽ( xŽ:b´ NPc´ Ái:(O¤>©¶EÿQÀÓú@q;¨y¿Ãʨ¹Ø… Áª‹¾§ïFšï nÍ<&ª½S^Ÿ½ÅÏ…‹üØ'¤,ÅÌÄñ5:8 N‰ø «:U6øHíÞ¢ êS¥µîK¢äL M7ÿ Aä“þÚoKrî;pzþ·ÉYHbòЫFÎ&/ԋ㊞á5Ý;–O*öÿ÷'²Ïà;Øòƒûh2Ãã÷˸¼«2Ï*ŽaK»2GËÿAÖ`ÀOn˜r!¸Ll‡>ó¹Šâ¨¬%hª.ŠrÂYèìaS¦ùC-÷·ýåµµáËÂbë•Á·Eshî¦mb©T/E nãHÒ.œiþURËfÍ -ÝSK2™‰´Í,‰ŒƒMüÝ…S°Èv;Ú -tÐæ“8X e‹!aªdâ¦í3|S„C–LòÀÚ‡<{ÈØ8ž [éqЬñ®:çÊî£ÈŒŒo¤XßzÕ2yñ<ó7Ý…©èŒ67»žÏÂ1\T³"¤;;ïß»—¨Ôçò«_.¡‰Ç®"˜éÝNd_ËugžÕÞ´´Òž`8N´ÌH2©Üa·ó­Ä¨{Á€ñ«¨KJ X?X*$‹/ª/ž6¸ñín/½ÛŒzÑoø= ƒšðÇ”;®+‰¯^Ö4'4b!ŠíßÄOíZµõ®ñú-Á -)BïfJ°Ó ü©í3Ežé/@Üîg©å¯ %³&U6ºž!Ñ<ƒîZÂdæ”Ê!¦ôq«»ju¢é|úÿ¶?—¼8™t¤N«6h³ÛEûnÿõãèG•‹·)?°  QüuÌ\ÎJs2lÞDZóçýJØ°<:EFKe¿W®»¹XaE÷;|>á…/‘©»¿¾Í î™zû)'È‚MíwåiWg¥áƒý\L¬I²œ­.Ø¢ª¸0Ÿ£7ýÎ7ƒolÍŸïlêù]ý—¡«À̳ZÈõ#'û딜w¤ÅïáÞ~>´©ªžŒ DÊQœÍH·Í££n…£º·¿£a[Ä\øP$BÏâ¬+žWÑK嬳ÓU>zΙ?'Ié‘Gx¿ÛIê4¡£ ýT ö½*zÒžIdÂaCû¬ÀÑ LMà÷FÐEQÈc PÉåÕg\E”îÐgE,“ >ÆûA“ã`F/յ͛¼®¨ËOy@êìÒ£&÷#÷Ó™Öž2;qU3 -gÄéÓi]¿›­·Ç?ßøóit“8“qæ¡áñJ¦¡A²!a­Ãj$ÒéXW -¾—i •,2ZÞ»ëL•Çyh– ¸ÍÍð½:flüwÇCÈVŒQƒ²ßÛçRfíÙÜ>ÀÚ!4Z…^$t¬+’æ=uü_½g웪fœI¢-åŽFm¢gº`e±Xe‚Œ !ª”*¥6jëX±fF)Nš”•chwƬ8Ýrmæ$êGÛˆ\ýØtÃw?÷–ä-^ïpAû¶O ³V¾˜ú¶Â½Ú&ftd„|i§wMNk>üˆÏœvçj˜¯S!Ž:ë¼ RvLÅ µÇ“1阪,\ ÃŽR1¡¶bøùË/è|âø±œÖK„<%•kâ|ð3†Ž&{•nà›ý‹žê9’×Î/Šë& BÎZ-ÃÝB¦ðIŒ¾}þ_ÁÅ~«<€pÊ óŒ®aË°æÉ” KVeèÐƦ Ÿÿ"2€¡kRßo×Ð+ ô5ÑšùÁÞ5oÃ3šÕJ«Š«=™Y:fNuQ߇­¾Fœ †oì 2£š+DÍ€:6ÔaZµpÆVm}ñ¢¾•lh}ß©›”‹5`YÚžŸ]ô•Ìžäprþ̽ÅÞ¤ -š€è’íiŠ„¨âû ~„ m‹qžUß­·5‰S¬R -Q†ù^ˆjš[áo%îW†·›(C)ΑEÈ…í§ekW"åüRùuiÔcBL¥ã´Åd§ËÕ–atŸ·¹ÿ×cðùfD¸«¨ÌÁ9b»‘÷¯u›¸QÀíö¶ß»sœ}ìý©"âoð×ãåÅx7àü AQL]õ>Á”É êÜ€®W×ÂJÜâÖ¾Š·+l*ï``Brìø4[ii˜åONT\ -CÀ­q VaÛŒeìàò2ƒ÷϶q©m“{ùQPÐbº&^Uùð÷€åìÏ»žVBv¢ü,Ý-YšÔ¦Pä0{éèJÅÄ—ø7‹Î(k0ÁpãöA¦Òÿnõ@ƒÝy›Ê@‰Eõ`2šCœ¾4†±Œ2dÄœÉC;L—5ÚJ€·Åù€ÙÛµ­­VõÕÕÙ#> þµ­®Ní5RŠ«‘ãYJ78ùÇ›¬¨8‘÷AЉ+ÿà ®w@èO¢Òw®‚úÙ¹«±YȾuâËË6¼RGxyñË[Ò`Ú£7£'»ò~¾ëŒŠn½…#CS%ÑEèÑ7*[¸Sò”UךÅâŽm£Ïpûn>îó÷ØÌoȶ&¤2⻃3î‰kÂÖ‡Q0:ÿ§1ïL”–Xõ÷‚v j> naj\9¦âJ>¡Ž¶¼ìØ¡Žþó<ß›hl¨£@‚LÂo’L#m3ç_Ì¿ä¢mUf™Ê· /ÁUué! -òöøX¼D¬à•öe > ->Jÿ[#©NHîk~Ú—¶{ïpÁƒªì›¼fÁÊxÚ®÷w|9pÂnðäDt‘Ñÿ÷Î'ò6Ø­_ÝϡƆ$wm‘:'u‚Ó°áiÓ1+¤Yeª{´• §òn¸„O®þ˜Ú’ ¬Âùjæï ¤„rceÐÂðÊ?¥!ÁwŸ½ðð|-h7\ŽŒ×× -nÌ‹mHn)ÑÕ­Ù˜ˆq±‘ÆÌ.­Š mMã Ã$®²ä™sJõ×}·’njz‚Òå¬Y$)è~i×:û FX^(þd»8ÙvòO‚U* wV¬Ó¡GÜJ,þlmºÑݧʯeq«½y?Æ¢`|“_©á,È}ÃaªZ’´3”9‘¸iå¡„lûwWd<Ï?Aje&lÊPµ«AΕáéì,ˆââ2 #¯»Âe[fOÁ6+ú˜ò›¢ŠYöR:YTiû,Ú |‘kÑxêåÈŒ¥%dy7Í爀X¢÷u~øðüÖÃ$ñ¥¢-¾_ÝÚ½{dYçðܼtü¿áF螎úY|¾,£G´¹êgÇ1P5¥j$Å>ä%+†?ÂQIÚÁZjÔ÷ú½ÛlpÍ>]¤èÊf¨ÞçW¡Š£Äúä­Ÿ­Û:Yi²ýÕ¢»ŠÌ¯ü#›™’Z¢gû -•±åÒj?*\jP -£€P¯ÛÒš¢ò“Ö ŸeT8~ãËXüGÏ祠ÅH£´I5ÝÃ_ô%—b¡Ýü$ŒôD걚æ^ƒW€4'ÅO¤¾¿³`VêMËiÎî® ‚x8‡¾ÿ¸[Y}ÕÎ|Ëuý„0v×¹yb:=ßâײBË“È9+‹K¸j[ª†#Õáû8%ˆ€Mæ›–W]FÁÄÆj3¦¿»³›sEöÇ£ôïô®²L¿¹ä\ï¤ÁÉ!¹x\;’±ºDF®ª¸þúºA °æïI-Z0›°ó]r¯ÛÈÍ9j,¤ú77Óæ< -ûÏ‘”ÞŽá|U,xqWâª4î ×cD©»b*Uì\²)©sÛXµˆ¾*E¦O-2ÂÞÑÓ«½Ö¥þ$ÆüwcØÏIó†‰'ù‚ÚL©ÅÄA­ý™Öôb).ËSúĹ–X¤+oªÝ-Ëá}” ò% EŒ;±ñ÷«öC‘-k•D…Šf5øFªglúYç|áàL[y5î·¥ÿ4…N6Ð{›Å{I†^²ºs­Ó9äâo²€Oî_ݪ`ÆáÉ´ö»ù¸58ð~Æ]îàòiŽlWõèt.û)?~€“!]:xmËV6ŒÎˆÕÕ펙#Å1Ít–>æ~îˆÞWýÕn(Šºš(¡*¹C4Ù£ø“g—¨ÂVã잇£‹mv)p$Š­ÑÈ*«–HúúóÈÊ…½ìŒ#Õ ¤ºKÞÕä3°ZÂds´‹‡Jš{1ffxGÔ(SŒƒõ†øæ,XG!$#%á™A¹˜0¹5¶újä—•HØÂÁ$!Ð÷®õ (¯r$¹GòhöÂ$Ìj8Ç Ÿs‚çêÂ&îÐ&›"FGÞy,ÔÆ1P ­Ø“…R]¨ò ýÏJSj6>‹^j ’¼lÔ×]‡EÀà€Ò;™ -ÿT%8Ÿkå¬|ÎIäIóÛ ¬öKö°ÀŸ‰¨ã;щbC«³—}««Žu[gÙok%•œq)í´Þ'FM¡Q¹˜ÃV{q W›DT¯HéfÙ'Ï&Ïß]4ÿêÖ5­Q  ^‡î|¡×º,7ç3¾fÉ3Ào0&Wó˜Oû˜d<+ÆÅ©ƒhu5šÇ®Ì%÷QóÖÞû–Ž.€ƒ$4¢Ì8«„ßS$çdÅ¢<\[÷ö©wôQr¥¨„G©8óÆÎ@ßÉÁé¸8¹ ðhaX#¯P€z®0 œµ÷@{¬ˆê¡‚A&{ÅÕͤA«×Ð춳æÙqN% ÚÏN纪ÜÀQhçFM|–…a(ÌA)@‚"-ç½aëŸF˱–‡ã3ò³wqÓ‚–±Ï#^ºÖݤŽ·ê–@~J =U:ÊçÜåQ<”{c¼ê1ßkÅÍè ÞXÎèŸÁ¶¡ú»/Ò‹rª‚Ô«”²8CòJ5†ne[yý05+.~0ªU~ÁK­Þ‡k__©„ˆÕìUøPœå!oìÉ¿O~Çn£òÊÆþÄùù õÞÖdM\3¸‹ìÔï;|i—þŠQ Wü_ù&5êF‰ Ï»§lZìhëg,gu¸t÷wnƒÂûFâ­Gv>Èý§W°íp-¶å=˜œ‰Y[²ƒŽ¸uŸ¶V$Šl‚k•%ÂyWÅYäù¶ßuÿäƒ^“ìY3DVÖàVZe+•u¦Ø‘vŠÂ³¾5‘ê}Eà³›xÓ![ƒ”½40‘J^ÕŽ"‰Ï*=tÒrž/%3o+¾û˜^?g±rL¢ üÑb -ËÒ»*^C ù¿|B Špõ·ú’SÏ7cƒ¯8ù,KH‘0²:XTeZÈ.Î)‘êÖª@SSžb{4ç‚ñø&uÓ2hª6òW×^GŽ*þÍ€›s±(õ4ý@“°Él¤®DQ†tü´ÿ%¥ŠI!yä%IP÷Ãø‡vLVåÊÍBØKuæþ±c#•ëÚx€Û´á‚Œë‹Ü›öçdÚSJq!WòK¡³âØñ<”b"} J¿ ©šxµf)ËYÜ«ˆ{Ñ¿°Qß~ùV‡NíUߣp{FEÙ8À<ÆOµÃWÎ, 8ŒŸ…-3rì]Ô„™7²¥£pH„aÈÒôb¼Ž—u„1|¾öŽ%{9¸w8‘èŠïs½~f¯rZwOh\®ÛÚí“Þg–ʃìÿD†â¦—)Í€þcVíÖ«rŠ×5º´dˆ—e„øO¯*mmYNÖòøKQ4_§Ð# `EA¡¢i üzUàÏÚùÚï5)­{YlgùLÃx'k ÆdùP“¿Â/èÍT§dׄ1FiÕ/úáÇ Ëæjü‡†ÙOeÒæøò›«Fl1m»‰F²f·ª¼¾ fLVì׉2PЧÚR,ƒÕxK×OÞð;¬½q 5,½6ߢf‹òd¸¨ý-y×ÐH›“âR xÉÛ}û×;.¤‘»»6EWæ>¾q4ÇöïX’G^ìÊÄöµ‰7ƒN&Ó*^ü_ôqœ„qã9½ 7¤ïÜ,ÆŠçwÏæR*\˜°ãs^-SÀ· œGTT±ÞèUy¢ÈªÓ¦£Ý “KèâÐÏo¬øè’øX7FøªL68öñ/Qd¥”4Æ%yÇ]‘zŽ¬D¹T R -ŸïOþŒrPŸ_¡$ÊrêØñwÛMÁ¼/¬®€ã¢/Z¸ÆaädLJ _ô¢þÍï³Ú¿yÕ—õزÛ*ó:ÚͲz‚öÇ쨨&e5Áòl›é–' ½øj@üµ¹("© ‡ËA`½‰’»½ß^ä|­UxÖÓ¾7ƒËßm«Që/¬å -cBƒÌß#ðS[ïr’]¼cÛx'Öñ\F[¢·~Z]ˆGìè6Œ\o ½ÝÖ„šŸÙûÅš½‰ñ“éþg#ÙªµÑU€š:èG2T[¼É¯¨žÂS<ߦWc`à÷$˜™Ä^ÏJ()ÍF,³ðEÅ©…"»ÜÎ`: ÷šmÇû …>ºÒ–O:ø§ëž‡¥ß 1ûmqjtJ›‰à+¨«³Áƒß)Ž†f[èqz/Ç þSâ€8èç–Æòº²-p÷z¤üŠ}ÓÓ"µÀê×'ˆó„¯jŸ€ôð- Ù-¶ý—8/N·» Tùô»Ëázº8ïgSæÍPëÓ>ÍîÉ‹ôÌÖ›B^fu âh¡ÄØíìq—F\ð·”Y_–ؾ…l’ƒ0:Xkqæd´Ÿ]‰J?û˜¶ž1ÚÕQxÿv8ò5%óŽ-ƺ¥žãGåVr ïé¹m -‡¢´üQç8C<øÃ2*Yã²åb ¬¼ÿN–ÛŒ‡šígupàÁ˘né{Záÿ/~ù æ¯!"z7mÖô6íàæà:1Ùi¤§¹š&S,,r|yÁFƒí¡§D2„;¡1jÄÝ£b7ÁÚ¡Ÿ£/¨Ë¤?žËŸHûÐTÅÿœ®#\ "5‰éæ~î‹’/“éŸCŒR×»,ðŠËŠK«J`çÃQ’6îÒäÙïò_iþâÐ ”˪ᑹ•iò:P8#IU_ëKàKŠ‰ÎèÛ‘Öõ°-`Noþª5¹{DNg³õátüfµ—j”à ùßgݬ/¸¤÷ªº.¦a‚êjK|¯h˜ÿ©ó¨ù3x'ðRpÛÚ~ÜÁ:Pà.Šë›ŠGwé¦>^´5u!Ü_LÖnÂì ù‹ üïÓ7錄µ¸凞ÌÅi7PŒ#±èÞÑA!ŒŽø棿‰TŽ`´YéˆÈù›mºõQ&¹G÷x -:"Xà¯DB³•W½¾=ߒ׿¢àü2;ÄĶoe0Þ ØÀš;ß OÛçNÞëumy’·#OÌ Gyñ¾œh÷J8¾Ç—´‘IAå®ÐE¤ê‘»!(ôiñùJlõ?_ƒ#`IX¿Þ“x±9íò†Ž>ÈWcûôò²ZNRÇ }¦Y'à }â]Uç#VR€ ÚÌ9fl³ÖÐö£ä‚°¼sÚÿœºÙœ/¾‹D5ÿÚ&ïw(“Dë·žmB´þ…±]˜ŒS-߈¾¼C–›–™W -_¤ÔÊßû(ÚF¯ütñ–Ùa؉f~–âWéç›0ìÆÍே+„ ¬ÈÏÄæΨ=9ÌRùŸ@^.´A±¨“»ŸñÈuô+1×1º^QåpÔ6$ý 4Åñ$Ø( 0H˜¥Š5¨aA|£*9¼¹8>Aw誡[Äó‹4·¡t½¢–úŒXHE¦B/òôòCb›ëX[Å]€{pÕ= ¶ _(ó:òÅö·Ò@ òfi¡Píw¶ˆ2ÊÇ8e¬óÚÔ æ¾×Å„Ö>‘ÉZr};ŽJ\Ë©°%Ùò߀5ßàu±Ò/ Þ•†c¯‚kõÜ©ÈòUkôiÝ4µE¥¡<Á#Äâç¹€¾ trÏ9þ²F=¡g#^‘ñ _Wó;@DZµZœ—®3¦eñ¼÷CäW(ŽN©îpwX~2GK—phV8öÜNÆ¢¾ -QÏ6¢î[YdhZ˜KÕÇ•:ÈÉá¹Ïí²ªu¾"KîÈ€ôݹñøe“f¼X‹SöaÿãÖ°±@™15#¡…7´×85r§2ý]÷o#ôv:fÏ·ÁmzXx*¨ÉÜ™É -¶’©«Æƒ¡Éüfž¸ž‚´ âDÌÙ -ð¿©s¹]ÇŠ†lû|lµ"šÎn?á©tèd â…¯B‰À)¥•R¯ÇÓz¢QóIcúÎT:^ä¾Ç‚®:`à*µ7,ý¬lÃò·!ééϲëÓŽ÷0ñNåI&¥\s–Ì.JÔ–´¤¿¿¾øpKƒûÉ4¬<†;¨äãâ¥mì‘®~¨+LM²Íôæ© ìÉᎩžqã;Ü^’ŽóÏ‘™ýš˜ÃÅC1Ÿ€ èA~ÁO6ñ}Ûer>l(Õ“!™òù¼1eà £ªæ欈|†ÊC€÷Ûéivhا™M ôd ì3C =­WÂ’³$È-jînn¶D½õ" -¹é÷ô(bÐXq@÷t²/õÛå¬Ð²/ˆVk>ÚH«óU˜ŒÅ 2eR»´Z–¨e6óQïz—VˆgV“ò®ábæ {iCÊ[äÎX˜U…ôß[âC/$_l  -:‡è¶UÆAngR›z¬æ¡o]8ÌXÌé#š|’Êþlÿ‹˜Ùƒ*¡Œ‚† ékõ3una{*­™£• ļc7Á3ØPŒú3Í Ï±]¦÷N£ØƤæÙ/{Ax(õy±b™%¨ZÙ -New‰›‡—¦Õópp=ž!éªØ{·„ Pu">çzAÎa{µý’%iÚ1hÁwË¢Þk¦Q{%÷àaÖZñ¹¾s.È©ÿm/4†Ó£×›š¬íÎ ú§T'£Yhv„åˆÆË™ O»±o^nÏÑ×KÖR~¦{C¢«þ ‰ÊrÐüDôôCÚJ4XÄIÃë­kŸvn‹˜¿,k”GæcÃûðÐÅ«ê…é2Æ­é‚*s}“‡4ÝÙ'ŸQú¥eôÆ€|¿@ôŠ»ëßE¬i¡Œ›Ê,FCrÀ¦pFÔIÚ’™˜n‚ÕÔ&àðž ’3¨ÆJf¾ö8/=œ#H Ÿj);,«4éE„¸£©ÁØ Àíý8·§[´=˜íaO4§r?ñ¢(B(çc ¿r aÖ ƒÃF¢|`åÖ†Žz’W.ƒàz?w¿â’´p…hýš®~s€©4š+?/S}¾6Ê \s²0™â»QTl!úeÊÚ/í@£»™F†û"ÓûzñˆZÄEnió• ²C]ûñz3¿'õœÖ±Mί ÿ“Exù:üZËs7ì|{ȵ!;¤Ø’ßµãû—g›×e§Ø1­èªÙ¼p‘Aá,™û5ßêöÅëDÏ6G9SÀ‹Õn¹¡‡}•¿FÙæ -¯ø\ßcT@Èð-«›<<¦)Ô!UHˆºÍû5ðD…¼®ßG¤qLÛ8bª ŸwþYA˜ûW?\ŸieÞÁQJ—Q„ÂeÔýTɃûÇ10k…ï\ÑÍÍZCc!µ%•=_ÖZ°AŠýG#É5Îy|V+(I¥mC^Nó•”/9ÈÔg*ìW0·+ÔJ’Ý/PpÌØ–`ð‘<ÆJ'±¨©Ø2BÁÙyO W_fóº V&,o´Êűs8¯ÿYrBMþ«|'z6×9s€Ì«;!‹¯_”ŽEÆ-©€ûØÙ¾Ðjêcåv—¢„s s›ÖW\ˆ…ËZ“á 2†Qè`ƒìÛ­¾¡ÓmºŒrx?ùui©PÑ–¡dD2_û€2žôÄïŸlÅX$ Ÿº,?~xTrñ{þA~}ßÃi•Â §Ä¤Ë%úºäIõ! DTù’qTb:G¶bÙðOŽÙ®0Ëh¦Y‘•Ðõm[^å³íwgòÏ„I¹"?«ûEd -M®ðeàŽ(Hãšû’ã´iµÜ¾ß>â/ìÏ´gÖÏáJ7îýuTïÚý -¼±‚óaÛÛ X…—VXõOX2Êâ -Ãïpu*Lÿò*×?æZHq!îMØ­[ófZ¦_Ñ`.(}¤éæ¹ÖÖ‘Ñ9—ݸüV¦çÿšWžwÝìç'®¹Ó8· …W+ùZÙn/-H›Òà{s‡‰ö È ×ìZò ßé†àN㟷¯ýª > ÍÄóæQcЖóð>ÿfbù\Ö=(K›~"/¢ 6»¢ƒÎeÖñ0LLÂjO,NgËØ 6ŒuV伬—þHŠª4*Ou­Œï†_RW¾ æF’Ìc¬?SM›Œ:¬—÷žJA­= ƒ«ä‰ç‡ŸG °©;T[ ]ƒ«1íݤ¡ýmÖΤ÷ZâspcÙã‰+ÿ€ã¹{¯NnäMh˜J› ¥ˆi¢°ªÞG1±1ûQ—ŽXnàìê±^–…ÂiµÖòßgÐ{áb‘OǸZ5hPt1¶ª,Å–ŠµR¬ð±:uA0LþÕÕú³5é)m?¤NRùf`rþ\Pî•?cõLŒ•ù5¶0eÑÃ×yd~óëÏŠLË|s®–±ŸëàÄÛ-Ž•J¯æ^b7ΟžÁKdFëÃòqhÃkÿ+ø{¸˜{³·Äļä J~Á |ú‚¯sð>oÏ9Š•£r¯¿!F5jΛJ¬¦šì|JBmÄ3P;ð×¼2óÕ6o Ö}Cç¤ÐÙÕ»ÎÛ/8½pì?ÎyaåÍåg«0Ùø1œö^¿{‚„Þ;ËœýÔJæÌc™`úÐЗõlb[EÇãaì^ÇXŽEÔµT9N÷¨„åÔ=¡%qðª^ Þ•"0W"tÛ°ìª%ØI¥fŒ¬53;–·7îô*OˢΙ3ÿE Aº@M ø qOœ£Ô"¢â—Â'Ô†RõÛE‹|Á—ÉñÂCßjÖ'Ã!sìjiòQSÞ¹ý*´<gAÿÛìxÄvçBhj6ÊÂnˆñ ìÁð†rOA“y‘ž¹,òˆ  è™u!iú¹:xX“‰3]}Òn®Ñþ“»ñ:¨! IÜd‘«C/#—20¬…Ê æŠ[ ÒûÕ‡ùn–ÉŃS:™¯˜4c^$g\àËÊ?rž qŠvµsƒ=­‰ÜÅZ# œ³Žàr±Yûé¥$j°È Ù–G[§§U&Á«4Òó·äÞà„ÊIÛWÎ{јìyÑÏDÉ'ÖóÀÞk&KÌE•‡ÝÐDñ~bxŒëÌ}ïÌ`Ý,)P¾Õ±H¤%`@à"[äE«¾&éjñ™ô3ª{M¡+ï^#ê 9r9qN©C=Y‡i7Ä</;Ž¦Ío ÊÖoE¤žS¸‹‘õï…|öP/—Ôæ)¢¡ù´þzOL%·U¥§Xhñeµ(ü!óé;Tµ™2<ªÂÅæzAe§Èš2-…8N•9oÖ¹!5òºæï£Á%Y*&<ƒ0óZÄ­fF¯VP©‡†/cCª¥”lîIM(%ròksài+[ÞD&àõ¿·fãĉPÅ·d¾Ôž€:YJŽÑhϬœ83ÙÁç3—ãó+¬wcj¢·Ý3VÍî8½ á!í ]éQ¨ÖMά€É,¼óO¯“änML4çR¸Z¶œ¤Æç(¤ÉקYµwsðl"’òÒR+±µB«Ž‚ê@ê: qµ(+/_ëZ³†¨"™^;¨üÅJáXÑ0†Þv}昊Ó|~ª8Züå8,îÃqõ+ÓcçewÁ)\ÝNÛ‚b«u‘÷­Š÷–بó./«ð²³!4<ÉØ¥°ÃÄ—»âÓ²#ª$ß|„ÖûÆúÛjÌ|Ä2>jÀÅI¶Rh”Šd°QJY¬ìU“\…ý=z"ÊWÜ[Ï÷3(\ØýUgO¾¯ðȈ}·rtK—ï¼ïiû$¶t²4ELǶ®(# ~õbãȃÄg‚Ë^á@…Ì¢îòöæ«–>Ð!P(ˆŸ‘vz¡O”$ß’0›D+À½ -M™S¿Hþ^ut‰.…?G(èG¿[x”¤ƒý¢Èõ’ÒÛ÷ì¡ogŒMÛùï@‚áéLÓ [K}ÿ"ö؃1ô>nï‡hpbâ×@ÆLm„ÁH™ý³ló¼núµ%­§ã­€T AÛW¿ùçÐê°eÝ!QKŘ"YèRÿ4.Ûé­8b8„ð%ÛþFú*/×”®háôá÷E;mÝq¸ˆƒ§g–‹ÕP fÖµ˜ñzà,›³îô¼{íp­E"à$©¹bÔŠ£Ìå1–#í‹&|h+…¯^,/—ŸnFV«‰FÊVVŠ±×xµ˜O|ê@ŒÌDû»åêøNì*3¢É´Áò½ ³UQ— +!¥pgs˜è¸”#›ÙÁGšv™2?ôH¤ðœ¼Ò=d?yåâÎnL´‹‡1­ÉaÊr¬„!¿9÷´©¼$íS˜Ö`ÀOn˜r!¸Ll‡>ó¹Šâ¨¬%hª.ŠrÂYèí0*#ïI×ÁËÍŒãVäƶ‰·Ô³âKO¾Ï+Fˆk4Ô +æN¾UÌÀôûìƽP’-³b,5Hå­_]Ø´a§æç¡,¥8Ù…ÆTD§˜˜]‚}²ìöÅÔ!0õÏ$™LÓ°Õif’ ‚ßOÏV¿ÄQ¹ìû{˜ $„ ¨_˜+µÎNh貊‰¥n 'Kq4íâ¬Ì¼tWÈÝj’<öƒÎ‡Z_(¿¤tÍ cˆ{÷ÑдûT0VÌŠAÈ}ƒÀ³AR$Ï(3‹JŽÉy3êQG4R-€GŒŸä„½öñz,.§9ìC¢iâ•‘–­TiÑ2ãe¸EÂÄ}˜ÒšÝˆð]š¼Ò×÷]ØœƒYVS¢ç§KdÉWÜ p®ó Йù|Ä~U•ER±N`ÕƒqÂv­Çix£oße`ºÚgYu¥¨R˲<0÷óÅ^ùg/µ•KS]`Îá61¿.·)ó&»ëƒ’ÍÈ…K2)¥(FÑ.`pu¾¥Kÿ» vˆiŒ»Ì{Î6È°}|€‡Ë æ=æR?ûÜ ò"[Ý) AC2ùô0ÝH‘vŒHFg ¾G[´€À÷wàDF:5³–NEòª$,¶{$,ÙAí!RÙvÎvøé\Õ?” ]ug+(`S/äyRNÚPþx¡kµIdE7 +[5õÚ†¬‘‘{õ¦°\|IßðÕDxæäGoÍÄFöÑ"„yÅByÓOeãr§VššxNJχ>Š¿öu¿ˆ¾VWšÞIÐ8+%…ê8…ÎT8— )Åá0Y'ÎáçسսãòZ.:MX¯LÚ4[3Ëu=”¬Õš£µ—@XÃHÍz=//§Ý\ èI²_±ÅO¨_òEË”CÊ›RQ$\ÛûÃã\Á \æjŒÈR ,yø9vß@É‚’3ð'LCbŸ¥GFÕ1 :±ŒcoP]TÁlzÚ +W §ç"üõˆìSaMðÝ›~Á’+ þ}‹ãjÿÂQ2ƒÓïçyŒÂû‚‡ŸÖ£ÞÔVsØÁË/ƒ „7MÓ[õ¾›I’:7ÄÕ5l9RÌÏ<Ö4_ÅãOŽæÏAË|‹ÔQžÒ_áž=aŒœöáR£‘ §MÂoæ }›o3, Æ P—¦WcÔQy¥>Ïv¡êˆÍ£ài:Á€›x(ÂqØ“÷°)ñt12èx È’d¤Ö9 +L1ÕMÕ/%½¼C‘嶟ƥN 0ð†(a#Æï+¿ðd‚Dƒã±»(­IO„ù©©GeˆO†ÉÒÝ!kWϪÉïõZä •¶B"°ÒI¸U¤Gâd´íÀ'+æ&ä§ÖúW³û>̵ 0åOJ’b³l¹2FE ªöº!¢iÍ`•¬¨58¿…¢c£Hö+…@ÖŶ†ÞÜáðQ°N_åÃML Ѩª¼è‰`šdý…Ë ±P1pªu{öT‚Óäàñ2æáÑmGþìZ«nCµb¹FÕJ—­ñ™tí ý»7›&à¢ÐøH Aú ¥3«ÌïúnTylzhZ†½^ €•zî[›(<¦]=‹•8øÈ1³Ìõßhðç ý{”ÔMxYZ³)&ŒdfÔÁŠBª?Ìœ¾´Æ€ IÜ7ˆdkÐ^Ìà-;'Ʀº;y2qà‰»'Ìà´]&sH͈ž¶]3È98†}hA¦ £‰ÖîjV ØÆ`• ùÕ ÎtìA¨x<çeŸé¹Kqj_{Q¼îïÀŒ4ÌÉáˆÅ~¾g›”F%žæ­Vïþ/µm\R7ÆÞH5ÉòrÙ‡/v·N÷w¥ 'ð$žOYs1¾=å@0ÅcÎÔ¶ +³¯hìŒ>ßz}ª+ÿœçߵ˒ð:ˆ¶ßÅ’Ô°Œ +´™,µöðj +—ßõ¤×W›®0KÈÄ­¡Áj[A´7C)½¬´ÏK¤'“Ákiè…¡îûSûšAnÝ>|ÿT¦ +û>Ï>ëfÁê]Úk¼2¬x\æ‹jUYOa|gŽÌƒÌ H/ðÓýMLö÷ÂUüõQF ƒõPHt€°²µ;?³†¼ÅÉcMÇÀ?ú‚e­¾ $˜æiXG4u{x¤Ad®€FùlñVø8“ 1Íï1å°ü;ZW!\%ˆ§[Xuˆ\3ƒ¶Fg^ÎÜîd…~ 4/~V÷¤˜IiñËGJŠÉyzÌÙhû•¼vpõ"$×-µ€9𶞵`ËØe´è7;#HïÎãÝËAvàX/øxÏTÈK~8Õtƒ¶ˆõ…T‘~ð]³ð©ËR8) +AÙ®(ÑJLz龙ܞCd‘cmÏ_çk£€8.|:ÓêÛ÷Í`®^ú]üBsÃ1RqR,¨VÖùc6ò°„Ú…*Rm5vçê cj&8Ÿ¼"†L0LáSxǵÁxÄÿc¤Écň`Åp ; +2¼2‰î$оîνªâñß{‡BOèµ%¥cZ#öÕ M‹Ú%´«êãÍ|ÎBÜMƒ}$¯Õæ¯E/š2¥¤ð:všJO6…„i¡úŒ6w9{ ‚gJò!‘%îI >‡œµÚ7h ºÉq!eNýFÒŸ¼ttD̉̂ì36¸@Í°BÔÝ4 +‡¸Y¦$€ê]ˆóŽÅòQã"wÂðôM’ÑS΂htíü§¾ŽcpÈg®| KÉ×OKùUþæA#¹šcŽä´0IÄ»ðgöðzPÕ\j»‡IįÙÀËÑõ´/7¿-È·‚õzXJã_§•mZªÖn}‘ù©ñSFï¹áìÜUv´ß5êÈIµiŸÏ¡†#}ÍÁ`X_ÌUþw/>²â6ªu{4 ð¼rïËQßÐ5dæŒÀÄþ"0;'åŒtoŒ¬XŠì(ú÷xíß° „¹ùDÿ茀ožší Ê‰ßºUªãDH¯> -"iú<<ðžòÑÉ°IæW9’rLÕ€zD+„ØáÎÄõmßëR²l麧ýÙê!œ?›/2É= xžÿzÆþ¢¶‘‚Žq‚÷Î ´£ŸÃ/Æ·]ÉY‰ð õ/«ªË…G^nÕ©§U¡-P¶ÈžŒ:Ü¥Oâ—c˜HC _‡rÎü4ÔÐ1‘ãd:ä@eù·ËÖ„JD+þð™˜Lø¬_Äד‘] 2L“rþ÷ÖÖl >›K¥¡º>5þ‡_q7snàañ(¶¡"a8Áöë’¾ô™&ã»üJË8‚,‡†ÓÊJtáo*§ÊG>]‚†$ëÒ‚èÎØ#ZZ òk5ŧڃ­¥Rªîy™È`…B¶´5XYa¢>b¤CŠº÷q +nF©IQ +cÙÂ%÷W¼õHa;.‚á0©à]ûÞʈÇÅžÇÎKý§Š™¤ÿ¬³!­ªCÚ%j]™Ôõ]žk7™åšßT„ 3'‹s£*CPˆò)#8•ìãä·*Ýñøn§ÚÀëoë}ïë¨ø=Rè×4aS¯îtÈ¿3‡»dqF°ÁÊúaÿ±Ë sT'ì=òké~ +ÑZÝfè³€»²«SɽØŽÑ2¸7¶SÅa¨ “Ty›Iª+Tt«–Í4 È…øò qà(ý2†—uçý@뤘[ _|E&ÃïflðDÝ!NÚU/þ×<¾7p L¤CK8¢T>Ÿ±™¨àà:Àžwp2"ë vØi°æר:‹tJ€ÐuøðPÌ<ÃÒ.—i0Û ž’À° +hh4Œo„Àå·Y|L•…škÔÅ8hêÖf]ý}*Ý+¾ÝÀ½2Iß®pàØ>·ßŠ¼¯)’j38Gæ~ÍãD­!–Ž8ËçN®Sž?”ß¾6Aô©„,AŽ$ýÇÖÇp<Š7PË6늂 Â×6þk×ê,Më>0CL Zb+Ø…V•Etžk{;„¯ò†‹-”rÊHýØíY¥%';îKçÒ@Eë°ï7+̆"E‘R2òöɬ]´QD½fªÓÅ’) Eëúf¿òãêàç½ÒiW}Q+ êžaB@daâEªU1ç_„ý¡£æË«ÁErÆŠyÜW{«òÐ/ÄžPŸN'–)0Óð—veV`PÄÙÚÀô“ÿMGuÂ{‰ˆ€÷²d¦-×WsâèxM`ï7ö»¨.µ^‹†yå_¾K늨;?;BzpCæ")Ètúª[A íɚפ·# )vÑÍ o_ÍsqÑ÷cù²B*C)\ÁwfÎp¶Tk¿æÅEá CÒTþ|Hp³-jënßqÞÃoK¤—²±´Û5Dî7h ÐÔw²'§¤ljY)l}Ç™fdó‹'ÀŒeIÀ:D0;}Õößo.~hï ºaЧÚÝ2J’²ýšÝRr˜ œ]œý@’…ú[F˜dQ^lÙ…Ä’ ªvë–6rПBwÃÆd>fÛ÷µóZ4;òÞ®§{¨ûè¨HaµØ°ÉH&¸••Ø¸½M3¡h³+¦AÞëÀY;åÅEÁJá¯æÑ’øú¢–·ß«Î}¿¡¾EˆÉ±½ø³º¤Al;ZUÃüttÊ·ìûUúeï ÐÛÀ¡ nT›˜eëªJóÚÍ{NI|oÿ‚½ÈÎ8F{Â*Röž¯ÑLæäËÉ ‚ý¸”uø=î͆‹>äöR3I‹Ž/ÊÛå)©'e39÷-A˜?Ë<´1+‘¨é,)µ‘\jtœñélŽTœLoŒvV&fØQÆÙ ±Mܵž½ã6¾O!rÞÛ:püܯ‚;ÙAI4ã컵ÍvVœ{™×ZÆ)ß(*Ù1SpB~|M- ÕèTôv…ö (ü¶ß……ƒŒsZ•­»¤©øî¶þRæ—'T‡L:…7óæLùyQ¯&™RïØ¥k»©/àéàZÖpº×wמB“¯“ÍA#‰c½•“Jv+^Wm7.€ûìöÜLitÖÍ„£O¦ŽÙÝô÷½ WDqÏœªɱN^¬äûà›äX@“¨Elõõ 3& x­Ãªä4Xµ”çÈROVËCÑ5—Ôÿ?P ˜¿‰,Ž®1¢èßð¾õa|ª5“Ò7“+ß]Tþó·:’Æ^£²Y£êPæåQ*ªOàwsÀéW/«00™ƒ¹•éÇåš&ÞÛJ¼@ÄÞ}»60"ïAÏ;¨çWQ~ýc¬cXx9‹k”ê§ÜkÆâ |÷ÔÙG÷j$ +5—‹$S˧dEó&ëÄ3±;«¾ã7gjÐ?:WügÍ0Ž–—¶ß¼D%”¼…~x¢dl˜¸Ñƒ;W4Ë:/T3iÒ-Ü`6püWÂ* 8^øäÀm»ewlÊé–YâUê•ï@’eˆÛ +–žÂë¤(Ü.Àa*;A{@’~‰“—ÑêøM§s ûy {Ô ]­ßRßþ´¤*zo¸K°€…0 ŽvÜ,¿a‚ñWÌ1•¾')´)Žö†¨¥ÿËM‚8?RŸ˜#¯ý¶öangî0-=ü#²œ*ˆNíëýNH쫯ñœtâÖözÏÊÚU +šž)Š}y{®¸é”ÒÑfÑ‘~þÅz7™<]×:yN‚Yf®A&ˆsZºŽ>gW¤/Ú¾Q0®žrÿåv—…¥“ËÎdö{I$˜¾®ôè³~·:H[Óúl¹3­z74k—òÇD©¿B»Ž!1\gÐeîM‚‘3746•T1>À߀å‚Ë"°ËxF:Åëá~ŽùýÓ«O˜ó¢à„~¸»çëˆë—p$åS,’Ë=ɉ„qFU-`WéâÓ߆*–u“C"Á+Gþ)ÿVt‡ö;xf?þ`ë?cåI‰ÉC&¢†ÿFÇdô‘` +©ÊwØSœb=y²äõ»°n‚!Î×g‚eAÅüpŒ±qit6…¹'³¸$§Ué‘'ga»ç‚[è+éÓ9«7K¸­‰ZEz/ž•þî\#\7éîøø´™¦&_„úÏI!2ƒÞ S³þ Ö¶Ìñ!UVÑ5|Š9V¤¡PxŠ¢šåI/P BBÓäAf¤®Wc£•½Ñ9²X„yD\¹G¾u:ô“—Y±Oº‹<&”í‚Sð™-Îß±¡íx4ÌÞ¦4ÄïgÚOóõò¤Ôý^<ã‡G0 QW(‘ÄGU]é°eÁAÕNr˜Íïpˆ‰ï `”’\g™Ÿ9¹XD¶T@>Q¤¦y'LºÈÌq¬#Ú…€»Ã«ä×Ʀ€‹š‰Ò}7oãØuÖumûêòɶ×}Có$Â[OPq®šòÊ&Ç7šh¸Ur¸HNûÿµ)ÊuÙuoÇûA‰"4ž¤ÜÔîÁL;ýmÉ9ѹîôi¯ËùS÷en,æ¼çì\§/SÁë%´çÅqKv3mñÒá“ð–6§daÐTp)Í€M“€×ËŠ…ð]j8ç}š¤9<ðàS•×f_Øù;CDõå±½0ËÆÑ †j膚AüÏoÛ»]íæ]J蓶 ßçãj³P¥‚íOò"1pFÂf¥…*ÍÞ  ýAu"…XáÛR¼Ó@3‚X~ɲ"9ñšà(c <ñ˜”fGÿE?ñ¹,¢ÍEoÓS¤ÜĶ4(ÁŸÿ)ÀSJe6ÑÜùR’[UcZž¨hÏR]{¥’+£™ªwê˜n8ÓÇgtïɲ\­Ç_IKD2F0ˆï>1Æ°úlF¿õß62r¶&1¡®·¡ÄÚ¶ÿÆÏû¶¹\öAÜ>=äûù~TóŽû±ù h"'ñâŠB¢\«ÏæùiOš^*¢›±¾TËP‹Ò^©«ž¡Ö”(‘þÞ–…£‘i¥¡üL· (^oðQÜyqU:jpOQ*Pg&JŠgÌKVÄ›ÜÃ&È\JT;8™5í5! Quöð„/»æª¸÷N¼¯õ³: ,G/YU“²ŸrøyÓ^žŒ]6^%ÛŽµ í»®×N¸*¾\Ò÷©™^¼ö_èø85|]§Ÿµ',"bÿm½ÂÞú_¿²Í­’¾ÛщõKÕ@e$èߤ†2.p‚XCj€@³W˜NŒ¯ézÌgtö¥·;øÅ9xó>6L¯w:YäïG0|8µº€:Ó£ÜB­Zžùþ²Š²¥:!-eY³ +_!ˆýU.>2²NùÝègJn²O´Là +¢¦wÀɾה‹íDtâ&ìu¶:@ü¥p¦í¼ëuÁçsšg<él‡lYlb«¦ë¼ÉÚ2èhÅäêñÙªôºÿ¿öï×–^0pÙÒÉ)¼¹êĪ +±×v–žåh£mÄî Ç6P¥Çn`|Þ@/¤÷7ºýöÿ]‡xzŠ…=#å2Våõ°·±¥Dö×–±›ÊàIվɜŠK~š¹x¦Âè n!Z?gk+°.ŒZÙ…ÅÌ=QàVO+ŠM S7‹[<*äp:o] £ +­rEË®B×éF¢°‚p§èBVÝË+.õç&0Š%f¦\U2w¡¥¥ÀaSbr1ûùÃ~,O¦×ä'üóa?ÐÆ““o¨*Œ½ïÆDí>¬q`YŽˆ$2»'1úaµBŽSK ÑÂf‰LûFú`q£Ê,ç=³zuÈ.?¥ù̪ûKS]f ®êAri゘8†Ëüo~À‰q¨æÌ(42 ÂIupHNë;Ÿ{ "CÀUfrÕŽW?Î@õ-ÎܺÂ5ÈÜcr€p5G TÜ»òÄ(h;¼=̬øÛp@¨jQÊ,1ó_Ãÿ „KÏeèø.Š„XÂQDÿèa»á(ý RÁñ&¨µ§ ™’â“.±¯Žÿúxáb•»#{æ}oÛÌVoòë˜qàVÌŠ³6 2„&›Ëš…ÈS€¼ÒÉ_' oàËŸ9 >7Ëú¤Þ`=e¿·PÿΪÏÀm +úó´ròÀ:SâPÙùd9üÐT  $ðª"ºîp~ã²øOäô‘rª¹*X:‰mìôZrvtðg§l•T× ‰é"g*NÆñ7–×ù› F‘›NÈ6ú†6Sà8­6ZÕbbV²{W”—ý4]Â]?'‚´NB?š'¹Úw¤Íní‡UÆ®/Ù)Ú]àÉdIgÈÅk<Ôû$ÙyFPã{† +×µ¶S4þK\Ën²rY?á »–"d©Pù‘™þ°f¡JÎ…¸æ-0GåãH†s%ˆ§Ç’g#ÄMÜxJ%¸Ò;ð«º:Çìú³ÕüŸYà ãKP¼«yÏŒo Ì+Òñ¨á|Í:›ˆûƒ=)y”Œ'¨¯ˆ« Õ +×F^™Ácñ|ˆ”ò•ª¹}Ípúôöˆ8& ¬ŒÌW˜ºH¾Àô-JwB`­§ÑiúØ}ñ&nx +aë†OT7ŒÇ°'ªLÃŽ>»€\€¹œHõÂû…[.ÖÚ8Å/‚jíÝWbâé–âzôz-»‹Ÿ±­ò8ú2e¡ïÚ°ª‹‰ õµ±}™HEFÞ¾"RýôóԔͺٕ"÷omÉ&¿lhÀÞ¥Êõ‘ÍíÇNï¿*¡ÛjÍ•¬±Û§7å,‘’ õîw½¡›D/ýdÙ߃±…5 ‰;7ꘛFZi€Í¾Ž‰ŠyâÑÙF¹–îG&8lª›m%s²ÆåÒ«¼Å×£â¤AëSàLÃU©TÅy¢ßÛWÁíV][n¡ËOxw¨NIq‚MB‡ò{ÊW×M]‹Õ‰Ç±—aÜJJàŒšq…‡‹^! çº + +ɜۥÂò,Ì3JƃpÐs3êòÿîï` xѱ^¦™ï4(CÈdÒu‹Xóå™®Ñè~~½;4òÖ%Ê[kAÀÌ…Ý3«ó„»rO¥.d2ðìf·_X¶‹­Ÿ²º óðòÞîsÕûjÅ\úÔγ©ÉAä„h2ºA Ãó+*ÜŒï©ä›„önµ¾âhS“ñe¨½?¯å¡¨|HÕlV ü§éÙÈÿ7rØH†¯¤?ö9K™ö¤ ¿!]³nƒnTãGÉÿO§J1³sóVŽ Ú·iä¡ m‡9ÌŸm4*JåÖo²´¿ùa ħ'º—½üà+í°„Ajb^µ?ÒST–ß¿Ca’-Ä 9G üN‡XÃ4AuðfôÈ{uu‰3q¦µ'\gD±J‘£é%qƒW‹±ýÂ/˜ýZ SÄÞöMl¹Ù"mÞ%qÝÙÝ,ÓæÊ•Êó«ÕÔ¡­jmÃn +ð(.DL,p/È9sÆx1õŒzgF€|ùûià’T ¾wÅWÒ†ÆÔõþ΄ƒoéN´û˜¾qÀ¯aZ`¿hú°ªßÑ È]›K¢@·e]Lǃ”Ú4*•æ´°µÝ ±± ¬Åv3þdóÏžÆló¸5ÚlX©×=*÷‚”±>%xß\[¡ºäí¼òÎú!„ÁâÙ (MwÓQL)‡zšP•:–P›-^þcªsâ*Úɳož.§~ረhª›\•s»± ìˆÀOÞ8š%ÈÈBql64Þ|{¬=ßM•,Њ‡íI‚üc¹°¯eŽvq +¨×8+ôÎTu⬥âH™¾V2—@à"Ÿ¨xg>i–¤Y°É1KQÝ&v¥éxðL|Ñ­„k>pÂ`ð¨!•ß3ÉÓ[ªn즻Šº6FEÁUñ‚åco}ˈÒ£a• i[•ŸWË›³j•`Döfä„$»±hÉ }Èa&D2* ¢ˆ { 2ZҚʌ){¿>¸s/]ç¥øÅ:kõ'„Yð+Ÿ˜¤ƒå\(Ý…lÔE¿Ñ>Ö›áWX¾UÒÎ{ËVƒâÛR9PÞ4ýl2¼Ýæé<‚¢ ð¯ GA>é ‘ì˸:$h†scmªiyŠ 0<Âëmº•…:Ž{CBkx±èóí¿ûŒèÏãÅ{Æ\:“ƘµIu´ÍE[~˜ÛÝç ´û!:_6P7êÿú‘Åó%¨$7Wܼ¡!8· Ε n%Fs¥?mñÅ}: F Q„-9ƒ¿Þ˜5í² 7—:÷^rñaa_ÍNÌ ©z?EZ‚¶ Ù> Ip .KÎ1Òãc«ö£«/5rð8Κ'0¦Y>Öš…Ç•Ú£P=½ä,‹þ‹úgHw§ýîp1>¦žrG~â5Ì[; ó:Ãöêæ +"Wã ý^¾Ÿž=U#Îj«EøË>ËbÄÕ þ¿ÑB=\Cðy±rr¦çæ<ï¿¥Sê+wCï*=šdg‹ˆÅ'ò—ã6ö¥m'S2•2Gˆ³ŠvÉ?ú@; ÿA‰BÕB¬‹¹E-³ðUm¯þh ݆)]U–cö–k‰KaÀÏÔŸæ¨h)廑RY[‡Â&Kîï +ÌÌì+‹¦0'º©AyÂhG˜K°9¨gDoÀ×µÂ/”†äƒ“—ë£ê×(ɤKZ|| Šž±µÝÂJ +öz'…ä]fOnúŒrŒ4â#ãO»®’ÏŸÚ g Ýìr¨&²#ã<9¹>& ΗaGh¨ÄøÁ.eÿ^vùsUw§¬µ¾$£yQowȸx“¼e9á‹KWwëJNw5ÿuaÑÕáƒbs݃â‘5Æ&¯>8lXÿHC,C Ùm“JëÃìçÍ€…ºác%Ÿ†húuý 3#Yª×\Ë~§MD§¨&Áò?yÆý¯änpS8˜håñm¯êQåì }£[«y-ÕþZä~½›—)LUÆd]Nb¶¿»m•Ù£¥®…âg[ýŸKÅp-€·~7Ñ°Jðïδ²Ž™‡Û5ߌ×í­×«—rçxP1Z‰i¼§Ûš!/ÁEqÖt¸b€Ì–VT1POœº>mºÆÄ´Q9³»-iŽU”óθ•^§×åjöHï¸Ó‹»YÍ'_¨—ÝQvS©ëMtŸXlùý¦CäÀ¬ÍŒQ¨ðxb¥£õŒmãØyÄK;?îø-X›ÇmªÍUAžÛ®Ë@ÎêÁ¡Û©Ô¤ž®Nˆi€C½!¡“ÂBU^@ +³‹Úò"Ø©àaE0²aâ*›£:ŒÈ€³–Ö榶‘Q”b¾ÑfK5¹ÐûëûÁöñ~ÈÒÃÕÔoá[ñÏŽ§9(àIàëæòòG¤¼¿0Á•ugÿ/Š ±ß:xÄÂbB«D2Ôþ›z ö²p£7¾±H!þ"Ó@èmÔàPeCS±òY8@æNK»Üïø +_+û×]F´ß\g¡=Òí™F)㑲PŽ¥›Vu +Gk‹Ð±×Ôÿžólñ3áåw¢zŸØK…óv)tÐ Âì@:ª‹àqÓyOÍà Ë"+`ÿß%–tõCNûxWk9ë3ž±ÅBBoŽb•ð“¯‚®%B¨×œÒ1^"¨ma|L1ÉuwzQÖ½àÍ…p÷r¤)ÅIn™dÌj éô„¤çýC¢ endstream endobj -1564 0 obj << +1576 0 obj << /Type /FontDescriptor -/FontName /ESTTHA+CMBX10 +/FontName /GLQIZN+CMBX10 /Flags 4 /FontBBox [-301 -250 1164 946] /Ascent 694 @@ -19074,10 +19158,10 @@ endobj /ItalicAngle 0 /StemV 114 /XHeight 444 -/CharSet (/A/B/C/D/E/F/G/H/I/J/L/M/N/O/P/R/S/T/U/V/Z/a/b/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/h/i/j/k/l/m/n/nine/o/one/p/period/q/question/quoteright/r/s/seven/six/t/three/two/u/v/w/x/y/z/zero) -/FontFile 1563 0 R +/CharSet (/A/B/C/D/E/F/G/H/I/J/L/M/N/O/P/R/S/T/U/V/Z/a/b/c/colon/comma/d/e/eight/emdash/endash/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/period/q/question/quoteright/r/s/seven/six/t/three/two/u/v/w/x/y/z/zero) +/FontFile 1575 0 R >> endobj -1565 0 obj << +1577 0 obj << /Length1 1734 /Length2 10564 /Length3 0 @@ -19207,7 +19291,7 @@ BO ­Œ$*Jü1õ‘J{Y^>y†ˆKÃ=ÿb>'¿M¾9Ì|6ðÊN¤ã®ýµì%ÍíWœýÀSù5´öL6Œ_<ûTgÊM3€ìuÆÍ,€\\Co #Ž§Ñ£Gû&òä!=D×*…0DWÙÇÙÏ)@4[ÃZIz1°‹Ö˜y©‹ÄþeRaµi=˜£( Ÿ~7aÙ„¬Üæ<¢ÞÓfë@ÇJ†,˜ì^3Ç«\`D•¦€Úþ²-@ÎÒ‡)e]R³•YÖË&–½ÐÞIÆŒ½OW,aëh俯Ԯb:âôºá÷b€ðHU65uC(½"ÂmÙKxz·˜²›èMtì¯xpÙ§èlª‘¹\€7”S9žcŠ¬juðÀXlØ\‰|f6ƒxD6WYèKr±c]ûŒþ‘)êò Ž÷@Ojñß?цnšiªûJÑ:ˆ{{ž5{b° endstream endobj -1566 0 obj << +1578 0 obj << /Type /FontDescriptor /FontName /GBHFLB+CMBX12 /Flags 4 @@ -19219,9 +19303,9 @@ endobj /StemV 109 /XHeight 444 /CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/a/b/c/d/e/eight/emdash/endash/f/fi/five/four/g/h/hyphen/i/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/quoteright/r/s/seven/six/t/three/two/u/v/w/x/y/z/zero) -/FontFile 1565 0 R +/FontFile 1577 0 R >> endobj -1567 0 obj << +1579 0 obj << /Length1 1397 /Length2 9610 /Length3 0 @@ -19328,7 +19412,7 @@ gR ~Š š¹Çüž±×\xÑò<Êýo’[-¯$›LÁ]0. óäájÍÃ0˜KF‚^ú[@] /ßÛÁs9,@\ªf8š3(ŠöˆÊQ•œzQ{§X Ò– Œ{ý3GŽIñòSv»ëL…¬ ^«yR6P^1Xu3ÜBl}#›¶8¦®Gw-cd½üœö8™§´6˜‰!ã´Ýh²¶èÃòêãþ 4 ¶nÖßNu»[šÑc­#•{sTÈ\kð»~¤IÊ×®7-òOhW»¥ @Ò[Ê*$Pã7T1 endstream endobj -1568 0 obj << +1580 0 obj << /Type /FontDescriptor /FontName /XOPWSZ+CMMI10 /Flags 4 @@ -19340,9 +19424,9 @@ endobj /StemV 72 /XHeight 431 /CharSet (/A/C/D/G/I/L/N/O/P/Q/T/U/X/a/alpha/b/beta/c/comma/d/e/f/g/greater/h/i/j/k/l/less/m/n/o/p/period/r/s/t/u/v/w/x/y/z) -/FontFile 1567 0 R +/FontFile 1579 0 R >> endobj -1569 0 obj << +1581 0 obj << /Length1 745 /Length2 1242 /Length3 0 @@ -19380,7 +19464,7 @@ currentfile eexec ñPŠ?–_ %œD3´)‚/Å‘ˆdL£sw(wÞ&Mʺ™E¿Ât æ7â8k¬aò;BFåŸD¦(ÐéJø endstream endobj -1570 0 obj << +1582 0 obj << /Type /FontDescriptor /FontName /RVPZIX+CMMI5 /Flags 4 @@ -19392,9 +19476,9 @@ endobj /StemV 90 /XHeight 431 /CharSet (/i) -/FontFile 1569 0 R +/FontFile 1581 0 R >> endobj -1571 0 obj << +1583 0 obj << /Length1 878 /Length2 3214 /Length3 0 @@ -19442,7 +19526,7 @@ H ­š¤þ.6aÄ÷ÊwØÐ\p'N/ ‹ÀoXüzFk%IÛo‡³êÚi‚Kƒ²\ìÞ23ÌéS[§“ðxGÇ;·°53˜Ê6„Nhb3u…NƒeçwÕ&ÂIÃ*ê¸Ñk±¼¨gFîš#åLkÿ4.ÕÒ…[_bY ¾øa Ú ÿ“Iö{ÊÀªD×Ö,=Á;‘o+x ‹*°SßÏ‘(OǶzÝÉú¬bLçàè_¨§•¸Ž9ú‡ü÷ÖNŸ'FÀ]$7éØñòjQèk­£"œP Ì endstream endobj -1572 0 obj << +1584 0 obj << /Type /FontDescriptor /FontName /ZUYGVH+CMMI7 /Flags 4 @@ -19454,9 +19538,9 @@ endobj /StemV 81 /XHeight 431 /CharSet (/H/I/T/a/comma/i/j/k/m/n) -/FontFile 1571 0 R +/FontFile 1583 0 R >> endobj -1573 0 obj << +1585 0 obj << /Length1 2026 /Length2 14861 /Length3 0 @@ -19636,7 +19720,7 @@ z ›àã™üÿÀPŒáà•Ï€$y_É°¾a9›3“P_*Uþý“‹Ë3ï\(Ó‰Å)_0)ÄbÂãP*Qv¾×%–ޑ祫Ûù>ÍTAO˸UL`¯£'jìò¤Þ=ˆØ eðS)•Æ®¿îu*ïÎ-ô£ì•]2—æk0[] endstream endobj -1574 0 obj << +1586 0 obj << /Type /FontDescriptor /FontName /KYXPCE+CMR10 /Flags 4 @@ -19648,9 +19732,9 @@ endobj /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/a/ampersand/b/bracketleft/bracketright/c/colon/comma/d/e/eight/endash/equal/f/ff/ffi/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 1573 0 R +/FontFile 1585 0 R >> endobj -1575 0 obj << +1587 0 obj << /Length1 769 /Length2 1408 /Length3 0 @@ -19692,7 +19776,7 @@ currentfile eexec µ)&ï¹ó)/@^Ð⵸PY.¾ê—(û½#´±SáRdíúmBq-‡_'ÈI-tñø‚¡ „/÷OþL»™Kô÷6§C€w\³v#ܶ>ì"L‹“+†ò¿ÜÓüà•Â½”þa+‹YEoÎ endstream endobj -1576 0 obj << +1588 0 obj << /Type /FontDescriptor /FontName /YPSQTS+CMR6 /Flags 4 @@ -19704,9 +19788,9 @@ endobj /StemV 83 /XHeight 431 /CharSet (/one/three/two) -/FontFile 1575 0 R +/FontFile 1587 0 R >> endobj -1577 0 obj << +1589 0 obj << /Length1 787 /Length2 1497 /Length3 0 @@ -19750,7 +19834,7 @@ _2 ¡b›x}‰èË÷…¹Òºz’™­ºs7'þõ¸­)Æãõ8-X“ûTåG`û‡9?óPíe•úã“:– “^­‘3¶›‚~§ÍhécîxbkÜå1!o^ëå™KÙWk«ìi7ݱ‚=3OÿÕá£ßø äô¼|ó endstream endobj -1578 0 obj << +1590 0 obj << /Type /FontDescriptor /FontName /EWABFK+CMR7 /Flags 4 @@ -19762,9 +19846,9 @@ endobj /StemV 79 /XHeight 431 /CharSet (/colon/one/three/two) -/FontFile 1577 0 R +/FontFile 1589 0 R >> endobj -1579 0 obj << +1591 0 obj << /Length1 1462 /Length2 8120 /Length3 0 @@ -19873,7 +19957,7 @@ j ë4×éùïwš4“n½]{­ŽÂô§–sú,r/Lˤ/ÝS.$Vܤ˜¶i¼+±WJv契Ž´*ö9Ã6\éu>£ÀtGÁ”Ûý¿Ò'3 (ªh[æ‚ð˜ÅWÿžu º×:=»´bA¦‡àB涌ÂMÄða§Ýw’rº“ºÏÛ–¥,Ë¿OÝS2 ?3w·;§Â/nÊJ0Rã}CpÒSé^™:Ò¶Õzâê3Ì|8¦Võg¾Ã¡µ`Æ~ä17Æ[|~9dy_*z€UIJ@ö®{t”¤åØVKƒÒ;S¯ˆÿ±’m¤£¥‰Hçî³¼ –$úX`ÝWçªÂúôÔ>Œ—:þ8ùæ÷¿³ÁE4•¾Ÿ¼3 w¼>0—Mñoƒ›vºÒL–xy÷rbQ¡ƒUˆ0_tœ¹ºu™'Iá^mÇÉ]*äÉÊ—:¬Ý\ ÛÝxK»gD÷«Ù³Õ=I8­ŠºÒ-œvx`%QÓ¢8ê™ÍEºïê+@eXnž"V¶¼ðæÅ"Ƀe‚¿Sñ:®wS%d›9Ñž#Ä`ž˜íÔ’Õ²ˆð¬ËmûMBeäPnpbÜ“^mäïbÅÃK0¾m1÷R\&òÄe{b"ŒŒW{u“ˆ)W2x cšµ9è¡|課#ᎹºJš¾ì—H1ÒTÚ³v®n-F `¢Çî5*…¨¸G™1–¯}YûŠª¹ª•ÛÚωà?ñõ‚dUfÒ o.nÔIƒ”fDg¬ðŒ/'@Tîø|Ú>1ÐØø£éU.Byþ.‘Ʀ¸25mª¹<Ês Ò—OËÇP œ®Ì÷·bM×v¬mšö¿ý²e…ö;ã{'½ì>Œ;×sáyâlµ’ØÀf9k Ƕz<È#Ž ý¤ËSðž>"zµQµ’N<)W”°ni}À;žá½!“@æe¬Þâ± šÃW&è‚=ù»ä÷óFÝÎXËÙå²Í1.8.†ˆvi˜äƒ. &×SÓ¬Ú74ÀÕRP¹ú´QC‹îNjÁ8Òq½ïàákYDå¢X4Ö±Htç7€ Azd5ZŒ†ã¿¾¹çÓ)05—ØN$HÑé=R§K+‚²h`Pèù†T¿3Œ®'/(#ž+UŠ5¤A³Î-¢ŒT endstream endobj -1580 0 obj << +1592 0 obj << /Type /FontDescriptor /FontName /TDRORS+CMR8 /Flags 4 @@ -19885,9 +19969,9 @@ endobj /StemV 76 /XHeight 431 /CharSet (/B/G/I/L/O/P/T/X/a/b/c/comma/d/e/eight/f/five/four/g/h/hyphen/i/l/m/n/nine/o/one/p/parenleft/parenright/period/q/r/s/seven/six/slash/t/three/two/u/v/w/x/y/zero) -/FontFile 1579 0 R +/FontFile 1591 0 R >> endobj -1581 0 obj << +1593 0 obj << /Length1 1125 /Length2 4765 /Length3 0 @@ -19976,7 +20060,7 @@ _ Ð*B¾ŠF™šcpB¬„©žò D…ÆýÄÃøÁ> endobj -1583 0 obj << +1595 0 obj << /Length1 1050 /Length2 2900 /Length3 0 @@ -20057,7 +20141,7 @@ R c’$”݈9`l¶|‰2*2Nú´u4œýÕâôv=¤rl³MÌp+§’…¶5ô†ÔÀµ‡™iu1Y@ãœ1[;îLE›êGÓa]:œ”Ó³öã_‰Uš¨–‘Îo#¿ÞÅÌ!|NWüÚè endstream endobj -1584 0 obj << +1596 0 obj << /Type /FontDescriptor /FontName /IMOIOS+CMSY10 /Flags 4 @@ -20069,9 +20153,9 @@ endobj /StemV 85 /XHeight 431 /CharSet (/B/H/I/arrowleft/bar/bardbl/braceleft/braceright/bullet/element/greaterequal/lessequal/minus/negationslash/radical/section) -/FontFile 1583 0 R +/FontFile 1595 0 R >> endobj -1585 0 obj << +1597 0 obj << /Length1 766 /Length2 759 /Length3 0 @@ -20109,7 +20193,7 @@ h aaT'/D…/¦v2_ÅIô÷*’XÆé¼VMäGoÆéjeÃï÷‚x"¡‘<Õ©O=}µL¾8QWÃYΞ^L„רFHyü˜ÈB9Ê2Îo¯G¥¾bv0„òÆ… 4…Fv1wz MrÀs1§‡zå; r‘*)!´î Ý·Š´ÿÝÔÕVåÕG•8 z±» Ó(O»û+¸iruþdtîOª=eb®|˜Œ‘Ô¤c<…=>òƒ?†!ÒêuóÿG\ïD3/dÈZ2)#Yboµ£˜B§cn“d¿lXë0 ]Ò%ÉMEÚmu`ò©bNßʾ”ËL›ìsë7§F„“qò¿'Z¿TÇ©c9$À ÑPâü<”»ÏÚ endstream endobj -1586 0 obj << +1598 0 obj << /Type /FontDescriptor /FontName /XNLILI+CMSY7 /Flags 4 @@ -20121,9 +20205,9 @@ endobj /StemV 93 /XHeight 431 /CharSet (/infinity/minus) -/FontFile 1585 0 R +/FontFile 1597 0 R >> endobj -1587 0 obj << +1599 0 obj << /Length1 1572 /Length2 12132 /Length3 0 @@ -20270,7 +20354,7 @@ fi ƒ­Öc@^ÕÝË´rF_¯ŒX"1ÁÖbvßÁŠÀšûòÅ5þŽÎ˜Ž×þpŒÚš5ã0²'ºÞ” ÛJ§­¦ i÷ïI•€LU·+K¹ïø,xæ㤱„‰2Dwé†îÆ®7d-ÿ΀Ðê¡­Î/»€È­ÎÍËIÄÌÃ5|Ÿr¥JÍã3ú‰Ï& endstream endobj -1588 0 obj << +1600 0 obj << /Type /FontDescriptor /FontName /HBJLDT+CMTI10 /Flags 4 @@ -20282,9 +20366,9 @@ endobj /StemV 68 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/I/L/M/N/O/P/R/S/T/U/V/a/b/c/colon/d/e/f/ff/fi/five/g/h/hyphen/i/j/l/m/n/nine/o/one/p/period/q/quoteright/r/s/slash/t/three/two/u/v/w/x/y/zero) -/FontFile 1587 0 R +/FontFile 1599 0 R >> endobj -1589 0 obj << +1601 0 obj << /Length1 1067 /Length2 5106 /Length3 0 @@ -20359,7 +20443,7 @@ Hn4*/ éÆ 'dŠÿDZ@Oëÿ{Ll§æR%M…]> endobj -1591 0 obj << +1603 0 obj << /Length1 1849 /Length2 11542 /Length3 0 @@ -20526,7 +20610,7 @@ Lr~j S“JУt0jºB–¢7å7Ð[=©)ŒZPRŠ¬ ‰•šâ ìùôée\ás° "̺Ùô~\oªÂÈ1É] ,Ø(WÁèT¢ë$¢æ=+Z|GËÒÉÿ ‹¸ÕÙž=٣Ȕ)Šûs‹9@™ÄÁ¿ ç£SÈ.ÃoUSl›Ÿt—<œì¼'棓`ÈÈð.Õ}ÑYCϦ <%ÔK\3/œ;“鹟“*ÍHÕ¦­ƒ{{´$$_gm$Jv‘xasHäÑ`…SºHo‹ß²BLó‰ÊVÑÅ´Œ ü}㣟ÀºO/Xÿ“RPEÃïúðï­|1XïH'˜Y”€b²áIŽh1†Ž*iòš®Ÿµ× CÙ„¼×S…<ŒnCM+dL‰*¼·Û¶)ôhï.³í©*zuv¼ü!ŠQÈ®zxTÿ‡þá+"€=,®>ŽÑW\=ê£+÷*ã.WFogö(Ì姎+Ž‰Ë´ÍÀðªvvp΀›3Åós˜*!vBfýïdV,è¸/œSålJ¾î9‹tO%­ØJ×%`š:µ/R)²Wä^y$AϬLFÛX ŠD¸+þésj»qÒ¥”4h<ÕÇ%‡ü?ÙŠtX׌_ßn}{}”ÙÅEšF%–„U'3ê¿=µP„‚ý½¤¥8É:J u)âÖ‹4Û[n2–¨ŸL®tÏྴÖFTÌG[×Ñ#˜ïïÄV„«ìŒƒ†8M\ÊlôZ[ó.Pº¦û;ªbþ_Ù›Ä4Tzüv¨|4ò‘ÌèýNß+Bb¿XK¨v‘–[ÅâÁÿOñõk³xö¬eå«ÀU\bžã¸>}êšÎÈJ5S˜ÃÃIAÂõuâ¼þ'sieFµ·?iÐ3whöl´¼œÔ˜îÉñ:—²˜IÎQ|Ï2? @•–ÏËS¹Cu›â>ÎaŒóßÀÅ=cžÈák3BÑ;Ôb endstream endobj -1592 0 obj << +1604 0 obj << /Type /FontDescriptor /FontName /BGSLBR+CMTT10 /Flags 4 @@ -20538,9 +20622,9 @@ endobj /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/E/F/I/K/L/M/N/O/P/R/S/T/U/W/Y/a/ampersand/asciitilde/asterisk/b/backslash/bracketleft/bracketright/c/colon/comma/d/e/equal/f/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 1591 0 R +/FontFile 1603 0 R >> endobj -1593 0 obj << +1605 0 obj << /Length1 1273 /Length2 5434 /Length3 0 @@ -20621,7 +20705,7 @@ F wÀcÜYþÈ;'!‡\ôqÌ/æF'¨÷¯™¸dÏî²<‚>Ó üê !“ÂZ'K¶WF-üGÓŸ˜awö=Cv'…àôbîåÒ QÉçÚ÷ôÐv9ƒ’a||RM°l,ÏßHf¼ì% }Ë~s ûÀíÁ÷‚‘ÕgxÅ@ üÑÂÿçY;E •$Ĭ¢åù4z.r°¬•8‹z‰eԌˀ_Bò;‡ ,q-ýÜˤÀô€|Pþ±ý„7¶¢ñö½s—K„ë„Nᣨ­ó]U¼½boÝš¥AöI%!3B-3FhŸÌ©¾°÷émõ%`>“p×v2 jì<ê£&vý†šLÌÓ(P µ|°i5‘*E’Sbà ô [" :4ØEèë¾@ê»zm´ÝO°8P¹Ê"òàAÅù«¤‘ºòŸ¸à£JCfäf endstream endobj -1594 0 obj << +1606 0 obj << /Type /FontDescriptor /FontName /PWOHSV+CMTT9 /Flags 4 @@ -20633,1112 +20717,1120 @@ endobj /StemV 74 /XHeight 431 /CharSet (/T/a/b/c/colon/comma/d/e/equal/f/g/h/i/l/m/n/nine/o/one/p/parenleft/parenright/period/q/quoteright/r/s/t/two/u/underscore/x/y/z) -/FontFile 1593 0 R +/FontFile 1605 0 R >> endobj -477 0 obj << +481 0 obj << /Type /Font /Subtype /Type1 -/BaseFont /ESTTHA+CMBX10 -/FontDescriptor 1564 0 R +/BaseFont /GLQIZN+CMBX10 +/FontDescriptor 1576 0 R /FirstChar 12 /LastChar 124 -/Widths 1560 0 R +/Widths 1572 0 R >> endobj -475 0 obj << +479 0 obj << /Type /Font /Subtype /Type1 /BaseFont /GBHFLB+CMBX12 -/FontDescriptor 1566 0 R +/FontDescriptor 1578 0 R /FirstChar 12 /LastChar 124 -/Widths 1562 0 R +/Widths 1574 0 R >> endobj -649 0 obj << +654 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XOPWSZ+CMMI10 -/FontDescriptor 1568 0 R +/FontDescriptor 1580 0 R /FirstChar 11 /LastChar 122 -/Widths 1557 0 R +/Widths 1569 0 R >> endobj -697 0 obj << +702 0 obj << /Type /Font /Subtype /Type1 /BaseFont /RVPZIX+CMMI5 -/FontDescriptor 1570 0 R +/FontDescriptor 1582 0 R /FirstChar 105 /LastChar 105 -/Widths 1550 0 R +/Widths 1562 0 R >> endobj -666 0 obj << +671 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ZUYGVH+CMMI7 -/FontDescriptor 1572 0 R +/FontDescriptor 1584 0 R /FirstChar 59 /LastChar 110 -/Widths 1554 0 R +/Widths 1566 0 R >> endobj -478 0 obj << +482 0 obj << /Type /Font /Subtype /Type1 /BaseFont /KYXPCE+CMR10 -/FontDescriptor 1574 0 R +/FontDescriptor 1586 0 R /FirstChar 11 /LastChar 123 -/Widths 1559 0 R +/Widths 1571 0 R >> endobj -668 0 obj << +673 0 obj << /Type /Font /Subtype /Type1 /BaseFont /YPSQTS+CMR6 -/FontDescriptor 1576 0 R +/FontDescriptor 1588 0 R /FirstChar 49 /LastChar 51 -/Widths 1552 0 R +/Widths 1564 0 R >> endobj -665 0 obj << +670 0 obj << /Type /Font /Subtype /Type1 /BaseFont /EWABFK+CMR7 -/FontDescriptor 1578 0 R +/FontDescriptor 1590 0 R /FirstChar 49 /LastChar 58 -/Widths 1555 0 R +/Widths 1567 0 R >> endobj -670 0 obj << +675 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TDRORS+CMR8 -/FontDescriptor 1580 0 R +/FontDescriptor 1592 0 R /FirstChar 40 /LastChar 121 -/Widths 1551 0 R +/Widths 1563 0 R >> endobj -1016 0 obj << +1028 0 obj << /Type /Font /Subtype /Type1 /BaseFont /HLSVSX+CMR9 -/FontDescriptor 1582 0 R +/FontDescriptor 1594 0 R /FirstChar 40 /LastChar 115 -/Widths 1547 0 R +/Widths 1559 0 R >> endobj -667 0 obj << +672 0 obj << /Type /Font /Subtype /Type1 /BaseFont /IMOIOS+CMSY10 -/FontDescriptor 1584 0 R +/FontDescriptor 1596 0 R /FirstChar 0 /LastChar 120 -/Widths 1553 0 R +/Widths 1565 0 R >> endobj -934 0 obj << +946 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XNLILI+CMSY7 -/FontDescriptor 1586 0 R +/FontDescriptor 1598 0 R /FirstChar 0 /LastChar 49 -/Widths 1548 0 R +/Widths 1560 0 R >> endobj -629 0 obj << +634 0 obj << /Type /Font /Subtype /Type1 /BaseFont /HBJLDT+CMTI10 -/FontDescriptor 1588 0 R +/FontDescriptor 1600 0 R /FirstChar 11 /LastChar 121 -/Widths 1558 0 R +/Widths 1570 0 R >> endobj -476 0 obj << +480 0 obj << /Type /Font /Subtype /Type1 /BaseFont /OZJPZO+CMTI12 -/FontDescriptor 1590 0 R +/FontDescriptor 1602 0 R /FirstChar 65 /LastChar 121 -/Widths 1561 0 R +/Widths 1573 0 R >> endobj -664 0 obj << +669 0 obj << /Type /Font /Subtype /Type1 /BaseFont /BGSLBR+CMTT10 -/FontDescriptor 1592 0 R +/FontDescriptor 1604 0 R /FirstChar 37 /LastChar 126 -/Widths 1556 0 R +/Widths 1568 0 R >> endobj -813 0 obj << +825 0 obj << /Type /Font /Subtype /Type1 /BaseFont /PWOHSV+CMTT9 -/FontDescriptor 1594 0 R +/FontDescriptor 1606 0 R /FirstChar 39 /LastChar 122 -/Widths 1549 0 R +/Widths 1561 0 R >> endobj -479 0 obj << +483 0 obj << /Type /Pages /Count 6 -/Parent 1595 0 R -/Kids [470 0 R 481 0 R 531 0 R 583 0 R 609 0 R 613 0 R] +/Parent 1607 0 R +/Kids [474 0 R 485 0 R 535 0 R 587 0 R 614 0 R 618 0 R] >> endobj -630 0 obj << +635 0 obj << /Type /Pages /Count 6 -/Parent 1595 0 R -/Kids [627 0 R 647 0 R 661 0 R 677 0 R 690 0 R 694 0 R] +/Parent 1607 0 R +/Kids [632 0 R 652 0 R 666 0 R 682 0 R 695 0 R 699 0 R] >> endobj -723 0 obj << +729 0 obj << /Type /Pages /Count 6 -/Parent 1595 0 R -/Kids [707 0 R 725 0 R 730 0 R 736 0 R 748 0 R 760 0 R] +/Parent 1607 0 R +/Kids [713 0 R 731 0 R 742 0 R 748 0 R 760 0 R 772 0 R] >> endobj -767 0 obj << +779 0 obj << /Type /Pages /Count 6 -/Parent 1595 0 R -/Kids [764 0 R 772 0 R 780 0 R 784 0 R 789 0 R 795 0 R] +/Parent 1607 0 R +/Kids [776 0 R 784 0 R 792 0 R 796 0 R 801 0 R 807 0 R] >> endobj -807 0 obj << +819 0 obj << /Type /Pages /Count 6 -/Parent 1595 0 R -/Kids [803 0 R 809 0 R 816 0 R 827 0 R 834 0 R 844 0 R] +/Parent 1607 0 R +/Kids [815 0 R 821 0 R 828 0 R 839 0 R 846 0 R 856 0 R] >> endobj -852 0 obj << +864 0 obj << /Type /Pages /Count 6 -/Parent 1595 0 R -/Kids [849 0 R 860 0 R 865 0 R 872 0 R 880 0 R 888 0 R] +/Parent 1607 0 R +/Kids [861 0 R 872 0 R 877 0 R 884 0 R 892 0 R 900 0 R] >> endobj -900 0 obj << +912 0 obj << /Type /Pages /Count 6 -/Parent 1596 0 R -/Kids [896 0 R 902 0 R 909 0 R 917 0 R 924 0 R 931 0 R] +/Parent 1608 0 R +/Kids [908 0 R 914 0 R 921 0 R 929 0 R 936 0 R 943 0 R] >> endobj -949 0 obj << +961 0 obj << /Type /Pages /Count 6 -/Parent 1596 0 R -/Kids [942 0 R 958 0 R 964 0 R 975 0 R 981 0 R 986 0 R] +/Parent 1608 0 R +/Kids [954 0 R 970 0 R 976 0 R 987 0 R 993 0 R 998 0 R] >> endobj -998 0 obj << +1010 0 obj << /Type /Pages /Count 6 -/Parent 1596 0 R -/Kids [994 0 R 1003 0 R 1013 0 R 1021 0 R 1030 0 R 1038 0 R] +/Parent 1608 0 R +/Kids [1006 0 R 1015 0 R 1025 0 R 1033 0 R 1042 0 R 1050 0 R] >> endobj -1045 0 obj << +1057 0 obj << /Type /Pages /Count 6 -/Parent 1596 0 R -/Kids [1042 0 R 1055 0 R 1060 0 R 1066 0 R 1071 0 R 1075 0 R] +/Parent 1608 0 R +/Kids [1054 0 R 1067 0 R 1072 0 R 1078 0 R 1083 0 R 1087 0 R] >> endobj -1084 0 obj << +1096 0 obj << /Type /Pages /Count 6 -/Parent 1596 0 R -/Kids [1080 0 R 1086 0 R 1092 0 R 1101 0 R 1108 0 R 1114 0 R] +/Parent 1608 0 R +/Kids [1092 0 R 1098 0 R 1104 0 R 1113 0 R 1120 0 R 1126 0 R] >> endobj -1124 0 obj << +1136 0 obj << /Type /Pages /Count 6 -/Parent 1596 0 R -/Kids [1121 0 R 1127 0 R 1133 0 R 1137 0 R 1145 0 R 1155 0 R] +/Parent 1608 0 R +/Kids [1133 0 R 1139 0 R 1145 0 R 1149 0 R 1157 0 R 1167 0 R] >> endobj -1168 0 obj << +1180 0 obj << /Type /Pages /Count 6 -/Parent 1597 0 R -/Kids [1159 0 R 1172 0 R 1176 0 R 1188 0 R 1194 0 R 1201 0 R] +/Parent 1609 0 R +/Kids [1171 0 R 1184 0 R 1188 0 R 1200 0 R 1206 0 R 1213 0 R] >> endobj -1210 0 obj << +1222 0 obj << /Type /Pages /Count 6 -/Parent 1597 0 R -/Kids [1207 0 R 1212 0 R 1221 0 R 1227 0 R 1231 0 R 1236 0 R] +/Parent 1609 0 R +/Kids [1219 0 R 1224 0 R 1233 0 R 1239 0 R 1243 0 R 1248 0 R] >> endobj -1245 0 obj << +1257 0 obj << /Type /Pages /Count 6 -/Parent 1597 0 R -/Kids [1240 0 R 1248 0 R 1253 0 R 1259 0 R 1265 0 R 1271 0 R] +/Parent 1609 0 R +/Kids [1252 0 R 1260 0 R 1265 0 R 1271 0 R 1277 0 R 1283 0 R] >> endobj -1282 0 obj << +1294 0 obj << /Type /Pages /Count 6 -/Parent 1597 0 R -/Kids [1277 0 R 1285 0 R 1292 0 R 1296 0 R 1306 0 R 1310 0 R] +/Parent 1609 0 R +/Kids [1289 0 R 1297 0 R 1304 0 R 1308 0 R 1318 0 R 1322 0 R] >> endobj -1326 0 obj << +1338 0 obj << /Type /Pages /Count 6 -/Parent 1597 0 R -/Kids [1314 0 R 1328 0 R 1332 0 R 1338 0 R 1344 0 R 1351 0 R] +/Parent 1609 0 R +/Kids [1326 0 R 1340 0 R 1344 0 R 1350 0 R 1356 0 R 1363 0 R] >> endobj -1358 0 obj << +1370 0 obj << /Type /Pages /Count 6 -/Parent 1597 0 R -/Kids [1355 0 R 1360 0 R 1364 0 R 1368 0 R 1372 0 R 1376 0 R] +/Parent 1609 0 R +/Kids [1367 0 R 1372 0 R 1376 0 R 1380 0 R 1384 0 R 1388 0 R] >> endobj -1387 0 obj << +1399 0 obj << /Type /Pages /Count 6 -/Parent 1598 0 R -/Kids [1382 0 R 1389 0 R 1395 0 R 1401 0 R 1407 0 R 1412 0 R] +/Parent 1610 0 R +/Kids [1394 0 R 1401 0 R 1407 0 R 1413 0 R 1419 0 R 1424 0 R] >> endobj -1422 0 obj << +1434 0 obj << /Type /Pages /Count 6 -/Parent 1598 0 R -/Kids [1419 0 R 1426 0 R 1430 0 R 1434 0 R 1438 0 R 1442 0 R] +/Parent 1610 0 R +/Kids [1431 0 R 1438 0 R 1442 0 R 1446 0 R 1450 0 R 1454 0 R] >> endobj -1449 0 obj << +1461 0 obj << /Type /Pages /Count 6 -/Parent 1598 0 R -/Kids [1446 0 R 1452 0 R 1457 0 R 1462 0 R 1466 0 R 1471 0 R] +/Parent 1610 0 R +/Kids [1458 0 R 1464 0 R 1469 0 R 1474 0 R 1478 0 R 1483 0 R] >> endobj -1478 0 obj << +1490 0 obj << /Type /Pages /Count 6 -/Parent 1598 0 R -/Kids [1475 0 R 1482 0 R 1491 0 R 1499 0 R 1504 0 R 1508 0 R] +/Parent 1610 0 R +/Kids [1487 0 R 1494 0 R 1503 0 R 1511 0 R 1516 0 R 1520 0 R] >> endobj -1519 0 obj << +1531 0 obj << /Type /Pages /Count 6 -/Parent 1598 0 R -/Kids [1516 0 R 1523 0 R 1527 0 R 1531 0 R 1535 0 R 1543 0 R] +/Parent 1610 0 R +/Kids [1528 0 R 1535 0 R 1539 0 R 1543 0 R 1547 0 R 1555 0 R] >> endobj -1595 0 obj << +1607 0 obj << /Type /Pages /Count 36 -/Parent 1599 0 R -/Kids [479 0 R 630 0 R 723 0 R 767 0 R 807 0 R 852 0 R] +/Parent 1611 0 R +/Kids [483 0 R 635 0 R 729 0 R 779 0 R 819 0 R 864 0 R] >> endobj -1596 0 obj << +1608 0 obj << /Type /Pages /Count 36 -/Parent 1599 0 R -/Kids [900 0 R 949 0 R 998 0 R 1045 0 R 1084 0 R 1124 0 R] +/Parent 1611 0 R +/Kids [912 0 R 961 0 R 1010 0 R 1057 0 R 1096 0 R 1136 0 R] >> endobj -1597 0 obj << +1609 0 obj << /Type /Pages /Count 36 -/Parent 1599 0 R -/Kids [1168 0 R 1210 0 R 1245 0 R 1282 0 R 1326 0 R 1358 0 R] +/Parent 1611 0 R +/Kids [1180 0 R 1222 0 R 1257 0 R 1294 0 R 1338 0 R 1370 0 R] >> endobj -1598 0 obj << +1610 0 obj << /Type /Pages /Count 30 -/Parent 1599 0 R -/Kids [1387 0 R 1422 0 R 1449 0 R 1478 0 R 1519 0 R] +/Parent 1611 0 R +/Kids [1399 0 R 1434 0 R 1461 0 R 1490 0 R 1531 0 R] >> endobj -1599 0 obj << +1611 0 obj << /Type /Pages /Count 138 -/Kids [1595 0 R 1596 0 R 1597 0 R 1598 0 R] +/Kids [1607 0 R 1608 0 R 1609 0 R 1610 0 R] >> endobj -1600 0 obj << +1612 0 obj << /Type /Outlines /First 7 0 R /Last 7 0 R /Count 1 >> endobj +471 0 obj << +/Title 472 0 R +/A 469 0 R +/Parent 467 0 R +>> endobj 467 0 obj << /Title 468 0 R /A 465 0 R -/Parent 463 0 R +/Parent 7 0 R +/Prev 447 0 R +/First 471 0 R +/Last 471 0 R +/Count -1 >> endobj 463 0 obj << /Title 464 0 R /A 461 0 R -/Parent 7 0 R -/Prev 443 0 R -/First 467 0 R -/Last 467 0 R -/Count -1 +/Parent 447 0 R +/Prev 459 0 R >> endobj 459 0 obj << /Title 460 0 R /A 457 0 R -/Parent 443 0 R +/Parent 447 0 R /Prev 455 0 R +/Next 463 0 R >> endobj 455 0 obj << /Title 456 0 R /A 453 0 R -/Parent 443 0 R +/Parent 447 0 R /Prev 451 0 R /Next 459 0 R >> endobj 451 0 obj << /Title 452 0 R /A 449 0 R -/Parent 443 0 R -/Prev 447 0 R +/Parent 447 0 R /Next 455 0 R >> endobj 447 0 obj << /Title 448 0 R /A 445 0 R -/Parent 443 0 R -/Next 451 0 R +/Parent 7 0 R +/Prev 423 0 R +/Next 467 0 R +/First 451 0 R +/Last 463 0 R +/Count -4 >> endobj 443 0 obj << /Title 444 0 R /A 441 0 R -/Parent 7 0 R -/Prev 419 0 R -/Next 463 0 R -/First 447 0 R -/Last 459 0 R -/Count -4 +/Parent 427 0 R +/Prev 439 0 R >> endobj 439 0 obj << /Title 440 0 R /A 437 0 R -/Parent 423 0 R +/Parent 427 0 R /Prev 435 0 R +/Next 443 0 R >> endobj 435 0 obj << /Title 436 0 R /A 433 0 R -/Parent 423 0 R +/Parent 427 0 R /Prev 431 0 R /Next 439 0 R >> endobj 431 0 obj << /Title 432 0 R /A 429 0 R -/Parent 423 0 R -/Prev 427 0 R +/Parent 427 0 R /Next 435 0 R >> endobj 427 0 obj << /Title 428 0 R /A 425 0 R /Parent 423 0 R -/Next 431 0 R +/First 431 0 R +/Last 443 0 R +/Count -4 >> endobj 423 0 obj << /Title 424 0 R /A 421 0 R -/Parent 419 0 R +/Parent 7 0 R +/Prev 403 0 R +/Next 447 0 R /First 427 0 R -/Last 439 0 R -/Count -4 +/Last 427 0 R +/Count -1 >> endobj 419 0 obj << /Title 420 0 R /A 417 0 R -/Parent 7 0 R -/Prev 399 0 R -/Next 443 0 R -/First 423 0 R -/Last 423 0 R -/Count -1 +/Parent 403 0 R +/Prev 415 0 R >> endobj 415 0 obj << /Title 416 0 R /A 413 0 R -/Parent 399 0 R +/Parent 403 0 R /Prev 411 0 R +/Next 419 0 R >> endobj 411 0 obj << /Title 412 0 R /A 409 0 R -/Parent 399 0 R +/Parent 403 0 R /Prev 407 0 R /Next 415 0 R >> endobj 407 0 obj << /Title 408 0 R /A 405 0 R -/Parent 399 0 R -/Prev 403 0 R +/Parent 403 0 R /Next 411 0 R >> endobj 403 0 obj << /Title 404 0 R /A 401 0 R -/Parent 399 0 R -/Next 407 0 R +/Parent 7 0 R +/Prev 335 0 R +/Next 423 0 R +/First 407 0 R +/Last 419 0 R +/Count -4 >> endobj 399 0 obj << /Title 400 0 R /A 397 0 R -/Parent 7 0 R -/Prev 331 0 R -/Next 419 0 R -/First 403 0 R -/Last 415 0 R -/Count -4 +/Parent 335 0 R +/Prev 395 0 R >> endobj 395 0 obj << /Title 396 0 R /A 393 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 391 0 R +/Next 399 0 R >> endobj 391 0 obj << /Title 392 0 R /A 389 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 387 0 R /Next 395 0 R >> endobj 387 0 obj << /Title 388 0 R /A 385 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 383 0 R /Next 391 0 R >> endobj 383 0 obj << /Title 384 0 R /A 381 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 379 0 R /Next 387 0 R >> endobj 379 0 obj << /Title 380 0 R /A 377 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 375 0 R /Next 383 0 R >> endobj 375 0 obj << /Title 376 0 R /A 373 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 371 0 R /Next 379 0 R >> endobj 371 0 obj << /Title 372 0 R /A 369 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 367 0 R /Next 375 0 R >> endobj 367 0 obj << /Title 368 0 R /A 365 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 363 0 R /Next 371 0 R >> endobj 363 0 obj << /Title 364 0 R /A 361 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 359 0 R /Next 367 0 R >> endobj 359 0 obj << /Title 360 0 R /A 357 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 355 0 R /Next 363 0 R >> endobj 355 0 obj << /Title 356 0 R /A 353 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 351 0 R /Next 359 0 R >> endobj 351 0 obj << /Title 352 0 R /A 349 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 347 0 R /Next 355 0 R >> endobj 347 0 obj << /Title 348 0 R /A 345 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 343 0 R /Next 351 0 R >> endobj 343 0 obj << /Title 344 0 R /A 341 0 R -/Parent 331 0 R +/Parent 335 0 R /Prev 339 0 R /Next 347 0 R >> endobj 339 0 obj << /Title 340 0 R /A 337 0 R -/Parent 331 0 R -/Prev 335 0 R +/Parent 335 0 R /Next 343 0 R >> endobj 335 0 obj << /Title 336 0 R /A 333 0 R -/Parent 331 0 R -/Next 339 0 R +/Parent 7 0 R +/Prev 223 0 R +/Next 403 0 R +/First 339 0 R +/Last 399 0 R +/Count -16 >> endobj 331 0 obj << /Title 332 0 R /A 329 0 R -/Parent 7 0 R -/Prev 219 0 R -/Next 399 0 R -/First 335 0 R -/Last 395 0 R -/Count -16 +/Parent 223 0 R +/Prev 327 0 R >> endobj 327 0 obj << /Title 328 0 R /A 325 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 323 0 R +/Next 331 0 R >> endobj 323 0 obj << /Title 324 0 R /A 321 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 319 0 R /Next 327 0 R >> endobj 319 0 obj << /Title 320 0 R /A 317 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 315 0 R /Next 323 0 R >> endobj 315 0 obj << /Title 316 0 R /A 313 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 311 0 R /Next 319 0 R >> endobj 311 0 obj << /Title 312 0 R /A 309 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 307 0 R /Next 315 0 R >> endobj 307 0 obj << /Title 308 0 R /A 305 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 303 0 R /Next 311 0 R >> endobj 303 0 obj << /Title 304 0 R /A 301 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 299 0 R /Next 307 0 R >> endobj 299 0 obj << /Title 300 0 R /A 297 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 295 0 R /Next 303 0 R >> endobj 295 0 obj << /Title 296 0 R /A 293 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 291 0 R /Next 299 0 R >> endobj 291 0 obj << /Title 292 0 R /A 289 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 287 0 R /Next 295 0 R >> endobj 287 0 obj << /Title 288 0 R /A 285 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 283 0 R /Next 291 0 R >> endobj 283 0 obj << /Title 284 0 R /A 281 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 279 0 R /Next 287 0 R >> endobj 279 0 obj << /Title 280 0 R /A 277 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 275 0 R /Next 283 0 R >> endobj 275 0 obj << /Title 276 0 R /A 273 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 271 0 R /Next 279 0 R >> endobj 271 0 obj << /Title 272 0 R /A 269 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 267 0 R /Next 275 0 R >> endobj 267 0 obj << /Title 268 0 R /A 265 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 263 0 R /Next 271 0 R >> endobj 263 0 obj << /Title 264 0 R /A 261 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 259 0 R /Next 267 0 R >> endobj 259 0 obj << /Title 260 0 R /A 257 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 255 0 R /Next 263 0 R >> endobj 255 0 obj << /Title 256 0 R /A 253 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 251 0 R /Next 259 0 R >> endobj 251 0 obj << /Title 252 0 R /A 249 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 247 0 R /Next 255 0 R >> endobj 247 0 obj << /Title 248 0 R /A 245 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 243 0 R /Next 251 0 R >> endobj 243 0 obj << /Title 244 0 R /A 241 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 239 0 R /Next 247 0 R >> endobj 239 0 obj << /Title 240 0 R /A 237 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 235 0 R /Next 243 0 R >> endobj 235 0 obj << /Title 236 0 R /A 233 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 231 0 R /Next 239 0 R >> endobj 231 0 obj << /Title 232 0 R /A 229 0 R -/Parent 219 0 R +/Parent 223 0 R /Prev 227 0 R /Next 235 0 R >> endobj 227 0 obj << /Title 228 0 R /A 225 0 R -/Parent 219 0 R -/Prev 223 0 R +/Parent 223 0 R /Next 231 0 R >> endobj 223 0 obj << /Title 224 0 R /A 221 0 R -/Parent 219 0 R -/Next 227 0 R +/Parent 7 0 R +/Prev 203 0 R +/Next 335 0 R +/First 227 0 R +/Last 331 0 R +/Count -27 >> endobj 219 0 obj << /Title 220 0 R /A 217 0 R -/Parent 7 0 R -/Prev 199 0 R -/Next 331 0 R -/First 223 0 R -/Last 327 0 R -/Count -27 +/Parent 203 0 R +/Prev 215 0 R >> endobj 215 0 obj << /Title 216 0 R /A 213 0 R -/Parent 199 0 R +/Parent 203 0 R /Prev 211 0 R +/Next 219 0 R >> endobj 211 0 obj << /Title 212 0 R /A 209 0 R -/Parent 199 0 R +/Parent 203 0 R /Prev 207 0 R /Next 215 0 R >> endobj 207 0 obj << /Title 208 0 R /A 205 0 R -/Parent 199 0 R -/Prev 203 0 R +/Parent 203 0 R /Next 211 0 R >> endobj 203 0 obj << /Title 204 0 R /A 201 0 R -/Parent 199 0 R -/Next 207 0 R +/Parent 7 0 R +/Prev 147 0 R +/Next 223 0 R +/First 207 0 R +/Last 219 0 R +/Count -4 >> endobj 199 0 obj << /Title 200 0 R /A 197 0 R -/Parent 7 0 R -/Prev 143 0 R -/Next 219 0 R -/First 203 0 R -/Last 215 0 R -/Count -4 +/Parent 147 0 R +/Prev 195 0 R >> endobj 195 0 obj << /Title 196 0 R /A 193 0 R -/Parent 143 0 R +/Parent 147 0 R /Prev 191 0 R +/Next 199 0 R >> endobj 191 0 obj << /Title 192 0 R /A 189 0 R -/Parent 143 0 R +/Parent 147 0 R /Prev 187 0 R /Next 195 0 R >> endobj 187 0 obj << /Title 188 0 R /A 185 0 R -/Parent 143 0 R +/Parent 147 0 R /Prev 183 0 R /Next 191 0 R >> endobj 183 0 obj << /Title 184 0 R /A 181 0 R -/Parent 143 0 R +/Parent 147 0 R /Prev 179 0 R /Next 187 0 R >> endobj 179 0 obj << /Title 180 0 R /A 177 0 R -/Parent 143 0 R +/Parent 147 0 R /Prev 175 0 R /Next 183 0 R >> endobj 175 0 obj << /Title 176 0 R /A 173 0 R -/Parent 143 0 R +/Parent 147 0 R /Prev 171 0 R /Next 179 0 R >> endobj 171 0 obj << /Title 172 0 R /A 169 0 R -/Parent 143 0 R +/Parent 147 0 R /Prev 167 0 R /Next 175 0 R >> endobj 167 0 obj << /Title 168 0 R /A 165 0 R -/Parent 143 0 R +/Parent 147 0 R /Prev 163 0 R /Next 171 0 R >> endobj 163 0 obj << /Title 164 0 R /A 161 0 R -/Parent 143 0 R +/Parent 147 0 R /Prev 159 0 R /Next 167 0 R >> endobj 159 0 obj << /Title 160 0 R /A 157 0 R -/Parent 143 0 R +/Parent 147 0 R /Prev 155 0 R /Next 163 0 R >> endobj 155 0 obj << /Title 156 0 R /A 153 0 R -/Parent 143 0 R +/Parent 147 0 R /Prev 151 0 R /Next 159 0 R >> endobj 151 0 obj << /Title 152 0 R /A 149 0 R -/Parent 143 0 R -/Prev 147 0 R +/Parent 147 0 R /Next 155 0 R >> endobj 147 0 obj << /Title 148 0 R /A 145 0 R -/Parent 143 0 R -/Next 151 0 R +/Parent 7 0 R +/Prev 39 0 R +/Next 203 0 R +/First 151 0 R +/Last 199 0 R +/Count -13 >> endobj 143 0 obj << /Title 144 0 R /A 141 0 R -/Parent 7 0 R -/Prev 35 0 R -/Next 199 0 R -/First 147 0 R -/Last 195 0 R -/Count -13 +/Parent 39 0 R +/Prev 123 0 R >> endobj 139 0 obj << /Title 140 0 R /A 137 0 R -/Parent 35 0 R -/Prev 119 0 R +/Parent 123 0 R +/Prev 135 0 R >> endobj 135 0 obj << /Title 136 0 R /A 133 0 R -/Parent 119 0 R +/Parent 123 0 R /Prev 131 0 R +/Next 139 0 R >> endobj 131 0 obj << /Title 132 0 R /A 129 0 R -/Parent 119 0 R +/Parent 123 0 R /Prev 127 0 R /Next 135 0 R >> endobj 127 0 obj << /Title 128 0 R /A 125 0 R -/Parent 119 0 R -/Prev 123 0 R +/Parent 123 0 R /Next 131 0 R >> endobj 123 0 obj << /Title 124 0 R /A 121 0 R -/Parent 119 0 R -/Next 127 0 R +/Parent 39 0 R +/Prev 83 0 R +/Next 143 0 R +/First 127 0 R +/Last 139 0 R +/Count -4 >> endobj 119 0 obj << /Title 120 0 R /A 117 0 R -/Parent 35 0 R -/Prev 79 0 R -/Next 139 0 R -/First 123 0 R -/Last 135 0 R -/Count -4 +/Parent 83 0 R +/Prev 115 0 R >> endobj 115 0 obj << /Title 116 0 R /A 113 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 111 0 R +/Next 119 0 R >> endobj 111 0 obj << /Title 112 0 R /A 109 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 107 0 R /Next 115 0 R >> endobj 107 0 obj << /Title 108 0 R /A 105 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 103 0 R /Next 111 0 R >> endobj 103 0 obj << /Title 104 0 R /A 101 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 99 0 R /Next 107 0 R >> endobj 99 0 obj << /Title 100 0 R /A 97 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 95 0 R /Next 103 0 R >> endobj 95 0 obj << /Title 96 0 R /A 93 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 91 0 R /Next 99 0 R >> endobj 91 0 obj << /Title 92 0 R /A 89 0 R -/Parent 79 0 R +/Parent 83 0 R /Prev 87 0 R /Next 95 0 R >> endobj 87 0 obj << /Title 88 0 R /A 85 0 R -/Parent 79 0 R -/Prev 83 0 R +/Parent 83 0 R /Next 91 0 R >> endobj 83 0 obj << /Title 84 0 R /A 81 0 R -/Parent 79 0 R -/Next 87 0 R +/Parent 39 0 R +/Prev 43 0 R +/Next 123 0 R +/First 87 0 R +/Last 119 0 R +/Count -9 >> endobj 79 0 obj << /Title 80 0 R /A 77 0 R -/Parent 35 0 R -/Prev 39 0 R -/Next 119 0 R -/First 83 0 R -/Last 115 0 R -/Count -9 +/Parent 43 0 R +/Prev 75 0 R >> endobj 75 0 obj << /Title 76 0 R /A 73 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 71 0 R +/Next 79 0 R >> endobj 71 0 obj << /Title 72 0 R /A 69 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 67 0 R /Next 75 0 R >> endobj 67 0 obj << /Title 68 0 R /A 65 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 63 0 R /Next 71 0 R >> endobj 63 0 obj << /Title 64 0 R /A 61 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 59 0 R /Next 67 0 R >> endobj 59 0 obj << /Title 60 0 R /A 57 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 55 0 R /Next 63 0 R >> endobj 55 0 obj << /Title 56 0 R /A 53 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 51 0 R /Next 59 0 R >> endobj 51 0 obj << /Title 52 0 R /A 49 0 R -/Parent 39 0 R +/Parent 43 0 R /Prev 47 0 R /Next 55 0 R >> endobj 47 0 obj << /Title 48 0 R /A 45 0 R -/Parent 39 0 R -/Prev 43 0 R +/Parent 43 0 R /Next 51 0 R >> endobj 43 0 obj << /Title 44 0 R /A 41 0 R /Parent 39 0 R -/Next 47 0 R +/Next 83 0 R +/First 47 0 R +/Last 79 0 R +/Count -9 >> endobj 39 0 obj << /Title 40 0 R /A 37 0 R -/Parent 35 0 R -/Next 79 0 R +/Parent 7 0 R +/Prev 15 0 R +/Next 147 0 R /First 43 0 R -/Last 75 0 R -/Count -9 +/Last 143 0 R +/Count -4 >> endobj 35 0 obj << /Title 36 0 R /A 33 0 R -/Parent 7 0 R -/Prev 15 0 R -/Next 143 0 R -/First 39 0 R -/Last 139 0 R -/Count -4 +/Parent 15 0 R +/Prev 27 0 R >> endobj 31 0 obj << /Title 32 0 R /A 29 0 R -/Parent 15 0 R -/Prev 27 0 R +/Parent 27 0 R >> endobj 27 0 obj << /Title 28 0 R /A 25 0 R /Parent 15 0 R /Prev 23 0 R -/Next 31 0 R +/Next 35 0 R +/First 31 0 R +/Last 31 0 R +/Count -1 >> endobj 23 0 obj << /Title 24 0 R @@ -21758,9 +21850,9 @@ endobj /A 13 0 R /Parent 7 0 R /Prev 11 0 R -/Next 35 0 R +/Next 39 0 R /First 19 0 R -/Last 31 0 R +/Last 35 0 R /Count -4 >> endobj 11 0 obj << @@ -21772,2070 +21864,2087 @@ endobj 7 0 obj << /Title 8 0 R /A 5 0 R -/Parent 1600 0 R +/Parent 1612 0 R /First 11 0 R -/Last 463 0 R +/Last 467 0 R /Count -11 >> endobj -1601 0 obj << -/Names [(Doc-Start) 474 0 R (Hfootnote.1) 669 0 R (Hfootnote.2) 671 0 R (Hfootnote.3) 1485 0 R (Item.1) 698 0 R (Item.10) 711 0 R] +1613 0 obj << +/Names [(Doc-Start) 478 0 R (Hfootnote.1) 674 0 R (Hfootnote.2) 676 0 R (Hfootnote.3) 1497 0 R (Item.1) 703 0 R (Item.10) 717 0 R] /Limits [(Doc-Start) (Item.10)] >> endobj -1602 0 obj << -/Names [(Item.100) 1380 0 R (Item.101) 1385 0 R (Item.102) 1386 0 R (Item.103) 1392 0 R (Item.104) 1393 0 R (Item.105) 1398 0 R] +1614 0 obj << +/Names [(Item.100) 1353 0 R (Item.101) 1354 0 R (Item.102) 1359 0 R (Item.103) 1360 0 R (Item.104) 1361 0 R (Item.105) 1391 0 R] /Limits [(Item.100) (Item.105)] >> endobj -1603 0 obj << -/Names [(Item.106) 1399 0 R (Item.107) 1404 0 R (Item.108) 1405 0 R (Item.109) 1410 0 R (Item.11) 712 0 R (Item.110) 1415 0 R] +1615 0 obj << +/Names [(Item.106) 1392 0 R (Item.107) 1397 0 R (Item.108) 1398 0 R (Item.109) 1404 0 R (Item.11) 718 0 R (Item.110) 1405 0 R] /Limits [(Item.106) (Item.110)] >> endobj -1604 0 obj << -/Names [(Item.12) 713 0 R (Item.13) 714 0 R (Item.14) 715 0 R (Item.15) 716 0 R (Item.16) 717 0 R (Item.17) 718 0 R] +1616 0 obj << +/Names [(Item.111) 1410 0 R (Item.112) 1411 0 R (Item.113) 1416 0 R (Item.114) 1417 0 R (Item.115) 1422 0 R (Item.116) 1427 0 R] +/Limits [(Item.111) (Item.116)] +>> endobj +1617 0 obj << +/Names [(Item.12) 719 0 R (Item.13) 720 0 R (Item.14) 721 0 R (Item.15) 722 0 R (Item.16) 723 0 R (Item.17) 724 0 R] /Limits [(Item.12) (Item.17)] >> endobj -1605 0 obj << -/Names [(Item.18) 719 0 R (Item.19) 720 0 R (Item.2) 699 0 R (Item.20) 721 0 R (Item.21) 722 0 R (Item.22) 739 0 R] +1618 0 obj << +/Names [(Item.18) 725 0 R (Item.19) 726 0 R (Item.2) 704 0 R (Item.20) 727 0 R (Item.21) 728 0 R (Item.22) 734 0 R] /Limits [(Item.18) (Item.22)] >> endobj -1606 0 obj << -/Names [(Item.23) 740 0 R (Item.24) 741 0 R (Item.25) 742 0 R (Item.26) 743 0 R (Item.27) 744 0 R (Item.28) 745 0 R] +1619 0 obj << +/Names [(Item.23) 735 0 R (Item.24) 736 0 R (Item.25) 737 0 R (Item.26) 738 0 R (Item.27) 739 0 R (Item.28) 751 0 R] /Limits [(Item.23) (Item.28)] >> endobj -1607 0 obj << -/Names [(Item.29) 746 0 R (Item.3) 700 0 R (Item.30) 751 0 R (Item.31) 752 0 R (Item.32) 753 0 R (Item.33) 754 0 R] +1620 0 obj << +/Names [(Item.29) 752 0 R (Item.3) 705 0 R (Item.30) 753 0 R (Item.31) 754 0 R (Item.32) 755 0 R (Item.33) 756 0 R] /Limits [(Item.29) (Item.33)] >> endobj -1608 0 obj << -/Names [(Item.34) 755 0 R (Item.35) 787 0 R (Item.36) 1033 0 R (Item.37) 1034 0 R (Item.38) 1035 0 R (Item.39) 1083 0 R] +1621 0 obj << +/Names [(Item.34) 757 0 R (Item.35) 758 0 R (Item.36) 763 0 R (Item.37) 764 0 R (Item.38) 765 0 R (Item.39) 766 0 R] /Limits [(Item.34) (Item.39)] >> endobj -1609 0 obj << -/Names [(Item.4) 701 0 R (Item.40) 1089 0 R (Item.41) 1090 0 R (Item.42) 1095 0 R (Item.43) 1096 0 R (Item.44) 1097 0 R] +1622 0 obj << +/Names [(Item.4) 706 0 R (Item.40) 767 0 R (Item.41) 799 0 R (Item.42) 1045 0 R (Item.43) 1046 0 R (Item.44) 1047 0 R] /Limits [(Item.4) (Item.44)] >> endobj -1610 0 obj << -/Names [(Item.45) 1098 0 R (Item.46) 1104 0 R (Item.47) 1105 0 R (Item.48) 1106 0 R (Item.49) 1117 0 R (Item.5) 702 0 R] +1623 0 obj << +/Names [(Item.45) 1095 0 R (Item.46) 1101 0 R (Item.47) 1102 0 R (Item.48) 1107 0 R (Item.49) 1108 0 R (Item.5) 707 0 R] /Limits [(Item.45) (Item.5)] >> endobj -1611 0 obj << -/Names [(Item.50) 1140 0 R (Item.51) 1141 0 R (Item.52) 1148 0 R (Item.53) 1149 0 R (Item.54) 1150 0 R (Item.55) 1162 0 R] +1624 0 obj << +/Names [(Item.50) 1109 0 R (Item.51) 1110 0 R (Item.52) 1116 0 R (Item.53) 1117 0 R (Item.54) 1118 0 R (Item.55) 1129 0 R] /Limits [(Item.50) (Item.55)] >> endobj -1612 0 obj << -/Names [(Item.56) 1163 0 R (Item.57) 1164 0 R (Item.58) 1165 0 R (Item.59) 1166 0 R (Item.6) 703 0 R (Item.60) 1167 0 R] +1625 0 obj << +/Names [(Item.56) 1152 0 R (Item.57) 1153 0 R (Item.58) 1160 0 R (Item.59) 1161 0 R (Item.6) 708 0 R (Item.60) 1162 0 R] /Limits [(Item.56) (Item.60)] >> endobj -1613 0 obj << -/Names [(Item.61) 1179 0 R (Item.62) 1180 0 R (Item.63) 1181 0 R (Item.64) 1182 0 R (Item.65) 1183 0 R (Item.66) 1184 0 R] +1626 0 obj << +/Names [(Item.61) 1174 0 R (Item.62) 1175 0 R (Item.63) 1176 0 R (Item.64) 1177 0 R (Item.65) 1178 0 R (Item.66) 1179 0 R] /Limits [(Item.61) (Item.66)] >> endobj -1614 0 obj << -/Names [(Item.67) 1197 0 R (Item.68) 1215 0 R (Item.69) 1216 0 R (Item.7) 704 0 R (Item.70) 1243 0 R (Item.71) 1244 0 R] +1627 0 obj << +/Names [(Item.67) 1191 0 R (Item.68) 1192 0 R (Item.69) 1193 0 R (Item.7) 709 0 R (Item.70) 1194 0 R (Item.71) 1195 0 R] /Limits [(Item.67) (Item.71)] >> endobj -1615 0 obj << -/Names [(Item.72) 1256 0 R (Item.73) 1262 0 R (Item.74) 1268 0 R (Item.75) 1274 0 R (Item.76) 1280 0 R (Item.77) 1281 0 R] +1628 0 obj << +/Names [(Item.72) 1196 0 R (Item.73) 1209 0 R (Item.74) 1227 0 R (Item.75) 1228 0 R (Item.76) 1255 0 R (Item.77) 1256 0 R] /Limits [(Item.72) (Item.77)] >> endobj -1616 0 obj << -/Names [(Item.78) 1288 0 R (Item.79) 1289 0 R (Item.8) 705 0 R (Item.80) 1299 0 R (Item.81) 1300 0 R (Item.82) 1301 0 R] +1629 0 obj << +/Names [(Item.78) 1268 0 R (Item.79) 1274 0 R (Item.8) 710 0 R (Item.80) 1280 0 R (Item.81) 1286 0 R (Item.82) 1292 0 R] /Limits [(Item.78) (Item.82)] >> endobj -1617 0 obj << -/Names [(Item.83) 1317 0 R (Item.84) 1318 0 R (Item.85) 1319 0 R (Item.86) 1320 0 R (Item.87) 1321 0 R (Item.88) 1322 0 R] +1630 0 obj << +/Names [(Item.83) 1293 0 R (Item.84) 1300 0 R (Item.85) 1301 0 R (Item.86) 1311 0 R (Item.87) 1312 0 R (Item.88) 1313 0 R] /Limits [(Item.83) (Item.88)] >> endobj -1618 0 obj << -/Names [(Item.89) 1323 0 R (Item.9) 710 0 R (Item.90) 1324 0 R (Item.91) 1325 0 R (Item.92) 1335 0 R (Item.93) 1336 0 R] +1631 0 obj << +/Names [(Item.89) 1329 0 R (Item.9) 716 0 R (Item.90) 1330 0 R (Item.91) 1331 0 R (Item.92) 1332 0 R (Item.93) 1333 0 R] /Limits [(Item.89) (Item.93)] >> endobj -1619 0 obj << -/Names [(Item.94) 1341 0 R (Item.95) 1342 0 R (Item.96) 1347 0 R (Item.97) 1348 0 R (Item.98) 1349 0 R (Item.99) 1379 0 R] +1632 0 obj << +/Names [(Item.94) 1334 0 R (Item.95) 1335 0 R (Item.96) 1336 0 R (Item.97) 1337 0 R (Item.98) 1347 0 R (Item.99) 1348 0 R] /Limits [(Item.94) (Item.99)] >> endobj -1620 0 obj << -/Names [(cite.2007c) 685 0 R (cite.2007d) 686 0 R (cite.BLACS) 657 0 R (cite.BLAS1) 638 0 R (cite.BLAS2) 639 0 R (cite.BLAS3) 640 0 R] +1633 0 obj << +/Names [(cite.2007c) 690 0 R (cite.2007d) 691 0 R (cite.BLACS) 662 0 R (cite.BLAS1) 643 0 R (cite.BLAS2) 644 0 R (cite.BLAS3) 645 0 R] /Limits [(cite.2007c) (cite.BLAS3)] >> endobj -1621 0 obj << -/Names [(cite.DesPat:11) 633 0 R (cite.DesignPatterns) 777 0 R (cite.KIVA3PSBLAS) 1541 0 R (cite.METIS) 672 0 R (cite.MPI1) 1546 0 R (cite.PARA04FOREST) 1539 0 R] +1634 0 obj << +/Names [(cite.DesPat:11) 638 0 R (cite.DesignPatterns) 789 0 R (cite.KIVA3PSBLAS) 1553 0 R (cite.METIS) 677 0 R (cite.MPI1) 1558 0 R (cite.PARA04FOREST) 1551 0 R] /Limits [(cite.DesPat:11) (cite.PARA04FOREST)] >> endobj -1622 0 obj << -/Names [(cite.PSBLAS) 1540 0 R (cite.RouXiaXu:11) 634 0 R (cite.Sparse03) 632 0 R (cite.machiels) 635 0 R (cite.metcalf) 631 0 R (cite.sblas02) 637 0 R] +1635 0 obj << +/Names [(cite.PSBLAS) 1552 0 R (cite.RouXiaXu:11) 639 0 R (cite.Sparse03) 637 0 R (cite.machiels) 640 0 R (cite.metcalf) 636 0 R (cite.sblas02) 642 0 R] /Limits [(cite.PSBLAS) (cite.sblas02)] >> endobj -1623 0 obj << -/Names [(cite.sblas97) 636 0 R (descdata) 733 0 R (equation.1) 945 0 R (equation.2) 946 0 R (equation.3) 947 0 R (figure.1) 650 0 R] +1636 0 obj << +/Names [(cite.sblas97) 641 0 R (descdata) 745 0 R (equation.1) 957 0 R (equation.2) 958 0 R (equation.3) 959 0 R (figure.1) 655 0 R] /Limits [(cite.sblas97) (figure.1)] >> endobj -1624 0 obj << -/Names [(figure.10) 1424 0 R (figure.2) 680 0 R (figure.3) 756 0 R (figure.4) 778 0 R (figure.5) 800 0 R (figure.6) 814 0 R] +1637 0 obj << +/Names [(figure.10) 1436 0 R (figure.2) 685 0 R (figure.3) 768 0 R (figure.4) 790 0 R (figure.5) 812 0 R (figure.6) 826 0 R] /Limits [(figure.10) (figure.6)] >> endobj -1625 0 obj << -/Names [(figure.7) 1006 0 R (figure.8) 1036 0 R (figure.9) 1423 0 R (page.1) 473 0 R (page.10) 738 0 R (page.100) 1370 0 R] +1638 0 obj << +/Names [(figure.7) 1018 0 R (figure.8) 1048 0 R (figure.9) 1435 0 R (page.1) 477 0 R (page.10) 750 0 R (page.100) 1382 0 R] /Limits [(figure.7) (page.100)] >> endobj -1626 0 obj << -/Names [(page.101) 1374 0 R (page.102) 1378 0 R (page.103) 1384 0 R (page.104) 1391 0 R (page.105) 1397 0 R (page.106) 1403 0 R] +1639 0 obj << +/Names [(page.101) 1386 0 R (page.102) 1390 0 R (page.103) 1396 0 R (page.104) 1403 0 R (page.105) 1409 0 R (page.106) 1415 0 R] /Limits [(page.101) (page.106)] >> endobj -1627 0 obj << -/Names [(page.107) 1409 0 R (page.108) 1414 0 R (page.109) 1421 0 R (page.11) 750 0 R (page.110) 1428 0 R (page.111) 1432 0 R] +1640 0 obj << +/Names [(page.107) 1421 0 R (page.108) 1426 0 R (page.109) 1433 0 R (page.11) 762 0 R (page.110) 1440 0 R (page.111) 1444 0 R] /Limits [(page.107) (page.111)] >> endobj -1628 0 obj << -/Names [(page.112) 1436 0 R (page.113) 1440 0 R (page.114) 1444 0 R (page.115) 1448 0 R (page.116) 1454 0 R (page.117) 1459 0 R] +1641 0 obj << +/Names [(page.112) 1448 0 R (page.113) 1452 0 R (page.114) 1456 0 R (page.115) 1460 0 R (page.116) 1466 0 R (page.117) 1471 0 R] /Limits [(page.112) (page.117)] >> endobj -1629 0 obj << -/Names [(page.118) 1464 0 R (page.119) 1468 0 R (page.12) 762 0 R (page.120) 1473 0 R (page.121) 1477 0 R (page.122) 1484 0 R] +1642 0 obj << +/Names [(page.118) 1476 0 R (page.119) 1480 0 R (page.12) 774 0 R (page.120) 1485 0 R (page.121) 1489 0 R (page.122) 1496 0 R] /Limits [(page.118) (page.122)] >> endobj -1630 0 obj << -/Names [(page.123) 1493 0 R (page.124) 1501 0 R (page.125) 1506 0 R (page.126) 1510 0 R (page.127) 1518 0 R (page.128) 1525 0 R] +1643 0 obj << +/Names [(page.123) 1505 0 R (page.124) 1513 0 R (page.125) 1518 0 R (page.126) 1522 0 R (page.127) 1530 0 R (page.128) 1537 0 R] /Limits [(page.123) (page.128)] >> endobj -1631 0 obj << -/Names [(page.129) 1529 0 R (page.13) 766 0 R (page.130) 1533 0 R (page.131) 1537 0 R (page.132) 1545 0 R (page.14) 774 0 R] +1644 0 obj << +/Names [(page.129) 1541 0 R (page.13) 778 0 R (page.130) 1545 0 R (page.131) 1549 0 R (page.132) 1557 0 R (page.14) 786 0 R] /Limits [(page.129) (page.14)] >> endobj -1632 0 obj << -/Names [(page.15) 782 0 R (page.16) 786 0 R (page.17) 791 0 R (page.18) 797 0 R (page.19) 805 0 R (page.2) 483 0 R] +1645 0 obj << +/Names [(page.15) 794 0 R (page.16) 798 0 R (page.17) 803 0 R (page.18) 809 0 R (page.19) 817 0 R (page.2) 487 0 R] /Limits [(page.15) (page.2)] >> endobj -1633 0 obj << -/Names [(page.20) 811 0 R (page.21) 818 0 R (page.22) 829 0 R (page.23) 836 0 R (page.24) 846 0 R (page.25) 851 0 R] +1646 0 obj << +/Names [(page.20) 823 0 R (page.21) 830 0 R (page.22) 841 0 R (page.23) 848 0 R (page.24) 858 0 R (page.25) 863 0 R] /Limits [(page.20) (page.25)] >> endobj -1634 0 obj << -/Names [(page.26) 862 0 R (page.27) 867 0 R (page.28) 874 0 R (page.29) 882 0 R (page.3) 663 0 R (page.30) 890 0 R] +1647 0 obj << +/Names [(page.26) 874 0 R (page.27) 879 0 R (page.28) 886 0 R (page.29) 894 0 R (page.3) 668 0 R (page.30) 902 0 R] /Limits [(page.26) (page.30)] >> endobj -1635 0 obj << -/Names [(page.31) 898 0 R (page.32) 904 0 R (page.33) 911 0 R (page.34) 919 0 R (page.35) 926 0 R (page.36) 933 0 R] +1648 0 obj << +/Names [(page.31) 910 0 R (page.32) 916 0 R (page.33) 923 0 R (page.34) 931 0 R (page.35) 938 0 R (page.36) 945 0 R] /Limits [(page.31) (page.36)] >> endobj -1636 0 obj << -/Names [(page.37) 944 0 R (page.38) 960 0 R (page.39) 966 0 R (page.4) 679 0 R (page.40) 977 0 R (page.41) 983 0 R] +1649 0 obj << +/Names [(page.37) 956 0 R (page.38) 972 0 R (page.39) 978 0 R (page.4) 684 0 R (page.40) 989 0 R (page.41) 995 0 R] /Limits [(page.37) (page.41)] >> endobj -1637 0 obj << -/Names [(page.42) 988 0 R (page.43) 996 0 R (page.44) 1005 0 R (page.45) 1015 0 R (page.46) 1023 0 R (page.47) 1032 0 R] +1650 0 obj << +/Names [(page.42) 1000 0 R (page.43) 1008 0 R (page.44) 1017 0 R (page.45) 1027 0 R (page.46) 1035 0 R (page.47) 1044 0 R] /Limits [(page.42) (page.47)] >> endobj -1638 0 obj << -/Names [(page.48) 1040 0 R (page.49) 1044 0 R (page.5) 692 0 R (page.50) 1057 0 R (page.51) 1062 0 R (page.52) 1068 0 R] +1651 0 obj << +/Names [(page.48) 1052 0 R (page.49) 1056 0 R (page.5) 697 0 R (page.50) 1069 0 R (page.51) 1074 0 R (page.52) 1080 0 R] /Limits [(page.48) (page.52)] >> endobj -1639 0 obj << -/Names [(page.53) 1073 0 R (page.54) 1077 0 R (page.55) 1082 0 R (page.56) 1088 0 R (page.57) 1094 0 R (page.58) 1103 0 R] +1652 0 obj << +/Names [(page.53) 1085 0 R (page.54) 1089 0 R (page.55) 1094 0 R (page.56) 1100 0 R (page.57) 1106 0 R (page.58) 1115 0 R] /Limits [(page.53) (page.58)] >> endobj -1640 0 obj << -/Names [(page.59) 1110 0 R (page.6) 696 0 R (page.60) 1116 0 R (page.61) 1123 0 R (page.62) 1129 0 R (page.63) 1135 0 R] +1653 0 obj << +/Names [(page.59) 1122 0 R (page.6) 701 0 R (page.60) 1128 0 R (page.61) 1135 0 R (page.62) 1141 0 R (page.63) 1147 0 R] /Limits [(page.59) (page.63)] >> endobj -1641 0 obj << -/Names [(page.64) 1139 0 R (page.65) 1147 0 R (page.66) 1157 0 R (page.67) 1161 0 R (page.68) 1174 0 R (page.69) 1178 0 R] +1654 0 obj << +/Names [(page.64) 1151 0 R (page.65) 1159 0 R (page.66) 1169 0 R (page.67) 1173 0 R (page.68) 1186 0 R (page.69) 1190 0 R] /Limits [(page.64) (page.69)] >> endobj -1642 0 obj << -/Names [(page.7) 709 0 R (page.70) 1190 0 R (page.71) 1196 0 R (page.72) 1203 0 R (page.73) 1209 0 R (page.74) 1214 0 R] +1655 0 obj << +/Names [(page.7) 715 0 R (page.70) 1202 0 R (page.71) 1208 0 R (page.72) 1215 0 R (page.73) 1221 0 R (page.74) 1226 0 R] /Limits [(page.7) (page.74)] >> endobj -1643 0 obj << -/Names [(page.75) 1223 0 R (page.76) 1229 0 R (page.77) 1233 0 R (page.78) 1238 0 R (page.79) 1242 0 R (page.8) 727 0 R] +1656 0 obj << +/Names [(page.75) 1235 0 R (page.76) 1241 0 R (page.77) 1245 0 R (page.78) 1250 0 R (page.79) 1254 0 R (page.8) 733 0 R] /Limits [(page.75) (page.8)] >> endobj -1644 0 obj << -/Names [(page.80) 1250 0 R (page.81) 1255 0 R (page.82) 1261 0 R (page.83) 1267 0 R (page.84) 1273 0 R (page.85) 1279 0 R] +1657 0 obj << +/Names [(page.80) 1262 0 R (page.81) 1267 0 R (page.82) 1273 0 R (page.83) 1279 0 R (page.84) 1285 0 R (page.85) 1291 0 R] /Limits [(page.80) (page.85)] >> endobj -1645 0 obj << -/Names [(page.86) 1287 0 R (page.87) 1294 0 R (page.88) 1298 0 R (page.89) 1308 0 R (page.9) 732 0 R (page.90) 1312 0 R] +1658 0 obj << +/Names [(page.86) 1299 0 R (page.87) 1306 0 R (page.88) 1310 0 R (page.89) 1320 0 R (page.9) 744 0 R (page.90) 1324 0 R] /Limits [(page.86) (page.90)] >> endobj -1646 0 obj << -/Names [(page.91) 1316 0 R (page.92) 1330 0 R (page.93) 1334 0 R (page.94) 1340 0 R (page.95) 1346 0 R (page.96) 1353 0 R] +1659 0 obj << +/Names [(page.91) 1328 0 R (page.92) 1342 0 R (page.93) 1346 0 R (page.94) 1352 0 R (page.95) 1358 0 R (page.96) 1365 0 R] /Limits [(page.91) (page.96)] >> endobj -1647 0 obj << -/Names [(page.97) 1357 0 R (page.98) 1362 0 R (page.99) 1366 0 R (page.i) 533 0 R (page.ii) 585 0 R (page.iii) 611 0 R] +1660 0 obj << +/Names [(page.97) 1369 0 R (page.98) 1374 0 R (page.99) 1378 0 R (page.i) 537 0 R (page.ii) 589 0 R (page.iii) 616 0 R] /Limits [(page.97) (page.iii)] >> endobj -1648 0 obj << -/Names [(page.iv) 615 0 R (precdata) 812 0 R (section*.1) 534 0 R (section*.10) 90 0 R (section*.11) 94 0 R (section*.12) 98 0 R] +1661 0 obj << +/Names [(page.iv) 620 0 R (precdata) 824 0 R (section*.1) 538 0 R (section*.10) 94 0 R (section*.11) 98 0 R (section*.12) 102 0 R] /Limits [(page.iv) (section*.12)] >> endobj -1649 0 obj << -/Names [(section*.13) 102 0 R (section*.14) 106 0 R (section*.15) 110 0 R (section*.16) 126 0 R (section*.17) 806 0 R (section*.18) 130 0 R] +1662 0 obj << +/Names [(section*.13) 106 0 R (section*.14) 110 0 R (section*.15) 114 0 R (section*.16) 130 0 R (section*.17) 818 0 R (section*.18) 134 0 R] /Limits [(section*.13) (section*.18)] >> endobj -1650 0 obj << -/Names [(section*.19) 134 0 R (section*.2) 46 0 R (section*.20) 146 0 R (section*.21) 150 0 R (section*.22) 154 0 R (section*.23) 158 0 R] +1663 0 obj << +/Names [(section*.19) 138 0 R (section*.2) 50 0 R (section*.20) 150 0 R (section*.21) 154 0 R (section*.22) 158 0 R (section*.23) 162 0 R] /Limits [(section*.19) (section*.23)] >> endobj -1651 0 obj << -/Names [(section*.24) 162 0 R (section*.25) 166 0 R (section*.26) 170 0 R (section*.27) 174 0 R (section*.28) 178 0 R (section*.29) 182 0 R] +1664 0 obj << +/Names [(section*.24) 166 0 R (section*.25) 170 0 R (section*.26) 174 0 R (section*.27) 178 0 R (section*.28) 182 0 R (section*.29) 186 0 R] /Limits [(section*.24) (section*.29)] >> endobj -1652 0 obj << -/Names [(section*.3) 50 0 R (section*.30) 186 0 R (section*.31) 190 0 R (section*.32) 194 0 R (section*.33) 202 0 R (section*.34) 206 0 R] +1665 0 obj << +/Names [(section*.3) 54 0 R (section*.30) 190 0 R (section*.31) 194 0 R (section*.32) 198 0 R (section*.33) 206 0 R (section*.34) 210 0 R] /Limits [(section*.3) (section*.34)] >> endobj -1653 0 obj << -/Names [(section*.35) 210 0 R (section*.36) 214 0 R (section*.37) 222 0 R (section*.38) 226 0 R (section*.39) 230 0 R (section*.4) 54 0 R] +1666 0 obj << +/Names [(section*.35) 214 0 R (section*.36) 218 0 R (section*.37) 226 0 R (section*.38) 230 0 R (section*.39) 234 0 R (section*.4) 58 0 R] /Limits [(section*.35) (section*.4)] >> endobj -1654 0 obj << -/Names [(section*.40) 234 0 R (section*.41) 238 0 R (section*.42) 242 0 R (section*.43) 246 0 R (section*.44) 250 0 R (section*.45) 254 0 R] +1667 0 obj << +/Names [(section*.40) 238 0 R (section*.41) 242 0 R (section*.42) 246 0 R (section*.43) 250 0 R (section*.44) 254 0 R (section*.45) 258 0 R] /Limits [(section*.40) (section*.45)] >> endobj -1655 0 obj << -/Names [(section*.46) 258 0 R (section*.47) 262 0 R (section*.48) 266 0 R (section*.49) 270 0 R (section*.5) 58 0 R (section*.50) 274 0 R] +1668 0 obj << +/Names [(section*.46) 262 0 R (section*.47) 266 0 R (section*.48) 270 0 R (section*.49) 274 0 R (section*.5) 62 0 R (section*.50) 278 0 R] /Limits [(section*.46) (section*.50)] >> endobj -1656 0 obj << -/Names [(section*.51) 278 0 R (section*.52) 282 0 R (section*.53) 286 0 R (section*.54) 290 0 R (section*.55) 294 0 R (section*.56) 298 0 R] +1669 0 obj << +/Names [(section*.51) 282 0 R (section*.52) 286 0 R (section*.53) 290 0 R (section*.54) 294 0 R (section*.55) 298 0 R (section*.56) 302 0 R] /Limits [(section*.51) (section*.56)] >> endobj -1657 0 obj << -/Names [(section*.57) 302 0 R (section*.58) 306 0 R (section*.59) 310 0 R (section*.6) 62 0 R (section*.60) 314 0 R (section*.61) 318 0 R] +1670 0 obj << +/Names [(section*.57) 306 0 R (section*.58) 310 0 R (section*.59) 314 0 R (section*.6) 66 0 R (section*.60) 318 0 R (section*.61) 322 0 R] /Limits [(section*.57) (section*.61)] >> endobj -1658 0 obj << -/Names [(section*.62) 322 0 R (section*.63) 326 0 R (section*.64) 334 0 R (section*.65) 338 0 R (section*.66) 342 0 R (section*.67) 346 0 R] +1671 0 obj << +/Names [(section*.62) 326 0 R (section*.63) 330 0 R (section*.64) 338 0 R (section*.65) 342 0 R (section*.66) 346 0 R (section*.67) 350 0 R] /Limits [(section*.62) (section*.67)] >> endobj -1659 0 obj << -/Names [(section*.68) 350 0 R (section*.69) 354 0 R (section*.7) 66 0 R (section*.70) 358 0 R (section*.71) 362 0 R (section*.72) 366 0 R] +1672 0 obj << +/Names [(section*.68) 354 0 R (section*.69) 358 0 R (section*.7) 70 0 R (section*.70) 362 0 R (section*.71) 366 0 R (section*.72) 370 0 R] /Limits [(section*.68) (section*.72)] >> endobj -1660 0 obj << -/Names [(section*.73) 370 0 R (section*.74) 374 0 R (section*.75) 378 0 R (section*.76) 382 0 R (section*.77) 386 0 R (section*.78) 390 0 R] +1673 0 obj << +/Names [(section*.73) 374 0 R (section*.74) 378 0 R (section*.75) 382 0 R (section*.76) 386 0 R (section*.77) 390 0 R (section*.78) 394 0 R] /Limits [(section*.73) (section*.78)] >> endobj -1661 0 obj << -/Names [(section*.79) 394 0 R (section*.8) 70 0 R (section*.80) 402 0 R (section*.81) 406 0 R (section*.82) 410 0 R (section*.83) 414 0 R] +1674 0 obj << +/Names [(section*.79) 398 0 R (section*.8) 74 0 R (section*.80) 406 0 R (section*.81) 410 0 R (section*.82) 414 0 R (section*.83) 418 0 R] /Limits [(section*.79) (section*.83)] >> endobj -1662 0 obj << -/Names [(section*.84) 422 0 R (section*.85) 426 0 R (section*.86) 430 0 R (section*.87) 434 0 R (section*.88) 438 0 R (section*.89) 446 0 R] +1675 0 obj << +/Names [(section*.84) 426 0 R (section*.85) 430 0 R (section*.86) 434 0 R (section*.87) 438 0 R (section*.88) 442 0 R (section*.89) 450 0 R] /Limits [(section*.84) (section*.89)] >> endobj -1663 0 obj << -/Names [(section*.9) 86 0 R (section*.90) 450 0 R (section*.91) 454 0 R (section*.92) 458 0 R (section*.93) 466 0 R (section*.94) 1538 0 R] +1676 0 obj << +/Names [(section*.9) 90 0 R (section*.90) 454 0 R (section*.91) 458 0 R (section*.92) 462 0 R (section*.93) 470 0 R (section*.94) 1550 0 R] /Limits [(section*.9) (section*.94)] >> endobj -1664 0 obj << -/Names [(section.1) 10 0 R (section.10) 442 0 R (section.11) 462 0 R (section.2) 14 0 R (section.3) 34 0 R (section.4) 142 0 R] +1677 0 obj << +/Names [(section.1) 10 0 R (section.10) 446 0 R (section.11) 466 0 R (section.2) 14 0 R (section.3) 38 0 R (section.4) 146 0 R] /Limits [(section.1) (section.4)] >> endobj -1665 0 obj << -/Names [(section.5) 198 0 R (section.6) 218 0 R (section.7) 330 0 R (section.8) 398 0 R (section.9) 418 0 R (spbasedata) 776 0 R] +1678 0 obj << +/Names [(section.5) 202 0 R (section.6) 222 0 R (section.7) 334 0 R (section.8) 402 0 R (section.9) 422 0 R (spbasedata) 788 0 R] /Limits [(section.5) (spbasedata)] >> endobj -1666 0 obj << -/Names [(spdata) 775 0 R (subsection.2.1) 18 0 R (subsection.2.2) 22 0 R (subsection.2.3) 26 0 R (subsection.2.4) 30 0 R (subsection.3.1) 38 0 R] +1679 0 obj << +/Names [(spdata) 787 0 R (subsection.2.1) 18 0 R (subsection.2.2) 22 0 R (subsection.2.3) 26 0 R (subsection.2.4) 34 0 R (subsection.3.1) 42 0 R] /Limits [(spdata) (subsection.3.1)] >> endobj -1667 0 obj << -/Names [(subsection.3.2) 78 0 R (subsection.3.3) 118 0 R (subsection.3.4) 138 0 R (subsubsection.3.1.1) 42 0 R (subsubsection.3.1.2) 74 0 R (subsubsection.3.2.1) 82 0 R] -/Limits [(subsection.3.2) (subsubsection.3.2.1)] ->> endobj -1668 0 obj << -/Names [(subsubsection.3.2.2) 114 0 R (subsubsection.3.3.1) 122 0 R (table.1) 830 0 R (table.10) 927 0 R (table.11) 935 0 R (table.12) 948 0 R] -/Limits [(subsubsection.3.2.2) (table.12)] ->> endobj -1669 0 obj << -/Names [(table.13) 967 0 R (table.14) 997 0 R (table.15) 1024 0 R (table.16) 1058 0 R (table.17) 1069 0 R (table.2) 847 0 R] -/Limits [(table.13) (table.2)] +1680 0 obj << +/Names [(subsection.3.2) 82 0 R (subsection.3.3) 122 0 R (subsection.3.4) 142 0 R (subsubsection.2.3.1) 30 0 R (subsubsection.3.1.1) 46 0 R (subsubsection.3.1.2) 78 0 R] +/Limits [(subsection.3.2) (subsubsection.3.1.2)] >> endobj -1670 0 obj << -/Names [(table.3) 863 0 R (table.4) 875 0 R (table.5) 883 0 R (table.6) 891 0 R (table.7) 899 0 R (table.8) 912 0 R] -/Limits [(table.3) (table.8)] +1681 0 obj << +/Names [(subsubsection.3.2.1) 86 0 R (subsubsection.3.2.2) 118 0 R (subsubsection.3.3.1) 126 0 R (table.1) 842 0 R (table.10) 939 0 R (table.11) 947 0 R] +/Limits [(subsubsection.3.2.1) (table.11)] >> endobj -1671 0 obj << -/Names [(table.9) 920 0 R (title.0) 6 0 R (vbasedata) 799 0 R (vdata) 798 0 R] -/Limits [(table.9) (vdata)] +1682 0 obj << +/Names [(table.12) 960 0 R (table.13) 979 0 R (table.14) 1009 0 R (table.15) 1036 0 R (table.16) 1070 0 R (table.17) 1081 0 R] +/Limits [(table.12) (table.17)] >> endobj -1672 0 obj << -/Kids [1601 0 R 1602 0 R 1603 0 R 1604 0 R 1605 0 R 1606 0 R] -/Limits [(Doc-Start) (Item.28)] +1683 0 obj << +/Names [(table.2) 859 0 R (table.3) 875 0 R (table.4) 887 0 R (table.5) 895 0 R (table.6) 903 0 R (table.7) 911 0 R] +/Limits [(table.2) (table.7)] >> endobj -1673 0 obj << -/Kids [1607 0 R 1608 0 R 1609 0 R 1610 0 R 1611 0 R 1612 0 R] -/Limits [(Item.29) (Item.60)] +1684 0 obj << +/Names [(table.8) 924 0 R (table.9) 932 0 R (title.0) 6 0 R (vbasedata) 811 0 R (vdata) 810 0 R] +/Limits [(table.8) (vdata)] >> endobj -1674 0 obj << +1685 0 obj << /Kids [1613 0 R 1614 0 R 1615 0 R 1616 0 R 1617 0 R 1618 0 R] -/Limits [(Item.61) (Item.93)] +/Limits [(Doc-Start) (Item.22)] >> endobj -1675 0 obj << +1686 0 obj << /Kids [1619 0 R 1620 0 R 1621 0 R 1622 0 R 1623 0 R 1624 0 R] -/Limits [(Item.94) (figure.6)] +/Limits [(Item.23) (Item.55)] >> endobj -1676 0 obj << +1687 0 obj << /Kids [1625 0 R 1626 0 R 1627 0 R 1628 0 R 1629 0 R 1630 0 R] -/Limits [(figure.7) (page.128)] +/Limits [(Item.56) (Item.88)] >> endobj -1677 0 obj << +1688 0 obj << /Kids [1631 0 R 1632 0 R 1633 0 R 1634 0 R 1635 0 R 1636 0 R] -/Limits [(page.129) (page.41)] +/Limits [(Item.89) (figure.1)] >> endobj -1678 0 obj << +1689 0 obj << /Kids [1637 0 R 1638 0 R 1639 0 R 1640 0 R 1641 0 R 1642 0 R] -/Limits [(page.42) (page.74)] +/Limits [(figure.10) (page.122)] >> endobj -1679 0 obj << +1690 0 obj << /Kids [1643 0 R 1644 0 R 1645 0 R 1646 0 R 1647 0 R 1648 0 R] -/Limits [(page.75) (section*.12)] +/Limits [(page.123) (page.36)] >> endobj -1680 0 obj << +1691 0 obj << /Kids [1649 0 R 1650 0 R 1651 0 R 1652 0 R 1653 0 R 1654 0 R] -/Limits [(section*.13) (section*.45)] +/Limits [(page.37) (page.69)] >> endobj -1681 0 obj << +1692 0 obj << /Kids [1655 0 R 1656 0 R 1657 0 R 1658 0 R 1659 0 R 1660 0 R] -/Limits [(section*.46) (section*.78)] +/Limits [(page.7) (page.iii)] >> endobj -1682 0 obj << +1693 0 obj << /Kids [1661 0 R 1662 0 R 1663 0 R 1664 0 R 1665 0 R 1666 0 R] -/Limits [(section*.79) (subsection.3.1)] +/Limits [(page.iv) (section*.4)] >> endobj -1683 0 obj << -/Kids [1667 0 R 1668 0 R 1669 0 R 1670 0 R 1671 0 R] -/Limits [(subsection.3.2) (vdata)] +1694 0 obj << +/Kids [1667 0 R 1668 0 R 1669 0 R 1670 0 R 1671 0 R 1672 0 R] +/Limits [(section*.40) (section*.72)] >> endobj -1684 0 obj << -/Kids [1672 0 R 1673 0 R 1674 0 R 1675 0 R 1676 0 R 1677 0 R] -/Limits [(Doc-Start) (page.41)] +1695 0 obj << +/Kids [1673 0 R 1674 0 R 1675 0 R 1676 0 R 1677 0 R 1678 0 R] +/Limits [(section*.73) (spbasedata)] >> endobj -1685 0 obj << -/Kids [1678 0 R 1679 0 R 1680 0 R 1681 0 R 1682 0 R 1683 0 R] -/Limits [(page.42) (vdata)] +1696 0 obj << +/Kids [1679 0 R 1680 0 R 1681 0 R 1682 0 R 1683 0 R 1684 0 R] +/Limits [(spdata) (vdata)] >> endobj -1686 0 obj << -/Kids [1684 0 R 1685 0 R] +1697 0 obj << +/Kids [1685 0 R 1686 0 R 1687 0 R 1688 0 R 1689 0 R 1690 0 R] +/Limits [(Doc-Start) (page.36)] +>> endobj +1698 0 obj << +/Kids [1691 0 R 1692 0 R 1693 0 R 1694 0 R 1695 0 R 1696 0 R] +/Limits [(page.37) (vdata)] +>> endobj +1699 0 obj << +/Kids [1697 0 R 1698 0 R] /Limits [(Doc-Start) (vdata)] >> endobj -1687 0 obj << -/Dests 1686 0 R +1700 0 obj << +/Dests 1699 0 R >> endobj -1688 0 obj << +1701 0 obj << /Type /Catalog -/Pages 1599 0 R -/Outlines 1600 0 R -/Names 1687 0 R +/Pages 1611 0 R +/Outlines 1612 0 R +/Names 1700 0 R /URI (http://ce.uniroma2.it/psblas) /PageMode/UseOutlines/PageLabels << /Nums [0 << /S /D >> 2 << /S /r >> 6 << /S /D >> ] >> -/OpenAction 469 0 R +/OpenAction 473 0 R >> endobj -1689 0 obj << - /Title (Parallel Sparse BLAS V. 3.0-beta) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id: userguide.tex 5790 2012-03-01 15:24:09Z sfilippo $) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.3)/Keywords() -/CreationDate (D:20120416134522+02'00') -/ModDate (D:20120416134522+02'00') +1702 0 obj << + /Title (Parallel Sparse BLAS V. 3.0-beta) /Subject (Parallel Sparse Basic Linear Algebra Subroutines) /Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners) /Creator (pdfLaTeX) /Producer ($Id: userguide.tex 5865 2012-04-16 12:35:14Z sfilippo $) /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.3)/Keywords() +/CreationDate (D:20120417185710+02'00') +/ModDate (D:20120417185710+02'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6) >> endobj xref -0 1690 +0 1703 0000000001 65535 f 0000000002 00000 f 0000000003 00000 f 0000000004 00000 f 0000000000 00000 f 0000000015 00000 n -0000010970 00000 n -0000945380 00000 n +0000011080 00000 n +0000950758 00000 n 0000000058 00000 n 0000000105 00000 n -0000090841 00000 n -0000945308 00000 n +0000091389 00000 n +0000950686 00000 n 0000000150 00000 n 0000000183 00000 n -0000102451 00000 n -0000945185 00000 n +0000102999 00000 n +0000950563 00000 n 0000000229 00000 n 0000000266 00000 n -0000112284 00000 n -0000945111 00000 n +0000112832 00000 n +0000950489 00000 n 0000000317 00000 n 0000000358 00000 n -0000120623 00000 n -0000945024 00000 n +0000121171 00000 n +0000950402 00000 n 0000000409 00000 n 0000000448 00000 n -0000135887 00000 n -0000944937 00000 n +0000136435 00000 n +0000950278 00000 n 0000000499 00000 n 0000000543 00000 n -0000148347 00000 n -0000944863 00000 n -0000000594 00000 n -0000000634 00000 n -0000157369 00000 n -0000944738 00000 n -0000000680 00000 n -0000000728 00000 n -0000157429 00000 n -0000944627 00000 n -0000000779 00000 n -0000000827 00000 n -0000176849 00000 n -0000944553 00000 n -0000000883 00000 n -0000000915 00000 n -0000176910 00000 n -0000944466 00000 n -0000000962 00000 n -0000001002 00000 n -0000176971 00000 n -0000944379 00000 n -0000001049 00000 n -0000001089 00000 n -0000177032 00000 n -0000944292 00000 n -0000001136 00000 n -0000001177 00000 n -0000181693 00000 n -0000944205 00000 n -0000001224 00000 n -0000001265 00000 n -0000181753 00000 n -0000944118 00000 n -0000001312 00000 n -0000001345 00000 n -0000181813 00000 n -0000944031 00000 n -0000001392 00000 n -0000001449 00000 n -0000181873 00000 n -0000943944 00000 n -0000001496 00000 n -0000001553 00000 n -0000192598 00000 n -0000943870 00000 n -0000001609 00000 n -0000001649 00000 n -0000192659 00000 n -0000943744 00000 n -0000001700 00000 n -0000001742 00000 n -0000197957 00000 n -0000943670 00000 n -0000001798 00000 n -0000001830 00000 n -0000198017 00000 n -0000943583 00000 n -0000001877 00000 n -0000001908 00000 n -0000198077 00000 n -0000943496 00000 n -0000001956 00000 n -0000001987 00000 n -0000201961 00000 n -0000943409 00000 n -0000002035 00000 n -0000002068 00000 n -0000202084 00000 n -0000943320 00000 n -0000002116 00000 n -0000002147 00000 n -0000206181 00000 n -0000943229 00000 n -0000002196 00000 n -0000002222 00000 n -0000206242 00000 n -0000943137 00000 n -0000002271 00000 n -0000002301 00000 n -0000206303 00000 n -0000943045 00000 n -0000002350 00000 n -0000002401 00000 n -0000214824 00000 n -0000942967 00000 n -0000002458 00000 n -0000002499 00000 n -0000214886 00000 n -0000942837 00000 n -0000002551 00000 n -0000002602 00000 n -0000218759 00000 n -0000942758 00000 n -0000002659 00000 n -0000002692 00000 n -0000218820 00000 n -0000942665 00000 n -0000002741 00000 n -0000002778 00000 n -0000218942 00000 n -0000942572 00000 n -0000002827 00000 n -0000002858 00000 n -0000219003 00000 n -0000942493 00000 n -0000002907 00000 n -0000002943 00000 n -0000221604 00000 n -0000942415 00000 n -0000002995 00000 n -0000003048 00000 n -0000222296 00000 n -0000942285 00000 n -0000003095 00000 n -0000003139 00000 n -0000230958 00000 n -0000942206 00000 n -0000003188 00000 n -0000003222 00000 n -0000243796 00000 n -0000942113 00000 n -0000003271 00000 n -0000003303 00000 n -0000254626 00000 n -0000942020 00000 n -0000003352 00000 n -0000003385 00000 n -0000263601 00000 n -0000941927 00000 n -0000003434 00000 n -0000003467 00000 n -0000270922 00000 n -0000941834 00000 n -0000003516 00000 n -0000003550 00000 n -0000278583 00000 n -0000941741 00000 n -0000003599 00000 n -0000003632 00000 n -0000286906 00000 n -0000941648 00000 n -0000003681 00000 n -0000003715 00000 n -0000295572 00000 n -0000941555 00000 n -0000003764 00000 n -0000003798 00000 n -0000302729 00000 n -0000941462 00000 n -0000003847 00000 n -0000003881 00000 n -0000309022 00000 n -0000941369 00000 n -0000003930 00000 n -0000003963 00000 n -0000315322 00000 n -0000941276 00000 n -0000004012 00000 n -0000004045 00000 n -0000323804 00000 n -0000941183 00000 n -0000004094 00000 n -0000004125 00000 n -0000340081 00000 n -0000941104 00000 n -0000004174 00000 n -0000004205 00000 n -0000356067 00000 n -0000940974 00000 n -0000004252 00000 n -0000004296 00000 n -0000363496 00000 n -0000940895 00000 n -0000004345 00000 n -0000004376 00000 n -0000384516 00000 n -0000940802 00000 n -0000004425 00000 n -0000004456 00000 n -0000409497 00000 n -0000940709 00000 n -0000004505 00000 n -0000004538 00000 n -0000419214 00000 n -0000940630 00000 n -0000004587 00000 n -0000004621 00000 n -0000428524 00000 n -0000940499 00000 n -0000004668 00000 n -0000004714 00000 n -0000428587 00000 n -0000940420 00000 n -0000004763 00000 n -0000004795 00000 n -0000455140 00000 n -0000940327 00000 n -0000004844 00000 n -0000004876 00000 n -0000460389 00000 n -0000940234 00000 n -0000004925 00000 n -0000004957 00000 n -0000464482 00000 n -0000940141 00000 n -0000005006 00000 n -0000005038 00000 n -0000467315 00000 n -0000940048 00000 n -0000005087 00000 n -0000005120 00000 n -0000473992 00000 n -0000939955 00000 n -0000005169 00000 n -0000005204 00000 n -0000481700 00000 n -0000939862 00000 n -0000005253 00000 n -0000005285 00000 n -0000489155 00000 n -0000939769 00000 n -0000005334 00000 n -0000005366 00000 n -0000501500 00000 n -0000939676 00000 n -0000005415 00000 n -0000005447 00000 n -0000508289 00000 n -0000939583 00000 n -0000005496 00000 n -0000005529 00000 n -0000513031 00000 n -0000939490 00000 n -0000005578 00000 n -0000005609 00000 n -0000518955 00000 n -0000939397 00000 n -0000005658 00000 n -0000005690 00000 n -0000526535 00000 n -0000939304 00000 n -0000005739 00000 n -0000005771 00000 n -0000534255 00000 n -0000939211 00000 n -0000005820 00000 n -0000005852 00000 n -0000538396 00000 n -0000939118 00000 n -0000005901 00000 n -0000005934 00000 n -0000542252 00000 n -0000939025 00000 n -0000005983 00000 n -0000006014 00000 n -0000549415 00000 n -0000938932 00000 n -0000006063 00000 n -0000006107 00000 n -0000556905 00000 n -0000938839 00000 n -0000006156 00000 n -0000006200 00000 n -0000560774 00000 n -0000938746 00000 n -0000006249 00000 n -0000006287 00000 n -0000566417 00000 n -0000938653 00000 n -0000006336 00000 n -0000006377 00000 n -0000570319 00000 n -0000938560 00000 n -0000006426 00000 n -0000006464 00000 n -0000575971 00000 n -0000938467 00000 n -0000006513 00000 n -0000006554 00000 n -0000580460 00000 n -0000938374 00000 n -0000006603 00000 n -0000006645 00000 n -0000584830 00000 n -0000938281 00000 n -0000006694 00000 n -0000006735 00000 n -0000591331 00000 n -0000938188 00000 n -0000006784 00000 n -0000006823 00000 n -0000600651 00000 n -0000938095 00000 n -0000006872 00000 n -0000006905 00000 n -0000606849 00000 n -0000938016 00000 n -0000006954 00000 n -0000006991 00000 n -0000615397 00000 n -0000937885 00000 n -0000007038 00000 n -0000007089 00000 n -0000621357 00000 n -0000937806 00000 n -0000007138 00000 n -0000007169 00000 n -0000626566 00000 n -0000937713 00000 n -0000007218 00000 n -0000007249 00000 n -0000631494 00000 n -0000937620 00000 n -0000007298 00000 n -0000007329 00000 n -0000634287 00000 n -0000937527 00000 n -0000007378 00000 n -0000007419 00000 n -0000637725 00000 n -0000937434 00000 n -0000007468 00000 n -0000007506 00000 n -0000639371 00000 n -0000937341 00000 n -0000007555 00000 n -0000007587 00000 n -0000641273 00000 n -0000937248 00000 n -0000007636 00000 n -0000007670 00000 n -0000643049 00000 n -0000937155 00000 n -0000007719 00000 n -0000007751 00000 n -0000648020 00000 n -0000937062 00000 n -0000007800 00000 n -0000007832 00000 n -0000653664 00000 n -0000936969 00000 n -0000007881 00000 n -0000007911 00000 n -0000659388 00000 n -0000936876 00000 n -0000007960 00000 n -0000007990 00000 n -0000665142 00000 n -0000936783 00000 n -0000008039 00000 n -0000008069 00000 n -0000670954 00000 n -0000936690 00000 n -0000008118 00000 n -0000008148 00000 n -0000676798 00000 n -0000936597 00000 n -0000008197 00000 n -0000008227 00000 n -0000682717 00000 n -0000936504 00000 n -0000008276 00000 n -0000008306 00000 n -0000688588 00000 n -0000936425 00000 n -0000008355 00000 n -0000008385 00000 n -0000695810 00000 n -0000936295 00000 n -0000008432 00000 n -0000008468 00000 n -0000703488 00000 n -0000936216 00000 n -0000008517 00000 n -0000008551 00000 n -0000705055 00000 n -0000936123 00000 n -0000008600 00000 n -0000008632 00000 n -0000706722 00000 n -0000936030 00000 n -0000008681 00000 n -0000008727 00000 n -0000708856 00000 n -0000935951 00000 n -0000008776 00000 n -0000008819 00000 n -0000709801 00000 n -0000935821 00000 n -0000008866 00000 n -0000008897 00000 n -0000714808 00000 n -0000935717 00000 n -0000008946 00000 n +0000153040 00000 n +0000950217 00000 n +0000000599 00000 n +0000000651 00000 n +0000153473 00000 n +0000950143 00000 n +0000000702 00000 n +0000000742 00000 n +0000162533 00000 n +0000950018 00000 n +0000000788 00000 n +0000000836 00000 n +0000162593 00000 n +0000949907 00000 n +0000000887 00000 n +0000000935 00000 n +0000182013 00000 n +0000949833 00000 n +0000000991 00000 n +0000001023 00000 n +0000182074 00000 n +0000949746 00000 n +0000001070 00000 n +0000001110 00000 n +0000182135 00000 n +0000949659 00000 n +0000001157 00000 n +0000001197 00000 n +0000182196 00000 n +0000949572 00000 n +0000001244 00000 n +0000001285 00000 n +0000186857 00000 n +0000949485 00000 n +0000001332 00000 n +0000001373 00000 n +0000186917 00000 n +0000949398 00000 n +0000001420 00000 n +0000001453 00000 n +0000186977 00000 n +0000949311 00000 n +0000001500 00000 n +0000001557 00000 n +0000187037 00000 n +0000949224 00000 n +0000001604 00000 n +0000001661 00000 n +0000197762 00000 n +0000949150 00000 n +0000001717 00000 n +0000001757 00000 n +0000197823 00000 n +0000949024 00000 n +0000001808 00000 n +0000001850 00000 n +0000203121 00000 n +0000948950 00000 n +0000001906 00000 n +0000001938 00000 n +0000203181 00000 n +0000948863 00000 n +0000001985 00000 n +0000002016 00000 n +0000203241 00000 n +0000948776 00000 n +0000002064 00000 n +0000002095 00000 n +0000207125 00000 n +0000948687 00000 n +0000002143 00000 n +0000002177 00000 n +0000207248 00000 n +0000948596 00000 n +0000002226 00000 n +0000002257 00000 n +0000211346 00000 n +0000948504 00000 n +0000002306 00000 n +0000002332 00000 n +0000211407 00000 n +0000948412 00000 n +0000002381 00000 n +0000002411 00000 n +0000211468 00000 n +0000948320 00000 n +0000002460 00000 n +0000002511 00000 n +0000219989 00000 n +0000948242 00000 n +0000002568 00000 n +0000002609 00000 n +0000220051 00000 n +0000948112 00000 n +0000002661 00000 n +0000002712 00000 n +0000223924 00000 n +0000948033 00000 n +0000002769 00000 n +0000002802 00000 n +0000223985 00000 n +0000947940 00000 n +0000002851 00000 n +0000002888 00000 n +0000224107 00000 n +0000947847 00000 n +0000002937 00000 n +0000002968 00000 n +0000224168 00000 n +0000947768 00000 n +0000003017 00000 n +0000003053 00000 n +0000226769 00000 n +0000947690 00000 n +0000003105 00000 n +0000003158 00000 n +0000227461 00000 n +0000947560 00000 n +0000003205 00000 n +0000003249 00000 n +0000236123 00000 n +0000947481 00000 n +0000003298 00000 n +0000003332 00000 n +0000248961 00000 n +0000947388 00000 n +0000003381 00000 n +0000003413 00000 n +0000259791 00000 n +0000947295 00000 n +0000003462 00000 n +0000003495 00000 n +0000268766 00000 n +0000947202 00000 n +0000003544 00000 n +0000003577 00000 n +0000276087 00000 n +0000947109 00000 n +0000003626 00000 n +0000003660 00000 n +0000283748 00000 n +0000947016 00000 n +0000003709 00000 n +0000003742 00000 n +0000292071 00000 n +0000946923 00000 n +0000003791 00000 n +0000003825 00000 n +0000300737 00000 n +0000946830 00000 n +0000003874 00000 n +0000003908 00000 n +0000307894 00000 n +0000946737 00000 n +0000003957 00000 n +0000003991 00000 n +0000314187 00000 n +0000946644 00000 n +0000004040 00000 n +0000004073 00000 n +0000320487 00000 n +0000946551 00000 n +0000004122 00000 n +0000004155 00000 n +0000328969 00000 n +0000946458 00000 n +0000004204 00000 n +0000004235 00000 n +0000345246 00000 n +0000946379 00000 n +0000004284 00000 n +0000004315 00000 n +0000361233 00000 n +0000946249 00000 n +0000004362 00000 n +0000004406 00000 n +0000368677 00000 n +0000946170 00000 n +0000004455 00000 n +0000004486 00000 n +0000389706 00000 n +0000946077 00000 n +0000004535 00000 n +0000004566 00000 n +0000414689 00000 n +0000945984 00000 n +0000004615 00000 n +0000004648 00000 n +0000424406 00000 n +0000945905 00000 n +0000004697 00000 n +0000004731 00000 n +0000433716 00000 n +0000945774 00000 n +0000004778 00000 n +0000004824 00000 n +0000433779 00000 n +0000945695 00000 n +0000004873 00000 n +0000004905 00000 n +0000460332 00000 n +0000945602 00000 n +0000004954 00000 n +0000004986 00000 n +0000465581 00000 n +0000945509 00000 n +0000005035 00000 n +0000005067 00000 n +0000469674 00000 n +0000945416 00000 n +0000005116 00000 n +0000005148 00000 n +0000472507 00000 n +0000945323 00000 n +0000005197 00000 n +0000005230 00000 n +0000479184 00000 n +0000945230 00000 n +0000005279 00000 n +0000005314 00000 n +0000486892 00000 n +0000945137 00000 n +0000005363 00000 n +0000005395 00000 n +0000494347 00000 n +0000945044 00000 n +0000005444 00000 n +0000005476 00000 n +0000506692 00000 n +0000944951 00000 n +0000005525 00000 n +0000005557 00000 n +0000513481 00000 n +0000944858 00000 n +0000005606 00000 n +0000005639 00000 n +0000518223 00000 n +0000944765 00000 n +0000005688 00000 n +0000005719 00000 n +0000524147 00000 n +0000944672 00000 n +0000005768 00000 n +0000005800 00000 n +0000531727 00000 n +0000944579 00000 n +0000005849 00000 n +0000005881 00000 n +0000539447 00000 n +0000944486 00000 n +0000005930 00000 n +0000005962 00000 n +0000543588 00000 n +0000944393 00000 n +0000006011 00000 n +0000006044 00000 n +0000547444 00000 n +0000944300 00000 n +0000006093 00000 n +0000006124 00000 n +0000554607 00000 n +0000944207 00000 n +0000006173 00000 n +0000006217 00000 n +0000562097 00000 n +0000944114 00000 n +0000006266 00000 n +0000006310 00000 n +0000565966 00000 n +0000944021 00000 n +0000006359 00000 n +0000006397 00000 n +0000571609 00000 n +0000943928 00000 n +0000006446 00000 n +0000006487 00000 n +0000575511 00000 n +0000943835 00000 n +0000006536 00000 n +0000006574 00000 n +0000581163 00000 n +0000943742 00000 n +0000006623 00000 n +0000006664 00000 n +0000585652 00000 n +0000943649 00000 n +0000006713 00000 n +0000006755 00000 n +0000590022 00000 n +0000943556 00000 n +0000006804 00000 n +0000006845 00000 n +0000596523 00000 n +0000943463 00000 n +0000006894 00000 n +0000006933 00000 n +0000605843 00000 n +0000943370 00000 n +0000006982 00000 n +0000007015 00000 n +0000612041 00000 n +0000943291 00000 n +0000007064 00000 n +0000007101 00000 n +0000620589 00000 n +0000943160 00000 n +0000007148 00000 n +0000007199 00000 n +0000626549 00000 n +0000943081 00000 n +0000007248 00000 n +0000007279 00000 n +0000631758 00000 n +0000942988 00000 n +0000007328 00000 n +0000007359 00000 n +0000636686 00000 n +0000942895 00000 n +0000007408 00000 n +0000007439 00000 n +0000639479 00000 n +0000942802 00000 n +0000007488 00000 n +0000007529 00000 n +0000642917 00000 n +0000942709 00000 n +0000007578 00000 n +0000007616 00000 n +0000644563 00000 n +0000942616 00000 n +0000007665 00000 n +0000007697 00000 n +0000646465 00000 n +0000942523 00000 n +0000007746 00000 n +0000007780 00000 n +0000648241 00000 n +0000942430 00000 n +0000007829 00000 n +0000007861 00000 n +0000653212 00000 n +0000942337 00000 n +0000007910 00000 n +0000007942 00000 n +0000658856 00000 n +0000942244 00000 n +0000007991 00000 n +0000008021 00000 n +0000664580 00000 n +0000942151 00000 n +0000008070 00000 n +0000008100 00000 n +0000670334 00000 n +0000942058 00000 n +0000008149 00000 n +0000008179 00000 n +0000676146 00000 n +0000941965 00000 n +0000008228 00000 n +0000008258 00000 n +0000681990 00000 n +0000941872 00000 n +0000008307 00000 n +0000008337 00000 n +0000687909 00000 n +0000941779 00000 n +0000008386 00000 n +0000008416 00000 n +0000693780 00000 n +0000941700 00000 n +0000008465 00000 n +0000008495 00000 n +0000701002 00000 n +0000941570 00000 n +0000008542 00000 n +0000008578 00000 n +0000708680 00000 n +0000941491 00000 n +0000008627 00000 n +0000008661 00000 n +0000710247 00000 n +0000941398 00000 n +0000008710 00000 n +0000008742 00000 n +0000711914 00000 n +0000941305 00000 n +0000008791 00000 n +0000008837 00000 n +0000714048 00000 n +0000941226 00000 n +0000008886 00000 n +0000008929 00000 n +0000714993 00000 n +0000941096 00000 n 0000008976 00000 n -0000720277 00000 n -0000935638 00000 n -0000009025 00000 n +0000009007 00000 n +0000720000 00000 n +0000940992 00000 n 0000009056 00000 n -0000724096 00000 n -0000935545 00000 n -0000009105 00000 n -0000009142 00000 n -0000727777 00000 n -0000935452 00000 n -0000009191 00000 n -0000009229 00000 n -0000732086 00000 n -0000935373 00000 n -0000009278 00000 n -0000009316 00000 n -0000733416 00000 n -0000935243 00000 n -0000009364 00000 n -0000009410 00000 n -0000738827 00000 n -0000935164 00000 n -0000009459 00000 n -0000009494 00000 n -0000747169 00000 n -0000935071 00000 n -0000009543 00000 n -0000009577 00000 n -0000754228 00000 n -0000934978 00000 n -0000009626 00000 n -0000009661 00000 n -0000756823 00000 n -0000934899 00000 n -0000009710 00000 n -0000009746 00000 n -0000757851 00000 n -0000934783 00000 n -0000009794 00000 n -0000009834 00000 n -0000766476 00000 n -0000934718 00000 n -0000009883 00000 n -0000009909 00000 n -0000010729 00000 n -0000011029 00000 n -0000009961 00000 n -0000010848 00000 n -0000010909 00000 n -0000929075 00000 n -0000930812 00000 n -0000928929 00000 n -0000929658 00000 n -0000931249 00000 n -0000011456 00000 n -0000011275 00000 n -0000011139 00000 n -0000011394 00000 n -0000030047 00000 n -0000030198 00000 n -0000030348 00000 n -0000030505 00000 n -0000030662 00000 n -0000030819 00000 n -0000030976 00000 n -0000031127 00000 n -0000031284 00000 n -0000031445 00000 n -0000031598 00000 n -0000031751 00000 n -0000031904 00000 n -0000032056 00000 n -0000032207 00000 n -0000032360 00000 n -0000032513 00000 n -0000032674 00000 n -0000032830 00000 n -0000032992 00000 n -0000033145 00000 n -0000033299 00000 n -0000033453 00000 n -0000033607 00000 n -0000033761 00000 n -0000033915 00000 n -0000034068 00000 n -0000034230 00000 n -0000034387 00000 n -0000034549 00000 n -0000034703 00000 n -0000034857 00000 n -0000035011 00000 n -0000035168 00000 n -0000035319 00000 n -0000035473 00000 n -0000035627 00000 n -0000035781 00000 n -0000035935 00000 n -0000036089 00000 n -0000036243 00000 n -0000036396 00000 n -0000036550 00000 n -0000036704 00000 n -0000036858 00000 n -0000059319 00000 n -0000037133 00000 n -0000029556 00000 n -0000011527 00000 n -0000037011 00000 n -0000037072 00000 n -0000059471 00000 n -0000059625 00000 n -0000059777 00000 n -0000059931 00000 n -0000060085 00000 n -0000060239 00000 n -0000060392 00000 n -0000060543 00000 n -0000060696 00000 n -0000060850 00000 n -0000061004 00000 n -0000061158 00000 n -0000061312 00000 n -0000061466 00000 n -0000061620 00000 n -0000061774 00000 n -0000061928 00000 n -0000062082 00000 n -0000062236 00000 n -0000062389 00000 n -0000062542 00000 n -0000062695 00000 n -0000062849 00000 n -0000063003 00000 n -0000063157 00000 n -0000063310 00000 n -0000063463 00000 n -0000063615 00000 n -0000063769 00000 n -0000063923 00000 n -0000064076 00000 n -0000064228 00000 n -0000064382 00000 n -0000064536 00000 n -0000064690 00000 n -0000064842 00000 n -0000064996 00000 n -0000065150 00000 n -0000065303 00000 n -0000065456 00000 n -0000065609 00000 n -0000065763 00000 n -0000065917 00000 n -0000066070 00000 n -0000066222 00000 n -0000066375 00000 n -0000076448 00000 n -0000066590 00000 n -0000058812 00000 n -0000037230 00000 n -0000066528 00000 n -0000076602 00000 n -0000076755 00000 n -0000076908 00000 n -0000077061 00000 n -0000077215 00000 n -0000077366 00000 n -0000077519 00000 n -0000077673 00000 n -0000077826 00000 n -0000077980 00000 n -0000078131 00000 n -0000078283 00000 n -0000078437 00000 n -0000078590 00000 n -0000078744 00000 n -0000078897 00000 n -0000079049 00000 n -0000079202 00000 n -0000079356 00000 n -0000079510 00000 n -0000079664 00000 n -0000079815 00000 n -0000080030 00000 n -0000076133 00000 n -0000066674 00000 n -0000079969 00000 n -0000080433 00000 n -0000080252 00000 n -0000080114 00000 n -0000080371 00000 n -0000089292 00000 n -0000089446 00000 n -0000089602 00000 n -0000089759 00000 n -0000089918 00000 n -0000090074 00000 n -0000090228 00000 n -0000090382 00000 n -0000090535 00000 n -0000090688 00000 n -0000090901 00000 n -0000089081 00000 n -0000080504 00000 n -0000930666 00000 n -0000931367 00000 n -0000789254 00000 n -0000785409 00000 n -0000784788 00000 n -0000789317 00000 n -0000789191 00000 n -0000785222 00000 n -0000785284 00000 n -0000789128 00000 n -0000785036 00000 n -0000785098 00000 n -0000101996 00000 n -0000102146 00000 n -0000102299 00000 n -0000096793 00000 n -0000111765 00000 n -0000102572 00000 n -0000096638 00000 n -0000090998 00000 n -0000929221 00000 n -0000102512 00000 n -0000098003 00000 n -0000098249 00000 n -0000098296 00000 n -0000098689 00000 n -0000098710 00000 n -0000099017 00000 n -0000785160 00000 n -0000111916 00000 n -0000112070 00000 n -0000112468 00000 n -0000111610 00000 n -0000102697 00000 n -0000112223 00000 n -0000930958 00000 n -0000929946 00000 n -0000929513 00000 n -0000930378 00000 n -0000929803 00000 n -0000112344 00000 n -0000930089 00000 n -0000112406 00000 n -0000789065 00000 n -0000120193 00000 n -0000120346 00000 n -0000118222 00000 n -0000120684 00000 n -0000118075 00000 n -0000112668 00000 n -0000120499 00000 n -0000120561 00000 n -0000119931 00000 n -0000120050 00000 n -0000120097 00000 n -0000120171 00000 n -0000784974 00000 n -0000784912 00000 n -0000126516 00000 n -0000126667 00000 n -0000126880 00000 n -0000126369 00000 n -0000120848 00000 n -0000126819 00000 n -0000136444 00000 n -0000135706 00000 n -0000126990 00000 n -0000135825 00000 n -0000929367 00000 n -0000135948 00000 n -0000136010 00000 n -0000136072 00000 n -0000136134 00000 n -0000136196 00000 n -0000136258 00000 n -0000136320 00000 n -0000136382 00000 n -0000144500 00000 n -0000143531 00000 n -0000136579 00000 n -0000143650 00000 n -0000143711 00000 n -0000143772 00000 n -0000143833 00000 n -0000143894 00000 n -0000143954 00000 n -0000144015 00000 n -0000144076 00000 n -0000144136 00000 n -0000144197 00000 n -0000144258 00000 n -0000144319 00000 n -0000144380 00000 n -0000144440 00000 n -0000931485 00000 n -0000148408 00000 n -0000148166 00000 n -0000144584 00000 n -0000148285 00000 n -0000157156 00000 n -0000157551 00000 n -0000157017 00000 n -0000148518 00000 n -0000157308 00000 n -0000157489 00000 n -0000164580 00000 n -0000165290 00000 n -0000164441 00000 n -0000157674 00000 n -0000164732 00000 n -0000164794 00000 n -0000164856 00000 n -0000164918 00000 n -0000164980 00000 n -0000165042 00000 n -0000165104 00000 n -0000165166 00000 n -0000165228 00000 n -0000171004 00000 n -0000170458 00000 n -0000165387 00000 n -0000170577 00000 n -0000170638 00000 n -0000170699 00000 n -0000170759 00000 n -0000170820 00000 n -0000170881 00000 n -0000170942 00000 n -0000176484 00000 n -0000176636 00000 n -0000177093 00000 n -0000176337 00000 n -0000171101 00000 n -0000176787 00000 n -0000181933 00000 n -0000181513 00000 n -0000177216 00000 n -0000181632 00000 n -0000931603 00000 n -0000192070 00000 n -0000192231 00000 n -0000192386 00000 n -0000192844 00000 n -0000191915 00000 n -0000182043 00000 n -0000192536 00000 n -0000192720 00000 n -0000192782 00000 n -0000789002 00000 n -0000197895 00000 n -0000198137 00000 n -0000197715 00000 n -0000192954 00000 n -0000197834 00000 n -0000202144 00000 n -0000201780 00000 n -0000198234 00000 n -0000201899 00000 n -0000202022 00000 n -0000206363 00000 n -0000206001 00000 n -0000202241 00000 n -0000206120 00000 n -0000214459 00000 n -0000214611 00000 n -0000215132 00000 n -0000214312 00000 n -0000206460 00000 n -0000214762 00000 n -0000214948 00000 n -0000215010 00000 n -0000215070 00000 n -0000221391 00000 n -0000219064 00000 n -0000218579 00000 n -0000215242 00000 n -0000218698 00000 n -0000218881 00000 n -0000931721 00000 n -0000221790 00000 n -0000221252 00000 n -0000219161 00000 n -0000221542 00000 n -0000221666 00000 n -0000931104 00000 n -0000221728 00000 n -0000222357 00000 n -0000222116 00000 n -0000221900 00000 n -0000222235 00000 n -0000230000 00000 n -0000230150 00000 n -0000230298 00000 n -0000230448 00000 n -0000230598 00000 n -0000230746 00000 n -0000234090 00000 n -0000231081 00000 n -0000229821 00000 n -0000222441 00000 n -0000230896 00000 n -0000231020 00000 n -0000234241 00000 n -0000234388 00000 n -0000234599 00000 n -0000233935 00000 n -0000231217 00000 n -0000234538 00000 n -0000242838 00000 n -0000242986 00000 n -0000243136 00000 n -0000243284 00000 n -0000243434 00000 n -0000243585 00000 n -0000243919 00000 n -0000242659 00000 n -0000234709 00000 n -0000243734 00000 n -0000243857 00000 n -0000244931 00000 n -0000244751 00000 n -0000244068 00000 n -0000244870 00000 n -0000931839 00000 n -0000253669 00000 n -0000253817 00000 n -0000253966 00000 n -0000254114 00000 n -0000254264 00000 n -0000254415 00000 n -0000254749 00000 n -0000253490 00000 n -0000245015 00000 n -0000254564 00000 n -0000254687 00000 n -0000255761 00000 n -0000255581 00000 n -0000254898 00000 n -0000255700 00000 n -0000263092 00000 n -0000263240 00000 n -0000263388 00000 n -0000263724 00000 n -0000262937 00000 n -0000255845 00000 n -0000263539 00000 n -0000263662 00000 n -0000270413 00000 n -0000270561 00000 n -0000270711 00000 n -0000271044 00000 n -0000270258 00000 n -0000263873 00000 n -0000270861 00000 n -0000270982 00000 n -0000278072 00000 n -0000278220 00000 n -0000278370 00000 n -0000278706 00000 n -0000277917 00000 n -0000271193 00000 n -0000278521 00000 n -0000278644 00000 n -0000286399 00000 n -0000286546 00000 n -0000286695 00000 n -0000287029 00000 n -0000286244 00000 n -0000278867 00000 n -0000286845 00000 n -0000286967 00000 n -0000931957 00000 n -0000288055 00000 n -0000287874 00000 n -0000287190 00000 n -0000287993 00000 n -0000295062 00000 n -0000295210 00000 n -0000295360 00000 n -0000295694 00000 n -0000294907 00000 n -0000288139 00000 n -0000295511 00000 n -0000295632 00000 n -0000302219 00000 n -0000302367 00000 n -0000302516 00000 n -0000302852 00000 n -0000302064 00000 n -0000295843 00000 n -0000302667 00000 n -0000302790 00000 n -0000308661 00000 n -0000308810 00000 n -0000309144 00000 n -0000308514 00000 n -0000303000 00000 n -0000308961 00000 n -0000309082 00000 n -0000314960 00000 n -0000315109 00000 n -0000315445 00000 n -0000314813 00000 n -0000309292 00000 n -0000315260 00000 n -0000930523 00000 n -0000315383 00000 n -0000323144 00000 n -0000323295 00000 n -0000323444 00000 n -0000323592 00000 n -0000331502 00000 n -0000324112 00000 n -0000322981 00000 n -0000315594 00000 n -0000323743 00000 n -0000323864 00000 n -0000323926 00000 n -0000323988 00000 n -0000324050 00000 n -0000932075 00000 n -0000331653 00000 n -0000331801 00000 n -0000331952 00000 n -0000332103 00000 n -0000332256 00000 n -0000332409 00000 n -0000332562 00000 n -0000332775 00000 n -0000331307 00000 n -0000324273 00000 n -0000332713 00000 n -0000339870 00000 n -0000348413 00000 n -0000340204 00000 n -0000339731 00000 n -0000332885 00000 n -0000340020 00000 n -0000340142 00000 n -0000348565 00000 n -0000348713 00000 n -0000348864 00000 n -0000349015 00000 n -0000349163 00000 n -0000349314 00000 n -0000349526 00000 n -0000348226 00000 n -0000340378 00000 n -0000349464 00000 n -0000354531 00000 n -0000354682 00000 n -0000354894 00000 n -0000354384 00000 n -0000349662 00000 n -0000354833 00000 n -0000355853 00000 n -0000356129 00000 n -0000355714 00000 n -0000355004 00000 n -0000356005 00000 n -0000362834 00000 n -0000362982 00000 n -0000363133 00000 n -0000363284 00000 n -0000363618 00000 n -0000362671 00000 n -0000356213 00000 n -0000363435 00000 n -0000363556 00000 n -0000932193 00000 n -0000372324 00000 n -0000368084 00000 n -0000372474 00000 n -0000372753 00000 n -0000367933 00000 n -0000363754 00000 n -0000372625 00000 n -0000372689 00000 n -0000371984 00000 n -0000372104 00000 n -0000372152 00000 n -0000372227 00000 n -0000372301 00000 n -0000376201 00000 n -0000376016 00000 n -0000372906 00000 n -0000376138 00000 n -0000930233 00000 n -0000384001 00000 n -0000384149 00000 n -0000384301 00000 n -0000384642 00000 n -0000383840 00000 n -0000376287 00000 n -0000384452 00000 n -0000384578 00000 n -0000390879 00000 n -0000396201 00000 n -0000391031 00000 n -0000391181 00000 n -0000391584 00000 n -0000390718 00000 n -0000384792 00000 n -0000391333 00000 n -0000391396 00000 n -0000391459 00000 n -0000391522 00000 n -0000400588 00000 n -0000395586 00000 n -0000395400 00000 n -0000391721 00000 n -0000395522 00000 n -0000400652 00000 n -0000396078 00000 n -0000395671 00000 n -0000400525 00000 n -0000932316 00000 n -0000400185 00000 n -0000400305 00000 n -0000400353 00000 n -0000400428 00000 n -0000400502 00000 n -0000408981 00000 n -0000409130 00000 n -0000409282 00000 n -0000409623 00000 n -0000408819 00000 n -0000400753 00000 n -0000409433 00000 n -0000409559 00000 n -0000411486 00000 n -0000411300 00000 n -0000409785 00000 n -0000411423 00000 n -0000418999 00000 n -0000421425 00000 n -0000419341 00000 n -0000418855 00000 n -0000411584 00000 n -0000419150 00000 n -0000419277 00000 n -0000421640 00000 n -0000421281 00000 n -0000419503 00000 n -0000421577 00000 n -0000428650 00000 n -0000428337 00000 n -0000421738 00000 n -0000428460 00000 n -0000435628 00000 n -0000435906 00000 n -0000435484 00000 n -0000428787 00000 n -0000435780 00000 n -0000435843 00000 n -0000932441 00000 n -0000446077 00000 n -0000445762 00000 n -0000436030 00000 n -0000445885 00000 n -0000445949 00000 n -0000446013 00000 n -0000448924 00000 n -0000448488 00000 n -0000446214 00000 n -0000448611 00000 n -0000448674 00000 n -0000448737 00000 n -0000448799 00000 n -0000448862 00000 n -0000454925 00000 n -0000455395 00000 n -0000454781 00000 n -0000449009 00000 n -0000455076 00000 n -0000455203 00000 n -0000455267 00000 n -0000455331 00000 n -0000456233 00000 n -0000456047 00000 n -0000455519 00000 n -0000456170 00000 n -0000460024 00000 n -0000460174 00000 n -0000460515 00000 n -0000459871 00000 n -0000456318 00000 n -0000460325 00000 n -0000460451 00000 n -0000464116 00000 n -0000464267 00000 n -0000464543 00000 n -0000463963 00000 n -0000460626 00000 n -0000464419 00000 n -0000932566 00000 n -0000467101 00000 n -0000467377 00000 n -0000466957 00000 n -0000464654 00000 n -0000467251 00000 n -0000473628 00000 n -0000473777 00000 n -0000474054 00000 n -0000473475 00000 n -0000467488 00000 n -0000473929 00000 n -0000476153 00000 n -0000475838 00000 n -0000474191 00000 n -0000475961 00000 n -0000476025 00000 n -0000476089 00000 n -0000481338 00000 n -0000481489 00000 n -0000481950 00000 n -0000481185 00000 n -0000476238 00000 n -0000481637 00000 n -0000481761 00000 n -0000481824 00000 n -0000481887 00000 n -0000488791 00000 n -0000488943 00000 n -0000493575 00000 n -0000489218 00000 n -0000488638 00000 n -0000482074 00000 n -0000489091 00000 n -0000494165 00000 n -0000493431 00000 n -0000489342 00000 n -0000493726 00000 n -0000493789 00000 n -0000493852 00000 n -0000493915 00000 n -0000493978 00000 n -0000494040 00000 n -0000494102 00000 n -0000932691 00000 n -0000501137 00000 n -0000501287 00000 n -0000501562 00000 n -0000500984 00000 n -0000494276 00000 n -0000501436 00000 n -0000504544 00000 n -0000503981 00000 n -0000501673 00000 n -0000504104 00000 n -0000504167 00000 n -0000504230 00000 n -0000504293 00000 n -0000504356 00000 n -0000504419 00000 n -0000504482 00000 n -0000507926 00000 n -0000508074 00000 n -0000508351 00000 n -0000507773 00000 n -0000504629 00000 n -0000508225 00000 n -0000512666 00000 n -0000512816 00000 n -0000513156 00000 n -0000512513 00000 n -0000508462 00000 n -0000512968 00000 n -0000513093 00000 n -0000518591 00000 n -0000518742 00000 n -0000519017 00000 n -0000518438 00000 n -0000513267 00000 n -0000518891 00000 n -0000526171 00000 n -0000526323 00000 n -0000526596 00000 n -0000526018 00000 n -0000519141 00000 n -0000526472 00000 n -0000932816 00000 n -0000528210 00000 n -0000527895 00000 n -0000526720 00000 n -0000528018 00000 n -0000528082 00000 n -0000528146 00000 n -0000533745 00000 n -0000533895 00000 n -0000534044 00000 n -0000534316 00000 n -0000533583 00000 n -0000528308 00000 n -0000534192 00000 n -0000538032 00000 n -0000538180 00000 n -0000538458 00000 n -0000537879 00000 n -0000534440 00000 n -0000538332 00000 n -0000542313 00000 n -0000542066 00000 n -0000538569 00000 n -0000542189 00000 n -0000549201 00000 n -0000549477 00000 n -0000549057 00000 n -0000542450 00000 n -0000549351 00000 n -0000550665 00000 n -0000550353 00000 n -0000549601 00000 n -0000550476 00000 n -0000550539 00000 n -0000550602 00000 n -0000932941 00000 n -0000556690 00000 n -0000556967 00000 n -0000556546 00000 n -0000550750 00000 n -0000556841 00000 n -0000560559 00000 n -0000560898 00000 n -0000560415 00000 n -0000557091 00000 n -0000560711 00000 n -0000560835 00000 n -0000566202 00000 n -0000566543 00000 n -0000566058 00000 n -0000561022 00000 n -0000566353 00000 n -0000566479 00000 n -0000570104 00000 n -0000570443 00000 n -0000569960 00000 n -0000566667 00000 n -0000570256 00000 n -0000570380 00000 n -0000575756 00000 n -0000576097 00000 n -0000575612 00000 n -0000570567 00000 n -0000575907 00000 n -0000576033 00000 n -0000580246 00000 n -0000580647 00000 n -0000580102 00000 n -0000576221 00000 n -0000580397 00000 n -0000580521 00000 n -0000580584 00000 n -0000933066 00000 n -0000584616 00000 n -0000585020 00000 n -0000584472 00000 n -0000580758 00000 n -0000584766 00000 n -0000584892 00000 n -0000584956 00000 n -0000591118 00000 n -0000591393 00000 n -0000590974 00000 n -0000585131 00000 n -0000591268 00000 n -0000595667 00000 n -0000595288 00000 n -0000591517 00000 n -0000595411 00000 n -0000595475 00000 n -0000595539 00000 n -0000595603 00000 n -0000600136 00000 n -0000600286 00000 n -0000600438 00000 n -0000600712 00000 n -0000599974 00000 n -0000595791 00000 n -0000600588 00000 n -0000606912 00000 n -0000606662 00000 n -0000600836 00000 n -0000606785 00000 n -0000614841 00000 n -0000614089 00000 n -0000607036 00000 n -0000614212 00000 n -0000614275 00000 n -0000614338 00000 n -0000614401 00000 n -0000614464 00000 n -0000614527 00000 n -0000614590 00000 n -0000614652 00000 n -0000614715 00000 n -0000614778 00000 n -0000933191 00000 n -0000615460 00000 n -0000615210 00000 n -0000614964 00000 n -0000615333 00000 n -0000621544 00000 n -0000621171 00000 n -0000615545 00000 n -0000621294 00000 n -0000621418 00000 n -0000621481 00000 n -0000626756 00000 n -0000626379 00000 n -0000621681 00000 n -0000626502 00000 n -0000626629 00000 n -0000626692 00000 n -0000631744 00000 n -0000631308 00000 n -0000626893 00000 n -0000631431 00000 n -0000631555 00000 n -0000631618 00000 n -0000631681 00000 n -0000634349 00000 n -0000634100 00000 n -0000631881 00000 n -0000634223 00000 n -0000637786 00000 n -0000637539 00000 n -0000634460 00000 n -0000637662 00000 n -0000933316 00000 n -0000639433 00000 n -0000639184 00000 n -0000637923 00000 n -0000639307 00000 n -0000641334 00000 n -0000641087 00000 n -0000639544 00000 n -0000641210 00000 n -0000643111 00000 n -0000642862 00000 n -0000641445 00000 n -0000642985 00000 n -0000648081 00000 n -0000647834 00000 n -0000643222 00000 n -0000647957 00000 n -0000653854 00000 n -0000653477 00000 n -0000648218 00000 n -0000653600 00000 n -0000653726 00000 n -0000653790 00000 n -0000659575 00000 n -0000659202 00000 n -0000653991 00000 n -0000659325 00000 n -0000659449 00000 n -0000659512 00000 n -0000933441 00000 n -0000665332 00000 n -0000664955 00000 n -0000659712 00000 n -0000665078 00000 n -0000665204 00000 n -0000665268 00000 n -0000671141 00000 n -0000670768 00000 n -0000665469 00000 n -0000670891 00000 n -0000671015 00000 n -0000671078 00000 n -0000676988 00000 n -0000676611 00000 n -0000671278 00000 n -0000676734 00000 n -0000676860 00000 n -0000676924 00000 n -0000682840 00000 n -0000682531 00000 n -0000677125 00000 n -0000682654 00000 n -0000682778 00000 n -0000688713 00000 n -0000688401 00000 n -0000682977 00000 n -0000688524 00000 n -0000688650 00000 n -0000695444 00000 n -0000695595 00000 n -0000695872 00000 n -0000695291 00000 n -0000688850 00000 n -0000695747 00000 n -0000933566 00000 n -0000700058 00000 n -0000700122 00000 n -0000700186 00000 n -0000699871 00000 n -0000695970 00000 n -0000699994 00000 n -0000703549 00000 n -0000703302 00000 n -0000700284 00000 n -0000703425 00000 n -0000705118 00000 n -0000704868 00000 n -0000703660 00000 n -0000704991 00000 n -0000706784 00000 n -0000706536 00000 n -0000705229 00000 n -0000706659 00000 n -0000708919 00000 n -0000708669 00000 n -0000706895 00000 n -0000708792 00000 n -0000709863 00000 n -0000709615 00000 n -0000709030 00000 n -0000709738 00000 n -0000933691 00000 n -0000714595 00000 n -0000714871 00000 n -0000714451 00000 n -0000709961 00000 n -0000714744 00000 n -0000720064 00000 n -0000720339 00000 n -0000719920 00000 n -0000714982 00000 n -0000720214 00000 n -0000723883 00000 n -0000724159 00000 n -0000723739 00000 n -0000720450 00000 n -0000724032 00000 n -0000727839 00000 n -0000727591 00000 n -0000724270 00000 n -0000727714 00000 n -0000731873 00000 n -0000732149 00000 n -0000731729 00000 n -0000727950 00000 n -0000732022 00000 n -0000733478 00000 n -0000733230 00000 n -0000732260 00000 n -0000733353 00000 n -0000933816 00000 n -0000738456 00000 n +0000009086 00000 n +0000725469 00000 n +0000940913 00000 n +0000009135 00000 n +0000009166 00000 n +0000729288 00000 n +0000940820 00000 n +0000009215 00000 n +0000009252 00000 n +0000732969 00000 n +0000940727 00000 n +0000009301 00000 n +0000009339 00000 n +0000737278 00000 n +0000940648 00000 n +0000009388 00000 n +0000009426 00000 n 0000738608 00000 n -0000738952 00000 n -0000738303 00000 n -0000733589 00000 n -0000738763 00000 n -0000738889 00000 n -0000746502 00000 n -0000746651 00000 n -0000746802 00000 n -0000746954 00000 n -0000747230 00000 n -0000746331 00000 n -0000739114 00000 n -0000747106 00000 n -0000753564 00000 n -0000753715 00000 n -0000753863 00000 n -0000754015 00000 n -0000754290 00000 n -0000753393 00000 n -0000747341 00000 n -0000754164 00000 n -0000756608 00000 n -0000756885 00000 n -0000756464 00000 n -0000754401 00000 n -0000756760 00000 n -0000757914 00000 n -0000757664 00000 n -0000756996 00000 n -0000757787 00000 n -0000765964 00000 n -0000766114 00000 n -0000766265 00000 n -0000773611 00000 n -0000766537 00000 n -0000765802 00000 n -0000758012 00000 n -0000766413 00000 n -0000933941 00000 n -0000773760 00000 n -0000773911 00000 n -0000774123 00000 n -0000773449 00000 n -0000766699 00000 n -0000774059 00000 n -0000776971 00000 n -0000776785 00000 n -0000774247 00000 n -0000776908 00000 n -0000777396 00000 n -0000777209 00000 n -0000777069 00000 n -0000777332 00000 n -0000785533 00000 n -0000784539 00000 n -0000777468 00000 n -0000784662 00000 n -0000784725 00000 n -0000784850 00000 n -0000785346 00000 n -0000785471 00000 n -0000789444 00000 n -0000788815 00000 n -0000785631 00000 n -0000788938 00000 n -0000789380 00000 n -0000789542 00000 n -0000789995 00000 n -0000790329 00000 n -0000790685 00000 n -0000790711 00000 n -0000791222 00000 n -0000791260 00000 n -0000791955 00000 n -0000792288 00000 n -0000792368 00000 n -0000792748 00000 n -0000793390 00000 n -0000794054 00000 n -0000794682 00000 n -0000795325 00000 n -0000795615 00000 n -0000796268 00000 n -0000810356 00000 n -0000810787 00000 n -0000823186 00000 n -0000823614 00000 n -0000834721 00000 n -0000835056 00000 n -0000837142 00000 n -0000837364 00000 n -0000841555 00000 n -0000841798 00000 n -0000858786 00000 n -0000859321 00000 n -0000861597 00000 n -0000861829 00000 n -0000864212 00000 n -0000864450 00000 n -0000874132 00000 n -0000874509 00000 n -0000880499 00000 n -0000880819 00000 n -0000884869 00000 n -0000885213 00000 n -0000886836 00000 n -0000887072 00000 n -0000900877 00000 n -0000901256 00000 n -0000907529 00000 n -0000907797 00000 n -0000921289 00000 n -0000921778 00000 n -0000928585 00000 n -0000934066 00000 n -0000934186 00000 n -0000934309 00000 n -0000934435 00000 n -0000934552 00000 n -0000934644 00000 n -0000945479 00000 n -0000945666 00000 n -0000945851 00000 n -0000946034 00000 n -0000946205 00000 n -0000946375 00000 n -0000946546 00000 n -0000946716 00000 n -0000946891 00000 n -0000947065 00000 n -0000947239 00000 n -0000947416 00000 n -0000947591 00000 n -0000947768 00000 n -0000947943 00000 n -0000948120 00000 n -0000948295 00000 n -0000948472 00000 n -0000948647 00000 n -0000948824 00000 n -0000949019 00000 n -0000949253 00000 n -0000949469 00000 n -0000949662 00000 n -0000949844 00000 n -0000950024 00000 n -0000950209 00000 n -0000950392 00000 n -0000950577 00000 n -0000950760 00000 n -0000950945 00000 n -0000951125 00000 n -0000951294 00000 n -0000951465 00000 n -0000951635 00000 n -0000951806 00000 n -0000951976 00000 n -0000952151 00000 n -0000952326 00000 n -0000952503 00000 n -0000952678 00000 n -0000952855 00000 n -0000953029 00000 n -0000953203 00000 n -0000953380 00000 n -0000953555 00000 n -0000953732 00000 n -0000953907 00000 n -0000954095 00000 n -0000954298 00000 n -0000954499 00000 n -0000954702 00000 n -0000954902 00000 n -0000955102 00000 n -0000955305 00000 n -0000955506 00000 n -0000955709 00000 n -0000955910 00000 n -0000956113 00000 n -0000956314 00000 n -0000956517 00000 n -0000956718 00000 n -0000956921 00000 n -0000957122 00000 n -0000957308 00000 n -0000957497 00000 n -0000957703 00000 n -0000957946 00000 n -0000958157 00000 n -0000958337 00000 n -0000958508 00000 n -0000958639 00000 n -0000958757 00000 n -0000958873 00000 n -0000958989 00000 n -0000959106 00000 n -0000959224 00000 n -0000959341 00000 n -0000959457 00000 n -0000959577 00000 n -0000959701 00000 n -0000959825 00000 n -0000959952 00000 n -0000960064 00000 n -0000960182 00000 n -0000960296 00000 n -0000960376 00000 n -0000960416 00000 n -0000960653 00000 n +0000940518 00000 n +0000009474 00000 n +0000009520 00000 n +0000744019 00000 n +0000940439 00000 n +0000009569 00000 n +0000009604 00000 n +0000752361 00000 n +0000940346 00000 n +0000009653 00000 n +0000009687 00000 n +0000759420 00000 n +0000940253 00000 n +0000009736 00000 n +0000009771 00000 n +0000762015 00000 n +0000940174 00000 n +0000009820 00000 n +0000009856 00000 n +0000763043 00000 n +0000940058 00000 n +0000009904 00000 n +0000009944 00000 n +0000771668 00000 n +0000939993 00000 n +0000009993 00000 n +0000010019 00000 n +0000010839 00000 n +0000011139 00000 n +0000010071 00000 n +0000010958 00000 n +0000011019 00000 n +0000934347 00000 n +0000936084 00000 n +0000934201 00000 n +0000934930 00000 n +0000936521 00000 n +0000011566 00000 n +0000011385 00000 n +0000011249 00000 n +0000011504 00000 n +0000029985 00000 n +0000030136 00000 n +0000030286 00000 n +0000030443 00000 n +0000030600 00000 n +0000030757 00000 n +0000030919 00000 n +0000031076 00000 n +0000031227 00000 n +0000031383 00000 n +0000031545 00000 n +0000031698 00000 n +0000031851 00000 n +0000032003 00000 n +0000032155 00000 n +0000032308 00000 n +0000032461 00000 n +0000032614 00000 n +0000032776 00000 n +0000032933 00000 n +0000033095 00000 n +0000033248 00000 n +0000033402 00000 n +0000033556 00000 n +0000033710 00000 n +0000033864 00000 n +0000034017 00000 n +0000034171 00000 n +0000034333 00000 n +0000034490 00000 n +0000034651 00000 n +0000034803 00000 n +0000034957 00000 n +0000035111 00000 n +0000035267 00000 n +0000035418 00000 n +0000035572 00000 n +0000035726 00000 n +0000035880 00000 n +0000036034 00000 n +0000036188 00000 n +0000036341 00000 n +0000036495 00000 n +0000036649 00000 n +0000036803 00000 n +0000059254 00000 n +0000037078 00000 n +0000029494 00000 n +0000011637 00000 n +0000036956 00000 n +0000037017 00000 n +0000059408 00000 n +0000059560 00000 n +0000059714 00000 n +0000059866 00000 n +0000060020 00000 n +0000060174 00000 n +0000060327 00000 n +0000060480 00000 n +0000060631 00000 n +0000060784 00000 n +0000060938 00000 n +0000061092 00000 n +0000061246 00000 n +0000061400 00000 n +0000061554 00000 n +0000061708 00000 n +0000061862 00000 n +0000062016 00000 n +0000062170 00000 n +0000062323 00000 n +0000062476 00000 n +0000062629 00000 n +0000062783 00000 n +0000062937 00000 n +0000063091 00000 n +0000063244 00000 n +0000063397 00000 n +0000063549 00000 n +0000063703 00000 n +0000063857 00000 n +0000064011 00000 n +0000064164 00000 n +0000064316 00000 n +0000064470 00000 n +0000064624 00000 n +0000064778 00000 n +0000064930 00000 n +0000065084 00000 n +0000065237 00000 n +0000065390 00000 n +0000065543 00000 n +0000065697 00000 n +0000065851 00000 n +0000066004 00000 n +0000066156 00000 n +0000066309 00000 n +0000076842 00000 n +0000066524 00000 n +0000058747 00000 n +0000037175 00000 n +0000066462 00000 n +0000076996 00000 n +0000077149 00000 n +0000077303 00000 n +0000077455 00000 n +0000077609 00000 n +0000077762 00000 n +0000077912 00000 n +0000078066 00000 n +0000078219 00000 n +0000078373 00000 n +0000078527 00000 n +0000078676 00000 n +0000078830 00000 n +0000078983 00000 n +0000079137 00000 n +0000079290 00000 n +0000079444 00000 n +0000079596 00000 n +0000079750 00000 n +0000079904 00000 n +0000080058 00000 n +0000080212 00000 n +0000080363 00000 n +0000080578 00000 n +0000076519 00000 n +0000066608 00000 n +0000080517 00000 n +0000080981 00000 n +0000080800 00000 n +0000080662 00000 n +0000080919 00000 n +0000089840 00000 n +0000089994 00000 n +0000090150 00000 n +0000090307 00000 n +0000090466 00000 n +0000090622 00000 n +0000090776 00000 n +0000090930 00000 n +0000091083 00000 n +0000091236 00000 n +0000091449 00000 n +0000089629 00000 n +0000081052 00000 n +0000935938 00000 n +0000936639 00000 n +0000794446 00000 n +0000790601 00000 n +0000789980 00000 n +0000794509 00000 n +0000794383 00000 n +0000790414 00000 n +0000790476 00000 n +0000794320 00000 n +0000790228 00000 n +0000790290 00000 n +0000102544 00000 n +0000102694 00000 n +0000102847 00000 n +0000097341 00000 n +0000112313 00000 n +0000103120 00000 n +0000097186 00000 n +0000091546 00000 n +0000934493 00000 n +0000103060 00000 n +0000098551 00000 n +0000098797 00000 n +0000098844 00000 n +0000099237 00000 n +0000099258 00000 n +0000099565 00000 n +0000790352 00000 n +0000112464 00000 n +0000112618 00000 n +0000113016 00000 n +0000112158 00000 n +0000103245 00000 n +0000112771 00000 n +0000936230 00000 n +0000935218 00000 n +0000934785 00000 n +0000935650 00000 n +0000935075 00000 n +0000112892 00000 n +0000935361 00000 n +0000112954 00000 n +0000794257 00000 n +0000120741 00000 n +0000120894 00000 n +0000118770 00000 n +0000121232 00000 n +0000118623 00000 n +0000113216 00000 n +0000121047 00000 n +0000121109 00000 n +0000120479 00000 n +0000120598 00000 n +0000120645 00000 n +0000120719 00000 n +0000790166 00000 n +0000790104 00000 n +0000127064 00000 n +0000127215 00000 n +0000127428 00000 n +0000126917 00000 n +0000121396 00000 n +0000127367 00000 n +0000136992 00000 n +0000136254 00000 n +0000127538 00000 n +0000136373 00000 n +0000934639 00000 n +0000136496 00000 n +0000136558 00000 n +0000136620 00000 n +0000136682 00000 n +0000136744 00000 n +0000136806 00000 n +0000136868 00000 n +0000136930 00000 n +0000152821 00000 n +0000145048 00000 n +0000144079 00000 n +0000137127 00000 n +0000144198 00000 n +0000144259 00000 n +0000144320 00000 n +0000144381 00000 n +0000144442 00000 n +0000144502 00000 n +0000144563 00000 n +0000144624 00000 n +0000144684 00000 n +0000144745 00000 n +0000144806 00000 n +0000144867 00000 n +0000144928 00000 n +0000144988 00000 n +0000936757 00000 n +0000153534 00000 n +0000152682 00000 n +0000145132 00000 n +0000152978 00000 n +0000153101 00000 n +0000153163 00000 n +0000153225 00000 n +0000153287 00000 n +0000153349 00000 n +0000153411 00000 n +0000162320 00000 n +0000162715 00000 n +0000162181 00000 n +0000153682 00000 n +0000162472 00000 n +0000162653 00000 n +0000169744 00000 n +0000170454 00000 n +0000169605 00000 n +0000162838 00000 n +0000169896 00000 n +0000169958 00000 n +0000170020 00000 n +0000170082 00000 n +0000170144 00000 n +0000170206 00000 n +0000170268 00000 n +0000170330 00000 n +0000170392 00000 n +0000176168 00000 n +0000175622 00000 n +0000170551 00000 n +0000175741 00000 n +0000175802 00000 n +0000175863 00000 n +0000175923 00000 n +0000175984 00000 n +0000176045 00000 n +0000176106 00000 n +0000181648 00000 n +0000181800 00000 n +0000182257 00000 n +0000181501 00000 n +0000176265 00000 n +0000181951 00000 n +0000187097 00000 n +0000186677 00000 n +0000182380 00000 n +0000186796 00000 n +0000936875 00000 n +0000197234 00000 n +0000197395 00000 n +0000197550 00000 n +0000198008 00000 n +0000197079 00000 n +0000187207 00000 n +0000197700 00000 n +0000197884 00000 n +0000197946 00000 n +0000794194 00000 n +0000203059 00000 n +0000203301 00000 n +0000202879 00000 n +0000198118 00000 n +0000202998 00000 n +0000207309 00000 n +0000206944 00000 n +0000203398 00000 n +0000207063 00000 n +0000207186 00000 n +0000211528 00000 n +0000211166 00000 n +0000207406 00000 n +0000211285 00000 n +0000219624 00000 n +0000219776 00000 n +0000220297 00000 n +0000219477 00000 n +0000211625 00000 n +0000219927 00000 n +0000220113 00000 n +0000220175 00000 n +0000220235 00000 n +0000226556 00000 n +0000224229 00000 n +0000223744 00000 n +0000220407 00000 n +0000223863 00000 n +0000224046 00000 n +0000936993 00000 n +0000226955 00000 n +0000226417 00000 n +0000224326 00000 n +0000226707 00000 n +0000226831 00000 n +0000936376 00000 n +0000226893 00000 n +0000227522 00000 n +0000227281 00000 n +0000227065 00000 n +0000227400 00000 n +0000235165 00000 n +0000235315 00000 n +0000235463 00000 n +0000235613 00000 n +0000235763 00000 n +0000235911 00000 n +0000239255 00000 n +0000236246 00000 n +0000234986 00000 n +0000227606 00000 n +0000236061 00000 n +0000236185 00000 n +0000239406 00000 n +0000239553 00000 n +0000239764 00000 n +0000239100 00000 n +0000236382 00000 n +0000239703 00000 n +0000248003 00000 n +0000248151 00000 n +0000248301 00000 n +0000248449 00000 n +0000248599 00000 n +0000248750 00000 n +0000249084 00000 n +0000247824 00000 n +0000239874 00000 n +0000248899 00000 n +0000249022 00000 n +0000250096 00000 n +0000249916 00000 n +0000249233 00000 n +0000250035 00000 n +0000937111 00000 n +0000258834 00000 n +0000258982 00000 n +0000259131 00000 n +0000259279 00000 n +0000259429 00000 n +0000259580 00000 n +0000259914 00000 n +0000258655 00000 n +0000250180 00000 n +0000259729 00000 n +0000259852 00000 n +0000260926 00000 n +0000260746 00000 n +0000260063 00000 n +0000260865 00000 n +0000268257 00000 n +0000268405 00000 n +0000268553 00000 n +0000268889 00000 n +0000268102 00000 n +0000261010 00000 n +0000268704 00000 n +0000268827 00000 n +0000275578 00000 n +0000275726 00000 n +0000275876 00000 n +0000276209 00000 n +0000275423 00000 n +0000269038 00000 n +0000276026 00000 n +0000276147 00000 n +0000283237 00000 n +0000283385 00000 n +0000283535 00000 n +0000283871 00000 n +0000283082 00000 n +0000276358 00000 n +0000283686 00000 n +0000283809 00000 n +0000291564 00000 n +0000291711 00000 n +0000291860 00000 n +0000292194 00000 n +0000291409 00000 n +0000284032 00000 n +0000292010 00000 n +0000292132 00000 n +0000937229 00000 n +0000293220 00000 n +0000293039 00000 n +0000292355 00000 n +0000293158 00000 n +0000300227 00000 n +0000300375 00000 n +0000300525 00000 n +0000300859 00000 n +0000300072 00000 n +0000293304 00000 n +0000300676 00000 n +0000300797 00000 n +0000307384 00000 n +0000307532 00000 n +0000307681 00000 n +0000308017 00000 n +0000307229 00000 n +0000301008 00000 n +0000307832 00000 n +0000307955 00000 n +0000313826 00000 n +0000313975 00000 n +0000314309 00000 n +0000313679 00000 n +0000308165 00000 n +0000314126 00000 n +0000314247 00000 n +0000320125 00000 n +0000320274 00000 n +0000320610 00000 n +0000319978 00000 n +0000314457 00000 n +0000320425 00000 n +0000935795 00000 n +0000320548 00000 n +0000328309 00000 n +0000328460 00000 n +0000328609 00000 n +0000328757 00000 n +0000336667 00000 n +0000329277 00000 n +0000328146 00000 n +0000320759 00000 n +0000328908 00000 n +0000329029 00000 n +0000329091 00000 n +0000329153 00000 n +0000329215 00000 n +0000937347 00000 n +0000336818 00000 n +0000336966 00000 n +0000337117 00000 n +0000337268 00000 n +0000337421 00000 n +0000337574 00000 n +0000337727 00000 n +0000337940 00000 n +0000336472 00000 n +0000329438 00000 n +0000337878 00000 n +0000345035 00000 n +0000353578 00000 n +0000345369 00000 n +0000344896 00000 n +0000338050 00000 n +0000345185 00000 n +0000345307 00000 n +0000353730 00000 n +0000353878 00000 n +0000354029 00000 n +0000354180 00000 n +0000354328 00000 n +0000354479 00000 n +0000354691 00000 n +0000353391 00000 n +0000345543 00000 n +0000354629 00000 n +0000359696 00000 n +0000359847 00000 n +0000360059 00000 n +0000359549 00000 n +0000354827 00000 n +0000359998 00000 n +0000361018 00000 n +0000361295 00000 n +0000360879 00000 n +0000360169 00000 n +0000361170 00000 n +0000368009 00000 n +0000368158 00000 n +0000368310 00000 n +0000368462 00000 n +0000368802 00000 n +0000367838 00000 n +0000361379 00000 n +0000368614 00000 n +0000368738 00000 n +0000937465 00000 n +0000377511 00000 n +0000373271 00000 n +0000377662 00000 n +0000377941 00000 n +0000373118 00000 n +0000368939 00000 n +0000377813 00000 n +0000377877 00000 n +0000377171 00000 n +0000377291 00000 n +0000377339 00000 n +0000377414 00000 n +0000377488 00000 n +0000381390 00000 n +0000381204 00000 n +0000378094 00000 n +0000381327 00000 n +0000935505 00000 n +0000389191 00000 n +0000389339 00000 n +0000389491 00000 n +0000389832 00000 n +0000389029 00000 n +0000381476 00000 n +0000389642 00000 n +0000389768 00000 n +0000396070 00000 n +0000401393 00000 n +0000396222 00000 n +0000396372 00000 n +0000396775 00000 n +0000395908 00000 n +0000389982 00000 n +0000396524 00000 n +0000396587 00000 n +0000396650 00000 n +0000396713 00000 n +0000405780 00000 n +0000400778 00000 n +0000400591 00000 n +0000396912 00000 n +0000400714 00000 n +0000405844 00000 n +0000401270 00000 n +0000400863 00000 n +0000405717 00000 n +0000937590 00000 n +0000405377 00000 n +0000405497 00000 n +0000405545 00000 n +0000405620 00000 n +0000405694 00000 n +0000414173 00000 n +0000414322 00000 n +0000414474 00000 n +0000414815 00000 n +0000414011 00000 n +0000405945 00000 n +0000414625 00000 n +0000414751 00000 n +0000416678 00000 n +0000416492 00000 n +0000414977 00000 n +0000416615 00000 n +0000424191 00000 n +0000426617 00000 n +0000424533 00000 n +0000424047 00000 n +0000416776 00000 n +0000424342 00000 n +0000424469 00000 n +0000426832 00000 n +0000426473 00000 n +0000424695 00000 n +0000426769 00000 n +0000433842 00000 n +0000433529 00000 n +0000426930 00000 n +0000433652 00000 n +0000440820 00000 n +0000441098 00000 n +0000440676 00000 n +0000433979 00000 n +0000440972 00000 n +0000441035 00000 n +0000937715 00000 n +0000451269 00000 n +0000450954 00000 n +0000441222 00000 n +0000451077 00000 n +0000451141 00000 n +0000451205 00000 n +0000454116 00000 n +0000453680 00000 n +0000451406 00000 n +0000453803 00000 n +0000453866 00000 n +0000453929 00000 n +0000453991 00000 n +0000454054 00000 n +0000460117 00000 n +0000460587 00000 n +0000459973 00000 n +0000454201 00000 n +0000460268 00000 n +0000460395 00000 n +0000460459 00000 n +0000460523 00000 n +0000461425 00000 n +0000461239 00000 n +0000460711 00000 n +0000461362 00000 n +0000465216 00000 n +0000465366 00000 n +0000465707 00000 n +0000465063 00000 n +0000461510 00000 n +0000465517 00000 n +0000465643 00000 n +0000469308 00000 n +0000469459 00000 n +0000469735 00000 n +0000469155 00000 n +0000465818 00000 n +0000469611 00000 n +0000937840 00000 n +0000472293 00000 n +0000472569 00000 n +0000472149 00000 n +0000469846 00000 n +0000472443 00000 n +0000478820 00000 n +0000478969 00000 n +0000479246 00000 n +0000478667 00000 n +0000472680 00000 n +0000479121 00000 n +0000481345 00000 n +0000481030 00000 n +0000479383 00000 n +0000481153 00000 n +0000481217 00000 n +0000481281 00000 n +0000486530 00000 n +0000486681 00000 n +0000487142 00000 n +0000486377 00000 n +0000481430 00000 n +0000486829 00000 n +0000486953 00000 n +0000487016 00000 n +0000487079 00000 n +0000493983 00000 n +0000494135 00000 n +0000498767 00000 n +0000494410 00000 n +0000493830 00000 n +0000487266 00000 n +0000494283 00000 n +0000499357 00000 n +0000498623 00000 n +0000494534 00000 n +0000498918 00000 n +0000498981 00000 n +0000499044 00000 n +0000499107 00000 n +0000499170 00000 n +0000499232 00000 n +0000499294 00000 n +0000937965 00000 n +0000506329 00000 n +0000506479 00000 n +0000506754 00000 n +0000506176 00000 n +0000499468 00000 n +0000506628 00000 n +0000509736 00000 n +0000509173 00000 n +0000506865 00000 n +0000509296 00000 n +0000509359 00000 n +0000509422 00000 n +0000509485 00000 n +0000509548 00000 n +0000509611 00000 n +0000509674 00000 n +0000513118 00000 n +0000513266 00000 n +0000513543 00000 n +0000512965 00000 n +0000509821 00000 n +0000513417 00000 n +0000517858 00000 n +0000518008 00000 n +0000518348 00000 n +0000517705 00000 n +0000513654 00000 n +0000518160 00000 n +0000518285 00000 n +0000523783 00000 n +0000523934 00000 n +0000524209 00000 n +0000523630 00000 n +0000518459 00000 n +0000524083 00000 n +0000531363 00000 n +0000531515 00000 n +0000531788 00000 n +0000531210 00000 n +0000524333 00000 n +0000531664 00000 n +0000938090 00000 n +0000533402 00000 n +0000533087 00000 n +0000531912 00000 n +0000533210 00000 n +0000533274 00000 n +0000533338 00000 n +0000538937 00000 n +0000539087 00000 n +0000539236 00000 n +0000539508 00000 n +0000538775 00000 n +0000533500 00000 n +0000539384 00000 n +0000543224 00000 n +0000543372 00000 n +0000543650 00000 n +0000543071 00000 n +0000539632 00000 n +0000543524 00000 n +0000547505 00000 n +0000547258 00000 n +0000543761 00000 n +0000547381 00000 n +0000554393 00000 n +0000554669 00000 n +0000554249 00000 n +0000547642 00000 n +0000554543 00000 n +0000555857 00000 n +0000555545 00000 n +0000554793 00000 n +0000555668 00000 n +0000555731 00000 n +0000555794 00000 n +0000938215 00000 n +0000561882 00000 n +0000562159 00000 n +0000561738 00000 n +0000555942 00000 n +0000562033 00000 n +0000565751 00000 n +0000566090 00000 n +0000565607 00000 n +0000562283 00000 n +0000565903 00000 n +0000566027 00000 n +0000571394 00000 n +0000571735 00000 n +0000571250 00000 n +0000566214 00000 n +0000571545 00000 n +0000571671 00000 n +0000575296 00000 n +0000575635 00000 n +0000575152 00000 n +0000571859 00000 n +0000575448 00000 n +0000575572 00000 n +0000580948 00000 n +0000581289 00000 n +0000580804 00000 n +0000575759 00000 n +0000581099 00000 n +0000581225 00000 n +0000585438 00000 n +0000585839 00000 n +0000585294 00000 n +0000581413 00000 n +0000585589 00000 n +0000585713 00000 n +0000585776 00000 n +0000938340 00000 n +0000589808 00000 n +0000590212 00000 n +0000589664 00000 n +0000585950 00000 n +0000589958 00000 n +0000590084 00000 n +0000590148 00000 n +0000596310 00000 n +0000596585 00000 n +0000596166 00000 n +0000590323 00000 n +0000596460 00000 n +0000600859 00000 n +0000600480 00000 n +0000596709 00000 n +0000600603 00000 n +0000600667 00000 n +0000600731 00000 n +0000600795 00000 n +0000605328 00000 n +0000605478 00000 n +0000605630 00000 n +0000605904 00000 n +0000605166 00000 n +0000600983 00000 n +0000605780 00000 n +0000612104 00000 n +0000611854 00000 n +0000606028 00000 n +0000611977 00000 n +0000620033 00000 n +0000619281 00000 n +0000612228 00000 n +0000619404 00000 n +0000619467 00000 n +0000619530 00000 n +0000619593 00000 n +0000619656 00000 n +0000619719 00000 n +0000619782 00000 n +0000619844 00000 n +0000619907 00000 n +0000619970 00000 n +0000938465 00000 n +0000620652 00000 n +0000620402 00000 n +0000620156 00000 n +0000620525 00000 n +0000626736 00000 n +0000626363 00000 n +0000620737 00000 n +0000626486 00000 n +0000626610 00000 n +0000626673 00000 n +0000631948 00000 n +0000631571 00000 n +0000626873 00000 n +0000631694 00000 n +0000631821 00000 n +0000631884 00000 n +0000636936 00000 n +0000636500 00000 n +0000632085 00000 n +0000636623 00000 n +0000636747 00000 n +0000636810 00000 n +0000636873 00000 n +0000639541 00000 n +0000639292 00000 n +0000637073 00000 n +0000639415 00000 n +0000642978 00000 n +0000642731 00000 n +0000639652 00000 n +0000642854 00000 n +0000938590 00000 n +0000644625 00000 n +0000644376 00000 n +0000643115 00000 n +0000644499 00000 n +0000646526 00000 n +0000646279 00000 n +0000644736 00000 n +0000646402 00000 n +0000648303 00000 n +0000648054 00000 n +0000646637 00000 n +0000648177 00000 n +0000653273 00000 n +0000653026 00000 n +0000648414 00000 n +0000653149 00000 n +0000659046 00000 n +0000658669 00000 n +0000653410 00000 n +0000658792 00000 n +0000658918 00000 n +0000658982 00000 n +0000664767 00000 n +0000664394 00000 n +0000659183 00000 n +0000664517 00000 n +0000664641 00000 n +0000664704 00000 n +0000938715 00000 n +0000670524 00000 n +0000670147 00000 n +0000664904 00000 n +0000670270 00000 n +0000670396 00000 n +0000670460 00000 n +0000676333 00000 n +0000675960 00000 n +0000670661 00000 n +0000676083 00000 n +0000676207 00000 n +0000676270 00000 n +0000682180 00000 n +0000681803 00000 n +0000676470 00000 n +0000681926 00000 n +0000682052 00000 n +0000682116 00000 n +0000688032 00000 n +0000687723 00000 n +0000682317 00000 n +0000687846 00000 n +0000687970 00000 n +0000693905 00000 n +0000693593 00000 n +0000688169 00000 n +0000693716 00000 n +0000693842 00000 n +0000700636 00000 n +0000700787 00000 n +0000701064 00000 n +0000700483 00000 n +0000694042 00000 n +0000700939 00000 n +0000938840 00000 n +0000705250 00000 n +0000705314 00000 n +0000705378 00000 n +0000705063 00000 n +0000701162 00000 n +0000705186 00000 n +0000708741 00000 n +0000708494 00000 n +0000705476 00000 n +0000708617 00000 n +0000710310 00000 n +0000710060 00000 n +0000708852 00000 n +0000710183 00000 n +0000711976 00000 n +0000711728 00000 n +0000710421 00000 n +0000711851 00000 n +0000714111 00000 n +0000713861 00000 n +0000712087 00000 n +0000713984 00000 n +0000715055 00000 n +0000714807 00000 n +0000714222 00000 n +0000714930 00000 n +0000938965 00000 n +0000719787 00000 n +0000720063 00000 n +0000719643 00000 n +0000715153 00000 n +0000719936 00000 n +0000725256 00000 n +0000725531 00000 n +0000725112 00000 n +0000720174 00000 n +0000725406 00000 n +0000729075 00000 n +0000729351 00000 n +0000728931 00000 n +0000725642 00000 n +0000729224 00000 n +0000733031 00000 n +0000732783 00000 n +0000729462 00000 n +0000732906 00000 n +0000737065 00000 n +0000737341 00000 n +0000736921 00000 n +0000733142 00000 n +0000737214 00000 n +0000738670 00000 n +0000738422 00000 n +0000737452 00000 n +0000738545 00000 n +0000939090 00000 n +0000743648 00000 n +0000743800 00000 n +0000744144 00000 n +0000743495 00000 n +0000738781 00000 n +0000743955 00000 n +0000744081 00000 n +0000751694 00000 n +0000751843 00000 n +0000751994 00000 n +0000752146 00000 n +0000752422 00000 n +0000751523 00000 n +0000744306 00000 n +0000752298 00000 n +0000758756 00000 n +0000758907 00000 n +0000759055 00000 n +0000759207 00000 n +0000759482 00000 n +0000758585 00000 n +0000752533 00000 n +0000759356 00000 n +0000761800 00000 n +0000762077 00000 n +0000761656 00000 n +0000759593 00000 n +0000761952 00000 n +0000763106 00000 n +0000762856 00000 n +0000762188 00000 n +0000762979 00000 n +0000771156 00000 n +0000771306 00000 n +0000771457 00000 n +0000778803 00000 n +0000771729 00000 n +0000770994 00000 n +0000763204 00000 n +0000771605 00000 n +0000939215 00000 n +0000778952 00000 n +0000779103 00000 n +0000779315 00000 n +0000778641 00000 n +0000771891 00000 n +0000779251 00000 n +0000782163 00000 n +0000781977 00000 n +0000779439 00000 n +0000782100 00000 n +0000782588 00000 n +0000782401 00000 n +0000782261 00000 n +0000782524 00000 n +0000790725 00000 n +0000789731 00000 n +0000782660 00000 n +0000789854 00000 n +0000789917 00000 n +0000790042 00000 n +0000790538 00000 n +0000790663 00000 n +0000794636 00000 n +0000794007 00000 n +0000790823 00000 n +0000794130 00000 n +0000794572 00000 n +0000794734 00000 n +0000795187 00000 n +0000795521 00000 n +0000795877 00000 n +0000795903 00000 n +0000796414 00000 n +0000796452 00000 n +0000797147 00000 n +0000797480 00000 n +0000797560 00000 n +0000797940 00000 n +0000798582 00000 n +0000799246 00000 n +0000799874 00000 n +0000800517 00000 n +0000800807 00000 n +0000801460 00000 n +0000815621 00000 n +0000816059 00000 n +0000828458 00000 n +0000828886 00000 n +0000839993 00000 n +0000840328 00000 n +0000842414 00000 n +0000842636 00000 n +0000846827 00000 n +0000847070 00000 n +0000864058 00000 n +0000864593 00000 n +0000866869 00000 n +0000867101 00000 n +0000869484 00000 n +0000869722 00000 n +0000879404 00000 n +0000879781 00000 n +0000885771 00000 n +0000886091 00000 n +0000890141 00000 n +0000890485 00000 n +0000892108 00000 n +0000892344 00000 n +0000906149 00000 n +0000906528 00000 n +0000912801 00000 n +0000913069 00000 n +0000926561 00000 n +0000927050 00000 n +0000933857 00000 n +0000939340 00000 n +0000939460 00000 n +0000939584 00000 n +0000939710 00000 n +0000939827 00000 n +0000939919 00000 n +0000950857 00000 n +0000951044 00000 n +0000951229 00000 n +0000951412 00000 n +0000951597 00000 n +0000951768 00000 n +0000951938 00000 n +0000952109 00000 n +0000952279 00000 n +0000952450 00000 n +0000952622 00000 n +0000952796 00000 n +0000952973 00000 n +0000953148 00000 n +0000953325 00000 n +0000953500 00000 n +0000953677 00000 n +0000953852 00000 n +0000954029 00000 n +0000954204 00000 n +0000954381 00000 n +0000954576 00000 n +0000954810 00000 n +0000955026 00000 n +0000955219 00000 n +0000955401 00000 n +0000955581 00000 n +0000955766 00000 n +0000955949 00000 n +0000956134 00000 n +0000956317 00000 n +0000956502 00000 n +0000956682 00000 n +0000956851 00000 n +0000957022 00000 n +0000957192 00000 n +0000957363 00000 n +0000957533 00000 n +0000957710 00000 n +0000957885 00000 n +0000958062 00000 n +0000958237 00000 n +0000958414 00000 n +0000958588 00000 n +0000958762 00000 n +0000958939 00000 n +0000959114 00000 n +0000959291 00000 n +0000959466 00000 n +0000959655 00000 n +0000959858 00000 n +0000960059 00000 n +0000960262 00000 n +0000960462 00000 n +0000960662 00000 n +0000960865 00000 n +0000961066 00000 n +0000961269 00000 n +0000961470 00000 n +0000961673 00000 n +0000961874 00000 n +0000962077 00000 n +0000962278 00000 n +0000962481 00000 n +0000962682 00000 n +0000962868 00000 n +0000963057 00000 n +0000963263 00000 n +0000963506 00000 n +0000963727 00000 n +0000963910 00000 n +0000964081 00000 n +0000964230 00000 n +0000964348 00000 n +0000964464 00000 n +0000964580 00000 n +0000964697 00000 n +0000964816 00000 n +0000964933 00000 n +0000965049 00000 n +0000965165 00000 n +0000965284 00000 n +0000965408 00000 n +0000965531 00000 n +0000965644 00000 n +0000965762 00000 n +0000965876 00000 n +0000965956 00000 n +0000965996 00000 n +0000966233 00000 n trailer -<< /Size 1690 -/Root 1688 0 R -/Info 1689 0 R -/ID [<94AEE02880956BFC6059356CDB53304A> <94AEE02880956BFC6059356CDB53304A>] >> +<< /Size 1703 +/Root 1701 0 R +/Info 1702 0 R +/ID [<61CA1EFCCE8FE7A729F5054A02CA66A1> <61CA1EFCCE8FE7A729F5054A02CA66A1>] >> startxref -961295 +966875 %%EOF diff --git a/docs/src/intro.tex b/docs/src/intro.tex index f5bad6e1..82363f25 100644 --- a/docs/src/intro.tex +++ b/docs/src/intro.tex @@ -297,6 +297,7 @@ constant whose current value is \verb|3.0.0| \subsection{Application structure} +\label{sec:appstruct} The main underlying principle of the PSBLAS library is that the library objects are created and exist with reference to a discretized @@ -411,6 +412,38 @@ single call to \verb|psb_spins|; this, however, would entail a doubling of memory occupation, and thus would be almost always far from optimal. +\subsubsection{User-defined index mappings} + +PSBLAS supports user-defined global to local index mappings, subject +to the constraints outlined in sec.~\ref{sec:appstruct}: +\begin{enumerate} +\item The set of indices owned locally must be mapped to the set + $1\dots n_{\hbox{row}_i}$; +\item The set of halo points must be mapped to the set + $n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$; +\end{enumerate} +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: +\begin{enumerate} +\item Initialize index space with + \verb|psb_cdall(ictx,desc,info,vl=vl,lidx=lidx)| passing the vectors + \verb|vl(:)| containing the set of global indices owned by the + current process and \verb|lidx(:)| containing the corresponding + local indices; +\item Add the halo points \verb|ja(:)| and their associated local + indices \verb|lidx(:)| with a(some) call(s) to + \verb|psb_cdins(nz,ja,desc,info,lidx=lidx)|; +\item Assemble the descriptor with \verb|psb_cdasb|; +\item Build the sparse matrices and vectors, optionally making use in + \verb|psb_spins| and \verb|psb_geins| of the \verb|local| argument + specifying that the indices in \verb|ia|, \verb|ja| and \verb|irw|, + respectively, are already local indices. +\end{enumerate} + + \subsection{Programming model} The PSBLAS librarary is based on the Single Program Multiple Data