Switch to htlatex step 2.

psblas-3.6-maint
Salvatore Filippone 5 years ago
parent 9429b4e51b
commit fa4c86c990

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 B

@ -0,0 +1,255 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 89--><p class="noindent" ><span
class="cmbx-12x-x-144">PSBLAS</span><br
class="newline" /> <span
class="cmbx-12x-x-144">User&#8217;s and Reference Guide</span><br
class="newline" /> <span
class="cmti-12">A reference guide for the Parallel Sparse BLAS library</span><br
class="newline" /> <span
class="cmbx-10">Salvatore Filippone</span><br
class="newline" /><span
class="cmbx-10">Alfredo Buttari </span><br
class="newline" />Software version: 3.6.1<br
class="newline" />May 31st, 2019
<div class="tableofcontents">
<span class="likesectionToc" ><a
href="userhtmlli1.html#x2-1000" id="QQ2-2-1">Contents</a></span>
<br /> <span class="sectionToc" >1 <a
href="userhtmlse1.html#x3-20001" id="QQ2-3-2">Introduction</a></span>
<br /> <span class="sectionToc" >2 <a
href="userhtmlse2.html#x4-30002" id="QQ2-4-3">General overview</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.1 <a
href="userhtmlsu1.html#x6-40002.1" id="QQ2-6-5">Basic Nomenclature</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.2 <a
href="userhtmlsu2.html#x8-50002.2" id="QQ2-8-7">Library contents</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.3 <a
href="userhtmlsu3.html#x9-60002.3" id="QQ2-9-8">Application structure</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.4 <a
href="userhtmlsu4.html#x11-80002.4" id="QQ2-11-10">Programming model</a></span>
<br /> <span class="sectionToc" >3 <a
href="userhtmlse3.html#x12-90003" id="QQ2-12-11">Data Structures and Classes</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.1 <a
href="userhtmlsu5.html#x13-100003.1" id="QQ2-13-12">Descriptor data structure</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.2 <a
href="userhtmlsu6.html#x14-230003.2" id="QQ2-14-26">Sparse Matrix class</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.3 <a
href="userhtmlsu7.html#x15-430003.3" id="QQ2-15-47">Dense Vector Data Structure</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.4 <a
href="userhtmlsu8.html#x16-500003.4" id="QQ2-16-55">Preconditioner data structure</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.5 <a
href="userhtmlsu9.html#x17-510003.5" id="QQ2-17-57">Heap data structure</a></span>
<br /> <span class="sectionToc" >4 <a
href="userhtmlse4.html#x18-520004" id="QQ2-18-58">Computational routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.1 <a
href="userhtmlsu10.html#x19-530004.1" id="QQ2-19-59">psb_geaxpby &#8212; General Dense Matrix Sum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.2 <a
href="userhtmlsu11.html#x20-540004.2" id="QQ2-20-61">psb_gedot &#8212; Dot Product</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.3 <a
href="userhtmlsu12.html#x21-550004.3" id="QQ2-21-63">psb_gedots &#8212; Generalized Dot Product</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.4 <a
href="userhtmlsu13.html#x22-560004.4" id="QQ2-22-65">psb_normi &#8212; Infinity-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.5 <a
href="userhtmlsu14.html#x23-570004.5" id="QQ2-23-67">psb_geamaxs &#8212; Generalized Infinity Norm</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.6 <a
href="userhtmlsu15.html#x24-580004.6" id="QQ2-24-69">psb_norm1 &#8212; 1-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.7 <a
href="userhtmlsu16.html#x25-590004.7" id="QQ2-25-71">psb_geasums &#8212; Generalized 1-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.8 <a
href="userhtmlsu17.html#x26-600004.8" id="QQ2-26-73">psb_norm2 &#8212; 2-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.9 <a
href="userhtmlsu18.html#x27-610004.9" id="QQ2-27-75">psb_genrm2s &#8212; Generalized 2-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.10 <a
href="userhtmlsu19.html#x28-620004.10" id="QQ2-28-77">psb_norm1 &#8212; 1-Norm of Sparse Matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.11 <a
href="userhtmlsu20.html#x29-630004.11" id="QQ2-29-79">psb_normi &#8212; Infinity Norm of Sparse Matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.12 <a
href="userhtmlsu21.html#x30-640004.12" id="QQ2-30-81">psb_spmm &#8212; Sparse Matrix by Dense Matrix Product</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.13 <a
href="userhtmlsu22.html#x31-650004.13" id="QQ2-31-83">psb_spsm &#8212; Triangular System Solve</a></span>
<br /> <span class="sectionToc" >5 <a
href="userhtmlse5.html#x32-660005" id="QQ2-32-85">Communication routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.1 <a
href="userhtmlsu23.html#x33-670005.1" id="QQ2-33-86">psb_halo &#8212; Halo Data Communication</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.2 <a
href="userhtmlsu24.html#x34-680005.2" id="QQ2-34-89">psb_ovrl &#8212; Overlap Update</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.3 <a
href="userhtmlsu25.html#x35-690005.3" id="QQ2-35-92">psb_gather &#8212; Gather Global Dense Matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.4 <a
href="userhtmlsu26.html#x36-700005.4" id="QQ2-36-94">psb_scatter &#8212; Scatter Global Dense Matrix</a></span>
<br /> <span class="sectionToc" >6 <a
href="userhtmlse6.html#x37-710006" id="QQ2-37-96">Data management routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.1 <a
href="userhtmlsu27.html#x38-720006.1" id="QQ2-38-97">psb_cdall &#8212; Allocates a communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.2 <a
href="userhtmlsu28.html#x39-730006.2" id="QQ2-39-98">psb_cdins &#8212; Communication descriptor insert routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.3 <a
href="userhtmlsu29.html#x40-740006.3" id="QQ2-40-99">psb_cdasb &#8212; Communication descriptor assembly routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.4 <a
href="userhtmlsu30.html#x41-750006.4" id="QQ2-41-100">psb_cdcpy &#8212; Copies a communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.5 <a
href="userhtmlsu31.html#x42-760006.5" id="QQ2-42-101">psb_cdfree &#8212; Frees a communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.6 <a
href="userhtmlsu32.html#x43-770006.6" id="QQ2-43-102">psb_cdbldext &#8212; Build an extended communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.7 <a
href="userhtmlsu33.html#x44-780006.7" id="QQ2-44-103">psb_spall &#8212; Allocates a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.8 <a
href="userhtmlsu34.html#x45-790006.8" id="QQ2-45-104">psb_spins &#8212; Insert a set of coefficients into a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.9 <a
href="userhtmlsu35.html#x46-800006.9" id="QQ2-46-105">psb_spasb &#8212; Sparse matrix assembly routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.10 <a
href="userhtmlsu36.html#x47-810006.10" id="QQ2-47-106">psb_spfree &#8212; Frees a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.11 <a
href="userhtmlsu37.html#x48-820006.11" id="QQ2-48-107">psb_sprn &#8212; Reinit sparse matrix structure for psblas routines.</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.12 <a
href="userhtmlsu38.html#x49-830006.12" id="QQ2-49-108">psb_geall &#8212; Allocates a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.13 <a
href="userhtmlsu39.html#x50-840006.13" id="QQ2-50-109">psb_geins &#8212; Dense matrix insertion routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.14 <a
href="userhtmlsu40.html#x51-850006.14" id="QQ2-51-110">psb_geasb &#8212; Assembly a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.15 <a
href="userhtmlsu41.html#x52-860006.15" id="QQ2-52-111">psb_gefree &#8212; Frees a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.16 <a
href="userhtmlsu42.html#x53-870006.16" id="QQ2-53-112">psb_gelp &#8212; Applies a left permutation to a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.17 <a
href="userhtmlsu43.html#x54-880006.17" id="QQ2-54-113">psb_glob_to_loc &#8212; Global to local indices convertion</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.18 <a
href="userhtmlsu44.html#x55-890006.18" id="QQ2-55-114">psb_loc_to_glob &#8212; Local to global indices conversion</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.19 <a
href="userhtmlsu45.html#x56-900006.19" id="QQ2-56-115">psb_is_owned &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.20 <a
href="userhtmlsu46.html#x57-910006.20" id="QQ2-57-116">psb_owned_index &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.21 <a
href="userhtmlsu47.html#x58-920006.21" id="QQ2-58-117">psb_is_local &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.22 <a
href="userhtmlsu48.html#x59-930006.22" id="QQ2-59-118">psb_local_index &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.23 <a
href="userhtmlsu49.html#x60-940006.23" id="QQ2-60-119">psb_get_boundary &#8212; Extract list of boundary elements</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.24 <a
href="userhtmlsu50.html#x61-950006.24" id="QQ2-61-120">psb_get_overlap &#8212; Extract list of overlap elements</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.25 <a
href="userhtmlsu51.html#x62-960006.25" id="QQ2-62-121">psb_sp_getrow &#8212; Extract row(s) from a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.26 <a
href="userhtmlsu52.html#x63-970006.26" id="QQ2-63-122">psb_sizeof &#8212; Memory occupation</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.27 <a
href="userhtmlsu53.html#x64-980006.27" id="QQ2-64-123">Sorting utilities &#8212; </a></span>
<br /> <span class="sectionToc" >7 <a
href="userhtmlse7.html#x65-990007" id="QQ2-65-124">Parallel environment routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.1 <a
href="userhtmlsu54.html#x66-1000007.1" id="QQ2-66-125">psb_init &#8212; Initializes PSBLAS parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.2 <a
href="userhtmlsu55.html#x67-1010007.2" id="QQ2-67-126">psb_info &#8212; Return information about PSBLAS parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.3 <a
href="userhtmlsu56.html#x68-1020007.3" id="QQ2-68-127">psb_exit &#8212; Exit from PSBLAS parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.4 <a
href="userhtmlsu57.html#x69-1030007.4" id="QQ2-69-128">psb_get_mpicomm &#8212; Get the MPI communicator</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.5 <a
href="userhtmlsu58.html#x70-1040007.5" id="QQ2-70-129">psb_get_rank &#8212; Get the MPI rank</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.6 <a
href="userhtmlsu59.html#x71-1050007.6" id="QQ2-71-130">psb_wtime &#8212; Wall clock timing</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.7 <a
href="userhtmlsu60.html#x72-1060007.7" id="QQ2-72-131">psb_barrier &#8212; Sinchronization point parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.8 <a
href="userhtmlsu61.html#x73-1070007.8" id="QQ2-73-132">psb_abort &#8212; Abort a computation</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.9 <a
href="userhtmlsu62.html#x74-1080007.9" id="QQ2-74-133">psb_bcast &#8212; Broadcast data</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.10 <a
href="userhtmlsu63.html#x75-1090007.10" id="QQ2-75-134">psb_sum &#8212; Global sum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.11 <a
href="userhtmlsu64.html#x76-1100007.11" id="QQ2-76-135">psb_max &#8212; Global maximum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.12 <a
href="userhtmlsu65.html#x77-1110007.12" id="QQ2-77-136">psb_min &#8212; Global minimum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.13 <a
href="userhtmlsu66.html#x78-1120007.13" id="QQ2-78-137">psb_amx &#8212; Global maximum absolute value</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.14 <a
href="userhtmlsu67.html#x79-1130007.14" id="QQ2-79-138">psb_amn &#8212; Global minimum absolute value</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.15 <a
href="userhtmlsu68.html#x80-1140007.15" id="QQ2-80-139">psb_nrm2 &#8212; Global 2-norm reduction</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.16 <a
href="userhtmlsu69.html#x81-1150007.16" id="QQ2-81-140">psb_snd &#8212; Send data</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.17 <a
href="userhtmlsu70.html#x82-1160007.17" id="QQ2-82-141">psb_rcv &#8212; Receive data</a></span>
<br /> <span class="sectionToc" >8 <a
href="userhtmlse8.html#x83-1170008" id="QQ2-83-142">Error handling</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.1 <a
href="userhtmlsu71.html#x84-1180008.1" id="QQ2-84-145">psb_errpush &#8212; Pushes an error code onto the error stack</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.2 <a
href="userhtmlsu72.html#x85-1190008.2" id="QQ2-85-146">psb_error &#8212; Prints the error stack content and aborts execution</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.3 <a
href="userhtmlsu73.html#x86-1200008.3" id="QQ2-86-147">psb_set_errverbosity &#8212; Sets the verbosity of error messages</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.4 <a
href="userhtmlsu74.html#x87-1210008.4" id="QQ2-87-148">psb_set_erraction &#8212; Set the type of action to be taken upon error condition</a></span>
<br /> <span class="sectionToc" >9 <a
href="userhtmlse9.html#x88-1220009" id="QQ2-88-149">Utilities</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.1 <a
href="userhtmlsu75.html#x89-1230009.1" id="QQ2-89-150"> hb_read &#8212; Read a sparse matrix from a file in the Harwell&#8211;Boeing format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.2 <a
href="userhtmlsu76.html#x90-1240009.2" id="QQ2-90-151">hb_write &#8212; Write a sparse matrix to a file in the Harwell&#8211;Boeing format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.3 <a
href="userhtmlsu77.html#x91-1250009.3" id="QQ2-91-152">mm_mat_read &#8212; Read a sparse matrix from a file in the MatrixMarket format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.4 <a
href="userhtmlsu78.html#x92-1260009.4" id="QQ2-92-153">mm_array_read &#8212; Read a dense array from a file in the MatrixMarket format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.5 <a
href="userhtmlsu79.html#x93-1270009.5" id="QQ2-93-154">mm_mat_write &#8212; Write a sparse matrix to a file in the MatrixMarket format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.6 <a
href="userhtmlsu80.html#x94-1280009.6" id="QQ2-94-155">mm_array_write &#8212; Write a dense array from a file in the MatrixMarket format</a></span>
<br /> <span class="sectionToc" >10 <a
href="userhtmlse10.html#x95-12900010" id="QQ2-95-156">Preconditioner routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.1 <a
href="userhtmlsu81.html#x96-13000010.1" id="QQ2-96-157">init &#8212; Initialize a preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.2 <a
href="userhtmlsu82.html#x98-13100010.2" id="QQ2-98-158">build &#8212; Builds a preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.3 <a
href="userhtmlsu83.html#x99-13200010.3" id="QQ2-99-159">apply &#8212; Preconditioner application routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.4 <a
href="userhtmlsu84.html#x100-13300010.4" id="QQ2-100-160">descr &#8212; Prints a description of current preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.5 <a
href="userhtmlsu85.html#x101-13400010.5" id="QQ2-101-161">clone &#8212; clone current preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.6 <a
href="userhtmlsu86.html#x102-13500010.6" id="QQ2-102-162">free &#8212; Free a preconditioner</a></span>
<br /> <span class="sectionToc" >11 <a
href="userhtmlse11.html#x103-13600011" id="QQ2-103-163">Iterative Methods</a></span>
<br /> &#x00A0;<span class="subsectionToc" >11.1 <a
href="userhtmlsu87.html#x104-13700011.1" id="QQ2-104-164">psb_krylov &#8212; Krylov Methods Driver Routine</a></span>
<br /> <span class="likesectionToc" ><a
href="userhtmlli2.html#x106-13800011.1" id="QQ2-106-165">References</a></span>
</div>
</body></html>

@ -0,0 +1,157 @@
/* start css.sty */
.cmr-7{font-size:70%;}
.cmmi-5{font-size:50%;font-style: italic;}
.cmmi-7{font-size:70%;font-style: italic;}
.cmmi-10{font-style: italic;}
.cmsy-7{font-size:70%;}
.cmbx-12x-x-144{font-size:172%; font-weight: bold;}
.cmbx-12x-x-144{ font-weight: bold;}
.cmbx-12x-x-144{ font-weight: bold;}
.cmbx-12x-x-144{ font-weight: bold;}
.cmti-10{ font-style: italic;}
.cmti-12{font-size:120%; font-style: italic;}
.cmbx-10{ font-weight: bold;}
.cmbx-10{ font-weight: bold;}
.cmbx-10{ font-weight: bold;}
.cmbx-10{ font-weight: bold;}
.cmtt-10{font-family: monospace;}
.cmtt-10{font-family: monospace;}
.cmtt-10{font-family: monospace;}
.cmr-9{font-size:90%;}
.cmr-8{font-size:80%;}
.cmbx-12{font-size:120%; font-weight: bold;}
.cmbx-12{ font-weight: bold;}
.cmbx-12{ font-weight: bold;}
.cmbx-12{ font-weight: bold;}
.cmtt-8{font-size:80%;font-family: monospace;}
.cmtt-8{font-family: monospace;}
.cmtt-8{font-family: monospace;}
.cmtt-9{font-size:90%;font-family: monospace;}
.cmtt-9{font-family: monospace;}
.cmtt-9{font-family: monospace;}
.cmmi-8{font-size:80%;font-style: italic;}
.cmbx-9{font-size:90%; font-weight: bold;}
.cmbx-9{ font-weight: bold;}
.cmbx-9{ font-weight: bold;}
.cmbx-9{ font-weight: bold;}
p.noindent { text-indent: 0em }
td p.noindent { text-indent: 0em; margin-top:0em; }
p.nopar { text-indent: 0em; }
p.indent{ text-indent: 1.5em }
@media print {div.crosslinks {visibility:hidden;}}
a img { border-top: 0; border-left: 0; border-right: 0; }
center { margin-top:1em; margin-bottom:1em; }
td center { margin-top:0em; margin-bottom:0em; }
.Canvas { position:relative; }
img.math{vertical-align:middle;}
li p.indent { text-indent: 0em }
li p:first-child{ margin-top:0em; }
li p:last-child, li div:last-child { margin-bottom:0.5em; }
li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
.enumerate1 {list-style-type:decimal;}
.enumerate2 {list-style-type:lower-alpha;}
.enumerate3 {list-style-type:lower-roman;}
.enumerate4 {list-style-type:upper-alpha;}
div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
.obeylines-h,.obeylines-v {white-space: nowrap; }
div.obeylines-v p { margin-top:0; margin-bottom:0; }
.overline{ text-decoration:overline; }
.overline img{ border-top: 1px solid black; }
td.displaylines {text-align:center; white-space:nowrap;}
.centerline {text-align:center;}
.rightline {text-align:right;}
div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
div.fbox {display:table}
div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
div.minipage{width:100%;}
div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
div.center div {text-align: left;}
div.flushright, div.flushright div.flushright {text-align: right;}
div.flushright div {text-align: left;}
div.flushleft {text-align: left;}
.underline{ text-decoration:underline; }
.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
.framebox-c {text-align:center;}
.framebox-l {text-align:left;}
.framebox-r {text-align:right;}
span.thank-mark{ vertical-align: super }
span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
table.tabular td p{margin-top:0em;}
table.tabular {margin-left: auto; margin-right: auto;}
td p:first-child{ margin-top:0em; }
td p:last-child{ margin-bottom:0em; }
div.td00{ margin-left:0pt; margin-right:0pt; }
div.td01{ margin-left:0pt; margin-right:5pt; }
div.td10{ margin-left:5pt; margin-right:0pt; }
div.td11{ margin-left:5pt; margin-right:5pt; }
table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
td.td00{ padding-left:0pt; padding-right:0pt; }
td.td01{ padding-left:0pt; padding-right:5pt; }
td.td10{ padding-left:5pt; padding-right:0pt; }
td.td11{ padding-left:5pt; padding-right:5pt; }
table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
.hline hr, .cline hr{ height : 1px; margin:0px; }
.tabbing-right {text-align:right;}
span.TEX {letter-spacing: -0.125em; }
span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
a span.TEX span.E {text-decoration: none; }
span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
span.LATEX span.TEX{ position:relative; left: -0.4em; }
div.float, div.figure {margin-left: auto; margin-right: auto;}
div.float img {text-align:center;}
div.figure img {text-align:center;}
.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
.marginpar p{margin-top:0.4em; margin-bottom:0.4em;}
table.equation {width:100%;}
.equation td{text-align:center; }
td.equation { margin-top:1em; margin-bottom:1em; }
td.equation-label { width:5%; text-align:center; }
td.eqnarray4 { width:5%; white-space: normal; }
td.eqnarray2 { width:5%; }
table.eqnarray-star, table.eqnarray {width:100%;}
div.eqnarray{text-align:center;}
div.array {text-align:center;}
div.pmatrix {text-align:center;}
table.pmatrix {width:100%;}
span.pmatrix img{vertical-align:middle;}
div.pmatrix {text-align:center;}
table.pmatrix {width:100%;}
span.bar-css {text-decoration:overline;}
img.cdots{vertical-align:middle;}
.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
.index-item, .index-subitem, .index-subsubitem {display:block}
div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
div.caption span.id{font-weight: bold; white-space: nowrap; }
h1.partHead{text-align: center}
p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
.verse{white-space:nowrap; margin-left:2em}
div.maketitle {text-align:center;}
h2.titleHead{text-align:center;}
div.maketitle{ margin-bottom: 2em; }
div.author, div.date {text-align:center;}
div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
div.author{white-space: nowrap;}
.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
.abstract p {margin-left:5%; margin-right:5%;}
div.abstract {width:100%;}
.subsectionToc, .likesubsectionToc {margin-left:2em;}
.subsubsectionToc, .likesubsubsectionToc {margin-left:4em;}
.ovalbox { padding-left:3pt; padding-right:3pt; border:solid thin; }
.Ovalbox-thick { padding-left:3pt; padding-right:3pt; border:solid thick; }
.shadowbox { padding-left:3pt; padding-right:3pt; border:solid thin; border-right:solid thick; border-bottom:solid thick; }
.doublebox { padding-left:3pt; padding-right:3pt; border-style:double; border:solid thick; }
.figure img.graphics {margin-left:10%;}
.lstlisting .label{margin-right:0.5em; }
div.lstlisting{font-family: monospace; white-space: nowrap; margin-top:0.5em; margin-bottom:0.5em; }
div.lstinputlisting{ font-family: monospace; white-space: nowrap; }
.lstinputlisting .label{margin-right:0.5em;}
/* end css.sty */

@ -0,0 +1,255 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 89--><p class="noindent" ><span
class="cmbx-12x-x-144">PSBLAS</span><br
class="newline" /> <span
class="cmbx-12x-x-144">User&#8217;s and Reference Guide</span><br
class="newline" /> <span
class="cmti-12">A reference guide for the Parallel Sparse BLAS library</span><br
class="newline" /> <span
class="cmbx-10">Salvatore Filippone</span><br
class="newline" /><span
class="cmbx-10">Alfredo Buttari </span><br
class="newline" />Software version: 3.6.1<br
class="newline" />May 31st, 2019
<div class="tableofcontents">
<span class="likesectionToc" ><a
href="userhtmlli1.html#x2-1000" id="QQ2-2-1">Contents</a></span>
<br /> <span class="sectionToc" >1 <a
href="userhtmlse1.html#x3-20001" id="QQ2-3-2">Introduction</a></span>
<br /> <span class="sectionToc" >2 <a
href="userhtmlse2.html#x4-30002" id="QQ2-4-3">General overview</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.1 <a
href="userhtmlsu1.html#x6-40002.1" id="QQ2-6-5">Basic Nomenclature</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.2 <a
href="userhtmlsu2.html#x8-50002.2" id="QQ2-8-7">Library contents</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.3 <a
href="userhtmlsu3.html#x9-60002.3" id="QQ2-9-8">Application structure</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.4 <a
href="userhtmlsu4.html#x11-80002.4" id="QQ2-11-10">Programming model</a></span>
<br /> <span class="sectionToc" >3 <a
href="userhtmlse3.html#x12-90003" id="QQ2-12-11">Data Structures and Classes</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.1 <a
href="userhtmlsu5.html#x13-100003.1" id="QQ2-13-12">Descriptor data structure</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.2 <a
href="userhtmlsu6.html#x14-230003.2" id="QQ2-14-26">Sparse Matrix class</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.3 <a
href="userhtmlsu7.html#x15-430003.3" id="QQ2-15-47">Dense Vector Data Structure</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.4 <a
href="userhtmlsu8.html#x16-500003.4" id="QQ2-16-55">Preconditioner data structure</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.5 <a
href="userhtmlsu9.html#x17-510003.5" id="QQ2-17-57">Heap data structure</a></span>
<br /> <span class="sectionToc" >4 <a
href="userhtmlse4.html#x18-520004" id="QQ2-18-58">Computational routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.1 <a
href="userhtmlsu10.html#x19-530004.1" id="QQ2-19-59">psb_geaxpby &#8212; General Dense Matrix Sum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.2 <a
href="userhtmlsu11.html#x20-540004.2" id="QQ2-20-61">psb_gedot &#8212; Dot Product</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.3 <a
href="userhtmlsu12.html#x21-550004.3" id="QQ2-21-63">psb_gedots &#8212; Generalized Dot Product</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.4 <a
href="userhtmlsu13.html#x22-560004.4" id="QQ2-22-65">psb_normi &#8212; Infinity-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.5 <a
href="userhtmlsu14.html#x23-570004.5" id="QQ2-23-67">psb_geamaxs &#8212; Generalized Infinity Norm</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.6 <a
href="userhtmlsu15.html#x24-580004.6" id="QQ2-24-69">psb_norm1 &#8212; 1-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.7 <a
href="userhtmlsu16.html#x25-590004.7" id="QQ2-25-71">psb_geasums &#8212; Generalized 1-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.8 <a
href="userhtmlsu17.html#x26-600004.8" id="QQ2-26-73">psb_norm2 &#8212; 2-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.9 <a
href="userhtmlsu18.html#x27-610004.9" id="QQ2-27-75">psb_genrm2s &#8212; Generalized 2-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.10 <a
href="userhtmlsu19.html#x28-620004.10" id="QQ2-28-77">psb_norm1 &#8212; 1-Norm of Sparse Matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.11 <a
href="userhtmlsu20.html#x29-630004.11" id="QQ2-29-79">psb_normi &#8212; Infinity Norm of Sparse Matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.12 <a
href="userhtmlsu21.html#x30-640004.12" id="QQ2-30-81">psb_spmm &#8212; Sparse Matrix by Dense Matrix Product</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.13 <a
href="userhtmlsu22.html#x31-650004.13" id="QQ2-31-83">psb_spsm &#8212; Triangular System Solve</a></span>
<br /> <span class="sectionToc" >5 <a
href="userhtmlse5.html#x32-660005" id="QQ2-32-85">Communication routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.1 <a
href="userhtmlsu23.html#x33-670005.1" id="QQ2-33-86">psb_halo &#8212; Halo Data Communication</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.2 <a
href="userhtmlsu24.html#x34-680005.2" id="QQ2-34-89">psb_ovrl &#8212; Overlap Update</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.3 <a
href="userhtmlsu25.html#x35-690005.3" id="QQ2-35-92">psb_gather &#8212; Gather Global Dense Matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.4 <a
href="userhtmlsu26.html#x36-700005.4" id="QQ2-36-94">psb_scatter &#8212; Scatter Global Dense Matrix</a></span>
<br /> <span class="sectionToc" >6 <a
href="userhtmlse6.html#x37-710006" id="QQ2-37-96">Data management routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.1 <a
href="userhtmlsu27.html#x38-720006.1" id="QQ2-38-97">psb_cdall &#8212; Allocates a communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.2 <a
href="userhtmlsu28.html#x39-730006.2" id="QQ2-39-98">psb_cdins &#8212; Communication descriptor insert routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.3 <a
href="userhtmlsu29.html#x40-740006.3" id="QQ2-40-99">psb_cdasb &#8212; Communication descriptor assembly routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.4 <a
href="userhtmlsu30.html#x41-750006.4" id="QQ2-41-100">psb_cdcpy &#8212; Copies a communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.5 <a
href="userhtmlsu31.html#x42-760006.5" id="QQ2-42-101">psb_cdfree &#8212; Frees a communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.6 <a
href="userhtmlsu32.html#x43-770006.6" id="QQ2-43-102">psb_cdbldext &#8212; Build an extended communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.7 <a
href="userhtmlsu33.html#x44-780006.7" id="QQ2-44-103">psb_spall &#8212; Allocates a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.8 <a
href="userhtmlsu34.html#x45-790006.8" id="QQ2-45-104">psb_spins &#8212; Insert a set of coefficients into a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.9 <a
href="userhtmlsu35.html#x46-800006.9" id="QQ2-46-105">psb_spasb &#8212; Sparse matrix assembly routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.10 <a
href="userhtmlsu36.html#x47-810006.10" id="QQ2-47-106">psb_spfree &#8212; Frees a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.11 <a
href="userhtmlsu37.html#x48-820006.11" id="QQ2-48-107">psb_sprn &#8212; Reinit sparse matrix structure for psblas routines.</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.12 <a
href="userhtmlsu38.html#x49-830006.12" id="QQ2-49-108">psb_geall &#8212; Allocates a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.13 <a
href="userhtmlsu39.html#x50-840006.13" id="QQ2-50-109">psb_geins &#8212; Dense matrix insertion routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.14 <a
href="userhtmlsu40.html#x51-850006.14" id="QQ2-51-110">psb_geasb &#8212; Assembly a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.15 <a
href="userhtmlsu41.html#x52-860006.15" id="QQ2-52-111">psb_gefree &#8212; Frees a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.16 <a
href="userhtmlsu42.html#x53-870006.16" id="QQ2-53-112">psb_gelp &#8212; Applies a left permutation to a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.17 <a
href="userhtmlsu43.html#x54-880006.17" id="QQ2-54-113">psb_glob_to_loc &#8212; Global to local indices convertion</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.18 <a
href="userhtmlsu44.html#x55-890006.18" id="QQ2-55-114">psb_loc_to_glob &#8212; Local to global indices conversion</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.19 <a
href="userhtmlsu45.html#x56-900006.19" id="QQ2-56-115">psb_is_owned &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.20 <a
href="userhtmlsu46.html#x57-910006.20" id="QQ2-57-116">psb_owned_index &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.21 <a
href="userhtmlsu47.html#x58-920006.21" id="QQ2-58-117">psb_is_local &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.22 <a
href="userhtmlsu48.html#x59-930006.22" id="QQ2-59-118">psb_local_index &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.23 <a
href="userhtmlsu49.html#x60-940006.23" id="QQ2-60-119">psb_get_boundary &#8212; Extract list of boundary elements</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.24 <a
href="userhtmlsu50.html#x61-950006.24" id="QQ2-61-120">psb_get_overlap &#8212; Extract list of overlap elements</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.25 <a
href="userhtmlsu51.html#x62-960006.25" id="QQ2-62-121">psb_sp_getrow &#8212; Extract row(s) from a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.26 <a
href="userhtmlsu52.html#x63-970006.26" id="QQ2-63-122">psb_sizeof &#8212; Memory occupation</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.27 <a
href="userhtmlsu53.html#x64-980006.27" id="QQ2-64-123">Sorting utilities &#8212; </a></span>
<br /> <span class="sectionToc" >7 <a
href="userhtmlse7.html#x65-990007" id="QQ2-65-124">Parallel environment routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.1 <a
href="userhtmlsu54.html#x66-1000007.1" id="QQ2-66-125">psb_init &#8212; Initializes PSBLAS parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.2 <a
href="userhtmlsu55.html#x67-1010007.2" id="QQ2-67-126">psb_info &#8212; Return information about PSBLAS parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.3 <a
href="userhtmlsu56.html#x68-1020007.3" id="QQ2-68-127">psb_exit &#8212; Exit from PSBLAS parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.4 <a
href="userhtmlsu57.html#x69-1030007.4" id="QQ2-69-128">psb_get_mpicomm &#8212; Get the MPI communicator</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.5 <a
href="userhtmlsu58.html#x70-1040007.5" id="QQ2-70-129">psb_get_rank &#8212; Get the MPI rank</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.6 <a
href="userhtmlsu59.html#x71-1050007.6" id="QQ2-71-130">psb_wtime &#8212; Wall clock timing</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.7 <a
href="userhtmlsu60.html#x72-1060007.7" id="QQ2-72-131">psb_barrier &#8212; Sinchronization point parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.8 <a
href="userhtmlsu61.html#x73-1070007.8" id="QQ2-73-132">psb_abort &#8212; Abort a computation</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.9 <a
href="userhtmlsu62.html#x74-1080007.9" id="QQ2-74-133">psb_bcast &#8212; Broadcast data</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.10 <a
href="userhtmlsu63.html#x75-1090007.10" id="QQ2-75-134">psb_sum &#8212; Global sum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.11 <a
href="userhtmlsu64.html#x76-1100007.11" id="QQ2-76-135">psb_max &#8212; Global maximum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.12 <a
href="userhtmlsu65.html#x77-1110007.12" id="QQ2-77-136">psb_min &#8212; Global minimum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.13 <a
href="userhtmlsu66.html#x78-1120007.13" id="QQ2-78-137">psb_amx &#8212; Global maximum absolute value</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.14 <a
href="userhtmlsu67.html#x79-1130007.14" id="QQ2-79-138">psb_amn &#8212; Global minimum absolute value</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.15 <a
href="userhtmlsu68.html#x80-1140007.15" id="QQ2-80-139">psb_nrm2 &#8212; Global 2-norm reduction</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.16 <a
href="userhtmlsu69.html#x81-1150007.16" id="QQ2-81-140">psb_snd &#8212; Send data</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.17 <a
href="userhtmlsu70.html#x82-1160007.17" id="QQ2-82-141">psb_rcv &#8212; Receive data</a></span>
<br /> <span class="sectionToc" >8 <a
href="userhtmlse8.html#x83-1170008" id="QQ2-83-142">Error handling</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.1 <a
href="userhtmlsu71.html#x84-1180008.1" id="QQ2-84-145">psb_errpush &#8212; Pushes an error code onto the error stack</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.2 <a
href="userhtmlsu72.html#x85-1190008.2" id="QQ2-85-146">psb_error &#8212; Prints the error stack content and aborts execution</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.3 <a
href="userhtmlsu73.html#x86-1200008.3" id="QQ2-86-147">psb_set_errverbosity &#8212; Sets the verbosity of error messages</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.4 <a
href="userhtmlsu74.html#x87-1210008.4" id="QQ2-87-148">psb_set_erraction &#8212; Set the type of action to be taken upon error condition</a></span>
<br /> <span class="sectionToc" >9 <a
href="userhtmlse9.html#x88-1220009" id="QQ2-88-149">Utilities</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.1 <a
href="userhtmlsu75.html#x89-1230009.1" id="QQ2-89-150"> hb_read &#8212; Read a sparse matrix from a file in the Harwell&#8211;Boeing format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.2 <a
href="userhtmlsu76.html#x90-1240009.2" id="QQ2-90-151">hb_write &#8212; Write a sparse matrix to a file in the Harwell&#8211;Boeing format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.3 <a
href="userhtmlsu77.html#x91-1250009.3" id="QQ2-91-152">mm_mat_read &#8212; Read a sparse matrix from a file in the MatrixMarket format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.4 <a
href="userhtmlsu78.html#x92-1260009.4" id="QQ2-92-153">mm_array_read &#8212; Read a dense array from a file in the MatrixMarket format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.5 <a
href="userhtmlsu79.html#x93-1270009.5" id="QQ2-93-154">mm_mat_write &#8212; Write a sparse matrix to a file in the MatrixMarket format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.6 <a
href="userhtmlsu80.html#x94-1280009.6" id="QQ2-94-155">mm_array_write &#8212; Write a dense array from a file in the MatrixMarket format</a></span>
<br /> <span class="sectionToc" >10 <a
href="userhtmlse10.html#x95-12900010" id="QQ2-95-156">Preconditioner routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.1 <a
href="userhtmlsu81.html#x96-13000010.1" id="QQ2-96-157">init &#8212; Initialize a preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.2 <a
href="userhtmlsu82.html#x98-13100010.2" id="QQ2-98-158">build &#8212; Builds a preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.3 <a
href="userhtmlsu83.html#x99-13200010.3" id="QQ2-99-159">apply &#8212; Preconditioner application routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.4 <a
href="userhtmlsu84.html#x100-13300010.4" id="QQ2-100-160">descr &#8212; Prints a description of current preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.5 <a
href="userhtmlsu85.html#x101-13400010.5" id="QQ2-101-161">clone &#8212; clone current preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.6 <a
href="userhtmlsu86.html#x102-13500010.6" id="QQ2-102-162">free &#8212; Free a preconditioner</a></span>
<br /> <span class="sectionToc" >11 <a
href="userhtmlse11.html#x103-13600011" id="QQ2-103-163">Iterative Methods</a></span>
<br /> &#x00A0;<span class="subsectionToc" >11.1 <a
href="userhtmlsu87.html#x104-13700011.1" id="QQ2-104-164">psb_krylov &#8212; Krylov Methods Driver Routine</a></span>
<br /> <span class="likesectionToc" ><a
href="userhtmlli2.html#x106-13800011.1" id="QQ2-106-165">References</a></span>
</div>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -0,0 +1,25 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<div class="footnote-text">
<!--l. 362--><p class="noindent" ><span class="footnote-mark"><a
id="fn3x0"> <sup class="textsuperscript">3</sup></a></span><span
class="cmr-8">The subroutine style </span><span
class="cmtt-8">psb</span><span
class="cmtt-8">_precinit </span><span
class="cmr-8">and </span><span
class="cmtt-8">psb</span><span
class="cmtt-8">_precbl </span><span
class="cmr-8">are still supported for backward</span>
<span
class="cmr-8">compatibility</span></div>
</body></html>

@ -0,0 +1,19 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<div class="footnote-text">
<!--l. 53--><p class="noindent" ><span class="footnote-mark"><a
id="fn5x0"> <sup class="textsuperscript">5</sup></a></span><span
class="cmr-8">Note: the implementation is for </span><span
class="cmmi-8">FCG</span><span
class="cmr-8">(1).</span></div>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 765 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<div class="footnote-text">
<!--l. 151--><p class="indent" > <span class="footnote-mark"><a
id="fn1x0"> <sup class="textsuperscript">1</sup></a></span><span
class="cmr-8">In our prototype implementation we provide sample scatter/gather routines.</span></div>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -0,0 +1,23 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<div class="footnote-text">
<!--l. 195--><p class="noindent" ><span class="footnote-mark"><a
id="fn2x0"> <sup class="textsuperscript">2</sup></a></span><span
class="cmr-8">This is the normal situation when the pattern of the sparse matrix is symmetric, which is</span>
<span
class="cmr-8">equivalent to say that the interaction between two variables is reciprocal. If the matrix pattern is</span>
<span
class="cmr-8">non-symmetric we may have one-way interactions, and these could cause a situation in which a</span>
<span
class="cmr-8">boundary point is not a halo point for its neighbour.</span></div>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

@ -0,0 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<div class="footnote-text">
<!--l. 73--><p class="indent" > <span class="footnote-mark"><a
id="fn4x0"> <sup class="textsuperscript">4</sup></a></span><span
class="cmr-8">The string is case-insensitive</span></div>
</body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -0,0 +1,318 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Contents</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 104--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse1.html" >next</a>] [<a
href="#tailuserhtmlli1.html">tail</a>] [<a
href="userhtml.html#userhtmlli1.html" >up</a>] </p></div>
<h3 class="likesectionHead"><a
id="x2-1000"></a>Contents</h3>
<div class="tableofcontents">
<span class="sectionToc" >1 <a
href="userhtmlse1.html#x3-20001">Introduction</a></span>
<br /> <span class="sectionToc" >2 <a
href="userhtmlse2.html#x4-30002">General overview</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.1 <a
href="userhtmlsu1.html#x6-40002.1">Basic Nomenclature</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.2 <a
href="userhtmlsu2.html#x8-50002.2">Library contents</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.3 <a
href="userhtmlsu3.html#x9-60002.3">Application structure</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >2.3.1 <a
href="userhtmlsu3.html#x9-70002.3.1" id="QQ2-9-9">User-defined index mappings</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.4 <a
href="userhtmlsu4.html#x11-80002.4">Programming model</a></span>
<br /> <span class="sectionToc" >3 <a
href="userhtmlse3.html#x12-90003">Data Structures and Classes</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.1 <a
href="userhtmlsu5.html#x13-100003.1">Descriptor data structure</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.1 <a
href="userhtmlsu5.html#x13-110003.1.1" id="QQ2-13-14">Descriptor Methods</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.2 <a
href="userhtmlsu5.html#x13-120003.1.2" id="QQ2-13-15">get_local_rows &#8212; Get number of local rows</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.3 <a
href="userhtmlsu5.html#x13-130003.1.3" id="QQ2-13-16">get_local_cols &#8212; Get number of local cols</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.4 <a
href="userhtmlsu5.html#x13-140003.1.4" id="QQ2-13-17">get_global_rows &#8212; Get number of global rows</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.5 <a
href="userhtmlsu5.html#x13-150003.1.5" id="QQ2-13-18">get_global_cols &#8212; Get number of global cols</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.6 <a
href="userhtmlsu5.html#x13-160003.1.6" id="QQ2-13-19">get_global_indices &#8212; Get vector of global indices</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.7 <a
href="userhtmlsu5.html#x13-170003.1.7" id="QQ2-13-20">get_context &#8212; Get communication context</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.8 <a
href="userhtmlsu5.html#x13-180003.1.8" id="QQ2-13-21">Clone &#8212; clone current object</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.9 <a
href="userhtmlsu5.html#x13-190003.1.9" id="QQ2-13-22">CNV &#8212; convert internal storage format</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.10 <a
href="userhtmlsu5.html#x13-200003.1.10" id="QQ2-13-23">psb_cd_get_large_threshold &#8212; Get threshold for index mapping switch</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.11 <a
href="userhtmlsu5.html#x13-210003.1.11" id="QQ2-13-24">psb_cd_set_large_threshold &#8212; Set threshold for index mapping switch</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.12 <a
href="userhtmlsu5.html#x13-220003.1.12" id="QQ2-13-25">Named Constants</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.2 <a
href="userhtmlsu6.html#x14-230003.2">Sparse Matrix class</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.1 <a
href="userhtmlsu6.html#x14-240003.2.1" id="QQ2-14-28">Sparse Matrix Methods</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.2 <a
href="userhtmlsu6.html#x14-250003.2.2" id="QQ2-14-29">get_nrows &#8212; Get number of rows in a sparse matrix</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.3 <a
href="userhtmlsu6.html#x14-260003.2.3" id="QQ2-14-30">get_ncols &#8212; Get number of columns in a sparse matrix</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.4 <a
href="userhtmlsu6.html#x14-270003.2.4" id="QQ2-14-31">get_nnzeros &#8212; Get number of nonzero elements in a sparse matrix</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.5 <a
href="userhtmlsu6.html#x14-280003.2.5" id="QQ2-14-32">get_size &#8212; Get maximum number of nonzero elements in a sparse matrix</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.6 <a
href="userhtmlsu6.html#x14-290003.2.6" id="QQ2-14-33">sizeof &#8212; Get memory occupation in bytes of a sparse matrix</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.7 <a
href="userhtmlsu6.html#x14-300003.2.7" id="QQ2-14-34">get_fmt &#8212; Short description of the dynamic type</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.8 <a
href="userhtmlsu6.html#x14-310003.2.8" id="QQ2-14-35">is_bld, is_upd, is_asb &#8212; Status check</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.9 <a
href="userhtmlsu6.html#x14-320003.2.9" id="QQ2-14-36">is_lower, is_upper, is_triangle, is_unit &#8212; Format check</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.10 <a
href="userhtmlsu6.html#x14-330003.2.10" id="QQ2-14-37">cscnv &#8212; Convert to a different storage format</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.11 <a
href="userhtmlsu6.html#x14-340003.2.11" id="QQ2-14-38">csclip &#8212; Reduce to a submatrix</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.12 <a
href="userhtmlsu6.html#x14-350003.2.12" id="QQ2-14-39">clean_zeros &#8212; Eliminate zero coefficients</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.13 <a
href="userhtmlsu6.html#x14-360003.2.13" id="QQ2-14-40">get_diag &#8212; Get main diagonal</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.14 <a
href="userhtmlsu6.html#x14-370003.2.14" id="QQ2-14-41">clip_diag &#8212; Cut out main diagonal</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.15 <a
href="userhtmlsu6.html#x14-380003.2.15" id="QQ2-14-42">tril &#8212; Return the lower triangle</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.16 <a
href="userhtmlsu6.html#x14-390003.2.16" id="QQ2-14-43">triu &#8212; Return the upper triangle</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.17 <a
href="userhtmlsu6.html#x14-400003.2.17" id="QQ2-14-44">psb_set_mat_default &#8212; Set default storage format</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.18 <a
href="userhtmlsu6.html#x14-410003.2.18" id="QQ2-14-45">clone &#8212; Clone current object</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.19 <a
href="userhtmlsu6.html#x14-420003.2.19" id="QQ2-14-46">Named Constants</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.3 <a
href="userhtmlsu7.html#x15-430003.3">Dense Vector Data Structure</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.3.1 <a
href="userhtmlsu7.html#x15-440003.3.1" id="QQ2-15-49">Vector Methods</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.3.2 <a
href="userhtmlsu7.html#x15-450003.3.2" id="QQ2-15-50">get_nrows &#8212; Get number of rows in a dense vector</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.3.3 <a
href="userhtmlsu7.html#x15-460003.3.3" id="QQ2-15-51">sizeof &#8212; Get memory occupation in bytes of a dense vector</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.3.4 <a
href="userhtmlsu7.html#x15-470003.3.4" id="QQ2-15-52">set &#8212; Set contents of the vector</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.3.5 <a
href="userhtmlsu7.html#x15-480003.3.5" id="QQ2-15-53">get_vect &#8212; Get a copy of the vector contents</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.3.6 <a
href="userhtmlsu7.html#x15-490003.3.6" id="QQ2-15-54">clone &#8212; Clone current object</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.4 <a
href="userhtmlsu8.html#x16-500003.4">Preconditioner data structure</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.5 <a
href="userhtmlsu9.html#x17-510003.5">Heap data structure</a></span>
<br /> <span class="sectionToc" >4 <a
href="userhtmlse4.html#x18-520004">Computational routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.1 <a
href="userhtmlsu10.html#x19-530004.1">psb_geaxpby &#8212; General Dense Matrix Sum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.2 <a
href="userhtmlsu11.html#x20-540004.2">psb_gedot &#8212; Dot Product</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.3 <a
href="userhtmlsu12.html#x21-550004.3">psb_gedots &#8212; Generalized Dot Product</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.4 <a
href="userhtmlsu13.html#x22-560004.4">psb_normi &#8212; Infinity-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.5 <a
href="userhtmlsu14.html#x23-570004.5">psb_geamaxs &#8212; Generalized Infinity Norm</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.6 <a
href="userhtmlsu15.html#x24-580004.6">psb_norm1 &#8212; 1-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.7 <a
href="userhtmlsu16.html#x25-590004.7">psb_geasums &#8212; Generalized 1-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.8 <a
href="userhtmlsu17.html#x26-600004.8">psb_norm2 &#8212; 2-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.9 <a
href="userhtmlsu18.html#x27-610004.9">psb_genrm2s &#8212; Generalized 2-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.10 <a
href="userhtmlsu19.html#x28-620004.10">psb_norm1 &#8212; 1-Norm of Sparse Matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.11 <a
href="userhtmlsu20.html#x29-630004.11">psb_normi &#8212; Infinity Norm of Sparse Matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.12 <a
href="userhtmlsu21.html#x30-640004.12">psb_spmm &#8212; Sparse Matrix by Dense Matrix Product</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.13 <a
href="userhtmlsu22.html#x31-650004.13">psb_spsm &#8212; Triangular System Solve</a></span>
<br /> <span class="sectionToc" >5 <a
href="userhtmlse5.html#x32-660005">Communication routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.1 <a
href="userhtmlsu23.html#x33-670005.1">psb_halo &#8212; Halo Data Communication</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.2 <a
href="userhtmlsu24.html#x34-680005.2">psb_ovrl &#8212; Overlap Update</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.3 <a
href="userhtmlsu25.html#x35-690005.3">psb_gather &#8212; Gather Global Dense Matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.4 <a
href="userhtmlsu26.html#x36-700005.4">psb_scatter &#8212; Scatter Global Dense Matrix</a></span>
<br /> <span class="sectionToc" >6 <a
href="userhtmlse6.html#x37-710006">Data management routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.1 <a
href="userhtmlsu27.html#x38-720006.1">psb_cdall &#8212; Allocates a communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.2 <a
href="userhtmlsu28.html#x39-730006.2">psb_cdins &#8212; Communication descriptor insert routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.3 <a
href="userhtmlsu29.html#x40-740006.3">psb_cdasb &#8212; Communication descriptor assembly routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.4 <a
href="userhtmlsu30.html#x41-750006.4">psb_cdcpy &#8212; Copies a communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.5 <a
href="userhtmlsu31.html#x42-760006.5">psb_cdfree &#8212; Frees a communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.6 <a
href="userhtmlsu32.html#x43-770006.6">psb_cdbldext &#8212; Build an extended communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.7 <a
href="userhtmlsu33.html#x44-780006.7">psb_spall &#8212; Allocates a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.8 <a
href="userhtmlsu34.html#x45-790006.8">psb_spins &#8212; Insert a set of coefficients into a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.9 <a
href="userhtmlsu35.html#x46-800006.9">psb_spasb &#8212; Sparse matrix assembly routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.10 <a
href="userhtmlsu36.html#x47-810006.10">psb_spfree &#8212; Frees a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.11 <a
href="userhtmlsu37.html#x48-820006.11">psb_sprn &#8212; Reinit sparse matrix structure for psblas routines.</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.12 <a
href="userhtmlsu38.html#x49-830006.12">psb_geall &#8212; Allocates a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.13 <a
href="userhtmlsu39.html#x50-840006.13">psb_geins &#8212; Dense matrix insertion routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.14 <a
href="userhtmlsu40.html#x51-850006.14">psb_geasb &#8212; Assembly a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.15 <a
href="userhtmlsu41.html#x52-860006.15">psb_gefree &#8212; Frees a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.16 <a
href="userhtmlsu42.html#x53-870006.16">psb_gelp &#8212; Applies a left permutation to a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.17 <a
href="userhtmlsu43.html#x54-880006.17">psb_glob_to_loc &#8212; Global to local indices convertion</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.18 <a
href="userhtmlsu44.html#x55-890006.18">psb_loc_to_glob &#8212; Local to global indices conversion</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.19 <a
href="userhtmlsu45.html#x56-900006.19">psb_is_owned &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.20 <a
href="userhtmlsu46.html#x57-910006.20">psb_owned_index &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.21 <a
href="userhtmlsu47.html#x58-920006.21">psb_is_local &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.22 <a
href="userhtmlsu48.html#x59-930006.22">psb_local_index &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.23 <a
href="userhtmlsu49.html#x60-940006.23">psb_get_boundary &#8212; Extract list of boundary elements</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.24 <a
href="userhtmlsu50.html#x61-950006.24">psb_get_overlap &#8212; Extract list of overlap elements</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.25 <a
href="userhtmlsu51.html#x62-960006.25">psb_sp_getrow &#8212; Extract row(s) from a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.26 <a
href="userhtmlsu52.html#x63-970006.26">psb_sizeof &#8212; Memory occupation</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.27 <a
href="userhtmlsu53.html#x64-980006.27">Sorting utilities &#8212; </a></span>
<br /> <span class="sectionToc" >7 <a
href="userhtmlse7.html#x65-990007">Parallel environment routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.1 <a
href="userhtmlsu54.html#x66-1000007.1">psb_init &#8212; Initializes PSBLAS parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.2 <a
href="userhtmlsu55.html#x67-1010007.2">psb_info &#8212; Return information about PSBLAS parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.3 <a
href="userhtmlsu56.html#x68-1020007.3">psb_exit &#8212; Exit from PSBLAS parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.4 <a
href="userhtmlsu57.html#x69-1030007.4">psb_get_mpicomm &#8212; Get the MPI communicator</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.5 <a
href="userhtmlsu58.html#x70-1040007.5">psb_get_rank &#8212; Get the MPI rank</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.6 <a
href="userhtmlsu59.html#x71-1050007.6">psb_wtime &#8212; Wall clock timing</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.7 <a
href="userhtmlsu60.html#x72-1060007.7">psb_barrier &#8212; Sinchronization point parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.8 <a
href="userhtmlsu61.html#x73-1070007.8">psb_abort &#8212; Abort a computation</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.9 <a
href="userhtmlsu62.html#x74-1080007.9">psb_bcast &#8212; Broadcast data</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.10 <a
href="userhtmlsu63.html#x75-1090007.10">psb_sum &#8212; Global sum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.11 <a
href="userhtmlsu64.html#x76-1100007.11">psb_max &#8212; Global maximum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.12 <a
href="userhtmlsu65.html#x77-1110007.12">psb_min &#8212; Global minimum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.13 <a
href="userhtmlsu66.html#x78-1120007.13">psb_amx &#8212; Global maximum absolute value</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.14 <a
href="userhtmlsu67.html#x79-1130007.14">psb_amn &#8212; Global minimum absolute value</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.15 <a
href="userhtmlsu68.html#x80-1140007.15">psb_nrm2 &#8212; Global 2-norm reduction</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.16 <a
href="userhtmlsu69.html#x81-1150007.16">psb_snd &#8212; Send data</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.17 <a
href="userhtmlsu70.html#x82-1160007.17">psb_rcv &#8212; Receive data</a></span>
<br /> <span class="sectionToc" >8 <a
href="userhtmlse8.html#x83-1170008">Error handling</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.1 <a
href="userhtmlsu71.html#x84-1180008.1">psb_errpush &#8212; Pushes an error code onto the error stack</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.2 <a
href="userhtmlsu72.html#x85-1190008.2">psb_error &#8212; Prints the error stack content and aborts execution</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.3 <a
href="userhtmlsu73.html#x86-1200008.3">psb_set_errverbosity &#8212; Sets the verbosity of error messages</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.4 <a
href="userhtmlsu74.html#x87-1210008.4">psb_set_erraction &#8212; Set the type of action to be taken upon error condition</a></span>
<br /> <span class="sectionToc" >9 <a
href="userhtmlse9.html#x88-1220009">Utilities</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.1 <a
href="userhtmlsu75.html#x89-1230009.1"> hb_read &#8212; Read a sparse matrix from a file in the Harwell&#8211;Boeing format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.2 <a
href="userhtmlsu76.html#x90-1240009.2">hb_write &#8212; Write a sparse matrix to a file in the Harwell&#8211;Boeing format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.3 <a
href="userhtmlsu77.html#x91-1250009.3">mm_mat_read &#8212; Read a sparse matrix from a file in the MatrixMarket format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.4 <a
href="userhtmlsu78.html#x92-1260009.4">mm_array_read &#8212; Read a dense array from a file in the MatrixMarket format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.5 <a
href="userhtmlsu79.html#x93-1270009.5">mm_mat_write &#8212; Write a sparse matrix to a file in the MatrixMarket format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.6 <a
href="userhtmlsu80.html#x94-1280009.6">mm_array_write &#8212; Write a dense array from a file in the MatrixMarket format</a></span>
<br /> <span class="sectionToc" >10 <a
href="userhtmlse10.html#x95-12900010">Preconditioner routines</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.1 <a
href="userhtmlsu81.html#x96-13000010.1">init &#8212; Initialize a preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.2 <a
href="userhtmlsu82.html#x98-13100010.2">build &#8212; Builds a preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.3 <a
href="userhtmlsu83.html#x99-13200010.3">apply &#8212; Preconditioner application routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.4 <a
href="userhtmlsu84.html#x100-13300010.4">descr &#8212; Prints a description of current preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.5 <a
href="userhtmlsu85.html#x101-13400010.5">clone &#8212; clone current preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.6 <a
href="userhtmlsu86.html#x102-13500010.6">free &#8212; Free a preconditioner</a></span>
<br /> <span class="sectionToc" >11 <a
href="userhtmlse11.html#x103-13600011">Iterative Methods</a></span>
<br /> &#x00A0;<span class="subsectionToc" >11.1 <a
href="userhtmlsu87.html#x104-13700011.1">psb_krylov &#8212; Krylov Methods Driver Routine</a></span>
</div>
<!--l. 107--><p class="indent" >
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse1.html" >next</a>] [<a
href="userhtmlli1.html" >front</a>] [<a
href="userhtml.html#userhtmlli1.html" >up</a>] </p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlli1.html"></a>
</body></html>

@ -0,0 +1,186 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>References</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 2--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse11.html" >prev</a>] [<a
href="userhtmlse11.html#tailuserhtmlse11.html" >prev-tail</a>] [<a
href="userhtmlsu85.html#tailuserhtmlli2.html">tail</a>] [<a
href="userhtml.html# " >up</a>] </p></div>
<h3 class="likesectionHead"><a
id="x106-13800011.1"></a>References</h3>
<!--l. 2--><p class="noindent" >
<div class="thebibliography">
<p class="bibitem" ><span class="biblabel">
[1]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span>
<a
id="XDesPat:11"></a>D.&#x00A0;Barbieri, V.&#x00A0;Cardellini, S.&#x00A0;Filippone and D.&#x00A0;Rouson <span
class="cmti-10">Design Patterns</span>
<span
class="cmti-10">for Scientific Computations on Sparse Matrices</span>, HPSS 2011, Algorithms
and Programming Tools for Next-Generation High-Performance Scientific
Software, Bordeaux, Sep. 2011
</p>
<p class="bibitem" ><span class="biblabel">
[2]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XPARA04FOREST"></a>G.&#x00A0;Bella, S.&#x00A0;Filippone, A.&#x00A0;De Maio and M.&#x00A0;Testa, <span
class="cmti-10">A Simulation Model</span>
<span
class="cmti-10">for Forest Fires</span>, in J.&#x00A0;Dongarra, K.&#x00A0;Madsen, J.&#x00A0;Wasniewski, editors,
Proceedings of PARA&#x00A0;04 Workshop on State of the Art in Scientific
Computing, pp.&#x00A0;546&#8211;553, Lecture Notes in Computer Science, Springer,
2005.
</p>
<p class="bibitem" ><span class="biblabel">
[3]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="X2007d"></a>A. Buttari, D. di Serafino, P. D&#8217;Ambra, S. Filippone, 2LEV-D2P4:
a package of high-performance preconditioners, Applicable Algebra in
Engineering, Communications and Computing, Volume 18, Number 3, May,
2007, pp. 223-239
</p>
<p class="bibitem" ><span class="biblabel">
[4]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="X2007c"></a>P. D&#8217;Ambra, S. Filippone, D. Di Serafino On the Development
of PSBLAS-based Parallel Two-level Schwarz Preconditioners Applied
Numerical Mathematics, Elsevier Science, Volume 57, Issues 11-12,
November-December 2007, Pages 1181-1196.
</p>
<p class="bibitem" ><span class="biblabel">
[5]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XBLAS2"></a>Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R., An
Extended Set of Fortran Basic Linear Algebra Subprograms, ACM Trans.
Math. Softw. vol.&#x00A0;14, 1&#8211;17, 1988.
</p>
<p class="bibitem" ><span class="biblabel">
[6]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XBLAS3"></a>Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I., A Set of level
3 Basic Linear Algebra Subprograms, ACM Trans. Math. Softw. vol.&#x00A0;16,
1&#8211;17, 1990.
</p>
<p class="bibitem" ><span class="biblabel">
[7]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XBLACS"></a>J.&#x00A0;J.&#x00A0;Dongarra and R.&#x00A0;C.&#x00A0;Whaley, <span
class="cmti-10">A User&#8217;s Guide to the BLACS</span>
<span
class="cmti-10">v.</span><span
class="cmti-10">&#x00A0;1.1</span>, Lapack Working Note 94, Tech.&#x00A0;Rep.&#x00A0;UT-CS-95-281, University of
Tennessee, March 1995 (updated May 1997).
</p>
<p class="bibitem" ><span class="biblabel">
[8]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="Xsblas97"></a>I.&#x00A0;Duff, M.&#x00A0;Marrone, G.&#x00A0;Radicati and C.&#x00A0;Vittoli, <span
class="cmti-10">Level 3 Basic Linear</span>
<span
class="cmti-10">Algebra Subprograms for Sparse Matrices: a User Level Interface</span>, ACM
Transactions on Mathematical Software, 23(3), pp.&#x00A0;379&#8211;401, 1997.
</p>
<p class="bibitem" ><span class="biblabel">
[9]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="Xsblas02"></a>I.&#x00A0;Duff, M.&#x00A0;Heroux and R.&#x00A0;Pozo, <span
class="cmti-10">An Overview of the Sparse Basic</span>
<span
class="cmti-10">Linear Algebra Subprograms: the New Standard from the BLAS Technical</span>
<span
class="cmti-10">Forum</span>, ACM Transactions on Mathematical Software, 28(2), pp.&#x00A0;239&#8211;267,
2002.
</p>
<p class="bibitem" ><span class="biblabel">
[10]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XPSBLAS"></a>S.&#x00A0;Filippone and M.&#x00A0;Colajanni, <span
class="cmti-10">PSBLAS: A Library for Parallel</span>
<span
class="cmti-10">Linear Algebra Computation on Sparse Matrices</span>, ACM Transactions on
Mathematical Software, 26(4), pp.&#x00A0;527&#8211;550, 2000.
</p>
<p class="bibitem" ><span class="biblabel">
[11]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XSparse03"></a>S.&#x00A0;Filippone and A.&#x00A0;Buttari, <span
class="cmti-10">Object-Oriented Techniques for Sparse</span>
<span
class="cmti-10">Matrix Computations in Fortran 2003</span>, ACM Transactions on Mathematical
Software, 38(4), 2012.
</p>
<p class="bibitem" ><span class="biblabel">
[12]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XKIVA3PSBLAS"></a>S.&#x00A0;Filippone, P.&#x00A0;D&#8217;Ambra, M.&#x00A0;Colajanni, <span
class="cmti-10">Using a Parallel Library</span>
<span
class="cmti-10">of Sparse Linear Algebra in a Fluid Dynamics Applications Code on</span>
<span
class="cmti-10">Linux Clusters</span>, in G.&#x00A0;Joubert, A.&#x00A0;Murli, F.&#x00A0;Peters, M.&#x00A0;Vanneschi, editors,
Parallel Computing - Advances &amp; Current Issues, pp.&#x00A0;441&#8211;448, Imperial
College Press, 2002.
</p>
<p class="bibitem" ><span class="biblabel">
[13]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XDesignPatterns"></a> Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. <span
class="cmti-10">Design</span>
<span
class="cmti-10">Patterns: Elements of Reusable Object-Oriented Software</span>. Addison-Wesley.
</p>
<p class="bibitem" ><span class="biblabel">
[14]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XMETIS"></a>Karypis, G. and Kumar, V., <span
class="cmti-10">METIS: Unstructured Graph Partitioning</span>
<span
class="cmti-10">and Sparse Matrix Ordering System</span>. Minneapolis, MN 55455: University
of Minnesota, Department of Computer Science, 1995. Internet Address:
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">http://www.cs.umn.edu/~karypis</span></span></span>.
</p>
<p class="bibitem" ><span class="biblabel">
[15]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XBLAS1"></a>Lawson, C., Hanson, R., Kincaid, D. and Krogh, F., Basic Linear
Algebra Subprograms for Fortran usage, ACM Trans. Math. Softw. vol.&#x00A0;5,
38&#8211;329, 1979.
</p>
<p class="bibitem" ><span class="biblabel">
[16]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="Xmachiels"></a>Machiels, L. and Deville, M. <span
class="cmti-10">Fortran 90: An entry to object-oriented</span>
<span
class="cmti-10">programming for the solution of partial differential equations. </span>ACM Trans.
Math. Softw. vol.&#x00A0;23, 32&#8211;49.
</p>
<p class="bibitem" ><span class="biblabel">
[17]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="Xmetcalf"></a>Metcalf, M., Reid, J. and Cohen, M. <span
class="cmti-10">Fortran 95/2003 explained. </span>Oxford
University Press, 2004.
</p>
<p class="bibitem" ><span class="biblabel">
[18]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XRouXiaXu:11"></a>Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The
Object-Oriented Way. Cambridge University Press (2011)
</p>
<p class="bibitem" ><span class="biblabel">
[19]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
id="XMPI1"></a>M.&#x00A0;Snir, S.&#x00A0;Otto, S.&#x00A0;Huss-Lederman, D.&#x00A0;Walker and J.&#x00A0;Dongarra,
<span
class="cmti-10">MPI: The Complete Reference. Volume 1 - The MPI Core</span>, second edition,
MIT Press, 1998.</p></div>
<!--l. 127--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse11.html" >prev</a>] [<a
href="userhtmlse11.html#tailuserhtmlse11.html" >prev-tail</a>] [<a
href="userhtmlli2.html" >front</a>] [<a
href="userhtml.html# " >up</a>] </p></div>
<!--l. 127--><p class="indent" > <a
id="tailuserhtmlli2.html"></a>
</body></html>

@ -0,0 +1,96 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Introduction</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse2.html" >next</a>] [<a
href="userhtmlli1.html" >prev</a>] [<a
href="userhtmlli1.html#tailuserhtmlli1.html" >prev-tail</a>] [<a
href="#tailuserhtmlse1.html">tail</a>] [<a
href="userhtml.html#userhtmlse1.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">1 </span> <a
id="x3-20001"></a>Introduction</h3>
<!--l. 3--><p class="noindent" >The PSBLAS library, developed with the aim to facilitate the parallelization of
computationally intensive scientific applications, is designed to address parallel
implementation of iterative solvers for sparse linear systems through the distributed
memory paradigm. It includes routines for multiplying sparse matrices by dense
matrices, solving block diagonal systems with triangular diagonal entries,
preprocessing sparse matrices, and contains additional routines for dense matrix
operations. The current implementation of PSBLAS addresses a distributed memory
execution model operating with message passing.
<!--l. 14--><p class="indent" > The PSBLAS library version 3 is implemented in the Fortran&#x00A0;2003&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#Xmetcalf">17</a>]</span>
programming language, with reuse and/or adaptation of existing Fortran&#x00A0;77 and
Fortran&#x00A0;95 software, plus a handful of C routines.
<!--l. 19--><p class="indent" > The use of Fortran&#x00A0;2003 offers a number of advantages over Fortran&#x00A0;95, 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&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XSparse03">11</a>]</span>; other works discussing advanced programming in Fortran&#x00A0;2003
include&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XDesPat:11">1</a>,&#x00A0;<a
href="userhtmlli2.html#XRouXiaXu:11">18</a>]</span>; sufficient support for Fortran&#x00A0;2003 is now available from many
compilers, including the GNU Fortran compiler from the Free Software Foundation
(as of version 4.8).
<!--l. 30--><p class="indent" > Previous approaches have been based on mixing Fortran&#x00A0;95, with its support for
object-based design, with other languages; these have been advocated by a number of
authors, e.g.&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#Xmachiels">16</a>]</span>. Moreover, the Fortran&#x00A0;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 requirements
that are quite difficult or even impossible to predict at implementation or
compilation time.
<!--l. 40--><p class="indent" > The presentation of the PSBLAS library follows the general structure of the
proposal for serial Sparse BLAS&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#Xsblas97">8</a>,&#x00A0;<a
href="userhtmlli2.html#Xsblas02">9</a>]</span>, which in its turn is based on the proposal for
BLAS on dense matrices&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XBLAS1">15</a>,&#x00A0;<a
href="userhtmlli2.html#XBLAS2">5</a>,&#x00A0;<a
href="userhtmlli2.html#XBLAS3">6</a>]</span>.
<!--l. 45--><p class="indent" > The applicability of sparse iterative solvers to many different areas causes some
terminology problems because the same concept may be denoted through different
names depending on the application area. The PSBLAS features presented in this
document will be discussed referring to a finite difference discretization of a Partial
Differential Equation (PDE). However, the scope of the library is wider than that: for
example, it can be applied to finite element discretizations of PDEs, and even to
different classes of problems such as nonlinear optimization, for example in optimal
control problems.
<!--l. 55--><p class="indent" > The design of a solver for sparse linear systems is driven by many conflicting
objectives, such as limiting occupation of storage resources, exploiting regularities in
the input data, exploiting hardware characteristics of the parallel platform. To
achieve an optimal communication to computation ratio on distributed memory
machines it is essential to keep the <span
class="cmti-10">data locality </span>as high as possible; this can be
done through an appropriate data allocation strategy. The choice of the
preconditioner is another very important factor that affects efficiency of the
implemented application. Optimal data distribution requirements for a given
preconditioner may conflict with distribution requirements of the rest of the solver.
Finding the optimal trade-off may be very difficult because it is application
dependent. Possible solutions to these problems and other important inputs to the
development of the PSBLAS software package have come from an established
experience in applying the PSBLAS solvers to computational fluid dynamics
applications.
<!--l. 72--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse2.html" >next</a>] [<a
href="userhtmlli1.html" >prev</a>] [<a
href="userhtmlli1.html#tailuserhtmlli1.html" >prev-tail</a>] [<a
href="userhtmlse1.html" >front</a>] [<a
href="userhtml.html#userhtmlse1.html" >up</a>] </p></div>
<!--l. 72--><p class="indent" > <a
id="tailuserhtmlse1.html"></a>
</body></html>

@ -0,0 +1,64 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Preconditioner routines</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse9.html" >prev</a>] [<a
href="userhtmlse9.html#tailuserhtmlse9.html" >prev-tail</a>] [<a
href="userhtmlsu78.html#tailuserhtmlse10.html">tail</a>] [<a
href="userhtml.html#userhtmlsu83.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">10 </span> <a
id="x95-12900010"></a>Preconditioner routines</h3>
<!--l. 6--><p class="noindent" >The base PSBLAS library contains the implementation of two simple preconditioning
techniques:
<ul class="itemize1">
<li class="itemize">Diagonal Scaling
</li>
<li class="itemize">Block Jacobi with ILU(0) factorization</li></ul>
<!--l. 14--><p class="noindent" >The supporting data type and subroutine interfaces are defined in the module
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_prec_mod</span></span></span>. The old interfaces <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_precinit</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_precbld</span></span></span> are still
supported for backward compatibility
<div class="subsectionTOCS">
&#x00A0;<span class="subsectionToc" >10.1 <a
href="userhtmlsu81.html#x96-13000010.1">init &#8212; Initialize a preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.2 <a
href="userhtmlsu82.html#x98-13100010.2">build &#8212; Builds a preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.3 <a
href="userhtmlsu83.html#x99-13200010.3">apply &#8212; Preconditioner application routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.4 <a
href="userhtmlsu84.html#x100-13300010.4">descr &#8212; Prints a description of current preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.5 <a
href="userhtmlsu85.html#x101-13400010.5">clone &#8212; clone current preconditioner</a></span>
<br /> &#x00A0;<span class="subsectionToc" >10.6 <a
href="userhtmlsu86.html#x102-13500010.6">free &#8212; Free a preconditioner</a></span>
</div>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse9.html" >prev</a>] [<a
href="userhtmlse9.html#tailuserhtmlse9.html" >prev-tail</a>] [<a
href="userhtmlse10.html" >front</a>] [<a
href="userhtml.html#userhtmlsu83.html" >up</a>] </p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlse10.html"></a>
</body></html>

@ -0,0 +1,41 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Iterative Methods</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse10.html" >prev</a>] [<a
href="userhtmlse10.html#tailuserhtmlse10.html" >prev-tail</a>] [<a
href="userhtmlsu83.html#tailuserhtmlse11.html">tail</a>] [<a
href="userhtml.html# " >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">11 </span> <a
id="x103-13600011"></a>Iterative Methods</h3>
<!--l. 4--><p class="noindent" >In this chapter we provide routines for preconditioners and iterative methods.
The interfaces for Krylov subspace methods are available in the module
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_krylov_mod</span></span></span>.
<div class="subsectionTOCS">
&#x00A0;<span class="subsectionToc" >11.1 <a
href="userhtmlsu87.html#x104-13700011.1">psb_krylov &#8212; Krylov Methods Driver Routine</a></span>
</div>
<!--l. 2--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse10.html" >prev</a>] [<a
href="userhtmlse10.html#tailuserhtmlse10.html" >prev-tail</a>] [<a
href="userhtmlse11.html" >front</a>] [<a
href="userhtml.html# " >up</a>] </p></div>
<!--l. 2--><p class="indent" > <a
id="tailuserhtmlse11.html"></a>
</body></html>

@ -0,0 +1,126 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>General overview</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 72--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu7.html" >next</a>] [<a
href="userhtmlse1.html" >prev</a>] [<a
href="userhtmlse1.html#tailuserhtmlse1.html" >prev-tail</a>] [<a
href="#tailuserhtmlse2.html">tail</a>] [<a
href="userhtml.html#userhtmlse2.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">2 </span> <a
id="x4-30002"></a>General overview</h3>
<!--l. 74--><p class="noindent" >The PSBLAS library is designed to handle the implementation of iterative solvers for
sparse linear systems on distributed memory parallel computers. The system
coefficient matrix <span
class="cmmi-10">A </span>must be square; it may be real or complex, nonsymmetric, and
its sparsity pattern needs not to be symmetric. The serial computation parts are
based on the serial sparse BLAS, so that any extension made to the data structures
of the serial kernels is available to the parallel version. The overall design and
parallelization strategy have been influenced by the structure of the ScaLAPACK
parallel library. The layered structure of the PSBLAS library is shown in figure&#x00A0;<a
href="#x4-30011">1<!--tex4ht:ref: fig:psblas --></a>;
lower layers of the library indicate an encapsulation relationship with upper
layers. The ongoing discussion focuses on the Fortran&#x00A0;2003 layer immediately
below the application layer. The serial parts of the computation on each
process are executed through 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&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XBLACS">7</a>]</span>. 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.&#x00A0;<a
href="userhtmlse7.html#x65-990007">7<!--tex4ht:ref: sec:parenv --></a>.
<!--l. 101--><p class="indent" > <hr class="figure"><div class="figure"
>
<a
id="x4-30011"></a>
<div class="center"
>
<!--l. 102--><p class="noindent" >
<!--l. 104--><p class="noindent" ><img
src="userhtml0x.png" alt="PIC" class="graphics" width="128" height="140" ><!--tex4ht:graphics
name="userhtml0x.png" src="figures/psblas.eps"
--></div>
<br /> <div class="caption"
><span class="id">Figure&#x00A0;1: </span><span
class="content">PSBLAS library components hierarchy.</span></div><!--tex4ht:label?: x4-30011 -->
<!--l. 110--><p class="indent" > </div><hr class="endfigure">
<!--l. 113--><p class="indent" > The type of linear system matrices that we address typically arise in
the numerical solution of PDEs; in such a context, it is necessary to pay
special attention to the structure of the problem from which the application
originates. The nonzero pattern of a matrix arising from the discretization of a
PDE is influenced by various factors, such as the shape of the domain, the
discretization strategy, and the equation/unknown ordering. The matrix itself can be
interpreted as the adjacency matrix of the graph associated with the discretization
mesh.
<!--l. 124--><p class="indent" > The distribution of the coefficient matrix for the linear system is based on the
&#8220;owner computes&#8221; rule: the variable associated to each mesh point is assigned to a
process that will own the corresponding row in the coefficient matrix and will
carry out all related computations. This allocation strategy is equivalent to a
partition of the discretization mesh into <span
class="cmti-10">sub-domains</span>. Our library supports any
distribution that keeps together the coefficients of each matrix row; there are no
other constraints on the variable assignment. This choice is consistent with
simple data distributions such as <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">CYCLIC(N)</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">BLOCK</span></span></span>, as well as completely
arbitrary assignments of equation indices to processes. In particular it is
consistent with the usage of graph partitioning tools commonly available in
the literature, e.g. METIS&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#XMETIS">14</a>]</span>. Dense vectors conform to sparse matrices,
that is, the entries of a vector follow the same distribution of the matrix
rows.
<!--l. 146--><p class="indent" > We assume that the sparse matrix is built in parallel, where each process generates
its own portion. We never require that the entire matrix be available on a single
node. However, it is possible to hold the entire matrix in one process and distribute it
explicitly<span class="footnote-mark"><a
href="userhtml5.html#fn1x0"><sup class="textsuperscript">1</sup></a></span><a
id="x4-3002f1"></a> ,
even though the resulting memory bottleneck would make this option unattractive in
most cases.
<div class="subsectionTOCS">
&#x00A0;<span class="subsectionToc" >2.1 <a
href="userhtmlsu1.html#x6-40002.1">Basic Nomenclature</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.2 <a
href="userhtmlsu2.html#x8-50002.2">Library contents</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.3 <a
href="userhtmlsu3.html#x9-60002.3">Application structure</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >2.3.1 <a
href="userhtmlsu3.html#x9-70002.3.1">User-defined index mappings</a></span>
<br /> &#x00A0;<span class="subsectionToc" >2.4 <a
href="userhtmlsu4.html#x11-80002.4">Programming model</a></span>
</div>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu7.html" >next</a>] [<a
href="userhtmlse1.html" >prev</a>] [<a
href="userhtmlse1.html#tailuserhtmlse1.html" >prev-tail</a>] [<a
href="userhtmlse2.html" >front</a>] [<a
href="userhtml.html#userhtmlse2.html" >up</a>] </p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlse2.html"></a>
</body></html>

@ -0,0 +1,184 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Data Structures and Classes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu12.html" >next</a>] [<a
href="userhtmlse2.html" >prev</a>] [<a
href="userhtmlse2.html#tailuserhtmlse2.html" >prev-tail</a>] [<a
href="userhtmlsu3.html#tailuserhtmlse3.html">tail</a>] [<a
href="userhtml.html#userhtmlsu7.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">3 </span> <a
id="x12-90003"></a>Data Structures and Classes</h3>
<!--l. 5--><p class="noindent" >In this chapter we illustrate the data structures used for definition of routines
interfaces. They include data structures for sparse matrices, communication
descriptors and preconditioners.
<!--l. 11--><p class="indent" > All the data types and the basic subroutine interfaces related to descriptors and
sparse matrices are defined in the module <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_base_mod</span></span></span>; this will have to be
included by every user subroutine that makes use of the library. The preconditioners
are defined in the module <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_prec_mod</span></span></span>
<!--l. 17--><p class="indent" > Integer, real and complex data types are parametrized with a kind type defined in
the library as follows:
<dl class="description"><dt class="description">
<span
class="cmbx-10">psb</span><span
class="cmbx-10">_spk</span><span
class="cmbx-10">_</span> </dt><dd
class="description">Kind parameter for short precision real and complex data;
corresponds to a <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">REAL</span></span></span> declaration and is normally 4 bytes;
</dd><dt class="description">
<span
class="cmbx-10">psb</span><span
class="cmbx-10">_dpk</span><span
class="cmbx-10">_</span> </dt><dd
class="description">Kind parameter for long precision real and complex data;
corresponds to a <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">DOUBLE</span><span
class="cmtt-10">&#x00A0;PRECISION</span></span></span> declaration and is normally 8 bytes;
</dd><dt class="description">
<span
class="cmbx-10">psb</span><span
class="cmbx-10">_ipk</span><span
class="cmbx-10">_</span> </dt><dd
class="description">Kind parameter for integer data; with default build options this is
a 4 bytes integer, but there is (highly) experimental support for 8-bytes
integers;
</dd><dt class="description">
<span
class="cmbx-10">psb</span><span
class="cmbx-10">_mpik</span><span
class="cmbx-10">_</span> </dt><dd
class="description">Kind parameter for 4-bytes integer data, as is always used by MPI;
</dd><dt class="description">
<span
class="cmbx-10">psb</span><span
class="cmbx-10">_long</span><span
class="cmbx-10">_int</span><span
class="cmbx-10">_k</span><span
class="cmbx-10">_</span> </dt><dd
class="description">Kind parameter for long (8 bytes) integers, which are always
used by the <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">sizeof</span></span></span> methods.</dd></dl>
<!--l. 34--><p class="noindent" >Together with the classes attributes we also discuss their methods. Most methods
detailed here only act on the local variable, i.e. their action is purely local and
asynchronous unless otherwise stated. The list of methods here is not completely
exhaustive; many methods, especially those that alter the contents of the various
objects, are usually not needed by the end-user, and therefore are described in the
developer&#8217;s documentation.
<!--l. 44--><p class="noindent" >
<div class="subsectionTOCS">
&#x00A0;<span class="subsectionToc" >3.1 <a
href="userhtmlsu5.html#x13-100003.1">Descriptor data structure</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.1 <a
href="userhtmlsu5.html#x13-110003.1.1">Descriptor Methods</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.2 <a
href="userhtmlsu5.html#x13-120003.1.2">get_local_rows &#8212; Get number of local rows</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.3 <a
href="userhtmlsu5.html#x13-130003.1.3">get_local_cols &#8212; Get number of local cols</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.4 <a
href="userhtmlsu5.html#x13-140003.1.4">get_global_rows &#8212; Get number of global rows</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.5 <a
href="userhtmlsu5.html#x13-150003.1.5">get_global_cols &#8212; Get number of global cols</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.6 <a
href="userhtmlsu5.html#x13-160003.1.6">get_global_indices &#8212; Get vector of global indices</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.7 <a
href="userhtmlsu5.html#x13-170003.1.7">get_context &#8212; Get communication context</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.8 <a
href="userhtmlsu5.html#x13-180003.1.8">Clone &#8212; clone current object</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.9 <a
href="userhtmlsu5.html#x13-190003.1.9">CNV &#8212; convert internal storage format</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.10 <a
href="userhtmlsu5.html#x13-200003.1.10">psb_cd_get_large_threshold &#8212; Get threshold for index mapping switch</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.11 <a
href="userhtmlsu5.html#x13-210003.1.11">psb_cd_set_large_threshold &#8212; Set threshold for index mapping switch</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.1.12 <a
href="userhtmlsu5.html#x13-220003.1.12">Named Constants</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.2 <a
href="userhtmlsu6.html#x14-230003.2">Sparse Matrix class</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.1 <a
href="userhtmlsu6.html#x14-240003.2.1">Sparse Matrix Methods</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.2 <a
href="userhtmlsu6.html#x14-250003.2.2">get_nrows &#8212; Get number of rows in a sparse matrix</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.3 <a
href="userhtmlsu6.html#x14-260003.2.3">get_ncols &#8212; Get number of columns in a sparse matrix</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.4 <a
href="userhtmlsu6.html#x14-270003.2.4">get_nnzeros &#8212; Get number of nonzero elements in a sparse matrix</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.5 <a
href="userhtmlsu6.html#x14-280003.2.5">get_size &#8212; Get maximum number of nonzero elements in a sparse matrix</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.6 <a
href="userhtmlsu6.html#x14-290003.2.6">sizeof &#8212; Get memory occupation in bytes of a sparse matrix</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.7 <a
href="userhtmlsu6.html#x14-300003.2.7">get_fmt &#8212; Short description of the dynamic type</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.8 <a
href="userhtmlsu6.html#x14-310003.2.8">is_bld, is_upd, is_asb &#8212; Status check</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.9 <a
href="userhtmlsu6.html#x14-320003.2.9">is_lower, is_upper, is_triangle, is_unit &#8212; Format check</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.10 <a
href="userhtmlsu6.html#x14-330003.2.10">cscnv &#8212; Convert to a different storage format</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.11 <a
href="userhtmlsu6.html#x14-340003.2.11">csclip &#8212; Reduce to a submatrix</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.12 <a
href="userhtmlsu6.html#x14-350003.2.12">clean_zeros &#8212; Eliminate zero coefficients</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.13 <a
href="userhtmlsu6.html#x14-360003.2.13">get_diag &#8212; Get main diagonal</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.14 <a
href="userhtmlsu6.html#x14-370003.2.14">clip_diag &#8212; Cut out main diagonal</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.15 <a
href="userhtmlsu6.html#x14-380003.2.15">tril &#8212; Return the lower triangle</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.16 <a
href="userhtmlsu6.html#x14-390003.2.16">triu &#8212; Return the upper triangle</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.17 <a
href="userhtmlsu6.html#x14-400003.2.17">psb_set_mat_default &#8212; Set default storage format</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.18 <a
href="userhtmlsu6.html#x14-410003.2.18">clone &#8212; Clone current object</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.2.19 <a
href="userhtmlsu6.html#x14-420003.2.19">Named Constants</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.3 <a
href="userhtmlsu7.html#x15-430003.3">Dense Vector Data Structure</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.3.1 <a
href="userhtmlsu7.html#x15-440003.3.1">Vector Methods</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.3.2 <a
href="userhtmlsu7.html#x15-450003.3.2">get_nrows &#8212; Get number of rows in a dense vector</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.3.3 <a
href="userhtmlsu7.html#x15-460003.3.3">sizeof &#8212; Get memory occupation in bytes of a dense vector</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.3.4 <a
href="userhtmlsu7.html#x15-470003.3.4">set &#8212; Set contents of the vector</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.3.5 <a
href="userhtmlsu7.html#x15-480003.3.5">get_vect &#8212; Get a copy of the vector contents</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsubsectionToc" >3.3.6 <a
href="userhtmlsu7.html#x15-490003.3.6">clone &#8212; Clone current object</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.4 <a
href="userhtmlsu8.html#x16-500003.4">Preconditioner data structure</a></span>
<br /> &#x00A0;<span class="subsectionToc" >3.5 <a
href="userhtmlsu9.html#x17-510003.5">Heap data structure</a></span>
</div>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu12.html" >next</a>] [<a
href="userhtmlse2.html" >prev</a>] [<a
href="userhtmlse2.html#tailuserhtmlse2.html" >prev-tail</a>] [<a
href="userhtmlse3.html" >front</a>] [<a
href="userhtml.html#userhtmlsu7.html" >up</a>] </p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlse3.html"></a>
</body></html>

@ -0,0 +1,75 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Computational routines</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu25.html" >next</a>] [<a
href="userhtmlse3.html" >prev</a>] [<a
href="userhtmlse3.html#tailuserhtmlse3.html" >prev-tail</a>] [<a
href="userhtmlsu7.html#tailuserhtmlse4.html">tail</a>] [<a
href="userhtml.html#userhtmlsu12.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">4 </span> <a
id="x18-520004"></a>Computational routines</h3>
<div class="subsectionTOCS">
&#x00A0;<span class="subsectionToc" >4.1 <a
href="userhtmlsu10.html#x19-530004.1">psb_geaxpby &#8212; General Dense Matrix Sum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.2 <a
href="userhtmlsu11.html#x20-540004.2">psb_gedot &#8212; Dot Product</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.3 <a
href="userhtmlsu12.html#x21-550004.3">psb_gedots &#8212; Generalized Dot Product</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.4 <a
href="userhtmlsu13.html#x22-560004.4">psb_normi &#8212; Infinity-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.5 <a
href="userhtmlsu14.html#x23-570004.5">psb_geamaxs &#8212; Generalized Infinity Norm</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.6 <a
href="userhtmlsu15.html#x24-580004.6">psb_norm1 &#8212; 1-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.7 <a
href="userhtmlsu16.html#x25-590004.7">psb_geasums &#8212; Generalized 1-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.8 <a
href="userhtmlsu17.html#x26-600004.8">psb_norm2 &#8212; 2-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.9 <a
href="userhtmlsu18.html#x27-610004.9">psb_genrm2s &#8212; Generalized 2-Norm of Vector</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.10 <a
href="userhtmlsu19.html#x28-620004.10">psb_norm1 &#8212; 1-Norm of Sparse Matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.11 <a
href="userhtmlsu20.html#x29-630004.11">psb_normi &#8212; Infinity Norm of Sparse Matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.12 <a
href="userhtmlsu21.html#x30-640004.12">psb_spmm &#8212; Sparse Matrix by Dense Matrix Product</a></span>
<br /> &#x00A0;<span class="subsectionToc" >4.13 <a
href="userhtmlsu22.html#x31-650004.13">psb_spsm &#8212; Triangular System Solve</a></span>
</div>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu25.html" >next</a>] [<a
href="userhtmlse3.html" >prev</a>] [<a
href="userhtmlse3.html#tailuserhtmlse3.html" >prev-tail</a>] [<a
href="userhtmlse4.html" >front</a>] [<a
href="userhtml.html#userhtmlsu12.html" >up</a>] </p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlse4.html"></a>
</body></html>

@ -0,0 +1,52 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Communication routines</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu29.html" >next</a>] [<a
href="userhtmlse4.html" >prev</a>] [<a
href="userhtmlse4.html#tailuserhtmlse4.html" >prev-tail</a>] [<a
href="userhtmlsu20.html#tailuserhtmlse5.html">tail</a>] [<a
href="userhtml.html#userhtmlsu25.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">5 </span> <a
id="x32-660005"></a>Communication routines</h3>
<!--l. 7--><p class="noindent" >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&#x00A0;<a
href="userhtmlse6.html#x37-710006">6<!--tex4ht:ref: sec:toolsrout --></a>.
<div class="subsectionTOCS">
&#x00A0;<span class="subsectionToc" >5.1 <a
href="userhtmlsu23.html#x33-670005.1">psb_halo &#8212; Halo Data Communication</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.2 <a
href="userhtmlsu24.html#x34-680005.2">psb_ovrl &#8212; Overlap Update</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.3 <a
href="userhtmlsu25.html#x35-690005.3">psb_gather &#8212; Gather Global Dense Matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >5.4 <a
href="userhtmlsu26.html#x36-700005.4">psb_scatter &#8212; Scatter Global Dense Matrix</a></span>
</div>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu29.html" >next</a>] [<a
href="userhtmlse4.html" >prev</a>] [<a
href="userhtmlse4.html#tailuserhtmlse4.html" >prev-tail</a>] [<a
href="userhtmlse5.html" >front</a>] [<a
href="userhtml.html#userhtmlsu25.html" >up</a>] </p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlse5.html"></a>
</body></html>

@ -0,0 +1,115 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Data management routines</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu56.html" >next</a>] [<a
href="userhtmlse5.html" >prev</a>] [<a
href="userhtmlse5.html#tailuserhtmlse5.html" >prev-tail</a>] [<a
href="userhtmlsu24.html#tailuserhtmlse6.html">tail</a>] [<a
href="userhtml.html#userhtmlsu29.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">6 </span> <a
id="x37-710006"></a>Data management routines</h3>
<!--l. 8--><p class="noindent" >
<div class="subsectionTOCS">
&#x00A0;<span class="subsectionToc" >6.1 <a
href="userhtmlsu27.html#x38-720006.1">psb_cdall &#8212; Allocates a communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.2 <a
href="userhtmlsu28.html#x39-730006.2">psb_cdins &#8212; Communication descriptor insert routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.3 <a
href="userhtmlsu29.html#x40-740006.3">psb_cdasb &#8212; Communication descriptor assembly routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.4 <a
href="userhtmlsu30.html#x41-750006.4">psb_cdcpy &#8212; Copies a communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.5 <a
href="userhtmlsu31.html#x42-760006.5">psb_cdfree &#8212; Frees a communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.6 <a
href="userhtmlsu32.html#x43-770006.6">psb_cdbldext &#8212; Build an extended communication descriptor</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.7 <a
href="userhtmlsu33.html#x44-780006.7">psb_spall &#8212; Allocates a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.8 <a
href="userhtmlsu34.html#x45-790006.8">psb_spins &#8212; Insert a set of coefficients into a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.9 <a
href="userhtmlsu35.html#x46-800006.9">psb_spasb &#8212; Sparse matrix assembly routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.10 <a
href="userhtmlsu36.html#x47-810006.10">psb_spfree &#8212; Frees a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.11 <a
href="userhtmlsu37.html#x48-820006.11">psb_sprn &#8212; Reinit sparse matrix structure for psblas routines.</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.12 <a
href="userhtmlsu38.html#x49-830006.12">psb_geall &#8212; Allocates a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.13 <a
href="userhtmlsu39.html#x50-840006.13">psb_geins &#8212; Dense matrix insertion routine</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.14 <a
href="userhtmlsu40.html#x51-850006.14">psb_geasb &#8212; Assembly a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.15 <a
href="userhtmlsu41.html#x52-860006.15">psb_gefree &#8212; Frees a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.16 <a
href="userhtmlsu42.html#x53-870006.16">psb_gelp &#8212; Applies a left permutation to a dense matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.17 <a
href="userhtmlsu43.html#x54-880006.17">psb_glob_to_loc &#8212; Global to local indices convertion</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.18 <a
href="userhtmlsu44.html#x55-890006.18">psb_loc_to_glob &#8212; Local to global indices conversion</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.19 <a
href="userhtmlsu45.html#x56-900006.19">psb_is_owned &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.20 <a
href="userhtmlsu46.html#x57-910006.20">psb_owned_index &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.21 <a
href="userhtmlsu47.html#x58-920006.21">psb_is_local &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.22 <a
href="userhtmlsu48.html#x59-930006.22">psb_local_index &#8212; </a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.23 <a
href="userhtmlsu49.html#x60-940006.23">psb_get_boundary &#8212; Extract list of boundary elements</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.24 <a
href="userhtmlsu50.html#x61-950006.24">psb_get_overlap &#8212; Extract list of overlap elements</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.25 <a
href="userhtmlsu51.html#x62-960006.25">psb_sp_getrow &#8212; Extract row(s) from a sparse matrix</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.26 <a
href="userhtmlsu52.html#x63-970006.26">psb_sizeof &#8212; Memory occupation</a></span>
<br /> &#x00A0;<span class="subsectionToc" >6.27 <a
href="userhtmlsu53.html#x64-980006.27">Sorting utilities &#8212; </a></span>
</div>
<!--l. 2--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu56.html" >next</a>] [<a
href="userhtmlse5.html" >prev</a>] [<a
href="userhtmlse5.html#tailuserhtmlse5.html" >prev-tail</a>] [<a
href="userhtmlse6.html" >front</a>] [<a
href="userhtml.html#userhtmlsu29.html" >up</a>] </p></div>
<!--l. 2--><p class="indent" > <a
id="tailuserhtmlse6.html"></a>
</body></html>

@ -0,0 +1,87 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Parallel environment routines</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 2--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu73.html" >next</a>] [<a
href="userhtmlse6.html" >prev</a>] [<a
href="userhtmlse6.html#tailuserhtmlse6.html" >prev-tail</a>] [<a
href="userhtmlsu51.html#tailuserhtmlse7.html">tail</a>] [<a
href="userhtml.html#userhtmlsu56.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">7 </span> <a
id="x65-990007"></a>Parallel environment routines</h3>
<div class="subsectionTOCS">
&#x00A0;<span class="subsectionToc" >7.1 <a
href="userhtmlsu54.html#x66-1000007.1">psb_init &#8212; Initializes PSBLAS parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.2 <a
href="userhtmlsu55.html#x67-1010007.2">psb_info &#8212; Return information about PSBLAS parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.3 <a
href="userhtmlsu56.html#x68-1020007.3">psb_exit &#8212; Exit from PSBLAS parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.4 <a
href="userhtmlsu57.html#x69-1030007.4">psb_get_mpicomm &#8212; Get the MPI communicator</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.5 <a
href="userhtmlsu58.html#x70-1040007.5">psb_get_rank &#8212; Get the MPI rank</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.6 <a
href="userhtmlsu59.html#x71-1050007.6">psb_wtime &#8212; Wall clock timing</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.7 <a
href="userhtmlsu60.html#x72-1060007.7">psb_barrier &#8212; Sinchronization point parallel environment</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.8 <a
href="userhtmlsu61.html#x73-1070007.8">psb_abort &#8212; Abort a computation</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.9 <a
href="userhtmlsu62.html#x74-1080007.9">psb_bcast &#8212; Broadcast data</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.10 <a
href="userhtmlsu63.html#x75-1090007.10">psb_sum &#8212; Global sum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.11 <a
href="userhtmlsu64.html#x76-1100007.11">psb_max &#8212; Global maximum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.12 <a
href="userhtmlsu65.html#x77-1110007.12">psb_min &#8212; Global minimum</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.13 <a
href="userhtmlsu66.html#x78-1120007.13">psb_amx &#8212; Global maximum absolute value</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.14 <a
href="userhtmlsu67.html#x79-1130007.14">psb_amn &#8212; Global minimum absolute value</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.15 <a
href="userhtmlsu68.html#x80-1140007.15">psb_nrm2 &#8212; Global 2-norm reduction</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.16 <a
href="userhtmlsu69.html#x81-1150007.16">psb_snd &#8212; Send data</a></span>
<br /> &#x00A0;<span class="subsectionToc" >7.17 <a
href="userhtmlsu70.html#x82-1160007.17">psb_rcv &#8212; Receive data</a></span>
</div>
<!--l. 3--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu73.html" >next</a>] [<a
href="userhtmlse6.html" >prev</a>] [<a
href="userhtmlse6.html#tailuserhtmlse6.html" >prev-tail</a>] [<a
href="userhtmlse7.html" >front</a>] [<a
href="userhtml.html#userhtmlsu56.html" >up</a>] </p></div>
<!--l. 3--><p class="indent" > <a
id="tailuserhtmlse7.html"></a>
</body></html>

@ -0,0 +1,418 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Error handling</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 3--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu77.html" >next</a>] [<a
href="userhtmlse7.html" >prev</a>] [<a
href="userhtmlse7.html#tailuserhtmlse7.html" >prev-tail</a>] [<a
href="userhtmlsu68.html#tailuserhtmlse8.html">tail</a>] [<a
href="userhtml.html#userhtmlsu73.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">8 </span> <a
id="x83-1170008"></a>Error handling</h3>
<!--l. 5--><p class="noindent" >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 <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">info</span></span></span> 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 <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">info</span></span></span> 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.
<!--l. 23--><p class="indent" > Figure&#x00A0;<a
href="#x83-1170259">9<!--tex4ht:ref: fig:routerr --></a> shows the layout of a generic <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_foo</span></span></span> routine with respect to the
PSBLAS-2.0 error handling policy. It is possible to see how, whenever an error
condition is detected, the <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">info</span></span></span> variable is set to the corresponding error code which
is, then, pushed on top of the stack by means of the <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_errpush</span></span></span>. 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 <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb\_error</span></span></span> routine which prints the content of
the error stack and aborts the program execution, according to the choice
made by the user with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_set_erraction</span></span></span>. The default is to print the error
and terminate the program, but the user may choose to handle the error
explicitly.
<!--l. 40--><p class="indent" > <hr class="figure"><div class="figure"
>
<a
id="x83-1170259"></a>
<div class="center"
>
<!--l. 73--><p class="noindent" >
<div class="fbox"><div class="minipage"><!--l. 44-->
<div class="lstlisting" id="listing-9"><span class="label"><a
id="x83-117001r1"></a></span><span
class="cmbx-9">subroutine</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">psb</span><span
class="cmr-9">_foo</span><span
class="cmr-9">(</span><span
class="cmr-9">some</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">args</span><span
class="cmr-9">,</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">info</span><span
class="cmr-9">)</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117002r2"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">...</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117003r3"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">if</span><span
class="cmr-9">(</span><span
class="cmr-9">error</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">detected</span><span
class="cmr-9">)</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">then</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117004r4"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">info</span><span
class="cmr-9">=</span><span
class="cmr-9">errcode1</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117005r5"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">call</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">psb</span><span
class="cmr-9">_errpush</span><span
class="cmr-9">(</span><span
class="cmr-9">&#8217;</span><span
class="cmr-9">psb</span><span
class="cmr-9">_foo</span><span
class="cmr-9">&#8217;</span><span
class="cmr-9">,</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">errcode1</span><span
class="cmr-9">)</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117006r6"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">goto</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">9999</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117007r7"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">end</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">if</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117008r8"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">...</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117009r9"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">call</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">psb</span><span
class="cmr-9">_bar</span><span
class="cmr-9">(</span><span
class="cmr-9">some</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">args</span><span
class="cmr-9">,</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">info</span><span
class="cmr-9">)</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117010r10"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">if</span><span
class="cmr-9">(</span><span
class="cmr-9">info</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">.</span><span
class="cmbx-9">ne</span><span
class="cmr-9">.</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">zero</span><span
class="cmr-9">)</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">then</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117011r11"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">info</span><span
class="cmr-9">=</span><span
class="cmr-9">errcode2</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117012r12"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">call</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">psb</span><span
class="cmr-9">_errpush</span><span
class="cmr-9">(</span><span
class="cmr-9">&#8217;</span><span
class="cmr-9">psb</span><span
class="cmr-9">_foo</span><span
class="cmr-9">&#8217;</span><span
class="cmr-9">,</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">errcode2</span><span
class="cmr-9">)</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117013r13"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">goto</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">9999</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117014r14"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">end</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">if</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117015r15"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">...</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117016r16"></a></span><span
class="cmr-9">9999</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">continue</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117017r17"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">if</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">(</span><span
class="cmr-9">err</span><span
class="cmr-9">_act</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">.</span><span
class="cmbx-9">eq</span><span
class="cmr-9">.</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">act</span><span
class="cmr-9">_abort</span><span
class="cmr-9">)</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">then</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117018r18"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">call</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">psb</span><span
class="cmr-9">_error</span><span
class="cmr-9">(</span><span
class="cmr-9">icontxt</span><span
class="cmr-9">)</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117019r19"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">return</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117020r20"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">else</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117021r21"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">return</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117022r22"></a></span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">end</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">if</span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117023r23"></a></span><span
class="cmr-9">&#x00A0;</span><br /><span class="label"><a
id="x83-117024r24"></a></span><span
class="cmbx-9">end</span><span
class="cmr-9">&#x00A0;</span><span
class="cmbx-9">subroutine</span><span
class="cmr-9">&#x00A0;</span><span
class="cmr-9">psb</span><span
class="cmr-9">_foo</span>
</div> </div> </div>
</div>
<br /> <div class="caption"
><span class="id">Figure&#x00A0;9: </span><span
class="content">The layout of a generic <span
class="cmtt-10">psb</span><span
class="cmtt-10">_foo </span>routine with respect to PSBLAS-2.0
error handling policy.</span></div><!--tex4ht:label?: x83-1170259 -->
<!--l. 78--><p class="indent" > </div><hr class="endfigure">
<!--l. 83--><p class="indent" > Figure&#x00A0;<a
href="#x83-11702610">10<!--tex4ht:ref: fig:errormsg --></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 &#8220;FOO&#8221; storage format to represent the sparse matrix. From this
error message it is possible to see that the error has been detected inside
the <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cest</span></span></span> subroutine called by <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spasb</span></span></span> ... by process 0 (i.e. the root
process).
<!--l. 91--><p class="indent" > <hr class="figure"><div class="figure"
>
<a
id="x83-11702610"></a>
<div class="center"
>
<!--l. 113--><p class="noindent" >
<div class="fbox"><div class="minipage"><div class="verbatim" id="verbatim-95">
==========================================================
&#x00A0;<br />Process:&#x00A0;0.&#x00A0;&#x00A0;PSBLAS&#x00A0;Error&#x00A0;(4010)&#x00A0;in&#x00A0;subroutine:&#x00A0;df_sample
&#x00A0;<br />Error&#x00A0;from&#x00A0;call&#x00A0;to&#x00A0;subroutine&#x00A0;mat&#x00A0;dist
&#x00A0;<br />==========================================================
&#x00A0;<br />Process:&#x00A0;0.&#x00A0;&#x00A0;PSBLAS&#x00A0;Error&#x00A0;(4010)&#x00A0;in&#x00A0;subroutine:&#x00A0;mat_distv
&#x00A0;<br />Error&#x00A0;from&#x00A0;call&#x00A0;to&#x00A0;subroutine&#x00A0;psb_spasb
&#x00A0;<br />==========================================================
&#x00A0;<br />Process:&#x00A0;0.&#x00A0;&#x00A0;PSBLAS&#x00A0;Error&#x00A0;(4010)&#x00A0;in&#x00A0;subroutine:&#x00A0;psb_spasb
&#x00A0;<br />Error&#x00A0;from&#x00A0;call&#x00A0;to&#x00A0;subroutine&#x00A0;psb_cest
&#x00A0;<br />==========================================================
&#x00A0;<br />Process:&#x00A0;0.&#x00A0;&#x00A0;PSBLAS&#x00A0;Error&#x00A0;(136)&#x00A0;in&#x00A0;subroutine:&#x00A0;psb_cest
&#x00A0;<br />Format&#x00A0;FOO&#x00A0;is&#x00A0;unknown
&#x00A0;<br />==========================================================
&#x00A0;<br />Aborting...
</div>
<!--l. 109--><p class="nopar" > </div> </div>
</div>
<br /> <div class="caption"
><span class="id">Figure&#x00A0;10: </span><span
class="content">A sample PSBLAS-2.0 error message. Process 0 detected an error
condition inside the psb_cest subroutine</span></div><!--tex4ht:label?: x83-11702610 -->
<!--l. 119--><p class="indent" > </div><hr class="endfigure">
<div class="subsectionTOCS">
&#x00A0;<span class="subsectionToc" >8.1 <a
href="userhtmlsu71.html#x84-1180008.1">psb_errpush &#8212; Pushes an error code onto the error stack</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.2 <a
href="userhtmlsu72.html#x85-1190008.2">psb_error &#8212; Prints the error stack content and aborts execution</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.3 <a
href="userhtmlsu73.html#x86-1200008.3">psb_set_errverbosity &#8212; Sets the verbosity of error messages</a></span>
<br /> &#x00A0;<span class="subsectionToc" >8.4 <a
href="userhtmlsu74.html#x87-1210008.4">psb_set_erraction &#8212; Set the type of action to be taken upon error condition</a></span>
</div>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu77.html" >next</a>] [<a
href="userhtmlse7.html" >prev</a>] [<a
href="userhtmlse7.html#tailuserhtmlse7.html" >prev-tail</a>] [<a
href="userhtmlse8.html" >front</a>] [<a
href="userhtml.html#userhtmlsu73.html" >up</a>] </p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlse8.html"></a>
</body></html>

@ -0,0 +1,57 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Utilities</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu83.html" >next</a>] [<a
href="userhtmlse8.html" >prev</a>] [<a
href="userhtmlse8.html#tailuserhtmlse8.html" >prev-tail</a>] [<a
href="userhtmlsu72.html#tailuserhtmlse9.html">tail</a>] [<a
href="userhtml.html#userhtmlsu77.html" >up</a>] </p></div>
<h3 class="sectionHead"><span class="titlemark">9 </span> <a
id="x88-1220009"></a>Utilities</h3>
<!--l. 4--><p class="noindent" >We have some utilities available for input and output of sparse matrices; the
interfaces to these routines are available in the module <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_util_mod</span></span></span>.
<div class="subsectionTOCS">
&#x00A0;<span class="subsectionToc" >9.1 <a
href="userhtmlsu75.html#x89-1230009.1"> hb_read &#8212; Read a sparse matrix from a file in the Harwell&#8211;Boeing format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.2 <a
href="userhtmlsu76.html#x90-1240009.2">hb_write &#8212; Write a sparse matrix to a file in the Harwell&#8211;Boeing format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.3 <a
href="userhtmlsu77.html#x91-1250009.3">mm_mat_read &#8212; Read a sparse matrix from a file in the MatrixMarket format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.4 <a
href="userhtmlsu78.html#x92-1260009.4">mm_array_read &#8212; Read a dense array from a file in the MatrixMarket format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.5 <a
href="userhtmlsu79.html#x93-1270009.5">mm_mat_write &#8212; Write a sparse matrix to a file in the MatrixMarket format</a></span>
<br /> &#x00A0;<span class="subsectionToc" >9.6 <a
href="userhtmlsu80.html#x94-1280009.6">mm_array_write &#8212; Write a dense array from a file in the MatrixMarket format</a></span>
</div>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu83.html" >next</a>] [<a
href="userhtmlse8.html" >prev</a>] [<a
href="userhtmlse8.html#tailuserhtmlse8.html" >prev-tail</a>] [<a
href="userhtmlse9.html" >front</a>] [<a
href="userhtml.html#userhtmlsu77.html" >up</a>] </p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlse9.html"></a>
</body></html>

@ -0,0 +1,149 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Basic Nomenclature</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 155--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu4.html" >next</a>] [<a
href="#tailuserhtmlsu1.html">tail</a>] [<a
href="userhtmlse2.html#userhtmlsu2.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">2.1 </span> <a
id="x6-40002.1"></a>Basic Nomenclature</h4>
<!--l. 158--><p class="noindent" >Our computational model implies that the data allocation on the parallel distributed
memory machine is guided by the structure of the physical model, and specifically by
the discretization mesh of the PDE.
<!--l. 163--><p class="indent" > Each point of the discretization mesh will have (at least) one associated
equation/variable, and therefore one index. We say that point <span
class="cmmi-10">i </span><span
class="cmti-10">depends </span>on point <span
class="cmmi-10">j </span>if
the equation for a variable associated with <span
class="cmmi-10">i </span>contains a term in <span
class="cmmi-10">j</span>, or equivalently if
<span
class="cmmi-10">a</span><sub><span
class="cmmi-7">ij</span></sub><span
class="cmmi-10">&#x2260;</span>0. After the partition of the discretization mesh into <span
class="cmti-10">sub-domains </span>assigned
to the parallel processes, we classify the points of a given sub-domain as
following.
<dl class="description"><dt class="description">
<span
class="cmbx-10">Internal.</span> </dt><dd
class="description">An internal point of a given domain <span
class="cmti-10">depends </span>only on points of the
same domain. If all points of a domain are assigned to one process, then
a computational step (e.g., a matrix-vector product) of the equations
associated with the internal points requires no data items from other
domains and no communications.
</dd><dt class="description">
<span
class="cmbx-10">Boundary.</span> </dt><dd
class="description">A point of a given domain is a boundary point if it <span
class="cmti-10">depends </span>on
points belonging to other domains.
</dd><dt class="description">
<span
class="cmbx-10">Halo.</span> </dt><dd
class="description">A halo point for a given domain is a point belonging to another domain
such that there is a boundary point which <span
class="cmti-10">depends </span>on it. Whenever performing
a computational step, such as a matrix-vector product, the values associated
with halo points are requested from other domains. A boundary point of a
given domain is usually a halo point for some other domain<span class="footnote-mark"><a
href="userhtml7.html#fn2x0"><sup class="textsuperscript">2</sup></a></span><a
id="x6-4001f2"></a> ;
therefore the cardinality of the boundary points set denotes the amount
of data sent to other domains.
</dd><dt class="description">
<span
class="cmbx-10">Overlap.</span> </dt><dd
class="description">An overlap point is a boundary point assigned to multiple domains.
Any operation that involves an overlap point has to be replicated for each
assignment.</dd></dl>
<!--l. 202--><p class="noindent" >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&#x00A0;<span class="cite">[<a
href="userhtmlli2.html#X2007c">4</a>,&#x00A0;<a
href="userhtmlli2.html#X2007d">3</a>]</span>.
<!--l. 207--><p class="indent" > We denote the sets of internal, boundary and halo points for a given subdomain
by <span
class="cmsy-10"><img
src="cmsy10-49.png" alt="I" class="10x-x-49" /></span>, <span
class="cmsy-10"><img
src="cmsy10-42.png" alt="B" class="10x-x-42" /> </span>and <span
class="cmsy-10"><img
src="cmsy10-48.png" alt="H" class="10x-x-48" /></span>. Each subdomain is assigned to one process; each process usually owns
one subdomain, although the user may choose to assign more than one subdomain to
a process. If each process <span
class="cmmi-10">i </span>owns one subdomain, the number of rows in
the local sparse matrix is <span
class="cmsy-10">|<img
src="cmsy10-49.png" alt="I" class="10x-x-49" /></span><sub><span
class="cmmi-7">i</span></sub><span
class="cmsy-10">| </span>+ <span
class="cmsy-10">|<img
src="cmsy10-42.png" alt="B" class="10x-x-42" /></span><sub><span
class="cmmi-7">i</span></sub><span
class="cmsy-10">|</span>, and the number of local columns (i.e.
those for which there exists at least one non-zero entry in the local rows) is
<span
class="cmsy-10">|<img
src="cmsy10-49.png" alt="I" class="10x-x-49" /></span><sub><span
class="cmmi-7">i</span></sub><span
class="cmsy-10">| </span>+ <span
class="cmsy-10">|<img
src="cmsy10-42.png" alt="B" class="10x-x-42" /></span><sub><span
class="cmmi-7">i</span></sub><span
class="cmsy-10">| </span>+ <span
class="cmsy-10">|<img
src="cmsy10-48.png" alt="H" class="10x-x-48" /></span><sub><span
class="cmmi-7">i</span></sub><span
class="cmsy-10">|</span>.
<!--l. 217--><p class="indent" > <hr class="figure"><div class="figure"
>
<a
id="x6-40022"></a>
<div class="center"
>
<!--l. 218--><p class="noindent" >
<!--l. 221--><p class="noindent" ><img
src="userhtml1x.png" alt="PIC" class="graphics" width="200" height="179" ><!--tex4ht:graphics
name="userhtml1x.png" src="figures/points.eps"
--></div>
<br /> <div class="caption"
><span class="id">Figure&#x00A0;2: </span><span
class="content">Point classfication.</span></div><!--tex4ht:label?: x6-40022 -->
<!--l. 227--><p class="indent" > </div><hr class="endfigure">
<!--l. 229--><p class="indent" > This classification of mesh points guides the naming scheme that we adopted in
the library internals and in the data structures. We explicitly note that &#8220;Halo&#8221; points
are also often called &#8220;ghost&#8221; points in the literature.
<!--l. 236--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu4.html" >next</a>] [<a
href="userhtmlsu1.html" >front</a>] [<a
href="userhtmlse2.html#userhtmlsu2.html" >up</a>] </p></div>
<!--l. 236--><p class="indent" > <a
id="tailuserhtmlsu1.html"></a>
</body></html>

@ -0,0 +1,233 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_geaxpby &#8212; General Dense Matrix Sum</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 8--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu14.html" >next</a>] [<a
href="userhtmlsu8.html#tailuserhtmlsu10.html">tail</a>] [<a
href="userhtmlsu12.html#userhtmlsu13.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">4.1 </span> <a
id="x19-530004.1"></a>psb_geaxpby &#8212; General Dense Matrix Sum</h4>
<!--l. 10--><p class="noindent" >This subroutine is an interface to the computational kernel for dense matrix
sum:
<center class="math-display" >
<img
src="userhtml3x.png" alt="y &#x2190; &#x03B1; x+ &#x03B2;y
" class="math-display" ></center>
<!--l. 12--><p class="nopar" >
<div class="verbatim" id="verbatim-37">
call&#x00A0;psb_geaxpby(alpha,&#x00A0;x,&#x00A0;beta,&#x00A0;y,&#x00A0;desc_a,&#x00A0;info)
</div>
<!--l. 21--><p class="nopar" >
<div class="table">
<!--l. 25--><p class="indent" > <a
id="x19-530011"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 26--><p class="noindent" >
<div class="tabular"> <table id="TBL-1" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-1-1g"><col
id="TBL-1-1"><col
id="TBL-1-2"></colgroup><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-1-1"
class="td11"><span
class="cmmi-10">x</span>, <span
class="cmmi-10">y</span>, <span
class="cmmi-10">&#x03B1;</span>, <span
class="cmmi-10">&#x03B2; </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-1-1-2"
class="td11"><span
class="cmbx-10">Subroutine</span></td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-2-1"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-2-2"
class="td11">psb_geaxpby</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-1-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-3-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-3-2"
class="td11">psb_geaxpby</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-1-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-4-1"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-1-4-2"
class="td11">psb_geaxpby</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-1-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-5-1"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-1-5-2"
class="td11">psb_geaxpby</td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-6-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;1: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x19-530011 -->
</div><hr class="endfloat" />
</div>
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">alpha</span> </dt><dd
class="description">the scalar <span
class="cmmi-10">&#x03B1;</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a number of the data type indicated in Table&#x00A0;<a
href="#x19-530011">1<!--tex4ht:ref: tab:f90axpby --></a>.
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">x</span>.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x19-530011">1<!--tex4ht:ref: tab:f90axpby --></a>. The
rank of <span
class="cmmi-10">x </span>must be the same of <span
class="cmmi-10">y</span>.
</dd><dt class="description">
<span
class="cmbx-10">beta</span> </dt><dd
class="description">the scalar <span
class="cmmi-10">&#x03B2;</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a number of the data type indicated in Table&#x00A0;<a
href="#x19-530011">1<!--tex4ht:ref: tab:f90axpby --></a>.
</dd><dt class="description">
<span
class="cmbx-10">y</span> </dt><dd
class="description">the local portion of the global dense matrix <span
class="cmmi-10">y</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of the type indicated in Table&#x00A0;<a
href="#x19-530011">1<!--tex4ht:ref: tab:f90axpby --></a>.
The rank of <span
class="cmmi-10">y </span>must be the same of <span
class="cmmi-10">x</span>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd></dl>
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">y</span> </dt><dd
class="description">the local portion of result submatrix <span
class="cmmi-10">y</span>.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of the type indicated in Table&#x00A0;<a
href="#x19-530011">1<!--tex4ht:ref: tab:f90axpby --></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 113--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu14.html" >next</a>] [<a
href="userhtmlsu10.html" >front</a>] [<a
href="userhtmlsu12.html#userhtmlsu13.html" >up</a>] </p></div>
<!--l. 113--><p class="indent" > <a
id="tailuserhtmlsu10.html"></a>
</body></html>

@ -0,0 +1,249 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_gedot &#8212; Dot Product</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 113--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu15.html" >next</a>] [<a
href="userhtmlsu10.html" >prev</a>] [<a
href="userhtmlsu10.html#tailuserhtmlsu10.html" >prev-tail</a>] [<a
href="userhtmlsu9.html#tailuserhtmlsu11.html">tail</a>] [<a
href="userhtmlsu12.html#userhtmlsu14.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">4.2 </span> <a
id="x20-540004.2"></a>psb_gedot &#8212; Dot Product</h4>
<!--l. 115--><p class="noindent" >This function computes dot product between two vectors <span
class="cmmi-10">x </span>and <span
class="cmmi-10">y</span>.<br
class="newline" />If <span
class="cmmi-10">x </span>and <span
class="cmmi-10">y </span>are real vectors it computes dot-product as:
<center class="math-display" >
<img
src="userhtml4x.png" alt=" T
dot &#x2190; x y
" class="math-display" ></center>
<!--l. 119--><p class="nopar" > Else if <span
class="cmmi-10">x </span>and <span
class="cmmi-10">y </span>are complex vectors then it computes dot-product as:
<center class="math-display" >
<img
src="userhtml5x.png" alt="dot &#x2190; xHy
" class="math-display" ></center>
<!--l. 121--><p class="nopar" >
<div class="verbatim" id="verbatim-38">
psb_gedot(x,&#x00A0;y,&#x00A0;desc_a,&#x00A0;info&#x00A0;[,global])
</div>
<!--l. 130--><p class="nopar" > <div class="table">
<!--l. 132--><p class="indent" > <a
id="x20-540012"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 133--><p class="noindent" >
<div class="tabular"> <table id="TBL-2" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-2-1g"><col
id="TBL-2-1"><col
id="TBL-2-2"></colgroup><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-1"
class="td11"><span
class="cmmi-10">dot</span>, <span
class="cmmi-10">x</span>, <span
class="cmmi-10">y </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-2"
class="td11"><span
class="cmbx-10">Function</span></td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-1"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-2"
class="td11">psb_gedot</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-2"
class="td11">psb_gedot</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-1"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-2"
class="td11">psb_gedot</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-1"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-2"
class="td11">psb_gedot</td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;2: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x20-540012 -->
</div><hr class="endfloat" />
</div>
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">x</span>.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x20-540012">2<!--tex4ht:ref: tab:f90dot --></a>. The
rank of <span
class="cmmi-10">x </span>must be the same of <span
class="cmmi-10">y</span>.
</dd><dt class="description">
<span
class="cmbx-10">y</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">y</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x20-540012">2<!--tex4ht:ref: tab:f90dot --></a>. The
rank of <span
class="cmmi-10">y </span>must be the same of <span
class="cmmi-10">x</span>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">global</span> </dt><dd
class="description">Specifies whether the computation should include the global reduction
across all processes.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a logical scalar. Default: <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">global=.true.</span></span></span><br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">Function value</span> </dt><dd
class="description">is the dot product of vectors <span
class="cmmi-10">x </span>and <span
class="cmmi-10">y</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span>unless the optional variable <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">global=.false.</span></span></span> has been
specified<br
class="newline" />Specified as: a number of the data type indicated in Table&#x00A0;<a
href="#x20-540012">2<!--tex4ht:ref: tab:f90dot --></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 207--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x20-54003x1">The computation of a global result requires a global communication, which
entails a significant overhead. It may be necessary and/or advisable to
compute multiple dot products at the same time; in this case, it is
possible to improve the runtime efficiency by using the following scheme:
<!--l. 214-->
<div class="lstlisting" id="listing-1"><span class="label"><a
id="x20-54004r1"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;vres(1)&#x00A0;=&#x00A0;psb_gedot(x1,y1,desc_a,info,global=.<span
class="cmbx-10">false</span>.)&#x00A0;<br /><span class="label"><a
id="x20-54005r2"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;vres(2)&#x00A0;=&#x00A0;psb_gedot(x2,y2,desc_a,info,global=.<span
class="cmbx-10">false</span>.)&#x00A0;<br /><span class="label"><a
id="x20-54006r3"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;vres(3)&#x00A0;=&#x00A0;psb_gedot(x3,y3,desc_a,info,global=.<span
class="cmbx-10">false</span>.)&#x00A0;<br /><span class="label"><a
id="x20-54007r4"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
class="cmbx-10">call</span>&#x00A0;psb_sum(ictxt,vres(1:3))
</div>
<!--l. 220--><p class="noindent" >In this way the global communication, which for small sizes is a latency-bound
operation, is invoked only once.</li></ol>
<!--l. 230--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu15.html" >next</a>] [<a
href="userhtmlsu10.html" >prev</a>] [<a
href="userhtmlsu10.html#tailuserhtmlsu10.html" >prev-tail</a>] [<a
href="userhtmlsu11.html" >front</a>] [<a
href="userhtmlsu12.html#userhtmlsu14.html" >up</a>] </p></div>
<!--l. 230--><p class="indent" > <a
id="tailuserhtmlsu11.html"></a>
</body></html>

@ -0,0 +1,208 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_gedots &#8212; Generalized Dot Product</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 230--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu16.html" >next</a>] [<a
href="userhtmlsu11.html" >prev</a>] [<a
href="userhtmlsu11.html#tailuserhtmlsu11.html" >prev-tail</a>] [<a
href="userhtmlse4.html#tailuserhtmlsu12.html">tail</a>] [<a
href="userhtmlsu12.html#userhtmlsu15.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">4.3 </span> <a
id="x21-550004.3"></a>psb_gedots &#8212; Generalized Dot Product</h4>
<!--l. 232--><p class="noindent" >This subroutine computes a series of dot products among the columns of two dense
matrices <span
class="cmmi-10">x </span>and <span
class="cmmi-10">y</span>:
<center class="math-display" >
<img
src="userhtml6x.png" alt=" T
res(i) &#x2190; x(:,i) y(:,i)
" class="math-display" ></center>
<!--l. 234--><p class="nopar" > If the matrices are complex, then the usual convention applies, i.e. the conjugate
transpose of <span
class="cmmi-10">x </span>is used. If <span
class="cmmi-10">x </span>and <span
class="cmmi-10">y </span>are of rank one, then <span
class="cmmi-10">res </span>is a scalar, else it is a rank
one array.
<div class="verbatim" id="verbatim-39">
call&#x00A0;psb_gedots(res,&#x00A0;x,&#x00A0;y,&#x00A0;desc_a,&#x00A0;info)
</div>
<!--l. 242--><p class="nopar" > <div class="table">
<!--l. 243--><p class="indent" > <a
id="x21-550013"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 244--><p class="noindent" >
<div class="tabular"> <table id="TBL-3" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-3-1g"><col
id="TBL-3-1"><col
id="TBL-3-2"></colgroup><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-3-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-1"
class="td11"><span
class="cmmi-10">res</span>, <span
class="cmmi-10">x</span>, <span
class="cmmi-10">y </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-2"
class="td11"><span
class="cmbx-10">Subroutine</span></td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-3-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-1"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-2"
class="td11">psb_gedots </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-3-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-2"
class="td11">psb_gedots </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-3-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-1"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-2"
class="td11">psb_gedots </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-3-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-1"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-2"
class="td11">psb_gedots </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-3-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;3: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x21-550013 -->
</div><hr class="endfloat" />
</div>
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">x</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x21-550013">3<!--tex4ht:ref: tab:f90mdot --></a>. The
rank of <span
class="cmmi-10">x </span>must be the same of <span
class="cmmi-10">y</span>.
</dd><dt class="description">
<span
class="cmbx-10">y</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">y</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x21-550013">3<!--tex4ht:ref: tab:f90mdot --></a>. The
rank of <span
class="cmmi-10">y </span>must be the same of <span
class="cmmi-10">x</span>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">res</span> </dt><dd
class="description">is the dot product of vectors <span
class="cmmi-10">x </span>and <span
class="cmmi-10">y</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: a number or a rank-one array of the data type indicated in
Table&#x00A0;<a
href="userhtmlsu11.html#x20-540012">2<!--tex4ht:ref: tab:f90dot --></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 303--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu16.html" >next</a>] [<a
href="userhtmlsu11.html" >prev</a>] [<a
href="userhtmlsu11.html#tailuserhtmlsu11.html" >prev-tail</a>] [<a
href="userhtmlsu12.html" >front</a>] [<a
href="userhtmlsu12.html#userhtmlsu15.html" >up</a>] </p></div>
<!--l. 303--><p class="indent" > <a
id="tailuserhtmlsu12.html"></a>
</body></html>

@ -0,0 +1,223 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_normi &#8212; Infinity-Norm of Vector</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 303--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu17.html" >next</a>] [<a
href="userhtmlsu12.html" >prev</a>] [<a
href="userhtmlsu12.html#tailuserhtmlsu12.html" >prev-tail</a>] [<a
href="userhtmlsu10.html#tailuserhtmlsu13.html">tail</a>] [<a
href="userhtmlsu12.html#userhtmlsu16.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">4.4 </span> <a
id="x22-560004.4"></a>psb_normi &#8212; Infinity-Norm of Vector</h4>
<!--l. 305--><p class="noindent" >This function computes the infinity-norm of a vector <span
class="cmmi-10">x</span>.<br
class="newline" />If <span
class="cmmi-10">x </span>is a real vector it computes infinity norm as:
<center class="math-display" >
<img
src="userhtml7x.png" alt="amax &#x2190; maxi |xi|
" class="math-display" ></center>
<!--l. 309--><p class="nopar" > else if <span
class="cmmi-10">x </span>is a complex vector then it computes the infinity-norm as:
<center class="math-display" >
<img
src="userhtml8x.png" alt="amax &#x2190; maxi (|re(xi)|+ |im(xi)|)
" class="math-display" ></center>
<!--l. 311--><p class="nopar" >
<div class="verbatim" id="verbatim-40">
psb_geamax(x,&#x00A0;desc_a,&#x00A0;info&#x00A0;[,global])
&#x00A0;<br />psb_normi(x,&#x00A0;desc_a,&#x00A0;info&#x00A0;[,global])
</div>
<!--l. 320--><p class="nopar" >
<div class="table">
<!--l. 323--><p class="indent" > <a
id="x22-560014"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 324--><p class="noindent" >
<div class="tabular"> <table id="TBL-4" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-4-1g"><col
id="TBL-4-1"><col
id="TBL-4-2"><col
id="TBL-4-3"></colgroup><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-4-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-1"
class="td11"><span
class="cmmi-10">amax </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-2"
class="td11"><span
class="cmmi-10">x </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-3"
class="td11"><span
class="cmbx-10">Function </span></td></tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-4-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-1"
class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-2"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-3"
class="td11">psb_geamax</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-4-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-2"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-3"
class="td11">psb_geamax</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-4-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-1"
class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-2"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-3"
class="td11">psb_geamax</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-4-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-2"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-3"
class="td11">psb_geamax</td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-4-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;4: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x22-560014 -->
</div><hr class="endfloat" />
</div>
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">x</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x22-560014">4<!--tex4ht:ref: tab:f90amax --></a>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">global</span> </dt><dd
class="description">Specifies whether the computation should include the global reduction
across all processes.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a logical scalar. Default: <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">global=.true.</span></span></span><br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">Function value</span> </dt><dd
class="description">is the infinity norm of vector <span
class="cmmi-10">x</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span>unless the optional variable <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">global=.false.</span></span></span> has been
specified<br
class="newline" />Specified as: a long precision real number.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 383--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x22-56003x1">The computation of a global result requires a global communication, which
entails a significant overhead. It may be necessary and/or advisable to compute
multiple norms at the same time; in this case, it is possible to improve the
runtime efficiency by using the following scheme: <!--l. 390-->
<div class="lstlisting" id="listing-2"><span class="label"><a
id="x22-56004r1"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;vres(1)&#x00A0;=&#x00A0;psb_geamax(x1,desc_a,info,global=.<span
class="cmbx-10">false</span>.)&#x00A0;<br /><span class="label"><a
id="x22-56005r2"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;vres(2)&#x00A0;=&#x00A0;psb_geamax(x2,desc_a,info,global=.<span
class="cmbx-10">false</span>.)&#x00A0;<br /><span class="label"><a
id="x22-56006r3"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;vres(3)&#x00A0;=&#x00A0;psb_geamax(x3,desc_a,info,global=.<span
class="cmbx-10">false</span>.)&#x00A0;<br /><span class="label"><a
id="x22-56007r4"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
class="cmbx-10">call</span>&#x00A0;psb_amx(ictxt,vres(1:3))
</div>
<!--l. 396--><p class="noindent" >In this way the global communication, which for small sizes is a latency-bound
operation, is invoked only once.</li></ol>
<!--l. 406--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu17.html" >next</a>] [<a
href="userhtmlsu12.html" >prev</a>] [<a
href="userhtmlsu12.html#tailuserhtmlsu12.html" >prev-tail</a>] [<a
href="userhtmlsu13.html" >front</a>] [<a
href="userhtmlsu12.html#userhtmlsu16.html" >up</a>] </p></div>
<!--l. 406--><p class="indent" > <a
id="tailuserhtmlsu13.html"></a>
</body></html>

@ -0,0 +1,177 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_geamaxs &#8212; Generalized Infinity Norm</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 406--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu18.html" >next</a>] [<a
href="userhtmlsu13.html" >prev</a>] [<a
href="userhtmlsu13.html#tailuserhtmlsu13.html" >prev-tail</a>] [<a
href="userhtmlsu11.html#tailuserhtmlsu14.html">tail</a>] [<a
href="userhtmlsu12.html#userhtmlsu17.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">4.5 </span> <a
id="x23-570004.5"></a>psb_geamaxs &#8212; Generalized Infinity Norm</h4>
<!--l. 408--><p class="noindent" >This subroutine computes a series of infinity norms on the columns of a dense matrix
<span
class="cmmi-10">x</span>:
<center class="math-display" >
<img
src="userhtml9x.png" alt="res(i) &#x2190; makx|x(k,i)|
" class="math-display" ></center>
<!--l. 410--><p class="nopar" >
<div class="verbatim" id="verbatim-41">
call&#x00A0;psb_geamaxs(res,&#x00A0;x,&#x00A0;desc_a,&#x00A0;info)
</div>
<!--l. 414--><p class="nopar" >
<div class="table">
<!--l. 416--><p class="indent" > <a
id="x23-570015"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 417--><p class="noindent" >
<div class="tabular"> <table id="TBL-5" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-5-1g"><col
id="TBL-5-1"><col
id="TBL-5-2"><col
id="TBL-5-3"></colgroup><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-5-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-1"
class="td11"><span
class="cmmi-10">res </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-2"
class="td11"><span
class="cmmi-10">x </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-3"
class="td11"><span
class="cmbx-10">Subroutine </span></td></tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-5-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-1"
class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-2"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-3"
class="td11">psb_geamaxs</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-5-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-2"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-3"
class="td11">psb_geamaxs</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-5-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-1"
class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-2"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-3"
class="td11">psb_geamaxs</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-5-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-2"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-3"
class="td11">psb_geamaxs</td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-5-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;5: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x23-570015 -->
</div><hr class="endfloat" />
</div>
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">x</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x23-570015">5<!--tex4ht:ref: tab:f90mamax --></a>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">res</span> </dt><dd
class="description">is the infinity norm of the columns of <span
class="cmmi-10">x</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: a number or a rank-one array of long precision real numbers.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 467--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu18.html" >next</a>] [<a
href="userhtmlsu13.html" >prev</a>] [<a
href="userhtmlsu13.html#tailuserhtmlsu13.html" >prev-tail</a>] [<a
href="userhtmlsu14.html" >front</a>] [<a
href="userhtmlsu12.html#userhtmlsu17.html" >up</a>] </p></div>
<!--l. 467--><p class="indent" > <a
id="tailuserhtmlsu14.html"></a>
</body></html>

@ -0,0 +1,224 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_norm1 &#8212; 1-Norm of Vector</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 467--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu19.html" >next</a>] [<a
href="userhtmlsu14.html" >prev</a>] [<a
href="userhtmlsu14.html#tailuserhtmlsu14.html" >prev-tail</a>] [<a
href="userhtmlsu12.html#tailuserhtmlsu15.html">tail</a>] [<a
href="userhtmlsu12.html#userhtmlsu18.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">4.6 </span> <a
id="x24-580004.6"></a>psb_norm1 &#8212; 1-Norm of Vector</h4>
<!--l. 469--><p class="noindent" >This function computes the 1-norm of a vector <span
class="cmmi-10">x</span>.<br
class="newline" />If <span
class="cmmi-10">x </span>is a real vector it computes 1-norm as:
<center class="math-display" >
<img
src="userhtml10x.png" alt="asum &#x2190; &#x2225;xi&#x2225;
" class="math-display" ></center>
<!--l. 472--><p class="nopar" > else if <span
class="cmmi-10">x </span>is a complex vector then it computes 1-norm as:
<center class="math-display" >
<img
src="userhtml11x.png" alt="asum &#x2190; &#x2225;re(x)&#x2225; + &#x2225;im (x)&#x2225;
1 1
" class="math-display" ></center>
<!--l. 474--><p class="nopar" >
<div class="verbatim" id="verbatim-42">
psb_geasum(x,&#x00A0;desc_a,&#x00A0;info&#x00A0;[,global])
&#x00A0;<br />psb_norm1(x,&#x00A0;desc_a,&#x00A0;info&#x00A0;[,global])
</div>
<!--l. 480--><p class="nopar" >
<div class="table">
<!--l. 482--><p class="indent" > <a
id="x24-580016"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 483--><p class="noindent" >
<div class="tabular"> <table id="TBL-6" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-6-1g"><col
id="TBL-6-1"><col
id="TBL-6-2"><col
id="TBL-6-3"></colgroup><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-6-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-1"
class="td11"><span
class="cmmi-10">asum </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-2"
class="td11"><span
class="cmmi-10">x </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-3"
class="td11"><span
class="cmbx-10">Function </span></td></tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-6-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-1"
class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-2"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-3"
class="td11">psb_geasum</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-6-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-2"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-3"
class="td11">psb_geasum</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-6-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-1"
class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-2"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-3"
class="td11">psb_geasum</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-6-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-2"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-3"
class="td11">psb_geasum</td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-6-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-6-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;6: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x24-580016 -->
</div><hr class="endfloat" />
</div>
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">x</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x24-580016">6<!--tex4ht:ref: tab:f90asum --></a>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">global</span> </dt><dd
class="description">Specifies whether the computation should include the global reduction
across all processes.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a logical scalar. Default: <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">global=.true.</span></span></span><br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">Function value</span> </dt><dd
class="description">is the 1-norm of vector <span
class="cmmi-10">x</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span>unless the optional variable <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">global=.false.</span></span></span> has been
specified<br
class="newline" />Specified as: a long precision real number.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 536--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x24-58003x1">The computation of a global result requires a global communication, which
entails a significant overhead. It may be necessary and/or advisable to compute
multiple norms at the same time; in this case, it is possible to improve the
runtime efficiency by using the following scheme: <!--l. 543-->
<div class="lstlisting" id="listing-3"><span class="label"><a
id="x24-58004r1"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;vres(1)&#x00A0;=&#x00A0;psb_geasum(x1,desc_a,info,global=.<span
class="cmbx-10">false</span>.)&#x00A0;<br /><span class="label"><a
id="x24-58005r2"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;vres(2)&#x00A0;=&#x00A0;psb_geasum(x2,desc_a,info,global=.<span
class="cmbx-10">false</span>.)&#x00A0;<br /><span class="label"><a
id="x24-58006r3"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;vres(3)&#x00A0;=&#x00A0;psb_geasum(x3,desc_a,info,global=.<span
class="cmbx-10">false</span>.)&#x00A0;<br /><span class="label"><a
id="x24-58007r4"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
class="cmbx-10">call</span>&#x00A0;psb_sum(ictxt,vres(1:3))
</div>
<!--l. 549--><p class="noindent" >In this way the global communication, which for small sizes is a latency-bound
operation, is invoked only once.</li></ol>
<!--l. 554--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu19.html" >next</a>] [<a
href="userhtmlsu14.html" >prev</a>] [<a
href="userhtmlsu14.html#tailuserhtmlsu14.html" >prev-tail</a>] [<a
href="userhtmlsu15.html" >front</a>] [<a
href="userhtmlsu12.html#userhtmlsu18.html" >up</a>] </p></div>
<!--l. 554--><p class="indent" > <a
id="tailuserhtmlsu15.html"></a>
</body></html>

@ -0,0 +1,192 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_geasums &#8212; Generalized 1-Norm of Vector</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 554--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu20.html" >next</a>] [<a
href="userhtmlsu15.html" >prev</a>] [<a
href="userhtmlsu15.html#tailuserhtmlsu15.html" >prev-tail</a>] [<a
href="userhtmlsu13.html#tailuserhtmlsu16.html">tail</a>] [<a
href="userhtmlsu12.html#userhtmlsu19.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">4.7 </span> <a
id="x25-590004.7"></a>psb_geasums &#8212; Generalized 1-Norm of Vector</h4>
<!--l. 556--><p class="noindent" >This subroutine computes a series of 1-norms on the columns of a dense matrix
<span
class="cmmi-10">x</span>:
<center class="math-display" >
<img
src="userhtml12x.png" alt="res(i) &#x2190; makx|x(k,i)|
" class="math-display" ></center>
<!--l. 558--><p class="nopar" > This function computes the 1-norm of a vector <span
class="cmmi-10">x</span>.<br
class="newline" />If <span
class="cmmi-10">x </span>is a real vector it computes 1-norm as:
<center class="math-display" >
<img
src="userhtml13x.png" alt="res(i) &#x2190; &#x2225;xi&#x2225;
" class="math-display" ></center>
<!--l. 562--><p class="nopar" > else if <span
class="cmmi-10">x </span>is a complex vector then it computes 1-norm as:
<center class="math-display" >
<img
src="userhtml14x.png" alt="res(i) &#x2190; &#x2225;re(x )&#x2225;1 +&#x2225;im (x )&#x2225;1
" class="math-display" ></center>
<!--l. 564--><p class="nopar" >
<div class="verbatim" id="verbatim-43">
call&#x00A0;psb_geasums(res,&#x00A0;x,&#x00A0;desc_a,&#x00A0;info)
</div>
<!--l. 569--><p class="nopar" >
<div class="table">
<!--l. 571--><p class="indent" > <a
id="x25-590017"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 572--><p class="noindent" >
<div class="tabular"> <table id="TBL-7" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-7-1g"><col
id="TBL-7-1"><col
id="TBL-7-2"><col
id="TBL-7-3"></colgroup><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-7-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-1-1"
class="td11"><span
class="cmmi-10">res </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-1-2"
class="td11"><span
class="cmmi-10">x </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-1-3"
class="td11"><span
class="cmbx-10">Subroutine</span></td></tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-7-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-1"
class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-2"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-3"
class="td11">psb_geasums</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-7-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-2"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-3"
class="td11">psb_geasums</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-7-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-1"
class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-2"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-3"
class="td11">psb_geasums</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-7-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-2"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-3"
class="td11">psb_geasums</td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-7-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;7: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x25-590017 -->
</div><hr class="endfloat" />
</div>
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">x</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x25-590017">7<!--tex4ht:ref: tab:f90asums --></a>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">res</span> </dt><dd
class="description">contains the 1-norm of (the columns of) <span
class="cmmi-10">x</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Short as: a long precision real number. Specified as: a long precision real
number.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 627--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu20.html" >next</a>] [<a
href="userhtmlsu15.html" >prev</a>] [<a
href="userhtmlsu15.html#tailuserhtmlsu15.html" >prev-tail</a>] [<a
href="userhtmlsu16.html" >front</a>] [<a
href="userhtmlsu12.html#userhtmlsu19.html" >up</a>] </p></div>
<!--l. 627--><p class="indent" > <a
id="tailuserhtmlsu16.html"></a>
</body></html>

@ -0,0 +1,227 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_norm2 &#8212; 2-Norm of Vector</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 627--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu21.html" >next</a>] [<a
href="userhtmlsu16.html" >prev</a>] [<a
href="userhtmlsu16.html#tailuserhtmlsu16.html" >prev-tail</a>] [<a
href="userhtmlsu14.html#tailuserhtmlsu17.html">tail</a>] [<a
href="userhtmlsu12.html#userhtmlsu20.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">4.8 </span> <a
id="x26-600004.8"></a>psb_norm2 &#8212; 2-Norm of Vector</h4>
<!--l. 629--><p class="noindent" >This function computes the 2-norm of a vector <span
class="cmmi-10">x</span>.<br
class="newline" />If <span
class="cmmi-10">x </span>is a real vector it computes 2-norm as:
<center class="math-display" >
<img
src="userhtml15x.png" alt=" &#x221A; -T--
nrm2 &#x2190; x x
" class="math-display" ></center>
<!--l. 632--><p class="nopar" > else if <span
class="cmmi-10">x </span>is a complex vector then it computes 2-norm as:
<center class="math-display" >
<img
src="userhtml16x.png" alt=" &#x221A;----
nrm2 &#x2190; xHx
" class="math-display" ></center>
<!--l. 634--><p class="nopar" >
<div class="table">
<!--l. 640--><p class="indent" > <a
id="x26-600018"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 641--><p class="noindent" >
<div class="tabular"> <table id="TBL-8" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-8-1g"><col
id="TBL-8-1"><col
id="TBL-8-2"><col
id="TBL-8-3"></colgroup><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-8-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-1-1"
class="td11"><span
class="cmmi-10">nrm</span>2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-1-2"
class="td11"><span
class="cmmi-10">x </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-1-3"
class="td11"><span
class="cmbx-10">Function </span></td></tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-8-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-1"
class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-2"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-3"
class="td11">psb_genrm2</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-8-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-2"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-3"
class="td11">psb_genrm2</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-8-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-1"
class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-2"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-3"
class="td11">psb_genrm2</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-8-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-2"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-3"
class="td11">psb_genrm2</td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-8-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-6-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;8: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x26-600018 -->
</div><hr class="endfloat" />
</div>
<div class="verbatim" id="verbatim-44">
psb_genrm2(x,&#x00A0;desc_a,&#x00A0;info&#x00A0;[,global])
&#x00A0;<br />psb_norm2(x,&#x00A0;desc_a,&#x00A0;info&#x00A0;[,global])
</div>
<!--l. 659--><p class="nopar" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">x</span>.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x26-600018">8<!--tex4ht:ref: tab:f90nrm2 --></a>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">global</span> </dt><dd
class="description">Specifies whether the computation should include the global reduction
across all processes.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a logical scalar. Default: <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">global=.true.</span></span></span><br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">Function Value</span> </dt><dd
class="description">is the 2-norm of vector <span
class="cmmi-10">x</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span>unless the optional variable <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">global=.false.</span></span></span> has been
specified<br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Specified as: a long precision real number.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 706--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x26-60003x1">The computation of a global result requires a global communication, which
entails a significant overhead. It may be necessary and/or advisable to compute
multiple norms at the same time; in this case, it is possible to improve the
runtime efficiency by using the following scheme: <!--l. 713-->
<div class="lstlisting" id="listing-4"><span class="label"><a
id="x26-60004r1"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;vres(1)&#x00A0;=&#x00A0;psb_genrm2(x1,desc_a,info,global=.<span
class="cmbx-10">false</span>.)&#x00A0;<br /><span class="label"><a
id="x26-60005r2"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;vres(2)&#x00A0;=&#x00A0;psb_genrm2(x2,desc_a,info,global=.<span
class="cmbx-10">false</span>.)&#x00A0;<br /><span class="label"><a
id="x26-60006r3"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;vres(3)&#x00A0;=&#x00A0;psb_genrm2(x3,desc_a,info,global=.<span
class="cmbx-10">false</span>.)&#x00A0;<br /><span class="label"><a
id="x26-60007r4"></a></span>&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
class="cmbx-10">call</span>&#x00A0;psb_nrm2(ictxt,vres(1:3))
</div>
<!--l. 719--><p class="noindent" >In this way the global communication, which for small sizes is a latency-bound
operation, is invoked only once.</li></ol>
<!--l. 725--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu21.html" >next</a>] [<a
href="userhtmlsu16.html" >prev</a>] [<a
href="userhtmlsu16.html#tailuserhtmlsu16.html" >prev-tail</a>] [<a
href="userhtmlsu17.html" >front</a>] [<a
href="userhtmlsu12.html#userhtmlsu20.html" >up</a>] </p></div>
<!--l. 725--><p class="indent" > <a
id="tailuserhtmlsu17.html"></a>
</body></html>

@ -0,0 +1,177 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_genrm2s &#8212; Generalized 2-Norm of Vector</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 725--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu22.html" >next</a>] [<a
href="userhtmlsu17.html" >prev</a>] [<a
href="userhtmlsu17.html#tailuserhtmlsu17.html" >prev-tail</a>] [<a
href="userhtmlsu15.html#tailuserhtmlsu18.html">tail</a>] [<a
href="userhtmlsu12.html#userhtmlsu21.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">4.9 </span> <a
id="x27-610004.9"></a>psb_genrm2s &#8212; Generalized 2-Norm of Vector</h4>
<!--l. 727--><p class="noindent" >This subroutine computes a series of 2-norms on the columns of a dense matrix
<span
class="cmmi-10">x</span>:
<center class="math-display" >
<img
src="userhtml17x.png" alt="res(i) &#x2190; &#x2225;x(:,i)&#x2225;2
" class="math-display" ></center>
<!--l. 729--><p class="nopar" >
<div class="verbatim" id="verbatim-45">
call&#x00A0;psb_genrm2s(res,&#x00A0;x,&#x00A0;desc_a,&#x00A0;info)
</div>
<!--l. 734--><p class="nopar" >
<div class="table">
<!--l. 736--><p class="indent" > <a
id="x27-610019"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 737--><p class="noindent" >
<div class="tabular"> <table id="TBL-9" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-9-1g"><col
id="TBL-9-1"><col
id="TBL-9-2"><col
id="TBL-9-3"></colgroup><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-9-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-1-1"
class="td11"><span
class="cmmi-10">res </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-1-2"
class="td11"><span
class="cmmi-10">x </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-1-3"
class="td11"><span
class="cmbx-10">Subroutine</span></td></tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-9-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-1"
class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-2"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-3"
class="td11">psb_genrm2s</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-9-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-2"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-3"
class="td11">psb_genrm2s</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-9-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-1"
class="td11">Short Precision Real</td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-2"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-3"
class="td11">psb_genrm2s</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-9-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-2"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-3"
class="td11">psb_genrm2s</td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-9-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;9: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x27-610019 -->
</div><hr class="endfloat" />
</div>
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">x</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x27-610019">9<!--tex4ht:ref: tab:f90nrm2s --></a>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">res</span> </dt><dd
class="description">contains the 1-norm of (the columns of) <span
class="cmmi-10">x</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: a long precision real number.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 792--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu22.html" >next</a>] [<a
href="userhtmlsu17.html" >prev</a>] [<a
href="userhtmlsu17.html#tailuserhtmlsu17.html" >prev-tail</a>] [<a
href="userhtmlsu18.html" >front</a>] [<a
href="userhtmlsu12.html#userhtmlsu21.html" >up</a>] </p></div>
<!--l. 792--><p class="indent" > <a
id="tailuserhtmlsu18.html"></a>
</body></html>

@ -0,0 +1,171 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_norm1 &#8212; 1-Norm of Sparse Matrix</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 792--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse5.html" >next</a>] [<a
href="userhtmlsu18.html" >prev</a>] [<a
href="userhtmlsu18.html#tailuserhtmlsu18.html" >prev-tail</a>] [<a
href="userhtmlsu16.html#tailuserhtmlsu19.html">tail</a>] [<a
href="userhtmlsu12.html#userhtmlsu22.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">4.10 </span> <a
id="x28-620004.10"></a>psb_norm1 &#8212; 1-Norm of Sparse Matrix</h4>
<!--l. 794--><p class="noindent" >This function computes the 1-norm of a matrix <span
class="cmmi-10">A</span>:<br
class="newline" />
<center class="par-math-display" >
<img
src="userhtml18x.png" alt="nrm1 &#x2190; &#x2225;A &#x2225;1
" class="par-math-display" ></center>
<!--l. 796--><p class="nopar" > where:
<dl class="description"><dt class="description">
<span
class="cmmi-10">A</span> </dt><dd
class="description">represents the global matrix <span
class="cmmi-10">A</span></dd></dl>
<div class="table">
<!--l. 802--><p class="indent" > <a
id="x28-6200110"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 803--><p class="noindent" >
<div class="tabular"> <table id="TBL-10" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-10-1g"><col
id="TBL-10-1"><col
id="TBL-10-2"></colgroup><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-10-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-1-1"
class="td11"><span
class="cmmi-10">A </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-1-2"
class="td11"><span
class="cmbx-10">Function </span></td></tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-10-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-1"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-2"
class="td11">psb_spnrm1</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-10-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-2"
class="td11">psb_spnrm1</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-10-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-1"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-2"
class="td11">psb_spnrm1</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-10-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-1"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-2"
class="td11">psb_spnrm1</td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-10-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;10: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x28-6200110 -->
</div><hr class="endfloat" />
</div>
<div class="verbatim" id="verbatim-46">
psb_spnrm1(A,&#x00A0;desc_a,&#x00A0;info)
&#x00A0;<br />psb_norm1(A,&#x00A0;desc_a,&#x00A0;info)
</div>
<!--l. 821--><p class="nopar" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">a</span> </dt><dd
class="description">the local portion of the global sparse matrix <span
class="cmmi-10">A</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu6.html#spdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_Tspmat</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">Function value</span> </dt><dd
class="description">is the 1-norm of sparse submatrix <span
class="cmmi-10">A</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Specified as: a long precision real number.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 856--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse5.html" >next</a>] [<a
href="userhtmlsu18.html" >prev</a>] [<a
href="userhtmlsu18.html#tailuserhtmlsu18.html" >prev-tail</a>] [<a
href="userhtmlsu19.html" >front</a>] [<a
href="userhtmlsu12.html#userhtmlsu22.html" >up</a>] </p></div>
<!--l. 856--><p class="indent" > <a
id="tailuserhtmlsu19.html"></a>
</body></html>

@ -0,0 +1,129 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Library contents</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 236--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse3.html" >next</a>] [<a
href="userhtmlsu1.html" >prev</a>] [<a
href="userhtmlsu1.html#tailuserhtmlsu1.html" >prev-tail</a>] [<a
href="userhtmlsu1.html#tailuserhtmlsu2.html">tail</a>] [<a
href="userhtmlse2.html#userhtmlsu4.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">2.2 </span> <a
id="x8-50002.2"></a>Library contents</h4>
<!--l. 238--><p class="noindent" >The PSBLAS library consists of various classes of subroutines:
<dl class="description"><dt class="description">
<span
class="cmbx-10">Computational routines</span> </dt><dd
class="description">comprising:
<ul class="itemize1">
<li class="itemize">Sparse matrix by dense matrix product;
</li>
<li class="itemize">Sparse triangular systems solution for block diagonal matrices;
</li>
<li class="itemize">Vector and matrix norms;
</li>
<li class="itemize">Dense matrix sums;
</li>
<li class="itemize">Dot products.</li></ul>
</dd><dt class="description">
<span
class="cmbx-10">Communication routines</span> </dt><dd
class="description">handling halo and overlap communications;
</dd><dt class="description">
<span
class="cmbx-10">Data management and auxiliary routines</span> </dt><dd
class="description">including:
<ul class="itemize1">
<li class="itemize">Parallel environment management
</li>
<li class="itemize">Communication descriptors allocation;
</li>
<li class="itemize">Dense and sparse matrix allocation;
</li>
<li class="itemize">Dense and sparse matrix build and update;
</li>
<li class="itemize">Sparse matrix and data distribution preprocessing.</li></ul>
</dd><dt class="description">
<span
class="cmbx-10">Preconditioner routines</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">Iterative methods</span> </dt><dd
class="description">a subset of Krylov subspace iterative methods</dd></dl>
<!--l. 263--><p class="noindent" >The following naming scheme has been adopted for all the symbols internally defined in
the PSBLAS software package:
<ul class="itemize1">
<li class="itemize">all symbols (i.e. subroutine names, data types...) are prefixed by <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_</span></span></span>
</li>
<li class="itemize">all data type names are suffixed by <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">_type</span></span></span>
</li>
<li class="itemize">all constants are suffixed by <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">_</span></span></span>
</li>
<li class="itemize">all top-level subroutine names follow the rule <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_xxname</span></span></span> where <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">xx</span></span></span> can be
either:
<ul class="itemize2">
<li class="itemize"><span class="obeylines-h"><span class="verb"><span
class="cmtt-10">ge</span></span></span>: the routine is related to dense data,
</li>
<li class="itemize"><span class="obeylines-h"><span class="verb"><span
class="cmtt-10">sp</span></span></span>: the routine is related to sparse data,
</li>
<li class="itemize"><span class="obeylines-h"><span class="verb"><span
class="cmtt-10">cd</span></span></span>: the routine is related to communication descriptor (see&#x00A0;<a
href="userhtmlse3.html#x12-90003">3<!--tex4ht:ref: sec:datastruct --></a>).</li></ul>
<!--l. 278--><p class="noindent" >For example the <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_geins</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spins</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdins</span></span></span> perform the same
action (see&#x00A0;<a
href="userhtmlse6.html#x37-710006">6<!--tex4ht:ref: sec:toolsrout --></a>) on dense matrices, sparse matrices and communication
descriptors respectively. Interface overloading allows the usage of the same
subroutine names for both real and complex data.</li></ul>
<!--l. 285--><p class="noindent" >In the description of the subroutines, arguments or argument entries are classified
as:
<dl class="description"><dt class="description">
<span
class="cmbx-10">global</span> </dt><dd
class="description">For input arguments, the value must be the same on all processes
participating in the subroutine call; for output arguments the value is
guaranteed to be the same.
</dd><dt class="description">
<span
class="cmbx-10">local</span> </dt><dd
class="description">Each process has its own value(s) independently.</dd></dl>
<!--l. 293--><p class="noindent" >To finish our general description, we define a version string with the constant
<center class="math-display" >
<img
src="userhtml2x.png" alt="psb_version_string_
" class="math-display" ></center>
<!--l. 295--><p class="nopar" > whose current value is <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">3.4.0</span></span></span>
<!--l. 298--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse3.html" >next</a>] [<a
href="userhtmlsu1.html" >prev</a>] [<a
href="userhtmlsu1.html#tailuserhtmlsu1.html" >prev-tail</a>] [<a
href="userhtmlsu2.html" >front</a>] [<a
href="userhtmlse2.html#userhtmlsu4.html" >up</a>] </p></div>
<!--l. 298--><p class="indent" > <a
id="tailuserhtmlsu2.html"></a>
</body></html>

@ -0,0 +1,171 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_normi &#8212; Infinity Norm of Sparse Matrix</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 856--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu23.html" >next</a>] [<a
href="userhtmlsu19.html" >prev</a>] [<a
href="userhtmlsu19.html#tailuserhtmlsu19.html" >prev-tail</a>] [<a
href="userhtmlsu17.html#tailuserhtmlsu20.html">tail</a>] [<a
href="userhtmlsu12.html#userhtmlse5.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">4.11 </span> <a
id="x29-630004.11"></a>psb_normi &#8212; Infinity Norm of Sparse Matrix</h4>
<!--l. 858--><p class="noindent" >This function computes the infinity-norm of a matrix <span
class="cmmi-10">A</span>:<br
class="newline" />
<center class="par-math-display" >
<img
src="userhtml19x.png" alt="nrmi &#x2190; &#x2225;A&#x2225;&#x221E;
" class="par-math-display" ></center>
<!--l. 860--><p class="nopar" > where:
<dl class="description"><dt class="description">
<span
class="cmmi-10">A</span> </dt><dd
class="description">represents the global matrix <span
class="cmmi-10">A</span></dd></dl>
<div class="table">
<!--l. 866--><p class="indent" > <a
id="x29-6300111"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 867--><p class="noindent" >
<div class="tabular"> <table id="TBL-11" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-11-1g"><col
id="TBL-11-1"><col
id="TBL-11-2"></colgroup><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-1-1"
class="td11"><span
class="cmmi-10">A </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-1-2"
class="td11"><span
class="cmbx-10">Function </span></td></tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-1"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-2"
class="td11">psb_spnrmi</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-2"
class="td11">psb_spnrmi</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-1"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-2"
class="td11">psb_spnrmi</td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-1"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-2"
class="td11">psb_spnrmi</td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-6-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;11: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x29-6300111 -->
</div><hr class="endfloat" />
</div>
<div class="verbatim" id="verbatim-47">
psb_spnrmi(A,&#x00A0;desc_a,&#x00A0;info)
&#x00A0;<br />psb_normi(A,&#x00A0;desc_a,&#x00A0;info)
</div>
<!--l. 885--><p class="nopar" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">a</span> </dt><dd
class="description">the local portion of the global sparse matrix <span
class="cmmi-10">A</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu6.html#spdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_Tspmat</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">Function value</span> </dt><dd
class="description">is the infinity-norm of sparse submatrix <span
class="cmmi-10">A</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Specified as: a long precision real number.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 920--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu23.html" >next</a>] [<a
href="userhtmlsu19.html" >prev</a>] [<a
href="userhtmlsu19.html#tailuserhtmlsu19.html" >prev-tail</a>] [<a
href="userhtmlsu20.html" >front</a>] [<a
href="userhtmlsu12.html#userhtmlse5.html" >up</a>] </p></div>
<!--l. 920--><p class="indent" > <a
id="tailuserhtmlsu20.html"></a>
</body></html>

@ -0,0 +1,337 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_spmm &#8212; Sparse Matrix by Dense Matrix Product</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 921--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu24.html" >next</a>] [<a
href="userhtmlsu20.html" >prev</a>] [<a
href="userhtmlsu20.html#tailuserhtmlsu20.html" >prev-tail</a>] [<a
href="userhtmlsu18.html#tailuserhtmlsu21.html">tail</a>] [<a
href="userhtmlsu12.html#userhtmlsu23.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">4.12 </span> <a
id="x30-640004.12"></a>psb_spmm &#8212; Sparse Matrix by Dense Matrix Product</h4>
<!--l. 923--><p class="noindent" >This subroutine computes the Sparse Matrix by Dense Matrix Product:
<table
class="equation"><tr><td>
<center class="math-display" >
<img
src="userhtml20x.png" alt="y &#x2190; &#x03B1;Ax + &#x03B2;y
" class="math-display" ><a
id="x30-64001r1"></a></center></td><td class="equation-label">(1)</td></tr></table>
<!--l. 928--><p class="nopar" >
<table
class="equation"><tr><td>
<center class="math-display" >
<img
src="userhtml21x.png" alt="y &#x2190; &#x03B1;AT x+ &#x03B2;y
" class="math-display" ><a
id="x30-64002r2"></a></center></td><td class="equation-label">(2)</td></tr></table>
<!--l. 932--><p class="nopar" >
<table
class="equation"><tr><td>
<center class="math-display" >
<img
src="userhtml22x.png" alt=" H
y &#x2190; &#x03B1;A x+ &#x03B2;y
" class="math-display" ><a
id="x30-64003r3"></a></center></td><td class="equation-label">(3)</td></tr></table>
<!--l. 936--><p class="nopar" >
<!--l. 938--><p class="indent" > where:
<dl class="description"><dt class="description">
<span
class="cmmi-10">x</span> </dt><dd
class="description">is the global dense matrix <span
class="cmmi-10">x</span><sub><span
class="cmr-7">:</span><span
class="cmmi-7">,</span><span
class="cmr-7">:</span></sub>
</dd><dt class="description">
<span
class="cmmi-10">y</span> </dt><dd
class="description">is the global dense matrix <span
class="cmmi-10">y</span><sub><span
class="cmr-7">:</span><span
class="cmmi-7">,</span><span
class="cmr-7">:</span></sub>
</dd><dt class="description">
<span
class="cmmi-10">A</span> </dt><dd
class="description">is the global sparse matrix <span
class="cmmi-10">A</span></dd></dl>
<div class="table">
<!--l. 945--><p class="indent" > <a
id="x30-6400412"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 946--><p class="noindent" >
<div class="tabular"> <table id="TBL-12" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-12-1g"><col
id="TBL-12-1"><col
id="TBL-12-2"></colgroup><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-1-1"
class="td11"><span
class="cmmi-10">A</span>, <span
class="cmmi-10">x</span>, <span
class="cmmi-10">y</span>, <span
class="cmmi-10">&#x03B1;</span>, <span
class="cmmi-10">&#x03B2; </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-1-2"
class="td11"><span
class="cmbx-10">Subroutine</span></td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-1"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-2"
class="td11">psb_spmm </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-2"
class="td11">psb_spmm </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-1"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-2"
class="td11">psb_spmm </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-5-1"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-5-2"
class="td11">psb_spmm </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-6-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;12: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x30-6400412 -->
</div><hr class="endfloat" />
</div>
<div class="verbatim" id="verbatim-48">
call&#x00A0;psb_spmm(alpha,&#x00A0;a,&#x00A0;x,&#x00A0;beta,&#x00A0;y,&#x00A0;desc_a,&#x00A0;info)
&#x00A0;<br />call&#x00A0;psb_spmm(alpha,&#x00A0;a,&#x00A0;x,&#x00A0;beta,&#x00A0;y,desc_a,&#x00A0;info,&#x00A0;&amp;
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;trans,&#x00A0;work)
</div>
<!--l. 965--><p class="nopar" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">alpha</span> </dt><dd
class="description">the scalar <span
class="cmmi-10">&#x03B1;</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a number of the data type indicated in Table&#x00A0;<a
href="#x30-6400412">12<!--tex4ht:ref: tab:f90spmm --></a>.
</dd><dt class="description">
<span
class="cmbx-10">a</span> </dt><dd
class="description">the local portion of the sparse matrix <span
class="cmmi-10">A</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu6.html#spdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_Tspmat</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">x</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x30-6400412">12<!--tex4ht:ref: tab:f90spmm --></a>. The
rank of <span
class="cmmi-10">x </span>must be the same of <span
class="cmmi-10">y</span>.
</dd><dt class="description">
<span
class="cmbx-10">beta</span> </dt><dd
class="description">the scalar <span
class="cmmi-10">&#x03B2;</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a number of the data type indicated in Table&#x00A0;<a
href="#x30-6400412">12<!--tex4ht:ref: tab:f90spmm --></a>.
</dd><dt class="description">
<span
class="cmbx-10">y</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">y</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x30-6400412">12<!--tex4ht:ref: tab:f90spmm --></a>. The
rank of <span
class="cmmi-10">y </span>must be the same of <span
class="cmmi-10">x</span>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">trans</span> </dt><dd
class="description">indicates what kind of operation to perform.
<dl class="description"><dt class="description">
<span
class="cmbx-10">trans = N</span> </dt><dd
class="description">the operation is specified by equation <a
href="#x30-64001r1">1<!--tex4ht:ref: eq:f90spmm_no_tra --></a>
</dd><dt class="description">
<span
class="cmbx-10">trans = T</span> </dt><dd
class="description">the operation is specified by equation <a
href="#x30-64002r2">2<!--tex4ht:ref: eq:f90spmm_tra --></a>
</dd><dt class="description">
<span
class="cmbx-10">trans = C</span> </dt><dd
class="description">the operation is specified by equation <a
href="#x30-64003r3">3<!--tex4ht:ref: eq:f90spmm_con --></a></dd></dl>
<!--l. 1020--><p class="noindent" >Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Default: <span
class="cmmi-10">trans </span>= <span
class="cmmi-10">N</span><br
class="newline" />Specified as: a character variable.
</dd><dt class="description">
<span
class="cmbx-10">work</span> </dt><dd
class="description">work array.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a rank one array of the same type of <span
class="cmmi-10">x </span>and <span
class="cmmi-10">y </span>with the TARGET
attribute.
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">y</span> </dt><dd
class="description">the local portion of result matrix <span
class="cmmi-10">y</span>.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: an array of rank one or two containing numbers of type specified
in Table&#x00A0;<a
href="#x30-6400412">12<!--tex4ht:ref: tab:f90spmm --></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 1072--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu24.html" >next</a>] [<a
href="userhtmlsu20.html" >prev</a>] [<a
href="userhtmlsu20.html#tailuserhtmlsu20.html" >prev-tail</a>] [<a
href="userhtmlsu21.html" >front</a>] [<a
href="userhtmlsu12.html#userhtmlsu23.html" >up</a>] </p></div>
<!--l. 1072--><p class="indent" > <a
id="tailuserhtmlsu21.html"></a>
</body></html>

@ -0,0 +1,398 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_spsm &#8212; Triangular System Solve</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1072--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu21.html" >prev</a>] [<a
href="userhtmlsu21.html#tailuserhtmlsu21.html" >prev-tail</a>] [<a
href="userhtmlsu19.html#tailuserhtmlsu22.html">tail</a>] [<a
href="userhtmlsu12.html#userhtmlsu24.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">4.13 </span> <a
id="x31-650004.13"></a>psb_spsm &#8212; Triangular System Solve</h4>
<!--l. 1074--><p class="noindent" >This subroutine computes the Triangular System Solve:
<!--l. 1076--><p class="indent" > <div class="eqnarray">
<center class="math-display" >
<img
src="userhtml23x.png" alt="y &#x2190; &#x03B1;T- 1x + &#x03B2;y
-1
y &#x2190; &#x03B1;DT x +&#x03B2;y
y &#x2190; &#x03B1;T- 1Dx +&#x03B2;y
y &#x2190; &#x03B1;T- Tx+ &#x03B2;y
y &#x2190; &#x03B1;DT -Tx + &#x03B2;y
- T
y &#x2190; &#x03B1;T Dx + &#x03B2;y
y &#x2190; &#x03B1;T- Hx +&#x03B2;y
y &#x2190; &#x03B1;DT -Hx + &#x03B2;y
y &#x2190; &#x03B1;T- HDx + &#x03B2;y
" class="math-display" ></center>
</div>
<!--l. 1089--><p class="indent" > where:
<dl class="description"><dt class="description">
<span
class="cmmi-10">x</span> </dt><dd
class="description">is the global dense matrix <span
class="cmmi-10">x</span><sub><span
class="cmr-7">:</span><span
class="cmmi-7">,</span><span
class="cmr-7">:</span></sub>
</dd><dt class="description">
<span
class="cmmi-10">y</span> </dt><dd
class="description">is the global dense matrix <span
class="cmmi-10">y</span><sub><span
class="cmr-7">:</span><span
class="cmmi-7">,</span><span
class="cmr-7">:</span></sub>
</dd><dt class="description">
<span
class="cmmi-10">T</span> </dt><dd
class="description">is the global sparse block triangular submatrix <span
class="cmmi-10">T</span>
</dd><dt class="description">
<span
class="cmmi-10">D</span> </dt><dd
class="description">is the scaling diagonal matrix.</dd></dl>
<div class="verbatim" id="verbatim-49">
call&#x00A0;psb_spsm(alpha,&#x00A0;t,&#x00A0;x,&#x00A0;beta,&#x00A0;y,&#x00A0;desc_a,&#x00A0;info)
&#x00A0;<br />call&#x00A0;psb_spsm(alpha,&#x00A0;t,&#x00A0;x,&#x00A0;beta,&#x00A0;y,&#x00A0;desc_a,&#x00A0;info,&amp;
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;trans,&#x00A0;unit,&#x00A0;choice,&#x00A0;diag,&#x00A0;work)
</div>
<!--l. 1101--><p class="nopar" >
<div class="table">
<!--l. 1103--><p class="indent" > <a
id="x31-6500213"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 1104--><p class="noindent" >
<div class="tabular"> <table id="TBL-13" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-13-1g"><col
id="TBL-13-1"><col
id="TBL-13-2"></colgroup><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-1-1"
class="td11"><span
class="cmmi-10">T</span>, <span
class="cmmi-10">x</span>, <span
class="cmmi-10">y</span>, <span
class="cmmi-10">D</span>, <span
class="cmmi-10">&#x03B1;</span>, <span
class="cmmi-10">&#x03B2; </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-1-2"
class="td11"><span
class="cmbx-10">Subroutine</span></td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-1"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-2"
class="td11">psb_spsm </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-3-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-13-3-2"
class="td11">psb_spsm </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-4-1"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-13-4-2"
class="td11">psb_spsm </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-5-1"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-13-5-2"
class="td11">psb_spsm </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-6-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;13: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x31-6500213 -->
</div><hr class="endfloat" />
</div>
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">alpha</span> </dt><dd
class="description">the scalar <span
class="cmmi-10">&#x03B1;</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a number of the data type indicated in Table&#x00A0;<a
href="#x31-6500213">13<!--tex4ht:ref: tab:f90spsm --></a>.
</dd><dt class="description">
<span
class="cmbx-10">t</span> </dt><dd
class="description">the global portion of the sparse matrix <span
class="cmmi-10">T</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object type specified in <span
class="cmsy-10">§</span>&#x00A0;<a
href="userhtmlse3.html#x12-90003">3<!--tex4ht:ref: sec:datastruct --></a>.
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">x</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x31-6500213">13<!--tex4ht:ref: tab:f90spsm --></a>. The
rank of <span
class="cmmi-10">x </span>must be the same of <span
class="cmmi-10">y</span>.
</dd><dt class="description">
<span
class="cmbx-10">beta</span> </dt><dd
class="description">the scalar <span
class="cmmi-10">&#x03B2;</span>.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a number of the data type indicated in Table&#x00A0;<a
href="#x31-6500213">13<!--tex4ht:ref: tab:f90spsm --></a>.
</dd><dt class="description">
<span
class="cmbx-10">y</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">y</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x31-6500213">13<!--tex4ht:ref: tab:f90spsm --></a>. The
rank of <span
class="cmmi-10">y </span>must be the same of <span
class="cmmi-10">x</span>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">trans</span> </dt><dd
class="description">specify with <span
class="cmti-10">unitd </span>the operation to perform.
<dl class="description"><dt class="description">
<span
class="cmbx-10">trans = &#8217;N&#8217;</span> </dt><dd
class="description">the operation is with no transposed matrix
</dd><dt class="description">
<span
class="cmbx-10">trans = &#8217;T&#8217;</span> </dt><dd
class="description">the operation is with transposed matrix.
</dd><dt class="description">
<span
class="cmbx-10">trans = &#8217;C&#8217;</span> </dt><dd
class="description">the operation is with conjugate transposed matrix.</dd></dl>
<!--l. 1173--><p class="noindent" >Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Default: <span
class="cmmi-10">trans </span>= <span
class="cmmi-10">N</span><br
class="newline" />Specified as: a character variable.
</dd><dt class="description">
<span
class="cmbx-10">unitd</span> </dt><dd
class="description">specify with <span
class="cmti-10">trans </span>the operation to perform.
<dl class="description"><dt class="description">
<span
class="cmbx-10">unitd = &#8217;U&#8217;</span> </dt><dd
class="description">the operation is with no scaling
</dd><dt class="description">
<span
class="cmbx-10">unitd = &#8217;L&#8217;</span> </dt><dd
class="description">the operation is with left scaling
</dd><dt class="description">
<span
class="cmbx-10">unitd = &#8217;R&#8217;</span> </dt><dd
class="description">the operation is with right scaling.</dd></dl>
<!--l. 1184--><p class="noindent" >Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Default: <span
class="cmmi-10">unitd </span>= <span
class="cmmi-10">U</span><br
class="newline" />Specified as: a character variable.
</dd><dt class="description">
<span
class="cmbx-10">choice</span> </dt><dd
class="description">specifies the update of overlap elements to be performed on exit:
<dl class="description"><dt class="description">
</dt><dd
class="description"><span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_none_</span></span></span>
</dd><dt class="description">
</dt><dd
class="description"><span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_sum_</span></span></span>
</dd><dt class="description">
</dt><dd
class="description"><span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_avg_</span></span></span>
</dd><dt class="description">
</dt><dd
class="description"><span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_square_root_</span></span></span></dd></dl>
<!--l. 1197--><p class="noindent" >Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Default: <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_avg_</span></span></span><br
class="newline" />Specified as: an integer variable.
</dd><dt class="description">
<span
class="cmbx-10">diag</span> </dt><dd
class="description">the diagonal scaling matrix.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Default: <span
class="cmmi-10">diag</span>(1) = 1(<span
class="cmmi-10">noscaling</span>)<br
class="newline" />Specified as: a rank one array containing numbers of the type indicated in
Table&#x00A0;<a
href="#x31-6500213">13<!--tex4ht:ref: tab:f90spsm --></a>.
</dd><dt class="description">
<span
class="cmbx-10">work</span> </dt><dd
class="description">a work array. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a rank one array of the same type of <span
class="cmmi-10">x </span>with the TARGET
attribute.
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">y</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">y</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: an array of rank one or two containing numbers of type specified
in Table&#x00A0;<a
href="#x31-6500213">13<!--tex4ht:ref: tab:f90spsm --></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu21.html" >prev</a>] [<a
href="userhtmlsu21.html#tailuserhtmlsu21.html" >prev-tail</a>] [<a
href="userhtmlsu22.html" >front</a>] [<a
href="userhtmlsu12.html#userhtmlsu24.html" >up</a>] </p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlsu22.html"></a>
</body></html>

@ -0,0 +1,832 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_halo &#8212; Halo Data Communication</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 11--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse6.html" >next</a>] [<a
href="userhtmlsu21.html#tailuserhtmlsu23.html">tail</a>] [<a
href="userhtmlsu25.html#userhtmlsu26.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a
id="x33-670005.1"></a>psb_halo &#8212; Halo Data Communication</h4>
<!--l. 14--><p class="noindent" >These subroutines gathers the values of the halo elements:
<center class="par-math-display" >
<img
src="userhtml24x.png" alt="x &#x2190; x
" class="par-math-display" ></center>
<!--l. 17--><p class="nopar" > where:
<dl class="description"><dt class="description">
<span
class="cmmi-10">x</span> </dt><dd
class="description">is a global dense submatrix.</dd></dl>
<div class="table">
<!--l. 23--><p class="indent" > <a
id="x33-6700114"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 24--><p class="noindent" >
<div class="tabular"> <table id="TBL-14" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-14-1g"><col
id="TBL-14-1"><col
id="TBL-14-2"></colgroup><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-1-1"
class="td11"><span
class="cmmi-10">&#x03B1;</span>, <span
class="cmmi-10">x </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-1-2"
class="td11"><span
class="cmbx-10">Subroutine</span></td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-2-1"
class="td11">Integer </td><td style="white-space:nowrap; text-align:left;" id="TBL-14-2-2"
class="td11">psb_halo </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-3-1"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-14-3-2"
class="td11">psb_halo </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-4-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-14-4-2"
class="td11">psb_halo </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-5-1"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-14-5-2"
class="td11">psb_halo </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-6-1"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-14-6-2"
class="td11">psb_halo </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-7-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;14: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x33-6700114 -->
</div><hr class="endfloat" />
</div>
<!--l. 40-->
<div class="lstlisting" id="listing-5"><span class="label"><a
id="x33-67002r1"></a></span><span
class="cmbx-10">call</span>&#x00A0;psb_halo(x,&#x00A0;desc_a,&#x00A0;info)&#x00A0;<br /><span class="label"><a
id="x33-67003r2"></a></span><span
class="cmbx-10">call</span>&#x00A0;psb_halo(x,&#x00A0;desc_a,&#x00A0;info,&#x00A0;work,&#x00A0;<span
class="cmbx-10">data</span>)
</div>
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">global dense matrix <span
class="cmmi-10">x</span>.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of type specified in Table&#x00A0;<a
href="#x33-6700114">14<!--tex4ht:ref: tab:f90halo --></a>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">work</span> </dt><dd
class="description">the work array. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a rank one array of the same type of <span
class="cmmi-10">x</span>.
</dd><dt class="description">
<span
class="cmbx-10">data</span> </dt><dd
class="description">index list selector.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional </span><br
class="newline" />Specified
as: an integer. Values:<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_comm_halo_</span></span></span>,<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_comm_mov_</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_comm_ext_</span></span></span>,
default: <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_comm_halo_</span></span></span>. Chooses the index list on which to base the data
exchange.
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">global dense result matrix <span
class="cmmi-10">x</span>.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Returned as: a rank one or two array containing numbers of type specified
in Table&#x00A0;<a
href="#x33-6700114">14<!--tex4ht:ref: tab:f90halo --></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">the local portion of result submatrix <span
class="cmmi-10">y</span>.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value that contains an error code.</dd></dl>
<!--l. 87--><p class="noindent" ><hr class="figure"><div class="figure"
><a
id="x33-670047"></a>
<div class="center"
>
<!--l. 88--><p class="noindent" >
<!--l. 90--><p class="noindent" ><img
src="userhtml25x.png" alt="PIC" class="graphics" width="224" height="198" ><!--tex4ht:graphics
name="userhtml25x.png" src="figures/try8x8.eps"
--></div>
<br /> <div class="caption"
><span class="id">Figure&#x00A0;7: </span><span
class="content">Sample discretization mesh.</span></div><!--tex4ht:label?: x33-670047 -->
<!--l. 96--><p class="indent" > </div><hr class="endfigure">
<!--l. 98--><p class="noindent" ><span
class="cmbx-12">Usage Example </span>Consider the discretization mesh depicted in fig.&#x00A0;<a
href="#x33-670047">7<!--tex4ht:ref: fig:try8x8 --></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 <span
class="cmmi-10">x </span>vector, and process 1 assigns a value of 2, then after
a call to <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_halo</span></span></span> the contents of the local vectors will be the following:
<div class="table">
<!--l. 108--><p class="indent" > <hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 108--><p class="noindent" >
<div class="tabular"> <table id="TBL-15" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-15-1g"><col
id="TBL-15-1"><col
id="TBL-15-2"><col
id="TBL-15-3"><col
id="TBL-15-4"><col
id="TBL-15-5"><col
id="TBL-15-6"></colgroup><tr
style="vertical-align:baseline;" id="TBL-15-1-"><td colspan="3" style="white-space:nowrap; text-align:right;" id="TBL-15-1-1"
class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
class="cmr-9">Process 0</span></div> </td><td colspan="3" style="white-space:nowrap; text-align:right;" id="TBL-15-1-4"
class="td01"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
class="cmr-9">Process 1</span></div>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-2-1"
class="td11"> <span
class="cmr-9">I</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-2-2"
class="td11"><span
class="cmr-9">GLOB(I)</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-2-3"
class="td10"><span
class="cmr-9">X(I)</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-2-4"
class="td01"> <span
class="cmr-9">I</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-2-5"
class="td11"><span
class="cmr-9">GLOB(I)</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-2-6"
class="td11"><span
class="cmr-9">X(I)</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-3-1"
class="td11"> <span
class="cmr-9">1</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-3-2"
class="td11"> <span
class="cmr-9">1</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-3-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-3-4"
class="td01"> <span
class="cmr-9">1</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-3-5"
class="td11"> <span
class="cmr-9">33</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-3-6"
class="td11"> <span
class="cmr-9">2.0</span></td></tr><tr
style="vertical-align:baseline;" id="TBL-15-4-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-4-1"
class="td11"> <span
class="cmr-9">2</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-4-2"
class="td11"> <span
class="cmr-9">2</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-4-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-4-4"
class="td01"> <span
class="cmr-9">2</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-4-5"
class="td11"> <span
class="cmr-9">34</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-4-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-5-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-5-1"
class="td11"> <span
class="cmr-9">3</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-5-2"
class="td11"> <span
class="cmr-9">3</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-5-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-5-4"
class="td01"> <span
class="cmr-9">3</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-5-5"
class="td11"> <span
class="cmr-9">35</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-5-6"
class="td11"> <span
class="cmr-9">2.0</span></td></tr><tr
style="vertical-align:baseline;" id="TBL-15-6-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-6-1"
class="td11"> <span
class="cmr-9">4</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-6-2"
class="td11"> <span
class="cmr-9">4</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-6-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-6-4"
class="td01"> <span
class="cmr-9">4</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-6-5"
class="td11"> <span
class="cmr-9">36</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-6-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-7-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-7-1"
class="td11"> <span
class="cmr-9">5</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-7-2"
class="td11"> <span
class="cmr-9">5</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-7-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-7-4"
class="td01"> <span
class="cmr-9">5</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-7-5"
class="td11"> <span
class="cmr-9">37</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-7-6"
class="td11"> <span
class="cmr-9">2.0</span></td></tr><tr
style="vertical-align:baseline;" id="TBL-15-8-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-8-1"
class="td11"> <span
class="cmr-9">6</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-8-2"
class="td11"> <span
class="cmr-9">6</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-8-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-8-4"
class="td01"> <span
class="cmr-9">6</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-8-5"
class="td11"> <span
class="cmr-9">38</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-8-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-9-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-9-1"
class="td11"> <span
class="cmr-9">7</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-9-2"
class="td11"> <span
class="cmr-9">7</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-9-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-9-4"
class="td01"> <span
class="cmr-9">7</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-9-5"
class="td11"> <span
class="cmr-9">39</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-9-6"
class="td11"> <span
class="cmr-9">2.0</span></td></tr><tr
style="vertical-align:baseline;" id="TBL-15-10-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-10-1"
class="td11"> <span
class="cmr-9">8</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-10-2"
class="td11"> <span
class="cmr-9">8</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-10-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-10-4"
class="td01"> <span
class="cmr-9">8</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-10-5"
class="td11"> <span
class="cmr-9">40</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-10-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-11-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-11-1"
class="td11"> <span
class="cmr-9">9</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-11-2"
class="td11"> <span
class="cmr-9">9</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-11-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-11-4"
class="td01"> <span
class="cmr-9">9</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-11-5"
class="td11"> <span
class="cmr-9">41</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-11-6"
class="td11"> <span
class="cmr-9">2.0</span></td></tr><tr
style="vertical-align:baseline;" id="TBL-15-12-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-12-1"
class="td11"><span
class="cmr-9">10</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-12-2"
class="td11"> <span
class="cmr-9">10</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-12-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-12-4"
class="td01"><span
class="cmr-9">10</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-12-5"
class="td11"> <span
class="cmr-9">42</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-12-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-13-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-13-1"
class="td11"><span
class="cmr-9">11</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-13-2"
class="td11"> <span
class="cmr-9">11</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-13-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-13-4"
class="td01"><span
class="cmr-9">11</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-13-5"
class="td11"> <span
class="cmr-9">43</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-13-6"
class="td11"> <span
class="cmr-9">2.0</span></td></tr><tr
style="vertical-align:baseline;" id="TBL-15-14-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-14-1"
class="td11"><span
class="cmr-9">12</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-14-2"
class="td11"> <span
class="cmr-9">12</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-14-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-14-4"
class="td01"><span
class="cmr-9">12</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-14-5"
class="td11"> <span
class="cmr-9">44</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-14-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-15-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-15-1"
class="td11"><span
class="cmr-9">13</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-15-2"
class="td11"> <span
class="cmr-9">13</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-15-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-15-4"
class="td01"><span
class="cmr-9">13</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-15-5"
class="td11"> <span
class="cmr-9">45</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-15-6"
class="td11"> <span
class="cmr-9">2.0</span></td></tr><tr
style="vertical-align:baseline;" id="TBL-15-16-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-16-1"
class="td11"><span
class="cmr-9">14</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-16-2"
class="td11"> <span
class="cmr-9">14</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-16-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-16-4"
class="td01"><span
class="cmr-9">14</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-16-5"
class="td11"> <span
class="cmr-9">46</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-16-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-17-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-17-1"
class="td11"><span
class="cmr-9">15</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-17-2"
class="td11"> <span
class="cmr-9">15</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-17-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-17-4"
class="td01"><span
class="cmr-9">15</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-17-5"
class="td11"> <span
class="cmr-9">47</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-17-6"
class="td11"> <span
class="cmr-9">2.0</span></td></tr><tr
style="vertical-align:baseline;" id="TBL-15-18-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-18-1"
class="td11"><span
class="cmr-9">16</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-18-2"
class="td11"> <span
class="cmr-9">16</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-18-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-18-4"
class="td01"><span
class="cmr-9">16</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-18-5"
class="td11"> <span
class="cmr-9">48</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-18-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-19-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-19-1"
class="td11"><span
class="cmr-9">17</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-19-2"
class="td11"> <span
class="cmr-9">17</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-19-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-19-4"
class="td01"><span
class="cmr-9">17</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-19-5"
class="td11"> <span
class="cmr-9">49</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-19-6"
class="td11"> <span
class="cmr-9">2.0</span></td></tr><tr
style="vertical-align:baseline;" id="TBL-15-20-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-20-1"
class="td11"><span
class="cmr-9">18</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-20-2"
class="td11"> <span
class="cmr-9">18</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-20-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-20-4"
class="td01"><span
class="cmr-9">18</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-20-5"
class="td11"> <span
class="cmr-9">50</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-20-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-21-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-21-1"
class="td11"><span
class="cmr-9">19</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-21-2"
class="td11"> <span
class="cmr-9">19</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-21-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-21-4"
class="td01"><span
class="cmr-9">19</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-21-5"
class="td11"> <span
class="cmr-9">51</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-21-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-22-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-22-1"
class="td11"><span
class="cmr-9">20</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-22-2"
class="td11"> <span
class="cmr-9">20</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-22-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-22-4"
class="td01"><span
class="cmr-9">20</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-22-5"
class="td11"> <span
class="cmr-9">52</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-22-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-23-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-23-1"
class="td11"><span
class="cmr-9">21</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-23-2"
class="td11"> <span
class="cmr-9">21</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-23-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-23-4"
class="td01"><span
class="cmr-9">21</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-23-5"
class="td11"> <span
class="cmr-9">53</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-23-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-24-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-24-1"
class="td11"><span
class="cmr-9">22</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-24-2"
class="td11"> <span
class="cmr-9">22</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-24-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-24-4"
class="td01"><span
class="cmr-9">22</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-24-5"
class="td11"> <span
class="cmr-9">54</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-24-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-25-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-25-1"
class="td11"><span
class="cmr-9">23</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-25-2"
class="td11"> <span
class="cmr-9">23</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-25-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-25-4"
class="td01"><span
class="cmr-9">23</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-25-5"
class="td11"> <span
class="cmr-9">55</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-25-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-26-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-26-1"
class="td11"><span
class="cmr-9">24</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-26-2"
class="td11"> <span
class="cmr-9">24</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-26-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-26-4"
class="td01"><span
class="cmr-9">24</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-26-5"
class="td11"> <span
class="cmr-9">56</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-26-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-27-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-27-1"
class="td11"><span
class="cmr-9">25</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-27-2"
class="td11"> <span
class="cmr-9">25</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-27-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-27-4"
class="td01"><span
class="cmr-9">25</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-27-5"
class="td11"> <span
class="cmr-9">57</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-27-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-28-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-28-1"
class="td11"><span
class="cmr-9">26</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-28-2"
class="td11"> <span
class="cmr-9">26</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-28-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-28-4"
class="td01"><span
class="cmr-9">26</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-28-5"
class="td11"> <span
class="cmr-9">58</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-28-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-29-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-29-1"
class="td11"><span
class="cmr-9">27</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-29-2"
class="td11"> <span
class="cmr-9">27</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-29-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-29-4"
class="td01"><span
class="cmr-9">27</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-29-5"
class="td11"> <span
class="cmr-9">59</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-29-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-30-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-30-1"
class="td11"><span
class="cmr-9">28</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-30-2"
class="td11"> <span
class="cmr-9">28</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-30-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-30-4"
class="td01"><span
class="cmr-9">28</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-30-5"
class="td11"> <span
class="cmr-9">60</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-30-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-31-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-31-1"
class="td11"><span
class="cmr-9">29</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-31-2"
class="td11"> <span
class="cmr-9">29</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-31-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-31-4"
class="td01"><span
class="cmr-9">29</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-31-5"
class="td11"> <span
class="cmr-9">61</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-31-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-32-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-32-1"
class="td11"><span
class="cmr-9">30</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-32-2"
class="td11"> <span
class="cmr-9">30</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-32-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-32-4"
class="td01"><span
class="cmr-9">30</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-32-5"
class="td11"> <span
class="cmr-9">62</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-32-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-33-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-33-1"
class="td11"><span
class="cmr-9">31</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-33-2"
class="td11"> <span
class="cmr-9">31</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-33-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-33-4"
class="td01"><span
class="cmr-9">31</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-33-5"
class="td11"> <span
class="cmr-9">63</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-33-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-34-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-34-1"
class="td11"><span
class="cmr-9">32</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-34-2"
class="td11"> <span
class="cmr-9">32</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-34-3"
class="td10"> <span
class="cmr-9">1.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-34-4"
class="td01"><span
class="cmr-9">32</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-34-5"
class="td11"> <span
class="cmr-9">64</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-34-6"
class="td11"> <span
class="cmr-9">2.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-35-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-35-1"
class="td11"><span
class="cmr-9">33</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-35-2"
class="td11"> <span
class="cmr-9">33</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-35-3"
class="td10"> <span
class="cmr-9">2.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-35-4"
class="td01"><span
class="cmr-9">33</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-35-5"
class="td11"> <span
class="cmr-9">25</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-35-6"
class="td11"> <span
class="cmr-9">1.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-36-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-36-1"
class="td11"><span
class="cmr-9">34</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-36-2"
class="td11"> <span
class="cmr-9">34</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-36-3"
class="td10"> <span
class="cmr-9">2.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-36-4"
class="td01"><span
class="cmr-9">34</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-36-5"
class="td11"> <span
class="cmr-9">26</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-36-6"
class="td11"> <span
class="cmr-9">1.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-37-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-37-1"
class="td11"><span
class="cmr-9">35</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-37-2"
class="td11"> <span
class="cmr-9">35</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-37-3"
class="td10"> <span
class="cmr-9">2.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-37-4"
class="td01"><span
class="cmr-9">35</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-37-5"
class="td11"> <span
class="cmr-9">27</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-37-6"
class="td11"> <span
class="cmr-9">1.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-38-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-38-1"
class="td11"><span
class="cmr-9">36</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-38-2"
class="td11"> <span
class="cmr-9">36</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-38-3"
class="td10"> <span
class="cmr-9">2.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-38-4"
class="td01"><span
class="cmr-9">36</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-38-5"
class="td11"> <span
class="cmr-9">28</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-38-6"
class="td11"> <span
class="cmr-9">1.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-39-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-39-1"
class="td11"><span
class="cmr-9">37</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-39-2"
class="td11"> <span
class="cmr-9">37</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-39-3"
class="td10"> <span
class="cmr-9">2.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-39-4"
class="td01"><span
class="cmr-9">37</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-39-5"
class="td11"> <span
class="cmr-9">29</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-39-6"
class="td11"> <span
class="cmr-9">1.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-40-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-40-1"
class="td11"><span
class="cmr-9">38</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-40-2"
class="td11"> <span
class="cmr-9">38</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-40-3"
class="td10"> <span
class="cmr-9">2.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-40-4"
class="td01"><span
class="cmr-9">38</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-40-5"
class="td11"> <span
class="cmr-9">30</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-40-6"
class="td11"> <span
class="cmr-9">1.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-41-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-41-1"
class="td11"><span
class="cmr-9">39</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-41-2"
class="td11"> <span
class="cmr-9">39</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-41-3"
class="td10"> <span
class="cmr-9">2.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-41-4"
class="td01"><span
class="cmr-9">39</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-41-5"
class="td11"> <span
class="cmr-9">31</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-41-6"
class="td11"> <span
class="cmr-9">1.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-42-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-42-1"
class="td11"><span
class="cmr-9">40</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-42-2"
class="td11"> <span
class="cmr-9">40</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-42-3"
class="td10"> <span
class="cmr-9">2.0</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-42-4"
class="td01"><span
class="cmr-9">40</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-42-5"
class="td11"> <span
class="cmr-9">32</span></td><td style="white-space:nowrap; text-align:right;" id="TBL-15-42-6"
class="td11"> <span
class="cmr-9">1.0</span></td>
</tr><tr
style="vertical-align:baseline;" id="TBL-15-43-"><td style="white-space:nowrap; text-align:right;" id="TBL-15-43-1"
class="td11"> </td></tr></table></div></div>
</div><hr class="endfloat" />
</div>
<!--l. 164--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlse6.html" >next</a>] [<a
href="userhtmlsu23.html" >front</a>] [<a
href="userhtmlsu25.html#userhtmlsu26.html" >up</a>] </p></div>
<!--l. 164--><p class="indent" > <a
id="tailuserhtmlsu23.html"></a>
</body></html>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,225 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_gather &#8212; Gather Global Dense Matrix</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 355--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu28.html" >next</a>] [<a
href="userhtmlsu24.html" >prev</a>] [<a
href="userhtmlsu24.html#tailuserhtmlsu24.html" >prev-tail</a>] [<a
href="userhtmlse5.html#tailuserhtmlsu25.html">tail</a>] [<a
href="userhtmlsu25.html#userhtmlsu27.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">5.3 </span> <a
id="x35-690005.3"></a>psb_gather &#8212; Gather Global Dense Matrix</h4>
<!--l. 357--><p class="noindent" >These subroutines collect the portions of global dense matrix distributed over all
process into one single array stored on one process.
<center class="par-math-display" >
<img
src="userhtml28x.png" alt="glob-x &#x2190; collect(loc-xi)
" class="par-math-display" ></center>
<!--l. 361--><p class="nopar" > where:
<dl class="description"><dt class="description">
<span
class="cmmi-10">glob</span>_<span
class="cmmi-10">x</span> </dt><dd
class="description">is the global submatrix <span
class="cmmi-10">glob</span>_<span
class="cmmi-10">x</span><sub><span
class="cmr-7">1:</span><span
class="cmmi-7">m,</span><span
class="cmr-7">1:</span><span
class="cmmi-7">n</span></sub>
</dd><dt class="description">
<span
class="cmmi-10">loc</span>_<span
class="cmmi-10">x</span><sub><span
class="cmmi-7">i</span></sub> </dt><dd
class="description">is the local portion of global dense matrix on process <span
class="cmmi-10">i</span>.
</dd><dt class="description">
<span
class="cmmi-10">collect</span> </dt><dd
class="description">is the collect function.</dd></dl>
<div class="table">
<!--l. 370--><p class="indent" > <a
id="x35-6900116"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 371--><p class="noindent" >
<div class="tabular"> <table id="TBL-18" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-18-1g"><col
id="TBL-18-1"><col
id="TBL-18-2"></colgroup><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-1-1"
class="td11"><span
class="cmmi-10">x</span><sub><span
class="cmmi-7">i</span></sub><span
class="cmmi-10">,y </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-1-2"
class="td11"><span
class="cmbx-10">Subroutine</span></td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-2-1"
class="td11">Integer </td><td style="white-space:nowrap; text-align:left;" id="TBL-18-2-2"
class="td11">psb_gather </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-3-1"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-18-3-2"
class="td11">psb_gather </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-4-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-18-4-2"
class="td11">psb_gather </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-5-1"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-18-5-2"
class="td11">psb_gather </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-18-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-6-1"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-18-6-2"
class="td11">psb_gather </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-18-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-7-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;16: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x35-6900116 -->
</div><hr class="endfloat" />
</div>
<!--l. 387-->
<div class="lstlisting" id="listing-7"><span class="label"><a
id="x35-69002r1"></a></span><span
class="cmbx-10">call</span>&#x00A0;psb_gather(glob_x,&#x00A0;loc_x,&#x00A0;desc_a,&#x00A0;info,&#x00A0;root)&#x00A0;<br /><span class="label"><a
id="x35-69003r2"></a></span><span
class="cmbx-10">call</span>&#x00A0;psb_gather(glob_x,&#x00A0;loc_x,&#x00A0;desc_a,&#x00A0;info,&#x00A0;root)
</div>
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">loc</span><span
class="cmbx-10">_x</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">glob</span>_<span
class="cmmi-10">x</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;indicated in Table&#x00A0;<a
href="#x35-6900116">16<!--tex4ht:ref: tab:gather --></a>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">root</span> </dt><dd
class="description">The process that holds the global copy. If <span
class="cmmi-10">root </span>= <span
class="cmsy-10">-</span>1 all the processes will
have a copy of the global vector.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer variable <span
class="cmsy-10">-</span>1 <span
class="cmsy-10">&#x2264; </span><span
class="cmmi-10">root </span><span
class="cmsy-10">&#x2264; </span><span
class="cmmi-10">np </span><span
class="cmsy-10">- </span>1, default <span
class="cmsy-10">-</span>1.
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">glob</span><span
class="cmbx-10">_x</span> </dt><dd
class="description">The array where the local parts must be gathered.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: a rank one or two array with the <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">ALLOCATABLE</span></span></span> attribute.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 456--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu28.html" >next</a>] [<a
href="userhtmlsu24.html" >prev</a>] [<a
href="userhtmlsu24.html#tailuserhtmlsu24.html" >prev-tail</a>] [<a
href="userhtmlsu25.html" >front</a>] [<a
href="userhtmlsu25.html#userhtmlsu27.html" >up</a>] </p></div>
<!--l. 456--><p class="indent" > <a
id="tailuserhtmlsu25.html"></a>
</body></html>

@ -0,0 +1,244 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_scatter &#8212; Scatter Global Dense Matrix</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 456--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu25.html" >prev</a>] [<a
href="userhtmlsu25.html#tailuserhtmlsu25.html" >prev-tail</a>] [<a
href="userhtmlsu23.html#tailuserhtmlsu26.html">tail</a>] [<a
href="userhtmlsu25.html#userhtmlsu28.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">5.4 </span> <a
id="x36-700005.4"></a>psb_scatter &#8212; Scatter Global Dense Matrix</h4>
<!--l. 458--><p class="noindent" >These subroutines scatters the portions of global dense matrix owned by a process to
all the processes in the processes grid.
<center class="par-math-display" >
<img
src="userhtml29x.png" alt="loc-xi &#x2190; scatter(glob-x)
" class="par-math-display" ></center>
<!--l. 461--><p class="nopar" > where:
<dl class="description"><dt class="description">
<span
class="cmmi-10">glob</span>_<span
class="cmmi-10">x</span> </dt><dd
class="description">is the global matrix <span
class="cmmi-10">glob</span>_<span
class="cmmi-10">x</span><sub><span
class="cmr-7">1:</span><span
class="cmmi-7">m,</span><span
class="cmr-7">1:</span><span
class="cmmi-7">n</span></sub>
</dd><dt class="description">
<span
class="cmmi-10">loc</span>_<span
class="cmmi-10">x</span><sub><span
class="cmmi-7">i</span></sub> </dt><dd
class="description">is the local portion of global dense matrix on process <span
class="cmmi-10">i</span>.
</dd><dt class="description">
<span
class="cmmi-10">scatter</span> </dt><dd
class="description">is the scatter function.</dd></dl>
<div class="table">
<!--l. 470--><p class="indent" > <a
id="x36-7000117"></a><hr class="float"><div class="float"
>
<div class="center"
>
<!--l. 471--><p class="noindent" >
<div class="tabular"> <table id="TBL-19" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-19-1g"><col
id="TBL-19-1"><col
id="TBL-19-2"></colgroup><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-1-1"
class="td11"><span
class="cmmi-10">x</span><sub><span
class="cmmi-7">i</span></sub><span
class="cmmi-10">,y </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-1-2"
class="td11"><span
class="cmbx-10">Subroutine</span></td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-2-1"
class="td11">Integer </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-2-2"
class="td11">psb_scatter </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-3-1"
class="td11">Short Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-3-2"
class="td11">psb_scatter </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-19-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-4-1"
class="td11">Long Precision Real </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-4-2"
class="td11">psb_scatter </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-19-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-5-1"
class="td11">Short Precision Complex</td><td style="white-space:nowrap; text-align:left;" id="TBL-19-5-2"
class="td11">psb_scatter </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-19-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-1"
class="td11">Long Precision Complex </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-2"
class="td11">psb_scatter </td>
</tr><tr
class="hline"><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-19-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-7-1"
class="td11"> </td></tr></table></div></div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;17: </span><span
class="content">Data types</span></div><!--tex4ht:label?: x36-7000117 -->
</div><hr class="endfloat" />
</div>
<!--l. 487-->
<div class="lstlisting" id="listing-8"><span class="label"><a
id="x36-70002r1"></a></span><span
class="cmbx-10">call</span>&#x00A0;psb_scatter(glob_x,&#x00A0;loc_x,&#x00A0;desc_a,&#x00A0;info,&#x00A0;root,&#x00A0;mold)
</div>
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">glob</span><span
class="cmbx-10">_x</span> </dt><dd
class="description">The array that must be scattered into local pieces.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank one or two array.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">contains data structures for communications.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">root</span> </dt><dd
class="description">The process that holds the global copy. If <span
class="cmmi-10">root </span>= <span
class="cmsy-10">-</span>1 all the processes have
a copy of the global vector.<br
class="newline" />Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer variable <span
class="cmsy-10">-</span>1 <span
class="cmsy-10">&#x2264; </span><span
class="cmmi-10">root </span><span
class="cmsy-10">&#x2264; </span><span
class="cmmi-10">np </span><span
class="cmsy-10">- </span>1, default <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_root_</span></span></span>,
i.e. process 0.
</dd><dt class="description">
<span
class="cmbx-10">mold</span> </dt><dd
class="description">The desired dynamic type for the internal vector storage.<br
class="newline" />Scope: <span
class="cmbx-10">local</span>.<br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of a class derived from <a
id="vbasedata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_base</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>;
this is only allowed when loc_x is of type <a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">loc</span><span
class="cmbx-10">_x</span> </dt><dd
class="description">the local portion of global dense matrix <span
class="cmmi-10">glob</span>_<span
class="cmmi-10">x</span>. <br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: a rank one or two ALLOCATABLE array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>&#x00A0;containing numbers of the type indicated in Table&#x00A0;<a
href="#x36-7000117">17<!--tex4ht:ref: tab:scatter --></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu25.html" >prev</a>] [<a
href="userhtmlsu25.html#tailuserhtmlsu25.html" >prev-tail</a>] [<a
href="userhtmlsu26.html" >front</a>] [<a
href="userhtmlsu25.html#userhtmlsu28.html" >up</a>] </p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlsu26.html"></a>
</body></html>

@ -0,0 +1,419 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_cdall &#8212; Allocates a communication descriptor</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 8--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu31.html" >next</a>] [<a
href="userhtmlsu25.html#tailuserhtmlsu27.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu30.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.1 </span> <a
id="x38-720006.1"></a>psb_cdall &#8212; Allocates a communication descriptor</h4>
<div class="verbatim" id="verbatim-50">
call&#x00A0;psb_cdall(icontxt,&#x00A0;desc_a,&#x00A0;info,mg=mg,parts=parts)
&#x00A0;<br />call&#x00A0;psb_cdall(icontxt,&#x00A0;desc_a,&#x00A0;info,vg=vg,[mg=mg,flag=flag])
&#x00A0;<br />call&#x00A0;psb_cdall(icontxt,&#x00A0;desc_a,&#x00A0;info,vl=vl,[nl=nl,globalcheck=.false.,lidx=lidx])
&#x00A0;<br />call&#x00A0;psb_cdall(icontxt,&#x00A0;desc_a,&#x00A0;info,nl=nl)
&#x00A0;<br />call&#x00A0;psb_cdall(icontxt,&#x00A0;desc_a,&#x00A0;info,mg=mg,repl=.true.)
</div>
<!--l. 16--><p class="nopar" >
<!--l. 18--><p class="indent" > This subroutine initializes the communication descriptor associated with an index
space. One of the optional arguments <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">parts</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vg</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">nl</span></span></span> or <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">repl</span></span></span> must be specified,
thereby choosing the specific initialization strategy.
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">icontxt</span> </dt><dd
class="description">the communication context.<br
class="newline" />Scope:<span
class="cmbx-10">global</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer value.
</dd><dt class="description">
<span
class="cmbx-10">vg</span> </dt><dd
class="description">Data allocation: each index <span
class="cmmi-10">i </span><span
class="cmsy-10">&#x2208;{</span>1<span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">mg</span><span
class="cmsy-10">} </span>is allocated to process <span
class="cmmi-10">vg</span>(<span
class="cmmi-10">i</span>).<br
class="newline" />Scope:<span
class="cmbx-10">global</span>.<br
class="newline" />Type:<span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer array.
</dd><dt class="description">
<span
class="cmbx-10">flag</span> </dt><dd
class="description">Specifies whether entries in <span
class="cmmi-10">vg </span>are zero- or one-based.<br
class="newline" />Scope:<span
class="cmbx-10">global</span>.<br
class="newline" />Type:<span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer value 0<span
class="cmmi-10">,</span>1, default 0.
</dd><dt class="description">
<span
class="cmbx-10">mg</span> </dt><dd
class="description">the (global) number of rows of the problem.<br
class="newline" />Scope:<span
class="cmbx-10">global</span>.<br
class="newline" />Type:<span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer value. It is required if <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">parts</span></span></span> or <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">repl</span></span></span> is specified,
it is optional if <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vg</span></span></span> is specified.
</dd><dt class="description">
<span
class="cmbx-10">parts</span> </dt><dd
class="description">the subroutine that defines the partitioning scheme.<br
class="newline" />Scope:<span
class="cmbx-10">global</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Specified as: a subroutine.
</dd><dt class="description">
<span
class="cmbx-10">vl</span> </dt><dd
class="description">Data allocation: the set of global indices <span
class="cmmi-10">vl</span>(1 : <span
class="cmmi-10">nl</span>) belonging to the calling
process. <br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer array.
</dd><dt class="description">
<span
class="cmbx-10">nl</span> </dt><dd
class="description">Data allocation: in a generalized block-row distribution the number of indices
belonging to the current process. <br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer value. May be specified together with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span>.
</dd><dt class="description">
<span
class="cmbx-10">repl</span> </dt><dd
class="description">Data allocation: build a replicated index space (i.e. all processes own all
indices).<br
class="newline" />Scope:<span
class="cmbx-10">global</span>.<br
class="newline" />Type:<span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: the logical value <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">.true.</span></span></span>
</dd><dt class="description">
<span
class="cmbx-10">globalcheck</span> </dt><dd
class="description">Data allocation: do global checks on the local index lists <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span><br
class="newline" />Scope:<span
class="cmbx-10">global</span>.<br
class="newline" />Type:<span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a logical value, default: <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">.false.</span></span></span>
</dd><dt class="description">
<span
class="cmbx-10">lidx</span> </dt><dd
class="description">Data allocation: the set of local indices <span
class="cmmi-10">lidx</span>(1 : <span
class="cmmi-10">nl</span>) to be assigned to the
global indices <span
class="cmmi-10">vl</span>. <br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer array.</dd></dl>
<!--l. 86--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 100--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x38-72002x1">One of the optional arguments <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">parts</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vg</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">nl</span></span></span> or <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">repl</span></span></span> must be specified,
thereby choosing the initialization strategy as follows:
<dl class="description"><dt class="description">
<span
class="cmbx-10">parts</span> </dt><dd
class="description">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 <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">mg</span></span></span> as well. The
subroutine must conform to the following interface:
<div class="verbatim" id="verbatim-51">
&#x00A0;&#x00A0;interface
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;subroutine&#x00A0;psb_parts(glob_index,mg,np,pv,nv)
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;integer,&#x00A0;intent&#x00A0;(in)&#x00A0;&#x00A0;::&#x00A0;glob_index,np,mg
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;integer,&#x00A0;intent&#x00A0;(out)&#x00A0;::&#x00A0;nv,&#x00A0;pv(*)
&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;end&#x00A0;subroutine&#x00A0;psb_parts
&#x00A0;<br />&#x00A0;&#x00A0;end&#x00A0;interface
</div>
<!--l. 118--><p class="nopar" > The input arguments are:
<dl class="description"><dt class="description">
<span
class="cmbx-10">glob</span><span
class="cmbx-10">_index</span> </dt><dd
class="description">The global index to be mapped;
</dd><dt class="description">
<span
class="cmbx-10">np</span> </dt><dd
class="description">The number of processes in the mapping;
</dd><dt class="description">
<span
class="cmbx-10">mg</span> </dt><dd
class="description">The total number of global rows in the mapping;</dd></dl>
<!--l. 125--><p class="noindent" >The output arguments are:
<dl class="description"><dt class="description">
<span
class="cmbx-10">nv</span> </dt><dd
class="description">The number of entries in <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">pv</span></span></span>;
</dd><dt class="description">
<span
class="cmbx-10">pv</span> </dt><dd
class="description">A vector containing the indices of the processes to which the
global index should be assigend; each entry must satisfy 0 <span
class="cmsy-10">&#x2264;</span>
<span
class="cmmi-10">pv</span>(<span
class="cmmi-10">i</span>) <span
class="cmmi-10">&#x003C; np</span>; if <span
class="cmmi-10">nv &#x003E; </span>1 we have an index assigned to multiple
processes, i.e. we have an overlap among the subdomains.</dd></dl>
</dd><dt class="description">
<span
class="cmbx-10">vg</span> </dt><dd
class="description">In this case the association between an index and a process is specified via
an integer vector <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vg(1:mg)</span></span></span>; each index <span
class="cmmi-10">i </span><span
class="cmsy-10">&#x2208;{</span>1<span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">mg</span><span
class="cmsy-10">} </span>is assigned to process
<span
class="cmmi-10">vg</span>(<span
class="cmmi-10">i</span>). The vector <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vg</span></span></span> must be identical on all calling processes; its
entries may have the ranges (0<span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">np </span><span
class="cmsy-10">- </span>1) or (1<span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">np</span>) according to the
value of <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">flag</span></span></span>. The size <span
class="cmmi-10">mg </span>may be specified via the optional
argument <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">mg</span></span></span>; the default is to use the entire vector <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vg</span></span></span>, thus having
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">mg=size(vg)</span></span></span>.
</dd><dt class="description">
<span
class="cmbx-10">vl</span> </dt><dd
class="description">In this case we are specifying the list of indices <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl(1:nl)</span></span></span> assigned to the
current process; thus, the global problem size <span
class="cmmi-10">mg </span>is given by the range of
the aggregate of the individual vectors <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span> specified in the calling
processes. The size may be specified via the optional argument <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">nl</span></span></span>; the
default is to use the entire vector <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span>, thus having <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">nl=size(vl)</span></span></span>. If
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">globalcheck=.true.</span></span></span> the subroutine will check how many times each
entry in the global index space (1<span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">mg</span>) is specified in the input lists <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span>,
thus allowing for the presence of overlap in the input, and checking for
&#8220;orphan&#8221; indices. If <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">globalcheck=.false.</span></span></span>, 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 class="description">
<span
class="cmbx-10">lidx</span> </dt><dd
class="description">The optional argument <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">lidx</span></span></span> is available for those cases in which the user
has already established a global-to-local mapping; if it is specified, each
index in <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl(i)</span></span></span> will be mapped to the corresponding local index <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">lidx(i)</span></span></span>.
When specifying the argument <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">lidx</span></span></span> the user would also likely employ
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">lidx</span></span></span> in calls to <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdins</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">local</span></span></span> in calls to <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spins</span></span></span> and
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_geins</span></span></span>; see also sec.&#x00A0;<a
href="userhtmlsu3.html#x9-70002.3.1">2.3.1<!--tex4ht:ref: sec:usermaps --></a>.
</dd><dt class="description">
<span
class="cmbx-10">nl</span> </dt><dd
class="description">If this argument is specified alone (i.e. without <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span>) the result is a
generalized row-block distribution in which each process <span
class="cmmi-10">I </span>gets assigned a
consecutive chunk of <span
class="cmmi-10">N</span><sub><span
class="cmmi-7">I</span></sub> = <span
class="cmmi-10">nl </span>global indices.
</dd><dt class="description">
<span
class="cmbx-10">repl</span> </dt><dd
class="description">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
class="enumerate" id="x38-72004x2">On exit from this routine the descriptor is in the build state.
</li>
<li
class="enumerate" id="x38-72006x3">Calling the routine with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vg</span></span></span> or <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">parts</span></span></span> implies that every process will scan the
entire index space to figure out the local indices.
</li>
<li
class="enumerate" id="x38-72008x4">Overlapped indices are possible with both <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">parts</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span> invocations.
</li>
<li
class="enumerate" id="x38-72010x5">When the subroutine is invoked with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span> in conjunction with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">globalcheck=.true.</span></span></span>,
it will perform a scan of the index space to search for overlap or orphan
indices.
</li>
<li
class="enumerate" id="x38-72012x6">When the subroutine is invoked with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span> in conjunction with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">globalcheck=.false.</span></span></span>,
no index space scan will take place. Thus it is the responsibility of the user to
make sure that the indices specified in <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl</span></span></span> have neither orphans nor overlaps; if
this assumption fails, results will be unpredictable.
</li>
<li
class="enumerate" id="x38-72014x7">Orphan and overlap indices are impossible by construction when the subroutine
is invoked with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">nl</span></span></span> (alone), or <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vg</span></span></span>.</li></ol>
<!--l. 198--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu31.html" >next</a>] [<a
href="userhtmlsu27.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu30.html" >up</a>] </p></div>
<!--l. 198--><p class="indent" > <a
id="tailuserhtmlsu27.html"></a>
</body></html>

@ -0,0 +1,206 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_cdins &#8212; Communication descriptor insert routine</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 199--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu32.html" >next</a>] [<a
href="userhtmlsu27.html" >prev</a>] [<a
href="userhtmlsu27.html#tailuserhtmlsu27.html" >prev-tail</a>] [<a
href="userhtmlsu26.html#tailuserhtmlsu28.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu31.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.2 </span> <a
id="x39-730006.2"></a>psb_cdins &#8212; Communication descriptor insert routine</h4>
<div class="verbatim" id="verbatim-52">
call&#x00A0;psb_cdins(nz,&#x00A0;ia,&#x00A0;ja,&#x00A0;desc_a,&#x00A0;info&#x00A0;[,ila,jla])
&#x00A0;<br />call&#x00A0;psb_cdins(nz,ja,desc,info[,jla,mask,lidx])
</div>
<!--l. 204--><p class="nopar" >
<!--l. 206--><p class="indent" > 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 <span
class="cmmi-10">ia</span>(<span
class="cmmi-10">i</span>)<span
class="cmmi-10">,ja</span>(<span
class="cmmi-10">i</span>); the starting index
<span
class="cmmi-10">ia</span>(<span
class="cmmi-10">i</span>) should belong to the current process. In the second form only the remote indices
<span
class="cmmi-10">ja</span>(<span
class="cmmi-10">i</span>) are specified.
<!--l. 214--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Asynchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">nz</span> </dt><dd
class="description">the number of points being inserted.<br
class="newline" />Scope: <span
class="cmbx-10">local</span>.<br
class="newline" />Type: <span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer value.
</dd><dt class="description">
<span
class="cmbx-10">ia</span> </dt><dd
class="description">the indices of the starting vertex of the edges being inserted.<br
class="newline" />Scope: <span
class="cmbx-10">local</span>.<br
class="newline" />Type: <span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer array of length <span
class="cmmi-10">nz</span>.
</dd><dt class="description">
<span
class="cmbx-10">ja</span> </dt><dd
class="description">the indices of the end vertex of the edges being inserted.<br
class="newline" />Scope: <span
class="cmbx-10">local</span>.<br
class="newline" />Type: <span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer array of length <span
class="cmmi-10">nz</span>.
</dd><dt class="description">
<span
class="cmbx-10">mask</span> </dt><dd
class="description">Mask entries in <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">ja</span></span></span>, they are inserted only when the corresponding <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">mask</span></span></span>
entries are <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">.true.</span></span></span><br
class="newline" />Scope: <span
class="cmbx-10">local</span>.<br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a logical array of length <span
class="cmmi-10">nz</span>, default <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">.true.</span></span></span>.
</dd><dt class="description">
<span
class="cmbx-10">lidx</span> </dt><dd
class="description">User defined local indices for <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">ja</span></span></span>.<br
class="newline" />Scope: <span
class="cmbx-10">local</span>.<br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer array of length <span
class="cmmi-10">nz</span>.</dd></dl>
<!--l. 253--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the updated communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.
</dd><dt class="description">
<span
class="cmbx-10">ila</span> </dt><dd
class="description">the local indices of the starting vertex of the edges being inserted.<br
class="newline" />Scope: <span
class="cmbx-10">local</span>.<br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: an integer array of length <span
class="cmmi-10">nz</span>.
</dd><dt class="description">
<span
class="cmbx-10">jla</span> </dt><dd
class="description">the local indices of the end vertex of the edges being inserted.<br
class="newline" />Scope: <span
class="cmbx-10">local</span>.<br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: an integer array of length <span
class="cmmi-10">nz</span>.
</dd></dl>
<!--l. 277--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x39-73002x1">This routine may only be called if the descriptor is in the build state;
</li>
<li
class="enumerate" id="x39-73004x2">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
class="enumerate" id="x39-73006x3">The second form of this routine will be useful when dealing with
user-specified index mappings; see also&#x00A0;<a
href="userhtmlsu3.html#x9-70002.3.1">2.3.1<!--tex4ht:ref: sec:usermaps --></a>.</li></ol>
<!--l. 293--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu32.html" >next</a>] [<a
href="userhtmlsu27.html" >prev</a>] [<a
href="userhtmlsu27.html#tailuserhtmlsu27.html" >prev-tail</a>] [<a
href="userhtmlsu28.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu31.html" >up</a>] </p></div>
<!--l. 293--><p class="indent" > <a
id="tailuserhtmlsu28.html"></a>
</body></html>

@ -0,0 +1,122 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_cdasb &#8212; Communication descriptor assembly routine</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 294--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu33.html" >next</a>] [<a
href="userhtmlsu28.html" >prev</a>] [<a
href="userhtmlsu28.html#tailuserhtmlsu28.html" >prev-tail</a>] [<a
href="userhtmlse6.html#tailuserhtmlsu29.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu32.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.3 </span> <a
id="x40-740006.3"></a>psb_cdasb &#8212; Communication descriptor assembly routine</h4>
<div class="verbatim" id="verbatim-53">
call&#x00A0;psb_cdasb(desc_a,&#x00A0;info&#x00A0;[,&#x00A0;mold])
</div>
<!--l. 298--><p class="nopar" >
<!--l. 300--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">mold</span> </dt><dd
class="description">The desired dynamic type for the internal index storage.<br
class="newline" />Scope: <span
class="cmbx-10">local</span>.<br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a object of type derived from (integer)
<a
id="vbasedata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_base</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>.</dd></dl>
<!--l. 315--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 329--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x40-74002x1">On exit from this routine the descriptor is in the assembled state.</li></ol>
<!--l. 340--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu33.html" >next</a>] [<a
href="userhtmlsu28.html" >prev</a>] [<a
href="userhtmlsu28.html#tailuserhtmlsu28.html" >prev-tail</a>] [<a
href="userhtmlsu29.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu32.html" >up</a>] </p></div>
<!--l. 340--><p class="indent" > <a
id="tailuserhtmlsu29.html"></a>
</body></html>

@ -0,0 +1,282 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Application structure</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 298--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu6.html" >next</a>] [<a
href="userhtmlsu2.html" >prev</a>] [<a
href="userhtmlsu2.html#tailuserhtmlsu2.html" >prev-tail</a>] [<a
href="#tailuserhtmlsu3.html">tail</a>] [<a
href="userhtmlse2.html#userhtmlse3.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">2.3 </span> <a
id="x9-60002.3"></a>Application structure</h4>
<!--l. 301--><p class="noindent" >The main underlying principle of the PSBLAS library is that the library objects are
created and exist with reference to a discretized space to which there corresponds
an index space and a matrix sparsity pattern. As an example, consider a
cell-centered finite-volume discretization of the Navier-Stokes equations on a
simulation domain; the index space 1<span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">n </span>is isomorphic to the set of cell centers,
whereas the pattern of the associated linear system matrix is isomorphic to the
adjacency graph imposed on the discretization mesh by the discretization
stencil.
<!--l. 311--><p class="indent" > Thus the first order of business is to establish an index space, and this is done
with a call to <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdall</span></span></span> in which we specify the size of the index space <span
class="cmmi-10">n </span>and the
allocation of the elements of the index space to the various processes making up the
MPI (virtual) parallel machine.
<!--l. 317--><p class="indent" > The index space is partitioned among processes, and this creates a mapping from
the &#8220;global&#8221; numbering 1<span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">n </span>to a numbering &#8220;local&#8221; to each process; each process <span
class="cmmi-10">i</span>
will own a certain subset 1<span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">n</span><sub>row<sub><span
class="cmmi-5">i</span></sub></sub>, each element of which corresponds to a certain
element of 1<span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">n</span>. The user does not set explicitly this mapping; when the application
needs to indicate to which element of the index space a certain item is related,
such as the row and column index of a matrix coefficient, it does so in the
&#8220;global&#8221; numbering, and the library will translate into the appropriate &#8220;local&#8221;
numbering.
<!--l. 327--><p class="indent" > For a given index space 1<span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">n </span>there are many possible associated topologies, i.e.
many different discretization stencils; thus the description of the index space is not
completed until the user has defined a sparsity pattern, either explicitly through
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdins</span></span></span> or implicitly through <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spins</span></span></span>. The descriptor is finalized with a call to
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdasb</span></span></span> and a sparse matrix with a call to <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spasb</span></span></span>. After <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdasb</span></span></span> each
process <span
class="cmmi-10">i </span>will have defined a set of &#8220;halo&#8221; (or &#8220;ghost&#8221;) indices <span
class="cmmi-10">n</span><sub>row<sub><span
class="cmmi-5">i</span></sub></sub> + 1<span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">n</span><sub>col<sub>
<span
class="cmmi-5">i</span></sub></sub>,
denoting elements of the index space that are <span
class="cmti-10">not </span>assigned to process <span
class="cmmi-10">i</span>; however the
variables associated with them are needed to complete computations associated with
the sparse matrix <span
class="cmmi-10">A</span>, and thus they have to be fetched from (neighbouring)
processes. The descriptor of the index space is built exactly for the purpose
of properly sequencing the communication steps required to achieve this
objective.
<!--l. 343--><p class="indent" > A simple application structure will walk through the index space allocation,
matrix/vector creation and linear system solution as follows:
<ol class="enumerate1" >
<li
class="enumerate" id="x9-6002x1">Initialize parallel environment with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_init</span></span></span>
</li>
<li
class="enumerate" id="x9-6004x2">Initialize index space with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdall</span></span></span>
</li>
<li
class="enumerate" id="x9-6006x3">Allocate sparse matrix and dense vectors with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spall</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_geall</span></span></span>
</li>
<li
class="enumerate" id="x9-6008x4">Loop over all local rows, generate matrix and vector entries, and insert
them with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spins</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_geins</span></span></span>
</li>
<li
class="enumerate" id="x9-6010x5">Assemble the various entities:
<ol class="enumerate2" >
<li
class="enumerate" id="x9-6012x1"><span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdasb</span></span></span>
</li>
<li
class="enumerate" id="x9-6014x2"><span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spasb</span></span></span>
</li>
<li
class="enumerate" id="x9-6016x3"><span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_geasb</span></span></span></li></ol>
</li>
<li
class="enumerate" id="x9-6018x6">Choose the preconditioner to be used with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">prec%init</span></span></span> and build it with
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">prec%build</span></span></span><span class="footnote-mark"><a
href="userhtml10.html#fn3x0"><sup class="textsuperscript">3</sup></a></span><a
id="x9-6019f3"></a> .
</li>
<li
class="enumerate" id="x9-6021x7">Call the iterative method of choice, e.g. <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_bicgstab</span></span></span></li></ol>
<!--l. 365--><p class="noindent" >This is the structure of the sample program <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">test/pargen/psb_d_pde3d.f90</span></span></span>.
<!--l. 368--><p class="indent" > For a simulation in which the same discretization mesh is used over multiple time
steps, the following structure may be more appropriate:
<ol class="enumerate1" >
<li
class="enumerate" id="x9-6023x1">Initialize parallel environment with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_init</span></span></span>
</li>
<li
class="enumerate" id="x9-6025x2">Initialize index space with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdall</span></span></span>
</li>
<li
class="enumerate" id="x9-6027x3">Loop over the topology of the discretization mesh and build the descriptor
with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdins</span></span></span>
</li>
<li
class="enumerate" id="x9-6029x4">Assemble the descriptor with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdasb</span></span></span>
</li>
<li
class="enumerate" id="x9-6031x5">Allocate the sparse matrices and dense vectors with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spall</span></span></span> and
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_geall</span></span></span>
</li>
<li
class="enumerate" id="x9-6033x6">Loop over the time steps:
<ol class="enumerate2" >
<li
class="enumerate" id="x9-6035x1">If after first time step, reinitialize the sparse matrix with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_sprn</span></span></span>;
also zero out the dense vectors;
</li>
<li
class="enumerate" id="x9-6037x2">Loop over the mesh, generate the coefficients and insert/update them
with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spins</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_geins</span></span></span>
</li>
<li
class="enumerate" id="x9-6039x3">Assemble with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spasb</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_geasb</span></span></span>
</li>
<li
class="enumerate" id="x9-6041x4">Choose and build preconditioner with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">prec%init</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">prec%build</span></span></span>
</li>
<li
class="enumerate" id="x9-6043x5">Call the iterative method of choice, e.g. <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_bicgstab</span></span></span></li></ol>
</li></ol>
<!--l. 391--><p class="noindent" >The insertion routines will be called as many times as needed; they only need to be
called on the data that is actually allocated to the current process, i.e. each process
generates its own data.
<!--l. 396--><p class="indent" > In principle there is no specific order in the calls to <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spins</span></span></span>, nor is there a
requirement to build a matrix row in its entirety before calling the routine; this
allows the application programmer to walk through the discretization mesh element
by element, generating the main part of a given matrix row but also contributions to
the rows corresponding to neighbouring elements.
<!--l. 403--><p class="indent" > From a functional point of view it is even possible to execute one call for each
nonzero coefficient; however this would have a substantial computational
overhead. It is therefore advisable to pack a certain amount of data into each
call to the insertion routine, say touching on a few tens of rows; the best
performng value would depend on both the architecture of the computer being
used and on the problem structure. At the opposite extreme, it would be
possible to generate the entire part of a coefficient matrix residing on a
process and pass it in a single call to <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spins</span></span></span>; this, however, would entail a
doubling of memory occupation, and thus would be almost always far from
optimal.
<!--l. 416--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">2.3.1 </span> <a
id="x9-70002.3.1"></a>User-defined index mappings</h5>
<!--l. 418--><p class="noindent" >PSBLAS supports user-defined global to local index mappings, subject to the
constraints outlined in sec.&#x00A0;<a
href="#x9-60002.3">2.3<!--tex4ht:ref: sec:appstruct --></a>:
<ol class="enumerate1" >
<li
class="enumerate" id="x9-7002x1">The set of indices owned locally must be mapped to the set 1<span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">n</span><sub>row<sub><span
class="cmmi-5">i</span></sub></sub>;
</li>
<li
class="enumerate" id="x9-7004x2">The set of halo points must be mapped to the set <span
class="cmmi-10">n</span><sub>row<sub><span
class="cmmi-5">i</span></sub></sub> + 1<span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">n</span><sub>col<sub>
<span
class="cmmi-5">i</span></sub></sub>;</li></ol>
<!--l. 426--><p class="noindent" >but otherwise the mapping is arbitrary. The user application is responsible to ensure
consistency of this mapping; some errors may be caught by the library, but
this is not guaranteed. The application structure to support this usage is as
follows:
<ol class="enumerate1" >
<li
class="enumerate" id="x9-7006x1">Initialize index
space with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdall(ictx,desc,info,vl=vl,lidx=lidx)</span></span></span> passing the
vectors <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">vl(:)</span></span></span> containing the set of global indices owned by the current
process and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">lidx(:)</span></span></span> containing the corresponding local indices;
</li>
<li
class="enumerate" id="x9-7008x2">Add the halo points <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">ja(:)</span></span></span> and their associated local indices <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">lidx(:)</span></span></span> with
a(some) call(s) to <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdins(nz,ja,desc,info,lidx=lidx)</span></span></span>;
</li>
<li
class="enumerate" id="x9-7010x3">Assemble the descriptor with <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdasb</span></span></span>;
</li>
<li
class="enumerate" id="x9-7012x4">Build the sparse matrices and vectors, optionally making use in <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spins</span></span></span>
and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_geins</span></span></span> of the <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">local</span></span></span> argument specifying that the indices in <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">ia</span></span></span>,
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">ja</span></span></span> and <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">irw</span></span></span>, respectively, are already local indices.</li></ol>
<!--l. 448--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu6.html" >next</a>] [<a
href="userhtmlsu2.html" >prev</a>] [<a
href="userhtmlsu2.html#tailuserhtmlsu2.html" >prev-tail</a>] [<a
href="userhtmlsu3.html" >front</a>] [<a
href="userhtmlse2.html#userhtmlse3.html" >up</a>] </p></div>
<!--l. 448--><p class="indent" > <a
id="tailuserhtmlsu3.html"></a>
</body></html>

@ -0,0 +1,100 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_cdcpy &#8212; Copies a communication descriptor</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 340--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu34.html" >next</a>] [<a
href="userhtmlsu29.html" >prev</a>] [<a
href="userhtmlsu29.html#tailuserhtmlsu29.html" >prev-tail</a>] [<a
href="userhtmlsu27.html#tailuserhtmlsu30.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu33.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.4 </span> <a
id="x41-750006.4"></a>psb_cdcpy &#8212; Copies a communication descriptor</h4>
<div class="verbatim" id="verbatim-54">
call&#x00A0;psb_cdcpy(desc_in,&#x00A0;desc_out,&#x00A0;info)
</div>
<!--l. 344--><p class="nopar" >
<!--l. 346--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Asynchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_in</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd></dl>
<!--l. 357--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_out</span> </dt><dd
class="description">the communication descriptor copy.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 375--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu34.html" >next</a>] [<a
href="userhtmlsu29.html" >prev</a>] [<a
href="userhtmlsu29.html#tailuserhtmlsu29.html" >prev-tail</a>] [<a
href="userhtmlsu30.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu33.html" >up</a>] </p></div>
<!--l. 375--><p class="indent" > <a
id="tailuserhtmlsu30.html"></a>
</body></html>

@ -0,0 +1,83 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_cdfree &#8212; Frees a communication descriptor</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 375--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu35.html" >next</a>] [<a
href="userhtmlsu30.html" >prev</a>] [<a
href="userhtmlsu30.html#tailuserhtmlsu30.html" >prev-tail</a>] [<a
href="userhtmlsu28.html#tailuserhtmlsu31.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu34.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.5 </span> <a
id="x42-760006.5"></a>psb_cdfree &#8212; Frees a communication descriptor</h4>
<div class="verbatim" id="verbatim-55">
call&#x00A0;psb_cdfree(desc_a,&#x00A0;info)
</div>
<!--l. 379--><p class="nopar" >
<!--l. 381--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor to be freed.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.</dd></dl>
<!--l. 391--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 405--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu35.html" >next</a>] [<a
href="userhtmlsu30.html" >prev</a>] [<a
href="userhtmlsu30.html#tailuserhtmlsu30.html" >prev-tail</a>] [<a
href="userhtmlsu31.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu34.html" >up</a>] </p></div>
<!--l. 405--><p class="indent" > <a
id="tailuserhtmlsu31.html"></a>
</body></html>

@ -0,0 +1,163 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_cdbldext &#8212; Build an extended communication descriptor</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 406--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu36.html" >next</a>] [<a
href="userhtmlsu31.html" >prev</a>] [<a
href="userhtmlsu31.html#tailuserhtmlsu31.html" >prev-tail</a>] [<a
href="userhtmlsu29.html#tailuserhtmlsu32.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu35.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.6 </span> <a
id="x43-770006.6"></a>psb_cdbldext &#8212; Build an extended communication descriptor</h4>
<div class="verbatim" id="verbatim-56">
call&#x00A0;psb_cdbldext(a,desc_a,nl,desc_out,&#x00A0;info,&#x00A0;extype)
</div>
<!--l. 410--><p class="nopar" >
<!--l. 412--><p class="indent" > This subroutine builds an extended communication descriptor, based on the input
descriptor <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">desc_a</span></span></span> and on the stencil specified through the input sparse matrix
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">a</span></span></span>.
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">a</span> </dt><dd
class="description">A sparse matrix Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data type.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu6.html#spdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_Tspmat</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">nl</span> </dt><dd
class="description">the number of additional layers desired.<br
class="newline" />Scope:<span
class="cmbx-10">global</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer value <span
class="cmmi-10">nl </span><span
class="cmsy-10">&#x2265; </span>0.
</dd><dt class="description">
<span
class="cmbx-10">extype</span> </dt><dd
class="description">the kind of estension required.<br
class="newline" />Scope:<span
class="cmbx-10">global</span>.<br
class="newline" />Type:<span
class="cmbx-10">optional </span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer value <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_ovt_xhal_</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_ovt_asov_</span></span></span>, default:
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_ovt_xhal_</span></span></span>
</dd></dl>
<!--l. 442--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_out</span> </dt><dd
class="description">the extended communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 456--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x43-77002x1">Specifying <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_ovt_xhal_</span></span></span> for the <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">extype</span></span></span> 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
class="enumerate" id="x43-77004x2">Specifying <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_ovt_asov_</span></span></span> for the <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">extype</span></span></span> 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>
<!--l. 539--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu36.html" >next</a>] [<a
href="userhtmlsu31.html" >prev</a>] [<a
href="userhtmlsu31.html#tailuserhtmlsu31.html" >prev-tail</a>] [<a
href="userhtmlsu32.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu35.html" >up</a>] </p></div>
<!--l. 539--><p class="indent" > <a
id="tailuserhtmlsu32.html"></a>
</body></html>

@ -0,0 +1,128 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_spall &#8212; Allocates a sparse matrix</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 539--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu37.html" >next</a>] [<a
href="userhtmlsu32.html" >prev</a>] [<a
href="userhtmlsu32.html#tailuserhtmlsu32.html" >prev-tail</a>] [<a
href="userhtmlsu30.html#tailuserhtmlsu33.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu36.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.7 </span> <a
id="x44-780006.7"></a>psb_spall &#8212; Allocates a sparse matrix</h4>
<div class="verbatim" id="verbatim-57">
call&#x00A0;psb_spall(a,&#x00A0;desc_a,&#x00A0;info,&#x00A0;nnz)
</div>
<!--l. 543--><p class="nopar" >
<!--l. 545--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">nnz</span> </dt><dd
class="description">An estimate of the number of nonzeroes in the local part of the assembled
matrix.<br
class="newline" />Scope: <span
class="cmbx-10">global</span>.<br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer value.</dd></dl>
<!--l. 561--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">a</span> </dt><dd
class="description">the matrix to be allocated.<br
class="newline" />Scope:<span
class="cmbx-10">local</span><br
class="newline" />Type:<span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu6.html#spdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_Tspmat</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 574--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x44-78002x1">On exit from this routine the sparse matrix is in the build state.
</li>
<li
class="enumerate" id="x44-78004x2">The descriptor may be in either the build or assembled state.
</li>
<li
class="enumerate" id="x44-78006x3">Providing a good estimate for the number of nonzeroes <span
class="cmmi-10">nnz </span>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>
<!--l. 590--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu37.html" >next</a>] [<a
href="userhtmlsu32.html" >prev</a>] [<a
href="userhtmlsu32.html#tailuserhtmlsu32.html" >prev-tail</a>] [<a
href="userhtmlsu33.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu36.html" >up</a>] </p></div>
<!--l. 590--><p class="indent" > <a
id="tailuserhtmlsu33.html"></a>
</body></html>

@ -0,0 +1,311 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_spins &#8212; Insert a set of coefficients into a sparse matrix</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 591--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu38.html" >next</a>] [<a
href="userhtmlsu33.html" >prev</a>] [<a
href="userhtmlsu33.html#tailuserhtmlsu33.html" >prev-tail</a>] [<a
href="userhtmlsu31.html#tailuserhtmlsu34.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu37.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.8 </span> <a
id="x45-790006.8"></a>psb_spins &#8212; Insert a set of coefficients into a sparse matrix</h4>
<div class="verbatim" id="verbatim-58">
call&#x00A0;psb_spins(nz,&#x00A0;ia,&#x00A0;ja,&#x00A0;val,&#x00A0;a,&#x00A0;desc_a,&#x00A0;info&#x00A0;[,local])
&#x00A0;<br />call&#x00A0;psb_spins(nr,&#x00A0;irp,&#x00A0;ja,&#x00A0;val,&#x00A0;irw,&#x00A0;a,&#x00A0;desc_a,&#x00A0;info&#x00A0;[,local])
</div>
<!--l. 596--><p class="nopar" >
<!--l. 598--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Asynchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">nz</span> </dt><dd
class="description">the number of coefficients to be inserted.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer scalar.
</dd><dt class="description">
<span
class="cmbx-10">nr</span> </dt><dd
class="description">the number of rows to be inserted.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer scalar.
</dd><dt class="description">
<span
class="cmbx-10">ia</span> </dt><dd
class="description">the row indices of the coefficients to be inserted.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer array of size <span
class="cmmi-10">nz</span>.
</dd><dt class="description">
<span
class="cmbx-10">irp</span> </dt><dd
class="description">the row pointers of the coefficients to be inserted.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer array of size <span
class="cmmi-10">nr </span>+ 1.
</dd><dt class="description">
<span
class="cmbx-10">ja</span> </dt><dd
class="description">the column indices of the coefficients to be inserted.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer array of size <span
class="cmmi-10">nz</span>.
</dd><dt class="description">
<span
class="cmbx-10">val</span> </dt><dd
class="description">the coefficients to be inserted.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an array of size <span
class="cmmi-10">nz</span>. Must be of the same type and kind of
the coefficients of the sparse matrix <span
class="cmmi-10">a</span>.
</dd><dt class="description">
<span
class="cmbx-10">irw</span> </dt><dd
class="description">the row index displacement.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer scalar.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">The communication descriptor.<br
class="newline" />Scope: <span
class="cmbx-10">local</span>. <br
class="newline" />Type: <span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a variable of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">local</span> </dt><dd
class="description">Whether the entries in the indices vectors <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">ia</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">ja</span></span></span> are already in local
numbering. <br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">optional</span>.<br
class="newline" />Specified as: a logical value; default: <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">.false.</span></span></span>.
</dd></dl>
<!--l. 658--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">a</span> </dt><dd
class="description">the matrix into which coefficients will be inserted.<br
class="newline" />Scope:<span
class="cmbx-10">local</span><br
class="newline" />Type:<span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu6.html#spdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_Tspmat</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">The communication descriptor.<br
class="newline" />Scope: <span
class="cmbx-10">local</span>. <br
class="newline" />Type: <span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a variable of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 677--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x45-79002x1">On entry to this routine the descriptor may be in either the build or
assembled state.
</li>
<li
class="enumerate" id="x45-79004x2">On entry to this routine the sparse matrix may be in either the build or
update state.
</li>
<li
class="enumerate" id="x45-79006x3">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 <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdins</span></span></span>
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
class="enumerate" id="x45-79008x4">The input data can be passed in either COO or CSR formats;
</li>
<li
class="enumerate" id="x45-79010x5">In COO format the coefficients to be inserted are represented by the
ordered triples <span
class="cmmi-10">ia</span>(<span
class="cmmi-10">i</span>)<span
class="cmmi-10">,ja</span>(<span
class="cmmi-10">i</span>)<span
class="cmmi-10">,val</span>(<span
class="cmmi-10">i</span>), for <span
class="cmmi-10">i </span>= 1<span
class="cmmi-10">,</span><span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">,nz</span>; these triples should
belong to the current process, i.e. <span
class="cmmi-10">ia</span>(<span
class="cmmi-10">i</span>) should be one of the local indices,
but are otherwise arbitrary;
</li>
<li
class="enumerate" id="x45-79012x6">In CSR format the coefficients to be inserted for each input row <span
class="cmmi-10">i </span>= 1<span
class="cmmi-10">,nr</span>
are represented by the ordered triples (<span
class="cmmi-10">i </span>+ <span
class="cmmi-10">irw </span><span
class="cmsy-10">- </span>1)<span
class="cmmi-10">,ja</span>(<span
class="cmmi-10">j</span>)<span
class="cmmi-10">,val</span>(<span
class="cmmi-10">j</span>), for
<span
class="cmmi-10">j </span>= <span
class="cmmi-10">irp</span>(<span
class="cmmi-10">i</span>)<span
class="cmmi-10">,</span><span
class="cmmi-10">&#x2026;</span><span
class="cmmi-10">,irp</span>(<span
class="cmmi-10">i </span>+ 1) <span
class="cmsy-10">- </span>1; these triples should belong to the current
process, i.e. <span
class="cmmi-10">i</span>+<span
class="cmmi-10">irw</span><span
class="cmsy-10">-</span>1 should be one of the local indices, but are otherwise
arbitrary;
</li>
<li
class="enumerate" id="x45-79014x7">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 (even in the CSR format);
</li>
<li
class="enumerate" id="x45-79016x8">Coefficients from different rows may also be mixed up freely in a single
call, according to the application needs;
</li>
<li
class="enumerate" id="x45-79018x9">Any coefficients from matrix rows not owned by the calling process are
silently ignored;
</li>
<li
class="enumerate" id="x45-79020x10">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
class="enumerate" id="x45-79022x11">If the matrix is in the update state, any entries in positions that were not
present in the original matrix are ignored.</li></ol>
<!--l. 716--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu38.html" >next</a>] [<a
href="userhtmlsu33.html" >prev</a>] [<a
href="userhtmlsu33.html#tailuserhtmlsu33.html" >prev-tail</a>] [<a
href="userhtmlsu34.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu37.html" >up</a>] </p></div>
<!--l. 716--><p class="indent" > <a
id="tailuserhtmlsu34.html"></a>
</body></html>

@ -0,0 +1,186 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_spasb &#8212; Sparse matrix assembly routine</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 716--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu39.html" >next</a>] [<a
href="userhtmlsu34.html" >prev</a>] [<a
href="userhtmlsu34.html#tailuserhtmlsu34.html" >prev-tail</a>] [<a
href="userhtmlsu32.html#tailuserhtmlsu35.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu38.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.9 </span> <a
id="x46-800006.9"></a>psb_spasb &#8212; Sparse matrix assembly routine</h4>
<div class="verbatim" id="verbatim-59">
call&#x00A0;psb_spasb(a,&#x00A0;desc_a,&#x00A0;info,&#x00A0;afmt,&#x00A0;upd,&#x00A0;dupl,&#x00A0;mold)
</div>
<!--l. 720--><p class="nopar" >
<!--l. 722--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">afmt</span> </dt><dd
class="description">the storage format for the sparse matrix.<br
class="newline" />Scope: <span
class="cmbx-10">local</span>.<br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an array of characters. Defalt: &#8217;CSR&#8217;.
</dd><dt class="description">
<span
class="cmbx-10">upd</span> </dt><dd
class="description">Provide for updates to the matrix coefficients.<br
class="newline" />Scope: <span
class="cmbx-10">global</span>.<br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: integer, possible values: <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_upd_srch_</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_upd_perm_</span></span></span>
</dd><dt class="description">
<span
class="cmbx-10">dupl</span> </dt><dd
class="description">How to handle duplicate coefficients.<br
class="newline" />Scope: <span
class="cmbx-10">global</span>.<br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: integer, possible values: <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_dupl_ovwrt_</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_dupl_add_</span></span></span>,
<span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_dupl_err_</span></span></span>.
</dd><dt class="description">
<span
class="cmbx-10">mold</span> </dt><dd
class="description">The desired dynamic type for the internal matrix storage.<br
class="newline" />Scope: <span
class="cmbx-10">local</span>.<br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of a class derived from <a
id="spbasedata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_base</span><span
class="cmtt-10">_sparse</span><span
class="cmtt-10">_mat</span></a>.</dd></dl>
<!--l. 753--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">a</span> </dt><dd
class="description">the matrix to be assembled.<br
class="newline" />Scope:<span
class="cmbx-10">local</span><br
class="newline" />Type:<span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu6.html#spdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_Tspmat</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 767--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x46-80002x1">On entry to this routine the descriptor must be in the assembled state,
i.e. <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_cdasb</span></span></span> must already have been called.
</li>
<li
class="enumerate" id="x46-80004x2">The sparse matrix may be in either the build or update state;
</li>
<li
class="enumerate" id="x46-80006x3">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
class="enumerate" id="x46-80008x4">If the update choice is <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_upd_perm_</span></span></span>, then subsequent calls to <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_spins</span></span></span>
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
class="enumerate" id="x46-80010x5">The output storage format need not be the same on all processes;
</li>
<li
class="enumerate" id="x46-80012x6">On exit from this routine the matrix is in the assembled state, and thus
is suitable for the computational routines.</li></ol>
<!--l. 824--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu39.html" >next</a>] [<a
href="userhtmlsu34.html" >prev</a>] [<a
href="userhtmlsu34.html#tailuserhtmlsu34.html" >prev-tail</a>] [<a
href="userhtmlsu35.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu38.html" >up</a>] </p></div>
<!--l. 824--><p class="indent" > <a
id="tailuserhtmlsu35.html"></a>
</body></html>

@ -0,0 +1,98 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_spfree &#8212; Frees a sparse matrix</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 824--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu40.html" >next</a>] [<a
href="userhtmlsu35.html" >prev</a>] [<a
href="userhtmlsu35.html#tailuserhtmlsu35.html" >prev-tail</a>] [<a
href="userhtmlsu33.html#tailuserhtmlsu36.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu39.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.10 </span> <a
id="x47-810006.10"></a>psb_spfree &#8212; Frees a sparse matrix</h4>
<div class="verbatim" id="verbatim-60">
call&#x00A0;psb_spfree(a,&#x00A0;desc_a,&#x00A0;info)
</div>
<!--l. 828--><p class="nopar" >
<!--l. 830--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">a</span> </dt><dd
class="description">the matrix to be freed.<br
class="newline" />Scope:<span
class="cmbx-10">local</span><br
class="newline" />Type:<span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu6.html#spdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_Tspmat</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.</dd></dl>
<!--l. 845--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 860--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu40.html" >next</a>] [<a
href="userhtmlsu35.html" >prev</a>] [<a
href="userhtmlsu35.html#tailuserhtmlsu35.html" >prev-tail</a>] [<a
href="userhtmlsu36.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu39.html" >up</a>] </p></div>
<!--l. 860--><p class="indent" > <a
id="tailuserhtmlsu36.html"></a>
</body></html>

@ -0,0 +1,114 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_sprn &#8212; Reinit sparse matrix structure for psblas routines.</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 861--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu41.html" >next</a>] [<a
href="userhtmlsu36.html" >prev</a>] [<a
href="userhtmlsu36.html#tailuserhtmlsu36.html" >prev-tail</a>] [<a
href="userhtmlsu34.html#tailuserhtmlsu37.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu40.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.11 </span> <a
id="x48-820006.11"></a>psb_sprn &#8212; Reinit sparse matrix structure for psblas routines.</h4>
<div class="verbatim" id="verbatim-61">
call&#x00A0;psb_sprn(a,&#x00A0;decsc_a,&#x00A0;info,&#x00A0;clear)
</div>
<!--l. 865--><p class="nopar" >
<!--l. 867--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">a</span> </dt><dd
class="description">the matrix to be reinitialized.<br
class="newline" />Scope:<span
class="cmbx-10">local</span><br
class="newline" />Type:<span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu6.html#spdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_Tspmat</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">clear</span> </dt><dd
class="description">Choose whether to zero out matrix coefficients<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Default: true.</dd></dl>
<!--l. 887--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 895--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x48-82002x1">On exit from this routine the sparse matrix is in the update state.</li></ol>
<!--l. 948--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu41.html" >next</a>] [<a
href="userhtmlsu36.html" >prev</a>] [<a
href="userhtmlsu36.html#tailuserhtmlsu36.html" >prev-tail</a>] [<a
href="userhtmlsu37.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu40.html" >up</a>] </p></div>
<!--l. 948--><p class="indent" > <a
id="tailuserhtmlsu37.html"></a>
</body></html>

@ -0,0 +1,132 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_geall &#8212; Allocates a dense matrix</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 948--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu42.html" >next</a>] [<a
href="userhtmlsu37.html" >prev</a>] [<a
href="userhtmlsu37.html#tailuserhtmlsu37.html" >prev-tail</a>] [<a
href="userhtmlsu35.html#tailuserhtmlsu38.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu41.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.12 </span> <a
id="x49-830006.12"></a>psb_geall &#8212; Allocates a dense matrix</h4>
<div class="verbatim" id="verbatim-62">
call&#x00A0;psb_geall(x,&#x00A0;desc_a,&#x00A0;info,&#x00A0;n,&#x00A0;lb)
</div>
<!--l. 952--><p class="nopar" >
<!--l. 954--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">The communication descriptor.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a variable of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">n</span> </dt><dd
class="description">The number of columns of the dense matrix to be allocated.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: Integer scalar, default 1. It is not a valid argument if <span
class="cmmi-10">x </span>is a
rank-1 array.
</dd><dt class="description">
<span
class="cmbx-10">lb</span> </dt><dd
class="description">The lower bound for the column index range of the dense matrix to be
allocated.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: Integer scalar, default 1. It is not a valid argument if <span
class="cmmi-10">x </span>is a
rank-1 array.</dd></dl>
<!--l. 976--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">The dense matrix to be allocated.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: a rank one or two array with the ALLOCATABLE attribute
or an object of type <a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>, of type real, complex or integer.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 995--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu42.html" >next</a>] [<a
href="userhtmlsu37.html" >prev</a>] [<a
href="userhtmlsu37.html#tailuserhtmlsu37.html" >prev-tail</a>] [<a
href="userhtmlsu38.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu41.html" >up</a>] </p></div>
<!--l. 995--><p class="indent" > <a
id="tailuserhtmlsu38.html"></a>
</body></html>

@ -0,0 +1,178 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_geins &#8212; Dense matrix insertion routine</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 995--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu43.html" >next</a>] [<a
href="userhtmlsu38.html" >prev</a>] [<a
href="userhtmlsu38.html#tailuserhtmlsu38.html" >prev-tail</a>] [<a
href="userhtmlsu36.html#tailuserhtmlsu39.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu42.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.13 </span> <a
id="x50-840006.13"></a>psb_geins &#8212; Dense matrix insertion routine</h4>
<div class="verbatim" id="verbatim-63">
call&#x00A0;psb_geins(m,&#x00A0;irw,&#x00A0;val,&#x00A0;x,&#x00A0;desc_a,&#x00A0;info&#x00A0;[,dupl,local])
</div>
<!--l. 999--><p class="nopar" >
<!--l. 1001--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Asynchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">m</span> </dt><dd
class="description">Number of rows in <span
class="cmmi-10">val </span>to be inserted.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer value.
</dd><dt class="description">
<span
class="cmbx-10">irw</span> </dt><dd
class="description">Indices of the rows to be inserted. Specifically, row <span
class="cmmi-10">i </span>of <span
class="cmmi-10">val </span>will be
inserted into the local row corresponding to the global row index <span
class="cmmi-10">irw</span>(<span
class="cmmi-10">i</span>).
Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer array.
</dd><dt class="description">
<span
class="cmbx-10">val</span> </dt><dd
class="description">the dense submatrix to be inserted.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a rank 1 or 2 array. Specified as: an integer value.
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">dupl</span> </dt><dd
class="description">How to handle duplicate coefficients.<br
class="newline" />Scope: <span
class="cmbx-10">global</span>.<br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: integer, possible values: <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_dupl_ovwrt_</span></span></span>, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">psb_dupl_add_</span></span></span>.
</dd><dt class="description">
<span
class="cmbx-10">local</span> </dt><dd
class="description">Whether the entries in the index vector <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">irw</span></span></span>, are already in local
numbering. <br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">optional</span>.<br
class="newline" />Specified as: a logical value; default: <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">.false.</span></span></span>.
</dd></dl>
<!--l. 1041--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">the output dense matrix.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a rank one or two array or an object of type
<a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>, of type real, complex or integer.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 1056--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x50-84002x1">Dense vectors/matrices do not have an associated state;
</li>
<li
class="enumerate" id="x50-84004x2">Duplicate entries are either overwritten or added, there is no provision for
raising an error condition.</li></ol>
<!--l. 1067--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu43.html" >next</a>] [<a
href="userhtmlsu38.html" >prev</a>] [<a
href="userhtmlsu38.html#tailuserhtmlsu38.html" >prev-tail</a>] [<a
href="userhtmlsu39.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu42.html" >up</a>] </p></div>
<!--l. 1067--><p class="indent" > <a
id="tailuserhtmlsu39.html"></a>
</body></html>

@ -0,0 +1,61 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Programming model</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 448--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu3.html" >prev</a>] [<a
href="userhtmlsu3.html#tailuserhtmlsu3.html" >prev-tail</a>] [<a
href="userhtmlsu2.html#tailuserhtmlsu4.html">tail</a>] [<a
href="userhtmlse2.html#userhtmlsu6.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">2.4 </span> <a
id="x11-80002.4"></a>Programming model</h4>
<!--l. 450--><p class="noindent" >The PSBLAS librarary is based on the Single Program Multiple Data (SPMD)
programming model: each process participating in the computation performs the
same actions on a chunk of data. Parallelism is thus data-driven.
<!--l. 455--><p class="indent" > Because of this structure, many subroutines coordinate their action across the
various processes, thus providing an implicit synchronization point, and therefore
<span
class="cmti-10">must </span>be called simultaneously by all processes participating in the computation. This
is certainly true for the data allocation and assembly routines, for all the
computational routines and for some of the tools routines.
<!--l. 463--><p class="indent" > However there are many cases where no synchronization, and indeed no
communication among processes, is implied; for instance, all the routines in sec.&#x00A0;<a
href="userhtmlse3.html#x12-90003">3<!--tex4ht:ref: sec:datastruct --></a>
are only acting on the local data structures, and thus may be called independently.
The most important case is that of the coefficient insertion routines: since the
number of coefficients in the sparse and dense matrices varies among the processors,
and since the user is free to choose an arbitrary order in builiding the matrix entries,
these routines cannot imply a synchronization.
<!--l. 473--><p class="indent" > Throughout this user&#8217;s guide each subroutine will be clearly indicated
as:
<dl class="description"><dt class="description">
<span
class="cmbx-10">Synchronous:</span> </dt><dd
class="description">must be called simultaneously by all the processes in the
relevant communication context;
</dd><dt class="description">
<span
class="cmbx-10">Asynchronous:</span> </dt><dd
class="description">may be called in a totally independent manner.</dd></dl>
<!--l. 1--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu3.html" >prev</a>] [<a
href="userhtmlsu3.html#tailuserhtmlsu3.html" >prev-tail</a>] [<a
href="userhtmlsu4.html" >front</a>] [<a
href="userhtmlse2.html#userhtmlsu6.html" >up</a>] </p></div>
<!--l. 1--><p class="indent" > <a
id="tailuserhtmlsu4.html"></a>
</body></html>

@ -0,0 +1,123 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_geasb &#8212; Assembly a dense matrix</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1067--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu44.html" >next</a>] [<a
href="userhtmlsu39.html" >prev</a>] [<a
href="userhtmlsu39.html#tailuserhtmlsu39.html" >prev-tail</a>] [<a
href="userhtmlsu37.html#tailuserhtmlsu40.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu43.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.14 </span> <a
id="x51-850006.14"></a>psb_geasb &#8212; Assembly a dense matrix</h4>
<div class="verbatim" id="verbatim-64">
call&#x00A0;psb_geasb(x,&#x00A0;desc_a,&#x00A0;info,&#x00A0;mold)
</div>
<!--l. 1071--><p class="nopar" >
<!--l. 1073--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">The communication descriptor.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a variable of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">mold</span> </dt><dd
class="description">The desired dynamic type for the internal vector storage.<br
class="newline" />Scope: <span
class="cmbx-10">local</span>.<br
class="newline" />Type: <span
class="cmbx-10">optional</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an object of a class derived from <a
id="vbasedata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_base</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>;
this is only allowed when <span
class="cmmi-10">x </span>is of type <a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>.</dd></dl>
<!--l. 1089--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">The dense matrix to be assembled.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a rank one or two array with the ALLOCATABLE or an
object of type <a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>, of type real, complex or integer.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 1106--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu44.html" >next</a>] [<a
href="userhtmlsu39.html" >prev</a>] [<a
href="userhtmlsu39.html#tailuserhtmlsu39.html" >prev-tail</a>] [<a
href="userhtmlsu40.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu43.html" >up</a>] </p></div>
<!--l. 1106--><p class="indent" > <a
id="tailuserhtmlsu40.html"></a>
</body></html>

@ -0,0 +1,102 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_gefree &#8212; Frees a dense matrix</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1106--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu45.html" >next</a>] [<a
href="userhtmlsu40.html" >prev</a>] [<a
href="userhtmlsu40.html#tailuserhtmlsu40.html" >prev-tail</a>] [<a
href="userhtmlsu38.html#tailuserhtmlsu41.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu44.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.15 </span> <a
id="x52-860006.15"></a>psb_gefree &#8212; Frees a dense matrix</h4>
<div class="verbatim" id="verbatim-65">
call&#x00A0;psb_gefree(x,&#x00A0;desc_a,&#x00A0;info)
</div>
<!--l. 1110--><p class="nopar" >
<!--l. 1112--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Synchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">The dense matrix to be freed.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a rank one or two array with the ALLOCATABLE or an
object of type <a
href="userhtmlsu7.html#vdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_T</span><span
class="cmtt-10">_vect</span><span
class="cmtt-10">_type</span></a>, of type real, complex or integer.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">The communication descriptor.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a variable of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.<br
class="newline" /></dd></dl>
<!--l. 1130--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 1143--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu45.html" >next</a>] [<a
href="userhtmlsu40.html" >prev</a>] [<a
href="userhtmlsu40.html#tailuserhtmlsu40.html" >prev-tail</a>] [<a
href="userhtmlsu41.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu44.html" >up</a>] </p></div>
<!--l. 1143--><p class="indent" > <a
id="tailuserhtmlsu41.html"></a>
</body></html>

@ -0,0 +1,109 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_gelp &#8212; Applies a left permutation to a dense matrix</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1144--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu46.html" >next</a>] [<a
href="userhtmlsu41.html" >prev</a>] [<a
href="userhtmlsu41.html#tailuserhtmlsu41.html" >prev-tail</a>] [<a
href="userhtmlsu39.html#tailuserhtmlsu42.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu45.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.16 </span> <a
id="x53-870006.16"></a>psb_gelp &#8212; Applies a left permutation to a dense matrix</h4>
<div class="verbatim" id="verbatim-66">
call&#x00A0;psb_gelp(trans,&#x00A0;iperm,&#x00A0;x,&#x00A0;info)
</div>
<!--l. 1148--><p class="nopar" >
<!--l. 1150--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Asynchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">trans</span> </dt><dd
class="description">A character that specifies whether to permute <span
class="cmmi-10">A </span>or <span
class="cmmi-10">A</span><sup><span
class="cmmi-7">T</span></sup>.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a single character with value &#8217;N&#8217; for <span
class="cmmi-10">A </span>or &#8217;T&#8217; for <span
class="cmmi-10">A</span><sup><span
class="cmmi-7">T</span></sup>.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">iperm</span> </dt><dd
class="description">An integer array containing permutation information.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: an integer one-dimensional array.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">The dense matrix to be permuted.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a one or two dimensional array.<br
class="newline" /></dd></dl>
<!--l. 1170--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 1183--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu46.html" >next</a>] [<a
href="userhtmlsu41.html" >prev</a>] [<a
href="userhtmlsu41.html#tailuserhtmlsu41.html" >prev-tail</a>] [<a
href="userhtmlsu42.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu45.html" >up</a>] </p></div>
<!--l. 1183--><p class="indent" > <a
id="tailuserhtmlsu42.html"></a>
</body></html>

@ -0,0 +1,162 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_glob_to_loc &#8212; Global to local indices convertion</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1184--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu47.html" >next</a>] [<a
href="userhtmlsu42.html" >prev</a>] [<a
href="userhtmlsu42.html#tailuserhtmlsu42.html" >prev-tail</a>] [<a
href="userhtmlsu40.html#tailuserhtmlsu43.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu46.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.17 </span> <a
id="x54-880006.17"></a>psb_glob_to_loc &#8212; Global to local indices convertion</h4>
<div class="verbatim" id="verbatim-67">
call&#x00A0;psb_glob_to_loc(x,&#x00A0;y,&#x00A0;desc_a,&#x00A0;info,&#x00A0;iact,owned)
&#x00A0;<br />call&#x00A0;psb_glob_to_loc(x,&#x00A0;desc_a,&#x00A0;info,&#x00A0;iact,owned)
</div>
<!--l. 1189--><p class="nopar" >
<!--l. 1191--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Asynchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">An integer vector of indices to be converted.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in, inout</span>.<br
class="newline" />Specified as: a rank one integer array.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">iact</span> </dt><dd
class="description">specifies action to be taken in case of range errors. Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a character variable <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">I</span></span></span>gnore, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">W</span></span></span>arning or <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">A</span></span></span>bort, default <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">I</span></span></span>gnore.
</dd><dt class="description">
<span
class="cmbx-10">owned</span> </dt><dd
class="description">Specfies valid range of input Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />If true, then only indices strictly owned by the current process are
considered valid, if false then halo indices are also accepted. Default: false.</dd></dl>
<!--l. 1219--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">If <span
class="cmmi-10">y </span>is not present, then <span
class="cmmi-10">x </span>is overwritten with the translated integer indices.
Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a rank one integer array.
</dd><dt class="description">
<span
class="cmbx-10">y</span> </dt><dd
class="description">If <span
class="cmmi-10">y </span>is present, then <span
class="cmmi-10">y </span>is overwritten with the translated integer indices, and
<span
class="cmmi-10">x </span>is left unchanged. Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: a rank one integer array.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 1241--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x54-88002x1">If an input index is out of range, then the corresponding output index is
set to a negative number;
</li>
<li
class="enumerate" id="x54-88004x2">The default <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">I</span></span></span>gnore means that the negative output is the only action
taken on an out-of-range input.</li></ol>
<!--l. 1250--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu47.html" >next</a>] [<a
href="userhtmlsu42.html" >prev</a>] [<a
href="userhtmlsu42.html#tailuserhtmlsu42.html" >prev-tail</a>] [<a
href="userhtmlsu43.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu46.html" >up</a>] </p></div>
<!--l. 1250--><p class="indent" > <a
id="tailuserhtmlsu43.html"></a>
</body></html>

@ -0,0 +1,140 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_loc_to_glob &#8212; Local to global indices conversion</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1251--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu48.html" >next</a>] [<a
href="userhtmlsu43.html" >prev</a>] [<a
href="userhtmlsu43.html#tailuserhtmlsu43.html" >prev-tail</a>] [<a
href="userhtmlsu41.html#tailuserhtmlsu44.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu47.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.18 </span> <a
id="x55-890006.18"></a>psb_loc_to_glob &#8212; Local to global indices conversion</h4>
<div class="verbatim" id="verbatim-68">
call&#x00A0;psb_loc_to_glob(x,&#x00A0;y,&#x00A0;desc_a,&#x00A0;info,&#x00A0;iact)
&#x00A0;<br />call&#x00A0;psb_loc_to_glob(x,&#x00A0;desc_a,&#x00A0;info,&#x00A0;iact)
</div>
<!--l. 1256--><p class="nopar" >
<!--l. 1258--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Asynchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">An integer vector of indices to be converted.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in, inout</span>.<br
class="newline" />Specified as: a rank one integer array.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">iact</span> </dt><dd
class="description">specifies action to be taken in case of range errors. Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a character variable <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">I</span></span></span>gnore, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">W</span></span></span>arning or <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">A</span></span></span>bort, default <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">I</span></span></span>gnore.</dd></dl>
<!--l. 1279--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">If <span
class="cmmi-10">y </span>is not present, then <span
class="cmmi-10">x </span>is overwritten with the translated integer indices.
Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">inout</span>.<br
class="newline" />Specified as: a rank one integer array.
</dd><dt class="description">
<span
class="cmbx-10">y</span> </dt><dd
class="description">If <span
class="cmmi-10">y </span>is not present, then <span
class="cmmi-10">y </span>is overwritten with the translated integer indices,
and <span
class="cmmi-10">x </span>is left unchanged. Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: a rank one integer array.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 1306--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu48.html" >next</a>] [<a
href="userhtmlsu43.html" >prev</a>] [<a
href="userhtmlsu43.html#tailuserhtmlsu43.html" >prev-tail</a>] [<a
href="userhtmlsu44.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu47.html" >up</a>] </p></div>
<!--l. 1306--><p class="indent" > <a
id="tailuserhtmlsu44.html"></a>
</body></html>

@ -0,0 +1,103 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_is_owned &#8212; </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1306--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu49.html" >next</a>] [<a
href="userhtmlsu44.html" >prev</a>] [<a
href="userhtmlsu44.html#tailuserhtmlsu44.html" >prev-tail</a>] [<a
href="userhtmlsu42.html#tailuserhtmlsu45.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu48.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.19 </span> <a
id="x56-900006.19"></a>psb_is_owned &#8212; </h4>
<div class="verbatim" id="verbatim-69">
call&#x00A0;psb_is_owned(x,&#x00A0;desc_a)
</div>
<!--l. 1310--><p class="nopar" >
<!--l. 1312--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Asynchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">Integer index.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a scalar integer.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.</dd></dl>
<!--l. 1327--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">Function value</span> </dt><dd
class="description">A logical mask which is true if <span
class="cmmi-10">x </span>is owned by the current
process Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" /></dd></dl>
<!--l. 1337--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x56-90002x1">This routine returns a <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">.true.</span></span></span> value for an index that is strictly owned by
the current process, excluding the halo indices</li></ol>
<!--l. 1345--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu49.html" >next</a>] [<a
href="userhtmlsu44.html" >prev</a>] [<a
href="userhtmlsu44.html#tailuserhtmlsu44.html" >prev-tail</a>] [<a
href="userhtmlsu45.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu48.html" >up</a>] </p></div>
<!--l. 1345--><p class="indent" > <a
id="tailuserhtmlsu45.html"></a>
</body></html>

@ -0,0 +1,131 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_owned_index &#8212; </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1345--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu50.html" >next</a>] [<a
href="userhtmlsu45.html" >prev</a>] [<a
href="userhtmlsu45.html#tailuserhtmlsu45.html" >prev-tail</a>] [<a
href="userhtmlsu43.html#tailuserhtmlsu46.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu49.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.20 </span> <a
id="x57-910006.20"></a>psb_owned_index &#8212; </h4>
<div class="verbatim" id="verbatim-70">
call&#x00A0;psb_owned_index(y,&#x00A0;x,&#x00A0;desc_a,&#x00A0;info)
</div>
<!--l. 1349--><p class="nopar" >
<!--l. 1351--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Asynchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">Integer indices.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in, inout</span>.<br
class="newline" />Specified as: a scalar or a rank one integer array.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.
</dd><dt class="description">
<span
class="cmbx-10">iact</span> </dt><dd
class="description">specifies action to be taken in case of range errors. Scope: <span
class="cmbx-10">global </span><br
class="newline" />Type: <span
class="cmbx-10">optional</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a character variable <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">I</span></span></span>gnore, <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">W</span></span></span>arning or <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">A</span></span></span>bort, default <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">I</span></span></span>gnore.</dd></dl>
<!--l. 1372--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">y</span> </dt><dd
class="description">A logical mask which is true for all corresponding entries of <span
class="cmmi-10">x </span>that are owned
by the current process Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />Specified as: a scalar or rank one logical array.
</dd><dt class="description">
<span
class="cmbx-10">info</span> </dt><dd
class="description">Error code.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required </span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" />An integer value; 0 means no error has been detected.</dd></dl>
<!--l. 1388--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x57-91002x1">This routine returns a <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">.true.</span></span></span> value for those indices that are strictly
owned by the current process, excluding the halo indices</li></ol>
<!--l. 1396--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu50.html" >next</a>] [<a
href="userhtmlsu45.html" >prev</a>] [<a
href="userhtmlsu45.html#tailuserhtmlsu45.html" >prev-tail</a>] [<a
href="userhtmlsu46.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu49.html" >up</a>] </p></div>
<!--l. 1396--><p class="indent" > <a
id="tailuserhtmlsu46.html"></a>
</body></html>

@ -0,0 +1,103 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>psb_is_local &#8212; </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
<!-- html,3 -->
<meta name="src" content="userhtml.tex">
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 1396--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu51.html" >next</a>] [<a
href="userhtmlsu46.html" >prev</a>] [<a
href="userhtmlsu46.html#tailuserhtmlsu46.html" >prev-tail</a>] [<a
href="userhtmlsu44.html#tailuserhtmlsu47.html">tail</a>] [<a
href="userhtmlsu29.html#userhtmlsu50.html" >up</a>] </p></div>
<h4 class="subsectionHead"><span class="titlemark">6.21 </span> <a
id="x58-920006.21"></a>psb_is_local &#8212; </h4>
<div class="verbatim" id="verbatim-71">
call&#x00A0;psb_is_local(x,&#x00A0;desc_a)
</div>
<!--l. 1400--><p class="nopar" >
<!--l. 1402--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">Type:</span> </dt><dd
class="description">Asynchronous.
</dd><dt class="description">
<span
class="cmbx-10">On Entry</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">x</span> </dt><dd
class="description">Integer index.<br
class="newline" />Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a scalar integer.<br
class="newline" />
</dd><dt class="description">
<span
class="cmbx-10">desc</span><span
class="cmbx-10">_a</span> </dt><dd
class="description">the communication descriptor.<br
class="newline" />Scope:<span
class="cmbx-10">local</span>.<br
class="newline" />Type:<span
class="cmbx-10">required</span>.<br
class="newline" />Intent: <span
class="cmbx-10">in</span>.<br
class="newline" />Specified as: a structured data of type <a
href="userhtmlsu5.html#descdata"><span
class="cmtt-10">psb</span><span
class="cmtt-10">_desc</span><span
class="cmtt-10">_type</span></a>.</dd></dl>
<!--l. 1417--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-10">On Return</span> </dt><dd
class="description">
</dd><dt class="description">
<span
class="cmbx-10">Function value</span> </dt><dd
class="description">A logical mask which is true if <span
class="cmmi-10">x </span>is local to the current process
Scope: <span
class="cmbx-10">local </span><br
class="newline" />Type: <span
class="cmbx-10">required</span><br
class="newline" />Intent: <span
class="cmbx-10">out</span>.<br
class="newline" /></dd></dl>
<!--l. 1427--><p class="noindent" ><span
class="cmbx-12">Notes</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x58-92002x1">This routine returns a <span class="obeylines-h"><span class="verb"><span
class="cmtt-10">.true.</span></span></span> value for an index that is local to the current
process, including the halo indices</li></ol>
<!--l. 1434--><div class="crosslinks"><p class="noindent">[<a
href="userhtmlsu51.html" >next</a>] [<a
href="userhtmlsu46.html" >prev</a>] [<a
href="userhtmlsu46.html#tailuserhtmlsu46.html" >prev-tail</a>] [<a
href="userhtmlsu47.html" >front</a>] [<a
href="userhtmlsu29.html#userhtmlsu50.html" >up</a>] </p></div>
<!--l. 1434--><p class="indent" > <a
id="tailuserhtmlsu47.html"></a>
</body></html>

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

Loading…
Cancel
Save