From 3927115461f5a0ed958e305f7acb8ef118ebcd10 Mon Sep 17 00:00:00 2001 From: Timo Heister Date: Mon, 13 May 2019 14:08:45 -0600 Subject: [PATCH] Intro and Result fixes --- doc/news/changes/major/20190510Clevenger | 2 +- examples/step-63/doc/intro.dox | 90 ++++++++++++++++++++++-- examples/step-63/doc/results.dox | 16 +++-- 3 files changed, 97 insertions(+), 11 deletions(-) diff --git a/doc/news/changes/major/20190510Clevenger b/doc/news/changes/major/20190510Clevenger index 8152516bb9..d2ac3273e5 100644 --- a/doc/news/changes/major/20190510Clevenger +++ b/doc/news/changes/major/20190510Clevenger @@ -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.
-(Conrad Clevenger, 2019/05/10) +(Thomas C. Clevenger, Timo Heister, 2019/05/10) diff --git a/examples/step-63/doc/intro.dox b/examples/step-63/doc/intro.dox index cd590e7b43..8e3cd37a52 100644 --- a/examples/step-63/doc/intro.dox +++ b/examples/step-63/doc/intro.dox @@ -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) + + +

Equation

+ * 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. + + +

Smoothers

+ +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 additive Schwarz preconditioner 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 multiplicative Schwarz preconditioner 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. + +

Test problem

+ + Show + image of solution without and with SUPG. diff --git a/examples/step-63/doc/results.dox b/examples/step-63/doc/results.dox index 065f85f977..1ad4a9948e 100644 --- a/examples/step-63/doc/results.dox +++ b/examples/step-63/doc/results.dox @@ -1,6 +1,6 @@

Results

-

GMRES Iteration Counts

+

GMRES Iteration Numbers

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. -
DoF/Cell Renumbering:
+

DoF/Cell Renumbering

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. $Q_1$ Smoother (smoothing steps) - @@ -285,7 +284,7 @@ conditions in this case). -
Point vs. Block Smoothers
+

Point vs. Block Smoothers

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.

Possible Extensions

-
Constant iterations for Q5
+

Constant iterations for Q5

Change the number of smoothing steps and the smoother relaxation parameter (set in Smoother::AdditionalData() inside create_smoother(), only necessary for point smoothers) so that we maintain a constant number of iterations for a $Q_5$ element. -
Effectiveness of renumbering for changing epsilon
+

Effectiveness of renumbering for changing epsilon

Increase/decrease the parameter "Epsilon" in the .prm files of the multiplicative methods and observe for which values renumbering no longer influences convergence speed. +

Mesh adaptivity

+ +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). -- 2.39.5