<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!--Converted with LaTeX2HTML 2012 (1.2) original version by: Nikos Drakos, CBLU, University of Leeds * revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan * with significant contributions from: Jens Lippmann, Marek Rouchal, Martin Wilck and others --> <HTML> <HEAD> <TITLE>AMG preconditioners</TITLE> <META NAME="description" CONTENT="AMG preconditioners"> <META NAME="keywords" CONTENT="userhtml"> <META NAME="resource-type" CONTENT="document"> <META NAME="distribution" CONTENT="global"> <META NAME="Generator" CONTENT="LaTeX2HTML v2012"> <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css"> <LINK REL="STYLESHEET" HREF="userhtml.css"> <LINK REL="next" HREF="node14.html"> <LINK REL="previous" HREF="node12.html"> <LINK REL="up" HREF="node12.html"> <LINK REL="next" HREF="node14.html"> </HEAD> <BODY > <!--Navigation Panel--> <A NAME="tex2html241" HREF="node14.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html237" HREF="node12.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html231" HREF="node12.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html239" HREF="node2.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <BR> <B> Next:</B> <A NAME="tex2html242" HREF="node14.html">Smoothed Aggregation</A> <B> Up:</B> <A NAME="tex2html238" HREF="node12.html">Multigrid Background</A> <B> Previous:</B> <A NAME="tex2html232" HREF="node12.html">Multigrid Background</A> <B> <A NAME="tex2html240" HREF="node2.html">Contents</A></B> <BR> <BR> <!--End of Navigation Panel--> <H2><A NAME="SECTION00061000000000000000"></A><A NAME="sec:multilevel"></A> <BR> AMG preconditioners </H2><FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT> <P> <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">In order to describe the AMG preconditioners available in MLD2P4, we consider a linear system </FONT></FONT></FONT> <BR> <DIV ALIGN="RIGHT"> <!-- MATH \begin{equation} Ax=b, \end{equation} --> <TABLE WIDTH="100%" ALIGN="CENTER"> <TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:system"></A><IMG WIDTH="58" HEIGHT="30" BORDER="0" SRC="img2.png" ALT="\begin{displaymath} Ax=b, \end{displaymath}"></TD> <TD WIDTH=10 ALIGN="RIGHT"> (2)</TD></TR> </TABLE> <BR CLEAR="ALL"></DIV><P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> where <!-- MATH $A=(a_{ij}) \in \mathbb{R}^{n \times n}$ --> <IMG WIDTH="137" HEIGHT="38" ALIGN="MIDDLE" BORDER="0" SRC="img5.png" ALT="$A=(a_{ij}) \in \mathbb{R}^{n \times n}$"> is a nonsingular sparse matrix; for ease of presentation we assume <IMG WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img3.png" ALT="$A$"> is real, but the results are valid for the complex case as well. </FONT></FONT></FONT> <P> <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">Let us assume as finest index space the set of row (column) indices of <IMG WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img3.png" ALT="$A$">, i.e., <!-- MATH $\Omega = \{1, 2, \ldots, n\}$ --> <IMG WIDTH="132" HEIGHT="36" ALIGN="MIDDLE" BORDER="0" SRC="img6.png" ALT="$\Omega = \{1, 2, \ldots, n\}$">. Any algebraic multilevel preconditioners implemented in MLD2P4 generates a hierarchy of index spaces and a corresponding hierarchy of matrices, </FONT></FONT></FONT> <BR><P></P> <DIV ALIGN="CENTER"> <!-- MATH \begin{displaymath} \Omega^1 \equiv \Omega \supset \Omega^2 \supset \ldots \supset \Omega^{nlev}, \quad A^1 \equiv A, A^2, \ldots, A^{nlev}, \end{displaymath} --> <IMG WIDTH="398" HEIGHT="30" BORDER="0" SRC="img7.png" ALT="\begin{displaymath}\Omega^1 \equiv \Omega \supset \Omega^2 \supset \ldots \supset \Omega^{nlev}, \quad A^1 \equiv A, A^2, \ldots, A^{nlev}, \end{displaymath}"> </DIV> <BR CLEAR="ALL"> <P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> by using the information contained in <IMG WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img3.png" ALT="$A$">, without assuming any knowledge of the geometry of the problem from which <IMG WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img3.png" ALT="$A$"> originates. A vector space <!-- MATH $\mathbb{R}^{n_{k}}$ --> <IMG WIDTH="33" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img8.png" ALT="$\mathbb{R}^{n_{k}}$"> is associated with <IMG WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" SRC="img9.png" ALT="$\Omega^k$">, where <IMG WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" SRC="img10.png" ALT="$n_k$"> is the size of <IMG WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" SRC="img9.png" ALT="$\Omega^k$">. For all <IMG WIDTH="71" HEIGHT="34" ALIGN="MIDDLE" BORDER="0" SRC="img11.png" ALT="$k < nlev$">, a restriction operator and a prolongation one are built, which connect two levels <IMG WIDTH="14" HEIGHT="16" ALIGN="BOTTOM" BORDER="0" SRC="img12.png" ALT="$k$"> and <IMG WIDTH="44" HEIGHT="34" ALIGN="MIDDLE" BORDER="0" SRC="img13.png" ALT="$k+1$">: </FONT></FONT></FONT> <BR><P></P> <DIV ALIGN="CENTER"> <!-- MATH \begin{displaymath} P^k \in \mathbb{R}^{n_k \times n_{k+1}}, \quad R^k \in \mathbb{R}^{n_{k+1}\times n_k}; \end{displaymath} --> <IMG WIDTH="254" HEIGHT="30" BORDER="0" SRC="img14.png" ALT="\begin{displaymath} P^k \in \mathbb{R}^{n_k \times n_{k+1}}, \quad R^k \in \mathbb{R}^{n_{k+1}\times n_k}; \end{displaymath}"> </DIV> <BR CLEAR="ALL"> <P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> the matrix <IMG WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" SRC="img15.png" ALT="$A^{k+1}$"> is computed by using the previous operators according to the Galerkin approach, i.e., </FONT></FONT></FONT> <BR><P></P> <DIV ALIGN="CENTER"> <!-- MATH \begin{displaymath} A^{k+1}=R^kA^kP^k. \end{displaymath} --> <IMG WIDTH="131" HEIGHT="27" BORDER="0" SRC="img16.png" ALT="\begin{displaymath} A^{k+1}=R^kA^kP^k. \end{displaymath}"> </DIV> <BR CLEAR="ALL"> <P></P><FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1"> In the current implementation of MLD2P4 we have <IMG WIDTH="95" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img17.png" ALT="$R^k=(P^k)^T$"> A smoother with iteration matrix <IMG WIDTH="32" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" SRC="img18.png" ALT="$M^k$"> is set up at each level <IMG WIDTH="71" HEIGHT="34" ALIGN="MIDDLE" BORDER="0" SRC="img11.png" ALT="$k < nlev$">, and a solver is set up at the coarsest level, so that they are ready for application (for example, setting up a solver based on the <IMG WIDTH="30" HEIGHT="16" ALIGN="BOTTOM" BORDER="0" SRC="img19.png" ALT="$LU$"> factorization means computing and storing the <IMG WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img20.png" ALT="$L$"> and <IMG WIDTH="18" HEIGHT="16" ALIGN="BOTTOM" BORDER="0" SRC="img21.png" ALT="$U$"> factors). The construction of the hierarchy of AMG components described so far corresponds to the so-called build phase of the preconditioner. </FONT></FONT></FONT> <P> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT> <DIV ALIGN="CENTER"><A NAME="fig:application_alg"></A><A NAME="524"></A> <TABLE> <CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG> Application phase of a V-cycle preconditioner.</CAPTION> <TR><TD> <DIV ALIGN="CENTER"> <!-- MATH $\framebox{ \begin{minipage}{.85\textwidth} \begin{tabbing} \quad \=\quad \=\quad \=\quad \\[-3mm] procedure V-cycle$\left(k,A^k,b^k,u^k\right)$\ \\[2mm] \>if $\left(k \ne nlev \right)$\ then \\[1mm] \>\> $u^k = u^k + M^k \left(b^k - A^k u^k\right)$\ \\[1mm] \>\> $b^{k+1} = R^{k+1}\left(b^k - A^k u^k\right)$\ \\[1mm] \>\> $u^{k+1} =$\ V-cycle$\left(k+1,A^{k+1},b^{k+1},0\right)$\ \\[1mm] \>\> $u^k = u^k + P^{k+1} u^{k+1}$\ \\[1mm] \>\> $u^k = u^k + M^k \left(b^k - A^k u^k\right)$\ \\[1mm] \>else \\[1mm] \>\> $u^k = \left(A^k\right)^{-1} b^k$\\[1mm] \>endif \\[1mm] \>return $u^k$\ \\[1mm] end \end{tabbing} \end{minipage} }$ --> <IMG WIDTH="333" HEIGHT="336" ALIGN="BOTTOM" BORDER="0" SRC="img22.png" ALT="\framebox{ \begin{minipage}{.85\textwidth} \begin{tabbing} \quad \=\quad \=\quad... ...mm] \>endif [1mm] \>return $u^k$ [1mm] end \end{tabbing} \end{minipage} }"> </DIV></TD></TR> </TABLE> </DIV> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT> <P> <FONT SIZE="+1"><FONT SIZE="+1"><FONT SIZE="+1">The components produced in the build phase may be combined in several ways to obtain different multilevel preconditioners; this is done in the application phase, i.e., in the computation of a vector of type <IMG WIDTH="82" HEIGHT="21" ALIGN="BOTTOM" BORDER="0" SRC="img23.png" ALT="$w=B^{-1}v$">, where <IMG WIDTH="19" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img24.png" ALT="$B$"> denotes the preconditioner, usually within an iteration of a Krylov solver [<A HREF="node30.html#Saad_book">20</A>]. An example of such a combination, known as V-cycle, is given in Figure <A HREF="#fig:application_alg">1</A>. In this case, a single iteration of the same smoother is used before and after the the recursive call to the V-cycle (i.e., in the pre-smoothing and post-smoothing phases); however, different choices can be performed. Other cycles can be defined; in MLD2P4, we implemented the standard V-cycle and W-cycle [<A HREF="node30.html#Briggs2000">3</A>], and a version of the K-cycle described in [<A HREF="node30.html#Notay2008">19</A>]. </FONT></FONT></FONT> <P> <FONT SIZE="+1"><FONT SIZE="+1"></FONT></FONT><HR> <!--Navigation Panel--> <A NAME="tex2html241" HREF="node14.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html237" HREF="node12.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html231" HREF="node12.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html239" HREF="node2.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <BR> <B> Next:</B> <A NAME="tex2html242" HREF="node14.html">Smoothed Aggregation</A> <B> Up:</B> <A NAME="tex2html238" HREF="node12.html">Multigrid Background</A> <B> Previous:</B> <A NAME="tex2html232" HREF="node12.html">Multigrid Background</A> <B> <A NAME="tex2html240" HREF="node2.html">Contents</A></B> <!--End of Navigation Panel--> </BODY> </HTML>