the solver performance. Therefore, here is the textual output:
<pre>
-DEAL::Cycle 0
-DEAL:: Number of active cells: 20
-DEAL:: Number of degrees of freedom: 25 (by level: 8, 25)
-DEAL:cg::Starting value 0.510691
-DEAL:cg::Convergence step 6 value 4.59193e-14
-DEAL::Cycle 1
-DEAL:: Number of active cells: 41
-DEAL:: Number of degrees of freedom: 52 (by level: 8, 25, 41)
-DEAL:cg::Starting value 0.455356
-DEAL:cg::Convergence step 8 value 3.09682e-13
-DEAL::Cycle 2
-DEAL:: Number of active cells: 80
-DEAL:: Number of degrees of freedom: 100 (by level: 8, 25, 61, 52)
-DEAL:cg::Starting value 0.394469
-DEAL:cg::Convergence step 9 value 1.96993e-13
-DEAL::Cycle 3
-DEAL:: Number of active cells: 161
-DEAL:: Number of degrees of freedom: 190 (by level: 8, 25, 77, 160)
-DEAL:cg::Starting value 0.322156
-DEAL:cg::Convergence step 9 value 2.94418e-13
-DEAL::Cycle 4
-DEAL:: Number of active cells: 311
-DEAL:: Number of degrees of freedom: 364 (by level: 8, 25, 86, 227, 174)
-DEAL:cg::Starting value 0.279667
-DEAL:cg::Convergence step 10 value 3.45746e-13
-DEAL::Cycle 5
-DEAL:: Number of active cells: 593
-DEAL:: Number of degrees of freedom: 667 (by level: 8, 25, 89, 231, 490, 96)
-DEAL:cg::Starting value 0.215917
-DEAL:cg::Convergence step 10 value 1.03758e-13
-DEAL::Cycle 6
-DEAL:: Number of active cells: 1127
-DEAL:: Number of degrees of freedom: 1251 (by level: 8, 25, 89, 274, 760, 417, 178)
-DEAL:cg::Starting value 0.185906
-DEAL:cg::Convergence step 10 value 3.40351e-13
-DEAL::Cycle 7
-DEAL:: Number of active cells: 2144
-DEAL:: Number of degrees of freedom: 2359 (by level: 8, 25, 89, 308, 779, 1262, 817)
-DEAL:cg::Starting value 0.141519
-DEAL:cg::Convergence step 10 value 5.74965e-13
+Cycle 0
+ Number of active cells: 80
+ Number of degrees of freedom: 89 (by level: 8, 25, 89)
+ Number of CG iterations: 8
+
+Cycle 1
+ Number of active cells: 158
+ Number of degrees of freedom: 183 (by level: 8, 25, 89, 138)
+ Number of CG iterations: 9
+
+Cycle 2
+ Number of active cells: 302
+ Number of degrees of freedom: 352 (by level: 8, 25, 89, 223, 160)
+ Number of CG iterations: 10
+
+Cycle 3
+ Number of active cells: 578
+ Number of degrees of freedom: 649 (by level: 8, 25, 89, 231, 494, 66)
+ Number of CG iterations: 10
+
+Cycle 4
+ Number of active cells: 1100
+ Number of degrees of freedom: 1218 (by level: 8, 25, 89, 274, 764, 417, 126)
+ Number of CG iterations: 10
+
+Cycle 5
+ Number of active cells: 2096
+ Number of degrees of freedom: 2317 (by level: 8, 25, 89, 304, 779, 1214, 817)
+ Number of CG iterations: 11
+
+Cycle 6
+ Number of active cells: 3986
+ Number of degrees of freedom: 4366 (by level: 8, 25, 89, 337, 836, 2270, 897, 1617)
+ Number of CG iterations: 10
+
+Cycle 7
+ Number of active cells: 7574
+ Number of degrees of freedom: 8350 (by level: 8, 25, 89, 337, 1086, 2835, 2268, 1789, 3217)
+ Number of CG iterations: 11
</pre>
-That's almost perfect multigrid performance: 12 orders of magnitude in
-10 iteration steps, and almost independent of the mesh size. That's
+That's almost perfect multigrid performance: the linear residual gets reduced by 12 orders of
+magnitude in 10 iteration steps, and the results are almost independent of the mesh size. That's
obviously in part due to the simple nature of the problem solved, but
it shows the power of multigrid methods.
<h3> Possible extensions </h3>
-We encourage you to switch on timing output by calling the function
-LogStream::log_execution_time() of the deallog object and compare to
+
+We encourage you to switch generate timings for the solve() call and compare to
step 6. You will see that the multigrid method has quite an overhead
on coarse meshes, but that it always beats other methods on fine
meshes because of its optimal complexity.
preconditioner that uses some sort of multigrid hierarchy for good performance
but can figure out level matrices and similar things by itself. Algebraic
multigrid methods do exactly this, and we will use them in step-31 for the
-solution of a Stokes problemm and in step-32 and step-40 for a parallel
-variation.
+solution of a Stokes problem and in step-32 and step-40 for a parallel
+variation. That said, a parallel version of this example program with MPI is found
+as step-50.
Finally, one may want to think how to use geometric multigrid for other kinds of
problems, specifically @ref vector_valued "vector valued problems". This is the