mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 14:44:55 +00:00
Merge branch 'documentation' of github.com:sfilippone/amg4psblas into documentation
# Conflicts: # docs/amg4psblas_1.0-guide.pdf # docs/html/userhtmlse1.html # docs/html/userhtmlse4.html # docs/html/userhtmlse6.html # docs/html/userhtmlsu10.html # docs/html/userhtmlsu11.html # docs/html/userhtmlsu12.html # docs/html/userhtmlsu13.html # docs/html/userhtmlsu14.html # docs/html/userhtmlsu15.html # docs/html/userhtmlsu3.html # docs/html/userhtmlsu4.html # docs/html/userhtmlsu5.html # docs/html/userhtmlsu6.html # docs/html/userhtmlsu7.html # docs/html/userhtmlsu8.html # docs/html/userhtmlsu9.html # docs/src/building.tex # docs/src/overview.tex
This commit is contained in:
Binary file not shown.
+13
-13
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 95--><p class="noindent" ><span
|
||||
<!--l. 105--><p class="noindent" ><span
|
||||
class="cmbx-12x-x-144">MLD2P4</span><br
|
||||
class="newline" /> <span
|
||||
class="cmbx-12x-x-144">User’s and Reference Guide</span><br
|
||||
@@ -123,57 +123,57 @@ class="cmr-12">Method set</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.3 </span><a
|
||||
href="userhtmlsu9.html#x18-170005.3" id="QQ2-18-31"><span
|
||||
href="userhtmlsu9.html#x18-170005.3" id="QQ2-18-30"><span
|
||||
class="cmr-12">Method hierarchy</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.4 </span><a
|
||||
href="userhtmlsu10.html#x19-180005.4" id="QQ2-19-32"><span
|
||||
href="userhtmlsu10.html#x19-180005.4" id="QQ2-19-31"><span
|
||||
class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.5 </span><a
|
||||
href="userhtmlsu11.html#x20-190005.5" id="QQ2-20-33"><span
|
||||
href="userhtmlsu11.html#x20-190005.5" id="QQ2-20-32"><span
|
||||
class="cmr-12">Method build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.6 </span><a
|
||||
href="userhtmlsu12.html#x21-200005.6" id="QQ2-21-34"><span
|
||||
href="userhtmlsu12.html#x21-200005.6" id="QQ2-21-33"><span
|
||||
class="cmr-12">Method apply</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.7 </span><a
|
||||
href="userhtmlsu13.html#x22-210005.7" id="QQ2-22-35"><span
|
||||
href="userhtmlsu13.html#x22-210005.7" id="QQ2-22-34"><span
|
||||
class="cmr-12">Method free</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.8 </span><a
|
||||
href="userhtmlsu14.html#x23-220005.8" id="QQ2-23-36"><span
|
||||
href="userhtmlsu14.html#x23-220005.8" id="QQ2-23-35"><span
|
||||
class="cmr-12">Method descr</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.9 </span><a
|
||||
href="userhtmlsu15.html#x24-230005.9" id="QQ2-24-37"><span
|
||||
href="userhtmlsu15.html#x24-230005.9" id="QQ2-24-36"><span
|
||||
class="cmr-12">Auxiliary Methods</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">6 </span><a
|
||||
href="userhtmlse6.html#x25-290006" id="QQ2-25-43"><span
|
||||
href="userhtmlse6.html#x25-290006" id="QQ2-25-42"><span
|
||||
class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">7 </span><a
|
||||
href="userhtmlse7.html#x26-300007" id="QQ2-26-44"><span
|
||||
href="userhtmlse7.html#x26-300007" id="QQ2-26-43"><span
|
||||
class="cmr-12">Error Handling</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">A </span><a
|
||||
href="userhtmlse8.html#x27-31000A" id="QQ2-27-45"><span
|
||||
href="userhtmlse8.html#x27-31000A" id="QQ2-27-44"><span
|
||||
class="cmr-12">License</span></a></span>
|
||||
<br /> <span class="likesectionToc" ><a
|
||||
href="userhtmlli4.html#x28-32000A" id="QQ2-28-46"><span
|
||||
href="userhtmlli4.html#x28-32000A" id="QQ2-28-45"><span
|
||||
class="cmr-12">References</span></a></span>
|
||||
<br /> <span class="sectionToc" ><a
|
||||
href="userhtmlli4.html#Q1-28-47"><span
|
||||
href="userhtmlli4.html#Q1-28-46"><span
|
||||
class="cmr-12">References</span></a></span>
|
||||
</div>
|
||||
|
||||
|
||||
+1
-13
@@ -194,9 +194,9 @@ div.lstinputlisting{ font-family: monospace,monospace; white-space: nowrap; }
|
||||
#TBL-5{border-collapse:collapse;}
|
||||
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
|
||||
#TBL-5{border-collapse:collapse;}
|
||||
td#TBL-5-10-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
|
||||
td#TBL-5-11-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
|
||||
td#TBL-5-12-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
|
||||
td#TBL-5-13-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
|
||||
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}
|
||||
#TBL-6{border-collapse:collapse;}
|
||||
#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;}
|
||||
@@ -250,17 +250,5 @@ td#TBL-7-7-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
|
||||
#TBL-9{border-collapse:collapse;}
|
||||
#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;}
|
||||
#TBL-9{border-collapse:collapse;}
|
||||
#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;}
|
||||
#TBL-10{border-collapse:collapse;}
|
||||
#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;}
|
||||
#TBL-10{border-collapse:collapse;}
|
||||
#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;}
|
||||
#TBL-10{border-collapse:collapse;}
|
||||
#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;}
|
||||
#TBL-10{border-collapse:collapse;}
|
||||
#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;}
|
||||
#TBL-10{border-collapse:collapse;}
|
||||
#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;}
|
||||
#TBL-10{border-collapse:collapse;}
|
||||
/* end css.sty */
|
||||
|
||||
|
||||
+13
-13
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 95--><p class="noindent" ><span
|
||||
<!--l. 105--><p class="noindent" ><span
|
||||
class="cmbx-12x-x-144">MLD2P4</span><br
|
||||
class="newline" /> <span
|
||||
class="cmbx-12x-x-144">User’s and Reference Guide</span><br
|
||||
@@ -123,57 +123,57 @@ class="cmr-12">Method set</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.3 </span><a
|
||||
href="userhtmlsu9.html#x18-170005.3" id="QQ2-18-31"><span
|
||||
href="userhtmlsu9.html#x18-170005.3" id="QQ2-18-30"><span
|
||||
class="cmr-12">Method hierarchy</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.4 </span><a
|
||||
href="userhtmlsu10.html#x19-180005.4" id="QQ2-19-32"><span
|
||||
href="userhtmlsu10.html#x19-180005.4" id="QQ2-19-31"><span
|
||||
class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">_build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.5 </span><a
|
||||
href="userhtmlsu11.html#x20-190005.5" id="QQ2-20-33"><span
|
||||
href="userhtmlsu11.html#x20-190005.5" id="QQ2-20-32"><span
|
||||
class="cmr-12">Method build</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.6 </span><a
|
||||
href="userhtmlsu12.html#x21-200005.6" id="QQ2-21-34"><span
|
||||
href="userhtmlsu12.html#x21-200005.6" id="QQ2-21-33"><span
|
||||
class="cmr-12">Method apply</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.7 </span><a
|
||||
href="userhtmlsu13.html#x22-210005.7" id="QQ2-22-35"><span
|
||||
href="userhtmlsu13.html#x22-210005.7" id="QQ2-22-34"><span
|
||||
class="cmr-12">Method free</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.8 </span><a
|
||||
href="userhtmlsu14.html#x23-220005.8" id="QQ2-23-36"><span
|
||||
href="userhtmlsu14.html#x23-220005.8" id="QQ2-23-35"><span
|
||||
class="cmr-12">Method descr</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span class="subsectionToc" ><span
|
||||
class="cmr-12">5.9 </span><a
|
||||
href="userhtmlsu15.html#x24-230005.9" id="QQ2-24-37"><span
|
||||
href="userhtmlsu15.html#x24-230005.9" id="QQ2-24-36"><span
|
||||
class="cmr-12">Auxiliary Methods</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">6 </span><a
|
||||
href="userhtmlse6.html#x25-290006" id="QQ2-25-43"><span
|
||||
href="userhtmlse6.html#x25-290006" id="QQ2-25-42"><span
|
||||
class="cmr-12">Adding new smoother and solver objects to AMG4PSBLAS</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">7 </span><a
|
||||
href="userhtmlse7.html#x26-300007" id="QQ2-26-44"><span
|
||||
href="userhtmlse7.html#x26-300007" id="QQ2-26-43"><span
|
||||
class="cmr-12">Error Handling</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
class="cmr-12">A </span><a
|
||||
href="userhtmlse8.html#x27-31000A" id="QQ2-27-45"><span
|
||||
href="userhtmlse8.html#x27-31000A" id="QQ2-27-44"><span
|
||||
class="cmr-12">License</span></a></span>
|
||||
<br /> <span class="likesectionToc" ><a
|
||||
href="userhtmlli4.html#x28-32000A" id="QQ2-28-46"><span
|
||||
href="userhtmlli4.html#x28-32000A" id="QQ2-28-45"><span
|
||||
class="cmr-12">References</span></a></span>
|
||||
<br /> <span class="sectionToc" ><a
|
||||
href="userhtmlli4.html#Q1-28-47"><span
|
||||
href="userhtmlli4.html#Q1-28-46"><span
|
||||
class="cmr-12">References</span></a></span>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@ class="cmr-12">of AMG4PSBLAS.</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 125--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 135--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli2.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -158,6 +158,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtml.html#userhtmlli1.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 125--><p class="indent" > <a
|
||||
<!--l. 135--><p class="indent" > <a
|
||||
id="tailuserhtmlli1.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 125--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 135--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlse1.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -135,32 +135,32 @@ class="cmr-12">Auxiliary Methods</span></a></span>
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.1 </span><a
|
||||
href="userhtmlsu15.html#x24-240005.9.1" id="QQ2-24-38"><span
|
||||
href="userhtmlsu15.html#x24-240005.9.1" id="QQ2-24-37"><span
|
||||
class="cmr-12">Method: dump</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.2 </span><a
|
||||
href="userhtmlsu15.html#x24-250005.9.2" id="QQ2-24-39"><span
|
||||
href="userhtmlsu15.html#x24-250005.9.2" id="QQ2-24-38"><span
|
||||
class="cmr-12">Method: clone</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.3 </span><a
|
||||
href="userhtmlsu15.html#x24-260005.9.3" id="QQ2-24-40"><span
|
||||
href="userhtmlsu15.html#x24-260005.9.3" id="QQ2-24-39"><span
|
||||
class="cmr-12">Method: sizeof</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.4 </span><a
|
||||
href="userhtmlsu15.html#x24-270005.9.4" id="QQ2-24-41"><span
|
||||
href="userhtmlsu15.html#x24-270005.9.4" id="QQ2-24-40"><span
|
||||
class="cmr-12">Method: allocate</span><span
|
||||
class="cmr-12">_wrk</span></a></span>
|
||||
<br /> <span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span class="subsubsectionToc" ><span
|
||||
class="cmr-12">5.9.5 </span><a
|
||||
href="userhtmlsu15.html#x24-280005.9.5" id="QQ2-24-42"><span
|
||||
href="userhtmlsu15.html#x24-280005.9.5" id="QQ2-24-41"><span
|
||||
class="cmr-12">Method: free</span><span
|
||||
class="cmr-12">_wrk</span></a></span>
|
||||
<br /> <span class="sectionToc" ><span
|
||||
@@ -176,7 +176,7 @@ class="cmr-12">A </span><a
|
||||
href="userhtmlse8.html#x27-31000A"><span
|
||||
class="cmr-12">License</span></a></span>
|
||||
<br /> <span class="sectionToc" ><a
|
||||
href="userhtmlli4.html#Q1-28-47"><span
|
||||
href="userhtmlli4.html#Q1-28-46"><span
|
||||
class="cmr-12">References</span></a></span>
|
||||
</div>
|
||||
|
||||
|
||||
+64
-45
@@ -29,7 +29,7 @@ class="cmr-12">] </span></p></div>
|
||||
class="cmr-12">References</span></h3>
|
||||
<!--l. 2--><p class="noindent" >
|
||||
<a
|
||||
id="Q1-28-47"></a>
|
||||
id="Q1-28-46"></a>
|
||||
<div class="thebibliography">
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
@@ -62,6 +62,25 @@ class="cmr-12">.</span>
|
||||
class="cmr-12">[2]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XBERTACCINIFILIPPONE"></a><span
|
||||
class="cmr-12">D. Bertaccini</span><span
|
||||
class="cmr-12"> and</span><span
|
||||
class="cmr-12"> S. Filippone, </span><span
|
||||
class="cmti-12">Sparse approximate inverse</span>
|
||||
<span
|
||||
class="cmti-12">preconditioners on high performance GPU platforms</span><span
|
||||
class="cmr-12">, Comput. Math. Appl.</span>
|
||||
<span
|
||||
class="cmbx-12">71 </span><span
|
||||
class="cmr-12">(2016), no.</span><span
|
||||
class="cmr-12"> 3, 693–711.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[3]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
id="XBREZINA_VANEK"></a><span
|
||||
class="cmr-12">M.</span><span
|
||||
@@ -75,7 +94,7 @@ class="cmr-12">, Computing, 63, 1999, 233–263.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[3]</span><span class="bibsp"><span
|
||||
class="cmr-12">[4]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -94,7 +113,7 @@ class="cmr-12">, SIAM, 2000.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[4]</span><span class="bibsp"><span
|
||||
class="cmr-12">[5]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -119,9 +138,12 @@ class="cmr-12">State of the Art in Scientific Computing, Lecture Notes in Comput
|
||||
<span
|
||||
class="cmr-12">Springer, 2005, 593–602.</span>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[5]</span><span class="bibsp"><span
|
||||
class="cmr-12">[6]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -140,13 +162,10 @@ class="cmti-12">applications</span><span
|
||||
class="cmr-12">, Applicable Algebra in Engineering, Communications and</span>
|
||||
<span
|
||||
class="cmr-12">Computing, 18 (3) 2007, 223–239.</span>
|
||||
|
||||
|
||||
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[6]</span><span class="bibsp"><span
|
||||
class="cmr-12">[7]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -164,7 +183,7 @@ class="cmr-12">(2), 1999, 792–797.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[7]</span><span class="bibsp"><span
|
||||
class="cmr-12">[8]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -189,7 +208,7 @@ class="cmr-12">Workshops, IEEE CS, 2011.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[8]</span><span class="bibsp"><span
|
||||
class="cmr-12">[9]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -209,8 +228,8 @@ class="cmr-12">, Applied Numerical Mathematics, Elsevier Science,</span>
|
||||
class="cmr-12">57 (11-12), 2007, 1181-1196.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[9]</span><span class="bibsp"><span
|
||||
<span
|
||||
class="cmr-12">[10]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -229,7 +248,7 @@ class="cmr-12">, ACM Trans. Math. Softw., 37(3), 2010, art. 30.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[10]</span><span class="bibsp"><span
|
||||
class="cmr-12">[11]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -248,7 +267,7 @@ class="cmr-12">, Appl. Algebra Engrg. Comm. Comput., 18(3), 2007, 223–239.
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[11]</span><span class="bibsp"><span
|
||||
class="cmr-12">[12]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -264,10 +283,13 @@ class="cmr-12">, 2020, </span><a
|
||||
href="https://arxiv.org/abs/2006.16147v3arXiv:2006.16147v2" ><span
|
||||
class="cmr-12">arXiv:2006.16147v3</span></a><span
|
||||
class="cmr-12">.</span>
|
||||
|
||||
|
||||
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[12]</span><span class="bibsp"><span
|
||||
class="cmr-12">[13]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -285,13 +307,10 @@ class="cmr-12">, ACM Transactions on Mathematical Software, 30, 2004, 196–
|
||||
class="cmr-12">(See also </span><span
|
||||
class="cmtt-12">http://www.cise.ufl.edu/~davis/</span><span
|
||||
class="cmr-12">)</span>
|
||||
|
||||
|
||||
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[13]</span><span class="bibsp"><span
|
||||
class="cmr-12">[14]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -317,7 +336,7 @@ class="cmr-12">SIAM Journal on Matrix Analysis and Applications, 20 (3), 1999, 7
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[14]</span><span class="bibsp"><span
|
||||
class="cmr-12">[15]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -338,7 +357,7 @@ class="cmr-12">Software, 16 (1) 1990, 1–17.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[15]</span><span class="bibsp"><span
|
||||
class="cmr-12">[16]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -359,7 +378,7 @@ class="cmr-12">Transactions on Mathematical Software, 14 (1) 1988, 1–17.</
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[16]</span><span class="bibsp"><span
|
||||
class="cmr-12">[17]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -377,7 +396,7 @@ class="cmr-12">.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[17]</span><span class="bibsp"><span
|
||||
class="cmr-12">[18]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -395,7 +414,7 @@ class="cmr-12"> 23.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[18]</span><span class="bibsp"><span
|
||||
class="cmr-12">[19]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -409,10 +428,13 @@ class="cmti-12">Library for Parallel Linear Algebra Computation on Sparse Matric
|
||||
class="cmr-12">, ACM</span>
|
||||
<span
|
||||
class="cmr-12">Transactions on Mathematical Software, 26 (4), 2000, 527–550.</span>
|
||||
|
||||
|
||||
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[19]</span><span class="bibsp"><span
|
||||
class="cmr-12">[20]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -424,13 +446,10 @@ class="cmti-12">algebraic multigrid by aggregation</span><span
|
||||
class="cmr-12">, Numerical Lin. Algebra with Applications,</span>
|
||||
<span
|
||||
class="cmr-12">2016, 23:501-518</span>
|
||||
|
||||
|
||||
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[20]</span><span class="bibsp"><span
|
||||
class="cmr-12">[21]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -452,7 +471,7 @@ class="cmr-12">, MIT Press, 1998.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[21]</span><span class="bibsp"><span
|
||||
class="cmr-12">[22]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -474,7 +493,7 @@ class="cmr-12">Mathematical Software, 5 (3), 1979, 308–323.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[22]</span><span class="bibsp"><span
|
||||
class="cmr-12">[23]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -494,7 +513,7 @@ class="cmr-12">ACM Transactions on Mathematical Software, 29 (2), 2003, 110̵
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[23]</span><span class="bibsp"><span
|
||||
class="cmr-12">[24]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -510,7 +529,7 @@ class="cmr-12">Numerical Linear Algebra with Applications, 15 (5), 2008, 473R
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[24]</span><span class="bibsp"><span
|
||||
class="cmr-12">[25]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -524,7 +543,7 @@ class="cmr-12">2003.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[25]</span><span class="bibsp"><span
|
||||
class="cmr-12">[26]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -540,9 +559,12 @@ class="cmr-12">, Cambridge</span>
|
||||
<span
|
||||
class="cmr-12">University Press, 1996.</span>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[26]</span><span class="bibsp"><span
|
||||
class="cmr-12">[27]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -562,7 +584,7 @@ class="cmr-12">Press, 1998.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[27]</span><span class="bibsp"><span
|
||||
class="cmr-12">[28]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -578,13 +600,10 @@ class="cmr-12">
|
||||
class="cmr-12">U.</span><span
|
||||
class="cmr-12"> Trottenberg, C.</span><span
|
||||
class="cmr-12"> Oosterlee, Multigrid, Academic Press, 2001.</span>
|
||||
|
||||
|
||||
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[28]</span><span class="bibsp"><span
|
||||
class="cmr-12">[29]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -602,7 +621,7 @@ class="cmr-12">editor, Proceedings of SuperComputing 2000, Dallas, 2000.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[29]</span><span class="bibsp"><span
|
||||
class="cmr-12">[30]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -621,7 +640,7 @@ class="cmr-12">(3) 1996, 179–196.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[30]</span><span class="bibsp"><span
|
||||
class="cmr-12">[31]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -638,7 +657,7 @@ class="cmr-12">16, (2013) 59–76.</span>
|
||||
</p>
|
||||
<p class="bibitem" ><span class="biblabel">
|
||||
<span
|
||||
class="cmr-12">[31]</span><span class="bibsp"><span
|
||||
class="cmr-12">[32]</span><span class="bibsp"><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span><span
|
||||
class="cmr-12"> </span></span></span><a
|
||||
@@ -659,7 +678,7 @@ class="cmr-12">Transactions on Mathematical Software, 44, (2018) 39:1–39:2
|
||||
|
||||
|
||||
|
||||
<!--l. 147--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 157--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlse8.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
@@ -673,6 +692,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtml.html#userhtmlli4.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 147--><p class="indent" > <a
|
||||
<!--l. 157--><p class="indent" > <a
|
||||
id="tailuserhtmlli4.html"></a>
|
||||
</body></html>
|
||||
|
||||
+16
-15
@@ -77,17 +77,18 @@ class="small-caps">d</span> <span
|
||||
class="small-caps">o</span><span
|
||||
class="small-caps">n</span> PSBLAS</span>
|
||||
<span
|
||||
class="cmcsc-10x-x-120">(AMG4PSBLAS) </span><span
|
||||
class="cmr-12">provides parallel Algebraic MultiGrid (AMG) preconditioners (see,</span>
|
||||
class="cmr-12">(</span><span
|
||||
class="cmcsc-10x-x-120">AMG4PSBLAS</span><span
|
||||
class="cmr-12">) provides parallel Algebraic MultiGrid (AMG) preconditioners (see,</span>
|
||||
<span
|
||||
class="cmr-12">e.g., </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XBriggs2000"><span
|
||||
class="cmr-12">3</span></a><span
|
||||
class="cmr-12">4</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#XStuben_01"><span
|
||||
class="cmr-12">27</span></a><span
|
||||
class="cmr-12">28</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">), to be used in the iterative solution of linear systems,</span>
|
||||
<table
|
||||
@@ -116,11 +117,11 @@ class="cmr-12">(K-cycle)</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XBriggs2000"><span
|
||||
class="cmr-12">3</span></a><span
|
||||
class="cmr-12">4</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#XNotay2008"><span
|
||||
class="cmr-12">23</span></a><span
|
||||
class="cmr-12">24</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">; they can be combined with Jacobi hybrid forward/backward</span>
|
||||
<span
|
||||
@@ -144,22 +145,22 @@ class="cmr-12">a decoupled version of the smoothed aggregation procedure propose
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XBREZINA_VANEK"><span
|
||||
class="cmr-12">2</span></a><span
|
||||
class="cmr-12">3</span></a><span
|
||||
class="cmr-12">,</span>
|
||||
<span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#XVANEK_MANDEL_BREZINA"><span
|
||||
class="cmr-12">29</span></a><span
|
||||
class="cmr-12">30</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">, and already included in the previous versions of the package</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XBDDF2007"><span
|
||||
class="cmr-12">10</span></a><span
|
||||
class="cmr-12">11</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#XMLD2P4_TOMS"><span
|
||||
class="cmr-12">9</span></a><span
|
||||
class="cmr-12">10</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">;</span>
|
||||
</li>
|
||||
@@ -170,17 +171,17 @@ class="cmr-12">Weighted Matching introduced in</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XDV2013"><span
|
||||
class="cmr-12">30</span></a><span
|
||||
class="cmr-12">31</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#XDFV2018"><span
|
||||
class="cmr-12">31</span></a><span
|
||||
class="cmr-12">32</span></a><span
|
||||
class="cmr-12">]</span></span> <span
|
||||
class="cmr-12">and described in detail in</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XDDF2020"><span
|
||||
class="cmr-12">11</span></a><span
|
||||
class="cmr-12">12</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">;</span></li></ul>
|
||||
|
||||
@@ -220,11 +221,11 @@ class="cmr-12">computational framework</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#Xpsblas_00"><span
|
||||
class="cmr-12">18</span></a><span
|
||||
class="cmr-12">19</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#XPSBLAS3"><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">18</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">. PSBLAS provides basic linear algebra operators</span>
|
||||
<span
|
||||
|
||||
+93
-61
@@ -38,7 +38,7 @@ class="cmr-12">multilevel (i.e., AMG) preconditioners with the Krylov solvers in
|
||||
<span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">. The following steps are required:</span>
|
||||
<ol class="enumerate1" >
|
||||
@@ -84,18 +84,18 @@ class="cmti-12">Allocate and initialize the preconditioner data structure,
|
||||
<span
|
||||
class="cmti-12">preconditioner type chosen by the user</span><span
|
||||
class="cmr-12">. This is performed by the routine</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">init</span></span></span><span
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">init</span><span
|
||||
class="cmr-12">, which also sets defaults for each preconditioner type selected by</span>
|
||||
<span
|
||||
class="cmr-12">the user. The preconditioner types and the defaults associated with them</span>
|
||||
<span
|
||||
class="cmr-12">are given in Table</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="#x13-120151"><span
|
||||
href="#x13-12015r1"><span
|
||||
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
|
||||
class="cmr-12">, where the strings used by </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">init</span></span></span> <span
|
||||
class="cmr-12">, where the strings used by </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">init</span> <span
|
||||
class="cmr-12">to identify the</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner types are also given. Note that these strings are valid also if</span>
|
||||
@@ -107,16 +107,16 @@ class="cmr-12">uppercase letters are substituted by corresponding lowercase ones
|
||||
class="cmti-12">Modify the selected preconditioner type, by properly setting preconditioner</span>
|
||||
<span
|
||||
class="cmti-12">parameters. </span><span
|
||||
class="cmr-12">This is performed by the routine </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">set</span></span></span><span
|
||||
class="cmr-12">This is performed by the routine </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">set</span><span
|
||||
class="cmr-12">. This routine must be</span>
|
||||
<span
|
||||
class="cmr-12">called only if the user wants to modify the default values of the parameters</span>
|
||||
<span
|
||||
class="cmr-12">associated with the selected preconditioner type, to obtain a variant of that</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner. Examples of use of </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">set</span></span></span> <span
|
||||
class="cmr-12">preconditioner. Examples of use of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">set</span> <span
|
||||
class="cmr-12">are given in Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu6.html#x14-130004.1"><span
|
||||
@@ -131,11 +131,11 @@ href="userhtmlse5.html#x15-140005"><span
|
||||
class="cmr-12">5</span><!--tex4ht:ref: sec:userinterface --></a><span
|
||||
class="cmr-12">, Tables</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu8.html#x17-160092"><span
|
||||
href="userhtmlsu8.html#x17-16009r2"><span
|
||||
class="cmr-12">2</span><!--tex4ht:ref: tab:p_cycle --></a><span
|
||||
class="cmr-12">-</span><a
|
||||
href="userhtmlsu8.html#x17-160158"><span
|
||||
class="cmr-12">8</span><!--tex4ht:ref: tab:p_smoother_1 --></a><span
|
||||
href="userhtmlsu8.html#x17-16014r7"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: tab:p_smoother_1 --></a><span
|
||||
class="cmr-12">.</span>
|
||||
</li>
|
||||
<li
|
||||
@@ -153,8 +153,8 @@ class="cmr-12">This is performed by the</span>
|
||||
|
||||
|
||||
<span
|
||||
class="cmr-12">routine </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">hierarchy_build</span></span></span><span
|
||||
class="cmr-12">routine </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">hierarchy_build</span><span
|
||||
class="cmr-12">.</span>
|
||||
</li>
|
||||
<li
|
||||
@@ -162,14 +162,14 @@ class="cmr-12">.</span>
|
||||
class="cmti-12">Build the preconditioner for a given matrix. </span><span
|
||||
class="cmr-12">This is performed by the</span>
|
||||
<span
|
||||
class="cmr-12">routine </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">smoothers_build</span></span></span><span
|
||||
class="cmr-12">routine </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">smoothers_build</span><span
|
||||
class="cmr-12">.</span></li></ol>
|
||||
<!--l. 41--><p class="noindent" ><span
|
||||
class="cmr-12">If the selected preconditioner is one-level, it is built in a single step, performed by</span>
|
||||
<span
|
||||
class="cmr-12">the routine </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">bld</span></span></span><span
|
||||
class="cmr-12">the routine </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">bld</span><span
|
||||
class="cmr-12">.</span>
|
||||
</li>
|
||||
<li
|
||||
@@ -177,23 +177,23 @@ class="cmr-12">.</span>
|
||||
class="cmti-12">Apply the preconditioner at each iteration of a Krylov solver. </span><span
|
||||
class="cmr-12">This is performed by</span>
|
||||
<span
|
||||
class="cmr-12">the method </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">apply</span></span></span><span
|
||||
class="cmr-12">the method </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">apply</span><span
|
||||
class="cmr-12">. When using the PSBLAS Krylov solvers, this step is</span>
|
||||
<span
|
||||
class="cmr-12">completely transparent to the user, since </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">apply</span></span></span> <span
|
||||
class="cmr-12">completely transparent to the user, since </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">apply</span> <span
|
||||
class="cmr-12">is called by the PSBLAS routine</span>
|
||||
<span
|
||||
class="cmr-12">implementing the Krylov solver (</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">psb_krylov</span></span></span><span
|
||||
class="cmr-12">implementing the Krylov solver (</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">psb_krylov</span><span
|
||||
class="cmr-12">).</span>
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x13-12014x6"><span
|
||||
class="cmti-12">Free the preconditioner data structure</span><span
|
||||
class="cmr-12">. This is performed by the routine </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">free</span></span></span><span
|
||||
class="cmr-12">. This is performed by the routine </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">free</span><span
|
||||
class="cmr-12">.</span>
|
||||
<span
|
||||
class="cmr-12">This step is complementary to step 1 and should be performed when the</span>
|
||||
@@ -218,7 +218,7 @@ class="cmr-12">.</span>
|
||||
|
||||
|
||||
<!--l. 56--><p class="indent" > <a
|
||||
id="x13-120151"></a><hr class="float"><div class="float"
|
||||
id="x13-12015r1"></a><hr class="float"><div class="float"
|
||||
>
|
||||
|
||||
|
||||
@@ -274,20 +274,30 @@ class="small-caps">r</span></span> </td></tr><tr
|
||||
class="hline"><td><hr></td><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">No preconditioner </td><td style="white-space:normal; text-align:left;" id="TBL-1-2-2"
|
||||
class="td11"><!--l. 62--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10x-x-109">’NONE’</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-2-3"
|
||||
class="td11"><!--l. 62--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</span><span
|
||||
class="cmtt-10x-x-109">NONE</span><span
|
||||
class="cmtt-10x-x-109">’</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-2-3"
|
||||
class="td11"><!--l. 62--><p class="noindent" >Considered to use the PSBLAS Krylov
|
||||
solvers with no preconditioner. </td>
|
||||
</tr><tr
|
||||
class="hline"><td><hr></td><td><hr></td><td><hr></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">Diagonal </td><td style="white-space:normal; text-align:left;" id="TBL-1-3-2"
|
||||
class="td11"><!--l. 64--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10x-x-109">’DIAG’</span></span></span>,
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10x-x-109">’JACOBI’</span></span></span>,
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10x-x-109">’L1-JACOBI’</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-3-3"
|
||||
class="td11"><!--l. 64--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</span><span
|
||||
class="cmtt-10x-x-109">DIAG</span><span
|
||||
class="cmtt-10x-x-109">’</span>,
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</span><span
|
||||
class="cmtt-10x-x-109">JACOBI</span><span
|
||||
class="cmtt-10x-x-109">’</span>,
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</span><span
|
||||
class="cmtt-10x-x-109">L1</span><span
|
||||
class="cmtt-10x-x-109">-</span><span
|
||||
class="cmtt-10x-x-109">JACOBI</span><span
|
||||
class="cmtt-10x-x-109">’</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-3-3"
|
||||
class="td11"><!--l. 64--><p class="noindent" >Diagonal preconditioner. For any zero
|
||||
diagonal entry of the matrix to be
|
||||
preconditioned, the corresponding entry
|
||||
@@ -296,10 +306,16 @@ of the preconditioner is set to 1. </td>
|
||||
class="hline"><td><hr></td><td><hr></td><td><hr></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">Gauss-Seidel </td><td style="white-space:normal; text-align:left;" id="TBL-1-4-2"
|
||||
class="td11"><!--l. 67--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10x-x-109">’GS’</span></span></span>,
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10x-x-109">’L1-GS’</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-4-3"
|
||||
class="td11"><!--l. 67--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</span><span
|
||||
class="cmtt-10x-x-109">GS</span><span
|
||||
class="cmtt-10x-x-109">’</span>,
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</span><span
|
||||
class="cmtt-10x-x-109">L1</span><span
|
||||
class="cmtt-10x-x-109">-</span><span
|
||||
class="cmtt-10x-x-109">GS</span><span
|
||||
class="cmtt-10x-x-109">’</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-4-3"
|
||||
class="td11"><!--l. 67--><p class="noindent" >Hybrid Gauss-Seidel (forward), that is,
|
||||
global block Jacobi with Gauss-Seidel as
|
||||
local solver. </td>
|
||||
@@ -307,10 +323,16 @@ local solver. </td>
|
||||
class="hline"><td><hr></td><td><hr></td><td><hr></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">Symmetrized Gauss-Seidel</td><td style="white-space:normal; text-align:left;" id="TBL-1-5-2"
|
||||
class="td11"><!--l. 70--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10x-x-109">’FBGS’</span></span></span>,
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10x-x-109">’L1-FBGS’</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-5-3"
|
||||
class="td11"><!--l. 70--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</span><span
|
||||
class="cmtt-10x-x-109">FBGS</span><span
|
||||
class="cmtt-10x-x-109">’</span>,
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</span><span
|
||||
class="cmtt-10x-x-109">L1</span><span
|
||||
class="cmtt-10x-x-109">-</span><span
|
||||
class="cmtt-10x-x-109">FBGS</span><span
|
||||
class="cmtt-10x-x-109">’</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-5-3"
|
||||
class="td11"><!--l. 70--><p class="noindent" >Symmetrized hybrid Gauss-Seidel, that
|
||||
is, forward Gauss-Seidel followed by
|
||||
backward Gauss-Seidel. </td>
|
||||
@@ -318,26 +340,36 @@ backward Gauss-Seidel. </td>
|
||||
class="hline"><td><hr></td><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">Block Jacobi </td><td style="white-space:normal; text-align:left;" id="TBL-1-6-2"
|
||||
class="td11"><!--l. 73--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10x-x-109">’BJAC’</span></span></span>,
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10x-x-109">’L1-BJAC’</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-6-3"
|
||||
class="td11"><!--l. 73--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</span><span
|
||||
class="cmtt-10x-x-109">BJAC</span><span
|
||||
class="cmtt-10x-x-109">’</span>,
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</span><span
|
||||
class="cmtt-10x-x-109">L1</span><span
|
||||
class="cmtt-10x-x-109">-</span><span
|
||||
class="cmtt-10x-x-109">BJAC</span><span
|
||||
class="cmtt-10x-x-109">’</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-6-3"
|
||||
class="td11"><!--l. 73--><p class="noindent" >Block-Jacobi with ILU(0) on the local
|
||||
blocks. </td>
|
||||
</tr><tr
|
||||
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-1-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-7-1"
|
||||
class="td11">Additive Schwarz </td><td style="white-space:normal; text-align:left;" id="TBL-1-7-2"
|
||||
class="td11"><!--l. 74--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10x-x-109">’AS’</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-7-3"
|
||||
class="td11"><!--l. 74--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</span><span
|
||||
class="cmtt-10x-x-109">AS</span><span
|
||||
class="cmtt-10x-x-109">’</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-7-3"
|
||||
class="td11"><!--l. 74--><p class="noindent" >Additive Schwarz (AS), with overlap 1
|
||||
and ILU(0) on the local blocks. </td>
|
||||
</tr><tr
|
||||
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-1-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-8-1"
|
||||
class="td11">Multilevel </td><td style="white-space:normal; text-align:left;" id="TBL-1-8-2"
|
||||
class="td11"><!--l. 76--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10x-x-109">’ML’</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-8-3"
|
||||
class="td11"><!--l. 76--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-10x-x-109">’</span><span
|
||||
class="cmtt-10x-x-109">ML</span><span
|
||||
class="cmtt-10x-x-109">’</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-8-3"
|
||||
class="td11"><!--l. 76--><p class="noindent" >V-cycle with one hybrid
|
||||
forward Gauss-Seidel (GS) sweep as
|
||||
pre-smoother and one hybrid backward
|
||||
@@ -346,8 +378,8 @@ smoothed aggregation as coarsening
|
||||
algorithm, and LU (plus triangular solve)
|
||||
as coarsest-level solver. See the default
|
||||
values in Tables <a
|
||||
href="userhtmlsu8.html#x17-160092">2<!--tex4ht:ref: tab:p_cycle --></a>-<a
|
||||
href="userhtmlsu8.html#x17-160158">8<!--tex4ht:ref: tab:p_smoother_1 --></a> for further details of
|
||||
href="userhtmlsu8.html#x17-16009r2">2<!--tex4ht:ref: tab:p_cycle --></a>-<a
|
||||
href="userhtmlsu8.html#x17-16014r7">7<!--tex4ht:ref: tab:p_smoother_1 --></a> for further details of
|
||||
the preconditioner. </td>
|
||||
</tr><tr
|
||||
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
|
||||
@@ -355,7 +387,7 @@ class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
|
||||
class="td11"> </td></tr></table></div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Table 1: </span><span
|
||||
class="content">Preconditioner types, corresponding strings and default choices. </span></div><!--tex4ht:label?: x13-120151 -->
|
||||
class="content">Preconditioner types, corresponding strings and default choices. </span></div><!--tex4ht:label?: x13-12015r1 -->
|
||||
</div>
|
||||
|
||||
|
||||
@@ -363,18 +395,18 @@ class="content">Preconditioner types, corresponding strings and default choices.
|
||||
</div><hr class="endfloat" />
|
||||
</div>
|
||||
<!--l. 91--><p class="indent" > <span
|
||||
class="cmr-12">Note that the module </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">amg_prec_mod</span></span></span><span
|
||||
class="cmr-12">Note that the module </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">amg_prec_mod</span><span
|
||||
class="cmr-12">, containing the definition of the preconditioner</span>
|
||||
<span
|
||||
class="cmr-12">data type and the interfaces to the routines of AMG4PSBLAS, must be used</span>
|
||||
<span
|
||||
class="cmr-12">in any program calling such routines. The modules </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">psb_base_mod</span></span></span><span
|
||||
class="cmr-12">in any program calling such routines. The modules </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">psb_base_mod</span><span
|
||||
class="cmr-12">, for the</span>
|
||||
<span
|
||||
class="cmr-12">sparse matrix and communication descriptor data types, and </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">psb_krylov_mod</span></span></span><span
|
||||
class="cmr-12">sparse matrix and communication descriptor data types, and </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">psb_krylov_mod</span><span
|
||||
class="cmr-12">,</span>
|
||||
<span
|
||||
class="cmr-12">for interfacing with the Krylov solvers, must be also used (see Section</span><span
|
||||
|
||||
+16
-16
@@ -33,28 +33,28 @@ class="cmr-12">5 </span></span> <a
|
||||
class="cmr-12">User Interface</span></h3>
|
||||
<!--l. 5--><p class="noindent" ><span
|
||||
class="cmr-12">The basic user interface of AMG4PBLAS consists of eight methods. The six methods</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">init</span></span></span><span
|
||||
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">set</span></span></span><span
|
||||
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">build</span></span></span><span
|
||||
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">hierarchy_build</span></span></span><span
|
||||
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">smoothers_build</span></span></span> <span
|
||||
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">apply</span></span></span> <span
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">init</span><span
|
||||
class="cmr-12">, </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">set</span><span
|
||||
class="cmr-12">, </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">build</span><span
|
||||
class="cmr-12">, </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">hierarchy_build</span><span
|
||||
class="cmr-12">, </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">smoothers_build</span> <span
|
||||
class="cmr-12">and </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">apply</span> <span
|
||||
class="cmr-12">encapsulate all the</span>
|
||||
<span
|
||||
class="cmr-12">functionalities for the setup and the application of any multilevel and one-level</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner implemented in the package. The method </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">free</span></span></span> <span
|
||||
class="cmr-12">preconditioner implemented in the package. The method </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">free</span> <span
|
||||
class="cmr-12">deallocates the</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner data structure, while </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">descr</span></span></span> <span
|
||||
class="cmr-12">preconditioner data structure, while </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">descr</span> <span
|
||||
class="cmr-12">prints a description of the preconditioner</span>
|
||||
<span
|
||||
class="cmr-12">setup by the user. For backward compatibility, methods are also accessible as</span>
|
||||
|
||||
+59
-25
@@ -73,14 +73,42 @@ class="cmr-12">routine as in the following:</span>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 26--><p class="noindent" >
|
||||
<!--l. 27--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 27--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%set(smoother,info</span><span
|
||||
class="cmtt-12"> [,ilev,ilmax,pos])</span></span></span><br />
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">set</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">smoother</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12">ilev</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">ilmax</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">pos</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%set(solver,info</span><span
|
||||
class="cmtt-12"> [,ilev,ilmax,pos])</span></span></span></div>
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">set</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">solver</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12">ilev</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">ilmax</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">pos</span><span
|
||||
class="cmtt-12">])</span></div>
|
||||
</li>
|
||||
<li class="itemize"><span
|
||||
class="cmr-12">link the code implementing the various methods into the application</span>
|
||||
@@ -137,32 +165,38 @@ class="cmr-12">The interfaces for the calls shown above are defined using</span>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 56--><p class="noindent" >
|
||||
<div class="tabular"> <table id="TBL-21" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-20" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-21-1g"><col
|
||||
id="TBL-21-1"><col
|
||||
id="TBL-21-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-21-1-"><td style="white-space:normal; text-align:left;" id="TBL-21-1-1"
|
||||
class="td11"><!--l. 58--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">smoother</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-21-1-2"
|
||||
class="td11"><!--l. 58--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">class(amg_x_base_smoother_type)</span></span></span> </td>
|
||||
><colgroup id="TBL-20-1g"><col
|
||||
id="TBL-20-1"><col
|
||||
id="TBL-20-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:normal; text-align:left;" id="TBL-20-1-1"
|
||||
class="td11"><!--l. 58--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">smoother</span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-1-2"
|
||||
class="td11"><!--l. 58--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">amg_x_base_smoother_type</span><span
|
||||
class="cmtt-12">)</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:normal; text-align:left;" id="TBL-21-2-1"
|
||||
class="td11"><!--l. 59--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-21-2-2"
|
||||
style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:normal; text-align:left;" id="TBL-20-2-1"
|
||||
class="td11"><!--l. 59--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-2-2"
|
||||
class="td11"><!--l. 59--><p class="noindent" ><span
|
||||
class="cmr-12">The user-defined new smoother to be employed in the</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:normal; text-align:left;" id="TBL-21-3-1"
|
||||
class="td11"><!--l. 61--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">solver</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-21-3-2"
|
||||
class="td11"><!--l. 61--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">class(amg_x_base_solver_type)</span></span></span> </td>
|
||||
style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:normal; text-align:left;" id="TBL-20-3-1"
|
||||
class="td11"><!--l. 61--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">solver</span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-3-2"
|
||||
class="td11"><!--l. 61--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">amg_x_base_solver_type</span><span
|
||||
class="cmtt-12">)</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-21-4-"><td style="white-space:normal; text-align:left;" id="TBL-21-4-1"
|
||||
class="td11"><!--l. 62--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-21-4-2"
|
||||
style="vertical-align:baseline;" id="TBL-20-4-"><td style="white-space:normal; text-align:left;" id="TBL-20-4-1"
|
||||
class="td11"><!--l. 62--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-4-2"
|
||||
class="td11"><!--l. 62--><p class="noindent" ><span
|
||||
class="cmr-12">The user-defined new solver to be employed in the preconditioner.</span></td></tr></table></div></div>
|
||||
<!--l. 66--><p class="noindent" ><span
|
||||
@@ -197,7 +231,7 @@ class="cmr-12">pass it as follows:</span>
|
||||
  call prec%set(tlusv,   info,ilev=1,ilmax=max(1,nlv-1))
|
||||
  call prec%smoothers_build(a,desc_a,info)
|
||||
</pre>
|
||||
<!--l. 88--><p class="nopar" >
|
||||
<!--l. 107--><p class="nopar" >
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ class="cmr-12">PSBLAS error handling routines; for further details see the PSBLA
|
||||
<span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span>
|
||||
|
||||
@@ -61,6 +61,10 @@ class="cmr-12">.</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 150--><p class="indent" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ class="cmr-12">abide by its terms:</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 143--><p class="indent" >
|
||||
<!--l. 153--><p class="indent" >
|
||||
|
||||
|
||||
|
||||
|
||||
+35
-24
@@ -36,15 +36,15 @@ class="cmbx-12">BLAS</span> </dt><dd
|
||||
class="description"><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#Xblas3"><span
|
||||
class="cmr-12">14</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#Xblas2"><span
|
||||
class="cmr-12">15</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#Xblas2"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#Xblas1"><span
|
||||
class="cmr-12">21</span></a><span
|
||||
class="cmr-12">22</span></a><span
|
||||
class="cmr-12">]</span></span> <span
|
||||
class="cmr-12">Many vendors provide optimized versions of BLAS; if no</span>
|
||||
<span
|
||||
@@ -62,39 +62,50 @@ class="cmr-12">) are meant to define the standard behaviour of</span>
|
||||
<span
|
||||
class="cmr-12">the BLAS interface, so they are not optimized for any particular platform,</span>
|
||||
<span
|
||||
class="cmr-12">and should only be used as a last resort. Note that BLAS computations form</span>
|
||||
class="cmr-12">and should only be used as a last resort. Note that BLAS computations</span>
|
||||
<span
|
||||
class="cmr-12">a relatively small part of the AMG4PSBLAS/PSBLAS; however they are</span>
|
||||
class="cmr-12">form a relatively small part of ¡¡¡¡¡¡¡ HEAD the AMG4PSBLAS/PSBLAS;</span>
|
||||
<span
|
||||
class="cmr-12">critical when using preconditioners based on the MUMPS, UMFPACK or</span>
|
||||
class="cmr-12">however they are critical when using preconditioners based on the MUMPS,</span>
|
||||
<span
|
||||
class="cmr-12">SuperLU third party libraries. UMFPACK requires a full LAPACK library;</span>
|
||||
class="cmr-12">UMFPACK or SuperLU third party libraries. UMFPACK requires a</span>
|
||||
<span
|
||||
class="cmr-12">our experience is that configuring ATLAS for building full LAPACK does</span>
|
||||
class="cmr-12">full LAPACK library; our experience is that configuring ATLAS for</span>
|
||||
<span
|
||||
class="cmr-12">not always work in the expected way. Our advice is first to download the</span>
|
||||
class="cmr-12">building full LAPACK does not always work in the expected way. Our</span>
|
||||
<span
|
||||
class="cmr-12">LAPACK tarfile from </span><a
|
||||
class="cmr-12">advice is first to download the LAPACK tarfile from ======= the</span>
|
||||
<span
|
||||
class="cmr-12">AMG4PSBLAS/PSBLAS computations; they are however critical when</span>
|
||||
<span
|
||||
class="cmr-12">using preconditioners based on MUMPS, UMFPACK or SuperLU third</span>
|
||||
<span
|
||||
class="cmr-12">party libraries. Note that UMFPACK requires a full LAPACK library;</span>
|
||||
<span
|
||||
class="cmr-12">our experience is that configuring ATLAS for building full LAPACK</span>
|
||||
<span
|
||||
class="cmr-12">does not work in the correct way. Our advice is first to download the</span>
|
||||
<span
|
||||
class="cmr-12">LAPACK tarfile from ¿¿¿¿¿¿¿ ea6411c730befe4e0e4091caa6f03379ad3712cc</span>
|
||||
<a
|
||||
href="http://www.netlib.org/lapack" ><span
|
||||
class="cmr-12">www.netlib.org/lapack</span></a> <span
|
||||
class="cmr-12">and install it independently of</span>
|
||||
class="cmr-12">and install it independently of ATLAS. In this case,</span>
|
||||
<span
|
||||
class="cmr-12">ATLAS. In this case, you need to modify the OPTS and NOOPT definitions</span>
|
||||
class="cmr-12">you need to modify the OPTS and NOOPT definitions for including -fPIC</span>
|
||||
<span
|
||||
class="cmr-12">for including -fPIC compilation option in the make.inc file of the LAPACK</span>
|
||||
<span
|
||||
class="cmr-12">library.</span>
|
||||
class="cmr-12">compilation option in the make.inc file of the LAPACK library.</span>
|
||||
</dd><dt class="description">
|
||||
<span
|
||||
class="cmbx-12">MPI</span> </dt><dd
|
||||
class="description"><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XMPI2"><span
|
||||
class="cmr-12">20</span></a><span
|
||||
class="cmr-12">21</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#XMPI1"><span
|
||||
class="cmr-12">26</span></a><span
|
||||
class="cmr-12">27</span></a><span
|
||||
class="cmr-12">]</span></span> <span
|
||||
class="cmr-12">A version of MPI is available on most high-performance computing</span>
|
||||
<span
|
||||
@@ -105,11 +116,11 @@ class="cmbx-12">PSBLAS</span> </dt><dd
|
||||
class="description"><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">,</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlli4.html#Xpsblas_00"><span
|
||||
class="cmr-12">18</span></a><span
|
||||
class="cmr-12">19</span></a><span
|
||||
class="cmr-12">]</span></span> <span
|
||||
class="cmr-12">Parallel Sparse BLAS (PSBLAS) is available from</span>
|
||||
<a
|
||||
@@ -118,7 +129,7 @@ class="cmr-12">psctoolkit.github.io/ products/psblas/</span></a><span
|
||||
class="cmr-12">; version 3.7.0 (or later) is required.</span>
|
||||
<span
|
||||
class="cmr-12">Indeed, all the prerequisites listed so far are also prerequisites of PSBLAS.</span></dd></dl>
|
||||
<!--l. 58--><p class="noindent" ><span
|
||||
<!--l. 68--><p class="noindent" ><span
|
||||
class="cmr-12">Please note that the four previous libraries must have Fortran interfaces compatible with</span>
|
||||
<span
|
||||
class="cmr-12">AMG4PSBLAS; usually this means that they should all be built with the same</span>
|
||||
@@ -127,7 +138,7 @@ class="cmr-12">compiler being used for AMG4PSBLAS.</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 62--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 72--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu2.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -138,6 +149,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse3.html#userhtmlsu1.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 62--><p class="indent" > <a
|
||||
<!--l. 72--><p class="indent" > <a
|
||||
id="tailuserhtmlsu1.html"></a>
|
||||
</body></html>
|
||||
|
||||
+155
-91
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 603--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 624--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu11.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -34,117 +34,165 @@ class="cmr-12">Method smoothers</span><span
|
||||
class="cmr-12">_build</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 606--><p class="noindent" >
|
||||
<!--l. 607--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 627--><p class="noindent" >
|
||||
<!--l. 628--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])</span></span></span><br />
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">smoothers_build</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">desc_a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12">amold</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">vmold</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">imold</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 610--><p class="noindent" ><span
|
||||
<!--l. 631--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the smoothers and the coarsest-level solvers for the multilevel</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">p</span></span></span><span
|
||||
class="cmr-12">preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmr-12">, according to the requirements made by the user through the methods</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">init</span></span></span> <span
|
||||
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">set</span></span></span><span
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">init</span> <span
|
||||
class="cmr-12">and </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">set</span><span
|
||||
class="cmr-12">, and based on the aggregation hierarchy produced by a previous call to</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">hierarchy_build</span></span></span> <span
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">hierarchy_build</span> <span
|
||||
class="cmr-12">(see Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu9.html#x18-170005.3"><span
|
||||
class="cmr-12">5.3</span><!--tex4ht:ref: sec:hier_bld --></a><span
|
||||
class="cmr-12">).</span>
|
||||
<!--l. 617--><p class="noindent" ><span
|
||||
<!--l. 638--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-12" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-11" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-12-1g"><col
|
||||
id="TBL-12-1"><col
|
||||
id="TBL-12-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:normal; text-align:left;" id="TBL-12-1-1"
|
||||
class="td11"><!--l. 620--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">a</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-1-2"
|
||||
class="td11"><!--l. 620--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">type(psb_</span></span></span><span
|
||||
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">spmat_type),</span><span
|
||||
class="cmtt-12"> intent(in)</span></span></span><span
|
||||
><colgroup id="TBL-11-1g"><col
|
||||
id="TBL-11-1"><col
|
||||
id="TBL-11-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:normal; text-align:left;" id="TBL-11-1-1"
|
||||
class="td11"><!--l. 641--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-1-2"
|
||||
class="td11"><!--l. 641--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">spmat_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:normal; text-align:left;" id="TBL-12-2-1"
|
||||
class="td11"><!--l. 621--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-2-2"
|
||||
class="td11"><!--l. 621--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:normal; text-align:left;" id="TBL-11-2-1"
|
||||
class="td11"><!--l. 642--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-2-2"
|
||||
class="td11"><!--l. 642--><p class="noindent" ><span
|
||||
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
|
||||
<span
|
||||
class="cmr-12">to be preconditioned. Note that </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">must be chosen according to the</span>
|
||||
<span
|
||||
class="cmr-12">real/complex, single/double precision version of AMG4PSBLAS</span>
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">, single/double precision version of AMG4PSBLAS</span>
|
||||
<span
|
||||
class="cmr-12">under use. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:normal; text-align:left;" id="TBL-12-3-1"
|
||||
class="td11"><!--l. 625--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">desc_a</span></span></span></td><td style="white-space:normal; text-align:left;" id="TBL-12-3-2"
|
||||
class="td11"><!--l. 625--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">type(psb_desc_type),</span><span
|
||||
class="cmtt-12"> intent(in)</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-11-3-"><td style="white-space:normal; text-align:left;" id="TBL-11-3-1"
|
||||
class="td11"><!--l. 646--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-11-3-2"
|
||||
class="td11"><!--l. 646--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_desc_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:normal; text-align:left;" id="TBL-12-4-1"
|
||||
class="td11"><!--l. 626--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-4-2"
|
||||
class="td11"><!--l. 626--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">a</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:normal; text-align:left;" id="TBL-11-4-1"
|
||||
class="td11"><!--l. 647--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-4-2"
|
||||
class="td11"><!--l. 647--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmr-12">. See the PSBLAS User’s Guide</span>
|
||||
<span
|
||||
class="cmr-12">for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:normal; text-align:left;" id="TBL-12-5-1"
|
||||
class="td11"><!--l. 628--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-5-2"
|
||||
class="td11"><!--l. 628--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:normal; text-align:left;" id="TBL-11-5-1"
|
||||
class="td11"><!--l. 649--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-5-2"
|
||||
class="td11"><!--l. 649--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:normal; text-align:left;" id="TBL-12-6-1"
|
||||
class="td11"><!--l. 629--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-6-2"
|
||||
class="td11"><!--l. 629--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:normal; text-align:left;" id="TBL-11-6-1"
|
||||
class="td11"><!--l. 650--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-6-2"
|
||||
class="td11"><!--l. 650--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x26-300007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:normal; text-align:left;" id="TBL-12-7-1"
|
||||
class="td11"><!--l. 630--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">amold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-7-2"
|
||||
class="td11"><!--l. 630--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">class(psb_</span></span></span><span
|
||||
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">_base_sparse_mat),</span><span
|
||||
class="cmtt-12"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-11-7-"><td style="white-space:normal; text-align:left;" id="TBL-11-7-1"
|
||||
class="td11"><!--l. 651--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-7-2"
|
||||
class="td11"><!--l. 651--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_sparse_mat</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-8-"><td style="white-space:normal; text-align:left;" id="TBL-12-8-1"
|
||||
class="td11"><!--l. 631--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-8-2"
|
||||
class="td11"><!--l. 631--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-11-8-"><td style="white-space:normal; text-align:left;" id="TBL-11-8-1"
|
||||
class="td11"><!--l. 652--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-8-2"
|
||||
class="td11"><!--l. 652--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
|
||||
@@ -152,45 +200,61 @@ class="cmr-12">allows e.g. running on GPUs; it needs not be the same
|
||||
class="cmr-12">processes. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-9-"><td style="white-space:normal; text-align:left;" id="TBL-12-9-1"
|
||||
class="td11"><!--l. 635--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">vmold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-9-2"
|
||||
class="td11"><!--l. 635--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">class(psb_</span></span></span><span
|
||||
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">_base_vect_type),</span><span
|
||||
class="cmtt-12"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-11-9-"><td style="white-space:normal; text-align:left;" id="TBL-11-9-1"
|
||||
class="td11"><!--l. 656--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-9-2"
|
||||
class="td11"><!--l. 656--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_vect_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-10-"><td style="white-space:normal; text-align:left;" id="TBL-12-10-1"
|
||||
class="td11"><!--l. 636--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-10-2"
|
||||
class="td11"><!--l. 636--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-11-10-"><td style="white-space:normal; text-align:left;" id="TBL-11-10-1"
|
||||
class="td11"><!--l. 657--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-10-2"
|
||||
class="td11"><!--l. 657--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-11-"><td style="white-space:normal; text-align:left;" id="TBL-12-11-1"
|
||||
class="td11"><!--l. 638--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">imold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-11-2"
|
||||
class="td11"><!--l. 638--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">class(psb_i_base_vect_type),</span><span
|
||||
class="cmtt-12"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-11-11-"><td style="white-space:normal; text-align:left;" id="TBL-11-11-1"
|
||||
class="td11"><!--l. 659--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">imold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-11-2"
|
||||
class="td11"><!--l. 659--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_i_base_vect_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-12-"><td style="white-space:normal; text-align:left;" id="TBL-12-12-1"
|
||||
class="td11"><!--l. 639--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-12-2"
|
||||
class="td11"><!--l. 639--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-11-12-"><td style="white-space:normal; text-align:left;" id="TBL-11-12-1"
|
||||
class="td11"><!--l. 660--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-12-2"
|
||||
class="td11"><!--l. 660--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
|
||||
<span
|
||||
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-13-"><td style="white-space:normal; text-align:left;" id="TBL-12-13-1"
|
||||
style="vertical-align:baseline;" id="TBL-11-13-"><td style="white-space:normal; text-align:left;" id="TBL-11-13-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
@@ -198,7 +262,7 @@ class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
|
||||
<!--l. 645--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 666--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu11.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -215,6 +279,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu10.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 645--><p class="indent" > <a
|
||||
<!--l. 666--><p class="indent" > <a
|
||||
id="tailuserhtmlsu10.html"></a>
|
||||
</body></html>
|
||||
|
||||
+156
-94
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 645--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 666--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu12.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -33,20 +33,36 @@ class="cmr-12">5.5 </span></span> <a
|
||||
class="cmr-12">Method build</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 647--><p class="noindent" >
|
||||
<!--l. 648--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 668--><p class="noindent" >
|
||||
<!--l. 669--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%build(a,desc_a,info[,amold,vmold,imold])</span></span></span><br />
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">build</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">desc_a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12">amold</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">vmold</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">imold</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 651--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the preconditioner </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">p</span></span></span> <span
|
||||
<!--l. 672--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span> <span
|
||||
class="cmr-12">according to the requirements made by the</span>
|
||||
<span
|
||||
class="cmr-12">user through the methods </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">init</span></span></span> <span
|
||||
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">set</span></span></span> <span
|
||||
class="cmr-12">user through the methods </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">init</span> <span
|
||||
class="cmr-12">and </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">set</span> <span
|
||||
class="cmr-12">(see Sections</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlsu9.html#x18-170005.3"><span
|
||||
@@ -59,102 +75,132 @@ class="cmr-12">for multilevel</span>
|
||||
<span
|
||||
class="cmr-12">preconditioners). It is mostly provided for backward compatibility; indeed, it is</span>
|
||||
<span
|
||||
class="cmr-12">internally implemented by invoking the two previous methods </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">hierarchy_build</span></span></span> <span
|
||||
class="cmr-12">internally implemented by invoking the two previous methods </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">hierarchy_build</span> <span
|
||||
class="cmr-12">and</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">smoothers_build</span></span></span><span
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">smoothers_build</span><span
|
||||
class="cmr-12">, whose nomenclature would however be somewhat unnatural when</span>
|
||||
<span
|
||||
class="cmr-12">dealing with simple one-level preconditioners.</span>
|
||||
<!--l. 661--><p class="noindent" ><span
|
||||
<!--l. 682--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-13" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-12" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-13-1g"><col
|
||||
id="TBL-13-1"><col
|
||||
id="TBL-13-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:normal; text-align:left;" id="TBL-13-1-1"
|
||||
class="td11"><!--l. 664--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">a</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-1-2"
|
||||
class="td11"><!--l. 664--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">type(psb_</span></span></span><span
|
||||
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">spmat_type),</span><span
|
||||
class="cmtt-12"> intent(in)</span></span></span><span
|
||||
><colgroup id="TBL-12-1g"><col
|
||||
id="TBL-12-1"><col
|
||||
id="TBL-12-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:normal; text-align:left;" id="TBL-12-1-1"
|
||||
class="td11"><!--l. 685--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-1-2"
|
||||
class="td11"><!--l. 685--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">spmat_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:normal; text-align:left;" id="TBL-13-2-1"
|
||||
class="td11"><!--l. 665--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-2-2"
|
||||
class="td11"><!--l. 665--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:normal; text-align:left;" id="TBL-12-2-1"
|
||||
class="td11"><!--l. 686--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-2-2"
|
||||
class="td11"><!--l. 686--><p class="noindent" ><span
|
||||
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
|
||||
<span
|
||||
class="cmr-12">to be preconditioned. Note that </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">must be chosen according to the</span>
|
||||
<span
|
||||
class="cmr-12">real/complex, single/double precision version of AMG4PSBLAS</span>
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">, single/double precision version of AMG4PSBLAS</span>
|
||||
<span
|
||||
class="cmr-12">under use. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:normal; text-align:left;" id="TBL-13-3-1"
|
||||
class="td11"><!--l. 669--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">desc_a</span></span></span></td><td style="white-space:normal; text-align:left;" id="TBL-13-3-2"
|
||||
class="td11"><!--l. 669--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">type(psb_desc_type),</span><span
|
||||
class="cmtt-12"> intent(in)</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:normal; text-align:left;" id="TBL-12-3-1"
|
||||
class="td11"><!--l. 690--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-12-3-2"
|
||||
class="td11"><!--l. 690--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_desc_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:normal; text-align:left;" id="TBL-13-4-1"
|
||||
class="td11"><!--l. 670--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-4-2"
|
||||
class="td11"><!--l. 670--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">a</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:normal; text-align:left;" id="TBL-12-4-1"
|
||||
class="td11"><!--l. 691--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-4-2"
|
||||
class="td11"><!--l. 691--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmr-12">. See the PSBLAS User’s Guide</span>
|
||||
<span
|
||||
class="cmr-12">for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:normal; text-align:left;" id="TBL-13-5-1"
|
||||
class="td11"><!--l. 672--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-5-2"
|
||||
class="td11"><!--l. 672--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:normal; text-align:left;" id="TBL-12-5-1"
|
||||
class="td11"><!--l. 693--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-5-2"
|
||||
class="td11"><!--l. 693--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:normal; text-align:left;" id="TBL-13-6-1"
|
||||
class="td11"><!--l. 673--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-6-2"
|
||||
class="td11"><!--l. 673--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:normal; text-align:left;" id="TBL-12-6-1"
|
||||
class="td11"><!--l. 694--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-6-2"
|
||||
class="td11"><!--l. 694--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x26-300007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:normal; text-align:left;" id="TBL-13-7-1"
|
||||
class="td11"><!--l. 674--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">amold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-7-2"
|
||||
class="td11"><!--l. 674--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">class(psb_</span></span></span><span
|
||||
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">_base_sparse_mat),</span><span
|
||||
class="cmtt-12"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:normal; text-align:left;" id="TBL-12-7-1"
|
||||
class="td11"><!--l. 695--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-7-2"
|
||||
class="td11"><!--l. 695--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_sparse_mat</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:normal; text-align:left;" id="TBL-13-8-1"
|
||||
class="td11"><!--l. 675--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-8-2"
|
||||
class="td11"><!--l. 675--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-12-8-"><td style="white-space:normal; text-align:left;" id="TBL-12-8-1"
|
||||
class="td11"><!--l. 696--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-8-2"
|
||||
class="td11"><!--l. 696--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
|
||||
@@ -162,47 +208,63 @@ class="cmr-12">allows e.g. running on GPUs; it needs not be the same
|
||||
class="cmr-12">processes. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-9-"><td style="white-space:normal; text-align:left;" id="TBL-13-9-1"
|
||||
class="td11"><!--l. 679--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">vmold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-9-2"
|
||||
class="td11"><!--l. 679--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">class(psb_</span></span></span><span
|
||||
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">_base_vect_type),</span><span
|
||||
class="cmtt-12"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-12-9-"><td style="white-space:normal; text-align:left;" id="TBL-12-9-1"
|
||||
class="td11"><!--l. 700--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-9-2"
|
||||
class="td11"><!--l. 700--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_vect_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-10-"><td style="white-space:normal; text-align:left;" id="TBL-13-10-1"
|
||||
class="td11"><!--l. 680--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-10-2"
|
||||
class="td11"><!--l. 680--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-12-10-"><td style="white-space:normal; text-align:left;" id="TBL-12-10-1"
|
||||
class="td11"><!--l. 701--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-10-2"
|
||||
class="td11"><!--l. 701--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:normal; text-align:left;" id="TBL-13-11-1"
|
||||
class="td11"><!--l. 682--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">imold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-11-2"
|
||||
class="td11"><!--l. 682--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">class(psb_i_base_vect_type),</span><span
|
||||
class="cmtt-12"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-12-11-"><td style="white-space:normal; text-align:left;" id="TBL-12-11-1"
|
||||
class="td11"><!--l. 703--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">imold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-12-11-2"
|
||||
class="td11"><!--l. 703--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_i_base_vect_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:normal; text-align:left;" id="TBL-13-12-1"
|
||||
class="td11"><!--l. 683--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-12-2"
|
||||
class="td11"><!--l. 683--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-12-12-"><td style="white-space:normal; text-align:left;" id="TBL-12-12-1"
|
||||
class="td11"><!--l. 704--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-12-2"
|
||||
class="td11"><!--l. 704--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal integer vector components;</span>
|
||||
<span
|
||||
class="cmr-12">this allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:normal; text-align:left;" id="TBL-13-13-1"
|
||||
style="vertical-align:baseline;" id="TBL-12-13-"><td style="white-space:normal; text-align:left;" id="TBL-12-13-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 688--><p class="noindent" ><span
|
||||
<!--l. 709--><p class="noindent" ><span
|
||||
class="cmr-12">The method can be used to build multilevel preconditioners too.</span>
|
||||
|
||||
|
||||
@@ -210,7 +272,7 @@ class="cmr-12">The method can be used to build multilevel preconditioners too.</
|
||||
|
||||
|
||||
|
||||
<!--l. 693--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 714--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu12.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -227,6 +289,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu11.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 693--><p class="indent" > <a
|
||||
<!--l. 714--><p class="indent" > <a
|
||||
id="tailuserhtmlsu11.html"></a>
|
||||
</body></html>
|
||||
|
||||
+202
-111
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 693--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 714--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu13.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -33,13 +33,29 @@ class="cmr-12">5.6 </span></span> <a
|
||||
class="cmr-12">Method apply</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 695--><p class="noindent" >
|
||||
<!--l. 696--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 716--><p class="noindent" >
|
||||
<!--l. 717--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%apply(x,y,desc_a,info</span><span
|
||||
class="cmtt-12"> [,trans,work])</span></span></span><br />
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">apply</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">x</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">y</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">desc_a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12">trans</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">work</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 699--><p class="noindent" ><span
|
||||
<!--l. 720--><p class="noindent" ><span
|
||||
class="cmr-12">This method computes </span><span
|
||||
class="cmmi-12">y </span><span
|
||||
class="cmr-12">= </span><span
|
||||
@@ -54,46 +70,54 @@ class="cmr-12">, where </span><span
|
||||
class="cmmi-12">B </span><span
|
||||
class="cmr-12">is a previously built preconditioner,</span>
|
||||
<span
|
||||
class="cmr-12">stored into </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">p</span></span></span><span
|
||||
class="cmr-12">stored into </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmr-12">, and </span><span
|
||||
class="cmmi-12">op </span><span
|
||||
class="cmr-12">denotes the preconditioner itself or its transpose, according to the</span>
|
||||
<span
|
||||
class="cmr-12">value of </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">trans</span></span></span><span
|
||||
class="cmr-12">value of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span><span
|
||||
class="cmr-12">. Note that, when AMG4PSBLAS is used with a Krylov solver from</span>
|
||||
<span
|
||||
class="cmr-12">PSBLAS, </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">p%apply</span></span></span> <span
|
||||
class="cmr-12">is called within the PSBLAS method </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">psb_krylov</span></span></span> <span
|
||||
class="cmr-12">PSBLAS, </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">apply</span> <span
|
||||
class="cmr-12">is called within the PSBLAS method </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">psb_krylov</span> <span
|
||||
class="cmr-12">and hence it is</span>
|
||||
<span
|
||||
class="cmr-12">completely transparent to the user.</span>
|
||||
<!--l. 708--><p class="noindent" ><span
|
||||
<!--l. 729--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-14" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-13" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-14-1g"><col
|
||||
id="TBL-14-1"><col
|
||||
id="TBL-14-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:normal; text-align:left;" id="TBL-14-1-1"
|
||||
class="td11"><!--l. 711--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">x</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-1-2"
|
||||
class="td11"><!--l. 711--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">(</span></span></span><span
|
||||
><colgroup id="TBL-13-1g"><col
|
||||
id="TBL-13-1"><col
|
||||
id="TBL-13-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:normal; text-align:left;" id="TBL-13-1-1"
|
||||
class="td11"><!--l. 732--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">x</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-1-2"
|
||||
class="td11"><!--l. 732--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmti-12">_parameter</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> dimension(:),</span><span
|
||||
class="cmtt-12"> intent(in)</span></span></span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">dimension</span><span
|
||||
class="cmtt-12">(:),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:normal; text-align:left;" id="TBL-14-2-1"
|
||||
class="td11"><!--l. 712--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-2-2"
|
||||
class="td11"><!--l. 712--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:normal; text-align:left;" id="TBL-13-2-1"
|
||||
class="td11"><!--l. 733--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-2-2"
|
||||
class="td11"><!--l. 733--><p class="noindent" ><span
|
||||
class="cmr-12">The local part of the vector </span><span
|
||||
class="cmmi-12">x</span><span
|
||||
class="cmr-12">. Note that </span><span
|
||||
@@ -102,26 +126,36 @@ class="cmr-12">and </span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span>
|
||||
<span
|
||||
class="cmr-12">must be chosen according to the real/complex, single/double</span>
|
||||
class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">, single/double</span>
|
||||
<span
|
||||
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:normal; text-align:left;" id="TBL-14-3-1"
|
||||
class="td11"><!--l. 715--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">y</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-3-2"
|
||||
class="td11"><!--l. 715--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">(</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:normal; text-align:left;" id="TBL-13-3-1"
|
||||
class="td11"><!--l. 736--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">y</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-3-2"
|
||||
class="td11"><!--l. 736--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmti-12">_parameter</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> dimension(:),</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">dimension</span><span
|
||||
class="cmtt-12">(:),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:normal; text-align:left;" id="TBL-14-4-1"
|
||||
class="td11"><!--l. 716--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-4-2"
|
||||
class="td11"><!--l. 716--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:normal; text-align:left;" id="TBL-13-4-1"
|
||||
class="td11"><!--l. 737--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-4-2"
|
||||
class="td11"><!--l. 737--><p class="noindent" ><span
|
||||
class="cmr-12">The local part of the vector </span><span
|
||||
class="cmmi-12">y</span><span
|
||||
class="cmr-12">. Note that </span><span
|
||||
@@ -130,57 +164,88 @@ class="cmr-12">and </span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span>
|
||||
<span
|
||||
class="cmr-12">must be chosen according to the real/complex, single/double</span>
|
||||
class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">, single/double</span>
|
||||
<span
|
||||
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:normal; text-align:left;" id="TBL-14-5-1"
|
||||
class="td11"><!--l. 719--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">desc_a</span></span></span></td><td style="white-space:normal; text-align:left;" id="TBL-14-5-2"
|
||||
class="td11"><!--l. 719--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">type(psb_desc_type),</span><span
|
||||
class="cmtt-12"> intent(in)</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:normal; text-align:left;" id="TBL-13-5-1"
|
||||
class="td11"><!--l. 740--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-13-5-2"
|
||||
class="td11"><!--l. 740--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_desc_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:normal; text-align:left;" id="TBL-14-6-1"
|
||||
class="td11"><!--l. 720--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-6-2"
|
||||
class="td11"><!--l. 720--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:normal; text-align:left;" id="TBL-13-6-1"
|
||||
class="td11"><!--l. 741--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-6-2"
|
||||
class="td11"><!--l. 741--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor associated to the matrix to be</span>
|
||||
<span
|
||||
class="cmr-12">preconditioned.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:normal; text-align:left;" id="TBL-14-7-1"
|
||||
class="td11"><!--l. 722--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-7-2"
|
||||
class="td11"><!--l. 722--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:normal; text-align:left;" id="TBL-13-7-1"
|
||||
class="td11"><!--l. 743--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-7-2"
|
||||
class="td11"><!--l. 743--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:normal; text-align:left;" id="TBL-14-8-1"
|
||||
class="td11"><!--l. 723--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-8-2"
|
||||
class="td11"><!--l. 723--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:normal; text-align:left;" id="TBL-13-8-1"
|
||||
class="td11"><!--l. 744--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-8-2"
|
||||
class="td11"><!--l. 744--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x26-300007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:normal; text-align:left;" id="TBL-14-9-1"
|
||||
class="td11"><!--l. 724--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">trans</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-9-2"
|
||||
class="td11"><!--l. 724--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">character(len=1),</span><span
|
||||
class="cmtt-12"> optional,</span><span
|
||||
class="cmtt-12"> intent(in).</span></span></span> </td>
|
||||
style="vertical-align:baseline;" id="TBL-13-9-"><td style="white-space:normal; text-align:left;" id="TBL-13-9-1"
|
||||
class="td11"><!--l. 745--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-9-2"
|
||||
class="td11"><!--l. 745--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">character</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">len</span><span
|
||||
class="cmtt-12">=1),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">).</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:normal; text-align:left;" id="TBL-14-10-1"
|
||||
class="td11"><!--l. 725--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-10-2"
|
||||
class="td11"><!--l. 725--><p class="noindent" ><span
|
||||
class="cmr-12">If </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">trans</span></span></span> <span
|
||||
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">’N’,’n’</span></span></span> <span
|
||||
style="vertical-align:baseline;" id="TBL-13-10-"><td style="white-space:normal; text-align:left;" id="TBL-13-10-1"
|
||||
class="td11"><!--l. 746--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-10-2"
|
||||
class="td11"><!--l. 746--><p class="noindent" ><span
|
||||
class="cmr-12">If </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> <span
|
||||
class="cmr-12">= </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">N</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">n</span><span
|
||||
class="cmtt-12">’</span> <span
|
||||
class="cmr-12">then </span><span
|
||||
class="cmmi-12">op</span><span
|
||||
class="cmr-12">(</span><span
|
||||
@@ -191,10 +256,16 @@ class="cmr-12">) = </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">; if </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">trans</span></span></span> <span
|
||||
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">’T’,’t’</span></span></span>
|
||||
class="cmr-12">; if </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> <span
|
||||
class="cmr-12">= </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">T</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">t</span><span
|
||||
class="cmtt-12">’</span>
|
||||
<span
|
||||
class="cmr-12">then </span><span
|
||||
class="cmmi-12">op</span><span
|
||||
@@ -210,10 +281,16 @@ class="cmr-12">(transpose of </span><span
|
||||
class="cmmi-12">B</span><sup><span
|
||||
class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">); if </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">trans</span></span></span> <span
|
||||
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">’C’,’c’</span></span></span> <span
|
||||
class="cmr-12">); if </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">trans</span> <span
|
||||
class="cmr-12">= </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">C</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">c</span><span
|
||||
class="cmtt-12">’</span> <span
|
||||
class="cmr-12">then</span>
|
||||
<span
|
||||
class="cmmi-12">op</span><span
|
||||
@@ -231,40 +308,54 @@ class="cmsy-8">-</span><span
|
||||
class="cmr-8">1</span></sup><span
|
||||
class="cmr-12">).</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:normal; text-align:left;" id="TBL-14-11-1"
|
||||
class="td11"><!--l. 729--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">work</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-11-2"
|
||||
class="td11"><!--l. 729--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">(</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:normal; text-align:left;" id="TBL-13-11-1"
|
||||
class="td11"><!--l. 750--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">work</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-11-2"
|
||||
class="td11"><!--l. 750--><p class="noindent" ><span
|
||||
class="cmti-12">type</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmti-12">_parameter</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> dimension(:),</span><span
|
||||
class="cmtt-12"> optional,</span><span
|
||||
class="cmtt-12"> target</span></span></span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">dimension</span><span
|
||||
class="cmtt-12">(:),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">target</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-12-"><td style="white-space:normal; text-align:left;" id="TBL-14-12-1"
|
||||
class="td11"><!--l. 730--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-12-2"
|
||||
class="td11"><!--l. 730--><p class="noindent" ><span
|
||||
class="cmr-12">Workspace. Its size should be at least </span><span class="obeylines-h"><span class="verb"><span
|
||||
style="vertical-align:baseline;" id="TBL-13-12-"><td style="white-space:normal; text-align:left;" id="TBL-13-12-1"
|
||||
class="td11"><!--l. 751--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-12-2"
|
||||
class="td11"><!--l. 751--><p class="noindent" ><span
|
||||
class="cmr-12">Workspace. Its size should be at least </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">4</span><span
|
||||
class="cmtt-12"> *</span><span
|
||||
class="cmtt-12"> psb_cd_get_local_</span></span></span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">cols(desc_a)</span></span></span> <span
|
||||
class="cmr-12">(see the PSBLAS User’s Guide). Note that </span><span
|
||||
class="cmti-12">type</span>
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">*</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">psb_cd_get_local_</span>
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">cols</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">desc_a</span><span
|
||||
class="cmtt-12">)</span> <span
|
||||
class="cmr-12">(see the PSBLAS User’s Guide). Note that </span><span
|
||||
class="cmti-12">type </span><span
|
||||
class="cmr-12">and</span>
|
||||
<span
|
||||
class="cmr-12">and </span><span
|
||||
class="cmti-12">kind</span><span
|
||||
class="cmti-12">_parameter </span><span
|
||||
class="cmr-12">must be chosen according to the real/complex,</span>
|
||||
class="cmti-12">_parameter </span><span
|
||||
class="cmr-12">must be chosen according to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">,</span>
|
||||
<span
|
||||
class="cmr-12">single/double precision version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-13-"><td style="white-space:normal; text-align:left;" id="TBL-14-13-1"
|
||||
style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:normal; text-align:left;" id="TBL-13-13-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
@@ -272,7 +363,7 @@ class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
|
||||
<!--l. 739--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 760--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu13.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -289,6 +380,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu12.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 739--><p class="indent" > <a
|
||||
<!--l. 760--><p class="indent" > <a
|
||||
id="tailuserhtmlsu12.html"></a>
|
||||
</body></html>
|
||||
|
||||
+37
-24
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 739--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 760--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu14.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -33,33 +33,46 @@ class="cmr-12">5.7 </span></span> <a
|
||||
class="cmr-12">Method free</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 741--><p class="noindent" >
|
||||
<!--l. 742--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 762--><p class="noindent" >
|
||||
<!--l. 763--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%free(p,info)</span></span></span><br />
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">free</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span><br />
|
||||
</div>
|
||||
<!--l. 745--><p class="noindent" ><span
|
||||
class="cmr-12">This method deallocates the preconditioner data structure </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">p</span></span></span><span
|
||||
<!--l. 766--><p class="noindent" ><span
|
||||
class="cmr-12">This method deallocates the preconditioner data structure </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 748--><p class="noindent" ><span
|
||||
<!--l. 769--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-15" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-14" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-15-1g"><col
|
||||
id="TBL-15-1"><col
|
||||
id="TBL-15-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:normal; text-align:left;" id="TBL-15-1-1"
|
||||
class="td11"><!--l. 751--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-15-1-2"
|
||||
class="td11"><!--l. 751--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
><colgroup id="TBL-14-1g"><col
|
||||
id="TBL-14-1"><col
|
||||
id="TBL-14-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:normal; text-align:left;" id="TBL-14-1-1"
|
||||
class="td11"><!--l. 772--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-1-2"
|
||||
class="td11"><!--l. 772--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:normal; text-align:left;" id="TBL-15-2-1"
|
||||
class="td11"><!--l. 752--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2"
|
||||
class="td11"><!--l. 752--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:normal; text-align:left;" id="TBL-14-2-1"
|
||||
class="td11"><!--l. 773--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-2-2"
|
||||
class="td11"><!--l. 773--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x26-300007"><span
|
||||
@@ -68,7 +81,7 @@ class="cmr-12">for</span>
|
||||
<span
|
||||
class="cmr-12">details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:normal; text-align:left;" id="TBL-15-3-1"
|
||||
style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:normal; text-align:left;" id="TBL-14-3-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
@@ -76,7 +89,7 @@ class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
|
||||
<!--l. 758--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 779--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu14.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -93,6 +106,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu13.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 758--><p class="indent" > <a
|
||||
<!--l. 779--><p class="indent" > <a
|
||||
id="tailuserhtmlsu13.html"></a>
|
||||
</body></html>
|
||||
|
||||
+123
-47
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 758--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 779--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu15.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -33,72 +33,148 @@ class="cmr-12">5.8 </span></span> <a
|
||||
class="cmr-12">Method descr</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 760--><p class="noindent" >
|
||||
<!--l. 761--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 781--><p class="noindent" >
|
||||
<!--l. 782--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%descr(info,</span><span
|
||||
class="cmtt-12"> [iout])</span></span></span><br />
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">descr</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">[</span><span
|
||||
class="cmtt-12">iout</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">root</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">verbosity</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 764--><p class="noindent" ><span
|
||||
class="cmr-12">This method prints a description of the preconditioner </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">p</span></span></span> <span
|
||||
<!--l. 785--><p class="noindent" ><span
|
||||
class="cmr-12">This method prints a description of the preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span> <span
|
||||
class="cmr-12">to the standard output or to a</span>
|
||||
<span
|
||||
class="cmr-12">file. It must be called after </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">hierachy_build</span></span></span> <span
|
||||
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">smoothers_build</span></span></span><span
|
||||
class="cmr-12">, or </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">build</span></span></span><span
|
||||
class="cmr-12">file. It must be called after </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">hierachy_build</span> <span
|
||||
class="cmr-12">and </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">smoothers_build</span><span
|
||||
class="cmr-12">, or </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">build</span><span
|
||||
class="cmr-12">, have</span>
|
||||
<span
|
||||
class="cmr-12">been called.</span>
|
||||
<!--l. 769--><p class="noindent" ><span
|
||||
<!--l. 790--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-16" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-15" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-16-1g"><col
|
||||
id="TBL-16-1"><col
|
||||
id="TBL-16-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:normal; text-align:left;" id="TBL-16-1-1"
|
||||
class="td11"><!--l. 772--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-1-2"
|
||||
class="td11"><!--l. 772--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
><colgroup id="TBL-15-1g"><col
|
||||
id="TBL-15-1"><col
|
||||
id="TBL-15-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:normal; text-align:left;" id="TBL-15-1-1"
|
||||
class="td11"><!--l. 793--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-15-1-2"
|
||||
class="td11"><!--l. 793--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:normal; text-align:left;" id="TBL-16-2-1"
|
||||
class="td11"><!--l. 773--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-2-2"
|
||||
class="td11"><!--l. 773--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:normal; text-align:left;" id="TBL-15-2-1"
|
||||
class="td11"><!--l. 794--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2"
|
||||
class="td11"><!--l. 794--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x26-300007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
class="cmr-12">for details.</span></td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:normal; text-align:left;" id="TBL-16-3-1"
|
||||
class="td11"><!--l. 774--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">iout</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-3-2"
|
||||
class="td11"><!--l. 774--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:normal; text-align:left;" id="TBL-15-3-1"
|
||||
class="td11"><!--l. 795--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">iout</span> </td><td style="white-space:normal; text-align:left;" id="TBL-15-3-2"
|
||||
class="td11"><!--l. 795--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:normal; text-align:left;" id="TBL-16-4-1"
|
||||
class="td11"><!--l. 775--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-4-2"
|
||||
class="td11"><!--l. 775--><p class="noindent" ><span
|
||||
class="cmr-12">The id of the file where the preconditioner description will be</span>
|
||||
style="vertical-align:baseline;" id="TBL-15-4-"><td style="white-space:normal; text-align:left;" id="TBL-15-4-1"
|
||||
class="td11"><!--l. 796--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-4-2"
|
||||
class="td11"><!--l. 796--><p class="noindent" ><span
|
||||
class="cmr-12">The id of the file where the preconditioner description will be</span>
|
||||
<span
|
||||
class="cmr-12">printed; the default is the standard output.</span> </td>
|
||||
class="cmr-12">printed; the default is the standard output.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:normal; text-align:left;" id="TBL-16-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
style="vertical-align:baseline;" id="TBL-15-5-"><td style="white-space:normal; text-align:left;" id="TBL-15-5-1"
|
||||
class="td11"><!--l. 798--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">root</span> </td><td style="white-space:normal; text-align:left;" id="TBL-15-5-2"
|
||||
class="td11"><!--l. 798--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-6-"><td style="white-space:normal; text-align:left;" id="TBL-15-6-1"
|
||||
class="td11"><!--l. 799--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-6-2"
|
||||
class="td11"><!--l. 799--><p class="noindent" ><span
|
||||
class="cmr-12">The id of the process where the preconditioner description</span>
|
||||
<span
|
||||
class="cmr-12">will be printed; the default is </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">psb_root_</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-7-"><td style="white-space:normal; text-align:left;" id="TBL-15-7-1"
|
||||
class="td11"><!--l. 801--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">verbosity</span> </td><td style="white-space:normal; text-align:left;" id="TBL-15-7-2"
|
||||
class="td11"><!--l. 801--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-8-"><td style="white-space:normal; text-align:left;" id="TBL-15-8-1"
|
||||
class="td11"><!--l. 802--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-8-2"
|
||||
class="td11"><!--l. 802--><p class="noindent" ><span
|
||||
class="cmr-12">The verbosity level of the description. Default value is 0. For</span>
|
||||
<span
|
||||
class="cmr-12">values higher than 0, it prints out further information, e.g., for</span>
|
||||
<span
|
||||
class="cmr-12">a distributed multilevel preconditioner the size of the coarse</span>
|
||||
<span
|
||||
class="cmr-12">matrices on every process.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-15-9-"><td style="white-space:normal; text-align:left;" id="TBL-15-9-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
|
||||
<!--l. 780--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 809--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu15.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -115,6 +191,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu14.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 780--><p class="indent" > <a
|
||||
<!--l. 809--><p class="indent" > <a
|
||||
id="tailuserhtmlsu14.html"></a>
|
||||
</body></html>
|
||||
|
||||
+229
-132
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 780--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 809--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu14.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
@@ -28,62 +28,99 @@ class="cmr-12">] </span></p></div>
|
||||
class="cmr-12">5.9 </span></span> <a
|
||||
id="x24-230005.9"></a><span
|
||||
class="cmr-12">Auxiliary Methods</span></h4>
|
||||
<!--l. 781--><p class="noindent" ><span
|
||||
<!--l. 810--><p class="noindent" ><span
|
||||
class="cmr-12">Various functionalities are implemented as additional methods of the preconditioner</span>
|
||||
<span
|
||||
class="cmr-12">object.</span>
|
||||
<!--l. 784--><p class="noindent" >
|
||||
<!--l. 813--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.1 </span></span> <a
|
||||
id="x24-240005.9.1"></a><span
|
||||
class="cmr-12">Method: dump</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 786--><p class="noindent" >
|
||||
<!--l. 787--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 815--><p class="noindent" >
|
||||
<!--l. 816--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])</span></span></span><br />
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">dump</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12">istart</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">iend</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">prefix</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">head</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">ac</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">rp</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">smoother</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">solver</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">global_num</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 790--><p class="noindent" ><span
|
||||
<!--l. 819--><p class="noindent" ><span
|
||||
class="cmr-12">Dump on file.</span>
|
||||
<!--l. 793--><p class="noindent" ><span
|
||||
<!--l. 822--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-17" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-16" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-17-1g"><col
|
||||
id="TBL-17-1"><col
|
||||
id="TBL-17-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:normal; text-align:left;" id="TBL-17-1-1"
|
||||
class="td11"><!--l. 796--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-1-2"
|
||||
class="td11"><!--l. 796--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
><colgroup id="TBL-16-1g"><col
|
||||
id="TBL-16-1"><col
|
||||
id="TBL-16-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:normal; text-align:left;" id="TBL-16-1-1"
|
||||
class="td11"><!--l. 825--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-1-2"
|
||||
class="td11"><!--l. 825--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:normal; text-align:left;" id="TBL-17-2-1"
|
||||
class="td11"><!--l. 797--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-2-2"
|
||||
class="td11"><!--l. 797--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:normal; text-align:left;" id="TBL-16-2-1"
|
||||
class="td11"><!--l. 826--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-2-2"
|
||||
class="td11"><!--l. 826--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x26-300007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:normal; text-align:left;" id="TBL-17-3-1"
|
||||
class="td11"><!--l. 798--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">amold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-3-2"
|
||||
class="td11"><!--l. 798--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">class(psb_</span></span></span><span
|
||||
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">_base_sparse_mat),</span><span
|
||||
class="cmtt-12"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:normal; text-align:left;" id="TBL-16-3-1"
|
||||
class="td11"><!--l. 827--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-3-2"
|
||||
class="td11"><!--l. 827--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_sparse_mat</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:normal; text-align:left;" id="TBL-17-4-1"
|
||||
class="td11"><!--l. 799--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-4-2"
|
||||
class="td11"><!--l. 799--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:normal; text-align:left;" id="TBL-16-4-1"
|
||||
class="td11"><!--l. 828--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-4-2"
|
||||
class="td11"><!--l. 828--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
|
||||
@@ -91,93 +128,121 @@ class="cmr-12">allows e.g. running on GPUs; it needs not be the same
|
||||
class="cmr-12">processes. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:normal; text-align:left;" id="TBL-17-5-1"
|
||||
style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:normal; text-align:left;" id="TBL-16-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 806--><p class="noindent" >
|
||||
<!--l. 835--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.2 </span></span> <a
|
||||
id="x24-250005.9.2"></a><span
|
||||
class="cmr-12">Method: clone</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 808--><p class="noindent" >
|
||||
<!--l. 809--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 837--><p class="noindent" >
|
||||
<!--l. 838--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%clone(pout,info)</span></span></span><br />
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">clone</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">pout</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span><br />
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!--l. 812--><p class="noindent" ><span
|
||||
<!--l. 841--><p class="noindent" ><span
|
||||
class="cmr-12">Create a (deep) copy of the preconditioner object.</span>
|
||||
<!--l. 815--><p class="noindent" ><span
|
||||
<!--l. 844--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-18" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-17" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-18-1g"><col
|
||||
id="TBL-18-1"><col
|
||||
id="TBL-18-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:normal; text-align:left;" id="TBL-18-1-1"
|
||||
class="td11"><!--l. 818--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">pout</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-1-2"
|
||||
class="td11"><!--l. 818--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">type(amg_</span></span></span><span
|
||||
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">prec_type),</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
><colgroup id="TBL-17-1g"><col
|
||||
id="TBL-17-1"><col
|
||||
id="TBL-17-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:normal; text-align:left;" id="TBL-17-1-1"
|
||||
class="td11"><!--l. 847--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">pout</span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-1-2"
|
||||
class="td11"><!--l. 847--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">amg_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">prec_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:normal; text-align:left;" id="TBL-18-2-1"
|
||||
class="td11"><!--l. 819--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-2-2"
|
||||
class="td11"><!--l. 819--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:normal; text-align:left;" id="TBL-17-2-1"
|
||||
class="td11"><!--l. 848--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-2-2"
|
||||
class="td11"><!--l. 848--><p class="noindent" ><span
|
||||
class="cmr-12">The copy of the preconditioner data structure. Note that </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">must</span>
|
||||
<span
|
||||
class="cmr-12">be chosen according to the real/complex, single/double precision</span>
|
||||
class="cmr-12">be chosen according to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">, single/double precision</span>
|
||||
<span
|
||||
class="cmr-12">version of AMG4PSBLAS under use.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:normal; text-align:left;" id="TBL-18-3-1"
|
||||
class="td11"><!--l. 822--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-3-2"
|
||||
class="td11"><!--l. 822--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:normal; text-align:left;" id="TBL-17-3-1"
|
||||
class="td11"><!--l. 851--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-3-2"
|
||||
class="td11"><!--l. 851--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:normal; text-align:left;" id="TBL-18-4-1"
|
||||
class="td11"><!--l. 823--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-4-2"
|
||||
class="td11"><!--l. 823--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:normal; text-align:left;" id="TBL-17-4-1"
|
||||
class="td11"><!--l. 852--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-4-2"
|
||||
class="td11"><!--l. 852--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x26-300007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:normal; text-align:left;" id="TBL-18-5-1"
|
||||
style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:normal; text-align:left;" id="TBL-17-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 828--><p class="noindent" >
|
||||
<!--l. 857--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.3 </span></span> <a
|
||||
id="x24-260005.9.3"></a><span
|
||||
class="cmr-12">Method: sizeof</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 830--><p class="noindent" >
|
||||
<!--l. 831--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 859--><p class="noindent" >
|
||||
<!--l. 860--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">sz</span><span
|
||||
class="cmtt-12"> =</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12"> p%sizeof()</span></span></span><br />
|
||||
class="cmtt-12">=</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">sizeof</span><span
|
||||
class="cmtt-12">()</span><br />
|
||||
</div>
|
||||
<!--l. 834--><p class="noindent" ><span
|
||||
<!--l. 863--><p class="noindent" ><span
|
||||
class="cmr-12">Return memory footprint in bytes.</span>
|
||||
<!--l. 837--><p class="noindent" >
|
||||
<!--l. 866--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.4 </span></span> <a
|
||||
id="x24-270005.9.4"></a><span
|
||||
@@ -185,13 +250,21 @@ class="cmr-12">Method: allocate</span><span
|
||||
class="cmr-12">_wrk</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 839--><p class="noindent" >
|
||||
<!--l. 840--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 868--><p class="noindent" >
|
||||
<!--l. 869--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%allocate_wrk(info[,</span><span
|
||||
class="cmtt-12"> vmold])</span></span></span><br />
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">allocate_wrk</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">[,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">vmold</span><span
|
||||
class="cmtt-12">])</span><br />
|
||||
</div>
|
||||
<!--l. 843--><p class="noindent" ><span
|
||||
<!--l. 872--><p class="noindent" ><span
|
||||
class="cmr-12">Allocate internal work vectors. Each application of the preconditioner uses a number of</span>
|
||||
<span
|
||||
class="cmr-12">work vectors which are allocated internally as necessary; therefore allocation and</span>
|
||||
@@ -206,8 +279,8 @@ class="cmr-12">lead to a slowdown. This method allows to trade space for time by
|
||||
<span
|
||||
class="cmr-12">the internal workspace outside of the invocation of a Krylov method. When</span>
|
||||
<span
|
||||
class="cmr-12">using GPUs or other specialized devices, the </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">vmold</span></span></span> <span
|
||||
class="cmr-12">using GPUs or other specialized devices, the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> <span
|
||||
class="cmr-12">argument is also necessary</span>
|
||||
<span
|
||||
class="cmr-12">to ensure the internal work vectors are of the appropriate dynamic type to</span>
|
||||
@@ -217,57 +290,70 @@ class="cmr-12">to ensure the internal work vectors are of the appropriate dynami
|
||||
<span
|
||||
class="cmr-12">exploit the accelerator hardware; when allocation occurs internally this is</span>
|
||||
<span
|
||||
class="cmr-12">taken care of based on the dynamic type of the </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">x</span></span></span> <span
|
||||
class="cmr-12">argument to the </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">apply</span></span></span>
|
||||
class="cmr-12">taken care of based on the dynamic type of the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">x</span> <span
|
||||
class="cmr-12">argument to the </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">apply</span>
|
||||
<span
|
||||
class="cmr-12">method.</span>
|
||||
<!--l. 859--><p class="noindent" ><span
|
||||
<!--l. 888--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-19" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-18" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-19-1g"><col
|
||||
id="TBL-19-1"><col
|
||||
id="TBL-19-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:normal; text-align:left;" id="TBL-19-1-1"
|
||||
class="td11"><!--l. 862--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-19-1-2"
|
||||
class="td11"><!--l. 862--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
><colgroup id="TBL-18-1g"><col
|
||||
id="TBL-18-1"><col
|
||||
id="TBL-18-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:normal; text-align:left;" id="TBL-18-1-1"
|
||||
class="td11"><!--l. 891--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-1-2"
|
||||
class="td11"><!--l. 891--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:normal; text-align:left;" id="TBL-19-2-1"
|
||||
class="td11"><!--l. 863--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-2-2"
|
||||
class="td11"><!--l. 863--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:normal; text-align:left;" id="TBL-18-2-1"
|
||||
class="td11"><!--l. 892--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-2-2"
|
||||
class="td11"><!--l. 892--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x26-300007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:normal; text-align:left;" id="TBL-19-3-1"
|
||||
class="td11"><!--l. 864--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">vmold</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-19-3-2"
|
||||
class="td11"><!--l. 864--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">class(psb_</span></span></span><span
|
||||
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">_base_vect_type),</span><span
|
||||
class="cmtt-12"> intent(in),</span><span
|
||||
class="cmtt-12"> optional</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:normal; text-align:left;" id="TBL-18-3-1"
|
||||
class="td11"><!--l. 893--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-3-2"
|
||||
class="td11"><!--l. 893--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">class</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">_base_vect_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">optional</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-19-4-"><td style="white-space:normal; text-align:left;" id="TBL-19-4-1"
|
||||
class="td11"><!--l. 865--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-4-2"
|
||||
class="td11"><!--l. 865--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:normal; text-align:left;" id="TBL-18-4-1"
|
||||
class="td11"><!--l. 894--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-4-2"
|
||||
class="td11"><!--l. 894--><p class="noindent" ><span
|
||||
class="cmr-12">The desired dynamic type for internal vector components; this</span>
|
||||
<span
|
||||
class="cmr-12">allows e.g. running on GPUs.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-19-5-"><td style="white-space:normal; text-align:left;" id="TBL-19-5-1"
|
||||
style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:normal; text-align:left;" id="TBL-18-5-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
<!--l. 871--><p class="noindent" >
|
||||
<!--l. 900--><p class="noindent" >
|
||||
<h5 class="subsubsectionHead"><span class="titlemark"><span
|
||||
class="cmr-12">5.9.5 </span></span> <a
|
||||
id="x24-280005.9.5"></a><span
|
||||
@@ -275,38 +361,49 @@ class="cmr-12">Method: free</span><span
|
||||
class="cmr-12">_wrk</span></h5>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 873--><p class="noindent" >
|
||||
<!--l. 874--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 902--><p class="noindent" >
|
||||
<!--l. 903--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%free_wrk(info)</span></span></span><br />
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">free_wrk</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span><br />
|
||||
</div>
|
||||
<!--l. 877--><p class="noindent" ><span
|
||||
<!--l. 906--><p class="noindent" ><span
|
||||
class="cmr-12">Deallocate internal work vectors.</span>
|
||||
<!--l. 880--><p class="noindent" ><span
|
||||
<!--l. 909--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-20" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-19" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-20-1g"><col
|
||||
id="TBL-20-1"><col
|
||||
id="TBL-20-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:normal; text-align:left;" id="TBL-20-1-1"
|
||||
class="td11"><!--l. 883--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-1-2"
|
||||
class="td11"><!--l. 883--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
><colgroup id="TBL-19-1g"><col
|
||||
id="TBL-19-1"><col
|
||||
id="TBL-19-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:normal; text-align:left;" id="TBL-19-1-1"
|
||||
class="td11"><!--l. 912--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-19-1-2"
|
||||
class="td11"><!--l. 912--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:normal; text-align:left;" id="TBL-20-2-1"
|
||||
class="td11"><!--l. 884--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-2-2"
|
||||
class="td11"><!--l. 884--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:normal; text-align:left;" id="TBL-19-2-1"
|
||||
class="td11"><!--l. 913--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-2-2"
|
||||
class="td11"><!--l. 913--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x26-300007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:normal; text-align:left;" id="TBL-20-3-1"
|
||||
style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:normal; text-align:left;" id="TBL-19-3-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 62--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 72--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu3.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -31,20 +31,20 @@ class="cmr-12">] </span></p></div>
|
||||
class="cmr-12">3.2 </span></span> <a
|
||||
id="x9-80003.2"></a><span
|
||||
class="cmr-12">Optional third party libraries</span></h4>
|
||||
<!--l. 64--><p class="noindent" ><span
|
||||
<!--l. 74--><p class="noindent" ><span
|
||||
class="cmr-12">We provide interfaces to the following third-party software libraries; note that these are</span>
|
||||
<span
|
||||
class="cmr-12">optional, but if you enable them some defaults for multilevel preconditioners may</span>
|
||||
<span
|
||||
class="cmr-12">change to reflect their presence.</span>
|
||||
<!--l. 68--><p class="indent" >
|
||||
<!--l. 78--><p class="indent" >
|
||||
<dl class="description"><dt class="description">
|
||||
<span
|
||||
class="cmbx-12">UMFPACK</span> </dt><dd
|
||||
class="description"><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XUMFPACK"><span
|
||||
class="cmr-12">12</span></a><span
|
||||
class="cmr-12">13</span></a><span
|
||||
class="cmr-12">]</span></span> <span
|
||||
class="cmr-12">A sparse LU factorization package included in the SuiteSparse</span>
|
||||
<span
|
||||
@@ -86,7 +86,7 @@ class="cmbx-12">SuperLU</span> </dt><dd
|
||||
class="description"><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XSUPERLU"><span
|
||||
class="cmr-12">13</span></a><span
|
||||
class="cmr-12">14</span></a><span
|
||||
class="cmr-12">]</span></span> <span
|
||||
class="cmr-12">A sparse LU factorization package available from</span>
|
||||
<a
|
||||
@@ -108,7 +108,7 @@ class="cmbx-12">_Dist</span> </dt><dd
|
||||
class="description"><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XSUPERLUDIST"><span
|
||||
class="cmr-12">22</span></a><span
|
||||
class="cmr-12">23</span></a><span
|
||||
class="cmr-12">]</span></span> <span
|
||||
class="cmr-12">A sparse LU factorization package available from the same</span>
|
||||
<span
|
||||
@@ -133,7 +133,7 @@ class="cmr-12">.</span></dd></dl>
|
||||
|
||||
|
||||
|
||||
<!--l. 99--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 109--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu3.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -150,6 +150,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse3.html#userhtmlsu2.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 99--><p class="indent" > <a
|
||||
<!--l. 109--><p class="indent" > <a
|
||||
id="tailuserhtmlsu2.html"></a>
|
||||
</body></html>
|
||||
|
||||
+14
-14
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 99--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 109--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu4.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -31,15 +31,15 @@ class="cmr-12">] </span></p></div>
|
||||
class="cmr-12">3.3 </span></span> <a
|
||||
id="x10-90003.3"></a><span
|
||||
class="cmr-12">Configuration options</span></h4>
|
||||
<!--l. 101--><p class="noindent" ><span
|
||||
<!--l. 111--><p class="noindent" ><span
|
||||
class="cmr-12">In order to build AMG4PSBLAS, the first step is to use the </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">configure</span></span></span> <span
|
||||
class="cmr-12">script in the</span>
|
||||
<span
|
||||
class="cmr-12">main directory to generate the necessary makefile.</span>
|
||||
<!--l. 106--><p class="indent" > <span
|
||||
<!--l. 116--><p class="indent" > <span
|
||||
class="cmbx-12">DA RISCRIVERE</span>
|
||||
<!--l. 108--><p class="indent" > <span
|
||||
<!--l. 118--><p class="indent" > <span
|
||||
class="cmr-12">As a minimal example consider the following:</span>
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ class="cmr-12">As a minimal example consider the following:</span>
|
||||
<pre class="verbatim" id="verbatim-1">
|
||||
./configure --with-psblas=PSB-INSTALL-DIR
|
||||
</pre>
|
||||
<!--l. 111--><p class="nopar" > <span
|
||||
<!--l. 126--><p class="nopar" > <span
|
||||
class="cmr-12">which assumes that the various MPI compilers and support libraries are available in</span>
|
||||
<span
|
||||
class="cmr-12">the standard directories on the system, and specifies only the PSBLAS install directory</span>
|
||||
@@ -61,7 +61,7 @@ class="cmtt-12">./configure</span><span
|
||||
class="cmtt-12"> --help</span></span></span><span
|
||||
class="cmr-12">, which</span>
|
||||
<span
|
||||
class="cmr-12">produces: </span><!--l. 121--><div class="lstinputlisting">
|
||||
class="cmr-12">produces: </span><!--l. 137--><div class="lstinputlisting">
|
||||
<a
|
||||
id="x10-9001"></a>
|
||||
<span
|
||||
@@ -4238,7 +4238,7 @@ class="cmtt-12">issues</span><span
|
||||
class="cmtt-12">>.</span>
|
||||
|
||||
</div>
|
||||
<!--l. 123--><p class="noindent" ><span
|
||||
<!--l. 139--><p class="noindent" ><span
|
||||
class="cmr-12">For instance, if a user has built and installed PSBLAS 3.7 under the </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">/opt</span></span></span> <span
|
||||
class="cmr-12">directory and is</span>
|
||||
@@ -4253,7 +4253,7 @@ class="cmr-12">might be configured with:</span>
|
||||
./configure --with-psblas=/opt/psblas-3.5/ \
|
||||
--with-umfpackincdir=/usr/include/suitesparse/
|
||||
</pre>
|
||||
<!--l. 135--><p class="nopar" > <span
|
||||
<!--l. 151--><p class="nopar" > <span
|
||||
class="cmr-12">Once the configure script has completed execution, it will have generated the file</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">Make.inc</span></span></span> <span
|
||||
@@ -4262,7 +4262,7 @@ class="cmr-12">which will then be used by all Makefiles in the directory tree; t
|
||||
class="cmr-12">copied in the install directory under the name </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">Make.inc.AMG4PSBLAS</span></span></span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 142--><p class="indent" > <span
|
||||
<!--l. 158--><p class="indent" > <span
|
||||
class="cmr-12">To use the MUMPS solver package, the user has to add the appropriate options to</span>
|
||||
<span
|
||||
class="cmr-12">the configure script; by default we are looking for the libraries </span><span class="obeylines-h"><span class="verb"><span
|
||||
@@ -4282,7 +4282,7 @@ class="cmtt-12">--with-extra-libs</span></span></span> <span
|
||||
class="cmr-12">configure</span>
|
||||
<span
|
||||
class="cmr-12">option.</span>
|
||||
<!--l. 150--><p class="indent" > <span
|
||||
<!--l. 166--><p class="indent" > <span
|
||||
class="cmr-12">To build the library the user will now enter</span>
|
||||
|
||||
|
||||
@@ -4290,7 +4290,7 @@ class="cmr-12">To build the library the user will now enter</span>
|
||||
<pre class="verbatim" id="verbatim-3">
|
||||
make
|
||||
</pre>
|
||||
<!--l. 158--><p class="nopar" > <span
|
||||
<!--l. 174--><p class="nopar" > <span
|
||||
class="cmr-12">followed (optionally) by</span>
|
||||
|
||||
|
||||
@@ -4298,11 +4298,11 @@ class="cmr-12">followed (optionally) by</span>
|
||||
<pre class="verbatim" id="verbatim-4">
|
||||
make install
|
||||
</pre>
|
||||
<!--l. 168--><p class="nopar" >
|
||||
<!--l. 184--><p class="nopar" >
|
||||
|
||||
|
||||
|
||||
<!--l. 170--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 186--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu4.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -4319,6 +4319,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse3.html#userhtmlsu3.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 170--><p class="indent" > <a
|
||||
<!--l. 186--><p class="indent" > <a
|
||||
id="tailuserhtmlsu3.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 170--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 186--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu5.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -31,7 +31,7 @@ class="cmr-12">] </span></p></div>
|
||||
class="cmr-12">3.4 </span></span> <a
|
||||
id="x11-100003.4"></a><span
|
||||
class="cmr-12">Bug reporting</span></h4>
|
||||
<!--l. 171--><p class="noindent" ><span
|
||||
<!--l. 187--><p class="noindent" ><span
|
||||
class="cmr-12">If you find any bugs in our codes, please report them through our issues page</span>
|
||||
<span
|
||||
class="cmr-12">on</span><br
|
||||
@@ -39,7 +39,7 @@ class="newline" /> <a
|
||||
href="https://github.com/psctoolkit/amg4psblas/issues" class="url" ><span
|
||||
class="cmtt-12">https://github.com/psctoolkit/amg4psblas/issues</span></a><br
|
||||
class="newline" />
|
||||
<!--l. 175--><p class="indent" > <span
|
||||
<!--l. 191--><p class="indent" > <span
|
||||
class="cmr-12">To enable us to track the bug, please provide a log from the failing application, the</span>
|
||||
<span
|
||||
class="cmr-12">test conditions, and ideally a self-contained test program reproducing the</span>
|
||||
@@ -48,7 +48,7 @@ class="cmr-12">issue.</span>
|
||||
|
||||
|
||||
|
||||
<!--l. 179--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 195--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu5.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -65,6 +65,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse3.html#userhtmlsu4.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 179--><p class="indent" > <a
|
||||
<!--l. 195--><p class="indent" > <a
|
||||
id="tailuserhtmlsu4.html"></a>
|
||||
</body></html>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 179--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 195--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu4.html" ><span
|
||||
class="cmr-12">prev</span></a><span
|
||||
@@ -28,7 +28,7 @@ class="cmr-12">] </span></p></div>
|
||||
class="cmr-12">3.5 </span></span> <a
|
||||
id="x12-110003.5"></a><span
|
||||
class="cmr-12">Example and test programs</span></h4>
|
||||
<!--l. 180--><p class="noindent" ><span
|
||||
<!--l. 196--><p class="noindent" ><span
|
||||
class="cmr-12">The package contains the </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">examples</span></span></span> <span
|
||||
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
|
||||
@@ -48,11 +48,9 @@ class="cmtt-12">examples</span> </dt><dd
|
||||
class="description"><span
|
||||
class="cmr-12">contains a set of simple example programs with a predefined choice</span>
|
||||
<span
|
||||
class="cmr-12">of preconditioners, selectable via integer values. These are intended to</span>
|
||||
class="cmr-12">of preconditioners, selectable via integer values. These are intended to get</span>
|
||||
<span
|
||||
class="cmr-12">get an acquaintance with the multilevel preconditioners available in</span>
|
||||
<span
|
||||
class="cmr-12">AMG4PSBLAS.</span>
|
||||
class="cmr-12">acquainted with the multilevel preconditioners available in AMG4PSBLAS.</span>
|
||||
</dd><dt class="description">
|
||||
<span
|
||||
class="cmtt-12">tests</span> </dt><dd
|
||||
@@ -64,7 +62,7 @@ class="cmtt-12">runs</span></span></span> <span
|
||||
class="cmr-12">subdirectories, to experiment with the full range</span>
|
||||
<span
|
||||
class="cmr-12">of preconditioners implemented in the package.</span></dd></dl>
|
||||
<!--l. 193--><p class="noindent" ><span
|
||||
<!--l. 209--><p class="noindent" ><span
|
||||
class="cmr-12">The </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">fileread</span></span></span> <span
|
||||
class="cmr-12">directories contain sample programs that read sparse matrices from files,</span>
|
||||
|
||||
+76
-74
@@ -25,7 +25,7 @@ class="cmr-12">Examples</span></h4>
|
||||
<!--l. 109--><p class="noindent" ><span
|
||||
class="cmr-12">The code reported in Figure</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="#x14-130011"><span
|
||||
href="#x14-13001r1"><span
|
||||
class="cmr-12">1</span><!--tex4ht:ref: fig:ex1 --></a> <span
|
||||
class="cmr-12">shows how to set and apply the default multilevel</span>
|
||||
<span
|
||||
@@ -33,27 +33,33 @@ class="cmr-12">preconditioner available in the real double precision version of
|
||||
<span
|
||||
class="cmr-12">(see Table</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse4.html#x13-120151"><span
|
||||
href="userhtmlse4.html#x13-12015r1"><span
|
||||
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
|
||||
class="cmr-12">). This preconditioner is chosen by simply specifying </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">’ML’</span></span></span> <span
|
||||
class="cmr-12">). This preconditioner is chosen by simply specifying </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">’</span><span
|
||||
class="cmtt-12">ML</span><span
|
||||
class="cmtt-12">’</span> <span
|
||||
class="cmr-12">as the</span>
|
||||
<span
|
||||
class="cmr-12">second argument of </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">P%init</span></span></span> <span
|
||||
class="cmr-12">(a call to </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">P%set</span></span></span> <span
|
||||
class="cmr-12">second argument of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">P</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">init</span> <span
|
||||
class="cmr-12">(a call to </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">P</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">set</span> <span
|
||||
class="cmr-12">is not needed) and is applied</span>
|
||||
<span
|
||||
class="cmr-12">with the CG solver provided by PSBLAS (the matrix of the system to be</span>
|
||||
<span
|
||||
class="cmr-12">solved is assumed to be positive definite). As previously observed, the modules</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">psb_base_mod</span></span></span><span
|
||||
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">amg_prec_mod</span></span></span> <span
|
||||
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">psb_krylov_mod</span></span></span> <span
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">psb_base_mod</span><span
|
||||
class="cmr-12">, </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">amg_prec_mod</span> <span
|
||||
class="cmr-12">and </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">psb_krylov_mod</span> <span
|
||||
class="cmr-12">must be used by the example</span>
|
||||
<span
|
||||
class="cmr-12">program.</span>
|
||||
@@ -87,7 +93,7 @@ class="cmr-12">PSBLAS User’s Guide</span><span
|
||||
class="cmr-12"> </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 131--><p class="indent" > <span
|
||||
@@ -108,13 +114,12 @@ class="cmr-12">details). If these versions are installed, the corresponding code
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">examples/fileread/</span></span></span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 137--><p class="indent" > <hr class="figure"><div class="figure"
|
||||
>
|
||||
|
||||
|
||||
|
||||
<a
|
||||
id="x14-130011"></a>
|
||||
<!--l. 137--><p class="indent" > <a
|
||||
id="x14-13001r1"></a><hr class="float"><div class="float"
|
||||
>
|
||||
|
||||
|
||||
|
||||
@@ -141,8 +146,8 @@ class="cmr-12">.</span>
|
||||
... ...
|
||||
!
|
||||
! initialize the parallel environment
|
||||
  call psb_init(ictxt)
|
||||
  call psb_info(ictxt,iam,np)
|
||||
  call psb_init(ctxt)
|
||||
  call psb_info(ctxt,iam,np)
|
||||
... ...
|
||||
!
|
||||
! read and assemble the spd matrix A and the right-hand side b
|
||||
@@ -173,27 +178,28 @@ class="cmr-12">.</span>
|
||||
  ... ...
|
||||
!
|
||||
! exit the parallel environment
|
||||
  call psb_exit(ictxt)
|
||||
  call psb_exit(ctxt)
|
||||
  stop
|
||||
</pre>
|
||||
<!--l. 193--><p class="nopar" >
|
||||
<!--l. 248--><p class="nopar" >
|
||||
|
||||
|
||||
</div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Figure 1: </span><span
|
||||
class="content">setup and application of the default multilevel preconditioner (example 1). </span></div><!--tex4ht:label?: x14-130011 -->
|
||||
><span class="id">Listing 1: </span><span
|
||||
class="content">setup and application of the default multilevel preconditioner (example 1).
|
||||
</span></div><!--tex4ht:label?: x14-13001r1 -->
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!--l. 199--><p class="indent" > </div><hr class="endfigure">
|
||||
<!--l. 201--><p class="indent" > <span
|
||||
</div><hr class="endfloat" />
|
||||
<!--l. 257--><p class="indent" > <span
|
||||
class="cmr-12">Different versions of the multilevel preconditioner can be obtained by changing the</span>
|
||||
<span
|
||||
class="cmr-12">default values of the preconditioner parameters. The code reported in Figure</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="#x14-130022"><span
|
||||
href="#x14-13002r2"><span
|
||||
class="cmr-12">2</span><!--tex4ht:ref: fig:ex2 --></a> <span
|
||||
class="cmr-12">shows</span>
|
||||
<span
|
||||
@@ -206,15 +212,17 @@ class="cmr-12">that the ILU(0) factorization (plus triangular solve) is used as
|
||||
class="cmr-12">block-Jacobi sweeps, since this is the default associated with block-Jacobi</span>
|
||||
<span
|
||||
class="cmr-12">and set by</span><span
|
||||
class="cmr-12"> </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">P%init</span></span></span><span
|
||||
class="cmr-12"> </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">P</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">init</span><span
|
||||
class="cmr-12">. Furthermore, specifying block-Jacobi as coarsest-level</span>
|
||||
<span
|
||||
class="cmr-12">solver implies that the coarsest-level matrix is distributed among the processes.</span>
|
||||
<span
|
||||
class="cmr-12">Figure</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="#x14-130033"><span
|
||||
href="#x14-13003r3"><span
|
||||
class="cmr-12">3</span><!--tex4ht:ref: fig:ex3 --></a> <span
|
||||
class="cmr-12">shows how to set a W-cycle preconditioner using the Coarsening</span>
|
||||
<span
|
||||
@@ -230,10 +238,10 @@ class="cmr-12">distributed matrices, and by default it is used on replicated one
|
||||
<span
|
||||
class="cmr-12">fragments shown in Figures</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="#x14-130022"><span
|
||||
href="#x14-13002r2"><span
|
||||
class="cmr-12">2</span><!--tex4ht:ref: fig:ex2 --></a> <span
|
||||
class="cmr-12">and </span><a
|
||||
href="#x14-130033"><span
|
||||
href="#x14-13003r3"><span
|
||||
class="cmr-12">3</span><!--tex4ht:ref: fig:ex3 --></a> <span
|
||||
class="cmr-12">are included in the example program file</span>
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
@@ -242,10 +250,10 @@ class="cmr-12">too. </span><span
|
||||
class="cmbx-12">DA CORREGGERE NEL CODICE ESEMPIO</span>
|
||||
<span
|
||||
class="cmbx-12">3</span>
|
||||
<!--l. 225--><p class="indent" > <span
|
||||
<!--l. 281--><p class="indent" > <span
|
||||
class="cmr-12">Finally, Figure</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="#x14-130044"><span
|
||||
href="#x14-13004r4"><span
|
||||
class="cmr-12">4</span><!--tex4ht:ref: fig:ex4 --></a> <span
|
||||
class="cmr-12">shows the setup of a one-level additive Schwarz preconditioner,</span>
|
||||
<span
|
||||
@@ -257,62 +265,59 @@ class="cmr-12">nonsymmetric. The corresponding example program is available in t
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">amg_dexample_1lev.f90</span></span></span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 232--><p class="indent" > <span
|
||||
class="cmr-12">For all the previous preconditioners, example programs where the sparse matrix and</span>
|
||||
<!--l. 288--><p class="indent" > <span
|
||||
class="cmr-12">For all the previous preconditioners, example programs where the sparse matrix</span>
|
||||
<span
|
||||
class="cmr-12">the right-hand side are generated by discretizing a PDE with Dirichlet boundary</span>
|
||||
class="cmr-12">and the right-hand side are generated by discretizing a PDE with Dirichlet</span>
|
||||
<span
|
||||
class="cmr-12">conditions are also available in the directory </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmr-12">boundary conditions are also available in the directory </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">examples/pdegen</span></span></span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 236--><p class="indent" > <hr class="figure"><div class="figure"
|
||||
>
|
||||
|
||||
|
||||
|
||||
<a
|
||||
id="x14-130022"></a>
|
||||
<!--l. 291--><p class="indent" > <a
|
||||
id="x14-13002r2"></a><hr class="float"><div class="float"
|
||||
>
|
||||
|
||||
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 237--><p class="noindent" >
|
||||
<!--l. 305--><p class="noindent" >
|
||||
<div class="minipage"><pre class="verbatim" id="verbatim-6">
|
||||
... ...
|
||||
! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
|
||||
! ILU(0) on the blocks) as pre- and post-smoother, and 8  block-Jacobi
|
||||
! sweeps (with ILU(0) on the blocks) as coarsest-level solver
|
||||
  call P%init(’ML’,info)
|
||||
  call_P%set(’SMOOTHER_TYPE’,’BJAC’,info)
|
||||
  call P%set(’SMOOTHER_TYPE’,’BJAC’,info)
|
||||
  call P%set(’COARSE_SOLVE’,’BJAC’,info)
|
||||
  call P%set(’COARSE_SWEEPS’,8,info)
|
||||
  call P%hierarchy_build(A,desc_A,info)
|
||||
  call P%smoothers_build(A,desc_A,info)
|
||||
... ...
|
||||
</pre>
|
||||
<!--l. 252--><p class="nopar" ></div>
|
||||
<!--l. 320--><p class="nopar" ></div></div>
|
||||
<br /><div class="caption"
|
||||
><span class="id">Figure 2: </span><span
|
||||
class="content">setup of a multilevel preconditioner based on the default decoupled coarsening</span></div><!--tex4ht:label?: x14-130022 -->
|
||||
</div>
|
||||
><span class="id">Listing 2: </span><span
|
||||
class="content">setup of a multilevel preconditioner based on the default decoupled coarsening</span></div><!--tex4ht:label?: x14-13002r2 -->
|
||||
|
||||
|
||||
|
||||
<!--l. 258--><p class="indent" > </div><hr class="endfigure">
|
||||
<!--l. 260--><p class="indent" > <hr class="figure"><div class="figure"
|
||||
</div><hr class="endfloat" />
|
||||
|
||||
|
||||
|
||||
<!--l. 327--><p class="indent" > <a
|
||||
id="x14-13003r3"></a><hr class="float"><div class="float"
|
||||
>
|
||||
|
||||
|
||||
|
||||
<a
|
||||
id="x14-130033"></a>
|
||||
|
||||
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 261--><p class="noindent" >
|
||||
<!--l. 344--><p class="noindent" >
|
||||
<div class="minipage"><pre class="verbatim" id="verbatim-7">
|
||||
... ...
|
||||
! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps
|
||||
@@ -329,29 +334,27 @@ class="content">setup of a multilevel preconditioner based on the default decoup
|
||||
  call P%smoothers_build(A,desc_A,info)
|
||||
... ...
|
||||
</pre>
|
||||
<!--l. 279--><p class="nopar" ></div>
|
||||
<!--l. 362--><p class="nopar" ></div></div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Figure 3: </span><span
|
||||
><span class="id">Listing 3: </span><span
|
||||
class="content">setup of a multilevel preconditioner based on the coupled coarsening based
|
||||
on weighted matching</span></div><!--tex4ht:label?: x14-130033 -->
|
||||
</div>
|
||||
on weighted matching</span></div><!--tex4ht:label?: x14-13003r3 -->
|
||||
|
||||
|
||||
|
||||
<!--l. 284--><p class="indent" > </div><hr class="endfigure">
|
||||
<!--l. 286--><p class="indent" > <hr class="figure"><div class="figure"
|
||||
</div><hr class="endfloat" />
|
||||
|
||||
|
||||
|
||||
<!--l. 369--><p class="indent" > <a
|
||||
id="x14-13004r4"></a><hr class="float"><div class="float"
|
||||
>
|
||||
|
||||
|
||||
|
||||
<a
|
||||
id="x14-130044"></a>
|
||||
|
||||
|
||||
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 287--><p class="noindent" >
|
||||
<!--l. 386--><p class="noindent" >
|
||||
<div class="minipage"><pre class="verbatim" id="verbatim-8">
|
||||
... ...
|
||||
! set RAS with overlap 2 and ILU(0) on the local blocks
|
||||
@@ -362,15 +365,14 @@ on weighted matching</span></div><!--tex4ht:label?: x14-130033 -->
|
||||
! solve Ax=b with preconditioned BiCGSTAB
|
||||
  call psb_krylov(’BICGSTAB’,A,P,b,x,tol,desc_A,info)
|
||||
</pre>
|
||||
<!--l. 299--><p class="nopar" ></div>
|
||||
<!--l. 398--><p class="nopar" ></div></div>
|
||||
<br /> <div class="caption"
|
||||
><span class="id">Figure 4: </span><span
|
||||
class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex4ht:label?: x14-130044 -->
|
||||
</div>
|
||||
><span class="id">Listing 4: </span><span
|
||||
class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex4ht:label?: x14-13004r4 -->
|
||||
|
||||
|
||||
|
||||
<!--l. 304--><p class="indent" > </div><hr class="endfigure">
|
||||
</div><hr class="endfloat" />
|
||||
|
||||
|
||||
|
||||
|
||||
+50
-21
@@ -28,12 +28,22 @@ class="cmr-12">Method init</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 45--><p class="noindent" >
|
||||
<!--l. 46--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 46--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%init(icontx,ptype,info)</span></span></span></div>
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">init</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">contxt</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">ptype</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span></div>
|
||||
<!--l. 49--><p class="noindent" ><span
|
||||
class="cmr-12">This method allocates and initializes the preconditioner </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">p</span></span></span><span
|
||||
class="cmr-12">This method allocates and initializes the preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmr-12">, according to the</span>
|
||||
<span
|
||||
class="cmr-12">preconditioner type chosen by the user.</span>
|
||||
@@ -45,23 +55,37 @@ cellspacing="0" cellpadding="0"
|
||||
id="TBL-2-1"><col
|
||||
id="TBL-2-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:normal; text-align:left;" id="TBL-2-1-1"
|
||||
class="td11"><!--l. 57--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">icontxt</span></span></span> </td> <td style="white-space:normal; text-align:left;" id="TBL-2-1-2"
|
||||
class="td11"><!--l. 57--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(in)</span></span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
class="td11"><!--l. 57--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">contxt</span> </td> <td style="white-space:normal; text-align:left;" id="TBL-2-1-2"
|
||||
class="td11"><!--l. 57--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_ctxt_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:normal; text-align:left;" id="TBL-2-2-1"
|
||||
class="td11"><!--l. 58--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-2-2"
|
||||
class="td11"><!--l. 58--><p class="noindent" ><span
|
||||
class="cmr-12">The communication context.</span> </td></tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:normal; text-align:left;" id="TBL-2-3-1"
|
||||
class="td11"><!--l. 59--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">ptype</span></span></span> </td> <td style="white-space:normal; text-align:left;" id="TBL-2-3-2"
|
||||
class="td11"><!--l. 59--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">character(len=*),</span><span
|
||||
class="cmtt-12"> intent(in)</span></span></span><span
|
||||
class="td11"><!--l. 59--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">ptype</span> </td> <td style="white-space:normal; text-align:left;" id="TBL-2-3-2"
|
||||
class="td11"><!--l. 59--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">character</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">len</span><span
|
||||
class="cmtt-12">=*),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span> <span
|
||||
class="cmr-12">.</span></td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:normal; text-align:left;" id="TBL-2-4-1"
|
||||
@@ -69,7 +93,7 @@ class="td11"><!--l. 60--><p class="noindent" > </td><td style="white-space
|
||||
class="td11"><!--l. 60--><p class="noindent" ><span
|
||||
class="cmr-12">The type of preconditioner. Its values are specified in Table</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse4.html#x13-120151"><span
|
||||
href="userhtmlse4.html#x13-12015r1"><span
|
||||
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
@@ -79,11 +103,16 @@ class="td11"><!--l. 62--><p class="noindent" ><span
|
||||
class="cmr-12">Note that the strings are case insensitive.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:normal; text-align:left;" id="TBL-2-6-1"
|
||||
class="td11"><!--l. 63--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-2-6-2"
|
||||
class="td11"><!--l. 63--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
class="td11"><!--l. 63--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-2-6-2"
|
||||
class="td11"><!--l. 63--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:normal; text-align:left;" id="TBL-2-7-1"
|
||||
|
||||
+1072
-718
File diff suppressed because it is too large
Load Diff
+86
-54
@@ -10,7 +10,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
||||
</head><body
|
||||
>
|
||||
<!--l. 572--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 594--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu10.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -34,98 +34,130 @@ class="cmr-12">Method hierarchy</span><span
|
||||
class="cmr-12">_build</span></h4>
|
||||
<div class="center"
|
||||
>
|
||||
<!--l. 574--><p class="noindent" >
|
||||
<!--l. 575--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
<!--l. 596--><p class="noindent" >
|
||||
<!--l. 597--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">call</span><span
|
||||
class="cmtt-12"> p%hierarchy_build(a,desc_a,info)</span></span></span><br />
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmtt-12">%</span><span
|
||||
class="cmtt-12">hierarchy_build</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">desc_a</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12">info</span><span
|
||||
class="cmtt-12">)</span><br />
|
||||
</div>
|
||||
<!--l. 578--><p class="noindent" ><span
|
||||
<!--l. 600--><p class="noindent" ><span
|
||||
class="cmr-12">This method builds the hierarchy of matrices and restriction/prolongation operators for</span>
|
||||
<span
|
||||
class="cmr-12">the multilevel preconditioner </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">p</span></span></span><span
|
||||
class="cmr-12">the multilevel preconditioner </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">p</span><span
|
||||
class="cmr-12">, according to the requirements made by the user</span>
|
||||
<span
|
||||
class="cmr-12">through the methods </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">init</span></span></span> <span
|
||||
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">set</span></span></span><span
|
||||
class="cmr-12">through the methods </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">init</span> <span
|
||||
class="cmr-12">and </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">set</span><span
|
||||
class="cmr-12">.</span>
|
||||
<!--l. 583--><p class="noindent" ><span
|
||||
<!--l. 605--><p class="noindent" ><span
|
||||
class="cmbx-12">Arguments</span>
|
||||
<div class="tabular"> <table id="TBL-11" class="tabular"
|
||||
<div class="tabular"> <table id="TBL-10" class="tabular"
|
||||
cellspacing="0" cellpadding="0"
|
||||
><colgroup id="TBL-11-1g"><col
|
||||
id="TBL-11-1"><col
|
||||
id="TBL-11-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:normal; text-align:left;" id="TBL-11-1-1"
|
||||
class="td11"><!--l. 586--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">a</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-1-2"
|
||||
class="td11"><!--l. 586--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">type(psb_</span></span></span><span
|
||||
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">spmat_type),</span><span
|
||||
class="cmtt-12"> intent(in)</span></span></span><span
|
||||
><colgroup id="TBL-10-1g"><col
|
||||
id="TBL-10-1"><col
|
||||
id="TBL-10-2"></colgroup><tr
|
||||
style="vertical-align:baseline;" id="TBL-10-1-"><td style="white-space:normal; text-align:left;" id="TBL-10-1-1"
|
||||
class="td11"><!--l. 608--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-10-1-2"
|
||||
class="td11"><!--l. 608--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_</span><span
|
||||
class="cmti-12">x</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">spmat_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:normal; text-align:left;" id="TBL-11-2-1"
|
||||
class="td11"><!--l. 587--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-2-2"
|
||||
class="td11"><!--l. 587--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-10-2-"><td style="white-space:normal; text-align:left;" id="TBL-10-2-1"
|
||||
class="td11"><!--l. 609--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-10-2-2"
|
||||
class="td11"><!--l. 609--><p class="noindent" ><span
|
||||
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
|
||||
<span
|
||||
class="cmr-12">to be preconditioned. Note that </span><span
|
||||
class="cmti-12">x </span><span
|
||||
class="cmr-12">must be chosen according to the</span>
|
||||
<span
|
||||
class="cmr-12">real/complex, single/double precision version of AMG4PSBLAS</span>
|
||||
<span class="lstinline"></span><span
|
||||
class="cmtt-12">real</span><span
|
||||
class="cmr-12">/</span><span class="lstinline"></span><span
|
||||
class="cmtt-12">complex</span><span
|
||||
class="cmr-12">, single/double precision version of AMG4PSBLAS</span>
|
||||
<span
|
||||
class="cmr-12">under use. See the PSBLAS User’s Guide for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-11-3-"><td style="white-space:normal; text-align:left;" id="TBL-11-3-1"
|
||||
class="td11"><!--l. 592--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">desc_a</span></span></span></td><td style="white-space:normal; text-align:left;" id="TBL-11-3-2"
|
||||
class="td11"><!--l. 592--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">type(psb_desc_type),</span><span
|
||||
class="cmtt-12"> intent(in)</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-10-3-"><td style="white-space:normal; text-align:left;" id="TBL-10-3-1"
|
||||
class="td11"><!--l. 614--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">desc_a</span></td><td style="white-space:normal; text-align:left;" id="TBL-10-3-2"
|
||||
class="td11"><!--l. 614--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">type</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">psb_desc_type</span><span
|
||||
class="cmtt-12">),</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">in</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:normal; text-align:left;" id="TBL-11-4-1"
|
||||
class="td11"><!--l. 593--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-4-2"
|
||||
class="td11"><!--l. 593--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor of </span><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">a</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-10-4-"><td style="white-space:normal; text-align:left;" id="TBL-10-4-1"
|
||||
class="td11"><!--l. 615--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-10-4-2"
|
||||
class="td11"><!--l. 615--><p class="noindent" ><span
|
||||
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
|
||||
class="cmtt-12">a</span><span
|
||||
class="cmr-12">. See the PSBLAS User’s Guide</span>
|
||||
<span
|
||||
class="cmr-12">for details </span><span class="cite"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlli4.html#XPSBLASGUIDE"><span
|
||||
class="cmr-12">16</span></a><span
|
||||
class="cmr-12">17</span></a><span
|
||||
class="cmr-12">]</span></span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:normal; text-align:left;" id="TBL-11-5-1"
|
||||
class="td11"><!--l. 596--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">info</span></span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-11-5-2"
|
||||
class="td11"><!--l. 596--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-12">integer,</span><span
|
||||
class="cmtt-12"> intent(out)</span></span></span><span
|
||||
style="vertical-align:baseline;" id="TBL-10-5-"><td style="white-space:normal; text-align:left;" id="TBL-10-5-1"
|
||||
class="td11"><!--l. 617--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-10-5-2"
|
||||
class="td11"><!--l. 617--><p class="noindent" ><span class="lstinline"></span><span
|
||||
class="cmtt-12">integer</span><span
|
||||
class="cmtt-12">,</span><span
|
||||
class="cmtt-12"> </span><span
|
||||
class="cmtt-12">intent</span><span
|
||||
class="cmtt-12">(</span><span
|
||||
class="cmtt-12">out</span><span
|
||||
class="cmtt-12">)</span><span
|
||||
class="cmr-12">.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:normal; text-align:left;" id="TBL-11-6-1"
|
||||
class="td11"><!--l. 597--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-6-2"
|
||||
class="td11"><!--l. 597--><p class="noindent" ><span
|
||||
style="vertical-align:baseline;" id="TBL-10-6-"><td style="white-space:normal; text-align:left;" id="TBL-10-6-1"
|
||||
class="td11"><!--l. 618--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-10-6-2"
|
||||
class="td11"><!--l. 618--><p class="noindent" ><span
|
||||
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
|
||||
class="cmr-12"> </span><a
|
||||
href="userhtmlse7.html#x26-300007"><span
|
||||
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
|
||||
class="cmr-12">for details.</span> </td>
|
||||
</tr><tr
|
||||
style="vertical-align:baseline;" id="TBL-11-7-"><td style="white-space:normal; text-align:left;" id="TBL-11-7-1"
|
||||
style="vertical-align:baseline;" id="TBL-10-7-"><td style="white-space:normal; text-align:left;" id="TBL-10-7-1"
|
||||
class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
@@ -133,7 +165,7 @@ class="td11"> </td> </tr></table></div>
|
||||
|
||||
|
||||
|
||||
<!--l. 603--><div class="crosslinks"><p class="noindent"><span
|
||||
<!--l. 624--><div class="crosslinks"><p class="noindent"><span
|
||||
class="cmr-12">[</span><a
|
||||
href="userhtmlsu10.html" ><span
|
||||
class="cmr-12">next</span></a><span
|
||||
@@ -150,6 +182,6 @@ class="cmr-12">] [</span><a
|
||||
href="userhtmlse5.html#userhtmlsu9.html" ><span
|
||||
class="cmr-12">up</span></a><span
|
||||
class="cmr-12">] </span></p></div>
|
||||
<!--l. 603--><p class="indent" > <a
|
||||
<!--l. 624--><p class="indent" > <a
|
||||
id="tailuserhtmlsu9.html"></a>
|
||||
</body></html>
|
||||
|
||||
+1
-1
@@ -87,7 +87,7 @@ TOPFILE = userguide.tex
|
||||
HTMLFILE = userhtml.tex
|
||||
SECFILE = abstract.tex overview.tex distribution.tex newobjects.tex\
|
||||
building.tex gettingstarted.tex userinterface.tex \
|
||||
errors.tex bibliography.tex license.tex
|
||||
errors.tex bibliography.tex license.tex covenant.tex
|
||||
FIGDIR = figures
|
||||
|
||||
XPDFFLAGS =
|
||||
|
||||
@@ -12,6 +12,11 @@ P.~R.~Amestoy, C.~Ashcraft, O.~Boiteau, A.~Buttari, J.~L'Excellent, C.~Weisbecke
|
||||
SIAM Journal on Scientific Computing, volume 37 (3), 2015, A1452--A1474.
|
||||
See also {\tt http://mumps.enseeiht.fr}.
|
||||
%
|
||||
\bibitem{BERTACCINIFILIPPONE}
|
||||
D. Bertaccini\ and\ S. Filippone,
|
||||
{\em Sparse approximate inverse preconditioners on high performance GPU platforms},
|
||||
Comput. Math. Appl. {\bf 71} (2016), no.~3, 693--711.
|
||||
%
|
||||
\bibitem{BREZINA_VANEK}
|
||||
M.~Brezina, P.~Van\v{e}k,
|
||||
{\em A Black-Box Iterative Solver Based on a Two-Level Schwarz Method},
|
||||
|
||||
@@ -108,9 +108,15 @@ in the main directory to generate the necessary makefile.
|
||||
\textbf{DA RISCRIVERE}
|
||||
|
||||
As a minimal example consider the following:
|
||||
\ifpdf
|
||||
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{console}
|
||||
./configure --with-psblas=PSB-INSTALL-DIR
|
||||
\end{minted}
|
||||
\else
|
||||
\begin{verbatim}
|
||||
./configure --with-psblas=PSB-INSTALL-DIR
|
||||
\end{verbatim}
|
||||
\fi
|
||||
which assumes that the various MPI compilers and support libraries are
|
||||
available in the standard directories on the system, and specifies
|
||||
only the PSBLAS install directory (note that the latter directory must
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
\section{Contributor Covenant Code of Conduct\label{sec:codeofconduct}}
|
||||
\markboth{\textsc{AMG4PSBLAS User's and Reference Guide}}
|
||||
{\textsc{\ref{sec:codeofconduct} Contributor Covenant Code of Conduct}}
|
||||
|
||||
\paragraph{Our Pledge}
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, caste, color, religion, or sexual identity
|
||||
and orientation.
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
Our Standards
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
\begin{itemize}
|
||||
\item Demonstrating empathy and kindness toward other people
|
||||
\item Being respectful of differing opinions, viewpoints, and experiences
|
||||
\item Giving and gracefully accepting constructive feedback
|
||||
\item Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
\item Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
\end{itemize}
|
||||
Examples of unacceptable behavior include:
|
||||
\begin{itemize}
|
||||
\item The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
\item Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
\item Public or private harassment
|
||||
\item Publishing others’ private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
\item Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
\end{itemize}
|
||||
|
||||
\paragraph{Enforcement Responsibilities}
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
Scope
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
Enforcement
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
\href{mailto:eocoe@na.iac.cnr.it}{eocoe@na.iac.cnr.it}.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
\paragraph{Enforcement Guidelines}
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
\begin{enumerate}
|
||||
\item Correction
|
||||
|
||||
\textit{Community Impact:} Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
\textit{Consequence:} A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
\item Warning
|
||||
|
||||
\textit{Community Impact:} A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
\textit{Consequence:} A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
\item Temporary Ban
|
||||
|
||||
\textit{Community Impact:} A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
\textit{Consequence:} A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
\item Permanent Ban
|
||||
|
||||
\textit{Community Impact:} Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
\textit{Consequence:} A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
\end{enumerate}
|
||||
|
||||
\paragraph{Attribution}
|
||||
This Code of Conduct is adapted from the Contributor Covenant,
|
||||
version 2.0, available at
|
||||
\href{https://www.contributor-covenant.org/version/2/0/code_of_conduct.html}{https://www.contributor-covenant.org/version/2/0/code\_of\_conduct .html}.
|
||||
Community Impact Guidelines were inspired by
|
||||
Mozilla’s code of conduct enforcement ladder.
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
\href{https://www.contributor-covenant.org/faq}{https://www.contributor-covenant.org/faq}. Translations are available
|
||||
at \href{https://www.contributor-covenant.org/translations}{https://www.contributor-covenant.org/translations}.
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: "userguide"
|
||||
%%% End:
|
||||
+145
-45
@@ -15,18 +15,18 @@ The following steps are required:
|
||||
following an object-oriented approach.
|
||||
\item \emph{Allocate and initialize the preconditioner data structure, according to
|
||||
a preconditioner type chosen by the user}. This is performed by the routine
|
||||
\verb|init|, which also sets defaults for each preconditioner
|
||||
\fortinline|init|, which also sets defaults for each preconditioner
|
||||
type selected by the user. The preconditioner types and the defaults associated
|
||||
with them are given in Table~\ref{tab:precinit}, where the strings used by
|
||||
\verb|init| to identify the preconditioner types are also given.
|
||||
\fortinline|init| to identify the preconditioner types are also given.
|
||||
Note that these strings are valid also if uppercase letters are substituted by
|
||||
corresponding lowercase ones.
|
||||
|
||||
\item \emph{Modify the selected preconditioner type, by properly setting
|
||||
preconditioner parameters.} This is performed by the routine \verb|set|.
|
||||
preconditioner parameters.} This is performed by the routine \fortinline|set|.
|
||||
This routine must be called only if the user wants to modify the default values
|
||||
of the parameters associated with the selected preconditioner type, to obtain a variant
|
||||
of that preconditioner. Examples of use of \verb|set| are given in
|
||||
of that preconditioner. Examples of use of \fortinline|set| are given in
|
||||
Section~\ref{sec:examples}; a complete list of all the
|
||||
preconditioner parameters and their allowed and default values is provided in
|
||||
Section~\ref{sec:userinterface}, Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.
|
||||
@@ -34,18 +34,18 @@ The following steps are required:
|
||||
is multilevel, then two steps must be performed, as specified next.
|
||||
\begin{enumerate}
|
||||
\item[4.1] \emph{Build the AMG hierarchy for a given matrix.} This is
|
||||
performed by the routine \verb|hierarchy_build|.
|
||||
performed by the routine \fortinline|hierarchy_build|.
|
||||
\item[4.2] \emph{Build the preconditioner for a given matrix.} This is performed
|
||||
by the routine \verb|smoothers_build|.
|
||||
by the routine \fortinline|smoothers_build|.
|
||||
\end{enumerate}
|
||||
If the selected preconditioner is one-level, it is built in a single step,
|
||||
performed by the routine \verb|bld|.
|
||||
performed by the routine \fortinline|bld|.
|
||||
\item \emph{Apply the preconditioner at each iteration of a Krylov solver.}
|
||||
This is performed by the method \verb|apply|. When using the PSBLAS Krylov solvers,
|
||||
this step is completely transparent to the user, since \verb|apply| is called
|
||||
by the PSBLAS routine implementing the Krylov solver (\verb|psb_krylov|).
|
||||
This is performed by the method \fortinline|apply|. When using the PSBLAS Krylov solvers,
|
||||
this step is completely transparent to the user, since \fortinline|apply| is called
|
||||
by the PSBLAS routine implementing the Krylov solver (\fortinline|psb_krylov|).
|
||||
\item \emph{Free the preconditioner data structure}. This is performed by
|
||||
the routine \verb|free|. This step is complementary to step 1 and should
|
||||
the routine \fortinline|free|. This step is complementary to step 1 and should
|
||||
be performed when the preconditioner is no more used.
|
||||
\end{enumerate}
|
||||
|
||||
@@ -59,21 +59,21 @@ Examples showing the basic use of AMG4PSBLAS are reported in Section~\ref{sec:ex
|
||||
\begin{tabular}{|l|p{2cm}|p{6.8cm}|}
|
||||
\hline
|
||||
\textsc{type} & \textsc{string} & \textsc{default preconditioner} \\ \hline
|
||||
No preconditioner &\verb|'NONE'|& Considered to use the PSBLAS
|
||||
No preconditioner &\fortinline|'NONE'|& Considered to use the PSBLAS
|
||||
Krylov solvers with no preconditioner. \\ \hline
|
||||
Diagonal & \verb|'DIAG'|, \verb|'JACOBI'|, \verb|'L1-JACOBI'| & Diagonal preconditioner.
|
||||
Diagonal & \fortinline|'DIAG'|, \fortinline|'JACOBI'|, \fortinline|'L1-JACOBI'| & Diagonal preconditioner.
|
||||
For any zero diagonal entry of the matrix to be preconditioned,
|
||||
the corresponding entry of the preconditioner is set to~1.\\ \hline
|
||||
Gauss-Seidel & \verb|'GS'|, \verb|'L1-GS'| & Hybrid Gauss-Seidel (forward), that is,
|
||||
Gauss-Seidel & \fortinline|'GS'|, \fortinline|'L1-GS'| & Hybrid Gauss-Seidel (forward), that is,
|
||||
global block Jacobi with
|
||||
Gauss-Seidel as local solver.\\ \hline
|
||||
Symmetrized Gauss-Seidel & \verb|'FBGS'|, \verb|'L1-FBGS'| & Symmetrized hybrid Gauss-Seidel, that is,
|
||||
Symmetrized Gauss-Seidel & \fortinline|'FBGS'|, \fortinline|'L1-FBGS'| & Symmetrized hybrid Gauss-Seidel, that is,
|
||||
forward Gauss-Seidel followed by
|
||||
backward Gauss-Seidel.\\ \hline
|
||||
Block Jacobi & \verb|'BJAC'|, \verb|'L1-BJAC'| & Block-Jacobi with ILU(0) on the local blocks.\\ \hline
|
||||
Additive Schwarz & \verb|'AS'| & Additive Schwarz (AS),
|
||||
Block Jacobi & \fortinline|'BJAC'|, \fortinline|'L1-BJAC'| & Block-Jacobi with ILU(0) on the local blocks.\\ \hline
|
||||
Additive Schwarz & \fortinline|'AS'| & Additive Schwarz (AS),
|
||||
with overlap~1 and ILU(0) on the local blocks. \\ \hline
|
||||
Multilevel &\verb|'ML'| & V-cycle with one hybrid forward Gauss-Seidel
|
||||
Multilevel &\fortinline|'ML'| & V-cycle with one hybrid forward Gauss-Seidel
|
||||
(GS) sweep as pre-smoother and one hybrid backward
|
||||
GS sweep as post-smoother, decoupled smoothed aggregation
|
||||
as coarsening algorithm, and LU (plus triangular solve)
|
||||
@@ -88,11 +88,11 @@ Multilevel &\verb|'ML'| & V-cycle with one hybrid forward Gauss-Seidel
|
||||
\end{center}
|
||||
\end{table}
|
||||
|
||||
Note that the module \verb|amg_prec_mod|, containing the definition of the
|
||||
Note that the module \fortinline|amg_prec_mod|, containing the definition of the
|
||||
preconditioner data type and the interfaces to the routines of AMG4PSBLAS,
|
||||
must be used in any program calling such routines.
|
||||
The modules \verb|psb_base_mod|, for the sparse matrix and communication descriptor
|
||||
data types, and \verb|psb_krylov_mod|, for interfacing with the
|
||||
The modules \fortinline|psb_base_mod|, for the sparse matrix and communication descriptor
|
||||
data types, and \fortinline|psb_krylov_mod|, for interfacing with the
|
||||
Krylov solvers, must be also used (see Section~\ref{sec:examples}). \\
|
||||
|
||||
\textbf{Remark 1.} Coarsest-level solvers based on the LU factorization,
|
||||
@@ -109,11 +109,11 @@ on parallel computers.
|
||||
The code reported in Figure~\ref{fig:ex1} shows how to set and apply the default
|
||||
multilevel preconditioner available in the real double precision version
|
||||
of AMG4PSBLAS (see Table~\ref{tab:precinit}). This preconditioner is chosen
|
||||
by simply specifying \verb|'ML'| as the second argument of \verb|P%init|
|
||||
(a call to \verb|P%set| is not needed) and is applied with the CG
|
||||
by simply specifying \fortinline|'ML'| as the second argument of \fortinline|P%init|
|
||||
(a call to \fortinline|P%set| is not needed) and is applied with the CG
|
||||
solver provided by PSBLAS (the matrix of the system to be solved is
|
||||
assumed to be positive definite). As previously observed, the modules
|
||||
\verb|psb_base_mod|, \verb|amg_prec_mod| and \verb|psb_krylov_mod|
|
||||
\fortinline|psb_base_mod|, \fortinline|amg_prec_mod| and \fortinline|psb_krylov_mod|
|
||||
must be used by the example program.
|
||||
|
||||
The part of the code concerning the
|
||||
@@ -134,9 +134,64 @@ precision, versions are obtained with straightforward modifications of the previ
|
||||
example (see Section~\ref{sec:userinterface} for details). If these versions are installed,
|
||||
the corresponding codes are available in \verb|examples/fileread/|.
|
||||
|
||||
\begin{figure}[tbp]
|
||||
\begin{listing}[tbp]
|
||||
\begin{center}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
\ifpdf
|
||||
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
|
||||
use psb_base_mod
|
||||
use amg_prec_mod
|
||||
use psb_krylov_mod
|
||||
... ...
|
||||
!
|
||||
! sparse matrix
|
||||
type(psb_dspmat_type) :: A
|
||||
! sparse matrix descriptor
|
||||
type(psb_desc_type) :: desc_A
|
||||
! preconditioner
|
||||
type(amg_dprec_type) :: P
|
||||
! right-hand side and solution vectors
|
||||
type(psb_d_vect_type) :: b, x
|
||||
... ...
|
||||
!
|
||||
! initialize the parallel environment
|
||||
call psb_init(ctxt)
|
||||
call psb_info(ctxt,iam,np)
|
||||
... ...
|
||||
!
|
||||
! read and assemble the spd matrix A and the right-hand side b
|
||||
! using PSBLAS routines for sparse matrix / vector management
|
||||
... ...
|
||||
!
|
||||
! initialize the default multilevel preconditioner, i.e. V-cycle
|
||||
! with basic smoothed aggregation, 1 hybrid forward/backward
|
||||
! GS sweep as pre/post-smoother and UMFPACK as coarsest-level
|
||||
! solver
|
||||
call P%init('ML',info)
|
||||
!
|
||||
! build the preconditioner
|
||||
call P%hierarchy_build(A,desc_A,info)
|
||||
call P%smoothers_build(A,desc_A,info)
|
||||
|
||||
!
|
||||
! set the solver parameters and the initial guess
|
||||
... ...
|
||||
!
|
||||
! solve Ax=b with preconditioned CG
|
||||
call psb_krylov('CG',A,P,b,x,tol,desc_A,info)
|
||||
... ...
|
||||
!
|
||||
! deallocate the preconditioner
|
||||
call P%free(info)
|
||||
!
|
||||
! deallocate other data structures
|
||||
... ...
|
||||
!
|
||||
! exit the parallel environment
|
||||
call psb_exit(ctxt)
|
||||
stop
|
||||
\end{minted}
|
||||
\else
|
||||
{\small
|
||||
\begin{verbatim}
|
||||
use psb_base_mod
|
||||
@@ -155,8 +210,8 @@ the corresponding codes are available in \verb|examples/fileread/|.
|
||||
... ...
|
||||
!
|
||||
! initialize the parallel environment
|
||||
call psb_init(ictxt)
|
||||
call psb_info(ictxt,iam,np)
|
||||
call psb_init(ctxt)
|
||||
call psb_info(ctxt,iam,np)
|
||||
... ...
|
||||
!
|
||||
! read and assemble the spd matrix A and the right-hand side b
|
||||
@@ -188,15 +243,16 @@ the corresponding codes are available in \verb|examples/fileread/|.
|
||||
... ...
|
||||
!
|
||||
! exit the parallel environment
|
||||
call psb_exit(ictxt)
|
||||
call psb_exit(ctxt)
|
||||
stop
|
||||
\end{verbatim}
|
||||
}
|
||||
\fi
|
||||
\end{minipage}
|
||||
\caption{setup and application of the default multilevel preconditioner (example 1).
|
||||
\label{fig:ex1}}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
\end{listing}
|
||||
|
||||
Different versions of the multilevel preconditioner can be obtained by changing
|
||||
the default values of the preconditioner parameters. The code reported in
|
||||
@@ -205,7 +261,7 @@ which applies 1 block-Jacobi sweep as pre- and post-smoother,
|
||||
and solves the coarsest-level system with 8 block-Jacobi sweeps.
|
||||
Note that the ILU(0) factorization (plus triangular solve) is used as
|
||||
local solver for the block-Jacobi sweeps, since this is the default associated
|
||||
with block-Jacobi and set by~\verb|P%init|.
|
||||
with block-Jacobi and set by~\fortinline|P%init|.
|
||||
Furthermore, specifying block-Jacobi as coarsest-level
|
||||
solver implies that the coarsest-level matrix is distributed
|
||||
among the processes.
|
||||
@@ -216,7 +272,7 @@ implemented in MUMPS. It is specified that the coarsest-level
|
||||
matrix is distributed, since MUMPS can be used on both
|
||||
replicated and distributed matrices, and by default
|
||||
it is used on replicated ones.
|
||||
%Note the use of the parameter \verb|pos|
|
||||
%Note the use of the parameter \fortinline|pos|
|
||||
%to specify a property only for the pre-smoother or the post-smoother
|
||||
%(see Section~\ref{sec:precset} for more details).
|
||||
The code fragments shown in Figures~\ref{fig:ex2} and \ref{fig:ex3} are
|
||||
@@ -232,8 +288,20 @@ The corresponding example program is available in the file
|
||||
For all the previous preconditioners, example programs where the sparse matrix and
|
||||
the right-hand side are generated by discretizing a PDE with Dirichlet
|
||||
boundary conditions are also available in the directory \verb|examples/pdegen|.
|
||||
|
||||
\begin{figure}[tbh]
|
||||
\vspace{-1em}\begin{listing}[tbh]
|
||||
\ifpdf%
|
||||
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
|
||||
! build a V-cycle preconditioner with 1 block-Jacobi sweep (with
|
||||
! ILU(0) on the blocks) as pre- and post-smoother, and 8 block-Jacobi
|
||||
! sweeps (with ILU(0) on the blocks) as coarsest-level solver
|
||||
call P%init('ML',info)
|
||||
call P%set('SMOOTHER_TYPE','BJAC',info)
|
||||
call P%set('COARSE_SOLVE','BJAC',info)
|
||||
call P%set('COARSE_SWEEPS',8,info)
|
||||
call P%hierarchy_build(A,desc_A,info)
|
||||
call P%smoothers_build(A,desc_A,info)
|
||||
\end{minted}
|
||||
\else%
|
||||
\begin{center}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
{\small
|
||||
@@ -243,7 +311,7 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
|
||||
! ILU(0) on the blocks) as pre- and post-smoother, and 8 block-Jacobi
|
||||
! sweeps (with ILU(0) on the blocks) as coarsest-level solver
|
||||
call P%init('ML',info)
|
||||
call_P%set('SMOOTHER_TYPE','BJAC',info)
|
||||
call P%set('SMOOTHER_TYPE','BJAC',info)
|
||||
call P%set('COARSE_SOLVE','BJAC',info)
|
||||
call P%set('COARSE_SWEEPS',8,info)
|
||||
call P%hierarchy_build(A,desc_A,info)
|
||||
@@ -252,12 +320,27 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
|
||||
\end{verbatim}
|
||||
}
|
||||
\end{minipage}
|
||||
|
||||
\caption{setup of a multilevel preconditioner based on the default decoupled coarsening\label{fig:ex2}}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[h!]
|
||||
\fi\vspace{-2em}%
|
||||
\caption{setup of a multilevel preconditioner based on the default decoupled coarsening\label{fig:ex2}}
|
||||
\end{listing}\vspace*{-2em}
|
||||
\begin{listing}[h!]
|
||||
\ifpdf
|
||||
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
|
||||
! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps
|
||||
! as pre- and post-smoother, a distributed coarsest
|
||||
! matrix, and MUMPS as coarsest-level solver
|
||||
call P%init('ML',info)
|
||||
call P%set('PAR_AGGR_ALG','COUPLED',info)
|
||||
call P%set('ML_CYCLE','WCYCLE',info)
|
||||
call P%set('SMOOTHER_TYPE','FBGS',info)
|
||||
call P%set('SMOOTHER_SWEEPS',2,info)
|
||||
call P%set('COARSE_SOLVE','MUMPS',info)
|
||||
call P%set('COARSE_MAT','DIST',info)
|
||||
call P%hierarchy_build(A,desc_A,info)
|
||||
call P%smoothers_build(A,desc_A,info)
|
||||
\end{minted}
|
||||
\else
|
||||
\begin{center}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
{\small
|
||||
@@ -279,11 +362,27 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
|
||||
\end{verbatim}
|
||||
}
|
||||
\end{minipage}
|
||||
\caption{setup of a multilevel preconditioner based on the coupled coarsening based on weighted matching\label{fig:ex3}}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[h!]
|
||||
\fi\vspace{-2em}%
|
||||
\caption{setup of a multilevel preconditioner based on the coupled coarsening based on weighted matching\label{fig:ex3}}
|
||||
\end{listing}\vspace*{-2em}
|
||||
\begin{listing}[h!]
|
||||
\ifpdf
|
||||
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
|
||||
! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps
|
||||
! as pre- and post-smoother, a distributed coarsest
|
||||
! matrix, and MUMPS as coarsest-level solver
|
||||
call P%init('ML',info)
|
||||
call P%set('PAR_AGGR_ALG','COUPLED',info)
|
||||
call P%set('ML_CYCLE','WCYCLE',info)
|
||||
call P%set('SMOOTHER_TYPE','FBGS',info)
|
||||
call P%set('SMOOTHER_SWEEPS',2,info)
|
||||
call P%set('COARSE_SOLVE','MUMPS',info)
|
||||
call P%set('COARSE_MAT','DIST',info)
|
||||
call P%hierarchy_build(A,desc_A,info)
|
||||
call P%smoothers_build(A,desc_A,info)
|
||||
\end{minted}
|
||||
\else
|
||||
\begin{center}
|
||||
\begin{minipage}{.90\textwidth}
|
||||
{\small
|
||||
@@ -299,9 +398,10 @@ boundary conditions are also available in the directory \verb|examples/pdegen|.
|
||||
\end{verbatim}
|
||||
}
|
||||
\end{minipage}
|
||||
\caption{setup of a one-level Schwarz preconditioner.\label{fig:ex4}}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
\fi\vspace{-2em}%
|
||||
\caption{setup of a one-level Schwarz preconditioner.\label{fig:ex4}}
|
||||
\end{listing}
|
||||
|
||||
|
||||
%%% Local Variables:
|
||||
|
||||
+24
-4
@@ -24,8 +24,8 @@ the context of the multilevel preconditioners it is necessary to:
|
||||
\item pass that variable as the argument to the \verb|set| routine as in the
|
||||
following:
|
||||
\begin{center}
|
||||
\verb|call p%set(smoother,info [,ilev,ilmax,pos])|\\
|
||||
\verb|call p%set(solver,info [,ilev,ilmax,pos])|
|
||||
\fortinline|call p%set(smoother,info [,ilev,ilmax,pos])|\\
|
||||
\fortinline|call p%set(solver,info [,ilev,ilmax,pos])|
|
||||
\end{center}
|
||||
\item link the code implementing the various methods into the application executable.
|
||||
\end{itemize}
|
||||
@@ -55,10 +55,10 @@ need to be ovverridden (rewritten).
|
||||
The interfaces for the calls shown above are defined using
|
||||
\begin{center}
|
||||
\begin{tabular}{p{1.4cm}p{12cm}}
|
||||
\verb|smoother| & \verb|class(amg_x_base_smoother_type)| \\
|
||||
\fortinline|smoother| & \fortinline|class(amg_x_base_smoother_type)| \\
|
||||
& The user-defined new smoother to be employed in the
|
||||
preconditioner.\\
|
||||
\verb|solver| & \verb|class(amg_x_base_solver_type)| \\
|
||||
\fortinline|solver| & \fortinline|class(amg_x_base_solver_type)| \\
|
||||
& The user-defined new solver to be employed in the
|
||||
preconditioner.
|
||||
\end{tabular}
|
||||
@@ -67,6 +67,25 @@ The other arguments are defined in the way described in
|
||||
Sec.~\ref{sec:precset}. As an example, in the \verb|tests/newslv|
|
||||
code we define a new object of type \verb|amg_d_tlu_solver_type|, and
|
||||
we pass it as follows:
|
||||
\ifpdf
|
||||
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
|
||||
! sparse matrix and preconditioner
|
||||
type(psb_dspmat_type) :: a
|
||||
type(amg_dprec_type) :: prec
|
||||
type(amg_d_tlu_solver_type) :: tlusv
|
||||
|
||||
......
|
||||
!
|
||||
! prepare the preconditioner: an ML with defaults, but with TLU solver at
|
||||
! intermediate levels. All other parameters are at default values.
|
||||
!
|
||||
call prec%init('ML', info)
|
||||
call prec%hierarchy_build(a,desc_a,info)
|
||||
nlv = prec%get_nlevs()
|
||||
call prec%set(tlusv, info,ilev=1,ilmax=max(1,nlv-1))
|
||||
call prec%smoothers_build(a,desc_a,info)
|
||||
\end{minted}
|
||||
\else
|
||||
\begin{verbatim}
|
||||
|
||||
! sparse matrix and preconditioner
|
||||
@@ -86,3 +105,4 @@ we pass it as follows:
|
||||
call prec%smoothers_build(a,desc_a,info)
|
||||
|
||||
\end{verbatim}
|
||||
\fi
|
||||
@@ -3,7 +3,7 @@
|
||||
{\textsc{\ref{sec:overview} General Overview}}
|
||||
|
||||
The \textsc{Algebraic MultiGrid Preconditioners Package based on
|
||||
PSBLAS (AMG4PSBLAS)} provides parallel Algebraic MultiGrid (AMG) preconditioners (see, e.g., \cite{Briggs2000,Stuben_01}),
|
||||
PSBLAS} (\textsc{AMG\-4\-PSBLAS}) provides parallel Algebraic MultiGrid (AMG) preconditioners (see, e.g., \cite{Briggs2000,Stuben_01}),
|
||||
to be used in the iterative solution of linear systems,
|
||||
\begin{equation}
|
||||
Ax=b,
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
\usepackage{html}
|
||||
\usepackage{ifthen}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{subfig}
|
||||
\newtheorem{theorem}{Theorem}
|
||||
\newtheorem{corollary}{Corollary}
|
||||
\usepackage{rotating}
|
||||
@@ -24,6 +25,14 @@
|
||||
\usemintedstyle{friendly}
|
||||
\definecolor{bg}{rgb}{0.95,0.95,0.95}
|
||||
\usepackage{breakurl}
|
||||
\usepackage{mathpazo}
|
||||
\usepackage[english]{babel}
|
||||
\ifpdf
|
||||
\newmintinline[fortinline]{fortran}{}
|
||||
\else%
|
||||
\def\fortinline{\lstinline[basicstyle=\ttfamily,language=fortran]}
|
||||
\fi
|
||||
|
||||
%\newboolean{mtc}
|
||||
%\setboolean{mtc}{true}
|
||||
|
||||
@@ -186,6 +195,7 @@ Preconditioners Package based on PSBLAS}
|
||||
\clearpage
|
||||
\appendix
|
||||
\include{license}
|
||||
\include{covenant}
|
||||
\clearpage
|
||||
\include{bibliography}
|
||||
|
||||
|
||||
@@ -21,7 +21,17 @@
|
||||
%\newboolean{mtc}
|
||||
%\setboolean{mtc}{true}
|
||||
\usepackage{microtype}
|
||||
\ifpdf
|
||||
\newmintinline[fortinline]{fortran}{}
|
||||
\else%
|
||||
\usepackage{listings}
|
||||
\def\fortinline{\lstinline[basicstyle=\ttfamily,language=fortran]}
|
||||
\usepackage{float}
|
||||
\newfloat{listing}{htbp}{lop}
|
||||
\floatname{listing}{Listing}
|
||||
\def\lstfloatautorefname{Listing} % needed for hyperref/auroref
|
||||
|
||||
\fi
|
||||
|
||||
\pdfoutput=0
|
||||
\relax
|
||||
|
||||
+267
-238
@@ -3,13 +3,13 @@
|
||||
{\textsc{\ref{sec:userinterface} User Interface}}
|
||||
|
||||
The basic user interface of AMG4PBLAS consists of eight methods. The six
|
||||
methods \verb|init|, \verb|set|, \verb|build|,
|
||||
\verb|hierarchy_build|, \verb|smoothers_build| and \verb|apply|
|
||||
methods \fortinline|init|, \fortinline|set|, \fortinline|build|,
|
||||
\fortinline|hierarchy_build|, \fortinline|smoothers_build| and \fortinline|apply|
|
||||
encapsulate all the functionalities for the setup and the application
|
||||
of any multilevel and one-level preconditioner implemented in the
|
||||
package.
|
||||
The method \verb|free| deallocates the preconditioner data structure, while
|
||||
\verb|descr| prints a description of the preconditioner setup by the user.
|
||||
The method \fortinline|free| deallocates the preconditioner data structure, while
|
||||
\fortinline|descr| prints a description of the preconditioner setup by the user.
|
||||
For backward compatibility, methods are also accessible as
|
||||
stand-alone subroutines.
|
||||
|
||||
@@ -43,24 +43,24 @@ A description of each method is given in the remainder of this section.
|
||||
\subsection{Method init\label{sec:precinit}}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%init(icontx,ptype,info)|
|
||||
\fortinline|call p%init(contxt,ptype,info)|
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
This method allocates and initializes the preconditioner
|
||||
\verb|p|, according to the preconditioner type chosen by the user.
|
||||
\fortinline|p|, according to the preconditioner type chosen by the user.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
|
||||
\verb|icontxt| & \verb|integer, intent(in)|.\\
|
||||
\fortinline|contxt| & \fortinline|type(psb_ctxt_type), intent(in)|.\\
|
||||
& The communication context.\\
|
||||
\verb|ptype| & \verb|character(len=*), intent(in)|.\\
|
||||
\fortinline|ptype| & \fortinline|character(len=*), intent(in)|.\\
|
||||
& The type of preconditioner. Its values are specified
|
||||
in Table~\ref{tab:precinit}.\\
|
||||
& Note that the strings are case insensitive.\\
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
\fortinline|info| & \fortinline|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
|
||||
\end{tabular}
|
||||
@@ -73,63 +73,63 @@ This method allocates and initializes the preconditioner
|
||||
\subsection{Method set\label{sec:precset}}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%set(what,val,info [,ilev, ilmax, pos, idx])|
|
||||
\fortinline|call p%set(what,val,info [,ilev, ilmax, pos, idx])|
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
This method sets the parameters defining the preconditioner \verb|p|. More
|
||||
precisely, the parameter identified by \verb|what| is assigned the value
|
||||
contained in \verb|val|.
|
||||
This method sets the parameters defining the preconditioner \fortinline|p|. More
|
||||
precisely, the parameter identified by \fortinline|what| is assigned the value
|
||||
contained in \fortinline|val|.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
\verb|what| & \verb|character(len=*)|. \\
|
||||
\fortinline|what| & \fortinline|character(len=*)|. \\
|
||||
& The parameter to be set. It can be specified through its name;
|
||||
the string is case-insensitive. See
|
||||
Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\
|
||||
\verb|val | & \verb|integer| \emph{or} \verb|character(len=*)| \emph{or}
|
||||
\verb|real(psb_spk_)| \emph{or} \verb|real(psb_dpk_)|,
|
||||
\verb|intent(in)|.\\
|
||||
\fortinline|val | & \fortinline|integer| \emph{or} \fortinline|character(len=*)| \emph{or}
|
||||
\fortinline|real(psb_spk_)| \emph{or} \fortinline|real(psb_dpk_)|,
|
||||
\fortinline|intent(in)|.\\
|
||||
& The value of the parameter to be set. The list of allowed
|
||||
values and the corresponding data types is given in
|
||||
Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.
|
||||
When the value is of type \verb|character(len=*)|,
|
||||
When the value is of type \fortinline|character(len=*)|,
|
||||
it is also treated as case insensitive.\\
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
\fortinline|info| & \fortinline|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors}
|
||||
for details.\\
|
||||
\verb|ilev| & \verb|integer, optional, intent(in)|.\\
|
||||
\fortinline|ilev| & \fortinline|integer, optional, intent(in)|.\\
|
||||
& For the multilevel preconditioner, the level at which the
|
||||
preconditioner parameter has to be set.
|
||||
The levels are numbered in increasing
|
||||
order starting from the finest one, i.e., level 1 is the finest level.
|
||||
If \verb|ilev| is not present, the parameter identified by \verb|what|
|
||||
If \fortinline|ilev| is not present, the parameter identified by \fortinline|what|
|
||||
is set at all the appropriate levels (see
|
||||
Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}).\\
|
||||
\verb|ilmax| & \verb|integer, optional, intent(in)|.\\
|
||||
\fortinline|ilmax| & \fortinline|integer, optional, intent(in)|.\\
|
||||
& For the multilevel preconditioner, when both
|
||||
\verb|ilev| and \verb|ilmax| are present, the settings
|
||||
are applied at all levels \verb|ilev:ilmax|. When
|
||||
\verb|ilev| is present but \verb|ilmax| is not, then
|
||||
the default is \verb|ilmax=ilev|.
|
||||
\fortinline|ilev| and \fortinline|ilmax| are present, the settings
|
||||
are applied at all levels \fortinline|ilev:ilmax|. When
|
||||
\fortinline|ilev| is present but \fortinline|ilmax| is not, then
|
||||
the default is \fortinline|ilmax=ilev|.
|
||||
The levels are numbered in increasing
|
||||
order starting from the finest one, i.e., level 1 is the finest level. \\
|
||||
\verb|pos| & \verb|charater(len=*), optional, intent(in)|.\\
|
||||
& Whether the other arguments apply only to the pre-smoother (\verb|'PRE'|)
|
||||
or to the post-smoother (\verb|'POST'|). If \verb|pos| is not present,
|
||||
\fortinline|pos| & \fortinline|character(len=*), optional, intent(in)|.\\
|
||||
& Whether the other arguments apply only to the pre-smoother (\fortinline|'PRE'|)
|
||||
or to the post-smoother (\fortinline|'POST'|). If \fortinline|pos| is not present,
|
||||
the other arguments are applied to both smoothers.
|
||||
If the preconditioner is one-level or the parameter identified by \verb|what|
|
||||
does not concern the smoothers, \verb|pos| is ignored.\\
|
||||
\verb|idx| & \verb|integer, optional, intent(in)|.\\
|
||||
If the preconditioner is one-level or the parameter identified by \fortinline|what|
|
||||
does not concern the smoothers, \fortinline|pos| is ignored.\\
|
||||
\fortinline|idx| & \fortinline|integer, optional, intent(in)|.\\
|
||||
& An auxiliary input argument that can be passed to the
|
||||
underlying objects.
|
||||
\end{tabular}
|
||||
|
||||
|
||||
\noindent
|
||||
However, in this case the optional arguments \verb|ilev|,
|
||||
\verb|ilmax|, \verb|pos| and \verb|idx|
|
||||
However, in this case the optional arguments \fortinline|ilev|,
|
||||
\fortinline|ilmax|, \fortinline|pos| and \fortinline|idx|
|
||||
cannot be used. \\
|
||||
|
||||
A variety of preconditioners can be obtained
|
||||
@@ -148,7 +148,7 @@ A list of the parameters that can be set, along with their allowed and
|
||||
default values, is given in Tables~\ref{tab:p_cycle}-\ref{tab:p_smoother_1}.\\
|
||||
|
||||
\textbf{Remark 2.} A smoother is usually obtained by combining two objects:
|
||||
a smoother (\verb|SMOOTHER_TYPE|) and a local solver (\verb|SUB_SOLVE|),
|
||||
a smoother (\fortinline|'SMOOTHER_TYPE'|) and a local solver (\fortinline|'SUB_SOLVE'|),
|
||||
as specified in Tables~\ref{tab:p_smoother}-\ref{tab:p_smoother_1}.
|
||||
For example, the block-Jacobi smoother using
|
||||
ILU(0) on the blocks is obtained by combining the block-Jacobi smoother
|
||||
@@ -160,9 +160,9 @@ result of combining the block-Jacobi smoother object with a single sweep
|
||||
of the point-Jacobi solver object. However, for simplicity, shortcuts are
|
||||
provided to set point-Jacobi, hybrid (forward) Gauss-Seidel, and
|
||||
hybrid backward Gauss-Seidel, i.e., the previous smoothers can be defined
|
||||
by setting only \verb|SMOOTHER_TYPE| to appropriate values (see
|
||||
by setting only \fortinline|'SMOOTHER_TYPE'| to appropriate values (see
|
||||
Tables~\ref{tab:p_smoother}), i.e., without setting
|
||||
\verb|SUB_SOLVE| too.
|
||||
\fortinline|'SUB_SOLVE'| too.
|
||||
|
||||
The smoother and solver objects are arranged in a
|
||||
hierarchical manner. When specifying a smoother object, its parameters,
|
||||
@@ -205,9 +205,9 @@ Likewise, the replicated layout can be used with any solver but SuperLu\_Dist;
|
||||
therefore, if SuperLu\_Dist has been previously set, the coarsest-level
|
||||
solver is changed to the default sequential solver.
|
||||
|
||||
\textbf{Remark 4.} The argument \verb|idx| can be used to allow finer
|
||||
\textbf{Remark 4.} The argument \fortinline|idx| can be used to allow finer
|
||||
control for those solvers; for instance, by specifying the keyword
|
||||
\verb|MUMPS_IPAR_ENTRY| and an appropriate value for \verb|idx|, it is
|
||||
\fortinline|'MUMPS_IPAR_ENTRY'| and an appropriate value for \fortinline|idx|, it is
|
||||
possible to set any entry in the MUMPS integer control array.
|
||||
See also Sec.~\ref{sec:adding}.
|
||||
%The \verb|what,val| pairs described here are those of the predefined
|
||||
@@ -220,13 +220,13 @@ See also Sec.~\ref{sec:adding}.
|
||||
%\begin{tabular}{|p{5cm}|l|p{2.4cm}|p{2.5cm}|p{5cm}|}
|
||||
\begin{tabular}{|p{3.6cm}|l|p{2.4cm}|p{2.4cm}|p{7.2cm}|}
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
|
||||
\textsc{comments} \\ \hline
|
||||
\verb|'ML_CYCLE'| & \verb|character(len=*)|
|
||||
& \texttt{'VCYCLE'} \par \texttt{'WCYCLE'} \par \texttt{'KCYCLE'} \par \texttt{'ADD'}
|
||||
& \texttt{'VCYCLE'}
|
||||
\fortinline|'ML_CYCLE'| & \fortinline|character(len=*)|
|
||||
& \fortinline|'VCYCLE'| \par \fortinline|'WCYCLE'| \par \fortinline|'KCYCLE'| \par \fortinline|'ADD'|
|
||||
& \fortinline|'VCYCLE'|
|
||||
&Multilevel cycle: V-cycle, W-cycle, K-cycle, and additive composition. \\ \hline
|
||||
\verb|'OUTER_SWEEPS'| & \texttt{integer} &
|
||||
\fortinline|'OUTER_SWEEPS'| & \fortinline|integer| &
|
||||
Any integer \par number $\ge 1$ & 1 &
|
||||
Number of multilevel cycles. \\ \hline
|
||||
|
||||
@@ -242,9 +242,9 @@ be applied.
|
||||
%\begin{tabular}{|p{5cm}|l|p{2.4cm}|p{2.5cm}|p{5cm}|}
|
||||
\begin{tabular}{|p{5.7cm}|l|p{2.3cm}|p{2.5cm}|p{6.9cm}|}
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
|
||||
\textsc{comments} \\ \hline
|
||||
\verb|'MIN_COARSE_SIZE_PER_PROCESS'| & \verb|integer|
|
||||
\fortinline|'MIN_COARSE_SIZE_PER_PROCESS'| & \fortinline|integer|
|
||||
& Any number \par $> 0$
|
||||
& $200$
|
||||
& Coarse size threshold per process. The aggregation stops
|
||||
@@ -254,7 +254,7 @@ be applied.
|
||||
multiplied by the number of processes.
|
||||
|
||||
\\ \hline
|
||||
\verb|'MIN_COARSE_SIZE'| & \verb|integer|
|
||||
\fortinline|'MIN_COARSE_SIZE'| & \fortinline|integer|
|
||||
& Any number \par $> 0$
|
||||
& -1
|
||||
& Coarse size threshold. The aggregation stops
|
||||
@@ -263,10 +263,10 @@ be applied.
|
||||
is lower than or equal to this threshold
|
||||
(see Note). If negative, it is ignored in
|
||||
favour of the default for
|
||||
\verb|'MIN_COARSE_SIZE_PER_PROCESS'|.
|
||||
\fortinline|'MIN_COARSE_SIZE_PER_PROCESS'|.
|
||||
\\ \hline
|
||||
|
||||
\verb|'MIN_CR_RATIO'| & \verb|real|
|
||||
\fortinline|'MIN_CR_RATIO'| & \fortinline|real|
|
||||
& Any number \par $> 1$
|
||||
& 1.5
|
||||
& Minimum coarsening ratio. The aggregation stops
|
||||
@@ -274,59 +274,68 @@ be applied.
|
||||
at two consecutive levels is lower than or equal to this
|
||||
threshold (see Note).\\ \hline
|
||||
|
||||
\verb|'MAX_LEVS'| & \verb|integer|
|
||||
\fortinline|'MAX_LEVS'| & \fortinline|integer|
|
||||
& Any integer \par number $> 1$
|
||||
& 20
|
||||
& Maximum number of levels. The aggregation stops
|
||||
if the number of levels reaches this value (see Note). \\ \hline
|
||||
|
||||
\verb|'PAR_AGGR_ALG'| & \verb|character(len=*)| \hspace*{-3mm}
|
||||
& \texttt{'DEC'}, \texttt{'SYMDEC'}, \texttt{'COUPLED'}
|
||||
& \texttt{'DEC'}
|
||||
& Parallel aggregation algorithm. \par the
|
||||
\verb|SYMDEC| option applies decoupled
|
||||
aggregation to the sparsity pattern
|
||||
of $A+A^T$.\\ \hline
|
||||
|
||||
\verb|'AGGR_TYPE'| & \verb|character(len=*)| \hspace*{-3mm}
|
||||
& \textbf{\texttt{'SOC1'}} &
|
||||
\textbf{\texttt{'SOC1'}},
|
||||
\textbf{\texttt{'SOC2'}},
|
||||
\textbf{\texttt{'MATCHBOXP'}}
|
||||
& Type of aggregation algorithm: currently,
|
||||
for the decoupled aggregation we implement two measures of strength of
|
||||
connection, the one by Van\v{e}k, Mandel
|
||||
and Brezina~\cite{VANEK_MANDEL_BREZINA},
|
||||
and the one by Gratton et al~\cite{GrHeJi:16}. The coupled
|
||||
aggregation is based on a parallel version of the half-approximate
|
||||
matching implemented in the MatchBox-P software package
|
||||
{\bf AGGIUNGERE LINK AL PACKAGE?}\\ \hline
|
||||
|
||||
\verb|'AGGR_SIZE'| & \verb|integer| \hspace*{-3mm}
|
||||
& Any integer \par number power of $2$ and $> 2$
|
||||
& 4
|
||||
& Maximum size of aggregates when the coupled aggregation based on
|
||||
matching is applied. For aggressive coarsening with size of
|
||||
aggregate larger than $8$ we recommend the use of smoothed prolongators.
|
||||
{\bf MODIFICARE CODICE}\\ \hline
|
||||
|
||||
\verb|'AGGR_PROL'| & \verb|character(len=*)| \hspace*{-3mm}
|
||||
& \texttt{'SMOOTHED'}, \texttt{'UNSMOOTHED'} & \texttt{'SMOOTHED'}
|
||||
& Prolongator used by the aggregation algorithm: smoothed or unsmoothed
|
||||
(i.e., tentative prolongator). \\
|
||||
\hline
|
||||
\multicolumn{5}{|l|}{{\bfseries Note.} The aggregation algorithm stops when
|
||||
at least one of the following criteria is met:
|
||||
the coarse size threshold, the coarse size threshold per process, the} \\
|
||||
\multicolumn{5}{|l|}{minimum coarsening ratio, or the maximum number
|
||||
of levels is reached. Therefore, the actual number of levels may be} \\
|
||||
\multicolumn{5}{|l|}{smaller than the specified maximum number
|
||||
of levels. } \\
|
||||
\hline
|
||||
\fortinline|'PAR_AGGR_ALG'| & \fortinline|character(len=*)| \hspace*{-3mm}
|
||||
& \texttt{'DEC'}, \texttt{'SYMDEC'}, \texttt{'COUPLED'}
|
||||
& \texttt{'DEC'}
|
||||
& Parallel aggregation algorithm. \par the
|
||||
\fortinline|SYMDEC| option applies decoupled
|
||||
aggregation to the sparsity pattern
|
||||
of $A+A^T$.\\ \hline
|
||||
\ifpdf
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\esideways
|
||||
\bsideways
|
||||
\ContinuedFloat
|
||||
\begin{center}
|
||||
\begin{tabular}{|p{5.7cm}|l|p{2.3cm}|p{2.5cm}|p{5.9cm}|}
|
||||
\hline
|
||||
\fi
|
||||
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
|
||||
\textsc{comments} \\ \hline
|
||||
\fortinline|'AGGR_TYPE'| & \fortinline|character(len=*)| \hspace*{-3mm}
|
||||
& \fortinline|'SOC1'| &
|
||||
\fortinline|'SOC1'|,
|
||||
\fortinline|'SOC2'|,
|
||||
\fortinline|'MATCHBOXP'|
|
||||
& Type of aggregation algorithm: currently,
|
||||
for the decoupled aggregation we implement two measures of strength of
|
||||
connection, the one by Van\v{e}k, Mandel
|
||||
and Brezina~\cite{VANEK_MANDEL_BREZINA},
|
||||
and the one by Gratton et al~\cite{GrHeJi:16}. The coupled
|
||||
aggregation is based on a parallel version of the half-approximate
|
||||
matching implemented in the MatchBox-P software package~\cite{MatchBoxP}.\\ \hline
|
||||
|
||||
\fortinline|'AGGR_SIZE'| & \fortinline|integer| \hspace*{-3mm}
|
||||
& Any integer \par number power of $2$ and $> 2$
|
||||
& 4
|
||||
& Maximum size of aggregates when the coupled aggregation based on
|
||||
matching is applied. For aggressive coarsening with size of
|
||||
aggregate larger than $8$ we recommend the use of smoothed prolongators.
|
||||
{\bf MODIFICARE CODICE}\\ \hline
|
||||
|
||||
\fortinline|'AGGR_PROL'| & \fortinline|character(len=*)| \hspace*{-3mm}
|
||||
& \fortinline|'SMOOTHED'|, \fortinline|'UNSMOOTHED'| & \fortinline|'SMOOTHED'|
|
||||
& Prolongator used by the aggregation algorithm: smoothed or unsmoothed
|
||||
(i.e., tentative prolongator). \\
|
||||
\hline
|
||||
\multicolumn{5}{|l|}{{\bfseries Note.} The aggregation algorithm stops when
|
||||
at least one of the following criteria is met:
|
||||
the coarse size threshold, } \\
|
||||
\multicolumn{5}{|l|}{the coarse size threshold per process, the minimum coarsening ratio, or the maximum number
|
||||
of levels is reached.} \\
|
||||
\multicolumn{5}{|l|}{Therefore, the actual number of levels may be smaller than the specified maximum number
|
||||
of levels. } \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Parameters defining the aggregation algorithm.
|
||||
\label{tab:p_aggregation}}
|
||||
\end{center}
|
||||
\esideways
|
||||
|
||||
\bsideways
|
||||
@@ -334,10 +343,10 @@ of levels. } \\
|
||||
%\begin{tabular}{|p{5cm}|l|p{2.4cm}|p{2.5cm}|p{5cm}|}
|
||||
\begin{tabular}{|p{3.8cm}|l|p{2.5cm}|p{2.3cm}|p{6.6cm}|}
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
|
||||
\textsc{comments} \\ \hline
|
||||
|
||||
\verb|'AGGR_ORD'| & \verb|character(len=*)|
|
||||
\fortinline|'AGGR_ORD'| & \fortinline|character(len=*)|
|
||||
& \texttt{'NATURAL'} \par \texttt{'DEGREE'}
|
||||
& \texttt{'NATURAL'}
|
||||
& Initial ordering of indices for the decoupled aggregation
|
||||
@@ -347,14 +356,14 @@ of levels. } \\
|
||||
%Since aggregation is
|
||||
%heuristic, results will be different.
|
||||
|
||||
\verb|'AGGR_THRESH'| & \verb|real(|\emph{kind\_parameter}\verb|)|
|
||||
\fortinline|'AGGR_THRESH'| & \fortinline|real(|\emph{kind\_parameter}\fortinline|)|
|
||||
& Any~real \par number~$\in [0, 1]$
|
||||
& 0.01
|
||||
& The threshold $\theta$ in the decoupled aggregation algorithm,
|
||||
see (\ref{eq:strongly_coup}) in Section~\ref{sec:aggregation}.
|
||||
See also the note at the bottom of this table. \\ \hline
|
||||
\verb|'AGGR_FILTER'|
|
||||
& \verb|character(len=*)|
|
||||
\fortinline|'AGGR_FILTER'|
|
||||
& \fortinline|character(len=*)|
|
||||
& \texttt{'FILTER'} \par \texttt{'NOFILTER'}
|
||||
& \texttt{'NOFILTER'} & Matrix used in computing the smoothed
|
||||
prolongator: filtered or unfiltered (see~(\ref{eq:filtered}) in Section~\ref{sec:aggregation}). \\
|
||||
@@ -375,17 +384,17 @@ the parameter \texttt{ilev}.} \\
|
||||
\begin{center}
|
||||
\begin{tabular}{|p{3.9cm}|l|p{1.7cm}|p{1.7cm}|p{8.6cm}|}
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
|
||||
\textsc{comments} \\ \hline
|
||||
\verb|'COARSE_MAT'| & \verb|character(len=*)|
|
||||
& \texttt{'DIST'} \par \texttt{'REPL'}
|
||||
& \texttt{'REPL'}
|
||||
\fortinline|'COARSE_MAT'| & \fortinline|character(len=*)|
|
||||
& \fortinline|'DIST'| \par \fortinline|'REPL'|
|
||||
& \fortinline|'REPL'|
|
||||
& Coarsest matrix layout: distributed among the processes or
|
||||
replicated on each of them. \\ \hline
|
||||
\verb|'COARSE_SOLVE'| & \verb|character(len=*)|
|
||||
& \texttt{'MUMPS'} \par \texttt{'UMF'} \par
|
||||
\texttt{'SLU'} \par \texttt{'SLUDIST'} \par
|
||||
\texttt{'JACOBI'} \par \texttt{'GS'} \par \texttt{'BJAC'} \par \texttt{'PCG'}
|
||||
\fortinline|'COARSE_SOLVE'| & \fortinline|character(len=*)|
|
||||
& \fortinline|'MUMPS'| \par \fortinline|'UMF'| \par
|
||||
\fortinline|'SLU'| \par \fortinline|'SLUDIST'| \par
|
||||
\fortinline|'JACOBI'| \par \fortinline|'GS'| \par \fortinline|'BJAC'| \par \fortinline|'RKR'|
|
||||
& See~Note.
|
||||
& Solver used at the coarsest level: sequential
|
||||
LU from MUMPS, UMFPACK, or SuperLU
|
||||
@@ -394,7 +403,7 @@ the parameter \texttt{ilev}.} \\
|
||||
(plus triangular solve);
|
||||
point-Jacobi, hybrid Gauss-Seidel or block-Jacobi and related $\ell_1$-versions;
|
||||
{\bf preconditioned Conjugate Gradient coupled with the block-Jacobi preconditioner
|
||||
with ILU(0) on the blocks}. \par
|
||||
with ILU(0) on the blocks}.
|
||||
Note that \texttt{UMF} and \texttt{SLU} require the coarsest
|
||||
matrix to be replicated, \texttt{SLUDIST}, \texttt{JACOBI},
|
||||
\texttt{GS}, \texttt{BJAC} and \texttt{PCG} require it to be
|
||||
@@ -404,15 +413,28 @@ the parameter \texttt{ilev}.} \\
|
||||
value which allows the use of the solver (see Remark 3, p.~24).
|
||||
Note also that UMFPACK and SuperLU\_Dist
|
||||
are available only in double precision. \\ \hline
|
||||
\verb|'COARSE_SUBSOLVE'| & \verb|character(len=*)|
|
||||
& \texttt{'ILU'} \par \texttt{'ILUT'} \par \texttt{'MILU'} \par
|
||||
\texttt{'MUMPS'} \par \texttt{'SLU'} \par \texttt{'UMF'}
|
||||
\ifpdf
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\esideways
|
||||
\bsideways
|
||||
\ContinuedFloat
|
||||
\begin{center}
|
||||
\begin{tabular}{|p{3.9cm}|l|p{1.7cm}|p{1.7cm}|p{8.6cm}|}
|
||||
\hline
|
||||
\fi
|
||||
\fortinline|'COARSE_SUBSOLVE'| & \fortinline|character(len=*)|
|
||||
& \fortinline|'ILU'| \par \fortinline|'ILUT'| \par \fortinline|'MILU'| \par
|
||||
\fortinline|'MUMPS'| \par \fortinline|'SLU'| \par \fortinline|'UMF'| \par
|
||||
\fortinline|'INVT'| \par \fortinline|'INVK'| \par \fortinline|'AINV'|
|
||||
& See~Note.
|
||||
& Solver for the diagonal blocks of the coarse matrix,
|
||||
in case the block Jacobi solver
|
||||
is chosen as coarsest-level solver: ILU($p$), ILU($p,t$),
|
||||
MILU($p$), LU from MUMPS, SuperLU or UMFPACK
|
||||
(plus triangular solve). {\bf Aggiungere Sparse Approssimate per GPU?}
|
||||
(plus triangular solve). Suitable for GPUs (no triangular solve)
|
||||
approximate inverse solvers INVK($p,q$), INVT($p_1,p2,t_1,t_2$) and
|
||||
AINV($t$), see~\cite{BERTACCINIFILIPPONE}.
|
||||
Note that UMFPACK and SuperLU\_Dist
|
||||
are available only in double precision. \\
|
||||
\hline
|
||||
@@ -425,29 +447,29 @@ the parameter \texttt{ilev}.} \\
|
||||
then \texttt{MUMPS} if installed, then \texttt{SLU} if
|
||||
installed, \texttt{ILU} otherwise.}\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\caption{Parameters defining the coarse-space correction at the coarsest
|
||||
level.\label{tab:p_coarse}}
|
||||
\esideways
|
||||
|
||||
\bsideways
|
||||
\begin{center}
|
||||
\begin{tabular}{|p{3.9cm}|l|p{2cm}|p{1.5cm}|p{7.5cm}|}
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
%\end{tabular}
|
||||
%\end{center}
|
||||
%\caption{Parameters defining the coarse-space correction at the coarsest
|
||||
%level.\label{tab:p_coarse}}
|
||||
%\esideways
|
||||
%
|
||||
%\bsideways
|
||||
%\begin{center}
|
||||
%\begin{tabular}{|p{3.9cm}|l|p{2cm}|p{1.5cm}|p{7.5cm}|}
|
||||
%\hline
|
||||
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
|
||||
\textsc{comments} \\ \hline
|
||||
\verb|'COARSE_SWEEPS'| & \verb|integer|
|
||||
\fortinline|'COARSE_SWEEPS'| & \fortinline|integer|
|
||||
& Any integer \par number $> 0$
|
||||
& 10
|
||||
& Number of sweeps when \verb|JACOBI|, \verb|GS| or \verb|BJAC|
|
||||
& Number of sweeps when \fortinline|JACOBI|, \fortinline|GS| or \fortinline|BJAC|
|
||||
is chosen as coarsest-level solver. {\bf Aggiungere criterio di arresto del PCG?}\\ \hline
|
||||
\verb|'COARSE_FILLIN'| & \verb|integer|
|
||||
\fortinline|'COARSE_FILLIN'| & \fortinline|integer|
|
||||
& Any integer \par number $\ge 0$
|
||||
& 0
|
||||
& Fill-in level $p$ of the ILU factorizations. \\ \hline
|
||||
\verb|'COARSE_ILUTHRS'|
|
||||
& \verb|real(|\emph{kind\_parameter}\verb|)|
|
||||
\fortinline|'COARSE_ILUTHRS'|
|
||||
& \fortinline|real(|\emph{kind\_parameter}\fortinline|)|
|
||||
& Any real \par number $\ge 0$
|
||||
& 0
|
||||
& Drop tolerance $t$ in the ILU($p,t$) factorization. \\
|
||||
@@ -463,23 +485,23 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
\small
|
||||
\begin{tabular}{|p{3.6cm}|l|p{1.9cm}|p{3.6cm}|p{6.5cm}|}
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
|
||||
\textsc{comments} \\ \hline
|
||||
|
||||
\verb|'SMOOTHER_TYPE'| & \verb|character(len=*)|
|
||||
& \verb|'JACOBI'| \par \verb|'GS'| \par \verb|'BGS'| \par \verb|'BJAC'|
|
||||
\par \verb|'AS'|
|
||||
& \verb|'FBGS'|
|
||||
\fortinline|'SMOOTHER_TYPE'| & \fortinline|character(len=*)|
|
||||
& \fortinline|'JACOBI'| \par \fortinline|'GS'| \par \fortinline|'BGS'| \par \fortinline|'BJAC'|
|
||||
\par \fortinline|'AS'|
|
||||
& \fortinline|'FBGS'|
|
||||
& Type of smoother used in the multilevel preconditioner:
|
||||
point-Jacobi, hybrid (forward) Gauss-Seidel,
|
||||
hybrid backward Gauss-Seidel, block-Jacobi, \textbf{$\ell_1$-versions?} and
|
||||
Additive Schwarz. \par
|
||||
It is ignored by one-level preconditioners. \\ \hline
|
||||
\verb|'SUB_SOLVE'| & \verb|character(len=*)|
|
||||
& \texttt{'JACOBI'} \par
|
||||
\texttt{'GS'} \par \texttt{'BGS'} \par \texttt{'ILU'} \par
|
||||
\texttt{'ILUT'} \par \texttt{'MILU'} \par
|
||||
\par \texttt{'MUMPS'} \par \texttt{'SLU'} \par \texttt{'UMF'}
|
||||
\fortinline|'SUB_SOLVE'| & \fortinline|character(len=*)|
|
||||
& \fortinline|'JACOBI'| \par
|
||||
\fortinline|'GS'| \par \texttt{'BGS'} \par \fortinline|'ILU'| \par
|
||||
\fortinline|'ILUT'| \par \fortinline|'MILU'| \par
|
||||
\par \fortinline|'MUMPS'| \par \fortinline|'SLU'| \par \fortinline|'UMF'|
|
||||
& \texttt{GS} and \texttt{BGS} for pre- and post-smoothers
|
||||
of multilevel preconditioners, respectively \par
|
||||
\texttt{ILU} for block-Jacobi and Additive Schwarz
|
||||
@@ -492,15 +514,15 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
LU from MUMPS, SuperLU or UMFPACK
|
||||
(plus triangular solve). See Note for details on hybrid
|
||||
Gauss-Seidel. \\ \hline
|
||||
\verb|'SMOOTHER_SWEEPS'| & \verb|integer|
|
||||
\fortinline|'SMOOTHER_SWEEPS'| & \fortinline|integer|
|
||||
& Any integer \par number~$\ge 0$
|
||||
& 1
|
||||
& Number of sweeps of the smoother or one-level preconditioner.
|
||||
In the multilevel case, no pre-smother or
|
||||
post-smoother is used if this parameter is set to 0
|
||||
together with \verb|pos='PRE'| or \verb|pos='POST|,
|
||||
together with \fortinline|pos='PRE'| or \fortinline|pos='POST|,
|
||||
respectively. \\ \hline
|
||||
\verb|'SUB_OVR'| & \verb|integer|
|
||||
\fortinline|'SUB_OVR'| & \fortinline|integer|
|
||||
& Any integer \par number~$\ge 0$
|
||||
& 1
|
||||
& Number of overlap layers, for Additive Schwarz only. \\
|
||||
@@ -514,51 +536,51 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
\bsideways
|
||||
\begin{center}
|
||||
\small
|
||||
\begin{tabular}{|p{3cm}|l|p{2.5cm}|p{2.2cm}|p{7.1cm}|}
|
||||
\begin{tabular}{|p{3.2cm}|l|p{2.6cm}|p{2.6cm}|p{6.7cm}|}
|
||||
\hline
|
||||
\verb|what| & \textsc{data type} & \verb|val| & \textsc{default} &
|
||||
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
|
||||
\textsc{comments} \\ \hline
|
||||
\verb|'SUB_RESTR'| & \verb|character(len=*)|
|
||||
& \texttt{'HALO'} \par \texttt{'NONE'}
|
||||
& \texttt{'HALO'}
|
||||
\fortinline|'SUB_RESTR'| & \fortinline|character(len=*)|
|
||||
& \fortinline|'HALO'| \par \fortinline|'NONE'|
|
||||
& \fortinline|'HALO'|
|
||||
& Type of restriction operator, for Additive Schwarz only:
|
||||
\texttt{HALO} for taking into account the overlap, \texttt{NONE}
|
||||
\texttt{HALO} for taking into account the overlap, \fortinline|'NONE'|
|
||||
for neglecting it. \par
|
||||
Note that \texttt{HALO} must be chosen for
|
||||
the classical Addditive Schwarz smoother and its RAS variant.\\ \hline
|
||||
\verb|'SUB_PROL'| & \verb|character(len=*)|
|
||||
& \texttt{'SUM'} \par \texttt{'NONE'}
|
||||
& \texttt{'NONE'}
|
||||
\fortinline|'SUB_PROL'| & \fortinline|character(len=*)|
|
||||
& \fortinline|'SUM'| \par \fortinline|'NONE'|
|
||||
& \fortinline|'NONE'|
|
||||
& Type of prolongation operator, for Additive Schwarz only:
|
||||
\texttt{SUM} for adding the contributions from the overlap, \texttt{NONE}
|
||||
\fortinline|'SUM'| for adding the contributions from the overlap, \fortinline|'NONE'|
|
||||
for neglecting them. \par
|
||||
Note that \texttt{SUM} must be chosen for the classical Additive
|
||||
Schwarz smoother, and \texttt{NONE} for its RAS variant. \\ \hline
|
||||
\verb|'SUB_FILLIN'| & \verb|integer|
|
||||
Note that \fortinline|'SUM'| must be chosen for the classical Additive
|
||||
Schwarz smoother, and \fortinline|'NONE'| for its RAS variant. \\ \hline
|
||||
\fortinline|'SUB_FILLIN'| & \fortinline|integer|
|
||||
& Any integer \par number~$\ge 0$
|
||||
& 0
|
||||
& Fill-in level $p$ of the incomplete LU factorizations. \\ \hline
|
||||
\verb|'SUB_ILUTHRS'| & \verb|real(|\emph{kind\_parameter}\verb|)|
|
||||
\fortinline|'SUB_ILUTHRS'| & \fortinline|real(|\emph{kind\_parameter}\fortinline|)|
|
||||
& Any real number~$\ge 0$
|
||||
& 0
|
||||
& Drop tolerance $t$ in the ILU($p,t$) factorization. \\ %\hline
|
||||
\verb|'MUMPS_LOC_GLOB'| & \verb|character(len=*)|
|
||||
& \texttt{LOCAL\_SOLVER'} \par \texttt{GLOBAL\_SOLVER'}
|
||||
& \texttt{GLOBAL\_SOLVER'}
|
||||
\fortinline|'MUMPS_LOC_GLOB'| & \fortinline|character(len=*)|
|
||||
& \fortinline|'LOCAL_SOLVER'| \par \fortinline|'GLOBAL_SOLVER'|
|
||||
& \fortinline|'GLOBAL_SOLVER'|
|
||||
& Whether MUMPS should be used as a
|
||||
distributed solver, or as a serial solver
|
||||
acting only on the part of the matrix local
|
||||
to each process. \\ %\hline
|
||||
\verb|'MUMPS_IPAR_ENTRY'| & \verb|integer|
|
||||
\fortinline|'MUMPS_IPAR_ENTRY'| & \fortinline|integer|
|
||||
& Any integer number
|
||||
& 0
|
||||
& Set an entry in the MUMPS integer control array, as
|
||||
chosen via the \verb|idx| optional argument. \\ %\hline
|
||||
\verb|'MUMPS_RPAR_ENTRY'| & \verb|real|
|
||||
chosen via the \fortinline|idx| optional argument. \\ %\hline
|
||||
\fortinline|'MUMPS_RPAR_ENTRY'| & \fortinline|real|
|
||||
& Any real number
|
||||
& 0
|
||||
& Set an entry in the MUMPS real control array, as
|
||||
chosen via the \verb|idx| optional argument. \\ %\hline
|
||||
chosen via the \fortinline|idx| optional argument. \\ %\hline
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
@@ -572,28 +594,27 @@ level (continued).\label{tab:p_coarse_1}}
|
||||
\subsection{Method hierarchy\_build\label{sec:hier_bld}}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%hierarchy_build(a,desc_a,info)|\\
|
||||
\fortinline|call p%hierarchy_build(a,desc_a,info)|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
This method builds the hierarchy of matrices and restriction/prolongation
|
||||
operators for the multilevel preconditioner \verb|p|, according to the requirements
|
||||
made by the user through the methods \verb|init| and \verb|set|.
|
||||
operators for the multilevel preconditioner \fortinline|p|, according to the requirements
|
||||
made by the user through the methods \fortinline|init| and \fortinline|set|.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
\verb|a| & \verb|type(psb_|\emph{x}\verb|spmat_type), intent(in)|. \\
|
||||
\fortinline|a| & \fortinline|type(psb_|\emph{x}\fortinline|spmat_type), intent(in)|. \\
|
||||
& The sparse matrix structure containing the local part of the
|
||||
matrix to be preconditioned. Note that \emph{x} must be chosen according
|
||||
to the real/complex,
|
||||
to the \fortinline|real|/\fortinline|complex|,
|
||||
single/double precision version of AMG4PSBLAS under use.
|
||||
See the PSBLAS User's Guide for details \cite{PSBLASGUIDE}.\\
|
||||
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\
|
||||
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for
|
||||
\fortinline|desc_a| & \fortinline|type(psb_desc_type), intent(in)|. \\
|
||||
& The communication descriptor of \fortinline|a|. See the PSBLAS User's Guide for
|
||||
details \cite{PSBLASGUIDE}.\\
|
||||
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
\fortinline|info| & \fortinline|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\end{tabular}
|
||||
|
||||
@@ -604,38 +625,38 @@ single/double precision version of AMG4PSBLAS under use.
|
||||
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])|\\
|
||||
\fortinline|call p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
This method builds the smoothers and the coarsest-level solvers for the
|
||||
multilevel preconditioner \verb|p|, according to the requirements made by
|
||||
the user through the methods \verb|init| and \verb|set|, and based on the aggregation
|
||||
hierarchy produced by a previous call to \verb|hierarchy_build|
|
||||
multilevel preconditioner \fortinline|p|, according to the requirements made by
|
||||
the user through the methods \fortinline|init| and \fortinline|set|, and based on the aggregation
|
||||
hierarchy produced by a previous call to \fortinline|hierarchy_build|
|
||||
(see Section~\ref{sec:hier_bld}).
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
\verb|a| & \verb|type(psb_|\emph{x}\verb|spmat_type), intent(in)|. \\
|
||||
\fortinline|a| & \fortinline|type(psb_|\emph{x}\fortinline|spmat_type), intent(in)|. \\
|
||||
& The sparse matrix structure containing the local part of the
|
||||
matrix to be preconditioned. Note that \emph{x} must be chosen according
|
||||
to the real/complex, single/double precision version of AMG4PSBLAS under use.
|
||||
to the \fortinline|real|/\fortinline|complex|, single/double precision version of AMG4PSBLAS under use.
|
||||
See the PSBLAS User's Guide for details \cite{PSBLASGUIDE}.\\
|
||||
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\
|
||||
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for
|
||||
\fortinline|desc_a| & \fortinline|type(psb_desc_type), intent(in)|. \\
|
||||
& The communication descriptor of \fortinline|a|. See the PSBLAS User's Guide for
|
||||
details \cite{PSBLASGUIDE}.\\
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
\fortinline|info| & \fortinline|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\
|
||||
\fortinline|amold| & \fortinline|class(psb_|\emph{x}\fortinline|_base_sparse_mat), intent(in), optional|. \\
|
||||
& The desired dynamic type for internal matrix
|
||||
components; this allows e.g. running on GPUs; it needs not be the
|
||||
same on all processes. See the PSBLAS User's Guide for
|
||||
details \cite{PSBLASGUIDE}. \\
|
||||
\verb|vmold| & \verb|class(psb_|\emph{x}\verb|_base_vect_type), intent(in), optional|. \\
|
||||
\fortinline|vmold| & \fortinline|class(psb_|\emph{x}\fortinline|_base_vect_type), intent(in), optional|. \\
|
||||
& The desired dynamic type for internal vector
|
||||
components; this allows e.g. running on GPUs. \\
|
||||
\verb|imold| & \verb|class(psb_i_base_vect_type), intent(in), optional|. \\
|
||||
\fortinline|imold| & \fortinline|class(psb_i_base_vect_type), intent(in), optional|. \\
|
||||
& The desired dynamic type for internal integer vector
|
||||
components; this allows e.g. running on GPUs. \\
|
||||
\end{tabular}
|
||||
@@ -645,41 +666,41 @@ hierarchy produced by a previous call to \verb|hierarchy_build|
|
||||
\subsection{Method build\label{sec:precbld}}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%build(a,desc_a,info[,amold,vmold,imold])|\\
|
||||
\fortinline|call p%build(a,desc_a,info[,amold,vmold,imold])|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
This method builds the preconditioner \verb|p| according to the requirements
|
||||
made by the user through the methods \verb|init| and \verb|set|
|
||||
This method builds the preconditioner \fortinline|p| according to the requirements
|
||||
made by the user through the methods \fortinline|init| and \fortinline|set|
|
||||
(see Sections~\ref{sec:hier_bld} and~\ref{sec:smooth_bld} for
|
||||
multilevel preconditioners). It is mostly provided for backward
|
||||
compatibility; indeed, it is internally implemented by invoking the
|
||||
two previous methods \verb|hierarchy_build| and
|
||||
\verb|smoothers_build|, whose nomenclature would however be somewhat
|
||||
two previous methods \fortinline|hierarchy_build| and
|
||||
\fortinline|smoothers_build|, whose nomenclature would however be somewhat
|
||||
unnatural when dealing with simple one-level preconditioners.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
\verb|a| & \verb|type(psb_|\emph{x}\verb|spmat_type), intent(in)|. \\
|
||||
\fortinline|a| & \fortinline|type(psb_|\emph{x}\fortinline|spmat_type), intent(in)|. \\
|
||||
& The sparse matrix structure containing the local part of the
|
||||
matrix to be preconditioned. Note that \emph{x} must be chosen according
|
||||
to the real/complex, single/double precision version of AMG4PSBLAS under use.
|
||||
to the \fortinline|real|/\fortinline|complex|, single/double precision version of AMG4PSBLAS under use.
|
||||
See the PSBLAS User's Guide for details \cite{PSBLASGUIDE}.\\
|
||||
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\
|
||||
& The communication descriptor of \verb|a|. See the PSBLAS User's Guide for
|
||||
\fortinline|desc_a| & \fortinline|type(psb_desc_type), intent(in)|. \\
|
||||
& The communication descriptor of \fortinline|a|. See the PSBLAS User's Guide for
|
||||
details \cite{PSBLASGUIDE}.\\
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
\fortinline|info| & \fortinline|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\
|
||||
\fortinline|amold| & \fortinline|class(psb_|\emph{x}\fortinline|_base_sparse_mat), intent(in), optional|. \\
|
||||
& The desired dynamic type for internal matrix
|
||||
components; this allows e.g. running on GPUs; it needs not be the
|
||||
same on all processes. See the PSBLAS User's Guide for
|
||||
details \cite{PSBLASGUIDE}. \\
|
||||
\verb|vmold| & \verb|class(psb_|\emph{x}\verb|_base_vect_type), intent(in), optional|. \\
|
||||
\fortinline|vmold| & \fortinline|class(psb_|\emph{x}\fortinline|_base_vect_type), intent(in), optional|. \\
|
||||
& The desired dynamic type for internal vector
|
||||
components; this allows e.g. running on GPUs. \\
|
||||
\verb|imold| & \verb|class(psb_i_base_vect_type), intent(in), optional|. \\
|
||||
\fortinline|imold| & \fortinline|class(psb_i_base_vect_type), intent(in), optional|. \\
|
||||
& The desired dynamic type for internal integer vector
|
||||
components; this allows e.g. running on GPUs. \\
|
||||
\end{tabular}
|
||||
@@ -693,44 +714,44 @@ The method can be used to build multilevel preconditioners too.
|
||||
\subsection{Method apply\label{sec:precapply}}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%apply(x,y,desc_a,info [,trans,work])|\\
|
||||
\fortinline|call p%apply(x,y,desc_a,info [,trans,work])|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
This method computes $y = op(B^{-1})\, x$, where $B$ is a previously built
|
||||
preconditioner, stored into \verb|p|, and $op$
|
||||
preconditioner, stored into \fortinline|p|, and $op$
|
||||
denotes the preconditioner itself or its transpose, according to
|
||||
the value of \verb|trans|.
|
||||
the value of \fortinline|trans|.
|
||||
Note that, when AMG4PSBLAS is used with a Krylov solver from PSBLAS,
|
||||
\verb|p%apply| is called within the PSBLAS method \verb|psb_krylov|
|
||||
\fortinline|p%apply| is called within the PSBLAS method \fortinline|psb_krylov|
|
||||
and hence it is completely transparent to the user.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
\verb|x| & \emph{type}\verb|(|\emph{kind\_parameter}\verb|), dimension(:), intent(in)|.\\
|
||||
\fortinline|x| & \emph{type}\fortinline|(|\emph{kind\_parameter}\fortinline|), dimension(:), intent(in)|.\\
|
||||
& The local part of the vector $x$. Note that \emph{type} and
|
||||
\emph{kind\_parameter} must be chosen according
|
||||
to the real/complex, single/double precision version of AMG4PSBLAS under use.\\
|
||||
\verb|y| & \emph{type}\verb|(|\emph{kind\_parameter}\verb|), dimension(:), intent(out)|.\\
|
||||
to the \fortinline|real|/\fortinline|complex|, single/double precision version of AMG4PSBLAS under use.\\
|
||||
\fortinline|y| & \emph{type}\fortinline|(|\emph{kind\_parameter}\fortinline|), dimension(:), intent(out)|.\\
|
||||
& The local part of the vector $y$. Note that \emph{type} and
|
||||
\emph{kind\_parameter} must be chosen according
|
||||
to the real/complex, single/double precision version of AMG4PSBLAS under use.\\
|
||||
\verb|desc_a| & \verb|type(psb_desc_type), intent(in)|. \\
|
||||
to the \fortinline|real|/\fortinline|complex|, single/double precision version of AMG4PSBLAS under use.\\
|
||||
\fortinline|desc_a| & \fortinline|type(psb_desc_type), intent(in)|. \\
|
||||
& The communication descriptor associated to the matrix to be
|
||||
preconditioned.\\
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
\fortinline|info| & \fortinline|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\verb|trans| & \verb|character(len=1), optional, intent(in).|\\
|
||||
& If \verb|trans| = \verb|'N','n'| then $op(B^{-1}) = B^{-1}$;
|
||||
if \verb|trans| = \verb|'T','t'| then $op(B^{-1}) = B^{-T}$
|
||||
(transpose of $B^{-1})$; if \verb|trans| = \verb|'C','c'| then $op(B^{-1}) = B^{-C}$
|
||||
\fortinline|trans| & \fortinline|character(len=1), optional, intent(in).|\\
|
||||
& If \fortinline|trans| = \fortinline|'N','n'| then $op(B^{-1}) = B^{-1}$;
|
||||
if \fortinline|trans| = \fortinline|'T','t'| then $op(B^{-1}) = B^{-T}$
|
||||
(transpose of $B^{-1})$; if \fortinline|trans| = \fortinline|'C','c'| then $op(B^{-1}) = B^{-C}$
|
||||
(conjugate transpose of $B^{-1})$.\\
|
||||
\verb|work| & \emph{type}\verb|(|\emph{kind\_parameter}\verb|), dimension(:), optional, target|.\\
|
||||
\fortinline|work| & \emph{type}\fortinline|(|\emph{kind\_parameter}\fortinline|), dimension(:), optional, target|.\\
|
||||
& Workspace. Its size should be at
|
||||
least \verb|4 * psb_cd_get_local_| \verb|cols(desc_a)| (see the PSBLAS User's Guide).
|
||||
least \fortinline|4 * psb_cd_get_local_| \fortinline|cols(desc_a)| (see the PSBLAS User's Guide).
|
||||
Note that \emph{type} and \emph{kind\_parameter} must be chosen according
|
||||
to the real/complex, single/double precision version of AMG4PSBLAS under use.\\
|
||||
to the \fortinline|real|/\fortinline|complex|, single/double precision version of AMG4PSBLAS under use.\\
|
||||
\end{tabular}
|
||||
|
||||
|
||||
@@ -739,16 +760,16 @@ and hence it is completely transparent to the user.
|
||||
\subsection{Method free\label{sec:precfree}}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%free(p,info)|\\
|
||||
\fortinline|call p%free(p,info)|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
This method deallocates the preconditioner data structure \verb|p|.
|
||||
This method deallocates the preconditioner data structure \fortinline|p|.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{10.5cm}}
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
\fortinline|info| & \fortinline|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\end{tabular}
|
||||
|
||||
@@ -758,22 +779,30 @@ This method deallocates the preconditioner data structure \verb|p|.
|
||||
\subsection{Method descr\label{sec:precdescr}}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%descr(info, [iout])|\\
|
||||
\fortinline|call p%descr(info, [iout, root, verbosity])|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
This method prints a description of the preconditioner \verb|p| to the standard output or
|
||||
to a file. It must be called after \verb|hierachy_build| and \verb|smoothers_build|,
|
||||
or \verb|build|, have been called.
|
||||
This method prints a description of the preconditioner \fortinline|p| to the standard output or
|
||||
to a file. It must be called after \fortinline|hierachy_build| and \fortinline|smoothers_build|,
|
||||
or \fortinline|build|, have been called.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
\begin{tabular}{p{2.2cm}p{11cm}}
|
||||
\fortinline|info| & \fortinline|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\verb|iout| & \verb|integer, intent(in), optional|.\\
|
||||
\fortinline|iout| & \fortinline|integer, intent(in), optional|.\\
|
||||
& The id of the file where the preconditioner description
|
||||
will be printed; the default is the standard output.\\
|
||||
\fortinline|root| & \fortinline|integer, intent(in), optional|.\\
|
||||
& The id of the process where the preconditioner description
|
||||
will be printed; the default is \fortinline|psb_root_|.\\
|
||||
\fortinline|verbosity| & \fortinline|integer, intent(in), optional|.\\
|
||||
& The verbosity level of the description. Default value
|
||||
is 0. For values higher than 0, it prints out further
|
||||
information, e.g., for a distributed multilevel preconditioner
|
||||
the size of the coarse matrices on every process.\\
|
||||
\end{tabular}
|
||||
|
||||
|
||||
@@ -784,7 +813,7 @@ preconditioner object.
|
||||
\subsubsection{Method: dump}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])|\\
|
||||
\fortinline|call p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
@@ -793,9 +822,9 @@ Dump on file.
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
\fortinline|info| & \fortinline|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\verb|amold| & \verb|class(psb_|\emph{x}\verb|_base_sparse_mat), intent(in), optional|. \\
|
||||
\fortinline|amold| & \fortinline|class(psb_|\emph{x}\fortinline|_base_sparse_mat), intent(in), optional|. \\
|
||||
& The desired dynamic type for internal matrix
|
||||
components; this allows e.g. running on GPUs; it needs not be the
|
||||
same on all processes. See the PSBLAS User's Guide for
|
||||
@@ -806,7 +835,7 @@ Dump on file.
|
||||
\subsubsection{Method: clone}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%clone(pout,info)|\\
|
||||
\fortinline|call p%clone(pout,info)|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
@@ -815,11 +844,11 @@ Create a (deep) copy of the preconditioner object.
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
\verb|pout| & \verb|type(amg_|\emph{x}\verb|prec_type), intent(out)|.\\
|
||||
\fortinline|pout| & \fortinline|type(amg_|\emph{x}\fortinline|prec_type), intent(out)|.\\
|
||||
& The copy of the preconditioner data structure. Note
|
||||
that \emph{x} must be chosen according
|
||||
to the real/complex, single/double precision version of AMG4PSBLAS under use.\\
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
to the \fortinline|real|/\fortinline|complex|, single/double precision version of AMG4PSBLAS under use.\\
|
||||
\fortinline|info| & \fortinline|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\end{tabular}
|
||||
|
||||
@@ -828,7 +857,7 @@ Create a (deep) copy of the preconditioner object.
|
||||
\subsubsection{Method: sizeof}
|
||||
|
||||
\begin{center}
|
||||
\verb|sz = p%sizeof()|\\
|
||||
\fortinline|sz = p%sizeof()|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
@@ -837,7 +866,7 @@ Return memory footprint in bytes.
|
||||
\subsubsection{Method: allocate\_wrk}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%allocate_wrk(info[, vmold])|\\
|
||||
\fortinline|call p%allocate_wrk(info[, vmold])|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
@@ -850,18 +879,18 @@ on some platforms, most notably GPUs, memory allocation is
|
||||
a slow operation, and the default behaviour would lead to a
|
||||
slowdown. This method allows to trade space for time by preallocating
|
||||
the internal workspace outside of the invocation of a Krylov
|
||||
method. When using GPUs or other specialized devices, the \verb|vmold|
|
||||
method. When using GPUs or other specialized devices, the \fortinline|vmold|
|
||||
argument is also necessary to ensure the internal work vectors are of
|
||||
the appropriate dynamic type to exploit the accelerator hardware; when
|
||||
allocation occurs internally this is taken care of based on the dynamic
|
||||
type of the \verb|x| argument to the \verb|apply| method.
|
||||
type of the \fortinline|x| argument to the \fortinline|apply| method.
|
||||
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
\fortinline|info| & \fortinline|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\verb|vmold| & \verb|class(psb_|\emph{x}\verb|_base_vect_type), intent(in), optional|. \\
|
||||
\fortinline|vmold| & \fortinline|class(psb_|\emph{x}\fortinline|_base_vect_type), intent(in), optional|. \\
|
||||
& The desired dynamic type for internal vector
|
||||
components; this allows e.g. running on GPUs. \\
|
||||
\end{tabular}
|
||||
@@ -871,7 +900,7 @@ type of the \verb|x| argument to the \verb|apply| method.
|
||||
\subsubsection{Method: free\_wrk}
|
||||
|
||||
\begin{center}
|
||||
\verb|call p%free_wrk(info)|\\
|
||||
\fortinline|call p%free_wrk(info)|\\
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
@@ -880,7 +909,7 @@ Deallocate internal work vectors.
|
||||
{\vskip1.5\baselineskip\noindent\large\bfseries Arguments} \smallskip
|
||||
|
||||
\begin{tabular}{p{1.2cm}p{12cm}}
|
||||
\verb|info| & \verb|integer, intent(out)|.\\
|
||||
\fortinline|info| & \fortinline|integer, intent(out)|.\\
|
||||
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
|
||||
\end{tabular}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user