From 0101716f167c80ec848938461da3b91f02365dd8 Mon Sep 17 00:00:00 2001 From: wolf Date: Tue, 28 Mar 2006 03:48:05 +0000 Subject: [PATCH] Generate intro from doxygen instead of latex git-svn-id: https://svn.dealii.org/trunk@12698 0785d39b-7218-0410-832d-ea1e28bc413d --- .../step-20.data/{intro.tex => intro.dox} | 296 ++-- .../step-20.data/intro.html | 1469 ----------------- .../step-20.data/intro.pdf | Bin 122404 -> 0 bytes .../step-20.data/intro/img1.png | Bin 531 -> 0 bytes .../step-20.data/intro/img10.png | Bin 302 -> 0 bytes .../step-20.data/intro/img11.png | Bin 357 -> 0 bytes .../step-20.data/intro/img12.png | Bin 364 -> 0 bytes .../step-20.data/intro/img13.png | Bin 447 -> 0 bytes .../step-20.data/intro/img14.png | Bin 216 -> 0 bytes .../step-20.data/intro/img15.png | Bin 195 -> 0 bytes .../step-20.data/intro/img16.png | Bin 225 -> 0 bytes .../step-20.data/intro/img17.png | Bin 432 -> 0 bytes .../step-20.data/intro/img18.png | Bin 453 -> 0 bytes .../step-20.data/intro/img19.png | Bin 213 -> 0 bytes .../step-20.data/intro/img2.png | Bin 231 -> 0 bytes .../step-20.data/intro/img20.png | Bin 103 -> 0 bytes .../step-20.data/intro/img21.png | Bin 161 -> 0 bytes .../step-20.data/intro/img22.png | Bin 242 -> 0 bytes .../step-20.data/intro/img23.png | Bin 892 -> 0 bytes .../step-20.data/intro/img24.png | Bin 631 -> 0 bytes .../step-20.data/intro/img25.png | Bin 544 -> 0 bytes .../step-20.data/intro/img26.png | Bin 485 -> 0 bytes .../step-20.data/intro/img27.png | Bin 284 -> 0 bytes .../step-20.data/intro/img28.png | Bin 481 -> 0 bytes .../step-20.data/intro/img29.png | Bin 730 -> 0 bytes .../step-20.data/intro/img3.png | Bin 225 -> 0 bytes .../step-20.data/intro/img30.png | Bin 172 -> 0 bytes .../step-20.data/intro/img31.png | Bin 286 -> 0 bytes .../step-20.data/intro/img32.png | Bin 629 -> 0 bytes .../step-20.data/intro/img33.png | Bin 404 -> 0 bytes .../step-20.data/intro/img34.png | Bin 237 -> 0 bytes .../step-20.data/intro/img35.png | Bin 239 -> 0 bytes .../step-20.data/intro/img36.png | Bin 282 -> 0 bytes .../step-20.data/intro/img37.png | Bin 265 -> 0 bytes .../step-20.data/intro/img38.png | Bin 419 -> 0 bytes .../step-20.data/intro/img39.png | Bin 161 -> 0 bytes .../step-20.data/intro/img4.png | Bin 135 -> 0 bytes .../step-20.data/intro/img40.png | Bin 445 -> 0 bytes .../step-20.data/intro/img41.png | Bin 204 -> 0 bytes .../step-20.data/intro/img42.png | Bin 438 -> 0 bytes .../step-20.data/intro/img43.png | Bin 674 -> 0 bytes .../step-20.data/intro/img44.png | Bin 505 -> 0 bytes .../step-20.data/intro/img45.png | Bin 507 -> 0 bytes .../step-20.data/intro/img46.png | Bin 228 -> 0 bytes .../step-20.data/intro/img47.png | Bin 243 -> 0 bytes .../step-20.data/intro/img48.png | Bin 815 -> 0 bytes .../step-20.data/intro/img49.png | Bin 284 -> 0 bytes .../step-20.data/intro/img5.png | Bin 216 -> 0 bytes .../step-20.data/intro/img50.png | Bin 261 -> 0 bytes .../step-20.data/intro/img51.png | Bin 354 -> 0 bytes .../step-20.data/intro/img52.png | Bin 188 -> 0 bytes .../step-20.data/intro/img53.png | Bin 160 -> 0 bytes .../step-20.data/intro/img54.png | Bin 332 -> 0 bytes .../step-20.data/intro/img55.png | Bin 581 -> 0 bytes .../step-20.data/intro/img56.png | Bin 585 -> 0 bytes .../step-20.data/intro/img57.png | Bin 1456 -> 0 bytes .../step-20.data/intro/img58.png | Bin 1441 -> 0 bytes .../step-20.data/intro/img59.png | Bin 257 -> 0 bytes .../step-20.data/intro/img6.png | Bin 234 -> 0 bytes .../step-20.data/intro/img60.png | Bin 462 -> 0 bytes .../step-20.data/intro/img61.png | Bin 870 -> 0 bytes .../step-20.data/intro/img62.png | Bin 480 -> 0 bytes .../step-20.data/intro/img63.png | Bin 210 -> 0 bytes .../step-20.data/intro/img64.png | Bin 365 -> 0 bytes .../step-20.data/intro/img65.png | Bin 1357 -> 0 bytes .../step-20.data/intro/img66.png | Bin 315 -> 0 bytes .../step-20.data/intro/img67.png | Bin 243 -> 0 bytes .../step-20.data/intro/img68.png | Bin 233 -> 0 bytes .../step-20.data/intro/img69.png | Bin 264 -> 0 bytes .../step-20.data/intro/img7.png | Bin 279 -> 0 bytes .../step-20.data/intro/img70.png | Bin 337 -> 0 bytes .../step-20.data/intro/img71.png | Bin 511 -> 0 bytes .../step-20.data/intro/img72.png | Bin 551 -> 0 bytes .../step-20.data/intro/img73.png | Bin 321 -> 0 bytes .../step-20.data/intro/img74.png | Bin 448 -> 0 bytes .../step-20.data/intro/img75.png | Bin 514 -> 0 bytes .../step-20.data/intro/img76.png | Bin 197 -> 0 bytes .../step-20.data/intro/img77.png | Bin 213 -> 0 bytes .../step-20.data/intro/img78.png | Bin 244 -> 0 bytes .../step-20.data/intro/img79.png | Bin 371 -> 0 bytes .../step-20.data/intro/img8.png | Bin 106 -> 0 bytes .../step-20.data/intro/img80.png | Bin 391 -> 0 bytes .../step-20.data/intro/img81.png | Bin 420 -> 0 bytes .../step-20.data/intro/img82.png | Bin 354 -> 0 bytes .../step-20.data/intro/img83.png | Bin 300 -> 0 bytes .../step-20.data/intro/img84.png | Bin 271 -> 0 bytes .../step-20.data/intro/img85.png | Bin 285 -> 0 bytes .../step-20.data/intro/img86.png | Bin 214 -> 0 bytes .../step-20.data/intro/img87.png | Bin 221 -> 0 bytes .../step-20.data/intro/img88.png | Bin 498 -> 0 bytes .../step-20.data/intro/img89.png | Bin 455 -> 0 bytes .../step-20.data/intro/img9.png | Bin 364 -> 0 bytes .../step-20.data/intro/img90.png | Bin 238 -> 0 bytes .../step-20.data/intro/img91.png | Bin 467 -> 0 bytes .../step-20.data/intro/img92.png | Bin 456 -> 0 bytes .../step-20.data/intro/img93.png | Bin 220 -> 0 bytes .../step-20.data/intro/img94.png | Bin 953 -> 0 bytes .../step-20.data/intro/img95.png | Bin 413 -> 0 bytes .../step-20.data/intro/img96.png | Bin 1012 -> 0 bytes .../step-20.data/intro/img97.png | Bin 284 -> 0 bytes .../step-20.data/intro/img98.png | Bin 387 -> 0 bytes .../step-20.data/intro/img99.png | Bin 476 -> 0 bytes 102 files changed, 146 insertions(+), 1619 deletions(-) rename deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/{intro.tex => intro.dox} (80%) delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro.html delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro.pdf delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img1.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img10.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img11.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img12.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img13.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img14.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img15.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img16.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img17.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img18.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img19.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img2.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img20.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img21.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img22.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img23.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img24.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img25.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img26.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img27.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img28.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img29.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img3.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img30.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img31.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img32.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img33.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img34.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img35.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img36.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img37.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img38.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img39.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img4.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img40.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img41.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img42.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img43.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img44.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img45.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img46.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img47.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img48.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img49.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img5.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img50.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img51.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img52.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img53.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img54.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img55.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img56.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img57.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img58.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img59.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img6.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img60.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img61.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img62.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img63.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img64.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img65.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img66.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img67.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img68.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img69.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img7.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img70.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img71.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img72.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img73.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img74.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img75.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img76.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img77.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img78.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img79.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img8.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img80.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img81.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img82.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img83.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img84.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img85.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img86.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img87.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img88.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img89.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img9.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img90.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img91.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img92.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img93.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img94.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img95.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img96.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img97.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img98.png delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img99.png diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro.tex b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro.dox similarity index 80% rename from deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro.tex rename to deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro.dox index fb1734aaa3..813fd0076c 100644 --- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro.tex +++ b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro.dox @@ -1,20 +1,18 @@ -\documentclass{article} -\usepackage{amsmath} -\renewcommand{\vec}[1]{\mathbf{#1}} -\begin{document} + +

Introduction

This program is devoted to two aspects: the use of mixed finite elements -- in particular Raviart-Thomas elements -- and using block matrices to define solvers, preconditioners, and nested versions of those that use the substructure of the system matrix. The equation we are going to solve is again the Laplace equation, though with a matrix-valued coefficient: -\begin{align*} - -\nabla \cdot K(\vec x) \nabla p &= f \qquad && \text{in $\Omega$}, \\ - p &= g && \text{on $\partial\Omega$}. -\end{align*} -$K(\vec x)$ is assumed to be uniformly positive definite, i.e. there is -$\alpha>0$ such that the eigenvalues $\lambda_i(\vec x)$ of $K(x)$ satisfy -$\lambda_i(\vec x)\ge \alpha$. The use of the symbol $p$ instead of the usual +@f{eqnarray*} + -\nabla \cdot K({\mathbf x}) \nabla p &=& f \qquad {\textrm{in}\ } \Omega, \\ + p &=& g \qquad {\textrm{on}\ }\partial\Omega. +@f} +$K({\mathbf x})$ is assumed to be uniformly positive definite, i.e. there is +$\alpha>0$ such that the eigenvalues $\lambda_i({\mathbf x})$ of $K(x)$ satisfy +$\lambda_i({\mathbf x})\ge \alpha$. The use of the symbol $p$ instead of the usual $u$ for the solution variable will become clear in the next section. After discussing the equation and the formulation we are going to use to solve @@ -22,7 +20,7 @@ it, this introduction will cover the use of block matrices and vectors, the definition of solvers and preconditioners, and finally the actual test case we are going to solve. -\subsection*{Formulation, weak form, and discrete problem} +

Formulation, weak form, and discrete problem

In the form above, the Laplace equation is considered a good model equation for fluid flow in porous media. In particular, if flow is so slow that all @@ -43,8 +41,9 @@ cell, if the sources are nonzero). However, as it turns out, the usual discretizations of the Laplace equation do not satisfy this property. On the other hand, one can achieve this by choosing a different formulation. -To this end, one first introduces a second variable, called the flux, $\vec -u=-K\nabla p$. By its definition, the flux is a vector in the negative +To this end, one first introduces a second variable, called the flux, +${\mathbf u}=-K\nabla p$. By its definition, the flux is a vector in the +negative direction of the pressure gradient, multiplied by the permeability tensor. If the permeability tensor is proportional to the unit matrix, this equation is easy to understand and intuitive: the higher the permeability, the higher the @@ -53,41 +52,41 @@ areas of high pressure to areas of low pressure. With this second variable, one then finds an alternative version of the Laplace equation, called the mixed formulation: -\begin{align*} - K^{-1} \vec u - \nabla p &= 0 \qquad && \text{in $\Omega$}, \\ - -\text{div}\ \vec u &= 0 \qquad && \text{in $\Omega$}, \\ - p &= g \qquad && \text{on $\partial\Omega$}. -\end{align*} +@f{eqnarray*} + K^{-1} {\mathbf u} - \nabla p &=& 0 \qquad {\textrm{in}\ } \Omega, \\ + -{\textrm{div}}\ {\mathbf u} &=& 0 \qquad {\textrm{in}\ }\Omega, \\ + p &=& g \qquad {\textrm{on}\ } \partial\Omega. +@f} The weak formulation of this problem is found by multiplying the two equations with test functions and integrating some terms by parts: -\begin{align*} - A(\{\vec u,p\},\{\vec v,q\}) = F(\{\vec v,q\}), -\end{align*} +@f{eqnarray*} + A(\{{\mathbf u},p\},\{{\mathbf v},q\}) = F(\{{\mathbf v},q\}), +@f} where -\begin{align*} - A(\{\vec u,p\},\{\vec v,q\}) - &= - (\vec v, K^{-1}\vec u)_\Omega - (\text{div}\ \vec v, p)_\Omega - - (q,\text{div}\ \vec u)_\Omega +@f{eqnarray*} + A(\{{\mathbf u},p\},\{{\mathbf v},q\}) + &=& + ({\mathbf v}, K^{-1}{\mathbf u})_\Omega - ({\textrm{div}}\ {\mathbf v}, p)_\Omega + - (q,{\textrm{div}}\ {\mathbf u})_\Omega \\ - F(\{\vec v,q\}) &= -(g,\vec v\cdot \vec n)_{\partial\Omega} - (f,q)_\Omega. -\end{align*} -Here, $\vec n$ is the outward normal vector at the boundary. Note how in this + F(\{{\mathbf v},q\}) &=& -(g,{\mathbf v}\cdot {\mathbf n})_{\partial\Omega} - (f,q)_\Omega. +@f} +Here, ${\mathbf n}$ is the outward normal vector at the boundary. Note how in this formulation, Dirichlet boundary values of the original problem are incorporated in the weak form. To be well-posed, we have to look for solutions and test functions in the -space $H(\text{div})=\{\vec w\in L^2(\Omega)^d:\ \text{div}\ \vec w\in L^2\}$ -for $\vec u,\vec v$, and $L^2$ for $p,q$. It is a well-known fact stated in +space $H({\textrm{div}})=\{{\mathbf w}\in L^2(\Omega)^d:\ {\textrm{div}}\ {\mathbf w}\in L^2\}$ +for $\mathbf u$,$\mathbf v$, and $L^2$ for $p,q$. It is a well-known fact stated in almost every book on finite element theory that if one chooses discrete finite -element spaces for the approximation of $\vec u,p$ inappropriately, then the +element spaces for the approximation of ${\mathbf u},p$ inappropriately, then the resulting discrete saddle-point problem is instable and the discrete solution will not converge to the exact solution. -To overcome this, a number of different finite element pairs for $\vec u,p$ +To overcome this, a number of different finite element pairs for ${\mathbf u},p$ have been developed that lead to a stable discrete problem. One such pair is -to use the Raviart-Thomas spaces $RT(k)$ for the velocity $\vec u$ and +to use the Raviart-Thomas spaces $RT(k)$ for the velocity ${\mathbf u}$ and discontinuous elements of class $DQ(k)$ for the pressure $p$. For details about these spaces, we refer in particular to the book on mixed finite element methods by Brezzi and Fortin, but many other books on the theory of finite @@ -95,17 +94,16 @@ elements, for example the classic book by Brenner and Scott, also state the relevant results. -\subsection*{Assembling the linear system} +

Assembling the linear system

The deal.II library (of course) implements Raviart-Thomas elements $RT(k)$ of arbitrary order $k$, as well as discontinuous elements $DG(k)$. If we forget about their particular properties for a second, we then have to solve a discrete problem -\begin{align*} +@f{eqnarray*} A(x_h,w_h) = F(w_h), -\end{align*} -with the bilinear form and right hand side as stated above, and $x_h=\{\vec -u_h,p_h\}$, $w_h=\{\vec v_h,q_h\}$. Both $x_h$ and $w_h$ are from the space +@f} +with the bilinear form and right hand side as stated above, and $x_h=\{{\mathbf u}_h,p_h\}$, $w_h=\{{\mathbf v}_h,q_h\}$. Both $x_h$ and $w_h$ are from the space $X_h=RT(k)\times DQ(k)$, where $RT(k)$ is itself a space of $dim$-dimensional functions to accommodate for the fact that the flow velocity is vector-valued. The necessary question then is: how do we do this in a program? @@ -119,40 +117,40 @@ product of the $dim$ times the usual $Q(1)$ finite element space, and by this make sure that all our shape functions have only a single non-zero vector component. Instead of dealing with vector-valued shape functions, all we did in step-8 was therefore to look at the (scalar) only non-zero component and -use the \texttt{fe.system\_to\_component\_index(i).first} call to figure out +use the fe.system_to_component_index(i).first call to figure out which component this actually is. This doesn't work with Raviart-Thomas elements: following from their construction to satisfy certain regularity properties of the space -$H(\text{div})$, the shape functions of $RT(k)$ are usually nonzero in all +$H({\textrm{div}})$, the shape functions of $RT(k)$ are usually nonzero in all their vector components at once. For this reason, were -\texttt{fe.system\_to\_component\_index(i).first} applied to determine the only +fe.system_to_component_index(i).first applied to determine the only nonzero component of shape function $i$, an exception would be generated. What -we really need to do is to get at \textit{all} vector components of a shape +we really need to do is to get at all vector components of a shape function. In deal.II diction, we call such finite elements -\textit{non-primitive}, whereas finite elements that are either scalar or for +non-primitive, whereas finite elements that are either scalar or for which every vector-valued shape function is nonzero only in a single vector -component are called \textit{primitive}. +component are called primitive. So what do we have to do for non-primitive elements? To figure this out, let us go back in the tutorial programs, almost to the very beginnings. There, we -learned that we use the \texttt{FEValues} class to determine the values and +learned that we use the FEValues class to determine the values and gradients of shape functions at quadrature points. For example, we would call -\texttt{fe\_values.shape\_value(i,q\_point)} to obtain the value of the -\texttt{i}th shape function on the quadrature point with number -\texttt{q\_point}. Later, in step-8 and other tutorial programs, we learned +fe_values.shape_value(i,q_point) to obtain the value of the +ith shape function on the quadrature point with number +q_point. Later, in step-8 and other tutorial programs, we learned that this function call also works for vector-valued shape functions (of primitive finite elements), and that it returned the value of the only -non-zero component of shape function \texttt{i} at quadrature point -\texttt{q\_point}. +non-zero component of shape function i at quadrature point +q_point. For non-primitive shape functions, this is clearly not going to work: there is -no single non-zero vector component of shape function \texttt{i}, and the call -to \texttt{fe\_values.shape\_value(i,q\_point)} would consequently not make +no single non-zero vector component of shape function i, and the call +to fe_values.shape_value(i,q_point) would consequently not make much sense. However, deal.II offers a second function call, -\texttt{fe\_values.shape\_value\_component(i,q\_point,comp)} that returns the -value of the \texttt{comp}th vector component of shape function \texttt{i} at -quadrature point \texttt{q\_point}, where \texttt{comp} is an index between +fe_values.shape_value_component(i,q_point,comp) that returns the +value of the compth vector component of shape function i at +quadrature point q_point, where comp is an index between zero and the number of vector components of the present finite element; for example, the element we will use to describe velocities and pressures is going to have $dim+1$ components. It is worth noting that this function call can @@ -163,16 +161,16 @@ return a non-zero value for more than just one component. We could now attempt to rewrite the bilinear form above in terms of vector components. For example, in 2d, the first term could be rewritten like this (note that $u_0=x_0, u_1=x_1, p=x_2$): -\begin{align*} - (\vec u_h^i, K^{-1}\vec u_h^j) +@f{eqnarray*} + ({\mathbf u}_h^i, K^{-1}{\mathbf u}_h^j) = &\left((x_h^i)_0, K^{-1}_{00} (x_h^j)_0\right) + \left((x_h^i)_0, K^{-1}_{01} (x_h^j)_1\right) + \\ &\left((x_h^i)_1, K^{-1}_{10} (x_h^j)_0\right) + \left((x_h^i)_1, K^{-1}_{11} (x_h^j)_1\right). -\end{align*} +@f} If we implemented this, we would get code like this: -\begin{verbatim} +@code for (unsigned int q=0; q Tensor<1,dim> extract_u (const FEValuesBase &fe_values, @@ -214,19 +212,19 @@ extract_u (const FEValuesBase &fe_values, return tmp; } -\end{verbatim} +@endcode -What this function does is, given an \texttt{fe\_values} object, to extract -the values of the first $dim$ components of shape function \texttt{i} at -quadrature points \texttt{q}, that is the velocity components of that shape +What this function does is, given an fe_values object, to extract +the values of the first $dim$ components of shape function i at +quadrature points q, that is the velocity components of that shape function. Put differently, if we write shape functions $x_h^i$ as the tuple -$\{\vec u_h^i,p_h^i\}$, then the function returns the velocity part of this -tuple. Note that the velocity is of course a $dim$-dimensional tensor, and +$\{{\mathbf u}_h^i,p_h^i\}$, then the function returns the velocity part of this +tuple. Note that the velocity is of course a dim-dimensional tensor, and that the function returns a corresponding object. Likewise, we have a function that extracts the pressure component of a shape function: -\begin{verbatim} +@code template double extract_p (const FEValuesBase &fe_values, const unsigned int i, @@ -234,14 +232,14 @@ double extract_p (const FEValuesBase &fe_values, { return fe_values.shape_value_component (i,q,dim); } -\end{verbatim} +@endcode Finally, the bilinear form contains terms involving the gradients of the velocity component of shape functions. To be more precise, we are not really interested in the full gradient, but only the divergence of the velocity -components, i.e. $\text{div}\ \vec u_h^i = \sum_{d=0}^{dim-1} -\frac{\partial}{\partial x_d} (\vec u_h^i)_d$. Here's a function that returns +components, i.e. ${\textrm{div}}\ {\mathbf u}_h^i = \sum_{d=0}^{dim-1} +\frac{\partial}{\partial x_d} ({\mathbf u}_h^i)_d$. Here's a function that returns this quantity: -\begin{verbatim} +@code template double extract_div_u (const FEValuesBase &fe_values, @@ -254,12 +252,12 @@ extract_div_u (const FEValuesBase &fe_values, return divergence; } -\end{verbatim} +@endcode With these three functions, all of which are completely dimension independent and will therefore also work in 3d, assembling the local matrix and right hand side contributions becomes a charm: -\begin{verbatim} +@code for (unsigned int q=0; qFEFaceValues class +instead of FEValues. To compute the boundary term we then simply have to loop over all boundary faces and integrate there. If you look closely at -the definitions of the \texttt{extract\_*} functions above, you will realize +the definitions of the extract_* functions above, you will realize that it isn't even necessary to write new functions that extract the velocity -and pressure components of shape functions from \texttt{FEFaceValues} objects: -both \texttt{FEValues} and \texttt{FEFaceValues} are derived from a common -base class, \texttt{FEValuesBase}, and the extraction functions above can +and pressure components of shape functions from FEFaceValues objects: +both FEValues and FEFaceValues are derived from a common +base class, FEValuesBase, and the extraction functions above can therefore deal with both in exactly the same way. Assembling the missing boundary term then takes on the following form: -\begin{verbatim} +@code for (unsigned int face_no=0; face_no::faces_per_cell; ++face_no) @@ -325,13 +323,13 @@ for (unsigned int face_no=0; fe_face_values.JxW(q)); } } -\end{verbatim} +@endcode You will find the exact same code as above in the sources for the present program. We will therefore not comment much on it below. -\subsection*{Linear solvers and preconditioners} +

Linear solvers and preconditioners

After assembling the linear system we are faced with the task of solving it. The problem here is: the matrix has a zero block at the bottom right @@ -345,23 +343,23 @@ on the diagonal and none of the usual preconditioners (Jacobi, SSOR) will work as they require division by diagonal elements. -\subsubsection*{Solving using the Schur complement} +

Solving using the Schur complement

In view of this, let us take another look at the matrix. If we sort our degrees of freedom so that all velocity come before all pressure variables, then we can subdivide the linear system $AX=B$ into the following blocks: -\begin{align*} - \begin{pmatrix} +@f{eqnarray*} + \left(\begin{array}{cc} M & B^T \\ B & 0 - \end{pmatrix} - \begin{pmatrix} + \end{array}\right) + \left(\begin{array}{cc} U \\ P - \end{pmatrix} + \end{array}\right) = - \begin{pmatrix} + \left(\begin{array}{cc} F \\ G - \end{pmatrix}, -\end{align*} + \end{array}\right), +@f} where $U,P$ are the values of velocity and pressure degrees of freedom, respectively, $M$ is the mass matrix on the velocity space, $B$ corresponds to the negative divergence operator, and $B^T$ is its transpose and corresponds @@ -370,11 +368,11 @@ to the negative gradient. By block elimination, we can then re-order this system in the following way (multiply the first row of the system by $BM^{-1}$ and then subtract the second row from it): -\begin{align*} - BM^{-1}B^T P &= BM^{-1} F - G, \\ - MU &= F - B^TP. -\end{align*} -Here, the matrix $S=BM^{-1}B^T$ (called the \textit{Schur complement} of $A$) +@f{eqnarray*} + BM^{-1}B^T P &=& BM^{-1} F - G, \\ + MU &=& F - B^TP. +@f} +Here, the matrix $S=BM^{-1}B^T$ (called the Schur complement of $A$) is obviously symmetric and, owing to the positive definiteness of $M$ and the fact that $B^T$ has full column rank, $S$ is also positive definite. @@ -384,24 +382,24 @@ method to it. However, computing $S$ is expensive, and $S$ is most likely also a full matrix. On the other hand, the CG algorithm doesn't require us to actually have a representation of $S$, it is sufficient to form matrix-vector products with it. We can do so in steps: to compute $Sv$, we -\begin{itemize} -\item form $w = B^T v$; -\item solve $My = w$ for $y=M^{-1}w$, using the CG method applied to the +
    +
  1. form $w = B^T v$; +
  2. solve $My = w$ for $y=M^{-1}w$, using the CG method applied to the positive definite and symmetric mass matrix $M$; -\item form $z=By$ to obtain $Sv=z$. -\end{itemize} +
  3. form $z=By$ to obtain $Sv=z$. +
We will implement a class that does that in the program. Before showing its code, let us first note that we need to multiply with $M^{-1}$ in several places here: in multiplying with the Schur complement $S$, forming the right hand side of the first equation, and solving in the second equation. From a coding viewpoint, it is therefore appropriate to relegate such a recurring -operation to a class of its own. We call it \texttt{InverseMatrix}. As far as +operation to a class of its own. We call it InverseMatrix. As far as linear solvers are concerned, this class will have all operations that solvers need, which in fact includes only the ability to perform matrix-vector products; we form them by using a CG solve (this of course requires that the matrix passed to this class satisfies the requirements of the CG solvers). Here are the relevant parts of the code that implements this: -\begin{verbatim} +@code class InverseMatrix { public: @@ -424,7 +422,7 @@ void InverseMatrix::vmult (Vector &dst, cg.solve (*matrix, dst, src, PreconditionIdentity()); } -\end{verbatim} +@endcode Once created, objects of this class can act as matrices: they perform matrix-vector multiplications. How this is actually done is irrelevant to the outside world. @@ -433,7 +431,7 @@ Using this class, we can then write a class that implements the Schur complement in much the same way: to act as a matrix, it only needs to offer a function to perform a matrix-vector multiplication, using the algorithm above. Here are again the relevant parts of the code: -\begin{verbatim} +@code class SchurComplement { public: @@ -458,18 +456,18 @@ void SchurComplement::vmult (Vector &dst, m_inverse->vmult (tmp2, tmp1); system_matrix->block(1,0).vmult (dst, tmp2); } -\end{verbatim} +@endcode In this code, the constructor takes a reference to a block sparse matrix for the entire system, and a reference to an object representing the inverse of -the mass matrix. It stores these using \texttt{SmartPointer} objects (see -step-7), and additionally allocates two temporary vectors \texttt{tmp1} and -\texttt{tmp2} for the vectors labeled $w,y$ in the list above. +the mass matrix. It stores these using SmartPointer objects (see +step-7), and additionally allocates two temporary vectors tmp1 and +tmp2 for the vectors labeled $w,y$ in the list above. In the matrix-vector multiplication function, the product $Sv$ is performed in exactly the order outlined above. Note how we access the blocks $B^T$ and $B$ -by calling \texttt{system\_matrix->block(0,1)} and -\texttt{system\_matrix->block(1,0)} respectively, thereby picking out +by calling system_matrix->block(0,1) and +system_matrix->block(1,0) respectively, thereby picking out individual blocks of the block system. Multiplication by $M^{-1}$ happens using the object introduced above. @@ -477,7 +475,7 @@ With all this, we can go ahead and write down the solver we are going to use. Essentially, all we need to do is form the right hand sides of the two equations defining $P$ and $U$, and then solve them with the Schur complement matrix and the mass matrix, respectively: -\begin{verbatim} +@code template void MixedLaplaceProblem::solve () { @@ -508,7 +506,7 @@ void MixedLaplaceProblem::solve () m_inverse.vmult (solution.block(0), tmp); } } -\end{verbatim} +@endcode This code looks more impressive than it actually is. At the beginning, we declare an object representing $M^{-1}$ and a temporary vector (of the size of @@ -524,7 +522,7 @@ complement. -\subsubsection*{A preconditioner for the Schur complement} +

A preconditioner for the Schur complement

One may ask whether it would help if we had a preconditioner for the Schur complement $S=BM^{-1}B^T$. The general answer, as usual, is: of course. The @@ -544,9 +542,9 @@ We will try something along the second approach, as much to improve the performance of the program as to demonstrate some techniques. To this end, let us recall that the ideal preconditioner is, of course, $S^{-1}$, but that is unattainable. However, how about -\begin{align*} - \tilde S^{-1} = [B^T (\text{diag}M)^{-1}B]^{-1} -\end{align*} +@f{eqnarray*} + \tilde S^{-1} = [B^T ({\textrm{diag}\ }M)^{-1}B]^{-1} +@f} as a preconditioner? That would mean that every time we have to do one preconditioning step, we actually have to solve with $\tilde S$. At first, this looks almost as expensive as solving with $S$ right away. However, note @@ -554,9 +552,9 @@ that in the inner iteration, we do not have to calculate $M^{-1}$, but only the inverse of its diagonal, which is cheap. To implement something like this, let us first generalize the -\texttt{InverseMatrix} class so that it can work not only with -\texttt{SparseMatrix} objects, but with any matrix type. This looks like so: -\begin{verbatim} +InverseMatrix class so that it can work not only with +SparseMatrix objects, but with any matrix type. This looks like so: +@code template class InverseMatrix { @@ -584,14 +582,14 @@ void InverseMatrix::vmult (Vector &dst, cg.solve (*matrix, dst, src, PreconditionIdentity()); } -\end{verbatim} +@endcode Essentially, the only change we have made is the introduction of a template -argument that generalizes the use of \texttt{SparseMatrix}. +argument that generalizes the use of SparseMatrix. The next step is to define a class that represents the approximate Schur complement. This should look very much like the Schur complement class itself, except that it doesn't need the object representing $M^{-1}$ any more: -\begin{verbatim} +@code class ApproximateSchurComplement : public Subscriptor { public: @@ -614,25 +612,25 @@ void ApproximateSchurComplement::vmult (Vector &dst, system_matrix->block(0,0).precondition_Jacobi (tmp2, tmp1); system_matrix->block(1,0).vmult (dst, tmp2); } -\end{verbatim} -Note how the \texttt{vmult} function differs in simply doing one Jacobi sweep +@endcode +Note how the vmult function differs in simply doing one Jacobi sweep (i.e. multiplying with the inverses of the diagonal) instead of multiplying with the full $M^{-1}$. With all this, we already have the preconditioner: it should be the inverse of the approximate Schur complement, i.e. we need code like this: -\begin{verbatim} +@code ApproximateSchurComplement approximate_schur_complement (system_matrix); InverseMatrix preconditioner (approximate_schur_complement) -\end{verbatim} +@endcode That's all! -Taken together, the first block of our \texttt{solve()} function will then +Taken together, the first block of our solve() function will then look like this: -\begin{verbatim} +@code Vector schur_rhs (solution.block(1).size()); m_inverse.vmult (tmp, system_rhs.block(0)); @@ -654,7 +652,7 @@ look like this: cg.solve (schur_complement, solution.block(1), schur_rhs, preconditioner); -\end{verbatim} +@endcode Note how we pass the so-defined preconditioner to the solver working on the Schur complement matrix. @@ -673,7 +671,7 @@ six times refined mesh and using elements of order 2 yields an improvement of earth shattering, but significant. -\subsubsection*{A remark on similar functionality in deal.II} +

A remark on similar functionality in deal.II

As a final remark about solvers and preconditioners, let us note that a significant amount of functionality introduced above is actually also present @@ -683,30 +681,30 @@ block matrices and to develop solvers and preconditioners, rather than using black box components from the library. For those interested in looking up the corresponding library classes: the -\texttt{InverseMatrix} is roughly equivalent to the -\texttt{PreconditionLACSolver} class in the library. Likewise, the Schur -complement class corresponds to the \texttt{SchurMatrix} class. +InverseMatrix is roughly equivalent to the +PreconditionLACSolver class in the library. Likewise, the Schur +complement class corresponds to the SchurMatrix class. -\subsection*{Definition of the test case} +

Definition of the test case

In this tutorial program, we will solve the Laplace equation in mixed formulation as stated above. Since we want to monitor convergence of the solution inside the program, we choose right hand side, boundary conditions, and the coefficient so that we recover a solution function known to us. In particular, we choose the pressure solution -\begin{align*} +@f{eqnarray*} p = -\left(\frac \alpha 2 xy^2 + \beta x - \frac \alpha 6 x^2\right), -\end{align*} +@f} and for the coefficient we choose the unit matrix $K_{ij}=\delta_{ij}$ for simplicity. Consequently, the exact velocity satisfies -\begin{align*} - \vec u = - \begin{pmatrix} +@f{eqnarray*} + {\mathbf u} = + \left(\begin{array}{cc} \frac \alpha 2 y^2 + \beta - \frac \alpha 2 x^2 \\ \alpha xy - \end{pmatrix}. -\end{align*} + \end{array}\right). +@f} This solution was chosen since it is exactly divergence free, making it a realistic test case for incompressible fluid flow. By consequence, the right hand side equals $f=0$, and as boundary values we have to choose @@ -715,5 +713,3 @@ $g=p|_{\partial\Omega}$. For the computations in this program, we choose $\alpha=0.3,\beta=1$. You can find the resulting solution in the ``Results'' section below, after the commented program. - -\end{document} diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro.html b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro.html deleted file mode 100644 index d342364561..0000000000 --- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro.html +++ /dev/null @@ -1,1469 +0,0 @@ - -

Introduction

- - -

-[A higher quality version of the introduction is available as a PDF -file by clicking here] -

- - - -

-This program is devoted to two aspects: the use of mixed finite elements - in -particular Raviart-Thomas elements - and using block matrices to define -solvers, preconditioners, and nested versions of those that use the -substructure of the system matrix. The equation we are going to solve is again -the Laplace equation, though with a matrix-valued coefficient: -

-
- - - - - - - - - - - - -
$\displaystyle -\nabla \cdot K(\vec x) \nabla p$$\displaystyle = f \qquad$ in $ \Omega$ -$\displaystyle ,$ -   
$\displaystyle p$$\displaystyle = g$ on -$ \partial\Omega$ -$\displaystyle .$ -   
-

-$ K(\vec x)$ - is assumed to be uniformly positive definite, i.e. there is -$ \alpha>0$ - such that the eigenvalues -$ \lambda_i(\vec x)$ - of $ K(x)$ - satisfy - -$ \lambda_i(\vec x)\ge \alpha$ -. The use of the symbol $ p$ - instead of the usual -$ u$ - for the solution variable will become clear in the next section. - -

-After discussing the equation and the formulation we are going to use to solve -it, this introduction will cover the use of block matrices and vectors, the -definition of solvers and preconditioners, and finally the actual test case we -are going to solve. - -

- -

-Formulation, weak form, and discrete problem -

- -

-In the form above, the Laplace equation is considered a good model equation -for fluid flow in porous media. In particular, if flow is so slow that all -dynamic effects such as the acceleration terms in the Navier-Stokes equation -become irrelevant, and if the flow pattern is stationary, then the Laplace -equation models the pressure that drives the flow reasonable well. Because the -solution variable is a pressure, we here use the name $ p$ - instead of the -name $ u$ - more commonly used for the solution of partial differential equations. - -

-Typical applications of this view of the Laplace equation are then modeling -groundwater flow, or the flow of hydrocarbons in oil reservoirs. In these -applications, $ K$ - is then the permeability tensor, i.e. a measure for how much -resistance the soil or rock matrix asserts on the fluid flow. In the -applications just named, a desirable feature is that the numerical scheme is -locally conservative, i.e. that whatever flows into a cell also flows out of -it (or the difference is equal to the integral over the source terms over each -cell, if the sources are nonzero). However, as it turns out, the usual -discretizations of the Laplace equation do not satisfy this property. On the -other hand, one can achieve this by choosing a different formulation. - -

-To this end, one first introduces a second variable, called the flux, -$ \vec u=-K\nabla p$ -. By its definition, the flux is a vector in the negative -direction of the pressure gradient, multiplied by the permeability tensor. If -the permeability tensor is proportional to the unit matrix, this equation is -easy to understand and intuitive: the higher the permeability, the higher the -flux; and the flux is proportional to the gradient of the pressure, going from -areas of high pressure to areas of low pressure. - -

-With this second variable, one then finds an alternative version of the -Laplace equation, called the mixed formulation: -

-
- - - - - - - - - - - - - - - - - - -
$\displaystyle K^{-1} \vec u - \nabla p$$\displaystyle = 0 \qquad$ in $ \Omega$ -$\displaystyle ,$ -   
$\displaystyle -$div$\displaystyle \ \vec u$$\displaystyle = 0 \qquad$ in $ \Omega$ -$\displaystyle ,$ -   
$\displaystyle p$$\displaystyle = g \qquad$ on -$ \partial\Omega$ -$\displaystyle .$ -   
-

- -

-The weak formulation of this problem is found by multiplying the two -equations with test functions and integrating some terms by parts: -

-
- - - -
$\displaystyle A(\{\vec u,p\},\{\vec v,q\}) = F(\{\vec v,q\}),$ -   
-

-where -

-
- - - - - - - - -
$\displaystyle A(\{\vec u,p\},\{\vec v,q\})$$\displaystyle = (\vec v, K^{-1}\vec u)_\Omega - ($div$\displaystyle \ \vec v, p)_\Omega - (q,$div$\displaystyle \ \vec u)_\Omega$ -   
$\displaystyle F(\{\vec v,q\})$$\displaystyle = -(g,\vec v\cdot \vec n)_{\partial\Omega} - (f,q)_\Omega.$ -   
-

-Here, $ \vec n$ - is the outward normal vector at the boundary. Note how in this -formulation, Dirichlet boundary values of the original problem are -incorporated in the weak form. - -

-To be well-posed, we have to look for solutions and test functions in the -space -$ H($div$ )=\{\vec w\in L^2(\Omega)^d:\ $   div$ \ \vec w\in L^2\}$ - -for -$ \vec u,\vec v$ -, and $ L^2$ - for $ p,q$ -. It is a well-known fact stated in -almost every book on finite element theory that if one chooses discrete finite -element spaces for the approximation of $ \vec u,p$ - inappropriately, then the -resulting discrete saddle-point problem is instable and the discrete solution -will not converge to the exact solution. - -

-To overcome this, a number of different finite element pairs for $ \vec u,p$ - -have been developed that lead to a stable discrete problem. One such pair is -to use the Raviart-Thomas spaces $ RT(k)$ - for the velocity $ \vec u$ - and -discontinuous elements of class $ DQ(k)$ - for the pressure $ p$ -. For details -about these spaces, we refer in particular to the book on mixed finite element -methods by Brezzi and Fortin, but many other books on the theory of finite -elements, for example the classic book by Brenner and Scott, also state the -relevant results. - -

- -

-Assembling the linear system -

- -

-The deal.II library (of course) implements Raviart-Thomas elements $ RT(k)$ - of -arbitrary order $ k$ -, as well as discontinuous elements $ DG(k)$ -. If we forget -about their particular properties for a second, we then have to solve a -discrete problem -

-
- - - -
$\displaystyle A(x_h,w_h) = F(w_h),$ -   
-

-with the bilinear form and right hand side as stated above, and -$ x_h=\{\vec u_h,p_h\}$ -, -$ w_h=\{\vec v_h,q_h\}$ -. Both $ x_h$ - and $ w_h$ - are from the space - -$ X_h=RT(k)\times DQ(k)$ -, where $ RT(k)$ - is itself a space of $ dim$ --dimensional -functions to accommodate for the fact that the flow velocity is vector-valued. -The necessary question then is: how do we do this in a program? - -

-Vector-valued elements have already been discussed in previous tutorial -programs, the first time and in detail in step-8. The main difference there -was that the vector-valued space $ V_h$ - is uniform in all its components: the -$ dim$ - components of the displacement vector are all equal and from the same -function space. What we could therefore do was to build $ V_h$ - as the outer -product of the $ dim$ - times the usual $ Q(1)$ - finite element space, and by this -make sure that all our shape functions have only a single non-zero vector -component. Instead of dealing with vector-valued shape functions, all we did -in step-8 was therefore to look at the (scalar) only non-zero component and -use the fe.system_to_component_index(i).first call to figure out -which component this actually is. - -

-This doesn't work with Raviart-Thomas elements: following from their -construction to satisfy certain regularity properties of the space - -$ H($div$ )$ -, the shape functions of $ RT(k)$ - are usually nonzero in all -their vector components at once. For this reason, were -fe.system_to_component_index(i).first applied to determine the only -nonzero component of shape function $ i$ -, an exception would be generated. What -we really need to do is to get at all vector components of a shape -function. In deal.II diction, we call such finite elements -non-primitive, whereas finite elements that are either scalar or for -which every vector-valued shape function is nonzero only in a single vector -component are called primitive. - -

-So what do we have to do for non-primitive elements? To figure this out, let -us go back in the tutorial programs, almost to the very beginnings. There, we -learned that we use the FEValues class to determine the values and -gradients of shape functions at quadrature points. For example, we would call -fe_values.shape_value(i,q_point) to obtain the value of the -ith shape function on the quadrature point with number -q_point. Later, in step-8 and other tutorial programs, we learned -that this function call also works for vector-valued shape functions (of -primitive finite elements), and that it returned the value of the only -non-zero component of shape function i at quadrature point -q_point. - -

-For non-primitive shape functions, this is clearly not going to work: there is -no single non-zero vector component of shape function i, and the call -to fe_values.shape_value(i,q_point) would consequently not make -much sense. However, deal.II offers a second function call, -fe_values.shape_value_component(i,q_point,comp) that returns the -value of the compth vector component of shape function i at -quadrature point q_point, where comp is an index between -zero and the number of vector components of the present finite element; for -example, the element we will use to describe velocities and pressures is going -to have $ dim+1$ - components. It is worth noting that this function call can -also be used for primitive shape functions: it will simply return zero for all -components except one; for non-primitive shape functions, it will in general -return a non-zero value for more than just one component. - -

-We could now attempt to rewrite the bilinear form above in terms of vector -components. For example, in 2d, the first term could be rewritten like this -(note that -$ u_0=x_0, u_1=x_1, p=x_2$ -): -

-
- - - - - - - - -
$\displaystyle (\vec u_h^i, K^{-1}\vec u_h^j) =$$\displaystyle \left((x_h^i)_0, K^{-1}_{00} (x_h^j)_0\right) + \left((x_h^i)_0, K^{-1}_{01} (x_h^j)_1\right) +$ -   
 $\displaystyle \left((x_h^i)_1, K^{-1}_{10} (x_h^j)_0\right) + \left((x_h^i)_1, K^{-1}_{11} (x_h^j)_1\right).$ -   
-

-If we implemented this, we would get code like this: -
-  for (unsigned int q=0; q<n_q_points; ++q) 
-    for (unsigned int i=0; i<dofs_per_cell; ++i)
-      for (unsigned int j=0; j<dofs_per_cell; ++j)
-        local_matrix(i,j) += (k_inverse_values[q][0][0] *
-                              fe_values.shape_value_component(i,q,0) *
-                              fe_values.shape_value_component(j,q,0) 
-                              +
-                              k_inverse_values[q][0][1] *
-                              fe_values.shape_value_component(i,q,0) *
-                              fe_values.shape_value_component(j,q,1) 
-                              +
-                              k_inverse_values[q][1][0] *
-                              fe_values.shape_value_component(i,q,1) *
-                              fe_values.shape_value_component(j,q,0) 
-                              +
-                              k_inverse_values[q][1][1] *
-                              fe_values.shape_value_component(i,q,1) *
-                              fe_values.shape_value_component(j,q,1) 
-                             )
-                             *
-                             fe_values.JxW(q);
-
-This is, at best, tedious, error prone, and not dimension independent. There -are obvious ways to make things dimension independent, but in the end, the -code is simply not pretty. What would be much nicer is if we could simply -extract the $ \vec u$ - and $ p$ - components of a shape function $ x_h^i$ -. In the -program we do that, by writing functions like this one: -
-template <int dim>
-Tensor<1,dim>
-extract_u (const FEValuesBase<dim> &fe_values,
-           const unsigned int i,
-           const unsigned int q)
-{
-  Tensor<1,dim> tmp;
-
-  for (unsigned int d=0; d<dim; ++d)
-    tmp[d] = fe_values.shape_value_component (i,q,d);
-
-  return tmp;
-}
-
- -

-What this function does is, given an fe_values object, to extract -the values of the first $ dim$ - components of shape function i at -quadrature points q, that is the velocity components of that shape -function. Put differently, if we write shape functions $ x_h^i$ - as the tuple - -$ \{\vec u_h^i,p_h^i\}$ -, then the function returns the velocity part of this -tuple. Note that the velocity is of course a $ dim$ --dimensional tensor, and -that the function returns a corresponding object. - -

-Likewise, we have a function that extracts the pressure component of a shape -function: -

-template <int dim>
-double extract_p (const FEValuesBase<dim> &fe_values,
-                  const unsigned int i,
-                  const unsigned int q)
-{
-  return fe_values.shape_value_component (i,q,dim);
-}
-
-Finally, the bilinear form contains terms involving the gradients of the -velocity component of shape functions. To be more precise, we are not really -interested in the full gradient, but only the divergence of the velocity -components, i.e. -div$ \ \vec u_h^i = \sum_{d=0}^{dim-1}
-\frac{\partial}{\partial x_d} (\vec u_h^i)_d$ -. Here's a function that returns -this quantity: -
-template <int dim>
-double
-extract_div_u (const FEValuesBase<dim> &fe_values,
-               const unsigned int i,
-               const unsigned int q)
-{
-  double divergence = 0;
-  for (unsigned int d=0; d<dim; ++d)
-    divergence += fe_values.shape_grad_component (i,q,d)[d];
-
-  return divergence;
-}
-
- -

-With these three functions, all of which are completely dimension independent -and will therefore also work in 3d, assembling the local matrix and right hand -side contributions becomes a charm: -

-for (unsigned int q=0; q<n_q_points; ++q) 
-  for (unsigned int i=0; i<dofs_per_cell; ++i)
-    {
-      const Tensor<1,dim> phi_i_u = extract_u (fe_values, i, q);
-      const double div_phi_i_u    = extract_div_u (fe_values, i, q);
-      const double phi_i_p        = extract_p (fe_values, i, q);
-           
-      for (unsigned int j=0; j<dofs_per_cell; ++j)
-        {
-          const Tensor<1,dim> phi_j_u = extract_u (fe_values, j, q);
-          const double div_phi_j_u    = extract_div_u (fe_values, j, q);
-          const double phi_j_p        = extract_p (fe_values, j, q);
-               
-          local_matrix(i,j) += (phi_i_u * k_inverse_values[q] * phi_j_u
-                                - div_phi_i_u * phi_j_p
-                                - phi_i_p * div_phi_j_u)
-                               * fe_values.JxW(q);
-        }
-
-      local_rhs(i) += -(phi_i_p *
-                        rhs_values[q] *
-                        fe_values.JxW(q));
-    }
-
-This very closely resembles the form we have originally written down the -bilinear form and right hand side. - -

-There is one final term that we have to take care of: the right hand side -contained the term -$ (g,\vec v\cdot \vec n)_{\partial\Omega}$ -, constituting the -weak enforcement of pressure boundary conditions. We have already seen in -step-7 how to deal with face integrals: essentially exactly the same as with -domain integrals, except that we have to use the FEFaceValues class -instead of FEValues. To compute the boundary term we then simply have -to loop over all boundary faces and integrate there. If you look closely at -the definitions of the extract_* functions above, you will realize -that it isn't even necessary to write new functions that extract the velocity -and pressure components of shape functions from FEFaceValues objects: -both FEValues and FEFaceValues are derived from a common -base class, FEValuesBase, and the extraction functions above can -therefore deal with both in exactly the same way. Assembling the missing -boundary term then takes on the following form: -

-for (unsigned int face_no=0;
-     face_no<GeometryInfo<dim>::faces_per_cell;
-     ++face_no)
-  if (cell->at_boundary(face_no))
-    {
-      fe_face_values.reinit (cell, face_no);
-    
-      pressure_boundary_values
-        .value_list (fe_face_values.get_quadrature_points(),
-                     boundary_values);
-
-      for (unsigned int q=0; q<n_face_q_points; ++q) 
-        for (unsigned int i=0; i<dofs_per_cell; ++i)
-          {
-            const Tensor<1,dim>
-              phi_i_u = extract_u (fe_face_values, i, q);
-                
-            local_rhs(i) += -(phi_i_u *
-                              fe_face_values.normal_vector(q) *
-                              boundary_values[q] *
-                              fe_face_values.JxW(q));
-        }
-  }
-
- -

-You will find the exact same code as above in the sources for the present -program. We will therefore not comment much on it below. - -

- -

-Linear solvers and preconditioners -

- -

-After assembling the linear system we are faced with the task of solving -it. The problem here is: the matrix has a zero block at the bottom right -(there is no term in the bilinear form that couples the pressure $ p$ - with the -pressure test function $ q$ -), and it is indefinite. At least it is -symmetric. In other words: the Conjugate Gradient method is not going to -work. We would have to resort to other iterative solvers instead, such as -MinRes, SymmLQ, or GMRES, that can deal with indefinite systems. However, then -the next problem immediately surfaces: due to the zero block, there are zeros -on the diagonal and none of the usual preconditioners (Jacobi, SSOR) will work -as they require division by diagonal elements. - -

- -

-Solving using the Schur complement -

- -

-In view of this, let us take another look at the matrix. If we sort our -degrees of freedom so that all velocity come before all pressure variables, -then we can subdivide the linear system $ AX=B$ - into the following blocks: -

-
- - - -
$\displaystyle \begin{pmatrix}M & B^T \\ B & 0 \end{pmatrix} \begin{pmatrix}U \\ P \end{pmatrix} = \begin{pmatrix}F \\ G \end{pmatrix},$ -   
-

-where $ U,P$ - are the values of velocity and pressure degrees of freedom, -respectively, $ M$ - is the mass matrix on the velocity space, $ B$ - corresponds to -the negative divergence operator, and $ B^T$ - is its transpose and corresponds -to the negative gradient. - -

-By block elimination, we can then re-order this system in the following way -(multiply the first row of the system by $ BM^{-1}$ - and then subtract the -second row from it): -

-
- - - - - - - - -
$\displaystyle BM^{-1}B^T P$$\displaystyle = BM^{-1} F - G,$ -   
$\displaystyle MU$$\displaystyle = F - B^TP.$ -   
-

-Here, the matrix -$ S=BM^{-1}B^T$ - (called the Schur complement of $ A$ -) -is obviously symmetric and, owing to the positive definiteness of $ M$ - and the -fact that $ B^T$ - has full column rank, $ S$ - is also positive -definite. - -

-Consequently, if we could compute $ S$ -, we could apply the Conjugate Gradient -method to it. However, computing $ S$ - is expensive, and $ S$ - is most -likely also a full matrix. On the other hand, the CG algorithm doesn't require -us to actually have a representation of $ S$ -, it is sufficient to form -matrix-vector products with it. We can do so in steps: to compute $ Sv$ -, we - -

    -
  • form $ w = B^T v$ -; -
  • -
  • solve $ My = w$ - for $ y=M^{-1}w$ -, using the CG method applied to the - positive definite and symmetric mass matrix $ M$ -; -
  • -
  • form $ z=By$ - to obtain $ Sv=z$ -. -
  • -
-We will implement a class that does that in the program. Before showing its -code, let us first note that we need to multiply with $ M^{-1}$ - in several -places here: in multiplying with the Schur complement $ S$ -, forming the right -hand side of the first equation, and solving in the second equation. From a -coding viewpoint, it is therefore appropriate to relegate such a recurring -operation to a class of its own. We call it InverseMatrix. As far as -linear solvers are concerned, this class will have all operations that solvers -need, which in fact includes only the ability to perform matrix-vector -products; we form them by using a CG solve (this of course requires that the -matrix passed to this class satisfies the requirements of the CG -solvers). Here are the relevant parts of the code that implements this: -
-class InverseMatrix
-{
-  public:
-    InverseMatrix (const SparseMatrix<double> &m);
-
-    void vmult (Vector<double>       &dst,
-                const Vector<double> &src) const;
-
-  private:
-    const SmartPointer<const SparseMatrix<double> > matrix;
-    // ...
-};
-
-
-void InverseMatrix::vmult (Vector<double>       &dst,
-                           const Vector<double> &src) const
-{
-  SolverControl solver_control (src.size(), 1e-8*src.l2_norm());
-  SolverCG<>    cg (solver_control, vector_memory);
-
-  cg.solve (*matrix, dst, src, PreconditionIdentity());        
-}
-
-Once created, objects of this class can act as matrices: they perform -matrix-vector multiplications. How this is actually done is irrelevant to the -outside world. - -

-Using this class, we can then write a class that implements the Schur -complement in much the same way: to act as a matrix, it only needs to offer a -function to perform a matrix-vector multiplication, using the algorithm -above. Here are again the relevant parts of the code: -

-class SchurComplement 
-{
-  public:
-    SchurComplement (const BlockSparseMatrix<double> &A,
-                     const InverseMatrix             &Minv);
-
-    void vmult (Vector<double>       &dst,
-                const Vector<double> &src) const;
-
-  private:
-    const SmartPointer<const BlockSparseMatrix<double> > system_matrix;
-    const SmartPointer<const InverseMatrix>              m_inverse;
-    
-    mutable Vector<double> tmp1, tmp2;
-};
-
-
-void SchurComplement::vmult (Vector<double>       &dst,
-                             const Vector<double> &src) const
-{
-  system_matrix->block(0,1).vmult (tmp1, src);
-  m_inverse->vmult (tmp2, tmp1);
-  system_matrix->block(1,0).vmult (dst, tmp2);
-}
-
- -

-In this code, the constructor takes a reference to a block sparse matrix for -the entire system, and a reference to an object representing the inverse of -the mass matrix. It stores these using SmartPointer objects (see -step-7), and additionally allocates two temporary vectors tmp1 and -tmp2 for the vectors labeled $ w,y$ - in the list above. - -

-In the matrix-vector multiplication function, the product $ Sv$ - is performed in -exactly the order outlined above. Note how we access the blocks $ B^T$ - and $ B$ - -by calling system_matrix->block(0,1) and -system_matrix->block(1,0) respectively, thereby picking out -individual blocks of the block system. Multiplication by $ M^{-1}$ - happens -using the object introduced above. - -

-With all this, we can go ahead and write down the solver we are going to -use. Essentially, all we need to do is form the right hand sides of the two -equations defining $ P$ - and $ U$ -, and then solve them with the Schur complement -matrix and the mass matrix, respectively: -

-template <int dim>
-void MixedLaplaceProblem<dim>::solve () 
-{
-  const InverseMatrix m_inverse (system_matrix.block(0,0));
-  Vector<double> tmp (solution.block(0).size());
-  
-  {
-    Vector<double> schur_rhs (solution.block(1).size());
-
-    m_inverse.vmult (tmp, system_rhs.block(0));
-    system_matrix.block(1,0).vmult (schur_rhs, tmp);
-    schur_rhs -= system_rhs.block(1);
-
-    SolverControl solver_control (system_matrix.block(0,0).m(),
-                                  1e-6*schur_rhs.l2_norm());
-    SolverCG<>    cg (solver_control);
-
-    cg.solve (SchurComplement(system_matrix, m_inverse),
-              solution.block(1),
-              schur_rhs,
-              PreconditionIdentity());
-  }
-  {
-    system_matrix.block(0,1).vmult (tmp, solution.block(1));
-    tmp *= -1;
-    tmp += system_rhs.block(0);
-    
-    m_inverse.vmult (solution.block(0), tmp);
-  }
-}
-
- -

-This code looks more impressive than it actually is. At the beginning, we -declare an object representing $ M^{-1}$ - and a temporary vector (of the size of -the first block of the solution, i.e. with as many entries as there are -velocity unknowns), and the two blocks surrounded by braces then solve the two -equations for $ P$ - and $ U$ -, in this order. Most of the code in each of the two -blocks is actually devoted to constructing the proper right hand sides. For -the first equation, this would be -$ BM^{-1}F-G$ -, and $ -B^TP+G$ - for the second -one. The first hand side is then solved with the Schur complement matrix, and -the second simply multiplied with $ M^{-1}$ -. The code as shown uses no -preconditioner (i.e. the identity matrix as preconditioner) for the Schur -complement. - -

- -

-A preconditioner for the Schur complement -

- -

-One may ask whether it would help if we had a preconditioner for the Schur -complement -$ S=BM^{-1}B^T$ -. The general answer, as usual, is: of course. The -problem is only, we don't know anything about this Schur complement matrix. We -do not know its entries, all we know is its action. On the other hand, we have -to realize that our solver is expensive since in each iteration we have to do -one matrix-vector product with the Schur complement, which means that we have -to do invert the mass matrix once in each iteration. - -

-There are different approaches to preconditioning such a matrix. On the one -extreme is to use something that is cheap to apply and therefore has no real -impact on the work done in each iteration. The other extreme is a -preconditioner that is itself very expensive, but in return really brings down -the number of iterations required to solve with $ S$ -. - -

-We will try something along the second approach, as much to improve the -performance of the program as to demonstrate some techniques. To this end, let -us recall that the ideal preconditioner is, of course, $ S^{-1}$ -, but that is -unattainable. However, how about -

-
- - - -
$\displaystyle \tilde S^{-1} = [B^T ($diag$\displaystyle M)^{-1}B]^{-1}$ -   
-

-as a preconditioner? That would mean that every time we have to do one -preconditioning step, we actually have to solve with $ \tilde S$ -. At first, -this looks almost as expensive as solving with $ S$ - right away. However, note -that in the inner iteration, we do not have to calculate $ M^{-1}$ -, but only -the inverse of its diagonal, which is cheap. - -

-To implement something like this, let us first generalize the -InverseMatrix class so that it can work not only with -SparseMatrix objects, but with any matrix type. This looks like so: -

-template <class Matrix>
-class InverseMatrix
-{
-  public:
-    InverseMatrix (const Matrix &m);
-
-    void vmult (Vector<double>       &dst,
-                const Vector<double> &src) const;
-
-  private:
-    const SmartPointer<const Matrix> matrix;
-
-    //...
-};
-
-
-template <class Matrix>
-void InverseMatrix<Matrix>::vmult (Vector<double>       &dst,
-                                   const Vector<double> &src) const
-{
-  SolverControl solver_control (src.size(), 1e-8*src.l2_norm());
-  SolverCG<> cg (solver_control, vector_memory);
-
-  dst = 0;
-  
-  cg.solve (*matrix, dst, src, PreconditionIdentity());        
-}
-
-Essentially, the only change we have made is the introduction of a template -argument that generalizes the use of SparseMatrix. - -

-The next step is to define a class that represents the approximate Schur -complement. This should look very much like the Schur complement class itself, -except that it doesn't need the object representing $ M^{-1}$ - any more: -

-class ApproximateSchurComplement : public Subscriptor
-{
-  public:
-    ApproximateSchurComplement (const BlockSparseMatrix<double> &A);
-
-    void vmult (Vector<double>       &dst,
-                const Vector<double> &src) const;
-
-  private:
-    const SmartPointer<const BlockSparseMatrix<double> > system_matrix;
-    
-    mutable Vector<double> tmp1, tmp2;
-};
-
-
-void ApproximateSchurComplement::vmult (Vector<double>       &dst,
-                                        const Vector<double> &src) const
-{
-  system_matrix->block(0,1).vmult (tmp1, src);
-  system_matrix->block(0,0).precondition_Jacobi (tmp2, tmp1);
-  system_matrix->block(1,0).vmult (dst, tmp2);
-}
-
-Note how the vmult function differs in simply doing one Jacobi sweep -(i.e. multiplying with the inverses of the diagonal) instead of multiplying -with the full $ M^{-1}$ -. - -

-With all this, we already have the preconditioner: it should be the inverse of -the approximate Schur complement, i.e. we need code like this: -

-    ApproximateSchurComplement
-      approximate_schur_complement (system_matrix);
-      
-    InverseMatrix<ApproximateSchurComplement>
-      preconditioner (approximate_schur_complement)
-
-That's all! - -

-Taken together, the first block of our solve() function will then -look like this: -

-    Vector<double> schur_rhs (solution.block(1).size());
-
-    m_inverse.vmult (tmp, system_rhs.block(0));
-    system_matrix.block(1,0).vmult (schur_rhs, tmp);
-    schur_rhs -= system_rhs.block(1);
-
-    SchurComplement
-      schur_complement (system_matrix, m_inverse);
-    
-    ApproximateSchurComplement
-      approximate_schur_complement (system_matrix);
-      
-    InverseMatrix<ApproximateSchurComplement>
-      preconditioner (approximate_schur_complement);
-    
-    SolverControl solver_control (system_matrix.block(0,0).m(),
-                                  1e-6*schur_rhs.l2_norm());
-    SolverCG<>    cg (solver_control);
-
-    cg.solve (schur_complement, solution.block(1), schur_rhs,
-              preconditioner);
-
-Note how we pass the so-defined preconditioner to the solver working on the -Schur complement matrix. - -

-Obviously, applying this inverse of the approximate Schur complement is a very -expensive preconditioner, almost as expensive as inverting the Schur -complement itself. We can expect it to significantly reduce the number of -outer iterations required for the Schur complement. In fact it does: in a -typical run on 5 times refined meshes using elements of order 0, the number of -outer iterations drops from 164 to 12. On the other hand, we now have to apply -a very expensive preconditioner 12 times. A better measure is therefore simply -the run-time of the program: on my laptop, it drops from 28 to 23 seconds for -this test case. That doesn't seem too impressive, but the savings become more -pronounced on finer meshes and with elements of higher order. For example, a -six times refined mesh and using elements of order 2 yields an improvement of -318 to 12 outer iterations, at a runtime of 338 seconds to 229 seconds. Not -earth shattering, but significant. - -

- -

-A remark on similar functionality in deal.II -

- -

-As a final remark about solvers and preconditioners, let us note that a -significant amount of functionality introduced above is actually also present -in the library itself. It probably even is more powerful and general, but we -chose to introduce this material here anyway to demonstrate how to work with -block matrices and to develop solvers and preconditioners, rather than using -black box components from the library. - -

-For those interested in looking up the corresponding library classes: the -InverseMatrix is roughly equivalent to the -PreconditionLACSolver class in the library. Likewise, the Schur -complement class corresponds to the SchurMatrix class. - -

- -

-Definition of the test case -

- -

-In this tutorial program, we will solve the Laplace equation in mixed -formulation as stated above. Since we want to monitor convergence of the -solution inside the program, we choose right hand side, boundary conditions, -and the coefficient so that we recover a solution function known to us. In -particular, we choose the pressure solution -

-
- - - -
$\displaystyle p = -\left(\frac \alpha 2 xy^2 + \beta x - \frac \alpha 6 x^2\right),$ -   
-

-and for the coefficient we choose the unit matrix -$ K_{ij}=\delta_{ij}$ - for -simplicity. Consequently, the exact velocity satisfies -

-
- - - -
$\displaystyle \vec u = \begin{pmatrix}\frac \alpha 2 y^2 + \beta - \frac \alpha 2 x^2 \\ \alpha xy \end{pmatrix}.$ -   
-

-This solution was chosen since it is exactly divergence free, making it a -realistic test case for incompressible fluid flow. By consequence, the right -hand side equals $ f=0$ -, and as boundary values we have to choose - -$ g=p\vert _{\partial\Omega}$ -. - -

-For the computations in this program, we choose -$ \alpha=0.3,\beta=1$ -. You can -find the resulting solution in the ``Results'' section below, after the -commented program. diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro.pdf b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro.pdf deleted file mode 100644 index 3f26e60e8b6de66dbdbc7fe9952c5986604332fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122404 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 z 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 AcmMzZ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img11.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img11.png deleted file mode 100644 index e9ba35872f0fea64ba6a46201687261586fb9202..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmeAS@N?&q;$mQ6;PUiv2?Ej@K&-&R%)r3-v_*U=kYf@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIZr%Y978lFCMPg3iLsdo1ROYUcR_=WQDbAXe5|O1fgy*%hNj3I9v&`-Q?jd#L>P=R znXlYpcbJpOv53opRf0!md1H#hfyTzh$r}QHI4~S>d?p~rek4iYDBmM4hD!MZWt=h$ zMhEvLr&Uxn%uYPa?$N-}pdq&+k<-C0^_-&Yhy0ccc?pvWnOe4s`D`+AsIcKm=n~gC znS0=Wz4QNkHZc#0O?Al$+6+H?-hOvf_|EL%Ge_~>2ObNR8Rd1!4K4QO1{QWJ7&{sM z{pb1p-*|)gftUil21YS?ISs#L*67oY-xVC$8TKlw_aB^YoCNeQgQu&X%Q~loCIDU> BdK&-$ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img12.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img12.png deleted file mode 100644 index e4ae8c2e303a261dc4652988746e4c6d00a7f312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9iTP)SV88|f3K$p~6wn0uuqtI@5MbbO0I}FEFraI}0oVoD7#1)v zumG979zbHk9)=4*3z-TS40t#|G9Umnlan~(aDf1znG7IzPXzHeKo+w=C?GDr0F>|+ z0LeU%05W;OS~l=8a4~2Eus{p|QQT0&5*Qc+D02?!fa~2W2ETU-3~pc^;{=H4EC$9x zpxYWCJZ=RL$^4kZ0HncyLF$#y1_qV|VC{=IE;4}Q&4C*j77PzSf^h;2y#kQPtOUgu zFyI;T-aTOfTE)N-z;Lefl>h^K0kSI=KqwCsr?G;q<)C|zpaTH%^d;nEKkn540000< KMNUMnLSTaH&3&T) diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img13.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img13.png deleted file mode 100644 index 39bf8e009f0df12f57239cb9ea72cc00ddbf9312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmV;w0YLtVP)K9001yhOjJd)v$LqE zsGOXfkdTmsgoJo_cx-HJU|?WWR8&YvNIX0|FfcGABqSIZ7z_*y0002$S<9XP0004W zQchCy-veG4F1ym^x6d7Z43-#LJSP;#M&;vm^Yv+U7AP8 z8_)@f3LXIIIxex@Z&u7PueYOFH2V`hMk`jek-1Kb< zAt}sn46LFB#nO5X=meZ^U<{{!hW`plM|1JFYug8%i$04C(IJVnqtF{(k*Dzr_G~St zjLzn%H$n2V$;VcRidC|THsDN4lTc*MHQzP5UHXZdlgYdt&I<5KHy2;?5IQf%s3+{M zNJUgDVuW%STL3w;@`QQavKsD~z07J+Ow_uLYfd{H9QI_PFPHFazcC&e7Vk5MReymX zHJuNZkEG@mC!w)FG}T~SJFQgWzPufMu9WA5 pH{9UNP+`#YNS`x^tr_iq@d`_bJ`n$C!)O2i002ovPDHLkV1o3DyV?K% diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img14.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img14.png deleted file mode 100644 index b1fe72e20b150bb0588ea7b1e2bf02088b57299f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmeAS@N?&q;$mQ6;PUiv2?EmGKrG9`%)r3-lWR9CkYf@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIpLlzjv*W~lY!dO8X6ed_yySBGqR;596WH~1jA%!R(2){36Tw+3JkxGbMx@9iA&rt zk(Bt+@Tcz2sf`Tlme)>ioZ`&RY(F8%=D-GK6^rk!3=_H(&uTER+~=ElV~4aN&@*cccXsHmt&NJ#MTfVA&9{~{AeF_r}R1v5B2yO9RuxO%!c zhH%VGPDpr=l90f`ki_@x5)wQ-JU|`JjQe*3DaMi@zhDN3XE)M-oMcZI z#}JO0$v`~`i46>lY;1gG2HkUe8@D$$Ix=bPSeQ1DQfaKZ~w2E$MHY!ew@B{DFucM9x? T>6YCGw2r~k)z4*}Q$iB}rT0n` diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img17.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img17.png deleted file mode 100644 index 941cbf5cd4ffbd920ea381bd5d37cd9caf010d85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmV;h0Z;ykP)P8{001*kOjJd)v$LqE zsGOXfkdTmwh=_!Qgm`#(Y;0^`U|>{KR7gljJUl!wFfb$}Bp4VN3=9ka0009;{D}Yn z00DGTPE!Ct=GbNc00AsXL_t(YiS1Q^a)TfYO<;gQ4Eg`B9YnBpvz2w--L~tyQ!zdt zA-*8M9gbgjtC`lU5nddvik<0HPt1h^@B)dI$ECv343Y})+#imGDXH8O8&PZNm{Gcy>N#L zh+wKux>rQp(M#4gf7SBOK3l!HVz&8`p;~Yk)RCl|#{7_xv>p>vP6*29ET6lkKJg>;PHE!T(%@1fUAs4}gph{}~*BRQ?B`1Q2s_H4tkiVM{;wDiJ&C?AB);~pg5iY=U!)UfiW2|)N)<`XG$nwf9%(Q zEc+jvDdAu*1H(cF=F%U+pb~^Xf$;?%wcHm#8H&e%6{NO@fkD3jN%FnGd=!`5odhIu v73W~{Dmvg*01}UgQ3(P4{|T!Z1r!1R7Cuz-z;mJN00000NkvXXu0mjfar&`* diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img19.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img19.png deleted file mode 100644 index 3567bd5b70f9cb08e1e0327a974e57c73fb7d392..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213 zcmeAS@N?&q;$mQ6;PUiv2?EkKKrG9`%)r1{tg7S!kS1`j3q&S!3+-1ZlnP@37#&FAsQ2t6Brot z*nBorGtXiuX0~GHPiP6aBYna31e@@MAKV%y{UHGv4QdSq0^joj5*D_L&uW&w_?4gW zz^+q_^Gk%9rR-jEMO+qT%uI-2Vw^DXOhViJOvWEe+Qk_dHlG*#vgMRQ7tk&SPgg&e IbxsLQ00)mkRR910 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img2.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img2.png deleted file mode 100644 index e0005bdb5de58628eb526710aa96d2e4d214d2ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231 zcmeAS@N?&q;$mQ6;PUiv2?El#KrF|?%)r1XRcw6)$k7V$331)LdGm@DE9T6ZGhxDn zmX?;BoScM&gpiOB4-XF;8yf=y0~Hk&9v&W`@^^nf`~XsnB|(0{3=Yq3qyafOo-U3d z8WWQf7?|VO7BRk$Wn)&FBHM6DMp$8&-htGLj_ur{Iu7C*4v#la$~MwmAk{11aLVVouWm21X`LpuG&9u6{1-oD!MKrG9`%)r2Swzx_X$dL~4331)LdGm@DD_UAwa&mG! zJUk2x3?w8ZczAe#@^cq0-V3A{OM?7@862M7NCR?AJzX3_B&H@OD6p0|7{(nq=s0O+ zz=Z>i3f#6Q3>ys+US(Wpu$;fRk?~+ki{VV;E^DS0*_sURbUCW;mag~&G=Ra=)z4*} HQ$iB}qqZ^p diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img22.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img22.png deleted file mode 100644 index 0e899d1b6c6f160c08cfb5d8b7d0dfdaae76d6dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmeAS@N?&q;$mQ6;PUiv2?EkKKrG9`%)r1{tg7S!hlhcIfr^TXgoFeS4-Zg>Gvof$S;_|;n|HeAg9FB z#W6%>yZ6m`@pBcNb=#W&TGBmG6oL9HymV(PcqcJ zzh|3pqk=Ki-~ofyeIRampvFkCJ(x mKPkyY`nBI-N}6KGkCiCxvXV}3t_czaJ>`R) z`SRv_^X9$0%m&E73n2iphI#&2gXlqY;Nb(t!t^+zke+HhCI;W5SxSn2s;cAik_!g` zna7L$hp1B!pF?qM;21r5O@`wM{S@etB~4|?kIIpe6$PBji7rmRk@712lf(ZNM2gD{ z4+^x=Gxl)RTHK2@bDrKo0=ihNEEh@&0lMhu=l4?Nlrb1fn|k;=$0Gs zRQ2j!&5#aNPvgSi`_>q6JDz*RbOht=p+4FPYi4TXz0`VveTuqC1Zhuf=-5fa5bseN zQFkfcNCv=>FlT;9%in=Z>{N2lW=_kFOWgE}u*s=|?Fi^bKBr>UgzhXM+^{^W50`Wq zt+kTs_%JIwUE;2(RLFVgzDsiIp-E%#Yf1F4+v4``x1*w(ct~2)!_*-AMv*HfWQeAP z2__iEb84;zw@(^g*UY2rGg(W!-F^z326lcco&O4)$-V{{@w;H8{awcLNcXZG4!BUdgR3LSTxBMyh>|wz6v+3>f`}+R!t9oOhTE1fI(SzGr={-E* z&>O_*{?KbS{ezJ>Y5rJ{-9E$v=67)gY|o_WM~*RhG%dBJYFxIa+ssI3E7;^fiyUZ< zPd*Dj#BRU>ZC`q2xXkT??fMQ=8d|;_#F<-CAL@Qwh`FFICEQZ*)i>NRk+1$(JuG|y zw%)IE@SD=uE!tn(&+Rr%;jgC>T2%*}LftGa2JB~l-b$p}v!6X}Sc&-xoKE~r>Kid- zH!Y}-9by=CsqV#;Z_=Hu6`=<8pePvp1^ETC=YTj09ttVlzIn4Tn-UOfda^I%%{SlM z_sz`Pod@*Hl@NgV1cVR~L=%rON&iyf0i{T5x}>Fe{%9*xqQ~i;tMvw>Lis|ozE=SuAzxCmq&!U|R>P!be%WKht$0$$CLV|7w)u)gHAbd7uKMyQc5G7$ze zT2y$Keg@ke7ZXpZ(zCQ9deIfGVA|Z48He%t1i!iiW(MyXTXNxs@>h(U@Dw=aN9JNX z=7evHH>Ff++{Go&GKafG=HGK@8wadZB^*;i=!@_8WW3e!zX6 R6t@5X002ovPDHLkV1j`aB0c~B diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img25.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img25.png deleted file mode 100644 index de3a188d13e7cb4904cb0b9f76d2bbb034eb9bd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 544 zcmV+*0^j|KP)Nkl<0>sSC#Xln0umRQRH=Rs1&0!C*e3 zM(@=f01;-Yu}H}x<^q^=D1$zuH~E|)qOE)g1*NqT>U5D`GRn>?$G=3%S6RDyT{1Os z6+r3^btyDCAU2>6H3t9_D)T|EqDoxy>Q=j%aIEIHxU!lIelSB)Bh-7mP>!uC0E6k( zb(~A7z~#tfe0)!kxv+LM7<)1bw+Z;@G+sMj=h)y+(4i~M*zSn5TnYyBub%001yhOjJd)v$LqE zsGOXfkdTmsgoJo_cx-HJU|?WWR8&YvNIX0|FfcGABqSIZ7z_*y0002$S<9XP0004W zQchC!v^&@n8WL>q|@V0dc_Hv@xdGsA=a1_p?g2QGkU?g?xPyfO?M91Ot1 z+zeJgM}Ytn!+!>ZQxg0Y8mQtfG6BMJ1!Q3k7=s%{H9L&K3Z*{)b=Au2I`ETHK0MQN| zpuF^f<1q6Huo*xAirNnh923~!u4DN<3F6)Z3_E}^$_tElWRpJtjgUt;P9Mmu`@q08 z_k{ohdjUfMv}}NaRtA=LD;e0|BMAZ1N({t1@?Ti~Bl{ARNG~xkWMBpc2YTrM1VNZW bqksVbVj)9xEVaM000000NkvXXu0mjf1p2fN diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img27.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img27.png deleted file mode 100644 index ae5e4d5465a7d24ca9e6aebd0580faf04dd68867..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmeAS@N?&q;$mQ6;PUiv2?El}K&-&R%)r1XoAL%Epc~*5;<|bB<`pYe%$YN1!h{Je zEiDxl6*)OM2?+@yAt4?f9tH*mDk>@x5)wQ-JU|`JjQe*3DaMi@zhDN3XE)M-oOzxu zjv*QolM@;k)7ULGH#8`hMi z;56-dH3Lr(n;l!<*)!G;oO&D-cqGyZyFohPIaC4A`@Dq eG(R(|GB7Bfl4s63c561!r3{{~elF{r5}E+fJYi!1 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img28.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img28.png deleted file mode 100644 index d4d02198a5f18602f2b5e9c9f952cb3546db7d65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 481 zcmV<70UrK|P);tMLiAafZASrB3fcXp}-A+-Xj15Y~n?%C(N=QE&j32_MYAV!!8 zN#?VYMOo?1Mn42x2k6Kt(}W7?ak|D}{v|)r>IT$98DyX$;+@v98^kbBa4U$qVcQ>qH2Sc4c{~NoIXs=^923 zOeBvMI4C}tJ1=XmNwi*p?a5HbM^$Ss*<0!Fk$F-bvBFyWJHX1zH$ji|RZizU*?+_r X+yhi708nWO00000NkvXXu0mjfHfF&~ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img29.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img29.png deleted file mode 100644 index c679c084a209a7d2ec7e3589b3bf243b07c54743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 730 zcmV<00ww*4P){;4)3sx5Dwt~V`A_^vjf54WC zAnCMG#=_!Iyr_-c<^BS<5W()$#xmGg39F4D!V1AcIc0pav&l}}tel07=7ZgN@69)F z-u!s;fC}3BH_XKhjTSn1Q6<%*$>|qW%#9kEAcGKcS_}#QWUhmP%>=J#2Uh1Gn~OoL zBbP==f^i{=-Mn#QPBL|{^}iA1LD97p$F{q9D~zg?37$Pl(B&yf-%lXh8EuKu54%BY zo>=ah!Gk`;eZP5svapmTz|}DR;uk zG`B~~bf(rlTj3wX*}4uks^xp1XWHR<$BwA&@}oNbvr>OqJG>i%ZNJquB~)ow8DszJ z%^wMz6lcEuS}ur>Z8g>+d-6EKg(W_fhOUNp5#-VJ(+;Obzt$=WrOv(y%e+_3*K@Y1 zo}O9fCa!4xUVPf<;f!ODr|+g&=>Eg`tk9k_-2XVC{Iyaz_uMnZK(Z;xIug5d%;5@X z$?tJXzYZs(!q`_&)jrz8UgYVlA1?B7mEN;G;NmAb;*hzg;tUg%wKt1Sl(*^l*Q%0ssI2 M07*qoM6N<$f*6Ki0{{R3 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img3.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img3.png deleted file mode 100644 index 45f41fb594c004b4206ba1008d1417a2f321239e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?&q;$mQ6;PUiv2?EmmK+MO&%)r1{x;Wbl$T0};331)LdGm@DE9T6ZGhxDn zmX?-^ii(_^oP>mgkdP1$4-Xp~8v_Fa6%`c;2?-t^9-yXIk*DVYDaMi@zhDN3XE)M- zoCHr7#}JO0$q5Y1%xre7Y-(WwlV37+XfI%xm>`hABE()HF@Yi2S(usGUcjh;Suvm! zsPJbP0l+XkKb4EUZ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img30.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img30.png deleted file mode 100644 index 97c021b12a5087bd485db4e2f19d4c82fd8b54f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmeAS@N?&q;$mQ6;PUiv2?Eg|%)-pT!1(>p$(ulqVt`MG>*mdy=ggVY($bQXlar8; z5E2q%U|^u4q9P$7!NbD?R26?ds|QFimIV0)GdMiEkp|>gdAc};aLi0jU}$DlXv$`6 zIecJ8gCp0ew5UxIDrb*2Fzry1YG~p@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIdeT-9780gCMP(s#&D=*=<|MoL@{9!&)$o@leh9cL(bIFRgQkWWk|IhFH|6ejf z!Ef%-0|CbmJYY;Su1`w%aqPeb$wfJg%)c4g3M32+j%XX4uy(Ng_<#S6|NqY&xX_iP i(Ix75rAS+ZfkA$SOxoeSnpc1hW$<+Mb6Mw<&;$U;U}yIL diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img32.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img32.png deleted file mode 100644 index 15751e7ee63dcd1e6a1adb2a7d25cb3832230326..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629 zcmV-*0*d{KP)NklY5PgY>S#wD?ptWA9U=a{(M7+{cEk!V3B^IW! zzd|boudxy_{)2#}g=b?eSO`|pLM&I*LIR$%w|jSc8bL)+#1}3zJ2P))_7gB5;K0=y z$0I%fjvAVg`jPMiwdaPAQdP{*XDdfO9DEW>I!9It7vaHSS=+4XL9lR8kbf&^<)7j5 z0?NwW{(R9d!BgTaHt+{jP#?U4$C}DwDIs`A2+Yb56g#2O;wP%#3V09*+Nj-ez$e2j z&7Nmn=2W7*j?VJ71?L;5^ZQZuwW3x&I$U-fa7;^-!@idRca_D5fnq=(#j_#_zg<;U zM|=79kqFPu7`W)+v{lY#iq242UIQepCC9z=GeFxY5AFSv>PRqYY&4R9SZ&pT9Z9&O zJ5m-w;?Z4KQ`5E#515v_sSsI_;U7PS$(clF>Fpa{e~06AD`q_E5 P00000NkvXXu0mjfBQq94 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img33.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img33.png deleted file mode 100644 index fdf33f5f285926ae30d7ff9f0e3d603c022aa0c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmV;F0c-w=P)c^aL=xn|W&{jC z3gLHPU;uwPne)|bP<)9F5 zU|@IzHjxVG+W=q~{1<@6FABgA;SQjJuLcn~!0~|lFmCC5P_ke(V8Be*oX-RxjO#$m zBG71O_$*kPP$w3Q#rn2Y5b% y=qM<^hk+GhAeKB91u+Ep6XLpg^X3&RR?L|*r=_JO zCnqN%At59r#KXhG#>U3Lz(7Jmf`^9(s8&2+$vhy%SQ6wH%;50sMjDV)>gnPbA~7{N z!GV=sP2uwnZV4`l4Nc5vge4@-7cfQU+z?%``gvl)gFpo@&B6x<7!|@AjMU5Ah67$w+!KB=^UZT)3C^~moG hl2#t?N)}JfX1s4DrFy!BwGQY222WQ%mvv4FO#r#0N|XQq diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img35.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img35.png deleted file mode 100644 index b69810815c63588d44300265c9ee9dd0694d645e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?&q;$mQ6;PUiv2?ElhKrFz*%)r1{^I5V1$T0};331)LdGm@DE9T6ZGhxDn zmX?-^ii(_^oP>mgkdP1$4-Xp~8v_Fa6%`c;2?-t^9-yXIk*DVYDaMi@zhDN3XE)M- zoIFn##}JO0$q5WhjBF|gSe91G8GJA@G1#E!xslVrfLSw+V|`;gBX>qZ!h`e#4xs7j z35-SD2b$y$ER*3lysWWN@q0gG$D@D$?=yPXGIXD15_C&Y`<$+@@!x;84YN2oaz8Th j2pK&4|Np;yQzV0Nfbi>OLO&{iHZyp-`njxgN@xNAE~ifk diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img36.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img36.png deleted file mode 100644 index 3d052e64e12b7e8d7445e885f3af94ba785eaf51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmeAS@N?&q;$mQ6;PUiv2?EkmKrG9`%)r2Cm=<^$$T0};331)LdGm@DE9T6ZGhxDn zmX?-^ii(_^oP>mgkdP1$4-Xp~8v_Fa6%`c;2?-t^9-yXIk*DVYDaMi@zhDN3XE)M- zoSB|3jv*3LlY!b2(i|EZnA+s!AK2Xc?86h$z}n2htb91Oji2YwjU|E)92l7O#V3R@ zB$@s3`pEdLUtFT1qLHVWn`ezf@ePxkQZvL23_chd*d)w2aNxrE14j;g>a6+P$q?iJ zTdz6e*jHl_2?-f11-thtCs;aV6K*g*s!d?o*_i!~oAKLs9-g}O4SLBPjGieBhU=Mp b@31mB>B&^gkN>_3=tu@nS3j3^P6mgkdP1$4-Xp~8v_Fa6%`c;2?-t^9-yXIk*DVYDaMi@zhDN3XE)M- zoDNSH#}J9B$q5WhZfq7m0vL`I$lYhz#>o?Lko_MwPtX6E4LW^nZ?pnJjSUPwJKf;t z&_14fj-Blp2eZN10tE(_bb}ZhhBD1&rifOi|LiuuRx# zJ(j{DCUBaB;5T#9<&%q0?NRUc8akqZ{=kPk7@E#lQ-{Ppq*n^p!1|5&&sZzfv~}-U zBnp%emq7mwiJ)i}VOkU_T2mXQ6BTr7G~BA(MTl1feN)2@g(_E%^0@2D5W?83bf zOi>Y6@~F+SGl7jRK}5p<5p$(ulqbbwEY>*mdySFBjk($bQXljGsx zVPIe&AtAxT!vmC`yJ+!VAjMb`zopr E0B-jzaR2}S diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img4.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img4.png deleted file mode 100644 index 8ce18f030bf66e0de4e30835126079ac3efe0757..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?&q;$mQ6;PUiv2?EmWKrG9`%)r3-*etpm$Po?j331)LdGnk(b8>QW5)u+Z zLPB_Wcz`mF952rRDaMi@zhDN3XE)M-97RtT#}JO0$q5cjdI diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img40.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img40.png deleted file mode 100644 index 04e1a0dbec86ca8ebd100f3031fe2758803e1462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmV;u0Yd(XP)$Hj~1q*}t00(Mg zA$GQBAy#7W0VHo=z!wOjwuyy>-93QCH4+f?oJp=wB&Zla*qNQ3{bpyrg^6f=j$APo zR3;O0l>LE=L($+;IXF9%za=T``W6oreMNay$_|##U7)$xjf#&=kLA$LZ<_-m2!2%g z7pRYG`Xp9&+oMZUBI#!yzd%RkLY{5)bflGDRicC>6<6354)m4?XG5#v#$H~~jdU6_ zkE)~o+tcp)FYvM~yAeOve+jW8E)HN}oH~_H>CljaJ=UP6XV+@XXE0J{fGTwbC&edN z*G#D+EA~U#9+F}VTcbOI)jH-aGr@k_3MEsDYnJ{pY-HK%x%kCwDB2&3w2gaZf5h2a nK(44Af1P1-WRIpN%75S;_SiX>bYU6vlsTlA4;NDI!RhlEp<3I;o3)M!}&$e1IGY+zTTSevND~ z2B9~a@B!DqIbwoRfu@~pn7H4PvU9-}cNM)wc@e6FjSi|m#+l{hRm%mJYV)gM*< z1%kY$Phzz99L`viNc2o&Sj5toUK@7x=u%h2l92T2V{Houy7Mg9vEkW~^I1~6DGs`n z)gHI%zrab;^iupx@3n^6qO$|FJasH`W0o6m$~x3_??O%S2?~8%`v^FP!_ot6Xr>&? ziewai`XXZ~JnJ{o$*>wwykb(~4w5NHbwghnnrZrWB7W}ieijbox2)X4?y%6@nbB|$ go0;7o(?tFW?=UJjH+8kR>i_@%07*qoM6N<$f(Em_k^lez diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img43.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img43.png deleted file mode 100644 index 293326584d57d5d34258ea1a7e3d44729952e110..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 674 zcmV;T0$u%yP)m`nps6rwXB+xl6sq0M zS3+YF(bq>I&~4B06cHDmtnjmX%S(Z~CvZ-987mR+qLAH=qe5@~5(!0|ImO~8Qc>CS z`Zd@YMJFchgu*Gu8*^QCKF7g@&|5>+uhOz!N;XTQTK2JxLcPPx*w7-JTG6Ur;xUc} z&-lsrnun}WtxG18$xcmd2+n>5R+q(y(pvYCsQzlBz|XdU=dh+PKJ176iQAY->Y6VC z&KElu;wHg;JP}_?7jO6inRI2B{eoZ5TY{UPScF?%N4OdUrxVR#fjoBvGL*bmVR>w@63 zk+8JZR`d~mu6?KQuG?6E@PMFijIB55IY`pvUH_Bd82>kZ1D0QfH2%UU|NjgO7x)=I0NKnD1{W9@fifBa zArGK>_#{7sJjh_Uc;F$L?n_`&fgfaQ1N9wC5okd$xe9QqLJtoV8BU%H7Z@1+gF=Ua zpPvE9X8(A(f#CrIDE%CODB}UifY`ubW3UI(7aHK91eAHm@PSQ})emZqbOFMAAe)bY zmkG@U3&3PUKZtyQ--9C=T*4vVi(3n>m4B4h~>S`_BN(4^VN34xnOCN@Q*Z^VugbG05%@U;yViNWxYGcz|IC z8Jv+HSre00000NkvXXu0mjfMNiC} diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img45.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img45.png deleted file mode 100644 index f20d1ac5e9b4a0a174bad52d95957802959bb2cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 507 zcmVdLcY13%hK^z?V3U~M2ySsPqE8OTYQj~SbiK#7?s)M?G)Z9UItd6>B(+xul-pOC!m!3=$O9*Obl>UWT=jnRyund)c7Wp$>eIz2Bsrtvo5NJf xb9@BcIM7^S^+zFdeq!s7neHoRcFF>?@C9k&T&P+ z7sn8ZsmVZX2`LTC=@#9ZUznJ!9;BrwB%~h{aAVyQ@T-A|vGqhl^X~(U3QG@cU|h2K zfl@?(RwIir2lKH~Z$IamIy}*hc7+U^Z%WOONV&$!5NUJ%x0unEO(qAf_&?a^#hT6N X`bc0y0+;q2pp6Wku6{1-oD!M$r{DK)Ap4~_T za*8}%9780gCIhuS$WLfsmSa;n@czMp20ob?k`gz(bZT=peMt--f)XyOhb{3(hWWXlL8Be3jQCG7Cb56*&8e?&wrOs nn{mpBaoxm1#`D2h)@%%0_=K(Y^X+N?+RotV>gTe~DWM4fVCqsk diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img48.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img48.png deleted file mode 100644 index bfdef213026bf81ec9cc7fff07473e3548c08de4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 815 zcmV+~1JL}5P)0 zcoH^?A|7NA2M!OydQcb&vj4z{N0CJjLr}0sy+uUSgA#?|Q1SWwzSp(u+73Zb82dny zm-qd=Z@#|+bm0Pdzys!imfmV$eN^~X)9Y|BC9w4~$C?#V0V{xsG%X4{^w&^&8?Id{ zz(GV-kSqC&H!H#=FPpryf~<4EL|HGQ6@UH(L^Qp!bdBe>0kXCoFBfSgXgP>c=htbB z(VmpRg(Z|oDsIy5k%V0e8t{R!WQ5HxdZ$yZA+y7n^tEo7K(d{#QB2%|sMwJ+$d(YD z3=u{tBJD73VAOhiriy?Hzsn_~akOBTOAdt20=--HLwSm}&lGdKb22FeTP=&~j0=u* zCioH|i!9wk88?*V?8%l2>Y_)y1rzewjanjW|~UvXFNqeUpHtf#_; z<)RV1(KOr3s9gmP`cybxLe|d+V-I3+scrDi)h*1v<+`skij$xZYf}G~=Yp|b95?ZQ z;K*fDF0b9aFXcz?>LY@0hA6%VcJ#;>r2JV2w!QpLg*>hZMmyb3oDcfGVkcAsbv&ao zI8M}*wx0ILskl$zFjd-ln2{!wYg+a=?6!gld6* zK`tC$6Uan9z)sIfzeMS{ZLXf1rj(KW z`J9wL=;b=~oA~6BArxy5My%xWHAQQ${6>Sr4m6?A?OS8M{H{NU8tqALMuUX2zi1HY txN+kC2&dHj+HitZ@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIkP=o978x}CIhuS=wuP%Vds*NU}-Sf%)rdfEL4yYp70>)b!~&rHHM|kOlBVnHyI_c ziYN52a2$;|`0+r$|NO?r>D`Tuow6D1>+A9zn;DxK%l`fr-60&nq7?XaX`Nik|Dy*! z@A#kjj$dGYGE;Q3vsCk8p0*q|$q5Yh&3iban;1W{wt4eRp4rHx^M2F3g1-q5$`Y~@ dBH|A)FbIE^7Yk=z^bzPx22WQ%mvv4FO#pYbVgmpG diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img5.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img5.png deleted file mode 100644 index b1fe72e20b150bb0588ea7b1e2bf02088b57299f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmeAS@N?&q;$mQ6;PUiv2?EmGKrG9`%)r3-lWR9CkYf@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIpLlzjv*W~lY!dO8X6ed_yySBGqR;596WH~1jA%!R(2){36Tw+3JkxGbMx@9iA&rt zk(Bt+@Tcz2sf`Tlme)>ioZ`&RY(F8%=D-GK6^rk!3=_H(&uTER+~=ElV~4aN&@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIW3+pjv*3LlM@;m*aNH@8XLLKJb2D7)WgVgq9LBuL&U(KpuqS6i?D)7H#2ufQu+)7 z#_drp2jzd*Gpyv2Q8>rWXt44EgUWWJJM5FVcoY>B-R3dGunBOUGcefT*RtuighW%~ zqkn8NJlnVewwtIKd~i6rQ_s-gh^1Y_>-{Iz`Yq%xU|@JNTg3b1zuqlC_b_<6`njxg HN@xNAc=lD_ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img51.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img51.png deleted file mode 100644 index 2989bad7e51d620d1df5b450aaaedbdbb6d6de9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmeAS@N?&q;$mQ6;PUiv2?Ek8K&-&R%)r3-f5&%iAjcrUC&YF0=FKZste7)r&V&gQ zT3T8vDk^evauN~}LPA13JUnb{YzzzxR8&+XBqVrvcz~K-MV_7qq!>$r{DK)Ap4~_T zavplRIEH9UOio~EW@0OAW9A7cXl!icI+emC7{jxJfxUynK`7(EN)fIKX1#)99fpr6KBY@^}N;YwCaQYIpS<>J`EraBh10NVW8p1vr7|8r!NU=?L zz^?U!q3ul1DIV#DFKi1uq;Hh5D%A0OvR2=zry$rd|351ai#gk|7&bP~4IQzJ%+6xW z-ptH57PdFckd=^i;M>mVazgqDb8C#{4DQ1*OqIeGJP%^*CPZre-*3!eP{3mF<^O-K xAbz&L|5+ps#HBIZW@2B%rLbvYTHH})2D2xcQp(v9y+F@0c)I$ztaD0e0su|cb147- diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img52.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img52.png deleted file mode 100644 index f0f58d5f5ea63558a624e3473d5ccab80ab3502d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 zcmeAS@N?&q;$mQ6;PUiv2?ElbK&-&R%)r3tDqZgl=ow z#-_)nmcq!a@Qfv?Ou^6LIv3L#2blv09yBaj$apxy=KzOck29l-k$8h8_kkxY8>|mJ jo7to*ppYRU!N9PqmSvN(#MC!HQyDy6{an^LB{Ts5X2v%r diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img53.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img53.png deleted file mode 100644 index 5181835bad852552fece16741154af6e6346ee87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?&q;$mQ6;PUiv2?ElbK+MO&%)r1{u~!--p%~y3;<|bB<_Qxfw6wJ3mdKI;Vst E01`4QBme*a diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img54.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img54.png deleted file mode 100644 index e2d0ce33c72a1bd192378a02d2676fac246b88fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmV-S0ki&zP)@5W%j#B2cLv%KvmgoOX3-{6%$YK-hTMuQlp^Eb(QH;kq z4tVe}g!C2EP147Z6;0j!SX eC*5B|1^@uUk}pOVdjGTl0000lL0=hRp_;3X}^@vQ%U`A*?==V_7^rR_FqzH>LJRaH&#e0{5`EX2TkAwhJh2qOLhx zp+RX_ipb2zlBgbIrgi-ax~$iehJs=d&~h;`1|73%hK>V6j!`aTE|4UP+;QT#GpqJb z!x&R5gL8(uO@@Yctncwhx;RwG{O!beq`6a^R#$w@mFGhP1p_Y?S)xSv6b$r?N>k`cAWqurN9o z=0NiuCP^+JjCE@DFa#5ICA=UBt9KPdlP#e{JFz5%NQjEuxY=PUJ$QgAbI7LQScoM4JGUs)EM=Bt&jV1VA&? z_S#SP{U#aRMDp-+L6qB$rIHJEg)yo|X*sbjw0O9o{>mPpqjRbZ_ir^OQ-GW%vHk3R z?lt+FMt+$}1$NORO*Ieu6TIK$oJ&lXlM@u;xWpJN;-+zSj5T>n^371P7G+~dPoAp$ zy(6XNE-_-B$fnML5+R`#WW$vB#I(q+G*9v^>{uE z3%Xy@!gTP}WcBCx@5yy-Fat{No9^9!;pQMqu~Lv2Ixd*|`7o&BAGn`I++G_tW=BboL76hBGRrft$mcH_*bQ*hy87Irx<#JCY<7+)0^ zf}mYKS4Lbs24Tpcvk*k)H*K#k1#=m9u*vP$r8QtbmwnjtE#3Ndtgb=EeLQLaVMV3&a) zT}m&6E}d;S1rTm#xnH{CtfnQ%S7#f4L6J4I0a}i(!z6-4vW9dN-3i=~fbaF*!1$9m zhG`Nhe{ng6!Db=w{VQ5mRGBt-xLMSllYi;!$cK{Bpw+wRpra%Fx3X$gA)MX zq2h$FV3OTvgOiCAtBWPu5z4g(iS2UfCE(NiL{~_Q^c-o?yycijo$<^8yiMeF(NybhlQuno2C6yNa5(s|KKZLYp-bS|#~n zoz$`Z!HwzvCDXc_sXE(rBujU__114a>ppdsvuI@Ani+Zo#{E)rG4j!yg!NiMN?H2G zvxWpAXHJlQJSWO82jGS+(2I7$P@?0S@_!TQ>+L+UAw!AwNJ?E-2{?LOqPR>sOP5(0 zK^>X+R3?B;rQ^?4l}|h-9SG-R$O|vS1cq2%UMOY!nNmbm zk+EG{vu%!6u);$+>Iy;q>R6A}(8{Ear8{u#+O9lgkL6hY6+(S!J9%LVIlrx`*7EDX z!M3)*`m_Rg{jF`?om7EME!f3l)-CTK@HxAooGa8yTO`Yrqd_dyEFUVOu6*Nn3xwY)#&l$1$WNK`taDcNT z*va~6D&x2mi)LufIxNNIMaW8|zE2P8qJEtzoYecDvjyvcuwXT1?Nl|d<4 z-@9PFq*P1fEc>>>de$_>XKw)3?E2RdxRBd=c<^c|g8`g5x|n|Pfx)tbX^bwe0kinp z$w$2LW4rWLag81NzlH|u>{46-eRMj^fpbSPgOB=enxA`+73JfmSxa#VlO^n#TI3c|?Zvz=a|1tz(U4nk&1{kbAii=qA8Uc$y-FiL* z%n_rMArOlkK9n#^lFD(>{Av%O_sjeHaL)`A-6N0g_t46+XeXP}l?(w{H(x&r@uyW`-@4?xFxRXXJFIJnJY@IomrUXN;o-*Lv^Bs@a9 zM#)uNiq-t)UeGM)EUicN*54UEPP3cFkv%A%IxfX}?vVwtyzCBnhmz3BYW7L9CjPf@ z1uBw{qhj^KgE(hBSfcXEdWzN4@cFP^{TNB($RTLfm)`xLS&hn*Xyblw2)><^F4I3@ z>vR>^-`>_Um1}Rq&$Wg$lPa?Peqwp|u=Rdo`yh_xSdQhdmEQrfwOt_oL{L)z0000< KMNUMnLSTYM`n**D diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img58.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img58.png deleted file mode 100644 index 3b669ccc15e61ce10382c0177dd7e6ad937a14c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1441 zcmV;S1z!4zP)OMr1%;-d;LcmEAdN7dk9%kCy!4Gp z3Q{x&GIQt5@1C!F?ztxeP(f3^h5#PkoD%yl8FnBV)?*wrUAzSCDrqZGFCQgPW0jGj zu~0jPExNmK93Wmza;NmfUX4numfXmpsBjv5fQDznFiaq2P!}Qqb!Q0IQ<)sL-$(1y zK1xj!(bg{;u(O)I{}u&zXE$(dWt2zB&tIw>6$*Pmux={BVe0n^l#cBs(l#;EKZR|8 zUvS{XFe8Rr^D*HR0Weg%O6v+Cr6s|LGowX0DS8r<7YfQ%UZP$wILgoFQf~kEs9*Kc z)k)c`0?|SdwK%OO)*=%j>m0LU^IXTJnAqDhB345Xk`yj+;6Ur`Cj?T&8ZaxAd7^42 zs5USBI6;;(WL9Dsct%7=jxnx7m#r<-9c3BiqC(b`b}gEs9a5ZlQ7)#*x%}d+Wl~ou z#jG39LQy*ZQ&xNvT*m}PY;nFImabrpg&+z!tuC;eTH)PkYugCTT{(*KO*yPW-KVwZ z|3RawmlJ(=t3ZzA%Tl}aA5f3*RkEgMzZhHN1g!U^0%G|hhyGIA9ldm^eiSDN5wg4~ zvE*z`wN6&vj2mFK=8##bv1!CJQ_=KMZdI3Asc55HRo#f#a@>lz9ofGoqcUOz;xc=R zWg}=!b!@kv788{BCFJ4O)q`0~Z_e~!@QofQE$PSt)Fgdari3}Gr6N{6Py|XeDe-Ou z({w^b@;si6IQIft>t05`LUv1gw}UKnHo{pGtb#Oor|tX9A`#V<3~lO(q&`Kn{u~L> zb|{W>o8?NxJ6!Ni_6NFJIb;*Ef`Ch%G?ZvL3U5=9G|MNwT|FuKt>sE$?+8?UK-ZvB zl8`z7t5G$%3ac=twpQ-oLx<*uHgw++)t&X|wFS7`|n(zglW?(doj6mLV5QpjKxoS;e0_e_n8##p*Ruyqx7> zokDiJK#jAJm;HtZUZ&WlvwFs$KuMcy=sf!7HNZPF;p$Q*T0 zpc6!-GTx&@w}@LXf@7wKIaQz@iwjg;Vy2^b6@R)R2#-N2Zl8ejh8{X9N4d8w)XO=T z#DzQHjIaJEjA!##Pwu>9M*&eM=jSHheQu!~W!pp#SAbFc?B%Om``s`72e`rtTX$j$ zb*f}jM4x{Sa>g~i;MY1I*dJaHmE>y`!RdJiOm0{2H>T*-xA(Jd7Q;2jjI3jFy}i5FId=j z`oDP4eTFhQ%x;T@d{M+Eje6y&nL(lULJ;ksI;{%!;H{tGZ8$_|p{$)owd4JMj(WTV z;ffzf vEvl#X)B1hEVi&M>U$DLr8`{u@?w$Sy*7Qd`VADLY00000NkvXXu0mjf-z}y_ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img59.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img59.png deleted file mode 100644 index 22566069ab0763d1f54b7558c93f8425e68939a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257 zcmeAS@N?&q;$mQ6;PUiv2?Ek0K&;Hd%)r1Xc%OYQkYf@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zISrmJjv*3LlM@)2!`LhmQUV$_N3t}q=r{2*+c=zQRP18h#%w6x%sNB%Q^STTo&!}3 zK8&#kPZl#C2})oH6qizX#D8!}38SQ1GILHrv&4A?m#Yd&zqj8>v=C=V+GHTp>b=Q7 zA?ZN@!^VpGGxtv@?6zl6GoG5tbY=sqjsMCARtzVCMJG%+aN`TmEexKnelF{r5}E)# C6I4Y2 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img6.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img6.png deleted file mode 100644 index a1ff97beaefd09225db15c1eb9a29eb9d4115d70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmeAS@N?&q;$mQ6;PUiv2?EkGKrG9`%)r2CQ=vEo$k7e(331)LdGm@DE9T6ZGhxDn zmX?-^ii(_^oP>mgkdP1$4-W$a0~Hk&2?+@v9v+|$XU6@zffQp&kY6x^!?PP{Ku(UQ zi(`ny)MTKZ2gzv-&E-ryJp2MNY;q}lOdo6?_%HYAQk%57aApuhY1o#;k*aa8_K+FpKyb9PA z!2u79@qvN=0*Ge(!_NewxfmEL8W=bTXh#Pe4p@w41e4n#oC6FW_<4aeGp_{$!)~Yw zKA>|SFoZlH(KhM<3MBSs22f})K!T9<04PAge251G!2AmgA3#FP5eA@`U|?MU%vdXRhu!^Hy#{UHzd7!(*Dg87#~W+*7|e_)U<;G>ftX#>&`Otu098rh zu$h~|ls;Hq{sTh`)Ex}m3gE=aw+L>3?!WxsjJLlsu)k+uSb49JL3V!t!hQh=%^Bbc zibqzEH>R>ofXg$@+W@Ae7{IOq`)>izvD`z>% diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img61.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img61.png deleted file mode 100644 index 6875b513fe6163c02962c9114b1ab4453fa327d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 870 zcmV-s1DX7ZP)~i%k%VTdhMp2nZJHiU^8DMhF(3IKKJVue(d`B4;D_V|U)n zyx+W!nR&YadANoLMcHM%p+KWp_Xze!<%y?yP3qK8kXoX9x96(sqK#L=F86M!fnfvb zK)}1Ym@q|9UqXOFq@~tJ0Sey$rgC%ktRtkw-IuV#f{d2Hq=*(+O>9i82n-q>g79+8z1PN)6{^I+6(x`2duOwLx{7Dr zTEu~a3O1;J|r;zQC-SW}+l zYLw5F`JmCLDkU#=@bU2>O{i)7pdl2^!*b42apGp$!6fHpSKE-1 zG3M_sFskhG3ev=f~^!C{!a0A+vIjNY587q#8 zHOLsa*cI!^uJO|1faE?IzK~`;W1yI3jQ=kNTS7@h;$rs20ISLBoPj8BwFgD7cP<7? zkyw?$QZLEPwZ4}an2Y&^+M4P}(nRZ7R{Qi=;dNhW{7-J~>0f;lzx&VPgjQ{`u07*qoM6N<$f|R|VI{*Lx diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img62.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img62.png deleted file mode 100644 index d98013dabc185f03dd7a5f1d78f1039099b5da7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 480 zcmV<60U!Q}P)-$U~c7S;GO`M|G>hb$pP{XTYmxv zTsw6fK>}bx=D=*;8T|h@aQ}ze^1uE5H3kN62Il({;R-)6aBN_>1Y-Gb;B){|ydX`V zAUTScL5`uvz@`DBke`7A90M%BC&6^{e*h`uW8ipK%W#1KgculFf#%N>V1Ex}>MOuJ z`2V;6{|XG{438LEfawL2Vz?QmusvsB$iNaF3JiHa1sMN3_)kcPu(|sK#B{SV-VVhw6M5ICF^xdffC!LqfU}2b{#&Ppp{pkXr`3#<}elF{r G5}E+lYeL`v diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img64.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img64.png deleted file mode 100644 index fc53a19ebc3eea1f6b9e85386d8c128cf1f10fad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmV-z0h0cSP)KF=h!$cOf{hMma>kQohiId=)Q?JxE{EaBm#yv&Gzna zMn-Ya$7)F{EE{51|EsIU3MkMuOV>}bKt$`rtex3cPLNKU#B1|#tqMQeemZWQ&`kE3 zW683?EG_U9T*XGk=Sp@UjxkRR{~uL*u(CE zml%}xmRt7XAt0oPL^e_4L`1|>M^ti>4uS}K*zrG@Wznm%2S1LTC~6L-eD&(Hr)Tpa z>qYj*boHxOzk2=Z)vJ$P02h6HQh*tNhZ2Xo5aOFTjIz{H=xAMeKYR;gdXI#;49XDD zROIw5A;NM423>3>2q(Z_Xw8%5Erya;X&H{lVIYeZFp_`;3UX`W zvJ3OkgT#nR&l9%kn?0HX3=ks^XE2db!|}uvXLKr;40>nu3xfw_G3o* zF~JGnPz2hNOQse=3%Bf-+iDbrRM@>qxeIxM8<+roF=evhB{|s%nZvK@#GF7gR+}<* zjmq=1I|cln(qNJu%k7!N;6kZu_3SBhY;}lJDrGvBHF~Lz1pS(8JU}|?U$<>mn80c7uYSwciGeEgT!HIEV_}F!p;@(D`6L-*Y!cHcaNDw5M z3W>1}@T!_soV~t3b$suWJy}ZlFgP;Pn}b>Nrcv)3vC`Nj0M!eKR;yD*BX!L7s_dre zV=n?H;L$EEhxkv?xUo+|YjblmyI3b)Ttq%C=e<3ys=eF$eRdu8V9oofMzku6r**C# zt6n3|h~hN{urjgA<{liKLWo-EFo*d1NGOfUAP_FM_aMmO6Ib6N=35g8kEd2U$e_pI zILTKX;`cI_ug+UPFN$I2%{ZvhI(q$_|yH{)b%FOIF_$WbZS0KkhQC3McT~uBm-& zh@BhFAFRsatm;JQ*nxFZcqq=*iRY?}&)rJX9!bObU2g%F>cpigW6!NPVOw+p%_FK4 zrHXTP997S(vP%1x))(2U*3^J|=)~969@l?197`0uo8X*K5;8L0+x(`O`x!nhy724C z!u9b%r9(H7NsL%=h@VQoSE|-&RvVaQoeEsHg>k7VR~9DwGOKim>eC7P8ujn$(H!%ESU@&0d z1rjV+BfPtYI zEWrN%|4jiP%_qRX1P&Vpz66L;&WWr*)%ie^dQi=OfNr4%b=^-S003_RAWE-70VeaAcXkfR&m6XLpg^X3&RR?L|*XTpRD zEiEk-6%{!-ISB~~At50)HZ}$Z1}Z8l5)u+TJUl=hbG2Sw2U3hBL4Lsu4$p3+0Xe0f zE{-7_Gn0XO9xx}d@v*hFaq-OI;z>Agib*i(LP7)MH?AH&hb%#PW~~P)5129&UNBGM zzzxnc!&aLFgWlGNg9WX=3Dz?*4;d_O ne9O@B^t+y7@8i4HY-|i)SVbq;O-beiI)K5`)z4*}Q$iB}8uU@b diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img68.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img68.png deleted file mode 100644 index d062bd2faaf9aeb30b4d5384cf407cc03a57bc39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmeAS@N?&q;$mQ6;PUiv2?EjrK+MO&%)r37m~EpzkYf@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIT@ZVjv*W~lM@miqyx34Buq$rkifP{BBD`AUP3}jLZM-LA~Q3y^^5s8XFtA zmZFA3cO+R5PQ>gTe~DWM4fW9dsD diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img69.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img69.png deleted file mode 100644 index 75a6de972310827368f5fd7e9854c123b6dfa400..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264 zcmeAS@N?&q;$mQ6;PUiv2?EkmKrFz*%)r3d`@;z&VG!UG;<|bB<`pYe%$YN1!h{Je zEiDxl6*)OM2?+@yAt4?f9yT^M1_lNyDk>5Z5X-^{<9eLXEQS&XWPN}kBetb!My)Kpyqg!LG_Icqco2QBhX0zopr02ex6Jpcdz diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img7.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img7.png deleted file mode 100644 index aca50e8fbcf1500dc7490d9fab1ba3fba7dc3bb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmeAS@N?&q;$mQ6;PUiv2?Ej*K+MO&%)r37;o`^JK#oCxPl)U0&6`)OSTSeLoCy;q zw6wHTR8-{T@*cccXsHmt&NJ#MT@BlTviab3JNHLZK`2{mLJiCzw zOF*_*ADIBb1R66#*@gXy_bAynw zGPBGH_J)&do--v;s Y)lyM-{i=p|pbHs1UHx3vIVCg!0KF+${Qv*} diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img70.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img70.png deleted file mode 100644 index b6f73b5b398c3dd3e797249fb8bb7f2fc1f21496..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmV-X0j~auP)WeS**tO5rZ7BFn! z|NjB3|Gxkm6Oa!93LFMPJY1N1@Bxr9e2f=Z8(0qf{}1M|F*L9rV03`W<^KfI9Wd1o zfOr!>jCVknVL=lIY4*VY_kIZV|NsBZ3=I3f1KI0;K%}7NcQP>a16|Y2z#y@L0a=FW z6N6O)1B0qR19RvDsA>PdfGDmC3>+I67z+3t5_t+xtn*i3VBNsL?7-E*kc%qu|Np;9 j3@rb@u_g3F!W04ke{eOrL84yr00000NkvXXu0mjfp=5uK diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img71.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img71.png deleted file mode 100644 index 6ab7883116589af61f32d3834a3557bd32060ac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmVc$0d43w9Et@~^TVp8?tgjE`3mUVTuiH7_G`O*_2$~|s_=pdtIqDxniTA)A2z*%k1 zcscLw>)JIxBReSVHZbXlQ*?4x(Zlrl$nuZhg=cqZW1wIED7F9q002ovPDHLkV1gjW B;+6ma diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img72.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img72.png deleted file mode 100644 index fd57665de5ea039908ed41690cc47e6526d0222d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 551 zcmV+?0@(eDP)C)?mhS3_I&_jWJd;b zXvp`GgdKX;fI$jA>{&rp%r=mdxdm8a;v~eC%rd}&mR0#`qEMu<%zSDnaQB~Su8~!k z+1^}Xi6^{(@t{kq<4I1rC`R6t-9klm$vStK5pqrWqzxLG8lI?wL^ z3f>fs3D5G;miAGnC1?Gu8F>nDa3y3-vIF!`A8A#da?*XW1Xk@xFop$B*Q#Nx=Tf0y zGYTG*q*Yjlrx}?r(nnOF5J@#LgvcC+dutex?E~FU{5+oMUEr6HyhvlDZ?Qy&aGL|0 zT{@VwJ*0H6h>cj7dQ;XPKS}ddSR~u+!dP}fN(rQQu+@(!<%))VX)+P!r#niB6Ci^D z_+c!gE<`={nscW#d@rv=9cL@4L5yZqEgluzniXeKX>?J#gmQ|8ZSol3m<&^|i=_u- pUZ>RlCJJAN%s`6&yy^n~8t(~!X2NPd5TO77002ovPDHLkV1o1|?qC1_ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img73.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img73.png deleted file mode 100644 index f7919a16084b546fe147f5b5cffffcca6206f527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmeAS@N?&q;$mQ6;PUiv2?ElJKrF|?%)r2?{xE72kYf@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIR`vl978lFCMPg3)v<{jSi_er`ez^i6FrB??F@Bob#-iEVFH_{KV&cyJ<*WM?9Qxy zm_^`oBhO(bfwP}tMy8QJ(M+1c(fu(h#mV30nn z-qxna)~2)IH`f8BH$1mPX4n}T*rX&}VBt2001SBS zz))_GiMcZj^az!Zkl5(N8VOXy!sk17qNJ2kfmAW{N%sHm`TN=VvI1BHkjQu}0hg#0 z1i0e65-%|^=5Yvw%j|x{z*ye!$uE!@=MMWe0U0yZSCu(k2YOGv3QIi`hq3`|mvZ0& zL>YW2W`3#D(8iA#5cJ2ktOcio#d;J~NN_vKqoffx-_XK5v5+up3=B)avD8yjb6wLZlV$PO&$^ zPFLqA5zgz??WBoLg@*|O71B)S4?tf>ejE&)UC>)?_ZiVuaV*heR9nOh-5P&J`NL}` q^VjyqU--ej%`f#dncuO&zrrW2vPq(Sz20sB00007O2 zidamn1LbdbX=o48Rsvi=7t{xGII`zv!8_wiIUm=s0(9V;6mm@&L}v6mn8XE>EIq?- z1rFY1eCJT^E~_pW1<8Yz`3ir9?zun7+zJ%&2pdaM;Knpp3W)gCrXi+9sKq7V<^siu zvIfN{HQyHYrRC6*Ve}-{OwwVzO(ME(3R}}jRt60~H8?oBN ztENMU=pN|5aDMwLHQ~5V^j?J;NTuW;KU4V}Xz|x+0*hUIX0bL{2*Z&IyPCC=8KK5a zEZ33U8YbzT1kb#7Vs7qa7bU0Bj~{&xSLTr~m)}07*qoM6N<$ Eg24OXUH||9 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img76.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img76.png deleted file mode 100644 index fefac6a4c95f91f8c0233d72251610aedf31593b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmeAS@N?&q;$mQ6;PUiv2?EmmK+MO&%)r1{x;Wbl$WagQ331)LdGm@DE9T6Z)6&vX zQBjeTlar8;5E2sN;o)IpV`E@oprWDzRNExmtpubPOM?7@862M7NCR?wJzX3_IA$g% zI56b78I(3O7BVt7Gy7~|>!>_uuz(?5;2__jISz-On=ms^X5?pW%#zsz+Bgs1$ zT|2Mt=VMkl`ue~D&PPQ)ZJrza7z$Y>Zb&t3NqN8Djg5`r&0MZJv%=HSK=T diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img78.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img78.png deleted file mode 100644 index 14727cfe13901c6ddcfe71f74b8bcaca478bb2c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?&q;$mQ6;PUiv2?Ek$K+MO&%)r37PU2t&kYf@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zImMnXjv*W~lY!bE)E#JGh+$<*n3d1O%siWAg5rh-MlOy5V~YjdhC5C*uH;{n&{f>T zY|YFpJmKJ>0|%0KG{!SHH(%Y)$E-2=dSj!o+8IMhk1zTUT0canZ`feAp`nFU;)ayO o4+)osoRjzJdwF=?r5Yh5ta7 zp#em*Fnl<`@c;h@2DbkbK)eD5hHvf=B|JRcrPTBqc z|Nk~%U^#%t0FDU^93L2X91sG(7}^*vAS=;VU|zw%`~MqQ4kY6c!FGTF#n#mf4BZfx zLj>553=jAjK;8oe1`q)GET0${qM@oEFoKojJ>P#A$qW{t!j}qAPTge&1^`mRJpG(S R<=FrL002ovPDHLkV1kuRh!g+- diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img8.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img8.png deleted file mode 100644 index 4e8b5164f4163a8071b7dbc525159849522eec36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106 zcmeAS@N?&q;$mQ6;PUiv2?EmWKrGA1%)r2?eeKF`Acrl$C&YF0=FJik5|3{0Oa_WD zmIV0)GdMiEkp|=ld%8G=aLi0jIKaR+!%2jJFGP<)LW9ARb>5p8pfrQ0tDnm{r-UW| D5U(0j diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img80.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img80.png deleted file mode 100644 index 10bad73f92c3daa9ad58230ba6db50e19eb6ab58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmV;20eJq2P)D;JOj;`A~w{QtlYVzJ=YixseK;AlVe}a@$*_Vb zu%Ceo)$1G#Qm86a7~&W{D1e##9K1lXz>S?HU;|jdm4^dJIy59OTsXk+|NnmmJ_cr> zvJV;m8F~Z2D%f5hfEdGMM=LMT5=1pHFnAxpEnj+ofkWN_r!*VGCx(VD29|~g>_CI~ z|APPnh%0Zv1CnQF*rvktiGhLBfnNYg8>hiB1_>a|xQL-g0hHeOjZPpN%Ww9DeFKU` l%n$JSf^q**e9}V{005n7J9Yo$N%jB$002ovPDHLkV1l&%l~4cx diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img81.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img81.png deleted file mode 100644 index 28cabf36f7beb606e2c84cebab5100075636e52a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmV;V0bBlwP)yj~0|o;ICOaxRfl{ymg~$DYVLhgr2F3+&HphYnFwNw^`T$7%=U9*cq$UJ_ z1=(2=3c!pu5WxzR{{Ml2g@X#Bm7fDh{DZLnv-N)fGoF72#)%u{{uq|v10K1k1_lOi zaO(PxUt#G11`c@#2%8Z}p$8vB1p@=vfd3$2Hil0O3SG$ZjGq|}fLK!)J|Y{)&ah2| z=@XK`WS#`Z1`y-3P6LuK<06J01ukTf&-o735EhYHK>AMraSBHP9smH}?MVho-x((W O0000r^ At^fc4 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img83.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img83.png deleted file mode 100644 index ab36fc5f27d748e491e9a2b6212e4f2f85bf8ae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300 zcmeAS@N?&q;$mQ6;PUiv2?El_K+MO&%)r3Np2PVE$T0};331)LdGm@DE9T6ZGhxDn zmX?-^ii(_^oP>mgkdP1$4-Xp~8v_Fa6%`c;2?-t^9-yXIk*DVYDaMi@zhDN3XE)M- zoYkH#jv*3LlM@&i-?7Vc9pGX6C(mPWAT;5?fdkhWo`3djxR4{n^WT00lOz*2&?LzZ z%#3+#>>S;#4PN1vDRMWMEFR2xaNyj5|NreT2=egwIM`h=U}R&HJIwWmDS@w;n^9U~ z&A(EKgy|1U6CNB{*qLlJ;YIv`Zk@Dp1J*+ca}ON4)$q#Lpx?QnaV_JE2tkG4_8c_~ vMm`4|6>t7tKe4g#ukI%AD;9NJ1`G@mO$t*be;4Edoz39s>gTe~DWM4f30i3& diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img84.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img84.png deleted file mode 100644 index 4348d1bc9a2b68381e2c2442e7a48f8ac91d6dfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmeAS@N?&q;$mQ6;PUiv2?ElpKrFz*%)r1X!Z3RWkfR&m6XLpg^X3&RR?L|*XTpRD zEiEk-6%{!-ISB~~At50)HZ}$Z1}Z8l5)u+TJUl=hbG2Sw2U3hBL4Lsu4$p3+0XY*r zT^vIsrY0vaFy*zg^PFHf5q+S6?S|yRDRR3kvYAh}mA{ubz-IHJq0=wpkwbWgY=KdM zA;Z>Yo}?GdlN6$bL@X9=V%78#U|W2sjq`{k2g~XMeTfgM!Wm5d$1=MJC>@)yv7vFJ zuojDGGFRn+1SxLOsPE?(T{arWBnsc?%UZ*ExQA^UvxZaMd!b7f3g_CH7@|KZSx>un RVK2~e44$rjF6*2UngBWiTK50| diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img85.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img85.png deleted file mode 100644 index 36503d293c3c69b59b73057353f6f49595426477..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?&q;$mQ6;PUiv2?Ek`KrG9`%)r2C(fe^FkYf@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIdeQ+9780gCIhuSc%Gc_BC&x%j*m^{!21se8yKYv5*St`YbRJRq!cHIHnORym@t%b zI#kvi$vDVuA;%>9>;PZNO#>r?f=|qn-|pma{gD!Q$<8BCZftmhJs?N?V&1Q#7mgJ$ z9(fgi;0i-Y9LsG+HifeX4p}uyKj~rr!y}VW{?X`2!-_r6fAbq}*w6mz&u@`LA2#O8 f$@^Jm?G|G&TPS&tWowE9(47pPu6{1-oD!MmgkdP1$4-Xp~8v_Fa6%`c;2?-t^9-yXIk*DVYDaMi@zhDN3XE)M- zoKQ~}#}JO0$q5M$(t%o25(Ls8Brq_BEjYo-X7M1^11Og4!1#wp+9And(LePGzZq1@ z7(zL}|NsAAyeV?Cf|-FqZA!pyo}>cZhE*TK8!r9d-=M*u-_F1G+RB-NKnoZ=UHx3v IIVCg!0J}^_HUIzs diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img87.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img87.png deleted file mode 100644 index 2ec6fd2d561c3ff2784eda687f3666ee6114bf31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmeAS@N?&q;$mQ6;PUiv2?EjrK+MO&%)r37m~EpzkYf@x5)wQ-JU~saB2Ui)Qj8@*e!&b5&u*jv zIWe9tjv*W~lM@)4S$WpT@XQf+@NrYfOK4!;FoQvz*=WZBMir(87HMW&DxA9vH~BB4NgcjY5Pe?ml1&b?sU_m!AMg+?1BZXW`~ZT~9Xr!Ufcd8Iy8#i#^H)eI+@eJ?8J*9fIyA`Di zI|Eh($07*qoM6N<$f&(<$%>V!Z diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img89.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img89.png deleted file mode 100644 index 43f70277aafcf907d7fa60f4eaace33bb80c7ad7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmV;&0XY7NP)NPAB@XCfj4%f5gXe5 xs7NnhUlyBm9~LBM9Uj|PSzW23PVkSPV-8^FNt>~DMqvN|002ovPDHLkV1liXy)FO% diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img9.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img9.png deleted file mode 100644 index dc7dc611604a097ee71a192eb2b10edb4669c416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9iTP)SV88|f3K$p~6i~%D_^>KvVh~{9aR9N{E-*A;Re}N71=tuC zFfgzHnY5700Y=Td<+voJPwe>ED#Eai!T5r z9)Rt7AOU1Te7Av*fs0|m0~Uw@Ac`AmSONpkqjUyb?_M$Zy;ERt1M?UsKtyLTFct#c z)&SvgD}YGm#~cPA3I=@d7WBPhU|9gxzKG)@1IYgjY_B!~84o~$aRLmz0$@SrmCt~D zV8Aovy?ep}w2FZvfbSi{x_1oh1<0;g0HHikoW=^amV@p=f(`(f_bcT@n!KU_0000< KMNUMnLSTaQGl1a$ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img90.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img90.png deleted file mode 100644 index 289228ab3d94d142205e88dddab59d0a6c237b03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmeAS@N?&q;$mQ6;PUiv2?EmcKrFz*%)r2yeX-LM$T0};331)LdGm@DE9T6ZGhxDn zmX?-^ii(_^oP>mgkdP1$4-Xp~8v_Fa6%`c;2?-t^9-yXIk*DVYDaMi@zhDN3XE)M- zoLo;A#}J9B$q5eZJtyYy2P83f3EBDm`!D~ak!M?Pz(m$oiDwB6;g$>ZHdL;0aAN4N zRCh?3k>FLqW1euildY`2;X>GdE1n5+P9AuD;6Ue_Jhr}*2D-ohTRTXs5uV`tNFX60 j+d*u?o4?mPj<7N)%n;WLX)%chTFl_->gTe~DWM4f$5B$y diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img91.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img91.png deleted file mode 100644 index b541bcbd2ec5351428a05f754bb656b768d39aa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467 zcmV;^0WAKBP)}Xj3P6W^V8G!@DuMk7rr?4Gu+u;UKTL1}KhVoy z$8sX+;sUt}e}zytARGl>5mrkc6oegcC5h#i2Wnj2;d2QYd;fdBu0V5B<1ggNgCAXI<( z{}W9=#1IVUA`3I&_TVUBVC(4UNWc_E$yNMNULeCmP}m27*ep*O=P~>T0(7;&l>CrE z<^lsp1CYlG7lX($qO0XiVBl_GkO%QvA%dAZ1(22ehu8s9oB#j+L}ceN31G%K%-rXQ zJPKCJvzW130J~a_0}L9Mp}fu5lpvdn1UyJk%aVXs@hG4i002wsQ>boDYmEQ^002ov JPDHLkV1nlAy<-3X diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img92.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img92.png deleted file mode 100644 index 974bea2a7df1cc09edd809446394810067a4e6a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmV;(0XP1MP)>-2z001yhOjJd)v$LqE zsGOXfkdTmsgoJo_cx-HJU|?WWR8&YvNIX0|FfcGABqSIZ7z_*y0002$S<9XP0004W zQchCL zHW~0zIRMjUU8MqLDUbEQS;2c%ff4tCg)Mc**lwIY|N1m7@vUE1WtlBO6nd;Dv-u*Cj+NF^zc|A_#`b94kqp~#y=&XYN; zMAGJ+&A|ohlh=gje&uIii(Pagai){4^Y#q$kX$H6k|z{UoeBivm0qZ zPPC_sV+hC0aFv2ksm=z_~=a(o&*_oFaLJ}yay6?2gXT}}I|9is RdVtn2c)I$ztaD0e0svGzMy&t< diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img94.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img94.png deleted file mode 100644 index 242c5cd6b56ae601aa87bd8aed5a4da4dac460a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 953 zcmV;q14jIbP)$A%)tDVO2(h@MrqDe1A4=42EohVx(%XK9*1uqcG1TS&*52_x8C&}*2yT(E5X)*WgsGI?B9 zxco)kRWwY#n-}059@LILXrp9uS5=_A$8&nAC+SU)GaGnuq2QGV^(B4ECT1UwU6SVn zv~9I_AZLyS+gZ2O&I?>G@A0L3Fu)z`Co~`_-nt^k8<*9IjnQ|$DEm^-DP})Lbd8Dh z#$efV@~ma<3e`DONHzr%5<14!^#_!|FP@J2%Ge<8nuP1@Q94RnBjfPLVlV+i=!Mfv zYC2Uq)SEn*5PgRK05$ZN4(=a=^A`U;dru}^9$H9z<5MMn8UH!~xavJR3f~@0rZSMy z=!8pK-9i*K2o#AqOmurAfwvj^c62ZY4%P)#H@@5HvIp zX5a>~3_vUaAZBdfVEF$5Yz#vXh=?a-3Kqc0PylB;fJtsX26l!DU?v*_I}?!n&;LPz zVFFl$H$j04s`?aM-$yd+#Rc|n_zz=pK+NT46o83vLnz}0xN^1xFtw?XA%O`Z((oYx zr0fG9;{jmE{09cmhlK~af#LSWe?tP)?RE?aoDkLnewaxQ6w!Udvw#{NqB*D+VBk!| z5aky@;#_BN!J?661A@)|*slS>`ws#ifGKRD3X+Klj4v<>;T4caaC#UR^b1&J7}y*x zASvNVJOUI;;YAYKSiry)fMyauXX00000NkvXX Hu0mjfjwhIm diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img96.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/intro/img96.png deleted file mode 100644 index ecf71b969eacea515374a8491e2cd9e744edcf6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1012 zcmV#qt_mUq%!y43k;6&_VXsgSMGjI0 zEe_Jy$OTf_ZKEJUyh3aQlOlaCB34SyB9JauL`V^IW3Wi&suvN1tg|z-J3o7~mqbJe z`M8~#_ue;eX5YSjI|m>@^8l*Qj%6QKLahbqFjK9_omVD9cNMRK_JX|=2+oA7C%SKVwI4~1- zw0OKA-3;kGk&5P48W29s5GIW%R_SnDecH1w!MRh`|R4!OSaJ9ge zK_b37z?C_IPz9yvF6zuv3*wzIztF6j@2PZ;CRVd*J*QR<4!XRv9+fJQnkw*AtH&}w z0|`VbLh>1RA^C1Zs+b$z?Enz&hh4T`HN+L&RIX_4aN~S_qPPZAoF)<97+nhmt;LlF zDMC6oZa1Ope&c3KNtwt|-j^=f98uJE_=P0y8QC#|p*9`ipW>1|n3Kf)bn^)Bv>4U1 zbaYHl`PfA=lL2fI(Zqj}nw54Uq)=03& z1u2dN`U2uZR2VsY?4@P1mi})9`m)$RoIpC7?dw1-fqDI6&kBw<6WqN6f33UyEc1Wi z^@h?ip)!~s7d36^)doD7)7}1*hf1#{MZq%LFj~vPGGvWbK|Wbi^u2iu_Qr~^@GsZW z(GmKNV&R6;E2%DhR$E;^_o?)Ab`i|qikf#_?UYo)6zE&G`tK?0rcE0;(5C?4LAv?! ift+4E(5xdIPW%CfQ_aIAY^y2&0000M%Son7^sNK|8IFs^>MW|L-V4CAw*3FIYD!#vyW#(4DlPR!QT%(lz zXhSKJ(RuFz?itTQ9mH%89AKWvDp>R0p@C6Eal(qZT}k&?JEE4cYb?4aP;4o*VMoJn fEz5VyY#A6<_e+0XFF#2b=u!qxS3j3^P6=#gis5@NhP8Ffed@1M@jPP-qdc0K*5CXNaWmk`n{9108{fbtg@AM_a5G=K`@m;j{y zg8(q(WEi*`fbxCMF95?66r{}e=OHJ|mG>HfTKE(=9M~DyK>}0Qo+C-K9snE3_I@Jc he+U0hEKN001yhOjJd)v$LqE zsGOXfkdTmsgoJo_cx-HJU|?WWR8&YvNIX0|FfcGABqSIZ7z_*y0002$S<9XP0004W zQchCS5dO9?X-wH{3Mz;oc>?JRDBcz9BgD55Jeac= z#V7FKS;QBxh$lhl-Aj(*DTN-Q9@g1O(x$b+pW;RQV6r>=?e5I(HyfZpi!4NHx(;R| zIIkgmoRI;2GNq00QP5}W(^3pOJf=(|0o3}2}_~zzcfoE}C#6j+x@K;OR zRb+yaLvKtyY~=kX;1Y@Rn0xB&7c!d%ZUXU2?Rvy+MO@3{bD@)rhECdft9YWlIo<_> z5wmE>?UGS+8A@v`c#x!>?UG)am9w(jA_Hk<&D0(iF{TS6?#_9{zmA>u9ev$>x5w^U zv{fP9=a~H$i1^m(C;Mbyj010}jKZi2@LVx_c<#LqwlUnFifL-Cyk=KfpUGEmBwL SD%NoT0000