<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<!--Converted with LaTeX2HTML 2017.2 (Released Jan 23, 2017) -->
<HTML>
<HEAD>
<TITLE>Smoothers and coarsest-level solvers</TITLE>
<META NAME="description" CONTENT="Smoothers and coarsest-level solvers">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">

<META NAME="Generator" CONTENT="LaTeX2HTML v2017.2">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">

<LINK REL="STYLESHEET" HREF="userhtml.css">

<LINK REL="previous" HREF="node14.html">
<LINK REL="up" HREF="node12.html">
<LINK REL="next" HREF="node16.html">
</HEAD>

<BODY >

<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html271"
  HREF="node16.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html267"
  HREF="node12.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html263"
  HREF="node14.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html269"
  HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>  
<BR>
<B> Next:</B> <A NAME="tex2html272"
  HREF="node16.html">Getting Started</A>
<B> Up:</B> <A NAME="tex2html268"
  HREF="node12.html">Multigrid Background</A>
<B> Previous:</B> <A NAME="tex2html264"
  HREF="node14.html">Smoothed Aggregation</A>
 &nbsp; <B>  <A NAME="tex2html270"
  HREF="node2.html">Contents</A></B> 
<BR>
<BR></DIV>
<!--End of Navigation Panel-->

<H2><A NAME="SECTION00063000000000000000"></A><A NAME="sec:smoothers"></A>
<BR>
Smoothers and coarsest-level solvers
</H2><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The smoothers implemented in MLD2P4 include the Jacobi and block-Jacobi methods,
a hybrid version of the forward and backward Gauss-Seidel methods, and the
additive Schwarz (AS) ones (see, e.g., [<A
 HREF="node36.html#Saad_book">20</A>,<A
 HREF="node36.html#dd2_96">21</A>]). 
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">The hybrid Gauss-Seidel
version is considered because the original Gauss-Seidel method is inherently sequential.
At each iteration of the hybrid version, each parallel process uses the most recent values
of its own local variables and the values of the non-local variables computed at the
previous iteration, obtained by exchanging data with other processes before
the beginning of the current iteration.
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">In the AS methods, the index space <SPAN CLASS="MATH"><IMG
 WIDTH="25" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="img9.png"
 ALT="$\Omega^k$"></SPAN> is divided into <SPAN CLASS="MATH"><IMG
 WIDTH="28" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="img50.png"
 ALT="$m_k$"></SPAN>
subsets <SPAN CLASS="MATH"><IMG
 WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img51.png"
 ALT="$\Omega^k_i$"></SPAN> of size <SPAN CLASS="MATH"><IMG
 WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
 SRC="img52.png"
 ALT="$n_{k,i}$"></SPAN>,  possibly
overlapping. For each <SPAN CLASS="MATH"><IMG
 WIDTH="11" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="img30.png"
 ALT="$i$"></SPAN> we consider the restriction
operator <!-- MATH
 $R_i^k \in \mathbb{R}^{n_{k,i} \times n_k}$
 -->
<SPAN CLASS="MATH"><IMG
 WIDTH="110" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img53.png"
 ALT="$R_i^k \in \mathbb{R}^{n_{k,i} \times n_k}$"></SPAN>
that maps a vector <SPAN CLASS="MATH"><IMG
 WIDTH="23" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
 SRC="img54.png"
 ALT="$x^k$"></SPAN> to the vector <SPAN CLASS="MATH"><IMG
 WIDTH="22" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img55.png"
 ALT="$x_i^k$"></SPAN> made of the components of <SPAN CLASS="MATH"><IMG
 WIDTH="23" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
 SRC="img54.png"
 ALT="$x^k$"></SPAN>
with indices in <SPAN CLASS="MATH"><IMG
 WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img51.png"
 ALT="$\Omega^k_i$"></SPAN>, and the prolongation operator
<!-- MATH
 $P^k_i = (R_i^k)^T$
 -->
<SPAN CLASS="MATH"><IMG
 WIDTH="95" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img56.png"
 ALT="$P^k_i = (R_i^k)^T$"></SPAN>. These operators are then  used to build
<!-- MATH
 $A_i^k=R_i^kA^kP_i^k$
 -->
<SPAN CLASS="MATH"><IMG
 WIDTH="113" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img57.png"
 ALT="$A_i^k=R_i^kA^kP_i^k$"></SPAN>, which is the restriction of <SPAN CLASS="MATH"><IMG
 WIDTH="26" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
 SRC="img41.png"
 ALT="$A^k$"></SPAN> to the index
space <SPAN CLASS="MATH"><IMG
 WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img51.png"
 ALT="$\Omega^k_i$"></SPAN>.
The classical AS preconditioner <SPAN CLASS="MATH"><IMG
 WIDTH="41" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img58.png"
 ALT="$M^k_{AS}$"></SPAN> is defined as
</BIG></BIG></BIG>
<BR><P></P>
<DIV ALIGN="CENTER" CLASS="mathdisplay">
<!-- MATH
 \begin{displaymath}
( M^k_{AS} )^{-1} = \sum_{i=1}^{m_k} P_i^k (A_i^k)^{-1} R_i^{k},
\end{displaymath}
 -->

<IMG
 WIDTH="219" HEIGHT="59" BORDER="0"
 SRC="img59.png"
 ALT="\begin{displaymath}
 ( M^k_{AS} )^{-1} = \sum_{i=1}^{m_k} P_i^k (A_i^k)^{-1} R_i^{k},
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
where <SPAN CLASS="MATH"><IMG
 WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img60.png"
 ALT="$A_i^k$"></SPAN> is supposed to be nonsingular. We observe that an approximate
inverse of <SPAN CLASS="MATH"><IMG
 WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img60.png"
 ALT="$A_i^k$"></SPAN> is usually considered instead of <SPAN CLASS="MATH"><IMG
 WIDTH="57" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img61.png"
 ALT="$(A_i^k)^{-1}$"></SPAN>.
The setup of <SPAN CLASS="MATH"><IMG
 WIDTH="41" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img58.png"
 ALT="$M^k_{AS}$"></SPAN> during the multilevel build phase
involves
</BIG></BIG></BIG>
<UL>
<LI>the definition of the index subspaces <SPAN CLASS="MATH"><IMG
 WIDTH="25" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img62.png"
 ALT="$\Omega_i^k$"></SPAN> and of the corresponding 
  operators <SPAN CLASS="MATH"><IMG
 WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img63.png"
 ALT="$R_i^k$"></SPAN> (and <SPAN CLASS="MATH"><IMG
 WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img64.png"
 ALT="$P_i^k$"></SPAN>);
</LI>
<LI>the computation of the submatrices <SPAN CLASS="MATH"><IMG
 WIDTH="26" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img60.png"
 ALT="$A_i^k$"></SPAN>;
</LI>
<LI>the computation of their inverses (usually approximated
    through  some form  of incomplete factorization).
</LI>
</UL><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
The computation of <!-- MATH
 $z^k=M^k_{AS}w^k$
 -->
<SPAN CLASS="MATH"><IMG
 WIDTH="102" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img65.png"
 ALT="$z^k=M^k_{AS}w^k$"></SPAN>, with <!-- MATH
 $w^k \in \mathbb{R}^{n_k}$
 -->
<SPAN CLASS="MATH"><IMG
 WIDTH="76" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img66.png"
 ALT="$w^k \in \mathbb{R}^{n_k}$"></SPAN>, during the
multilevel application phase, requires
</BIG></BIG></BIG>
<UL>
<LI>the restriction of <SPAN CLASS="MATH"><IMG
 WIDTH="25" HEIGHT="19" ALIGN="BOTTOM" BORDER="0"
 SRC="img67.png"
 ALT="$w^k$"></SPAN> to the subspaces <!-- MATH
 $\mathbb{R}^{n_{k,i}}$
 -->
<SPAN CLASS="MATH"><IMG
 WIDTH="41" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
 SRC="img68.png"
 ALT="$\mathbb{R}^{n_{k,i}}$"></SPAN>,
	  i.e. <!-- MATH
 $w_i^k = R_i^{k} w^k$
 -->
<SPAN CLASS="MATH"><IMG
 WIDTH="91" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img69.png"
 ALT="$w_i^k = R_i^{k} w^k$"></SPAN>;
</LI>
<LI>the computation of the vectors <!-- MATH
 $z_i^k=(A_i^k)^{-1} w_i^k$
 -->
<SPAN CLASS="MATH"><IMG
 WIDTH="119" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img70.png"
 ALT="$z_i^k=(A_i^k)^{-1} w_i^k$"></SPAN>;
</LI>
<LI>the prolongation and the sum of the previous vectors,
    i.e. <!-- MATH
 $z^k = \sum_{i=1}^{m_k} P_i^k z_i^k$
 -->
<SPAN CLASS="MATH"><IMG
 WIDTH="127" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
 SRC="img71.png"
 ALT="$z^k = \sum_{i=1}^{m_k} P_i^k z_i^k$"></SPAN>.
</LI>
</UL><BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">
Variants of the classical AS method, which use modifications of the
restriction and prolongation operators, are also implemented in MLD2P4.
Among them, the Restricted AS (RAS) preconditioner usually
outperforms the classical AS preconditioner in terms of convergence
rate and of computation and communication time on parallel distributed-memory
computers, and is therefore the most widely used among the AS
preconditioners&nbsp;[<A
 HREF="node36.html#CAI_SARKIS">6</A>]. 
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE">Direct solvers based on sparse LU factorizations, implemented in the
third-party libraries reported in Section&nbsp;<A HREF="node8.html#sec:third-party">3.2</A>, can be applied
as coarsest-level solvers by MLD2P4. Native inexact solvers based on
incomplete LU factorizations, as well as Jacobi, hybrid (forward) Gauss-Seidel,
and block Jacobi preconditioners are also available. Direct solvers usually
lead to more effective preconditioners in terms of algorithmic scalability;
however, this does not guarantee parallel efficiency.
</BIG></BIG></BIG>
<P>
<BIG CLASS="LARGE"><BIG CLASS="LARGE"><BIG CLASS="LARGE"></BIG></BIG></BIG>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html271"
  HREF="node16.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html267"
  HREF="node12.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html263"
  HREF="node14.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html269"
  HREF="node2.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>  
<BR>
<B> Next:</B> <A NAME="tex2html272"
  HREF="node16.html">Getting Started</A>
<B> Up:</B> <A NAME="tex2html268"
  HREF="node12.html">Multigrid Background</A>
<B> Previous:</B> <A NAME="tex2html264"
  HREF="node14.html">Smoothed Aggregation</A>
 &nbsp; <B>  <A NAME="tex2html270"
  HREF="node2.html">Contents</A></B> </DIV>
<!--End of Navigation Panel-->

</BODY>
</HTML>