Starting in the spring 2013, I videotaped the lectures
for my *MATH 676: Finite element methods in scientific
computing* course
at the KAMU TV studio at
Texas A&M. These are lectures
on many aspects of scientific computing, software,
and the practical aspects of the finite element method, as
well as their implementation in the
deal.II software library. Support
for creating these videos was also provided by the
National Science Foundation and
the Computational
Infrastructure in Geodynamics.

**Note 1:** In some of the videos, I demonstrate code or user
interfaces. If you can't read the text, change the
video quality by clicking on the "gear" symbol at the
bottom right of the YouTube player.

**Note 2:**
deal.II is an
actively developed library, and in the course of this
development we occasionally deprecate and remove
functionality. In some cases, this implies that we also
change tutorial programs, but the nature of videos is that
this is not reflected in something that may have been
recorded years ago. If in doubt, consult
the *current* version of the tutorial.

**Lecture 21: Block structured solvers for vector-valued problems**

Vector-valued problems naturally lead to block-structured matrices that allow for solvers that use this structure. I discuss how this block structure arises out of the bilinear form and how to exploit it in a Schur complement solver for the mixed Laplace equation. The class then shows how this is implemented in step-20. The lecture also finishes up some unfinished business on visualizing the solution of vector-valued problems using vector field plots left over from the previous lecture.

**Note:**
The lecture fails to show how to make sure the velocity degrees of freedom are
indeed sorted before the pressures. This happens by calling
`DoFRenumbering::component_wise`

in the
`make_grid_and_dofs`

function of this program. See the
documentation of step-20 for more information.

There were a number of typos in the formulas on the slides shown in the
lecture; these have been corrected on the slides linked to on this page. I
also got confused when trying to find the `IterativeInverse`

class
in step-20. This class is in fact a part of deal.II.

**Slides:** click here