From: wolf Date: Tue, 18 Jul 2000 14:45:25 +0000 (+0000) Subject: Finish step-9. X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9e1a3025b36bac21893d638307cee01b3fc9976a;p=dealii-svn.git Finish step-9. git-svn-id: https://svn.dealii.org/trunk@3181 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro.html b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro.html index 1518606e43..be47bc32da 100644 --- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro.html +++ b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro.html @@ -1,3 +1,624 @@

Introduction

+

+In this example, our aims are the following: +

While the second aim is difficult to describe in general terms without +reference to the code, we will discuss the other two aims in the +following. The use of multiple threads will then be detailed at the +relevant places within the program. Furthermore, there exists a report on this +subject, which is also available online from the ``Documentation'' section of +the deal.II homepage. + +

+ +

+Discretizing the advection equation. +

+In the present example program, we shall numerically approximate the +solution of the advection equation +

+
+ + + +\begin{displaymath}\beta \cdot \nabla u = f,
+\end{displaymath} +
+
+

+where $\beta$ +is a vector field that describes advection direction and +speed (which may be dependent on the space variables), f is a source +function, and u is the solution. The physical process that this +equation describes is that of a given flow field $\beta$, +with which +another substance is transported, the density or concentration of +which is given by u. The equation does not contain diffusion of this +second species within its carrier substance, but there are source +terms. + +

+It is obvious that at the inflow, the above equation needs to be +augmented by boundary conditions: +

+
+ + + +\begin{displaymath}u = g \qquad\qquad \text{on $\partial\Omega_-$},
+\end{displaymath} +
+
+

+where + +$\partial\Omega_-$ +describes the inflow portion of the boundary and is +formally defined by +

+
+ + + +\begin{displaymath}\partial\Omega_-
+=
+\{\vec x\in \partial\Omega: \beta\cdot\vec n(\vec x) < 0\},
+\end{displaymath} +
+
+

+and + +$\vec n(\vec x)$ +being the outward normal to the domain at point + + +$\vec x\in\partial\Omega$. +This definition is quite intuitive, since +as $\vec n$ +points outward, the scalar product with $\beta$ +can only +be negative if the transport direction $\beta$ +points inward, i.e. at +the inflow boundary. The mathematical theory states that we must not +pose any boundary condition on the outflow part of the boundary. + +

+As it is stated, the transport equation is not stably solvable using +the standard finite element method, however. The problem is that +solutions to this equation possess only insufficient regularity +orthogonal to the transport direction: while they are smooth parallel +to $\beta$, +they may be discontinuous perpendicular to this +direction. These discontinuities lead to numerical instabilities that +make a stable solution by a straight-forward discretization +impossible. We will thus use the streamline diffusion stabilized +formulation, in which we test the equation with test functions + +$v +
+\delta \beta\cdot\nabla v$ +instead of v, where $\delta$ +is a +parameter that is chosen in the range of the (local) mesh width h; +good results are usually obtained by setting + +$\delta=0.1h$. +Note that +the modification in the test function vanishes as the mesh size tends +to zero. We will not discuss reasons, pros, and cons of the streamline +diffusion method, but rather use it ``as is'', and refer the +interested reader to the sufficiently available literature; every +recent good book on finite elements should have a discussion of that +topic. + +

+Using the test functions as defined above, the weak formulation of +our stabilized problem reads: find a discrete function uh such that +for all discrete test functions vh there holds +

+
+ + + +\begin{displaymath}(\beta \cdot \nabla u_h, v_h + \delta \beta\cdot\nabla v_h)_\...
+...v_h)_\Omega
+-
+(\beta\cdot \vec n g, v_h)_{\partial\Omega_-}.
+\end{displaymath} +
+
+

+Note that we have included the inflow boundary values into the weak +form, and that the respective terms to the left hand side operator are +positive definite due to the fact that + +$\beta\cdot\vec n<0$ +on the +inflow boundary. One would think that this leads to a system matrix +to be inverted of the form +

+
+ + + +\begin{displaymath}a_{ij} =
+(\beta \cdot \nabla \varphi_i,
+\varphi_j + \delta ...
+...
+(\beta\cdot \vec n \varphi_i, \varphi_j)_{\partial\Omega_-},
+\end{displaymath} +
+
+

+with basis functions + +$\varphi_i,\varphi_j$. +However, this is a +pitfall that happens to every numerical analyst at least once +(including the author): we have here expanded the solution + + +$u_h = u_i \varphi_i$, +but if we do so, we will have to solve the +problem +

+
+ + + +\begin{displaymath}\vec u^T A = \vec f^T,
+\end{displaymath} +
+
+

+where + +$\vec u=(u_i)$, +i.e. we have to solve the transpose problem of +what we might have expected naively. In order to obtain the usual form +of the linear system, it is therefore best to rewrite the weak +formulation to +

+
+ + + +\begin{displaymath}(v_h + \delta \beta\cdot\nabla v_h, \beta \cdot \nabla u_h)_\...
+...h, f)_\Omega
+-
+(\beta\cdot \vec n v_h, g)_{\partial\Omega_-}
+\end{displaymath} +
+
+

+and then to obtain +

+
+ + + +\begin{displaymath}a_{ij} =
+(\varphi_i + \delta \beta \cdot \nabla \varphi_i,
+...
+...
+(\beta\cdot \vec n \varphi_i, \varphi_j)_{\partial\Omega_-},
+\end{displaymath} +
+
+

+as system matrix. We will assemble this matrix in the program. + +

+There remains the solution of this linear system of equations. As the +resulting matrix is no more symmetric positive definite, we can't +employ the usual CG method any more. Suitable for the solution of +systems as the one at hand is the BiCGStab (bi-conjugate gradients +stabilized) method, which is also available in deal.II, so we will use +it. + +

+Regarding the exact form of the problem which we will solve, we use +the following domain and functions (in d=2 space dimensions): +

+
+\begin{eqnarray*}\Omega &=& [-1,1]^d \\
+\beta(\vec x)
+&=&
+\left(
+\begin{ar...
+... &=&
+e^{5(1-\vert\vec x\vert^2)} \sin(16\pi\vert\vec x\vert^2).
+\end{eqnarray*} +

+
For d>2, we extend $\beta$ +and $\vec x_0$ +by the same as the last +component. Regarding these functions, we have the following +annotations: + +

+ +

+A simple refinement criterion. +

+In all previous examples with adaptive refinement, we have used an +error estimator first developed by Kelly et al., which assigns to each +cell K the following indicator: +

+
+ + + +\begin{displaymath}\eta_K =
+\left(
+\frac {h_K}{12}
+\int_{\partial K}
+[\partial_n u_h]^2 \; d\sigma
+\right)^{1/2},
+\end{displaymath} +
+
+

+where + +$[\partial n u_h]$ +denotes the jump of the normal derivatives +across a face + +$\gamma\subset\partial K$ +of the cell K. It can be +shown that this error indicator uses a discrete analogue of the second +derivatives, weighted by a power of the cell size that is adjusted to +the linear elements assumed to be in use here: +

+
+ + + +\begin{displaymath}\eta_K \approx
+C h \Vert \nabla^2 u \Vert _K,
+\end{displaymath} +
+
+

+which itself is related to the error size in the energy norm. + +

+The problem with this error indicator in the present case is that it +assumes that the exact solution possesses second derivatives. This is +already questionable for solutions to Laplace's problem in some cases, +although there most problems allow solutions in H2. If solutions +are only in H1, then the second derivatives would be singular in +some parts (of lower dimension) of the domain and the error indicators +would not reduce there under mesh refinement. Thus, the algorithm +would continuously refine the cells around these parts, i.e. would +refine into points or lines (in 2d). + +

+However, for the present case, solutions are usually not even in H1(and this missing regularity is not the exceptional case as for +Laplace's equation), so the error indicator described above is not +really applicable. We will thus develop an indicator that is based on +a discrete approximation of the gradient. Although the gradient often +does not exist, this is the only criterion available to us, at least +as long as we use continuous elements as in the present +example. To start with, we note that given two cells K, K' of +which the centers are connected by the vector + +$\vec y_{KK'}$, +we can +approximate the directional derivative of a function u as follows: +

+
+ + + +\begin{displaymath}\frac{\vec y_{KK'}^T}{\vert\vec y_{KK'}\vert} \nabla u
+\approx
+\frac{u(K') - u(K)}{\vert\vec y_{KK'}\vert},
+\end{displaymath} +
+
+

+where u(K) and u(K') denote u evaluated at the centers of the +respective cells. We now multiply the above approximation by + + +$\vec y_{KK'}/\vert\vec y_{KK'}\vert$ +and sum over all neighbors K' of K: +

+
+ + + +\begin{displaymath}\underbrace{
+\left(\sum_{K'} \frac{\vec y_{KK'} \vec y_{KK'}...
+...ec y_{KK'}\vert}
+\frac{u(K') - u(K)}{\vert\vec y_{KK'}\vert}.
+\end{displaymath} +
+
+

+If the vectors + +$\vec y_{KK'}$ +connecting K with its neighbors span +the whole space (i.e. roughly: K has neighbors in all directions), +then the term in parentheses in the left hand side expression forms a +regular matrix, which we can invert to obtain an approximation of the +gradient of u on K: +

+
+ + + +\begin{displaymath}\nabla u
+\approx
+Y^{-1}
+\left(
+\sum_{K'}
+\frac{\vec y_{K...
+...}\vert}
+\frac{u(K') - u(K)}{\vert\vec y_{KK'}\vert}
+\right).
+\end{displaymath} +
+
+

+We will denote the approximation on the right hand side by + + +$\nabla_h u(K)$, +and we will use the following quantity as refinement +criterion: +

+
+ + + +\begin{displaymath}\eta_K = h^{1+d/2} \vert\nabla_h u_h(K)\vert,
+\end{displaymath} +
+
+

+which is inspired by the following (not rigorous) argument: +

+
+\begin{eqnarray*}\Vert u-u_h\Vert^2_{L_2}
+&\le&
+C h^2 \Vert\nabla u\Vert^2_{L...
+...\\
+&\approx&
+C
+\sum_K
+h_K^{2+d} \vert\nabla_h u_h(K)\vert^2
+\end{eqnarray*} +

+
+

diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img1.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img1.gif new file mode 100644 index 0000000000..dd705d2187 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img1.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img10.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img10.gif new file mode 100644 index 0000000000..f3cde04f2d Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img10.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img11.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img11.gif new file mode 100644 index 0000000000..a631c6f324 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img11.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img12.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img12.gif new file mode 100644 index 0000000000..bddd75ba28 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img12.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img13.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img13.gif new file mode 100644 index 0000000000..6179400543 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img13.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img14.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img14.gif new file mode 100644 index 0000000000..866666d49c Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img14.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img15.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img15.gif new file mode 100644 index 0000000000..84b5e298ec Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img15.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img16.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img16.gif new file mode 100644 index 0000000000..b2ba9ddb74 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img16.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img17.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img17.gif new file mode 100644 index 0000000000..6962b2cf51 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img17.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img18.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img18.gif new file mode 100644 index 0000000000..457affee35 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img18.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img19.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img19.gif new file mode 100644 index 0000000000..6bfe639801 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img19.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img2.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img2.gif new file mode 100644 index 0000000000..4525a58002 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img2.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img20.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img20.gif new file mode 100644 index 0000000000..2a086f0644 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img20.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img21.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img21.gif new file mode 100644 index 0000000000..1f37526aae Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img21.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img22.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img22.gif new file mode 100644 index 0000000000..4ceb4b342d Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img22.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img23.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img23.gif new file mode 100644 index 0000000000..70924f4cff Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img23.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img24.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img24.gif new file mode 100644 index 0000000000..c0106aa4bf Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img24.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img25.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img25.gif new file mode 100644 index 0000000000..d1f217e71b Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img25.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img26.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img26.gif new file mode 100644 index 0000000000..d0d05bcfc4 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img26.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img27.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img27.gif new file mode 100644 index 0000000000..45cb2449fe Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img27.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img28.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img28.gif new file mode 100644 index 0000000000..5522e32796 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img28.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img29.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img29.gif new file mode 100644 index 0000000000..c2dd7a21d3 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img29.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img3.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img3.gif new file mode 100644 index 0000000000..7e8f6e1bd0 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img3.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img30.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img30.gif new file mode 100644 index 0000000000..44e8c3eb95 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img30.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img31.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img31.gif new file mode 100644 index 0000000000..ac0fdb8a44 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img31.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img32.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img32.gif new file mode 100644 index 0000000000..81be96ee2b Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img32.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img33.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img33.gif new file mode 100644 index 0000000000..b0c22f8a97 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img33.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img34.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img34.gif new file mode 100644 index 0000000000..79e7fe51a2 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img34.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img35.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img35.gif new file mode 100644 index 0000000000..4c6632ea23 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img35.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img36.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img36.gif new file mode 100644 index 0000000000..dee4f6f8f7 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img36.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img37.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img37.gif new file mode 100644 index 0000000000..1f68dfd214 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img37.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img4.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img4.gif new file mode 100644 index 0000000000..bcfc709f5d Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img4.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img5.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img5.gif new file mode 100644 index 0000000000..acd0a8951b Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img5.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img6.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img6.gif new file mode 100644 index 0000000000..a47dd019de Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img6.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img7.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img7.gif new file mode 100644 index 0000000000..94c8058d41 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img7.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img8.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img8.gif new file mode 100644 index 0000000000..6eb703e886 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img8.gif differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img9.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img9.gif new file mode 100644 index 0000000000..dd4b351ab9 Binary files /dev/null and b/deal.II/doc/tutorial/chapter-2.step-by-step/step-9.data/intro/img9.gif differ