<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!--Converted with LaTeX2HTML 2018 (Released Feb 1, 2018) --> <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 v2018"> <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 > <DIV CLASS="navigation"><!--Navigation Panel--> <A NAME="tex2html249" HREF="node14.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html245" HREF="node12.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html239" HREF="node12.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html247" HREF="node2.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <BR> <B> Next:</B> <A NAME="tex2html250" HREF="node14.html">Smoothed Aggregation</A> <B> Up:</B> <A NAME="tex2html246" HREF="node12.html">Multigrid Background</A> <B> Previous:</B> <A NAME="tex2html240" HREF="node12.html">Multigrid Background</A> <B> <A NAME="tex2html248" HREF="node2.html">Contents</A></B> <BR> <BR></DIV> <!--End of Navigation Panel--> <H2><A NAME="SECTION00061000000000000000"></A><A NAME="sec:multilevel"></A> <BR> AMG preconditioners </H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG> <P> <BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">In order to describe the AMG preconditioners available in MLD2P4, we consider a linear system </BIG></BIG></BIG> <BR> <DIV ALIGN="RIGHT" CLASS="mathdisplay"> <!-- MATH \begin{equation} Ax=b, \end{equation} --> <A NAME="eq:system"></A> <TABLE WIDTH="100%" ALIGN="CENTER"> <TR VALIGN="MIDDLE"><TD ALIGN="CENTER" NOWRAP><A NAME="eq:system"></A><IMG WIDTH="57" HEIGHT="30" BORDER="0" SRC="img2.png" ALT="\begin{displaymath} Ax=b, \end{displaymath}"></TD> <TD CLASS="eqno" WIDTH=10 ALIGN="RIGHT"> (<SPAN CLASS="arabic">2</SPAN>)</TD></TR> </TABLE> <BR CLEAR="ALL"></DIV><P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> where <!-- MATH $A=(a_{ij}) \in \mathbb{R}^{n \times n}$ --> <SPAN CLASS="MATH"><IMG WIDTH="137" HEIGHT="38" ALIGN="MIDDLE" BORDER="0" SRC="img5.png" ALT="$A=(a_{ij}) \in \mathbb{R}^{n \times n}$"></SPAN> is a nonsingular sparse matrix; for ease of presentation we assume <SPAN CLASS="MATH"><IMG WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img3.png" ALT="$A$"></SPAN> has a symmetric sparsity pattern. </BIG></BIG></BIG> <P> <BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">Let us consider as finest index space the set of row (column) indices of <SPAN CLASS="MATH"><IMG WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img3.png" ALT="$A$"></SPAN>, i.e., <!-- MATH $\Omega = \{1, 2, \ldots, n\}$ --> <SPAN CLASS="MATH"><IMG WIDTH="132" HEIGHT="36" ALIGN="MIDDLE" BORDER="0" SRC="img6.png" ALT="$\Omega = \{1, 2, \ldots, n\}$"></SPAN>. Any algebraic multilevel preconditioners implemented in MLD2P4 generates a hierarchy of index spaces and a corresponding hierarchy of matrices, </BIG></BIG></BIG> <BR><P></P> <DIV ALIGN="CENTER" CLASS="mathdisplay"> <!-- 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><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> by using the information contained in <SPAN CLASS="MATH"><IMG WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img3.png" ALT="$A$"></SPAN>, without assuming any knowledge of the geometry of the problem from which <SPAN CLASS="MATH"><IMG WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img3.png" ALT="$A$"></SPAN> originates. A vector space <!-- MATH $\mathbb{R}^{n_{k}}$ --> <SPAN CLASS="MATH"><IMG WIDTH="34" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img8.png" ALT="$\mathbb{R}^{n_{k}}$"></SPAN> is associated with <SPAN CLASS="MATH"><IMG WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" SRC="img9.png" ALT="$\Omega^k$"></SPAN>, where <SPAN CLASS="MATH"><IMG WIDTH="23" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" SRC="img10.png" ALT="$n_k$"></SPAN> is the size of <SPAN CLASS="MATH"><IMG WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" SRC="img9.png" ALT="$\Omega^k$"></SPAN>. For all <SPAN CLASS="MATH"><IMG WIDTH="70" HEIGHT="34" ALIGN="MIDDLE" BORDER="0" SRC="img11.png" ALT="$k < nlev$"></SPAN>, a restriction operator and a prolongation one are built, which connect two levels <SPAN CLASS="MATH"><IMG WIDTH="14" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img12.png" ALT="$k$"></SPAN> and <SPAN CLASS="MATH"><IMG WIDTH="44" HEIGHT="34" ALIGN="MIDDLE" BORDER="0" SRC="img13.png" ALT="$k+1$"></SPAN>: </BIG></BIG></BIG> <BR><P></P> <DIV ALIGN="CENTER" CLASS="mathdisplay"> <!-- 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="253" 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><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> the matrix <SPAN CLASS="MATH"><IMG WIDTH="43" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" SRC="img15.png" ALT="$A^{k+1}$"></SPAN> is computed by using the previous operators according to the Galerkin approach, i.e., </BIG></BIG></BIG> <BR><P></P> <DIV ALIGN="CENTER" CLASS="mathdisplay"> <!-- MATH \begin{displaymath} A^{k+1}=R^kA^kP^k. \end{displaymath} --> <IMG WIDTH="129" 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><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"> In the current implementation of MLD2P4 we have <SPAN CLASS="MATH"><IMG WIDTH="95" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" SRC="img17.png" ALT="$R^k=(P^k)^T$"></SPAN> A smoother with iteration matrix <SPAN CLASS="MATH"><IMG WIDTH="32" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" SRC="img18.png" ALT="$M^k$"></SPAN> is set up at each level <SPAN CLASS="MATH"><IMG WIDTH="70" HEIGHT="34" ALIGN="MIDDLE" BORDER="0" SRC="img11.png" ALT="$k < nlev$"></SPAN>, 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 <SPAN CLASS="MATH"><IMG WIDTH="30" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img19.png" ALT="$LU$"></SPAN> factorization means computing and storing the <SPAN CLASS="MATH"><IMG WIDTH="17" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img20.png" ALT="$L$"></SPAN> and <SPAN CLASS="MATH"><IMG WIDTH="18" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img21.png" ALT="$U$"></SPAN> factors). The construction of the hierarchy of AMG components described so far corresponds to the so-called build phase of the preconditioner. </BIG></BIG></BIG> <P> <BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG> <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... ...[1mm] \>endif \\ [1mm] \>return $u^k$\ \\ [1mm] end \end{tabbing}\end{minipage}}"> </DIV></TD></TR> </TABLE> </DIV> <BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG> <P> <BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">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 <SPAN CLASS="MATH"><IMG WIDTH="82" HEIGHT="21" ALIGN="BOTTOM" BORDER="0" SRC="img23.png" ALT="$w=B^{-1}v$"></SPAN>, where <SPAN CLASS="MATH"><IMG WIDTH="19" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" SRC="img24.png" ALT="$B$"></SPAN> denotes the preconditioner, usually within an iteration of a Krylov solver [<A HREF="node36.html#Saad_book">21</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="node36.html#Briggs2000">3</A>], and a version of the K-cycle described in [<A HREF="node36.html#Notay2008">20</A>]. </BIG></BIG></BIG> <P> <BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG> <DIV CLASS="navigation"><HR> <!--Navigation Panel--> <A NAME="tex2html249" HREF="node14.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html245" HREF="node12.html"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <A NAME="tex2html239" HREF="node12.html"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> <A NAME="tex2html247" HREF="node2.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <BR> <B> Next:</B> <A NAME="tex2html250" HREF="node14.html">Smoothed Aggregation</A> <B> Up:</B> <A NAME="tex2html246" HREF="node12.html">Multigrid Background</A> <B> Previous:</B> <A NAME="tex2html240" HREF="node12.html">Multigrid Background</A> <B> <A NAME="tex2html248" HREF="node2.html">Contents</A></B> </DIV> <!--End of Navigation Panel--> </BODY> </HTML>