]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Intro and Result fixes
authorTimo Heister <timo.heister@gmail.com>
Mon, 13 May 2019 20:08:45 +0000 (14:08 -0600)
committerTimo Heister <timo.heister@gmail.com>
Tue, 14 May 2019 18:10:46 +0000 (12:10 -0600)
doc/news/changes/major/20190510Clevenger
examples/step-63/doc/intro.dox
examples/step-63/doc/results.dox

index 8152516bb99b1cf95cf71128b833b49dfde0f33c..d2ac3273e5423eee6c368ceea26fb8f5be61c81d 100644 (file)
@@ -4,4 +4,4 @@ v-cycle. This tutorial also implements a GMG solver for a
 non-symmetric PDE, and demonstrates the effect of DoF/cell renumbering
 for multiplicative smoothers for advection-dominated problems.
 <br>
-(Conrad Clevenger, 2019/05/10)
+(Thomas C. Clevenger, Timo Heister, 2019/05/10)
index cd590e7b43b02fca267bc39875f6179820b37c23..8e3cd37a52e437836a6561956ccdb7da14ff5a3e 100644 (file)
@@ -18,12 +18,94 @@ smoothers in geometric multigrid.
 
 OUTLINE
 
+- based on step-16 (GMG), and step-9 (advection)
+
+differences to GMG in step-16:
+
+- non-symmetric problem (interface matrices)
+- renumbering of dofs on each level
+- different smoothers (include block)
+
+
+<h2>Equation</h2>
+
 * Statement of PDE and weak-form with physical description
 
-* SUPG (streamline diffusion): State modifications to weak-form. Show
-  image of solution without and with SUPG.
+* SUPG (streamline diffusion): State modifications to weak-form.
+
+
+<h2>Smoothers</h2>
+
+One of the goals of this tutorial is to expand from using a simple
+(point-wise) Gauss-Seidel (SOR) smoother that is used in step-16 (class
+PreconditionSOR) on each level of the multigrid hierarchy.  Here, we consider
+point-wise smoothers (Jacobi and SOR) and cell-based smoothers (Block Jacobi
+and Block SOR). The cell-based smoothers can best be explained within the framework
+of additive and multiplicative Schwarz methods.
 
-* Breifly talk about point- vs. block-smoothers, additive v.s
-  multiplicative (renumbering)
+In contrast to step-16, our test problem contains an advective
+term. Especially with small viscosity, information is transported along
+streamlines in the given advection direction. This means that smoothers are
+likely to be more effective, if they allow information to travel in downstream
+direction within a single smoother application. This requires reordering
+degrees of freedom or cells (for the cell-based smoothers) accordingly. The
+influence of the ordering will be visible in the results section.
 
+Let us now briefly define the smoothers used in this tutorial. A Schwarz
+preconditioner requires a decomposition
+@f{align*}{
+V = \sum_{j=1}^J V_j
+@f}
+of our finite element space $V$. Each subproblem $V_j$ also has a Ritz
+projection $P_j: V \rightarrow V_j$ based on the bilinear form
+$a(\cdot,\cdot)$. This projection induces a local operator $A_j$ for each
+subproblem $V_j$. If $\Pi_j:V\rightarrow V_j$ is the orthogonal projector onto
+$V_j$, one can show $A_jP_j=\Pi_j^TA$.
+
+With this we can define an <i>additive Schwarz preconditioner</i> for the
+operator $A$ as
+@f{align*}{
+ B^{-1} = \sum_{j=1}^J P_j A^{-1} = \sum_{j=1}^J A_j^{-1} \Pi_j^T.
+@f}
+In other words, we project our solution into each subproblem, apply the
+inverse of the subproblem $A_j$, and sum the contributions up over all $j$.
+
+Note that one can interpret the point-wise Jacobi method as an additive
+Schwarz method by defining a subproblem $V_j$ for each degree of
+freedom. Then, $A_j^{-1}$ becomes a multiplication with the inverse of the
+diagonal entry of $A$.
+
+For the "Block Jacobi" method used in this tutorial, we define a subproblem
+$V_j$ for each cell of the mesh on the current level. Note that we use a
+continuous finite element, so these blocks are overlapping, as degrees of
+freedom on an interface between two cells belong to both subproblems. The
+logic for the Schwarz operator operating on the subproblems (in deal.II they
+are called "blocks"), is done in the class RelaxationBlock. The "Block
+Jacobi" method is implemented in the class RelaxationBlockJacobi. Many
+aspects of the class (for example how the blocks are defined and how to invert
+the local subproblems $A_j$ can be configured in the smoother data (see
+RelaxationBlock::AdditionalData and DoFTools::make_cell_patches).
+
+So far, we discussed additive smoothers where the updates can be applied
+independently and there is no information flowing within a single smoother
+application. A <i>multiplicative Schwarz preconditioner</i> addresses this by
+@f{align*}{
+ B^{-1} = \left( I- \prod_{j=1}^J I-P_J \right) A^{-1}.
+@f}
+In contrast to above, the updates on the subproblems $V_j$ are applied
+sequentially. This means that the update obtained when inverting the
+subproblem $A_j$ is immediately used in $A_{j+1}$.
+
+This method is implemented in the class RelaxationBlockSOR and used when you
+select "Block SOR" in this tutorial. The class RelaxationBlockSOR is also
+derived from RelaxationBlock. As such, both additive and multiplicative
+Schwarz methods are implemented in a unified framework.
+
+Finally, let us note that the standard Gauss-Seidel (or SOR) method can be
+seen as a multiplicative Schwarz method with a subproblem for each DoF.
+
+<h2>Test problem</h2>
+
+ Show
+  image of solution without and with SUPG.
 
index 065f85f9772542b7012bc3be7d81832841139c76..1ad4a9948eb3a4ea94298e12bbda8c3a18c493c2 100644 (file)
@@ -1,6 +1,6 @@
 <h1>Results</h1>
 
-<h3> GMRES Iteration Counts </h3>
+<h3> GMRES Iteration Numbers </h3>
 
 The major advantage for GMG is that it is an $\mathcal{O}(n)$ method,
 that is, the complexity of the problem increases linearly with the
@@ -12,7 +12,7 @@ refine the mesh.
 Each of the following tables gives the GMRES iteration counts to
 reduce the initial residual by 1e8.
 
-<h5> DoF/Cell Renumbering: </h5>
+<h4> DoF/Cell Renumbering </h4>
 
 Starting with the additive smoothers, we see that renumbering the
 DoFs/cells has no effect on convergence speed. This is because these
@@ -30,7 +30,6 @@ different components will not affect the end result.
   <th colspan="1">$Q_1$</th>
   <th colspan="7">Smoother (smoothing steps)</th>
 </tr>
-
 <tr>
   <th></th>
   <th></th>
@@ -285,7 +284,7 @@ conditions in this case).
 </table>
 
 
-<h5> Point vs. Block Smoothers </h5>
+<h4> Point vs. Block Smoothers </h4>
 
 We will limit the results to runs using the downstream
 renumbering. Here is a cross comparison of all four smoothers for both
@@ -497,19 +496,24 @@ though currently for these examples it is quite slow.
 
 <h3> Possible Extensions </h3>
 
-<h5> Constant iterations for Q<sub>5</sub> </h5>
+<h4> Constant iterations for Q<sub>5</sub> </h4>
 
 Change the number of smoothing steps and the smoother relaxation
 parameter (set in <code>Smoother::AdditionalData()</code> inside
 <code>create_smoother()</code>, only necessary for point smoothers) so
 that we maintain a constant number of iterations for a $Q_5$ element.
 
-<h5> Effectiveness of renumbering for changing epsilon </h5>
+<h4> Effectiveness of renumbering for changing epsilon </h4>
 
 Increase/decrease the parameter "Epsilon" in the .prm files of the
 multiplicative methods and observe for which values renumbering no
 longer influences convergence speed.
 
+<h4> Mesh adaptivity </h4>
+
+The code is set up to work correctly with an adaptively refined mesh (the
+interface matrices are created and set). Devise a suitable refinement
+criterium or try KellyErrorEstimator).
 
 
 

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.