Updated docs.
psblas-3.2.0
Salvatore Filippone 11 years ago
parent 38b70b287f
commit fdaa0f5d74

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

@ -149,227 +149,229 @@ of a sparse matrix</A>
<LI><A NAME="tex2html66"
HREF="node32.html">csclip -- Reduce to a submatrix</A>
<LI><A NAME="tex2html67"
HREF="node33.html">clip_diag -- Cut out main diagonal</A>
HREF="node33.html">get_diag -- Get main diagonal</A>
<LI><A NAME="tex2html68"
HREF="node34.html">tril -- Return the lower triangle</A>
HREF="node34.html">clip_diag -- Cut out main diagonal</A>
<LI><A NAME="tex2html69"
HREF="node35.html">triu -- Return the upper triangle</A>
HREF="node35.html">tril -- Return the lower triangle</A>
<LI><A NAME="tex2html70"
HREF="node36.html">psb_set_mat_default -- Set default storage format</A>
HREF="node36.html">triu -- Return the upper triangle</A>
<LI><A NAME="tex2html71"
HREF="node37.html">clone -- Clone current object</A>
HREF="node37.html">psb_set_mat_default -- Set default storage format</A>
<LI><A NAME="tex2html72"
HREF="node38.html">Named Constants</A>
</UL>
HREF="node38.html">clone -- Clone current object</A>
<LI><A NAME="tex2html73"
HREF="node39.html">Dense Vector Data Structure</A>
<UL>
HREF="node39.html">Named Constants</A>
</UL>
<LI><A NAME="tex2html74"
HREF="node40.html">Vector Methods</A>
HREF="node40.html">Dense Vector Data Structure</A>
<UL>
<LI><A NAME="tex2html75"
HREF="node41.html">get_nrows -- Get number of rows in a dense vector</A>
HREF="node41.html">Vector Methods</A>
<LI><A NAME="tex2html76"
HREF="node42.html">sizeof -- Get memory occupation in bytes
of a dense vector</A>
HREF="node42.html">get_nrows -- Get number of rows in a dense vector</A>
<LI><A NAME="tex2html77"
HREF="node43.html">get_vect -- Get a copy of the vector contents</A>
HREF="node43.html">sizeof -- Get memory occupation in bytes
of a dense vector</A>
<LI><A NAME="tex2html78"
HREF="node44.html">clone -- Clone current object</A>
</UL>
HREF="node44.html">get_vect -- Get a copy of the vector contents</A>
<LI><A NAME="tex2html79"
HREF="node45.html">Preconditioner data structure</A>
HREF="node45.html">clone -- Clone current object</A>
</UL>
<BR>
<LI><A NAME="tex2html80"
HREF="node46.html">Computational routines</A>
<UL>
HREF="node46.html">Preconditioner data structure</A>
</UL>
<BR>
<LI><A NAME="tex2html81"
HREF="node47.html">psb_geaxpby -- General Dense Matrix Sum</A>
HREF="node47.html">Computational routines</A>
<UL>
<LI><A NAME="tex2html82"
HREF="node48.html">psb_gedot -- Dot Product</A>
HREF="node48.html">psb_geaxpby -- General Dense Matrix Sum</A>
<LI><A NAME="tex2html83"
HREF="node49.html">psb_gedots -- Generalized Dot Product</A>
HREF="node49.html">psb_gedot -- Dot Product</A>
<LI><A NAME="tex2html84"
HREF="node50.html">psb_geamax -- Infinity-Norm of Vector</A>
HREF="node50.html">psb_gedots -- Generalized Dot Product</A>
<LI><A NAME="tex2html85"
HREF="node51.html">psb_geamaxs -- Generalized Infinity Norm</A>
HREF="node51.html">psb_geamax -- Infinity-Norm of Vector</A>
<LI><A NAME="tex2html86"
HREF="node52.html">psb_geasum -- 1-Norm of Vector</A>
HREF="node52.html">psb_geamaxs -- Generalized Infinity Norm</A>
<LI><A NAME="tex2html87"
HREF="node53.html">psb_geasums -- Generalized 1-Norm of Vector</A>
HREF="node53.html">psb_geasum -- 1-Norm of Vector</A>
<LI><A NAME="tex2html88"
HREF="node54.html">psb_genrm2 -- 2-Norm of Vector</A>
HREF="node54.html">psb_geasums -- Generalized 1-Norm of Vector</A>
<LI><A NAME="tex2html89"
HREF="node55.html">psb_genrm2s -- Generalized 2-Norm of Vector</A>
HREF="node55.html">psb_genrm2 -- 2-Norm of Vector</A>
<LI><A NAME="tex2html90"
HREF="node56.html">psb_spnrm1 -- 1-Norm of Sparse Matrix</A>
HREF="node56.html">psb_genrm2s -- Generalized 2-Norm of Vector</A>
<LI><A NAME="tex2html91"
HREF="node57.html">psb_spnrmi -- Infinity Norm of Sparse Matrix</A>
HREF="node57.html">psb_spnrm1 -- 1-Norm of Sparse Matrix</A>
<LI><A NAME="tex2html92"
HREF="node58.html">psb_spmm -- Sparse Matrix by Dense Matrix
Product</A>
HREF="node58.html">psb_spnrmi -- Infinity Norm of Sparse Matrix</A>
<LI><A NAME="tex2html93"
HREF="node59.html">psb_spsm -- Triangular System Solve</A>
HREF="node59.html">psb_spmm -- Sparse Matrix by Dense Matrix
Product</A>
<LI><A NAME="tex2html94"
HREF="node60.html">psb_spsm -- Triangular System Solve</A>
</UL>
<BR>
<LI><A NAME="tex2html94"
HREF="node60.html">Communication routines</A>
<UL>
<LI><A NAME="tex2html95"
HREF="node61.html">psb_halo -- Halo Data Communication</A>
HREF="node61.html">Communication routines</A>
<UL>
<LI><A NAME="tex2html96"
HREF="node62.html">psb_ovrl -- Overlap Update</A>
HREF="node62.html">psb_halo -- Halo Data Communication</A>
<LI><A NAME="tex2html97"
HREF="node63.html">psb_gather -- Gather Global Dense Matrix</A>
HREF="node63.html">psb_ovrl -- Overlap Update</A>
<LI><A NAME="tex2html98"
HREF="node64.html">psb_scatter -- Scatter Global Dense Matrix</A>
HREF="node64.html">psb_gather -- Gather Global Dense Matrix</A>
<LI><A NAME="tex2html99"
HREF="node65.html">psb_scatter -- Scatter Global Dense Matrix</A>
</UL>
<BR>
<LI><A NAME="tex2html99"
HREF="node65.html">Data management routines</A>
<UL>
<LI><A NAME="tex2html100"
HREF="node66.html">psb_cdall -- Allocates a communication descriptor</A>
HREF="node66.html">Data management routines</A>
<UL>
<LI><A NAME="tex2html101"
HREF="node67.html">psb_cdins -- Communication descriptor insert
routine</A>
HREF="node67.html">psb_cdall -- Allocates a communication descriptor</A>
<LI><A NAME="tex2html102"
HREF="node68.html">psb_cdasb -- Communication descriptor assembly
HREF="node68.html">psb_cdins -- Communication descriptor insert
routine</A>
<LI><A NAME="tex2html103"
HREF="node69.html">psb_cdcpy -- Copies a communication descriptor</A>
HREF="node69.html">psb_cdasb -- Communication descriptor assembly
routine</A>
<LI><A NAME="tex2html104"
HREF="node70.html">psb_cdfree -- Frees a communication descriptor</A>
HREF="node70.html">psb_cdcpy -- Copies a communication descriptor</A>
<LI><A NAME="tex2html105"
HREF="node71.html">psb_cdbldext -- Build an extended communication
descriptor</A>
HREF="node71.html">psb_cdfree -- Frees a communication descriptor</A>
<LI><A NAME="tex2html106"
HREF="node72.html">psb_spall -- Allocates a sparse matrix</A>
HREF="node72.html">psb_cdbldext -- Build an extended communication
descriptor</A>
<LI><A NAME="tex2html107"
HREF="node73.html">psb_spins -- Insert a cloud of elements into a sparse
matrix</A>
HREF="node73.html">psb_spall -- Allocates a sparse matrix</A>
<LI><A NAME="tex2html108"
HREF="node74.html">psb_spasb -- Sparse matrix assembly routine</A>
HREF="node74.html">psb_spins -- Insert a cloud of elements into a sparse
matrix</A>
<LI><A NAME="tex2html109"
HREF="node75.html">psb_spfree -- Frees a sparse matrix</A>
HREF="node75.html">psb_spasb -- Sparse matrix assembly routine</A>
<LI><A NAME="tex2html110"
HREF="node76.html">psb_sprn -- Reinit sparse matrix structure for psblas
routines.</A>
HREF="node76.html">psb_spfree -- Frees a sparse matrix</A>
<LI><A NAME="tex2html111"
HREF="node77.html">psb_geall -- Allocates a dense matrix</A>
HREF="node77.html">psb_sprn -- Reinit sparse matrix structure for psblas
routines.</A>
<LI><A NAME="tex2html112"
HREF="node78.html">psb_geins -- Dense matrix insertion routine</A>
HREF="node78.html">psb_geall -- Allocates a dense matrix</A>
<LI><A NAME="tex2html113"
HREF="node79.html">psb_geasb -- Assembly a dense matrix</A>
HREF="node79.html">psb_geins -- Dense matrix insertion routine</A>
<LI><A NAME="tex2html114"
HREF="node80.html">psb_gefree -- Frees a dense matrix</A>
HREF="node80.html">psb_geasb -- Assembly a dense matrix</A>
<LI><A NAME="tex2html115"
HREF="node81.html">psb_gelp -- Applies a left permutation to a dense
matrix</A>
HREF="node81.html">psb_gefree -- Frees a dense matrix</A>
<LI><A NAME="tex2html116"
HREF="node82.html">psb_glob_to_loc -- Global to local indices
convertion</A>
HREF="node82.html">psb_gelp -- Applies a left permutation to a dense
matrix</A>
<LI><A NAME="tex2html117"
HREF="node83.html">psb_loc_to_glob -- Local to global indices
conversion</A>
HREF="node83.html">psb_glob_to_loc -- Global to local indices
convertion</A>
<LI><A NAME="tex2html118"
HREF="node84.html">psb_is_owned -- </A>
HREF="node84.html">psb_loc_to_glob -- Local to global indices
conversion</A>
<LI><A NAME="tex2html119"
HREF="node85.html">psb_owned_index -- </A>
HREF="node85.html">psb_is_owned -- </A>
<LI><A NAME="tex2html120"
HREF="node86.html">psb_is_local -- </A>
HREF="node86.html">psb_owned_index -- </A>
<LI><A NAME="tex2html121"
HREF="node87.html">psb_local_index -- </A>
HREF="node87.html">psb_is_local -- </A>
<LI><A NAME="tex2html122"
HREF="node88.html">psb_get_boundary -- Extract list of boundary
elements</A>
HREF="node88.html">psb_local_index -- </A>
<LI><A NAME="tex2html123"
HREF="node89.html">psb_get_overlap -- Extract list of overlap
HREF="node89.html">psb_get_boundary -- Extract list of boundary
elements</A>
<LI><A NAME="tex2html124"
HREF="node90.html">psb_sp_getrow -- Extract row(s) from a sparse
matrix</A>
HREF="node90.html">psb_get_overlap -- Extract list of overlap
elements</A>
<LI><A NAME="tex2html125"
HREF="node91.html">psb_sizeof -- Memory occupation</A>
HREF="node91.html">psb_sp_getrow -- Extract row(s) from a sparse
matrix</A>
<LI><A NAME="tex2html126"
HREF="node92.html">Sorting utilities -- </A>
HREF="node92.html">psb_sizeof -- Memory occupation</A>
<LI><A NAME="tex2html127"
HREF="node93.html">Sorting utilities -- </A>
</UL>
<BR>
<LI><A NAME="tex2html127"
HREF="node93.html">Parallel environment routines</A>
<UL>
<LI><A NAME="tex2html128"
HREF="node94.html">psb_init -- Initializes PSBLAS parallel
environment</A>
HREF="node94.html">Parallel environment routines</A>
<UL>
<LI><A NAME="tex2html129"
HREF="node95.html">psb_info -- Return information about PSBLAS parallel
HREF="node95.html">psb_init -- Initializes PSBLAS parallel
environment</A>
<LI><A NAME="tex2html130"
HREF="node96.html">psb_exit -- Exit from PSBLAS parallel
HREF="node96.html">psb_info -- Return information about PSBLAS parallel
environment</A>
<LI><A NAME="tex2html131"
HREF="node97.html">psb_get_mpicomm -- Get the MPI communicator</A>
HREF="node97.html">psb_exit -- Exit from PSBLAS parallel
environment</A>
<LI><A NAME="tex2html132"
HREF="node98.html">psb_get_rank -- Get the MPI rank</A>
HREF="node98.html">psb_get_mpicomm -- Get the MPI communicator</A>
<LI><A NAME="tex2html133"
HREF="node99.html">psb_wtime -- Wall clock timing</A>
HREF="node99.html">psb_get_rank -- Get the MPI rank</A>
<LI><A NAME="tex2html134"
HREF="node100.html">psb_barrier -- Sinchronization point parallel
environment</A>
HREF="node100.html">psb_wtime -- Wall clock timing</A>
<LI><A NAME="tex2html135"
HREF="node101.html">psb_abort -- Abort a computation</A>
HREF="node101.html">psb_barrier -- Sinchronization point parallel
environment</A>
<LI><A NAME="tex2html136"
HREF="node102.html">psb_bcast -- Broadcast data</A>
HREF="node102.html">psb_abort -- Abort a computation</A>
<LI><A NAME="tex2html137"
HREF="node103.html">psb_sum -- Global sum</A>
HREF="node103.html">psb_bcast -- Broadcast data</A>
<LI><A NAME="tex2html138"
HREF="node104.html">psb_max -- Global maximum</A>
HREF="node104.html">psb_sum -- Global sum</A>
<LI><A NAME="tex2html139"
HREF="node105.html">psb_min -- Global minimum</A>
HREF="node105.html">psb_max -- Global maximum</A>
<LI><A NAME="tex2html140"
HREF="node106.html">psb_amx -- Global maximum absolute value</A>
HREF="node106.html">psb_min -- Global minimum</A>
<LI><A NAME="tex2html141"
HREF="node107.html">psb_amn -- Global minimum absolute value</A>
HREF="node107.html">psb_amx -- Global maximum absolute value</A>
<LI><A NAME="tex2html142"
HREF="node108.html">psb_snd -- Send data</A>
HREF="node108.html">psb_amn -- Global minimum absolute value</A>
<LI><A NAME="tex2html143"
HREF="node109.html">psb_rcv -- Receive data</A>
HREF="node109.html">psb_snd -- Send data</A>
<LI><A NAME="tex2html144"
HREF="node110.html">psb_rcv -- Receive data</A>
</UL>
<BR>
<LI><A NAME="tex2html144"
HREF="node110.html">Error handling</A>
<LI><A NAME="tex2html145"
HREF="node111.html">Utilities</A>
HREF="node111.html">Error handling</A>
<LI><A NAME="tex2html146"
HREF="node112.html">Preconditioner routines</A>
<UL>
HREF="node112.html">Utilities</A>
<LI><A NAME="tex2html147"
HREF="node113.html">psb_precinit -- Initialize a preconditioner</A>
HREF="node113.html">Preconditioner routines</A>
<UL>
<LI><A NAME="tex2html148"
HREF="node114.html">psb_precbld -- Builds a preconditioner</A>
HREF="node114.html">psb_precinit -- Initialize a preconditioner</A>
<LI><A NAME="tex2html149"
HREF="node115.html">psb_precaply -- Preconditioner application
routine</A>
HREF="node115.html">psb_precbld -- Builds a preconditioner</A>
<LI><A NAME="tex2html150"
HREF="node116.html">psb_precdescr -- Prints a description of current
preconditioner</A>
HREF="node116.html">psb_precaply -- Preconditioner application
routine</A>
<LI><A NAME="tex2html151"
HREF="node117.html">clone -- clone current
HREF="node117.html">psb_precdescr -- Prints a description of current
preconditioner</A>
<LI><A NAME="tex2html152"
HREF="node118.html">clone -- clone current
preconditioner</A>
</UL>
<BR>
<LI><A NAME="tex2html152"
HREF="node118.html">Iterative Methods</A>
<UL>
<LI><A NAME="tex2html153"
HREF="node119.html">psb_krylov -- Krylov Methods Driver
HREF="node119.html">Iterative Methods</A>
<UL>
<LI><A NAME="tex2html154"
HREF="node120.html">psb_krylov -- Krylov Methods Driver
Routine</A>
</UL>
<BR>
<LI><A NAME="tex2html154"
HREF="node120.html">Bibliography</A>
<LI><A NAME="tex2html155"
HREF="node121.html">About this document ...</A>
HREF="node121.html">Bibliography</A>
<LI><A NAME="tex2html156"
HREF="node122.html">About this document ...</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>

@ -26,21 +26,21 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html164"
<A NAME="tex2html165"
HREF="node2.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html162"
<A NAME="tex2html163"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html156"
<A NAME="tex2html157"
HREF="userhtml.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html165"
<B> Next:</B> <A NAME="tex2html166"
HREF="node2.html">Introduction</A>
<B> Up:</B> <A NAME="tex2html163"
<B> Up:</B> <A NAME="tex2html164"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html157"
<B> Previous:</B> <A NAME="tex2html158"
HREF="userhtml.html">userhtml</A>
<BR>
<BR>
@ -53,52 +53,52 @@ Contents</A>
<!--Table of Contents-->
<UL>
<LI><A NAME="tex2html166"
HREF="node2.html">Introduction</A>
<LI><A NAME="tex2html167"
HREF="node2.html">Introduction</A>
<LI><A NAME="tex2html168"
HREF="node3.html">General overview</A>
<UL>
<LI><A NAME="tex2html168"
HREF="node4.html">Basic Nomenclature</A>
<LI><A NAME="tex2html169"
HREF="node5.html">Library contents</A>
HREF="node4.html">Basic Nomenclature</A>
<LI><A NAME="tex2html170"
HREF="node6.html">Application structure</A>
HREF="node5.html">Library contents</A>
<LI><A NAME="tex2html171"
HREF="node6.html">Application structure</A>
<LI><A NAME="tex2html172"
HREF="node8.html">Programming model</A>
</UL>
<BR>
<LI><A NAME="tex2html172"
<LI><A NAME="tex2html173"
HREF="node9.html">Data Structures and Classes</A>
<UL>
<LI><A NAME="tex2html173"
HREF="node10.html">Descriptor data structure</A>
<LI><A NAME="tex2html174"
HREF="node21.html">Sparse Matrix class</A>
HREF="node10.html">Descriptor data structure</A>
<LI><A NAME="tex2html175"
HREF="node39.html">Dense Vector Data Structure</A>
HREF="node21.html">Sparse Matrix class</A>
<LI><A NAME="tex2html176"
HREF="node45.html">Preconditioner data structure</A>
HREF="node40.html">Dense Vector Data Structure</A>
<LI><A NAME="tex2html177"
HREF="node46.html">Preconditioner data structure</A>
</UL>
<BR>
<LI><A NAME="tex2html177"
HREF="node46.html">Computational routines</A>
<LI><A NAME="tex2html178"
HREF="node60.html">Communication routines</A>
HREF="node47.html">Computational routines</A>
<LI><A NAME="tex2html179"
HREF="node65.html">Data management routines</A>
HREF="node61.html">Communication routines</A>
<LI><A NAME="tex2html180"
HREF="node93.html">Parallel environment routines</A>
HREF="node66.html">Data management routines</A>
<LI><A NAME="tex2html181"
HREF="node110.html">Error handling</A>
HREF="node94.html">Parallel environment routines</A>
<LI><A NAME="tex2html182"
HREF="node111.html">Utilities</A>
HREF="node111.html">Error handling</A>
<LI><A NAME="tex2html183"
HREF="node112.html">Preconditioner routines</A>
HREF="node112.html">Utilities</A>
<LI><A NAME="tex2html184"
HREF="node118.html">Iterative Methods</A>
HREF="node113.html">Preconditioner routines</A>
<LI><A NAME="tex2html185"
HREF="node120.html">Bibliography</A>
HREF="node119.html">Iterative Methods</A>
<LI><A NAME="tex2html186"
HREF="node121.html">Bibliography</A>
</UL>
<!--End of Table of Contents-->
<P>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html330"
<A NAME="tex2html332"
HREF="node11.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html326"
<A NAME="tex2html328"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html320"
<A NAME="tex2html322"
HREF="node9.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html328"
<A NAME="tex2html330"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html331"
<B> Next:</B> <A NAME="tex2html333"
HREF="node11.html">Descriptor Methods</A>
<B> Up:</B> <A NAME="tex2html327"
<B> Up:</B> <A NAME="tex2html329"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html321"
<B> Previous:</B> <A NAME="tex2html323"
HREF="node9.html">Data Structures and Classes</A>
&nbsp; <B> <A NAME="tex2html329"
&nbsp; <B> <A NAME="tex2html331"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
@ -66,7 +66,7 @@ necessary for implementing the various algorithms of interest to us.
<P>
The data structure itself <code>psb_desc_type</code> can be treated as an
opaque object handled via the tools routines of
Sec.&nbsp;<A HREF="node65.html#sec:toolsrout">6</A> or the query routines detailed below;
Sec.&nbsp;<A HREF="node66.html#sec:toolsrout">6</A> or the query routines detailed below;
nevertheless we include here a description for the curious
reader.
@ -117,7 +117,7 @@ All methods but the last are purely local; the last method potentially
requires communication among processes, and thus is a synchronous
method. The choice of a specific dynamic type for the index map is
made at the time the descriptor is initially allocated, according to
the mode of initialization (see also&nbsp;<A HREF="node65.html#sec:toolsrout">6</A>).
the mode of initialization (see also&nbsp;<A HREF="node66.html#sec:toolsrout">6</A>).
<P>
The descriptor contents are as follows:
@ -202,7 +202,7 @@ Specified as: an allocatable integer array of rank two.
The Fortran&nbsp;2003 declaration for <code>psb_desc_type</code> structures is
as follows:
<DIV ALIGN="CENTER"><A NAME="fig:desctype"></A><A NAME="847"></A>
<DIV ALIGN="CENTER"><A NAME="fig:desctype"></A><A NAME="858"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
The PSBLAS defined data type that
@ -249,52 +249,52 @@ state, which can take the following values:
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html332"
<LI><A NAME="tex2html334"
HREF="node11.html">Descriptor Methods</A>
<LI><A NAME="tex2html333"
<LI><A NAME="tex2html335"
HREF="node12.html">get_local_rows -- Get number of local rows</A>
<LI><A NAME="tex2html334"
<LI><A NAME="tex2html336"
HREF="node13.html">get_local_cols -- Get number of local cols</A>
<LI><A NAME="tex2html335"
<LI><A NAME="tex2html337"
HREF="node14.html">get_global_rows -- Get number of global rows</A>
<LI><A NAME="tex2html336"
<LI><A NAME="tex2html338"
HREF="node15.html">get_global_cols -- Get number of global cols</A>
<LI><A NAME="tex2html337"
<LI><A NAME="tex2html339"
HREF="node16.html">get_context -- Get communication context</A>
<LI><A NAME="tex2html338"
<LI><A NAME="tex2html340"
HREF="node17.html">Clone -- clone current object</A>
<LI><A NAME="tex2html339"
<LI><A NAME="tex2html341"
HREF="node18.html">psb_cd_get_large_threshold -- Get threshold for
index mapping switch</A>
<LI><A NAME="tex2html340"
<LI><A NAME="tex2html342"
HREF="node19.html">psb_cd_set_large_threshold -- Set threshold for
index mapping switch</A>
<LI><A NAME="tex2html341"
<LI><A NAME="tex2html343"
HREF="node20.html">Named Constants</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html330"
<A NAME="tex2html332"
HREF="node11.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html326"
<A NAME="tex2html328"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html320"
<A NAME="tex2html322"
HREF="node9.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html328"
<A NAME="tex2html330"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html331"
<B> Next:</B> <A NAME="tex2html333"
HREF="node11.html">Descriptor Methods</A>
<B> Up:</B> <A NAME="tex2html327"
<B> Up:</B> <A NAME="tex2html329"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html321"
<B> Previous:</B> <A NAME="tex2html323"
HREF="node9.html">Data Structures and Classes</A>
&nbsp; <B> <A NAME="tex2html329"
&nbsp; <B> <A NAME="tex2html331"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_barrier -- Sinchronization point parallel environment</TITLE>
<META NAME="description" CONTENT="psb_barrier -- Sinchronization point parallel environment">
<TITLE>psb_wtime -- Wall clock timing</TITLE>
<META NAME="description" CONTENT="psb_wtime -- Wall clock timing">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,68 +20,60 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node101.html">
<LINK REL="previous" HREF="node99.html">
<LINK REL="up" HREF="node93.html">
<LINK REL="up" HREF="node94.html">
<LINK REL="next" HREF="node101.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1488"
<A NAME="tex2html1491"
HREF="node101.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1484"
HREF="node93.html">
<A NAME="tex2html1487"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1478"
<A NAME="tex2html1481"
HREF="node99.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1486"
<A NAME="tex2html1489"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1489"
HREF="node101.html">psb_abort Abort</A>
<B> Up:</B> <A NAME="tex2html1485"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1479"
HREF="node99.html">psb_wtime Wall</A>
&nbsp; <B> <A NAME="tex2html1487"
<B> Next:</B> <A NAME="tex2html1492"
HREF="node101.html">psb_barrier Sinchronization</A>
<B> Up:</B> <A NAME="tex2html1488"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1482"
HREF="node99.html">psb_get_rank Get</A>
&nbsp; <B> <A NAME="tex2html1490"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00087000000000000000">
psb_barrier -- Sinchronization point parallel
environment</A>
<H2><A NAME="SECTION00086000000000000000">
psb_wtime -- Wall clock timing</A>
</H2>
<P>
<PRE>
call psb_barrier(icontxt)
time = psb_wtime()
</PRE>
<P>
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.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DT><STRONG><B>On Exit </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>icontxt</STRONG></DT>
<DD>the communication context identifying the virtual
parallel machine.
<DT><STRONG>Function value</STRONG></DT>
<DD>the elapsed time in seconds.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer variable.
Returned as: a <code>real(psb_dpk_)</code> variable.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_abort -- Abort a computation</TITLE>
<META NAME="description" CONTENT="psb_abort -- Abort a computation">
<TITLE>psb_barrier -- Sinchronization point parallel environment</TITLE>
<META NAME="description" CONTENT="psb_barrier -- Sinchronization point parallel environment">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,51 +20,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node102.html">
<LINK REL="previous" HREF="node100.html">
<LINK REL="up" HREF="node93.html">
<LINK REL="up" HREF="node94.html">
<LINK REL="next" HREF="node102.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1500"
<A NAME="tex2html1503"
HREF="node102.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1496"
HREF="node93.html">
<A NAME="tex2html1499"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1490"
<A NAME="tex2html1493"
HREF="node100.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1498"
<A NAME="tex2html1501"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1501"
HREF="node102.html">psb_bcast Broadcast</A>
<B> Up:</B> <A NAME="tex2html1497"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1491"
HREF="node100.html">psb_barrier Sinchronization</A>
&nbsp; <B> <A NAME="tex2html1499"
<B> Next:</B> <A NAME="tex2html1504"
HREF="node102.html">psb_abort Abort</A>
<B> Up:</B> <A NAME="tex2html1500"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1494"
HREF="node100.html">psb_wtime Wall</A>
&nbsp; <B> <A NAME="tex2html1502"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00088000000000000000">
psb_abort -- Abort a computation</A>
<H2><A NAME="SECTION00087000000000000000">
psb_barrier -- Sinchronization point parallel
environment</A>
</H2>
<P>
<PRE>
call psb_abort(icontxt)
call psb_barrier(icontxt)
</PRE>
<P>
This subroutine aborts computation on the parallel virtual machine.
This subroutine acts as an explicit synchronization point for the PSBLAS
parallel virtual machine.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_bcast -- Broadcast data</TITLE>
<META NAME="description" CONTENT="psb_bcast -- Broadcast data">
<TITLE>psb_abort -- Abort a computation</TITLE>
<META NAME="description" CONTENT="psb_abort -- Abort a computation">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,52 +20,51 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node103.html">
<LINK REL="previous" HREF="node101.html">
<LINK REL="up" HREF="node93.html">
<LINK REL="up" HREF="node94.html">
<LINK REL="next" HREF="node103.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1512"
<A NAME="tex2html1515"
HREF="node103.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1508"
HREF="node93.html">
<A NAME="tex2html1511"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1502"
<A NAME="tex2html1505"
HREF="node101.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1510"
<A NAME="tex2html1513"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1513"
HREF="node103.html">psb_sum Global</A>
<B> Up:</B> <A NAME="tex2html1509"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1503"
HREF="node101.html">psb_abort Abort</A>
&nbsp; <B> <A NAME="tex2html1511"
<B> Next:</B> <A NAME="tex2html1516"
HREF="node103.html">psb_bcast Broadcast</A>
<B> Up:</B> <A NAME="tex2html1512"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1506"
HREF="node101.html">psb_barrier Sinchronization</A>
&nbsp; <B> <A NAME="tex2html1514"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00089000000000000000">
psb_bcast -- Broadcast data</A>
<H2><A NAME="SECTION00088000000000000000">
psb_abort -- Abort a computation</A>
</H2>
<P>
<PRE>
call psb_bcast(icontxt, dat, root)
call psb_abort(icontxt)
</PRE>
<P>
This subroutine implements a broadcast operation based on the
underlying communication library.
This subroutine aborts computation on the parallel virtual machine.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
@ -82,81 +81,10 @@ Intent: <B>in</B>.
<BR>
Specified as: an integer variable.
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>On the root process, the data to be broadcast.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical variable,
which may be a scalar or rank 1 array. Type, kind, rank and size must agree on all processes.
</DD>
<DT><STRONG>root</STRONG></DT>
<DD>Root process holding data to be broadcast.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value <!-- MATH
$0<= root <= np-1$
-->
<IMG
WIDTH="152" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img132.png"
ALT="$0&lt;= root &lt;= np-1$">, default 0 </DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>On processes other than root, the data to be broadcast.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind, rank and size must agree on all processes.
</DD>
</DL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1512"
HREF="node103.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1508"
HREF="node93.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1502"
HREF="node101.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1510"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1513"
HREF="node103.html">psb_sum Global</A>
<B> Up:</B> <A NAME="tex2html1509"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1503"
HREF="node101.html">psb_abort Abort</A>
&nbsp; <B> <A NAME="tex2html1511"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
<BR><HR>
</BODY>
</HTML>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_sum -- Global sum</TITLE>
<META NAME="description" CONTENT="psb_sum -- Global sum">
<TITLE>psb_bcast -- Broadcast data</TITLE>
<META NAME="description" CONTENT="psb_bcast -- Broadcast data">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,48 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node104.html">
<LINK REL="previous" HREF="node102.html">
<LINK REL="up" HREF="node93.html">
<LINK REL="up" HREF="node94.html">
<LINK REL="next" HREF="node104.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1524"
<A NAME="tex2html1527"
HREF="node104.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1520"
HREF="node93.html">
<A NAME="tex2html1523"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1514"
<A NAME="tex2html1517"
HREF="node102.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1522"
<A NAME="tex2html1525"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1525"
HREF="node104.html">psb_max Global</A>
<B> Up:</B> <A NAME="tex2html1521"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1515"
HREF="node102.html">psb_bcast Broadcast</A>
&nbsp; <B> <A NAME="tex2html1523"
<B> Next:</B> <A NAME="tex2html1528"
HREF="node104.html">psb_sum Global</A>
<B> Up:</B> <A NAME="tex2html1524"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1518"
HREF="node102.html">psb_abort Abort</A>
&nbsp; <B> <A NAME="tex2html1526"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000810000000000000000">
psb_sum -- Global sum</A>
<H2><A NAME="SECTION00089000000000000000">
psb_bcast -- Broadcast data</A>
</H2>
<P>
<PRE>
call psb_sum(icontxt, dat, root)
call psb_bcast(icontxt, dat, root)
</PRE>
<P>
This subroutine implements a sum reduction operation based on the
This subroutine implements a broadcast operation based on the
underlying communication library.
<DL>
<DT><STRONG>Type:</STRONG></DT>
@ -83,7 +83,7 @@ Intent: <B>in</B>.
Specified as: an integer variable.
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>The local contribution to the global sum.
<DD>On the root process, the data to be broadcast.
<BR>
Scope: <B>global</B>.
<BR>
@ -92,14 +92,11 @@ Type: <B>required</B>.
Intent: <B>inout</B>.
<BR>
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. 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.
</DD>
<DT><STRONG>root</STRONG></DT>
<DD>Process to hold the final sum, or <IMG
WIDTH="25" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img79.png"
ALT="$-1$"> to make it available
on all processes.
<DD>Root process holding data to be broadcast.
<BR>
Scope: <B>global</B>.
<BR>
@ -108,12 +105,12 @@ Type: <B>optional</B>.
Intent: <B>in</B>.
<BR>
Specified as: an integer value <!-- MATH
$-1<= root <= np-1$
$0<= root <= np-1$
-->
<IMG
WIDTH="166" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img133.png"
ALT="$-1&lt;= root &lt;= np-1$">, default -1. </DD>
WIDTH="152" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img132.png"
ALT="$0&lt;= root &lt;= np-1$">, default 0 </DD>
</DL>
<P>
@ -122,7 +119,7 @@ Specified as: an integer value <!-- MATH
<DD>
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>On destination process(es), the result of the sum operation.
<DD>On processes other than root, the data to be broadcast.
<BR>
Scope: <B>global</B>.
<BR>
@ -131,47 +128,33 @@ Type: <B>required</B>.
Intent: <B>inout</B>.
<BR>
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array.
<BR>
Type, kind, rank and size must agree on all processes.
scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind, rank and size must agree on all processes.
</DD>
</DL>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>The <code>dat</code> argument is both input and output, and its
value may be changed even on processes different from the final
result destination.
</LI>
<LI>The <code>dat</code> argument may also be a long integer scalar.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1524"
<A NAME="tex2html1527"
HREF="node104.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1520"
HREF="node93.html">
<A NAME="tex2html1523"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1514"
<A NAME="tex2html1517"
HREF="node102.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1522"
<A NAME="tex2html1525"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1525"
HREF="node104.html">psb_max Global</A>
<B> Up:</B> <A NAME="tex2html1521"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1515"
HREF="node102.html">psb_bcast Broadcast</A>
&nbsp; <B> <A NAME="tex2html1523"
<B> Next:</B> <A NAME="tex2html1528"
HREF="node104.html">psb_sum Global</A>
<B> Up:</B> <A NAME="tex2html1524"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1518"
HREF="node102.html">psb_abort Abort</A>
&nbsp; <B> <A NAME="tex2html1526"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_max -- Global maximum</TITLE>
<META NAME="description" CONTENT="psb_max -- Global maximum">
<TITLE>psb_sum -- Global sum</TITLE>
<META NAME="description" CONTENT="psb_sum -- Global sum">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,49 +20,49 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node105.html">
<LINK REL="previous" HREF="node103.html">
<LINK REL="up" HREF="node93.html">
<LINK REL="up" HREF="node94.html">
<LINK REL="next" HREF="node105.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1536"
<A NAME="tex2html1539"
HREF="node105.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1532"
HREF="node93.html">
<A NAME="tex2html1535"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1526"
<A NAME="tex2html1529"
HREF="node103.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1534"
<A NAME="tex2html1537"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1537"
HREF="node105.html">psb_min Global</A>
<B> Up:</B> <A NAME="tex2html1533"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1527"
HREF="node103.html">psb_sum Global</A>
&nbsp; <B> <A NAME="tex2html1535"
<B> Next:</B> <A NAME="tex2html1540"
HREF="node105.html">psb_max Global</A>
<B> Up:</B> <A NAME="tex2html1536"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1530"
HREF="node103.html">psb_bcast Broadcast</A>
&nbsp; <B> <A NAME="tex2html1538"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000811000000000000000">
psb_max -- Global maximum</A>
<H2><A NAME="SECTION000810000000000000000">
psb_sum -- Global sum</A>
</H2>
<P>
<PRE>
call psb_max(icontxt, dat, root)
call psb_sum(icontxt, dat, root)
</PRE>
<P>
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.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
@ -83,19 +83,19 @@ Intent: <B>in</B>.
Specified as: an integer variable.
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>The local contribution to the global maximum.
<DD>The local contribution to the global sum.
<BR>
Scope: <B>local</B>.
Scope: <B>global</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
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.
</DD>
<DT><STRONG>root</STRONG></DT>
<DD>Process to hold the final maximum, or <IMG
<DD>Process to hold the final sum, or <IMG
WIDTH="25" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img79.png"
ALT="$-1$"> to make it available
@ -113,8 +113,7 @@ Specified as: an integer value <!-- MATH
<IMG
WIDTH="166" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img133.png"
ALT="$-1&lt;= root &lt;= np-1$">, default -1.
<BR></DD>
ALT="$-1&lt;= root &lt;= np-1$">, default -1. </DD>
</DL>
<P>
@ -123,16 +122,18 @@ Specified as: an integer value <!-- MATH
<DD>
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>On destination process(es), the result of the maximum operation.
<DD>On destination process(es), the result of the sum operation.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
Intent: <B>inout</B>.
<BR>
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.
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array.
<BR>
Type, kind, rank and size must agree on all processes.
</DD>
</DL>
@ -151,26 +152,26 @@ scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all pro
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1536"
<A NAME="tex2html1539"
HREF="node105.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1532"
HREF="node93.html">
<A NAME="tex2html1535"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1526"
<A NAME="tex2html1529"
HREF="node103.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1534"
<A NAME="tex2html1537"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1537"
HREF="node105.html">psb_min Global</A>
<B> Up:</B> <A NAME="tex2html1533"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1527"
HREF="node103.html">psb_sum Global</A>
&nbsp; <B> <A NAME="tex2html1535"
<B> Next:</B> <A NAME="tex2html1540"
HREF="node105.html">psb_max Global</A>
<B> Up:</B> <A NAME="tex2html1536"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1530"
HREF="node103.html">psb_bcast Broadcast</A>
&nbsp; <B> <A NAME="tex2html1538"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_min -- Global minimum</TITLE>
<META NAME="description" CONTENT="psb_min -- Global minimum">
<TITLE>psb_max -- Global maximum</TITLE>
<META NAME="description" CONTENT="psb_max -- Global maximum">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,48 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node106.html">
<LINK REL="previous" HREF="node104.html">
<LINK REL="up" HREF="node93.html">
<LINK REL="up" HREF="node94.html">
<LINK REL="next" HREF="node106.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1548"
<A NAME="tex2html1551"
HREF="node106.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1544"
HREF="node93.html">
<A NAME="tex2html1547"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1538"
<A NAME="tex2html1541"
HREF="node104.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1546"
<A NAME="tex2html1549"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1549"
HREF="node106.html">psb_amx Global</A>
<B> Up:</B> <A NAME="tex2html1545"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1539"
HREF="node104.html">psb_max Global</A>
&nbsp; <B> <A NAME="tex2html1547"
<B> Next:</B> <A NAME="tex2html1552"
HREF="node106.html">psb_min Global</A>
<B> Up:</B> <A NAME="tex2html1548"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1542"
HREF="node104.html">psb_sum Global</A>
&nbsp; <B> <A NAME="tex2html1550"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000812000000000000000">
psb_min -- Global minimum</A>
<H2><A NAME="SECTION000811000000000000000">
psb_max -- Global maximum</A>
</H2>
<P>
<PRE>
call psb_min(icontxt, dat, root)
call psb_max(icontxt, dat, root)
</PRE>
<P>
This subroutine implements a minimum value reduction
This subroutine implements a maximum valuereduction
operation based on the underlying communication library.
<DL>
<DT><STRONG>Type:</STRONG></DT>
@ -83,7 +83,7 @@ Intent: <B>in</B>.
Specified as: an integer variable.
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>The local contribution to the global minimum.
<DD>The local contribution to the global maximum.
<BR>
Scope: <B>local</B>.
<BR>
@ -91,11 +91,11 @@ Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
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.
</DD>
<DT><STRONG>root</STRONG></DT>
<DD>Process to hold the final value, or <IMG
<DD>Process to hold the final maximum, or <IMG
WIDTH="25" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img79.png"
ALT="$-1$"> to make it available
@ -123,18 +123,16 @@ Specified as: an integer value <!-- MATH
<DD>
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>On destination process(es), the result of the minimum operation.
<DD>On destination process(es), the result of the maximum operation.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array.
Intent: <B>in</B>.
<BR>
Type, kind, rank and size must agree on all processes.
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.
</DD>
</DL>
@ -153,26 +151,26 @@ Type, kind, rank and size must agree on all processes.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1548"
<A NAME="tex2html1551"
HREF="node106.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1544"
HREF="node93.html">
<A NAME="tex2html1547"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1538"
<A NAME="tex2html1541"
HREF="node104.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1546"
<A NAME="tex2html1549"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1549"
HREF="node106.html">psb_amx Global</A>
<B> Up:</B> <A NAME="tex2html1545"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1539"
HREF="node104.html">psb_max Global</A>
&nbsp; <B> <A NAME="tex2html1547"
<B> Next:</B> <A NAME="tex2html1552"
HREF="node106.html">psb_min Global</A>
<B> Up:</B> <A NAME="tex2html1548"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1542"
HREF="node104.html">psb_sum Global</A>
&nbsp; <B> <A NAME="tex2html1550"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_amx -- Global maximum absolute value</TITLE>
<META NAME="description" CONTENT="psb_amx -- Global maximum absolute value">
<TITLE>psb_min -- Global minimum</TITLE>
<META NAME="description" CONTENT="psb_min -- Global minimum">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,48 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node107.html">
<LINK REL="previous" HREF="node105.html">
<LINK REL="up" HREF="node93.html">
<LINK REL="up" HREF="node94.html">
<LINK REL="next" HREF="node107.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1560"
<A NAME="tex2html1563"
HREF="node107.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1556"
HREF="node93.html">
<A NAME="tex2html1559"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1550"
<A NAME="tex2html1553"
HREF="node105.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1558"
<A NAME="tex2html1561"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1561"
HREF="node107.html">psb_amn Global</A>
<B> Up:</B> <A NAME="tex2html1557"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1551"
HREF="node105.html">psb_min Global</A>
&nbsp; <B> <A NAME="tex2html1559"
<B> Next:</B> <A NAME="tex2html1564"
HREF="node107.html">psb_amx Global</A>
<B> Up:</B> <A NAME="tex2html1560"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1554"
HREF="node105.html">psb_max Global</A>
&nbsp; <B> <A NAME="tex2html1562"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000813000000000000000">
psb_amx -- Global maximum absolute value</A>
<H2><A NAME="SECTION000812000000000000000">
psb_min -- Global minimum</A>
</H2>
<P>
<PRE>
call psb_amx(icontxt, dat, root)
call psb_min(icontxt, dat, root)
</PRE>
<P>
This subroutine implements a maximum absolute value reduction
This subroutine implements a minimum value reduction
operation based on the underlying communication library.
<DL>
<DT><STRONG>Type:</STRONG></DT>
@ -83,7 +83,7 @@ Intent: <B>in</B>.
Specified as: an integer variable.
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>The local contribution to the global maximum.
<DD>The local contribution to the global minimum.
<BR>
Scope: <B>local</B>.
<BR>
@ -91,7 +91,7 @@ Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
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.
</DD>
<DT><STRONG>root</STRONG></DT>
@ -123,7 +123,7 @@ Specified as: an integer value <!-- MATH
<DD>
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>On destination process(es), the result of the maximum operation.
<DD>On destination process(es), the result of the minimum operation.
<BR>
Scope: <B>global</B>.
<BR>
@ -131,8 +131,10 @@ Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array.
<BR>
Type, kind, rank and size must agree on all processes.
</DD>
</DL>
@ -151,26 +153,26 @@ scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all pro
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1560"
<A NAME="tex2html1563"
HREF="node107.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1556"
HREF="node93.html">
<A NAME="tex2html1559"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1550"
<A NAME="tex2html1553"
HREF="node105.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1558"
<A NAME="tex2html1561"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1561"
HREF="node107.html">psb_amn Global</A>
<B> Up:</B> <A NAME="tex2html1557"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1551"
HREF="node105.html">psb_min Global</A>
&nbsp; <B> <A NAME="tex2html1559"
<B> Next:</B> <A NAME="tex2html1564"
HREF="node107.html">psb_amx Global</A>
<B> Up:</B> <A NAME="tex2html1560"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1554"
HREF="node105.html">psb_max Global</A>
&nbsp; <B> <A NAME="tex2html1562"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_amn -- Global minimum absolute value</TITLE>
<META NAME="description" CONTENT="psb_amn -- Global minimum absolute value">
<TITLE>psb_amx -- Global maximum absolute value</TITLE>
<META NAME="description" CONTENT="psb_amx -- Global maximum absolute value">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,48 +20,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node108.html">
<LINK REL="previous" HREF="node106.html">
<LINK REL="up" HREF="node93.html">
<LINK REL="up" HREF="node94.html">
<LINK REL="next" HREF="node108.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1572"
<A NAME="tex2html1575"
HREF="node108.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1568"
HREF="node93.html">
<A NAME="tex2html1571"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1562"
<A NAME="tex2html1565"
HREF="node106.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1570"
<A NAME="tex2html1573"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1573"
HREF="node108.html">psb_snd Send</A>
<B> Up:</B> <A NAME="tex2html1569"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1563"
HREF="node106.html">psb_amx Global</A>
&nbsp; <B> <A NAME="tex2html1571"
<B> Next:</B> <A NAME="tex2html1576"
HREF="node108.html">psb_amn Global</A>
<B> Up:</B> <A NAME="tex2html1572"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1566"
HREF="node106.html">psb_min Global</A>
&nbsp; <B> <A NAME="tex2html1574"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000814000000000000000">
psb_amn -- Global minimum absolute value</A>
<H2><A NAME="SECTION000813000000000000000">
psb_amx -- Global maximum absolute value</A>
</H2>
<P>
<PRE>
call psb_amn(icontxt, dat, root)
call psb_amx(icontxt, dat, root)
</PRE>
<P>
This subroutine implements a minimum absolute value reduction
This subroutine implements a maximum absolute value reduction
operation based on the underlying communication library.
<DL>
<DT><STRONG>Type:</STRONG></DT>
@ -83,7 +83,7 @@ Intent: <B>in</B>.
Specified as: an integer variable.
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>The local contribution to the global minimum.
<DD>The local contribution to the global maximum.
<BR>
Scope: <B>local</B>.
<BR>
@ -123,7 +123,7 @@ Specified as: an integer value <!-- MATH
<DD>
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>On destination process(es), the result of the minimum operation.
<DD>On destination process(es), the result of the maximum operation.
<BR>
Scope: <B>global</B>.
<BR>
@ -132,9 +132,7 @@ Type: <B>required</B>.
Intent: <B>inout</B>.
<BR>
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array.
<BR>
Type, kind, rank and size must agree on all processes.
scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
</DD>
</DL>
@ -153,26 +151,26 @@ Type, kind, rank and size must agree on all processes.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1572"
<A NAME="tex2html1575"
HREF="node108.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1568"
HREF="node93.html">
<A NAME="tex2html1571"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1562"
<A NAME="tex2html1565"
HREF="node106.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1570"
<A NAME="tex2html1573"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1573"
HREF="node108.html">psb_snd Send</A>
<B> Up:</B> <A NAME="tex2html1569"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1563"
HREF="node106.html">psb_amx Global</A>
&nbsp; <B> <A NAME="tex2html1571"
<B> Next:</B> <A NAME="tex2html1576"
HREF="node108.html">psb_amn Global</A>
<B> Up:</B> <A NAME="tex2html1572"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1566"
HREF="node106.html">psb_min Global</A>
&nbsp; <B> <A NAME="tex2html1574"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_snd -- Send data</TITLE>
<META NAME="description" CONTENT="psb_snd -- Send data">
<TITLE>psb_amn -- Global minimum absolute value</TITLE>
<META NAME="description" CONTENT="psb_amn -- Global minimum absolute value">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,51 +20,52 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node109.html">
<LINK REL="previous" HREF="node107.html">
<LINK REL="up" HREF="node93.html">
<LINK REL="up" HREF="node94.html">
<LINK REL="next" HREF="node109.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1584"
<A NAME="tex2html1587"
HREF="node109.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1580"
HREF="node93.html">
<A NAME="tex2html1583"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1574"
<A NAME="tex2html1577"
HREF="node107.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1582"
<A NAME="tex2html1585"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1585"
HREF="node109.html">psb_rcv Receive</A>
<B> Up:</B> <A NAME="tex2html1581"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1575"
HREF="node107.html">psb_amn Global</A>
&nbsp; <B> <A NAME="tex2html1583"
<B> Next:</B> <A NAME="tex2html1588"
HREF="node109.html">psb_snd Send</A>
<B> Up:</B> <A NAME="tex2html1584"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1578"
HREF="node107.html">psb_amx Global</A>
&nbsp; <B> <A NAME="tex2html1586"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000815000000000000000">
psb_snd -- Send data</A>
<H2><A NAME="SECTION000814000000000000000">
psb_amn -- Global minimum absolute value</A>
</H2>
<P>
<PRE>
call psb_snd(icontxt, dat, dst, m)
call psb_amn(icontxt, dat, root)
</PRE>
<P>
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.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous: see usage notes.
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
@ -82,65 +83,38 @@ Intent: <B>in</B>.
Specified as: an integer variable.
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>The data to be sent.
<DD>The local contribution to the global minimum.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
Intent: <B>inout</B>.
<BR>
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if <IMG
WIDTH="18" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img134.png"
ALT="$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.
</DD>
<DT><STRONG>dst</STRONG></DT>
<DD>Destination process.
<DT><STRONG>root</STRONG></DT>
<DD>Process to hold the final value, or <IMG
WIDTH="25" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img79.png"
ALT="$-1$"> to make it available
on all processes.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>required</B>.
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value <!-- MATH
$0<= dst <= np-1$
$-1<= root <= np-1$
-->
<IMG
WIDTH="146" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img135.png"
ALT="$0&lt;= dst &lt;= np-1$">.
WIDTH="166" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img133.png"
ALT="$-1&lt;= root &lt;= np-1$">, default -1.
<BR></DD>
<DT><STRONG>m</STRONG></DT>
<DD>Number of rows.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>Optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer value <!-- MATH
$0<= m <= size(dat,1)$
-->
<IMG
WIDTH="171" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img136.png"
ALT="$0&lt;= m &lt;= size(dat,1)$">.
<BR>
When <IMG
WIDTH="27" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img137.png"
ALT="$dat$"> is a rank 2 array, specifies the number of rows to be sent
independently of the leading dimension <IMG
WIDTH="82" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img138.png"
ALT="$size(dat,1)$">; must have the
same value on sending and receiving processes.
</DD>
</DL>
<P>
@ -148,43 +122,57 @@ same value on sending and receiving processes.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>On destination process(es), the result of the minimum operation.
<BR>
Scope: <B>global</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array.
<BR>
Type, kind, rank and size must agree on all processes.
</DD>
</DL>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>This subroutine implies a synchronization, but only between the
calling process and the destination process <IMG
WIDTH="26" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img139.png"
ALT="$dst$">.
<LI>The <code>dat</code> argument is both input and output, and its
value may be changed even on processes different from the final
result destination.
</LI>
<LI>The <code>dat</code> argument may also be a long integer scalar.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1584"
<A NAME="tex2html1587"
HREF="node109.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1580"
HREF="node93.html">
<A NAME="tex2html1583"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1574"
<A NAME="tex2html1577"
HREF="node107.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1582"
<A NAME="tex2html1585"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1585"
HREF="node109.html">psb_rcv Receive</A>
<B> Up:</B> <A NAME="tex2html1581"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1575"
HREF="node107.html">psb_amn Global</A>
&nbsp; <B> <A NAME="tex2html1583"
<B> Next:</B> <A NAME="tex2html1588"
HREF="node109.html">psb_snd Send</A>
<B> Up:</B> <A NAME="tex2html1584"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1578"
HREF="node107.html">psb_amx Global</A>
&nbsp; <B> <A NAME="tex2html1586"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_rcv -- Receive data</TITLE>
<META NAME="description" CONTENT="psb_rcv -- Receive data">
<TITLE>psb_snd -- Send data</TITLE>
<META NAME="description" CONTENT="psb_snd -- Send data">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,52 +18,53 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node110.html">
<LINK REL="previous" HREF="node108.html">
<LINK REL="up" HREF="node93.html">
<LINK REL="up" HREF="node94.html">
<LINK REL="next" HREF="node110.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1594"
<A NAME="tex2html1599"
HREF="node110.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1590"
HREF="node93.html">
<A NAME="tex2html1595"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1586"
<A NAME="tex2html1589"
HREF="node108.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1592"
<A NAME="tex2html1597"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1595"
HREF="node110.html">Error handling</A>
<B> Up:</B> <A NAME="tex2html1591"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1587"
HREF="node108.html">psb_snd Send</A>
&nbsp; <B> <A NAME="tex2html1593"
<B> Next:</B> <A NAME="tex2html1600"
HREF="node110.html">psb_rcv Receive</A>
<B> Up:</B> <A NAME="tex2html1596"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1590"
HREF="node108.html">psb_amn Global</A>
&nbsp; <B> <A NAME="tex2html1598"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000816000000000000000">
psb_rcv -- Receive data</A>
<H2><A NAME="SECTION000815000000000000000">
psb_snd -- Send data</A>
</H2>
<P>
<PRE>
call psb_rcv(icontxt, dat, src, m)
call psb_snd(icontxt, dat, dst, m)
</PRE>
<P>
This subroutine receives a packet of data to a destination.
This subroutine sends a packet of data to a destination.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous: see usage notes.
<DD>Synchronous: see usage notes.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
@ -80,8 +81,24 @@ Intent: <B>in</B>.
<BR>
Specified as: an integer variable.
</DD>
<DT><STRONG>src</STRONG></DT>
<DD>Source process.
<DT><STRONG>dat</STRONG></DT>
<DD>The data to be sent.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if <IMG
WIDTH="18" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img134.png"
ALT="$m$"> is
not specified, size must agree as well.
</DD>
<DT><STRONG>dst</STRONG></DT>
<DD>Destination process.
<BR>
Scope: <B>global</B>.
<BR>
@ -90,12 +107,12 @@ Type: <B>required</B>.
Intent: <B>in</B>.
<BR>
Specified as: an integer value <!-- MATH
$0<= src <= np-1$
$0<= dst <= np-1$
-->
<IMG
WIDTH="146" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img140.png"
ALT="$0&lt;= src &lt;= np-1$">.
SRC="img135.png"
ALT="$0&lt;= dst &lt;= np-1$">.
<BR></DD>
<DT><STRONG>m</STRONG></DT>
<DD>Number of rows.
@ -131,22 +148,6 @@ same value on sending and receiving processes.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>dat</STRONG></DT>
<DD>The data to be received.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if <IMG
WIDTH="18" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img134.png"
ALT="$m$"> is
not specified, size must agree as well.
</DD>
</DL>
<P>
@ -154,36 +155,36 @@ not specified, size must agree as well.
<OL>
<LI>This subroutine implies a synchronization, but only between the
calling process and the source process <IMG
WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img141.png"
ALT="$src$">.
calling process and the destination process <IMG
WIDTH="26" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img139.png"
ALT="$dst$">.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1594"
<A NAME="tex2html1599"
HREF="node110.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1590"
HREF="node93.html">
<A NAME="tex2html1595"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1586"
<A NAME="tex2html1589"
HREF="node108.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1592"
<A NAME="tex2html1597"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1595"
HREF="node110.html">Error handling</A>
<B> Up:</B> <A NAME="tex2html1591"
HREF="node93.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1587"
HREF="node108.html">psb_snd Send</A>
&nbsp; <B> <A NAME="tex2html1593"
<B> Next:</B> <A NAME="tex2html1600"
HREF="node110.html">psb_rcv Receive</A>
<B> Up:</B> <A NAME="tex2html1596"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1590"
HREF="node108.html">psb_amn Global</A>
&nbsp; <B> <A NAME="tex2html1598"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html352"
<A NAME="tex2html354"
HREF="node12.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html348"
<A NAME="tex2html350"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html342"
<A NAME="tex2html344"
HREF="node10.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html350"
<A NAME="tex2html352"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html353"
<B> Next:</B> <A NAME="tex2html355"
HREF="node12.html">get_local_rows Get</A>
<B> Up:</B> <A NAME="tex2html349"
<B> Up:</B> <A NAME="tex2html351"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html343"
<B> Previous:</B> <A NAME="tex2html345"
HREF="node10.html">Descriptor data structure</A>
&nbsp; <B> <A NAME="tex2html351"
&nbsp; <B> <A NAME="tex2html353"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Error handling</TITLE>
<META NAME="description" CONTENT="Error handling">
<TITLE>psb_rcv -- Receive data</TITLE>
<META NAME="description" CONTENT="psb_rcv -- Receive data">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,325 +18,172 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node111.html">
<LINK REL="previous" HREF="node93.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="previous" HREF="node109.html">
<LINK REL="up" HREF="node94.html">
<LINK REL="next" HREF="node111.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1606"
<A NAME="tex2html1609"
HREF="node111.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1602"
HREF="userhtml.html">
<A NAME="tex2html1605"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1596"
<A NAME="tex2html1601"
HREF="node109.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1604"
<A NAME="tex2html1607"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1607"
HREF="node111.html">Utilities</A>
<B> Up:</B> <A NAME="tex2html1603"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1597"
HREF="node109.html">psb_rcv Receive</A>
&nbsp; <B> <A NAME="tex2html1605"
<B> Next:</B> <A NAME="tex2html1610"
HREF="node111.html">Error handling</A>
<B> Up:</B> <A NAME="tex2html1606"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1602"
HREF="node109.html">psb_snd Send</A>
&nbsp; <B> <A NAME="tex2html1608"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00090000000000000000">
Error handling</A>
</H1>
<P>
The PSBLAS library error handling policy has been completely rewritten
in version 2.0. The idea behind the design of this new error handling
strategy is to keep error messages on a stack allowing the user to
trace back up to the point where the first error message has been
generated. Every routine in the PSBLAS-2.0 library has, as last
non-optional argument, an integer <code>info</code> variable; whenever,
inside the routine, an error is detected, this variable is set to a
value corresponding to a specific error code. Then this error code is
also pushed on the error stack and then either control is returned to
the caller routine or the execution is aborted, depending on the users
choice. At the time when the execution is aborted, an error message is
printed on standard output with a level of verbosity than can be
chosen by the user. If the execution is not aborted, then, the caller
routine checks the value returned in the <code>info</code> variable and, if
not zero, an error condition is raised. This process continues on all the
levels of nested calls until the level where the user decides to abort
the program execution.
<P>
Figure&nbsp;<A HREF="#fig:routerr">9</A> shows the layout of a generic <code>psb_foo</code>
routine with respect to the PSBLAS-2.0 error handling policy. It is
possible to see how, whenever an error condition is detected, the
<code>info</code> variable is set to the corresponding error code which is,
then, pushed on top of the stack by means of the
<code>psb_errpush</code>. An error condition may be directly detected inside
a routine or indirectly checking the error code returned returned by a
called routine. Whenever an error is encountered, after it has been
pushed on stack, the program execution skips to a point where the
error condition is handled; the error condition is handled either by
returning control to the caller routine or by calling the
<code>psb\_error</code> routine which prints the content of the error stack
and aborts the program execution, according to the choice made by the
user with <code>psb_set_erraction</code>. The default is to print the error
and terminate the program, but the user may choose to handle the error
explicitly.
<P>
<DIV ALIGN="CENTER"><A NAME="fig:routerr"></A><A NAME="7058"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 9:</STRONG>
The layout of a generic <TT>psb_foo</TT>
routine with respect to PSBLAS-2.0 error handling policy.</CAPTION>
<TR><TD>
<BR>
<DIV ALIGN="CENTER">
<!-- MATH
$\fbox{\TheSbox}$
-->
<IMG
WIDTH="563" HEIGHT="482" ALIGN="MIDDLE" BORDER="0"
SRC="img143.png"
ALT="\fbox{\TheSbox}">
</DIV></TD></TR>
</TABLE>
</DIV>
<H2><A NAME="SECTION000816000000000000000">
psb_rcv -- Receive data</A>
</H2>
<P>
Figure&nbsp;<A HREF="#fig:errormsg">10</A> reports a sample error message generated by
the PSBLAS-2.0 library. This error has been generated by the fact that
the user has chosen the invalid ``FOO'' storage format to represent
the sparse matrix. From this error message it is possible to see that
the error has been detected inside the <code>psb_cest</code> subroutine
called by <code>psb_spasb</code> ... by process 0 (i.e. the root process).
<P>
<DIV ALIGN="CENTER"><A NAME="fig:errormsg"></A><A NAME="7059"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 10:</STRONG>
A sample PSBLAS-2.0 error
message. Process 0 detected an error condition inside the psb_cest subroutine</CAPTION>
<TR><TD>
<BR>
<DIV ALIGN="CENTER">
<!-- MATH
$\fbox{\TheSbox}$
-->
<IMG
WIDTH="563" HEIGHT="482" ALIGN="MIDDLE" BORDER="0"
SRC="img143.png"
ALT="\fbox{\TheSbox}">
</DIV></TD></TR>
</TABLE>
</DIV>
<P>
ifstarsubroutinesubroutinepsb_errpushPushes an error code onto the error
stack
<P>
<BR>
<IMG
WIDTH="423" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img145.png"
ALT="\begin{lstlisting}
call psb_errpush(err_c, r_name, i_err, a_err)
\end{lstlisting}">
<BR>
<PRE>
call psb_rcv(icontxt, dat, src, m)
</PRE>
<P>
This subroutine receives a packet of data to a destination.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
<DD>Synchronous: see usage notes.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>err_c</STRONG></DT>
<DD>the error code
<DT><STRONG>icontxt</STRONG></DT>
<DD>the communication context identifying the virtual
parallel machine.
<BR>
Scope: <B>local</B>
Scope: <B>global</B>.
<BR>
Type: <B>required</B>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer.
Specified as: an integer variable.
</DD>
<DT><STRONG>r_name</STRONG></DT>
<DD>the soutine where the error has been caught.
<DT><STRONG>src</STRONG></DT>
<DD>Source process.
<BR>
Scope: <B>local</B>
Scope: <B>global</B>.
<BR>
Type: <B>required</B>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a string.
<BR></DD>
<DT><STRONG>i_err</STRONG></DT>
<DD>addional info for error code
<BR>
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
<BR>
Specified as: an integer array
<BR></DD>
<DT><STRONG>a_err</STRONG></DT>
<DD>addional info for error code
<BR>
Scope: <B>local</B>
<BR>
Type: <B>optional</B>
<BR>
Specified as: a string.
<BR></DD>
</DL>
<P>
ifstarsubroutinesubroutinepsb_errorPrints the error stack content and aborts
execution
<P>
<BR>
Specified as: an integer value <!-- MATH
$0<= src <= np-1$
-->
<IMG
WIDTH="213" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img146.png"
ALT="\begin{lstlisting}
call psb_error(icontxt)
\end{lstlisting}">
<BR>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>icontxt</STRONG></DT>
<DD>the communication context.
WIDTH="146" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img140.png"
ALT="$0&lt;= src &lt;= np-1$">.
<BR></DD>
<DT><STRONG>m</STRONG></DT>
<DD>Number of rows.
<BR>
Scope: <B>global</B>
Scope: <B>global</B>.
<BR>
Type: <B>optional</B>
Type: <B>Optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer.
Specified as: an integer value <!-- MATH
$0<= m <= size(dat,1)$
-->
<IMG
WIDTH="171" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img136.png"
ALT="$0&lt;= m &lt;= size(dat,1)$">.
<BR>
When <IMG
WIDTH="27" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img137.png"
ALT="$dat$"> is a rank 2 array, specifies the number of rows to be sent
independently of the leading dimension <IMG
WIDTH="82" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img138.png"
ALT="$size(dat,1)$">; must have the
same value on sending and receiving processes.
</DD>
</DL>
<P>
ifstarsubroutinesubroutinepsb_set_errverbositySets the verbosity of error
messages.
<P>
<BR>
<IMG
WIDTH="261" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img147.png"
ALT="\begin{lstlisting}
call psb_set_errverbosity(v)
\end{lstlisting}">
<BR>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>v</STRONG></DT>
<DD>the verbosity level
<DT><STRONG>dat</STRONG></DT>
<DD>The data to be received.
<BR>
Scope: <B>global</B>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
Intent: <B>inout</B>.
<BR>
Specified as: an integer.
Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if <IMG
WIDTH="18" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img134.png"
ALT="$m$"> is
not specified, size must agree as well.
</DD>
</DL>
<P>
ifstarsubroutinesubroutinepsb_set_erractionSet the type of action to be
taken upon error condition.
<P>
<BR>
<IMG
WIDTH="289" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img148.png"
ALT="\begin{lstlisting}
call psb_set_erraction(err_act)
\end{lstlisting}">
<BR>
<FONT SIZE="+1"><B>Notes</B></FONT>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>err_act</STRONG></DT>
<DD>the type of action.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer. Possible values: <code>psb_act_ret</code>,
<code>psb_act_abort</code>.
</DD>
</DL>
<OL>
<LI>This subroutine implies a synchronization, but only between the
calling process and the source process <IMG
WIDTH="26" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img141.png"
ALT="$src$">.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1606"
<A NAME="tex2html1609"
HREF="node111.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1602"
HREF="userhtml.html">
<A NAME="tex2html1605"
HREF="node94.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1596"
<A NAME="tex2html1601"
HREF="node109.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1604"
<A NAME="tex2html1607"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1607"
HREF="node111.html">Utilities</A>
<B> Up:</B> <A NAME="tex2html1603"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1597"
HREF="node109.html">psb_rcv Receive</A>
&nbsp; <B> <A NAME="tex2html1605"
<B> Next:</B> <A NAME="tex2html1610"
HREF="node111.html">Error handling</A>
<B> Up:</B> <A NAME="tex2html1606"
HREF="node94.html">Parallel environment routines</A>
<B> Previous:</B> <A NAME="tex2html1602"
HREF="node109.html">psb_snd Send</A>
&nbsp; <B> <A NAME="tex2html1608"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Utilities</TITLE>
<META NAME="description" CONTENT="Utilities">
<TITLE>Error handling</TITLE>
<META NAME="description" CONTENT="Error handling">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -19,139 +19,142 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node112.html">
<LINK REL="previous" HREF="node110.html">
<LINK REL="previous" HREF="node94.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node112.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1618"
<A NAME="tex2html1621"
HREF="node112.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1614"
<A NAME="tex2html1617"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1608"
<A NAME="tex2html1611"
HREF="node110.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1616"
<A NAME="tex2html1619"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1619"
HREF="node112.html">Preconditioner routines</A>
<B> Up:</B> <A NAME="tex2html1615"
<B> Next:</B> <A NAME="tex2html1622"
HREF="node112.html">Utilities</A>
<B> Up:</B> <A NAME="tex2html1618"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1609"
HREF="node110.html">Error handling</A>
&nbsp; <B> <A NAME="tex2html1617"
<B> Previous:</B> <A NAME="tex2html1612"
HREF="node110.html">psb_rcv Receive</A>
&nbsp; <B> <A NAME="tex2html1620"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION000100000000000000000"></A>
<A NAME="sec:util"></A>
<BR>
Utilities
<H1><A NAME="SECTION00090000000000000000">
Error handling</A>
</H1>
<P>
We have some utitlities available for input and output of
sparsematrices; the interfaces to these routines are available in the
module <code>psb_util_mod</code>.
The PSBLAS library error handling policy has been completely rewritten
in version 2.0. The idea behind the design of this new error handling
strategy is to keep error messages on a stack allowing the user to
trace back up to the point where the first error message has been
generated. Every routine in the PSBLAS-2.0 library has, as last
non-optional argument, an integer <code>info</code> variable; whenever,
inside the routine, an error is detected, this variable is set to a
value corresponding to a specific error code. Then this error code is
also pushed on the error stack and then either control is returned to
the caller routine or the execution is aborted, depending on the users
choice. At the time when the execution is aborted, an error message is
printed on standard output with a level of verbosity than can be
chosen by the user. If the execution is not aborted, then, the caller
routine checks the value returned in the <code>info</code> variable and, if
not zero, an error condition is raised. This process continues on all the
levels of nested calls until the level where the user decides to abort
the program execution.
<P>
ifstarsubroutinesubroutinehb_readRead a sparse matrix from a file in the
Harwell-Boeing format
Figure&nbsp;<A HREF="#fig:routerr">9</A> shows the layout of a generic <code>psb_foo</code>
routine with respect to the PSBLAS-2.0 error handling policy. It is
possible to see how, whenever an error condition is detected, the
<code>info</code> variable is set to the corresponding error code which is,
then, pushed on top of the stack by means of the
<code>psb_errpush</code>. An error condition may be directly detected inside
a routine or indirectly checking the error code returned returned by a
called routine. Whenever an error is encountered, after it has been
pushed on stack, the program execution skips to a point where the
error condition is handled; the error condition is handled either by
returning control to the caller routine or by calling the
<code>psb\_error</code> routine which prints the content of the error stack
and aborts the program execution, according to the choice made by the
user with <code>psb_set_erraction</code>. The default is to print the error
and terminate the program, but the user may choose to handle the error
explicitly.
<P>
<BR>
<DIV ALIGN="CENTER"><A NAME="fig:routerr"></A><A NAME="7079"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 9:</STRONG>
The layout of a generic <TT>psb_foo</TT>
routine with respect to PSBLAS-2.0 error handling policy.</CAPTION>
<TR><TD>
<BR>
<DIV ALIGN="CENTER">
<!-- MATH
$\fbox{\TheSbox}$
-->
<IMG
WIDTH="461" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img149.png"
ALT="\begin{lstlisting}
call hb_read(a, iret, iunit, filename, b, mtitle)
\end{lstlisting}">
<BR>
WIDTH="563" HEIGHT="482" ALIGN="MIDDLE" BORDER="0"
SRC="img143.png"
ALT="\fbox{\TheSbox}">
</DIV></TD></TR>
</TABLE>
</DIV>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be read.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default input unit 5 (i.e. standard input
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
<DD>The Fortran file unit number.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
</DD>
</DL>
Figure&nbsp;<A HREF="#fig:errormsg">10</A> reports a sample error message generated by
the PSBLAS-2.0 library. This error has been generated by the fact that
the user has chosen the invalid ``FOO'' storage format to represent
the sparse matrix. From this error message it is possible to see that
the error has been detected inside the <code>psb_cest</code> subroutine
called by <code>psb_spasb</code> ... by process 0 (i.e. the root process).
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix read from file.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>Rigth hand side(s).
<BR>
Type: <B>Optional</B>
<BR>
An array of type real or complex, rank 2 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side, otherwise will be left in the UNALLOCATED state.
</DD>
<DT><STRONG>mtitle</STRONG></DT>
<DD>Matrix title.
<BR>
Type: <B>Optional</B>
<BR>
A charachter variable of length 72 holding a copy of the
matrix title as specified by the Harwell-Boeing format and contained
in the input file.
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
<BR>
Type: <B>required</B>
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
<DIV ALIGN="CENTER"><A NAME="fig:errormsg"></A><A NAME="7080"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 10:</STRONG>
A sample PSBLAS-2.0 error
message. Process 0 detected an error condition inside the psb_cest subroutine</CAPTION>
<TR><TD>
<BR>
<DIV ALIGN="CENTER">
<!-- MATH
$\fbox{\TheSbox}$
-->
<IMG
WIDTH="563" HEIGHT="482" ALIGN="MIDDLE" BORDER="0"
SRC="img143.png"
ALT="\fbox{\TheSbox}">
</DIV></TD></TR>
</TABLE>
</DIV>
<P>
ifstarsubroutinesubroutinehb_writeWrite a sparse matrix to a file
in the Harwell-Boeing format
ifstarsubroutinesubroutinepsb_errpushPushes an error code onto the error
stack
<P>
<BR>
<IMG
WIDTH="538" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img150.png"
WIDTH="423" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img145.png"
ALT="\begin{lstlisting}
call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
call psb_errpush(err_c, r_name, i_err, a_err)
\end{lstlisting}">
<BR>
@ -160,86 +163,62 @@ call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix to be written.
<DT><STRONG>err_c</STRONG></DT>
<DD>the error code
<BR>
Type:<B>required</B>.
Scope: <B>local</B>
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>Rigth hand side.
Type: <B>required</B>
<BR>
Type: <B>Optional</B>
Intent: <B>in</B>.
<BR>
An array of type real or complex, rank 1 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side.
Specified as: an integer.
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be written to.
<DT><STRONG>r_name</STRONG></DT>
<DD>the soutine where the error has been caught.
<BR>
Type:<B>optional</B>.
Scope: <B>local</B>
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default output unit 6 (i.e. standard output
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
<DD>The Fortran file unit number.
Type: <B>required</B>
<BR>
Type:<B>optional</B>.
Intent: <B>in</B>.
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
</DD>
<DT><STRONG>key</STRONG></DT>
<DD>Matrix key.
Specified as: a string.
<BR></DD>
<DT><STRONG>i_err</STRONG></DT>
<DD>addional info for error code
<BR>
Type: <B>Optional</B>
Scope: <B>local</B>
<BR>
A charachter variable of length 8 holding the
matrix key as specified by the Harwell-Boeing format and to be
written to file.
</DD>
<DT><STRONG>mtitle</STRONG></DT>
<DD>Matrix title.
Type: <B>optional</B>
<BR>
Type: <B>Optional</B>
Specified as: an integer array
<BR></DD>
<DT><STRONG>a_err</STRONG></DT>
<DD>addional info for error code
<BR>
A charachter variable of length 72 holding the
matrix title as specified by the Harwell-Boeing format and to be
written to file.
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
Scope: <B>local</B>
<BR>
Type: <B>required</B>
Type: <B>optional</B>
<BR>
An integer value; 0 means no error has been detected.
</DD>
Specified as: a string.
<BR></DD>
</DL>
<P>
ifstarsubroutinesubroutinemm_mat_readRead a sparse matrix from a
file in the MatrixMarket format
ifstarsubroutinesubroutinepsb_errorPrints the error stack content and aborts
execution
<P>
<BR>
<IMG
WIDTH="394" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img151.png"
WIDTH="213" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img146.png"
ALT="\begin{lstlisting}
call mm_mat_read(a, iret, iunit, filename)
call psb_error(icontxt)
\end{lstlisting}">
<BR>
@ -248,57 +227,33 @@ call mm_mat_read(a, iret, iunit, filename)
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be read.
<DT><STRONG>icontxt</STRONG></DT>
<DD>the communication context.
<BR>
Type:<B>optional</B>.
Scope: <B>global</B>
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default input unit 5 (i.e. standard input
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
<DD>The Fortran file unit number.
Type: <B>optional</B>
<BR>
Type:<B>optional</B>.
Intent: <B>in</B>.
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
Specified as: an integer.
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix read from file.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
<BR>
Type: <B>required</B>
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
ifstarsubroutinesubroutinepsb_set_errverbositySets the verbosity of error
messages.
<P>
ifstarsubroutinesubroutinemm_vet_readRead a dense vector from a
file in the MatrixMarket format
<BR>
<IMG
WIDTH="394" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img152.png"
WIDTH="261" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img147.png"
ALT="\begin{lstlisting}
call mm_vet_read(b, iret, iunit, filename)
call psb_set_errverbosity(v)
\end{lstlisting}">
<BR>
@ -307,138 +262,81 @@ call mm_vet_read(b, iret, iunit, filename)
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be read.
<DT><STRONG>v</STRONG></DT>
<DD>the verbosity level
<BR>
Type:<B>optional</B>.
Scope: <B>global</B>
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default input unit 5 (i.e. standard input
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
<DD>The Fortran file unit number.
Type: <B>required</B>
<BR>
Type:<B>optional</B>.
Intent: <B>in</B>.
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
Specified as: an integer.
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>Rigth hand side(s).
<BR>
Type: <B>required</B>
<BR>
An array of type real or complex, rank 2 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side, otherwise will be left in the UNALLOCATED state.
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
<BR>
Type: <B>required</B>
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
ifstarsubroutinesubroutinepsb_set_erractionSet the type of action to be
taken upon error condition.
<P>
ifstarsubroutinesubroutinemm_mat_writeWrite a sparse matrix to a
file in the MatrixMarket format
<BR>
<IMG
WIDTH="480" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img153.png"
WIDTH="289" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img148.png"
ALT="\begin{lstlisting}
call mm_mat_write(a, mtitle, iret, iunit, filename)
call psb_set_erraction(err_act)
\end{lstlisting}">
<BR>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix to be written.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>mtitle</STRONG></DT>
<DD>Matrix title.
<BR>
Type: <B>required</B>
<BR>
A charachter variable holding a descriptive title for the matrix to be
written to file.
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be written to.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default output unit 6 (i.e. standard output
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
<DD>The Fortran file unit number.
<DT><STRONG>err_act</STRONG></DT>
<DD>the type of action.
<BR>
Type:<B>optional</B>.
Scope: <B>global</B>
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
Type: <B>required</B>
<BR>
Type: <B>required</B>
Intent: <B>in</B>.
<BR>
An integer value; 0 means no error has been detected.
Specified as: an integer. Possible values: <code>psb_act_ret</code>,
<code>psb_act_abort</code>.
</DD>
</DL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1618"
<A NAME="tex2html1621"
HREF="node112.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1614"
<A NAME="tex2html1617"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1608"
<A NAME="tex2html1611"
HREF="node110.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1616"
<A NAME="tex2html1619"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1619"
HREF="node112.html">Preconditioner routines</A>
<B> Up:</B> <A NAME="tex2html1615"
<B> Next:</B> <A NAME="tex2html1622"
HREF="node112.html">Utilities</A>
<B> Up:</B> <A NAME="tex2html1618"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1609"
HREF="node110.html">Error handling</A>
&nbsp; <B> <A NAME="tex2html1617"
<B> Previous:</B> <A NAME="tex2html1612"
HREF="node110.html">psb_rcv Receive</A>
&nbsp; <B> <A NAME="tex2html1620"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Preconditioner routines</TITLE>
<META NAME="description" CONTENT="Preconditioner routines">
<TITLE>Utilities</TITLE>
<META NAME="description" CONTENT="Utilities">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node118.html">
<LINK REL="next" HREF="node113.html">
<LINK REL="previous" HREF="node111.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="next" HREF="node113.html">
@ -26,72 +26,421 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1630"
<A NAME="tex2html1633"
HREF="node113.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1626"
<A NAME="tex2html1629"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1620"
<A NAME="tex2html1623"
HREF="node111.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1628"
<A NAME="tex2html1631"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1631"
HREF="node113.html">psb_precinit Initialize</A>
<B> Up:</B> <A NAME="tex2html1627"
<B> Next:</B> <A NAME="tex2html1634"
HREF="node113.html">Preconditioner routines</A>
<B> Up:</B> <A NAME="tex2html1630"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1621"
HREF="node111.html">Utilities</A>
&nbsp; <B> <A NAME="tex2html1629"
<B> Previous:</B> <A NAME="tex2html1624"
HREF="node111.html">Error handling</A>
&nbsp; <B> <A NAME="tex2html1632"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION000110000000000000000"></A>
<A NAME="sec:precs"></A>
<H1><A NAME="SECTION000100000000000000000"></A>
<A NAME="sec:util"></A>
<BR>
Preconditioner routines
Utilities
</H1>
<P>
<A NAME="sec:psprecs"></A>The base PSBLAS library contains the implementation of two simple
preconditioning techniques:
<UL>
<LI>Diagonal Scaling
</LI>
<LI>Block Jacobi with ILU(0) factorization
</LI>
</UL>
The supporting data type and subroutine interfaces are defined in the
module <code>psb_prec_mod</code>.
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html1632"
HREF="node113.html">psb_precinit -- Initialize a preconditioner</A>
<LI><A NAME="tex2html1633"
HREF="node114.html">psb_precbld -- Builds a preconditioner</A>
<LI><A NAME="tex2html1634"
HREF="node115.html">psb_precaply -- Preconditioner application
routine</A>
<LI><A NAME="tex2html1635"
HREF="node116.html">psb_precdescr -- Prints a description of current
preconditioner</A>
<LI><A NAME="tex2html1636"
HREF="node117.html">clone -- clone current
preconditioner</A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
We have some utitlities available for input and output of
sparsematrices; the interfaces to these routines are available in the
module <code>psb_util_mod</code>.
<P>
ifstarsubroutinesubroutinehb_readRead a sparse matrix from a file in the
Harwell-Boeing format
<P>
<BR>
<IMG
WIDTH="461" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img149.png"
ALT="\begin{lstlisting}
call hb_read(a, iret, iunit, filename, b, mtitle)
\end{lstlisting}">
<BR>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be read.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default input unit 5 (i.e. standard input
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
<DD>The Fortran file unit number.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix read from file.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>Rigth hand side(s).
<BR>
Type: <B>Optional</B>
<BR>
An array of type real or complex, rank 2 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side, otherwise will be left in the UNALLOCATED state.
</DD>
<DT><STRONG>mtitle</STRONG></DT>
<DD>Matrix title.
<BR>
Type: <B>Optional</B>
<BR>
A charachter variable of length 72 holding a copy of the
matrix title as specified by the Harwell-Boeing format and contained
in the input file.
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
<BR>
Type: <B>required</B>
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
ifstarsubroutinesubroutinehb_writeWrite a sparse matrix to a file
in the Harwell-Boeing format
<P>
<BR>
<IMG
WIDTH="538" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img150.png"
ALT="\begin{lstlisting}
call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
\end{lstlisting}">
<BR>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix to be written.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>Rigth hand side.
<BR>
Type: <B>Optional</B>
<BR>
An array of type real or complex, rank 1 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side.
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be written to.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default output unit 6 (i.e. standard output
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
<DD>The Fortran file unit number.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
</DD>
<DT><STRONG>key</STRONG></DT>
<DD>Matrix key.
<BR>
Type: <B>Optional</B>
<BR>
A charachter variable of length 8 holding the
matrix key as specified by the Harwell-Boeing format and to be
written to file.
</DD>
<DT><STRONG>mtitle</STRONG></DT>
<DD>Matrix title.
<BR>
Type: <B>Optional</B>
<BR>
A charachter variable of length 72 holding the
matrix title as specified by the Harwell-Boeing format and to be
written to file.
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
<BR>
Type: <B>required</B>
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
ifstarsubroutinesubroutinemm_mat_readRead a sparse matrix from a
file in the MatrixMarket format
<P>
<BR>
<IMG
WIDTH="394" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img151.png"
ALT="\begin{lstlisting}
call mm_mat_read(a, iret, iunit, filename)
\end{lstlisting}">
<BR>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be read.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default input unit 5 (i.e. standard input
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
<DD>The Fortran file unit number.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix read from file.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
<BR>
Type: <B>required</B>
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
ifstarsubroutinesubroutinemm_vet_readRead a dense vector from a
file in the MatrixMarket format
<BR>
<IMG
WIDTH="394" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img152.png"
ALT="\begin{lstlisting}
call mm_vet_read(b, iret, iunit, filename)
\end{lstlisting}">
<BR>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be read.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default input unit 5 (i.e. standard input
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
<DD>The Fortran file unit number.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>Rigth hand side(s).
<BR>
Type: <B>required</B>
<BR>
An array of type real or complex, rank 2 and having the ALLOCATABLE
attribute; will be allocated and filled in if the input file contains
a right hand side, otherwise will be left in the UNALLOCATED state.
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
<BR>
Type: <B>required</B>
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
ifstarsubroutinesubroutinemm_mat_writeWrite a sparse matrix to a
file in the MatrixMarket format
<BR>
<IMG
WIDTH="480" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img153.png"
ALT="\begin{lstlisting}
call mm_mat_write(a, mtitle, iret, iunit, filename)
\end{lstlisting}">
<BR>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry </B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix to be written.
<BR>
Type:<B>required</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>mtitle</STRONG></DT>
<DD>Matrix title.
<BR>
Type: <B>required</B>
<BR>
A charachter variable holding a descriptive title for the matrix to be
written to file.
</DD>
<DT><STRONG>filename</STRONG></DT>
<DD>The name of the file to be written to.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a character variable containing a valid file name, or
<code>-</code>, in which case the default output unit 6 (i.e. standard output
in Unix jargon) is used. Default: <code>-</code>.
</DD>
<DT><STRONG>iunit</STRONG></DT>
<DD>The Fortran file unit number.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: an integer value. Only meaningful if filename is not <code>-</code>.
</DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>iret</STRONG></DT>
<DD>Error code.
<BR>
Type: <B>required</B>
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1633"
HREF="node113.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1629"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1623"
HREF="node111.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1631"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1634"
HREF="node113.html">Preconditioner routines</A>
<B> Up:</B> <A NAME="tex2html1630"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1624"
HREF="node111.html">Error handling</A>
&nbsp; <B> <A NAME="tex2html1632"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

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

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

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

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

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>clone -- clone current preconditioner</TITLE>
<META NAME="description" CONTENT="clone -- clone current preconditioner">
<TITLE>psb_precdescr -- Prints a description of current preconditioner</TITLE>
<META NAME="description" CONTENT="psb_precdescr -- Prints a description of current preconditioner">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,45 +18,48 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node118.html">
<LINK REL="previous" HREF="node116.html">
<LINK REL="up" HREF="node112.html">
<LINK REL="up" HREF="node113.html">
<LINK REL="next" HREF="node118.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1693"
<A NAME="tex2html1698"
HREF="node118.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1689"
HREF="node112.html">
<A NAME="tex2html1694"
HREF="node113.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1685"
<A NAME="tex2html1688"
HREF="node116.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1691"
<A NAME="tex2html1696"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1694"
HREF="node118.html">Iterative Methods</A>
<B> Up:</B> <A NAME="tex2html1690"
HREF="node112.html">Preconditioner routines</A>
<B> Previous:</B> <A NAME="tex2html1686"
HREF="node116.html">psb_precdescr Prints</A>
&nbsp; <B> <A NAME="tex2html1692"
<B> Next:</B> <A NAME="tex2html1699"
HREF="node118.html">clone clone</A>
<B> Up:</B> <A NAME="tex2html1695"
HREF="node113.html">Preconditioner routines</A>
<B> Previous:</B> <A NAME="tex2html1689"
HREF="node116.html">psb_precaply Preconditioner</A>
&nbsp; <B> <A NAME="tex2html1697"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION000115000000000000000">
clone -- clone current
<H2><A NAME="SECTION000114000000000000000">
psb_precdescr -- Prints a description of current
preconditioner</A>
</H2>
<P>
<PRE>
call prec%clone(precout,info)
call psb_precdescr(prec)
call psb_precdescr(prec, iout)
</PRE>
<P>
@ -69,21 +72,23 @@ call prec%clone(precout,info)
</DD>
<DT><STRONG>prec</STRONG></DT>
<DD>the preconditioner.
Scope: <B>local</B>
<BR>
Scope: <B>local</B>.
<BR></DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>precout</STRONG></DT>
<DD>A copy of the input object.
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a preconditioner data structure precdata<TT>psb_prec_type</TT>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Return code.
<DT><STRONG>iout</STRONG></DT>
<DD>output unit.
Scope: <B>local</B>
<BR>
Type: <B>optiona</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer number.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Iterative Methods</TITLE>
<META NAME="description" CONTENT="Iterative Methods">
<TITLE>clone -- clone current preconditioner</TITLE>
<META NAME="description" CONTENT="clone -- clone current preconditioner">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,61 +18,76 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node120.html">
<LINK REL="previous" HREF="node112.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="previous" HREF="node117.html">
<LINK REL="up" HREF="node113.html">
<LINK REL="next" HREF="node119.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1705"
<A NAME="tex2html1708"
HREF="node119.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1701"
HREF="userhtml.html">
<A NAME="tex2html1704"
HREF="node113.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1695"
<A NAME="tex2html1700"
HREF="node117.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1703"
<A NAME="tex2html1706"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1706"
HREF="node119.html">psb_krylov Krylov</A>
<B> Up:</B> <A NAME="tex2html1702"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1696"
HREF="node117.html">clone clone</A>
&nbsp; <B> <A NAME="tex2html1704"
<B> Next:</B> <A NAME="tex2html1709"
HREF="node119.html">Iterative Methods</A>
<B> Up:</B> <A NAME="tex2html1705"
HREF="node113.html">Preconditioner routines</A>
<B> Previous:</B> <A NAME="tex2html1701"
HREF="node117.html">psb_precdescr Prints</A>
&nbsp; <B> <A NAME="tex2html1707"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION000120000000000000000"></A>
<A NAME="sec:methods"></A>
<BR>
Iterative Methods
</H1>
<H2><A NAME="SECTION000115000000000000000">
clone -- clone current
preconditioner</A>
</H2>
<PRE>
call prec%clone(precout,info)
</PRE>
<P>
In this chapter we provide routines for preconditioners and iterative
methods. The interfaces for Krylov subspace methods are available in
the module <code>psb_krylov_mod</code>.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>prec</STRONG></DT>
<DD>the preconditioner.
<BR>
Scope: <B>local</B>.
<BR></DD>
</DL>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>precout</STRONG></DT>
<DD>A copy of the input object.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Return code.
</DD>
</DL>
<UL>
<LI><A NAME="tex2html1707"
HREF="node119.html">psb_krylov -- Krylov Methods Driver
Routine</A>
</UL>
<!--End of Table of Child-Links-->
<P>
<BR><HR>
</BODY>

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

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html364"
<A NAME="tex2html366"
HREF="node13.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html360"
<A NAME="tex2html362"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html354"
<A NAME="tex2html356"
HREF="node11.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html362"
<A NAME="tex2html364"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html365"
<B> Next:</B> <A NAME="tex2html367"
HREF="node13.html">get_local_cols Get</A>
<B> Up:</B> <A NAME="tex2html361"
<B> Up:</B> <A NAME="tex2html363"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html355"
<B> Previous:</B> <A NAME="tex2html357"
HREF="node11.html">Descriptor Methods</A>
&nbsp; <B> <A NAME="tex2html363"
&nbsp; <B> <A NAME="tex2html365"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

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

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

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

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html376"
<A NAME="tex2html378"
HREF="node14.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html372"
<A NAME="tex2html374"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html366"
<A NAME="tex2html368"
HREF="node12.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html374"
<A NAME="tex2html376"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html377"
<B> Next:</B> <A NAME="tex2html379"
HREF="node14.html">get_global_rows Get</A>
<B> Up:</B> <A NAME="tex2html373"
<B> Up:</B> <A NAME="tex2html375"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html367"
<B> Previous:</B> <A NAME="tex2html369"
HREF="node12.html">get_local_rows Get</A>
&nbsp; <B> <A NAME="tex2html375"
&nbsp; <B> <A NAME="tex2html377"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html388"
<A NAME="tex2html390"
HREF="node15.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html384"
<A NAME="tex2html386"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html378"
<A NAME="tex2html380"
HREF="node13.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html386"
<A NAME="tex2html388"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html389"
<B> Next:</B> <A NAME="tex2html391"
HREF="node15.html">get_global_cols Get</A>
<B> Up:</B> <A NAME="tex2html385"
<B> Up:</B> <A NAME="tex2html387"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html379"
<B> Previous:</B> <A NAME="tex2html381"
HREF="node13.html">get_local_cols Get</A>
&nbsp; <B> <A NAME="tex2html387"
&nbsp; <B> <A NAME="tex2html389"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html400"
<A NAME="tex2html402"
HREF="node16.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html396"
<A NAME="tex2html398"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html390"
<A NAME="tex2html392"
HREF="node14.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html398"
<A NAME="tex2html400"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html401"
<B> Next:</B> <A NAME="tex2html403"
HREF="node16.html">get_context Get</A>
<B> Up:</B> <A NAME="tex2html397"
<B> Up:</B> <A NAME="tex2html399"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html391"
<B> Previous:</B> <A NAME="tex2html393"
HREF="node14.html">get_global_rows Get</A>
&nbsp; <B> <A NAME="tex2html399"
&nbsp; <B> <A NAME="tex2html401"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html412"
<A NAME="tex2html414"
HREF="node17.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html408"
<A NAME="tex2html410"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html402"
<A NAME="tex2html404"
HREF="node15.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html410"
<A NAME="tex2html412"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html413"
<B> Next:</B> <A NAME="tex2html415"
HREF="node17.html">Clone clone</A>
<B> Up:</B> <A NAME="tex2html409"
<B> Up:</B> <A NAME="tex2html411"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html403"
<B> Previous:</B> <A NAME="tex2html405"
HREF="node15.html">get_global_cols Get</A>
&nbsp; <B> <A NAME="tex2html411"
&nbsp; <B> <A NAME="tex2html413"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html424"
<A NAME="tex2html426"
HREF="node18.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html420"
<A NAME="tex2html422"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html414"
<A NAME="tex2html416"
HREF="node16.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html422"
<A NAME="tex2html424"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html425"
<B> Next:</B> <A NAME="tex2html427"
HREF="node18.html">psb_cd_get_large_threshold Get</A>
<B> Up:</B> <A NAME="tex2html421"
<B> Up:</B> <A NAME="tex2html423"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html415"
<B> Previous:</B> <A NAME="tex2html417"
HREF="node16.html">get_context Get</A>
&nbsp; <B> <A NAME="tex2html423"
&nbsp; <B> <A NAME="tex2html425"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html436"
<A NAME="tex2html438"
HREF="node19.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html432"
<A NAME="tex2html434"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html426"
<A NAME="tex2html428"
HREF="node17.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html434"
<A NAME="tex2html436"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html437"
<B> Next:</B> <A NAME="tex2html439"
HREF="node19.html">psb_cd_set_large_threshold Set</A>
<B> Up:</B> <A NAME="tex2html433"
<B> Up:</B> <A NAME="tex2html435"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html427"
<B> Previous:</B> <A NAME="tex2html429"
HREF="node17.html">Clone clone</A>
&nbsp; <B> <A NAME="tex2html435"
&nbsp; <B> <A NAME="tex2html437"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html448"
<A NAME="tex2html450"
HREF="node20.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html444"
<A NAME="tex2html446"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html438"
<A NAME="tex2html440"
HREF="node18.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html446"
<A NAME="tex2html448"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html449"
<B> Next:</B> <A NAME="tex2html451"
HREF="node20.html">Named Constants</A>
<B> Up:</B> <A NAME="tex2html445"
<B> Up:</B> <A NAME="tex2html447"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html439"
<B> Previous:</B> <A NAME="tex2html441"
HREF="node18.html">psb_cd_get_large_threshold Get</A>
&nbsp; <B> <A NAME="tex2html447"
&nbsp; <B> <A NAME="tex2html449"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

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

@ -25,26 +25,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html458"
<A NAME="tex2html460"
HREF="node21.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html454"
<A NAME="tex2html456"
HREF="node10.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html450"
<A NAME="tex2html452"
HREF="node19.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html456"
<A NAME="tex2html458"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html459"
<B> Next:</B> <A NAME="tex2html461"
HREF="node21.html">Sparse Matrix class</A>
<B> Up:</B> <A NAME="tex2html455"
<B> Up:</B> <A NAME="tex2html457"
HREF="node10.html">Descriptor data structure</A>
<B> Previous:</B> <A NAME="tex2html451"
<B> Previous:</B> <A NAME="tex2html453"
HREF="node19.html">psb_cd_set_large_threshold Set</A>
&nbsp; <B> <A NAME="tex2html457"
&nbsp; <B> <A NAME="tex2html459"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -18,7 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node39.html">
<LINK REL="next" HREF="node40.html">
<LINK REL="previous" HREF="node10.html">
<LINK REL="up" HREF="node9.html">
<LINK REL="next" HREF="node22.html">
@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html470"
<A NAME="tex2html472"
HREF="node22.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html466"
<A NAME="tex2html468"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html460"
<A NAME="tex2html462"
HREF="node20.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html468"
<A NAME="tex2html470"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html471"
<B> Next:</B> <A NAME="tex2html473"
HREF="node22.html">Sparse Matrix Methods</A>
<B> Up:</B> <A NAME="tex2html467"
<B> Up:</B> <A NAME="tex2html469"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html461"
<B> Previous:</B> <A NAME="tex2html463"
HREF="node20.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html469"
&nbsp; <B> <A NAME="tex2html471"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
@ -60,9 +60,9 @@ The spdata<TT>psb_Tspmat_type</TT> class
contains all information about the local portion of the sparse matrix and
its storage mode. Its design is
based on the STATE design pattern&nbsp;[<A
HREF="node120.html#DesignPatterns">13</A>] as detailed
HREF="node121.html#DesignPatterns">13</A>] as detailed
in&nbsp;[<A
HREF="node120.html#Sparse03">11</A>]; the type declaration is shown in
HREF="node121.html#Sparse03">11</A>]; the type declaration is shown in
figure&nbsp;<A HREF="#fig:spmattype">4</A> where <code>T</code> is a placeholder for the
data type and precision variants
<DL>
@ -85,7 +85,7 @@ specific layout can be chosen dynamically among the predefined types,
or an entirely new storage layout can be implemented and passed to the
library at runtime via the <code>psb_spasb</code> routine.
<DIV ALIGN="CENTER"><A NAME="fig:spmattype"></A><A NAME="850"></A>
<DIV ALIGN="CENTER"><A NAME="fig:spmattype"></A><A NAME="861"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
The PSBLAS defined data type that
@ -144,69 +144,71 @@ variants are obtained by conversion to/from it.
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html472"
<LI><A NAME="tex2html474"
HREF="node22.html">Sparse Matrix Methods</A>
<LI><A NAME="tex2html473"
<LI><A NAME="tex2html475"
HREF="node23.html">get_nrows -- Get number of rows in a sparse matrix</A>
<LI><A NAME="tex2html474"
<LI><A NAME="tex2html476"
HREF="node24.html">get_ncols -- Get number of columns in a sparse
matrix</A>
<LI><A NAME="tex2html475"
<LI><A NAME="tex2html477"
HREF="node25.html">get_nnzeros -- Get number of nonzero elements
in a sparse matrix</A>
<LI><A NAME="tex2html476"
<LI><A NAME="tex2html478"
HREF="node26.html">get_size -- Get maximum number of nonzero elements
in a sparse matrix</A>
<LI><A NAME="tex2html477"
<LI><A NAME="tex2html479"
HREF="node27.html">sizeof -- Get memory occupation in bytes
of a sparse matrix</A>
<LI><A NAME="tex2html478"
<LI><A NAME="tex2html480"
HREF="node28.html">get_fmt -- Short description of the dynamic type</A>
<LI><A NAME="tex2html479"
<LI><A NAME="tex2html481"
HREF="node29.html">is_bld, is_upd, is_asb -- Status check</A>
<LI><A NAME="tex2html480"
<LI><A NAME="tex2html482"
HREF="node30.html">is_lower, is_upper, is_triangle, is_unit --
Format check</A>
<LI><A NAME="tex2html481"
HREF="node31.html">cscnv -- Convert to a different storage format</A>
<LI><A NAME="tex2html482"
HREF="node32.html">csclip -- Reduce to a submatrix</A>
<LI><A NAME="tex2html483"
HREF="node33.html">clip_diag -- Cut out main diagonal</A>
HREF="node31.html">cscnv -- Convert to a different storage format</A>
<LI><A NAME="tex2html484"
HREF="node34.html">tril -- Return the lower triangle</A>
HREF="node32.html">csclip -- Reduce to a submatrix</A>
<LI><A NAME="tex2html485"
HREF="node35.html">triu -- Return the upper triangle</A>
HREF="node33.html">get_diag -- Get main diagonal</A>
<LI><A NAME="tex2html486"
HREF="node36.html">psb_set_mat_default -- Set default storage format</A>
HREF="node34.html">clip_diag -- Cut out main diagonal</A>
<LI><A NAME="tex2html487"
HREF="node37.html">clone -- Clone current object</A>
HREF="node35.html">tril -- Return the lower triangle</A>
<LI><A NAME="tex2html488"
HREF="node38.html">Named Constants</A>
HREF="node36.html">triu -- Return the upper triangle</A>
<LI><A NAME="tex2html489"
HREF="node37.html">psb_set_mat_default -- Set default storage format</A>
<LI><A NAME="tex2html490"
HREF="node38.html">clone -- Clone current object</A>
<LI><A NAME="tex2html491"
HREF="node39.html">Named Constants</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html470"
<A NAME="tex2html472"
HREF="node22.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html466"
<A NAME="tex2html468"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html460"
<A NAME="tex2html462"
HREF="node20.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html468"
<A NAME="tex2html470"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html471"
<B> Next:</B> <A NAME="tex2html473"
HREF="node22.html">Sparse Matrix Methods</A>
<B> Up:</B> <A NAME="tex2html467"
<B> Up:</B> <A NAME="tex2html469"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html461"
<B> Previous:</B> <A NAME="tex2html463"
HREF="node20.html">Named Constants</A>
&nbsp; <B> <A NAME="tex2html469"
&nbsp; <B> <A NAME="tex2html471"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html499"
<A NAME="tex2html502"
HREF="node23.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html495"
<A NAME="tex2html498"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html489"
<A NAME="tex2html492"
HREF="node21.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html497"
<A NAME="tex2html500"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html500"
<B> Next:</B> <A NAME="tex2html503"
HREF="node23.html">get_nrows Get</A>
<B> Up:</B> <A NAME="tex2html496"
<B> Up:</B> <A NAME="tex2html499"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html490"
<B> Previous:</B> <A NAME="tex2html493"
HREF="node21.html">Sparse Matrix class</A>
&nbsp; <B> <A NAME="tex2html498"
&nbsp; <B> <A NAME="tex2html501"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html511"
<A NAME="tex2html514"
HREF="node24.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html507"
<A NAME="tex2html510"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html501"
<A NAME="tex2html504"
HREF="node22.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html509"
<A NAME="tex2html512"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html512"
<B> Next:</B> <A NAME="tex2html515"
HREF="node24.html">get_ncols Get</A>
<B> Up:</B> <A NAME="tex2html508"
<B> Up:</B> <A NAME="tex2html511"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html502"
<B> Previous:</B> <A NAME="tex2html505"
HREF="node22.html">Sparse Matrix Methods</A>
&nbsp; <B> <A NAME="tex2html510"
&nbsp; <B> <A NAME="tex2html513"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html523"
<A NAME="tex2html526"
HREF="node25.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html519"
<A NAME="tex2html522"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html513"
<A NAME="tex2html516"
HREF="node23.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html521"
<A NAME="tex2html524"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html524"
<B> Next:</B> <A NAME="tex2html527"
HREF="node25.html">get_nnzeros Get</A>
<B> Up:</B> <A NAME="tex2html520"
<B> Up:</B> <A NAME="tex2html523"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html514"
<B> Previous:</B> <A NAME="tex2html517"
HREF="node23.html">get_nrows Get</A>
&nbsp; <B> <A NAME="tex2html522"
&nbsp; <B> <A NAME="tex2html525"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html535"
<A NAME="tex2html538"
HREF="node26.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html531"
<A NAME="tex2html534"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html525"
<A NAME="tex2html528"
HREF="node24.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html533"
<A NAME="tex2html536"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html536"
<B> Next:</B> <A NAME="tex2html539"
HREF="node26.html">get_size Get</A>
<B> Up:</B> <A NAME="tex2html532"
<B> Up:</B> <A NAME="tex2html535"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html526"
<B> Previous:</B> <A NAME="tex2html529"
HREF="node24.html">get_ncols Get</A>
&nbsp; <B> <A NAME="tex2html534"
&nbsp; <B> <A NAME="tex2html537"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html547"
<A NAME="tex2html550"
HREF="node27.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html543"
<A NAME="tex2html546"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html537"
<A NAME="tex2html540"
HREF="node25.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html545"
<A NAME="tex2html548"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html548"
<B> Next:</B> <A NAME="tex2html551"
HREF="node27.html">sizeof Get</A>
<B> Up:</B> <A NAME="tex2html544"
<B> Up:</B> <A NAME="tex2html547"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html538"
<B> Previous:</B> <A NAME="tex2html541"
HREF="node25.html">get_nnzeros Get</A>
&nbsp; <B> <A NAME="tex2html546"
&nbsp; <B> <A NAME="tex2html549"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -28,26 +28,26 @@ of a sparse matrix">
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html559"
<A NAME="tex2html562"
HREF="node28.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html555"
<A NAME="tex2html558"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html549"
<A NAME="tex2html552"
HREF="node26.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html557"
<A NAME="tex2html560"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html560"
<B> Next:</B> <A NAME="tex2html563"
HREF="node28.html">get_fmt Short</A>
<B> Up:</B> <A NAME="tex2html556"
<B> Up:</B> <A NAME="tex2html559"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html550"
<B> Previous:</B> <A NAME="tex2html553"
HREF="node26.html">get_size Get</A>
&nbsp; <B> <A NAME="tex2html558"
&nbsp; <B> <A NAME="tex2html561"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html571"
<A NAME="tex2html574"
HREF="node29.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html567"
<A NAME="tex2html570"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html561"
<A NAME="tex2html564"
HREF="node27.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html569"
<A NAME="tex2html572"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html572"
<B> Next:</B> <A NAME="tex2html575"
HREF="node29.html">is_bld, is_upd, is_asb </A>
<B> Up:</B> <A NAME="tex2html568"
<B> Up:</B> <A NAME="tex2html571"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html562"
<B> Previous:</B> <A NAME="tex2html565"
HREF="node27.html">sizeof Get</A>
&nbsp; <B> <A NAME="tex2html570"
&nbsp; <B> <A NAME="tex2html573"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html583"
<A NAME="tex2html586"
HREF="node30.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html579"
<A NAME="tex2html582"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html573"
<A NAME="tex2html576"
HREF="node28.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html581"
<A NAME="tex2html584"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html584"
<B> Next:</B> <A NAME="tex2html587"
HREF="node30.html">is_lower, is_upper, is_triangle, is_unit</A>
<B> Up:</B> <A NAME="tex2html580"
<B> Up:</B> <A NAME="tex2html583"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html574"
<B> Previous:</B> <A NAME="tex2html577"
HREF="node28.html">get_fmt Short</A>
&nbsp; <B> <A NAME="tex2html582"
&nbsp; <B> <A NAME="tex2html585"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

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

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html595"
<A NAME="tex2html598"
HREF="node31.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html591"
<A NAME="tex2html594"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html585"
<A NAME="tex2html588"
HREF="node29.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html593"
<A NAME="tex2html596"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html596"
<B> Next:</B> <A NAME="tex2html599"
HREF="node31.html">cscnv Convert</A>
<B> Up:</B> <A NAME="tex2html592"
<B> Up:</B> <A NAME="tex2html595"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html586"
<B> Previous:</B> <A NAME="tex2html589"
HREF="node29.html">is_bld, is_upd, is_asb </A>
&nbsp; <B> <A NAME="tex2html594"
&nbsp; <B> <A NAME="tex2html597"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html607"
<A NAME="tex2html610"
HREF="node32.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html603"
<A NAME="tex2html606"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html597"
<A NAME="tex2html600"
HREF="node30.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html605"
<A NAME="tex2html608"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html608"
<B> Next:</B> <A NAME="tex2html611"
HREF="node32.html">csclip Reduce</A>
<B> Up:</B> <A NAME="tex2html604"
<B> Up:</B> <A NAME="tex2html607"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html598"
<B> Previous:</B> <A NAME="tex2html601"
HREF="node30.html">is_lower, is_upper, is_triangle, is_unit</A>
&nbsp; <B> <A NAME="tex2html606"
&nbsp; <B> <A NAME="tex2html609"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html619"
<A NAME="tex2html622"
HREF="node33.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html615"
<A NAME="tex2html618"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html609"
<A NAME="tex2html612"
HREF="node31.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html617"
<A NAME="tex2html620"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html620"
HREF="node33.html">clip_diag Cut</A>
<B> Up:</B> <A NAME="tex2html616"
<B> Next:</B> <A NAME="tex2html623"
HREF="node33.html">get_diag Get</A>
<B> Up:</B> <A NAME="tex2html619"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html610"
<B> Previous:</B> <A NAME="tex2html613"
HREF="node31.html">cscnv Convert</A>
&nbsp; <B> <A NAME="tex2html618"
&nbsp; <B> <A NAME="tex2html621"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>clip_diag -- Cut out main diagonal</TITLE>
<META NAME="description" CONTENT="clip_diag -- Cut out main diagonal">
<TITLE>get_diag -- Get main diagonal</TITLE>
<META NAME="description" CONTENT="get_diag -- Get main diagonal">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -26,41 +26,41 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html631"
<A NAME="tex2html634"
HREF="node34.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html627"
<A NAME="tex2html630"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html621"
<A NAME="tex2html624"
HREF="node32.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html629"
<A NAME="tex2html632"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html632"
HREF="node34.html">tril Return</A>
<B> Up:</B> <A NAME="tex2html628"
<B> Next:</B> <A NAME="tex2html635"
HREF="node34.html">clip_diag Cut</A>
<B> Up:</B> <A NAME="tex2html631"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html622"
<B> Previous:</B> <A NAME="tex2html625"
HREF="node32.html">csclip Reduce</A>
&nbsp; <B> <A NAME="tex2html630"
&nbsp; <B> <A NAME="tex2html633"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION000421200000000000000">
clip_diag -- Cut out main diagonal</A>
get_diag -- Get main diagonal</A>
</H3>
<PRE>
call a%clip_diag(b,info)
call a%get_diag(d,info)
</PRE>
<P>
Returns a copy of <code>a</code> without the main diagonal.
Returns a copy of the main diagonal.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
@ -80,10 +80,10 @@ Scope: <B>local</B>.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>A copy of <code>a</code> without the main diagonal.
<DT><STRONG>d</STRONG></DT>
<DD>A copy of the main diagonal.
<BR>
A variable of type <code>psb_Tspmat_type</code>.
A one-dimensional array of the appropriate type.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Return code.

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>tril -- Return the lower triangle</TITLE>
<META NAME="description" CONTENT="tril -- Return the lower triangle">
<TITLE>clip_diag -- Cut out main diagonal</TITLE>
<META NAME="description" CONTENT="clip_diag -- Cut out main diagonal">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -26,44 +26,41 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html643"
<A NAME="tex2html646"
HREF="node35.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html639"
<A NAME="tex2html642"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html633"
<A NAME="tex2html636"
HREF="node33.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html641"
<A NAME="tex2html644"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html644"
HREF="node35.html">triu Return</A>
<B> Up:</B> <A NAME="tex2html640"
<B> Next:</B> <A NAME="tex2html647"
HREF="node35.html">tril Return</A>
<B> Up:</B> <A NAME="tex2html643"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html634"
HREF="node33.html">clip_diag Cut</A>
&nbsp; <B> <A NAME="tex2html642"
<B> Previous:</B> <A NAME="tex2html637"
HREF="node33.html">get_diag Get</A>
&nbsp; <B> <A NAME="tex2html645"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION000421300000000000000">
tril -- Return the lower triangle</A>
clip_diag -- Cut out main diagonal</A>
</H3>
<PRE>
call a%tril(b,info[,&amp;
&amp; diag,imin,imax,jmin,jmax,rscale,cscale])
call a%clip_diag(b,info)
</PRE>
<P>
Returns the lower triangular part of submatrix
<code>A(imin:imax,jmin:jmax)</code>, optionally rescaling row/col indices to
the range <code>1:imax-imin+1,1:jmax-jmin+1</code>.
Returns a copy of <code>a</code> without the main diagonal.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
@ -78,25 +75,13 @@ A variable of type <code>psb_Tspmat_type</code>.
<BR>
Scope: <B>local</B>.
<BR></DD>
<DT><STRONG>diag</STRONG></DT>
<DD>How many additional diagonals above the main one, default 0.
</DD>
<DT><STRONG>imin,imax,jmin,jmax</STRONG></DT>
<DD>Minimum and maximum row and column indices.
<BR>
Type: optional.
</DD>
<DT><STRONG>rscale,cscale</STRONG></DT>
<DD>Whether to rescale row/column indices.
Type: optional.
</DD>
</DL>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>A copy of a subtriangle of <code>a</code>.
<DD>A copy of <code>a</code> without the main diagonal.
<BR>
A variable of type <code>psb_Tspmat_type</code>.
</DD>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>triu -- Return the upper triangle</TITLE>
<META NAME="description" CONTENT="triu -- Return the upper triangle">
<TITLE>tril -- Return the lower triangle</TITLE>
<META NAME="description" CONTENT="tril -- Return the lower triangle">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -26,42 +26,42 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html655"
<A NAME="tex2html658"
HREF="node36.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html651"
<A NAME="tex2html654"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html645"
<A NAME="tex2html648"
HREF="node34.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html653"
<A NAME="tex2html656"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html656"
HREF="node36.html">psb_set_mat_default Set</A>
<B> Up:</B> <A NAME="tex2html652"
<B> Next:</B> <A NAME="tex2html659"
HREF="node36.html">triu Return</A>
<B> Up:</B> <A NAME="tex2html655"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html646"
HREF="node34.html">tril Return</A>
&nbsp; <B> <A NAME="tex2html654"
<B> Previous:</B> <A NAME="tex2html649"
HREF="node34.html">clip_diag Cut</A>
&nbsp; <B> <A NAME="tex2html657"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION000421400000000000000">
triu -- Return the upper triangle</A>
tril -- Return the lower triangle</A>
</H3>
<PRE>
call a%triu(b,info[,&amp;
call a%tril(b,info[,&amp;
&amp; diag,imin,imax,jmin,jmax,rscale,cscale])
</PRE>
<P>
Returns the upper triangular part of submatrix
Returns the lower triangular part of submatrix
<code>A(imin:imax,jmin:jmax)</code>, optionally rescaling row/col indices to
the range <code>1:imax-imin+1,1:jmax-jmin+1</code>.
<DL>
@ -79,7 +79,7 @@ A variable of type <code>psb_Tspmat_type</code>.
Scope: <B>local</B>.
<BR></DD>
<DT><STRONG>diag</STRONG></DT>
<DD>How many additional diagonals below the main one, default 0.
<DD>How many additional diagonals above the main one, default 0.
</DD>
<DT><STRONG>imin,imax,jmin,jmax</STRONG></DT>
<DD>Minimum and maximum row and column indices.

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_set_mat_default -- Set default storage format</TITLE>
<META NAME="description" CONTENT="psb_set_mat_default -- Set default storage format">
<TITLE>triu -- Return the upper triangle</TITLE>
<META NAME="description" CONTENT="triu -- Return the upper triangle">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -26,41 +26,44 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html667"
<A NAME="tex2html670"
HREF="node37.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html663"
<A NAME="tex2html666"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html657"
<A NAME="tex2html660"
HREF="node35.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html665"
<A NAME="tex2html668"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html668"
HREF="node37.html">clone Clone</A>
<B> Up:</B> <A NAME="tex2html664"
<B> Next:</B> <A NAME="tex2html671"
HREF="node37.html">psb_set_mat_default Set</A>
<B> Up:</B> <A NAME="tex2html667"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html658"
HREF="node35.html">triu Return</A>
&nbsp; <B> <A NAME="tex2html666"
<B> Previous:</B> <A NAME="tex2html661"
HREF="node35.html">tril Return</A>
&nbsp; <B> <A NAME="tex2html669"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION000421500000000000000">
psb_set_mat_default -- Set default storage format</A>
triu -- Return the upper triangle</A>
</H3>
<P>
<PRE>
call psb_set_mat_default(a)
call a%triu(b,info[,&amp;
&amp; diag,imin,imax,jmin,jmax,rscale,cscale])
</PRE>
<P>
Returns the upper triangular part of submatrix
<code>A(imin:imax,jmin:jmax)</code>, optionally rescaling row/col indices to
the range <code>1:imax-imin+1,1:jmax-jmin+1</code>.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
@ -69,10 +72,36 @@ call psb_set_mat_default(a)
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>a variable of <code>class(psb_T_base_sparse_mat)</code> requesting
a new default storage format.
<DD>the sparse matrix.
<BR>
A variable of type <code>psb_Tspmat_type</code>.
<BR>
Scope: <B>local</B>.
<BR></DD>
<DT><STRONG>diag</STRONG></DT>
<DD>How many additional diagonals below the main one, default 0.
</DD>
<DT><STRONG>imin,imax,jmin,jmax</STRONG></DT>
<DD>Minimum and maximum row and column indices.
<BR>
Type: optional.
</DD>
<DT><STRONG>rscale,cscale</STRONG></DT>
<DD>Whether to rescale row/column indices.
Type: optional.
</DD>
</DL>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>A copy of a subtriangle of <code>a</code>.
<BR>
Type: required.
A variable of type <code>psb_Tspmat_type</code>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Return code.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>clone -- Clone current object</TITLE>
<META NAME="description" CONTENT="clone -- Clone current object">
<TITLE>psb_set_mat_default -- Set default storage format</TITLE>
<META NAME="description" CONTENT="psb_set_mat_default -- Set default storage format">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -26,38 +26,38 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html679"
<A NAME="tex2html682"
HREF="node38.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html675"
<A NAME="tex2html678"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html669"
<A NAME="tex2html672"
HREF="node36.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html677"
<A NAME="tex2html680"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html680"
HREF="node38.html">Named Constants</A>
<B> Up:</B> <A NAME="tex2html676"
<B> Next:</B> <A NAME="tex2html683"
HREF="node38.html">clone Clone</A>
<B> Up:</B> <A NAME="tex2html679"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html670"
HREF="node36.html">psb_set_mat_default Set</A>
&nbsp; <B> <A NAME="tex2html678"
<B> Previous:</B> <A NAME="tex2html673"
HREF="node36.html">triu Return</A>
&nbsp; <B> <A NAME="tex2html681"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION000421600000000000000">
clone -- Clone current object</A>
psb_set_mat_default -- Set default storage format</A>
</H3>
<P>
<PRE>
call a%clone(b,info)
call psb_set_mat_default(a)
</PRE>
<P>
@ -69,22 +69,10 @@ call a%clone(b,info)
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix.
<DD>a variable of <code>class(psb_T_base_sparse_mat)</code> requesting
a new default storage format.
<BR>
Scope: <B>local</B>.
<BR></DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>b</STRONG></DT>
<DD>A copy of the input object.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Return code.
Type: required.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Named Constants</TITLE>
<META NAME="description" CONTENT="Named Constants">
<TITLE>clone -- Clone current object</TITLE>
<META NAME="description" CONTENT="clone -- Clone current object">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,6 +18,7 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node39.html">
<LINK REL="previous" HREF="node37.html">
<LINK REL="up" HREF="node21.html">
<LINK REL="next" HREF="node39.html">
@ -25,56 +26,65 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html689"
<A NAME="tex2html694"
HREF="node39.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html685"
<A NAME="tex2html690"
HREF="node21.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html681"
<A NAME="tex2html684"
HREF="node37.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html687"
<A NAME="tex2html692"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html690"
HREF="node39.html">Dense Vector Data Structure</A>
<B> Up:</B> <A NAME="tex2html686"
<B> Next:</B> <A NAME="tex2html695"
HREF="node39.html">Named Constants</A>
<B> Up:</B> <A NAME="tex2html691"
HREF="node21.html">Sparse Matrix class</A>
<B> Previous:</B> <A NAME="tex2html682"
HREF="node37.html">clone Clone</A>
&nbsp; <B> <A NAME="tex2html688"
<B> Previous:</B> <A NAME="tex2html685"
HREF="node37.html">psb_set_mat_default Set</A>
&nbsp; <B> <A NAME="tex2html693"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION000421700000000000000"></A>
<A NAME="sec:sp_constants"></A>
<BR>
Named Constants
<H3><A NAME="SECTION000421700000000000000">
clone -- Clone current object</A>
</H3>
<P>
<PRE>
call a%clone(b,info)
</PRE>
<P>
<DL>
<DT><STRONG>psb_dupl_ovwrt_</STRONG></DT>
<DD>Duplicate coefficients should be overwritten
(i.e. ignore duplications)
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG>psb_dupl_add_</STRONG></DT>
<DD>Duplicate coefficients should be added;
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>psb_dupl_err_</STRONG></DT>
<DD>Duplicate coefficients should trigger an error conditino
</DD>
<DT><STRONG>psb_upd_dflt_</STRONG></DT>
<DD>Default update strategy for matrix coefficients;
<DT><STRONG>a</STRONG></DT>
<DD>the sparse matrix.
<BR>
Scope: <B>local</B>.
<BR></DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>psb_upd_srch_</STRONG></DT>
<DD>Update strategy based on search into the data structure;
<DT><STRONG>b</STRONG></DT>
<DD>A copy of the input object.
</DD>
<DT><STRONG>psb_upd_perm_</STRONG></DT>
<DD>Update strategy based on additional
permutation data (see tools routine description).
<DT><STRONG>info</STRONG></DT>
<DD>Return code.
</DD>
</DL>

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

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html225"
<A NAME="tex2html226"
HREF="node5.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html221"
<A NAME="tex2html222"
HREF="node3.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html215"
<A NAME="tex2html216"
HREF="node3.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html223"
<A NAME="tex2html224"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html226"
<B> Next:</B> <A NAME="tex2html227"
HREF="node5.html">Library contents</A>
<B> Up:</B> <A NAME="tex2html222"
<B> Up:</B> <A NAME="tex2html223"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html216"
<B> Previous:</B> <A NAME="tex2html217"
HREF="node3.html">General overview</A>
&nbsp; <B> <A NAME="tex2html224"
&nbsp; <B> <A NAME="tex2html225"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
@ -126,8 +126,8 @@ Overlap points do not usually exist in the basic data
distributions; however they are a feature of Domain Decomposition
Schwarz preconditioners which are the subject of related research
work&nbsp;[<A
HREF="node120.html#2007c">4</A>,<A
HREF="node120.html#2007d">3</A>].
HREF="node121.html#2007c">4</A>,<A
HREF="node121.html#2007d">3</A>].
<P>
We denote the sets of internal, boundary and halo points for a given
@ -197,26 +197,26 @@ points in the literature.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html225"
<A NAME="tex2html226"
HREF="node5.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html221"
<A NAME="tex2html222"
HREF="node3.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html215"
<A NAME="tex2html216"
HREF="node3.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html223"
<A NAME="tex2html224"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html226"
<B> Next:</B> <A NAME="tex2html227"
HREF="node5.html">Library contents</A>
<B> Up:</B> <A NAME="tex2html222"
<B> Up:</B> <A NAME="tex2html223"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html216"
<B> Previous:</B> <A NAME="tex2html217"
HREF="node3.html">General overview</A>
&nbsp; <B> <A NAME="tex2html224"
&nbsp; <B> <A NAME="tex2html225"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

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

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_nrows -- Get number of rows in a dense vector</TITLE>
<META NAME="description" CONTENT="get_nrows -- Get number of rows in a dense vector">
<TITLE>Vector Methods</TITLE>
<META NAME="description" CONTENT="Vector Methods">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,72 +20,40 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node42.html">
<LINK REL="previous" HREF="node40.html">
<LINK REL="up" HREF="node39.html">
<LINK REL="up" HREF="node40.html">
<LINK REL="next" HREF="node42.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html730"
<A NAME="tex2html733"
HREF="node42.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html726"
HREF="node39.html">
<A NAME="tex2html729"
HREF="node40.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html720"
<A NAME="tex2html723"
HREF="node40.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html728"
<A NAME="tex2html731"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html731"
HREF="node42.html">sizeof Get</A>
<B> Up:</B> <A NAME="tex2html727"
HREF="node39.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html721"
HREF="node40.html">Vector Methods</A>
&nbsp; <B> <A NAME="tex2html729"
<B> Next:</B> <A NAME="tex2html734"
HREF="node42.html">get_nrows Get</A>
<B> Up:</B> <A NAME="tex2html730"
HREF="node40.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html724"
HREF="node40.html">Dense Vector Data Structure</A>
&nbsp; <B> <A NAME="tex2html732"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00043200000000000000">
get_nrows -- Get number of rows in a dense vector</A>
<H3><A NAME="SECTION00043100000000000000">
Vector Methods</A>
</H3>
<P>
<PRE>
nr = v%get_nrows()
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>v</STRONG></DT>
<DD>the dense vector
<BR>
Scope: <B>local</B>
<BR></DD>
</DL>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The number of rows of dense vector <code>v</code>.
</DD>
</DL>
<P>
<BR><HR>
</BODY>

@ -7,10 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>sizeof -- Get memory occupation in bytes
of a dense vector</TITLE>
<META NAME="description" CONTENT="sizeof -- Get memory occupation in bytes
of a dense vector">
<TITLE>get_nrows -- Get number of rows in a dense vector</TITLE>
<META NAME="description" CONTENT="get_nrows -- Get number of rows in a dense vector">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -22,45 +20,44 @@ of a dense vector">
<LINK REL="next" HREF="node43.html">
<LINK REL="previous" HREF="node41.html">
<LINK REL="up" HREF="node39.html">
<LINK REL="up" HREF="node40.html">
<LINK REL="next" HREF="node43.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html742"
<A NAME="tex2html745"
HREF="node43.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html738"
HREF="node39.html">
<A NAME="tex2html741"
HREF="node40.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html732"
<A NAME="tex2html735"
HREF="node41.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html740"
<A NAME="tex2html743"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html743"
HREF="node43.html">get_vect Get</A>
<B> Up:</B> <A NAME="tex2html739"
HREF="node39.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html733"
HREF="node41.html">get_nrows Get</A>
&nbsp; <B> <A NAME="tex2html741"
<B> Next:</B> <A NAME="tex2html746"
HREF="node43.html">sizeof Get</A>
<B> Up:</B> <A NAME="tex2html742"
HREF="node40.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html736"
HREF="node41.html">Vector Methods</A>
&nbsp; <B> <A NAME="tex2html744"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00043300000000000000">
sizeof -- Get memory occupation in bytes
of a dense vector</A>
<H3><A NAME="SECTION00043200000000000000">
get_nrows -- Get number of rows in a dense vector</A>
</H3>
<P>
<PRE>
memory_size = v%sizeof()
nr = v%get_nrows()
</PRE>
<P>
@ -84,7 +81,7 @@ Scope: <B>local</B>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>The memory occupation in bytes.
<DD>The number of rows of dense vector <code>v</code>.
</DD>
</DL>

@ -7,8 +7,10 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>get_vect -- Get a copy of the vector contents</TITLE>
<META NAME="description" CONTENT="get_vect -- Get a copy of the vector contents">
<TITLE>sizeof -- Get memory occupation in bytes
of a dense vector</TITLE>
<META NAME="description" CONTENT="sizeof -- Get memory occupation in bytes
of a dense vector">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,44 +22,45 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node44.html">
<LINK REL="previous" HREF="node42.html">
<LINK REL="up" HREF="node39.html">
<LINK REL="up" HREF="node40.html">
<LINK REL="next" HREF="node44.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html754"
<A NAME="tex2html757"
HREF="node44.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html750"
HREF="node39.html">
<A NAME="tex2html753"
HREF="node40.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html744"
<A NAME="tex2html747"
HREF="node42.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html752"
<A NAME="tex2html755"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html755"
HREF="node44.html">clone Clone</A>
<B> Up:</B> <A NAME="tex2html751"
HREF="node39.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html745"
HREF="node42.html">sizeof Get</A>
&nbsp; <B> <A NAME="tex2html753"
<B> Next:</B> <A NAME="tex2html758"
HREF="node44.html">get_vect Get</A>
<B> Up:</B> <A NAME="tex2html754"
HREF="node40.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html748"
HREF="node42.html">get_nrows Get</A>
&nbsp; <B> <A NAME="tex2html756"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00043400000000000000">
get_vect -- Get a copy of the vector contents</A>
<H3><A NAME="SECTION00043300000000000000">
sizeof -- Get memory occupation in bytes
of a dense vector</A>
</H3>
<P>
<PRE>
extv = v%get_vect()
memory_size = v%sizeof()
</PRE>
<P>
@ -81,8 +84,7 @@ Scope: <B>local</B>
<DD>
</DD>
<DT><STRONG>Function value</STRONG></DT>
<DD>An allocatable array holding a copy of the dense
vector contents.
<DD>The memory occupation in bytes.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>clone -- Clone current object</TITLE>
<META NAME="description" CONTENT="clone -- Clone current object">
<TITLE>get_vect -- Get a copy of the vector contents</TITLE>
<META NAME="description" CONTENT="get_vect -- Get a copy of the vector contents">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,44 +18,46 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node45.html">
<LINK REL="previous" HREF="node43.html">
<LINK REL="up" HREF="node39.html">
<LINK REL="up" HREF="node40.html">
<LINK REL="next" HREF="node45.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html764"
<A NAME="tex2html769"
HREF="node45.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html760"
HREF="node39.html">
<A NAME="tex2html765"
HREF="node40.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html756"
<A NAME="tex2html759"
HREF="node43.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html762"
<A NAME="tex2html767"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html765"
HREF="node45.html">Preconditioner data structure</A>
<B> Up:</B> <A NAME="tex2html761"
HREF="node39.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html757"
HREF="node43.html">get_vect Get</A>
&nbsp; <B> <A NAME="tex2html763"
<B> Next:</B> <A NAME="tex2html770"
HREF="node45.html">clone Clone</A>
<B> Up:</B> <A NAME="tex2html766"
HREF="node40.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html760"
HREF="node43.html">sizeof Get</A>
&nbsp; <B> <A NAME="tex2html768"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H3><A NAME="SECTION00043500000000000000">
clone -- Clone current object</A>
<H3><A NAME="SECTION00043400000000000000">
get_vect -- Get a copy of the vector contents</A>
</H3>
<P>
<PRE>
call x%clone(y,info)
extv = v%get_vect()
</PRE>
<P>
@ -66,10 +68,10 @@ call x%clone(y,info)
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>the dense vector.
<DT><STRONG>v</STRONG></DT>
<DD>the dense vector
<BR>
Scope: <B>local</B>.
Scope: <B>local</B>
<BR></DD>
</DL>
@ -78,11 +80,9 @@ Scope: <B>local</B>.
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>A copy of the input object.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Return code.
<DT><STRONG>Function value</STRONG></DT>
<DD>An allocatable array holding a copy of the dense
vector contents.
</DD>
</DL>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Preconditioner data structure</TITLE>
<META NAME="description" CONTENT="Preconditioner data structure">
<TITLE>clone -- Clone current object</TITLE>
<META NAME="description" CONTENT="clone -- Clone current object">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,70 +18,73 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="previous" HREF="node39.html">
<LINK REL="up" HREF="node9.html">
<LINK REL="previous" HREF="node44.html">
<LINK REL="up" HREF="node40.html">
<LINK REL="next" HREF="node46.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html774"
<A NAME="tex2html779"
HREF="node46.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html770"
HREF="node9.html">
<A NAME="tex2html775"
HREF="node40.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html766"
<A NAME="tex2html771"
HREF="node44.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html772"
<A NAME="tex2html777"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html775"
HREF="node46.html">Computational routines</A>
<B> Up:</B> <A NAME="tex2html771"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html767"
HREF="node44.html">clone Clone</A>
&nbsp; <B> <A NAME="tex2html773"
<B> Next:</B> <A NAME="tex2html780"
HREF="node46.html">Preconditioner data structure</A>
<B> Up:</B> <A NAME="tex2html776"
HREF="node40.html">Dense Vector Data Structure</A>
<B> Previous:</B> <A NAME="tex2html772"
HREF="node44.html">get_vect Get</A>
&nbsp; <B> <A NAME="tex2html778"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00044000000000000000"></A>
<A NAME="sec:prec"></A>
<BR>
Preconditioner data structure
</H2>
Our base library offers support for simple well known preconditioners
like Diagonal Scaling or Block Jacobi with incomplete
factorization ILU(0).
<H3><A NAME="SECTION00043500000000000000">
clone -- Clone current object</A>
</H3>
<PRE>
call x%clone(y,info)
</PRE>
<P>
A preconditioner is held in the precdata<TT> psb_prec_type</TT> data structure reported in
figure&nbsp;<A HREF="#fig:prectype">6</A>. The <code>psb_prec_type</code>
data type may contain a simple preconditioning matrix with the
associated communication descriptor.The internal preconditioner is allocated appropriately with the
dynamic type corresponding to the desired preconditioner.
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>x</STRONG></DT>
<DD>the dense vector.
<BR>
Scope: <B>local</B>.
<BR></DD>
</DL>
<DIV ALIGN="CENTER"><A NAME="fig:prectype"></A><A NAME="855"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 6:</STRONG>
The PSBLAS defined data type that contains a preconditioner.</CAPTION>
<TR><TD><FONT SIZE="-1"> </FONT>
<DIV ALIGN="CENTER"></DIV><TABLE WIDTH="90%">
<TR><TD>
<PRE>
type psb_Tprec_type
class(psb_T_base_prec_type), allocatable :: prec
end type psb_Tprec_type
</PRE></TD></TR>
</TABLE>
<DIV ALIGN="CENTER"></DIV></TD></TR>
</TABLE>
</DIV>
<P>
<DL>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>y</STRONG></DT>
<DD>A copy of the input object.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Return code.
</DD>
</DL>
<P>
<BR><HR>

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Computational routines</TITLE>
<META NAME="description" CONTENT="Computational routines">
<TITLE>Preconditioner data structure</TITLE>
<META NAME="description" CONTENT="Preconditioner data structure">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,78 +18,72 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node60.html">
<LINK REL="previous" HREF="node9.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="previous" HREF="node40.html">
<LINK REL="up" HREF="node9.html">
<LINK REL="next" HREF="node47.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html786"
<A NAME="tex2html789"
HREF="node47.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html782"
HREF="userhtml.html">
<A NAME="tex2html785"
HREF="node9.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html776"
<A NAME="tex2html781"
HREF="node45.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html784"
<A NAME="tex2html787"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html787"
HREF="node47.html">psb_geaxpby General</A>
<B> Up:</B> <A NAME="tex2html783"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html777"
HREF="node45.html">Preconditioner data structure</A>
&nbsp; <B> <A NAME="tex2html785"
<B> Next:</B> <A NAME="tex2html790"
HREF="node47.html">Computational routines</A>
<B> Up:</B> <A NAME="tex2html786"
HREF="node9.html">Data Structures and Classes</A>
<B> Previous:</B> <A NAME="tex2html782"
HREF="node45.html">clone Clone</A>
&nbsp; <B> <A NAME="tex2html788"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00050000000000000000">
Computational routines</A>
</H1>
<H2><A NAME="SECTION00044000000000000000"></A>
<A NAME="sec:prec"></A>
<BR>
Preconditioner data structure
</H2>
Our base library offers support for simple well known preconditioners
like Diagonal Scaling or Block Jacobi with incomplete
factorization ILU(0).
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
A preconditioner is held in the precdata<TT> psb_prec_type</TT> data structure reported in
figure&nbsp;<A HREF="#fig:prectype">6</A>. The <code>psb_prec_type</code>
data type may contain a simple preconditioning matrix with the
associated communication descriptor.The internal preconditioner is allocated appropriately with the
dynamic type corresponding to the desired preconditioner.
<UL>
<LI><A NAME="tex2html788"
HREF="node47.html">psb_geaxpby -- General Dense Matrix Sum</A>
<LI><A NAME="tex2html789"
HREF="node48.html">psb_gedot -- Dot Product</A>
<LI><A NAME="tex2html790"
HREF="node49.html">psb_gedots -- Generalized Dot Product</A>
<LI><A NAME="tex2html791"
HREF="node50.html">psb_geamax -- Infinity-Norm of Vector</A>
<LI><A NAME="tex2html792"
HREF="node51.html">psb_geamaxs -- Generalized Infinity Norm</A>
<LI><A NAME="tex2html793"
HREF="node52.html">psb_geasum -- 1-Norm of Vector</A>
<LI><A NAME="tex2html794"
HREF="node53.html">psb_geasums -- Generalized 1-Norm of Vector</A>
<LI><A NAME="tex2html795"
HREF="node54.html">psb_genrm2 -- 2-Norm of Vector</A>
<LI><A NAME="tex2html796"
HREF="node55.html">psb_genrm2s -- Generalized 2-Norm of Vector</A>
<LI><A NAME="tex2html797"
HREF="node56.html">psb_spnrm1 -- 1-Norm of Sparse Matrix</A>
<LI><A NAME="tex2html798"
HREF="node57.html">psb_spnrmi -- Infinity Norm of Sparse Matrix</A>
<LI><A NAME="tex2html799"
HREF="node58.html">psb_spmm -- Sparse Matrix by Dense Matrix
Product</A>
<LI><A NAME="tex2html800"
HREF="node59.html">psb_spsm -- Triangular System Solve</A>
</UL>
<!--End of Table of Child-Links-->
<DIV ALIGN="CENTER"><A NAME="fig:prectype"></A><A NAME="866"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 6:</STRONG>
The PSBLAS defined data type that contains a preconditioner.</CAPTION>
<TR><TD><FONT SIZE="-1"> </FONT>
<DIV ALIGN="CENTER"></DIV><TABLE WIDTH="90%">
<TR><TD>
<PRE>
type psb_Tprec_type
class(psb_T_base_prec_type), allocatable :: prec
end type psb_Tprec_type
</PRE></TD></TR>
</TABLE>
<DIV ALIGN="CENTER"></DIV></TD></TR>
</TABLE>
</DIV>
<P>
<BR><HR>
</BODY>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html249"
<A NAME="tex2html250"
HREF="node7.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html245"
<A NAME="tex2html246"
HREF="node3.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html239"
<A NAME="tex2html240"
HREF="node5.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html247"
<A NAME="tex2html248"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html250"
<B> Next:</B> <A NAME="tex2html251"
HREF="node7.html">User-defined index mappings</A>
<B> Up:</B> <A NAME="tex2html246"
<B> Up:</B> <A NAME="tex2html247"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html240"
<B> Previous:</B> <A NAME="tex2html241"
HREF="node5.html">Library contents</A>
&nbsp; <B> <A NAME="tex2html248"
&nbsp; <B> <A NAME="tex2html249"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
@ -249,32 +249,32 @@ from optimal.
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html251"
<LI><A NAME="tex2html252"
HREF="node7.html">User-defined index mappings</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html249"
<A NAME="tex2html250"
HREF="node7.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html245"
<A NAME="tex2html246"
HREF="node3.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html239"
<A NAME="tex2html240"
HREF="node5.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html247"
<A NAME="tex2html248"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html250"
<B> Next:</B> <A NAME="tex2html251"
HREF="node7.html">User-defined index mappings</A>
<B> Up:</B> <A NAME="tex2html246"
<B> Up:</B> <A NAME="tex2html247"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html240"
<B> Previous:</B> <A NAME="tex2html241"
HREF="node5.html">Library contents</A>
&nbsp; <B> <A NAME="tex2html248"
&nbsp; <B> <A NAME="tex2html249"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

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

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

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_ovrl -- Overlap Update</TITLE>
<META NAME="description" CONTENT="psb_ovrl -- Overlap Update">
<TITLE>psb_halo -- Halo Data Communication</TITLE>
<META NAME="description" CONTENT="psb_halo -- Halo Data Communication">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,57 +20,58 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node63.html">
<LINK REL="previous" HREF="node61.html">
<LINK REL="up" HREF="node60.html">
<LINK REL="up" HREF="node61.html">
<LINK REL="next" HREF="node63.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html993"
<A NAME="tex2html996"
HREF="node63.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html989"
HREF="node60.html">
<A NAME="tex2html992"
HREF="node61.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html983"
<A NAME="tex2html986"
HREF="node61.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html991"
<A NAME="tex2html994"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html994"
HREF="node63.html">psb_gather Gather</A>
<B> Up:</B> <A NAME="tex2html990"
HREF="node60.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html984"
HREF="node61.html">psb_halo Halo</A>
&nbsp; <B> <A NAME="tex2html992"
<B> Next:</B> <A NAME="tex2html997"
HREF="node63.html">psb_ovrl Overlap</A>
<B> Up:</B> <A NAME="tex2html993"
HREF="node61.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html987"
HREF="node61.html">Communication routines</A>
&nbsp; <B> <A NAME="tex2html995"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00062000000000000000">
psb_ovrl -- Overlap Update</A>
<H2><A NAME="SECTION00061000000000000000">
psb_halo -- Halo Data Communication</A>
</H2>
<P>
These subroutines applies an overlap operator to the input vector:
These subroutines gathers the values of the halo
elements, and (optionally) scale the result:
<P>
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
x \leftarrow Q x
x \leftarrow \alpha x
\end{displaymath}
-->
<IMG
WIDTH="55" HEIGHT="27" BORDER="0"
SRC="img60.png"
ALT="\begin{displaymath}x \leftarrow Q x \end{displaymath}">
WIDTH="53" HEIGHT="24" BORDER="0"
SRC="img55.png"
ALT="\begin{displaymath}x \leftarrow \alpha x \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
@ -80,52 +81,42 @@ where:
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></STRONG></DT>
<DD>is the global dense submatrix <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">
</DD>
<DT><STRONG><IMG
WIDTH="17" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img61.png"
ALT="$Q$"></STRONG></DT>
<DD>is the overlap operator; it is the composition of two
operators <IMG
WIDTH="22" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img62.png"
ALT="$ P_a$"> and <IMG
WIDTH="27" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
SRC="img63.png"
ALT="$ P^{T}$">.
<DD>is a global dense submatrix.
</DD>
</DL>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="3187"></A>
<DIV ALIGN="CENTER"><A NAME="3204"></A>
<TABLE>
<CAPTION><STRONG>Table 15:</STRONG>
<CAPTION><STRONG>Table 14:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">, <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Integer</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_ovrl</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_ovrl</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_ovrl</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_ovrl</TD>
<TD ALIGN="LEFT">psb_halo</TD>
</TR>
</TABLE>
</DIV>
@ -137,13 +128,13 @@ Data types</CAPTION>
<P>
<BR>
<IMG
WIDTH="576" HEIGHT="35" ALIGN="BOTTOM" BORDER="0"
SRC="img64.png"
WIDTH="461" HEIGHT="35" ALIGN="BOTTOM" BORDER="0"
SRC="img56.png"
ALT="\begin{lstlisting}
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)
\end{lstlisting}">
<BR>
<BR>
<P>
<DL>
@ -167,7 +158,7 @@ Intent: <B>inout</B>.
<BR>
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90ovrl">15</A>.
Table&nbsp;<A HREF="#tab:f90halo">14</A>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
@ -180,40 +171,24 @@ Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>update</STRONG></DT>
<DD>Update operator.
<BR><DL>
<DT><STRONG>update = psb_none_</STRONG></DT>
<DD>Do nothing;
</DD>
<DT><STRONG>update = psb_add_</STRONG></DT>
<DD>Sum overlap entries, i.e. apply <IMG
WIDTH="27" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
SRC="img65.png"
ALT="$P^T$">;
</DD>
<DT><STRONG>update = psb_avg_</STRONG></DT>
<DD>Average overlap entries, i.e. apply <IMG
WIDTH="44" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
SRC="img66.png"
ALT="$P_aP^T$">;
</DD>
</DL>
<DT><STRONG>alpha</STRONG></DT>
<DD>the scalar <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img22.png"
ALT="$\alpha$">.
<BR>
Scope: <B>global</B>
<BR>
Intent: <B>in</B>.
Type: <B>optional</B>
<BR>
Default: <!-- MATH
$update\_type = psb\_avg\_$
-->
<IMG
WIDTH="166" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img67.png"
ALT="$update\_type = psb\_avg\_ $">
Intent: <B>in</B>.
<BR>
Scope: <B>global</B>
Default: <IMG
WIDTH="73" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img57.png"
ALT="$alpha = 1 $">
<BR>
Specified as: a integer variable.
Specified as: a number of the data type indicated in Table&nbsp;<A HREF="#tab:f90halo">14</A>.
</DD>
<DT><STRONG>work</STRONG></DT>
<DD>the work array.
@ -224,10 +199,21 @@ Type: <B>optional</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a one dimensional array of the same type of <IMG
Specified as: a rank one array of the same type of <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$">.
ALT="$x$">.
</DD>
<DT><STRONG>data</STRONG></DT>
<DD>index list selector.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Specified as: an integer. Values:<code>psb_comm_halo_</code>,<code>psb_comm_mov_</code>,
<code>psb_comm_ext_</code>, default: <code>psb_comm_halo_</code>. Chooses the
index list on which to base the data exchange.
<P>
</DD>
@ -246,12 +232,15 @@ Type: <B>required</B>
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: an array of rank one or two
Returned as: a rank one or two array
containing numbers of type specified in
Table&nbsp;<A HREF="#tab:f90ovrl">15</A>.
Table&nbsp;<A HREF="#tab:f90halo">14</A>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<DD>the local portion of result submatrix <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img21.png"
ALT="$y$">.
<BR>
Scope: <B>local</B>
<BR>
@ -259,80 +248,46 @@ Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
An integer value; 0 means no error has been detected.
An integer value that contains an error code.
</DD>
</DL>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>If there is no overlap in the data distribution associated with
the descriptor, no operations are performed;
</LI>
<LI>The operator <IMG
WIDTH="27" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
SRC="img63.png"
ALT="$ P^{T}$"> performs the reduction sum of overlap
elements; it is a ``prolongation'' operator <IMG
WIDTH="27" HEIGHT="20" ALIGN="BOTTOM" BORDER="0"
SRC="img65.png"
ALT="$P^T$"> that
replicates overlap elements, accounting for the physical replication
of data;
</LI>
<LI>The operator <IMG
WIDTH="22" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img62.png"
ALT="$ P_a$"> performs a scaling on the overlap elements by
the amount of replication; thus, when combined with the reduction
operator, it implements the average of replicated elements over all of
their instances.
</LI>
</OL>
<P>
<DIV ALIGN="CENTER"><A NAME="fig:try8x8_ov"></A><A NAME="3189"></A>
<DIV ALIGN="CENTER"><A NAME="fig:try8x8"></A><A NAME="3206"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 8:</STRONG>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 7:</STRONG>
Sample discretization mesh.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<IMG
WIDTH="533" HEIGHT="453" ALIGN="BOTTOM" BORDER="0"
SRC="img69.png"
ALT="\includegraphics[scale=0.65]{figures/try8x8_ov.eps}">
WIDTH="357" HEIGHT="313" ALIGN="BOTTOM" BORDER="0"
SRC="img59.png"
ALT="\includegraphics[scale=0.45]{figures/try8x8.eps}">
<!-- MATH
$\rotatebox{-90}{\includegraphics[scale=0.65]{figures/try8x8_ov}}$
$\rotatebox{-90}{\includegraphics[scale=0.45]{figures/try8x8}}$
-->
<IMG
WIDTH="76" HEIGHT="2" ALIGN="BOTTOM" BORDER="0"
SRC="img68.png"
ALT="\rotatebox{-90}{\includegraphics[scale=0.65]{figures/try8x8_ov}}">
WIDTH="1" HEIGHT="2" ALIGN="BOTTOM" BORDER="0"
SRC="img58.png"
ALT="\rotatebox{-90}{\includegraphics[scale=0.45]{figures/try8x8}}">
</DIV></TD></TR>
</TABLE>
</DIV>
<FONT SIZE="+1"><B>Example of use</B></FONT>
Consider the discretization mesh depicted in fig.&nbsp;<A HREF="#fig:try8x8_ov">8</A>,
partitioned among two processes as shown by the dashed lines, with an
overlap of 1 extra layer with respect to the partition of
fig.&nbsp;<A HREF="node61.html#fig:try8x8">7</A>; the data
distribution is such that each process will own 40 entries in the
index space, with an overlap of 16 entries placed at local indices 25
through 40; the halo will run from local index 41 through local index 48.. If process 0 assigns an initial value of 1 to its entries
<P>
<FONT SIZE="+1"><B>Usage Example</B></FONT>
Consider the discretization mesh depicted in fig.&nbsp;<A HREF="#fig:try8x8">7</A>,
partitioned among two processes as shown by the dashed line; the data
distribution is such that each process will own 32 entries in the
index space, with a halo made of 8 entries placed at local indices 33
through 40. If process 0 assigns an initial value of 1 to its entries
in the <IMG
WIDTH="14" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img20.png"
ALT="$x$"> vector, and process 1 assigns a value of 2, then after a
call to <code>psb_ovrl</code> with <code>psb_avg_</code> and a call to
<code>psb_halo_</code> the contents of the local vectors will be the
following (showing a transition among the two subdomains)
<P>
call to <code>psb_halo</code> the contents of the local vectors will be the
following:
<BR>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 ALIGN="CENTER">
@ -355,7 +310,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 1 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
2 </FONT></TD>
@ -363,7 +318,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 2 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
3 </FONT></TD>
@ -371,7 +326,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 3 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
4 </FONT></TD>
@ -379,7 +334,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 4 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
5 </FONT></TD>
@ -387,7 +342,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
6 </FONT></TD>
@ -395,7 +350,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 6 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
7 </FONT></TD>
@ -403,7 +358,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 7 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
8 </FONT></TD>
@ -411,7 +366,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 8 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
9 </FONT></TD>
@ -510,7 +465,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
21 </FONT></TD>
21 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 21 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 21 </FONT></TD>
@ -518,7 +473,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
22 </FONT></TD>
22 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 22 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 22 </FONT></TD>
@ -526,7 +481,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
23 </FONT></TD>
23 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 23 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 23 </FONT></TD>
@ -534,7 +489,7 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
24 </FONT></TD>
24 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 24 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 24 </FONT></TD>
@ -542,195 +497,131 @@ Process 1</FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
25 </FONT></TD>
25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 57 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
26 </FONT></TD>
26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 58 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
27 </FONT></TD>
27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 59 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
28 </FONT></TD>
28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 60 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
29 </FONT></TD>
29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 61 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
30 </FONT></TD>
30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 62 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
31 </FONT></TD>
31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 63 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
32 </FONT></TD>
32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 64 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
33 </FONT></TD>
33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 33 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 25 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
34 </FONT></TD>
34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 34 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 26 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
35 </FONT></TD>
35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 35 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 27 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
36 </FONT></TD>
36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 36 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 28 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
37 </FONT></TD>
37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 37 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 29 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
38 </FONT></TD>
38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 38 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 30 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
39 </FONT></TD>
39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 39 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 31 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
40 </FONT></TD>
40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 40 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 32 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.5 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
41 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 41 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 41 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 17 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
42 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 42 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 42 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 18 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
43 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 43 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 43 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 19 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
44 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 44 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 44 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 20 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
45 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 45 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 45 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 21 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
46 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 46 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 46 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 22 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
47 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 47 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 47 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 23 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
<TR><TD ALIGN="RIGHT"><FONT SIZE="-1">
48 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 48 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 2.0 </FONT></TD>
<TD ALIGN="LEFT">&nbsp;</TD><TD ALIGN="RIGHT"><FONT SIZE="-1"> 48 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 24 </FONT></TD>
<TD ALIGN="RIGHT"><FONT SIZE="-1"> 1.0 </FONT></TD>
</TR>
</TABLE></DIV>
@ -739,26 +630,26 @@ Process 1</FONT></TD>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html993"
<A NAME="tex2html996"
HREF="node63.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html989"
HREF="node60.html">
<A NAME="tex2html992"
HREF="node61.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html983"
<A NAME="tex2html986"
HREF="node61.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html991"
<A NAME="tex2html994"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html994"
HREF="node63.html">psb_gather Gather</A>
<B> Up:</B> <A NAME="tex2html990"
HREF="node60.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html984"
HREF="node61.html">psb_halo Halo</A>
&nbsp; <B> <A NAME="tex2html992"
<B> Next:</B> <A NAME="tex2html997"
HREF="node63.html">psb_ovrl Overlap</A>
<B> Up:</B> <A NAME="tex2html993"
HREF="node61.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html987"
HREF="node61.html">Communication routines</A>
&nbsp; <B> <A NAME="tex2html995"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

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

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_scatter -- Scatter Global Dense Matrix</TITLE>
<META NAME="description" CONTENT="psb_scatter -- Scatter Global Dense Matrix">
<TITLE>psb_gather -- Gather Global Dense Matrix</TITLE>
<META NAME="description" CONTENT="psb_gather -- Gather Global Dense Matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,59 +18,61 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node65.html">
<LINK REL="previous" HREF="node63.html">
<LINK REL="up" HREF="node60.html">
<LINK REL="up" HREF="node61.html">
<LINK REL="next" HREF="node65.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1015"
<A NAME="tex2html1020"
HREF="node65.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1011"
HREF="node60.html">
<A NAME="tex2html1016"
HREF="node61.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1007"
<A NAME="tex2html1010"
HREF="node63.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1013"
<A NAME="tex2html1018"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1016"
HREF="node65.html">Data management routines</A>
<B> Up:</B> <A NAME="tex2html1012"
HREF="node60.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html1008"
HREF="node63.html">psb_gather Gather</A>
&nbsp; <B> <A NAME="tex2html1014"
<B> Next:</B> <A NAME="tex2html1021"
HREF="node65.html">psb_scatter Scatter</A>
<B> Up:</B> <A NAME="tex2html1017"
HREF="node61.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html1011"
HREF="node63.html">psb_ovrl Overlap</A>
&nbsp; <B> <A NAME="tex2html1019"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00064000000000000000">
psb_scatter -- Scatter Global Dense Matrix</A>
<H2><A NAME="SECTION00063000000000000000">
psb_gather -- Gather Global Dense Matrix</A>
</H2>
<P>
These subroutines scatters the portions of global dense matrix owned
by a process to all the processes in the processes grid.
These subroutines collect the portions of global dense matrix
distributed over all process into one single array stored on one
process.
<P>
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
loc\_x_i \leftarrow scatter(glob\_x)
glob\_x \leftarrow collect(loc\_x_i)
\end{displaymath}
-->
<IMG
WIDTH="167" HEIGHT="28" BORDER="0"
SRC="img80.png"
ALT="\begin{displaymath}loc\_x_i \leftarrow scatter(glob\_x) \end{displaymath}">
WIDTH="162" HEIGHT="28" BORDER="0"
SRC="img70.png"
ALT="\begin{displaymath}glob\_x \leftarrow collect(loc\_x_i) \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
@ -80,7 +82,7 @@ where:
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img71.png"
ALT="$glob\_x$"></STRONG></DT>
<DD>is the global matrix <!-- MATH
<DD>is the global submatrix <!-- MATH
$glob\_x_{1:m,1:n}$
-->
<IMG
@ -99,18 +101,18 @@ process <IMG
ALT="$i$">.
</DD>
<DT><STRONG><IMG
WIDTH="54" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img81.png"
ALT="$scatter$"></STRONG></DT>
<DD>is the scatter function.
WIDTH="48" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img74.png"
ALT="$collect$"></STRONG></DT>
<DD>is the collect function.
</DD>
</DL>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="3192"></A>
<DIV ALIGN="CENTER"><A NAME="3212"></A>
<TABLE>
<CAPTION><STRONG>Table 17:</STRONG>
<CAPTION><STRONG>Table 16:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
@ -122,19 +124,19 @@ Data types</CAPTION>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Integer</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
<TD ALIGN="LEFT">psb_gather</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
<TD ALIGN="LEFT">psb_gather</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
<TD ALIGN="LEFT">psb_gather</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
<TD ALIGN="LEFT">psb_gather</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
<TD ALIGN="LEFT">psb_gather</TD>
</TR>
</TABLE>
</DIV>
@ -146,11 +148,11 @@ Data types</CAPTION>
<P>
<BR>
<IMG
WIDTH="480" HEIGHT="35" ALIGN="BOTTOM" BORDER="0"
SRC="img82.png"
WIDTH="471" HEIGHT="35" ALIGN="BOTTOM" BORDER="0"
SRC="img76.png"
ALT="\begin{lstlisting}
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)
\end{lstlisting}">
<BR>
@ -162,16 +164,21 @@ call psb_scatter(glob_x, loc_x, desc_a, info, root)
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>glob_x</STRONG></DT>
<DD>The array that must be scattered into local pieces.
<DT><STRONG>loc_x</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img71.png"
ALT="$glob\_x$">.
<BR>
Scope: <B>global</B>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array.
Specified as: a rank one or two array or an object of type vdata<TT>psb_T_vect_type</TT>
indicated in Table&nbsp;<A HREF="#tab:gather">16</A>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
@ -189,7 +196,7 @@ Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
WIDTH="75" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img77.png"
ALT="$root=-1$"> all
the processes have a copy of the global vector.
the processes will have a copy of the global vector.
<BR>
Scope: <B>global</B>
<BR>
@ -211,21 +218,16 @@ Specified as: an integer variable <!-- MATH
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>loc_x</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img71.png"
ALT="$glob\_x$">.
<DT><STRONG>glob_x</STRONG></DT>
<DD>The array where the local parts must be gathered.
<BR>
Scope: <B>local</B>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
Specified as: a rank one or two array containing numbers of the type
indicated in Table&nbsp;<A HREF="#tab:scatter">17</A>.
Specified as: a rank one or two array with the <code>ALLOCATABLE</code> attribute.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
@ -243,26 +245,26 @@ An integer value; 0 means no error has been detected.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1015"
<A NAME="tex2html1020"
HREF="node65.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1011"
HREF="node60.html">
<A NAME="tex2html1016"
HREF="node61.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1007"
<A NAME="tex2html1010"
HREF="node63.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1013"
<A NAME="tex2html1018"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1016"
HREF="node65.html">Data management routines</A>
<B> Up:</B> <A NAME="tex2html1012"
HREF="node60.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html1008"
HREF="node63.html">psb_gather Gather</A>
&nbsp; <B> <A NAME="tex2html1014"
<B> Next:</B> <A NAME="tex2html1021"
HREF="node65.html">psb_scatter Scatter</A>
<B> Up:</B> <A NAME="tex2html1017"
HREF="node61.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html1011"
HREF="node63.html">psb_ovrl Overlap</A>
&nbsp; <B> <A NAME="tex2html1019"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Data management routines</TITLE>
<META NAME="description" CONTENT="Data management routines">
<TITLE>psb_scatter -- Scatter Global Dense Matrix</TITLE>
<META NAME="description" CONTENT="psb_scatter -- Scatter Global Dense Matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -18,119 +18,253 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node93.html">
<LINK REL="previous" HREF="node60.html">
<LINK REL="up" HREF="userhtml.html">
<LINK REL="previous" HREF="node64.html">
<LINK REL="up" HREF="node61.html">
<LINK REL="next" HREF="node66.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1027"
<A NAME="tex2html1030"
HREF="node66.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1023"
HREF="userhtml.html">
<A NAME="tex2html1026"
HREF="node61.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1017"
<A NAME="tex2html1022"
HREF="node64.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1025"
<A NAME="tex2html1028"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1028"
HREF="node66.html">psb_cdall Allocates</A>
<B> Up:</B> <A NAME="tex2html1024"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html1018"
HREF="node64.html">psb_scatter Scatter</A>
&nbsp; <B> <A NAME="tex2html1026"
<B> Next:</B> <A NAME="tex2html1031"
HREF="node66.html">Data management routines</A>
<B> Up:</B> <A NAME="tex2html1027"
HREF="node61.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html1023"
HREF="node64.html">psb_gather Gather</A>
&nbsp; <B> <A NAME="tex2html1029"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00070000000000000000"></A>
<A NAME="sec:toolsrout"></A>
<H2><A NAME="SECTION00064000000000000000">
psb_scatter -- Scatter Global Dense Matrix</A>
</H2>
<P>
These subroutines scatters the portions of global dense matrix owned
by a process to all the processes in the processes grid.
<P>
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
loc\_x_i \leftarrow scatter(glob\_x)
\end{displaymath}
-->
<IMG
WIDTH="167" HEIGHT="28" BORDER="0"
SRC="img80.png"
ALT="\begin{displaymath}loc\_x_i \leftarrow scatter(glob\_x) \end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where:
<DL>
<DT><STRONG><IMG
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img71.png"
ALT="$glob\_x$"></STRONG></DT>
<DD>is the global matrix <!-- MATH
$glob\_x_{1:m,1:n}$
-->
<IMG
WIDTH="90" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img72.png"
ALT="$glob\_x_{1:m,1:n}$">
</DD>
<DT><STRONG><IMG
WIDTH="44" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img73.png"
ALT="$loc\_x_i$"></STRONG></DT>
<DD>is the local portion of global dense matrix on
process <IMG
WIDTH="9" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$i$">.
</DD>
<DT><STRONG><IMG
WIDTH="54" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img81.png"
ALT="$scatter$"></STRONG></DT>
<DD>is the scatter function.
</DD>
</DL>
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="3213"></A>
<TABLE>
<CAPTION><STRONG>Table 17:</STRONG>
Data types</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1" ALIGN="CENTER">
<TR><TD ALIGN="LEFT"><IMG
WIDTH="34" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img75.png"
ALT="$x_i, y$"></TD>
<TD ALIGN="LEFT"><B>Subroutine</B></TD>
</TR>
<TR><TD ALIGN="LEFT">Integer</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Real</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Real</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
</TR>
<TR><TD ALIGN="LEFT">Short Precision Complex</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
</TR>
<TR><TD ALIGN="LEFT">Long Precision Complex</TD>
<TD ALIGN="LEFT">psb_scatter</TD>
</TR>
</TABLE>
</DIV>
</TD></TR>
</TABLE>
</DIV><P></P>
<BR>
Data management routines
</H1>
<P>
<BR><HR>
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<BR>
<IMG
WIDTH="480" HEIGHT="35" ALIGN="BOTTOM" BORDER="0"
SRC="img82.png"
ALT="\begin{lstlisting}
call psb_scatter(glob_x, loc_x, desc_a, info, root)
call psb_scatter(glob_x, loc_x, desc_a, info, root)
\end{lstlisting}">
<BR>
<UL>
<LI><A NAME="tex2html1029"
HREF="node66.html">psb_cdall -- Allocates a communication descriptor</A>
<LI><A NAME="tex2html1030"
HREF="node67.html">psb_cdins -- Communication descriptor insert
routine</A>
<LI><A NAME="tex2html1031"
HREF="node68.html">psb_cdasb -- Communication descriptor assembly
routine</A>
<LI><A NAME="tex2html1032"
HREF="node69.html">psb_cdcpy -- Copies a communication descriptor</A>
<LI><A NAME="tex2html1033"
HREF="node70.html">psb_cdfree -- Frees a communication descriptor</A>
<LI><A NAME="tex2html1034"
HREF="node71.html">psb_cdbldext -- Build an extended communication
descriptor</A>
<LI><A NAME="tex2html1035"
HREF="node72.html">psb_spall -- Allocates a sparse matrix</A>
<LI><A NAME="tex2html1036"
HREF="node73.html">psb_spins -- Insert a cloud of elements into a sparse
matrix</A>
<LI><A NAME="tex2html1037"
HREF="node74.html">psb_spasb -- Sparse matrix assembly routine</A>
<LI><A NAME="tex2html1038"
HREF="node75.html">psb_spfree -- Frees a sparse matrix</A>
<LI><A NAME="tex2html1039"
HREF="node76.html">psb_sprn -- Reinit sparse matrix structure for psblas
routines.</A>
<LI><A NAME="tex2html1040"
HREF="node77.html">psb_geall -- Allocates a dense matrix</A>
<LI><A NAME="tex2html1041"
HREF="node78.html">psb_geins -- Dense matrix insertion routine</A>
<LI><A NAME="tex2html1042"
HREF="node79.html">psb_geasb -- Assembly a dense matrix</A>
<LI><A NAME="tex2html1043"
HREF="node80.html">psb_gefree -- Frees a dense matrix</A>
<LI><A NAME="tex2html1044"
HREF="node81.html">psb_gelp -- Applies a left permutation to a dense
matrix</A>
<LI><A NAME="tex2html1045"
HREF="node82.html">psb_glob_to_loc -- Global to local indices
convertion</A>
<LI><A NAME="tex2html1046"
HREF="node83.html">psb_loc_to_glob -- Local to global indices
conversion</A>
<LI><A NAME="tex2html1047"
HREF="node84.html">psb_is_owned -- </A>
<LI><A NAME="tex2html1048"
HREF="node85.html">psb_owned_index -- </A>
<LI><A NAME="tex2html1049"
HREF="node86.html">psb_is_local -- </A>
<LI><A NAME="tex2html1050"
HREF="node87.html">psb_local_index -- </A>
<LI><A NAME="tex2html1051"
HREF="node88.html">psb_get_boundary -- Extract list of boundary
elements</A>
<LI><A NAME="tex2html1052"
HREF="node89.html">psb_get_overlap -- Extract list of overlap
elements</A>
<LI><A NAME="tex2html1053"
HREF="node90.html">psb_sp_getrow -- Extract row(s) from a sparse
matrix</A>
<LI><A NAME="tex2html1054"
HREF="node91.html">psb_sizeof -- Memory occupation</A>
<LI><A NAME="tex2html1055"
HREF="node92.html">Sorting utilities -- </A>
</UL>
<!--End of Table of Child-Links-->
<BR><HR>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>glob_x</STRONG></DT>
<DD>The array that must be scattered into local pieces.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a rank one or two array.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>contains data structures for communications.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>root</STRONG></DT>
<DD>The process that holds the global copy. If <IMG
WIDTH="75" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img77.png"
ALT="$root=-1$"> all
the processes have a copy of the global vector.
<BR>
Scope: <B>global</B>
<BR>
Type: <B>optional</B>
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer variable <!-- MATH
$-1\le root\le np-1$
-->
<IMG
WIDTH="140" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img78.png"
ALT="$-1\le root\le np-1$">, default <IMG
WIDTH="25" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img79.png"
ALT="$-1$">.
</DD>
<DT><STRONG><B>On Return</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>loc_x</STRONG></DT>
<DD>the local portion of global dense matrix
<IMG
WIDTH="47" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img71.png"
ALT="$glob\_x$">.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
Specified as: a rank one or two array containing numbers of the type
indicated in Table&nbsp;<A HREF="#tab:scatter">17</A>.
</DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
Scope: <B>local</B>
<BR>
Type: <B>required</B>
<BR>
Intent: <B>out</B>.
<BR>
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1030"
HREF="node66.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1026"
HREF="node61.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1022"
HREF="node64.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1028"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1031"
HREF="node66.html">Data management routines</A>
<B> Up:</B> <A NAME="tex2html1027"
HREF="node61.html">Communication routines</A>
<B> Previous:</B> <A NAME="tex2html1023"
HREF="node64.html">psb_gather Gather</A>
&nbsp; <B> <A NAME="tex2html1029"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

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

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

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_cdasb -- Communication descriptor assembly routine</TITLE>
<META NAME="description" CONTENT="psb_cdasb -- Communication descriptor assembly routine">
<TITLE>psb_cdins -- Communication descriptor insert routine</TITLE>
<META NAME="description" CONTENT="psb_cdins -- Communication descriptor insert routine">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,65 +20,141 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node69.html">
<LINK REL="previous" HREF="node67.html">
<LINK REL="up" HREF="node65.html">
<LINK REL="up" HREF="node66.html">
<LINK REL="next" HREF="node69.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1090"
<A NAME="tex2html1093"
HREF="node69.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1086"
HREF="node65.html">
<A NAME="tex2html1089"
HREF="node66.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1080"
<A NAME="tex2html1083"
HREF="node67.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1088"
<A NAME="tex2html1091"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1091"
HREF="node69.html">psb_cdcpy Copies</A>
<B> Up:</B> <A NAME="tex2html1087"
HREF="node65.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1081"
HREF="node67.html">psb_cdins Communication</A>
&nbsp; <B> <A NAME="tex2html1089"
<B> Next:</B> <A NAME="tex2html1094"
HREF="node69.html">psb_cdasb Communication</A>
<B> Up:</B> <A NAME="tex2html1090"
HREF="node66.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1084"
HREF="node67.html">psb_cdall Allocates</A>
&nbsp; <B> <A NAME="tex2html1092"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00073000000000000000">
psb_cdasb -- Communication descriptor assembly
<H2><A NAME="SECTION00072000000000000000">
psb_cdins -- Communication descriptor insert
routine</A>
</H2>
<P>
<PRE>
call psb_cdasb(desc_a, info)
call psb_cdins(nz, ia, ja, desc_a, info [,ila,jla])
call psb_cdins(nz,ja,desc,info[,jla,mask,lidx])
</PRE>
<P>
This subroutine examines the edges of the graph associated with the
discretization mesh (and isomorphic to the sparsity pattern of a
linear system coefficient matrix), storing them as necessary into the
communication descriptor. In the first form the edges are specified as
pairs of indices <IMG
WIDTH="77" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img99.png"
ALT="$ia(i),ja(i)$">; the starting index <IMG
WIDTH="35" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img100.png"
ALT="$ia(i)$"> should
belong to the current process.
In the second form only the remote indices <IMG
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img101.png"
ALT="$ja(i)$"> are specified.
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<DT><STRONG>nz</STRONG></DT>
<DD>the number of points being inserted.
<BR>
Scope:<B>local</B>.
Scope: <B>local</B>.
<BR>
Type:<B>required</B>.
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
Specified as: an integer value.
</DD>
<DT><STRONG>ia</STRONG></DT>
<DD>the indices of the starting vertex of the edges being inserted.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array of length <IMG
WIDTH="21" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png"
ALT="$nz$">.
</DD>
<DT><STRONG>ja</STRONG></DT>
<DD>the indices of the end vertex of the edges being inserted.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array of length <IMG
WIDTH="21" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png"
ALT="$nz$">.
</DD>
<DT><STRONG>mask</STRONG></DT>
<DD>Mask entries in <code>ja</code>, they are inserted only when the
corresponding <code>mask</code> entries are <code>.true.</code>
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a logical array of length <IMG
WIDTH="21" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png"
ALT="$nz$">, default <code>.true.</code>.
</DD>
<DT><STRONG>lidx</STRONG></DT>
<DD>User defined local indices for <code>ja</code>.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array of length <IMG
WIDTH="21" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png"
ALT="$nz$">.
</DD>
</DL>
@ -88,7 +164,7 @@ Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
<DD>
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<DD>the updated communication descriptor.
<BR>
Scope:<B>local</B>.
<BR>
@ -109,17 +185,77 @@ Intent: <B>out</B>.
<BR>
An integer value; 0 means no error has been detected.
</DD>
<DT><STRONG>ila</STRONG></DT>
<DD>the local indices of the starting vertex of the edges being inserted.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>out</B>.
<BR>
Specified as: an integer array of length <IMG
WIDTH="21" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png"
ALT="$nz$">.
</DD>
<DT><STRONG>jla</STRONG></DT>
<DD>the local indices of the end vertex of the edges being inserted.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>optional</B>.
<BR>
Intent: <B>out</B>.
<BR>
Specified as: an integer array of length <IMG
WIDTH="21" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png"
ALT="$nz$">.
<P>
</DD>
</DL>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>On exit from this routine the descriptor is in the assembled
state.
<LI>This routine may only be called if the descriptor is in the
build state;
</LI>
<LI>This routine automatically ignores edges that do not
insist on the current process, i.e. edges for which neither the starting
nor the end vertex belong to the current process.
</LI>
<LI>The second form of this routine will be useful when dealing with
user-specified index mappings; see also&nbsp;<A HREF="node7.html#sec:usermaps">2.3.1</A>.
</LI>
</OL>
<P>
<BR><HR>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1093"
HREF="node69.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1089"
HREF="node66.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1083"
HREF="node67.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1091"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1094"
HREF="node69.html">psb_cdasb Communication</A>
<B> Up:</B> <A NAME="tex2html1090"
HREF="node66.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1084"
HREF="node67.html">psb_cdall Allocates</A>
&nbsp; <B> <A NAME="tex2html1092"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>

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

@ -25,26 +25,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html260"
<A NAME="tex2html261"
HREF="node8.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html256"
<A NAME="tex2html257"
HREF="node6.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html252"
<A NAME="tex2html253"
HREF="node6.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html258"
<A NAME="tex2html259"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html261"
<B> Next:</B> <A NAME="tex2html262"
HREF="node8.html">Programming model</A>
<B> Up:</B> <A NAME="tex2html257"
<B> Up:</B> <A NAME="tex2html258"
HREF="node6.html">Application structure</A>
<B> Previous:</B> <A NAME="tex2html253"
<B> Previous:</B> <A NAME="tex2html254"
HREF="node6.html">Application structure</A>
&nbsp; <B> <A NAME="tex2html259"
&nbsp; <B> <A NAME="tex2html260"
HREF="node1.html">Contents</A></B>
<BR>
<BR>

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

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

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

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_spins -- Insert a cloud of elements into a sparse matrix</TITLE>
<META NAME="description" CONTENT="psb_spins -- Insert a cloud of elements into a sparse matrix">
<TITLE>psb_spall -- Allocates a sparse matrix</TITLE>
<META NAME="description" CONTENT="psb_spall -- Allocates a sparse matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,82 +20,56 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node74.html">
<LINK REL="previous" HREF="node72.html">
<LINK REL="up" HREF="node65.html">
<LINK REL="up" HREF="node66.html">
<LINK REL="next" HREF="node74.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1150"
<A NAME="tex2html1153"
HREF="node74.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1146"
HREF="node65.html">
<A NAME="tex2html1149"
HREF="node66.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1140"
<A NAME="tex2html1143"
HREF="node72.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1148"
<A NAME="tex2html1151"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1151"
HREF="node74.html">psb_spasb Sparse</A>
<B> Up:</B> <A NAME="tex2html1147"
HREF="node65.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1141"
HREF="node72.html">psb_spall Allocates</A>
&nbsp; <B> <A NAME="tex2html1149"
<B> Next:</B> <A NAME="tex2html1154"
HREF="node74.html">psb_spins Insert</A>
<B> Up:</B> <A NAME="tex2html1150"
HREF="node66.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1144"
HREF="node72.html">psb_cdbldext Build</A>
&nbsp; <B> <A NAME="tex2html1152"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00078000000000000000">
psb_spins -- Insert a cloud of elements into a sparse
matrix</A>
<H2><A NAME="SECTION00077000000000000000">
psb_spall -- Allocates a sparse matrix</A>
</H2>
<P>
<PRE>
call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
call psb_spall(a, desc_a, info, nnz)
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Asynchronous.
<DD>Synchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>nz</STRONG></DT>
<DD>the number of elements to be inserted.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer scalar.
</DD>
<DT><STRONG>ia</STRONG></DT>
<DD>the row indices of the elements to be inserted.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array of size <IMG
WIDTH="21" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png"
ALT="$nz$">.
</DD>
<DT><STRONG>ja</STRONG></DT>
<DD>the column indices of the elements to be inserted.
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<BR>
Scope:<B>local</B>.
<BR>
@ -103,51 +77,19 @@ Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an integer array of size <IMG
WIDTH="21" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png"
ALT="$nz$">.
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
</DD>
<DT><STRONG>val</STRONG></DT>
<DD>the elements to be inserted.
<DT><STRONG>nnz</STRONG></DT>
<DD>An estimate of the number of nonzeroes in the local
part of the assembled matrix.
<BR>
Scope:<B>local</B>.
Scope: <B>global</B>.
<BR>
Type:<B>required</B>.
Type: <B>optional</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an array of size <IMG
WIDTH="21" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png"
ALT="$nz$">. Must be of the same type and kind
of the coefficients of the sparse matrix <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img105.png"
ALT="$a$">.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>The communication descriptor.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a variable of type descdata<TT>psb_desc_type</TT>.
<BR></DD>
<DT><STRONG>local</STRONG></DT>
<DD>Whether the entries in the indices vectors <code>ia</code>,
<code>ja</code> are already in local numbering.
<BR>
Scope:<B>local</B>.
<BR>
Type:<B>optional</B>.
<BR>
Specified as: a logical value; default: <code>.false.</code>.
<P>
Specified as: an integer value.
</DD>
</DL>
@ -157,27 +99,16 @@ Specified as: a logical value; default: <code>.false.</code>.
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the matrix into which elements will be inserted.
<DD>the matrix to be allocated.
<BR>
Scope:<B>local</B>
<BR>
Type:<B>required</B>
<BR>
Intent: <B>inout</B>.
Intent: <B>out</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>The communication descriptor.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a variable of type descdata<TT>psb_desc_type</TT>.
<BR></DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
@ -190,84 +121,47 @@ Intent: <B>out</B>.
An integer value; 0 means no error has been detected.
</DD>
</DL>
<P>
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>On entry to this routine the descriptor may be in either the
build or assembled state.
</LI>
<LI>On entry to this routine the sparse matrix may be in either the
build or update state.
</LI>
<LI>If the descriptor is in the build state, then the sparse matrix
must also be in the build state; the action of the routine is to
(implicitly) call <code>psb_cdins</code> to add entries to the sparsity
pattern; each sparse matrix entry implicitly defines a graph edge,
that is passed to the descriptor routine for the appropriate
processing;
</LI>
<LI>The coefficients to be inserted are represented by the ordered
triples <!-- MATH
$ia(i),ja(i),val(i)$
-->
<IMG
WIDTH="123" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img106.png"
ALT="$ia(i),ja(i),val(i)$">, for <IMG
WIDTH="92" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
SRC="img107.png"
ALT="$i=1,\dots,nz$">; these triples
should belong to the current process, i.e. <IMG
WIDTH="35" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img100.png"
ALT="$ia(i)$"> should be one of
the local indices, but are otherwise arbitrary;
</LI>
<LI>There is no
requirement that a given row must be passed in its entirety to a
single call to this routine: the buildup of a row may be split into
as many calls as desired;
</LI>
<LI>Coefficients from different rows may also be mixed up freely
in a single call, according to the application needs;
</LI>
<LI>Any coefficients from matrix rows not owned by the calling
process are silently ignored;
<LI>On exit from this routine the sparse matrix is in the build
state.
</LI>
<LI>If the descriptor is in the assembled state, then any entries in
the sparse matrix that would generate additional communication
requirements are ignored;
<LI>The descriptor may be in either the build or assembled state.
</LI>
<LI>If the matrix is in the update state, any entries in positions
that were not present in the original matrix are ignored.
<LI>Providing a good estimate for the number of nonzeroes <IMG
WIDTH="31" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img104.png"
ALT="$nnz$"> in
the assembled matrix may substantially improve performance in the
matrix build phase, as it will reduce or eliminate the need for
(potentially multiple) data reallocations.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1150"
<A NAME="tex2html1153"
HREF="node74.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1146"
HREF="node65.html">
<A NAME="tex2html1149"
HREF="node66.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1140"
<A NAME="tex2html1143"
HREF="node72.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1148"
<A NAME="tex2html1151"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1151"
HREF="node74.html">psb_spasb Sparse</A>
<B> Up:</B> <A NAME="tex2html1147"
HREF="node65.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1141"
HREF="node72.html">psb_spall Allocates</A>
&nbsp; <B> <A NAME="tex2html1149"
<B> Next:</B> <A NAME="tex2html1154"
HREF="node74.html">psb_spins Insert</A>
<B> Up:</B> <A NAME="tex2html1150"
HREF="node66.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1144"
HREF="node72.html">psb_cdbldext Build</A>
&nbsp; <B> <A NAME="tex2html1152"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>psb_spasb -- Sparse matrix assembly routine</TITLE>
<META NAME="description" CONTENT="psb_spasb -- Sparse matrix assembly routine">
<TITLE>psb_spins -- Insert a cloud of elements into a sparse matrix</TITLE>
<META NAME="description" CONTENT="psb_spins -- Insert a cloud of elements into a sparse matrix">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@ -20,56 +20,57 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="next" HREF="node75.html">
<LINK REL="previous" HREF="node73.html">
<LINK REL="up" HREF="node65.html">
<LINK REL="up" HREF="node66.html">
<LINK REL="next" HREF="node75.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1162"
<A NAME="tex2html1165"
HREF="node75.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1158"
HREF="node65.html">
<A NAME="tex2html1161"
HREF="node66.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1152"
<A NAME="tex2html1155"
HREF="node73.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1160"
<A NAME="tex2html1163"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1163"
HREF="node75.html">psb_spfree Frees</A>
<B> Up:</B> <A NAME="tex2html1159"
HREF="node65.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1153"
HREF="node73.html">psb_spins Insert</A>
&nbsp; <B> <A NAME="tex2html1161"
<B> Next:</B> <A NAME="tex2html1166"
HREF="node75.html">psb_spasb Sparse</A>
<B> Up:</B> <A NAME="tex2html1162"
HREF="node66.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1156"
HREF="node73.html">psb_spall Allocates</A>
&nbsp; <B> <A NAME="tex2html1164"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00079000000000000000">
psb_spasb -- Sparse matrix assembly routine</A>
<H2><A NAME="SECTION00078000000000000000">
psb_spins -- Insert a cloud of elements into a sparse
matrix</A>
</H2>
<P>
<PRE>
call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
</PRE>
<P>
<DL>
<DT><STRONG>Type:</STRONG></DT>
<DD>Synchronous.
<DD>Asynchronous.
</DD>
<DT><STRONG><B>On Entry</B></STRONG></DT>
<DD>
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>the communication descriptor.
<DT><STRONG>nz</STRONG></DT>
<DD>the number of elements to be inserted.
<BR>
Scope:<B>local</B>.
<BR>
@ -77,52 +78,76 @@ Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: a structured data of type descdata<TT>psb_desc_type</TT>.
Specified as: an integer scalar.
</DD>
<DT><STRONG>afmt</STRONG></DT>
<DD>the storage format for the sparse matrix.
<DT><STRONG>ia</STRONG></DT>
<DD>the row indices of the elements to be inserted.
<BR>
Scope: <B>local</B>.
Scope:<B>local</B>.
<BR>
Type: <B>optional</B>.
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: an array of characters. Defalt: 'CSR'.
Specified as: an integer array of size <IMG
WIDTH="21" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png"
ALT="$nz$">.
</DD>
<DT><STRONG>upd</STRONG></DT>
<DD>Provide for updates to the matrix coefficients.
<DT><STRONG>ja</STRONG></DT>
<DD>the column indices of the elements to be inserted.
<BR>
Scope: <B>global</B>.
Scope:<B>local</B>.
<BR>
Type: <B>optional</B>.
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: integer, possible values: <code>psb_upd_srch_</code>, <code>psb_upd_perm_</code>
Specified as: an integer array of size <IMG
WIDTH="21" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png"
ALT="$nz$">.
</DD>
<DT><STRONG>dupl</STRONG></DT>
<DD>How to handle duplicate coefficients.
<DT><STRONG>val</STRONG></DT>
<DD>the elements to be inserted.
<BR>
Scope: <B>global</B>.
Scope:<B>local</B>.
<BR>
Type: <B>optional</B>.
Type:<B>required</B>.
<BR>
Intent: <B>in</B>.
<BR>
Specified as: integer, possible values: <code>psb_dupl_ovwrt_</code>,
<code>psb_dupl_add_</code>, <code>psb_dupl_err_</code>.
Specified as: an array of size <IMG
WIDTH="21" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png"
ALT="$nz$">. Must be of the same type and kind
of the coefficients of the sparse matrix <IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img105.png"
ALT="$a$">.
</DD>
<DT><STRONG>mold</STRONG></DT>
<DD>The desired dynamic type for the internal matrix storage.
<DT><STRONG>desc_a</STRONG></DT>
<DD>The communication descriptor.
<BR>
Scope: <B>local</B>.
Scope: <B>local</B>.
<BR>
Type: <B>optional</B>.
Type: <B>required</B>.
<BR>
Intent: <B>in</B>.
Intent: <B>inout</B>.
<BR>
Specified as: a variable of type descdata<TT>psb_desc_type</TT>.
<BR></DD>
<DT><STRONG>local</STRONG></DT>
<DD>Whether the entries in the indices vectors <code>ia</code>,
<code>ja</code> are already in local numbering.
<BR>
Scope:<B>local</B>.
<BR>
Specified as: an object of a class derived from spbasedata<TT>psb_T_base_sparse_mat</TT>.
Type:<B>optional</B>.
<BR>
Specified as: a logical value; default: <code>.false.</code>.
<P>
</DD>
</DL>
@ -132,7 +157,7 @@ Specified as: an object of a class derived from spbasedata<TT>psb_T_base_sparse_
<DD>
</DD>
<DT><STRONG>a</STRONG></DT>
<DD>the matrix to be assembled.
<DD>the matrix into which elements will be inserted.
<BR>
Scope:<B>local</B>
<BR>
@ -142,6 +167,17 @@ Intent: <B>inout</B>.
<BR>
Specified as: a structured data of type spdata<TT>psb_Tspmat_type</TT>.
</DD>
<DT><STRONG>desc_a</STRONG></DT>
<DD>The communication descriptor.
<BR>
Scope: <B>local</B>.
<BR>
Type: <B>required</B>.
<BR>
Intent: <B>inout</B>.
<BR>
Specified as: a variable of type descdata<TT>psb_desc_type</TT>.
<BR></DD>
<DT><STRONG>info</STRONG></DT>
<DD>Error code.
<BR>
@ -159,51 +195,79 @@ An integer value; 0 means no error has been detected.
<FONT SIZE="+1"><B>Notes</B></FONT>
<OL>
<LI>On entry to this routine the descriptor must be in the
assembled state, i.e. <code>psb_cdasb</code> must already have been called.
<LI>On entry to this routine the descriptor may be in either the
build or assembled state.
</LI>
<LI>On entry to this routine the sparse matrix may be in either the
build or update state.
</LI>
<LI>If the descriptor is in the build state, then the sparse matrix
must also be in the build state; the action of the routine is to
(implicitly) call <code>psb_cdins</code> to add entries to the sparsity
pattern; each sparse matrix entry implicitly defines a graph edge,
that is passed to the descriptor routine for the appropriate
processing;
</LI>
<LI>The coefficients to be inserted are represented by the ordered
triples <!-- MATH
$ia(i),ja(i),val(i)$
-->
<IMG
WIDTH="123" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img106.png"
ALT="$ia(i),ja(i),val(i)$">, for <IMG
WIDTH="92" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
SRC="img107.png"
ALT="$i=1,\dots,nz$">; these triples
should belong to the current process, i.e. <IMG
WIDTH="35" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img100.png"
ALT="$ia(i)$"> should be one of
the local indices, but are otherwise arbitrary;
</LI>
<LI>The sparse matrix may be in either the build or update state;
<LI>There is no
requirement that a given row must be passed in its entirety to a
single call to this routine: the buildup of a row may be split into
as many calls as desired;
</LI>
<LI>Duplicate entries are detected and handled in both build and
update state, with the exception of the error action that is only
taken in the build state, i.e. on the first assembly;
<LI>Coefficients from different rows may also be mixed up freely
in a single call, according to the application needs;
</LI>
<LI>If the update choice is <code>psb_upd_perm_</code>, then subsequent
calls to <code>psb_spins</code> to update the matrix must be arranged in
such a way as to produce exactly the same sequence of coefficient
values as encountered at the first assembly;
<LI>Any coefficients from matrix rows not owned by the calling
process are silently ignored;
</LI>
<LI>The output storage format need not be the same on all
processes;
<LI>If the descriptor is in the assembled state, then any entries in
the sparse matrix that would generate additional communication
requirements are ignored;
</LI>
<LI>On exit from this routine the matrix is in the assembled state,
and thus is suitable for the computational routines.
<LI>If the matrix is in the update state, any entries in positions
that were not present in the original matrix are ignored.
</LI>
</OL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1162"
<A NAME="tex2html1165"
HREF="node75.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1158"
HREF="node65.html">
<A NAME="tex2html1161"
HREF="node66.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1152"
<A NAME="tex2html1155"
HREF="node73.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1160"
<A NAME="tex2html1163"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1163"
HREF="node75.html">psb_spfree Frees</A>
<B> Up:</B> <A NAME="tex2html1159"
HREF="node65.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1153"
HREF="node73.html">psb_spins Insert</A>
&nbsp; <B> <A NAME="tex2html1161"
<B> Next:</B> <A NAME="tex2html1166"
HREF="node75.html">psb_spasb Sparse</A>
<B> Up:</B> <A NAME="tex2html1162"
HREF="node66.html">Data management routines</A>
<B> Previous:</B> <A NAME="tex2html1156"
HREF="node73.html">psb_spall Allocates</A>
&nbsp; <B> <A NAME="tex2html1164"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->

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

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

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

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

Loading…
Cancel
Save