Merge branch 'repackage' of github.com:sfilippone/amg4psblas into repackage

repackage
sfilippone 1 month ago
commit c590a4088a

2
.gitignore vendored

@ -20,3 +20,5 @@ autom4te.cache
# the executable from tests
runs
# Documentation temporary files
docs/src/userguide.pdf

@ -15,7 +15,13 @@ AMG4PSBLAS enables the user to easily specify different features of an algebraic
The package employs object-oriented design techniques in Fortran 2008, with interfaces to additional third party libraries such as MUMPS, UMFPACK, SuperLU, and SuperLU_Dist, which can be exploited in building multilevel preconditioners. The parallel implementation is based on a Single Program Multiple Data (SPMD) paradigm; the inter-process communication is based on MPI and is managed mainly through PSBLAS.
## Main refrerences:
## Main Refrerences:
The main reference for this project is
> D'Ambra, P., Durastante, F., & Filippone, S. (2021). AMG preconditioners for linear solvers towards extreme scale. SIAM Journal on Scientific Computing, 43(5), S679-S703.
AMG4PSBLAS is the suite of preconditioners for the Parallel Sparse Computation Toolkit ([PSCToolkit](https://psctoolkit.github.io/)) suite of libraries. See the paper:
> DAmbra, P., Durastante, F., & Filippone, S. (2023). Parallel Sparse Computation Toolkit. Software Impacts, 15, 100463.
The main reference for features inherited from MLD2P4 is
> P. D'Ambra, D. di Serafino, S. Filippone,
@ -24,12 +30,6 @@ The main reference for features inherited from MLD2P4 is
> ACM Transactions on Mathematical Software, 37 (3), 2010, art. 30,
> doi: 10.1145/1824801.1824808.
The new features introduced and which led to the library's name change are described in the article
> D'Ambra, P., Durastante, F., & Filippone, S. (2021). AMG preconditioners for linear solvers towards extreme scale. SIAM Journal on Scientific Computing, 43(5), S679-S703.
AMG4PSBLAS contains the suite of preconditioners for the Parallel Sparse Computation Toolkit ([PSCToolkit](https://psctoolkit.github.io/)) suite of libraries. See the paper:
> DAmbra, P., Durastante, F., & Filippone, S. (2023). Parallel Sparse Computation Toolkit. Software Impacts, 15, 100463.
## Installing
Installation requires having a working version of the [PSBLAS](https://github.com/sfilippone/psblas3) library installed.
@ -72,4 +72,5 @@ In the European project “Energy oriented Center of Excellence: toward exascale
- Pasqua D'Ambra (IAC-CNR, Naples, IT)
- Fabio Durastante (University of Pisa and IAC-CNR, IT)
- Salvatore Filippone (University of Rome Tor Vergata and IAC-CNR)
- Salvatore Filippone (University of Rome Tor Vergata and IAC-CNR, IT)

Binary file not shown.

@ -59,40 +59,33 @@ class="cmr-12">General Overview</span></a></span>
class="cmr-12">2 </span><a
href="userhtmlse2.html#x5-40002" id="QQ2-5-4"><span
class="cmr-12">Code Distribution</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesubsectionToc" ><a
href="userhtmlli3.html#x6-50002" id="QQ2-6-5"><span
<br /> <span class="likesubsectionToc" ><a
href="userhtmlli3.html#x6-5000" id="QQ2-6-5"><span
class="cmr-12">Contributors</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesubsectionToc" ><a
href="userhtmlli4.html#x7-60002" id="QQ2-7-6"><span
<br /> <span class="likesubsectionToc" ><a
href="userhtmlli4.html#x7-6000" id="QQ2-7-6"><span
class="cmr-12">Citing AMG4PSBLAS</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">3 </span><a
href="userhtmlse3.html#x8-70003" id="QQ2-8-7"><span
class="cmr-12">Configuring and Building AMG4PSBLAS</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.1 </span><a
href="userhtmlsu1.html#x9-80003.1" id="QQ2-9-8"><span
class="cmr-12">Prerequisites</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.2 </span><a
href="userhtmlsu2.html#x10-90003.2" id="QQ2-10-9"><span
class="cmr-12">Optional third party libraries</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.3 </span><a
href="userhtmlsu3.html#x11-100003.3" id="QQ2-11-10"><span
class="cmr-12">Configuration options</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.4 </span><a
href="userhtmlsu4.html#x12-110003.4" id="QQ2-12-12"><span
class="cmr-12">Bug reporting</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.5 </span><a
href="userhtmlsu5.html#x13-120003.5" id="QQ2-13-13"><span
class="cmr-12">Example and test programs</span></a></span>
@ -100,13 +93,11 @@ class="cmr-12">Example and test programs</span></a></span>
class="cmr-12">4 </span><a
href="userhtmlse4.html#x14-130004" id="QQ2-14-14"><span
class="cmr-12">Getting Started</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">4.1 </span><a
href="userhtmlsu6.html#x15-140004.1" id="QQ2-15-16"><span
class="cmr-12">Examples</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">4.2 </span><a
href="userhtmlsu7.html#x16-150004.2" id="QQ2-16-21"><span
class="cmr-12">GPU example</span></a></span>
@ -114,71 +105,62 @@ class="cmr-12">GPU example</span></a></span>
class="cmr-12">5 </span><a
href="userhtmlse5.html#x17-160005" id="QQ2-17-25"><span
class="cmr-12">User Interface</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.1 </span><a
href="userhtmlsu8.html#x18-170005.1" id="QQ2-18-26"><span
class="cmr-12">Method init</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.2 </span><a
href="userhtmlsu9.html#x19-180005.2" id="QQ2-19-27"><span
class="cmr-12">Method set</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.3 </span><a
href="userhtmlsu10.html#x20-190005.3" id="QQ2-20-35"><span
href="userhtmlsu10.html#x20-190005.3" id="QQ2-20-36"><span
class="cmr-12">Method hierarchy</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.4 </span><a
href="userhtmlsu11.html#x21-200005.4" id="QQ2-21-36"><span
href="userhtmlsu11.html#x21-200005.4" id="QQ2-21-37"><span
class="cmr-12">Method smoothers</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.5 </span><a
href="userhtmlsu12.html#x22-210005.5" id="QQ2-22-37"><span
href="userhtmlsu12.html#x22-210005.5" id="QQ2-22-38"><span
class="cmr-12">Method build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.6 </span><a
href="userhtmlsu13.html#x23-220005.6" id="QQ2-23-38"><span
href="userhtmlsu13.html#x23-220005.6" id="QQ2-23-39"><span
class="cmr-12">Method apply</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.7 </span><a
href="userhtmlsu14.html#x24-230005.7" id="QQ2-24-39"><span
href="userhtmlsu14.html#x24-230005.7" id="QQ2-24-40"><span
class="cmr-12">Method free</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.8 </span><a
href="userhtmlsu15.html#x25-240005.8" id="QQ2-25-40"><span
href="userhtmlsu15.html#x25-240005.8" id="QQ2-25-41"><span
class="cmr-12">Method descr</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.9 </span><a
href="userhtmlsu16.html#x26-250005.9" id="QQ2-26-41"><span
href="userhtmlsu16.html#x26-250005.9" id="QQ2-26-42"><span
class="cmr-12">Auxiliary Methods</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">6 </span><a
href="userhtmlse6.html#x27-310006" id="QQ2-27-47"><span
href="userhtmlse6.html#x27-310006" id="QQ2-27-48"><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#x28-320007" id="QQ2-28-48"><span
href="userhtmlse7.html#x28-320007" id="QQ2-28-49"><span
class="cmr-12">Error Handling</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">A </span><a
href="userhtmlse8.html#x29-33000A" id="QQ2-29-49"><span
href="userhtmlse8.html#x29-33000A" id="QQ2-29-50"><span
class="cmr-12">License</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">B </span><a
href="userhtmlse9.html#x30-34000B" id="QQ2-30-50"><span
href="userhtmlse9.html#x30-34000B" id="QQ2-30-51"><span
class="cmr-12">Contributor Covenant Code of Conduct</span></a></span>
<br /> <span class="likesectionToc" ><a
href="userhtmlli5.html#x31-39000B" id="QQ2-31-55"><span
href="userhtmlli5.html#x31-39000" id="QQ2-31-56"><span
class="cmr-12">References</span></a></span>
</div>

@ -22,6 +22,9 @@
.cmmi-8{font-size:72%;font-style: italic;}
.cmsy-10x-x-120{font-size:109%;}
.cmsy-8{font-size:72%;}
.cmtt-10{font-size:90%;font-family: monospace,monospace;}
.cmtt-10{font-family: monospace,monospace;}
.cmtt-10{font-family: monospace,monospace;}
.tctt-1200{font-size:109%;font-family: monospace,monospace;}
.cmmi-10x-x-109{font-style: italic;}
.cmsy-10x-x-109{}
@ -29,9 +32,6 @@
.cmtt-10x-x-109{font-family: monospace,monospace;}
.cmtt-10x-x-109{font-family: monospace,monospace;}
.cmcsc-10x-x-109{}
.cmtt-10{font-size:90%;font-family: monospace,monospace;}
.cmtt-10{font-family: monospace,monospace;}
.cmtt-10{font-family: monospace,monospace;}
.cmbx-10x-x-109{ font-weight: bold;}
.cmbx-10x-x-109{ font-weight: bold;}
.cmbx-10x-x-109{ font-weight: bold;}
@ -42,21 +42,26 @@ p.indent{text-indent:0;}
p + p{margin-top:1em;}
p + div, p + pre {margin-top:1em;}
div + p, pre + p {margin-top:1em;}
a { overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; hyphens: auto; }
@media print {div.crosslinks {visibility:hidden;}}
table.tabular{border-collapse: collapse; border-spacing: 0;}
a img { border-top: 0; border-left: 0; border-right: 0; }
center { margin-top:1em; margin-bottom:1em; }
td center { margin-top:0em; margin-bottom:0em; }
.Canvas { position:relative; }
img.math{vertical-align:middle;}
div.par-math-display, div.math-display{text-align:center;}
li p.indent { text-indent: 0em }
li p:first-child{ margin-top:0em; }
li p:last-child, li div:last-child { margin-bottom:0.5em; }
li p:first-child{ margin-bottom:0; }
li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
.enumerate1 {list-style-type:decimal;}
.enumerate2 {list-style-type:lower-alpha;}
.enumerate3 {list-style-type:lower-roman;}
.enumerate4 {list-style-type:upper-alpha;}
div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
div.newtheorem .head{font-weight: bold;}
.obeylines-h,.obeylines-v {white-space: nowrap; }
div.obeylines-v p { margin-top:0; margin-bottom:0; }
.overline{ text-decoration:overline; }
@ -82,6 +87,7 @@ div.flushleft {text-align: left;}
.framebox-r {text-align:right;}
span.thank-mark{ vertical-align: super }
span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
code.verb{font-family:monospace,monospace;}
div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
table.tabular td p{margin-top:0em;}
table.tabular {margin-left: auto; margin-right: auto;}
@ -100,6 +106,9 @@ table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
.hline hr, .cline hr{ height : 0px; margin:0px; }
.hline td, .cline td{ padding: 0; }
.hline hr, .cline hr{border:none;border-top:1px solid black;}
.hline {border-top: 1px solid black;}
.hline + .vspace:last-child{display:none;}
.hline:first-child{border-bottom:1px solid black;border-top:none;}
.tabbing-right {text-align:right;}
div.float, div.figure {margin-left: auto; margin-right: auto;}
div.float img {text-align:center;}
@ -130,9 +139,9 @@ div.caption span.id{font-weight: bold; white-space: nowrap; }
h1.partHead{text-align: center}
p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
.subsubsectionHead, .likesubsubsectionHead { font-size: 1em; }
.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
.verse{white-space:nowrap; margin-left:2em}
div.maketitle {text-align:center;}
h2.titleHead{text-align:center;}
@ -140,121 +149,95 @@ div.maketitle{ margin-bottom: 2em; }
div.author, div.date {text-align:center;}
div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
div.author{white-space: nowrap;}
.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
.abstract p {margin-left:5%; margin-right:5%;}
div.abstract p {margin-left:5%; margin-right:5%;}
div.abstract {width:100%;}
.subsectionToc, .likesubsectionToc {margin-left:2em;}
.subsubsectionToc, .likesubsubsectionToc {margin-left:4em;}
.abstracttitle{text-align:center;margin-bottom:1em;}
.subsectionToc, .likesubsectionToc {margin-left:1em;}
.subsubsectionToc, .likesubsubsectionToc {margin-left:2em;}
.paragraphToc, .likeparagraphToc {margin-left:3em;}
.subparagraphToc, .likesubparagraphToc {margin-left:4em;}
.ovalbox { padding-left:3pt; padding-right:3pt; border:solid thin; }
.Ovalbox-thick { padding-left:3pt; padding-right:3pt; border:solid thick; }
.shadowbox { padding-left:3pt; padding-right:3pt; border:solid thin; border-right:solid thick; border-bottom:solid thick; }
.doublebox { padding-left:3pt; padding-right:3pt; border-style:double; border:solid thick; }
.rotatebox{display: inline-block;}
code.lstinline{font-family:monospace,monospace;}
pre.listings{font-family: monospace,monospace; white-space: pre-wrap; margin-top:0.5em; margin-bottom:0.5em; }
.lstlisting .label{margin-right:0.5em; }
div.lstlisting{font-family: monospace,monospace; white-space: nowrap; margin-top:0.5em; margin-bottom:0.5em; }
div.lstinputlisting{ font-family: monospace,monospace; white-space: nowrap; }
pre.lstlisting{font-family: monospace,monospace; white-space: pre-wrap; margin-top:0.5em; margin-bottom:0.5em; }
pre.lstinputlisting{ font-family: monospace,monospace; white-space: pre-wrap; }
.lstinputlisting .label{margin-right:0.5em;}
#TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-1{border-collapse:collapse;}
#TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-1{border-collapse:collapse;}
#TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-1{border-collapse:collapse;}
#TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-1{border-collapse:collapse;}
#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-4{border-collapse:collapse;}
#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-4{border-collapse:collapse;}
#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-4{border-collapse:collapse;}
#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-4{border-collapse:collapse;}
#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-4{border-collapse:collapse;}
#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-4{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-5{border-collapse:collapse;}
#TBL-1-1{border-left: 1px solid black;}
#TBL-1-1{border-right:1px solid black;}
#TBL-1-2{border-right:1px solid black;}
#TBL-1-3{border-right:1px solid black;}
#TBL-4-1{border-left: 1px solid black;}
#TBL-4-1{border-right:1px solid black;}
#TBL-4-2{border-right:1px solid black;}
#TBL-4-3{border-right:1px solid black;}
#TBL-4-4{border-right:1px solid black;}
#TBL-4-5{border-right:1px solid black;}
#TBL-5-1{border-left: 1px solid black;}
#TBL-5-1{border-right:1px solid black;}
#TBL-5-2{border-right:1px solid black;}
#TBL-5-3{border-right:1px solid black;}
#TBL-5-4{border-right:1px solid black;}
#TBL-5-5{border-right:1px solid black;}
td#TBL-5-10-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
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-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;}
#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;}
#TBL-6{border-collapse:collapse;}
#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;}
#TBL-6{border-collapse:collapse;}
#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;}
#TBL-6{border-collapse:collapse;}
td#TBL-5-12-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-6-1{border-left: 1px solid black;}
#TBL-6-1{border-right:1px solid black;}
#TBL-6-2{border-right:1px solid black;}
#TBL-6-3{border-right:1px solid black;}
#TBL-6-4{border-right:1px solid black;}
#TBL-6-5{border-right:1px solid black;}
td#TBL-6-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-6-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-6-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-7{border-collapse:collapse;}
td#TBL-6-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-7-1{border-left: 1px solid black;}
#TBL-7-1{border-right:1px solid black;}
#TBL-7-2{border-right:1px solid black;}
#TBL-7-3{border-right:1px solid black;}
#TBL-7-4{border-right:1px solid black;}
#TBL-7-5{border-right:1px solid black;}
td#TBL-7-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-7-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-7-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-12-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-12-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-13-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
td#TBL-7-13-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;}
#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-8{border-collapse:collapse;}
#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-9{border-collapse:collapse;}
#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-9{border-collapse:collapse;}
#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-9{border-collapse:collapse;}
#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#TBL-9{border-collapse:collapse;}
#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;}
#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;}
#TBL-8-1{border-left: 1px solid black;}
#TBL-8-1{border-right:1px solid black;}
#TBL-8-2{border-right:1px solid black;}
#TBL-8-3{border-right:1px solid black;}
#TBL-8-4{border-right:1px solid black;}
#TBL-8-5{border-right:1px solid black;}
#TBL-9-1{border-left: 1px solid black;}
#TBL-9-1{border-right:1px solid black;}
#TBL-9-2{border-right:1px solid black;}
#TBL-9-3{border-right:1px solid black;}
#TBL-9-4{border-right:1px solid black;}
#TBL-9-5{border-right:1px solid black;}
#TBL-10-1{border-left: 1px solid black;}
#TBL-10-1{border-right:1px solid black;}
#TBL-10-2{border-right:1px solid black;}
#TBL-10-3{border-right:1px solid black;}
#TBL-10-4{border-right:1px solid black;}
#TBL-10-5{border-right:1px solid black;}
#TBL-11-1{border-left: 1px solid black;}
#TBL-11-1{border-right:1px solid black;}
#TBL-11-2{border-right:1px solid black;}
#TBL-11-3{border-right:1px solid black;}
#TBL-11-4{border-right:1px solid black;}
#TBL-11-5{border-right:1px solid black;}
/* end css.sty */

@ -59,40 +59,33 @@ class="cmr-12">General Overview</span></a></span>
class="cmr-12">2 </span><a
href="userhtmlse2.html#x5-40002" id="QQ2-5-4"><span
class="cmr-12">Code Distribution</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesubsectionToc" ><a
href="userhtmlli3.html#x6-50002" id="QQ2-6-5"><span
<br /> <span class="likesubsectionToc" ><a
href="userhtmlli3.html#x6-5000" id="QQ2-6-5"><span
class="cmr-12">Contributors</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesubsectionToc" ><a
href="userhtmlli4.html#x7-60002" id="QQ2-7-6"><span
<br /> <span class="likesubsectionToc" ><a
href="userhtmlli4.html#x7-6000" id="QQ2-7-6"><span
class="cmr-12">Citing AMG4PSBLAS</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">3 </span><a
href="userhtmlse3.html#x8-70003" id="QQ2-8-7"><span
class="cmr-12">Configuring and Building AMG4PSBLAS</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.1 </span><a
href="userhtmlsu1.html#x9-80003.1" id="QQ2-9-8"><span
class="cmr-12">Prerequisites</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.2 </span><a
href="userhtmlsu2.html#x10-90003.2" id="QQ2-10-9"><span
class="cmr-12">Optional third party libraries</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.3 </span><a
href="userhtmlsu3.html#x11-100003.3" id="QQ2-11-10"><span
class="cmr-12">Configuration options</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.4 </span><a
href="userhtmlsu4.html#x12-110003.4" id="QQ2-12-12"><span
class="cmr-12">Bug reporting</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.5 </span><a
href="userhtmlsu5.html#x13-120003.5" id="QQ2-13-13"><span
class="cmr-12">Example and test programs</span></a></span>
@ -100,13 +93,11 @@ class="cmr-12">Example and test programs</span></a></span>
class="cmr-12">4 </span><a
href="userhtmlse4.html#x14-130004" id="QQ2-14-14"><span
class="cmr-12">Getting Started</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">4.1 </span><a
href="userhtmlsu6.html#x15-140004.1" id="QQ2-15-16"><span
class="cmr-12">Examples</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">4.2 </span><a
href="userhtmlsu7.html#x16-150004.2" id="QQ2-16-21"><span
class="cmr-12">GPU example</span></a></span>
@ -114,71 +105,62 @@ class="cmr-12">GPU example</span></a></span>
class="cmr-12">5 </span><a
href="userhtmlse5.html#x17-160005" id="QQ2-17-25"><span
class="cmr-12">User Interface</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.1 </span><a
href="userhtmlsu8.html#x18-170005.1" id="QQ2-18-26"><span
class="cmr-12">Method init</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.2 </span><a
href="userhtmlsu9.html#x19-180005.2" id="QQ2-19-27"><span
class="cmr-12">Method set</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.3 </span><a
href="userhtmlsu10.html#x20-190005.3" id="QQ2-20-35"><span
href="userhtmlsu10.html#x20-190005.3" id="QQ2-20-36"><span
class="cmr-12">Method hierarchy</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.4 </span><a
href="userhtmlsu11.html#x21-200005.4" id="QQ2-21-36"><span
href="userhtmlsu11.html#x21-200005.4" id="QQ2-21-37"><span
class="cmr-12">Method smoothers</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.5 </span><a
href="userhtmlsu12.html#x22-210005.5" id="QQ2-22-37"><span
href="userhtmlsu12.html#x22-210005.5" id="QQ2-22-38"><span
class="cmr-12">Method build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.6 </span><a
href="userhtmlsu13.html#x23-220005.6" id="QQ2-23-38"><span
href="userhtmlsu13.html#x23-220005.6" id="QQ2-23-39"><span
class="cmr-12">Method apply</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.7 </span><a
href="userhtmlsu14.html#x24-230005.7" id="QQ2-24-39"><span
href="userhtmlsu14.html#x24-230005.7" id="QQ2-24-40"><span
class="cmr-12">Method free</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.8 </span><a
href="userhtmlsu15.html#x25-240005.8" id="QQ2-25-40"><span
href="userhtmlsu15.html#x25-240005.8" id="QQ2-25-41"><span
class="cmr-12">Method descr</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.9 </span><a
href="userhtmlsu16.html#x26-250005.9" id="QQ2-26-41"><span
href="userhtmlsu16.html#x26-250005.9" id="QQ2-26-42"><span
class="cmr-12">Auxiliary Methods</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">6 </span><a
href="userhtmlse6.html#x27-310006" id="QQ2-27-47"><span
href="userhtmlse6.html#x27-310006" id="QQ2-27-48"><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#x28-320007" id="QQ2-28-48"><span
href="userhtmlse7.html#x28-320007" id="QQ2-28-49"><span
class="cmr-12">Error Handling</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">A </span><a
href="userhtmlse8.html#x29-33000A" id="QQ2-29-49"><span
href="userhtmlse8.html#x29-33000A" id="QQ2-29-50"><span
class="cmr-12">License</span></a></span>
<br /> <span class="sectionToc" ><span
class="cmr-12">B </span><a
href="userhtmlse9.html#x30-34000B" id="QQ2-30-50"><span
href="userhtmlse9.html#x30-34000B" id="QQ2-30-51"><span
class="cmr-12">Contributor Covenant Code of Conduct</span></a></span>
<br /> <span class="likesectionToc" ><a
href="userhtmlli5.html#x31-39000B" id="QQ2-31-55"><span
href="userhtmlli5.html#x31-39000" id="QQ2-31-56"><span
class="cmr-12">References</span></a></span>
</div>

@ -145,6 +145,13 @@ class="cmr-12">of AMG4PSBLAS.</span>
<!--l. 127--><p class="indent" >
<!--l. 133--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlli2.html" ><span

@ -43,28 +43,23 @@ class="cmr-12">Code Distribution</span></a></span>
class="cmr-12">3 </span><a
href="userhtmlse3.html#x8-70003"><span
class="cmr-12">Configuring and Building AMG4PSBLAS</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.1 </span><a
href="userhtmlsu1.html#x9-80003.1"><span
class="cmr-12">Prerequisites</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.2 </span><a
href="userhtmlsu2.html#x10-90003.2"><span
class="cmr-12">Optional third party libraries</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.3 </span><a
href="userhtmlsu3.html#x11-100003.3"><span
class="cmr-12">Configuration options</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.4 </span><a
href="userhtmlsu4.html#x12-110003.4"><span
class="cmr-12">Bug reporting</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.5 </span><a
href="userhtmlsu5.html#x13-120003.5"><span
class="cmr-12">Example and test programs</span></a></span>
@ -72,13 +67,11 @@ class="cmr-12">Example and test programs</span></a></span>
class="cmr-12">4 </span><a
href="userhtmlse4.html#x14-130004"><span
class="cmr-12">Getting Started</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">4.1 </span><a
href="userhtmlsu6.html#x15-140004.1"><span
class="cmr-12">Examples</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">4.2 </span><a
href="userhtmlsu7.html#x16-150004.2"><span
class="cmr-12">GPU example</span></a></span>
@ -86,83 +79,64 @@ class="cmr-12">GPU example</span></a></span>
class="cmr-12">5 </span><a
href="userhtmlse5.html#x17-160005"><span
class="cmr-12">User Interface</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.1 </span><a
href="userhtmlsu8.html#x18-170005.1"><span
class="cmr-12">Method init</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.2 </span><a
href="userhtmlsu9.html#x19-180005.2"><span
class="cmr-12">Method set</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.3 </span><a
href="userhtmlsu10.html#x20-190005.3"><span
class="cmr-12">Method hierarchy</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.4 </span><a
href="userhtmlsu11.html#x21-200005.4"><span
class="cmr-12">Method smoothers</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.5 </span><a
href="userhtmlsu12.html#x22-210005.5"><span
class="cmr-12">Method build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.6 </span><a
href="userhtmlsu13.html#x23-220005.6"><span
class="cmr-12">Method apply</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.7 </span><a
href="userhtmlsu14.html#x24-230005.7"><span
class="cmr-12">Method free</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.8 </span><a
href="userhtmlsu15.html#x25-240005.8"><span
class="cmr-12">Method descr</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.9 </span><a
href="userhtmlsu16.html#x26-250005.9"><span
class="cmr-12">Auxiliary Methods</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
<br /> <span class="subsubsectionToc" ><span
class="cmr-12">5.9.1 </span><a
href="userhtmlsu16.html#x26-260005.9.1" id="QQ2-26-42"><span
href="userhtmlsu16.html#x26-260005.9.1" id="QQ2-26-43"><span
class="cmr-12">Method: dump</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
<br /> <span class="subsubsectionToc" ><span
class="cmr-12">5.9.2 </span><a
href="userhtmlsu16.html#x26-270005.9.2" id="QQ2-26-43"><span
href="userhtmlsu16.html#x26-270005.9.2" id="QQ2-26-44"><span
class="cmr-12">Method: clone</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
<br /> <span class="subsubsectionToc" ><span
class="cmr-12">5.9.3 </span><a
href="userhtmlsu16.html#x26-280005.9.3" id="QQ2-26-44"><span
href="userhtmlsu16.html#x26-280005.9.3" id="QQ2-26-45"><span
class="cmr-12">Method: sizeof</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
<br /> <span class="subsubsectionToc" ><span
class="cmr-12">5.9.4 </span><a
href="userhtmlsu16.html#x26-290005.9.4" id="QQ2-26-45"><span
href="userhtmlsu16.html#x26-290005.9.4" id="QQ2-26-46"><span
class="cmr-12">Method: allocate</span><span
class="cmr-12">_wrk</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
<br /> <span class="subsubsectionToc" ><span
class="cmr-12">5.9.5 </span><a
href="userhtmlsu16.html#x26-300005.9.5" id="QQ2-26-46"><span
href="userhtmlsu16.html#x26-300005.9.5" id="QQ2-26-47"><span
class="cmr-12">Method: free</span><span
class="cmr-12">_wrk</span></a></span>
<br /> <span class="sectionToc" ><span

@ -22,19 +22,22 @@ href="userhtmlse2.html#userhtmlli3.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h4 class="likesubsectionHead"><a
id="x6-50002"></a><span
id="x6-5000"></a><span
class="cmr-12">Contributors</span></h4>
<ul class="itemize1">
<li class="itemize"><span
<li class="itemize">
<!--l. 25--><p class="noindent" ><span
class="cmr-12">Pasqua D&#8217;Ambra, IAC-CNR, IT;</span>
</li>
<li class="itemize"><span
class="cmr-12">Fabio Durastante, University of Pisa and IAC-CNR, IT;</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 26--><p class="noindent" ><span
class="cmr-12">Fabio Durastante, University of Pisa and IAC-CNR, IT;</span>
</li>
<li class="itemize">
<!--l. 27--><p class="noindent" ><span
class="cmr-12">Salvatore Filippone, University of Rome Tor-Vergata and IAC-CNR, IT;</span></li></ul>

@ -25,7 +25,7 @@ href="userhtmlse2.html#userhtmlli4.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h4 class="likesubsectionHead"><a
id="x7-60002"></a><span
id="x7-6000"></a><span
class="cmr-12">Citing AMG4PSBLAS</span></h4>
<!--l. 31--><p class="noindent" ><span
class="cmr-12">When use the library, please cite the following:</span>
@ -41,6 +41,7 @@ class="cmr-12">When use the library, please cite the following:</span>
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;archivePrefix&#x00A0;=&#x00A0;{arXiv},
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;year={2021}
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
@Misc{psctoolkit-web-page,
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;author&#x00A0;=&#x00A0;{D&#8217;Ambra,&#x00A0;Pasqua&#x00A0;and&#x00A0;Durastante,&#x00A0;Fabio&#x00A0;and&#x00A0;Filippone,&#x00A0;Salvatore},
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;title&#x00A0;=&#x00A0;&#x00A0;{{PSCToolkit}&#x00A0;{W}eb&#x00A0;page},
@ -56,6 +57,9 @@ class="cmr-12">When use the library, please cite the following:</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlli3.html" ><span

@ -25,7 +25,7 @@ href="userhtml.html#userhtmlli5.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<h3 class="likesectionHead"><a
id="x31-39000B"></a><span
id="x31-39000"></a><span
class="cmr-12">References</span></h3>
<!--l. 2--><p class="noindent" >
<div class="thebibliography">
@ -303,22 +303,41 @@ class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XDDF2020"></a><span
class="cmr-12">P.</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, F</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, F.</span><span
class="cmr-12">&#x00A0;Durastante, S.</span><span
class="cmr-12">&#x00A0;Filippone, </span><span
class="cmti-12">AMG preconditioners for</span>
<span
class="cmti-12">Linear Solvers towards Extreme Scale</span><span
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>
class="cmr-12">, SIAM Journal on Scientific Computing</span>
<span
class="cmr-12">43, no. 5 (2021): S679-S703.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[15]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XDDFMT2024"></a><span
class="cmr-12">P.</span><span
class="cmr-12">&#x00A0;D&#8217;Ambra, F.</span><span
class="cmr-12">&#x00A0;Durastante, S.</span><span
class="cmr-12">&#x00A0;Filippone, S.</span><span
class="cmr-12">&#x00A0;Massei, S.</span><span
class="cmr-12">&#x00A0;Thomas</span>
<span
class="cmti-12">Optimal Polynomial Smoothers for Parallel AMG</span><span
class="cmr-12">, 2024, </span><a
href="https://arxiv.org/abs/2407.09848" ><span
class="cmr-12">arXiv:2407.09848</span></a><span
class="cmr-12">.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[16]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XUMFPACK"></a><span
class="cmr-12">T.</span><span
@ -337,7 +356,7 @@ class="cmr-12">)</span>
</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">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -363,7 +382,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">[17]</span><span class="bibsp"><span
class="cmr-12">[18]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -384,7 +403,7 @@ class="cmr-12">Software, 16 (1) 1990, 1&#8211;17.</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">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -402,10 +421,13 @@ class="cmti-12">extended set of FORTRAN Basic Linear Algebra Subprograms<
class="cmr-12">, ACM</span>
<span
class="cmr-12">Transactions on Mathematical Software, 14 (1) 1988, 1&#8211;17.</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">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -422,13 +444,10 @@ class="cmti-12">Clusters</span><span
class="cmr-12">, in Proc. of ParCo 2001, Parallel Computing, Advances and Current</span>
<span
class="cmr-12">Issues, 2002.</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">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -446,7 +465,7 @@ class="cmr-12">.</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">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -464,7 +483,7 @@ class="cmr-12">&#x00A0;23.</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">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -481,7 +500,7 @@ class="cmr-12">Transactions on Mathematical Software, 26 (4), 2000, 527&#8211;55
</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">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -496,7 +515,7 @@ class="cmr-12">2016, 23:501-518</span>
</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">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -518,7 +537,7 @@ class="cmr-12">, MIT Press, 1998.</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">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -537,10 +556,27 @@ class="cmti-12">Algebra Subprograms for FORTRAN usage</span><span
class="cmr-12">, ACM Transactions on</span>
<span
class="cmr-12">Mathematical Software, 5 (3), 1979, 308&#8211;323.</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">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
id="XLOTTES"></a><span
class="cmr-12">J.</span><span
class="cmr-12">&#x00A0;Lottes, </span><span
class="cmti-12">Optimal polynomial smoothers for multigrid V-cycles</span><span
class="cmr-12">,</span>
<span
class="cmr-12">Numerical Linear Algebra with Applications 30.6 (2023): e2518.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[28]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -557,13 +593,10 @@ class="cmti-12">Distributed-memory Sparse Direct Solver for Unsymmetric Linear S
class="cmr-12">,</span>
<span
class="cmr-12">ACM Transactions on Mathematical Software, 29 (2), 2003, 110&#8211;140.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[27]</span><span class="bibsp"><span
class="cmr-12">[29]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -579,7 +612,7 @@ class="cmr-12">Numerical Linear Algebra with Applications, 15 (5), 2008, 473&#82
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[28]</span><span class="bibsp"><span
class="cmr-12">[30]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -593,7 +626,7 @@ class="cmr-12">2003.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[29]</span><span class="bibsp"><span
class="cmr-12">[31]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -611,7 +644,7 @@ class="cmr-12">University Press, 1996.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[30]</span><span class="bibsp"><span
class="cmr-12">[32]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -631,7 +664,7 @@ class="cmr-12">Press, 1998.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[31]</span><span class="bibsp"><span
class="cmr-12">[33]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -650,7 +683,7 @@ class="cmr-12">&#x00A0;Oosterlee, Multigrid, Academic Press, 2001.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[32]</span><span class="bibsp"><span
class="cmr-12">[34]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -665,10 +698,13 @@ class="cmti-12">Aggregation Strategies on Massively Parallel Machines</span
class="cmr-12">, in J. Donnelley,</span>
<span
class="cmr-12">editor, Proceedings of SuperComputing 2000, Dallas, 2000.</span>
</p>
<p class="bibitem" ><span class="biblabel">
<span
class="cmr-12">[33]</span><span class="bibsp"><span
class="cmr-12">[35]</span><span class="bibsp"><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span></span></span><a
@ -690,6 +726,9 @@ class="cmr-12">(3) 1996, 179&#8211;196.</span></p></div>
<!--l. 156--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlse9.html" ><span

@ -88,19 +88,19 @@ class="cmr-12">5</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#XStuben_01"><span
class="cmr-12">31</span></a><span
class="cmr-12">33</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">), to be used in the iterative solution of linear systems,</span>
<table
class="equation"><tr><td>
<center class="math-display" >
<div class="math-display" >
<img
src="userhtml0x.png" alt="Ax = b,
" class="math-display" ><a
id="x4-3001r1"></a></center></td><td class="equation-label"><span
id="x4-3001r1"></a></div>
</td><td class="equation-label"><span
class="cmr-12">(1)</span></td></tr></table>
<!--l. 11--><p class="nopar" >
<span
<!--l. 11--><p class="nopar" ><span
class="cmr-12">where </span><span
class="cmmi-12">A </span><span
class="cmr-12">is a square, real or complex, sparse symmetric positive definite (s.p.d)</span>
@ -121,7 +121,7 @@ class="cmr-12">5</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#XNotay2008"><span
class="cmr-12">27</span></a><span
class="cmr-12">29</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">; they can be combined with Jacobi, hybrid forward/backward</span>
<span
@ -149,7 +149,8 @@ class="cmr-12">problem, e.g., the discretization of a PDE. To this end, two diff
<span
class="cmr-12">strategies, based on aggregation, are available:</span>
<ul class="itemize1">
<li class="itemize"><span
<li class="itemize">
<!--l. 35--><p class="noindent" ><span
class="cmr-12">a decoupled version of the smoothed aggregation procedure proposed in</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
@ -159,7 +160,7 @@ class="cmr-12">,</span>
<span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#XVANEK_MANDEL_BREZINA"><span
class="cmr-12">33</span></a><span
class="cmr-12">35</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">&#x00A0;</span><span class="cite"><span
@ -176,7 +177,8 @@ class="cmr-12">;</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 39--><p class="noindent" ><span
class="cmr-12">a coupled, parallel implementation of the Coarsening based on Compatible</span>
<span
class="cmr-12">Weighted Matching introduced in</span><span
@ -232,11 +234,11 @@ class="cmr-12">computational framework</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#Xpsblas_00"><span
class="cmr-12">22</span></a><span
class="cmr-12">23</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#XPSBLAS3"><span
class="cmr-12">21</span></a><span
class="cmr-12">22</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">. PSBLAS provides basic linear algebra operators</span>
<span
@ -283,11 +285,11 @@ class="cmr-12">AMG4PSBLAS has a layered and modular software architecture where
class="cmr-12">layers can be identified. The lower layer consists of the PSBLAS kernels, the middle</span>
<span
class="cmr-12">one implements the construction and application phases of the preconditioners, and the</span>
<span
class="cmr-12">upper one provides a uniform interface to all the preconditioners. This architecture</span>
<span
class="cmr-12">upper one provides a uniform interface to all the preconditioners. This architecture</span>
<span
class="cmr-12">allows for different levels of use of the package: few black-box routines at the upper</span>
<span
@ -362,6 +364,9 @@ class="cmr-12">.</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlse2.html" ><span

@ -33,10 +33,10 @@ class="cmr-12">2 </span></span> <a
class="cmr-12">Code Distribution</span></h3>
<!--l. 5--><p class="noindent" ><span
class="cmr-12">AMG4PSBLAS is available from the web site</span>
<div class="quotation">
<!--l. 8--><p class="indent" > <a
<blockquote class="quotation">
<!--l. 8--><p class="indent" > <a
href="https://psctoolkit.github.io/products/amg4psblas/" ><span
class="cmr-12">https://psctoolkit.github.io/products/amg4psblas/</span></a></div>
class="cmr-12">https://psctoolkit.github.io/products/amg4psblas/</span></a></blockquote>
<!--l. 10--><p class="noindent" ><span
class="cmr-12">where contact points for further information can be also found.</span>
<!--l. 12--><p class="indent" > <span
@ -53,23 +53,20 @@ class="cmr-12">different and more stringent license, most notably the GPL, and t
class="cmr-12">into account when treating derived works.</span>
<!--l. 18--><p class="indent" > <span
class="cmr-12">The library defines a version string with the constant</span>
<center class="math-display" >
<div class="math-display" >
<img
src="userhtml1x.png" alt="amg_version_string_
" class="math-display" ></center>
" class="math-display" ></div>
<!--l. 20--><p class="nopar" > <span
class="cmr-12">whose current value is </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">1.0</span></span></span><span
class="cmr-12">whose current value is </span><span class="obeylines-h"><code class="verb">1.0</code></span><span
class="cmr-12">.</span>
<!--l. 23--><p class="noindent" >
<div class="likesubsectionTOCS">
<span
class="cmr-12">&#x00A0;</span><span class="likesubsectionToc" ><a
href="userhtmlli3.html#x6-50002"><span
<span class="likesubsectionToc" ><a
href="userhtmlli3.html#x6-5000"><span
class="cmr-12">Contributors</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="likesubsectionToc" ><a
href="userhtmlli4.html#x7-60002"><span
<br /> <span class="likesubsectionToc" ><a
href="userhtmlli4.html#x7-6000"><span
class="cmr-12">Citing AMG4PSBLAS</span></a></span>
</div>

@ -34,8 +34,7 @@ class="cmr-12">Configuring and Building AMG4PSBLAS</span></h3>
<!--l. 4--><p class="noindent" ><span
class="cmr-12">In order to build AMG4PSBLAS it is necessary to set up a Makefile with appropriate</span>
<span
class="cmr-12">system-dependent variables; this is done by means of the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">configure</span></span></span> <span
class="cmr-12">system-dependent variables; this is done by means of the </span><span class="obeylines-h"><code class="verb">configure</code></span> <span
class="cmr-12">script. The</span>
<span
class="cmr-12">distribution also includes the autoconf and automake sources employed to generate the</span>
@ -48,12 +47,10 @@ class="cmr-12">&#x00A0;2003, with some</span>
class="cmr-12">interfaces to external libraries in C; the Fortran compiler must support the</span>
<span
class="cmr-12">Fortran</span><span
class="cmr-12">&#x00A0;2003 standard plus the extension </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">MOLD=</span></span></span> <span
class="cmr-12">&#x00A0;2003 standard plus the extension </span><span class="obeylines-h"><code class="verb">MOLD=</code></span> <span
class="cmr-12">feature, which enhances the usability</span>
<span
class="cmr-12">of </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">ALLOCATE</span></span></span><span
class="cmr-12">of </span><span class="obeylines-h"><code class="verb">ALLOCATE</code></span><span
class="cmr-12">. Most Fortran compilers provide this feature; in particular, this is</span>
<span
class="cmr-12">supported by the GNU Fortran compiler, for which we recommend to use at least</span>
@ -87,28 +84,23 @@ class="cmr-12">the base and optional software used by AMG4PSBLAS is given in the
class="cmr-12">sections.</span>
<!--l. 30--><p class="noindent" >
<div class="subsectionTOCS">
<span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<span class="subsectionToc" ><span
class="cmr-12">3.1 </span><a
href="userhtmlsu1.html#x9-80003.1"><span
class="cmr-12">Prerequisites</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.2 </span><a
href="userhtmlsu2.html#x10-90003.2"><span
class="cmr-12">Optional third party libraries</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.3 </span><a
href="userhtmlsu3.html#x11-100003.3"><span
class="cmr-12">Configuration options</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.4 </span><a
href="userhtmlsu4.html#x12-110003.4"><span
class="cmr-12">Bug reporting</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">3.5 </span><a
href="userhtmlsu5.html#x13-120003.5"><span
class="cmr-12">Example and test programs</span></a></span>

@ -40,56 +40,46 @@ class="cmr-12">PSBLAS</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span>
<!--l. 9--><p class="indent" > <span
class="cmr-12">The following steps are required:</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x14-13002x1"><span
<li
class="enumerate" id="x14-13002x1">
<!--l. 11--><p class="noindent" ><span
class="cmti-12">Declare the preconditioner data structure</span><span
class="cmr-12">. It is a derived data type,</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">prec_</span></span></span> <span class="obeylines-h"><span class="verb"><span
class="cmtt-12">type</span></span></span><span
<span class="obeylines-h"><code class="verb">amg_</code></span><span
class="cmti-12">x</span><span class="obeylines-h"><code class="verb">prec_</code></span> <span class="obeylines-h"><code class="verb">type</code></span><span
class="cmr-12">, where </span><span
class="cmti-12">x </span><span
class="cmr-12">may be </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">s</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">d</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">c</span></span></span> <span
class="cmr-12">or </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">z</span></span></span><span
class="cmr-12">may be </span><span class="obeylines-h"><code class="verb">s</code></span><span
class="cmr-12">, </span><span class="obeylines-h"><code class="verb">d</code></span><span
class="cmr-12">, </span><span class="obeylines-h"><code class="verb">c</code></span> <span
class="cmr-12">or </span><span class="obeylines-h"><code class="verb">z</code></span><span
class="cmr-12">, according to the basic data</span>
<span
class="cmr-12">type of the sparse matrix (</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">s</span></span></span> <span
class="cmr-12">= real single precision; </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">d</span></span></span> <span
class="cmr-12">type of the sparse matrix (</span><span class="obeylines-h"><code class="verb">s</code></span> <span
class="cmr-12">= real single precision; </span><span class="obeylines-h"><code class="verb">d</code></span> <span
class="cmr-12">= real double precision;</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">c</span></span></span> <span
class="cmr-12">= complex single precision; </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">z</span></span></span> <span
<span class="obeylines-h"><code class="verb">c</code></span> <span
class="cmr-12">= complex single precision; </span><span class="obeylines-h"><code class="verb">z</code></span> <span
class="cmr-12">= complex double precision). This data</span>
<span
class="cmr-12">structure is accessed by the user only through the AMG4PSBLAS routines,</span>
<span
class="cmr-12">following an object-oriented approach.</span>
</li>
<li
class="enumerate" id="x14-13004x2"><span
<li
class="enumerate" id="x14-13004x2">
<!--l. 19--><p class="noindent" ><span
class="cmti-12">Allocate and initialize the preconditioner data structure, according to a</span>
<span
class="cmti-12">preconditioner type chosen by the user</span><span
class="cmr-12">. This is performed by the routine</span>
<span class="lstinline"></span><span
class="cmtt-12">init</span><span
<code class="lstinline"><span style="color:#000000">init</span></code><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>
@ -98,34 +88,35 @@ class="cmr-12">are given in Table</span><span
class="cmr-12">&#x00A0;</span><a
href="#x14-13015r1"><span
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmr-12">, where the strings used by </span><span class="lstinline"></span><span
class="cmtt-12">init</span> <span
class="cmr-12">, where the strings used by </span><code class="lstinline"><span style="color:#000000">init</span></code> <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>
<span
class="cmr-12">uppercase letters are substituted by corresponding lowercase ones.</span>
</li>
<li
class="enumerate" id="x14-13006x3"><span
<li
class="enumerate" id="x14-13006x3">
<!--l. 29--><p class="noindent" ><span
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="lstinline"></span><span
class="cmtt-12">set</span><span
class="cmr-12">This is performed by the routine </span><code class="lstinline"><span style="color:#000000">set</span></code><span
class="cmr-12">. This routine must be</span>
<span
class="cmr-12">called 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="lstinline"></span><span
class="cmtt-12">set</span> <span
class="cmr-12">preconditioner. Examples of use of </span><code class="lstinline"><span style="color:#000000">set</span></code> <span
class="cmr-12">are given in Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu6.html#x15-140004.1"><span
class="cmr-12">4.1</span><!--tex4ht:ref: sec:examples --></a><span
class="cmr-12">; a complete</span>
<span
class="cmr-12">list of all the preconditioner parameters and their allowed and default values</span>
<span
@ -142,62 +133,57 @@ href="userhtmlsu9.html#x19-18015r8"><span
class="cmr-12">8</span><!--tex4ht:ref: tab:p_smoother_1 --></a><span
class="cmr-12">.</span>
</li>
<li
class="enumerate" id="x14-13008x4"><span
<li
class="enumerate" id="x14-13008x4">
<!--l. 40--><p class="noindent" ><span
class="cmti-12">Build the preconditioner for a given matrix</span><span
class="cmr-12">. If the selected preconditioner is</span>
<span
class="cmr-12">multilevel, then two steps must be performed, as specified next.</span>
<ol class="enumerate2" >
<li
class="enumerate" id="x14-13009x0"><span
<li
class="enumerate" id="x14-13009x0">
<!--l. 43--><p class="noindent" ><span
class="cmti-12">Build the AMG hierarchy for a given matrix. </span><span
class="cmr-12">This is performed by the</span>
<span
class="cmr-12">routine </span><span class="lstinline"></span><span
class="cmtt-12">hierarchy_build</span><span
class="cmr-12">routine </span><code class="lstinline"><span style="color:#000000">hierarchy_build</span></code><span
class="cmr-12">.</span>
</li>
<li
class="enumerate" id="x14-13010x0"><span
<li
class="enumerate" id="x14-13010x0">
<!--l. 45--><p class="noindent" ><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="lstinline"></span><span
class="cmtt-12">smoothers_build</span><span
class="cmr-12">routine </span><code class="lstinline"><span style="color:#000000">smoothers_build</span></code><span
class="cmr-12">.</span></li></ol>
<!--l. 48--><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="lstinline"></span><span
class="cmtt-12">bld</span><span
class="cmr-12">the routine </span><code class="lstinline"><span style="color:#000000">bld</span></code><span
class="cmr-12">.</span>
</li>
<li
class="enumerate" id="x14-13012x5"><span
<li
class="enumerate" id="x14-13012x5">
<!--l. 50--><p class="noindent" ><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="lstinline"></span><span
class="cmtt-12">apply</span><span
class="cmr-12">the method </span><code class="lstinline"><span style="color:#000000">apply</span></code><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="lstinline"></span><span
class="cmtt-12">apply</span> <span
class="cmr-12">completely transparent to the user, since </span><code class="lstinline"><span style="color:#000000">apply</span></code> <span
class="cmr-12">is called by the PSBLAS routine</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">implementing the Krylov solver (</span><code class="lstinline"><span style="color:#000000">psb_krylov</span></code><span
class="cmr-12">).</span>
</li>
<li
class="enumerate" id="x14-13014x6"><span
<li
class="enumerate" id="x14-13014x6">
<!--l. 54--><p class="noindent" ><span
class="cmti-12">Free the preconditioner data structure</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">. This is performed by the routine </span><code class="lstinline"><span style="color:#000000">free</span></code><span
class="cmr-12">.</span>
<span
class="cmr-12">This step is complementary to step 1 and should be performed when the</span>
@ -231,28 +217,28 @@ class="cmr-12">.</span>
>
<!--l. 64--><p class="noindent" >
<div class="tabular"> <table id="TBL-1" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-1-1g"><col
id="TBL-1-1"></colgroup><colgroup id="TBL-1-2g"><col
id="TBL-1-2"></colgroup><colgroup id="TBL-1-3g"><col
id="TBL-1-3"></colgroup><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-1-1"
class="td11"><span
class="td11"> <span
class="cmcsc-10x-x-109"><span
class="small-caps">t</span><span
class="small-caps">y</span><span
class="small-caps">p</span><span
class="small-caps">e</span> </span></td><td style="white-space:normal; text-align:left;" id="TBL-1-1-2"
class="td11"><!--l. 68--><p class="noindent" ><span
class="small-caps">e</span> </span></td><td style="white-space:normal; text-align:left;" id="TBL-1-1-2"
class="td11"> <!--l. 68--><p class="noindent" ><span
class="cmcsc-10x-x-109"><span
class="small-caps">s</span><span
class="small-caps">t</span><span
class="small-caps">r</span><span
class="small-caps">i</span><span
class="small-caps">n</span><span
class="small-caps">g</span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-1-3"
class="td11"><!--l. 68--><p class="noindent" ><span
class="small-caps">g</span></span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-1-3"
class="td11"> <!--l. 68--><p class="noindent" ><span
class="cmcsc-10x-x-109"><span
class="small-caps">d</span><span
class="small-caps">e</span><span
@ -274,121 +260,98 @@ class="small-caps">i</span><span
class="small-caps">o</span><span
class="small-caps">n</span><span
class="small-caps">e</span><span
class="small-caps">r</span></span> </td></tr><tr
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. 69--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">NONE</span><span
class="cmtt-10x-x-109">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-2-3"
class="td11"><!--l. 69--><p class="noindent" >Considered to use the PSBLAS Krylov
solvers with no preconditioner. </td>
class="td11">
No preconditioner </td><td style="white-space:normal; text-align:left;" id="TBL-1-2-2"
class="td11"> <!--l. 69--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">NONE</span><span style="color:#000000">&#8217;</span></code>
</td><td style="white-space:normal; text-align:left;" id="TBL-1-2-3"
class="td11"> <!--l. 69--><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. 71--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">DIAG</span><span
class="cmtt-10x-x-109">&#8217;</span>,
<span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">JACOBI</span><span
class="cmtt-10x-x-109">&#8217;</span>,
<span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</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">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-3-3"
class="td11"><!--l. 71--><p class="noindent" >Diagonal preconditioner. For any zero
diagonal entry of the matrix to be
preconditioned, the corresponding entry
of the preconditioner is set to&#x00A0;1. </td>
class="td11">
Diagonal </td><td style="white-space:normal; text-align:left;" id="TBL-1-3-2"
class="td11"> <!--l. 71--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">DIAG</span><span style="color:#000000">&#8217;</span></code>,
<code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">JACOBI</span><span style="color:#000000">&#8217;</span></code>,
<code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">L1</span><span style="color:#000000">-</span><span style="color:#000000">JACOBI</span><span style="color:#000000">&#8217;</span></code>
</td><td style="white-space:normal; text-align:left;" id="TBL-1-3-3"
class="td11"> <!--l. 71--><p class="noindent" >Diagonal preconditioner. For any zero
diagonal entry of the matrix to be
preconditioned, the corresponding entry
of the preconditioner is set to&#x00A0;1.
</td>
</tr><tr
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. 74--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">GS</span><span
class="cmtt-10x-x-109">&#8217;</span>,
<span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</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">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-4-3"
class="td11"><!--l. 74--><p class="noindent" >Hybrid Gauss-Seidel (forward), that is,
global block Jacobi with Gauss-Seidel as
local solver. </td>
class="td11">
Gauss-Seidel </td><td style="white-space:normal; text-align:left;" id="TBL-1-4-2"
class="td11"> <!--l. 74--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">GS</span><span style="color:#000000">&#8217;</span></code>,
<code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">L1</span><span style="color:#000000">-</span><span style="color:#000000">GS</span><span style="color:#000000">&#8217;</span></code>
</td><td style="white-space:normal; text-align:left;" id="TBL-1-4-3"
class="td11"> <!--l. 74--><p class="noindent" >Hybrid Gauss-Seidel (forward), that is,
global block Jacobi with Gauss-Seidel as
local solver.
</td>
</tr><tr
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. 77--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">FBGS</span><span
class="cmtt-10x-x-109">&#8217;</span>,
<span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</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">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-5-3"
class="td11"><!--l. 77--><p class="noindent" >Symmetrized hybrid Gauss-Seidel, that
is, forward Gauss-Seidel followed by
backward Gauss-Seidel. </td>
class="td11">
Symmetrized Gauss-Seidel </td><td style="white-space:normal; text-align:left;" id="TBL-1-5-2"
class="td11"> <!--l. 77--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">FBGS</span><span style="color:#000000">&#8217;</span></code>,
<code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">L1</span><span style="color:#000000">-</span><span style="color:#000000">FBGS</span><span style="color:#000000">&#8217;</span></code>
</td><td style="white-space:normal; text-align:left;" id="TBL-1-5-3"
class="td11"> <!--l. 77--><p class="noindent" >Symmetrized hybrid Gauss-Seidel, that
is, forward Gauss-Seidel followed by
backward Gauss-Seidel.
</td>
</tr><tr
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. 80--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">BJAC</span><span
class="cmtt-10x-x-109">&#8217;</span>,
<span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</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">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-6-3"
class="td11"><!--l. 80--><p class="noindent" >Block-Jacobi with ILU(0) on the local
blocks. </td>
class="td11">
Block Jacobi </td><td style="white-space:normal; text-align:left;" id="TBL-1-6-2"
class="td11"> <!--l. 80--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">BJAC</span><span style="color:#000000">&#8217;</span></code>,
<code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">L1</span><span style="color:#000000">-</span><span style="color:#000000">BJAC</span><span style="color:#000000">&#8217;</span></code>
</td><td style="white-space:normal; text-align:left;" id="TBL-1-6-3"
class="td11"> <!--l. 80--><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. 81--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">AS</span><span
class="cmtt-10x-x-109">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-7-3"
class="td11"><!--l. 81--><p class="noindent" >Additive Schwarz (AS), with overlap&#x00A0;1
and ILU(0) on the local blocks. </td>
class="td11">
Additive Schwarz </td><td style="white-space:normal; text-align:left;" id="TBL-1-7-2"
class="td11"> <!--l. 81--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">AS</span><span style="color:#000000">&#8217;</span></code>
</td><td style="white-space:normal; text-align:left;" id="TBL-1-7-3"
class="td11"> <!--l. 81--><p class="noindent" >Additive Schwarz (AS), with overlap&#x00A0;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. 83--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-10x-x-109">&#8217;</span><span
class="cmtt-10x-x-109">ML</span><span
class="cmtt-10x-x-109">&#8217;</span> </td><td style="white-space:normal; text-align:left;" id="TBL-1-8-3"
class="td11"><!--l. 83--><p class="noindent" >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)
as coarsest-level solver. See the default
values in Tables&#x00A0;<a
class="td11">
Multilevel </td><td style="white-space:normal; text-align:left;" id="TBL-1-8-2"
class="td11"> <!--l. 83--><p class="noindent" ><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">ML</span><span style="color:#000000">&#8217;</span></code>
</td><td style="white-space:normal; text-align:left;" id="TBL-1-8-3"
class="td11"> <!--l. 83--><p class="noindent" >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)
as coarsest-level solver. See the default
values in Tables&#x00A0;<a
href="userhtmlsu9.html#x19-18009r2">2<!--tex4ht:ref: tab:p_cycle --></a>-<a
href="userhtmlsu9.html#x19-18015r8">8<!--tex4ht:ref: tab:p_smoother_1 --></a> for further details of
the preconditioner. </td>
the preconditioner.
</td>
</tr><tr
class="hline"><td><hr></td><td><hr></td><td><hr></td></tr><tr
style="vertical-align:baseline;" id="TBL-1-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-1-9-1"
class="td11"> </td></tr></table></div>
class="td11"> </td></tr></table> </div>
<br /> <div class="caption"
><span class="id">Table&#x00A0;1: </span><span
class="content">Preconditioner types, corresponding strings and default choices. </span></div><!--tex4ht:label?: x14-13015r1 -->
@ -399,18 +362,15 @@ class="content">Preconditioner types, corresponding strings and default choices.
</div><hr class="endfloat" />
</div>
<!--l. 98--><p class="indent" > <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">Note that the module </span><code class="lstinline"><span style="color:#000000">amg_prec_mod</span></code><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="lstinline"></span><span
class="cmtt-12">psb_base_mod</span><span
class="cmr-12">in any program calling such routines. The modules </span><code class="lstinline"><span style="color:#000000">psb_base_mod</span></code><span
class="cmr-12">, for the</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">sparse matrix and communication descriptor data types, and </span><code class="lstinline"><span style="color:#000000">psb_krylov_mod</span></code><span
class="cmr-12">,</span>
<span
class="cmr-12">for interfacing with the Krylov solvers, must be also used (see Section</span><span
@ -436,13 +396,11 @@ class="cmr-12">problems. However, this does not necessarily correspond to the sh
class="cmr-12">on parallel</span><span
class="cmr-12">&#x00A0;computers.</span>
<div class="subsectionTOCS">
<span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<span class="subsectionToc" ><span
class="cmr-12">4.1 </span><a
href="userhtmlsu6.html#x15-140004.1"><span
class="cmr-12">Examples</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">4.2 </span><a
href="userhtmlsu7.html#x16-150004.2"><span
class="cmr-12">GPU example</span></a></span>

@ -33,28 +33,20 @@ 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="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
<code class="lstinline"><span style="color:#000000">init</span></code><span
class="cmr-12">, </span><code class="lstinline"><span style="color:#000000">set</span></code><span
class="cmr-12">, </span><code class="lstinline"><span style="color:#000000">build</span></code><span
class="cmr-12">, </span><code class="lstinline"><span style="color:#000000">hierarchy_build</span></code><span
class="cmr-12">, </span><code class="lstinline"><span style="color:#000000">smoothers_build</span></code> <span
class="cmr-12">and </span><code class="lstinline"><span style="color:#000000">apply</span></code> <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="lstinline"></span><span
class="cmtt-12">free</span> <span
class="cmr-12">preconditioner implemented in the package. The method </span><code class="lstinline"><span style="color:#000000">free</span></code> <span
class="cmr-12">deallocates the</span>
<span
class="cmr-12">preconditioner data structure, while </span><span class="lstinline"></span><span
class="cmtt-12">descr</span> <span
class="cmr-12">preconditioner data structure, while </span><code class="lstinline"><span style="color:#000000">descr</span></code> <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>
@ -67,53 +59,44 @@ class="cmr-12">real/complex and single/double precision data; arguments with app
<span
class="cmr-12">must be passed to the method, i.e.,</span>
<ul class="itemize1">
<li class="itemize"><span
<li class="itemize">
<!--l. 20--><p class="noindent" ><span
class="cmr-12">the sparse matrix data structure, containing the matrix to be preconditioned,</span>
<span
class="cmr-12">must be of type </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">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></span> <span
class="cmr-12">must be of type </span><span class="obeylines-h"><code class="verb">psb_</code></span><span
class="cmti-12">x</span><span class="obeylines-h"><code class="verb">spmat_type</code></span> <span
class="cmr-12">with </span><span
class="cmti-12">x </span><span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">s</span></span></span> <span
class="cmr-12">= </span><span class="obeylines-h"><code class="verb">s</code></span> <span
class="cmr-12">for real single precision, </span><span
class="cmti-12">x</span>
<span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">d</span></span></span> <span
class="cmr-12">= </span><span class="obeylines-h"><code class="verb">d</code></span> <span
class="cmr-12">for real double precision, </span><span
class="cmti-12">x </span><span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">c</span></span></span> <span
class="cmr-12">= </span><span class="obeylines-h"><code class="verb">c</code></span> <span
class="cmr-12">for complex single precision, </span><span
class="cmti-12">x </span><span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">z</span></span></span> <span
class="cmr-12">= </span><span class="obeylines-h"><code class="verb">z</code></span> <span
class="cmr-12">for</span>
<span
class="cmr-12">complex double precision;</span>
</li>
<li class="itemize"><span
class="cmr-12">the preconditioner data structure must be of type </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">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></span><span
<li class="itemize">
<!--l. 25--><p class="noindent" ><span
class="cmr-12">the preconditioner data structure must be of type </span><span class="obeylines-h"><code class="verb">amg_</code></span><span
class="cmti-12">x</span><span class="obeylines-h"><code class="verb">prec_type</code></span><span
class="cmr-12">, with </span><span
class="cmti-12">x</span>
<span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">s</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">d</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">c</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">z</span></span></span><span
class="cmr-12">= </span><span class="obeylines-h"><code class="verb">s</code></span><span
class="cmr-12">, </span><span class="obeylines-h"><code class="verb">d</code></span><span
class="cmr-12">, </span><span class="obeylines-h"><code class="verb">c</code></span><span
class="cmr-12">, </span><span class="obeylines-h"><code class="verb">z</code></span><span
class="cmr-12">, according to the sparse matrix data structure;</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 29--><p class="noindent" ><span
class="cmr-12">the arrays containing the vectors </span><span
class="cmmi-12">v </span><span
class="cmr-12">and </span><span
@ -127,24 +110,19 @@ class="cmmi-12">B</span><sup><span
class="cmsy-8">-</span><span
class="cmr-8">1</span></sup><span
class="cmmi-12">v </span><span
class="cmr-12">must be of type </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">psb_</span></span></span><span
class="cmti-12">x</span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">vect_type</span></span></span> <span
class="cmr-12">must be of type </span><span class="obeylines-h"><code class="verb">psb_</code></span><span
class="cmti-12">x</span><span class="obeylines-h"><code class="verb">vect_type</code></span> <span
class="cmr-12">with </span><span
class="cmti-12">x </span><span
class="cmr-12">= </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">s</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">d</span></span></span><span
class="cmr-12">, </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">c</span></span></span><span
class="cmr-12">= </span><span class="obeylines-h"><code class="verb">s</code></span><span
class="cmr-12">, </span><span class="obeylines-h"><code class="verb">d</code></span><span
class="cmr-12">, </span><span class="obeylines-h"><code class="verb">c</code></span><span
class="cmr-12">,</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">z</span></span></span><span
<span class="obeylines-h"><code class="verb">z</code></span><span
class="cmr-12">, in a manner completely analogous to the sparse matrix type;</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 34--><p class="noindent" ><span
class="cmr-12">real parameters defining the preconditioner must be declared according to</span>
<span
class="cmr-12">the precision of the sparse matrix and preconditioner data structures (see</span>
@ -160,81 +138,62 @@ class="cmr-12">A description of each method is given in the remainder of this se
<div class="subsectionTOCS">
<span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<span class="subsectionToc" ><span
class="cmr-12">5.1 </span><a
href="userhtmlsu8.html#x18-170005.1"><span
class="cmr-12">Method init</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.2 </span><a
href="userhtmlsu9.html#x19-180005.2"><span
class="cmr-12">Method set</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.3 </span><a
href="userhtmlsu10.html#x20-190005.3"><span
class="cmr-12">Method hierarchy</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.4 </span><a
href="userhtmlsu11.html#x21-200005.4"><span
class="cmr-12">Method smoothers</span><span
class="cmr-12">_build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.5 </span><a
href="userhtmlsu12.html#x22-210005.5"><span
class="cmr-12">Method build</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.6 </span><a
href="userhtmlsu13.html#x23-220005.6"><span
class="cmr-12">Method apply</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.7 </span><a
href="userhtmlsu14.html#x24-230005.7"><span
class="cmr-12">Method free</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.8 </span><a
href="userhtmlsu15.html#x25-240005.8"><span
class="cmr-12">Method descr</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span class="subsectionToc" ><span
<br /> <span class="subsectionToc" ><span
class="cmr-12">5.9 </span><a
href="userhtmlsu16.html#x26-250005.9"><span
class="cmr-12">Auxiliary Methods</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
<br /> <span class="subsubsectionToc" ><span
class="cmr-12">5.9.1 </span><a
href="userhtmlsu16.html#x26-260005.9.1"><span
class="cmr-12">Method: dump</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
<br /> <span class="subsubsectionToc" ><span
class="cmr-12">5.9.2 </span><a
href="userhtmlsu16.html#x26-270005.9.2"><span
class="cmr-12">Method: clone</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
<br /> <span class="subsubsectionToc" ><span
class="cmr-12">5.9.3 </span><a
href="userhtmlsu16.html#x26-280005.9.3"><span
class="cmr-12">Method: sizeof</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
<br /> <span class="subsubsectionToc" ><span
class="cmr-12">5.9.4 </span><a
href="userhtmlsu16.html#x26-290005.9.4"><span
class="cmr-12">Method: allocate</span><span
class="cmr-12">_wrk</span></a></span>
<br /> <span
class="cmr-12">&#x00A0;</span><span
class="cmr-12">&#x00A0;</span><span class="subsubsectionToc" ><span
<br /> <span class="subsubsectionToc" ><span
class="cmr-12">5.9.5 </span><a
href="userhtmlsu16.html#x26-300005.9.5"><span
class="cmr-12">Method: free</span><span

@ -63,57 +63,28 @@ class="cmr-12">Once the new smoother/solver class has been developed, to use it
<span
class="cmr-12">the multilevel preconditioners it is necessary to:</span>
<ul class="itemize1">
<li class="itemize"><span
<li class="itemize">
<!--l. 23--><p class="noindent" ><span
class="cmr-12">declare in the application program a variable of the new type;</span>
</li>
<li class="itemize"><span
class="cmr-12">pass that variable as the argument to the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span> <span
<li class="itemize">
<!--l. 24--><p class="noindent" ><span
class="cmr-12">pass that variable as the argument to the </span><span class="obeylines-h"><code class="verb">set</code></span> <span
class="cmr-12">routine as in the following:</span>
<div class="center"
>
<!--l. 26--><p class="noindent" >
<!--l. 27--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</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">&#x00A0;</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">&#x00A0;</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">&#x00A0;</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>
<!--l. 27--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">set</span><span style="color:#000000">(</span><span style="color:#000000">smoother</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000"> </span><span style="color:#000000">[,</span><span style="color:#000000">ilev</span><span style="color:#000000">,</span><span style="color:#000000">ilmax</span><span style="color:#000000">,</span><span style="color:#000000">pos</span><span style="color:#000000">])</span></code><br />
<code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">set</span><span style="color:#000000">(</span><span style="color:#000000">solver</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000"> </span><span style="color:#000000">[,</span><span style="color:#000000">ilev</span><span style="color:#000000">,</span><span style="color:#000000">ilmax</span><span style="color:#000000">,</span><span style="color:#000000">pos</span><span style="color:#000000">])</span></code></div>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 30--><p class="noindent" ><span
class="cmr-12">link the code implementing the various methods into the application</span>
<span
class="cmr-12">executable.</span></li></ul>
<!--l. 32--><p class="noindent" ><span
class="cmr-12">The new solver object is then dynamically included in the preconditioner structure,</span>
<span
@ -124,14 +95,9 @@ class="cmr-12">to which the preconditioner will conform, even though</span>
class="cmr-12">the AMG4PSBLAS library has not been modified to account for this new</span>
<span
class="cmr-12">development.</span>
<!--l. 37--><p class="indent" > <span
class="cmr-12">It is possible to define new values for the keyword </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">WHAT</span></span></span> <span
class="cmr-12">in the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">set</span></span></span> <span
class="cmr-12">It is possible to define new values for the keyword </span><span class="obeylines-h"><code class="verb">WHAT</code></span> <span
class="cmr-12">in the </span><span class="obeylines-h"><code class="verb">set</code></span> <span
class="cmr-12">routine; if the</span>
<span
class="cmr-12">library code does not recognize a keyword, it passes it down the composition hierarchy</span>
@ -147,8 +113,7 @@ class="cmr-12">any keyword/value pair that does not pertain to a given solver is
class="cmr-12">ignored.</span>
<!--l. 46--><p class="indent" > <span
class="cmr-12">An example is provided in the source code distribution under the folder</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">tests/newslv</span></span></span><span
<span class="obeylines-h"><code class="verb">tests/newslv</code></span><span
class="cmr-12">. In this example we are implementing a new incomplete factorization</span>
<span
class="cmr-12">variant (which is simply the ILU(0) factorization under a new name). Because of the</span>
@ -165,61 +130,51 @@ 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-22" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-22-1g"><col
id="TBL-22-1"><col
id="TBL-22-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-22-1-"><td style="white-space:normal; text-align:left;" id="TBL-22-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-22-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>
<div class="tabular"> <table id="TBL-23" class="tabular"
><colgroup id="TBL-23-1g"><col
id="TBL-23-1"><col
id="TBL-23-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-23-1-"><td style="white-space:normal; text-align:left;" id="TBL-23-1-1"
class="td11"> <!--l. 58--><p class="noindent" ><code class="lstinline"><span style="color:#000000">smoother</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-23-1-2"
class="td11"> <!--l. 58--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">amg_x_base_smoother_type</span><span style="color:#000000">)</span></code> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-22-2-"><td style="white-space:normal; text-align:left;" id="TBL-22-2-1"
class="td11"><!--l. 59--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-22-2-2"
class="td11"><!--l. 59--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-23-2-"><td style="white-space:normal; text-align:left;" id="TBL-23-2-1"
class="td11"> <!--l. 59--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-23-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>
<span
class="cmr-12">preconditioner.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-22-3-"><td style="white-space:normal; text-align:left;" id="TBL-22-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-22-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>
style="vertical-align:baseline;" id="TBL-23-3-"><td style="white-space:normal; text-align:left;" id="TBL-23-3-1"
class="td11"> <!--l. 61--><p class="noindent" ><code class="lstinline"><span style="color:#000000">solver</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-23-3-2"
class="td11"> <!--l. 61--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">amg_x_base_solver_type</span><span style="color:#000000">)</span></code> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-22-4-"><td style="white-space:normal; text-align:left;" id="TBL-22-4-1"
class="td11"><!--l. 62--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-22-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>
style="vertical-align:baseline;" id="TBL-23-4-"><td style="white-space:normal; text-align:left;" id="TBL-23-4-1"
class="td11"> <!--l. 62--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-23-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
class="cmr-12">The other arguments are defined in the way described in Sec.</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu9.html#x19-180005.2"><span
class="cmr-12">5.2</span><!--tex4ht:ref: sec:precset --></a><span
class="cmr-12">. As an example, in the</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">tests/newslv</span></span></span> <span
class="cmr-12">code we define a new object of type </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_d_tlu_solver_type</span></span></span><span
<span class="obeylines-h"><code class="verb">tests/newslv</code></span> <span
class="cmr-12">code we define a new object of type </span><span class="obeylines-h"><code class="verb">amg_d_tlu_solver_type</code></span><span
class="cmr-12">, and we</span>
<span
class="cmr-12">pass it as follows:</span>
<pre class="verbatim" id="verbatim-13">
<pre class="verbatim" id="verbatim-14">
&#x00A0;&#x00A0;!&#x00A0;sparse&#x00A0;matrix&#x00A0;and&#x00A0;preconditioner
&#x00A0;&#x00A0;type(psb_dspmat_type)&#x00A0;::&#x00A0;a
&#x00A0;&#x00A0;type(amg_dprec_type)&#x00A0;&#x00A0;::&#x00A0;prec
&#x00A0;&#x00A0;type(amg_d_tlu_solver_type)&#x00A0;::&#x00A0;tlusv
......
&#x00A0;&#x00A0;!
&#x00A0;&#x00A0;!&#x00A0;&#x00A0;prepare&#x00A0;the&#x00A0;preconditioner:&#x00A0;an&#x00A0;ML&#x00A0;with&#x00A0;defaults,&#x00A0;but&#x00A0;with&#x00A0;TLU&#x00A0;solver&#x00A0;at
@ -230,6 +185,7 @@ class="cmr-12">pass it as follows:</span>
&#x00A0;&#x00A0;nlv&#x00A0;=&#x00A0;prec%get_nlevs()
&#x00A0;&#x00A0;call&#x00A0;prec%set(tlusv,&#x00A0;&#x00A0;&#x00A0;info,ilev=1,ilmax=max(1,nlv-1))
&#x00A0;&#x00A0;call&#x00A0;prec%smoothers_build(a,desc_a,info)
</pre>
<!--l. 107--><p class="nopar" >
@ -241,6 +197,9 @@ class="cmr-12">pass it as follows:</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlse7.html" ><span

@ -34,8 +34,7 @@ class="cmr-12">Error Handling</span></h3>
<!--l. 5--><p class="noindent" ><span
class="cmr-12">The error handling in AMG4PSBLAS is based on the PSBLAS error handling. Error</span>
<span
class="cmr-12">conditions are signaled via an integer argument </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">info</span></span></span><span
class="cmr-12">conditions are signaled via an integer argument </span><span class="obeylines-h"><code class="verb">info</code></span><span
class="cmr-12">; whenever an error condition is</span>
<span
class="cmr-12">detected, an error trace stack is built by the library up to the top-level, user-callable</span>
@ -52,7 +51,7 @@ class="cmr-12">PSBLAS error handling routines; for further details see the PSBLA
<span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span>
@ -67,6 +66,9 @@ class="cmr-12">.</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlse8.html" ><span

@ -36,14 +36,18 @@ class="cmr-12">AMG4PSBLAS is freely distributable under the following copyright
<pre class="verbatim" id="verbatim-14">
<pre class="verbatim" id="verbatim-15">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;AMG4PSBLAS&#x00A0;&#x00A0;version&#x00A0;1.0
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Algebraic&#x00A0;MultiGrid&#x00A0;Preconditioners&#x00A0;Package
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;based&#x00A0;on&#x00A0;PSBLAS&#x00A0;(Parallel&#x00A0;Sparse&#x00A0;BLAS&#x00A0;version&#x00A0;3.7)
&#x00A0;&#x00A0;(C)&#x00A0;Copyright&#x00A0;2021
&#x00A0;&#x00A0;Pasqua&#x00A0;D&#8217;Ambra&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;IAC-CNR,&#x00A0;IT
&#x00A0;&#x00A0;Fabio&#x00A0;Durastante&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;University&#x00A0;of&#x00A0;Pisa&#x00A0;and&#x00A0;IAC-CNR,&#x00A0;IT
&#x00A0;&#x00A0;Salvatore&#x00A0;Filippone&#x00A0;&#x00A0;&#x00A0;&#x00A0;University&#x00A0;of&#x00A0;Rome&#x00A0;Tor-Vergata&#x00A0;and&#x00A0;IAC-CNR,&#x00A0;IT
&#x00A0;&#x00A0;Redistribution&#x00A0;and&#x00A0;use&#x00A0;in&#x00A0;source&#x00A0;and&#x00A0;binary&#x00A0;forms,&#x00A0;with&#x00A0;or&#x00A0;without
&#x00A0;&#x00A0;modification,&#x00A0;are&#x00A0;permitted&#x00A0;provided&#x00A0;that&#x00A0;the&#x00A0;following&#x00A0;conditions
&#x00A0;&#x00A0;are&#x00A0;met:
@ -55,6 +59,7 @@ class="cmr-12">AMG4PSBLAS is freely distributable under the following copyright
&#x00A0;&#x00A0;&#x00A0;&#x00A0;3.&#x00A0;The&#x00A0;name&#x00A0;of&#x00A0;the&#x00A0;MLD2P4&#x00A0;group&#x00A0;or&#x00A0;the&#x00A0;names&#x00A0;of&#x00A0;its&#x00A0;contributors&#x00A0;may
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;not&#x00A0;be&#x00A0;used&#x00A0;to&#x00A0;endorse&#x00A0;or&#x00A0;promote&#x00A0;products&#x00A0;derived&#x00A0;from&#x00A0;this
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;software&#x00A0;without&#x00A0;specific&#x00A0;written&#x00A0;permission.
&#x00A0;&#x00A0;THIS&#x00A0;SOFTWARE&#x00A0;IS&#x00A0;PROVIDED&#x00A0;BY&#x00A0;THE&#x00A0;COPYRIGHT&#x00A0;HOLDERS&#x00A0;AND&#x00A0;CONTRIBUTORS
&#x00A0;&#x00A0;&#8216;&#8216;AS&#x00A0;IS&#8217;&#8217;&#x00A0;AND&#x00A0;ANY&#x00A0;EXPRESS&#x00A0;OR&#x00A0;IMPLIED&#x00A0;WARRANTIES,&#x00A0;INCLUDING,&#x00A0;BUT&#x00A0;NOT&#x00A0;LIMITED
&#x00A0;&#x00A0;TO,&#x00A0;THE&#x00A0;IMPLIED&#x00A0;WARRANTIES&#x00A0;OF&#x00A0;MERCHANTABILITY&#x00A0;AND&#x00A0;FITNESS&#x00A0;FOR&#x00A0;A&#x00A0;PARTICULAR
@ -66,6 +71,7 @@ class="cmr-12">AMG4PSBLAS is freely distributable under the following copyright
&#x00A0;&#x00A0;CONTRACT,&#x00A0;STRICT&#x00A0;LIABILITY,&#x00A0;OR&#x00A0;TORT&#x00A0;(INCLUDING&#x00A0;NEGLIGENCE&#x00A0;OR&#x00A0;OTHERWISE)
&#x00A0;&#x00A0;ARISING&#x00A0;IN&#x00A0;ANY&#x00A0;WAY&#x00A0;OUT&#x00A0;OF&#x00A0;THE&#x00A0;USE&#x00A0;OF&#x00A0;THIS&#x00A0;SOFTWARE,&#x00A0;EVEN&#x00A0;IF&#x00A0;ADVISED&#x00A0;OF&#x00A0;THE
&#x00A0;&#x00A0;POSSIBILITY&#x00A0;OF&#x00A0;SUCH&#x00A0;DAMAGE.
</pre>
<!--l. 44--><p class="nopar" >
@ -78,14 +84,20 @@ class="cmr-12">abide by its terms:</span>
<pre class="verbatim" id="verbatim-15">
<pre class="verbatim" id="verbatim-16">
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;MLD2P4&#x00A0;&#x00A0;version&#x00A0;2.2
&#x00A0;&#x00A0;MultiLevel&#x00A0;Domain&#x00A0;Decomposition&#x00A0;Parallel&#x00A0;Preconditioners&#x00A0;Package
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;based&#x00A0;on&#x00A0;PSBLAS&#x00A0;(Parallel&#x00A0;Sparse&#x00A0;BLAS&#x00A0;version&#x00A0;3.5)
&#x00A0;&#x00A0;(C)&#x00A0;Copyright&#x00A0;2008-2018
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Salvatore&#x00A0;Filippone
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Pasqua&#x00A0;D&#8217;Ambra
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;Daniela&#x00A0;di&#x00A0;Serafino
&#x00A0;&#x00A0;Redistribution&#x00A0;and&#x00A0;use&#x00A0;in&#x00A0;source&#x00A0;and&#x00A0;binary&#x00A0;forms,&#x00A0;with&#x00A0;or&#x00A0;without
&#x00A0;&#x00A0;modification,&#x00A0;are&#x00A0;permitted&#x00A0;provided&#x00A0;that&#x00A0;the&#x00A0;following&#x00A0;conditions
&#x00A0;&#x00A0;are&#x00A0;met:
@ -97,6 +109,7 @@ class="cmr-12">abide by its terms:</span>
&#x00A0;&#x00A0;&#x00A0;&#x00A0;3.&#x00A0;The&#x00A0;name&#x00A0;of&#x00A0;the&#x00A0;MLD2P4&#x00A0;group&#x00A0;or&#x00A0;the&#x00A0;names&#x00A0;of&#x00A0;its&#x00A0;contributors&#x00A0;may
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;not&#x00A0;be&#x00A0;used&#x00A0;to&#x00A0;endorse&#x00A0;or&#x00A0;promote&#x00A0;products&#x00A0;derived&#x00A0;from&#x00A0;this
&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;software&#x00A0;without&#x00A0;specific&#x00A0;written&#x00A0;permission.
&#x00A0;&#x00A0;THIS&#x00A0;SOFTWARE&#x00A0;IS&#x00A0;PROVIDED&#x00A0;BY&#x00A0;THE&#x00A0;COPYRIGHT&#x00A0;HOLDERS&#x00A0;AND&#x00A0;CONTRIBUTORS
&#x00A0;&#x00A0;&#8216;&#8216;AS&#x00A0;IS&#8217;&#8217;&#x00A0;AND&#x00A0;ANY&#x00A0;EXPRESS&#x00A0;OR&#x00A0;IMPLIED&#x00A0;WARRANTIES,&#x00A0;INCLUDING,&#x00A0;BUT&#x00A0;NOT&#x00A0;LIMITED
&#x00A0;&#x00A0;TO,&#x00A0;THE&#x00A0;IMPLIED&#x00A0;WARRANTIES&#x00A0;OF&#x00A0;MERCHANTABILITY&#x00A0;AND&#x00A0;FITNESS&#x00A0;FOR&#x00A0;A&#x00A0;PARTICULAR
@ -108,6 +121,7 @@ class="cmr-12">abide by its terms:</span>
&#x00A0;&#x00A0;CONTRACT,&#x00A0;STRICT&#x00A0;LIABILITY,&#x00A0;OR&#x00A0;TORT&#x00A0;(INCLUDING&#x00A0;NEGLIGENCE&#x00A0;OR&#x00A0;OTHERWISE)
&#x00A0;&#x00A0;ARISING&#x00A0;IN&#x00A0;ANY&#x00A0;WAY&#x00A0;OUT&#x00A0;OF&#x00A0;THE&#x00A0;USE&#x00A0;OF&#x00A0;THIS&#x00A0;SOFTWARE,&#x00A0;EVEN&#x00A0;IF&#x00A0;ADVISED&#x00A0;OF&#x00A0;THE
&#x00A0;&#x00A0;POSSIBILITY&#x00A0;OF&#x00A0;SUCH&#x00A0;DAMAGE.
</pre>
<!--l. 87--><p class="nopar" > <span
class="cmr-12">AMG4PSBLAS is distributed together with (a small part of) the graph-matching</span>
@ -127,7 +141,7 @@ class="cmr-12">here.</span>
<pre class="verbatim" id="verbatim-16">
<pre class="verbatim" id="verbatim-17">
//&#x00A0;***********************************************************************
//
//&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;MatchboxP:&#x00A0;A&#x00A0;C++&#x00A0;library&#x00A0;for&#x00A0;approximate&#x00A0;weighted&#x00A0;matching
@ -179,6 +193,9 @@ class="cmr-12">here.</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlse9.html" ><span

@ -34,7 +34,7 @@ class="cmr-12">Contributor Covenant Code of Conduct</span></h3>
<div class="paragraphTOCS">
</div>
<!--l. 5--><p class="noindent" ><span class="paragraphHead"><a
id="x30-35000B"></a><span
id="x30-35000"></a><span
class="cmbx-12">Our Pledge</span></span>
<span
class="cmr-12">We as members, contributors, and leaders pledge to make participation in</span>
@ -55,52 +55,62 @@ class="cmr-12">of behavior that contributes to a positive environment for our co
<span
class="cmr-12">include:</span>
<ul class="itemize1">
<li class="itemize"><span
<li class="itemize">
<!--l. 18--><p class="noindent" ><span
class="cmr-12">Demonstrating empathy and kindness toward other people</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 19--><p class="noindent" ><span
class="cmr-12">Being respectful of differing opinions, viewpoints, and experiences</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 20--><p class="noindent" ><span
class="cmr-12">Giving and gracefully accepting constructive feedback</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 21--><p class="noindent" ><span
class="cmr-12">Accepting responsibility and apologizing to those affected by our mistakes,</span>
<span
class="cmr-12">and learning from the experience</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 23--><p class="noindent" ><span
class="cmr-12">Focusing on what is best not just for us as individuals, but for the overall</span>
<span
class="cmr-12">community</span></li></ul>
<!--l. 26--><p class="noindent" ><span
class="cmr-12">Examples of unacceptable behavior include:</span>
<ul class="itemize1">
<li class="itemize"><span
<li class="itemize">
<!--l. 28--><p class="noindent" ><span
class="cmr-12">The use of sexualized language or imagery, and sexual attention or advances</span>
<span
class="cmr-12">of any kind</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 30--><p class="noindent" ><span
class="cmr-12">Trolling, insulting or derogatory comments, and personal or political attacks</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 31--><p class="noindent" ><span
class="cmr-12">Public or private harassment</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 32--><p class="noindent" ><span
class="cmr-12">Publishing others&#8217; private information, such as a physical or email address,</span>
<span
class="cmr-12">without their explicit permission</span>
</li>
<li class="itemize"><span
<li class="itemize">
<!--l. 34--><p class="noindent" ><span
class="cmr-12">Other conduct which could reasonably be considered inappropriate in a</span>
<span
class="cmr-12">professional setting</span></li></ul>
<!--l. 38--><p class="noindent" ><span class="paragraphHead"><a
id="x30-36000B"></a><span
id="x30-36000"></a><span
class="cmbx-12">Enforcement Responsibilities</span></span>
<span
class="cmr-12">Community leaders are responsible for clarifying and enforcing our standards of</span>
@ -127,7 +137,7 @@ class="cmr-12">appointed representative at an online or offline event. Enforceme
<span
class="cmr-12">abusive, harassing, or otherwise unacceptable behavior may be reported to the</span>
<span
class="cmr-12">community leaders responsible for enforcement at </span><a
class="cmr-12">community leaders responsible for enforcement at </span><a
href="mailto:eocoe@na.iac.cnr.it" ><span
class="cmr-12">eocoe@na.iac.cnr.it</span></a><span
class="cmr-12">. All</span>
@ -137,8 +147,11 @@ class="cmr-12">complaints will be reviewed and investigated promptly and fairly.
class="cmr-12">leaders are obligated to respect the privacy and security of the reporter of any</span>
<span
class="cmr-12">incident.</span>
<!--l. 61--><p class="noindent" ><span class="paragraphHead"><a
id="x30-37000B"></a><span
id="x30-37000"></a><span
class="cmbx-12">Enforcement Guidelines</span></span>
<span
class="cmr-12">Community leaders will follow these Community Impact Guidelines in</span>
@ -147,17 +160,15 @@ class="cmr-12">determining the consequences for any action they deem in violatio
<span
class="cmr-12">Conduct:</span>
<ol class="enumerate1" >
<li
class="enumerate" id="x30-37002x1"><span
<li
class="enumerate" id="x30-37002x1">
<!--l. 65--><p class="noindent" ><span
class="cmr-12">Correction</span>
<!--l. 67--><p class="noindent" ><span
class="cmti-12">Community Impact: </span><span
class="cmr-12">Use of inappropriate language or other behavior deemed</span>
<span
class="cmr-12">unprofessional or unwelcome in the community.</span>
<!--l. 70--><p class="noindent" ><span
class="cmti-12">Consequence: </span><span
class="cmr-12">A private, written warning from community leaders, providing</span>
@ -166,8 +177,9 @@ class="cmr-12">clarity around the nature of the violation and an explanation of
<span
class="cmr-12">behavior was inappropriate. A public apology may be requested.</span>
</li>
<li
class="enumerate" id="x30-37004x2"><span
<li
class="enumerate" id="x30-37004x2">
<!--l. 73--><p class="noindent" ><span
class="cmr-12">Warning</span>
<!--l. 75--><p class="noindent" ><span
class="cmti-12">Community Impact: </span><span
@ -186,8 +198,9 @@ class="cmr-12">channels like social media. Violating these terms may lead to a t
<span
class="cmr-12">or permanent ban.</span>
</li>
<li
class="enumerate" id="x30-37006x3"><span
<li
class="enumerate" id="x30-37006x3">
<!--l. 84--><p class="noindent" ><span
class="cmr-12">Temporary Ban</span>
<!--l. 86--><p class="noindent" ><span
class="cmti-12">Community Impact: </span><span
@ -205,9 +218,13 @@ class="cmr-12">public or private interaction with the people involved, including
class="cmr-12">interaction with those enforcing the Code of Conduct, is allowed during this</span>
<span
class="cmr-12">period. Violating these terms may lead to a permanent ban.</span>
</li>
<li
class="enumerate" id="x30-37008x4"><span
<li
class="enumerate" id="x30-37008x4">
<!--l. 94--><p class="noindent" ><span
class="cmr-12">Permanent Ban</span>
<!--l. 96--><p class="noindent" ><span
class="cmti-12">Community Impact: </span><span
@ -222,12 +239,12 @@ class="cmr-12">A permanent ban from any sort of public interaction within</span>
<span
class="cmr-12">the community.</span></li></ol>
<!--l. 104--><p class="noindent" ><span class="paragraphHead"><a
id="x30-38000B"></a><span
id="x30-38000"></a><span
class="cmbx-12">Attribution</span></span>
<span
class="cmr-12">This Code of Conduct is adapted from the Contributor Covenant, version 2.0,</span>
<span
class="cmr-12">available at </span><a
class="cmr-12">available at </span><a
href="https://www.contributor-covenant.org/version/2/0/code_of_conduct.html" ><span
class="cmr-12">https://www.contributor-covenant.org/version/2/0/code</span><span
class="cmr-12">_of</span><span
@ -238,7 +255,7 @@ class="cmr-12">. Community Impact Guidelines were inspired by Mozilla&#8217;s co
<span
class="cmr-12">enforcement ladder. For answers to common questions about this code of conduct, see</span>
<span
class="cmr-12">the FAQ at </span><a
class="cmr-12">the FAQ at </span><a
href="https://www.contributor-covenant.org/faq" ><span
class="cmr-12">https://www.contributor-covenant.org/faq</span></a><span
class="cmr-12">. Translations are available at</span>
@ -255,6 +272,13 @@ class="cmr-12">.</span>
<!--l. 152--><p class="indent" >

@ -33,29 +33,29 @@ class="cmr-12">The following base libraries are needed:</span>
<dl class="description"><dt class="description">
<span
class="cmbx-12">BLAS</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 34--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#Xblas3"><span
class="cmr-12">17</span></a><span
class="cmr-12">18</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#Xblas2"><span
class="cmr-12">18</span></a><span
class="cmr-12">19</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#Xblas1"><span
class="cmr-12">25</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">Many vendors provide optimized versions of BLAS; if no</span>
<span
class="cmr-12">vendor version is available for a given platform, the ATLAS software</span>
class="cmr-12">26</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">Many vendors provide optimized versions of BLAS; if no</span>
<span
class="cmr-12">(</span><a
class="cmr-12">vendor version is available for a given platform, the ATLAS software (</span>
<a
href="http://math-atlas.sourceforge.net" ><span
class="cmr-12">math-atlas.sourceforge .net</span></a><span
class="cmr-12">) may be employed. The reference BLAS from</span>
<span
class="cmr-12">Netlib (</span><a
class="cmr-12">Netlib ( </span><a
href="http://www.netlib.org/blas" ><span
class="cmr-12">www.netlib.org/blas</span></a><span
class="cmr-12">) are meant to define the standard behaviour of</span>
@ -74,7 +74,7 @@ class="cmr-12">our experience is that configuring ATLAS for building full LAPACK
<span
class="cmr-12">not always work in the expected way. Our advice is first to download the</span>
<span
class="cmr-12">LAPACK tarfile from </span><a
class="cmr-12">LAPACK tarfile from </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>
@ -87,14 +87,15 @@ class="cmr-12">library.</span>
</dd><dt class="description">
<span
class="cmbx-12">MPI</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 51--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XMPI2"><span
class="cmr-12">24</span></a><span
class="cmr-12">25</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#XMPI1"><span
class="cmr-12">30</span></a><span
class="cmr-12">32</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
@ -102,22 +103,26 @@ class="cmr-12">systems.</span>
</dd><dt class="description">
<span
class="cmbx-12">PSBLAS</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 53--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">,</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlli5.html#Xpsblas_00"><span
class="cmr-12">22</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">Parallel Sparse BLAS (PSBLAS) is available from</span>
<a
class="cmr-12">23</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">Parallel Sparse</span>
<span
class="cmr-12">BLAS (PSBLAS) is available from </span><a
href="https://psctoolkit.github.io/products/psblas/" ><span
class="cmr-12">psctoolkit.github.io/ products/psblas/</span></a><span
class="cmr-12">; version 3.7.0 (or later) is required.</span>
class="cmr-12">;</span>
<span
class="cmr-12">version 3.7.0 (or later) is required. Indeed, all the prerequisites listed so far</span>
<span
class="cmr-12">Indeed, all the prerequisites listed so far are also prerequisites of PSBLAS.</span></dd></dl>
class="cmr-12">are also prerequisites of PSBLAS.</span></dd></dl>
<!--l. 60--><p class="noindent" ><span
class="cmr-12">Please note that the four previous libraries must have Fortran interfaces compatible with</span>
<span
@ -127,27 +132,26 @@ class="cmr-12">compiler being used for AMG4PSBLAS.</span>
<!--l. 64--><p class="indent" > <span
class="cmr-12">If you want to use the PSBLAS support for NVIDIA GPUs, you will also</span>
<span
class="cmr-12">need:</span>
<dl class="description"><dt class="description">
class="cmr-12">need a working version of the CUDA Toolkit that is compatible with the</span>
<span
class="cmbx-12">PSBLAS-EXT</span> </dt><dd
class="description"><span
class="cmr-12">Parallel Sparse BLAS (PSBLAS) Extensions, available from</span>
<a
href="https://psctoolkit.github.io/products/psblasext/" ><span
class="cmr-12">psctoolkit.github.io/products/psblasext/</span></a><span
class="cmr-12">; version 1.3.0 (or later).</span>
</dd><dt class="description">
class="cmr-12">compiler choice made to compile PSBLAS and AMG4PSBLAS. After that</span>
<span
class="cmr-12">you will need to have configured and compiled the PSBLAS library with the</span>
<span
class="cmr-12">options:</span>
<pre class="verbatim" id="verbatim-2">
./configure&#x00A0;--enable-cuda&#x00A0;--with-cudadir=${CUDA_HOME}&#x00A0;--with-cudacc=xx,yy,zz&#x00A0;&#x00A0;
</pre>
<!--l. 89--><p class="nopar" > <span
class="cmr-12">Previous versions required you to have the auxiliary libraries SPGPU and</span>
<span
class="cmr-12">PSBLAS-EXT compiled, this is no longer necessary because they have been integrated</span>
<span
class="cmr-12">into PSBLAS and are compiled by activating the previous flags during configuration.</span>
<span
class="cmbx-12">SPGPU</span> </dt><dd
class="description"><span
class="cmr-12">Sparse CUDA kernels for NVIDIA GPUs; available from GitHub, see</span>
<span
class="cmr-12">also </span><a
href="https://psctoolkit.github.io/products/psblasext/" ><span
class="cmr-12">psctoolkit.github.io/products/psblasext/</span></a><span
class="cmr-12">.</span></dd></dl>
<!--l. 76--><p class="noindent" ><span
class="cmr-12">See also Sec</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu7.html#x16-150004.2"><span
@ -156,7 +160,7 @@ class="cmr-12">.</span>
<!--l. 79--><div class="crosslinks"><p class="noindent"><span
<!--l. 96--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu2.html" ><span
class="cmr-12">next</span></a><span
@ -167,6 +171,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. 79--><p class="indent" > <a
<!--l. 96--><p class="indent" > <a
id="tailuserhtmlsu1.html"></a>
</body></html>

@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Method hierarchy_build</title>
<head><title>Method hierarchy_uild</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 685--><div class="crosslinks"><p class="noindent"><span
<!--l. 708--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu11.html" ><span
class="cmr-12">next</span></a><span
@ -34,138 +34,91 @@ class="cmr-12">Method hierarchy</span><span
class="cmr-12">_build</span></h4>
<div class="center"
>
<!--l. 687--><p class="noindent" >
<!--l. 688--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</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 />
<!--l. 710--><p class="noindent" >
<!--l. 711--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">hierarchy_build</span><span style="color:#000000">(</span><span style="color:#000000">a</span><span style="color:#000000">,</span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000">)</span></code><br />
</div>
<!--l. 691--><p class="noindent" ><span
<!--l. 714--><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="lstinline"></span><span
class="cmtt-12">p</span><span
class="cmr-12">the multilevel preconditioner </span><code class="lstinline"><span style="color:#000000">p</span></code><span
class="cmr-12">, according to the requirements made by the user</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">through the methods </span><code class="lstinline"><span style="color:#000000">init</span></code> <span
class="cmr-12">and </span><code class="lstinline"><span style="color:#000000">set</span></code><span
class="cmr-12">.</span>
<!--l. 696--><p class="noindent" ><span
<!--l. 719--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-11" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-11-1g"><col
id="TBL-11-1"><col
id="TBL-11-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:normal; text-align:left;" id="TBL-11-1-1"
class="td11"><!--l. 699--><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. 699--><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">&#x00A0;</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>
<div class="tabular"> <table id="TBL-12" class="tabular"
><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. 722--><p class="noindent" ><code class="lstinline"><span style="color:#000000">a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-12-1-2"
class="td11"> <!--l. 722--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">spmat_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><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. 700--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-2-2"
class="td11"><!--l. 700--><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. 723--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-2-2"
class="td11"> <!--l. 723--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
<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="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
<code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">, single/double precision version of AMG4PSBLAS</span>
<span
<span
class="cmr-12">under use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
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. 705--><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. 705--><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">&#x00A0;</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>
style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:normal; text-align:left;" id="TBL-12-3-1"
class="td11"> <!--l. 728--><p class="noindent" ><code class="lstinline"><span style="color:#000000">desc_a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-12-3-2"
class="td11"> <!--l. 728--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_desc_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><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. 706--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-4-2"
class="td11"><!--l. 706--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
class="cmtt-12">a</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. 729--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-4-2"
class="td11"> <!--l. 729--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><code class="lstinline"><span style="color:#000000">a</span></code><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
<span
<span
class="cmr-12">for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
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. 708--><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. 708--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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>
style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:normal; text-align:left;" id="TBL-12-5-1"
class="td11"> <!--l. 731--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-12-5-2"
class="td11"> <!--l. 731--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><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. 709--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-11-6-2"
class="td11"><!--l. 709--><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. 732--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-6-2"
class="td11"> <!--l. 732--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><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-11-7-"><td style="white-space:normal; text-align:left;" id="TBL-11-7-1"
class="td11"> </td> </tr></table></div>
style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:normal; text-align:left;" id="TBL-12-7-1"
class="td11"> </td> </tr></table> </div>
<!--l. 715--><div class="crosslinks"><p class="noindent"><span
<!--l. 738--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu11.html" ><span
class="cmr-12">next</span></a><span
@ -182,6 +135,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. 715--><p class="indent" > <a
<!--l. 738--><p class="indent" > <a
id="tailuserhtmlsu10.html"></a>
</body></html>

@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head><title>Method smoothers_build</title>
<head><title>Method smoothers_uild</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)">
<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)">
@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 715--><div class="crosslinks"><p class="noindent"><span
<!--l. 738--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu12.html" ><span
class="cmr-12">next</span></a><span
@ -34,235 +34,141 @@ class="cmr-12">Method smoothers</span><span
class="cmr-12">_build</span></h4>
<div class="center"
>
<!--l. 718--><p class="noindent" >
<!--l. 719--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</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 />
<!--l. 741--><p class="noindent" >
<!--l. 742--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">smoothers_build</span><span style="color:#000000">(</span><span style="color:#000000">a</span><span style="color:#000000">,</span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000">p</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000">[,</span><span style="color:#000000">amold</span><span style="color:#000000">,</span><span style="color:#000000">vmold</span><span style="color:#000000">,</span><span style="color:#000000">imold</span><span style="color:#000000">])</span></code><br />
</div>
<!--l. 722--><p class="noindent" ><span
<!--l. 745--><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="lstinline"></span><span
class="cmtt-12">p</span><span
class="cmr-12">preconditioner </span><code class="lstinline"><span style="color:#000000">p</span></code><span
class="cmr-12">, according to the requirements made by the 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
<code class="lstinline"><span style="color:#000000">init</span></code> <span
class="cmr-12">and </span><code class="lstinline"><span style="color:#000000">set</span></code><span
class="cmr-12">, and based on the aggregation hierarchy produced by a previous call to</span>
<span class="lstinline"></span><span
class="cmtt-12">hierarchy_build</span> <span
<code class="lstinline"><span style="color:#000000">hierarchy_build</span></code> <span
class="cmr-12">(see Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu10.html#x20-190005.3"><span
class="cmr-12">5.3</span><!--tex4ht:ref: sec:hier_bld --></a><span
class="cmr-12">).</span>
<!--l. 729--><p class="noindent" ><span
<!--l. 752--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-12" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-12-1g"><col
id="TBL-12-1"><col
id="TBL-12-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:normal; text-align:left;" id="TBL-12-1-1"
class="td11"><!--l. 732--><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. 732--><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">&#x00A0;</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>
<div class="tabular"> <table id="TBL-13" class="tabular"
><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. 755--><p class="noindent" ><code class="lstinline"><span style="color:#000000">a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-13-1-2"
class="td11"> <!--l. 755--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">spmat_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><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. 733--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-2-2"
class="td11"><!--l. 733--><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. 756--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-2-2"
class="td11"> <!--l. 756--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
<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="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
<code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">, single/double precision version of AMG4PSBLAS</span>
<span
<span
class="cmr-12">under use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
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. 737--><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. 737--><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">&#x00A0;</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>
style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:normal; text-align:left;" id="TBL-13-3-1"
class="td11"> <!--l. 760--><p class="noindent" ><code class="lstinline"><span style="color:#000000">desc_a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-13-3-2"
class="td11"> <!--l. 760--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_desc_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><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. 738--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-4-2"
class="td11"><!--l. 738--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
class="cmtt-12">a</span><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. 761--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-4-2"
class="td11"> <!--l. 761--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><code class="lstinline"><span style="color:#000000">a</span></code><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
<span
<span
class="cmr-12">for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
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. 740--><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. 740--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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>
style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:normal; text-align:left;" id="TBL-13-5-1"
class="td11"> <!--l. 763--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-13-5-2"
class="td11"> <!--l. 763--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><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. 741--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-6-2"
class="td11"><!--l. 741--><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. 764--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-6-2"
class="td11"> <!--l. 764--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><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-12-7-"><td style="white-space:normal; text-align:left;" id="TBL-12-7-1"
class="td11"><!--l. 742--><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. 742--><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">&#x00A0;</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">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:normal; text-align:left;" id="TBL-13-7-1"
class="td11"> <!--l. 765--><p class="noindent" ><code class="lstinline"><span style="color:#000000">amold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-13-7-2"
class="td11"> <!--l. 765--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">_base_sparse_mat</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><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. 743--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-8-2"
class="td11"><!--l. 743--><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. 766--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-8-2"
class="td11"> <!--l. 766--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span
<span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
<span
<span
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
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. 747--><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. 747--><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">&#x00A0;</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">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</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. 770--><p class="noindent" ><code class="lstinline"><span style="color:#000000">vmold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-13-9-2"
class="td11"> <!--l. 770--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">_base_vect_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><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. 748--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-10-2"
class="td11"><!--l. 748--><p class="noindent" ><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. 771--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-10-2"
class="td11"> <!--l. 771--><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>
<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. 750--><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. 750--><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">&#x00A0;</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">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-13-11-"><td style="white-space:normal; text-align:left;" id="TBL-13-11-1"
class="td11"> <!--l. 773--><p class="noindent" ><code class="lstinline"><span style="color:#000000">imold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-13-11-2"
class="td11"> <!--l. 773--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_i_base_vect_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><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. 751--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-12-2"
class="td11"><!--l. 751--><p class="noindent" ><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. 774--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-12-2"
class="td11"> <!--l. 774--><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>
<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"
class="td11"> </td> </tr></table></div>
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>
<!--l. 757--><div class="crosslinks"><p class="noindent"><span
<!--l. 780--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu12.html" ><span
class="cmr-12">next</span></a><span
@ -279,6 +185,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. 757--><p class="indent" > <a
<!--l. 780--><p class="indent" > <a
id="tailuserhtmlsu11.html"></a>
</body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 757--><div class="crosslinks"><p class="noindent"><span
<!--l. 780--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu13.html" ><span
class="cmr-12">next</span></a><span
@ -33,36 +33,15 @@ class="cmr-12">5.5 </span></span> <a
class="cmr-12">Method build</span></h4>
<div class="center"
>
<!--l. 759--><p class="noindent" >
<!--l. 760--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</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 />
<!--l. 782--><p class="noindent" >
<!--l. 783--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">build</span><span style="color:#000000">(</span><span style="color:#000000">a</span><span style="color:#000000">,</span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000">[,</span><span style="color:#000000">amold</span><span style="color:#000000">,</span><span style="color:#000000">vmold</span><span style="color:#000000">,</span><span style="color:#000000">imold</span><span style="color:#000000">])</span></code><br />
</div>
<!--l. 763--><p class="noindent" ><span
class="cmr-12">This method builds the preconditioner </span><span class="lstinline"></span><span
class="cmtt-12">p</span> <span
<!--l. 786--><p class="noindent" ><span
class="cmr-12">This method builds the preconditioner </span><code class="lstinline"><span style="color:#000000">p</span></code> <span
class="cmr-12">according to the requirements made by the</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">user through the methods </span><code class="lstinline"><span style="color:#000000">init</span></code> <span
class="cmr-12">and </span><code class="lstinline"><span style="color:#000000">set</span></code> <span
class="cmr-12">(see Sections</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu10.html#x20-190005.3"><span
@ -75,196 +54,124 @@ 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="lstinline"></span><span
class="cmtt-12">hierarchy_build</span> <span
class="cmr-12">internally implemented by invoking the two previous methods </span><code class="lstinline"><span style="color:#000000">hierarchy_build</span></code> <span
class="cmr-12">and</span>
<span class="lstinline"></span><span
class="cmtt-12">smoothers_build</span><span
<code class="lstinline"><span style="color:#000000">smoothers_build</span></code><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. 773--><p class="noindent" ><span
<!--l. 796--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-13" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-13-1g"><col
id="TBL-13-1"><col
id="TBL-13-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:normal; text-align:left;" id="TBL-13-1-1"
class="td11"><!--l. 776--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">a</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-1-2"
class="td11"><!--l. 776--><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">&#x00A0;</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>
<div class="tabular"> <table id="TBL-14" class="tabular"
><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. 799--><p class="noindent" ><code class="lstinline"><span style="color:#000000">a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-14-1-2"
class="td11"> <!--l. 799--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">spmat_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><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. 777--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-2-2"
class="td11"><!--l. 777--><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. 800--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-2-2"
class="td11"> <!--l. 800--><p class="noindent" ><span
class="cmr-12">The sparse matrix structure containing the local part of the matrix</span>
<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="lstinline"></span><span
class="cmtt-12">real</span><span
class="cmr-12">/</span><span class="lstinline"></span><span
class="cmtt-12">complex</span><span
<code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">, single/double precision version of AMG4PSBLAS</span>
<span
<span
class="cmr-12">under use. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
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. 781--><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-3-2"
class="td11"><!--l. 781--><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">&#x00A0;</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>
style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:normal; text-align:left;" id="TBL-14-3-1"
class="td11"> <!--l. 804--><p class="noindent" ><code class="lstinline"><span style="color:#000000">desc_a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-14-3-2"
class="td11"> <!--l. 804--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_desc_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><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. 782--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-4-2"
class="td11"><!--l. 782--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><span class="lstinline"></span><span
class="cmtt-12">a</span><span
style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:normal; text-align:left;" id="TBL-14-4-1"
class="td11"> <!--l. 805--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-4-2"
class="td11"> <!--l. 805--><p class="noindent" ><span
class="cmr-12">The communication descriptor of </span><code class="lstinline"><span style="color:#000000">a</span></code><span
class="cmr-12">. See the PSBLAS User&#8217;s Guide</span>
<span
<span
class="cmr-12">for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
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. 784--><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-5-2"
class="td11"><!--l. 784--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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>
style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:normal; text-align:left;" id="TBL-14-5-1"
class="td11"> <!--l. 807--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-14-5-2"
class="td11"> <!--l. 807--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><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. 785--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-6-2"
class="td11"><!--l. 785--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:normal; text-align:left;" id="TBL-14-6-1"
class="td11"> <!--l. 808--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-6-2"
class="td11"> <!--l. 808--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><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-13-7-"><td style="white-space:normal; text-align:left;" id="TBL-13-7-1"
class="td11"><!--l. 786--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-7-2"
class="td11"><!--l. 786--><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">&#x00A0;</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">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:normal; text-align:left;" id="TBL-14-7-1"
class="td11"> <!--l. 809--><p class="noindent" ><code class="lstinline"><span style="color:#000000">amold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-14-7-2"
class="td11"> <!--l. 809--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">_base_sparse_mat</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><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. 787--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-8-2"
class="td11"><!--l. 787--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:normal; text-align:left;" id="TBL-14-8-1"
class="td11"> <!--l. 810--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-8-2"
class="td11"> <!--l. 810--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span
<span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
<span
<span
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
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. 791--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-9-2"
class="td11"><!--l. 791--><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">&#x00A0;</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">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-14-9-"><td style="white-space:normal; text-align:left;" id="TBL-14-9-1"
class="td11"> <!--l. 814--><p class="noindent" ><code class="lstinline"><span style="color:#000000">vmold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-14-9-2"
class="td11"> <!--l. 814--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">_base_vect_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><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. 792--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-10-2"
class="td11"><!--l. 792--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-14-10-"><td style="white-space:normal; text-align:left;" id="TBL-14-10-1"
class="td11"> <!--l. 815--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-10-2"
class="td11"> <!--l. 815--><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>
<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. 794--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">imold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-13-11-2"
class="td11"><!--l. 794--><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">&#x00A0;</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">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-14-11-"><td style="white-space:normal; text-align:left;" id="TBL-14-11-1"
class="td11"> <!--l. 817--><p class="noindent" ><code class="lstinline"><span style="color:#000000">imold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-14-11-2"
class="td11"> <!--l. 817--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_i_base_vect_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><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. 795--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-12-2"
class="td11"><!--l. 795--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-14-12-"><td style="white-space:normal; text-align:left;" id="TBL-14-12-1"
class="td11"> <!--l. 818--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-12-2"
class="td11"> <!--l. 818--><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>
<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"
class="td11"> </td> </tr></table></div>
<!--l. 800--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-14-13-"><td style="white-space:normal; text-align:left;" id="TBL-14-13-1"
class="td11"> </td> </tr></table> </div>
<!--l. 823--><p class="noindent" ><span
class="cmr-12">The method can be used to build multilevel preconditioners too.</span>
@ -272,7 +179,7 @@ class="cmr-12">The method can be used to build multilevel preconditioners too.</
<!--l. 805--><div class="crosslinks"><p class="noindent"><span
<!--l. 828--><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 +196,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. 805--><p class="indent" > <a
<!--l. 828--><p class="indent" > <a
id="tailuserhtmlsu12.html"></a>
</body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 805--><div class="crosslinks"><p class="noindent"><span
<!--l. 828--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu14.html" ><span
class="cmr-12">next</span></a><span
@ -33,29 +33,10 @@ class="cmr-12">5.6 </span></span> <a
class="cmr-12">Method apply</span></h4>
<div class="center"
>
<!--l. 807--><p class="noindent" >
<!--l. 808--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</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">&#x00A0;</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 />
<!--l. 830--><p class="noindent" >
<!--l. 831--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">apply</span><span style="color:#000000">(</span><span style="color:#000000">x</span><span style="color:#000000">,</span><span style="color:#000000">y</span><span style="color:#000000">,</span><span style="color:#000000">desc_a</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000"> </span><span style="color:#000000">[,</span><span style="color:#000000">trans</span><span style="color:#000000">,</span><span style="color:#000000">work</span><span style="color:#000000">])</span></code><br />
</div>
<!--l. 811--><p class="noindent" ><span
<!--l. 834--><p class="noindent" ><span
class="cmr-12">This method computes </span><span
class="cmmi-12">y </span><span
class="cmr-12">= </span><span
@ -70,45 +51,35 @@ 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="lstinline"></span><span
class="cmtt-12">p</span><span
class="cmr-12">stored into </span><code class="lstinline"><span style="color:#000000">p</span></code><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="lstinline"></span><span
class="cmtt-12">trans</span><span
class="cmr-12">value of </span><code class="lstinline"><span style="color:#000000">trans</span></code><span
class="cmr-12">. Note that, when AMG4PSBLAS is used with a Krylov solver from</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">PSBLAS, </span><code class="lstinline"><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">apply</span></code> <span
class="cmr-12">is called within the PSBLAS method </span><code class="lstinline"><span style="color:#000000">psb_krylov</span></code> <span
class="cmr-12">and hence it is</span>
<span
class="cmr-12">completely transparent to the user.</span>
<!--l. 820--><p class="noindent" ><span
<!--l. 843--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-14" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-14-1g"><col
id="TBL-14-1"><col
id="TBL-14-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:normal; text-align:left;" id="TBL-14-1-1"
class="td11"><!--l. 823--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">x</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-1-2"
class="td11"><!--l. 823--><p class="noindent" ><span
class="cmti-12">type</span><span class="lstinline"></span><span
class="cmtt-12">(</span><span
class="cmtt-12">kind_parameter</span><span
class="cmtt-12">)</span><span
class="cmr-12">, dimension(:), intent(in)&#8212;.</span> </td>
<div class="tabular"> <table id="TBL-15" class="tabular"
><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. 846--><p class="noindent" ><code class="lstinline"><span style="color:#000000">x</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-15-1-2"
class="td11"> <!--l. 846--><p class="noindent" ><span
class="cmti-12">type</span><code class="lstinline"><span style="color:#000000">(</span><span style="color:#000000">kind_parameter</span><span style="color:#000000">)</span></code><span
class="cmr-12">, dimension(:), intent(in)&#8212;.</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. 824--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-2-2"
class="td11"><!--l. 824--><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. 847--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2"
class="td11"> <!--l. 847--><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
@ -116,28 +87,22 @@ class="cmti-12">type </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 </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
<span
class="cmr-12">must be chosen according to the </span><code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">, single/double</span>
<span
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
<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. 827--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">y</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-3-2"
class="td11"><!--l. 827--><p class="noindent" ><span
class="cmti-12">type</span><span class="lstinline"></span><span
class="cmtt-12">(</span><span
class="cmtt-12">kind_parameter</span><span
class="cmtt-12">)</span><span
class="cmr-12">, dimension(:), intent(out)&#8212;.</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. 850--><p class="noindent" ><code class="lstinline"><span style="color:#000000">y</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-15-3-2"
class="td11"> <!--l. 850--><p class="noindent" ><span
class="cmti-12">type</span><code class="lstinline"><span style="color:#000000">(</span><span style="color:#000000">kind_parameter</span><span style="color:#000000">)</span></code><span
class="cmr-12">, dimension(:), intent(out)&#8212;.</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. 828--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-4-2"
class="td11"><!--l. 828--><p class="noindent" ><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. 851--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-4-2"
class="td11"> <!--l. 851--><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
@ -145,89 +110,48 @@ class="cmti-12">type </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 </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
<span
class="cmr-12">must be chosen according to the </span><code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">, single/double</span>
<span
class="cmr-12">precision version of AMG4PSBLAS under use.</span> </td>
<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. 831--><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-14-5-2"
class="td11"><!--l. 831--><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">&#x00A0;</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>
style="vertical-align:baseline;" id="TBL-15-5-"><td style="white-space:normal; text-align:left;" id="TBL-15-5-1"
class="td11"> <!--l. 854--><p class="noindent" ><code class="lstinline"><span style="color:#000000">desc_a</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-15-5-2"
class="td11"> <!--l. 854--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_desc_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><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. 832--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-6-2"
class="td11"><!--l. 832--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-15-6-"><td style="white-space:normal; text-align:left;" id="TBL-15-6-1"
class="td11"> <!--l. 855--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-6-2"
class="td11"> <!--l. 855--><p class="noindent" ><span
class="cmr-12">The communication descriptor associated to the matrix to be</span>
<span
class="cmr-12">preconditioned.</span> </td>
<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. 834--><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-7-2"
class="td11"><!--l. 834--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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>
style="vertical-align:baseline;" id="TBL-15-7-"><td style="white-space:normal; text-align:left;" id="TBL-15-7-1"
class="td11"> <!--l. 857--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-15-7-2"
class="td11"> <!--l. 857--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><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. 835--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-8-2"
class="td11"><!--l. 835--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-15-8-"><td style="white-space:normal; text-align:left;" id="TBL-15-8-1"
class="td11"> <!--l. 858--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-8-2"
class="td11"> <!--l. 858--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><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-14-9-"><td style="white-space:normal; text-align:left;" id="TBL-14-9-1"
class="td11"><!--l. 836--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">trans</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-9-2"
class="td11"><!--l. 836--><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">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">intent</span><span
class="cmtt-12">(</span><span
class="cmtt-12">in</span><span
class="cmtt-12">).</span> </td>
style="vertical-align:baseline;" id="TBL-15-9-"><td style="white-space:normal; text-align:left;" id="TBL-15-9-1"
class="td11"> <!--l. 859--><p class="noindent" ><code class="lstinline"><span style="color:#000000">trans</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-15-9-2"
class="td11"> <!--l. 859--><p class="noindent" ><code class="lstinline"><span style="color:#000000">character</span><span style="color:#000000">(</span><span style="color:#000000">len</span><span style="color:#000000">=1),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">).</span></code> </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. 837--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-10-2"
class="td11"><!--l. 837--><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">&#8217;</span><span
class="cmtt-12">N</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">n</span><span
class="cmtt-12">&#8217;</span> <span
style="vertical-align:baseline;" id="TBL-15-10-"><td style="white-space:normal; text-align:left;" id="TBL-15-10-1"
class="td11"> <!--l. 860--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-10-2"
class="td11"> <!--l. 860--><p class="noindent" ><span
class="cmr-12">If </span><code class="lstinline"><span style="color:#000000">trans</span></code> <span
class="cmr-12">= </span><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">N</span><span style="color:#000000">&#8217;</span><span style="color:#000000">,</span><span style="color:#000000">&#8217;</span><span style="color:#000000">n</span><span style="color:#000000">&#8217;</span></code> <span
class="cmr-12">then </span><span
class="cmmi-12">op</span><span
class="cmr-12">(</span><span
@ -238,17 +162,9 @@ 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="lstinline"></span><span
class="cmtt-12">trans</span> <span
class="cmr-12">= </span><span class="lstinline"></span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">T</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">t</span><span
class="cmtt-12">&#8217;</span>
<span
class="cmr-12">; if </span><code class="lstinline"><span style="color:#000000">trans</span></code> <span
class="cmr-12">= </span><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">T</span><span style="color:#000000">&#8217;</span><span style="color:#000000">,</span><span style="color:#000000">&#8217;</span><span style="color:#000000">t</span><span style="color:#000000">&#8217;</span></code>
<span
class="cmr-12">then </span><span
class="cmmi-12">op</span><span
class="cmr-12">(</span><span
@ -263,18 +179,10 @@ 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="lstinline"></span><span
class="cmtt-12">trans</span> <span
class="cmr-12">= </span><span class="lstinline"></span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">C</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">c</span><span
class="cmtt-12">&#8217;</span> <span
class="cmr-12">); if </span><code class="lstinline"><span style="color:#000000">trans</span></code> <span
class="cmr-12">= </span><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">C</span><span style="color:#000000">&#8217;</span><span style="color:#000000">,</span><span style="color:#000000">&#8217;</span><span style="color:#000000">c</span><span style="color:#000000">&#8217;</span></code> <span
class="cmr-12">then</span>
<span
<span
class="cmmi-12">op</span><span
class="cmr-12">(</span><span
class="cmmi-12">B</span><sup><span
@ -288,58 +196,40 @@ class="cmr-12">(conjugate 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">).</span> </td>
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. 841--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">work</span> </td><td style="white-space:normal; text-align:left;" id="TBL-14-11-2"
class="td11"><!--l. 841--><p class="noindent" ><span
class="cmti-12">type</span><span class="lstinline"></span><span
class="cmtt-12">(</span><span
class="cmtt-12">kind_parameter</span><span
class="cmtt-12">)</span><span
class="cmr-12">, dimension(:), optional, target&#8212;.</span> </td>
style="vertical-align:baseline;" id="TBL-15-11-"><td style="white-space:normal; text-align:left;" id="TBL-15-11-1"
class="td11"> <!--l. 864--><p class="noindent" ><code class="lstinline"><span style="color:#000000">work</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-15-11-2"
class="td11"> <!--l. 864--><p class="noindent" ><span
class="cmti-12">type</span><code class="lstinline"><span style="color:#000000">(</span><span style="color:#000000">kind_parameter</span><span style="color:#000000">)</span></code><span
class="cmr-12">, dimension(:), optional, target&#8212;.</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. 842--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-14-12-2"
class="td11"><!--l. 842--><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">&#x00A0;</span><span
class="cmtt-12">*</span><span
class="cmtt-12">&#x00A0;</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
style="vertical-align:baseline;" id="TBL-15-12-"><td style="white-space:normal; text-align:left;" id="TBL-15-12-1"
class="td11"> <!--l. 865--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-12-2"
class="td11"> <!--l. 865--><p class="noindent" ><span
class="cmr-12">Workspace. Its size should be at least </span><code class="lstinline"><span style="color:#000000">4</span><span style="color:#000000"> </span><span style="color:#000000">*</span><span style="color:#000000"> </span><span style="color:#000000">psb_cd_get_local_</span></code>
<code class="lstinline"><span style="color:#000000">cols</span><span style="color:#000000">(</span><span style="color:#000000">desc_a</span><span style="color:#000000">)</span></code> <span
class="cmr-12">(see the PSBLAS User&#8217;s Guide). Note that </span><span
class="cmti-12">type </span><span
class="cmr-12">and</span>
<span
<span
class="cmti-12">kind</span><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">must be chosen according to the </span><code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">,</span>
<span
class="cmr-12">single/double precision version of AMG4PSBLAS under use.</span> </td>
<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"
class="td11"> </td> </tr></table></div>
style="vertical-align:baseline;" id="TBL-15-13-"><td style="white-space:normal; text-align:left;" id="TBL-15-13-1"
class="td11"> </td> </tr></table> </div>
<!--l. 851--><div class="crosslinks"><p class="noindent"><span
<!--l. 874--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu14.html" ><span
class="cmr-12">next</span></a><span
@ -356,6 +246,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. 851--><p class="indent" > <a
<!--l. 874--><p class="indent" > <a
id="tailuserhtmlsu13.html"></a>
</body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 851--><div class="crosslinks"><p class="noindent"><span
<!--l. 874--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span
class="cmr-12">next</span></a><span
@ -33,63 +33,44 @@ class="cmr-12">5.7 </span></span> <a
class="cmr-12">Method free</span></h4>
<div class="center"
>
<!--l. 853--><p class="noindent" >
<!--l. 854--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</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 />
<!--l. 876--><p class="noindent" >
<!--l. 877--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">free</span><span style="color:#000000">(</span><span style="color:#000000">p</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000">)</span></code><br />
</div>
<!--l. 857--><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
<!--l. 880--><p class="noindent" ><span
class="cmr-12">This method deallocates the preconditioner data structure </span><code class="lstinline"><span style="color:#000000">p</span></code><span
class="cmr-12">.</span>
<!--l. 860--><p class="noindent" ><span
<!--l. 883--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-15" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-15-1g"><col
id="TBL-15-1"><col
id="TBL-15-2"></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. 863--><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. 863--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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>
<div class="tabular"> <table id="TBL-16" class="tabular"
><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. 886--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-16-1-2"
class="td11"> <!--l. 886--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><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. 864--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2"
class="td11"><!--l. 864--><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. 887--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-2-2"
class="td11"> <!--l. 887--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><span
class="cmr-12">7</span><!--tex4ht:ref: sec:errors --></a> <span
class="cmr-12">for</span>
<span
class="cmr-12">details.</span> </td>
<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"
class="td11"> </td> </tr></table></div>
style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:normal; text-align:left;" id="TBL-16-3-1"
class="td11"> </td> </tr></table> </div>
<!--l. 870--><div class="crosslinks"><p class="noindent"><span
<!--l. 893--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span
class="cmr-12">next</span></a><span
@ -106,6 +87,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. 870--><p class="indent" > <a
<!--l. 893--><p class="indent" > <a
id="tailuserhtmlsu14.html"></a>
</body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 870--><div class="crosslinks"><p class="noindent"><span
<!--l. 893--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu16.html" ><span
class="cmr-12">next</span></a><span
@ -33,148 +33,87 @@ class="cmr-12">5.8 </span></span> <a
class="cmr-12">Method descr</span></h4>
<div class="center"
>
<!--l. 872--><p class="noindent" >
<!--l. 873--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</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">&#x00A0;</span><span
class="cmtt-12">[</span><span
class="cmtt-12">iout</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">root</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">verbosity</span><span
class="cmtt-12">])</span><br />
<!--l. 895--><p class="noindent" >
<!--l. 896--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">descr</span><span style="color:#000000">(</span><span style="color:#000000">info</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">[</span><span style="color:#000000">iout</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">root</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">verbosity</span><span style="color:#000000">])</span></code><br />
</div>
<!--l. 876--><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
<!--l. 899--><p class="noindent" ><span
class="cmr-12">This method prints a description of the preconditioner </span><code class="lstinline"><span style="color:#000000">p</span></code> <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="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">file. It must be called after </span><code class="lstinline"><span style="color:#000000">hierachy_build</span></code> <span
class="cmr-12">and </span><code class="lstinline"><span style="color:#000000">smoothers_build</span></code><span
class="cmr-12">, or </span><code class="lstinline"><span style="color:#000000">build</span></code><span
class="cmr-12">, have</span>
<span
class="cmr-12">been called.</span>
<!--l. 881--><p class="noindent" ><span
<!--l. 904--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-16" 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. 884--><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. 884--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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>
<div class="tabular"> <table id="TBL-17" class="tabular"
><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. 907--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-17-1-2"
class="td11"> <!--l. 907--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><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. 885--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-2-2"
class="td11"><!--l. 885--><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. 908--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-2-2"
class="td11"> <!--l. 908--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><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. 886--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">iout</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-3-2"
class="td11"><!--l. 886--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:normal; text-align:left;" id="TBL-17-3-1"
class="td11"> <!--l. 909--><p class="noindent" ><code class="lstinline"><span style="color:#000000">iout</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-17-3-2"
class="td11"> <!--l. 909--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><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. 887--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-4-2"
class="td11"><!--l. 887--><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. 910--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-4-2"
class="td11"> <!--l. 910--><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>
<span
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"><!--l. 889--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">root</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-5-2"
class="td11"><!--l. 889--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:normal; text-align:left;" id="TBL-17-5-1"
class="td11"> <!--l. 912--><p class="noindent" ><code class="lstinline"><span style="color:#000000">root</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-17-5-2"
class="td11"> <!--l. 912--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-6-"><td style="white-space:normal; text-align:left;" id="TBL-16-6-1"
class="td11"><!--l. 890--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-6-2"
class="td11"><!--l. 890--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-17-6-"><td style="white-space:normal; text-align:left;" id="TBL-17-6-1"
class="td11"> <!--l. 913--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-6-2"
class="td11"> <!--l. 913--><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>
<span
class="cmr-12">will be printed; the default is </span><code class="lstinline"><span style="color:#000000">psb_root_</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-7-"><td style="white-space:normal; text-align:left;" id="TBL-16-7-1"
class="td11"><!--l. 892--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">verbosity</span> </td><td style="white-space:normal; text-align:left;" id="TBL-16-7-2"
class="td11"><!--l. 892--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-17-7-"><td style="white-space:normal; text-align:left;" id="TBL-17-7-1"
class="td11"> <!--l. 915--><p class="noindent" ><code class="lstinline"><span style="color:#000000">verbosity</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-17-7-2"
class="td11"> <!--l. 915--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-8-"><td style="white-space:normal; text-align:left;" id="TBL-16-8-1"
class="td11"><!--l. 893--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-16-8-2"
class="td11"><!--l. 893--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-17-8-"><td style="white-space:normal; text-align:left;" id="TBL-17-8-1"
class="td11"> <!--l. 916--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-8-2"
class="td11"> <!--l. 916--><p class="noindent" ><span
class="cmr-12">The verbosity level of the description. Default value is 0. For</span>
<span
<span
class="cmr-12">values higher than 0, it prints out further information, e.g., for</span>
<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>
<span
class="cmr-12">matrices on every process.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-16-9-"><td style="white-space:normal; text-align:left;" id="TBL-16-9-1"
class="td11"> </td> </tr></table></div>
style="vertical-align:baseline;" id="TBL-17-9-"><td style="white-space:normal; text-align:left;" id="TBL-17-9-1"
class="td11"> </td> </tr></table> </div>
<!--l. 900--><div class="crosslinks"><p class="noindent"><span
<!--l. 923--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu16.html" ><span
class="cmr-12">next</span></a><span
@ -191,6 +130,6 @@ class="cmr-12">] [</span><a
href="userhtmlse5.html#userhtmlsu15.html" ><span
class="cmr-12">up</span></a><span
class="cmr-12">] </span></p></div>
<!--l. 900--><p class="indent" > <a
<!--l. 923--><p class="indent" > <a
id="tailuserhtmlsu15.html"></a>
</body></html>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 900--><div class="crosslinks"><p class="noindent"><span
<!--l. 923--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu15.html" ><span
class="cmr-12">prev</span></a><span
@ -28,251 +28,155 @@ class="cmr-12">] </span></p></div>
class="cmr-12">5.9 </span></span> <a
id="x26-250005.9"></a><span
class="cmr-12">Auxiliary Methods</span></h4>
<!--l. 901--><p class="noindent" ><span
<!--l. 924--><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. 904--><p class="noindent" >
<!--l. 927--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.1 </span></span> <a
id="x26-260005.9.1"></a><span
class="cmr-12">Method: dump</span></h5>
<div class="center"
>
<!--l. 906--><p class="noindent" >
<!--l. 907--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</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 />
<!--l. 929--><p class="noindent" >
<!--l. 930--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">dump</span><span style="color:#000000">(</span><span style="color:#000000">info</span><span style="color:#000000">[,</span><span style="color:#000000">istart</span><span style="color:#000000">,</span><span style="color:#000000">iend</span><span style="color:#000000">,</span><span style="color:#000000">prefix</span><span style="color:#000000">,</span><span style="color:#000000">head</span><span style="color:#000000">,</span><span style="color:#000000">ac</span><span style="color:#000000">,</span><span style="color:#000000">rp</span><span style="color:#000000">,</span><span style="color:#000000">smoother</span><span style="color:#000000">,</span><span style="color:#000000">solver</span><span style="color:#000000">,</span><span style="color:#000000">global_num</span><span style="color:#000000">])</span></code><br />
</div>
<!--l. 910--><p class="noindent" ><span
<!--l. 933--><p class="noindent" ><span
class="cmr-12">Dump on file.</span>
<!--l. 913--><p class="noindent" ><span
<!--l. 936--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-17" 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. 916--><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-1-2"
class="td11"><!--l. 916--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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>
<div class="tabular"> <table id="TBL-18" class="tabular"
><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. 939--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-18-1-2"
class="td11"> <!--l. 939--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><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. 917--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-2-2"
class="td11"><!--l. 917--><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. 940--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-2-2"
class="td11"> <!--l. 940--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><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-17-3-"><td style="white-space:normal; text-align:left;" id="TBL-17-3-1"
class="td11"><!--l. 918--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">amold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-17-3-2"
class="td11"><!--l. 918--><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">&#x00A0;</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">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:normal; text-align:left;" id="TBL-18-3-1"
class="td11"> <!--l. 941--><p class="noindent" ><code class="lstinline"><span style="color:#000000">amold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-18-3-2"
class="td11"> <!--l. 941--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">_base_sparse_mat</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><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. 919--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-17-4-2"
class="td11"><!--l. 919--><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. 942--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-4-2"
class="td11"> <!--l. 942--><p class="noindent" ><span
class="cmr-12">The desired dynamic type for internal matrix components; this</span>
<span
<span
class="cmr-12">allows e.g. running on GPUs; it needs not be the same on all</span>
<span
<span
class="cmr-12">processes. See the PSBLAS User&#8217;s Guide for details </span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span> </td>
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"
class="td11"> </td> </tr></table></div>
<!--l. 926--><p class="noindent" >
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. 949--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.2 </span></span> <a
id="x26-270005.9.2"></a><span
class="cmr-12">Method: clone</span></h5>
<div class="center"
>
<!--l. 928--><p class="noindent" >
<!--l. 929--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</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 />
<!--l. 951--><p class="noindent" >
<!--l. 952--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">clone</span><span style="color:#000000">(</span><span style="color:#000000">pout</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000">)</span></code><br />
</div>
<!--l. 932--><p class="noindent" ><span
<!--l. 955--><p class="noindent" ><span
class="cmr-12">Create a (deep) copy of the preconditioner object.</span>
<!--l. 935--><p class="noindent" ><span
<!--l. 958--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-18" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-18-1g"><col
id="TBL-18-1"><col
id="TBL-18-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:normal; text-align:left;" id="TBL-18-1-1"
class="td11"><!--l. 938--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">pout</span> </td><td style="white-space:normal; text-align:left;" id="TBL-18-1-2"
class="td11"><!--l. 938--><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">&#x00A0;</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>
<div class="tabular"> <table id="TBL-19" class="tabular"
><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. 961--><p class="noindent" ><code class="lstinline"><span style="color:#000000">pout</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-19-1-2"
class="td11"> <!--l. 961--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">amg_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">prec_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><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. 939--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-2-2"
class="td11"><!--l. 939--><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. 962--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-2-2"
class="td11"> <!--l. 962--><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 </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
<span
class="cmr-12">be chosen according to the </span><code class="lstinline"><span style="color:#000000">real</span></code><span
class="cmr-12">/</span><code class="lstinline"><span style="color:#000000">complex</span></code><span
class="cmr-12">, single/double precision</span>
<span
class="cmr-12">version of AMG4PSBLAS under use.</span> </td>
<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. 942--><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-3-2"
class="td11"><!--l. 942--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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>
style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:normal; text-align:left;" id="TBL-19-3-1"
class="td11"> <!--l. 965--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-19-3-2"
class="td11"> <!--l. 965--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><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. 943--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-18-4-2"
class="td11"><!--l. 943--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-19-4-"><td style="white-space:normal; text-align:left;" id="TBL-19-4-1"
class="td11"> <!--l. 966--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-4-2"
class="td11"> <!--l. 966--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><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-18-5-"><td style="white-space:normal; text-align:left;" id="TBL-18-5-1"
class="td11"> </td> </tr></table></div>
<!--l. 948--><p class="noindent" >
style="vertical-align:baseline;" id="TBL-19-5-"><td style="white-space:normal; text-align:left;" id="TBL-19-5-1"
class="td11"> </td> </tr></table> </div>
<!--l. 971--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.3 </span></span> <a
id="x26-280005.9.3"></a><span
class="cmr-12">Method: sizeof</span></h5>
<div class="center"
>
<!--l. 950--><p class="noindent" >
<!--l. 951--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">sz</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">=</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">p</span><span
class="cmtt-12">%</span><span
class="cmtt-12">sizeof</span><span
class="cmtt-12">([</span><span
class="cmtt-12">global</span><span
class="cmtt-12">])</span><br />
<!--l. 973--><p class="noindent" >
<!--l. 974--><p class="noindent" ><code class="lstinline"><span style="color:#000000">sz</span><span style="color:#000000"> </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">sizeof</span><span style="color:#000000">([</span><span style="color:#000000">global</span><span style="color:#000000">])</span></code><br />
</div>
<div class="tabular"> <table id="TBL-19" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-19-1g"><col
id="TBL-19-1"><col
id="TBL-19-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:normal; text-align:left;" id="TBL-19-1-1"
class="td11"><!--l. 955--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">global</span> </td> <td style="white-space:normal; text-align:left;" id="TBL-19-1-2"
class="td11"><!--l. 955--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">logical</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
<div class="tabular"> <table id="TBL-20" class="tabular"
><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. 978--><p class="noindent" ><code class="lstinline"><span style="color:#000000">global</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-20-1-2"
class="td11"> <!--l. 978--><p class="noindent" ><code class="lstinline"><span style="color:#000000">logical</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><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. 956--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-19-2-2"
class="td11"><!--l. 956--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:normal; text-align:left;" id="TBL-20-2-1"
class="td11"> <!--l. 979--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-2-2"
class="td11"> <!--l. 979--><p class="noindent" ><span
class="cmr-12">Whether the global or local preconditioner memory occupation is</span>
<span
class="cmr-12">desired. Default: </span><span class="lstinline"></span><span
class="cmtt-12">.</span><span
class="cmtt-12">false</span><span
class="cmtt-12">.</span><span
class="cmr-12">.</span> </td>
<span
class="cmr-12">desired. Default: </span><code class="lstinline"><span style="color:#000000">.</span><span style="color:#000000">false</span><span style="color:#000000">.</span></code><span
class="cmr-12">.</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"> </td> </tr></table>
</div> <span
style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:normal; text-align:left;" id="TBL-20-3-1"
class="td11"> </td> </tr></table> </div>
<span
class="cmr-12">Return memory footprint in bytes.</span>
<!--l. 963--><p class="noindent" >
<!--l. 986--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.4 </span></span> <a
id="x26-290005.9.4"></a><span
@ -280,21 +184,10 @@ class="cmr-12">Method: allocate</span><span
class="cmr-12">_wrk</span></h5>
<div class="center"
>
<!--l. 965--><p class="noindent" >
<!--l. 966--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</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">&#x00A0;</span><span
class="cmtt-12">vmold</span><span
class="cmtt-12">])</span><br />
<!--l. 988--><p class="noindent" >
<!--l. 989--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">allocate_wrk</span><span style="color:#000000">(</span><span style="color:#000000">info</span><span style="color:#000000">[,</span><span style="color:#000000"> </span><span style="color:#000000">vmold</span><span style="color:#000000">])</span></code><br />
</div>
<!--l. 969--><p class="noindent" ><span
<!--l. 992--><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>
@ -308,82 +201,58 @@ class="cmr-12">notably GPUs, memory allocation is a slow operation, and the defa
class="cmr-12">lead to a slowdown. This method allows to trade space for time by preallocating</span>
<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><code class="lstinline"><span style="color:#000000">vmold</span></code> <span
class="cmr-12">argument is also necessary</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>
<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="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>
class="cmr-12">taken care of based on the dynamic type of the </span><code class="lstinline"><span style="color:#000000">x</span></code> <span
class="cmr-12">argument to the </span><code class="lstinline"><span style="color:#000000">apply</span></code>
<span
class="cmr-12">method.</span>
<!--l. 985--><p class="noindent" ><span
<!--l. 1008--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-20" 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. 988--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-1-2"
class="td11"><!--l. 988--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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>
<div class="tabular"> <table id="TBL-21" class="tabular"
><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. 1011--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-21-1-2"
class="td11"> <!--l. 1011--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><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. 989--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-2-2"
class="td11"><!--l. 989--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:normal; text-align:left;" id="TBL-21-2-1"
class="td11"> <!--l. 1012--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-21-2-2"
class="td11"> <!--l. 1012--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><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-20-3-"><td style="white-space:normal; text-align:left;" id="TBL-20-3-1"
class="td11"><!--l. 990--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">vmold</span> </td><td style="white-space:normal; text-align:left;" id="TBL-20-3-2"
class="td11"><!--l. 990--><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">&#x00A0;</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">&#x00A0;</span><span
class="cmtt-12">optional</span><span
class="cmr-12">.</span> </td>
style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:normal; text-align:left;" id="TBL-21-3-1"
class="td11"> <!--l. 1013--><p class="noindent" ><code class="lstinline"><span style="color:#000000">vmold</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-21-3-2"
class="td11"> <!--l. 1013--><p class="noindent" ><code class="lstinline"><span style="color:#000000">class</span><span style="color:#000000">(</span><span style="color:#000000">psb_</span></code><span
class="cmti-12">x</span><code class="lstinline"><span style="color:#000000">_base_vect_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">optional</span></code><span
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-20-4-"><td style="white-space:normal; text-align:left;" id="TBL-20-4-1"
class="td11"><!--l. 991--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-20-4-2"
class="td11"><!--l. 991--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-21-4-"><td style="white-space:normal; text-align:left;" id="TBL-21-4-1"
class="td11"> <!--l. 1014--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-21-4-2"
class="td11"> <!--l. 1014--><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>
<span
class="cmr-12">allows e.g. running on GPUs.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-20-5-"><td style="white-space:normal; text-align:left;" id="TBL-20-5-1"
class="td11"> </td> </tr></table></div>
<!--l. 997--><p class="noindent" >
style="vertical-align:baseline;" id="TBL-21-5-"><td style="white-space:normal; text-align:left;" id="TBL-21-5-1"
class="td11"> </td> </tr></table> </div>
<!--l. 1020--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark"><span
class="cmr-12">5.9.5 </span></span> <a
id="x26-300005.9.5"></a><span
@ -391,50 +260,37 @@ class="cmr-12">Method: free</span><span
class="cmr-12">_wrk</span></h5>
<div class="center"
>
<!--l. 999--><p class="noindent" >
<!--l. 1000--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</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 />
<!--l. 1022--><p class="noindent" >
<!--l. 1023--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">free_wrk</span><span style="color:#000000">(</span><span style="color:#000000">info</span><span style="color:#000000">)</span></code><br />
</div>
<!--l. 1003--><p class="noindent" ><span
<!--l. 1026--><p class="noindent" ><span
class="cmr-12">Deallocate internal work vectors.</span>
<!--l. 1006--><p class="noindent" ><span
<!--l. 1029--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-21" 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. 1009--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">info</span> </td><td style="white-space:normal; text-align:left;" id="TBL-21-1-2"
class="td11"><!--l. 1009--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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>
<div class="tabular"> <table id="TBL-22" class="tabular"
><colgroup id="TBL-22-1g"><col
id="TBL-22-1"><col
id="TBL-22-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-22-1-"><td style="white-space:normal; text-align:left;" id="TBL-22-1-1"
class="td11"> <!--l. 1032--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-22-1-2"
class="td11"> <!--l. 1032--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><span
class="cmr-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. 1010--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-21-2-2"
class="td11"><!--l. 1010--><p class="noindent" ><span
style="vertical-align:baseline;" id="TBL-22-2-"><td style="white-space:normal; text-align:left;" id="TBL-22-2-1"
class="td11"> <!--l. 1033--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-22-2-2"
class="td11"> <!--l. 1033--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><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-21-3-"><td style="white-space:normal; text-align:left;" id="TBL-21-3-1"
class="td11"> </td> </tr></table></div>
style="vertical-align:baseline;" id="TBL-22-3-"><td style="white-space:normal; text-align:left;" id="TBL-22-3-1"
class="td11"> </td> </tr></table> </div>

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 79--><div class="crosslinks"><p class="noindent"><span
<!--l. 96--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu3.html" ><span
class="cmr-12">next</span></a><span
@ -31,24 +31,25 @@ class="cmr-12">] </span></p></div>
class="cmr-12">3.2 </span></span> <a
id="x10-90003.2"></a><span
class="cmr-12">Optional third party libraries</span></h4>
<!--l. 81--><p class="noindent" ><span
<!--l. 98--><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. 85--><p class="indent" >
<!--l. 102--><p class="indent" >
<dl class="description"><dt class="description">
<span
class="cmbx-12">UMFPACK</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 103--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XUMFPACK"><span
class="cmr-12">15</span></a><span
class="cmr-12">16</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package included in the SuiteSparse</span>
class="cmr-12">A sparse LU factorization package included in the SuiteSparse library,</span>
<span
class="cmr-12">library, available from </span><a
class="cmr-12">available from </span><a
href="faculty.cse.tamu.edu/davis/suitesparse.html" class="url" ><span
class="cmtt-12">faculty.cse.tamu.edu/davis/suitesparse.html</span></a><span
class="cmr-12">;</span>
@ -60,36 +61,38 @@ class="cmr-12">double precision real and complex data. We tested
class="cmr-12">of SuiteSparse. Note that for configuring SuiteSparse you should</span>
<span
class="cmr-12">provide the right path to the BLAS and LAPACK libraries in the</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">SuiteSparse_config/SuiteSparse_config.mk</span></span></span> <span
<span class="obeylines-h"><code class="verb">SuiteSparse_config/SuiteSparse_config.mk</code></span> <span
class="cmr-12">file.</span>
</dd><dt class="description">
<span
class="cmbx-12">MUMPS</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 110--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XMUMPS"><span
class="cmr-12">2</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from</span>
<a
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from </span><a
href="mumps.enseeiht.fr" class="url" ><span
class="cmtt-12">mumps.enseeiht.fr</span></a><span
class="cmr-12">; it provides sequential and parallel factorizations and</span>
class="cmr-12">;</span>
<span
class="cmr-12">triangular system solution for single and double precision, real and complex</span>
class="cmr-12">it provides sequential and parallel factorizations and triangular system</span>
<span
class="cmr-12">data. We tested versions 4.10.0 and 5.0.1.</span>
class="cmr-12">solution for single and double precision, real and complex data. We tested</span>
<span
class="cmr-12">versions 4.10.0 and 5.0.1.</span>
</dd><dt class="description">
<span
class="cmbx-12">SuperLU</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 115--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XSUPERLU"><span
class="cmr-12">16</span></a><span
class="cmr-12">17</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from</span>
<a
class="cmr-12">A sparse LU factorization package available from </span>
<a
href="crd.lbl.gov/~xiaoye/SuperLU/" class="url" ><span
class="cmtt-12">crd.lbl.gov/</span><span
class="cmtt-12">~</span><span
@ -105,35 +108,37 @@ class="cmr-12">remember to define the BLASLIB variable in the make.inc file.</sp
<span
class="cmbx-12">SuperLU</span><span
class="cmbx-12">_Dist</span> </dt><dd
class="description"><span class="cite"><span
class="description">
<!--l. 121--><p class="noindent" ><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XSUPERLUDIST"><span
class="cmr-12">26</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from the same</span>
class="cmr-12">28</span></a><span
class="cmr-12">]</span></span> <span
class="cmr-12">A sparse LU factorization package available from the same site as</span>
<span
class="cmr-12">site as SuperLU; it provides parallel factorization and triangular system</span>
class="cmr-12">SuperLU; it provides parallel factorization and triangular system solution</span>
<span
class="cmr-12">solution for double precision real and complex data. We tested versions</span>
class="cmr-12">for double precision real and complex data. We tested versions 3.3 and</span>
<span
class="cmr-12">3.3 and 4.2. If you installed BLAS from ATLAS, remember to define the</span>
<span
class="cmr-12">BLASLIB variable in the make.inc file and to add the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">-std=c99</span></span></span> <span
class="cmr-12">option to</span>
class="cmr-12">4.2. If you installed BLAS from ATLAS, remember to define the BLASLIB</span>
<span
class="cmr-12">the C compiler options. Note that this library requires the ParMETIS library</span>
class="cmr-12">variable in the make.inc file and to add the </span><span class="obeylines-h"><code class="verb">-std=c99</code></span> <span
class="cmr-12">option to the C</span>
<span
class="cmr-12">for parallel graph partitioning and fill-reducing matrix ordering, available</span>
class="cmr-12">compiler options. Note that this library requires the ParMETIS library for</span>
<span
class="cmr-12">from </span><a
class="cmr-12">parallel graph partitioning and fill-reducing matrix ordering, available from</span>
<a
href="glaros.dtc.umn.edu/gkhome/metis/parmetis/overview" class="url" ><span
class="cmtt-12">glaros.dtc.umn.edu/gkhome/metis/parmetis/overview</span></a><span
class="cmr-12">.</span></dd></dl>
<!--l. 116--><div class="crosslinks"><p class="noindent"><span
<!--l. 133--><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 +155,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. 116--><p class="indent" > <a
<!--l. 133--><p class="indent" > <a
id="tailuserhtmlsu2.html"></a>
</body></html>

File diff suppressed because it is too large Load Diff

@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="userhtml.css">
</head><body
>
<!--l. 190--><div class="crosslinks"><p class="noindent"><span
<!--l. 207--><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="x12-110003.4"></a><span
class="cmr-12">Bug reporting</span></h4>
<!--l. 191--><p class="noindent" ><span
<!--l. 208--><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/psctoolkit/issues" class="url" ><span
class="cmtt-12">https://github.com/psctoolkit/psctoolkit/issues</span></a><br
class="newline" />
<!--l. 195--><p class="indent" > <span
<!--l. 212--><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. 199--><div class="crosslinks"><p class="noindent"><span
<!--l. 216--><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. 199--><p class="indent" > <a
<!--l. 216--><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. 199--><div class="crosslinks"><p class="noindent"><span
<!--l. 216--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu4.html" ><span
class="cmr-12">prev</span></a><span
@ -28,26 +28,22 @@ class="cmr-12">] </span></p></div>
class="cmr-12">3.5 </span></span> <a
id="x13-120003.5"></a><span
class="cmr-12">Example and test programs</span></h4>
<!--l. 200--><p class="noindent" ><span
class="cmr-12">The package contains a </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">samples</span></span></span> <span
class="cmr-12">directory, divided in two subdirs </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">simple</span></span></span> <span
<!--l. 217--><p class="noindent" ><span
class="cmr-12">The package contains a </span><span class="obeylines-h"><code class="verb">samples</code></span> <span
class="cmr-12">directory, divided in two subdirs </span><span class="obeylines-h"><code class="verb">simple</code></span> <span
class="cmr-12">and</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">advanced</span></span></span><span
class="cmr-12">; both of them are further divided into </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">fileread</span></span></span> <span
class="cmr-12">and </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">pdegen</span></span></span> <span
<span class="obeylines-h"><code class="verb">advanced</code></span><span
class="cmr-12">; both of them are further divided into </span><span class="obeylines-h"><code class="verb">fileread</code></span> <span
class="cmr-12">and </span><span class="obeylines-h"><code class="verb">pdegen</code></span> <span
class="cmr-12">subdirectories.</span>
<span
class="cmr-12">Their purpose is as follows:</span>
<dl class="description"><dt class="description">
<span
class="cmtt-12">simple</span> </dt><dd
class="description"><span
class="cmr-12">contains a set of simple example programs with a predefined choice of</span>
class="description">
<!--l. 222--><p class="noindent" ><span
class="cmr-12">contains a set of simple example programs with a predefined choice of</span>
<span
class="cmr-12">preconditioners, selectable via integer values. These are intended to get</span>
<span
@ -55,21 +51,19 @@ class="cmr-12">acquainted with the multilevel preconditioners available in AMG4P
</dd><dt class="description">
<span
class="cmtt-12">advanced</span> </dt><dd
class="description"><span
class="cmr-12">contains a set of more sophisticated examples that will allow the user,</span>
class="description">
<!--l. 226--><p class="noindent" ><span
class="cmr-12">contains a set of more sophisticated examples that will allow the user, via</span>
<span
class="cmr-12">via the input files in the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">runs</span></span></span> <span
class="cmr-12">subdirectories, to experiment with the full</span>
class="cmr-12">the input files in the </span><span class="obeylines-h"><code class="verb">runs</code></span> <span
class="cmr-12">subdirectories, to experiment with the full range</span>
<span
class="cmr-12">range of preconditioners implemented in the package.</span></dd></dl>
<!--l. 214--><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">of preconditioners implemented in the package.</span></dd></dl>
<!--l. 231--><p class="noindent" ><span
class="cmr-12">The </span><span class="obeylines-h"><code class="verb">fileread</code></span> <span
class="cmr-12">directories contain sample programs that read sparse matrices from files,</span>
<span
class="cmr-12">according to the Matrix Market or the Harwell-Boeing storage format; the </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">pdegen</span></span></span>
class="cmr-12">according to the Matrix Market or the Harwell-Boeing storage format; the </span><span class="obeylines-h"><code class="verb">pdegen</code></span>
<span
class="cmr-12">programs generate matrices in full parallel mode from the discretization of a sample</span>
<span
@ -86,6 +80,12 @@ class="cmr-12">partial differential equation.</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu4.html" ><span

@ -38,31 +38,19 @@ class="cmr-12">(see Table</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse4.html#x14-13015r1"><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="lstinline"></span><span
class="cmtt-12">&#8217;</span><span
class="cmtt-12">ML</span><span
class="cmtt-12">&#8217;</span> <span
class="cmr-12">). This preconditioner is chosen by simply specifying </span><code class="lstinline"><span style="color:#000000">&#8217;</span><span style="color:#000000">ML</span><span style="color:#000000">&#8217;</span></code> <span
class="cmr-12">as the</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">second argument of </span><code class="lstinline"><span style="color:#000000">P</span><span style="color:#000000">%</span><span style="color:#000000">init</span></code> <span
class="cmr-12">(a call to </span><code class="lstinline"><span style="color:#000000">P</span><span style="color:#000000">%</span><span style="color:#000000">set</span></code> <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="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
<code class="lstinline"><span style="color:#000000">psb_base_mod</span></code><span
class="cmr-12">, </span><code class="lstinline"><span style="color:#000000">amg_prec_mod</span></code> <span
class="cmr-12">and </span><code class="lstinline"><span style="color:#000000">psb_krylov_mod</span></code> <span
class="cmr-12">must be used by the example</span>
<span
class="cmr-12">program.</span>
@ -75,12 +63,9 @@ class="cmr-12">through the PSBLAS routines for sparse matrix and vector manageme
<span
class="cmr-12">is not reported here for the sake of conciseness. The complete code can be</span>
<span
class="cmr-12">found in the example program file </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_dexample_ml.f90</span></span></span><span
class="cmr-12">found in the example program file </span><span class="obeylines-h"><code class="verb">amg_dexample_ml.f90</code></span><span
class="cmr-12">, in the directory</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">samples/simple/file</span></span></span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">read</span></span></span> <span
<span class="obeylines-h"><code class="verb">samples/simple/file</code></span><span class="obeylines-h"><code class="verb">read</code></span> <span
class="cmr-12">of the AMG4PSBLAS implementation (see Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlsu5.html#x13-120003.5"><span
@ -88,15 +73,14 @@ class="cmr-12">3.5</span><!--tex4ht:ref: sec:ex_and_test --></a><span
class="cmr-12">). A</span>
<span
class="cmr-12">sample test problem along with the relevant input data is available in</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">samples/simple/fileread/runs</span></span></span><span
<span class="obeylines-h"><code class="verb">samples/simple/fileread/runs</code></span><span
class="cmr-12">. For details on the use of the PSBLAS routines, see</span>
<span
class="cmr-12">the PSBLAS User&#8217;s Guide</span><span
class="cmr-12">&#x00A0;</span><span class="cite"><span
class="cmr-12">[</span><a
href="userhtmlli5.html#XPSBLASGUIDE"><span
class="cmr-12">20</span></a><span
class="cmr-12">21</span></a><span
class="cmr-12">]</span></span><span
class="cmr-12">.</span>
@ -114,9 +98,7 @@ class="cmr-12">5</span><!--tex4ht:ref: sec:userinterface --></a> <span
class="cmr-12">for</span>
<span
class="cmr-12">details). If these versions are installed, the corresponding codes are available in</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">samples/simple/file</span></span></span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">read</span></span></span><span
<span class="obeylines-h"><code class="verb">samples/simple/file</code></span><span class="obeylines-h"><code class="verb">read</code></span><span
class="cmr-12">.</span>
@ -133,7 +115,7 @@ class="cmr-12">.</span>
<div class="minipage"><pre class="verbatim" id="verbatim-6">
<div class="minipage"><pre class="verbatim" id="verbatim-7">
&#x00A0;&#x00A0;use&#x00A0;psb_base_mod
&#x00A0;&#x00A0;use&#x00A0;amg_prec_mod
&#x00A0;&#x00A0;use&#x00A0;psb_krylov_mod
@ -167,6 +149,7 @@ class="cmr-12">.</span>
!&#x00A0;build&#x00A0;the&#x00A0;preconditioner
&#x00A0;&#x00A0;call&#x00A0;P%hierarchy_build(A,desc_A,info)
&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info)
!
!&#x00A0;set&#x00A0;the&#x00A0;solver&#x00A0;parameters&#x00A0;and&#x00A0;the&#x00A0;initial&#x00A0;guess
&#x00A0;&#x00A0;...&#x00A0;...
@ -185,10 +168,10 @@ class="cmr-12">.</span>
&#x00A0;&#x00A0;call&#x00A0;psb_exit(ctxt)
&#x00A0;&#x00A0;stop
</pre>
<!--l. 255--><p class="nopar" >
<!--l. 255--><p class="nopar" > </div>
</div>
<br /> <div class="caption"
><span class="id">Listing 1: </span><span
class="content">setup and application of the default multilevel preconditioner (example 1).
@ -216,10 +199,7 @@ class="cmr-12">sweeps. Note that the ILU(0) factorization (plus triangular solve
class="cmr-12">local solver for the block-Jacobi sweeps, since this is the default associated</span>
<span
class="cmr-12">with block-Jacobi and set by</span><span
class="cmr-12">&#x00A0;</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">&#x00A0;</span><code class="lstinline"><span style="color:#000000">P</span><span style="color:#000000">%</span><span style="color:#000000">init</span></code><span
class="cmr-12">. Furthermore, specifying block-Jacobi as</span>
<span
class="cmr-12">coarsest-level solver implies that the coarsest-level matrix is distributed among</span>
@ -255,8 +235,7 @@ href="#x15-14003r3"><span
class="cmr-12">3</span><!--tex4ht:ref: fig:ex3 --></a> <span
class="cmr-12">are included in the example program</span>
<span
class="cmr-12">file </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_dexample_ml.f90</span></span></span> <span
class="cmr-12">file </span><span class="obeylines-h"><code class="verb">amg_dexample_ml.f90</code></span> <span
class="cmr-12">too.</span>
<!--l. 294--><p class="indent" > <span
class="cmr-12">Finally, Figure</span><span
@ -270,16 +249,14 @@ class="cmr-12">i.e., RAS with overlap 2. Note also that a Krylov method differen
class="cmr-12">must be used to solve the preconditioned system, since the preconditione in</span>
<span
class="cmr-12">nonsymmetric. The corresponding example program is available in the file</span>
<span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg_dexample_1lev.f90</span></span></span><span
<span class="obeylines-h"><code class="verb">amg_dexample_1lev.f90</code></span><span
class="cmr-12">.</span>
<!--l. 301--><p class="indent" > <span
class="cmr-12">For all the previous preconditioners, example programs where the sparse matrix</span>
<span
class="cmr-12">and the right-hand side are generated by discretizing a PDE with Dirichlet</span>
<span
class="cmr-12">boundary conditions are also available in the directory </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">samples/simple/pdegen</span></span></span><span
class="cmr-12">boundary conditions are also available in the directory </span><span class="obeylines-h"><code class="verb">samples/simple/pdegen</code></span><span
class="cmr-12">.</span>
@ -293,7 +270,7 @@ class="cmr-12">.</span>
<div class="center"
>
<!--l. 318--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-7">
<div class="minipage"><pre class="verbatim" id="verbatim-8">
...&#x00A0;...
!&#x00A0;build&#x00A0;a&#x00A0;V-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;1&#x00A0;block-Jacobi&#x00A0;sweep&#x00A0;(with
!&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;blocks)&#x00A0;as&#x00A0;pre-&#x00A0;and&#x00A0;post-smoother,&#x00A0;and&#x00A0;8&#x00A0;&#x00A0;block-Jacobi
@ -306,7 +283,7 @@ class="cmr-12">.</span>
&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info)
...&#x00A0;...
</pre>
<!--l. 333--><p class="nopar" ></div></div>
<!--l. 333--><p class="nopar" > </div></div>
<br /><div class="caption"
><span class="id">Listing 2: </span><span
class="content">setup of a multilevel preconditioner based on the default decoupled coarsening</span></div><!--tex4ht:label?: x15-14002r2 -->
@ -326,7 +303,7 @@ class="content">setup of a multilevel preconditioner based on the default decoup
<div class="center"
>
<!--l. 362--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-8">
<div class="minipage"><pre class="verbatim" id="verbatim-9">
...&#x00A0;...
!&#x00A0;build&#x00A0;a&#x00A0;W-cycle&#x00A0;preconditioner&#x00A0;with&#x00A0;2&#x00A0;hybrid&#x00A0;Gauss-Seidel&#x00A0;sweeps
!&#x00A0;as&#x00A0;pre-&#x00A0;and&#x00A0;post-smoother,&#x00A0;a&#x00A0;distributed&#x00A0;coarsest
@ -345,7 +322,7 @@ class="content">setup of a multilevel preconditioner based on the default decoup
&#x00A0;&#x00A0;call&#x00A0;P%smoothers_build(A,desc_A,info)
...&#x00A0;...
</pre>
<!--l. 383--><p class="nopar" ></div></div>
<!--l. 383--><p class="nopar" > </div></div>
<br /> <div class="caption"
><span class="id">Listing 3: </span><span
class="content">setup of a multilevel preconditioner based on the coupled coarsening using
@ -366,7 +343,7 @@ weighted matching</span></div><!--tex4ht:label?: x15-14003r3 -->
<div class="center"
>
<!--l. 402--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-9">
<div class="minipage"><pre class="verbatim" id="verbatim-10">
...&#x00A0;...
!&#x00A0;set&#x00A0;RAS&#x00A0;with&#x00A0;overlap&#x00A0;2&#x00A0;and&#x00A0;ILU(0)&#x00A0;on&#x00A0;the&#x00A0;local&#x00A0;blocks
&#x00A0;&#x00A0;call&#x00A0;P%init(ctxt,&#8217;AS&#8217;,info)
@ -376,7 +353,7 @@ weighted matching</span></div><!--tex4ht:label?: x15-14003r3 -->
!&#x00A0;solve&#x00A0;Ax=b&#x00A0;with&#x00A0;preconditioned&#x00A0;BiCGSTAB
&#x00A0;&#x00A0;call&#x00A0;psb_krylov(&#8217;BICGSTAB&#8217;,A,P,b,x,tol,desc_A,info)
</pre>
<!--l. 414--><p class="nopar" ></div></div>
<!--l. 414--><p class="nopar" > </div></div>
<br /> <div class="caption"
><span class="id">Listing 4: </span><span
class="content">setup of a one-level Schwarz preconditioner.</span></div><!--tex4ht:label?: x15-14004r4 -->

@ -33,8 +33,7 @@ class="cmr-12">The code discussed here shows how to set up a program exploiting
<span
class="cmr-12">capabilities of PSBLAS and AMG4PSBLAS. The code example is available in the</span>
<span
class="cmr-12">source distribution directory </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">amg4psblas/examples/gpu</span></span></span><span
class="cmr-12">source distribution directory </span><span class="obeylines-h"><code class="verb">amg4psblas/examples/gpu</code></span><span
class="cmr-12">.</span>
<!--l. 431--><p class="indent" > <span
class="cmr-12">First of all, we need to include the appropriate modules and declare some auxiliary</span>
@ -52,7 +51,7 @@ class="cmr-12">variables:</span>
<div class="center"
>
<!--l. 452--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-10">
<div class="minipage"><pre class="verbatim" id="verbatim-11">
program&#x00A0;amg_dexample_gpu
&#x00A0;&#x00A0;use&#x00A0;psb_base_mod
&#x00A0;&#x00A0;use&#x00A0;amg_prec_mod
@ -67,9 +66,10 @@ program&#x00A0;amg_dexample_gpu
&#x00A0;&#x00A0;type(psb_d_hlg_sparse_mat)&#x00A0;::&#x00A0;agmold
&#x00A0;&#x00A0;type(psb_d_vect_gpu)&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;::&#x00A0;vgmold
&#x00A0;&#x00A0;type(psb_i_vect_gpu)&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;::&#x00A0;igmold
&#x00A0;
</pre>
<!--l. 471--><p class="nopar" ></div></div>
<!--l. 471--><p class="nopar" > </div></div>
<br /> <div class="caption"
><span class="id">Listing 5: </span><span
class="content">setup of a GPU-enabled test program part one.</span></div><!--tex4ht:label?: x16-15001r5 -->
@ -78,8 +78,7 @@ class="content">setup of a GPU-enabled test program part one.</span></div><!--te
</div><hr class="endfloat" />
<!--l. 478--><p class="indent" > <span
class="cmr-12">In this particular example we are choosing to employ a </span><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">HLG</span></span></span> <span
class="cmr-12">In this particular example we are choosing to employ a </span><span class="obeylines-h"><code class="verb">HLG</code></span> <span
class="cmr-12">data structure for</span>
<span
class="cmr-12">sparse matrices on GPUs; for more information please refer to the PSBLAS-EXT users&#8217;</span>
@ -103,7 +102,7 @@ class="cmr-12">guides).</span>
<div class="center"
>
<!--l. 501--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-11">
<div class="minipage"><pre class="verbatim" id="verbatim-12">
&#x00A0;&#x00A0;call&#x00A0;psb_init(ctxt)
&#x00A0;&#x00A0;call&#x00A0;psb_info(ctxt,iam,np)
&#x00A0;&#x00A0;!
@ -114,9 +113,10 @@ class="cmr-12">guides).</span>
&#x00A0;&#x00A0;......
&#x00A0;&#x00A0;t1&#x00A0;=&#x00A0;psb_wtime()
&#x00A0;&#x00A0;call&#x00A0;prec%smoothers_build(a,desc_a,info,&#x00A0;amold=agmold,&#x00A0;vmold=vgmold,&#x00A0;imold=igmold)
&#x00A0;
</pre>
<!--l. 516--><p class="nopar" ></div></div>
<!--l. 516--><p class="nopar" > </div></div>
<br /> <div class="caption"
><span class="id">Listing 6: </span><span
class="content">setup of a GPU-enabled test program part two.</span></div><!--tex4ht:label?: x16-15002r6 -->
@ -144,11 +144,12 @@ class="cmr-12">GPU environment</span>
<div class="center"
>
<!--l. 557--><p class="noindent" >
<div class="minipage"><pre class="verbatim" id="verbatim-12">
<div class="minipage"><pre class="verbatim" id="verbatim-13">
&#x00A0;&#x00A0;call&#x00A0;desc_a%cnv(mold=igmold)
&#x00A0;&#x00A0;call&#x00A0;a%cscnv(info,mold=agmold)
&#x00A0;&#x00A0;call&#x00A0;psb_geasb(x,desc_a,info,mold=vgmold)
&#x00A0;&#x00A0;call&#x00A0;psb_geasb(b,desc_a,info,mold=vgmold)
&#x00A0;&#x00A0;!
&#x00A0;&#x00A0;!&#x00A0;iterative&#x00A0;method&#x00A0;parameters
&#x00A0;&#x00A0;!
@ -161,13 +162,15 @@ class="cmr-12">GPU environment</span>
&#x00A0;&#x00A0;call&#x00A0;prec%deallocate_wrk(info)
&#x00A0;&#x00A0;call&#x00A0;psb_barrier(ctxt)
&#x00A0;&#x00A0;tslv&#x00A0;=&#x00A0;psb_wtime()&#x00A0;-&#x00A0;t1
&#x00A0;&#x00A0;......
&#x00A0;&#x00A0;call&#x00A0;psb_gpu_exit()
&#x00A0;&#x00A0;call&#x00A0;psb_exit(ctxt)
&#x00A0;&#x00A0;stop
&#x00A0;
</pre>
<!--l. 584--><p class="nopar" ></div></div>
<!--l. 584--><p class="nopar" > </div></div>
<br /> <div class="caption"
><span class="id">Listing 7: </span><span
class="content">setup of a GPU-enabled test program part three.</span></div><!--tex4ht:label?: x16-15003r7 -->
@ -182,21 +185,21 @@ class="cmr-12">GPU, i.e. methods that do NOT employ triangular system solve kern
<span
class="cmr-12">satisfy this constraint include:</span>
<ul class="itemize1">
<li class="itemize"><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">JACOBI</span></span></span>
<li class="itemize">
<!--l. 596--><p class="noindent" ><span class="obeylines-h"><code class="verb">JACOBI</code></span>
</li>
<li class="itemize"><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">BJAC</span></span></span> <span
<li class="itemize">
<!--l. 597--><p class="noindent" ><span class="obeylines-h"><code class="verb">BJAC</code></span> <span
class="cmr-12">with the following methods on the local blocks:</span>
<ul class="itemize2">
<li class="itemize"><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">INVK</span></span></span>
<li class="itemize">
<!--l. 599--><p class="noindent" ><span class="obeylines-h"><code class="verb">INVK</code></span>
</li>
<li class="itemize"><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">INVT</span></span></span>
<li class="itemize">
<!--l. 600--><p class="noindent" ><span class="obeylines-h"><code class="verb">INVT</code></span>
</li>
<li class="itemize"><span class="obeylines-h"><span class="verb"><span
class="cmtt-12">AINV</span></span></span></li></ul>
<li class="itemize">
<!--l. 601--><p class="noindent" ><span class="obeylines-h"><code class="verb">AINV</code></span></li></ul>
</li></ul>
<!--l. 604--><p class="noindent" ><span
class="cmr-12">and their </span><span
@ -209,6 +212,9 @@ class="cmr-12">variants.</span>
<!--l. 1--><div class="crosslinks"><p class="noindent"><span
class="cmr-12">[</span><a
href="userhtmlsu6.html" ><span

@ -28,104 +28,63 @@ class="cmr-12">Method init</span></h4>
<div class="center"
>
<!--l. 44--><p class="noindent" >
<!--l. 45--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">call</span><span
class="cmtt-12">&#x00A0;</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. 45--><p class="noindent" ><code class="lstinline"><span style="color:#000000">call</span><span style="color:#000000"> </span><span style="color:#000000">p</span><span style="color:#000000">%</span><span style="color:#000000">init</span><span style="color:#000000">(</span><span style="color:#000000">contxt</span><span style="color:#000000">,</span><span style="color:#000000">ptype</span><span style="color:#000000">,</span><span style="color:#000000">info</span><span style="color:#000000">)</span></code></div>
<!--l. 48--><p class="noindent" ><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">This method allocates and initializes the preconditioner </span><code class="lstinline"><span style="color:#000000">p</span></code><span
class="cmr-12">, according to the</span>
<span
class="cmr-12">preconditioner type chosen by the user.</span>
<!--l. 52--><p class="noindent" ><span
class="cmbx-12">Arguments</span>
<div class="tabular"> <table id="TBL-2" class="tabular"
cellspacing="0" cellpadding="0"
><colgroup id="TBL-2-1g"><col
id="TBL-2-1"><col
id="TBL-2-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:normal; text-align:left;" id="TBL-2-1-1"
class="td11"><!--l. 56--><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. 56--><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">&#x00A0;</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>
class="td11"> <!--l. 56--><p class="noindent" ><code class="lstinline"><span style="color:#000000">contxt</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-2-1-2"
class="td11"> <!--l. 56--><p class="noindent" ><code class="lstinline"><span style="color:#000000">type</span><span style="color:#000000">(</span><span style="color:#000000">psb_ctxt_type</span><span style="color:#000000">),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">)</span></code><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. 57--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-2-2"
class="td11"><!--l. 57--><p class="noindent" ><span
class="cmr-12">The communication context.</span> </td></tr><tr
class="td11"> <!--l. 57--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-2-2"
class="td11"> <!--l. 57--><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. 58--><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. 58--><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">&#x00A0;</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="td11"> <!--l. 58--><p class="noindent" ><code class="lstinline"><span style="color:#000000">ptype </span></code> </td> <td style="white-space:normal; text-align:left;" id="TBL-2-3-2"
class="td11"> <!--l. 58--><p class="noindent" ><code class="lstinline"><span style="color:#000000">character</span><span style="color:#000000">(</span><span style="color:#000000">len</span><span style="color:#000000">=*),</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">in</span><span style="color:#000000">) </span></code><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"
class="td11"><!--l. 59--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-4-2"
class="td11"><!--l. 59--><p class="noindent" ><span
class="td11"> <!--l. 59--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-4-2"
class="td11"> <!--l. 59--><p class="noindent" ><span
class="cmr-12">The type of preconditioner. Its values are specified in Table</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse4.html#x14-13015r1"><span
class="cmr-12">1</span><!--tex4ht:ref: tab:precinit --></a><span
class="cmr-12">.</span> </td>
class="cmr-12">.</span> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:normal; text-align:left;" id="TBL-2-5-1"
class="td11"><!--l. 61--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-5-2"
class="td11"><!--l. 61--><p class="noindent" ><span
class="cmr-12">Note that strings are case insensitive.</span> </td>
class="td11"> <!--l. 61--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-5-2"
class="td11"> <!--l. 61--><p class="noindent" ><span
class="cmr-12">Note that 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. 62--><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. 62--><p class="noindent" ><span class="lstinline"></span><span
class="cmtt-12">integer</span><span
class="cmtt-12">,</span><span
class="cmtt-12">&#x00A0;</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>
class="td11"> <!--l. 62--><p class="noindent" ><code class="lstinline"><span style="color:#000000">info</span></code> </td><td style="white-space:normal; text-align:left;" id="TBL-2-6-2"
class="td11"> <!--l. 62--><p class="noindent" ><code class="lstinline"><span style="color:#000000">integer</span><span style="color:#000000">,</span><span style="color:#000000"> </span><span style="color:#000000">intent</span><span style="color:#000000">(</span><span style="color:#000000">out</span><span style="color:#000000">)</span></code><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"
class="td11"><!--l. 63--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-7-2"
class="td11"><!--l. 63--><p class="noindent" ><span
class="td11"> <!--l. 63--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-2-7-2"
class="td11"> <!--l. 63--><p class="noindent" ><span
class="cmr-12">Error code. If no error, 0 is returned. See Section</span><span
class="cmr-12">&#x00A0;</span><a
href="userhtmlse7.html#x28-320007"><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-2-8-"><td style="white-space:normal; text-align:left;" id="TBL-2-8-1"
class="td11"> </td> </tr></table></div>
class="td11"> </td> </tr></table> </div>

File diff suppressed because it is too large Load Diff

@ -92,8 +92,14 @@ P.~D'Ambra, S.~Filippone and P.\,S.~Vassilevski,
ACM Transactions on Mathematical Software, 44, (2018) 39:1--39:25.
%
\bibitem{DDF2020}
P.~D'Ambra, F~Durastante, S.~Filippone,
\emph{AMG preconditioners for Linear Solvers towards Extreme Scale}, 2020, \href{https://arxiv.org/abs/2006.16147v3arXiv:2006.16147v2}{arXiv:2006.16147v3}.
P.~D'Ambra, F.~Durastante, S.~Filippone,
\emph{AMG preconditioners for Linear Solvers towards Extreme Scale},
SIAM Journal on Scientific Computing 43, no. 5 (2021): S679-S703.
%
\bibitem{DDFMT2024}
P.~D'Ambra, F.~Durastante, S.~Filippone, S.~Massei, S.~Thomas
\emph{Optimal Polynomial Smoothers for Parallel AMG}, 2024,
\href{https://arxiv.org/abs/2407.09848}{arXiv:2407.09848}.
%
\bibitem{UMFPACK}
T.~A.~Davis,
@ -165,6 +171,11 @@ C.~L.~Lawson, R.~J.~Hanson, D.~Kincaid, F.~T.~Krogh,
\emph{Basic Linear Algebra Subprograms for FORTRAN usage},
ACM Transactions on Mathematical Software, 5 (3), 1979, 308--323.
%
\bibitem{LOTTES}
J.~Lottes,
\emph{Optimal polynomial smoothers for multigrid Vcycles},
Numerical Linear Algebra with Applications 30.6 (2023): e2518.
%
\bibitem{SUPERLUDIST}
X.~S.~Li, J.~W.~Demmel,
{\em SuperLU\_DIST: A Scalable Distributed-memory

@ -62,20 +62,37 @@ interfaces compatible with AMG4PSBLAS; usually this means that they
should all be built with the same compiler being used for AMG4PSBLAS.
If you want to use the PSBLAS support for NVIDIA GPUs, you will also
need:
\begingroup
\sloppy
\begin{description}
\item[PSBLAS-EXT] Parallel Sparse BLAS (PSBLAS) Extensions,
available from
\href{https://psctoolkit.github.io/products/psblasext/}{psctoolkit.github.io/products/psblasext/}; version 1.3.0 (or later).
\item[SPGPU] Sparse CUDA kernels for NVIDIA GPUs; available from
GitHub, see also
\href{https://psctoolkit.github.io/products/psblasext/}{psctoolkit.github.io/products/psblasext/}.
\end{description}
See also Sec~\ref{sec:gpu-example}.
\endgroup
need a working version of the CUDA Toolkit that is compatible with the
compiler choice made to compile PSBLAS and AMG4PSBLAS.
After that you will need to have configured and compiled the PSBLAS library
with the options:
%\begingroup
%\sloppy
%\begin{description}
% \item[PSBLAS-EXT] Parallel Sparse BLAS (PSBLAS) Extensions,
% available from
% \href{https://psctoolkit.github.io/products/psblasext/}{psctoolkit.github.io/products/psblasext/}; version 1.3.0 (or later).
% \item[SPGPU] Sparse CUDA kernels for NVIDIA GPUs; available from
% GitHub, see also
% \href{https://psctoolkit.github.io/products/psblasext/}{psctoolkit.github.io/products/psblasext/}.
% \end{description}
%
%\endgroup
\ifpdf
\begin{minted}[breaklines=true,bgcolor=bg,fontsize=\small]{fortran}
./configure --enable-cuda --with-cudadir=${CUDA_HOME} --with-cudacc=xx,yy,zz
\end{minted}
\else
{\small
\begin{verbatim}
./configure --enable-cuda --with-cudadir=${CUDA_HOME} --with-cudacc=xx,yy,zz
\end{verbatim}
}
\fi
Previous versions required you to have the auxiliary libraries SPGPU and PSBLAS-EXT compiled,
this is no longer necessary because they have been integrated into PSBLAS and are compiled
by activating the previous flags during configuration. See also Sec~\ref{sec:gpu-example}.
\subsection{Optional third party libraries\label{sec:third-party}}
We provide interfaces to the following third-party software libraries;

@ -573,12 +573,12 @@ level (continued).\label{tab:p_coarse_1}}
\fortinline|'SMOOTHER_TYPE'| & \fortinline|character(len=*)|
& \fortinline|'JACOBI'| \par \fortinline|'GS'| \par \fortinline|'BGS'| \par \fortinline|'BJAC'|
\par \fortinline|'AS'| \par \fortinline|'L1-JACOBI'| \par \fortinline|'L1-BJAC'| \par \fortinline|'L1-FBGS'|
& \fortinline|'FBGS'|
\par \fortinline|'AS'| \par \fortinline|'L1-JACOBI'| \par \fortinline|'L1-BJAC'| \par \fortinline|'L1-FBGS'| \par \fortinline|'POLY'|
& \fortinline|'FBGS'|
& Type of smoother used in the multilevel preconditioner:
point-Jacobi, hybrid (forward) Gauss-Seidel,
hybrid backward Gauss-Seidel, block-Jacobi, $\ell_1$-Jacobi, $\ell_1$--hybrid (forward) Gauss-Seidel, $\ell_1$-point-Jacobi and
Additive Schwarz. \par
Additive Schwarz, polynomial accelerators; see~\cite{DDFMT2024} \par
It is ignored by one-level preconditioners. \\ \hline
\fortinline|'SUB_SOLVE'| & \fortinline|character(len=*)|
& \fortinline|'JACOBI'|
@ -612,12 +612,11 @@ level (continued).\label{tab:p_coarse_1}}
In the multilevel case, no pre-smother or
post-smoother is used if this parameter is set to 0
together with \fortinline|pos='PRE'| or \fortinline|pos='POST'|,
respectively. \\ \hline
\fortinline|'SUB_OVR'| & \fortinline|integer|
& Any integer \par number~$\ge 0$
& 1
& Number of overlap layers, for Additive Schwarz only. \\
\hline
respectively. Is ignored if the smoother is \fortinline|'POLY'| \\ \hline
\fortinline|'POLY_DEGREE'| & \fortinline|integer|
& Any integer \par number~$\ge 1$ and~$\le 30$
& 1
& Degree of the polynomial accelerator, is equal to the number of matrix-vector products performed by the smoother. Is ignored if the smoother is not \fortinline|'POLY'|\\ \hline
\end{tabular}
\end{center}
\caption{Parameters defining the smoother or the details of the one-level preconditioner.
@ -631,6 +630,10 @@ level (continued).\label{tab:p_coarse_1}}
\hline
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
\textsc{comments} \\ \hline
\fortinline|'SUB_OVR'| & \fortinline|integer|
& Any integer \par number~$\ge 0$
& 1
& Number of overlap layers, for Additive Schwarz only. \\
\fortinline|'SUB_RESTR'| & \fortinline|character(len=*)|
& \fortinline|'HALO'| \par \fortinline|'NONE'|
& \fortinline|'HALO'|
@ -679,6 +682,26 @@ level (continued).\label{tab:p_coarse_1}}
(continued).\label{tab:p_smoother_1}}
\esideways
\bsideways
\begin{center}
\small
\begin{tabular}{|p{5.4cm}|l|p{3.5cm}|p{3.5cm}|p{3.55cm}|}
\hline
\fortinline|what| & \textsc{data type} & \fortinline|val| & \textsc{default} &
\textsc{comments} \\ \hline
\fortinline|'POLY_VARIANT'| & \fortinline|character(len=*)|
& \fortinline|'CHEB_4'| \par \fortinline|'CHEB_4_OPT'| \par \fortinline|'CHEB_1_OPT'|
& \fortinline|'CHEB_4'|
& Select the type of polynomial accelerator. The \fortinline|'CHEB_4'| and \fortinline|'CHEB_4_OPT'| types are those based on the Chebyshev polynomials of the 4\textsuperscript{th}-kind described in~\cite{LOTTES}. The \fortinline|'CHEB_1_OPT'| version is the one described in~\cite{DDFMT2024} and based on the Chebyshev polynomials of the 1\textsuperscript{st}-kind.\\ \hline
\fortinline|'POLY_RHO_ESTIMATE'| & \fortinline|character(len=*)| & \fortinline|'POLY_RHO_EST_POWER'| & \fortinline|'POLY_RHO_EST_POWER'| & Algorithm for estimating the spectral radius of the smoother to which the polynomial acceleration is applied. The only implemented algorithm is the power method; see also the two following options. \\ \hline
\fortinline|'POLY_RHO_ESTIMATE_ITERATIONS'| & \fortinline|integer| & Any integer\par number $\ge 1$ & 20 & Number of iterations for the spectral radius estimate.\\ \hline
\fortinline|'POLY_RHO_BA'| & \fortinline|real(kind_parameter)| & Any real\par number $\in (0,1]$ & 1 & Sets an estimate of the spectral radius of the base smoother to which the polynomial accelerator is applied.\\
\hline
\end{tabular}
\end{center}
\caption{Parameters defining the smoother or the details of the one-level preconditioner
(continued).\label{tab:p_smoother_2}}
\esideways
\clearpage

Loading…
Cancel
Save