From 36f1ca79e21de786d77edcdd84df49b4379dead8 Mon Sep 17 00:00:00 2001 From: wolf Date: Tue, 28 Mar 2006 01:33:36 +0000 Subject: [PATCH] Generate intro from doxygen, not html git-svn-id: https://svn.dealii.org/trunk@12692 0785d39b-7218-0410-832d-ea1e28bc413d --- .../step-14.data/{intro.tex => intro.dox} | 335 ++++++----- .../step-14.data/intro.html | 558 ------------------ .../step-14.data/intro/J.gif | Bin 259 -> 0 bytes .../step-14.data/intro/img1.gif | Bin 746 -> 0 bytes .../step-14.data/intro/img10.gif | Bin 255 -> 0 bytes .../step-14.data/intro/img11.gif | Bin 259 -> 0 bytes .../step-14.data/intro/img12.gif | Bin 1487 -> 0 bytes .../step-14.data/intro/img13.gif | Bin 1924 -> 0 bytes .../step-14.data/intro/img14.gif | Bin 1217 -> 0 bytes .../step-14.data/intro/img15.gif | Bin 332 -> 0 bytes .../step-14.data/intro/img16.gif | Bin 1677 -> 0 bytes .../step-14.data/intro/img17.gif | Bin 236 -> 0 bytes .../step-14.data/intro/img18.gif | Bin 341 -> 0 bytes .../step-14.data/intro/img19.gif | Bin 356 -> 0 bytes .../step-14.data/intro/img2.gif | Bin 257 -> 0 bytes .../step-14.data/intro/img20.gif | Bin 503 -> 0 bytes .../step-14.data/intro/img21.gif | Bin 497 -> 0 bytes .../step-14.data/intro/img22.gif | Bin 131 -> 0 bytes .../step-14.data/intro/img23.gif | Bin 370 -> 0 bytes .../step-14.data/intro/img3.gif | Bin 223 -> 0 bytes .../step-14.data/intro/img4.gif | Bin 628 -> 0 bytes .../step-14.data/intro/img5.gif | Bin 736 -> 0 bytes .../step-14.data/intro/img6.gif | Bin 192 -> 0 bytes .../step-14.data/intro/img7.gif | Bin 865 -> 0 bytes .../step-14.data/intro/img8.gif | Bin 2428 -> 0 bytes .../step-14.data/intro/img9.gif | Bin 296 -> 0 bytes 26 files changed, 195 insertions(+), 698 deletions(-) rename deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/{intro.tex => intro.dox} (64%) delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro.html delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/J.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img1.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img10.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img11.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img12.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img13.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img14.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img15.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img16.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img17.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img18.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img19.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img2.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img20.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img21.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img22.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img23.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img3.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img4.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img5.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img6.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img7.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img8.gif delete mode 100644 deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img9.gif diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro.tex b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro.dox similarity index 64% rename from deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro.tex rename to deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro.dox index fef5f0ee7c..6004a5d456 100644 --- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro.tex +++ b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro.dox @@ -1,8 +1,7 @@ -\documentclass{article} -\usepackage{amsmath} -\begin{document} +" +

Introduction

-\section{The maths} +

The maths

The Heidelberg group of Professor Rolf Rannacher, to which the three main authors of the deal.II library belonged during their PhD time and partly also @@ -14,15 +13,25 @@ of optimal mesh refinement for its computation. We will not discuss the derivation of these concepts in too great detail, but will implement the main ideas in the present example program. For a thorough introduction into the general idea, we refer to the seminal work of Becker and -Rannacher \cite{BR95,BR96r}, and the overview article of the same authors in -Acta Numerica \cite{BR01}; the first introduces the concept of error +Rannacher @ref step_14_BR95 "[BR95]",@ref step_14_BR96r "[BR96r]", and the overview article of the same authors in +Acta Numerica @ref step_14_BR01 "[BR01]"; the first introduces the concept of error estimation and adaptivity for general functional output for the Laplace equation, while the second gives many examples of applications of these concepts to a large number of other, more complicated equations. For applications to individual types of equations, see also the publications by -Becker \cite{Bec95,Bec98}, Kanschat \cite{Kan96,FK97}, Suttmeier -\cite{Sut96,RS97,RS98c,RS99}, Bangerth \cite{BR99b,Ban00w,BR01a,Ban02}, and -Hartmann \cite{Har02,HH01,HH01b}. +Becker @ref step_14_Bec95 "[Bec95]", @ref step_14_Bec98 "[Bec98]", +Kanschat @ref step_14_Kan96 "[Kan96]", @ref step_14_FK97 "[FK97]", +Suttmeier @ref step_14_Sut96 "[Sut96]", @ref step_14_RS97 "[RS97]", @ref step_14_RS98c "[RS98c]", +@ref step_14_RS99 "[RS99]", +Bangerth @ref step_14_BR99b "[BR99b]", @ref step_14_Ban00w "[Ban00w]", +@ref step_14_BR01a "[BR01a]", @ref step_14_Ban02 "[Ban02]", and +Hartmann @ref step_14_Har02 "[Har02]", @ref step_14_HH01 "[HH01]", +@ref step_14_HH01b "[HH01b]". +All of these works, from the original introduction by Becker and Rannacher to +individual contributions to particular equations, have later been summarized +in a book by Bangerth and Rannacher that covers all of these topics, see +@ref step_14_BR03 "[BR03]". + The basic idea is the following: in applications, one is not usually interested in the solution per se, but rather in certain aspects of it. For @@ -48,38 +57,38 @@ boundary conditions, although the concept is much more general. For this general case, we refer to the references listed above. The goal is to obtain bounds on the error, $J(e)=J(u)-J(u_h)$. For this, let us denote by $z$ the solution of a dual problem, defined as follows: -\begin{gather} +@f[ a(\varphi,z) = J(\varphi) \qquad \forall \varphi, -\end{gather} +@f] where $a(\cdot,\cdot)$ is the bilinear form associated with the differential equation, and the test functions are chosen from the corresponding solution space. Then, taking as special test function $\varphi=e$ the error, we have that -\begin{gather} +@f[ J(e) = a(e,z) -\end{gather} +@f] and we can, by Galerkin orthogonality, rewrite this as -\begin{gather} +@f[ J(e) = a(e,z-\varphi_h) -\end{gather} +@f] for all possible functions $\varphi_h$ from the discrete test space. Concretely, for Laplace's equation, the error identity reads -\begin{gather} +@f[ J(e) = (\nabla e, \nabla(z-\varphi_h)). -\end{gather} +@f] For reasons that we will not explain, we do not want to use this formula as is, but rather split the scalar products into terms on all cells, and integrate by parts on each of them: -\begin{align*} +@f{eqnarray*} J(e) - &= + &=& \sum_K (\nabla (u-u_h), \nabla (z-\varphi_h))_K \\ - &= + &=& \sum_K (-\Delta (u-u_h), z-\varphi_h)_K + (\partial_n (u-u_h), z-z_h)_{\partial K}. -\end{align*} +@f} Next we use that $-\Delta u=f$, and that $\partial_n u$ is a quantity that is continuous almost everywhere, so the terms involving $\partial_n u$ on one cell cancels with that on its neighbor, where the normal vector has the @@ -89,41 +98,41 @@ zero, since $z$ has zero boundary values, and $\varphi_h$ can be chosen to have the same. Thus, we have -\begin{align*} +@f{eqnarray*} J(e) - &= + &=& \sum_K (f+\Delta u_h, z-\varphi_h)_K - (\partial_n u_h, z-\varphi_h)_{\partial K\backslash \partial\Omega}. -\end{align*} +@f} In a final step, note that when taking the normal derivative of $u_h$, we mean the value of this quantity as taken from this side of the cell (for the usual Lagrange elements, derivatives are not continuous across edges). We then rewrite the above formula by exchanging half of the edge integral of cell $K$ with the neighbor cell $K'$, to obtain -\begin{align*} +@f{eqnarray*} J(e) - &= + &=& \sum_K (f+\Delta u_h, z-\varphi_h)_K - \frac 12 (\partial_n u_h|_K + \partial_{n'} u_h|_{K'}, z-\varphi_h)_{\partial K\backslash \partial\Omega}. -\end{align*} +@f} Using that for the normal vectors $n'=-n$ holds, we define the jump of the normal derivative by -\begin{gather*} +@f[ [\partial_n u_h] := \partial_n u_h|_K + \partial_{n'} u_h|_{K'} = \partial_n u_h|_K - \partial_n u_h|_{K'}, -\end{gather*} +@f] and get the final form after setting the discrete function $\varphi_h$, which is by now still arbitrary, to the point interpolation of the dual solution, $\varphi_h=I_h z$: -\begin{align*} +@f{eqnarray*} J(e) - &= + &=& \sum_K (f+\Delta u_h, z-I_h z)_K - \frac 12 ([\partial_n u_h], z-I_h z)_{\partial K\backslash \partial\Omega}. -\end{align*} +@f} With this, we have obtained an exact representation of the error of the finite element discretization with respect to arbitrary (linear) functionals @@ -139,9 +148,9 @@ about the quantity we want to know to best accuracy. In some, very special cases, this dual solution is known. For example, if the functional $J(\cdot)$ is the point evaluation, $J(\varphi)=\varphi(x_0)$, then the dual solution has to satisfy -\begin{gather*} +@f[ -\Delta z = \delta(x-x_0), -\end{gather*} +@f] with the Dirac delta function on the right hand side, and the dual solution is the Green's function with respect to the point $x_0$. For simple geometries, this function is analytically known, and we could insert it into the error @@ -159,19 +168,19 @@ compute it with a higher order finite element space. While this is certainly not the most efficient way, it is simple since we already have all we need to do that in place, and it also allows for simple experimenting. For more efficient methods, again refer to the given literature, in particular -\cite{BR95,BR96r,BR01}. +@ref step_14_BR95 "[BR95]", @ref step_14_BR03 "[BR03]". With this, we end the discussion of the mathematical side of this program and turn to the actual implementation. -\section{The software} +

The software

The step-14 example program builds heavily on the techniques already used in the step-13 program. Its implementation of the dual weighted residual error estimator explained above is done by deriving a second class, properly called -\texttt{DualSolver}, from the \texttt{Solver} base class, and having a class -(\texttt{WeightedResidual}) that joins the two again and controls the solution +DualSolver, from the Solver base class, and having a class +(WeightedResidual) that joins the two again and controls the solution of the primal and dual problem, and then uses both to compute the error indicator for mesh refinement. @@ -190,7 +199,7 @@ We demonstrate a way how this can be achieved in a simple, yet very flexible way. We will put everything that belongs to a certain setup into one class, and provide a little C++ mortar around it, so that entire setups (domains, coefficients, right hand sides, etc.) can be exchanged by only changing -something in \textit{one} place. +something in one place. Going this way a little further, we have also centralized all the other parameters that describe how the program is to work in one place, such as the @@ -224,128 +233,174 @@ the author of the example program, Wolfgang Bangerth, in publications that arise from that, of your program consists in a considerable part of the example program. -\begin{thebibliography}{10} -\bibitem{Ban00w} -Wolfgang Bangerth. -\newblock Mesh adaptivity and error control for a finite element approximation +

Bibliography

+ +
+ +
@anchor step_14_Ban00w [Ban00w]
+
Wolfgang Bangerth. +
Mesh adaptivity and error control for a finite element approximation of the elastic wave equation. -\newblock In Alfredo Berm\'udez, Dolores G\'omez, Christophe Hazard, Patrick - Joly, and Jean~E. Roberts, editors, {\em Proceedings of the Fifth +
In Alfredo Bermudez, Dolores Gomez, Christophe Hazard, Patrick + Joly, and Jean E. Roberts, editors, Proceedings of the Fifth International Conference on Mathematical and Numerical Aspects of Wave - Propagation (Waves2000), Santiago de Compostela, Spain, 2000}, pages - 725--729. SIAM, 2000. - -\bibitem{Ban02} -Wolfgang Bangerth. -\newblock {\em Adaptive Finite Element Methods for the Identification of - Distributed Coefficient in Partial Differential Equations}. -\newblock PhD thesis, University of Heidelberg, 2002. - -\bibitem{BR99b} -Wolfgang Bangerth and Rolf Rannacher. -\newblock Finite element approximation of the acoustic wave equation: {E}rror + Propagation (Waves2000), Santiago de Compostela, Spain, 2000, pages + 725–729. SIAM, 2000. + + + +
@anchor step_14_Ban02 [Ban02]
+
Wolfgang Bangerth. +
Adaptive Finite Element Methods for the Identification of + Distributed Coefficient in Partial Differential Equations. +
PhD thesis, University of Heidelberg, 2002. + + + +
@anchor step_14_BR99b [BR99b]
+
Wolfgang Bangerth and Rolf Rannacher. +
Finite element approximation of the acoustic wave equation: Error control and mesh adaptation. -\newblock {\em East--West J. Numer. Math.}, 7(4):263--282, 1999. +
East–West J. Numer. Math., 7(4):263–282, 1999. + + + +
@anchor step_14_BR03 [BR03]
+
Wolfgang Bangerth and Rolf Rannacher. +
Adaptive Finite Element Methods for Differential Equations. +
Birkhäuser Verlag, Basel, 2003. + -\bibitem{BR01a} -Wolfgang Bangerth and Rolf Rannacher. -\newblock Adaptive finite element techniques for the acoustic wave equation. -\newblock {\em J. Comput. Acoustics}, 9(2):575--591, 2001. -\bibitem{BR01} -R.~Becker and R.~Rannacher. -\newblock An optimal control approach to error estimation and mesh adaptation +
@anchor step_14_BR01a [BR01a]
+
Wolfgang Bangerth and Rolf Rannacher. +
Adaptive finite element techniques for the acoustic wave equation. +
J. Comput. Acoustics, 9(2):575–591, 2001. + + + +
@anchor step_14_BR01 [BR01]
+
R. Becker and R. Rannacher. +
An optimal control approach to error estimation and mesh adaptation in finite element methods. -\newblock {\em Acta Numerica}, 10:1--102, 2001. - -\bibitem{Bec95} -Roland Becker. -\newblock {\em An Adaptive Finite Element Method for the Incompressible - {N}avier-{S}tokes Equations on Time-dependent Domains}. -\newblock Dissertation, Universit{\"a}t Heidelberg, 1995. - -\bibitem{Bec98} -Roland Becker. -\newblock Weighted error estimators for finite element approximations of the - incompressible {N}avier-{S}tokes equations. -\newblock Preprint 98-20, SFB 359, Universit{\"a}t Heidelberg, 1998. - -\bibitem{BR96r} -Roland Becker and Rolf Rannacher. -\newblock A feed-back approach to error control in finite element methods: - {B}asic analysis and examples. -\newblock {\em East--West J. Numer. Math.}, 4:237--264, 1996. - -\bibitem{BR95} -Roland Becker and Rolf Rannacher. -\newblock Weighted a posteriori error control in {FE} methods. -\newblock In et~al. H.~G.~Bock, editor, {\em ENUMATH 95}, pages 621--637, +
Acta Numerica, 10:1–102, 2001. + + + +
@anchor step_14_Bec95 [Bec95]
+
Roland Becker. +
An Adaptive Finite Element Method for the Incompressible + Navier-Stokes Equations on Time-dependent Domains. +
Dissertation, Universität Heidelberg, 1995. + + + +
@anchor step_14_Bec98 [Bec98]
+
Roland Becker. +
Weighted error estimators for finite element approximations of the + incompressible Navier-Stokes equations. +
Preprint 98-20, SFB 359, Universität Heidelberg, 1998. + + + +
@anchor step_14_BR96r [BR96r]
+
Roland Becker and Rolf Rannacher. +
A feed-back approach to error control in finite element methods: + Basic analysis and examples. +
East–West J. Numer. Math., 4:237–264, 1996. + + + +
@anchor step_14_BR95 [BR95]
+
Roland Becker and Rolf Rannacher. +
Weighted a posteriori error control in FE methods. +
In H. G. Bock et al., ed.s, ENUMATH 95, pages 621–637, Paris, September 1998. World Scientific Publ., Singapure. -\newblock in \cite{enumath97}. +
in @ref step_14_enumath97 "[enumath97]". + + -\bibitem{enumath97} -Hans~Georg Bock, Franco Brezzi, Roland Glowinsky, Guido Kanschat, Yuri~A. - Kuznetsov, Jacques P\'eriaux, and Rolf Rannacher, editors. -\newblock {\em ENUMATH 97, Proceedings of the 2nd European Conference on - Numerical Mathematics and Advanced Applications}, Singapore, 1998. World +
@anchor step_14_enumath97 [enumath97]
+
Hans Georg Bock, Franco Brezzi, Roland Glowinsky, Guido Kanschat, Yuri A. + Kuznetsov, Jacques Periaux, and Rolf Rannacher, editors. +
ENUMATH 97, Proceedings of the 2nd European Conference on + Numerical Mathematics and Advanced Applications, Singapore, 1998. World Scientific. -\bibitem{FK97} -Christian F{\"u}hrer and Guido Kanschat. -\newblock A posteriori error control in radiative transfer. -\newblock {\em Computing}, 58(4):317--334, 1997. -\bibitem{Har02} -Ralf Hartmann. -\newblock {\em Adaptive Finite Element Methods for the Compressible Euler Equations}. -\newblock PhD thesis, University of Heidelberg, 2002. -\bibitem{HH01} -Ralf Hartmann and Paul Houston. -\newblock Adaptive discontinuous {G}alerkin finite element methods for +
@anchor step_14_FK97 [FK97]
+
Christian Führer and Guido Kanschat. +
A posteriori error control in radiative transfer. +
Computing, 58(4):317–334, 1997. + + + +
@anchor step_14_Har02 [Har02]
+
Ralf Hartmann. +
Adaptive Finite Element Methods for the Compressible Euler Equations. +
PhD thesis, University of Heidelberg, 2002. + + + +
@anchor step_14_HH01 [HH01]
+
Ralf Hartmann and Paul Houston. +
Adaptive discontinuous Galerkin finite element methods for nonlinear hyperbolic conservation laws. -\newblock SIAM J. Sci. Comput. 24 (2002), pp. 979-1004. - -\bibitem{HH01b} -Ralf Hartmann and Paul Houston. -\newblock Adaptive discontinuous {G}alerkin finite element methods for the - compressible {E}uler equations. -\newblock J. Comput. Phys. 183 (2002), pp. 508-532. - -\bibitem{Kan96} -Guido Kanschat. -\newblock {\em Parallel and Adaptive {G}alerkin Methods for Radiative Transfer - Problems}. -\newblock Dissertation, Universit{\"a}t Heidelberg, 1996. - -\bibitem{RS97} -Rolf Rannacher and Franz-Theo Suttmeier. -\newblock A feed-back approach to error control in finite element methods: +
SIAM J. Sci. Comput., 24 (2002), pp. 979-1004. + + + +
@anchor step_14_HH01b [HH01b]
+
Ralf Hartmann and Paul Houston. +
Adaptive discontinuous Galerkin finite element methods for the + compressible Euler equations. +
J. Comput. Phys. 183 (2002), pp. 508-532. + + + +
@anchor step_14_Kan96 [Kan96]
+
Guido Kanschat. +
Parallel and Adaptive Galerkin Methods for Radiative Transfer + Problems. +
Dissertation, Universität Heidelberg, 1996. + + + +
@anchor step_14_RS97 [RS97]
+
Rolf Rannacher and Franz-Theo Suttmeier. +
A feed-back approach to error control in finite element methods: Application to linear elasticity. -\newblock {\em Comp. Mech.}, 19(5):434--446, 1997. +
Comp. Mech., 19(5):434–446, 1997. + -\bibitem{RS98c} -Rolf Rannacher and Franz-Theo Suttmeier. -\newblock A posteriori error control in finite element methods via duality + +
@anchor step_14_RS98c [RS98c]
+
Rolf Rannacher and Franz-Theo Suttmeier. +
A posteriori error control in finite element methods via duality techniques: Application to perfect plasticity. -\newblock {\em Comp. Mech.}, 21(2):123--133, 1998. +
Comp. Mech., 21(2):123–133, 1998. + + + +
@anchor step_14_RS99 [RS99]
+
Rolf Rannacher and Franz-Theo Suttmeier. +
A posteriori error control and mesh adaptation for finite element + models in elasticity and elasto-plasticity. +
Comput. Methods Appl. Mech. Engrg., pages 333–361, 1999. + + -\bibitem{RS99} -Rolf Rannacher and Franz-Theo Suttmeier. -\newblock A posteriori error control and mesh adaptation for finite element - models in elasticity and elasto--plasticity. -\newblock {\em Comput. Methods Appl. Mech. Engrg.}, pages 333--361, 1999. +
@anchor step_14_Sut96 [Sut96]
+
Franz-Theo Suttmeier. +
Adaptive Finite Element Approximation of Problems in + Elasto-Plasticity Theory. +
Dissertation, Universität Heidelberg, 1996. -\bibitem{Sut96} -Franz-Theo Suttmeier. -\newblock {\em Adaptive Finite Element Approximation of Problems in - Elasto-Plasticity Theory}. -\newblock Dissertation, Universit{\"a}t Heidelberg, 1996. -\end{thebibliography} -\end{document} +
diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro.html b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro.html deleted file mode 100644 index 0b65b4b4dc..0000000000 --- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro.html +++ /dev/null @@ -1,558 +0,0 @@ -
-

Introduction

- - -

-The maths -

- -

-The Heidelberg group of Professor Rolf Rannacher, to which the three main -authors of the deal.II library belonged during their PhD time and partly also -afterwards, has been involved with adaptivity and error estimation for finite -element discretizations since the mid-90ies. The main achievement is the -development of error estimates for arbitrary functionals of the solution, and -of optimal mesh refinement for its computation. - -

-We will not discuss the derivation of these concepts in too great detail, but -will implement the main ideas in the present example program. For a thorough -introduction into the general idea, we refer to the seminal work of Becker and -Rannacher [9,8], and the overview article of the same authors in -Acta Numerica [5]; the first introduces the concept of error -estimation and adaptivity for general functional output for the Laplace -equation, while the second gives many examples of applications of these -concepts to a large number of other, more complicated equations. For -applications to individual types of equations, see also the publications by -Becker [6,7], Kanschat [15,11], Suttmeier -[19,16,17,18], Bangerth [3,1,4,2], and -Hartmann [12,13,14]. - -

-The basic idea is the following: in applications, one is not usually -interested in the solution per se, but rather in certain aspects of it. For -example, in simulations of flow problems, one may want to know the lift or -drag of a body immersed in the fluid; it is this quantity that we want to know -to best accuracy, and whether the rest of the solution of the describing -equations is well resolved is not of primary interest. Likewise, in elasticity -one might want to know about values of the stress at certain points to guess -whether maximal load values of joints are safe, for example. Or, in radiative -transfer problems, mean flux intensities are of interest. - -

-In all the cases just listed, it is the evaluation of a functional J(u) of -the solution which we are interested in, rather than the values of u everywhere. Since the exact solution u is not available, but only its -numerical approximation uh, it is sensible to ask whether the computed -value J(uh) is within certain limits of the exact value J(u), i.e. we -want to bound the error with respect to this functional, - -J(u)-J(uh). - -

-For simplicity of exposition, we henceforth assume that both the quantity of -interest J, as well as the equation are linear, and we will in particular -show the derivation for the Laplace equation with homogeneous Dirichlet -boundary conditions, although the concept is much more general. For this -general case, we refer to the references listed above. The goal is to obtain -bounds on the error, - -J(e)=J(u)-J(uh). For this, let us denote by z the -solution of a dual problem, defined as follows: -
-\begin{gather}a(\varphi,z) = J(\varphi) \qquad \forall \varphi,
-\end{gather} -
-where - -$a(\cdot,\cdot)$ -is the bilinear form associated with the differential -equation, and the test functions are chosen from the corresponding solution -space. Then, taking as special test function $\varphi=e$ -the error, we have -that -
-\begin{gather}J(e) = a(e,z)
-\end{gather} -
-and we can, by Galerkin orthogonality, rewrite this as -
-\begin{gather}J(e) = a(e,z-\varphi_h)
-\end{gather} -
-for all possible functions $\varphi_h$ -from the discrete test space. - -

-Concretely, for Laplace's equation, the error identity reads -
-\begin{gather}J(e) = (\nabla e, \nabla(z-\varphi_h)).
-\end{gather} -
-For reasons that we will not explain, we do not want to use this formula as -is, but rather split the scalar products into terms on all cells, and -integrate by parts on each of them: -
-\begin{align*}J(e)
-&=
-\sum_K (\nabla (u-u_h), \nabla (z-\varphi_h))_K
-\\
-&=...
-...u-u_h), z-\varphi_h)_K
-+ (\partial_n (u-u_h), z-z_h)_{\partial K}.
-\end{align*} -
-Next we use that - -$-\Delta u=f$, -and that - -$\partial_n u$ -is a quantity that is -continuous almost everywhere, so the terms involving - -$\partial_n u$ -on one -cell cancels with that on its neighbor, where the normal vector has the -opposite sign. At the boundary of the domain, where there is no neighbor cell -with which this term could cancel, the weight - -$z-\varphi_h$ -can be chosen as -zero, since z has zero boundary values, and $\varphi_h$ -can be chosen to -have the same. - -

-Thus, we have -
-J(e) -\begin{align*}J(e)
-&=
-\sum_K (f+u_h), z-\varphi_h)_K
-- (\partial_n u_h, z-\varphi_h)_{\partial K\backslash \partial\Omega}.
-\end{align*} -
-In a final step, note that when taking the normal derivative of uh, we mean -the value of this quantity as taken from this side of the cell (for the usual -Lagrange elements, derivatives are not continuous across edges). We then -rewrite the above formula by exchanging half of the edge integral of cell Kwith the neighbor cell K', to obtain -
-J(e) -\begin{align*}J(e)
-&=
-\sum_K (f+u_h), z-\varphi_h)_K
-- \frac 12 (\partial_n u...
-...h\vert _{K'},
-z-\varphi_h)_{\partial K\backslash \partial\Omega}.
-\end{align*} -
-Using that for the normal vectors n'=-n holds, we define the jump of the -normal derivative by -
-\begin{gather*}[\partial_n u_h]:= \partial_n u_h\vert _K + \partial_{n'} u_h\vert _{K'}
-=
-\partial_n u_h\vert _K - \partial_n u_h\vert _{K'},
-\end{gather*} -
-and get the final form after setting the discrete function $\varphi_h$, -which -is by now still arbitrary, to the point interpolation of the dual solution, - - -$\varphi_h=I_h z$: -
-J(e) -\begin{align*}J(e)
-&=
-\sum_K (f+u_h), z-I_h z)_K
-- \frac 12 ([\partial_n u_h],
-z-I_h z)_{\partial K\backslash \partial\Omega}.
-\end{align*} -
-

-With this, we have obtained an exact representation of the error of the finite -element discretization with respect to arbitrary (linear) functionals -$J(\cdot)$. -Its structure is a weighted form of a residual estimator, as both - - -$f+\Delta u_h$ -and - -$[\partial_n u_h]$ -are cell and edge residuals that vanish -on the exact solution, and z-Ih z are weights indicating how important the -residuals on a certain cell is for the evaluation of the given functional. -Furthermore, it is a cell-wise quantity, so we can use it as a mesh refinement -criterion. The question, is: how to evaluate it? After all, the evaluation -requires knowledge of the dual solution z, which carries the information -about the quantity we want to know to best accuracy. - -

-In some, very special cases, this dual solution is known. For example, if the -functional $J(\cdot)$ -is the point evaluation, - -$J(\varphi)=\varphi(x_0)$, -then -the dual solution has to satisfy -
-\begin{gather*}-\Delta z = \delta(x-x_0),
-\end{gather*} -
-with the Dirac delta function on the right hand side, and the dual solution is -the Green's function with respect to the point x0. For simple geometries, -this function is analytically known, and we could insert it into the error -representation formula. - -

-However, we do not want to restrict ourselves to such special cases. Rather, -we will compute the dual solution numerically, and approximate z by some -numerically obtained $\tilde z$. -We note that it is not sufficient to compute -this approximation $\tilde z$ -using the same method as used for the primal -solution uh, since then - -$\tilde z-I_h \tilde z=0$, -and the overall error -estimate would be zero. Rather, the approximation $\tilde z$ -has to be from a -larger space than the primal finite element space. There are various ways to -obtain such an approximation (see the cited literature), and we will choose to -compute it with a higher order finite element space. While this is certainly -not the most efficient way, it is simple since we already have all we need to -do that in place, and it also allows for simple experimenting. For more -efficient methods, again refer to the given literature, in particular -[9,8,5]. - -

-With this, we end the discussion of the mathematical side of this program and -turn to the actual implementation. - - - -

-The software -

- -

-The step-14 example program builds heavily on the techniques already used in -the step-13 program. Its implementation of the dual weighted residual error -estimator explained above is done by deriving a second class, properly called -DualSolver, from the Solver base class, and having a class -(WeightedResidual) that joins the two again and controls the solution -of the primal and dual problem, and then uses both to compute the error -indicator for mesh refinement. - -

-The program continues the modular concept of the previous example, by -implementing the dual functional, describing quantity of interest, by an -abstract base class, and providing two different functionals which implement -this interface. Adding a different quantity of interest is thus simple. - -

-One of the more fundamental differences is the handling of data. A common case -is that you develop a program that solves a certain equation, and test it with -different right hand sides, different domains, different coefficients and -boundary values, etc. Usually, these have to match, so that exact solutions -are known, or that their combination makes sense at all. - -

-We demonstrate a way how this can be achieved in a simple, yet very flexible -way. We will put everything that belongs to a certain setup into one class, -and provide a little C++ mortar around it, so that entire setups (domains, -coefficients, right hand sides, etc.) can be exchanged by only changing -something in one place. - -

-Going this way a little further, we have also centralized all the other -parameters that describe how the program is to work in one place, such as the -order of the finite element, the maximal number of degrees of freedom, the -evaluation objects that shall be executed on the computed solutions, and so -on. This allows for simpler configuration of the program, and we will show in -a later program how to use a library class that can handle setting these -parameters by reading an input file. The general aim is to reduce the places -within a program where one may have to look when wanting to change some -parameter, as it has turned out in practice that one forgets where they are as -programs grow. Furthermore, putting all options describing what the program -does in a certain run into a file (that can be stored with the results) helps -repeatability of results more than if the various flags were set somewhere in -the program, where their exact values are forgotten after the next change to -this place. - -

-Unfortunately, the program has become rather long. While this admittedly -reduces its usefulness as an example program, we think that it is a very good -starting point for development of a program for other kinds of problems, -involving different equations than the Laplace equation treated here. -Furthermore, it shows everything that we can show you about our way of a -posteriori error estimation, and its structure should make it simple for you -to adjust this method to other problems, other functionals, other geometries, -coefficients, etc. - -

-The author believes that the present program is his masterpiece among the -example programs, regarding the mathematical complexity, as well as the -simplicity to add extensions. If you use this program as a basis for your own -programs, we would kindly like to ask you to state this fact and the name of -the author of the example program, Wolfgang Bangerth, in publications that -arise from that, if your program consists in a considerable part of the -example program. - - -

Bibliography -

-
-

-

1 -
-Wolfgang Bangerth. -
Mesh adaptivity and error control for a finite element approximation - of the elastic wave equation. -
In Alfredo Bermúdez, Dolores Gómez, Christophe Hazard, Patrick - Joly, and Jean E. Roberts, editors, Proceedings of the Fifth - International Conference on Mathematical and Numerical Aspects of Wave - Propagation (Waves2000), Santiago de Compostela, Spain, 2000, pages - 725-729. SIAM, 2000. - -

-

2 -
-Wolfgang Bangerth. -
Adaptive Finite Element Methods for the Identification of - Distributed Coefficient in Partial Differential Equations. -
PhD thesis, University of Heidelberg, 2002. - -

-

3 -
-Wolfgang Bangerth and Rolf Rannacher. -
Finite element approximation of the acoustic wave equation: Error - control and mesh adaptation. -
East-West J. Numer. Math., 7(4):263-282, 1999. - -

-

4 -
-Wolfgang Bangerth and Rolf Rannacher. -
Adaptive finite element techniques for the acoustic wave equation. -
J. Comput. Acoustics, 9(2):575-591, 2001. - -

-

5 -
-R. Becker and R. Rannacher. -
An optimal control approach to error estimation and mesh adaptation - in finite element methods. -
Acta Numerica, 10:1-102, 2001. - -

-

6 -
-Roland Becker. -
An Adaptive Finite Element Method for the Incompressible - Navier-Stokes Equations on Time-dependent Domains. -
Dissertation, Universität Heidelberg, 1995. - -

-

7 -
-Roland Becker. -
Weighted error estimators for finite element approximations of the - incompressible Navier-Stokes equations. -
Preprint 98-20, SFB 359, Universität Heidelberg, 1998. - -

-

8 -
-Roland Becker and Rolf Rannacher. -
A feed-back approach to error control in finite element methods: - Basic analysis and examples. -
East-West J. Numer. Math., 4:237-264, 1996. - -

-

9 -
-Roland Becker and Rolf Rannacher. -
Weighted a posteriori error control in FE methods. -
In et al. H. G. Bock, editor, ENUMATH 95, pages 621-637, - Paris, September 1998. World Scientific Publ., Singapure. -
in [10]. - -

-

10 -
-Hans Georg Bock, Franco Brezzi, Roland Glowinsky, Guido Kanschat, Yuri A. - Kuznetsov, Jacques Périaux, and Rolf Rannacher, editors. -
ENUMATH 97, Proceedings of the 2nd European Conference on - Numerical Mathematics and Advanced Applications, Singapore, 1998. World - Scientific. - -

-

11 -
-Christian Führer and Guido Kanschat. -
A posteriori error control in radiative transfer. -
Computing, 58(4):317-334, 1997. - -

-

12 -
-Ralf Hartmann. -
Adaptive Finite Element Methods for the Compressible Euler Equations. -
PhD thesis, University of Heidelberg, 2002. - -

-

13 -
-Ralf Hartmann and Paul Houston. -
Adaptive discontinuous Galerkin finite element methods for - nonlinear hyperbolic conservation laws. -
SIAM J. Sci. Comput. 24 (2002), pp. 979-1004. - -

-

14 -
-Ralf Hartmann and Paul Houston. -
Adaptive discontinuous Galerkin finite element methods for the - compressible Euler equations. -
J. Comput. Phys. 183 (2002), pp. 508-532. - -

-

15 -
-Guido Kanschat. -
Parallel and Adaptive Galerkin Methods for Radiative Transfer - Problems. -
Dissertation, Universität Heidelberg, 1996. - -

-

16 -
-Rolf Rannacher and Franz-Theo Suttmeier. -
A feed-back approach to error control in finite element methods: - Application to linear elasticity. -
Comp. Mech., 19(5):434-446, 1997. - -

-

17 -
-Rolf Rannacher and Franz-Theo Suttmeier. -
A posteriori error control in finite element methods via duality - techniques: Application to perfect plasticity. -
Comp. Mech., 21(2):123-133, 1998. - -

-

18 -
-Rolf Rannacher and Franz-Theo Suttmeier. -
A posteriori error control and mesh adaptation for finite element - models in elasticity and elasto-plasticity. -
Comput. Methods Appl. Mech. Engrg., pages 333-361, 1999. - -

-

19 -
-Franz-Theo Suttmeier. -
Adaptive Finite Element Approximation of Problems in - Elasto-Plasticity Theory. -
Dissertation, Universität Heidelberg, 1996. -
diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/J.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/J.gif deleted file mode 100644 index c909d23f6e2dd1f927a804858978a0c253a56989..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmZ?wbhEHbRAP{4*vtR|D^{$SGiT0(2@_gcS}H0ka&mGK5)wi}LOeV?Y;0@{3=C9M zR3s!MczAd=Z{DoH zMr7`NbEO2PCiyv>hsPQ zB}5LLyqtPu4u|tw>9@cCH#9cYa&R*+geO)>)|eN0@avizn{)9B=Zmp&vvN!*GnFsr z_YzjKGoG+igpEs)d%AFMVzF4d7$-9mkBNx9qA(XH%W5_MFf+!;Kr5Ss<_i}uU2Ya+ Gum%7S=1)xk diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img1.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img1.gif deleted file mode 100644 index d479f14ba8ac5c45335759f8a3081e48441fc523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmV%MR-&oo$Sr&Iuh8uiE;vsZVbQ$68k_P zx8AgR&2EFbl!cW7&j_Y$#~_UWpptkhdTtL41cw9$PK1n&j*l#NR1$I-g8>8>0(%k) z1{nFwQQ7tn1q`~NOJKov8Yis9y3&`urq{$YZDAK=mliNfOu`5MxC1BDmSSc z3RFExw(Kyd8@!It>gAg<1^{4EV0#Q}nwk^@tTfBFZxp&oX1WF8)5`#^Z2{=~7veA> z0?-QiolN;f;Rj1^Auh0>rxgNtwT$iKKoH&@Hvy&DL)t|(&%+A_&j>Sf8rt{2r047k+(e7O0()Q?w5 zw`$6#I%LLAssKj9KZN@F>CgGZ34>Mw-I6fLDAh&3E2|5~X*M5eyuV z00PN=I22ToehYbz_sbwQkI>{IgVoX2)jS{E=LI4Sv c>Bc-rjF|zNYX0IT4qMg<44WLJDM17PJ0@f*PXGV_ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img10.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img10.gif deleted file mode 100644 index a4f588abc72c90e553ecd1a4caa6ae73bebc7004..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmZ?wbhEHblw*)(c+3C-D^{$SGiT0(2@_gcS}H0ka&mGK5)wi}LOeV?Y;0@{3=C9M zR3s!MczAd=Z{DoIc^6iQqy_wN>0NmwaFPnYMDvE*4B;N;#~q3y zJQ&) zhDIg^9TCrPRz60K1v=bm{49|(xqHMKL^u;zrL%EJlL2#WI0Rg~Bty-_xSRr&NAim)5p`tw5 z1fc-HRuKelgtxVEAXL^5#W&0E`~QG}f`di|4h#ZyMu`&$01kFB1WOhJ1echY7DW#N zoOu#X7zSexFF$1@6AC5;4k%m`1FQ^>Y(4@D0J{za6AZpVgHjd*G!F|2r+@^$gwN2? J($jnq06UP9T5|vZ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img12.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img12.gif deleted file mode 100644 index 418699bd7fd84bd7b3af9a9247c4a48481c38fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1487 zcmV;=1u*(YNk%w1VO#+*0J8u90001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui09*kv06+x(@X1N5y*TU5yZ>M)j$~<` zXsWJk>%MR-&vXq24FC+FQe2J0hJff03<$u_W-BOYK8j&6K{%LLi8DJ3FsL2@AW%Vo zheeE7$8PT)gGS-7NGJr41LGk$KNJ8269Wi101ad$afb{If)aXseh&cv6bAqa2@Z)T zVx0^M1P2W~1_gl+32AV0bar@=eG`C>aD_RDCW{S?wz89z6AVjskeQpERkp+u#sLln z6UGvNJS7C#+S}aQT;Jf~;^X8cn3|mB>g(+7?(gvN^7Hid_V@Vt_5wK$*BSwm;L%60 zpuv6p25LaSio${?7Z@^3us|Y$e}kk|Q3C0KgEame`7i`wKuCoG7A=~b5Kux(2}J~q zjL3?Boiqg&tek){CBvOCSyieD0O$lEA0>p8*>FS23q5@Tefjc1%$XLj5@DFgrUINg zDM6&LwU7jvs}vYerlLRtjT{odg^6bX0k+=;3c#rF#egLh^!}5H1wr2m{|4Z-Ab7%I z7k@7_KHKyG0gNBcTps5YtkHv@LyI0wy0q!js8g$6&APSg*Wld9o}CJ|?c4bb=%|cg zCxW>W;xrh$DVhTwBB)33dPnjGQH4x!23TAC*(;pZh z{vipXizLcB(*gVf16wb;SLmK?l_d-br2e;_2<`=h83^*JLLUeBwX?v35Jm`?c+qr_ z9tD-)hrxIm3}93OwUGi-1C~*8-UiD(Fd<1Av627}8DfCIN|i{1#C0HChyaNbJfwk$ zR*@)3j2xu6B8xCh1LKLy|(34T-;hh8oyy1csIASmW7|@Uson$a@ z#K2QkoQZ-M7pTc5B?}A|k`-=(FeZvc#4*5u709`gVKKmIfuPJ?W7Am+kRiqrcv_$U z8H-9nh5-V+XcbC%hTw%G)oFu30y$)Y+o`B#kZG!{w(4pLQ{MRMth9>rC`=A?TI;U7 z_Uh}ezy>Squ*4Q??6JrutL(DO{x<9Eu7ChgA4{WHVd}Hky4K|(VNNh7U5wqO!n6kw z#sr}*p|nr=&Y>$A_j9B%N0 z7(7y&f&gR$(Cr5U=qij12~!|IHZuKpK>+cJKrtm3W2~{r>qO}C0!Lc#u5mx|MiF`T zIx`3WTN-c#7z`vJ!T_Qaz(CF#Od3=GL>Kwl3K!;)E0;WD;PVs`1RVm=1Q?BU(ur`@ zG>T7i@bNpSFi8^-Pg_KhMF%FJi~tUd)g=!F|D!=d|#5B<0=UbQzC^|gZNofH>~(sno2M*>3ED+CM||D9ICh* z#PPLd2dl?2!}fj!H~}7ytWKhiTtTKsgIL0M_62SrtfSIFF@Fc_ug^4m}zzLxQKLp^>nlL0T z2|mDs!kd5v&w@b}Y_Nkxh#^lP5{DjXM1++v$}C#pLr6db2L%*?0sP^C*jYsyVo-n+ z^YWj!z@=d>=$?VXBw)p()C5F^17i|VL@q80!2m}KlcBn383&3$i-D=40pJofwXBCy zV4P3-q>u(XDvb}l5X6IW=ZU14jR61{W40DKf&`ST1~a1#ZOX{VN?P)gn9QUmEqOXV pq;8X-6it`(7s^tK28cy5r78(xlWU1_m9UJZEN4l}TACmN06S{tdw&1` diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img13.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img13.gif deleted file mode 100644 index c1575ff410b1bafb7b41cd8fc8cfcfcd88c1f63f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1924 zcmV-~2YdKONk%w1VaNe70J8u90001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui0LTF`06+x(@X1N5y*TU5yZ>M)j$~<` zXsWJk>%MR-&n>dhc&_h!{{#&HU;t7SE{(&6fankm2*A-7D=4TFW5sZjARH>DNvz>c zzArLXWnI4ljBZB&2vls&CWbET`-cw$4Fv}a2?_!a3{7}h00a{Q2tWW0b|iw83=NPH ziw}(x0RR*XSEEWZbeEnA1P2X74+IUK29bk>hl!t|YNkH`sY`kormwLRw6+(5gocQU zjB>xH!Ws&Xk&{7|CYcSJozkFk!4nKqhZ6??2?-9YUgL`D3IPtc66+G#vLyrp3LHpq zpqqmTNhm0mu%W|;5I?kg7cZj4ix@L%+{m$`$B+IXLy8_>Rr>Y8pFU?8jw(jr+J&oGr#w*bRn1_xaFHry>Qv@l zWqvO#wE6(61g(P$Gi)p2?Z3$!yj}=97Xev4XF;X4uvP+-q^t-W(o)+46zyJRL2L34EfHCMq;DILHrQluMA()YY4n`P~0YadM z0apkp7f1sQ>v^wQypJ46KMkiyw(-Q9%PecSnUD5WoOy zK{TZSjTF2>6+H>q_<#W(eh`HvPq8>m0zznL0Rs){;G+dT29!V)86>F(lS7W!qnWN@ zDI1s_h$#V?84xMLlQg;K#FSNTfF(o=^y%lH)Ww-k2TGc#4KW%FP#2Y*z~V(Mko2_> znqKG==m!SqQ%qu#wnl+zkiA8z3Wb7FOHo%OkOWGCIcn-Gvj8xuGJF9b>X|2*wdY`5+9+i=H?wj^@bZTC$O-mUlE8|BUS-+(vdci?(w1Avugz4FD< zgsU)k<97E|NyHS0W-q+{&Z&U-NXyc|1Or%Esj`V-3AcirDg;nEKyfc6LtXXUR@pV0#arNSJ0tr;wcDV zM*ysUFhIehtg#B_1o)Qk1p&~00rS^yAV5Is6YV~i%FpqA_~PGNKA(RI;Ik?qI}l}{ zRMN_tZbmgV?Cj0}Pv`;zW>&2X48Roy_=G|(0hX~BSR^_g&THy&3S+uhIqSvBPPQ^vAj)_sT8ZM2cAP*YH;_g( z=CJ~8^ui_J7>q2n#%YN#3}8xTbCwzP%y#Sa6Mnv1Nw zAi)eB0eLi|zyUP&sb6)n1Nit^6E3I+WHM||R&fVB_;&(czDZXF2#Nuy2#Mhl(-X#g zfHf_dO^Wc3NCp5W3dgC9;f3-H#T=(Pf0WFMwR4*kxTjT^c?M_ZFI@Ss4mGX9PnBR3 zj!FST3jUKNitYX2OG$Bnt5PV7WeyE{4B%!z0`-nOprCzr7{Dc}!T`&;W*jyNfbTr8 z00TgUr7m?=Zf@oU6rR)ugt34Y0*U~7tVIw5_y7G!%=&YA2MvK@;nkUc zlqxt(xg~2Z2{@w+3b>#JZSJ=qFa&a! zILq7`&_=k;jjnWE=7-u&S8l5W+I6?f-B6jcyWrh!Tq6_S@*;P&CnK17*UR4ay7#^C Kjqge#0028Oe?ct( diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img14.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img14.gif deleted file mode 100644 index 6a7f083fec35fb69ffe49c276c5ac46a2456a2c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1217 zcmV;y1U~ymNk%w1VO;?b0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui09^qP06+x(khJycE2!AbyRQgCePn52 znyGRGvc4q>&s9s`pNy0CKI=Y~%V#S9QV#<_Knffm0sx`nWNrwf;OSXWT0c%rbo!_Y zHxAbU5%2^Ma71DeM+`Pbr1z6JSi(?Je@kZ;X%A~{7JXWI7JFb%V^oBN6^DsAb#;Dt zTuGH~l7eNSHA9zbY#WT0PzDDA2mo3ZShXDju(Gtc4?R1;B)YM)zOKh6#JtDC$s5bY zxXv`dKo5)s3j1g~C+;AdN9njK<%TB*gFV758tcH3Z~fN>pEn7~6Oa!KKrG#F6l0(X|6C!Zyx$wQQavP3AJBpiA{ zl!_kHsGX2*ASnh{x@p>=g?_MUpPu?PgadmDmfl+eD3Gc~(zzC-52)G#z^bgeS^=z} zy@!ng6%3#N85<1L5&;J!aO^v1{-lZ;t`9Y2K&!8&*XxeI20QEtVeU|?sy|V?t8dq0 zn*gxzY}>&A%eLFWx6g*F>jS*HHq*J<5?esG7|pUA0}8Z?5CdO`cK|J7;U?*ECZtu_ zT8sH>0l-iwFmS;I9-PE|3j;F-Ip94daRmSi3p<8_S6$2&E!+#e4^%)!VH zlx*?I7`LHu!fDL=9?ZDltnQ!0*V|n1BQSOa!1X>RqJ8xNS)1K9*K>Rgw%js$R>s{9>D>+A zY(oLK*8vYMcHwm+u7%=q6)^sQ){ny-_S~pc4sBUdTL*2RMXHlmop?adM zC*ZmZyd=Ox0sur_!az5~o;teV)qXn^v*?aZ?|u&@{Omj!&tmSoGw(d=(EBAlM$|9w fy9c^UFsm;ij6Wj|m7YJR`s}CAe#kf|5&-}^dY&AV diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img15.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img15.gif deleted file mode 100644 index c941877565a643288172cad2e3ee04370258f00c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmV-S0ki%`Nk%w1VM72N0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui07C#B06+x!@X1N5y*TSl#hD1;5L}5F z0I3-cs;jK6u0aVhuSEd>i9!gYRs;u11%(+}UBiYT009!ehFZJ~XA?|L zqXJm9qi_PY6V?|6&lL;^(FDK`2n+$)aIqBU>9U3!4Ij>$NU@^Dix}%f002AEes(AT diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img16.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img16.gif deleted file mode 100644 index 180d7b72d313e3e1e53d1b59a8900eb2fe3792b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1677 zcmV;826FjFNk%w1VR`{E0J8u90001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui0D1v206+x(@X1N5y*TU5yZ>M)j$~<` zXsWJk>%MTDB8zO_c)kS<01O~S;nFy42#5~BfB+12Bt~siP(Uxj2_iW$Odkk`itxor zN!6<@aP|lQfeKB@y}W(+{O>Vn6b=gs3IY!dNplkl00a{Q2s{7{aU)0$4hV#Whf|J_ zk`w^|6bx3OMmBGgV0EMf2Ms_E1Pu}l2917zf`o=(Uu21kjgLK_lwp^dy@-6ok*c8+ z3{Qd*2LK5P4ysy=wbZ2!w-VJ7im@aF>g(+7>}v4wPzrVO_V@S}*V)_o{{H|23LHqV zpuvL(6DnNDa0Y`0Wg1EhD4>S}bQuCP$uzN}3ugWvLjtS_zyZe$TP`fHa$(Ds1Pfdu zz$jtBI0;Rj7`Y_DNupC83;>-_K&H&06d+PifV4}~l!;ghNI>&JQKMU$KG1_lOFgKe z>JR{+^}$XqKFuKo#zClst60k_{h7fn1*o!IP9h+POMwMO0$dju9sl0gxuF$!TcK(|=_3IQ2_;8(JD1yp-8Z;Pe;`0-O3wn?W zaezC#?>OrPSfDO7>k@2nqzAAbMEim6u>PZ&9NT$700S1720%<2Ai;qvI0-XB0{=Z= z0C^uYA<0Z8Ttk}{&u}QsbXOdBS3L)+qnIcdP{_rF4Mvn;h#z*~AqN_2gbo8F;+o3^(ks z8jd_H@x(Y-NAblNn_zLq9CwT(z8)i_2mr215P&OTtQ&GX8?S88SkH7|mlpR4keLc4 z_tqH>NHB1TtEo1@qRB-yrosXXBD8aFNK5!ZuNKhLz?rLg(1fK2DImrO&e{X@Dil;Y zA=M!0d4tv@bj{mm{C$v$1#i@tR|i(Sq38rBryxKa0SxN~XdLXlC^SRE^R}84*h~Oo zg}<6424>sAx8EJSL3XtMlbhUlK0$WAfR-xx0Qv=KQUKF~mqS}q+Y%VC#1ssuj@adV zC_q2~y=Z**>=g`PJMOL_KxSXK0Tx5)cpYHUYph$~x)-&`E@?YCbK zhHe|!JP?;oqvRg2Ex81fOjRYojk|-5l`E!5eo#75SY>s=XF%1jk9&C8m!mEK7o&i0 zPhWWvrtI_~`SF2%<&y=-!sea=9%X-I!CM3;a6hoEW_e3`fC8jKl?kZrgM@I9r+}gW z)n(vZ>Y!Xrre+|lbzyTC2q6~o*94Xz!Vm@+g4m=Lwgj9cPG+H92A&i)1Q8J@(@0_k zc*H?$XhVi6Fp>VREOfU5m?Vh8P>dE}_Z=ZR@fTk>fD!K!#SVgii5xs58--X8DlSSf zTi9Be#Q3Va-O(jtm=p72p~i8AKmiQE;!?Df4LYFUWN{e4Bz$6vp{RpcCX?F;DCw3= z1fVKuh?c;X_edHrC2HpZQ&Faql0FOo9gyV1B!^JRV-aRFp46lWIC+X(Rv?spFyT1X zV+y!&;%*BV#{pQv14EL)02lFq3kUUv7UCll0>Fq4Q4uXoy0Ha)@P;B-!>8@_t`S(o zCOY!7O&O?@1Epikg|zh~)zyAOHq*$z@kShawb-P&Ym9 z22G1jbU<>}P#FZGq8Q~ER0{CWjC!MyrG*P3gh*s6>^zlsd%B;7eyp XFIm~MRy572PIt=Fp8E7*5dZ)?*?7T1 diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img17.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img17.gif deleted file mode 100644 index 27aabd116242542e94ef115ef9280d1237a64549..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 236 zcmZ?wbhEHblw*)*c+3C-D^{$SGiT0(2@_gcS}H0ka&mGK5)wi}LOeV?Y;0@{3=C9M zR3s!MczAd=Z{Do$h$r+vVgq8UN8CmS_cs2?KxAb=%N;OE` zb^pT-n|TQgdnSKz)lz0y!>^;qYsj4<#L_OACdtZ>C6z11Yi&QtK7gOcAac4GN4gLX jYv)X1`KjV69xPmvpl z9Ux8~`V=J>I0qnbPe9;2MKqE{V$~}ekCj0~h_nz?%}f9=FvTz@3j+Fh1|GGCr~p#9 zqUf}G&2GCTfWn4^BW;Q7#g(EX_zwwwem6;H4|fs<0%j5o2NMf;7YGY=dldoznwy+) z4+1m^3k(W33~~hw7Xv$QuCK7Mva_xNt!oEgu6iI+gd870Z(ehk7z+Y3!fm2fz=X;Z z1qTHH5(^biVdC{o ziqN!r&2GDmR*9kEORU}!baiEL+#Un~3>XCm1tbp&R0RtL8&qc3)e>_G$0jqj=va__cwzs%yai0bpgS4@z69x*D4+x&K!GL!LH7E** z7YGUoEU6dEaSqmb0Gt*E0@V@?;17+DD#rlE4-5)m3PMsolMe?Zjx!F_-GHZq?z#^De9?@j5HebLq&bAP+kM2BoqthY-Gp`4%5F z42(MFx+SjDTb&Uk|TNIy47dc&ritYb2}%3>6FrcbuSw zSk2E1n#vOfPYZK$e7O_SED8k_1`QVjomS@>LdKLf{pddjkECYaz;)=m$nxw7ZkSGuoqffIC1ajN3g*uoB zl;X6{QC4@nj}OaD0nM$3385??&?S2heR=>A3s@2ZRZM1_w*Eh+zr|PA>qU1q^uw z3Xuk&2-6bJ69$C~Jp!j`+`r#FwzgKs*LRrhCknLgCj*oZ1D6v8P+PjZ@)`q9{m2Ea$ zK?0(t%?Tm1V65|yPJ>MV5TSbjw7`c7^laX&Q1s{n1_cB(STfW{MGF^Q4U@ny6)RT$ z5R?=YqzJwVV!1|2OSIOdp)bUo0YJB|-2ww@FaY47m>LEM3M`m&hQ)yfFB%-^;^uJT n#Ujp~WkX|N#LJbiVIG0Nz~Bj*M)=*_PSj}9o)WNQ5di=@j#|1| diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img22.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img22.gif deleted file mode 100644 index 00cdfb2a960ad45b36c246bfaa060695e49f2d61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmZ?wbhEHb!3D77AI2M3_Gd&;yA1EO9VB>?1ABBi8ka8EP0NjMh QoJq5$&6_xL28jRwJMZ3!>Hq)$ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img3.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img3.gif deleted file mode 100644 index 5fc88ec3eb6fceec2b316cf73f73a744d216554f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmZ?wbhEHb)MAifc+3C-D^{$SGiT0(2@_gcS}H0ka&mGK5)wi}LOeV?Y;0@{3=C9M zR3s!MczAd=Z{DoYX{SE!E<%vclAh zDJ8l0E7rXiYvwUHq;zyK4+G;#g}@xE`4==c94<7R%i_QkxFSr7-RX+QhraVKwp5+X zTg=+d$@D((a=GFSruTGUE- diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img4.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img4.gif deleted file mode 100644 index c53c7a2bb16f0d3f0743daaa09b844d723b09e8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 628 zcmV-)0*n1eNk%w1VM75B0OJ4v0001}sHmKroRE-^goK26czA4VY+ztuR8&+*NJu<9 zJTNdYBqSsl7#Iu;470PdA^8LW000jFEC2ui07C%~06+x(@X1MM5_JX@vj3oWg`~7~ zWvZ@h>%MR-&)Mjm83JGuvQPv-0#V@gez5|8AaNWfzDaOcBoz{#C~eE_dcRyuKor1Q9(;6K(+p2X7e)1{DJYa{~@E0giEq5{eX!a|KKi z0v(em6OenQrl+VXm?WeX0YXw|API|h1hO-Kj0)Rcx z8Vl6b*0mG`4j4L6vdwSL9{~#l2Mkyg2-3do?(ZvO6l?7306+BE44G*X1L+SGuyb($ zK%fWd3heXO@4>$Z2sr3lR6s!mf$%bF+$cdI1q1#J)*)y>0V4?o!axkb6$T}U0>(0W^C zpu-)t#@J3_NJ4Ljg;gszJQ+c7BkLG&LdVB3LX>tz)seyAz!1*0)`+ruMPlQ@0~840 zxvj$X%MR-&$KjpYK8!qge(*SAb}|Ke85-%K#({Nlix&0G?EI5PXWR0a-oy~!q*dI z1H6y4#%{ac@b)^BNFyt|mB3DN4B`)aM}TpDgolWUiY|f^2L%!UNlpU+1_yr`3I-Je z1cL((Gy$K1nG%~}r4t2B5&|8hD>DrTt`lhrTw$V%zQ4eUsS{!bpuH4mSrP=3APJm= z&A~I!)YsVAEz>rf0{~;)8ADOd4+e$;;SakN0SoZ)^3kjg7(3+@=zr=T?*s=JEQ5id z2Lc5EffQIk56?Pn5F=)r!%P8yhU|6#+4HafgE0O8Rty-ZOU3~JK2R?6NGzm;k?c57 z@W`ov0vQYthTxhj2%Ft9?!rMh)A=SKC!m}J0irLdYu~Qv)lF0q7^>0ByZlk+ft*wL zfnb@__0CSJ!TwI3{f79+^6)uHzKKgp#gDKPJ91%AfO85A6a{wXH7L;>OMtP%azC{q zPz8I;@_=br$VABu3>-j&bJ1jI!BnPoV9_lDC?LRF_Q)W>0&v+z6$6kYML}>5_9&5w zHY9Kz6FZLO0Ri8IV2w0MesDt^LRCP(Vu3ZZq>oragk%X*Bjvj5)&j$}EB zW~xqG$8u{d&vb3yc!g$dh5(oeVlg2A5{N=jGQ>4A4Tpr`dKi&PQ*>H=JSm05r+_G% z%ZJJU!3+w-0ifs0B#RZo};9trXZaZ3Pzy=0R{(;9ts8&1BJFyIkX=z8Ml%T1q2|z6}%4u9RUQEGz|yD z6mkk>69c-}*{9sy-n+FV*gQuR1a=?^;W+0L3;<_m4KeTWX7dv5-y!P~>iYl#3jCmt z!Ve4mB$N|^?tuYN0@yH-NFl(2ix@K|^wMxjgDUBQBwn@T(L{4EosD`6JQz#CMJ$UM308EZM_IPEl1$dldjNpyLe%gKZQ@GXpUn z1NbTg2_S20$HIFvYu=Uk17;oXkgDpOp&;k208*=74M3-7*09$(_G#LR;mx>nkC@FO zTkU+URk^+v`S7{|@G=+(Oagh}TM_P-*6=i3&=&-l z(H$T{#5K%I87xvo0*KLBg(x=2=>e00(HVv>3J~%EpK(I9l>!31<3KPm2+$n>0d~f~ zV0}@5rv#!Xu&9}w?xQCK3p9Y#I+qgkB0qN!aB2-ZsGzDRb5%e9KIX0S4?>;hD$uJW r+**P~j6M)R0%6qvtPRDQaI78#5s)^*uw6i_>$CtZ%LB0zL;wIg-N#l) diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img8.gif b/deal.II/doc/tutorial/chapter-2.step-by-step/step-14.data/intro/img8.gif deleted file mode 100644 index 8dfe7759c6c98e833d5dca529e7bfa3632a750ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2428 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