copyright and internal doc adjustments for version 1.1.
stopcriterion
Salvatore Filippone 16 years ago
parent 74761e16df
commit 9a1848ef3e

@ -1,9 +1,9 @@
MLD2P4 version 1.0.1 MLD2P4 version 1.1
MultiLevel Domain Decomposition Parallel Preconditioners Package MultiLevel Domain Decomposition Parallel Preconditioners Package
based on PSBLAS (Parallel Sparse BLAS version 2.3.1) based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
(C) Copyright 2008 (C) Copyright 2008,2009
Salvatore Filippone University of Rome Tor Vergata Salvatore Filippone University of Rome Tor Vergata
Alfredo Buttari University of Rome Tor Vergata Alfredo Buttari University of Rome Tor Vergata

@ -1,8 +1,8 @@
This directory contains the MLD2P4 set of preconditioners, version 1.0.1 This directory contains the MLD2P4 set of preconditioners, version 1.1
WHAT'S NEW WHAT'S NEW
In version 1.0.1: In version 1.1:
- The MLD_SIZEOF() function has been redefined to be INTEGER(8), so - The MLD_SIZEOF() function has been redefined to be INTEGER(8), so
as to be able to measure large data sets. as to be able to measure large data sets.
- The internals of the multilevel preconditioner have been repackaged - The internals of the multilevel preconditioner have been repackaged

2344
configure vendored

File diff suppressed because it is too large Load Diff

@ -38,11 +38,11 @@ dnl NOTE : odd configurations like ifc + gcc still await in the mist of the unkn
############################################################################### ###############################################################################
# NOTE: the literal for version (the second argument to AC_INIT should be a literal!) # NOTE: the literal for version (the second argument to AC_INIT should be a literal!)
AC_INIT([MLD2P4],1.0.1, bugreport@mld2p4.it) AC_INIT([MLD2P4],1.1, bugreport@mld2p4.it)
# VERSION is the file containing the PSBLAS version code # VERSION is the file containing the PSBLAS version code
# FIXME # FIXME
mld2p4_cv_version="`cat VERSION`" mld2p4_cv_version="1.1"
# A sample source file # A sample source file
AC_CONFIG_SRCDIR([mlprec/mld_prec_type.f90]) AC_CONFIG_SRCDIR([mlprec/mld_prec_type.f90])

Binary file not shown.

Before

Width:  |  Height:  |  Size: 376 B

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 678 B

After

Width:  |  Height:  |  Size: 647 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

After

Width:  |  Height:  |  Size: 683 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 673 B

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 768 B

After

Width:  |  Height:  |  Size: 802 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 292 B

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 355 B

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 B

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 374 B

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 445 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 B

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 B

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 517 B

After

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 B

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 486 B

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 B

After

Width:  |  Height:  |  Size: 490 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 B

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 575 B

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 B

After

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 B

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 B

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 B

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 B

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 695 B

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 497 B

After

Width:  |  Height:  |  Size: 687 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 649 B

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

After

Width:  |  Height:  |  Size: 636 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 B

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 B

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 648 B

After

Width:  |  Height:  |  Size: 218 B

@ -65,9 +65,9 @@ University of Rome ``Tor Vergata'', Italy
<BR> <BR>
<BR> <BR>
<BR> <BR>
Software version: 1.0 Software version: 1.1
<BR> <BR>
Sept. 9th, 2008 March 13, 2009
<BR> <BR>

@ -64,7 +64,7 @@ MLD2P4 (M<SMALL>ULTI-</SMALL>L<SMALL>EVEL </SMALL>D<SMALL>OMAIN </SMALL>D<SMALL>
It implements various versions of one-level additive and of multi-level additive It implements various versions of one-level additive and of multi-level additive
and hybrid Schwarz algorithms. In the multi-level case, a purely algebraic approach and hybrid Schwarz algorithms. In the multi-level case, a purely algebraic approach
is applied to generate coarse-level corrections, so that no geometric background is needed is applied to generate coarse-level corrections, so that no geometric background is needed
concerning the matrix to be preconditioned. The matrix is required to be square, real concerning the matrix to be preconditioned. The matrix is assumed to be square, real
or complex, with a symmetric sparsity pattern. or complex, with a symmetric sparsity pattern.
<P> <P>

@ -135,11 +135,11 @@ of this algorithm is implemented, where the smoothed aggregation is applied loca
to each submatrix [<A to each submatrix [<A
HREF="node25.html#TUMINARO_TONG">23</A>]. In the next two subsections we provide HREF="node25.html#TUMINARO_TONG">23</A>]. In the next two subsections we provide
a brief description of the multi-level Schwarz preconditioners and of the smoothed a brief description of the multi-level Schwarz preconditioners and of the smoothed
aggregation technique as implemented in MLD2P4. For further details the user aggregation technique as implemented in MLD2P4. For further details the reader
is referred to [<A is referred to [<A
HREF="node25.html#para_04">2</A>,<A HREF="node25.html#para_04">2</A>,<A
HREF="node25.html#aaecc_07">3</A>,<A HREF="node25.html#aaecc_07">3</A>,<A
HREF="node25.html#apnum_07">4</A>,<A HREF="node25.html#apnum_07">4</A>,,<A
HREF="node25.html#dd2_96">20</A>]. HREF="node25.html#dd2_96">20</A>].
<P> <P>

@ -276,7 +276,7 @@ three steps:
ALT="$i=1,\ldots,m$">; ALT="$i=1,\ldots,m$">;
</LI> </LI>
<LI>prolongation and sum of the <IMG <LI>prolongation and sum of the <IMG
WIDTH="22" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img32.png" SRC="img32.png"
ALT="$w_i$">'s, i.e. <!-- MATH ALT="$w_i$">'s, i.e. <!-- MATH
$w = \sum_{i=1}^m (R_i^{\delta})^T w_i$ $w = \sum_{i=1}^m (R_i^{\delta})^T w_i$
@ -309,7 +309,7 @@ time on parallel distributed-memory computers is the so-called <I>Restricted AS
HREF="node25.html#CAI_SARKIS">5</A>,<A HREF="node25.html#CAI_SARKIS">5</A>,<A
HREF="node25.html#EFSTATHIOU">13</A>]. It HREF="node25.html#EFSTATHIOU">13</A>]. It
is obtained by zeroing the components of <IMG is obtained by zeroing the components of <IMG
WIDTH="22" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img32.png" SRC="img32.png"
ALT="$w_i$"> corresponding to the ALT="$w_i$"> corresponding to the
overlapping vertices when applying the prolongation. Therefore, overlapping vertices when applying the prolongation. Therefore,
@ -405,7 +405,7 @@ In a pure algebraic setting, <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png" SRC="img43.png"
ALT="$A_C$"> is usually built with ALT="$A_C$"> is usually built with
a Galerkin approach. Given a set <IMG the Galerkin approach. Given a set <IMG
WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="32" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img44.png" SRC="img44.png"
ALT="$W_C$"> of <I>coarse vertices</I>, ALT="$W_C$"> of <I>coarse vertices</I>,
@ -683,7 +683,11 @@ and the corresponding basic preconditioner at each level <IMG
ALT="$M_l$">, respectively, with <IMG ALT="$M_l$">, respectively, with <IMG
WIDTH="61" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="61" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img65.png" SRC="img65.png"
ALT="$A_1=A$">. ALT="$A_1=A$">, while the related restriction operator is
denoted by <IMG
WIDTH="23" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img66.png"
ALT="$R_l$">.
<DIV ALIGN="CENTER"><A NAME="fig:mlhpost_alg"></A><A NAME="508"></A> <DIV ALIGN="CENTER"><A NAME="fig:mlhpost_alg"></A><A NAME="508"></A>
<TABLE> <TABLE>
@ -720,14 +724,14 @@ $w = y_1$;
}$ }$
--> -->
<IMG <IMG
WIDTH="430" HEIGHT="435" ALIGN="BOTTOM" BORDER="0" WIDTH="429" HEIGHT="435" ALIGN="BOTTOM" BORDER="0"
SRC="img66.png" SRC="img67.png"
ALT="\framebox{ ALT="\framebox{
\begin{minipage}{.85\textwidth} {\small \begin{minipage}{.85\textwidth} {\small
\begin{tabbing} \begin{tabbing}
\quad \=\quad... \quad \=\quad...
...= y_l+r_l$\\ ...= y_l+r_l$\\
\textbf{endfor} [1mm] \textbf{endfor} \\ [1mm]
$w = y_1$; $w = y_1$;
\end{tabbing}} \end{tabbing}}
\end{minipage}}"> \end{minipage}}">

@ -62,7 +62,7 @@ Smoothed Aggregation
<P> <P>
In order to define the restriction operator <IMG In order to define the restriction operator <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img67.png" SRC="img68.png"
ALT="$R_C$">, which is used to compute ALT="$R_C$">, which is used to compute
the coarse-level matrix <IMG the coarse-level matrix <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
@ -81,7 +81,7 @@ The basic idea of this algorithm is to build a coarse set of vertices
ALT="$W$"> into disjoint subsets ALT="$W$"> into disjoint subsets
(aggregates), and to define the coarse-to-fine space transfer operator <IMG (aggregates), and to define the coarse-to-fine space transfer operator <IMG
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img68.png" SRC="img69.png"
ALT="$R_C^T$"> by ALT="$R_C^T$"> by
applying a suitable smoother to a simple piecewise constant applying a suitable smoother to a simple piecewise constant
prolongation operator, to improve the quality of the coarse-space correction. prolongation operator, to improve the quality of the coarse-space correction.
@ -100,15 +100,15 @@ Three main steps can be identified in the smoothed aggregation procedure:
</LI> </LI>
<LI>construction of the prolongator <IMG <LI>construction of the prolongator <IMG
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img68.png" SRC="img69.png"
ALT="$R_C^T$">; ALT="$R_C^T$">;
</LI> </LI>
<LI>application of <IMG <LI>application of <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img67.png" SRC="img68.png"
ALT="$R_C$"> and <IMG ALT="$R_C$"> and <IMG
WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" WIDTH="29" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img68.png" SRC="img69.png"
ALT="$R_C^T$"> to build <IMG ALT="$R_C^T$"> to build <IMG
WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="29" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img43.png" SRC="img43.png"
@ -124,14 +124,14 @@ in [<A
this algorithm has been actually considered, this algorithm has been actually considered,
in which each aggregate <IMG in which each aggregate <IMG
WIDTH="26" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="26" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img69.png" SRC="img70.png"
ALT="$N_r$"> is made of vertices of <IMG ALT="$N_r$"> is made of vertices of <IMG
WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="24" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img10.png" SRC="img10.png"
ALT="$W$"> that are <I>strongly coupled</I> ALT="$W$"> that are <I>strongly coupled</I>
to a certain root vertex <IMG to a certain root vertex <IMG
WIDTH="53" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="53" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img70.png" SRC="img71.png"
ALT="$r \in W$">, i.e. <BR><P></P> ALT="$r \in W$">, i.e. <BR><P></P>
<DIV ALIGN="CENTER"> <DIV ALIGN="CENTER">
<!-- MATH <!-- MATH
@ -143,7 +143,7 @@ N_r = \left\{s \in W: |a_{rs}| > \theta \sqrt{|a_{rr}a_{ss}|} \right\}
<IMG <IMG
WIDTH="319" HEIGHT="38" BORDER="0" WIDTH="319" HEIGHT="38" BORDER="0"
SRC="img71.png" SRC="img72.png"
ALT="\begin{displaymath}N_r = \left\{s \in W: \vert a_{rs}\vert &gt; \theta \sqrt{\vert a_{rr}a_{ss}\vert} \right\} ALT="\begin{displaymath}N_r = \left\{s \in W: \vert a_{rs}\vert &gt; \theta \sqrt{\vert a_{rr}a_{ss}\vert} \right\}
\cup \left\{ r \right\} , \cup \left\{ r \right\} ,
\end{displaymath}"> \end{displaymath}">
@ -155,16 +155,16 @@ for a given <!-- MATH
--> -->
<IMG <IMG
WIDTH="69" HEIGHT="36" ALIGN="MIDDLE" BORDER="0" WIDTH="69" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img72.png" SRC="img73.png"
ALT="$\theta \in [0,1]$">. ALT="$\theta \in [0,1]$">.
Since this algorithm has a sequential nature, a <I>decoupled</I> version of Since this algorithm has a sequential nature, a <I>decoupled</I> version of
it has been chosen, where each processor <IMG it has been chosen, where each processor <IMG
WIDTH="10" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img73.png" SRC="img74.png"
ALT="$i$"> independently applies the algorithm to ALT="$i$"> independently applies the algorithm to
the set of vertices <IMG the set of vertices <IMG
WIDTH="31" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img74.png" SRC="img75.png"
ALT="$W_i^0$"> assigned to it in the initial data distribution. This ALT="$W_i^0$"> assigned to it in the initial data distribution. This
version is embarrassingly parallel, since it does not require any data communication. version is embarrassingly parallel, since it does not require any data communication.
On the other hand, it may produce non-uniform aggregates near boundary vertices, On the other hand, it may produce non-uniform aggregates near boundary vertices,
@ -183,14 +183,14 @@ since it has been shown to produce good results in practice
<P> <P>
The prolongator <IMG The prolongator <IMG
WIDTH="75" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" WIDTH="75" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img75.png" SRC="img76.png"
ALT="$P_C=R_C^T$"> is built starting from a <I>tentative prolongator</I> ALT="$P_C=R_C^T$"> is built starting from a <I>tentative prolongator</I>
<!-- MATH <!-- MATH
$P \in \Re^{n \times n_C}$ $P \in \Re^{n \times n_C}$
--> -->
<IMG <IMG
WIDTH="90" HEIGHT="38" ALIGN="MIDDLE" BORDER="0" WIDTH="89" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
SRC="img76.png" SRC="img77.png"
ALT="$P \in \Re^{n \times n_C}$">, defined as ALT="$P \in \Re^{n \times n_C}$">, defined as
<BR> <BR>
<DIV ALIGN="RIGHT"> <DIV ALIGN="RIGHT">
@ -207,7 +207,7 @@ P=(p_{ij}), \quad p_{ij}=
<TABLE WIDTH="100%" ALIGN="CENTER"> <TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:tent_prol"></A><IMG <TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:tent_prol"></A><IMG
WIDTH="290" HEIGHT="52" BORDER="0" WIDTH="290" HEIGHT="52" BORDER="0"
SRC="img77.png" SRC="img78.png"
ALT="\begin{displaymath} ALT="\begin{displaymath}
P=(p_{ij}), \quad p_{ij}= P=(p_{ij}), \quad p_{ij}=
\left\{ \begin{array}{ll} \left\{ \begin{array}{ll}
@ -222,17 +222,17 @@ P=(p_{ij}), \quad p_{ij}=
<BR CLEAR="ALL"></DIV><P></P> <BR CLEAR="ALL"></DIV><P></P>
<IMG <IMG
WIDTH="27" HEIGHT="32" ALIGN="MIDDLE" BORDER="0" WIDTH="27" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img78.png" SRC="img79.png"
ALT="$P_C$"> is obtained by ALT="$P_C$"> is obtained by
applying to <IMG applying to <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img79.png" SRC="img80.png"
ALT="$P$"> a smoother <!-- MATH ALT="$P$"> a smoother <!-- MATH
$S \in \Re^{n \times n}$ $S \in \Re^{n \times n}$
--> -->
<IMG <IMG
WIDTH="78" HEIGHT="38" ALIGN="MIDDLE" BORDER="0" WIDTH="78" HEIGHT="38" ALIGN="MIDDLE" BORDER="0"
SRC="img80.png" SRC="img81.png"
ALT="$S \in \Re^{n \times n}$">: ALT="$S \in \Re^{n \times n}$">:
<BR> <BR>
<DIV ALIGN="RIGHT"> <DIV ALIGN="RIGHT">
@ -245,7 +245,7 @@ P_C = S P,
<TABLE WIDTH="100%" ALIGN="CENTER"> <TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:smoothed_prol"></A><IMG <TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:smoothed_prol"></A><IMG
WIDTH="73" HEIGHT="30" BORDER="0" WIDTH="73" HEIGHT="30" BORDER="0"
SRC="img81.png" SRC="img82.png"
ALT="\begin{displaymath} ALT="\begin{displaymath}
P_C = S P, P_C = S P,
\end{displaymath}"></TD> \end{displaymath}"></TD>
@ -260,7 +260,7 @@ Schwarz method [<A
HREF="node25.html#StubenGMD69_99">22</A>]. HREF="node25.html#StubenGMD69_99">22</A>].
A simple choice for <IMG A simple choice for <IMG
WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="16" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img82.png" SRC="img83.png"
ALT="$S$"> is the damped Jacobi smoother: ALT="$S$"> is the damped Jacobi smoother:
<BR> <BR>
<DIV ALIGN="RIGHT"> <DIV ALIGN="RIGHT">
@ -273,7 +273,7 @@ S = I - \omega D^{-1} A ,
<TABLE WIDTH="100%" ALIGN="CENTER"> <TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:jac_smoother"></A><IMG <TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:jac_smoother"></A><IMG
WIDTH="126" HEIGHT="30" BORDER="0" WIDTH="126" HEIGHT="30" BORDER="0"
SRC="img83.png" SRC="img84.png"
ALT="\begin{displaymath} ALT="\begin{displaymath}
S = I - \omega D^{-1} A , S = I - \omega D^{-1} A ,
\end{displaymath}"></TD> \end{displaymath}"></TD>
@ -283,11 +283,11 @@ S = I - \omega D^{-1} A ,
<BR CLEAR="ALL"></DIV><P></P> <BR CLEAR="ALL"></DIV><P></P>
where the value of <IMG where the value of <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png" SRC="img85.png"
ALT="$\omega$"> can be chosen ALT="$\omega$"> can be chosen
using some estimate of the spectral radius of <IMG using some estimate of the spectral radius of <IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0" WIDTH="51" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img85.png" SRC="img86.png"
ALT="$D^{-1}A$"> [<A ALT="$D^{-1}A$"> [<A
HREF="node25.html#BREZINA_VANEK">1</A>]. HREF="node25.html#BREZINA_VANEK">1</A>].

@ -144,7 +144,7 @@ compilers.
<P> <P>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="923"></A> <DIV ALIGN="CENTER"><A NAME="925"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 1:</STRONG> <CAPTION><STRONG>Table 1:</STRONG>
Preconditioner types, corresponding strings and default choices. Preconditioner types, corresponding strings and default choices.
@ -185,12 +185,12 @@ Preconditioner types, corresponding strings and default choices.
Aggregation: decoupled smoothed aggregation with Aggregation: decoupled smoothed aggregation with
threshold <IMG threshold <IMG
WIDTH="45" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="45" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img86.png" SRC="img87.png"
ALT="$\theta = 0$">. ALT="$\theta = 0$">.
Coarsest matrix: distributed among the processors. Coarsest matrix: distributed among the processors.
Coarsest-level solver: Coarsest-level solver:
4 sweeps of the block-Jacobi solver, 4 sweeps of the block-Jacobi solver,
with LU (or ILU) factorization of the blocks with LU or ILU factorization of the blocks
(UMFPACK for the double precision versions and (UMFPACK for the double precision versions and
SuperLU for the single precision ones, if the packages SuperLU for the single precision ones, if the packages
have been installed; ILU(0), otherwise).</TD> have been installed; ILU(0), otherwise).</TD>

@ -90,7 +90,7 @@ the corresponding Fortran 95 codes are available in <code>examples/fileread/</co
<P> <P>
<DIV ALIGN="CENTER"><A NAME="fig:ex_default"></A><A NAME="926"></A> <DIV ALIGN="CENTER"><A NAME="fig:ex_default"></A><A NAME="928"></A>
<TABLE> <TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG> <CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
Setup and application of the default multi-level Schwarz preconditioner. Setup and application of the default multi-level Schwarz preconditioner.
@ -207,7 +207,7 @@ and linked to the MLD2P4 library.
<BR> <BR>
<P> <P>
<DIV ALIGN="CENTER"><A NAME="fig:ex_3lh"></A><A NAME="928"></A> <DIV ALIGN="CENTER"><A NAME="fig:ex_3lh"></A><A NAME="930"></A>
<TABLE> <TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG> <CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
Setup of a hybrid three-level Schwarz preconditioner.</CAPTION> Setup of a hybrid three-level Schwarz preconditioner.</CAPTION>
@ -239,7 +239,7 @@ Setup of a hybrid three-level Schwarz preconditioner.</CAPTION>
<P> <P>
<DIV ALIGN="CENTER"><A NAME="fig:ex_3la"></A><A NAME="930"></A> <DIV ALIGN="CENTER"><A NAME="fig:ex_3la"></A><A NAME="932"></A>
<TABLE> <TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG> <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
Setup of an additive three-level Schwarz preconditioner.</CAPTION> Setup of an additive three-level Schwarz preconditioner.</CAPTION>
@ -271,7 +271,7 @@ Setup of an additive three-level Schwarz preconditioner.</CAPTION>
<P> <P>
<DIV ALIGN="CENTER"><A NAME="fig:ex_1l"></A><A NAME="932"></A> <DIV ALIGN="CENTER"><A NAME="fig:ex_1l"></A><A NAME="934"></A>
<TABLE> <TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG> <CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
Setup of a one-level Schwarz preconditioner.</CAPTION> Setup of a one-level Schwarz preconditioner.</CAPTION>

@ -90,8 +90,8 @@ i.e.
WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img21.png" SRC="img21.png"
ALT="$v$"> and <IMG ALT="$v$"> and <IMG
WIDTH="17" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" WIDTH="18" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img87.png" SRC="img88.png"
ALT="$w$"> involved in ALT="$w$"> involved in
the preconditioner application <IMG the preconditioner application <IMG
WIDTH="87" HEIGHT="21" ALIGN="BOTTOM" BORDER="0" WIDTH="87" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"

@ -137,7 +137,7 @@ refer to Section&nbsp;<A HREF="node11.html#sec:background">4</A>.
<P> <P>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1260"></A> <DIV ALIGN="CENTER"><A NAME="1262"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 2:</STRONG> <CAPTION><STRONG>Table 2:</STRONG>
Parameters defining the type of multi-level preconditioner. Parameters defining the type of multi-level preconditioner.
@ -181,7 +181,7 @@ Parameters defining the type of multi-level preconditioner.
<P> <P>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1262"></A> <DIV ALIGN="CENTER"><A NAME="1264"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 3:</STRONG> <CAPTION><STRONG>Table 3:</STRONG>
Parameters defining the one-level preconditioner used as smoother. Parameters defining the one-level preconditioner used as smoother.
@ -198,8 +198,8 @@ Parameters defining the one-level preconditioner used as smoother.
<TR><TD ALIGN="LEFT"><code>mld_sub_ovr_</code></TD> <TR><TD ALIGN="LEFT"><code>mld_sub_ovr_</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD> <TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>any&nbsp;int.&nbsp;num.&nbsp;<IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png" SRC="img89.png"
ALT="$\ge 0$"></TD> ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">1</TD> <TD ALIGN="LEFT">1</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Number of overlap layers.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Number of overlap layers.</TD>
@ -240,8 +240,8 @@ Parameters defining the one-level preconditioner used as smoother.
<TR><TD ALIGN="LEFT"><code>mld_sub_fillin_</code></TD> <TR><TD ALIGN="LEFT"><code>mld_sub_fillin_</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD> <TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png" SRC="img89.png"
ALT="$\ge 0$"></TD> ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">0</TD> <TD ALIGN="LEFT">0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Fill-in level <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Fill-in level <IMG
@ -252,13 +252,13 @@ Parameters defining the one-level preconditioner used as smoother.
<TR><TD ALIGN="LEFT"><code>mld_sub_iluthrs_</code></TD> <TR><TD ALIGN="LEFT"><code>mld_sub_iluthrs_</code></TD>
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD> <TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;real&nbsp;num.&nbsp;<IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;real&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png" SRC="img89.png"
ALT="$\ge 0$"></TD> ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">0</TD> <TD ALIGN="LEFT">0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Drop tolerance <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Drop tolerance <IMG
WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img89.png" SRC="img90.png"
ALT="$t$"> in the ILU(<IMG ALT="$t$"> in the ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png" SRC="img35.png"
@ -281,7 +281,7 @@ Parameters defining the one-level preconditioner used as smoother.
<P> <P>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1264"></A> <DIV ALIGN="CENTER"><A NAME="1266"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 4:</STRONG> <CAPTION><STRONG>Table 4:</STRONG>
Parameters defining the aggregation algorithm. Parameters defining the aggregation algorithm.
@ -304,20 +304,21 @@ Parameters defining the aggregation algorithm.
</TR> </TR>
<TR><TD ALIGN="LEFT"><code>mld_aggr_kind_</code></TD> <TR><TD ALIGN="LEFT"><code>mld_aggr_kind_</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD> <TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'SMOOTH'</TT> <TT>'RAW'</TT></TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'SMOOTHED'</TT> <TT>'NONSMOOTHED'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'SMOOTH'</TT></TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'SMOOTHED'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of aggregation: smoothed, raw (i.e. using the tentative prolongator).</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Type of aggregation: smoothed, nonsmoothed
(i.e. using the tentative prolongator).</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT"><code>mld_aggr_thresh_</code></TD> <TR><TD ALIGN="LEFT"><code>mld_aggr_thresh_</code></TD>
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD> <TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>Any&nbsp;real&nbsp;num. <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>Any&nbsp;real&nbsp;num. <IMG
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0" WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img90.png" SRC="img91.png"
ALT="$\in [0, 1]$"></TD> ALT="$\in [0, 1]$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>0</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Threshold <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Threshold <IMG
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img91.png" SRC="img92.png"
ALT="$\theta$"> in the aggregation algorithm.</TD> ALT="$\theta$"> in the aggregation algorithm.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT"><code>mld_aggr_omega_alg_</code></TD> <TR><TD ALIGN="LEFT"><code>mld_aggr_omega_alg_</code></TD>
@ -326,13 +327,13 @@ Parameters defining the aggregation algorithm.
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'EIG_EST'</TT></TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'EIG_EST'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>How the damping parameter <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>How the damping parameter <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png" SRC="img85.png"
ALT="$\omega$"> in the ALT="$\omega$"> in the
smoothed aggregation should be computed: smoothed aggregation should be computed:
either via an estimate of the spectral radius of either via an estimate of the spectral radius of
<IMG <IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0" WIDTH="51" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img85.png" SRC="img86.png"
ALT="$D^{-1}A$">, or explicily ALT="$D^{-1}A$">, or explicily
specified by the user.</TD> specified by the user.</TD>
</TR> </TR>
@ -341,8 +342,8 @@ Parameters defining the aggregation algorithm.
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'A_NORMI'</TT></TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'A_NORMI'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'A_NORMI'</TT></TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'A_NORMI'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>How to estimate the spectral radius of <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>How to estimate the spectral radius of <IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0" WIDTH="51" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img85.png" SRC="img86.png"
ALT="$D^{-1}A$">. ALT="$D^{-1}A$">.
Currently only the infinity norm estimate Currently only the infinity norm estimate
is available.</TD> is available.</TD>
@ -355,11 +356,11 @@ Parameters defining the aggregation algorithm.
--> -->
<IMG <IMG
WIDTH="113" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="113" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img92.png" SRC="img93.png"
ALT="$4/(3\rho(D^{-1}A))$"></TD> ALT="$4/(3\rho(D^{-1}A))$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Damping parameter <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Damping parameter <IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png" SRC="img85.png"
ALT="$\omega$"> in the smoothed aggregation algorithm. ALT="$\omega$"> in the smoothed aggregation algorithm.
It must be set by the user if It must be set by the user if
<code>USER_CHOICE</code> was specified for <code>USER_CHOICE</code> was specified for
@ -367,11 +368,11 @@ Parameters defining the aggregation algorithm.
otherwise it is computed by the library, using the otherwise it is computed by the library, using the
selected estimate of the spectral radius <IMG selected estimate of the spectral radius <IMG
WIDTH="73" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="73" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img93.png" SRC="img94.png"
ALT="$\rho(D^{-1}A)$"> of ALT="$\rho(D^{-1}A)$"> of
<IMG <IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0" WIDTH="51" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img85.png" SRC="img86.png"
ALT="$D^{-1}A$">.</TD> ALT="$D^{-1}A$">.</TD>
</TR> </TR>
</TABLE> </TABLE>
@ -383,7 +384,7 @@ Parameters defining the aggregation algorithm.
<P> <P>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1267"></A> <DIV ALIGN="CENTER"><A NAME="1269"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 5:</STRONG> <CAPTION><STRONG>Table 5:</STRONG>
Parameters defining the coarse-space correction at the coarsest Parameters defining the coarse-space correction at the coarsest
@ -440,8 +441,8 @@ level.</CAPTION>
<TR><TD ALIGN="LEFT"><code>mld_coarse_sweeps_</code></TD> <TR><TD ALIGN="LEFT"><code>mld_coarse_sweeps_</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD> <TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img94.png" SRC="img95.png"
ALT="$&gt; 0$"></TD> ALT="$&gt; 0$"></TD>
<TD ALIGN="LEFT">4</TD> <TD ALIGN="LEFT">4</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Number of Block-Jacobi sweeps when 'BJAC' is used as <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Number of Block-Jacobi sweeps when 'BJAC' is used as
@ -450,8 +451,8 @@ level.</CAPTION>
<TR><TD ALIGN="LEFT"><code>mld_coarse_fillin_</code></TD> <TR><TD ALIGN="LEFT"><code>mld_coarse_fillin_</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD> <TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png" SRC="img89.png"
ALT="$\ge 0$"></TD> ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">0</TD> <TD ALIGN="LEFT">0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Fill-in level <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Fill-in level <IMG
@ -462,24 +463,24 @@ level.</CAPTION>
<TR><TD ALIGN="LEFT"><code>mld_coarse_iluthrs_</code></TD> <TR><TD ALIGN="LEFT"><code>mld_coarse_iluthrs_</code></TD>
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD> <TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;real.&nbsp;num.&nbsp;<IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;real.&nbsp;num.&nbsp;<IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png" SRC="img89.png"
ALT="$\ge 0$"></TD> ALT="$\ge 0$"></TD>
<TD ALIGN="LEFT">0</TD> <TD ALIGN="LEFT">0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Drop tolerance <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=198>Drop tolerance <IMG
WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img89.png" SRC="img90.png"
ALT="$t$"> in the ILU(<IMG ALT="$t$"> in the ILU(<IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png" SRC="img35.png"
ALT="$p,t$">) factorization.</TD> ALT="$p,t$">) factorization.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" COLSPAN=5><B>Note</B> Defaults for <TR><TD ALIGN="LEFT" COLSPAN=5><B>Note:</B> defaults for
<TT>m</TT>ld_coarse_subsolve_ are chosen as</TD> <TT>m</TT>ld_coarse_subsolve_ are chosen as</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" COLSPAN=5>Single precision version: 'SLU' if installed, 'ILU' otherwise</TD> <TR><TD ALIGN="LEFT" COLSPAN=5>single precision version: 'SLU' if installed, 'ILU' otherwise</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" COLSPAN=5>Double precision version: 'UMF' if installed, <TR><TD ALIGN="LEFT" COLSPAN=5>double precision version: 'UMF' if installed,
else 'SLU' if installed, 'ILU' otherwise</TD> else 'SLU' if installed, 'ILU' otherwise</TD>
</TR> </TR>
</TABLE> </TABLE>

@ -72,20 +72,20 @@ This routine computes <!-- MATH
$y = op(M^{-1})\, x$ $y = op(M^{-1})\, x$
--> -->
<IMG <IMG
WIDTH="117" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="118" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img95.png" SRC="img96.png"
ALT="$y = op(M^{-1})\, x$">, where <IMG ALT="$y = op(M^{-1})\, x$">, where <IMG
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img59.png" SRC="img59.png"
ALT="$M$"> is a previously built ALT="$M$"> is a previously built
preconditioner, stored into <code>p</code>, and <IMG preconditioner, stored into <code>p</code>, and <IMG
WIDTH="22" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img96.png" SRC="img97.png"
ALT="$op$"> ALT="$op$">
denotes the preconditioner itself or its transpose, according to denotes the preconditioner itself or its transpose, according to
the value of <code>trans</code>. the value of <code>trans</code>.
Note that, when MLD2P4 is used with a Krylov solver from PSBLAS, Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,
<code>mld_precaply</code> is called within the PSBLAS routine <code>mld_krylov</code> <code>mld_precaply</code> is called within the PSBLAS routine <code>psb_krylov</code>
and hence it is completely transparent to the user. and hence it is completely transparent to the user.
<P> <P>
@ -109,8 +109,8 @@ and hence it is completely transparent to the user.
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
WIDTH="14" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img97.png" SRC="img98.png"
ALT="$x$">. Note that <I>type</I> and ALT="$x$">. Note that <I>type</I> and
<I>kind_parameter</I> must be chosen according <I>kind_parameter</I> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</TD> to the real/complex, single/double precision version of MLD2P4 under use.</TD>
@ -120,8 +120,8 @@ and hence it is completely transparent to the user.
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
WIDTH="14" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img98.png" SRC="img99.png"
ALT="$y$">. Note that <I>type</I> and ALT="$y$">. Note that <I>type</I> and
<I>kind_parameter</I> must be chosen according <I>kind_parameter</I> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</TD> to the real/complex, single/double precision version of MLD2P4 under use.</TD>
@ -148,28 +148,28 @@ and hence it is completely transparent to the user.
--> -->
<IMG <IMG
WIDTH="132" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="132" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img99.png" SRC="img100.png"
ALT="$op(M^{-1}) = M^{-1}$">; ALT="$op(M^{-1}) = M^{-1}$">;
if <code>trans</code> = <code>'T','t'</code> then <!-- MATH if <code>trans</code> = <code>'T','t'</code> then <!-- MATH
$op(M^{-1}) = M^{-T}$ $op(M^{-1}) = M^{-T}$
--> -->
<IMG <IMG
WIDTH="135" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" WIDTH="135" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img100.png" SRC="img101.png"
ALT="$op(M^{-1}) = M^{-T}$"> ALT="$op(M^{-1}) = M^{-T}$">
(transpose of <IMG (transpose of <IMG
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img101.png" SRC="img102.png"
ALT="$M^{-1})$">; if <code>trans</code> = <code>'C','c'</code> then <!-- MATH ALT="$M^{-1})$">; if <code>trans</code> = <code>'C','c'</code> then <!-- MATH
$op(M^{-1}) = M^{-C}$ $op(M^{-1}) = M^{-C}$
--> -->
<IMG <IMG
WIDTH="136" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" WIDTH="136" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img102.png" SRC="img103.png"
ALT="$op(M^{-1}) = M^{-C}$"> ALT="$op(M^{-1}) = M^{-C}$">
(conjugate transpose of <IMG (conjugate transpose of <IMG
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img101.png" SRC="img102.png"
ALT="$M^{-1})$">.</TD> ALT="$M^{-1})$">.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>work</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>work</code></TD>

@ -63,11 +63,11 @@ License
<P> <P>
The MLD2P4 is freely distributable under the following copyright The MLD2P4 is freely distributable under the following copyright
terms: <PRE> terms: <PRE>
MLD2P4 version 1.0 MLD2P4 version 1.1
MultiLevel Domain Decomposition Parallel Preconditioners Package MultiLevel Domain Decomposition Parallel Preconditioners Package
based on PSBLAS (Parallel Sparse BLAS version 2.3) based on PSBLAS (Parallel Sparse BLAS version 2.3)
(C) Copyright 2008 (C) Copyright 2008, 2009
Salvatore Filippone University of Rome Tor Vergata Salvatore Filippone University of Rome Tor Vergata
Alfredo Buttari University of Rome Tor Vergata Alfredo Buttari University of Rome Tor Vergata

@ -67,7 +67,7 @@ Mathematics Department, Macquarie University, Sydney.
The command line arguments were: <BR> The command line arguments were: <BR>
<STRONG>latex2html</STRONG> <TT>-noaddress -dir ../../html userhtml.tex</TT> <STRONG>latex2html</STRONG> <TT>-noaddress -dir ../../html userhtml.tex</TT>
<P> <P>
The translation was initiated by Salvatore Filippone on 2008-09-12 The translation was initiated by Salvatore Filippone on 2009-03-13
<BR><HR> <BR><HR>
</BODY> </BODY>

@ -75,7 +75,7 @@ Ax=b,
--> -->
<TABLE WIDTH="100%" ALIGN="CENTER"> <TABLE WIDTH="100%" ALIGN="CENTER">
<TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="system1"></A><IMG <TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="system1"></A><IMG
WIDTH="58" HEIGHT="30" BORDER="0" WIDTH="57" HEIGHT="30" BORDER="0"
SRC="img1.png" SRC="img1.png"
ALT="\begin{displaymath} ALT="\begin{displaymath}
Ax=b, Ax=b,
@ -151,7 +151,6 @@ On the other hand, the routines of the middle and lower layer can be used and ex
by expert users to build new versions of multi-level Schwarz preconditioners. by expert users to build new versions of multi-level Schwarz preconditioners.
We provide here a description of the upper-layer routines, but not of the We provide here a description of the upper-layer routines, but not of the
medium-layer ones. medium-layer ones.
<P> <P>
This guide is organized as follows. General information on the distribution of the source code This guide is organized as follows. General information on the distribution of the source code
is reported in Section&nbsp;<A HREF="node4.html#sec:distribution">2</A>, while details on the configuration is reported in Section&nbsp;<A HREF="node4.html#sec:distribution">2</A>, while details on the configuration

@ -75,7 +75,7 @@ be specified with an <EM>absolute</EM> path).
The full set of options may be looked at by issuing the command The full set of options may be looked at by issuing the command
<code>./configure --help</code>, which produces: <code>./configure --help</code>, which produces:
<PRE> <PRE>
`configure' configures MLD2P4 1.0 to adapt to many kinds of systems. `configure' configures MLD2P4 1.1 to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]... Usage: ./configure [OPTION]... [VAR=VALUE]...

@ -65,9 +65,9 @@ University of Rome ``Tor Vergata'', Italy
<BR> <BR>
<BR> <BR>
<BR> <BR>
Software version: 1.0 Software version: 1.1
<BR> <BR>
Sept. 9th, 2008 March 13, 2009
<BR> <BR>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -139,7 +139,7 @@ PDF = $(join $(BASEFILE),.pdf)
PS = $(join $(BASEFILE),.ps) PS = $(join $(BASEFILE),.ps)
GXS = $(join $(BASEFILE),.gxs) GXS = $(join $(BASEFILE),.gxs)
GLX = $(join $(BASEFILE),.glx) GLX = $(join $(BASEFILE),.glx)
TARGETPDF= ../mld2p4-1.0-guide.pdf TARGETPDF= ../mld2p4-1.1-guide.pdf
BASEHTML = $(patsubst %.tex,%,$(HTMLFILE)) BASEHTML = $(patsubst %.tex,%,$(HTMLFILE))
HTML = $(join $(HTMLFILE),.html) HTML = $(join $(HTMLFILE),.html)
HTMLDIR = ../html HTMLDIR = ../html

@ -5,7 +5,7 @@ PSBLAS}) is a package of parallel algebraic multi-level preconditioners.
It implements various versions of one-level additive and of multi-level additive It implements various versions of one-level additive and of multi-level additive
and hybrid Schwarz algorithms. In the multi-level case, a purely algebraic approach and hybrid Schwarz algorithms. In the multi-level case, a purely algebraic approach
is applied to generate coarse-level corrections, so that no geometric background is needed is applied to generate coarse-level corrections, so that no geometric background is needed
concerning the matrix to be preconditioned. The matrix is required to be square, real concerning the matrix to be preconditioned. The matrix is assumed to be square, real
or complex, with a symmetric sparsity pattern. or complex, with a symmetric sparsity pattern.
MLD2P4 has been designed to provide scalable and easy-to-use preconditioners in the MLD2P4 has been designed to provide scalable and easy-to-use preconditioners in the

@ -62,8 +62,8 @@ aggregation} algorithm \cite{BREZINA_VANEK,VANEK_MANDEL_BREZINA}. A decoupled ve
of this algorithm is implemented, where the smoothed aggregation is applied locally of this algorithm is implemented, where the smoothed aggregation is applied locally
to each submatrix \cite{TUMINARO_TONG}. In the next two subsections we provide to each submatrix \cite{TUMINARO_TONG}. In the next two subsections we provide
a brief description of the multi-level Schwarz preconditioners and of the smoothed a brief description of the multi-level Schwarz preconditioners and of the smoothed
aggregation technique as implemented in MLD2P4. For further details the user aggregation technique as implemented in MLD2P4. For further details the reader
is referred to \cite{para_04,aaecc_07,apnum_07,dd2_96}. is referred to \cite{para_04,aaecc_07,apnum_07,MLD2P4_TOMS,dd2_96}.
\subsection{Multi-level Schwarz Preconditioners\label{sec:multilevel}} \subsection{Multi-level Schwarz Preconditioners\label{sec:multilevel}}
@ -144,7 +144,7 @@ of the number of iterations on the degree of parallelism we may
introduce a global coupling among the overlapping partitions by defining introduce a global coupling among the overlapping partitions by defining
a coarse-space approximation $A_C$ of the matrix $A$. a coarse-space approximation $A_C$ of the matrix $A$.
In a pure algebraic setting, $A_C$ is usually built with In a pure algebraic setting, $A_C$ is usually built with
a Galerkin approach. Given a set $W_C$ of \emph{coarse vertices}, the Galerkin approach. Given a set $W_C$ of \emph{coarse vertices},
with size $n_C$, and a suitable restriction operator with size $n_C$, and a suitable restriction operator
$R_C \in \Re^{n_C \times n}$, $A_C$ is defined as $R_C \in \Re^{n_C \times n}$, $A_C$ is defined as
\[ \[
@ -225,7 +225,8 @@ example, in Figure~\ref{fig:mlhpost_alg}. Here the number of levels
is denoted by $nlev$ and the levels are numbered in increasing order starting is denoted by $nlev$ and the levels are numbered in increasing order starting
from the finest one, i.e.\ the finest level is level 1; the coarse matrix from the finest one, i.e.\ the finest level is level 1; the coarse matrix
and the corresponding basic preconditioner at each level $l$ are denoted by $A_l$ and and the corresponding basic preconditioner at each level $l$ are denoted by $A_l$ and
$M_l$, respectively, with $A_1=A$. $M_l$, respectively, with $A_1=A$, while the related restriction operator is
denoted by $R_l$.
% %
\begin{figure}[t] \begin{figure}[t]
\begin{center} \begin{center}

@ -70,6 +70,13 @@ T.~Chan and T.~Mathew,
in A.~Iserles, editor, Acta Numerica 1994, 61--143. in A.~Iserles, editor, Acta Numerica 1994, 61--143.
Cambridge University Press. Cambridge University Press.
% %
%% \bibitem{MLD2P4_TOMS}
%% P.~D'Ambra, D.~di~Serafino, S.~Filippone,
%% \emph{MLD2P4: a Package of Parallel Multilevel
%% Algebraic Domain Decomposition Preconditioners
%% in Fortran 95},
%% COMPLETARE.
%
\bibitem{UMFPACK} \bibitem{UMFPACK}
T.A.~Davis, T.A.~Davis,
{\em Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal {\em Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal

@ -96,7 +96,7 @@ be specified with an {\em absolute} path).
The full set of options may be looked at by issuing the command The full set of options may be looked at by issuing the command
\verb|./configure --help|, which produces: \verb|./configure --help|, which produces:
\begin{verbatim} \begin{verbatim}
`configure' configures MLD2P4 1.0 to adapt to many kinds of systems. `configure' configures MLD2P4 1.1 to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]... Usage: ./configure [OPTION]... [VAR=VALUE]...

@ -94,7 +94,7 @@ Multilevel &\verb|'ML'| & Multi-level hybrid preconditioner (additive
Coarsest matrix: distributed among the processors. Coarsest matrix: distributed among the processors.
Coarsest-level solver: Coarsest-level solver:
4 sweeps of the block-Jacobi solver, 4 sweeps of the block-Jacobi solver,
with LU (or ILU) factorization of the blocks with LU or ILU factorization of the blocks
(UMFPACK for the double precision versions and (UMFPACK for the double precision versions and
SuperLU for the single precision ones, if the packages SuperLU for the single precision ones, if the packages
have been installed; ILU(0), otherwise). \\ have been installed; ILU(0), otherwise). \\

@ -5,11 +5,11 @@
The MLD2P4 is freely distributable under the following copyright The MLD2P4 is freely distributable under the following copyright
terms: {\small terms: {\small
\begin{verbatim} \begin{verbatim}
MLD2P4 version 1.0 MLD2P4 version 1.1
MultiLevel Domain Decomposition Parallel Preconditioners Package MultiLevel Domain Decomposition Parallel Preconditioners Package
based on PSBLAS (Parallel Sparse BLAS version 2.3) based on PSBLAS (Parallel Sparse BLAS version 2.3)
(C) Copyright 2008 (C) Copyright 2008, 2009
Salvatore Filippone University of Rome Tor Vergata Salvatore Filippone University of Rome Tor Vergata
Alfredo Buttari University of Rome Tor Vergata Alfredo Buttari University of Rome Tor Vergata

@ -69,7 +69,8 @@ build any preconditioner available in MLD2P4 and to apply it within a PSBLAS Kry
On the other hand, the routines of the middle and lower layer can be used and extended On the other hand, the routines of the middle and lower layer can be used and extended
by expert users to build new versions of multi-level Schwarz preconditioners. by expert users to build new versions of multi-level Schwarz preconditioners.
We provide here a description of the upper-layer routines, but not of the We provide here a description of the upper-layer routines, but not of the
medium-layer ones. medium-layer ones.%% For a detailed description of the overall software architecture
%% of MLD2P4 the reader is referred to~\cite{MLD2P4_TOMS}.
This guide is organized as follows. General information on the distribution of the source code This guide is organized as follows. General information on the distribution of the source code
is reported in Section~\ref{sec:distribution}, while details on the configuration is reported in Section~\ref{sec:distribution}, while details on the configuration

@ -27,7 +27,7 @@
\pdfcompresslevel=0 %-- 0 = none, 9 = best \pdfcompresslevel=0 %-- 0 = none, 9 = best
\pdfinfo{ %-- Info dictionary of PDF output /Author (PD, DdS, SF) \pdfinfo{ %-- Info dictionary of PDF output /Author (PD, DdS, SF)
/Title (MultiLevel Domain Decomposition Parallel Preconditioners Package /Title (MultiLevel Domain Decomposition Parallel Preconditioners Package
based on PSBLAS, V. 1.0) based on PSBLAS, V. 1.1)
/Subject (MultiLevel Domain Decomposition Parallel Preconditioners Package) /Subject (MultiLevel Domain Decomposition Parallel Preconditioners Package)
/Keywords (Parallel Numerical Software, Algebraic Multilevel Preconditioners, Sparse Iterative Solvers, PSBLAS, MPI) /Keywords (Parallel Numerical Software, Algebraic Multilevel Preconditioners, Sparse Iterative Solvers, PSBLAS, MPI)
/Creator (pdfLaTeX) /Creator (pdfLaTeX)
@ -125,9 +125,9 @@ based on PSBLAS}
\vspace{\stretch{1}} \vspace{\stretch{1}}
\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth} \noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth}
\flushright \flushright
\large Software version: 1.0\\ \large Software version: 1.1\\
%\today %\today
\large Sept. 9th, 2008 \large March 13, 2009
\end{minipage}} \end{minipage}}
%\addtolength{\textwidth}{\centeroffset} %\addtolength{\textwidth}{\centeroffset}
\vspace{\stretch{2}} \vspace{\stretch{2}}

@ -102,9 +102,9 @@ based on PSBLAS}\\[3ex]
University of Rome ``Tor Vergata'', Italy\\[2ex] University of Rome ``Tor Vergata'', Italy\\[2ex]
%\\[10ex] %\\[10ex]
%\today %\today
Software version: 1.0\\ Software version: 1.1\\
%\today %\today
Sept. 9th, 2008 March 13, 2009
\clearpage \clearpage
\ \\ \ \\
\thispagestyle{empty} \thispagestyle{empty}

@ -228,9 +228,10 @@ refer to Section~\ref{sec:background}.
& Aggregation algorithm. Currently, only the & Aggregation algorithm. Currently, only the
decoupled aggregation is available. \\ \hline decoupled aggregation is available. \\ \hline
\verb|mld_aggr_kind_| & \verb|character(len=*)| \verb|mld_aggr_kind_| & \verb|character(len=*)|
& \texttt{'SMOOTH'} \hspace{2.5cm} \texttt{'RAW'} & \texttt{'SMOOTHED'} \hspace{2.5cm} \texttt{'NONSMOOTHED'}
& \texttt{'SMOOTH'} & \texttt{'SMOOTHED'}
& Type of aggregation: smoothed, raw (i.e.\ using the tentative prolongator). \\ \hline & Type of aggregation: smoothed, nonsmoothed
(i.e.\ using the tentative prolongator). \\ \hline
\verb|mld_aggr_thresh_| & \verb|real(|\emph{kind\_parameter}\verb|)| \verb|mld_aggr_thresh_| & \verb|real(|\emph{kind\_parameter}\verb|)|
& Any~real~num. $\in [0, 1]$ & Any~real~num. $\in [0, 1]$
& 0 & 0
@ -312,10 +313,10 @@ refer to Section~\ref{sec:background}.
& 0 & 0
& Drop tolerance $t$ in the ILU($p,t$) factorization. \\ & Drop tolerance $t$ in the ILU($p,t$) factorization. \\
\hline \hline
\multicolumn{5}{|l|}{{\bfseries Note} Defaults for \multicolumn{5}{|l|}{{\bfseries Note:} defaults for
{\texttt mld\_coarse\_subsolve\_} are chosen as }\\ {\texttt mld\_coarse\_subsolve\_} are chosen as }\\
\multicolumn{5}{|l|}{Single precision version: 'SLU' if installed, 'ILU' otherwise}\\ \multicolumn{5}{|l|}{single precision version: 'SLU' if installed, 'ILU' otherwise}\\
\multicolumn{5}{|l|}{Double precision version: 'UMF' if installed, \multicolumn{5}{|l|}{double precision version: 'UMF' if installed,
else 'SLU' if installed, 'ILU' otherwise}\\ else 'SLU' if installed, 'ILU' otherwise}\\
\hline \hline
\end{tabular} \end{tabular}
@ -379,7 +380,7 @@ preconditioner, stored into \verb|p|, and $op$
denotes the preconditioner itself or its transpose, according to denotes the preconditioner itself or its transpose, according to
the value of \verb|trans|. the value of \verb|trans|.
Note that, when MLD2P4 is used with a Krylov solver from PSBLAS, Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,
\verb|mld_precaply| is called within the PSBLAS routine \verb|mld_krylov| \verb|mld_precaply| is called within the PSBLAS routine \verb|psb_krylov|
and hence it is completely transparent to the user. and hence it is completely transparent to the user.
{\vskip2\baselineskip\noindent\large\bfseries Arguments} {\vskip2\baselineskip\noindent\large\bfseries Arguments}

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata
@ -68,14 +68,14 @@
! the fine-level matrix. ! the fine-level matrix.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor of the fine-level matrix. ! The communication descriptor of the fine-level matrix.
! nlaggr - integer, dimension(:), allocatable.
! nlaggr(i) contains the aggregates held by process i.
! ilaggr - integer, dimension(:), allocatable. ! ilaggr - integer, dimension(:), allocatable.
! The mapping between the row indices of the coarse-level ! The mapping between the row indices of the coarse-level
! matrix and the row indices of the fine-level matrix. ! matrix and the row indices of the fine-level matrix.
! ilaggr(i)=j means that node i in the adjacency graph ! ilaggr(i)=j means that node i in the adjacency graph
! of the fine-level matrix is mapped onto node j in the ! of the fine-level matrix is mapped onto node j in the
! adjacency graph of the coarse-level matrix. ! adjacency graph of the coarse-level matrix.
! nlaggr - integer, dimension(:), allocatable.
! nlaggr(i) contains the aggregates held by process i.
! info - integer, output. ! info - integer, output.
! Error code. ! Error code.
! !
@ -86,7 +86,7 @@ subroutine mld_caggrmap_bld(aggr_type,theta,a,desc_a,ilaggr,nlaggr,info)
implicit none implicit none
! Arguments ! Arguments
integer, intent(in) :: aggr_type integer, intent(in) :: aggr_type
real(psb_spk_), intent(in) :: theta real(psb_spk_), intent(in) :: theta
type(psb_cspmat_type), intent(in) :: a type(psb_cspmat_type), intent(in) :: a
@ -94,7 +94,7 @@ subroutine mld_caggrmap_bld(aggr_type,theta,a,desc_a,ilaggr,nlaggr,info)
integer, allocatable, intent(out) :: ilaggr(:),nlaggr(:) integer, allocatable, intent(out) :: ilaggr(:),nlaggr(:)
integer, intent(out) :: info integer, intent(out) :: info
! Local variables ! Local variables
integer, allocatable :: ils(:), neigh(:) integer, allocatable :: ils(:), neigh(:)
integer :: icnt,nlp,k,n,ia,isz,nr, naggr,i,j,m integer :: icnt,nlp,k,n,ia,isz,nr, naggr,i,j,m
type(psb_cspmat_type) :: atmp, atrans type(psb_cspmat_type) :: atmp, atrans
@ -131,7 +131,7 @@ subroutine mld_caggrmap_bld(aggr_type,theta,a,desc_a,ilaggr,nlaggr,info)
atmp%m=nr atmp%m=nr
atmp%k=nr atmp%k=nr
if (info == 0) call psb_sp_free(atrans,info) if (info == 0) call psb_sp_free(atrans,info)
if (info == 0) call psb_ipcoo2csr(atmp,info) if (info == 0) call psb_spcnv(atmp,info,afmt='csr')
if (info == 0) call mld_dec_map_bld(theta,atmp,desc_a,nlaggr,ilaggr,info) if (info == 0) call mld_dec_map_bld(theta,atmp,desc_a,nlaggr,ilaggr,info)
if (info == 0) call psb_sp_free(atmp,info) if (info == 0) call psb_sp_free(atmp,info)
@ -161,8 +161,6 @@ subroutine mld_caggrmap_bld(aggr_type,theta,a,desc_a,ilaggr,nlaggr,info)
contains contains
subroutine mld_dec_map_bld(theta,a,desc_a,nlaggr,ilaggr,info) subroutine mld_dec_map_bld(theta,a,desc_a,nlaggr,ilaggr,info)
use psb_base_mod use psb_base_mod
@ -337,7 +335,7 @@ contains
! !
isz = nr+1 isz = nr+1
ia = -1 ia = -1
cpling = 0.0 cpling = szero
call psb_sp_getrow(i,a,nz,irow,icol,val,info) call psb_sp_getrow(i,a,nz,irow,icol,val,info)
if (info/=0) then if (info/=0) then
info=4010 info=4010
@ -384,7 +382,7 @@ contains
if (ia>naggr) then if (ia>naggr) then
info=4001 info=4001
call psb_errpush(info,name,a_err='loc_Aggregate: n > naggr 4? ') call psb_errpush(info,name,a_err='loc_Aggregate: n > naggr ? ')
goto 9999 goto 9999
end if end if
ils(ia) = ils(ia) + 1 ils(ia) = ils(ia) + 1

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata
@ -42,7 +42,7 @@
! Version: complex ! Version: complex
! !
! This routine builds a coarse-level matrix A_C from a fine-level matrix A ! This routine builds a coarse-level matrix A_C from a fine-level matrix A
! by using a Galerkin approach, i.e. ! by using the Galerkin approach, i.e.
! !
! A_C = P_C^T A P_C, ! A_C = P_C^T A P_C,
! !
@ -50,18 +50,18 @@
! !
! A mapping from the nodes of the adjacency graph of A to the nodes of the ! A mapping from the nodes of the adjacency graph of A to the nodes of the
! adjacency graph of A_C has been computed by the mld_aggrmap_bld subroutine. ! adjacency graph of A_C has been computed by the mld_aggrmap_bld subroutine.
! The prolongator P_C is built here from this mapping, according to the ! The prolongator P_C is built here from this mapping, according to the
! value of p%iprcparm(mld_aggr_kind_), specified by the user through ! value of p%iprcparm(mld_aggr_kind_), specified by the user through
! mld_cprecinit and mld_cprecset. ! mld_cprecinit and mld_cprecset.
! !
! Currently three different prolongators are implemented, corresponding to ! Currently three different prolongators are implemented, corresponding to
! three aggregation algorithms: ! three aggregation algorithms:
! 1. raw aggregation, ! 1. non-smoothed aggregation,
! 2. smoothed aggregation, ! 2. smoothed aggregation,
! 3. "bizarre" aggregation. ! 3. "bizarre" aggregation.
! 1. The raw aggregation uses as prolongator the piecewise constant interpolation ! 1. The non-smoothed aggregation uses as prolongator the piecewise constant
! operator corresponding to the fine-to-coarse level mapping built by ! interpolation operator corresponding to the fine-to-coarse level mapping built
! mld_aggrmap_bld. This is called tentative prolongator. ! by mld_aggrmap_bld. This is called tentative prolongator.
! 2. The smoothed aggregation uses as prolongator the operator obtained by applying ! 2. The smoothed aggregation uses as prolongator the operator obtained by applying
! a damped Jacobi smoother to the tentative prolongator. ! a damped Jacobi smoother to the tentative prolongator.
! 3. The "bizarre" aggregation uses a prolongator proposed by the authors of MLD2P4. ! 3. The "bizarre" aggregation uses a prolongator proposed by the authors of MLD2P4.
@ -84,9 +84,17 @@
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor of the fine-level matrix. ! The communication descriptor of the fine-level matrix.
! p - type(mld_conelev_type), input/output. ! p - type(mld_conelev_type), input/output.
! The one-level preconditioner data structure containing the local ! The 'one-level' data structure that will contain the local
! part of the base preconditioner to be built as well as the ! part of the matrix to be built as well as the information
! aggregate matrices. ! concerning the prolongator and its transpose.
! ilaggr - integer, dimension(:), allocatable.
! The mapping between the row indices of the coarse-level
! matrix and the row indices of the fine-level matrix.
! ilaggr(i)=j means that node i in the adjacency graph
! of the fine-level matrix is mapped onto node j in the
! adjacency graph of the coarse-level matrix.
! nlaggr - integer, dimension(:), allocatable.
! nlaggr(i) contains the aggregates held by process i.
! info - integer, output. ! info - integer, output.
! Error code. ! Error code.
! !

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata
@ -42,7 +42,7 @@
! Version: complex ! Version: complex
! !
! This routine builds a coarse-level matrix A_C from a fine-level matrix A ! This routine builds a coarse-level matrix A_C from a fine-level matrix A
! by using a Galerkin approach, i.e. ! by using the Galerkin approach, i.e.
! !
! A_C = P_C^T A P_C, ! A_C = P_C^T A P_C,
! !
@ -67,9 +67,17 @@
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor of the fine-level matrix. ! The communication descriptor of the fine-level matrix.
! p - type(mld_conelev_type), input/output. ! p - type(mld_conelev_type), input/output.
! The one-level preconditioner data structure containing the local ! The 'one-level' data structure that will contain the local
! part of the base preconditioner to be built as well as the ! part of the matrix to be built as well as the information
! aggregate matrices. ! concerning the prolongator and its transpose.
! ilaggr - integer, dimension(:), allocatable.
! The mapping between the row indices of the coarse-level
! matrix and the row indices of the fine-level matrix.
! ilaggr(i)=j means that node i in the adjacency graph
! of the fine-level matrix is mapped onto node j in the
! adjacency graph of the coarse-level matrix.
! nlaggr - integer, dimension(:), allocatable.
! nlaggr(i) contains the aggregates held by process i.
! info - integer, output. ! info - integer, output.
! Error code. ! Error code.
! !

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata
@ -42,7 +42,7 @@
! Version: complex ! Version: complex
! !
! This routine builds a coarse-level matrix A_C from a fine-level matrix A ! This routine builds a coarse-level matrix A_C from a fine-level matrix A
! by using a Galerkin approach, i.e. ! by using the Galerkin approach, i.e.
! !
! A_C = P_C^T A P_C, ! A_C = P_C^T A P_C,
! !
@ -59,7 +59,7 @@
! of A, and omega is a suitable smoothing parameter. An estimate of the spectral ! of A, and omega is a suitable smoothing parameter. An estimate of the spectral
! radius of D^(-1)A, to be used in the computation of omega, is provided, ! radius of D^(-1)A, to be used in the computation of omega, is provided,
! according to the value of p%iprcparm(mld_aggr_omega_alg_), specified by the user ! according to the value of p%iprcparm(mld_aggr_omega_alg_), specified by the user
! through mld_dprecinit and mld_dprecset. ! through mld_cprecinit and mld_cprecset.
! !
! This routine can also build A_C according to a "bizarre" aggregation algorithm, ! This routine can also build A_C according to a "bizarre" aggregation algorithm,
! using a "naive" prolongator proposed by the authors of MLD2P4. However, this ! using a "naive" prolongator proposed by the authors of MLD2P4. However, this
@ -68,7 +68,7 @@
! !
! The coarse-level matrix A_C is distributed among the parallel processes or ! The coarse-level matrix A_C is distributed among the parallel processes or
! replicated on each of them, according to the value of p%iprcparm(mld_coarse_mat_), ! replicated on each of them, according to the value of p%iprcparm(mld_coarse_mat_),
! specified by the user through mld_dprecinit and mld_dprecset. ! specified by the user through mld_cprecinit and mld_cprecset.
! !
! For more details see ! For more details see
! M. Brezina and P. Vanek, A black-box iterative solver based on a ! M. Brezina and P. Vanek, A black-box iterative solver based on a
@ -84,9 +84,17 @@
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor of the fine-level matrix. ! The communication descriptor of the fine-level matrix.
! p - type(mld_conelev_type), input/output. ! p - type(mld_conelev_type), input/output.
! The one-level preconditioner data structure containing the local ! The 'one-level' data structure that will contain the local
! part of the base preconditioner to be built as well as the ! part of the matrix to be built as well as the information
! aggregate matrices. ! concerning the prolongator and its transpose.
! ilaggr - integer, dimension(:), allocatable.
! The mapping between the row indices of the coarse-level
! matrix and the row indices of the fine-level matrix.
! ilaggr(i)=j means that node i in the adjacency graph
! of the fine-level matrix is mapped onto node j in the
! adjacency graph of the coarse-level matrix.
! nlaggr - integer, dimension(:), allocatable.
! nlaggr(i) contains the aggregates held by process i.
! info - integer, output. ! info - integer, output.
! Error code. ! Error code.
! !
@ -116,10 +124,10 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,p,info)
& naggr, nzl,naggrm1,naggrp1, i, j, k, jd, icolF & naggr, nzl,naggrm1,naggrp1, i, j, k, jd, icolF
integer ::ictxt,np,me, err_act, icomm integer ::ictxt,np,me, err_act, icomm
character(len=20) :: name character(len=20) :: name
type(psb_cspmat_type) :: am1,am2, AF type(psb_cspmat_type) :: am1,am2, af
type(psb_cspmat_type) :: am3,am4 type(psb_cspmat_type) :: am3,am4
complex(psb_spk_), allocatable :: adiag(:) complex(psb_spk_), allocatable :: adiag(:)
logical :: ml_global_nmb logical :: ml_global_nmb, filter_mat
integer :: debug_level, debug_unit integer :: debug_level, debug_unit
integer, parameter :: ncmax=16 integer, parameter :: ncmax=16
real(psb_spk_) :: omega, anorm, tmp, dg, theta real(psb_spk_) :: omega, anorm, tmp, dg, theta
@ -168,6 +176,8 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,p,info)
& ( (p%iprcparm(mld_aggr_kind_) == mld_biz_prol_).and.& & ( (p%iprcparm(mld_aggr_kind_) == mld_biz_prol_).and.&
& (p%iprcparm(mld_coarse_mat_) == mld_repl_mat_)) ) & (p%iprcparm(mld_coarse_mat_) == mld_repl_mat_)) )
filter_mat = (p%iprcparm(mld_aggr_filter_) == mld_filter_mat_)
if (ml_global_nmb) then if (ml_global_nmb) then
ilaggr(1:nrow) = ilaggr(1:nrow) + naggrm1 ilaggr(1:nrow) = ilaggr(1:nrow) + naggrm1
call psb_halo(ilaggr,desc_a,info) call psb_halo(ilaggr,desc_a,info)
@ -190,7 +200,7 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,p,info)
goto 9999 goto 9999
end if end if
! Get diagonal D ! Get the diagonal D
call psb_sp_getdiag(a,adiag,info) call psb_sp_getdiag(a,adiag,info)
if (info == 0) & if (info == 0) &
& call psb_halo(adiag,desc_a,info) & call psb_halo(adiag,desc_a,info)
@ -243,45 +253,44 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,p,info)
& write(debug_unit,*) me,' ',trim(name),& & write(debug_unit,*) me,' ',trim(name),&
& ' Initial copies done.' & ' Initial copies done.'
if (filter_mat) then
!
! Build the filtered matrix Af from A
!
call psb_spcnv(a,af,info,afmt='csr',dupl=psb_dupl_add_)
!********************************+ do i=1,nrow
! building the filtered matrix af from A tmp = czero
! jd = -1
! do j=af%ia2(i),af%ia2(i+1)-1
call psb_spcnv(a,af,info,afmt='csr',dupl=psb_dupl_add_) if (af%ia1(j) == i) jd = j
if (abs(af%aspk(j)) < theta*sqrt(abs(adiag(i)*adiag(af%ia1(j))))) then
do i=1,nrow tmp=tmp+af%aspk(j)
tmp = czero af%aspk(j)=czero
jd = -1 endif
do j=af%ia2(i),af%ia2(i+1)-1
if (af%ia1(j) == i) jd = j
if (abs(af%aspk(j)) < theta*sqrt(abs(adiag(i)*adiag(af%ia1(j))))) then
tmp=tmp+af%aspk(j)
af%aspk(j)=czero
endif
enddo
if (jd == -1) then
write(0,*) 'Wrong input: we need the diagonal!!!!', i
else
af%aspk(jd)=af%aspk(jd)-tmp
end if
enddo enddo
if (jd == -1) then ! Take out zeroed terms
write(0,*) 'Wrong input: we need the diagonal!!!!' call psb_spcnv(af,info,afmt='coo')
else k = 0
af%aspk(jd)=af%aspk(jd)-tmp do j=1,psb_sp_get_nnzeros(af)
end if if ((af%aspk(j) /= czero) .or. (af%ia1(j)==af%ia2(j))) then
enddo k = k + 1
! Ora eliminiamo i termini che sono stato azzerati af%aspk(k) = af%aspk(j)
call psb_spcnv(af,info,afmt='coo') af%ia1(k) = af%ia1(j)
k = 0 af%ia2(k) = af%ia2(j)
do j=1,psb_sp_get_nnzeros(af) end if
if ((af%aspk(j) /= czero) .or. (af%ia1(j)==af%ia2(j))) then end do
k = k + 1
af%aspk(k) = af%aspk(j)
af%ia1(k) = af%ia1(j)
af%ia2(k) = af%ia2(j)
end if
end do
!!$ write(debug_unit,*) me,' ',trim(name),' Non zeros from filtered matrix:',k,af%m,af%k !!$ write(debug_unit,*) me,' ',trim(name),' Non zeros from filtered matrix:',k,af%m,af%k
call psb_sp_setifld(k,psb_nnz_,af,info) call psb_sp_setifld(k,psb_nnz_,af,info)
call psb_spcnv(af,info,afmt='csr') call psb_spcnv(af,info,afmt='csr')
end if
do i=1,size(adiag) do i=1,size(adiag)
@ -291,10 +300,13 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,p,info)
adiag(i) = cone adiag(i) = cone
end if end if
end do end do
call psb_sp_scal(af,adiag,info)
if (filter_mat) call psb_sp_scal(af,adiag,info)
call psb_sp_scal(am3,adiag,info) call psb_sp_scal(am3,adiag,info)
if (info /= 0) goto 9999 if (info /= 0) goto 9999
!*******************************************
if (p%iprcparm(mld_aggr_omega_alg_) == mld_eig_est_) then if (p%iprcparm(mld_aggr_omega_alg_) == mld_eig_est_) then
if (p%iprcparm(mld_aggr_eig_) == mld_max_norm_) then if (p%iprcparm(mld_aggr_eig_) == mld_max_norm_) then
@ -302,7 +314,7 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,p,info)
if (p%iprcparm(mld_aggr_kind_) == mld_biz_prol_) then if (p%iprcparm(mld_aggr_kind_) == mld_biz_prol_) then
! !
! This only works with CSR. ! This only works with CSR
! !
if (psb_toupper(am3%fida)=='CSR') then if (psb_toupper(am3%fida)=='CSR') then
anorm = szero anorm = szero
@ -352,43 +364,88 @@ subroutine mld_caggrmat_smth_asb(a,desc_a,ilaggr,nlaggr,p,info)
goto 9999 goto 9999
end if end if
! % if (filter_mat) then
if (psb_toupper(af%fida)=='CSR') then !
do i=1,af%m ! Build the smoothed prolongator using the filtered matrix
do j=af%ia2(i),af%ia2(i+1)-1 !
if (af%ia1(j) == i) then if (psb_toupper(af%fida)=='CSR') then
af%aspk(j) = cone - omega*af%aspk(j) do i=1,af%m
else do j=af%ia2(i),af%ia2(i+1)-1
af%aspk(j) = - omega*af%aspk(j) if (af%ia1(j) == i) then
end if af%aspk(j) = cone - omega*af%aspk(j)
else
af%aspk(j) = - omega*af%aspk(j)
end if
end do
end do end do
end do else
call psb_errpush(4001,name,a_err='Invalid AF storage format')
goto 9999
end if
if (debug_level >= psb_debug_outer_) &
& write(debug_unit,*) me,' ',trim(name),&
& 'Done gather, going for SYMBMM 1'
!
! Symbmm90 does the allocation for its result.
!
! am1 = (I-w*D*Af)Ptilde
! Doing it this way means to consider diag(Af_i)
!
!
call psb_symbmm(af,am4,am1,info)
if(info /= 0) then
call psb_errpush(4010,name,a_err='symbmm 1')
goto 9999
end if
call psb_numbmm(af,am4,am1)
if (debug_level >= psb_debug_outer_) &
& write(debug_unit,*) me,' ',trim(name),&
& 'Done NUMBMM 1'
else else
call psb_errpush(4001,name,a_err='Invalid AF storage format') !
goto 9999 ! Build the smoothed prolongator using the original matrix
end if !
if (psb_toupper(am3%fida)=='CSR') then
do i=1,am3%m
do j=am3%ia2(i),am3%ia2(i+1)-1
if (am3%ia1(j) == i) then
am3%aspk(j) = cone - omega*am3%aspk(j)
else
am3%aspk(j) = - omega*am3%aspk(j)
end if
end do
end do
else
call psb_errpush(4001,name,a_err='Invalid AM3 storage format')
goto 9999
end if
if (debug_level >= psb_debug_outer_) & if (debug_level >= psb_debug_outer_) &
& write(debug_unit,*) me,' ',trim(name),& & write(debug_unit,*) me,' ',trim(name),&
& 'Done gather, going for SYMBMM 1' & 'Done gather, going for SYMBMM 1'
! !
! Symbmm90 does the allocation for its result. ! Symbmm90 does the allocation for its result.
! !
! am1 = (i-wDA)Ptilde ! am1 = (I-w*D*A)Ptilde
! Doing it this way means to consider diag(Ai) ! Doing it this way means to consider diag(A_i)
! !
! !
call psb_symbmm(af,am4,am1,info) call psb_symbmm(am3,am4,am1,info)
if(info /= 0) then if(info /= 0) then
call psb_errpush(4010,name,a_err='symbmm 1') call psb_errpush(4010,name,a_err='symbmm 1')
goto 9999 goto 9999
end if end if
call psb_numbmm(af,am4,am1) call psb_numbmm(am3,am4,am1)
if (debug_level >= psb_debug_outer_) & if (debug_level >= psb_debug_outer_) &
& write(debug_unit,*) me,' ',trim(name),& & write(debug_unit,*) me,' ',trim(name),&
& 'Done NUMBMM 1' & 'Done NUMBMM 1'
end if
call psb_sp_free(am4,info) call psb_sp_free(am4,info)
if(info /= 0) then if(info /= 0) then

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata
@ -163,7 +163,7 @@ subroutine mld_cbaseprec_aply(alpha,prec,x,beta,y,desc_data,trans,work,info)
case(mld_bjac_,mld_as_) case(mld_bjac_,mld_as_)
! !
! Additive Schwarz preconditioner ! Additive Schwarz preconditioner (including block-Jacobi as special case)
! !
call mld_as_aply(alpha,prec,x,beta,y,desc_data,trans_,work,info) call mld_as_aply(alpha,prec,x,beta,y,desc_data,trans_,work,info)
if(info /= 0) then if(info /= 0) then

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata
@ -46,7 +46,7 @@
! base preconditioner at each level. ! base preconditioner at each level.
! !
! Details on the base preconditioner to be built are stored in the iprcparm ! Details on the base preconditioner to be built are stored in the iprcparm
! field of the preconditioner data structure (for a description of this ! field of the base preconditioner data structure (for a description of this
! data structure see mld_prec_type.f90). ! data structure see mld_prec_type.f90).
! !
! !

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata
@ -41,11 +41,15 @@
! Subroutine: mld_ccoarse_bld ! Subroutine: mld_ccoarse_bld
! Version: complex ! Version: complex
! !
! This routine builds the preconditioner corresponding to the current ! This routine builds the matrix associated to the current level of the
! level of the multilevel preconditioner. The routine first builds the ! multilevel preconditioner from the matrix associated to the previous level,
! (coarse) matrix associated to the current level from the (fine) matrix ! by using a smoothed aggregation technique (therefore, it also builds the
! associated to the previous level, then builds the related base preconditioner. ! prolongation and restriction operators mapping the current level to the
! Note that this routine is only ever called on levels >= 2. ! previous one and vice versa). Then the routine builds the base preconditioner
! at the current level.
! The current level is regarded as the coarse one, while the previous as
! the fine one. This is in agreement with the fact that the routine is called,
! by mld_mlprec_bld, only on levels >=2.
! !
! !
! Arguments: ! Arguments:
@ -55,8 +59,9 @@
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor of a. ! The communication descriptor of a.
! p - type(mld_conelev_type), input/output. ! p - type(mld_conelev_type), input/output.
! The preconditioner data structure containing the local ! The 'one-level' data structure containing the local part
! part of the one-level preconditioner to be built. ! of the base preconditioner to be built as well as
! information concerning the prolongator and its transpose.
! info - integer, output. ! info - integer, output.
! Error code. ! Error code.
! !
@ -100,6 +105,8 @@ subroutine mld_ccoarse_bld(a,desc_a,p,info)
& mld_smooth_prol_,is_legal_ml_aggr_kind) & mld_smooth_prol_,is_legal_ml_aggr_kind)
call mld_check_def(p%iprcparm(mld_coarse_mat_),'Coarse matrix',& call mld_check_def(p%iprcparm(mld_coarse_mat_),'Coarse matrix',&
& mld_distr_mat_,is_legal_ml_coarse_mat) & mld_distr_mat_,is_legal_ml_coarse_mat)
call mld_check_def(p%iprcparm(mld_aggr_filter_),'Use filtered matrix',&
& mld_no_filter_mat_,is_legal_aggr_filter)
call mld_check_def(p%iprcparm(mld_smoother_pos_),'smooth_pos',& call mld_check_def(p%iprcparm(mld_smoother_pos_),'smooth_pos',&
& mld_pre_smooth_,is_legal_ml_smooth_pos) & mld_pre_smooth_,is_legal_ml_smooth_pos)
call mld_check_def(p%iprcparm(mld_aggr_omega_alg_),'Omega Alg.',& call mld_check_def(p%iprcparm(mld_aggr_omega_alg_),'Omega Alg.',&
@ -124,7 +131,7 @@ subroutine mld_ccoarse_bld(a,desc_a,p,info)
end if end if
! !
! Build the coarse-level matrix from the fine level one, starting from ! Build the coarse-level matrix from the fine-level one, starting from
! the mapping defined by mld_aggrmap_bld and applying the aggregation ! the mapping defined by mld_aggrmap_bld and applying the aggregation
! algorithm specified by p%iprcparm(mld_aggr_kind_) ! algorithm specified by p%iprcparm(mld_aggr_kind_)
! !

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata
@ -41,10 +41,10 @@
! Subroutine: mld_cfact_bld ! Subroutine: mld_cfact_bld
! Version: complex ! Version: complex
! !
! This routine computes an LU or incomplete LU (ILU) factorization of the diagonal ! This routine computes an LU or incomplete LU (ILU) factorization of the
! blocks of a distributed matrix, according to the value of ! diagonal blocks of a distributed matrix, according to the value of
! p%iprcparm(iprcparm(sub_solve_), set by the user through ! p%iprcparm(iprcparm(sub_solve_), set by the user through mld_cprecinit
! mld_dprecinit or mld_dprecset. ! or mld_cprecset.
! It may also compute an LU factorization of a distributed matrix, or split ! It may also compute an LU factorization of a distributed matrix, or split
! a distributed matrix into its block-diagonal and off block-diagonal parts, ! a distributed matrix into its block-diagonal and off block-diagonal parts,
! for the future application of multiple block-Jacobi sweeps. ! for the future application of multiple block-Jacobi sweeps.
@ -60,8 +60,8 @@
! More precisely, the routine performs one of the following tasks: ! More precisely, the routine performs one of the following tasks:
! !
! 1. LU or ILU factorization of the diagonal blocks of the distributed matrix ! 1. LU or ILU factorization of the diagonal blocks of the distributed matrix
! for the construction of a block-Jacobi or AS preconditioners ! for the construction of block-Jacobi or AS preconditioners (allowed at
! (allowed at any level of a multilevel preconditioner); ! any level of a multilevel preconditioner);
! !
! 2. setup of block-Jacobi sweeps to compute an approximate solution of a ! 2. setup of block-Jacobi sweeps to compute an approximate solution of a
! linear system ! linear system

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata
@ -42,11 +42,11 @@
! Version: complex ! Version: complex
! Contains: mld_cilu0_factint, ilu_copyin ! Contains: mld_cilu0_factint, ilu_copyin
! !
! This routine computes either the ILU(0) or the MILU(0) factorization of the ! This routine computes either the ILU(0) or the MILU(0) factorization of
! diagonal blocks of a distributed matrix. These factorizations ! the diagonal blocks of a distributed matrix. These factorizations are used
! are used to build the 'base preconditioner' (block-Jacobi preconditioner/solver, ! to build the 'base preconditioner' (block-Jacobi preconditioner/solver,
! Additive Schwarz preconditioner) corresponding to a given level of a multilevel ! Additive Schwarz preconditioner) corresponding to a given level of a
! preconditioner. ! multilevel preconditioner.
! !
! Details on the above factorizations can be found in ! Details on the above factorizations can be found in
! Y. Saad, Iterative Methods for Sparse Linear Systems, Second Edition, ! Y. Saad, Iterative Methods for Sparse Linear Systems, Second Edition,

@ -1,10 +1,10 @@
!!$ !!$
!!$ !!$
!!$ MLD2P4 version 1.0 !!$ MLD2P4 version 1.1
!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package !!$ MultiLevel Domain Decomposition Parallel Preconditioners Package
!!$ based on PSBLAS (Parallel Sparse BLAS version 2.2) !!$ based on PSBLAS (Parallel Sparse BLAS version 2.3.1)
!!$ !!$
!!$ (C) Copyright 2008 !!$ (C) Copyright 2008,2009
!!$ !!$
!!$ Salvatore Filippone University of Rome Tor Vergata !!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata !!$ Alfredo Buttari University of Rome Tor Vergata

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

Loading…
Cancel
Save