|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
|
|
"http://www.w3.org/TR/html4/loose.dtd">
|
|
|
|
<html >
|
|
|
|
<head><title>AMG preconditioners</title>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
|
|
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
|
|
|
|
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
|
|
|
|
<!-- html,3 -->
|
|
|
|
<meta name="src" content="userhtml.tex">
|
|
|
|
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
|
|
|
</head><body
|
|
|
|
>
|
|
|
|
<!--l. 56--><div class="crosslinks"><p class="noindent"><span
|
|
|
|
class="cmr-12">[</span><a
|
|
|
|
href="userhtmlsu7.html" ><span
|
|
|
|
class="cmr-12">next</span></a><span
|
|
|
|
class="cmr-12">] [</span><a
|
|
|
|
href="#tailuserhtmlsu6.html"><span
|
|
|
|
class="cmr-12">tail</span></a><span
|
|
|
|
class="cmr-12">] [</span><a
|
|
|
|
href="userhtmlse4.html#userhtmlsu6.html" ><span
|
|
|
|
class="cmr-12">up</span></a><span
|
|
|
|
class="cmr-12">] </span></p></div>
|
|
|
|
<h4 class="subsectionHead"><span class="titlemark"><span
|
|
|
|
class="cmr-12">4.1 </span></span> <a
|
|
|
|
id="x14-130004.1"></a><span
|
|
|
|
class="cmr-12">AMG preconditioners</span></h4>
|
|
|
|
<!--l. 58--><p class="noindent" ><span
|
|
|
|
class="cmr-12">In order to describe the AMG preconditioners available in MLD2P4, we consider a</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">linear system</span>
|
|
|
|
<table
|
|
|
|
class="equation"><tr><td>
|
|
|
|
<center class="math-display" >
|
|
|
|
<img
|
|
|
|
src="userhtml2x.png" alt="Ax = b,
|
|
|
|
" class="math-display" ><a
|
|
|
|
id="x14-13001r2"></a></center></td><td class="equation-label"><span
|
|
|
|
class="cmr-12">(2)</span></td></tr></table>
|
|
|
|
<!--l. 62--><p class="nopar" >
|
|
|
|
<span
|
|
|
|
class="cmr-12">where </span><span
|
|
|
|
class="cmmi-12">A </span><span
|
|
|
|
class="cmr-12">= (</span><span
|
|
|
|
class="cmmi-12">a</span><sub><span
|
|
|
|
class="cmmi-8">ij</span></sub><span
|
|
|
|
class="cmr-12">) </span><span
|
|
|
|
class="cmsy-10x-x-120">∈ </span><span
|
|
|
|
class="msbm-10x-x-120">ℝ</span><sup><span
|
|
|
|
class="cmmi-8">n</span><span
|
|
|
|
class="cmsy-8">×</span><span
|
|
|
|
class="cmmi-8">n</span></sup> <span
|
|
|
|
class="cmr-12">is a nonsingular sparse matrix; for ease of presentation we</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">assume </span><span
|
|
|
|
class="cmmi-12">A </span><span
|
|
|
|
class="cmr-12">has a symmetric sparsity pattern.</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!--l. 67--><p class="indent" > <span
|
|
|
|
class="cmr-12">Let us consider as finest index space the set of row (column) indices of </span><span
|
|
|
|
class="cmmi-12">A</span><span
|
|
|
|
class="cmr-12">,</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">i.e., Ω = </span><span
|
|
|
|
class="cmsy-10x-x-120">{</span><span
|
|
|
|
class="cmr-12">1</span><span
|
|
|
|
class="cmmi-12">, </span><span
|
|
|
|
class="cmr-12">2</span><span
|
|
|
|
class="cmmi-12">,</span><span
|
|
|
|
class="cmmi-12">…</span><span
|
|
|
|
class="cmmi-12">,n</span><span
|
|
|
|
class="cmsy-10x-x-120">}</span><span
|
|
|
|
class="cmr-12">. Any algebraic multilevel preconditioners implemented in</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">MLD2P4 generates a hierarchy of index spaces and a corresponding hierarchy of</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">matrices,</span>
|
|
|
|
<center class="math-display" >
|
|
|
|
<img
|
|
|
|
src="userhtml3x.png" alt=" 1 2 nlev 1 2 nlev
|
|
|
|
Ω ≡ Ω ⊃ Ω ⊃ ...⊃ Ω , A ≡ A, A ,...,A ,
|
|
|
|
" class="math-display" ></center>
|
|
|
|
<!--l. 72--><p class="nopar" > <span
|
|
|
|
class="cmr-12">by using the information contained in </span><span
|
|
|
|
class="cmmi-12">A</span><span
|
|
|
|
class="cmr-12">, without assuming any knowledge of</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">the geometry of the problem from which </span><span
|
|
|
|
class="cmmi-12">A </span><span
|
|
|
|
class="cmr-12">originates. A vector space </span><span
|
|
|
|
class="msbm-10x-x-120">ℝ</span><sup><span
|
|
|
|
class="cmmi-8">n</span><sub><span
|
|
|
|
class="cmmi-6">k</span></sub></sup> <span
|
|
|
|
class="cmr-12">is</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">associated with Ω</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup><span
|
|
|
|
class="cmr-12">, where </span><span
|
|
|
|
class="cmmi-12">n</span><sub>
|
|
|
|
<span
|
|
|
|
class="cmmi-8">k</span></sub> <span
|
|
|
|
class="cmr-12">is the size of Ω</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup><span
|
|
|
|
class="cmr-12">. For all </span><span
|
|
|
|
class="cmmi-12">k < nlev</span><span
|
|
|
|
class="cmr-12">, a restriction</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">operator and a prolongation one are built, which connect two levels </span><span
|
|
|
|
class="cmmi-12">k </span><span
|
|
|
|
class="cmr-12">and</span>
|
|
|
|
<span
|
|
|
|
class="cmmi-12">k </span><span
|
|
|
|
class="cmr-12">+ 1:</span>
|
|
|
|
<center class="math-display" >
|
|
|
|
<img
|
|
|
|
src="userhtml4x.png" alt="P k ∈ ℝnk×nk+1, Rk ∈ ℝnk+1×nk ;
|
|
|
|
" class="math-display" ></center>
|
|
|
|
<!--l. 82--><p class="nopar" > <span
|
|
|
|
class="cmr-12">the matrix </span><span
|
|
|
|
class="cmmi-12">A</span><sup><span
|
|
|
|
class="cmmi-8">k</span><span
|
|
|
|
class="cmr-8">+1</span></sup> <span
|
|
|
|
class="cmr-12">is computed by using the previous operators according to the</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">Galerkin approach, i.e.,</span>
|
|
|
|
<center class="math-display" >
|
|
|
|
<img
|
|
|
|
src="userhtml5x.png" alt=" k+1 k k k
|
|
|
|
A = R A P .
|
|
|
|
" class="math-display" ></center>
|
|
|
|
<!--l. 87--><p class="nopar" > <span
|
|
|
|
class="cmr-12">In the current implementation of MLD2P4 we have </span><span
|
|
|
|
class="cmmi-12">R</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup> <span
|
|
|
|
class="cmr-12">= (</span><span
|
|
|
|
class="cmmi-12">P</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup><span
|
|
|
|
class="cmr-12">)</span><sup><span
|
|
|
|
class="cmmi-8">T</span> </sup> <span
|
|
|
|
class="cmr-12">A smoother with</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">iteration matrix </span><span
|
|
|
|
class="cmmi-12">M</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup> <span
|
|
|
|
class="cmr-12">is set up at each level </span><span
|
|
|
|
class="cmmi-12">k < nlev</span><span
|
|
|
|
class="cmr-12">, and a solver is set up at the</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">coarsest level, so that they are ready for application (for example, setting up a solver</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">based on the </span><span
|
|
|
|
class="cmmi-12">LU </span><span
|
|
|
|
class="cmr-12">factorization means computing and storing the </span><span
|
|
|
|
class="cmmi-12">L </span><span
|
|
|
|
class="cmr-12">and </span><span
|
|
|
|
class="cmmi-12">U </span><span
|
|
|
|
class="cmr-12">factors). The</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">construction of the hierarchy of AMG components described so far corresponds to the</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">so-called build phase of the preconditioner.</span>
|
|
|
|
<!--l. 95--><p class="indent" > <hr class="figure"><div class="figure"
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a
|
|
|
|
id="x14-130021"></a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="center"
|
|
|
|
>
|
|
|
|
<!--l. 96--><p class="noindent" >
|
|
|
|
<div class="fbox"> <div class="minipage"><table
|
|
|
|
cellpadding="0" border="0" cellspacing="0"
|
|
|
|
class="tabbing"><tr
|
|
|
|
style="vertical-align:baseline;" class="tabbing"><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td
|
|
|
|
class="tabbing"></td></tr></table>
|
|
|
|
<!--l. 115--><p class="noindent" ><table
|
|
|
|
cellpadding="0" border="0" cellspacing="0"
|
|
|
|
class="tabbing"><tr
|
|
|
|
style="vertical-align:baseline;" class="tabbing"><td
|
|
|
|
class="tabbing">procedure V-cycle<img
|
|
|
|
src="userhtml6x.png" alt="( k k k)
|
|
|
|
k,A ,b ,u" class="left" align="middle">
|
|
|
|
</td></tr></table>
|
|
|
|
<!--l. 115--><p class="noindent" >
|
|
|
|
<table
|
|
|
|
cellpadding="0" border="0" cellspacing="0"
|
|
|
|
class="tabbing"><tr
|
|
|
|
style="vertical-align:baseline;" class="tabbing"><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td
|
|
|
|
class="tabbing">if <img
|
|
|
|
src="userhtml7x.png" alt="(k ⁄= nlev)" class="left" align="middle"> then</td></tr></table>
|
|
|
|
<!--l. 115--><p class="noindent" >
|
|
|
|
<table
|
|
|
|
cellpadding="0" border="0" cellspacing="0"
|
|
|
|
class="tabbing"><tr
|
|
|
|
style="vertical-align:baseline;" class="tabbing"><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td
|
|
|
|
class="tabbing"><span
|
|
|
|
class="cmmi-10x-x-109">u</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup> = <span
|
|
|
|
class="cmmi-10x-x-109">u</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup> + <span
|
|
|
|
class="cmmi-10x-x-109">M</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup><img
|
|
|
|
src="userhtml8x.png" alt="( )
|
|
|
|
bk - Akuk" class="left" align="middle"></td></tr></table>
|
|
|
|
<!--l. 115--><p class="noindent" >
|
|
|
|
<table
|
|
|
|
cellpadding="0" border="0" cellspacing="0"
|
|
|
|
class="tabbing"><tr
|
|
|
|
style="vertical-align:baseline;" class="tabbing"><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td
|
|
|
|
class="tabbing"><span
|
|
|
|
class="cmmi-10x-x-109">b</span><sup><span
|
|
|
|
class="cmmi-8">k</span><span
|
|
|
|
class="cmr-8">+1</span></sup> = <span
|
|
|
|
class="cmmi-10x-x-109">R</span><sup><span
|
|
|
|
class="cmmi-8">k</span><span
|
|
|
|
class="cmr-8">+1</span></sup><img
|
|
|
|
src="userhtml9x.png" alt="(bk - Akuk )" class="left" align="middle"></td></tr></table>
|
|
|
|
<!--l. 115--><p class="noindent" >
|
|
|
|
<table
|
|
|
|
cellpadding="0" border="0" cellspacing="0"
|
|
|
|
class="tabbing"><tr
|
|
|
|
style="vertical-align:baseline;" class="tabbing"><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td
|
|
|
|
class="tabbing"><span
|
|
|
|
class="cmmi-10x-x-109">u</span><sup><span
|
|
|
|
class="cmmi-8">k</span><span
|
|
|
|
class="cmr-8">+1</span></sup> = V-cycle<img
|
|
|
|
src="userhtml10x.png" alt="( )
|
|
|
|
k + 1,Ak+1,bk+1,0" class="left" align="middle"></td></tr></table>
|
|
|
|
<!--l. 115--><p class="noindent" >
|
|
|
|
<table
|
|
|
|
cellpadding="0" border="0" cellspacing="0"
|
|
|
|
class="tabbing"><tr
|
|
|
|
style="vertical-align:baseline;" class="tabbing"><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td
|
|
|
|
class="tabbing"><span
|
|
|
|
class="cmmi-10x-x-109">u</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup> = <span
|
|
|
|
class="cmmi-10x-x-109">u</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup> + <span
|
|
|
|
class="cmmi-10x-x-109">P</span><sup><span
|
|
|
|
class="cmmi-8">k</span><span
|
|
|
|
class="cmr-8">+1</span></sup><span
|
|
|
|
class="cmmi-10x-x-109">u</span><sup><span
|
|
|
|
class="cmmi-8">k</span><span
|
|
|
|
class="cmr-8">+1</span></sup></td></tr></table>
|
|
|
|
<!--l. 115--><p class="noindent" >
|
|
|
|
<table
|
|
|
|
cellpadding="0" border="0" cellspacing="0"
|
|
|
|
class="tabbing"><tr
|
|
|
|
style="vertical-align:baseline;" class="tabbing"><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td
|
|
|
|
class="tabbing"><span
|
|
|
|
class="cmmi-10x-x-109">u</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup> = <span
|
|
|
|
class="cmmi-10x-x-109">u</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup> + <span
|
|
|
|
class="cmmi-10x-x-109">M</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup><img
|
|
|
|
src="userhtml11x.png" alt="( )
|
|
|
|
bk - Akuk" class="left" align="middle"></td></tr></table>
|
|
|
|
<!--l. 115--><p class="noindent" >
|
|
|
|
<table
|
|
|
|
cellpadding="0" border="0" cellspacing="0"
|
|
|
|
class="tabbing"><tr
|
|
|
|
style="vertical-align:baseline;" class="tabbing"><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td
|
|
|
|
class="tabbing">else</td></tr></table>
|
|
|
|
<!--l. 115--><p class="noindent" >
|
|
|
|
<table
|
|
|
|
cellpadding="0" border="0" cellspacing="0"
|
|
|
|
class="tabbing"><tr
|
|
|
|
style="vertical-align:baseline;" class="tabbing"><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td
|
|
|
|
class="tabbing"><span
|
|
|
|
class="cmmi-10x-x-109">u</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup> = <img
|
|
|
|
src="userhtml12x.png" alt="( )
|
|
|
|
Ak" class="left" align="middle"><sup><span
|
|
|
|
class="cmsy-8">-</span><span
|
|
|
|
class="cmr-8">1</span></sup><span
|
|
|
|
class="cmmi-10x-x-109">b</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup></td></tr></table>
|
|
|
|
<!--l. 115--><p class="noindent" >
|
|
|
|
<table
|
|
|
|
cellpadding="0" border="0" cellspacing="0"
|
|
|
|
class="tabbing"><tr
|
|
|
|
style="vertical-align:baseline;" class="tabbing"><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td
|
|
|
|
class="tabbing">endif</td></tr></table>
|
|
|
|
<!--l. 115--><p class="noindent" >
|
|
|
|
<table
|
|
|
|
cellpadding="0" border="0" cellspacing="0"
|
|
|
|
class="tabbing"><tr
|
|
|
|
style="vertical-align:baseline;" class="tabbing"><td style="width:16;"
|
|
|
|
class="tabbing"> </td><td
|
|
|
|
class="tabbing">return <span
|
|
|
|
class="cmmi-10x-x-109">u</span><sup><span
|
|
|
|
class="cmmi-8">k</span></sup></td></tr></table>
|
|
|
|
<!--l. 115--><p class="noindent" >
|
|
|
|
<table
|
|
|
|
cellpadding="0" border="0" cellspacing="0"
|
|
|
|
class="tabbing"><tr
|
|
|
|
style="vertical-align:baseline;" class="tabbing"><td
|
|
|
|
class="tabbing">end</td></tr></table>
|
|
|
|
<!--l. 115--><p class="noindent" > </div> </div>
|
|
|
|
<br /> <div class="caption"
|
|
|
|
><span class="id">Figure 1: </span><span
|
|
|
|
class="content">Application phase of a V-cycle preconditioner.</span></div><!--tex4ht:label?: x14-130021 -->
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!--l. 118--><p class="indent" > </div><hr class="endfigure">
|
|
|
|
<!--l. 120--><p class="indent" > <span
|
|
|
|
class="cmr-12">The components produced in the build phase may be combined in several ways to</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">obtain different multilevel preconditioners; this is done in the application phase, i.e., in</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">the computation of a vector of type </span><span
|
|
|
|
class="cmmi-12">w </span><span
|
|
|
|
class="cmr-12">= </span><span
|
|
|
|
class="cmmi-12">B</span><sup><span
|
|
|
|
class="cmsy-8">-</span><span
|
|
|
|
class="cmr-8">1</span></sup><span
|
|
|
|
class="cmmi-12">v</span><span
|
|
|
|
class="cmr-12">, where </span><span
|
|
|
|
class="cmmi-12">B </span><span
|
|
|
|
class="cmr-12">denotes the preconditioner,</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">usually within an iteration of a Krylov solver </span><span class="cite"><span
|
|
|
|
class="cmr-12">[</span><a
|
|
|
|
href="userhtmlli4.html#XSaad_book"><span
|
|
|
|
class="cmr-12">23</span></a><span
|
|
|
|
class="cmr-12">]</span></span><span
|
|
|
|
class="cmr-12">. An example of such a combination,</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">known as V-cycle, is given in Figure</span><span
|
|
|
|
class="cmr-12"> </span><a
|
|
|
|
href="#x14-130021"><span
|
|
|
|
class="cmr-12">1</span><!--tex4ht:ref: fig:application_alg --></a><span
|
|
|
|
class="cmr-12">. In this case, a single iteration of the same</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">smoother is used before and after the the recursive call to the V-cycle (i.e., in the</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">pre-smoothing and post-smoothing phases); however, different choices can be</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">performed. Other cycles can be defined; in MLD2P4, we implemented the</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">standard V-cycle and W-cycle</span><span
|
|
|
|
class="cmr-12"> </span><span class="cite"><span
|
|
|
|
class="cmr-12">[</span><a
|
|
|
|
href="userhtmlli4.html#XBriggs2000"><span
|
|
|
|
class="cmr-12">3</span></a><span
|
|
|
|
class="cmr-12">]</span></span><span
|
|
|
|
class="cmr-12">, and a version of the K-cycle described</span>
|
|
|
|
<span
|
|
|
|
class="cmr-12">in</span><span
|
|
|
|
class="cmr-12"> </span><span class="cite"><span
|
|
|
|
class="cmr-12">[</span><a
|
|
|
|
href="userhtmlli4.html#XNotay2008"><span
|
|
|
|
class="cmr-12">22</span></a><span
|
|
|
|
class="cmr-12">]</span></span><span
|
|
|
|
class="cmr-12">.</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!--l. 133--><div class="crosslinks"><p class="noindent"><span
|
|
|
|
class="cmr-12">[</span><a
|
|
|
|
href="userhtmlsu7.html" ><span
|
|
|
|
class="cmr-12">next</span></a><span
|
|
|
|
class="cmr-12">] [</span><a
|
|
|
|
href="userhtmlsu6.html" ><span
|
|
|
|
class="cmr-12">front</span></a><span
|
|
|
|
class="cmr-12">] [</span><a
|
|
|
|
href="userhtmlse4.html#userhtmlsu6.html" ><span
|
|
|
|
class="cmr-12">up</span></a><span
|
|
|
|
class="cmr-12">] </span></p></div>
|
|
|
|
<!--l. 133--><p class="indent" > <a
|
|
|
|
id="tailuserhtmlsu6.html"></a>
|
|
|
|
</body></html>
|