Fix from Mac coding to Unix coding.

This commit is contained in:
Salvatore Filippone
2017-07-25 14:19:05 +01:00
parent 79922b5939
commit 92e47008bd
9 changed files with 653 additions and 125 deletions
+111 -43
View File
@@ -54,25 +54,37 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<H2><A NAME="SECTION00062000000000000000"></A><A NAME="sec:aggregation"></A>
<BR>
Smoothed Aggregation
</H2><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">␍␍In order to define the prolongator <IMG
</H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to define the prolongator <IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img25.png"
ALT="$P^k$">, used to compute␍the coarse-level matrix <IMG
ALT="$P^k$">, used to compute
the coarse-level matrix <IMG
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img15.png"
ALT="$A^{k+1}$">, MLD2P4 uses the smoothed aggregation␍algorithm described in [<A
ALT="$A^{k+1}$">, MLD2P4 uses the smoothed aggregation
algorithm described in [<A
HREF="node29.html#BREZINA_VANEK">2</A>,<A
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>].␍The basic idea of this algorithm is to build a coarse set of indices␍<IMG
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>].
The basic idea of this algorithm is to build a coarse set of indices
<IMG
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img26.png"
ALT="$\Omega^{k+1}$"> by suitably grouping the indices of <IMG
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\Omega^k$"> into disjoint␍subsets (aggregates), and to define the coarse-to-fine space transfer operator␍<IMG
ALT="$\Omega^k$"> into disjoint
subsets (aggregates), and to define the coarse-to-fine space transfer operator
<IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img25.png"
ALT="$P^k$"> by applying a suitable smoother to a simple piecewise constant␍prolongation operator, with the aim of improving the quality of the coarse-space correction.␍␍Three main steps can be identified in the smoothed aggregation procedure:␍</FONT></FONT></FONT>
ALT="$P^k$"> by applying a suitable smoother to a simple piecewise constant
prolongation operator, with the aim of improving the quality of the coarse-space correction.
</FONT></FONT></FONT>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Three main steps can be identified in the smoothed aggregation procedure:
</FONT></FONT></FONT>
<OL>
<LI>aggregation of the indices of <IMG
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
@@ -80,12 +92,12 @@ Smoothed Aggregation
ALT="$\Omega^k$"> to obtain <IMG
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img26.png"
ALT="$\Omega^{k+1}$">;
ALT="$\Omega^{k+1}$">;
</LI>
<LI>construction of the prolongator <IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img25.png"
ALT="$P^k$">;
ALT="$P^k$">;
</LI>
<LI>application of <IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
@@ -96,10 +108,14 @@ Smoothed Aggregation
ALT="$R^k=(P^k)^T$"> to build <IMG
WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img15.png"
ALT="$A^{k+1}$">.
ALT="$A^{k+1}$">.
</LI>
</OL><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">␍ ␍In order to perform the coarsening step, the smoothed aggregation algorithm␍described in&nbsp;[<A
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>] is used. In this algorithm,␍each index <!-- MATH
</OL><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to perform the coarsening step, the smoothed aggregation algorithm
described in&nbsp;[<A
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>] is used. In this algorithm,
each index <!-- MATH
$j \in \Omega^{k+1}$
-->
<IMG
@@ -111,22 +127,26 @@ Smoothed Aggregation
ALT="$\Omega^k_j$"> of <IMG
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\Omega^k$">,␍consisting of a suitably chosen index <!-- MATH
ALT="$\Omega^k$">,
consisting of a suitably chosen index <!-- MATH
$i \in \Omega^k$
-->
<IMG
WIDTH="52" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img29.png"
ALT="$i \in \Omega^k$"> and indices that are (usually) contained in a␍strongly-coupled neighborood of <IMG
ALT="$i \in \Omega^k$"> and indices that are (usually) contained in a
strongly-coupled neighborood of <IMG
WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img30.png"
ALT="$i$">, i.e.,␍</FONT></FONT></FONT>
ALT="$i$">, i.e.,
</FONT></FONT></FONT>
<BR>
<DIV ALIGN="RIGHT">
<!-- MATH
\begin{equation}
\Omega^k_j \subset \mathcal{N}_i^k(\theta) = ␍ \left\{ r \in \Omega^k: |a_{ir}^k| > \theta \sqrt{|a_{ii}^ka_{rr}^k|} \right \} \cup \left\{ i \right\},
\Omega^k_j \subset \mathcal{N}_i^k(\theta) =
\left\{ r \in \Omega^k: |a_{ir}^k| > \theta \sqrt{|a_{ii}^ka_{rr}^k|} \right \} \cup \left\{ i \right\},
\end{equation}
-->
<TABLE WIDTH="100%" ALIGN="CENTER">
@@ -139,35 +159,54 @@ Smoothed Aggregation
<TD WIDTH=10 ALIGN="RIGHT">
(3)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">␍for a given threshold <!-- MATH
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
for a given threshold <!-- MATH
$\theta \in [0,1]$
-->
<IMG
WIDTH="69" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img32.png"
ALT="$\theta \in [0,1]$"> (see&nbsp;[<A
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>] for the details).␍Since this algorithm has a sequential nature, a decoupled␍version of it is applied, where each processor independently executes␍the algorithm on the set of indices assigned to it in the initial data␍distribution. This version is embarrassingly parallel, since it does not require any data ␍communication. On the other hand, it may produce some nonuniform aggregates␍and is strongly dependent on the number of processors and on the initial partitioning␍of the matrix <IMG
HREF="node29.html#VANEK_MANDEL_BREZINA">25</A>] for the details).
Since this algorithm has a sequential nature, a decoupled
version of it is applied, where each processor independently executes
the algorithm on the set of indices assigned to it in the initial data
distribution. This version is embarrassingly parallel, since it does not require any data
communication. On the other hand, it may produce some nonuniform aggregates
and is strongly dependent on the number of processors and on the initial partitioning
of the matrix <IMG
WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img3.png"
ALT="$A$">. Nevertheless, this parallel algorithm has been chosen for␍MLD2P4, since it has been shown to produce good results in practice␍[<A
ALT="$A$">. Nevertheless, this parallel algorithm has been chosen for
MLD2P4, since it has been shown to produce good results in practice
[<A
HREF="node29.html#aaecc_07">5</A>,<A
HREF="node29.html#apnum_07">7</A>,<A
HREF="node29.html#TUMINARO_TONG">24</A>].␍␍The prolongator <IMG
HREF="node29.html#TUMINARO_TONG">24</A>].
</FONT></FONT></FONT>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The prolongator <IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img25.png"
ALT="$P^k$"> is built starting from a tentative prolongator␍<!-- MATH
ALT="$P^k$"> is built starting from a tentative prolongator
<!-- MATH
$\bar{P}^k \in \mathbb{R}^{n_k \times n_{k+1}}$
-->
<IMG
WIDTH="117" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img33.png"
ALT="$\bar{P}^k \in \mathbb{R}^{n_k \times n_{k+1}}$">, defined as␍</FONT></FONT></FONT>
ALT="$\bar{P}^k \in \mathbb{R}^{n_k \times n_{k+1}}$">, defined as
</FONT></FONT></FONT>
<BR>
<DIV ALIGN="RIGHT">
<!-- MATH
\begin{equation}
\bar{P}^k =(\bar{p}_{ij}^k), \quad \bar{p}_{ij}^k = ␍\left\{ \begin{array}{ll}␍1 & \quad \mbox{if} \; i \in \Omega^k_j, \\␍0 & \quad \mbox{otherwise},␍\end{array} \right.
\bar{P}^k =(\bar{p}_{ij}^k), \quad \bar{p}_{ij}^k =
\left\{ \begin{array}{ll}
1 & \quad \mbox{if} \; i \in \Omega^k_j, \\
0 & \quad \mbox{otherwise},
\end{array} \right.
\end{equation}
-->
<TABLE WIDTH="100%" ALIGN="CENTER">
@@ -175,36 +214,41 @@ Smoothed Aggregation
WIDTH="287" HEIGHT="51" BORDER="0"
SRC="img34.png"
ALT="\begin{displaymath}␍\bar{P}^k =(\bar{p}_{ij}^k), \quad \bar{p}_{ij}^k = ␍\left\{...
...ega^k_j, \\ ␍0 &amp; \quad \mbox{otherwise},␍\end{array} \right.
...ega^k_j, \ ␍0 &amp; \quad \mbox{otherwise},␍\end{array} \right.
\end{displaymath}"></TD>
<TD WIDTH=10 ALIGN="RIGHT">
(4)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">␍where <IMG
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
where <IMG
WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img28.png"
ALT="$\Omega^k_j$"> is the aggregate of <IMG
WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img9.png"
ALT="$\Omega^k$">␍corresponding to the index <!-- MATH
ALT="$\Omega^k$">
corresponding to the index <!-- MATH
$j \in \Omega^{k+1}$
-->
<IMG
WIDTH="72" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img27.png"
ALT="$j \in \Omega^{k+1}$">.␍<IMG
ALT="$j \in \Omega^{k+1}$">.
<IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img25.png"
ALT="$P^k$"> is obtained by applying to <IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img35.png"
ALT="$\bar{P}^k$"> a smoother␍<!-- MATH
ALT="$\bar{P}^k$"> a smoother
<!-- MATH
$S^k \in \mathbb{R}^{n_k \times n_k}$
-->
<IMG
WIDTH="101" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img36.png"
ALT="$S^k \in \mathbb{R}^{n_k \times n_k}$">:␍</FONT></FONT></FONT>
ALT="$S^k \in \mathbb{R}^{n_k \times n_k}$">:
</FONT></FONT></FONT>
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
@@ -219,12 +263,17 @@ P^k = S^k \bar{P}^k,
ALT="\begin{displaymath}␍P^k = S^k \bar{P}^k,␍\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">␍in order to remove nonsmooth components from the range of the prolongator,␍and hence to improve the convergence properties of the multi-level␍method&nbsp;[<A
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
in order to remove nonsmooth components from the range of the prolongator,
and hence to improve the convergence properties of the multi-level
method&nbsp;[<A
HREF="node29.html#BREZINA_VANEK">2</A>,<A
HREF="node29.html#Stuben_01">23</A>].␍A simple choice for <IMG
HREF="node29.html#Stuben_01">23</A>].
A simple choice for <IMG
WIDTH="25" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
SRC="img38.png"
ALT="$S^k$"> is the damped Jacobi smoother:␍</FONT></FONT></FONT>
ALT="$S^k$"> is the damped Jacobi smoother:
</FONT></FONT></FONT>
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
@@ -239,25 +288,35 @@ S^k = I - \omega^k (D^k)^{-1} A^k_F ,
ALT="\begin{displaymath}␍S^k = I - \omega^k (D^k)^{-1} A^k_F , ␍\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">␍where <IMG
<P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
where <IMG
WIDTH="28" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img40.png"
ALT="$D^k$"> is the diagonal matrix with the same diagonal entries as <IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img41.png"
ALT="$A^k$">,␍<!-- MATH
ALT="$A^k$">,
<!-- MATH
$A^k_F = (\bar{a}_{ij}^k)$
-->
<IMG
WIDTH="87" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img42.png"
ALT="$A^k_F = (\bar{a}_{ij}^k)$"> is the filtered matrix defined as␍</FONT></FONT></FONT>
ALT="$A^k_F = (\bar{a}_{ij}^k)$"> is the filtered matrix defined as
</FONT></FONT></FONT>
<BR>
<DIV ALIGN="RIGHT">
<!-- MATH
\begin{equation}
\bar{a}_{ij}^k =␍ \left \{ \begin{array}{ll}␍ a_{ij}^k & \mbox{if } j \in \mathcal{N}_i^k(\theta), \\␍ 0 & \mbox{otherwise},␍ \end{array} \right.␍ \; (j \ne i),␍ \qquad␍ \bar{a}_{ii}^k = a_{ii}^k - \sum_{j \ne i} (a_{ij}^k - \bar{a}_{ij}^k),
\bar{a}_{ij}^k =
\left \{ \begin{array}{ll}
a_{ij}^k & \mbox{if } j \in \mathcal{N}_i^k(\theta), \\
0 & \mbox{otherwise},
\end{array} \right.
\; (j \ne i),
\qquad
\bar{a}_{ii}^k = a_{ii}^k - \sum_{j \ne i} (a_{ij}^k - \bar{a}_{ij}^k),
\end{equation}
-->
<TABLE WIDTH="100%" ALIGN="CENTER">
@@ -270,13 +329,15 @@ S^k = I - \omega^k (D^k)^{-1} A^k_F ,
<TD WIDTH=10 ALIGN="RIGHT">
(5)</TD></TR>
</TABLE>
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">␍and <IMG
<BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">
and <IMG
WIDTH="24" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
SRC="img44.png"
ALT="$\omega^k$"> is an approximation of <IMG
WIDTH="61" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img45.png"
ALT="$4/(3\rho^k)$">, where␍<IMG
ALT="$4/(3\rho^k)$">, where
<IMG
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img46.png"
ALT="$\rho^k$"> is the spectral radius of <!-- MATH
@@ -286,25 +347,32 @@ S^k = I - \omega^k (D^k)^{-1} A^k_F ,
WIDTH="83" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img47.png"
ALT="$(D^k)^{-1}A^k_F$"> [<A
HREF="node29.html#BREZINA_VANEK">2</A>].␍In MLD2P4 this approximation is obtained by using <!-- MATH
HREF="node29.html#BREZINA_VANEK">2</A>].
In MLD2P4 this approximation is obtained by using <!-- MATH
$\| A^k_F \|_\infty$
-->
<IMG
WIDTH="61" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img48.png"
ALT="$\Vert A^k_F \Vert _\infty$"> as an estimate␍of <IMG
ALT="$\Vert A^k_F \Vert _\infty$"> as an estimate
of <IMG
WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img46.png"
ALT="$\rho^k$">. Note that for systems coming from uniformly elliptic␍problems, filtering the matrix <IMG
ALT="$\rho^k$">. Note that for systems coming from uniformly elliptic
problems, filtering the matrix <IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img41.png"
ALT="$A^k$"> has little or no effect, and␍<IMG
ALT="$A^k$"> has little or no effect, and
<IMG
WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img41.png"
ALT="$A^k$"> can be used instead of <IMG
WIDTH="29" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img49.png"
ALT="$A^k_F$">. The latter choice is the default in MLD2P4.␍␍</FONT></FONT></FONT><HR>
ALT="$A^k_F$">. The latter choice is the default in MLD2P4.
</FONT></FONT></FONT>
<P>
<FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR>
<!--Navigation Panel-->
<A NAME="tex2html241"
HREF="node14.html">