From 7b5733f783f5d55ba6528bcd4b449bd4b5b297c1 Mon Sep 17 00:00:00 2001 From: Timo Heister Date: Fri, 22 Feb 2013 16:23:43 +0000 Subject: [PATCH] moved images online from tutorial steps git-svn-id: https://svn.dealii.org/trunk@28526 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/examples/step-1/doc/results.dox | 4 +- deal.II/examples/step-10/doc/results.dox | 18 ++++----- deal.II/examples/step-12/doc/results.dox | 24 ++++++------ deal.II/examples/step-13/doc/results.dox | 24 ++++++------ deal.II/examples/step-14/doc/results.dox | 48 ++++++++++++------------ deal.II/examples/step-15/doc/results.dox | 18 ++++----- deal.II/examples/step-16/doc/results.dox | 2 +- deal.II/examples/step-17/doc/results.dox | 12 +++--- deal.II/examples/step-19/doc/results.dox | 2 +- deal.II/examples/step-2/doc/results.dox | 4 +- deal.II/examples/step-20/doc/results.dox | 16 ++++---- deal.II/examples/step-28/doc/results.dox | 10 ++--- deal.II/examples/step-3/doc/results.dox | 4 +- deal.II/examples/step-30/doc/results.dox | 10 ++--- deal.II/examples/step-34/doc/results.dox | 6 +-- deal.II/examples/step-36/doc/results.dox | 22 +++++------ deal.II/examples/step-37/doc/results.dox | 2 +- deal.II/examples/step-38/doc/results.dox | 8 ++-- deal.II/examples/step-39/doc/results.dox | 2 +- deal.II/examples/step-40/doc/results.dox | 12 +++--- deal.II/examples/step-45/doc/intro.dox | 2 +- deal.II/examples/step-45/doc/results.dox | 2 +- deal.II/examples/step-49/doc/intro.dox | 28 +++++++------- deal.II/examples/step-7/doc/results.dox | 2 +- deal.II/examples/step-8/doc/results.dox | 8 ++-- deal.II/examples/step-9/doc/results.dox | 4 +- 26 files changed, 147 insertions(+), 147 deletions(-) diff --git a/deal.II/examples/step-1/doc/results.dox b/deal.II/examples/step-1/doc/results.dox index 595a388fa6..fcbf4f4ff0 100644 --- a/deal.II/examples/step-1/doc/results.dox +++ b/deal.II/examples/step-1/doc/results.dox @@ -6,11 +6,11 @@ like this:
- @image html step-1.grid-1.png + - @image html step-1.grid-2.png +
diff --git a/deal.II/examples/step-10/doc/results.dox b/deal.II/examples/step-10/doc/results.dox index 785792d11b..2e25ba40fa 100644 --- a/deal.II/examples/step-10/doc/results.dox +++ b/deal.II/examples/step-10/doc/results.dox @@ -28,28 +28,28 @@ these pictures in acceptable quality, view them one by one.
- @image html step-10.ball_mapping_q1_ref0.png + - @image html step-10.ball_mapping_q1_ref1.png +
- @image html step-10.ball_mapping_q2_ref0.png + - @image html step-10.ball_mapping_q2_ref1.png +
- @image html step-10.ball_mapping_q3_ref0.png + - @image html step-10.ball_mapping_q3_ref1.png +
@@ -61,13 +61,13 @@ with dashed lines the exact circle:
- @image html step-10.quarter-q1.png + - @image html step-10.quarter-q2.png + - @image html step-10.quarter-q3.png +
diff --git a/deal.II/examples/step-12/doc/results.dox b/deal.II/examples/step-12/doc/results.dox index eb5bea07d1..ed1a3f92fd 100644 --- a/deal.II/examples/step-12/doc/results.dox +++ b/deal.II/examples/step-12/doc/results.dox @@ -51,9 +51,9 @@ DEAL::Writing solution to We show the solutions on the initial mesh, the mesh after two and after five adaptive refinement steps. -@image html step-12.sol-0.png -@image html step-12.sol-2.png -@image html step-12.sol-5.png + + + Then we show the final grid (after 5 refinement steps) and the solution again, @@ -62,13 +62,13 @@ function and the VTK-based VisIt visualization program) that better shows the sharpness of the jump on the refined mesh and the over- and undershoots of the solution along the interface: -@image html step-12.grid-5.png -@image html step-12.3d-solution.png + + And finally we show a plot of a 3d computation. -@image html step-12.sol-5-3d.png + @@ -97,14 +97,14 @@ refinement, results look much different when using a continuous element: 0   - @image html step-12.cg.sol-0.png + 1   - @image html step-12.cg.sol-1.png + @@ -113,14 +113,14 @@ refinement, results look much different when using a continuous element: 2   - @image html step-12.cg.sol-2.png + 3   - @image html step-12.cg.sol-3.png + @@ -129,14 +129,14 @@ refinement, results look much different when using a continuous element: 4   - @image html step-12.cg.sol-4.png + 5   - @image html step-12.cg.sol-5.png + diff --git a/deal.II/examples/step-13/doc/results.dox b/deal.II/examples/step-13/doc/results.dox index 86de3d4aab..e8457619ed 100644 --- a/deal.II/examples/step-13/doc/results.dox +++ b/deal.II/examples/step-13/doc/results.dox @@ -58,46 +58,46 @@ first 9 refinement steps of the Kelly refinement indicator:
- @image html step-13.solution-kelly-0.png + - @image html step-13.solution-kelly-1.png +
- @image html step-13.solution-kelly-2.png + - @image html step-13.solution-kelly-3.png +
- @image html step-13.solution-kelly-4.png + - @image html step-13.solution-kelly-5.png +
- @image html step-13.solution-kelly-6.png + - @image html step-13.solution-kelly-7.png +
- @image html step-13.solution-kelly-8.png + - @image html step-13.solution-kelly-9.png +
@@ -107,7 +107,7 @@ While we're already at watching pictures, this is the eighth grid, as viewed from top: -@image html step-13.grid-kelly-8.png + However, we are not yet finished with evaluation the point value @@ -116,7 +116,7 @@ $e=|u(x_0)-u_h(x_0)|$ for the two refinement criteria yields the following picture: -@image html step-13.error.png + diff --git a/deal.II/examples/step-14/doc/results.dox b/deal.II/examples/step-14/doc/results.dox index 595dd8906c..b572963139 100644 --- a/deal.II/examples/step-14/doc/results.dox +++ b/deal.II/examples/step-14/doc/results.dox @@ -52,11 +52,11 @@ grid, primal and dual numerical solutions look like this:
- @image html step-14.point-value.solution-5.png + - @image html step-14.point-value.solution-5-dual.png +
@@ -75,31 +75,31 @@ refinement, these are some of them:
- @image html step-14.point-value.grid-0.png + - @image html step-14.point-value.grid-2.png +
- @image html step-14.point-value.grid-4.png + - @image html step-14.point-value.grid-5.png +
- @image html step-14.point-value.grid-7.png + - @image html step-14.point-value.grid-8.png +
@@ -144,11 +144,11 @@ value:
- @image html step-14.point-value.error.png + - @image html step-14.point-value.error-estimation.png +
@@ -169,7 +169,7 @@ function $1/(r^2+0.1^2)$, where $r$ is the distance to the evaluation point; it can be shown that this is the optimal weight if we neglect the effects of boundaries): -@image html step-14.point-value.error-comparison.png + @@ -250,7 +250,7 @@ evaluation shows this:
- @image html step-14.point-derivative.solution-5-dual.png +
This time, the grids in refinement cycles 0, 5, 6, 7, 8, and 9 look @@ -258,31 +258,31 @@ like this:
- @image html step-14.point-derivative.grid-0.png + - @image html step-14.point-derivative.grid-5.png +
- @image html step-14.point-derivative.grid-6.png + - @image html step-14.point-derivative.grid-7.png +
- @image html step-14.point-derivative.grid-8.png + - @image html step-14.point-derivative.grid-9.png +
@@ -309,11 +309,11 @@ see a comparison of true and estimated error:
- @image html step-14.point-derivative.error.png + - @image html step-14.point-derivative.error-estimation.png +
@@ -340,11 +340,11 @@ respectively, look like this:
- @image html step-14.step-13.grid-9.png + - @image html step-14.step-13.grid-10.png +
@@ -356,7 +356,7 @@ like so:
- @image html step-14.step-13.solution-7.png +
@@ -370,7 +370,7 @@ important for computing the point value. The next point is to compare the new (duality based) mesh refinement criterion with the old ones. These are the results: -@image html step-14.step-13.error-comparison.png + diff --git a/deal.II/examples/step-15/doc/results.dox b/deal.II/examples/step-15/doc/results.dox index 8cdb8f3b4c..59c7ba414d 100644 --- a/deal.II/examples/step-15/doc/results.dox +++ b/deal.II/examples/step-15/doc/results.dox @@ -35,37 +35,37 @@ solution. This yields the following set of images:
- @image html step-15.solution-0.png + - @image html step-15.solution-1.png +
- @image html step-15.solution-2.png + - @image html step-15.solution-3.png +
- @image html step-15.solution-4.png + - @image html step-15.solution-5.png +
- @image html step-15.solution-6.png + - @image html step-15.solution-7.png +
@@ -85,7 +85,7 @@ the inside of the domain, where nothing interesting happens, because there isn't much change in the solution. The final solution and mesh are shown here: -@image html step-15.grid.png + diff --git a/deal.II/examples/step-16/doc/results.dox b/deal.II/examples/step-16/doc/results.dox index 762f8091b4..02000b40fe 100644 --- a/deal.II/examples/step-16/doc/results.dox +++ b/deal.II/examples/step-16/doc/results.dox @@ -6,7 +6,7 @@ other hand, since no tutorial program is a good one unless it has at least one colorful picture, here is, again, the solution:

- @image html step-16.solution.png +

When run, the output of this program is diff --git a/deal.II/examples/step-17/doc/results.dox b/deal.II/examples/step-17/doc/results.dox index 3c01f39891..9720ab3172 100644 --- a/deal.II/examples/step-17/doc/results.dox +++ b/deal.II/examples/step-17/doc/results.dox @@ -108,8 +108,8 @@ Here is some output generated in the 12th cycle of the program, i.e. with roughl 300,000 unknowns: -@image html step-17.12-ux.png -@image html step-17.12-uy.png + + @@ -121,8 +121,8 @@ separate scalar fields. What may be more interesting, though, is to look at the mesh and partition at this step: -@image html step-17.12-grid.png -@image html step-17.12-partition.png + + Again, the mesh (left) shows the same refinement pattern as seen @@ -203,8 +203,8 @@ this job is rather large (cycle 5 already prints around 82 MB of GMV data), so we contend ourselves with showing output from cycle 4: -@image html step-17.4-3d-partition.png -@image html step-17.4-3d-ux.png + + The left picture shows the partitioning of the cube into 16 processes, whereas diff --git a/deal.II/examples/step-19/doc/results.dox b/deal.II/examples/step-19/doc/results.dox index 18b18fabd3..233fbff3b1 100644 --- a/deal.II/examples/step-19/doc/results.dox +++ b/deal.II/examples/step-19/doc/results.dox @@ -209,7 +209,7 @@ examples/\step-19> ls -l solution-0005.gnuplot We can then visualize this one file with gnuplot, obtaining something like this: -@image html step-19.solution-0005.png + That's not particularly exciting, but the file we're looking at has only one 32nd of the entire domain anyway, so we can't expect much. diff --git a/deal.II/examples/step-2/doc/results.dox b/deal.II/examples/step-2/doc/results.dox index 1a8da2db93..af9891d631 100644 --- a/deal.II/examples/step-2/doc/results.dox +++ b/deal.II/examples/step-2/doc/results.dox @@ -38,11 +38,11 @@ equation):
- @image html step-2.sparsity-1.png + - @image html step-2.sparsity-2.png +
diff --git a/deal.II/examples/step-20/doc/results.dox b/deal.II/examples/step-20/doc/results.dox index 661c0bf482..4b5a36e5d4 100644 --- a/deal.II/examples/step-20/doc/results.dox +++ b/deal.II/examples/step-20/doc/results.dox @@ -22,9 +22,9 @@ The fact that the number of iterations is so small, of course, is due to good solution, let us take a look at it. The following three images show (from left to right) the x-velocity, the y-velocity, and the pressure: -@image html step-20.u.png -@image html step-20.v.png -@image html step-20.p.png + + + @@ -215,8 +215,8 @@ With a significantly higher mesh resolution, we can visualize this, here with x- and y-velocity: -@image html step-20.u-wiggle.png -@image html step-20.v-wiggle.png + + It is obvious how fluids flow essentially only along the middle line, and not @@ -287,15 +287,15 @@ A piecewise constant interpolation of the diagonal elements of the inverse of this tensor (i.e., of normalized_permeability) looks as follows: -@image html step-20.k-random.png + With a permeability field like this, we would get x-velocities and pressures as follows: -@image html step-20.u-random.png -@image html step-20.p-random.png + + We will use these permeability fields again in step-21 and step-43. diff --git a/deal.II/examples/step-28/doc/results.dox b/deal.II/examples/step-28/doc/results.dox index 8fd17aad34..1a48da48b7 100644 --- a/deal.II/examples/step-28/doc/results.dox +++ b/deal.II/examples/step-28/doc/results.dox @@ -57,21 +57,21 @@ k-effective and the ratio between maximum of fast flux and maximum of thermal on The grids of fast and thermal energy groups at mesh iteration #9 are shown in following figure. -@image html step-28.grid-0.9.order2.png + -@image html step-28.grid-1.9.order2.png + We see that the grid of thermal group is much finner than the one of fast group. The solutions on these grids are, (Note: flux are normalized with total fission source equal to 1) -@image html step-28.solution-0.9.order2.png + -@image html step-28.solution-1.9.order2.png + Then we plot the convergence data with polynomial order being equal to 1,2 and 3. -@image html step-28.convergence.png + The estimated ``exact'' k-effective = 0.906834721253 which is simply from last mesh iteration of polynomial order 3 minus 2e-10. We see that h-adaptive calculations diff --git a/deal.II/examples/step-3/doc/results.dox b/deal.II/examples/step-3/doc/results.dox index 06c1626db2..4f8b502688 100644 --- a/deal.II/examples/step-3/doc/results.dox +++ b/deal.II/examples/step-3/doc/results.dox @@ -56,11 +56,11 @@ to get the result at the right:
- @image html step-3.solution-1.png + - @image html step-3.solution-2.png +
diff --git a/deal.II/examples/step-30/doc/results.dox b/deal.II/examples/step-30/doc/results.dox index c608df53b5..9c928eea18 100644 --- a/deal.II/examples/step-30/doc/results.dox +++ b/deal.II/examples/step-30/doc/results.dox @@ -108,20 +108,20 @@ algorithms (right).
- @image html step-30.sol-1.iso.png + - @image html step-30.sol-1.aniso.png +
- @image html step-30.sol-5.iso.png + - @image html step-30.sol-5.aniso.png +
@@ -132,7 +132,7 @@ indicator seems to effectively select the appropriate cells for anisotropic refinement. This observation is strengthened by the plot of the an adapted anisotropic grid, e.g. the grid after three refinement steps. -@image html step-30.grid-3.aniso.png + In the whole left part of the domain refinement is only performed along the y-axis of cells. In the right part of the domain the refinement is dominated by diff --git a/deal.II/examples/step-34/doc/results.dox b/deal.II/examples/step-34/doc/results.dox index e4c92e08bb..47e65a30d2 100644 --- a/deal.II/examples/step-34/doc/results.dox +++ b/deal.II/examples/step-34/doc/results.dox @@ -197,16 +197,16 @@ element surface, and the potential extended to the outer and inner domain. The combination of the two for the two dimensional case looks like -@image html step-34_2d.png + while in three dimensions we show first the potential on the surface, together with a contur plot, -@image html step-34_3d.png + and then the external contour plot of the potential, with opacity set to 25%: -@image html step-34_3d-2.png + diff --git a/deal.II/examples/step-36/doc/results.dox b/deal.II/examples/step-36/doc/results.dox index 02e756fd9c..fbbb313f63 100644 --- a/deal.II/examples/step-36/doc/results.dox +++ b/deal.II/examples/step-36/doc/results.dox @@ -37,25 +37,25 @@ look like this: @@ -116,32 +116,32 @@ probability densities $|\Psi(\mathbf x)|^2$ that are significant only where the potential is the lowest, i.e. in the top right and bottom left sector of inner circle of the potential): -@image html step-36.mod.potential.png + The first five eigenfunctions are now like this:
- @image html step-36.default.eigenfunction.0.png + - @image html step-36.default.eigenfunction.1.png +
- @image html step-36.default.eigenfunction.2.png + - @image html step-36.default.eigenfunction.3.png +
- @image html step-36.default.eigenfunction.4.png +
diff --git a/deal.II/examples/step-37/doc/results.dox b/deal.II/examples/step-37/doc/results.dox index ab9a9b0648..6604cfce3a 100644 --- a/deal.II/examples/step-37/doc/results.dox +++ b/deal.II/examples/step-37/doc/results.dox @@ -7,7 +7,7 @@ a different coefficient), there is little to say about the solution. We show a picture anyway, illustrating the size of the solution through both isocontours and volume rendering: -@image html "step-37.solution.png" + Of more interest is to evaluate some aspects of the multigrid solver. When we run this program in 2D for quadratic ($Q_2$) elements, we get the diff --git a/deal.II/examples/step-38/doc/results.dox b/deal.II/examples/step-38/doc/results.dox index b0b7cdb7bd..b52ea38440 100644 --- a/deal.II/examples/step-38/doc/results.dox +++ b/deal.II/examples/step-38/doc/results.dox @@ -36,7 +36,7 @@ this, neatly following the theoretically predicted pattern: Finally, the program produces graphical output that we can visualize. Here is a plot of the results: -@image html step-38.solution-3d.png + The program also works for 1d curves in 2d, not just 2d surfaces in 3d. You can test this by changing the template argument in main() like @@ -50,7 +50,7 @@ then looks like so (the white curve is the domain, the colored curve is the solution extruded into the third dimension, clearly showing the change in sign as the curve moves from one quadrant of the domain into the adjacent one): -@image html step-38.solution-2d.png + @@ -67,9 +67,9 @@ before, we stretch it by a factor of 10 in the z-direction, and then we jumble the x- and y-coordinates a bit. Let's show the computational domain and the solution first before we go into details of the implementation below: -@image html step-38.warp-1.png + -@image html step-38.warp-2.png + The way to produce such a mesh is by using the GridTools::transform function. It needs a way to transform each individual mesh point to a diff --git a/deal.II/examples/step-39/doc/results.dox b/deal.II/examples/step-39/doc/results.dox index 20b3dc462d..f0aa08444e 100644 --- a/deal.II/examples/step-39/doc/results.dox +++ b/deal.II/examples/step-39/doc/results.dox @@ -79,7 +79,7 @@ iteration steps is constant at approximately 17.

Postprocessing of the logfile

-@image html "step-39-convergence.png" + Using the perl script postprocess.pl, we extract relevant data into output.dat, which can be used to plot graphs with gnuplot. The graph above for instance was produced with diff --git a/deal.II/examples/step-40/doc/results.dox b/deal.II/examples/step-40/doc/results.dox index ca42bb0ecc..f43355fce5 100644 --- a/deal.II/examples/step-40/doc/results.dox +++ b/deal.II/examples/step-40/doc/results.dox @@ -62,10 +62,10 @@ partitioning onto the 16 processors, and the corresponding solution:
- @image html step-36.mod.eigenfunction.0.png + - @image html step-36.mod.eigenfunction.1.png +
- @image html step-36.mod.eigenfunction.2.png + - @image html step-36.mod.eigenfunction.3.png +
- @image html step-36.mod.eigenfunction.4.png +
- @image html step-40.mesh.png + - @image html step-40.solution.png +
@@ -85,10 +85,10 @@ more interpretation can be found in the final version of the paper):
- @image html step-40.strong2.png + - @image html step-40.strong.png +
@@ -109,10 +109,10 @@ this in the following two graphs for 256 and 4096 processors:
- @image html step-40.256.png + - @image html step-40.4096.png +
diff --git a/deal.II/examples/step-45/doc/intro.dox b/deal.II/examples/step-45/doc/intro.dox index 96a5c1d76e..f878982f21 100644 --- a/deal.II/examples/step-45/doc/intro.dox +++ b/deal.II/examples/step-45/doc/intro.dox @@ -20,7 +20,7 @@ parts of the boundary. In the figure below we show this concept in two space-dimensions. There, all dashed faces with the same color should have the same boundary values: -@image html step-45.periodic_cells.png + To keep things simple, in this tutorial we will consider an academic, simplified problem that allows us to focus on only that part that we are diff --git a/deal.II/examples/step-45/doc/results.dox b/deal.II/examples/step-45/doc/results.dox index 1d04dae9a6..4affd89176 100644 --- a/deal.II/examples/step-45/doc/results.dox +++ b/deal.II/examples/step-45/doc/results.dox @@ -14,7 +14,7 @@ solution is constant zero on the upper and the lower part of the boundary as required by the homogeneous Dirichlet boundary conditions. On the left and right parts the values coincide with each other, just as we wanted: -@image html step-45.solution.png + Note also that the solution is clearly not left-right symmetric and so would not likely have been periodic had we prescribed, for example, homogeneous diff --git a/deal.II/examples/step-49/doc/intro.dox b/deal.II/examples/step-49/doc/intro.dox index 4c51a772c3..8b61de71f3 100644 --- a/deal.II/examples/step-49/doc/intro.dox +++ b/deal.II/examples/step-49/doc/intro.dox @@ -103,7 +103,7 @@ or by clicking "Mesh" and then "2D" inside Gmsh after loading the file. Now this is the mesh read from the .msh file and saved again by deal.II as an image (see the grid_1 function): -@image html step-49.grid-1.png +

Modifying a Mesh

@@ -128,10 +128,10 @@ a sin curve:
- @image html step-49.grid-5a.png regular input mesh + regular input mesh - @image html step-49.grid-5.png output mesh + output mesh
@@ -143,10 +143,10 @@ of this tutorial:
- @image html step-49.grid-6a.png regular input mesh + regular input mesh - @image html step-49.grid-6.png wall-adapted output mesh + wall-adapted output mesh
@@ -157,10 +157,10 @@ demonstrated in grid_7() and the result is as follows:
- @image html step-49.grid-7a.png regular input mesh + regular input mesh - @image html step-49.grid-7.png perturbed output mesh + perturbed output mesh
@@ -187,14 +187,14 @@ These are the input meshes and the output mesh:
- @image html step-49.grid-2a.png input mesh 1 + input mesh 1 - @image html step-49.grid-2b.png input mesh 2 + input mesh 2 - @image html step-49.grid-2.png merged mesh + merged mesh
@@ -210,11 +210,11 @@ centered by moving the top vertices upwards:
- @image html step-49.grid-3a.png input mesh + input mesh - @image html step-49.grid-3.png top vertices moved upwards + top vertices moved upwards
@@ -233,11 +233,11 @@ above. This is the output from grid_4():
- @image html step-49.grid-4base.png input mesh + input mesh - @image html step-49.grid-4.png extruded output mesh + extruded output mesh
diff --git a/deal.II/examples/step-7/doc/results.dox b/deal.II/examples/step-7/doc/results.dox index 9a8ad4d408..b881ada781 100644 --- a/deal.II/examples/step-7/doc/results.dox +++ b/deal.II/examples/step-7/doc/results.dox @@ -8,7 +8,7 @@ files solution-adaptive-q1.gmv, here: -@image html step-7.solution.png + diff --git a/deal.II/examples/step-8/doc/results.dox b/deal.II/examples/step-8/doc/results.dox index 1af1e9d0cd..1a021ca735 100644 --- a/deal.II/examples/step-8/doc/results.dox +++ b/deal.II/examples/step-8/doc/results.dox @@ -9,10 +9,10 @@ the $x$- and $y$-displacements as a scalar components:
-@image html step-8.x.png + -@image html step-8.y.png +
@@ -22,7 +22,7 @@ You can clearly see the sources of $x$-displacement around $x=0.5$ and $x=-0.5$, and of $y$-displacement at the origin. The next image shows the final grid after eight steps of refinement: -@image html step-8.grid.png + What one frequently would like to do is to show the displacement as a vector @@ -46,7 +46,7 @@ step-22. The vector field then looks like this (Visit randomly selects a few hundred vertices from which to draw the vectors; drawing them from each individual vertex would make the picture unreadable): -@image html step-8.vectors.png + We note that one may have intuitively expected the diff --git a/deal.II/examples/step-9/doc/results.dox b/deal.II/examples/step-9/doc/results.dox index 142bc4e08d..13ff02506b 100644 --- a/deal.II/examples/step-9/doc/results.dox +++ b/deal.II/examples/step-9/doc/results.dox @@ -29,7 +29,7 @@ resolve the features of the solution. The final grid showing this is displayed in the following picture: -@image html step-9.grid.png + @@ -37,7 +37,7 @@ The structure of the grid will be understandable by looking at the solution itself: -@image html step-9.solution.png + -- 2.39.5