// ---------------------------------------------------------------------
//
// Copyright (C) 2005 - 2018 by the deal.II authors
//
// This file is part of the deal.II library.
//
// The deal.II library is free software; you can use it, redistribute
// it, and/or modify it under the terms of the GNU Lesser General
// Public License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
// The full text of the license can be found in the file LICENSE at
// the top level of the deal.II distribution.
//
// ---------------------------------------------------------------------


/**
 * @page Tutorial Tutorial programs
 *
 * New to deal.II? You might want to start with tutorial Step-1 and work
 * your way up to Step-5. At that point you can explore what features you
 * are interested in and look at the large collection of programs listed
 * below.
 *
 * The deal.II tutorial contains a collection of programs, each more or
 * less built atop of previous ones, which demonstrate various aspects of
 * the library. Each such example has the following structure:
 * <ol>
 *   <li> <b>Introduction:</b> What the program does, including
 *        the mathematical model, and
 *        what programming techniques are new.
 *   <li> <b>The commented program:</b> An extensively documented listing of the
 *        source code.
 *   <li> <b>Results:</b> The output of the program, with comments and
 *        interpretation.
 *   <li> <b>The plain program:</b> The source code stripped of
 *        all comments.
 * </ol>
 * You can browse the available tutorial programs
 * <ol>
 *   <li> as <b><a href="#graph">a graph</a></b> that shows how tutorial programs build upon each other.
 *   <li> as <b><a href="#list">a list</a></b> that provides a short
 *     synopsis of each program.
 *   <li> or <b><a href="#topic">grouped by topic</a></b>.
 * </ol>
 *
 * The programs are in the <code>examples/</code> directory of your local
 * deal.II installation. After compiling the library itself, if you go into
 * one of the tutorial directories, you can configure the program by typing
 * <code>cmake .</code>, build it via <code>make</code> and run it using
 * <code>make run</code>. The latter command also compiles the program if
 * that has not already been done. The CMakeLists.txt files in the
 * different directories are based on the
 * <a href="../../users/cmakelists.html#cmakeauto" target="_top">autopilot
 * style CMakeLists.txt example</a>.
 *
 * @note Some of the tutorial programs also jointly form
 *   the <a href="../../doxygen/deal.II/group__geodynamics.html">geodynamics
 *   demonstration suite</a>. More, often more complex but less well documented,
 *   deal.II-based programs than the ones that form the tutorial can also be
 *   found in the @ref CodeGallery .
 *
 *
 * <a name="graph"></a>
 * @anchor TutorialConnectionGraph
 * <h3>Connections between tutorial programs</h3>
 *
 * The following graph shows the connections between tutorial programs and
 * how they build on each other.
 * Click on any of the boxes to go to one of the programs. If you hover
 * your mouse pointer over a box, a brief description of the program
 * should appear.
 * @dot
@@TUTORIAL_MAP@@
 * @enddot
 *
 * <b>Legend:</b><br />
 * @dot
@@TUTORIAL_LEGEND@@
 * @enddot
 *
 * <a name="list"></a>
 * <h3>Tutorial programs listed by number</h3>
 *
 * <table align="center" width="90%">
 *   <tr valign="top">
 *       <td width="100px">step-1</td>
 *       <td> Creating a grid. A simple way to write it to a file.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-2</td>
 *       <td> Associate degrees of freedom to
 *       each vertex and compute the resulting sparsity pattern of
 *       matrices. Show that renumbering reduces the bandwidth of
 *       matrices significantly, i.e. clusters nonzero entries around the
 *       diagonal.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-3</td>
 *       <td> Actually solve Laplace's
 *       problem. Object-orientation. Assembling matrices and
 *       vectors. %Boundary values.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-4</td>
 *       <td> This example is programmed in a
 *       way that it is independent of the dimension for which we want to
 *       solve Laplace's equation; we will solve the equation in 2D and
 *       3D, although the program is exactly the same. Non-constant right
 *       hand side function. Non-homogeneous boundary values.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-5</td>
 *       <td> Computations on successively
 *       refined grids. Reading a grid from disk. Some optimizations.
 *       Using assertions. Non-constant coefficient in
 *       the elliptic operator (yielding the extended Poisson
 *       equation). Preconditioning the CG solver for the
 *       linear system of equations.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-6</td>
 *       <td> Adaptive local
 *       refinement. Handling of hanging nodes. Higher order elements.
 *       Catching exceptions in the <code>main</code>; function.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-7</td>
 *       <td> Helmholtz
 *       equation. Non-homogeneous Neumann boundary conditions and
 *       boundary integrals. Verification of correctness of computed
 *       solutions. Computing the error between exact and numerical
 *       solution and output of the data in tables. Using counted pointers.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-8</td>
 *       <td> The elasticity equations will be
 *       solved instead of Laplace's equation. The solution is
 *       vector-valued and the equations form a system with as many
 *       equations as the dimension of the space in which it is posed.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-9</td>
 *       <td> Linear advection equation, assembling
 *       the system of equations in parallel using multi-threading,
 *       implementing a refinement criterion based on a finite difference
 *       approximation of the gradient.
 *
 *   <tr valign="top">
 *       <td>step-10</td>
 *       <td> Higher order mappings. Do not
 *       solve equations, but rather compute the value of pi to high
 *       accuracy.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-11</td>
 *       <td> Solving a Laplace problem with
 *       higher order mappings. Using mean value constraints and
 *       intermediate representations of sparsity patterns.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-12</td>
 *       <td> Discontinuous Galerkin methods for linear advection problems.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-13</td>
 *       <td> Software design questions and
 *       how to write a modular, extensible finite element program.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-14</td>
 *       <td> Duality based error estimators,
 *       more strategies to write a modular, extensible finite element
 *       program.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-15</td>
 *       <td> A nonlinear elliptic problem: The minimal surface equation.
 *       Newton's method. Transferring a solution across mesh refinement.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-16</td>
 *       <td> Multigrid preconditioning of the Laplace equation on adaptive
 *       meshes.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-17</td>
 *       <td> Using PETSc for linear algebra; running
 *       in parallel on clusters of computers linked together by MPI.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-18</td>
 *       <td> A time dependent problem; using a much
 *       simplified version of implementing elasticity; moving meshes; handling
 *       large scale output of parallel programs.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-19</td>
 *       <td> Input parameter file handling. Merging
 *       output of a parallel program.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-20</td>
 *       <td> Mixed finite elements. Using block
 *       matrices and block vectors to define more complicated solvers and
 *       preconditioners working on the Schur complement.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-21</td>
 *       <td> The time dependent two-phase flow in
 *       porous media. Extensions of mixed Laplace discretizations. More
 *       complicated block solvers. Simple time stepping.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-22</td>
 *       <td> Solving the Stokes equations of slow fluid flow on adaptive
 *       meshes. More on Schur complement solvers. Advanced use of the
 *       ConstraintMatrix class.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-23</td>
 *       <td> Finally a "real" time dependent problem, the wave equation.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-24</td>
 *       <td> A variant of step-23 with absorbing
 *       boundary conditions, and extracting practically useful data.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-25</td>
 *       <td> The sine-Gordon
 *       soliton equation, which is a nonlinear variant of the time
 *       dependent wave equation covered in step-23 and step-24.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-26</td>
 *       <td> The heat equation, solved on a mesh that is adapted
 *       every few time steps.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-27</td>
 *       <td> hp finite element methods  </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-28</td>
 *       <td> Multiple grids for solving a multigroup diffusion equation
 *       in nuclear physics simulating a nuclear reactor core  </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-29</td>
 *       <td> Solving a complex-valued Helmholtz equation. Sparse direct
 *       solvers. Dealing with parameter files.  </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-30</td>
 *       <td> Anisotropic refinement for DG finite element methods.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-31</td>
 *       <td> Time-dependent Stokes flow driven by temperature
 *       differences in a fluid. Adaptive meshes that change between time
 *       steps.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-32</td>
 *       <td> A massively parallel solver for time-dependent Stokes flow driven
 *       by temperature differences in a fluid. Adapting methods for real-world
 *       equations.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-33</td>
 *       <td> A nonlinear hyperbolic conservation law: The Euler equations of
 *       compressible gas dynamics.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-34</td>
 *       <td> %Boundary element methods (BEM) of low order: Exterior irrotational
 *       flow. The ParsedFunction class.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-35</td>
 *       <td> A projection solver for the Navier&ndash;Stokes equations.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-36</td>
 *       <td> Using SLEPc for linear algebra; solving an eigenspectrum
 *       problem. The Schrödinger wave equation.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-37</td>
 *       <td> Solving a Poisson problem with a multilevel preconditioner without
 *       explicitly storing the matrix (a matrix-free method) in a massively
 *       parallel context.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-38</td>
 *       <td>Solving the Laplace-Beltrami equation on curved manifolds embedded
 *       in higher dimensional spaces.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-39</td>
 *       <td> Solving Poisson's equation once more, this time with the
 *       interior penalty method, one of the discontinuous Galerkin
 *       methods developed for this problem. Error estimator, adaptive
 *       meshes, and multigrid preconditioner, all using the MeshWorker
 *       framework.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-40</td>
 *       <td> Techniques for the massively parallel solution of the Laplace
 *       equation (up to 10,000s of processors).
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-41</td>
 *       <td> Solving the obstacle problem, a variational inequality.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-42</td>
 *       <td> A solver for an elasto-plastic contact problem, running on
 *       parallel machines.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-43</td>
 *       <td> Advanced techniques for the simulation of porous media flow.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-44</td>
 *       <td> Finite strain hyperelasticity based on a three-field formulation.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-45</td>
 *       <td> Periodic boundary conditions.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-46</td>
 *       <td> Coupling different kinds of equations in different parts of the domain.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-48</td>
 *       <td> Explicit time stepping for the Sine&ndash;Gordon equation based on
 *       a diagonal mass matrix. Efficient implementation of (nonlinear) finite
 *       element operators.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-49</td>
 *       <td> Advanced mesh creation and manipulation techniques.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-51</td>
 *       <td> Solving the convection-diffusion equation with a hybridizable
 *       discontinuous Galerkin method using face elements.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-52</td>
 *       <td> Solving the time dependent neutron diffusion equation using
 *       Runge-Kutta methods.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-53</td>
 *       <td> Describing the geometry of complex domains and curved boundaries.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-54</td>
 *       <td> Using CAD files to describe the boundary of your domain.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-55</td>
 *       <td> Solving the Stokes problem in parallel.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-56</td>
 *       <td> Geometric Multigrid for Stokes.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-57</td>
 *       <td> Incompressible, stationary Navier Stokes equations.
 *       </td></tr>
 *
 *   <tr valign="top">
 *       <td>step-59</td>
 *       <td> Solving a Poisson problem discretized with an interior penalty DG
 *       method and a multilevel preconditioner in a matrix-free fashion using
 *       a massively parallel implementation.
 *
 *   <tr valign="top">
 *       <td>step-60</td>
 *       <td> Distributed Lagrange multipliers for the solution of
 *       Poisson problems in complex domains with constraints defined
 *       on non-matching grids.
 *       </td></tr>
 *
 * </table>
 *
 * <a name="topic"></a>
 * <h3>Tutorial programs grouped by topics</h3>
 *
 * <h4><b>Basic techniques</b></h4>
 * <table align="center" width="90%">
 *
 *   <tr valign="top">
 *     <td width="400px"> Creating a grid. A simple way to write it to a file
 *     <td>step-1</td>
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Degrees of freedom
 *     <td>step-2</td>
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Solve the Laplace equation
 *     <td>step-3</td>
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Dimension independent programming, non-zero data
 *     <td>step-4</td>
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Computing on uniformly refined meshes
 *     <td>step-5</td>
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Adaptivity
 *     <td>step-6, step-26</td>
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Evaluating errors
 *     <td>step-7</td>
 *     </td>
 *
 *   <tr valign="top">
 *     <td> Nonlinear problems, Newton's method
 *     </td>
 *     <td>step-15</td>
 *   </tr>
 *
 * </table>
 * <h4><b>Advanced techniques</b></h4>
 * <table align="center" width="90%">
 *
 *   <tr valign="top">
 *     <td width="400px"> Multithreading
 *     </td>
 *     <td>
 *       step-9,
 *       step-28,
 *       step-32,
 *       step-44,
 *       step-48,
 *       step-51
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Block solvers and preconditioners
 *     </td>
 *     <td>
 *       step-20,
 *       step-21,
 *       step-22,
 *       step-31,
 *       step-32,
 *       step-43,
 *       step-44,
 *       step-55,
 *       step-56,
 *       step-57
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Using Trilinos
 *     </td>
 *     <td>
 *       step-31,
 *       step-32,
 *       step-33,
 *       step-41,
 *       step-42,
 *       step-43,
 *       step-55
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Parallelization via PETSc and MPI
 *     </td>
 *     <td>
 *       step-17,
 *       step-18,
 *       step-19,
 *       step-40,
 *       step-55
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Parallelization via Trilinos and MPI
 *     </td>
 *     <td>
 *       step-32,
 *       step-42,
 *       step-55
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Parallelization on very large numbers of processors
 *     </td>
 *     <td>
 *       step-32,
 *       step-37,
 *       step-40,
 *       step-42,
 *       step-55,
 *       step-59
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Input parameter handling
 *     </td>
 *     <td>
 *       step-19,
 *       step-28,
 *       step-29,
 *       step-32,
 *       step-33,
 *       step-34,
 *       step-35,
 *       step-36,
 *       step-42,
 *       step-44,
 *       step-60
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Higher order mappings
 *     </td>
 *     <td>
 *       step-10,
 *       step-11,
 *       step-32,
 *       step-60
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Error indicators and estimators
 *     </td>
 *     <td>
 *       step-6,
 *       step-9,
 *       step-14,
 *       step-39
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Transferring solutions across mesh refinement
 *     </td>
 *     <td>
 *       step-15,
 *       step-28,
 *       step-31,
 *       step-32,
 *       step-33,
 *       step-42,
 *       step-43,
 *       step-57
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Discontinuous Galerkin methods
 *     </td>
 *     <td>
 *       step-12,
 *       step-21,
 *       step-39,
 *       step-46,
 *       step-51,
 *       step-59
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> hp finite elements
 *     </td>
 *     <td>
 *       step-27,
 *       step-46
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Anisotropic refinement for DG finite element methods
 *     </td>
 *     <td>step-30</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Computing Jacobians from residuals, automatic differentiation
 *     </td>
 *     <td>step-33</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> %Boundary element methods, curved manifolds
 *     </td>
 *     <td>
 *       step-32,
 *       step-34,
 *       step-38,
 *       step-53,
 *       step-54
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Periodic boundary conditions
 *     </td>
 *     <td>
 *       step-45,
 *       step-59
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Matrix-free methods with sum factorization
 *     </td>
 *     <td>
 *       step-37,
 *       step-48,
 *       step-59
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Advanced meshes and geometries
 *     </td>
 *     <td>
 *       step-49,
 *       step-53,
 *       step-54
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Non matching algorithms
 *     </td>
 *     <td>
 *       step-60
 *     </td>
 *   </tr>
 *
 * </table>
 * <h4><b>Linear solvers</b></h4>
 * <table align="center" width="90%">
 *
 *   <tr valign="top">
 *     <td width="400px"> Conjugate Gradient solver
 *     </td>
 *     <td>step-3</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Preconditioned CG solver
 *     </td>
 *     <td>step-5</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> BiCGStab
 *     </td>
 *     <td>step-9</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Multilevel preconditioners
 *     </td>
 *     <td>
 *       step-16,
 *       step-31,
 *       step-32,
 *       step-37,
 *       step-39,
 *       step-41,
 *       step-42,
 *       step-43,
 *       step-56,
 *       step-59
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Parallel solvers
 *     </td>
 *     <td>
 *       step-17,
 *       step-18,
 *       step-32,
 *       step-37,
 *       step-40,
 *       step-42,
 *       step-55,
 *       step-59
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Block and Schur complement solvers
 *     </td>
 *     <td>
 *       step-20,
 *       step-21,
 *       step-22,
 *       step-31,
 *       step-32,
 *       step-43,
 *       step-55,
 *       step-56,
 *       step-57,
 *       step-60
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Decoupled projection solvers
 *     </td>
 *     <td>step-35</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Linear Newton systems from nonlinear equations
 *     </td>
 *     <td>
 *       step-33,
 *       step-41,
 *       step-42,
 *       step-44,
 *       step-57
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Eigenvalue solvers
 *     </td>
 *     <td>step-36</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Linear operators
 *     </td>
 *     <td>
 *       step-44,
 *       step-60
 *     </td>
 *   </tr>
 *
 * </table>
 * <h4><b>Other equations</b></h4>
 * <table align="center" width="90%">
 *
 *   <tr valign="top">
 *     <td width="400px"> Helmholtz equation
 *     </td>
 *     <td>
 *       step-7,
 *       step-29
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Elasticity and elasto-plasticity equations
 *     </td>
 *     <td>
 *       step-8,
 *       step-42,
 *       step-46
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> The heat equation
 *     </td>
 *     <td>
 *       step-26
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Minimal surface equation
 *     </td>
 *     <td>
 *       step-15
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Quasi-static elasticity equations
 *     </td>
 *     <td>
 *       step-18,
 *       step-44
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Transport (advection) equations
 *     </td>
 *     <td>step-9,
 *         step-21,
 *         step-31,
 *         step-32,
 *         step-43,
 *         step-51
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> The nonlinear hyperbolic Euler system of compressible gas dynamics
 *     </td>
 *     <td>step-33</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Mixed Laplace, Darcy, Porous media
 *     </td>
 *     <td>
 *       step-20,
 *       step-21,
 *       step-43
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Stokes and incompressible Navier-Stokes flow
 *     </td>
 *     <td>
 *       step-22,
 *       step-31,
 *       step-32,
 *       step-35,
 *       step-46,
 *       step-55,
 *       step-56,
 *       step-57
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> The wave equation, in linear and nonlinear variants
 *     </td>
 *     <td>
 *       step-23,
 *       step-24,
 *       step-25,
 *       step-48
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> A multigroup diffusion problem in neutron transport
 *     </td>
 *     <td>step-28</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Irrotational flow
 *     </td>
 *     <td>step-34</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> An eigenspectrum problem
 *     </td>
 *     <td>step-36</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> The obstacle problem, a variational inequality
 *     </td>
 *     <td>
 *       step-41,
 *       step-42
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Coupling different equations in different parts of the domain
 *     </td>
 *     <td>step-46</td>
 *   </tr>
 *
 * </table>
 * <h4><b>%Vector problems</b></h4>
 * <table align="center" width="90%">
 *
 *   <tr valign="top">
 *     <td width="400px"> Elasticity and elasto-plasticity equations
 *     </td>
 *     <td>
 *       step-8,
 *       step-42
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Mixed Laplace
 *     </td>
 *     <td>step-20</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Mixed Laplace plus an advection equation
 *     </td>
 *     <td>step-21,
 *         step-43
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Incompressible Stokes and Navier-Stokes flow
 *     </td>
 *     <td>step-22,
 *         step-31,
 *         step-32,
 *         step-35,
 *         step-55,
 *         step-56,
 *         step-57
 *    </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> A complex-valued Helmholtz problem
 *     </td>
 *     <td>step-29</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> The Euler equations of compressible gas dynamics
 *     </td>
 *     <td>step-33</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Coupling different equations in different parts of the domain
 *     <td>step-46</td>
 *   </tr>
 *
 * </table>
 *
 *
 * <h4><b>Time dependent problems</b></h4>
 * <table align="center" width="90%">
 *
 *   <tr valign="top">
 *     <td> The heat equation
 *     </td>
 *     <td>step-26
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td width="400px"> Quasi-static elasticity
 *     </td>
 *     <td>
 *      step-18,
 *      step-44
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Porous media flow
 *     </td>
 *     <td>step-21,
 *         step-43
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> The wave equation, in linear and nonlinear variants
 *     </td>
 *     <td>step-23,
 *         step-24,
 *         step-25,
 *         step-48
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Time dependent Stokes flow driven by buoyancy
 *     </td>
 *     <td>step-31,
 *         step-32
 *     </td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> The Euler equations of compressible gas dynamics
 *     </td>
 *     <td>step-33</td>
 *   </tr>
 *
 *   <tr valign="top">
 *     <td> Time dependent neutron diffusion equation
 *     </td>
 *     <td>step-52</td>
 *   </tr>
 * </table>
 */
