From d890968ae339af28e68be9d309d35574eb6af6ae Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Tue, 30 Oct 2007 23:49:41 +0000 Subject: [PATCH] Re-scale pictures. git-svn-id: https://svn.dealii.org/trunk@15407 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/examples/step-29/doc/results.dox | 156 +++++++++++++++++++---- 1 file changed, 131 insertions(+), 25 deletions(-) diff --git a/deal.II/examples/step-29/doc/results.dox b/deal.II/examples/step-29/doc/results.dox index ef1f7b8e56..d044b9de14 100644 --- a/deal.II/examples/step-29/doc/results.dox +++ b/deal.II/examples/step-29/doc/results.dox @@ -1,58 +1,164 @@

Results

-The parameter file that comes with the tutorial code sets -d=0.3, which amounts to a focus of the transducer lens -at x=0.5, y=0.3. The coarse mesh is refined 5 times, +The current program reads its run-time parameters from an input file +called step-29.prm that looks like this: +@code +subsection Mesh & geometry parameters + # Distance of the focal point of the lens to the x-axis + set Focal distance = 0.3 + + # Number of global mesh refinement steps applied to initial coarse grid + set Number of refinements = 5 +end + + +subsection Physical constants + # Wave speed + set c = 1.5e5 + + # Frequency + set omega = 3.0e7 +end + + +subsection Output parameters + # Name of the output file (without extension) + set Output file = solution + + # A name for the output format to be used + set Output format = gmv +end +@endcode + +As can be seen, we set +$d=0.3$, which amounts to a focus of the transducer lens +at $x=0.5$, $y=0.3$. The coarse mesh is refined 5 times, resulting in 160x160 cells, and the output is written in gmv -format. +format. The parameter reader understands many more parameters +pertaining in particular to the generation of output, see the +explanation in @ref step_19 "step-19", but we need none of these +parameters here and therefore stick with their default values. Here's the console output of the program in debug mode: @code examples/step-29> make run ============================ Running step-29 -DEAL::Generating grid... done (1.34000s) +DEAL::Generating grid... done (1.11607s) DEAL:: Number of active cells: 25600 -DEAL::Setting up system... done (1.17000s) +DEAL::Setting up system... done (1.10807s) DEAL:: Number of degrees of freedom: 51842 -DEAL::Assembling system matrix... done (7.52000s) -DEAL::Solving linear system... done (4.43000s) -DEAL::Generating output... done (5.94000s) +DEAL::Assembling system matrix... done (6.50841s) +DEAL::Solving linear system... done (2.89218s) +DEAL::Generating output... done (4.52428s) @endcode (Of course, execution times will differ if you run the program locally.) The fact that most of the time is spent on assembling -the system matrix and generating output is due to some extra checks -done in debug mode, in optimized mode these parts of the program -run much faster: +the system matrix and generating output is due to the many assertion +that need to be checked in debug mode. In optimized mode these parts +of the program run much faster whereas solving the linear system is +hardly sped up at all: @code -examples/step-29> make run ============================ Running step-29 -DEAL::Generating grid... done (0.0500000s) +DEAL::Generating grid... done (0.0280020s) DEAL:: Number of active cells: 25600 -DEAL::Setting up system... done (0.170000s) +DEAL::Setting up system... done (0.112007s) DEAL:: Number of degrees of freedom: 51842 -DEAL::Assembling system matrix... done (0.370000s) -DEAL::Solving linear system... done (3.65000s) -DEAL::Generating output... done (1.23000s) +DEAL::Assembling system matrix... done (0.160010s) +DEAL::Solving linear system... done (2.21614s) +DEAL::Generating output... done (0.880055s) @endcode The graphical output of the program looks as follows: -@image html step-29.v.png "v = Re(u)" width=5cm + + + + + -@image html step-29.w.png "w = Im(u)" width=5cm + + + +
+ @image html step-29.v.png "v = Re(u)" width=4cm + + @image html step-29.w.png "w = Im(u)" width=4cm +
+ @image html step-29.intensity.png "|u|" width=4cm +
-@image html step-29.intensity.png "|u|" width=5cm - -The first two picturse show the real and imaginary parts of +The first two pictures show the real and imaginary parts of $u$, whereas the last shows the intensity $|u|$. One can clearly see that the intensity is focussed around the focal point of the lens (0.5, 0.3), and that the focus -is rather sharp in x-direction but more blurred in y-direction, which is a -consequence of the geometry and the wave nature of the problem. +is rather sharp in $x$-direction but more blurred in $y$-direction, which is a +consequence of the geometry of the focusing lens, its finite aperture, +and the wave nature of the problem. + +Because colorful graphics are always fun, and to stress the focusing +effects some more, here is another set of images highlighting how well +the intensity is actually focused in $x$-direction: + + + + + + +
+ @image html step-29.surface.png "|u|" width=4cm + + @image html step-29.contours.png "|u|" width=4cm +
+As a final note, the structure of the program makes it easy to +determine which parts of the program scale nicely as the mesh is +refined and which parts don't. Here are the run times for 5, 6, and 7 +global refinements: + +@code +DEAL::Generating grid... done (0.0320020s) +DEAL:: Number of active cells: 25600 +DEAL::Setting up system... done (0.104006s) +DEAL:: Number of degrees of freedom: 51842 +DEAL::Assembling system matrix... done (0.164011s) +DEAL::Solving linear system... done (2.23214s) +DEAL::Generating output... done (0.900056s) + +DEAL::Generating grid... done (0.132009s) +DEAL:: Number of active cells: 102400 +DEAL::Setting up system... done (0.408025s) +DEAL:: Number of degrees of freedom: 206082 +DEAL::Assembling system matrix... done (0.656041s) +DEAL::Solving linear system... done (14.8849s) +DEAL::Generating output... done (3.57222s) + +DEAL::Generating grid... done (0.504031s) +DEAL:: Number of active cells: 409600 +DEAL::Setting up system... done (1.72011s) +DEAL:: Number of degrees of freedom: 821762 +DEAL::Assembling system matrix... done (2.63216s) +DEAL::Solving linear system... done (117.811s) +DEAL::Generating output... done (15.1489s) +@endcode + +Each time we refine the mesh once, so the number of cells and degrees +of freedom roughlt quadruples from each step to the next. As can be seen, +generating the grid, setting up degrees of freedom, assembling the +linear system, and generating output scale pretty closely to linear, +whereas solving the linear system is an operation that requires 8 +times more time each time the number of degrees of freedom is +increased by a factor of 4, i.e. it is ${\cal O}(N^{3/2})$. This can +be explained by the fact that (using optimal ordering) the +bandwidth of a finite element matrix is $B={\cal O}(N^{(dim-1)/dim})$, +and the effort to solve a banded linear system using LU decomposition +is ${\cal O}(BN)$. This also explains why the program does run in 3d +as well (after changing the dimension on the +UltrasoundProblem object), but scales very badly and +takes extraordinate patience before it finishes solving the linear +system. \ No newline at end of file -- 2.39.5