diff --git a/docs/html/userhtml0x.png b/docs/html/userhtml0x.png
index 3e324fc8..7b06aa11 100644
Binary files a/docs/html/userhtml0x.png and b/docs/html/userhtml0x.png differ
diff --git a/docs/html/userhtml10x.png b/docs/html/userhtml10x.png
index 11f5ee76..d95c1025 100644
Binary files a/docs/html/userhtml10x.png and b/docs/html/userhtml10x.png differ
diff --git a/docs/html/userhtml11x.png b/docs/html/userhtml11x.png
index 223013a6..af3a720c 100644
Binary files a/docs/html/userhtml11x.png and b/docs/html/userhtml11x.png differ
diff --git a/docs/html/userhtml12x.png b/docs/html/userhtml12x.png
index 2729ea64..b3d9749d 100644
Binary files a/docs/html/userhtml12x.png and b/docs/html/userhtml12x.png differ
diff --git a/docs/html/userhtml15x.png b/docs/html/userhtml15x.png
index 7e4a6663..3a2dbe01 100644
Binary files a/docs/html/userhtml15x.png and b/docs/html/userhtml15x.png differ
diff --git a/docs/html/userhtml22x.png b/docs/html/userhtml22x.png
index dcf36e0b..f0a71dab 100644
Binary files a/docs/html/userhtml22x.png and b/docs/html/userhtml22x.png differ
diff --git a/docs/html/userhtml23x.png b/docs/html/userhtml23x.png
index a4a99534..d8e518ee 100644
Binary files a/docs/html/userhtml23x.png and b/docs/html/userhtml23x.png differ
diff --git a/docs/html/userhtml24x.png b/docs/html/userhtml24x.png
index 52e4a38d..3ade441e 100644
Binary files a/docs/html/userhtml24x.png and b/docs/html/userhtml24x.png differ
diff --git a/docs/html/userhtml27x.png b/docs/html/userhtml27x.png
index 8aee367e..f94ad5e3 100644
Binary files a/docs/html/userhtml27x.png and b/docs/html/userhtml27x.png differ
diff --git a/docs/html/userhtml28x.png b/docs/html/userhtml28x.png
index 5d26369e..6a7c4b7f 100644
Binary files a/docs/html/userhtml28x.png and b/docs/html/userhtml28x.png differ
diff --git a/docs/html/userhtml30x.png b/docs/html/userhtml30x.png
index bee44974..c4cd68bb 100644
Binary files a/docs/html/userhtml30x.png and b/docs/html/userhtml30x.png differ
diff --git a/docs/html/userhtml33x.png b/docs/html/userhtml33x.png
index d8cf193c..6e996fed 100644
Binary files a/docs/html/userhtml33x.png and b/docs/html/userhtml33x.png differ
diff --git a/docs/html/userhtml34x.png b/docs/html/userhtml34x.png
index bee44974..c4cd68bb 100644
Binary files a/docs/html/userhtml34x.png and b/docs/html/userhtml34x.png differ
diff --git a/docs/html/userhtml4x.png b/docs/html/userhtml4x.png
index 157b057a..4734ca48 100644
Binary files a/docs/html/userhtml4x.png and b/docs/html/userhtml4x.png differ
diff --git a/docs/html/userhtml6x.png b/docs/html/userhtml6x.png
index 6f595d91..acf15505 100644
Binary files a/docs/html/userhtml6x.png and b/docs/html/userhtml6x.png differ
diff --git a/docs/html/userhtml7x.png b/docs/html/userhtml7x.png
index 11f5ee76..d95c1025 100644
Binary files a/docs/html/userhtml7x.png and b/docs/html/userhtml7x.png differ
diff --git a/docs/html/userhtml9x.png b/docs/html/userhtml9x.png
index cdd3f219..d381c15a 100644
Binary files a/docs/html/userhtml9x.png and b/docs/html/userhtml9x.png differ
diff --git a/docs/html/userhtmlli1.html b/docs/html/userhtmlli1.html
index 96d6150d..2fdc700c 100644
--- a/docs/html/userhtmlli1.html
+++ b/docs/html/userhtmlli1.html
@@ -54,9 +54,9 @@ href="userhtmlse3.html#x8-180003.1.8" id="QQ2-8-21">Clone — clone current
3.1.9 CNV — convert internal storage format
3.1.10 psb_cd_get_large_threshold — Get threshold for index mapping switch
+href="userhtmlse3.html#x8-200003.1.10" id="QQ2-8-23">psb_cd_get_hash_threshold — Get threshold for index mapping switch
3.1.11 psb_cd_set_large_threshold — Set threshold for index mapping switch
+href="userhtmlse3.html#x8-210003.1.11" id="QQ2-8-24">psb_cd_set_hash_threshold — Set threshold for index mapping switch
3.1.12 get_p_adjcncy — Get process adjacency list
3.1.13 _type.
and other accelerators.
-ith = psb_cd_get_large_threshold() +ith = psb_cd_get_hash_threshold()
@@ -780,13 +780,13 @@ class="description">
-call psb_cd_set_large_threshold(ith) +call psb_cd_set_hash_threshold(ith)
@@ -815,11 +815,15 @@ class="pplb7t-">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.
-
+
This threshold guides the library into using a list based or a hash-table based descriptor
+for global to local index conversion; if the size of the global index space is
+below this threshold, a list based structure is used, if it is above a hash-table
+based structure is used. 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.
+
list = desc%get_p_adjcncy()-
-
+
+
+
Type:
Asynchronous. +
Asynchronous.
+
On Return
+
+
Function value
The current list of adjacent processes, i.e. processes with which the +
The current list of adjacent processes, i.e. processes with which the current one has to exchange halo data.
+
call desc%set_p_adjcncy(list)-
-
+
+
+
Type:
Asynchronous. +
Asynchronous.
+
On Entry
+
+
list
the list of adjacent processes.
the list of adjacent processes.
Scope: local.
Type: required.
Intent: in.
Specified as: a one-dimensional array of integers of kind psb_ipk_.
Note: this method can be called after a call to psb_cdall and before a call to psb_cdasb.
+
Note: this method can be called after a call to psb_cdall and before a call to psb_cdasb.
The user is specifying here some knowledge about which processes are topological
neighbours of the current process. The availability of this information may speed up
the execution of the assembly call psb_cdasb.
-
+
call desc%fnd_owner(idx,iprc,info)
-
-
+
+
-
-
+
Type:
-
-
Synchronous.
+
Synchronous.
-
-
+
On Entry
-
-
+
-
-
+
idx
-
-
the list of global indices for which we need the owning processes.
the list of global indices for which we need the owning processes.
Scope: local.
Type: Intent: in.
Specified as: a one-dimensional array of integers of kind psb_lpk_.
-
-
+
On Return
-
-
+
-
-
+
iprc
-
-
the list of processes owning the indices in idx.
the list of processes owning the indices in idx.
Scope: local.
Type: Intent: in.
Specified as: an allocatable one-dimensional array of integers of kind
psb_ipk_.
-Note: this method may or may not actually require communications, depending on the
+
Note: this method may or may not actually require communications, depending on the
exact internal data storage; given that the choice of storage may be altered by
runtime parameters, it is necessary for safety that this method is called by all
processes.
-
+
3.1.15 Named Constants
-
+
-
-
+
psb_none_
-
-
Generic no-op;
+
Generic no-op;
-
-
+
psb_root_
-
-
Default root process for broadcast and scatter operations;
+
Default root process for broadcast and scatter operations;
-
-
+
psb_nohalo_
-
-
Do not fetch halo elements;
+
Do not fetch halo elements;
-
-
+
psb_halo_
-
-
Fetch halo elements from neighbouring processes;
+
Fetch halo elements from neighbouring processes;
-
-
+
psb_sum_
-
-
Sum overlapped elements
+
Sum overlapped elements
-
-
+
psb_avg_
-
-
Average overlapped elements
+
Average overlapped elements
-
-
+
psb_comm_halo_
-
-
Exchange data based on the halo_index list;
+
Exchange data based on the halo_index list;
-
-
+
psb_comm_ext_
-
-
Exchange data based on the ext_index list;
+
Exchange data based on the ext_index list;
-
-
+
psb_comm_ovr_
-
-
Exchange data based on the ovrlap_index list;
+
Exchange data based on the ovrlap_index list;
-
-
+
psb_comm_mov_
-
-
Exchange data based on the ovr_mst_idx list;
+
Exchange data based on the ovr_mst_idx list;
-
+
3.2 Sparse Matrix class
-; the type declaration is shown
href="#x8-26001r2">2 where T is
a placeholder for the data type and precision variants
-
-
+
S
-
-
Single precision real;
+
Single precision real;
-
-
+
D
-
-
Double precision real;
+
Double precision real;
-
-
+
C
-
-
Single precision complex;
+
Single precision complex;
-
-
+
Z
-
-
Double precision complex;
+
Double precision complex;
-
-
+
LS,LD,LC,LZ
-
-
Same numeric type as above, but with psb_lpk_ integer indices.
-The actual data is contained in the polymorphic component a%a of type
+
Same numeric type as above, but with psb_lpk_ integer indices.
+
The actual data is contained in the polymorphic component a%a of type
psb_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.
-
@@ -1107,13 +1111,13 @@ to the library at runtime via the
-
+
type :: psb_Tspmat_type
class(psb_T_base_sparse_mat), allocatable :: a
end type psb_Tspmat_type
-
+
Listing 2: The PSBLAS defined data type that contains a sparse matrix.
@@ -1121,10 +1125,10 @@ class="content"> The PSBLAS defined data type that contains a sparse matrix.
- The following very common formats are precompiled in PSBLAS and thus are
+
The following very common formats are precompiled in PSBLAS and thus are
always available:
-
-
+
psb_T_coo_sparse_mat
-
-
Coordinate storage;
+
Coordinate storage;
-
-
+
psb_T_csr_sparse_mat
-
-
Compressed storage by rows;
+
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
+
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
+
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,
+
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
+
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
+
The only storage variant supporting the build state is COO; all other variants are
obtained by conversion to/from it.
3.2.1 Sparse Matrix Methods
-
+
3.2.2 get_nrows — Get number of rows in a sparse matrix
@@ -1191,43 +1195,43 @@ obtained by conversion to/from it.
nr = a%get_nrows()
-
-
+
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix
the sparse matrix
Scope: local
-
+
-
-
+
On Return
-
-
+
-
-
+
Function value
-
-
The number of rows of sparse matrix a.
-
+
The number of rows of sparse matrix a.
+
3.2.3 get_ncols — Get number of columns in a sparse matrix
@@ -1236,43 +1240,43 @@ class="description">
nc = a%get_ncols()
-
-
+
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix
the sparse matrix
Scope: local
-
+
-
-
+
On Return
-
-
+
-
-
+
Function value
-
-
The number of columns of sparse matrix a.
-
+
The number of columns of sparse matrix a.
+
3.2.4 get_nnzeros — Get number of nonzero elements in a sparse matrix
@@ -1281,51 +1285,51 @@ class="description">
nz = a%get_nnzeros()
-
-
+
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix
the sparse matrix
Scope: local
-
+
-
-
+
On Return
-
-
+
-
-
+
Function value
-
-
The number of nonzero elements stored in sparse matrix a.
-The number of nonzero elements stored in sparse matrix a.
+
Notes
-
-
The function value is specific to the storage format of matrix a; some
+
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.
-
+
3.2.5 get_size — Get maximum number of nonzero elements in a sparse
matrix
@@ -1335,44 +1339,44 @@ matrix
maxnz = a%get_size()
-
-
+
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix
the sparse matrix
Scope: local
-
+
-
-
+
On Return
-
-
+
-
-
+
Function value
-
-
The maximum number of nonzero elements that can be stored in sparse
+
The maximum number of nonzero elements that can be stored in sparse
matrix a using its current memory allocation.
-
+
3.2.6 sizeof — Get memory occupation in bytes of a sparse matrix
@@ -1381,131 +1385,131 @@ class="description">
memory_size = a%sizeof()
-
-
+
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix
the sparse matrix
Scope: local
-
+
-
-
+
On Return
-
-
+
-
-
+
Function value
-
-
The memory occupation in bytes.
-
+
The memory occupation in bytes.
+
3.2.7 get_fmt — Short description of the dynamic type
-write(*,*) a%get_fmt()
-
+
write(*,*) a%get_fmt()
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix
the sparse matrix
Scope: local
-
+
-
-
+
On Return
-
-
+
-
-
+
Function value
-
-
A short string describing the dynamic type of the matrix. Predefined
+
A short string describing the dynamic type of the matrix. Predefined
values include NULL, COO, CSR and CSC.
-
+
3.2.8 is_bld, is_upd, is_asb — Status check
-if (a%is_bld()) then
if (a%is_bld()) then
if (a%is_upd()) then
if (a%is_asb()) then
-
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix
the sparse matrix
Scope: local
-
+
-
-
+
On Return
-
-
+
-
-
+
Function value
-
-
A logical value indicating whether the matrix is in the Build, Update or
+
A logical value indicating whether the matrix is in the Build, Update or
Assembled state, respectively.
-
+
3.2.9 is_lower, is_upper, is_triangle, is_unit — Format check
@@ -1517,45 +1521,45 @@ if (a%is_upper()) then
if (a%is_lower()) then
if (a%is_unit()) then
-
-
+
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix
the sparse matrix
Scope: local
-
+
-
-
+
On Return
-
-
+
-
-
+
Function value
-
-
A logical value indicating whether the matrix is triangular; if
+
A logical value indicating whether the matrix is triangular; if
is_triangle() returns .true. check also if it is lower, upper and with a
unit (i.e. assumed) diagonal.
-
+
3.2.10 cscnv — Convert to a different storage format
@@ -1565,77 +1569,77 @@ class="description">
call a%cscnv(b,info [, type, mold, dupl])
call a%cscnv(info [, type, mold, dupl])
-
-
+
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix.
the sparse matrix.
A variable of type psb_Tspmat_type.
Scope: local.
-
-
+
type
-
-
a string requesting a new format.
a string requesting a new format.
Type: optional.
-
-
+
mold
-
-
a variable of class(psb_T_base_sparse_mat) requesting a new format.
a variable of class(psb_T_base_sparse_mat) requesting a new format.
Type: optional.
-
-
+
dupl
-
-
an integer value specifing how to handle duplicates (see Named
+
an integer value specifing how to handle duplicates (see Named
Constants below)
-
+
-
-
+
On Return
-
-
+
-
-
+
b,a
-
-
A copy of a with a new storage format.
A copy of a with a new storage format.
A variable of type psb_Tspmat_type.
-
-
+
info
-
-
Return code.
-The mold arguments may be employed to interface with special devices, such as GPUs
+
Return code.
+
The mold arguments may be employed to interface with special devices, such as GPUs
and other accelerators.
-
+
3.2.11 csclip — Reduce to a submatrix
@@ -1645,231 +1649,231 @@ and other accelerators.
call a%csclip(b,info[,&
& imin,imax,jmin,jmax,rscale,cscale])
-
-
Returns the submatrix A(imin:imax,jmin:jmax), optionally rescaling row/col
+
+
Returns the submatrix A(imin:imax,jmin:jmax), optionally rescaling row/col
indices to the range 1:imax-imin+1,1:jmax-jmin+1.
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix.
the sparse matrix.
A variable of type psb_Tspmat_type.
Scope: local.
-
-
+
imin,imax,jmin,jmax
-
-
Minimum and maximum row and column indices.
Minimum and maximum row and column indices.
Type: optional.
-
-
+
rscale,cscale
-
-
Whether to rescale row/column indices. Type: optional.
-
+
Whether to rescale row/column indices. Type: optional.
+
-
-
+
On Return
-
-
+
-
-
+
b
-
-
A copy of a submatrix of a.
A copy of a submatrix of a.
A variable of type psb_Tspmat_type.
-
-
+
info
-
-
Return code.
-
+
Return code.
+
3.2.12 clean_zeros — Eliminate zero coefficients
-call a%clean_zeros(info)
-
Eliminates zero coefficients explicitly stored in the input matrix.
-
+
call a%clean_zeros(info)
+
Eliminates zero coefficients explicitly stored in the input matrix.
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix.
the sparse matrix.
A variable of type psb_Tspmat_type.
Scope: local.
-
+
-
-
+
On Return
-
-
+
-
-
+
a
-
-
The matrix a without zero coefficients.
The matrix a without zero coefficients.
A variable of type psb_Tspmat_type.
-
-
+
info
-
-
Return code.
-Return code.
+
Notes
-
-
Depending on the internal storage format, there may still be some
+
Depending on the internal storage format, there may still be some
amount of zero padding in the output.
-
-
Any explicit zeros on the main diagonal are always kept in the data
+
Any explicit zeros on the main diagonal are always kept in the data
structure.
-
+
3.2.13 get_diag — Get main diagonal
-call a%get_diag(d,info)
-
Returns a copy of the main diagonal.
+
call a%get_diag(d,info)
+
Returns a copy of the main diagonal.
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix.
the sparse matrix.
A variable of type psb_Tspmat_type.
Scope: local.
-
+
-
-
+
On Return
-
-
+
-
-
+
d
-
-
A copy of the main diagonal.
A copy of the main diagonal.
A one-dimensional array of the appropriate type.
-
-
+
info
-
-
Return code.
-
+
Return code.
+
3.2.14 clip_diag — Cut out main diagonal
-call a%clip_diag(b,info)
-
Returns a copy of a without the main diagonal.
+
call a%clip_diag(b,info)
+
Returns a copy of a without the main diagonal.
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix.
the sparse matrix.
A variable of type psb_Tspmat_type.
Scope: local.
-
+
-
-
+
On Return
-
-
+
-
-
+
b
-
-
A copy of a without the main diagonal.
A copy of a without the main diagonal.
A variable of type psb_Tspmat_type.
-
-
+
info
-
-
Return code.
-
+
Return code.
+
3.2.15 tril — Return the lower triangle
@@ -1879,83 +1883,83 @@ class="description">
call a%tril(l,info[,&
& diag,imin,imax,jmin,jmax,rscale,cscale,u])
-
-
Returns the lower triangular part of submatrix A(imin:imax,jmin:jmax),
+
+
Returns the lower triangular part of submatrix A(imin:imax,jmin:jmax),
optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1
and returing the complementary upper triangle.
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix.
the sparse matrix.
A variable of type psb_Tspmat_type.
Scope: local.
-
-
+
diag
-
-
Include diagonals up to this one; diag=1 means the first superdiagonal,
+
Include diagonals up to this one; diag=1 means the first superdiagonal,
diag=-1 means the first subdiagonal. Default 0.
-
-
+
imin,imax,jmin,jmax
-
-
Minimum and maximum row and column indices.
Minimum and maximum row and column indices.
Type: optional.
-
-
+
rscale,cscale
-
-
Whether to rescale row/column indices. Type: optional.
-
+
Whether to rescale row/column indices. Type: optional.
+
-
-
+
On Return
-
-
+
-
-
+
l
-
-
A copy of the lower triangle of a.
A copy of the lower triangle of a.
A variable of type psb_Tspmat_type.
-
-
+
u
-
-
(optional) A copy of the upper triangle of a.
(optional) A copy of the upper triangle of a.
A variable of type psb_Tspmat_type.
-
-
+
info
-
-
Return code.
-
+
Return code.
+
3.2.16 triu — Return the upper triangle
@@ -1965,221 +1969,221 @@ class="description">
call a%triu(u,info[,&
& diag,imin,imax,jmin,jmax,rscale,cscale,l])
-
-
Returns the upper triangular part of submatrix A(imin:imax,jmin:jmax),
+
+
Returns the upper triangular part of submatrix A(imin:imax,jmin:jmax),
optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1,
and returing the complementary lower triangle.
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix.
the sparse matrix.
A variable of type psb_Tspmat_type.
Scope: local.
-
-
+
diag
-
-
Include diagonals up to this one; diag=1 means the first superdiagonal,
+
Include diagonals up to this one; diag=1 means the first superdiagonal,
diag=-1 means the first subdiagonal. Default 0.
-
-
+
imin,imax,jmin,jmax
-
-
Minimum and maximum row and column indices.
Minimum and maximum row and column indices.
Type: optional.
-
-
+
rscale,cscale
-
-
Whether to rescale row/column indices. Type: optional.
-
+
Whether to rescale row/column indices. Type: optional.
+
-
-
+
On Return
-
-
+
-
-
+
u
-
-
A copy of the upper triangle of a.
A copy of the upper triangle of a.
A variable of type psb_Tspmat_type.
-
-
+
l
-
-
(optional) A copy of the lower triangle of a.
(optional) A copy of the lower triangle of a.
A variable of type psb_Tspmat_type.
-
-
+
info
-
-
Return code.
-
+
Return code.
+
3.2.17 psb_set_mat_default — Set default storage format
-call psb_set_mat_default(a)
-
+
call psb_set_mat_default(a)
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
a variable of class(psb_T_base_sparse_mat) requesting a new default
+
a variable of class(psb_T_base_sparse_mat) requesting a new default
storage format.
Type: required.
-
+
3.2.18 clone — Clone current object
-call a%clone(b,info)
-
+
call a%clone(b,info)
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
a
-
-
the sparse matrix.
the sparse matrix.
Scope: local.
-
+
-
-
+
On Return
-
-
+
-
-
+
b
-
-
A copy of the input object.
+
A copy of the input object.
-
-
+
info
-
-
Return code.
-
+
Return code.
+
3.2.19 Named Constants
-
+
-
-
+
psb_dupl_ovwrt_
-
-
Duplicate coefficients should be overwritten (i.e. ignore duplications)
+
Duplicate coefficients should be overwritten (i.e. ignore duplications)
-
-
+
psb_dupl_add_
-
-
Duplicate coefficients should be added;
+
Duplicate coefficients should be added;
-
-
+
psb_dupl_err_
-
-
Duplicate coefficients should trigger an error conditino
+
Duplicate coefficients should trigger an error conditino
-
-
+
psb_upd_dflt_
-
-
Default update strategy for matrix coefficients;
+
Default update strategy for matrix coefficients;
-
-
+
psb_upd_srch_
-
-
Update strategy based on search into the data structure;
+
Update strategy based on search into the data structure;
-
-
+
psb_upd_perm_
-
-
Update strategy based on additional permutation data (see tools routine
+
Update strategy based on additional permutation data (see tools routine
description).
-
+
3.3 Dense Vector Data Structure
-The . 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 The type declaration is shown in figure 3 where T is a placeholder for the data
type and precision variants
-
-
+
I
-
-
Integer;
+
Integer;
-
-
+
S
-
-
Single precision real;
+
Single precision real;
-
-
+
D
-
-
Double precision real;
+
Double precision real;
-
-
+
C
-
-
Single precision complex;
+
Single precision complex;
-
-
+
Z
-
-
Double precision complex.
-The actual data is contained in the polymorphic component v%v; the separation between
+
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.
-
@@ -2246,7 +2250,7 @@ memory.
-
+
type psb_T_base_vect_type
TYPE(KIND_), allocatable :: v(:)
@@ -2257,7 +2261,7 @@ memory.
end type psb_T_vect_type
-
+
Listing 3: The PSBLAS defined data type that contains a dense vector.
@@ -2267,88 +2271,88 @@ class="content"> The PSBLAS defined data type that contains a dense vector.
3.3.1 Vector Methods
-
+
3.3.2 get_nrows — Get number of rows in a dense vector
-nr = v%get_nrows()
-
+
nr = v%get_nrows()
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
v
-
-
the dense vector
the dense vector
Scope: local
-
+
-
-
+
On Return
-
-
+
-
-
+
Function value
-
-
The number of rows of dense vector v.
-
+
The number of rows of dense vector v.
+
3.3.3 sizeof — Get memory occupation in bytes of a dense vector
-memory_size = v%sizeof()
-
+
memory_size = v%sizeof()
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
v
-
-
the dense vector
the dense vector
Scope: local
-
+
-
-
+
On Return
-
-
+
-
-
+
Function value
-
-
The memory occupation in bytes.
-
+
The memory occupation in bytes.
+
3.3.4 set — Set contents of the vector
@@ -2359,35 +2363,35 @@ class="description">
call v%set(vect[,first,last])
call v%zero()
-
-
+
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
v
-
-
the dense vector
the dense vector
Scope: local
-
-
+
alpha
-
-
A scalar value.
A scalar value.
Scope: local
Type: in.
Specified as: a number of the data type indicated in Table 1.
-
-
+
first,last
-
-
Boundaries for setting in the vector.
Boundaries for setting in the vector.
Scope: local
Type: Intent: in.
Specified as: integers.
-
-
+
vect
-
-
An array
An array
Scope: local
Type: Intent: in.
Specified as: a number of the data type indicated in Table 1.
-Note that a call to v%zero() is provided as a shorthand, but is equivalent to a call
+
Note that a call to v%zero() is provided as a shorthand, but is equivalent to a call
to v%set(zero) with the zero constant having the appropriate type and
kind.
-
+
-
-
+
On Return
-
-
+
-
-
+
v
-
-
the dense vector, with updated entries
the dense vector, with updated entries
Scope: local
-
+
3.3.5 get_vect — Get a copy of the vector contents
@@ -2454,54 +2458,54 @@ class="newline" />
extv = v%get_vect([n])
-
-
+
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
v
-
-
the dense vector
the dense vector
Scope: local
-
-
+
n
-
-
Size to be returned
Size to be returned
Scope: local.
Type: optional; default: entire vector.
-
+
-
-
+
On Return
-
-
+
-
-
+
Function value
-
-
An allocatable array holding a copy of the dense vector contents. If
+
An allocatable array holding a copy of the dense vector contents. If
the argument n is specified, the size of the returned array equals the
minimum between n is
-
+
3.3.6 clone — Clone current object
@@ -2521,57 +2525,57 @@ class="zplmr7m-">n
is
call x%clone(y,info)
-
-
+
+
-
-
+
Type:
-
-
Asynchronous.
+
Asynchronous.
-
-
+
On Entry
-
-
+
-
-
+
x
-
-
the dense vector.
the dense vector.
Scope: local.
-
+
-
-
+
On Return
-
-
+
-
-
+
y
-
-
A copy of the input object.
+
A copy of the input object.
-
-
+
info
-
-
Return code.
+ Return code.
-
+
3.4 Preconditioner data structure
-Our base library offers support for simple well known preconditioners like Diagonal
+
Our base library offers support for simple well known preconditioners like Diagonal
Scaling or Block Jacobi with incomplete factorization ILU(0).
-
A preconditioner is held in the A preconditioner is held in the psb_Tprec
@@ -2592,7 +2596,7 @@ preconditioner.
-
+
type psb_Tprec_type
@@ -2600,7 +2604,7 @@ preconditioner.
end type psb_Tprec_type
-
+
Listing 4: The PSBLAS defined data type that contains a preconditioner.
@@ -2610,70 +2614,70 @@ class="content">The PSBLAS defined data type that contains a preconditioner.
3.5 Heap data structure
-Among the tools routines of sec. Among the tools routines of sec. 6, we have a number of sorting utilities; the heap
sort is implemented in terms of heaps having the following signatures:
-
-
+
psb_T_heap
-
-
: a heap containing elements of type T, where T can be i,s,c,d,z for
+
: a heap containing elements of type T, where T can be i,s,c,d,z for
integer, real and complex data;
-
-
+
psb_T_idx_heap
-
-
: a heap containing elements of type T, as above, together with an integer
+
: a heap containing elements of type T, as above, together with an integer
index.
-Given a heap object, the following methods are defined on it:
+
Given a heap object, the following methods are defined on it:
-
-
+
init
-
-
Initialize memory; also choose ascending or descending order;
+
Initialize memory; also choose ascending or descending order;
-
-
+
howmany
-
-
Current heap occupancy;
+
Current heap occupancy;
-
-
+
insert
-
-
Add an item (or an item and its index);
+
Add an item (or an item and its index);
-
-
+
get_first
-
-
Remove and return the first element;
+
Remove and return the first element;
-
-
+
dump
-
-
Print on file;
+
Print on file;
-
-
+
free
-
-
Release memory.
-These objects are used to implement the factorization and approximate inversion
+
Release memory.
+
These objects are used to implement the factorization and approximate inversion
algorithms.
diff --git a/docs/psblas-3.9.pdf b/docs/psblas-3.9.pdf
index b9951e59..f6e82066 100644
--- a/docs/psblas-3.9.pdf
+++ b/docs/psblas-3.9.pdf
@@ -5,19 +5,19 @@
/Type /ObjStm
/N 100
/First 865
-/Length 16060
+/Length 16050
>>
stream
1 0 5 38 6 195 9 235 10 329 13 370 14 488 17 534 18 672 21 718
22 846 25 892 26 1045 29 1096 30 1292 33 1338 34 1471 37 1512 38 1691 41 1737
42 1913 45 1964 46 2112 49 2163 50 2450 53 2501 54 2788 57 2839 58 3136 61 3187
62 3484 65 3535 66 3862 69 3913 70 4181 73 4232 74 4442 77 4493 78 4751 81 4803
-82 5234 85 5286 86 5717 89 5769 90 6063 93 6115 94 6409 97 6461 98 6827 101 6879
-102 7018 105 7065 106 7212 109 7264 110 7431 113 7483 114 7817 117 7869 118 8218 121 8270
-122 8677 125 8729 126 9164 129 9216 130 9595 133 9647 134 9965 137 10017 138 10285 141 10337
-142 10701 145 10754 146 11064 149 11117 150 11346 153 11399 154 11683 157 11736 158 11955 161 12008
-162 12255 165 12308 166 12547 169 12600 170 12839 173 12892 174 13220 177 13273 178 13489 181 13542
-182 13681 185 13728 186 13918 189 13970 190 14099 193 14151 194 14480 197 14532 198 14906 201 14958
+82 5229 85 5281 86 5707 89 5759 90 6053 93 6105 94 6399 97 6451 98 6817 101 6869
+102 7008 105 7055 106 7202 109 7254 110 7421 113 7473 114 7807 117 7859 118 8208 121 8260
+122 8667 125 8719 126 9154 129 9206 130 9585 133 9637 134 9955 137 10007 138 10275 141 10327
+142 10691 145 10744 146 11054 149 11107 150 11336 153 11389 154 11673 157 11726 158 11945 161 11998
+162 12245 165 12298 166 12537 169 12590 170 12829 173 12882 174 13210 177 13263 178 13479 181 13532
+182 13671 185 13718 186 13908 189 13960 190 14089 193 14141 194 14470 197 14522 198 14896 201 14948
% 1 0 obj
<< /S /GoTo /D (title.0) >>
% 5 0 obj
@@ -97,11 +97,11 @@ stream
% 78 0 obj
<< /S /GoTo /D (subsubsection.3.1.10) >>
% 81 0 obj
-(\376\377\0003\000.\0001\000.\0001\0000\000\040\000p\000s\000b\000\137\000c\000d\000\137\000g\000e\000t\000\137\000l\000a\000r\000g\000e\000\137\000t\000h\000r\000e\000s\000h\000o\000l\000d\000\040\040\024\000\040\000G\000e\000t\000\040\000t\000h\000r\000e\000s\000h\000o\000l\000d\000\040\000f\000o\000r\000\040\000i\000n\000d\000e\000x\000\040\000m\000a\000p\000p\000i\000n\000g\000\040\000s\000w\000i\000t\000c\000h)
+(\376\377\0003\000.\0001\000.\0001\0000\000\040\000p\000s\000b\000\137\000c\000d\000\137\000g\000e\000t\000\137\000h\000a\000s\000h\000\137\000t\000h\000r\000e\000s\000h\000o\000l\000d\000\040\040\024\000\040\000G\000e\000t\000\040\000t\000h\000r\000e\000s\000h\000o\000l\000d\000\040\000f\000o\000r\000\040\000i\000n\000d\000e\000x\000\040\000m\000a\000p\000p\000i\000n\000g\000\040\000s\000w\000i\000t\000c\000h)
% 82 0 obj
<< /S /GoTo /D (subsubsection.3.1.11) >>
% 85 0 obj
-(\376\377\0003\000.\0001\000.\0001\0001\000\040\000p\000s\000b\000\137\000c\000d\000\137\000s\000e\000t\000\137\000l\000a\000r\000g\000e\000\137\000t\000h\000r\000e\000s\000h\000o\000l\000d\000\040\040\024\000\040\000S\000e\000t\000\040\000t\000h\000r\000e\000s\000h\000o\000l\000d\000\040\000f\000o\000r\000\040\000i\000n\000d\000e\000x\000\040\000m\000a\000p\000p\000i\000n\000g\000\040\000s\000w\000i\000t\000c\000h)
+(\376\377\0003\000.\0001\000.\0001\0001\000\040\000p\000s\000b\000\137\000c\000d\000\137\000s\000e\000t\000\137\000h\000a\000s\000h\000\137\000t\000h\000r\000e\000s\000h\000o\000l\000d\000\040\040\024\000\040\000S\000e\000t\000\040\000t\000h\000r\000e\000s\000h\000o\000l\000d\000\040\000f\000o\000r\000\040\000i\000n\000d\000e\000x\000\040\000m\000a\000p\000p\000i\000n\000g\000\040\000s\000w\000i\000t\000c\000h)
% 86 0 obj
<< /S /GoTo /D (subsubsection.3.1.12) >>
% 89 0 obj
@@ -776,7 +776,7 @@ endstream
endobj
735 0 obj
<<
-/Length 15914
+/Length 15923
>>
stream
0 g 0 G
@@ -978,42 +978,42 @@ BT
[-1500(14)]TJ
0 g 0 G
0 0 1 rg 0 0 1 RG
- 0 -12.071 Td [(3.1.10)]TJ 1.02 0 0 1 169.335 445.788 Tm [(psb)]TJ
+ 0 -12.071 Td [(3.1.10)]TJ 0.98 0 0 1 169.335 445.788 Tm [(psb)]TJ
ET
q
-1 0 0 1 185.968 445.987 cm
+1 0 0 1 185.339 445.987 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F84 9.9626 Tf 1.02 0 0 1 188.957 445.788 Tm [(cd)]TJ
+/F84 9.9626 Tf 0.98 0 0 1 188.328 445.788 Tm [(cd)]TJ
ET
q
-1 0 0 1 200.275 445.987 cm
+1 0 0 1 199.226 445.987 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F84 9.9626 Tf 1.02 0 0 1 203.264 445.788 Tm [(get)]TJ
+/F84 9.9626 Tf 0.98 0 0 1 202.215 445.788 Tm [(get)]TJ
ET
q
-1 0 0 1 217.692 445.987 cm
+1 0 0 1 216.1 445.987 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F84 9.9626 Tf 1.02 0 0 1 220.681 445.788 Tm [(lar)18(ge)]TJ
+/F84 9.9626 Tf 0.98 0 0 1 219.089 445.788 Tm [(hash)]TJ
ET
q
-1 0 0 1 243.668 445.987 cm
+1 0 0 1 240.073 445.987 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F84 9.9626 Tf 1.02 0 0 1 246.657 445.788 Tm [(thr)18(eshold)-430(\227)-430(Get)-430(thr)18(eshold)-430(for)-430(index)]TJ 1 0 0 1 169.634 433.833 Tm [(mapping)-250(switch)]TJ
+/F84 9.9626 Tf 0.98 0 0 1 243.061 445.788 Tm [(thr)18(eshold)-194(\227)-193(Get)-194(thr)18(eshold)-194(for)-194(index)-193(map-)]TJ 1 0 0 1 169.335 433.833 Tm [(ping)-250(switch)]TJ
0 g 0 G
- [-335(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)-500(.)]TJ
+ [-849(.)-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
[-1500(14)]TJ
0 g 0 G
0 0 1 rg 0 0 1 RG
- -31.881 -12.072 Td [(3.1.11)]TJ 0.98 0 0 1 169.335 421.761 Tm [(psb)]TJ
+ -31.582 -12.072 Td [(3.1.11)]TJ 0.98 0 0 1 169.335 421.761 Tm [(psb)]TJ
ET
q
1 0 0 1 185.339 421.961 cm
@@ -1034,14 +1034,14 @@ q
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F84 9.9626 Tf 0.98 0 0 1 217.8 421.761 Tm [(lar)18(ge)]TJ
+/F84 9.9626 Tf 0.98 0 0 1 217.8 421.761 Tm [(hash)]TJ
ET
q
-1 0 0 1 239.903 421.961 cm
+1 0 0 1 238.784 421.961 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F84 9.9626 Tf 0.98 0 0 1 242.892 421.761 Tm [(thr)18(eshold)-215(\227)-215(Set)-215(thr)19(eshold)-215(for)-215(index)-215(map-)]TJ 1 0 0 1 169.335 409.806 Tm [(ping)-250(switch)]TJ
+/F84 9.9626 Tf 0.98 0 0 1 241.773 421.761 Tm [(thr)18(eshold)-234(\227)-234(Set)-234(thr)18(eshold)-234(for)-234(index)-234(map-)]TJ 1 0 0 1 169.335 409.806 Tm [(ping)-250(switch)]TJ
0 g 0 G
[-849(.)-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
@@ -2248,7 +2248,7 @@ stream
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [98.899 430.027 242.012 442.087]
+/Rect [98.899 430.027 221.947 442.087]
/A << /S /GoTo /D (subsubsection.3.1.10) >>
>>
% 709 0 obj
@@ -6604,7 +6604,7 @@ endstream
endobj
1050 0 obj
<<
-/Length 5028
+/Length 5031
>>
stream
0 g 0 G
@@ -6702,17 +6702,17 @@ q
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 0.98 0 0 1 236.461 293.636 Tm [(large)]TJ
+/F75 9.9626 Tf 0.98 0 0 1 236.461 293.636 Tm [(hash)]TJ
ET
q
-1 0 0 1 259.299 293.835 cm
+1 0 0 1 258.206 293.835 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 0.98 0 0 1 262.288 293.636 Tm [(threshold)-194(\227)-194(Get)-194(threshold)-194(fo)1(r)-194(index)-194(mapping)-194(switch)]TJ
+/F75 9.9626 Tf 0.98 0 0 1 261.195 293.636 Tm [(threshold)-207(\227)-207(Get)-206(threshold)-207(for)-207(index)-207(mapping)-206(switch)]TJ
0 g 0 G
0 g 0 G
-/F131 9.9626 Tf 1 0 0 1 150.705 274.346 Tm [(ith)-525(=)-525(psb_cd_get_large_threshold\050\051)]TJ
+/F131 9.9626 Tf 1 0 0 1 150.705 274.346 Tm [(ith)-525(=)-525(psb_cd_get_hash_threshold\050\051)]TJ
0 g 0 G
/F75 9.9626 Tf 0 -22.421 Td [(T)90(ype:)]TJ
0 g 0 G
@@ -6744,17 +6744,17 @@ q
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 0.98 0 0 1 235.368 182.634 Tm [(large)]TJ
+/F75 9.9626 Tf 0.98 0 0 1 235.368 182.634 Tm [(hash)]TJ
ET
q
-1 0 0 1 258.206 182.833 cm
+1 0 0 1 257.113 182.833 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 0.98 0 0 1 261.195 182.634 Tm [(threshold)-238(\227)-239(Set)-238(threshold)-239(for)-238(index)-239(mapping)-238(switch)]TJ
+/F75 9.9626 Tf 0.98 0 0 1 260.101 182.634 Tm [(threshold)-255(\227)-254(Set)-255(thres)1(h)-1(o)1(ld)-255(for)-254(index)-255(mapping)-254(switch)]TJ
0 g 0 G
0 g 0 G
-/F131 9.9626 Tf 1 0 0 1 150.705 163.345 Tm [(call)-525(psb_cd_set_large_threshold\050ith\051)]TJ
+/F131 9.9626 Tf 1 0 0 1 150.705 163.345 Tm [(call)-525(psb_cd_set_hash_threshold\050ith\051)]TJ
0 g 0 G
/F75 9.9626 Tf 0 -22.422 Td [(T)90(ype:)]TJ
0 g 0 G
@@ -6771,7 +6771,7 @@ endstream
endobj
1055 0 obj
<<
-/Length 5864
+/Length 5806
>>
stream
0 g 0 G
@@ -6780,86 +6780,82 @@ stream
BT
/F75 9.9626 Tf 99.895 706.129 Td [(ith)]TJ
0 g 0 G
-/F84 9.9626 Tf 17.704 0 Td [(the)-250(new)-250(thr)18(eshold)-250(for)-250(communication)-250(descriptors.)]TJ 7.203 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(gr)18(eater)-250(than)-250(zer)18(o.)]TJ 1.02 0 0 1 99.895 637.495 Tm [(Note:)-578(the)-382(thr)18(eshold)-383(value)-382(is)-382(only)-382(queried)-382(by)-382(the)-382(library)-382(at)-382(the)-382(time)-383(a)-382(call)]TJ 1.02 0 0 1 99.895 625.54 Tm [(to)]TJ/F131 9.9626 Tf 1 0 0 1 112.066 625.54 Tm [(psb_cdall)]TJ/F84 9.9626 Tf 1.02 0 0 1 162.448 625.54 Tm [(is)-326(executed,)-345(ther)17(efor)18(e)-326(changing)-325(the)-326(thr)18(eshold)-326(has)-326(no)-325(ef)17(f)1(ect)-326(on)]TJ 1.02 0 0 1 99.895 613.585 Tm [(communication)-271(descriptors)-270(that)-271(have)-271(alr)18(eady)-271(been)-271(initialized.)-381(Mor)18(eover)-271(the)]TJ 1 0 0 1 99.895 601.63 Tm [(thr)18(eshold)-250(must)-250(have)-250(the)-250(same)-250(value)-250(on)-250(all)-250(pr)18(ocesses.)]TJ/F75 9.9626 Tf 0 -26.933 Td [(3.1.12)-1000(get)]TJ
+/F84 9.9626 Tf 17.704 0 Td [(the)-250(new)-250(thr)18(eshold)-250(for)-250(communication)-250(descriptors.)]TJ 7.203 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(global)]TJ/F84 9.9626 Tf 28.782 0 Td [(.)]TJ -60.523 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value)-250(gr)18(eater)-250(than)-250(zer)18(o.)]TJ 1.02 0 0 1 99.587 634.849 Tm [(This)-247(thr)17(eshold)-247(guides)-247(the)-248(library)-247(into)-247(using)-248(a)-247(list)-248(based)-247(or)-247(a)-248(hash-table)-247(based)]TJ 1.02 0 0 1 99.895 622.893 Tm [(descriptor)-277(for)-276(global)-277(to)-277(local)-276(index)-277(conversion;)-292(if)-277(the)-277(size)-276(of)-277(the)-277(global)-276(index)]TJ 1.02 0 0 1 99.895 610.938 Tm [(space)-351(is)-351(below)-351(this)-351(thr)18(eshold,)-377(a)-351(list)-351(based)-351(str)8(uctur)17(e)-351(is)-351(used,)-377(if)-351(it)-351(is)-351(above)-351(a)]TJ 0.986 0 0 1 99.895 598.983 Tm [(hash-table)-252(based)-253(str)9(uctur)18(e)-252(is)-253(used.)-314(Note:)-313(the)-253(thr)19(eshold)-253(value)-252(is)-252(only)-252(queried)-253(by)]TJ 1.02 0 0 1 99.895 587.028 Tm [(the)-259(library)-259(at)-260(the)-259(time)-259(a)-259(call)-259(to)]TJ/F131 9.9626 Tf 1 0 0 1 237.399 587.028 Tm [(psb_cdall)]TJ/F84 9.9626 Tf 1.02 0 0 1 287.106 587.028 Tm [(is)-259(executed,)-263(ther)18(efor)18(e)-260(changing)-259(the)]TJ 1.017 0 0 1 99.895 575.073 Tm [(thr)18(eshold)-245(has)-244(no)-244(ef)17(f)1(ect)-244(on)-245(communication)-244(descriptors)-244(that)-245(have)-244(alr)18(eady)-244(been)]TJ 1 0 0 1 99.895 563.118 Tm [(initialized.)-310(Mor)18(eover)-250(the)-250(thr)18(eshold)-250(must)-250(have)-250(the)-250(same)-250(value)-250(on)-250(all)-250(pr)18(ocesses.)]TJ/F75 9.9626 Tf 0 -29.334 Td [(3.1.12)-1000(get)]TJ
ET
q
-1 0 0 1 149.2 574.896 cm
+1 0 0 1 149.2 533.983 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 152.189 574.697 Td [(p)]TJ
+/F75 9.9626 Tf 152.189 533.784 Td [(p)]TJ
ET
q
-1 0 0 1 158.874 574.896 cm
+1 0 0 1 158.874 533.983 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 161.863 574.697 Td [(adjcncy)-250(\227)-250(Get)-250(process)-250(adjacency)-250(list)]TJ
+/F75 9.9626 Tf 161.863 533.784 Td [(adjcncy)-250(\227)-250(Get)-250(process)-250(adjacency)-250(list)]TJ
0 g 0 G
0 g 0 G
-/F131 9.9626 Tf -61.968 -18.964 Td [(list)-525(=)-1050(desc%get_p_adjcncy\050\051)]TJ
+/F131 9.9626 Tf -61.968 -19.711 Td [(list)-525(=)-1050(desc%get_p_adjcncy\050\051)]TJ
0 g 0 G
-/F75 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ
+/F75 9.9626 Tf 0 -23.074 Td [(T)90(ype:)]TJ
0 g 0 G
/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ
0 g 0 G
-/F75 9.9626 Tf -29.44 -19.483 Td [(On)-250(Return)]TJ
+/F75 9.9626 Tf -29.44 -21.467 Td [(On)-250(Return)]TJ
0 g 0 G
0 g 0 G
- 0 -19.484 Td [(Function)-250(value)]TJ
+ 0 -21.467 Td [(Function)-250(value)]TJ
0 g 0 G
-/F84 9.9626 Tf 0.98 0 0 1 172.363 495.953 Tm [(The)-252(curr)18(ent)-252(list)-252(of)-253(adjacent)-252(pr)18(oc)1(esses,)-253(i.e.)-316(pr)19(ocesses)-253(with)-252(which)]TJ 1 0 0 1 124.802 483.998 Tm [(the)-250(curr)18(ent)-250(one)-250(has)-250(to)-250(exchange)-250(halo)-250(data.)]TJ/F75 9.9626 Tf -24.907 -26.933 Td [(3.1.13)-1000(set)]TJ
+/F84 9.9626 Tf 0.98 0 0 1 172.363 448.065 Tm [(The)-252(curr)18(ent)-252(list)-252(of)-253(adjacent)-252(pr)18(oc)1(esses,)-253(i.e.)-316(pr)19(ocesses)-253(with)-252(which)]TJ 1 0 0 1 124.802 436.11 Tm [(the)-250(curr)18(ent)-250(one)-250(has)-250(to)-250(exchange)-250(halo)-250(data.)]TJ/F75 9.9626 Tf -24.907 -29.334 Td [(3.1.13)-1000(set)]TJ
ET
q
-1 0 0 1 148.085 457.264 cm
+1 0 0 1 148.085 406.975 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 151.073 457.065 Td [(p)]TJ
+/F75 9.9626 Tf 151.073 406.776 Td [(p)]TJ
ET
q
-1 0 0 1 157.758 457.264 cm
+1 0 0 1 157.758 406.975 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 160.747 457.065 Td [(adjcncy)-250(\227)-250(Set)-250(process)-250(adjacency)-250(list)]TJ
+/F75 9.9626 Tf 160.747 406.776 Td [(adjcncy)-250(\227)-250(Set)-250(process)-250(adjacency)-250(list)]TJ
0 g 0 G
0 g 0 G
-/F131 9.9626 Tf -60.852 -18.964 Td [(call)-525(desc%set_p_adjcncy\050list\051)]TJ
+/F131 9.9626 Tf -60.852 -19.711 Td [(call)-525(desc%set_p_adjcncy\050list\051)]TJ
0 g 0 G
-/F75 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ
+/F75 9.9626 Tf 0 -23.074 Td [(T)90(ype:)]TJ
0 g 0 G
/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ
0 g 0 G
-/F75 9.9626 Tf -29.44 -19.483 Td [(On)-250(Entry)]TJ
+/F75 9.9626 Tf -29.44 -21.467 Td [(On)-250(Entry)]TJ
0 g 0 G
0 g 0 G
- 0 -19.483 Td [(list)]TJ
+ 0 -21.467 Td [(list)]TJ
0 g 0 G
-/F84 9.9626 Tf 19.358 0 Td [(the)-250(list)-250(of)-250(adjacent)-250(pr)18(ocesses.)]TJ 5.549 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one-dimensional)-250(array)-250(of)-250(integers)-250(of)-250(kind)]TJ/F131 9.9626 Tf 250.209 0 Td [(psb_ipk_)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 1.02 0 0 1 99.895 309.688 Tm [(Note:)-521(this)-354(method)-353(can)-354(be)-353(called)-354(after)-354(a)-353(call)-354(to)]TJ/F131 9.9626 Tf 1 0 0 1 316.246 309.688 Tm [(psb_cdall)]TJ/F84 9.9626 Tf 1.02 0 0 1 366.913 309.688 Tm [(and)-354(befor)18(e)-354(a)-353(call)]TJ 1.02 0 0 1 99.895 297.733 Tm [(to)]TJ/F131 9.9626 Tf 1 0 0 1 111.504 297.733 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 1.02 0 0 1 158.577 297.733 Tm [(.)-380(The)-270(user)-271(i)1(s)-271(specifying)-270(her)17(e)-270(some)-270(knowledge)-271(about)-270(which)-270(pr)17(o-)]TJ 0.986 0 0 1 99.895 285.778 Tm [(cesses)-255(ar)19(e)-255(topological)-255(neighbours)-254(of)-255(the)-254(curr)18(ent)-255(pr)18(ocess.)-317(The)-255(availability)-254(of)-255(this)]TJ 1 0 0 1 99.895 273.823 Tm [(information)-250(may)-250(speed)-250(up)-250(the)-250(execution)-250(of)-250(the)-250(assembly)-250(call)]TJ/F131 9.9626 Tf 269.656 0 Td [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(.)]TJ/F75 9.9626 Tf -316.729 -26.933 Td [(3.1.14)-1000(fnd)]TJ
+/F84 9.9626 Tf 19.358 0 Td [(the)-250(list)-250(of)-250(adjacent)-250(pr)18(ocesses.)]TJ 5.549 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.956 Td [(Speci\002ed)-250(as:)-310(a)-250(one-dimensional)-250(array)-250(of)-250(integers)-250(of)-250(kind)]TJ/F131 9.9626 Tf 250.209 0 Td [(psb_ipk_)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 1.02 0 0 1 99.895 249.777 Tm [(Note:)-521(this)-354(method)-353(can)-354(be)-353(called)-354(after)-354(a)-353(call)-354(to)]TJ/F131 9.9626 Tf 1 0 0 1 316.246 249.777 Tm [(psb_cdall)]TJ/F84 9.9626 Tf 1.02 0 0 1 366.913 249.777 Tm [(and)-354(befor)18(e)-354(a)-353(call)]TJ 1.02 0 0 1 99.895 237.822 Tm [(to)]TJ/F131 9.9626 Tf 1 0 0 1 111.504 237.822 Tm [(psb_cdasb)]TJ/F84 9.9626 Tf 1.02 0 0 1 158.577 237.822 Tm [(.)-380(The)-270(user)-271(i)1(s)-271(specifying)-270(her)17(e)-270(some)-270(knowledge)-271(about)-270(which)-270(pr)17(o-)]TJ 0.986 0 0 1 99.895 225.866 Tm [(cesses)-255(ar)19(e)-255(topological)-255(neighbours)-254(of)-255(the)-254(curr)18(ent)-255(pr)18(ocess.)-317(The)-255(availability)-254(of)-255(this)]TJ 1 0 0 1 99.895 213.911 Tm [(information)-250(may)-250(speed)-250(up)-250(the)-250(execution)-250(of)-250(the)-250(assembly)-250(call)]TJ/F131 9.9626 Tf 269.656 0 Td [(psb_cdasb)]TJ/F84 9.9626 Tf 47.073 0 Td [(.)]TJ/F75 9.9626 Tf -316.729 -29.333 Td [(3.1.14)-1000(fnd)]TJ
ET
q
-1 0 0 1 151.412 247.089 cm
+1 0 0 1 151.412 184.777 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 154.401 246.89 Td [(owner)-250(\227)-250(Find)-250(the)-250(owner)-250(process)-250(of)-250(a)-250(set)-250(of)-250(indices)]TJ
+/F75 9.9626 Tf 154.401 184.578 Td [(owner)-250(\227)-250(Find)-250(the)-250(owner)-250(process)-250(of)-250(a)-250(set)-250(of)-250(indices)]TJ
0 g 0 G
0 g 0 G
-/F131 9.9626 Tf -54.506 -18.964 Td [(call)-525(desc%fnd_owner\050idx,iprc,info\051)]TJ
+/F131 9.9626 Tf -54.506 -19.711 Td [(call)-525(desc%fnd_owner\050idx,iprc,info\051)]TJ
0 g 0 G
-/F75 9.9626 Tf 0 -20.813 Td [(T)90(ype:)]TJ
+/F75 9.9626 Tf 0 -23.074 Td [(T)90(ype:)]TJ
0 g 0 G
/F84 9.9626 Tf 29.828 0 Td [(Synchr)18(onous.)]TJ
0 g 0 G
-/F75 9.9626 Tf -29.828 -19.483 Td [(On)-250(Entry)]TJ
-0 g 0 G
-0 g 0 G
- 0 -19.484 Td [(idx)]TJ
+/F75 9.9626 Tf -29.828 -21.467 Td [(On)-250(Entry)]TJ
0 g 0 G
-/F84 9.9626 Tf 19.368 0 Td [(the)-250(list)-250(of)-250(global)-250(indices)-250(for)-250(which)-250(we)-250(need)-250(the)-250(owning)-250(pr)18(ocesses.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.32 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.8 0 Td [(in)]TJ/F84 9.9626 Tf 9.405 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one-dimensional)-250(array)-250(of)-250(integers)-250(of)-250(kind)]TJ/F131 9.9626 Tf 250.209 0 Td [(psb_lpk_)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ
0 g 0 G
- -150.084 -29.888 Td [(15)]TJ
+/F84 9.9626 Tf 166.875 -29.888 Td [(15)]TJ
0 g 0 G
ET
@@ -6867,265 +6863,261 @@ endstream
endobj
1062 0 obj
<<
-/Length 8028
+/Length 8300
>>
stream
0 g 0 G
0 g 0 G
0 g 0 G
BT
-/F75 9.9626 Tf 150.705 706.129 Td [(On)-250(Return)]TJ
+/F75 9.9626 Tf 150.705 706.129 Td [(idx)]TJ
+0 g 0 G
+/F84 9.9626 Tf 19.367 0 Td [(the)-250(list)-250(of)-250(global)-250(indices)-250(for)-250(which)-250(we)-250(need)-250(the)-250(owning)-250(pr)18(ocesses.)]TJ 5.539 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ -41.205 -11.955 Td [(Speci\002ed)-250(as:)-310(a)-250(one-dimensional)-250(array)-250(of)-250(integers)-250(of)-250(kind)]TJ/F131 9.9626 Tf 250.209 0 Td [(psb_lpk_)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ
0 g 0 G
+/F75 9.9626 Tf -316.958 -20.539 Td [(On)-250(Return)]TJ
0 g 0 G
- 0 -21.934 Td [(iprc)]TJ
0 g 0 G
-/F84 9.9626 Tf 22.685 0 Td [(the)-250(list)-250(of)-250(pr)18(ocesses)-250(owning)-250(the)-250(indices)-250(in)]TJ/F131 9.9626 Tf 184.993 0 Td [(idx)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ -198.463 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.956 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 636.374 Tm [(Speci\002ed)-345(as:)-504(an)-345(allocatable)-345(one-dimensional)-345(array)-345(of)-346(integ)1(ers)-346(of)-345(kind)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 624.419 Tm [(psb_ipk_)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 0.98 0 0 1 150.705 600.493 Tm [(Note:)-304(this)-231(method)-231(may)-230(or)-231(may)-231(not)-231(actually)-231(r)19(equir)18(e)-231(communications,)-235(depending)]TJ 0.98 0 0 1 150.705 588.537 Tm [(on)-217(the)-216(exact)-217(internal)-217(data)-216(storage;)-230(given)-217(that)-216(the)-217(choice)-217(of)-216(storage)-217(may)-217(be)-217(alter)19(ed)]TJ 0.98 0 0 1 150.705 576.582 Tm [(by)-250(r)8(untime)-250(parameters,)-250(it)-250(is)-250(necessary)-250(for)-250(safety)-250(that)-250(this)-250(method)-250(is)-249(called)-250(by)-250(all)]TJ 1 0 0 1 150.406 564.627 Tm [(pr)18(ocesses.)]TJ/F75 9.9626 Tf 0.299 -29.998 Td [(3.1.15)-1000(Named)-250(Constants)]TJ
+ 0 -20.54 Td [(iprc)]TJ
0 g 0 G
- 0 -19.937 Td [(psb)]TJ
+/F84 9.9626 Tf 22.685 0 Td [(the)-250(list)-250(of)-250(pr)18(ocesses)-250(owning)-250(the)-250(indices)-250(in)]TJ/F131 9.9626 Tf 184.993 0 Td [(idx)]TJ/F84 9.9626 Tf 15.691 0 Td [(.)]TJ -198.463 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ/F84 9.9626 Tf 21.579 0 Td [(.)]TJ -53.319 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(required)]TJ/F84 9.9626 Tf 39.292 0 Td [(.)]TJ -66.072 -11.955 Td [(Intent:)]TJ/F75 9.9626 Tf 31.801 0 Td [(in)]TJ/F84 9.9626 Tf 9.404 0 Td [(.)]TJ 1.02 0 0 1 175.611 569.408 Tm [(Speci\002ed)-345(as:)-504(an)-345(allocatable)-345(one-dimensional)-345(array)-345(of)-346(integ)1(ers)-346(of)-345(kind)]TJ/F131 9.9626 Tf 1 0 0 1 175.611 557.453 Tm [(psb_ipk_)]TJ/F84 9.9626 Tf 41.843 0 Td [(.)]TJ 0.98 0 0 1 150.705 534.921 Tm [(Note:)-304(this)-231(method)-231(may)-230(or)-231(may)-231(not)-231(actually)-231(r)19(equir)18(e)-231(communications,)-235(depending)]TJ 0.98 0 0 1 150.705 522.966 Tm [(on)-217(the)-216(exact)-217(internal)-217(data)-216(storage;)-230(given)-217(that)-216(the)-217(choice)-217(of)-216(storage)-217(may)-217(be)-217(alter)19(ed)]TJ 0.98 0 0 1 150.705 511.011 Tm [(by)-250(r)8(untime)-250(parameters,)-250(it)-250(is)-250(necessary)-250(for)-250(safety)-250(that)-250(this)-250(method)-250(is)-249(called)-250(by)-250(all)]TJ 1 0 0 1 150.406 499.056 Tm [(pr)18(ocesses.)]TJ/F75 9.9626 Tf 0.299 -28.015 Td [(3.1.15)-1000(Named)-250(Constants)]TJ
+0 g 0 G
+ 0 -19.261 Td [(psb)]TJ
ET
q
-1 0 0 1 167.9 514.891 cm
+1 0 0 1 167.9 451.979 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 170.889 514.692 Td [(none)]TJ
+/F75 9.9626 Tf 170.889 451.78 Td [(none)]TJ
ET
q
-1 0 0 1 194.182 514.891 cm
+1 0 0 1 194.182 451.979 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
0 g 0 G
BT
-/F84 9.9626 Tf 202.152 514.692 Td [(Generic)-250(no-op;)]TJ
+/F84 9.9626 Tf 202.152 451.78 Td [(Generic)-250(no-op;)]TJ
0 g 0 G
-/F75 9.9626 Tf -51.447 -21.934 Td [(psb)]TJ
+/F75 9.9626 Tf -51.447 -20.539 Td [(psb)]TJ
ET
q
-1 0 0 1 167.9 492.957 cm
+1 0 0 1 167.9 431.44 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 170.889 492.758 Td [(root)]TJ
+/F75 9.9626 Tf 170.889 431.241 Td [(root)]TJ
ET
q
-1 0 0 1 189.758 492.957 cm
+1 0 0 1 189.758 431.44 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
0 g 0 G
BT
-/F84 9.9626 Tf 197.728 492.758 Td [(Default)-250(r)18(oot)-250(pr)18(ocess)-250(for)-250(br)18(oadcast)-250(and)-250(scatter)-250(operations;)]TJ
+/F84 9.9626 Tf 197.728 431.241 Td [(Default)-250(r)18(oot)-250(pr)18(ocess)-250(for)-250(br)18(oadcast)-250(and)-250(scatter)-250(operations;)]TJ
0 g 0 G
-/F75 9.9626 Tf -47.023 -21.934 Td [(psb)]TJ
+/F75 9.9626 Tf -47.023 -20.54 Td [(psb)]TJ
ET
q
-1 0 0 1 167.9 471.023 cm
+1 0 0 1 167.9 410.9 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 170.889 470.824 Td [(nohalo)]TJ
+/F75 9.9626 Tf 170.889 410.701 Td [(nohalo)]TJ
ET
q
-1 0 0 1 203.038 471.023 cm
+1 0 0 1 203.038 410.9 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
0 g 0 G
BT
-/F84 9.9626 Tf 211.008 470.824 Td [(Do)-250(not)-250(fetch)-250(halo)-250(elements;)]TJ
+/F84 9.9626 Tf 211.008 410.701 Td [(Do)-250(not)-250(fetch)-250(halo)-250(elements;)]TJ
0 g 0 G
-/F75 9.9626 Tf -60.303 -21.934 Td [(psb)]TJ
+/F75 9.9626 Tf -60.303 -20.54 Td [(psb)]TJ
ET
q
-1 0 0 1 167.9 449.089 cm
+1 0 0 1 167.9 390.361 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 170.889 448.89 Td [(halo)]TJ
+/F75 9.9626 Tf 170.889 390.161 Td [(halo)]TJ
ET
q
-1 0 0 1 191.412 449.089 cm
+1 0 0 1 191.412 390.361 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
0 g 0 G
BT
-/F84 9.9626 Tf 199.382 448.89 Td [(Fetch)-250(halo)-250(elements)-250(fr)18(om)-250(neighbouring)-250(pr)18(ocesses;)]TJ
+/F84 9.9626 Tf 199.382 390.161 Td [(Fetch)-250(halo)-250(elements)-250(fr)18(om)-250(neighbouring)-250(pr)18(ocesses;)]TJ
0 g 0 G
-/F75 9.9626 Tf -48.677 -21.934 Td [(psb)]TJ
+/F75 9.9626 Tf -48.677 -20.539 Td [(psb)]TJ
ET
q
-1 0 0 1 167.9 427.155 cm
+1 0 0 1 167.9 369.821 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 170.889 426.956 Td [(sum)]TJ
+/F75 9.9626 Tf 170.889 369.622 Td [(sum)]TJ
ET
q
-1 0 0 1 190.854 427.155 cm
+1 0 0 1 190.854 369.821 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
0 g 0 G
BT
-/F84 9.9626 Tf 198.824 426.956 Td [(Sum)-250(overlapped)-250(elements)]TJ
+/F84 9.9626 Tf 198.824 369.622 Td [(Sum)-250(overlapped)-250(elements)]TJ
0 g 0 G
-/F75 9.9626 Tf -48.119 -21.934 Td [(psb)]TJ
+/F75 9.9626 Tf -48.119 -20.54 Td [(psb)]TJ
ET
q
-1 0 0 1 167.9 405.221 cm
+1 0 0 1 167.9 349.282 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 170.889 405.022 Td [(avg)]TJ
+/F75 9.9626 Tf 170.889 349.082 Td [(avg)]TJ
ET
q
-1 0 0 1 187.546 405.221 cm
+1 0 0 1 187.546 349.282 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
0 g 0 G
BT
-/F84 9.9626 Tf 195.128 405.022 Td [(A)92(verage)-250(overlapped)-250(elements)]TJ
+/F84 9.9626 Tf 195.128 349.082 Td [(A)92(verage)-250(overlapped)-250(elements)]TJ
0 g 0 G
-/F75 9.9626 Tf -44.423 -21.934 Td [(psb)]TJ
+/F75 9.9626 Tf -44.423 -20.539 Td [(psb)]TJ
ET
q
-1 0 0 1 167.9 383.288 cm
+1 0 0 1 167.9 328.742 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 170.889 383.088 Td [(comm)]TJ
+/F75 9.9626 Tf 170.889 328.543 Td [(comm)]TJ
ET
q
-1 0 0 1 199.163 383.288 cm
+1 0 0 1 199.163 328.742 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 202.152 383.088 Td [(halo)]TJ
+/F75 9.9626 Tf 202.152 328.543 Td [(halo)]TJ
ET
q
-1 0 0 1 222.674 383.288 cm
+1 0 0 1 222.674 328.742 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
0 g 0 G
BT
-/F84 9.9626 Tf 230.645 383.088 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.92 0 Td [(halo_index)]TJ/F84 9.9626 Tf 54.794 0 Td [(list;)]TJ
+/F84 9.9626 Tf 230.645 328.543 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.92 0 Td [(halo_index)]TJ/F84 9.9626 Tf 54.794 0 Td [(list;)]TJ
0 g 0 G
-/F75 9.9626 Tf -259.654 -21.934 Td [(psb)]TJ
+/F75 9.9626 Tf -259.654 -20.54 Td [(psb)]TJ
ET
q
-1 0 0 1 167.9 361.354 cm
+1 0 0 1 167.9 308.203 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 170.889 361.154 Td [(comm)]TJ
+/F75 9.9626 Tf 170.889 308.003 Td [(comm)]TJ
ET
q
-1 0 0 1 199.163 361.354 cm
+1 0 0 1 199.163 308.203 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 202.152 361.154 Td [(ext)]TJ
+/F75 9.9626 Tf 202.152 308.003 Td [(ext)]TJ
ET
q
-1 0 0 1 216.029 361.354 cm
+1 0 0 1 216.029 308.203 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
0 g 0 G
BT
-/F84 9.9626 Tf 224 361.154 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.92 0 Td [(ext_index)]TJ/F84 9.9626 Tf 49.564 0 Td [(list;)]TJ
+/F84 9.9626 Tf 224 308.003 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.92 0 Td [(ext_index)]TJ/F84 9.9626 Tf 49.564 0 Td [(list;)]TJ
0 g 0 G
-/F75 9.9626 Tf -247.779 -21.934 Td [(psb)]TJ
+/F75 9.9626 Tf -247.779 -20.539 Td [(psb)]TJ
ET
q
-1 0 0 1 167.9 339.42 cm
+1 0 0 1 167.9 287.663 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 170.889 339.22 Td [(comm)]TJ
+/F75 9.9626 Tf 170.889 287.464 Td [(comm)]TJ
ET
q
-1 0 0 1 199.163 339.42 cm
+1 0 0 1 199.163 287.663 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 202.152 339.22 Td [(ovr)]TJ
+/F75 9.9626 Tf 202.152 287.464 Td [(ovr)]TJ
ET
q
-1 0 0 1 217.703 339.42 cm
+1 0 0 1 217.703 287.663 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
0 g 0 G
BT
-/F84 9.9626 Tf 225.673 339.22 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.92 0 Td [(ovrlap_index)]TJ/F84 9.9626 Tf 65.255 0 Td [(list;)]TJ
+/F84 9.9626 Tf 225.673 287.464 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.92 0 Td [(ovrlap_index)]TJ/F84 9.9626 Tf 65.255 0 Td [(list;)]TJ
0 g 0 G
-/F75 9.9626 Tf -265.143 -21.934 Td [(psb)]TJ
+/F75 9.9626 Tf -265.143 -20.54 Td [(psb)]TJ
ET
q
-1 0 0 1 167.9 317.486 cm
+1 0 0 1 167.9 267.124 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 170.889 317.286 Td [(comm)]TJ
+/F75 9.9626 Tf 170.889 266.924 Td [(comm)]TJ
ET
q
-1 0 0 1 199.163 317.486 cm
+1 0 0 1 199.163 267.124 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 202.152 317.286 Td [(mov)]TJ
+/F75 9.9626 Tf 202.152 266.924 Td [(mov)]TJ
ET
q
-1 0 0 1 222.684 317.486 cm
+1 0 0 1 222.684 267.124 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
0 g 0 G
BT
-/F84 9.9626 Tf 230.654 317.286 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.921 0 Td [(ovr_mst_idx)]TJ/F84 9.9626 Tf 60.024 0 Td [(list;)]TJ/F75 11.9552 Tf -264.894 -31.99 Td [(3.2)-1000(Sparse)-250(Matrix)-250(class)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 265.359 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 169.907 265.359 Tm [(psb)]TJ
+/F84 9.9626 Tf 230.654 266.924 Td [(Exchange)-250(data)-250(based)-250(on)-250(the)]TJ/F131 9.9626 Tf 124.921 0 Td [(ovr_mst_idx)]TJ/F84 9.9626 Tf 60.024 0 Td [(list;)]TJ/F75 11.9552 Tf -264.894 -30.006 Td [(3.2)-1000(Sparse)-250(Matrix)-250(class)]TJ/F84 9.9626 Tf 1.02 0 0 1 150.396 217.656 Tm [(The)]TJ/F131 9.9626 Tf 1 0 0 1 169.907 217.656 Tm [(psb)]TJ
ET
q
-1 0 0 1 186.225 265.558 cm
+1 0 0 1 186.225 217.855 cm
[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S
Q
BT
-/F131 9.9626 Tf 189.363 265.359 Td [(Tspmat)]TJ
+/F131 9.9626 Tf 189.363 217.656 Td [(Tspmat)]TJ
ET
q
-1 0 0 1 221.373 265.558 cm
+1 0 0 1 221.373 217.855 cm
[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S
Q
BT
-/F131 9.9626 Tf 224.511 265.359 Td [(type)]TJ/F84 9.9626 Tf 1.02 0 0 1 247.932 265.359 Tm [(class)-246(contains)-246(all)-246(information)-246(about)-246(the)-246(local)-246(portion)-246(of)]TJ 0.98 0 0 1 150.705 253.404 Tm [(the)-252(sparse)-253(matrix)-252(and)-252(its)-252(storage)-253(mode.)-315(Its)-252(design)-253(is)-252(based)-252(on)-253(the)-252(ST)76(A)75(TE)-252(design)]TJ 0.98 0 0 1 150.406 241.449 Tm [(pattern)-251([)]TJ
+/F131 9.9626 Tf 224.511 217.656 Td [(type)]TJ/F84 9.9626 Tf 1.02 0 0 1 247.932 217.656 Tm [(class)-246(contains)-246(all)-246(information)-246(about)-246(the)-246(local)-246(portion)-246(of)]TJ 0.98 0 0 1 150.705 205.701 Tm [(the)-252(sparse)-253(matrix)-252(and)-252(its)-252(storage)-253(mode.)-315(Its)-252(design)-253(is)-252(based)-252(on)-253(the)-252(ST)76(A)75(TE)-252(design)]TJ 0.98 0 0 1 150.406 193.746 Tm [(pattern)-251([)]TJ
1 0 0 rg 1 0 0 RG
- 1 0 0 1 187.44 241.449 Tm [(13)]TJ
+ 1 0 0 1 187.44 193.746 Tm [(13)]TJ
0 g 0 G
- 0.98 0 0 1 197.402 241.449 Tm [(])-251(as)-251(detailed)-252(in)-251([)]TJ
+ 0.98 0 0 1 197.402 193.746 Tm [(])-251(as)-251(detailed)-252(in)-251([)]TJ
1 0 0 rg 1 0 0 RG
- 1 0 0 1 266.289 241.449 Tm [(11)]TJ
+ 1 0 0 1 266.289 193.746 Tm [(11)]TJ
0 g 0 G
- 0.98 0 0 1 276.252 241.449 Tm [(];)-252(the)-252(type)-251(declaration)-251(is)-251(shown)-251(in)-251(\002gur)18(e)]TJ
+ 0.98 0 0 1 276.252 193.746 Tm [(];)-252(the)-252(type)-251(declaration)-251(is)-251(shown)-251(in)-251(\002gur)18(e)]TJ
0 0 1 rg 0 0 1 RG
[-251(2)]TJ
0 g 0 G
- [-251(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 489.447 241.449 Tm [(T)]TJ/F84 9.9626 Tf -338.742 -11.956 Td [(is)-250(a)-250(placeholder)-250(for)-250(the)-250(data)-250(type)-250(and)-250(pr)18(ecision)-250(variants)]TJ
+ [-251(wher)18(e)]TJ/F131 9.9626 Tf 1 0 0 1 489.447 193.746 Tm [(T)]TJ/F84 9.9626 Tf -338.742 -11.955 Td [(is)-250(a)-250(placeholder)-250(for)-250(the)-250(data)-250(type)-250(and)-250(pr)18(ecision)-250(variants)]TJ
0 g 0 G
-/F75 9.9626 Tf 0 -21.431 Td [(S)]TJ
+/F75 9.9626 Tf 0 -20.386 Td [(S)]TJ
0 g 0 G
/F84 9.9626 Tf 11.068 0 Td [(Single)-250(pr)18(ecision)-250(r)18(eal;)]TJ
0 g 0 G
-/F75 9.9626 Tf -11.068 -21.934 Td [(D)]TJ
+/F75 9.9626 Tf -11.068 -20.54 Td [(D)]TJ
0 g 0 G
/F84 9.9626 Tf 13.28 0 Td [(Double)-250(pr)18(ecision)-250(r)18(eal;)]TJ
0 g 0 G
-/F75 9.9626 Tf -13.28 -21.934 Td [(C)]TJ
+/F75 9.9626 Tf -13.28 -20.539 Td [(C)]TJ
0 g 0 G
/F84 9.9626 Tf 12.174 0 Td [(Single)-250(pr)18(ecision)-250(complex;)]TJ
0 g 0 G
-/F75 9.9626 Tf -12.174 -21.934 Td [(Z)]TJ
-0 g 0 G
-/F84 9.9626 Tf 11.626 0 Td [(Double)-250(pr)18(ecision)-250(complex;)]TJ
-0 g 0 G
-/F75 9.9626 Tf -11.626 -21.934 Td [(LS,LD,LC,LZ)]TJ
-0 g 0 G
-/F84 9.9626 Tf 0.994 0 0 1 215.731 120.326 Tm [(Same)-250(numeric)-251(type)-250(as)-251(above,)-251(but)-250(with)]TJ/F131 9.9626 Tf 1 0 0 1 385.185 120.326 Tm [(psb_lpk_)]TJ/F84 9.9626 Tf 0.994 0 0 1 429.509 120.326 Tm [(integer)-250(indices.)]TJ
-0 g 0 G
- 1 0 0 1 317.579 90.438 Tm [(16)]TJ
+ 154.7 -29.888 Td [(16)]TJ
0 g 0 G
ET
@@ -7133,16 +7125,54 @@ endstream
endobj
1069 0 obj
<<
-/Length 7719
+/Length 8165
>>
stream
0 g 0 G
0 g 0 G
0 g 0 G
+BT
+/F75 9.9626 Tf 99.895 706.129 Td [(Z)]TJ
+0 g 0 G
+/F84 9.9626 Tf 11.627 0 Td [(Double)-250(pr)18(ecision)-250(complex;)]TJ
+0 g 0 G
+/F75 9.9626 Tf -11.627 -18.188 Td [(LS,LD,LC,LZ)]TJ
+0 g 0 G
+/F84 9.9626 Tf 0.994 0 0 1 164.921 687.941 Tm [(Same)-251(numeric)-250(type)-251(as)-250(above,)-251(but)-250(with)]TJ/F131 9.9626 Tf 1 0 0 1 334.376 687.941 Tm [(psb_lpk_)]TJ/F84 9.9626 Tf 0.994 0 0 1 378.699 687.941 Tm [(integer)-251(indic)1(es.)]TJ 0.98 0 0 1 99.587 671.491 Tm [(The)-194(actual)-194(data)-194(is)-193(contained)-194(in)-194(the)-194(polymorphic)-194(component)]TJ/F131 9.9626 Tf 1 0 0 1 354.222 671.491 Tm [(a%a)]TJ/F84 9.9626 Tf 0.98 0 0 1 371.805 671.491 Tm [(of)-194(type)]TJ/F131 9.9626 Tf 1 0 0 1 403.329 671.491 Tm [(psb)]TJ
+ET
+q
+1 0 0 1 419.647 671.69 cm
+[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S
+Q
+BT
+/F131 9.9626 Tf 422.785 671.491 Td [(T)]TJ
+ET
+q
+1 0 0 1 428.643 671.69 cm
+[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S
+Q
+BT
+/F131 9.9626 Tf 431.782 671.491 Td [(base)]TJ
+ET
+q
+1 0 0 1 453.331 671.69 cm
+[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S
+Q
+BT
+/F131 9.9626 Tf 456.469 671.491 Td [(sparse)]TJ
+ET
+q
+1 0 0 1 488.478 671.69 cm
+[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S
+Q
+BT
+/F131 9.9626 Tf 491.617 671.491 Td [(mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 507.308 671.491 Tm [(;)]TJ 1.02 0 0 1 99.895 659.535 Tm [(its)-247(speci\002c)-247(layout)-247(can)-247(be)-247(chosen)-247(dynamically)-247(among)-247(the)-247(pr)18(ede\002ned)-247(types,)-247(or)]TJ 1.02 0 0 1 99.895 647.58 Tm [(an)-252(entir)18(ely)-252(new)-252(storage)-251(layout)-252(can)-252(be)-251(implemented)-252(and)-252(passed)-252(to)-251(the)-252(library)]TJ 0.993 0 0 1 99.895 635.625 Tm [(at)-251(r)8(untime)-252(via)-251(the)]TJ/F131 9.9626 Tf 1 0 0 1 180.278 635.625 Tm [(psb_spasb)]TJ/F84 9.9626 Tf 0.993 0 0 1 229.837 635.625 Tm [(r)18(outine.)-312(The)-251(following)-252(very)-251(common)-251(formats)-252(ar)19(e)]TJ
+0 g 0 G
0.95 0.95 0.95 rg 0.95 0.95 0.95 RG
0.95 0.95 0.95 rg 0.95 0.95 0.95 RG
+ET
q
-1 0 0 1 99.895 671.26 cm
+1 0 0 1 99.895 577.766 cm
0 0 343.711 38.854 re f
Q
0.95 0.95 0.95 rg 0.95 0.95 0.95 RG
@@ -7151,7 +7181,7 @@ Q
0 g 0 G
0.00 0.44 0.13 rg 0.00 0.44 0.13 RG
BT
-/F231 8.9664 Tf 112.299 699.454 Td [(type)]TJ
+/F231 8.9664 Tf 112.299 605.96 Td [(type)]TJ
0 g 0 G
0.73 0.73 0.73 rg 0.73 0.73 0.73 RG
0 g 0 G
@@ -7164,7 +7194,7 @@ BT
0.73 0.73 0.73 rg 0.73 0.73 0.73 RG
0 g 0 G
0.00 0.44 0.13 rg 0.00 0.44 0.13 RG
- 9.414 -10.959 Td [(class)]TJ
+ 9.414 -10.958 Td [(class)]TJ
0 g 0 G
[(\050psb_T_base_sparse_mat\051,)]TJ
0.73 0.73 0.73 rg 0.73 0.73 0.73 RG
@@ -7189,169 +7219,141 @@ BT
0.95 0.95 0.95 rg 0.95 0.95 0.95 RG
0 g 0 G
0 g 0 G
-/F84 9.9626 Tf 4.295 -41.429 Td [(Listing)-250(2:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(sparse)-250(matrix.)]TJ 0.98 0 0 1 99.587 603.446 Tm [(The)-194(actual)-194(data)-194(is)-193(contained)-194(in)-194(the)-194(polymorphic)-194(component)]TJ/F131 9.9626 Tf 1 0 0 1 354.222 603.446 Tm [(a%a)]TJ/F84 9.9626 Tf 0.98 0 0 1 371.805 603.446 Tm [(of)-194(type)]TJ/F131 9.9626 Tf 1 0 0 1 403.329 603.446 Tm [(psb)]TJ
-ET
-q
-1 0 0 1 419.647 603.645 cm
-[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S
-Q
-BT
-/F131 9.9626 Tf 422.785 603.446 Td [(T)]TJ
-ET
-q
-1 0 0 1 428.643 603.645 cm
-[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S
-Q
-BT
-/F131 9.9626 Tf 431.782 603.446 Td [(base)]TJ
-ET
-q
-1 0 0 1 453.331 603.645 cm
-[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S
-Q
-BT
-/F131 9.9626 Tf 456.469 603.446 Td [(sparse)]TJ
-ET
-q
-1 0 0 1 488.478 603.645 cm
-[]0 d 0 J 0.398 w 0 0 m 3.138 0 l S
-Q
-BT
-/F131 9.9626 Tf 491.617 603.446 Td [(mat)]TJ/F84 9.9626 Tf 0.98 0 0 1 507.308 603.446 Tm [(;)]TJ 1.02 0 0 1 99.895 591.491 Tm [(its)-247(speci\002c)-247(layout)-247(can)-247(be)-247(chosen)-247(dynamically)-247(among)-247(the)-247(pr)18(ede\002ned)-247(types,)-247(or)]TJ 1.02 0 0 1 99.895 579.536 Tm [(an)-252(entir)18(ely)-252(new)-252(storage)-251(layout)-252(can)-252(be)-251(implemented)-252(and)-252(passed)-252(to)-251(the)-252(library)]TJ 0.993 0 0 1 99.895 567.581 Tm [(at)-251(r)8(untime)-252(via)-251(the)]TJ/F131 9.9626 Tf 1 0 0 1 180.278 567.581 Tm [(psb_spasb)]TJ/F84 9.9626 Tf 0.993 0 0 1 229.837 567.581 Tm [(r)18(outine.)-312(The)-251(following)-252(very)-251(common)-251(formats)-252(ar)19(e)]TJ 1 0 0 1 99.596 555.626 Tm [(pr)18(ecompiled)-250(in)-250(PSBLAS)-250(and)-250(thus)-250(ar)18(e)-250(always)-250(available:)]TJ
+/F84 9.9626 Tf 4.295 -41.43 Td [(Listing)-250(2:)-310(The)-250(PSBLAS)-250(de\002ned)-250(data)-250(type)-250(that)-250(contains)-250(a)-250(sparse)-250(matrix.)]TJ -16.997 -22.173 Td [(pr)18(ecompiled)-250(in)-250(PSBLAS)-250(and)-250(thus)-250(ar)18(e)-250(always)-250(available:)]TJ
0 g 0 G
-/F75 9.9626 Tf 0.299 -19.889 Td [(psb)]TJ
+/F75 9.9626 Tf 0.298 -16.45 Td [(psb)]TJ
ET
q
-1 0 0 1 117.091 535.936 cm
+1 0 0 1 117.091 504.189 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 120.08 535.737 Td [(T)]TJ
+/F75 9.9626 Tf 120.08 503.99 Td [(T)]TJ
ET
q
-1 0 0 1 127.322 535.936 cm
+1 0 0 1 127.322 504.189 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 130.311 535.737 Td [(coo)]TJ
+/F75 9.9626 Tf 130.311 503.99 Td [(coo)]TJ
ET
q
-1 0 0 1 146.411 535.936 cm
+1 0 0 1 146.411 504.189 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 149.399 535.737 Td [(sparse)]TJ
+/F75 9.9626 Tf 149.399 503.99 Td [(sparse)]TJ
ET
q
-1 0 0 1 178.769 535.936 cm
+1 0 0 1 178.769 504.189 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 181.758 535.737 Td [(mat)]TJ
+/F75 9.9626 Tf 181.758 503.99 Td [(mat)]TJ
0 g 0 G
/F84 9.9626 Tf 22.137 0 Td [(Coor)18(dinate)-250(storage;)]TJ
0 g 0 G
-/F75 9.9626 Tf -104 -19.907 Td [(psb)]TJ
+/F75 9.9626 Tf -104 -18.188 Td [(psb)]TJ
ET
q
-1 0 0 1 117.091 516.03 cm
+1 0 0 1 117.091 486.001 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 120.08 515.83 Td [(T)]TJ
+/F75 9.9626 Tf 120.08 485.802 Td [(T)]TJ
ET
q
-1 0 0 1 127.322 516.03 cm
+1 0 0 1 127.322 486.001 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 130.311 515.83 Td [(csr)]TJ
+/F75 9.9626 Tf 130.311 485.802 Td [(csr)]TJ
ET
q
-1 0 0 1 143.631 516.03 cm
+1 0 0 1 143.631 486.001 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 146.62 515.83 Td [(sparse)]TJ
+/F75 9.9626 Tf 146.62 485.802 Td [(sparse)]TJ
ET
q
-1 0 0 1 175.989 516.03 cm
+1 0 0 1 175.989 486.001 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 178.978 515.83 Td [(mat)]TJ
+/F75 9.9626 Tf 178.978 485.802 Td [(mat)]TJ
0 g 0 G
/F84 9.9626 Tf 22.137 0 Td [(Compr)18(essed)-250(storage)-250(by)-250(r)18(ows;)]TJ
0 g 0 G
-/F75 9.9626 Tf -101.22 -19.906 Td [(psb)]TJ
+/F75 9.9626 Tf -101.22 -18.188 Td [(psb)]TJ
ET
q
-1 0 0 1 117.091 496.123 cm
+1 0 0 1 117.091 467.813 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 120.08 495.924 Td [(T)]TJ
+/F75 9.9626 Tf 120.08 467.614 Td [(T)]TJ
ET
q
-1 0 0 1 127.322 496.123 cm
+1 0 0 1 127.322 467.813 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 130.311 495.924 Td [(csc)]TJ
+/F75 9.9626 Tf 130.311 467.614 Td [(csc)]TJ
ET
q
-1 0 0 1 144.179 496.123 cm
+1 0 0 1 144.179 467.813 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 147.168 495.924 Td [(sparse)]TJ
+/F75 9.9626 Tf 147.168 467.614 Td [(sparse)]TJ
ET
q
-1 0 0 1 176.537 496.123 cm
+1 0 0 1 176.537 467.813 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 179.526 495.924 Td [(mat)]TJ
+/F75 9.9626 Tf 179.526 467.614 Td [(mat)]TJ
0 g 0 G
-/F84 9.9626 Tf 22.137 0 Td [(Compr)18(essed)-250(storage)-250(by)-250(columns;)]TJ 1.019 0 0 1 99.587 476.035 Tm [(The)-245(inner)-244(sparse)-245(matrix)-244(has)-245(an)-245(associated)-244(state,)-245(which)-244(can)-245(take)-245(the)-244(following)]TJ 1 0 0 1 99.616 464.08 Tm [(values:)]TJ
+/F84 9.9626 Tf 22.137 0 Td [(Compr)18(essed)-250(storage)-250(by)-250(columns;)]TJ 1.019 0 0 1 99.587 451.164 Tm [(The)-245(inner)-244(sparse)-245(matrix)-244(has)-245(an)-245(associated)-244(state,)-245(which)-244(can)-245(take)-245(the)-244(following)]TJ 1 0 0 1 99.616 439.209 Tm [(values:)]TJ
0 g 0 G
-/F75 9.9626 Tf 0.279 -19.888 Td [(Build:)]TJ
+/F75 9.9626 Tf 0.279 -16.451 Td [(Build:)]TJ
0 g 0 G
-/F84 9.9626 Tf 1.014 0 0 1 132.822 444.192 Tm [(State)-246(enter)18(ed)-247(after)-246(the)-246(\002rst)-246(allocation,)-246(and)-246(befor)17(e)-246(the)-246(\002rst)-246(assembly;)-246(in)]TJ 1 0 0 1 124.802 432.237 Tm [(this)-250(state)-250(it)-250(is)-250(possible)-250(to)-250(add)-250(nonzer)18(o)-250(entries.)]TJ
+/F84 9.9626 Tf 1.014 0 0 1 132.822 422.758 Tm [(State)-246(enter)18(ed)-247(after)-246(the)-246(\002rst)-246(allocation,)-246(and)-246(befor)17(e)-246(the)-246(\002rst)-246(assembly;)-246(in)]TJ 1 0 0 1 124.802 410.803 Tm [(this)-250(state)-250(it)-250(is)-250(possible)-250(to)-250(add)-250(nonzer)18(o)-250(entries.)]TJ
0 g 0 G
-/F75 9.9626 Tf -24.907 -19.907 Td [(Assembled:)]TJ
+/F75 9.9626 Tf -24.907 -18.188 Td [(Assembled:)]TJ
0 g 0 G
-/F84 9.9626 Tf 1.02 0 0 1 158.276 412.33 Tm [(State)-258(enter)18(ed)-259(after)-258(the)-258(assembly;)-264(computations)-258(using)-258(the)-259(sparse)]TJ 1 0 0 1 124.802 400.375 Tm [(matrix,)-250(such)-250(as)-250(matrix-vector)-250(pr)18(oducts,)-250(ar)18(e)-250(only)-250(possible)-250(in)-250(this)-250(state;)]TJ
+/F84 9.9626 Tf 1.02 0 0 1 158.276 392.615 Tm [(State)-258(enter)18(ed)-259(after)-258(the)-258(assembly;)-264(computations)-258(using)-258(the)-259(sparse)]TJ 1 0 0 1 124.802 380.66 Tm [(matrix,)-250(such)-250(as)-250(matrix-vector)-250(pr)18(oducts,)-250(ar)18(e)-250(only)-250(possible)-250(in)-250(this)-250(state;)]TJ
0 g 0 G
-/F75 9.9626 Tf -24.907 -19.907 Td [(Update:)]TJ
+/F75 9.9626 Tf -24.907 -18.188 Td [(Update:)]TJ
0 g 0 G
-/F84 9.9626 Tf 0.989 0 0 1 140.573 380.468 Tm [(State)-254(enter)18(ed)-254(after)-254(a)-254(r)18(einitalization;)-255(this)-254(is)-254(used)-254(to)-254(handle)-254(applications)]TJ 1.015 0 0 1 124.802 368.513 Tm [(in)-245(which)-245(the)-245(same)-245(sparsity)-245(pattern)-246(is)-245(used)-245(multiple)-245(times)-245(with)-245(dif)18(fer)18(ent)]TJ 0.987 0 0 1 124.802 356.558 Tm [(coef)18(\002cients.)-316(In)-253(this)-254(state)-254(it)-254(is)-254(only)-253(possible)-254(to)-254(enter)-254(coef)18(\002cients)-254(for)-253(alr)18(eady)]TJ 1 0 0 1 124.802 344.602 Tm [(existing)-250(nonzer)18(o)-250(entries.)]TJ 1.018 0 0 1 99.587 324.714 Tm [(The)-244(only)-245(storage)-244(variant)-244(supporting)-244(the)-245(build)-244(state)-244(is)-245(COO;)-244(all)-244(other)-245(variant)1(s)]TJ 1 0 0 1 99.895 312.759 Tm [(ar)18(e)-250(obtained)-250(by)-250(conversion)-250(to/fr)18(om)-250(it.)]TJ/F75 9.9626 Tf 0 -27.132 Td [(3.2.1)-1000(Sparse)-250(Matrix)-250(Methods)]TJ 0 -18.964 Td [(3.2.2)-1000(get)]TJ
+/F84 9.9626 Tf 0.989 0 0 1 140.573 362.472 Tm [(State)-254(enter)18(ed)-254(after)-254(a)-254(r)18(einitalization;)-255(this)-254(is)-254(used)-254(to)-254(handle)-254(applications)]TJ 1.015 0 0 1 124.802 350.517 Tm [(in)-245(which)-245(the)-245(same)-245(sparsity)-245(pattern)-246(is)-245(used)-245(multiple)-245(times)-245(with)-245(dif)18(fer)18(ent)]TJ 0.987 0 0 1 124.802 338.562 Tm [(coef)18(\002cients.)-316(In)-253(this)-254(state)-254(it)-254(is)-254(only)-253(possible)-254(to)-254(enter)-254(coef)18(\002cients)-254(for)-253(alr)18(eady)]TJ 1 0 0 1 124.802 326.607 Tm [(existing)-250(nonzer)18(o)-250(entries.)]TJ 1.018 0 0 1 99.587 310.156 Tm [(The)-244(only)-245(storage)-244(variant)-244(supporting)-244(the)-245(build)-244(state)-244(is)-245(COO;)-244(all)-244(other)-245(variant)1(s)]TJ 1 0 0 1 99.895 298.201 Tm [(ar)18(e)-250(obtained)-250(by)-250(conversion)-250(to/fr)18(om)-250(it.)]TJ/F75 9.9626 Tf 0 -26.326 Td [(3.2.1)-1000(Sparse)-250(Matrix)-250(Methods)]TJ 0 -18.963 Td [(3.2.2)-1000(get)]TJ
ET
q
-1 0 0 1 144.219 266.863 cm
+1 0 0 1 144.219 253.111 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F75 9.9626 Tf 147.208 266.663 Td [(nrows)-250(\227)-250(Get)-250(number)-250(of)-250(rows)-250(in)-250(a)-250(sparse)-250(matrix)]TJ
+/F75 9.9626 Tf 147.208 252.912 Td [(nrows)-250(\227)-250(Get)-250(number)-250(of)-250(rows)-250(in)-250(a)-250(sparse)-250(matrix)]TJ
0 g 0 G
0 g 0 G
-/F131 9.9626 Tf -47.313 -18.963 Td [(nr)-525(=)-525(a%get_nrows\050\051)]TJ
+/F131 9.9626 Tf -47.313 -18.964 Td [(nr)-525(=)-525(a%get_nrows\050\051)]TJ
0 g 0 G
-/F75 9.9626 Tf 0 -21.872 Td [(T)90(ype:)]TJ
+/F75 9.9626 Tf 0 -17.574 Td [(T)90(ype:)]TJ
0 g 0 G
/F84 9.9626 Tf 29.44 0 Td [(Asynchr)18(onous.)]TJ
0 g 0 G
-/F75 9.9626 Tf -29.44 -19.907 Td [(On)-250(Entry)]TJ
+/F75 9.9626 Tf -29.44 -18.188 Td [(On)-250(Entry)]TJ
0 g 0 G
0 g 0 G
- 0 -19.907 Td [(a)]TJ
+ 0 -18.188 Td [(a)]TJ
0 g 0 G
/F84 9.9626 Tf 9.963 0 Td [(the)-250(sparse)-250(matrix)]TJ 14.944 -11.955 Td [(Scope:)]TJ/F75 9.9626 Tf 31.432 0 Td [(local)]TJ
0 g 0 G
- -56.339 -33.827 Td [(On)-250(Return)]TJ
+ -56.339 -29.53 Td [(On)-250(Return)]TJ
0 g 0 G
0 g 0 G
- 0 -19.906 Td [(Function)-250(value)]TJ
+ 0 -18.187 Td [(Function)-250(value)]TJ
0 g 0 G
/F84 9.9626 Tf 72.468 0 Td [(The)-250(number)-250(of)-250(r)18(ows)-250(of)-250(sparse)-250(matrix)]TJ/F131 9.9626 Tf 165.299 0 Td [(a)]TJ/F84 9.9626 Tf 5.23 0 Td [(.)]TJ
0 g 0 G
@@ -7366,7 +7368,7 @@ endobj
/Type /ObjStm
/N 100
/First 922
-/Length 9094
+/Length 9087
>>
stream
977 0 978 56 979 112 980 168 981 224 982 280 983 336 984 392 985 448 986 504
@@ -7377,8 +7379,8 @@ stream
1029 4121 1030 4179 1031 4237 1032 4295 1033 4353 1034 4411 1036 4469 1023 4527 1040 4637 1037 4784
1038 4932 1042 5079 43 5138 47 5195 51 5252 55 5309 1039 5366 1044 5502 1046 5620 59 5678
63 5734 67 5790 1043 5846 1049 5941 1051 6059 71 6118 75 6175 1052 6232 79 6290 83 6345
-1048 6402 1054 6497 1056 6615 87 6673 91 6729 95 6785 1053 6841 1061 6936 1057 7093 1058 7251
-1059 7403 1063 7551 99 7610 103 7667 1064 7725 1060 7784 1068 7879 1070 7997 1066 8055 1071 8113
+1048 6402 1054 6497 1056 6615 87 6673 91 6729 95 6785 1053 6841 1061 6936 1057 7093 1058 7250
+1059 7401 1063 7544 99 7603 103 7660 1064 7718 1060 7777 1068 7872 1070 7990 1071 8048 1066 8107
% 977 0 obj
<<
/D [971 0 R /XYZ 99.895 601.577 null]
@@ -7798,15 +7800,15 @@ stream
>>
% 87 0 obj
<<
-/D [1054 0 R /XYZ 99.895 583.842 null]
+/D [1054 0 R /XYZ 99.895 543.315 null]
>>
% 91 0 obj
<<
-/D [1054 0 R /XYZ 99.895 466.211 null]
+/D [1054 0 R /XYZ 99.895 416.307 null]
>>
% 95 0 obj
<<
-/D [1054 0 R /XYZ 99.895 256.035 null]
+/D [1054 0 R /XYZ 99.895 194.109 null]
>>
% 1053 0 obj
<<
@@ -7827,7 +7829,7 @@ stream
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
-/Rect [186.443 240.293 198.399 249.399]
+/Rect [186.443 192.59 198.399 201.696]
/A << /S /GoTo /D (cite.DesignPatterns) >>
>>
% 1058 0 obj
@@ -7835,7 +7837,7 @@ stream
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[0 1 0]
-/Rect [265.293 240.393 277.248 249.399]
+/Rect [265.293 192.69 277.248 201.696]
/A << /S /GoTo /D (cite.Sparse03) >>
>>
% 1059 0 obj
@@ -7843,7 +7845,7 @@ stream
/Type /Annot
/Subtype /Link
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [451.809 237.643 458.683 249.703]
+/Rect [451.809 189.94 458.683 202]
/A << /S /GoTo /D (listing.2) >>
>>
% 1063 0 obj
@@ -7852,15 +7854,15 @@ stream
>>
% 99 0 obj
<<
-/D [1061 0 R /XYZ 150.705 544.277 null]
+/D [1061 0 R /XYZ 150.705 480.341 null]
>>
% 103 0 obj
<<
-/D [1061 0 R /XYZ 150.705 296.936 null]
+/D [1061 0 R /XYZ 150.705 248.209 null]
>>
% 1064 0 obj
<<
-/D [1061 0 R /XYZ 169.907 265.359 null]
+/D [1061 0 R /XYZ 169.907 217.656 null]
>>
% 1060 0 obj
<<
@@ -7879,13 +7881,13 @@ stream
<<
/D [1068 0 R /XYZ 98.895 753.953 null]
>>
-% 1066 0 obj
+% 1071 0 obj
<<
-/D [1068 0 R /XYZ 99.895 665.282 null]
+/D [1068 0 R /XYZ 403.329 671.491 null]
>>
-% 1071 0 obj
+% 1066 0 obj
<<
-/D [1068 0 R /XYZ 403.329 603.446 null]
+/D [1068 0 R /XYZ 99.895 571.789 null]
>>
endstream
@@ -10009,15 +10011,15 @@ stream
1152 7832 1143 7989 1149 8136 1150 8280 1154 8426 1151 8484 1162 8592 1156 8767 1157 8908 1158 9054
% 107 0 obj
<<
-/D [1068 0 R /XYZ 99.895 294.773 null]
+/D [1068 0 R /XYZ 99.895 281.021 null]
>>
% 111 0 obj
<<
-/D [1068 0 R /XYZ 99.895 276.048 null]
+/D [1068 0 R /XYZ 99.895 262.296 null]
>>
% 1067 0 obj
<<
-/Font << /F231 1035 0 R /F84 683 0 R /F131 931 0 R /F75 681 0 R >>
+/Font << /F75 681 0 R /F84 683 0 R /F131 931 0 R /F231 1035 0 R >>
/ProcSet [ /PDF /Text ]
>>
% 1074 0 obj
@@ -33244,7 +33246,7 @@ stream
endstream
endobj
-2285 0 obj
+2282 0 obj
<<
/Length1 1383
/Length2 5908
@@ -33315,7 +33317,124 @@ W
6S&_!S|esUFRyYﭧN
endstream
endobj
-2287 0 obj
+2284 0 obj
+<<
+/Length1 1956
+/Length2 7144
+/Length3 0
+/Length 9100
+>>
+stream
+%!PS-AdobeFont-1.0: CMITT10 003.002
+%%Title: CMITT10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (), with Reserved Font Name CMITT10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMITT10 known{/CMITT10 findfont dup/UniqueID known{dup
+/UniqueID get 5000779 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /SFGIZH+CMITT10 def
+/FontBBox {11 -233 669 696 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMITT10.) readonly def
+/FullName (CMITT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch true def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 65 /A put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 80 /P put
+dup 84 /T put
+dup 86 /V put
+dup 97 /a put
+dup 99 /c put
+dup 44 /comma put
+dup 100 /d put
+dup 101 /e put
+dup 33 /exclam put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 45 /hyphen put
+dup 105 /i put
+dup 107 /k put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 46 /period put
+dup 114 /r put
+dup 115 /s put
+dup 47 /slash put
+dup 116 /t put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+readonly def
+currentdict end
+currentfile eexec
+oc;jAw-36Uu4
+l.Nk48DPh>[ME7wk9B.H.CSoZqO O)9OHl~Q:ɾD0jJ'JZ`B
5ԆG
+tbY7:Ϳ2hK@,',L~## gyMiM?
i8Z+Ւ~[\3Mn=r=_Vxgp%vbҨSr\Ʃ*'"$9iV2;xտ`e'fz+;Z)ӣ4Y,1i$WVCo _S*`6
Ij$I/}!9'n0%3SVP}vqsF}OTӌ+O*6I*\-R3Nٜ:gd;p/V;aZ6詡:swQu+MFÜաn>s *HPix\x6uj^tTg'Dঐi&k|5.+ E0E,Tٙ~#NaXϖ.-EJ:cxΖxhN
T#O#k]FּXND AjvfrƮ/*{,Ed),#v ih@ `ܲ~y) ΚgىZlnv̉˭02L7PkgcW%N|]ɼgn
L >DC j}xt7$ 1쵗T
+"*vOBdN#/Ý_,N f/.1fuUoݫctݶ.aLEEԝO8NFm|@*7ȪqEIueXʊHm{+RZ\ Do6;%GC`]m%4BHi*GFn/.'1#F\ځSֆEkS*KbixVAyq