diff --git a/docs/amg4psblas_1.0-guide.pdf b/docs/amg4psblas_1.0-guide.pdf index d8f429ee..83f08e0a 100644 Binary files a/docs/amg4psblas_1.0-guide.pdf and b/docs/amg4psblas_1.0-guide.pdf differ diff --git a/docs/html/index.html b/docs/html/index.html index dd54bbfb..f164436d 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -3,8 +3,8 @@ - - + + diff --git a/docs/html/userhtml.css b/docs/html/userhtml.css index f8b025b4..add1eb7b 100644 --- a/docs/html/userhtml.css +++ b/docs/html/userhtml.css @@ -16,23 +16,24 @@ .cmbx-12{ font-weight: bold;} .cmbx-12{ font-weight: bold;} .cmbx-12{ font-weight: bold;} -.cmtt-12{font-size:109%;font-family: monospace;} -.cmtt-12{font-family: monospace;} -.cmtt-12{font-family: monospace;} +.cmtt-12{font-size:109%;font-family: monospace,monospace;} +.cmtt-12{font-family: monospace,monospace;} +.cmtt-12{font-family: monospace,monospace;} .cmcsc-10x-x-120{font-size:109%;} .cmr-8{font-size:72%;} .cmmi-12{font-size:109%;font-style: italic;} .cmmi-8{font-size:72%;font-style: italic;} .cmsy-8{font-size:72%;} +.tctt-1200{font-size:109%;font-family: monospace,monospace;} .cmmi-10x-x-109{font-style: italic;} .cmsy-10x-x-109{} -.cmtt-10x-x-109{font-family: monospace;} -.cmtt-10x-x-109{font-family: monospace;} -.cmtt-10x-x-109{font-family: monospace;} +.cmtt-10x-x-109{font-family: monospace,monospace;} +.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;} -.cmtt-10{font-family: monospace;} -.cmtt-10{font-family: monospace;} +.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;} @@ -44,10 +45,11 @@ .cmbx-10{ font-weight: bold;} .cmti-10{font-size:90%; font-style: italic;} .small-caps{font-variant: small-caps; } -p.noindent { text-indent: 0em } -td p.noindent { text-indent: 0em; margin-top:0em; } -p.nopar { text-indent: 0em; } -p.indent{ text-indent: 1.5em } +p{margin-top:0;margin-bottom:0} +p.indent{text-indent:0;} +p + p{margin-top:1em;} +p + div, p + pre {margin-top:1em;} +div + p, pre + p {margin-top:1em;} @media print {div.crosslinks {visibility:hidden;}} a img { border-top: 0; border-left: 0; border-right: 0; } center { margin-top:1em; margin-bottom:1em; } @@ -70,7 +72,7 @@ div.obeylines-v p { margin-top:0; margin-bottom:0; } td.displaylines {text-align:center; white-space:nowrap;} .centerline {text-align:center;} .rightline {text-align:right;} -div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; } +pre.verbatim {font-family: monospace,monospace; text-align:left; clear:both; } .fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } div.fbox {display:table} div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } @@ -103,18 +105,16 @@ td.td01{ padding-left:0pt; padding-right:5pt; } td.td10{ padding-left:5pt; padding-right:0pt; } td.td11{ padding-left:5pt; padding-right:5pt; } table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } -.hline hr, .cline hr{ height : 1px; margin:0px; } +.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;} .tabbing-right {text-align:right;} -span.TEX {letter-spacing: -0.125em; } -span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;} -a span.TEX span.E {text-decoration: none; } -span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;} -span.LATEX span.TEX{ position:relative; left: -0.4em; } div.float, div.figure {margin-left: auto; margin-right: auto;} div.float img {text-align:center;} div.figure img {text-align:center;} -.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} -.marginpar p{margin-top:0.4em; margin-bottom:0.4em;} +.marginpar,.reversemarginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} +.marginpar p,.reversemarginpar p{margin-top:0.4em; margin-bottom:0.4em;} +.reversemarginpar{float:left;} table.equation {width:100%;} .equation td{text-align:center; } td.equation { margin-top:1em; margin-bottom:1em; } @@ -157,10 +157,10 @@ div.abstract {width:100%;} .Ovalbox-thick { padding-left:3pt; padding-right:3pt; border:solid thick; } .shadowbox { padding-left:3pt; padding-right:3pt; border:solid thin; border-right:solid thick; border-bottom:solid thick; } .doublebox { padding-left:3pt; padding-right:3pt; border-style:double; border:solid thick; } -.figure img.graphics {margin-left:10%;} +.rotatebox{display: inline-block;} .lstlisting .label{margin-right:0.5em; } -div.lstlisting{font-family: monospace; white-space: nowrap; margin-top:0.5em; margin-bottom:0.5em; } -div.lstinputlisting{ font-family: monospace; white-space: nowrap; } +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; } .lstinputlisting .label{margin-right:0.5em;} #TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;} #TBL-1{border-collapse:collapse;} diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html index dd54bbfb..f164436d 100644 --- a/docs/html/userhtml.html +++ b/docs/html/userhtml.html @@ -3,8 +3,8 @@ - - + + diff --git a/docs/html/userhtml0x.png b/docs/html/userhtml0x.png index 96c5cb9b..f004430a 100644 Binary files a/docs/html/userhtml0x.png and b/docs/html/userhtml0x.png differ diff --git a/docs/html/userhtml1x.png b/docs/html/userhtml1x.png index 4c10c200..20f909a7 100644 Binary files a/docs/html/userhtml1x.png and b/docs/html/userhtml1x.png differ diff --git a/docs/html/userhtmlli1.html b/docs/html/userhtmlli1.html index 2549a048..0df0ca7b 100644 --- a/docs/html/userhtmlli1.html +++ b/docs/html/userhtmlli1.html @@ -3,8 +3,8 @@ Abstract - - + + diff --git a/docs/html/userhtmlli2.html b/docs/html/userhtmlli2.html index eb3f6bd7..cbe43c37 100644 --- a/docs/html/userhtmlli2.html +++ b/docs/html/userhtmlli2.html @@ -3,8 +3,8 @@ Contents - - + + diff --git a/docs/html/userhtmlli3.html b/docs/html/userhtmlli3.html index 8f21df5b..427c08de 100644 --- a/docs/html/userhtmlli3.html +++ b/docs/html/userhtmlli3.html @@ -3,8 +3,8 @@ Contributors - - + + diff --git a/docs/html/userhtmlli4.html b/docs/html/userhtmlli4.html index facbc419..c1ff8816 100644 --- a/docs/html/userhtmlli4.html +++ b/docs/html/userhtmlli4.html @@ -3,8 +3,8 @@ References - - + + @@ -198,7 +198,7 @@ class="cmr-12"> Pothen, Distributed-memory parallel algorithms for matching and coloring, in PCO11 New Trends in Parallel Computing and Optimization, +class="cmr-12">, in PCO’11 New Trends in Parallel Computing and Optimization, IEEE International Symposium on Parallel and Distributed Processing General Overview - - + + diff --git a/docs/html/userhtmlse2.html b/docs/html/userhtmlse2.html index 5e646834..5f8b62f2 100644 --- a/docs/html/userhtmlse2.html +++ b/docs/html/userhtmlse2.html @@ -3,8 +3,8 @@ Code Distribution - - + + diff --git a/docs/html/userhtmlse3.html b/docs/html/userhtmlse3.html index b3185344..72b6fc0c 100644 --- a/docs/html/userhtmlse3.html +++ b/docs/html/userhtmlse3.html @@ -3,8 +3,8 @@ Configuring and Building AMG4PSBLAS - - + + diff --git a/docs/html/userhtmlse4.html b/docs/html/userhtmlse4.html index aed4e687..1356f91a 100644 --- a/docs/html/userhtmlse4.html +++ b/docs/html/userhtmlse4.html @@ -3,8 +3,8 @@ Getting Started - - + + @@ -242,7 +242,7 @@ class="cmcsc-10x-x-109">type e

string g

der




No preconditioner No preconditioner

NONE

Considered to use the PSBLAS Krylov solvers with no preconditioner.




Diagonal Diagonal

DIAGL1-JACOBI

Diagonal preconditioner. For any zero diagonal entry of the matrix to be preconditioned, the corresponding entry @@ -308,7 +308,7 @@ of the preconditioner is set to 1.




Gauss-Seidel Gauss-Seidel

GSL1-GS

Hybrid Gauss-Seidel (forward), that is, global block Jacobi with Gauss-Seidel as local solver.




Symmetrized Gauss-SeidelSymmetrized Gauss-Seidel

FBGSL1-FBGS

Symmetrized hybrid Gauss-Seidel, that is, forward Gauss-Seidel followed by backward Gauss-Seidel.




Block Jacobi Block Jacobi

BJACL1-BJAC

Block-Jacobi with ILU(0) on the local blocks.




Additive Schwarz Additive Schwarz

AS

Additive Schwarz (AS), with overlap 1 and ILU(0) on the local blocks.




Multilevel Multilevel

ML

V-cycle with one hybrid forward Gauss-Seidel (GS) sweep as pre-smoother and one hybrid backward diff --git a/docs/html/userhtmlse5.html b/docs/html/userhtmlse5.html index 778421ea..083b4230 100644 --- a/docs/html/userhtmlse5.html +++ b/docs/html/userhtmlse5.html @@ -3,8 +3,8 @@ User Interface - - + + diff --git a/docs/html/userhtmlse6.html b/docs/html/userhtmlse6.html index 18de118a..37b3a958 100644 --- a/docs/html/userhtmlse6.html +++ b/docs/html/userhtmlse6.html @@ -3,8 +3,8 @@ Adding new smoother and solver objects to AMG4PSBLAS - - + + @@ -170,33 +170,33 @@ cellspacing="0" cellpadding="0" >

smoother smoother

class(amg_x_base_smoother_type)

The user-defined new smoother to be employed in the preconditioner.

solver solver

class(amg_x_base_solver_type)

The user-defined new solver to be employed in the preconditioner.

pass it as follows: -


  ! sparse matrix and preconditioner - 
  type(psb_dspmat_type) :: a - 
  type(amg_dprec_type)  :: prec - 
  type(amg_d_tlu_solver_type) :: tlusv - 

...... - 
  ! - 
  !  prepare the preconditioner: an ML with defaults, but with TLU solver at - 
  !  intermediate levels. All other parameters are at default values. - 
  ! - 
  call prec%init(’ML’,       info) - 
  call prec%hierarchy_build(a,desc_a,info) - 
  nlv = prec%get_nlevs() - 
  call prec%set(tlusv,   info,ilev=1,ilmax=max(1,nlv-1)) - 
  call prec%smoothers_build(a,desc_a,info) - 
-
+
+  ! sparse matrix and preconditioner
+  type(psb_dspmat_type) :: a
+  type(amg_dprec_type)  :: prec
+  type(amg_d_tlu_solver_type) :: tlusv
+......
+  !
+  !  prepare the preconditioner: an ML with defaults, but with TLU solver at
+  !  intermediate levels. All other parameters are at default values.
+  !
+  call prec%init(’ML’,       info)
+  call prec%hierarchy_build(a,desc_a,info)
+  nlv = prec%get_nlevs()
+  call prec%set(tlusv,   info,ilev=1,ilmax=max(1,nlv-1))
+  call prec%smoothers_build(a,desc_a,info)
+

diff --git a/docs/html/userhtmlse7.html b/docs/html/userhtmlse7.html index 2f9a867e..6e7d596e 100644 --- a/docs/html/userhtmlse7.html +++ b/docs/html/userhtmlse7.html @@ -3,8 +3,8 @@ Error Handling - - + + diff --git a/docs/html/userhtmlse8.html b/docs/html/userhtmlse8.html index e6355971..3bff0d60 100644 --- a/docs/html/userhtmlse8.html +++ b/docs/html/userhtmlse8.html @@ -3,8 +3,8 @@ License - - + + @@ -36,42 +36,37 @@ class="cmr-12">AMG4PSBLAS is freely distributable under the following copyright -


                           AMG4PSBLAS  version 1.0 - 
              Algebraic MultiGrid Preconditioners Package - 
             based on PSBLAS (Parallel Sparse BLAS version 3.7) - 

  (C) Copyright 2021 - 

  Pasqua D’Ambra         IAC-CNR, IT - 
  Fabio Durastante       University of Pisa and IAC-CNR, IT - 
  Salvatore Filippone    University of Rome Tor-Vergata and IAC-CNR, IT - 

  Redistribution and use in source and binary forms, with or without - 
  modification, are permitted provided that the following conditions - 
  are met: - 
    1. Redistributions of source code must retain the above copyright - 
       notice, this list of conditions and the following disclaimer. - 
    2. Redistributions in binary form must reproduce the above copyright - 
       notice, this list of conditions, and the following disclaimer in the - 
       documentation and/or other materials provided with the distribution. - 
    3. The name of the MLD2P4 group or the names of its contributors may - 
       not be used to endorse or promote products derived from this - 
       software without specific written permission. - 

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - 
  ‘‘AS IS’’ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - 
  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - 
  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS - 
  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - 
  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - 
  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - 
  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - 
  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - 
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - 
  POSSIBILITY OF SUCH DAMAGE. - 
-
+
+                           AMG4PSBLAS  version 1.0
+              Algebraic MultiGrid Preconditioners Package
+             based on PSBLAS (Parallel Sparse BLAS version 3.7)
+  (C) Copyright 2021
+  Pasqua D’Ambra         IAC-CNR, IT
+  Fabio Durastante       University of Pisa and IAC-CNR, IT
+  Salvatore Filippone    University of Rome Tor-Vergata and IAC-CNR, IT
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+    1. Redistributions of source code must retain the above copyright
+       notice, this list of conditions and the following disclaimer.
+    2. Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions, and the following disclaimer in the
+       documentation and/or other materials provided with the distribution.
+    3. The name of the MLD2P4 group or the names of its contributors may
+       not be used to endorse or promote products derived from this
+       software without specific written permission.
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  ‘‘AS IS’’ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+

@@ -83,44 +78,37 @@ class="cmr-12">abide by its terms: -



                           MLD2P4  version 2.2 - 
  MultiLevel Domain Decomposition Parallel Preconditioners Package - 
             based on PSBLAS (Parallel Sparse BLAS version 3.5) - 

  (C) Copyright 2008-2018 - 

      Salvatore Filippone - 
      Pasqua D’Ambra - 
      Daniela di Serafino - 


  Redistribution and use in source and binary forms, with or without - 
  modification, are permitted provided that the following conditions - 
  are met: - 
    1. Redistributions of source code must retain the above copyright - 
       notice, this list of conditions and the following disclaimer. - 
    2. Redistributions in binary form must reproduce the above copyright - 
       notice, this list of conditions, and the following disclaimer in the - 
       documentation and/or other materials provided with the distribution. - 
    3. The name of the MLD2P4 group or the names of its contributors may - 
       not be used to endorse or promote products derived from this - 
       software without specific written permission. - 

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - 
  ‘‘AS IS’’ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - 
  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - 
  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS - 
  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - 
  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - 
  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - 
  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - 
  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - 
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - 
  POSSIBILITY OF SUCH DAMAGE. - 
-
+
+                           MLD2P4  version 2.2
+  MultiLevel Domain Decomposition Parallel Preconditioners Package
+             based on PSBLAS (Parallel Sparse BLAS version 3.5)
+  (C) Copyright 2008-2018
+      Salvatore Filippone
+      Pasqua D’Ambra
+      Daniela di Serafino
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+    1. Redistributions of source code must retain the above copyright
+       notice, this list of conditions and the following disclaimer.
+    2. Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions, and the following disclaimer in the
+       documentation and/or other materials provided with the distribution.
+    3. The name of the MLD2P4 group or the names of its contributors may
+       not be used to endorse or promote products derived from this
+       software without specific written permission.
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  ‘‘AS IS’’ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS
+  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+

diff --git a/docs/html/userhtmlse9.html b/docs/html/userhtmlse9.html index 94b92610..820035a5 100644 --- a/docs/html/userhtmlse9.html +++ b/docs/html/userhtmlse9.html @@ -3,8 +3,8 @@ Contributor Covenant Code of Conduct - - + + @@ -91,7 +91,7 @@ class="cmr-12">Trolling, insulting or derogatory comments, and personal or polit class="cmr-12">Public or private harassment

  • Publishing others private information, such as a physical or email address, +class="cmr-12">Publishing others’ private information, such as a physical or email address, without their explicit permission
  • @@ -234,7 +234,7 @@ class="cmr-12">_of_conduct .html. Community Impact Guidelines were inspired by Mozillas code of conduct +class="cmr-12">. Community Impact Guidelines were inspired by Mozilla’s code of conduct enforcement ladder. For answers to common questions about this code of conduct, see Prerequisites - - + + diff --git a/docs/html/userhtmlsu10.html b/docs/html/userhtmlsu10.html index 7293f22f..040c8097 100644 --- a/docs/html/userhtmlsu10.html +++ b/docs/html/userhtmlsu10.html @@ -3,8 +3,8 @@ Method smoothers_build - - + + @@ -82,9 +82,9 @@ cellspacing="0" cellpadding="0" >

    a a

    type(in).

    The sparse matrix structure containing the local part of the matrix 17].

    desc_adesc_a

    type(in).

    The communication descriptor of a17].

    info info

    integer,out).

    Error code. If no error, 0 is returned. See Section 7 for details.

    amold amold

    class( optional.

    The desired dynamic type for internal matrix components; this 17].

    vmold vmold

    class( optional.

    The desired dynamic type for internal vector components; this allows e.g. running on GPUs.

    imold imold

    class( optional.

    The desired dynamic type for internal integer vector components; this allows e.g. running on GPUs. diff --git a/docs/html/userhtmlsu11.html b/docs/html/userhtmlsu11.html index 1a85eea8..6c600111 100644 --- a/docs/html/userhtmlsu11.html +++ b/docs/html/userhtmlsu11.html @@ -3,8 +3,8 @@ Method build - - + + @@ -90,9 +90,9 @@ cellspacing="0" cellpadding="0" >

    a a

    type(in).

    The sparse matrix structure containing the local part of the matrix 17].

    desc_adesc_a

    type(in).

    The communication descriptor of a17].

    info info

    integer,out).

    Error code. If no error, 0 is returned. See Section 7 for details.

    amold amold

    class( optional.

    The desired dynamic type for internal matrix components; this 17].

    vmold vmold

    class( optional.

    The desired dynamic type for internal vector components; this allows e.g. running on GPUs.

    imold imold

    class( optional.

    The desired dynamic type for internal integer vector components; this allows e.g. running on GPUs.

    The method can be used to build multilevel preconditioners too. diff --git a/docs/html/userhtmlsu12.html b/docs/html/userhtmlsu12.html index ff2b0d1e..ec2c0cd5 100644 --- a/docs/html/userhtmlsu12.html +++ b/docs/html/userhtmlsu12.html @@ -3,8 +3,8 @@ Method apply - - + + @@ -96,9 +96,9 @@ cellspacing="0" cellpadding="0" >

    x x

    type(in).

    The local part of the vector x, single/double precision version of AMG4PSBLAS under use.

    y y

    type(out).

    The local part of the vector y, single/double precision version of AMG4PSBLAS under use.

    desc_adesc_a

    type(in).

    The communication descriptor associated to the matrix to be preconditioned.

    info info

    integer,out).

    Error code. If no error, 0 is returned. See Section 7 for details.

    trans trans

    character((in).

    If trans -1).

    work work

    type( target.

    Workspace. Its size should be at least 4, single/double precision version of AMG4PSBLAS under use. diff --git a/docs/html/userhtmlsu13.html b/docs/html/userhtmlsu13.html index 285abe24..13fea9f5 100644 --- a/docs/html/userhtmlsu13.html +++ b/docs/html/userhtmlsu13.html @@ -3,8 +3,8 @@ Method free - - + + @@ -57,9 +57,9 @@ cellspacing="0" cellpadding="0" >

    info info

    integer,out).

    Error code. If no error, 0 is returned. See Section for details. diff --git a/docs/html/userhtmlsu14.html b/docs/html/userhtmlsu14.html index 4cbb802a..efe3a793 100644 --- a/docs/html/userhtmlsu14.html +++ b/docs/html/userhtmlsu14.html @@ -3,8 +3,8 @@ Method descr - - + + @@ -75,9 +75,9 @@ cellspacing="0" cellpadding="0" >

    info info

    integer,out).

    Error code. If no error, 0 is returned. See Section 7 for details.

    iout iout

    integer, optional.

    The id of the file where the preconditioner description will be printed; the default is the standard output.

    root root

    integer, optional.

    The id of the process where the preconditioner description will be printed; the default is psb_root_.

    verbosity verbosity

    integer, optional.

    The verbosity level of the description. Default value is 0. For a distributed multilevel preconditioner the size of the coarsematrices on every process. diff --git a/docs/html/userhtmlsu15.html b/docs/html/userhtmlsu15.html index 63e388f0..7b3a4787 100644 --- a/docs/html/userhtmlsu15.html +++ b/docs/html/userhtmlsu15.html @@ -3,8 +3,8 @@ Auxiliary Methods - - + + @@ -77,9 +77,9 @@ cellspacing="0" cellpadding="0" >

    info info

    integer,out).

    Error code. If no error, 0 is returned. See Section 7 for details.

    amold amold

    class( optional.

    The desired dynamic type for internal matrix components; this 17].

    pout pout

    type(out).

    The copy of the preconditioner data structure. Note that x , single/double precision version of AMG4PSBLAS under use.

    info info

    integer,out).

    Error code. If no error, 0 is returned. See Section 7 for details.

    global global

    logical, optional.

    Whether the global or local preconditioner size is desired. Default: -Whether the global or local preconditioner memory occupatio is +desired. Default: .false.. +class="cmr-12">. Return memory footprint in bytes. -

    +

    5.9.4 Method: allocate_wrk
    -

    -

    +

    call pvmold])

    Allocate internal work vectors. Each application of the preconditioner uses a number of +class="cmr-12">n Allocate internal work vectors. Each application of the preconditioner uses a number of work vectors which are allocated internally as necessary; therefore allocation and argument to the apply method. -

    Arguments

    info

    info

    integer, out).

    Error code. If no error, 0 is returned. See Section 7 for details.

    vmold

    vmold

    class(psb_ optional.

    The desired dynamic type for internal vector components; this allows e.g. running on GPUs.

    -

    +

    5.9.5 Method: free_wrk
    -

    -

    +

    call p(info)

    -

    Deallocate internal work vectors. -

    Arguments

    info

    info

    integer, out).

    Error code. If no error, 0 is returned. See Section 7 for details.

    diff --git a/docs/html/userhtmlsu2.html b/docs/html/userhtmlsu2.html index 7c3a50bd..7d643cb0 100644 --- a/docs/html/userhtmlsu2.html +++ b/docs/html/userhtmlsu2.html @@ -3,8 +3,8 @@ Optional third party libraries - - + + diff --git a/docs/html/userhtmlsu3.html b/docs/html/userhtmlsu3.html index 2183b2c2..2588bf71 100644 --- a/docs/html/userhtmlsu3.html +++ b/docs/html/userhtmlsu3.html @@ -3,8 +3,8 @@ Configuration options - - + + @@ -44,9 +44,9 @@ class="cmr-12">As a minimal example consider the following:
    -
    +
     ./configure --with-psblas=PSB-INSTALL-DIR
    -
    +

    which assumes that the various MPI compilers and support libraries are available in  ‘--prefix=$HOME$HOME’. 
    might be configured with: -

    +
     ./configure --with-psblas=/opt/psblas-3.5/ \
    - 
    --with-umfpackincdir=/usr/include/suitesparse/ -
    +--with-umfpackincdir=/usr/include/suitesparse/ +

    Once the configure script has completed execution, it will have generated the file To build the library the user will now enter -

    +
     make
    -
    +

    followed (optionally) by -

    +
     make install
    -
    +

    diff --git a/docs/html/userhtmlsu4.html b/docs/html/userhtmlsu4.html index e5d1e06b..3bb6153a 100644 --- a/docs/html/userhtmlsu4.html +++ b/docs/html/userhtmlsu4.html @@ -3,8 +3,8 @@ Bug reporting - - + + diff --git a/docs/html/userhtmlsu5.html b/docs/html/userhtmlsu5.html index 0de10975..628e541a 100644 --- a/docs/html/userhtmlsu5.html +++ b/docs/html/userhtmlsu5.html @@ -3,8 +3,8 @@ Example and test programs - - + + diff --git a/docs/html/userhtmlsu6.html b/docs/html/userhtmlsu6.html index 09181ee3..47de627a 100644 --- a/docs/html/userhtmlsu6.html +++ b/docs/html/userhtmlsu6.html @@ -3,8 +3,8 @@ Examples - - + + @@ -128,59 +128,58 @@ class="cmr-12">. -

    +
       use psb_base_mod
    - 
      use amg_prec_mod - 
      use psb_krylov_mod - 
    ... ... - 
    ! - 
    ! sparse matrix - 
      type(psb_dspmat_type) :: A - 
    ! sparse matrix descriptor - 
      type(psb_desc_type)   :: desc_A - 
    ! preconditioner - 
      type(amg_dprec_type)  :: P - 
    ! right-hand side and solution vectors - 
      type(psb_d_vect_type) :: b, x - 
    ... ... - 
    ! - 
    ! initialize the parallel environment - 
      call psb_init(ctxt) - 
      call psb_info(ctxt,iam,np) - 
    ... ... - 
    ! - 
    ! read and assemble the spd matrix A and the right-hand side b - 
    ! using PSBLAS routines for sparse matrix / vector management - 
    ... ... - 
    ! - 
    ! initialize the default multilevel preconditioner, i.e. V-cycle - 
    ! with basic smoothed aggregation, 1 hybrid forward/backward - 
    ! GS sweep as pre/post-smoother and UMFPACK as coarsest-level - 
    ! solver - 
      call P%init(’ML’,info) - 
    ! - 
    ! build the preconditioner - 
      call P%hierarchy_build(A,desc_A,info) - 
      call P%smoothers_build(A,desc_A,info) - 

    ! - 
    ! set the solver parameters and the initial guess - 
      ... ... - 
    ! - 
    ! solve Ax=b with preconditioned CG - 
      call psb_krylov(’CG’,A,P,b,x,tol,desc_A,info) - 
      ... ... - 
    ! - 
    ! deallocate the preconditioner - 
      call P%free(info) - 
    ! - 
    ! deallocate other data structures - 
      ... ... - 
    ! - 
    ! exit the parallel environment - 
      call psb_exit(ctxt) - 
      stop -
    +  use amg_prec_mod +  use psb_krylov_mod +... ... +! +! sparse matrix +  type(psb_dspmat_type) :: A +! sparse matrix descriptor +  type(psb_desc_type)   :: desc_A +! preconditioner +  type(amg_dprec_type)  :: P +! right-hand side and solution vectors +  type(psb_d_vect_type) :: b, x +... ... +! +! initialize the parallel environment +  call psb_init(ctxt) +  call psb_info(ctxt,iam,np) +... ... +! +! read and assemble the spd matrix A and the right-hand side b +! using PSBLAS routines for sparse matrix / vector management +... ... +! +! initialize the default multilevel preconditioner, i.e. V-cycle +! with basic smoothed aggregation, 1 hybrid forward/backward +! GS sweep as pre/post-smoother and UMFPACK as coarsest-level +! solver +  call P%init(’ML’,info) +! +! build the preconditioner +  call P%hierarchy_build(A,desc_A,info) +  call P%smoothers_build(A,desc_A,info) +! +! set the solver parameters and the initial guess +  ... ... +! +! solve Ax=b with preconditioned CG +  call psb_krylov(’CG’,A,P,b,x,tol,desc_A,info) +  ... ... +! +! deallocate the preconditioner +  call P%free(info) +! +! deallocate other data structures +  ... ... +! +! exit the parallel environment +  call psb_exit(ctxt) +  stop +

    @@ -285,19 +284,19 @@ class="cmr-12">.

    -

    +
     ... ...
    - 
    ! build a V-cycle preconditioner with 1 block-Jacobi sweep (with - 
    ! ILU(0) on the blocks) as pre- and post-smoother, and 8  block-Jacobi - 
    ! sweeps (with ILU(0) on the blocks) as coarsest-level solver - 
      call P%init(’ML’,info) - 
      call P%set(’SMOOTHER_TYPE’,’BJAC’,info) - 
      call P%set(’COARSE_SOLVE’,’BJAC’,info) - 
      call P%set(’COARSE_SWEEPS’,8,info) - 
      call P%hierarchy_build(A,desc_A,info) - 
      call P%smoothers_build(A,desc_A,info) - 
    ... ... -
    +! build a V-cycle preconditioner with 1 block-Jacobi sweep (with +! ILU(0) on the blocks) as pre- and post-smoother, and 8  block-Jacobi +! sweeps (with ILU(0) on the blocks) as coarsest-level solver +  call P%init(’ML’,info) +  call P%set(’SMOOTHER_TYPE’,’BJAC’,info) +  call P%set(’COARSE_SOLVE’,’BJAC’,info) +  call P%set(’COARSE_SWEEPS’,8,info) +  call P%hierarchy_build(A,desc_A,info) +  call P%smoothers_build(A,desc_A,info) +... ... +


    Listing 2: setup of a multilevel preconditioner based on the default decoup

    -

    +
     ... ...
    - 
    ! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps - 
    ! as pre- and post-smoother, a distributed coarsest - 
    ! matrix, and MUMPS as coarsest-level solver - 
      call P%init(’ML’,info) - 
      call P%set(’PAR_AGGR_ALG’,’COUPLED’,info) - 
      call P%set(’ML_CYCLE’,’WCYCLE’,info) - 
      call P%set(’SMOOTHER_TYPE’,’FBGS’,info) - 
      call P%set(’SMOOTHER_SWEEPS’,2,info) - 
      call P%set(’COARSE_SOLVE’,’MUMPS’,info) - 
      call P%set(’COARSE_MAT’,’DIST’,info) - 
      call P%hierarchy_build(A,desc_A,info) - 
      call P%smoothers_build(A,desc_A,info) - 
    ... ... -
    +! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps +! as pre- and post-smoother, a distributed coarsest +! matrix, and MUMPS as coarsest-level solver +  call P%init(’ML’,info) +  call P%set(’PAR_AGGR_ALG’,’COUPLED’,info) +  call P%set(’ML_CYCLE’,’WCYCLE’,info) +  call P%set(’SMOOTHER_TYPE’,’FBGS’,info) +  call P%set(’SMOOTHER_SWEEPS’,2,info) +  call P%set(’COARSE_SOLVE’,’MUMPS’,info) +  call P%set(’COARSE_MAT’,’DIST’,info) +  call P%hierarchy_build(A,desc_A,info) +  call P%smoothers_build(A,desc_A,info) +... ... +


    Listing 3:

    -

    +
     ... ...
    - 
    ! set RAS with overlap 2 and ILU(0) on the local blocks - 
      call P%init(’AS’,info) - 
      call P%set(’SUB_OVR’,2,info) - 
      call P%bld(A,desc_A,info) - 
    ... ... - 
    ! solve Ax=b with preconditioned BiCGSTAB - 
      call psb_krylov(’BICGSTAB’,A,P,b,x,tol,desc_A,info) -
    +! set RAS with overlap 2 and ILU(0) on the local blocks +  call P%init(’AS’,info) +  call P%set(’SUB_OVR’,2,info) +  call P%bld(A,desc_A,info) +... ... +! solve Ax=b with preconditioned BiCGSTAB +  call psb_krylov(’BICGSTAB’,A,P,b,x,tol,desc_A,info) +


    Listing 4: Method init - - + + @@ -54,9 +54,9 @@ cellspacing="0" cellpadding="0" >

    contxt contxt

    type(in).

    The communication context.

    ptype ptype

    character(in) .

    The type of preconditioner. Its values are specified in Table 1.

    Note that strings are case insensitive.

    info info

    integer,out).

    Error code. If no error, 0 is returned. See Section 7 for details.

    diff --git a/docs/html/userhtmlsu8.html b/docs/html/userhtmlsu8.html index 7307dfae..e0f3dcfb 100644 --- a/docs/html/userhtmlsu8.html +++ b/docs/html/userhtmlsu8.html @@ -3,8 +3,8 @@ Method set - - + + @@ -79,9 +79,9 @@ cellspacing="0" cellpadding="0" >

    what what

    character(len=*).

    The parameter to be set. It can be specified through its name; the 7.

    val   

    integer or in).

    The value of the parameter to be set. The list of allowed values and len=*), it is also treated as case insensitive.

    info info

    integer,out).

    Error code. If no error, 0 is returned. See Section 7 for details.

    ilev ilev

    integer,in).

    For the multilevel preconditioner, the level at which the 7).

    ilmax ilmax

    integer,in).

    For the multilevel preconditioner, when both ilev The levels are numbered in increasing order starting from the fin one, i.e., level 1 is the finest level.

    pos pos

    character(in).

    Whether the other arguments apply only to the pre-smoother not concern the smoothers, class="cmtt-12">pos is ignored.

    idx idx

    integer,in).

    An auxiliary input argument that can be passed to the underlying






    what a type e

    val val

    dfault t

    cnts






    ML_CYCLE

    character(len=*) =*)

    VCYCLE

    ADD

    VCYCLE

    Multilevel cycle: V-cycle, W-cycle, K-cycle, and additive composition.






    OUTER_SWEEPS

    integer integer

    Any integer

    number 1

    1 ≥ 1

    1

    Number of multilevel cycles.







    Table 2:




    what a type e

    val val

    dfault t

    cnts






    MIN_COARSE_SIZE_PER_PROCESS

    integer integer

    Any number

    > 0

    200 > 0

    200

    Coarse size threshold per process. The aggregation stops if the global number of variables of the computed coarsest matrix @@ -722,17 +722,17 @@ multiplied by the number of processes.






    MIN_COARSE_SIZE

    integer integer

    Any number

    > 0

    -1 > 0

    -1

    Coarse size threshold. The aggregation stops if the global number of variables of the computed coarsest matrix is lower @@ -745,17 +745,17 @@ class="cmtt-10x-x-109">MIN_COARSE_SIZE_PER_PROCESS.






    MIN_CR_RATIO

    real real

    Any number

    > 1

    1.5 > 1

    1.5

    Minimum coarsening ratio. The aggregation stops if the ratio between the global matrix dimensions at @@ -763,23 +763,23 @@ two consecutive levels is lower than or equal to this threshold (see Note).






    MAX_LEVS

    integer integer

    Any integer

    number > 1

    20 > 1

    20

    Maximum number of levels. The aggregation stops if the number of levels reaches this value (see Note).






    PAR_AGGR_ALG

    character(len=*) =*)

    ’DEC’, ’SYMDEC’, ’COUPLED’ ’COUPLED’

    ’DEC’ ’DEC’

    Parallel aggregation algorithm.

    the SYMDEC option applies decoupled @@ -807,7 +807,7 @@ class="cmmi-10x-x-109">AT .






    what a type e

    val val

    dfault t

    cts






    AGGR_TYPE

    character(len=*) =*)

    SOC1

    SOC1, MATCHBOXP

    Type of aggregation algorithm: currently, for the decoupled aggregation we implement two @@ -884,19 +884,19 @@ package [8].






    AGGR_SIZE

    integer integer

    Any integer

    number power of 2 and > 2

    4 > 2

    4

    Maximum size of aggregates when the coupled aggregation based on matching is applied. For aggressive coarsening @@ -908,7 +908,7 @@ class="cmbx-10x-x-109">MODIFICARE class="cmbx-10x-x-109">CODICE






    AGGR_PROL

    character(len=*) =*)

    SMOOTHED, UNSMOOTHED

    SMOOTHED

    Prolongator used by the aggregation algorithm: smoothed or unsmoothed (i.e., tentative prolongator).






    Note. The aggregation algorithm stops when at least one of the following criteria is met: the coarse size threshold,
    the coarse size threshold per process, the minimum coarsening ratio, or the maximum number of levels is reached.
    Therefore, the actual number of levels may be smaller than the specified maximum number of levels.





    @@ -982,7 +982,7 @@ id="TBL-6-3">




    what a type e

    val val

    dfault t

    cnts






    AGGR_ORD

    character(len=*) =*)

    ’NATURAL’

    ’DEGREE’ ’DEGREE’

    ’NATURAL’ ’NATURAL’

    Initial ordering of indices for the decoupled aggregation algorithm: either natural ordering or sorted by @@ -1040,7 +1040,7 @@ descending degrees of the nodes in the matrix graph.






    AGGR_THRESHreal( kind_parameter

    ) )

    Any real

    number  [0,1]

    0.01 ,1]

    0.01

    The threshold θ in the decoupled aggregation algorithm, see (??. See also the note at the bottom of this table.






    AGGR_FILTER

    character(len=*) =*)

    ’FILTER’

    ’NOFILTER’ ’NOFILTER’

    ’NOFILTER’ ’NOFILTER’

    Matrix used in computing the smoothed prolongator: filtered or unfiltered (see (??) in Section ??).






    Note. Different thresholds at different levels, such as those used in [30, Section 5.1], can be easily set by invoking the rou-
    tine set with the parameter ilev.






    Table 4:




    what a type e

    val val

    dfault t

    cnts






    COARSE_MAT

    character(len=*) =*)

    DIST

    REPL

    REPL

    Coarsest matrix layout: distributed among the processes or replicated on each of them.






    COARSE_SOLVE

    character(len=*) =*)

    MUMPS

    RKR

    See Note.’

    See Note.

    Solver used at the coarsest level: sequential LU from MUMPS, UMFPACK, or SuperLU (plus triangular solve); distributed LU from MUMPS or @@ -1272,7 +1272,7 @@ UMFPACK and SuperLU_Dist are available only in double precision.






    COARSE_SUBSOLVE

    character(len=*) =*)

    ILU

    AINV

    See Note.’

    See Note.

    Solver for the diagonal blocks of the coarse matrix, in case the block Jacobi solver is chosen as coarsest-level solver: ILU(






    Note. Defaults for COARSE_SOLVE and COARSE_SUBSOLVE are chosen in the following order:
    single precision version – MUMPS if installed, then SLU if installed, ILU otherwise;
    double precision version – UMF if installed, then MUMPS if installed, then SLU if installed, ILU otherwise.





    what a type e

    val val

    dfault t

    cts






    COARSE_SWEEPS

    integer integer

    Any integer

    number > -0

    10

    10

    Number of sweeps when JACOBI, GS or Aggiungere class="cmbx-10x-x-109">criterio di arresto del PCG?






    COARSE_FILLIN

    integer integer

    Any integer

    number -0

    0

    0

    Fill-in level p of the ILU factorizations.






    COARSE_ILUTHRSreal( kind_parameter

    ) )

    Any real

    number -0

    0

    0

    Drop tolerance t in the ILU(p,t) factorization.






    @@ -1499,7 +1499,7 @@ id="TBL-8-3">




    what a type e

    val val

    dfault t

    cnts






    SMOOTHER_TYPE

    character(len=*) =*)

    JACOBI

    AS

    FBGS

    Type of smoother used in the multilevel and Additive Schwarz. class="cmr-10">It is ignored by one-level preconditioners.






    SUB_SOLVE

    character(len=*) =*)

    JACOBI

    UMF

    GS and preconditioners 1-versions? -versions?

    The local solver to be used with the or UMFPACK (plus triangular solve). See class="cmr-10">Note for details on hybrid Gauss-Seidel.






    SMOOTHER_SWEEPS

    integer integer

    Any integer

    number 00

    1 1

    Number of sweeps of the smoother or , class="cmr-10">respectively.






    SUB_OVR

    integer integer

    Any integer

    number 00

    1 1

    Number of overlap layers, for Additive Schwarz only.







    Table 6:




    what a type e

    val val

    dfault t

    cnts






    SUB_RESTR

    character(len=*) =*)

    HALO

    NONE

    HALO

    Type of restriction operator, for Additive classical Addditive Schwarz smoother and class="cmr-10">its RAS variant.






    SUB_PROL

    character(len=*) =*)

    SUM

    NONE

    NONE

    Type of prolongation operator, for Additive for its RAS variant.






    SUB_FILLIN

    integer integer

    Any integer

    number 0 0

    0 0

    Fill-in level p of the incomplete LU class="cmr-10">factorizations.






    SUB_ILUTHRSreal( kind_parameter

    ) )

    Any real number 0 0

    0 0

    Drop tolerance t ) factorization.

    MUMPS_LOC_GLOB

    character(len=*) =*)

    LOCAL_SOLVER

    GLOBAL_SOLVER

    GLOBAL_SOLVER

    Whether MUMPS should be used as a only on the part of the matrix local to each process.

    MUMPS_IPAR_ENTRY

    integer integer

    Any integer number number

    0 0

    Set an entry in the MUMPS integer control optional argument.

    MUMPS_RPAR_ENTRY

    real real

    Any real number Any real number

    0 0

    Set an entry in the MUMPS real control optional class="cmr-10">argument.







    Table 7: Method hierarchy_build - - + + @@ -68,9 +68,9 @@ cellspacing="0" cellpadding="0" >

    a a

    type(in).

    The sparse matrix structure containing the local part of the matrix 17].

    desc_adesc_a

    type(in).

    The communication descriptor of a17].

    info info

    integer,out).

    Error code. If no error, 0 is returned. See Section 7 for details.

    diff --git a/docs/src/userinterface.tex b/docs/src/userinterface.tex index b8033fa2..ece69b2f 100644 --- a/docs/src/userinterface.tex +++ b/docs/src/userinterface.tex @@ -860,7 +860,8 @@ Create a (deep) copy of the preconditioner object. \begin{tabular}{p{1.2cm}p{12cm}} \fortinline|global| & \fortinline|logical, optional|.\\ - & Whether the global or local preconditioner size is + & Whether the global or local preconditioner memory + occupatio is desired. Default: \fortinline|.false.|.\\ \end{tabular} \noindent @@ -871,7 +872,7 @@ Return memory footprint in bytes. \begin{center} \fortinline|call p%allocate_wrk(info[, vmold])|\\ \end{center} - +n \noindent Allocate internal work vectors. Each application of the preconditioner uses a number of work vectors which are allocated internally as