From: bangerth Date: Sat, 22 Jul 2006 01:25:46 +0000 (+0000) Subject: Remove data now found or generated from examples/step-XX/doc X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b07eedfd3ad8ac423632110b40705cfc4cbae7ba;p=dealii-svn.git Remove data now found or generated from examples/step-XX/doc git-svn-id: https://svn.dealii.org/trunk@13407 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro.html b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro.html deleted file mode 100644 index 22a9f287ba..0000000000 --- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro.html +++ /dev/null @@ -1,1538 +0,0 @@ - -

Introduction

- -

-[A higher quality version of the introduction is available as a PDF -file by clicking here] -

- - -

-This tutorial program is another one in the series on the elasticity problem -that we have already started with step-8 and step-17. It extends it into two -different directions: first, it solves the quasistatic but time dependent -elasticity problem for large deformations with a Lagrangian mesh movement -approach. Secondly, it shows some more techniques for solving such problems -using parallel processing with PETSc's linear algebra. In addition to this, we -show how to work around the main bottleneck of step-17, namely that we -generated graphical output from only one process, and that this scaled very -badly with larger numbers of processes and on large problems. Finally, a good -number of assorted improvements and techniques are demonstrated that have not -been shown yet in previous programs. - -

-As before in step-17, the program runs just as fine on a single sequential -machine as long as you have PETSc installed. Information on how to tell -deal.II about a PETSc installation on your system can be found in the deal.II -README file, which is linked to from the main documentation page -doc/index.html in your installation of deal.II, or on the deal.II -webpage http://www.dealii.org/. - -

- -

-Quasistatic elastic deformation -

- -

- -

-Motivation of the model -

- -

-In general, time-dependent small elastic deformations are described by the -elastic wave equation -

-
- - - -
$\displaystyle \rho \frac{\partial^2 \vec u}{\partial t^2} + c \frac{\partial \vec u}{\partial t} - \div ( C \varepsilon(\vec u)) = \vec f$   in $ \Omega$ -$\displaystyle ,$ -(1)
-

-where -$ \vec u=\vec u (\vec x,t)$ - is the deformation of the body, $ \rho$ - -and $ c$ - the density and attenuation coefficient, and $ \vec f$ - external forces. -In addition, initial conditions -

-
- - - -
$\displaystyle \vec u(\cdot, 0) = \vec u_0(\cdot)$   on $ \Omega$ -$\displaystyle ,$ -(2)
-

-and Dirichlet (displacement) or Neumann (traction) boundary conditions need -to be specified for a unique solution: -

-
- - - - - - - - - - - - -
$\displaystyle \vec u(\vec x,t)$$\displaystyle = \vec d(\vec x,t) \qquad$ on -$ \Gamma_D\subset\partial\Omega$ -$\displaystyle ,$ -(3)
$\displaystyle \vec n \ C \varepsilon(\vec u(\vec x,t))$$\displaystyle = \vec b(\vec x,t) \qquad$ on -$ \Gamma_N=\partial\Omega\backslash\Gamma_D$ -$\displaystyle .$ -(4)
-

-In above formulation, -$ \varepsilon(\vec u)= \tfrac 12 (\nabla \vec u + \nabla
-\vec u^T)$ - is the symmetric gradient of the displacement, also called the -strain. $ C$ - is a tensor of rank 4, called the stress-strain - tensor that contains knowledge of the elastic strength of the material; its -symmetry properties make sure that it maps symmetric tensors of rank 2 -(``matrices'' of dimension $ d$ -, where $ d$ - is the spatial dimensionality) onto -symmetric tensors of the same rank. We will comment on the roles of the strain -and stress tensors more below. For the moment it suffices to say that we -interpret the term -$ \div ( C \varepsilon(\vec u))$ - as the vector with -components -$ \tfrac \partial{\partial x_j} C_{ijkl} \varepsilon(\vec u)_{kl}$ -, -where summation over indices $ j,k,l$ - is implied. - -

-The quasistatic limit of this equation is motivated as follows: each small -perturbation of the body, for example by changes in boundary condition or the -forcing function, will result in a corresponding change in the configuration -of the body. In general, this will be in the form of waves radiating away from -the location of the disturbance. Due to the presence of the damping term, -these waves will be attenuated on a time scale of, say, $ \tau$ -. Now, assume -that all changes in external forcing happen on times scales that are -much larger than $ \tau$ -. In that case, the dynamic nature of the change is -unimportant: we can consider the body to always be in static equilibrium, -i.e. we can assume that at all times the body satisfies -

-
- - - - - - - - - - - - - - - - - - -
$\displaystyle - \div ( C \varepsilon(\vec u))$$\displaystyle = \vec f$ in $ \Omega$ -$\displaystyle ,$ -(5)
$\displaystyle \vec u(\vec x,t)$$\displaystyle = \vec d(\vec x,t) \qquad$ on $ \Gamma_D$ -$\displaystyle ,$ -(6)
$\displaystyle \vec n \ C \varepsilon(\vec u(\vec x,t))$$\displaystyle = \vec b(\vec x,t) \qquad$ on $ \Gamma_N$ -$\displaystyle .$ -(7)
-

-Note that the differential equation does not contain any time derivatives any -more - all time dependence is introduced through boundary conditions and a -possibly time-varying force function -$ \vec f(\vec x,t)$ -. The changes in -configuration can therefore be considered as being stationary -instantaneously. An alternative view of this is that $ t$ - is not really a time -variable, but only a time-like parameter that governs the evolution of the -problem. - -

-While these equations are sufficient to describe small deformations, computing -large deformations is a little more complicated. To do so, let us first -introduce a tensorial stress variable $ \sigma$ -, and write the differential -equations in terms of the stress: -

-
- - - - - - - - - - - - - - - - - - -
$\displaystyle - \div\sigma$$\displaystyle = \vec f$ in $ \Omega(t)$ -$\displaystyle ,$ -(8)
$\displaystyle \vec u(\vec x,t)$$\displaystyle = \vec d(\vec x,t) \qquad$ on -$ \Gamma_D\subset\partial\Omega(t)$ -$\displaystyle ,$ -(9)
$\displaystyle \vec n \ C \varepsilon(\vec u(\vec x,t))$$\displaystyle = \vec b(\vec x,t) \qquad$ on -$ \Gamma_N=\partial\Omega(t)\backslash\Gamma_D$ -$\displaystyle .$ -(10)
-

-Note that these equations are posed on a domain $ \Omega(t)$ - that -changes with time, with the boundary moving according to the -displacements -$ \vec u(\vec x,t)$ - of the points on the boundary. To -complete this system, we have to specify the incremental relationship between -the stress and the strain, as follows: -

-
- - - -
$\displaystyle \dot\sigma = C \varepsilon (\dot{\vec u}),$ -(11)
-

-where a dot indicates a time derivative. Both the stress $ \sigma$ - and the -strain -$ \varepsilon(\vec u)$ - are symmetric tensors of rank 2. - -

- -

-Time discretization -

- -

-Numerically, this system is solved as follows: first, we discretize -the time component using a backward Euler scheme. This leads to a -discrete equilibrium of force at time step $ n$ -: -

-
- - - -
$\displaystyle -\div\sigma^n = f^n,$ -(12)
-

-where -

-
- - - -
$\displaystyle \sigma^n = \sigma^{n-1} + C \varepsilon (\Delta \vec u^n),$ -(13)
-

-and -$ \Delta \vec u^n$ - the incremental displacement for time step -$ n$ -. In addition, we have to specify initial data -$ \vec u(\cdot,0)=\vec u_0$ -. -This way, if we want to solve for the displacement increment, we -have to solve the following system: -

-
- - - - - - - - - - - - - - - - - - -
$\displaystyle - \div C \varepsilon(\Delta\vec u^n)$$\displaystyle = \vec f + \div\sigma^{n-1}$ in -$ \Omega(t_{n-1})$ -$\displaystyle ,$ -(14)
$\displaystyle \Delta \vec u^n(\vec x,t)$$\displaystyle = \vec d(\vec x,t_n) - \vec d(\vec x,t_{n-1}) \qquad$ on -$ \Gamma_D\subset\partial\Omega(t_{n-1})$ -$\displaystyle ,$ -(15)
$\displaystyle \vec n \ C \varepsilon(\Delta \vec u^n(\vec x,t))$$\displaystyle = \vec b(\vec x,t_n)-\vec b(\vec x,t_{n-1}) \qquad$ on -$ \Gamma_N=\partial\Omega(t_{n-1})\backslash\Gamma_D$ -$\displaystyle .$ -(16)
-

-The weak form of this set of equations, which as usual is the basis for the -finite element formulation, reads as follows: find -$ \Delta \vec u^n \in
-\{v\in H^1(\Omega(t_{n-1}))^d: v\vert _{\Gamma_D}=\vec d(\cdot,t_n) - \vec d(\cdot,t_{n-1})\}$ - -such that -

-
- - - -
\begin{gather*}\begin{split}(C \varepsilon(\Delta\vec u^n), \varepsilon(\varphi)...
-...in H^1(\Omega(t_{n-1}))^d: \vec v\vert _{\Gamma_D}=0\}. \end{split}\end{gather*} -(17)
-

-We note that, for simplicity, in the program we will always assume that there -are no boundary forces, i.e.  -$ \vec b = 0$ -, and that the deformation of the -body is driven by body forces $ \vec f$ - and prescribed boundary displacements -$ \vec d$ - alone. It is also worth noting that when integrating by parts, we -would get terms of the form -$ (C \varepsilon(\Delta\vec u^n), \nabla \varphi
-)_{\Omega(t_{n-1})}$ -, but that we replace it with the term involving the -symmetric gradient -$ \varepsilon(\varphi)$ - instead of -$ \nabla\varphi$ -. Due to -the symmetry of $ C$ -, the two terms are equivalent, but the symmetric version -avoids a potential for round-off to render the resulting matrix slightly -non-symmetric. - -

-The system at time step $ n$ -, to be solved on the old domain - -$ \Omega(t_{n-1})$ -, has exactly the form of a stationary elastic -problem, and is therefore similar to what we have already implemented -in previous example programs. We will therefore not comment on the -space discretization beyond saying that we again use lowest order -continuous finite elements. - -

-There are differences, however: - -

    -
  1. We have to move (update) the mesh after each time step, in order to be - able to solve the next time step on a new domain; - -

    -

  2. -
  3. We need to know -$ \sigma^{n-1}$ - to compute the next incremental - displacement, i.e. we need to compute it at the end of the time step - to make sure it is available for the next time step. Essentially, - the stress variable is our window to the history of deformation of - the body. -
  4. -
-These two operations are done in the functions move_mesh and -update_quadrature_point_history in the program. While moving -the mesh is only a technicality, updating the stress is a little more -complicated and will be discussed in the next section. - -

- -

-Updating the stress variable -

- -

-As indicated above, we need to have the stress variable $ \sigma^n$ - available -when computing time step $ n+1$ -, and we can compute it using -

-
- - - -
$\displaystyle \sigma^n = \sigma^{n-1} + C \varepsilon (\Delta \vec u^n).$ -(18)
-

-There are, despite the apparent simplicity of this equation, two questions -that we need to discuss. The first concerns the way we store $ \sigma^n$ -: even -if we compute the incremental updates -$ \Delta \vec u^n$ - using lowest-order -finite elements, then its symmetric gradient -$ \varepsilon(\Delta\vec u^n)$ - is -in general still a function that is not easy to describe. In particular, it is -not a piecewise constant function, and on general meshes (with cells that are -not rectangles parallel to the coordinate axes) or with non-constant -stress-strain tensors $ C$ - it is not even a bi- or trilinear function. Thus, it -is a priori not clear how to store $ \sigma^n$ - in a computer program. - -

-To decide this, we have to see where it is used. The only place where we -require the stress is in the term - -$ (\sigma^{n-1},\varepsilon(\varphi))_{\Omega(t_{n-1})}$ -. In practice, we of -course replace this term by numerical quadrature: -

-
- - - -
$\displaystyle (\sigma^{n-1},\varepsilon(\varphi))_{\Omega(t_{n-1})} = \sum_{K\s...
-...athbb{T}}} \sum_q w_q \ \sigma^{n-1}(\vec x_q) : \varepsilon(\varphi(\vec x_q),$ -(19)
-

-where $ w_q$ - are the quadrature weights and $ \vec x_q$ - the quadrature points on -cell $ K$ -. This should make clear that what we really need is not the stress - -$ \sigma^{n-1}$ - in itself, but only the values of the stress in the quadrature -points on all cells. This, however, is a simpler task: we only have to provide -a data structure that is able to hold one symmetric tensor of rank 2 for each -quadrature point on all cells (or, since we compute in parallel, all -quadrature points of all cells that the present MPI process ``owns''). At the -end of each time step we then only have to evaluate -$ \varepsilon(\Delta \vec u^n(\vec x_q))$ -, multiply it by the stress-strain tensor $ C$ -, and use the -result to update the stress -$ \sigma^n(\vec x_q)$ - at quadrature point $ q$ -. - -

-The second complication is not visible in our notation as chosen above. It is -due to the fact that we compute -$ \Delta u^n$ - on the domain -$ \Omega(t_{n-1})$ -, -and then use this displacement increment to both update the stress as well as -move the mesh nodes around to get to -$ \Omega(t_n)$ - on which the next increment -is computed. What we have to make sure, in this context, is that moving the -mesh does not only involve moving around the nodes, but also making -corresponding changes to the stress variable: the updated stress is a variable -that is defined with respect to the coordinate system of the material in the -old domain, and has to be transferred to the new domain. The reason for this -can be understood as follows: locally, the incremental deformation -$ \Delta\vec u$ - can be decomposed into three parts, a linear translation (the constant part -of the displacement increment field in the neighborhood of a point), a -dilational -component (that part of the gradient of the displacement field that has a -nonzero divergence), and a rotation. A linear translation of the material does -not affect the stresses that are frozen into it - the stress values are -simply translated along. The dilational or compressional change produces a -corresponding stress update. However, the rotational component does not -necessarily induce a nonzero stress update (think, in 2d, for example of the -situation where -$ \Delta\vec u=(y, -x)^T$ -, with which -$ \varepsilon(\Delta \vec u)=0$ -). Nevertheless, if the the material was pre-stressed in a certain -direction, then this direction will be rotated along with the material. To -this end, we have to define a rotation matrix -$ R(\Delta \vec u^n)$ - that -describes, in each point the rotation due to the displacement increments. It -is not hard to see that the actual dependence of $ R$ - on -$ \Delta \vec u^n$ - can -only be through the curl of the displacement, rather than the displacement -itself or its full gradient (as mentioned above, the constant components of -the increment describe translations, its divergence the dilational modes, and -the curl the rotational modes). Since the exact form of $ R$ - is cumbersome, we -only state it in the program code, and note that the correct updating formula -for the stress variable is then -

-
- - - -
$\displaystyle \sigma^n = R(\Delta \vec u^n)^T [\sigma^{n-1} + C \varepsilon (\Delta \vec u^n)] R(\Delta \vec u^n).$ -(20)
-

- -

-Both stress update and rotation are implemented in the function -update_quadrature_point_history of the example program. - -

- -

-Parallel graphical output -

- -

-In the step-17 example program, the main bottleneck for parallel computations -was that only the first processor generated output for the entire domain. -Since generating graphical output is expensive, this did not scale well when -large numbers of processors were involved. However, no viable ways around this -problem were implemented in the library at the time, and the problem was -deferred to a later version. - -

-This functionality has been implemented in the meantime, and this is the time -to explain its use. Basically, what we need to do is let every process -generate graphical output for that subset of cells that it owns, write them -into separate files and have a way to merge them later on. At this point, it -should be noted that none of the graphical output formats known to the author -of this program allows for a simple way to later re-read it and merge it with -other files corresponding to the same simulation. What deal.II therefore -offers is the following: When you call the DataOut::build_patches -function, an intermediate format is generated that contains all the -information for the data on each cell. Usually, this intermediate format is -then further processed and converted into one of the graphical formats that we -can presently write, such as gmv, eps, ucd, gnuplot, or a number of other -ones. Once written in these formats, there is no way to reconstruct the -necessary information to merge multiple blocks of output. However, the base -classes of DataOut also allow to simply dump the intermediate format -to a file, from which it can later be recovered without loss of information. - -

-This has two advantages: first, simulations may just dump the intermediate -format data during run-time, and the user may later decide which particular -graphics format she wants to have. This way, she does not have to re-run the -entire simulation if graphical output is requested in a different format. One -typical case is that one would like to take a quick look at the data with -gnuplot, and then create high-quality pictures using GMV or OpenDX. Since both -can be generated out of the intermediate format without problem, there is no -need to re-run the simulation. - -

-In the present context, of more interest is the fact that in contrast to any -of the other formats, it is simple to merge multiple files of intermediate -format, if they belong to the same simulation. This is what we will do here: -we will generate one output file in intermediate format for each processor -that belongs to this computation (in the sequential case, this will simply be -a single file). They may then later be read in and merged so that we can -output a single file in whatever graphical format is requested. - -

-The way to do this is to first instruct the DataOutBase class to -write intermediate format rather than in gmv or any other graphical -format. This is simple: just use -data_out.write_deal_II_intermediate. We will write to a file -called solution-TTTT.TTTT.d2 if there is only one processor, or -files solution-TTTT.TTTT.NNN.d2 if this is really a parallel -job. Here, TTTT.TTTT denotes the time for which this output has -been generated, and NNN the number of the MPI process that did this. - -

-The next step is to convert this file or these files into whatever -format you like. The program that does this is the step-19 tutorial program: -for example, for the first time step, call it through -

-../step-19/step-19 solution-0001.0000.*.d2 solution-0001.0000.gmv - -
-to merge all the intermediate format files into a single file in GMV -format. More details on the parameters of this program and what it can do for -you can be found in the documentation of the step-19 tutorial program. - -

- -

-Overall structure of the program -

- -

-The overall structure of the program can be inferred from the run() -function that first calls do_initial_timestep() for the first time -step, and then do_timestep() on all subsequent time steps. The -difference between these functions is only that in the first time step we -start on a coarse mesh, solve on it, refine the mesh adaptively, and then -start again with a clean state on that new mesh. This procedure gives us a -better starting mesh, although we should of course keep adapting the mesh as -iterations proceed - this isn't done in this program, but commented on below. - -

-The common part of the two functions treating time steps is the following -sequence of operations on the present mesh: - -

- -

-With this general structure of the code, we only have to define what case we -want to solve. For the present program, we have chosen to simulate the -quasistatic deformation of a vertical cylinder for which the bottom boundary -is fixed and the top boundary is pushed down at a prescribed vertical -velocity. However, the horizontal velocity of the top boundary is left -unspecified - one can imagine this situation as a well-greased plate pushing -from the top onto the cylinder, the points on the top boundary of the cylinder -being allowed to slide horizontally along the surface of the plate, but forced -to move downward by the plate. The inner and outer boundaries of the cylinder -are free and not subject to any prescribed deflection or traction. In -addition, gravity acts on the body. - -

-The program text will reveal more about how to implement this situation, and -the results section will show what displacement pattern comes out of this -simulation. - -

- -

-Possible directions for extensions -

- -

-The program as is does not really solve an equation that has many applications -in practice: quasi-static material deformation based on a purely elastic law -is almost boring. However, the program may serve as the starting point for -more interesting experiments, and that indeed was the initial motivation for -writing it. Here are some suggestions of what the program is missing and in -what direction it may be extended: - -

- -

-Plasticity models. -

The most obvious extension is to use a more -realistic material model for large-scale quasistatic deformation. The natural -choice for this would be plasticity, in which a nonlinear relationship between -stress and strain replaces equation ([*]). Plasticity -models are usually rather complicated to program since the stress-strain -dependence is generally non-smooth. The material can be thought of being able -to withstand only a maximal stress (the yield stress) after which it starts to -``flow''. A mathematical description to this can be given in the form of a -variational inequality, which alternatively can be treated as minimizing the -elastic energy -

-
- - - -
$\displaystyle E(\vec u) = (\varepsilon(\vec u), C\varepsilon(\vec u))_{\Omega} - (\vec f, \vec u)_{\Omega} - (\vec b, \vec u)_{\Gamma_N},$ -(24)
-

-subject to the constraint -

-
- - - -
$\displaystyle f(\sigma(\vec u)) \le 0$ -(25)
-

-on the stress. This extension makes the problem to be solved in each time step -nonlinear, so we need another loop within each time step. - -

-Without going into further details of this model, we refer to the excellent -book by Simo and Hughes on ``Computational Inelasticity'' for a -comprehensive overview of computational strategies for solving plastic -models. Alternatively, a brief but concise description of an algorithm for -plasticity is given in an article by S. Commend, A. Truty, and Th. Zimmermann, -titled ``Stabilized finite elements applied to -elastoplasticity: I. Mixed displacement-pressure formulation'' -(Computer Methods in Applied Mechanics and Engineering, vol. 193, -pp. 3559-3586, 2004). - -

- -

-Stabilization issues. -

The formulation we have chosen, i.e. using -piecewise (bi-, tri-)linear elements for all components of the displacement -vector, and treating the stress as a variable dependent on the displacement is -appropriate for most materials. However, this so-called displacement-based -formulation becomes unstable and exhibits spurious modes for incompressible or -nearly-incompressible materials. While fluids are usually not elastic (in most -cases, the stress depends on velocity gradients, not displacement gradients, -although there are exceptions such as electro-rheologic fluids), there are a -few solids that are nearly incompressible, for example rubber. Another case is -that many plasticity models ultimately let the material become incompressible, -although this is outside the scope of the present program. - -

-Incompressibility is characterized by Poisson's ratio -

-
- - - -
$\displaystyle \nu = \frac{\lambda}{2(\lambda+\mu)},$ -   
-

-where -$ \lambda,\mu$ - are the Lamé constants of the material. -Physical constraints indicate that -$ -1\le \nu\le \tfrac 12$ - (the condition -also follows from mathematical stability considerations). If $ \nu$ - -approaches $ \tfrac 12$ -, then the material becomes incompressible. In that -case, pure displacement-based formulations are no longer appropriate for the -solution of such problems, and stabilization techniques have to be employed -for a stable and accurate solution. The book and paper cited above give -indications as to how to do this, but there is also a large volume of -literature on this subject; a good start to get an overview of the topic can -be found in the references of the paper by -H.-Y. Duan and Q. Lin on ``Mixed finite elements of least-squares type for -elasticity'' (Computer Methods in Applied Mechanics and Engineering, vol. 194, -pp. 1093-1112, 2005). - -

- -

-Refinement during timesteps. -

In the present form, the program -only refines the initial mesh a number of times, but then never again. For any -kind of realistic simulation, one would want to extend this so that the mesh -is refined and coarsened every few time steps instead. This is not hard to do, -in fact, but has been left for future tutorial programs or as an exercise, if -you wish. The main complication one has to overcome is that one has to -transfer the data that is stored in the quadrature points of the cells of the -old mesh to the new mesh, preferably by some sort of projection scheme. This -is only slightly messy in the sequential case; in fact, the functions -FETools :: get_projection_from_quadrature_points_matrix will do -the projection, and the FiniteElement :: get_restriction_matrix and -FiniteElement :: get_prolongation_matrix functions will do the -transfer between mother and child cells. However, it becomes complicated -once we run the program in parallel, since then each process only stores this -data for the cells it owned on the old mesh, and it may need to know the -values of the quadrature point data on other cells if the corresponding cells -on the new mesh are assigned to this process after subdividing the new mesh. A -global communication of these data elements is therefore necessary, making the -entire process a little more unpleasant. - -

- -

-Ensuring mesh regularity. -

At present, the program makes no attempt -to make sure that a cell, after moving its vertices at the end of the time -step, still has a valid geometry (i.e. that its Jacobian determinant is -positive and bounded away from zero everywhere). It is, in fact, not very hard -to set boundary values and forcing terms in such a way that one gets distorted -and inverted cells rather quickly. Certainly, in some cases of large -deformation, this is unavoidable with a mesh of finite mesh size, but in some -other cases this should be preventable by appropriate mesh refinement and/or a -reduction of the time step size. The program does not do that, but a more -sophisticated version definitely should employ some sort of heuristic defining -what amount of deformation of cells is acceptable, and what isn't. - -

- -

-Compiling the program -

- -

-Finally, just to remind everyone: the program runs in 3d (see the definition -of the elastic_problem variable in main(), unlike almost -all of the other example programs. While the compiler doesn't care what -dimension it compiles for, the linker has to know which library to link with. -And as explained in other places, this requires slight changes to the Makefile -compared to the other tutorial programs. In particular, everywhere where the -2d versions of libraries are mentioned, one needs to change this to 3d, -although this is already done in the distributed version of the Makefile. -Conversely, if you want to run the program in 2d (after making the necessary -changes to accommodate for a 2d geometry), you have to change the Makefile -back to allow for 2d. diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro.pdf b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro.pdf deleted file mode 100644 index d03b5a01be..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro.pdf and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro.tex b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro.tex deleted file mode 100644 index 0bc030bd3a..0000000000 --- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro.tex +++ /dev/null @@ -1,666 +0,0 @@ -\documentclass{article} -\usepackage{amsmath} -\usepackage{amsfonts} -\renewcommand{\vec}[1]{\mathbf{#1}} -\renewcommand{\div}{\mathrm{div}\ } -\begin{document} - -This tutorial program is another one in the series on the elasticity problem -that we have already started with step-8 and step-17. It extends it into two -different directions: first, it solves the quasistatic but time dependent -elasticity problem for large deformations with a Lagrangian mesh movement -approach. Secondly, it shows some more techniques for solving such problems -using parallel processing with PETSc's linear algebra. In addition to this, we -show how to work around the main bottleneck of step-17, namely that we -generated graphical output from only one process, and that this scaled very -badly with larger numbers of processes and on large problems. Finally, a good -number of assorted improvements and techniques are demonstrated that have not -been shown yet in previous programs. - -As before in step-17, the program runs just as fine on a single sequential -machine as long as you have PETSc installed. Information on how to tell -deal.II about a PETSc installation on your system can be found in the deal.II -README file, which is linked to from the main documentation page -\texttt{doc/index.html} in your installation of deal.II, or on the deal.II -webpage \texttt{http://www.dealii.org/}. - - -\subsection*{Quasistatic elastic deformation} - -\subsubsection*{Motivation of the model} - -In general, time-dependent small elastic deformations are described by the -elastic wave equation -\begin{gather} - \rho \frac{\partial^2 \vec u}{\partial t^2} - + c \frac{\partial \vec u}{\partial t} - - \div ( C \varepsilon(\vec u)) = \vec f - \qquad - \text{in $\Omega$}, -\end{gather} -where $\vec u=\vec u (\vec x,t)$ is the deformation of the body, $\rho$ -and $c$ the density and attenuation coefficient, and $\vec f$ external forces. -In addition, initial conditions -\begin{align} - \vec u(\cdot, 0) = \vec u_0(\cdot) - \qquad - \text{on $\Omega$}, -\end{align} -and Dirichlet (displacement) or Neumann (traction) boundary conditions need -to be specified for a unique solution: -\begin{align} - \vec u(\vec x,t) &= \vec d(\vec x,t) - \qquad - &&\text{on $\Gamma_D\subset\partial\Omega$}, - \\ - \vec n \ C \varepsilon(\vec u(\vec x,t)) &= \vec b(\vec x,t) - \qquad - &&\text{on $\Gamma_N=\partial\Omega\backslash\Gamma_D$}. -\end{align} -In above formulation, $\varepsilon(\vec u)= \tfrac 12 (\nabla \vec u + \nabla -\vec u^T)$ is the symmetric gradient of the displacement, also called the -\textit{strain}. $C$ is a tensor of rank 4, called the \textit{stress-strain - tensor} that contains knowledge of the elastic strength of the material; its -symmetry properties make sure that it maps symmetric tensors of rank 2 -(``matrices'' of dimension $d$, where $d$ is the spatial dimensionality) onto -symmetric tensors of the same rank. We will comment on the roles of the strain -and stress tensors more below. For the moment it suffices to say that we -interpret the term $\div ( C \varepsilon(\vec u))$ as the vector with -components $\tfrac \partial{\partial x_j} C_{ijkl} \varepsilon(\vec u)_{kl}$, -where summation over indices $j,k,l$ is implied. - -The quasistatic limit of this equation is motivated as follows: each small -perturbation of the body, for example by changes in boundary condition or the -forcing function, will result in a corresponding change in the configuration -of the body. In general, this will be in the form of waves radiating away from -the location of the disturbance. Due to the presence of the damping term, -these waves will be attenuated on a time scale of, say, $\tau$. Now, assume -that all changes in external forcing happen on times scales that are -much larger than $\tau$. In that case, the dynamic nature of the change is -unimportant: we can consider the body to always be in static equilibrium, -i.e.~we can assume that at all times the body satisfies -\begin{align} - - \div ( C \varepsilon(\vec u)) &= \vec f - &&\text{in $\Omega$}, - \\ - \vec u(\vec x,t) &= \vec d(\vec x,t) - \qquad - &&\text{on $\Gamma_D$}, - \\ - \vec n \ C \varepsilon(\vec u(\vec x,t)) &= \vec b(\vec x,t) - \qquad - &&\text{on $\Gamma_N$}. -\end{align} -Note that the differential equation does not contain any time derivatives any -more -- all time dependence is introduced through boundary conditions and a -possibly time-varying force function $\vec f(\vec x,t)$. The changes in -configuration can therefore be considered as being stationary -instantaneously. An alternative view of this is that $t$ is not really a time -variable, but only a time-like parameter that governs the evolution of the -problem. - -While these equations are sufficient to describe small deformations, computing -large deformations is a little more complicated. To do so, let us first -introduce a tensorial stress variable $\sigma$, and write the differential -equations in terms of the stress: -\begin{align} - - \div \sigma &= \vec f - &&\text{in $\Omega(t)$}, - \\ - \vec u(\vec x,t) &= \vec d(\vec x,t) - \qquad - &&\text{on $\Gamma_D\subset\partial\Omega(t)$}, - \\ - \vec n \ C \varepsilon(\vec u(\vec x,t)) &= \vec b(\vec x,t) - \qquad - &&\text{on $\Gamma_N=\partial\Omega(t)\backslash\Gamma_D$}. -\end{align} -Note that these equations are posed on a domain $\Omega(t)$ that -changes with time, with the boundary moving according to the -displacements $\vec u(\vec x,t)$ of the points on the boundary. To -complete this system, we have to specify the incremental relationship between -the stress and the strain, as follows: -\begin{align} - \label{eq:stress-strain} - \dot\sigma = C \varepsilon (\dot{\vec u}), -\end{align} -where a dot indicates a time derivative. Both the stress $\sigma$ and the -strain $\varepsilon(\vec u)$ are symmetric tensors of rank 2. - - -\subsubsection*{Time discretization} - -Numerically, this system is solved as follows: first, we discretize -the time component using a backward Euler scheme. This leads to a -discrete equilibrium of force at time step $n$: -\begin{gather} - -\div \sigma^n = f^n, -\end{gather} -where -\begin{gather} - \sigma^n = \sigma^{n-1} + C \varepsilon (\Delta \vec u^n), -\end{gather} -and $\Delta \vec u^n$ the incremental displacement for time step -$n$. In addition, we have to specify initial data $\vec u(\cdot,0)=\vec u_0$. -This way, if we want to solve for the displacement increment, we -have to solve the following system: -\begin{align} - - \div C \varepsilon(\Delta\vec u^n) &= \vec f + \div \sigma^{n-1} - &&\text{in $\Omega(t_{n-1})$}, - \\ - \Delta \vec u^n(\vec x,t) &= \vec d(\vec x,t_n) - \vec d(\vec x,t_{n-1}) - \qquad - &&\text{on $\Gamma_D\subset\partial\Omega(t_{n-1})$}, - \\ - \vec n \ C \varepsilon(\Delta \vec u^n(\vec x,t)) &= \vec b(\vec x,t_n)-\vec b(\vec x,t_{n-1}) - \qquad - &&\text{on $\Gamma_N=\partial\Omega(t_{n-1})\backslash\Gamma_D$}. -\end{align} -The weak form of this set of equations, which as usual is the basis for the -finite element formulation, reads as follows: find $\Delta \vec u^n \in -\{v\in H^1(\Omega(t_{n-1}))^d: v|_{\Gamma_D}=\vec d(\cdot,t_n) - \vec d(\cdot,t_{n-1})\}$ -such that -\begin{gather} - \begin{split} - \label{eq:linear-system} - (C \varepsilon(\Delta\vec u^n), \varepsilon(\varphi) )_{\Omega(t_{n-1})} - = - (\vec f, \varphi)_{\Omega(t_{n-1})} - -(\sigma^{n-1},\varepsilon(\varphi))_{\Omega(t_{n-1})} - \\ - +(\vec b(\vec x,t_n)-\vec b(\vec x,t_{n-1}), \varphi)_{\Gamma_N} - \\ - \forall \varphi \in \{\vec v\in H^1(\Omega(t_{n-1}))^d: \vec - v|_{\Gamma_D}=0\}. - \end{split} -\end{gather} -We note that, for simplicity, in the program we will always assume that there -are no boundary forces, i.e.~$\vec b = 0$, and that the deformation of the -body is driven by body forces $\vec f$ and prescribed boundary displacements -$\vec d$ alone. It is also worth noting that when integrating by parts, we -would get terms of the form $(C \varepsilon(\Delta\vec u^n), \nabla \varphi -)_{\Omega(t_{n-1})}$, but that we replace it with the term involving the -symmetric gradient $\varepsilon(\varphi)$ instead of $\nabla\varphi$. Due to -the symmetry of $C$, the two terms are equivalent, but the symmetric version -avoids a potential for round-off to render the resulting matrix slightly -non-symmetric. - -The system at time step $n$, to be solved on the old domain -$\Omega(t_{n-1})$, has exactly the form of a stationary elastic -problem, and is therefore similar to what we have already implemented -in previous example programs. We will therefore not comment on the -space discretization beyond saying that we again use lowest order -continuous finite elements. - -There are differences, however: -\begin{enumerate} - \item We have to move (update) the mesh after each time step, in order to be - able to solve the next time step on a new domain; - - \item We need to know $\sigma^{n-1}$ to compute the next incremental - displacement, i.e.~we need to compute it at the end of the time step - to make sure it is available for the next time step. Essentially, - the stress variable is our window to the history of deformation of - the body. -\end{enumerate} -These two operations are done in the functions \texttt{move\_mesh} and -\texttt{update\_\-quadrature\_\-point\_history} in the program. While moving -the mesh is only a technicality, updating the stress is a little more -complicated and will be discussed in the next section. - - -\subsubsection*{Updating the stress variable} - -As indicated above, we need to have the stress variable $\sigma^n$ available -when computing time step $n+1$, and we can compute it using -\begin{gather} - \label{eq:stress-update} - \sigma^n = \sigma^{n-1} + C \varepsilon (\Delta \vec u^n). -\end{gather} -There are, despite the apparent simplicity of this equation, two questions -that we need to discuss. The first concerns the way we store $\sigma^n$: even -if we compute the incremental updates $\Delta\vec u^n$ using lowest-order -finite elements, then its symmetric gradient $\varepsilon(\Delta\vec u^n)$ is -in general still a function that is not easy to describe. In particular, it is -not a piecewise constant function, and on general meshes (with cells that are -not rectangles parallel to the coordinate axes) or with non-constant -stress-strain tensors $C$ it is not even a bi- or trilinear function. Thus, it -is a priori not clear how to store $\sigma^n$ in a computer program. - -To decide this, we have to see where it is used. The only place where we -require the stress is in the term -$(\sigma^{n-1},\varepsilon(\varphi))_{\Omega(t_{n-1})}$. In practice, we of -course replace this term by numerical quadrature: -\begin{gather} - (\sigma^{n-1},\varepsilon(\varphi))_{\Omega(t_{n-1})} - = - \sum_{K\subset {\mathbb{T}}} - (\sigma^{n-1},\varepsilon(\varphi))_K - \approx - \sum_{K\subset {\mathbb{T}}} - \sum_q - w_q \ \sigma^{n-1}(\vec x_q) : \varepsilon(\varphi(\vec x_q), -\end{gather} -where $w_q$ are the quadrature weights and $\vec x_q$ the quadrature points on -cell $K$. This should make clear that what we really need is not the stress -$\sigma^{n-1}$ in itself, but only the values of the stress in the quadrature -points on all cells. This, however, is a simpler task: we only have to provide -a data structure that is able to hold one symmetric tensor of rank 2 for each -quadrature point on all cells (or, since we compute in parallel, all -quadrature points of all cells that the present MPI process ``owns''). At the -end of each time step we then only have to evaluate $\varepsilon(\Delta \vec -u^n(\vec x_q))$, multiply it by the stress-strain tensor $C$, and use the -result to update the stress $\sigma^n(\vec x_q)$ at quadrature point $q$. - -The second complication is not visible in our notation as chosen above. It is -due to the fact that we compute $\Delta u^n$ on the domain $\Omega(t_{n-1})$, -and then use this displacement increment to both update the stress as well as -move the mesh nodes around to get to $\Omega(t_n)$ on which the next increment -is computed. What we have to make sure, in this context, is that moving the -mesh does not only involve moving around the nodes, but also making -corresponding changes to the stress variable: the updated stress is a variable -that is defined with respect to the coordinate system of the material in the -old domain, and has to be transferred to the new domain. The reason for this -can be understood as follows: locally, the incremental deformation $\Delta\vec -u$ can be decomposed into three parts, a linear translation (the constant part -of the displacement increment field in the neighborhood of a point), a -dilational -component (that part of the gradient of the displacement field that has a -nonzero divergence), and a rotation. A linear translation of the material does -not affect the stresses that are frozen into it -- the stress values are -simply translated along. The dilational or compressional change produces a -corresponding stress update. However, the rotational component does not -necessarily induce a nonzero stress update (think, in 2d, for example of the -situation where $\Delta\vec u=(y, -x)^T$, with which $\varepsilon(\Delta \vec -u)=0$). Nevertheless, if the the material was pre-stressed in a certain -direction, then this direction will be rotated along with the material. To -this end, we have to define a rotation matrix $R(\Delta \vec u^n)$ that -describes, in each point the rotation due to the displacement increments. It -is not hard to see that the actual dependence of $R$ on $\Delta \vec u^n$ can -only be through the curl of the displacement, rather than the displacement -itself or its full gradient (as mentioned above, the constant components of -the increment describe translations, its divergence the dilational modes, and -the curl the rotational modes). Since the exact form of $R$ is cumbersome, we -only state it in the program code, and note that the correct updating formula -for the stress variable is then -\begin{gather} - \label{eq:stress-update+rot} - \sigma^n - = - R(\Delta \vec u^n)^T - [\sigma^{n-1} + C \varepsilon (\Delta \vec u^n)] - R(\Delta \vec u^n). -\end{gather} - -Both stress update and rotation are implemented in the function -\texttt{update\_\-quadrature\_\-point\_history} of the example program. - - -\subsection*{Parallel graphical output} - -In the step-17 example program, the main bottleneck for parallel computations -was that only the first processor generated output for the entire domain. -Since generating graphical output is expensive, this did not scale well when -large numbers of processors were involved. However, no viable ways around this -problem were implemented in the library at the time, and the problem was -deferred to a later version. - -This functionality has been implemented in the meantime, and this is the time -to explain its use. Basically, what we need to do is let every process -generate graphical output for that subset of cells that it owns, write them -into separate files and have a way to merge them later on. At this point, it -should be noted that none of the graphical output formats known to the author -of this program allows for a simple way to later re-read it and merge it with -other files corresponding to the same simulation. What deal.II therefore -offers is the following: When you call the \texttt{DataOut::build\_patches} -function, an intermediate format is generated that contains all the -information for the data on each cell. Usually, this intermediate format is -then further processed and converted into one of the graphical formats that we -can presently write, such as gmv, eps, ucd, gnuplot, or a number of other -ones. Once written in these formats, there is no way to reconstruct the -necessary information to merge multiple blocks of output. However, the base -classes of \texttt{DataOut} also allow to simply dump the intermediate format -to a file, from which it can later be recovered without loss of information. - -This has two advantages: first, simulations may just dump the intermediate -format data during run-time, and the user may later decide which particular -graphics format she wants to have. This way, she does not have to re-run the -entire simulation if graphical output is requested in a different format. One -typical case is that one would like to take a quick look at the data with -gnuplot, and then create high-quality pictures using GMV or OpenDX. Since both -can be generated out of the intermediate format without problem, there is no -need to re-run the simulation. - -In the present context, of more interest is the fact that in contrast to any -of the other formats, it is simple to merge multiple files of intermediate -format, if they belong to the same simulation. This is what we will do here: -we will generate one output file in intermediate format for each processor -that belongs to this computation (in the sequential case, this will simply be -a single file). They may then later be read in and merged so that we can -output a single file in whatever graphical format is requested. - -The way to do this is to first instruct the \texttt{DataOutBase} class to -write intermediate format rather than in gmv or any other graphical -format. This is simple: just use -\texttt{data\_out.write\_deal\_II\_intermediate}. We will write to a file -called \texttt{solution-TTTT.TTTT.d2} if there is only one processor, or -files \texttt{solution-TTTT.TTTT.NNN.d2} if this is really a parallel -job. Here, \texttt{TTTT.TTTT} denotes the time for which this output has -been generated, and \texttt{NNN} the number of the MPI process that did this. - -The next step is to convert this file or these files into whatever -format you like. The program that does this is the step-19 tutorial program: -for example, for the first time step, call it through -\begin{center} - \texttt{../step-19/step-19 solution-0001.0000.*.d2 solution-0001.0000.gmv} -\end{center} -to merge all the intermediate format files into a single file in GMV -format. More details on the parameters of this program and what it can do for -you can be found in the documentation of the step-19 tutorial program. - - - -\subsection*{Overall structure of the program} - -The overall structure of the program can be inferred from the \texttt{run()} -function that first calls \texttt{do\_initial\_timestep()} for the first time -step, and then \texttt{do\_timestep()} on all subsequent time steps. The -difference between these functions is only that in the first time step we -start on a coarse mesh, solve on it, refine the mesh adaptively, and then -start again with a clean state on that new mesh. This procedure gives us a -better starting mesh, although we should of course keep adapting the mesh as -iterations proceed -- this isn't done in this program, but commented on below. - -The common part of the two functions treating time steps is the following -sequence of operations on the present mesh: -\begin{itemize} -\item \texttt{assemble\_system ()} [via \texttt{solve\_timestep ()}]: - This first function is also the most interesting one. It assembles the - linear system corresponding to the discretized version of equation - \eqref{eq:linear-system}. This leads to a system matrix $A_{ij} = \sum_K - A^K_{ij}$ built up of local contributions on each cell $K$ with entries - \begin{gather} - A^K_{ij} = (C \varepsilon(\varphi_j), \varepsilon(\varphi_i))_K; - \end{gather} - In practice, $A^K$ is computed using numerical quadrature according to the - formula - \begin{gather} - A^K_{ij} = \sum_q w_q [\varepsilon(\varphi_i(\vec x_q)) : C : - \varepsilon(\varphi_j(\vec x_q))], - \end{gather} - with quadrature points $\vec x_q$ and weights $w_q$. We have built these - contributions before, in step-8 and step-17, but in both of these cases we - have done so rather clumsily by using knowledge of how the rank-4 tensor $C$ - is composed, and considering individual elements of the strain tensors - $\varepsilon(\varphi_i),\varepsilon(\varphi_j)$. This is not really - convenient, in particular if we want to consider more complicated elasticity - models than the isotropic case for which $C$ had the convenient form - $C_{ijkl} = \lambda \delta_{ij} \delta_{kl} + \mu (\delta_{ik} \delta_{jl} - + \delta_{il} \delta_{jk})$. While we in fact do not use a more complicated - form than this in the present program, we nevertheless want to write it in a - way that would easily allow for this. It is then natural to introduce - classes that represent symmetric tensors of rank 2 (for the strains and - stresses) and 4 (for the stress-strain tensor $C$). Fortunately, deal.II - provides these: the \texttt{SymmetricTensor} class template - provides a full-fledged implementation of such tensors of rank \texttt{rank} - (which needs to be an even number) and dimension \texttt{dim}. - - What we then need is two things: a way to create the stress-strain rank-4 - tensor $C$ as well as to create a symmetric tensor of rank 2 (the strain - tensor) from the gradients of a shape function $\varphi_i$ at a quadrature - point $\vec x_q$ on a given cell. At the top of the implementation of this - example program, you will find such functions. The first one, - \texttt{get\_stress\_strain\_tensor}, takes two arguments corresponding to - the Lam\'e constants $\lambda$ and $\mu$ and returns the stress-strain tensor - for the isotropic case corresponding to these constants (in the program, we - will choose constants corresponding to steel); it would be simple to replace - this function by one that computes this tensor for the anisotropic case, or - taking into account crystal symmetries, for example. The second one, - \texttt{get\_strain} takes an object of type \texttt{FEValues} and indices - $i$ and $q$ and returns the symmetric gradient, i.e. the strain, - corresponding to shape function $\varphi_i(\vec x_q)$, evaluated on the cell - on which the \texttt{FEValues} object was last reinitialized. - - Given this, the innermost loop of \texttt{assemble\_system} computes the - local contributions to the matrix in the following elegant way (the variable - \texttt{stress\_strain\_tensor}, corresponding to the tensor $C$, has - previously been initialized with the result of the first function above): - \begin{verbatim} -for (unsigned int i=0; i - eps_phi_i = get_strain (fe_values, i, q_point), - eps_phi_j = get_strain (fe_values, j, q_point); - - cell_matrix(i,j) - += (eps_phi_i * stress_strain_tensor * eps_phi_j - * - fe_values.JxW (q_point)); - } - \end{verbatim} - It is worth noting the expressive power of this piece of code, and to - compare it with the complications we had to go through in previous examples - for the elasticity problem. (To be fair, the \texttt{SymmetricTensor} class - template did not exist when these previous examples were written.) For - simplicity, \texttt{operator*} provides for the (double summation) product - between symmetric tensors of even rank here. - - Assembling the local contributions - \begin{gather} - \begin{split} - f^K_i &= - (\vec f, \varphi_i)_K -(\sigma^{n-1},\varepsilon(\varphi_i))_K - \\ - &\approx - \sum_q - w_q \left\{ - \vec f(\vec x_q) \cdot \varphi_i(\vec x_q) - - \sigma^{n-1}_q : \varepsilon(\varphi_i(\vec x_q)) - \right\} - \end{split} - \end{gather} - to the right hand side of \eqref{eq:linear-system} is equally - straightforward (note that we do not consider any boundary tractions $\vec - b$ here). Remember that we only had to store the old stress in the - quadrature points of cells. In the program, we will provide a variable - \texttt{local\_quadrature\_points\_data} that allows to access the stress - $\sigma^{n-1}_q$ in each quadrature point. With this the code for the right - hand side looks as this, again rather elegant: - \begin{verbatim} -for (unsigned int i=0; i &old_stress - = local_quadrature_points_data[q_point].old_stress; - - cell_rhs(i) += (body_force_values[q_point](component_i) * - fe_values.shape_value (i,q_point) - - - old_stress * - get_strain (fe_values,i,q_point)) - * - fe_values.JxW (q_point); - } - } - \end{verbatim} - Note that in the multiplication $\vec f(\vec x_q) \cdot \varphi_i(\vec - x_q)$, we have made use of the fact that for the chosen finite element, only - one vector component (namely \texttt{component\_i}) of $\varphi_i$ is - nonzero, and that we therefore also have to consider only one component of - $\vec f(\vec x_q)$. - - This essentially concludes the new material we present in this function. It - later has to deal with boundary conditions as well as hanging node - constraints, but this parallels what we had to do previously in other - programs already. - -\item \texttt{solve\_linear\_problem ()} [via \texttt{solve\_timestep ()}]: - Unlike the previous one, this function is not really interesting, since it - does what similar functions have done in all previous tutorial programs -- - solving the linear system using the CG method, using an incomplete LU - decomposition as a preconditioner (in the parallel case, it uses an ILU of - each processor's block separately). It is virtually unchanged - from step-17. - -\item \texttt{update\_quadrature\_point\_history ()} [via - \texttt{solve\_timestep ()}]: Based on the displacement field $\Delta \vec - u^n$ computed before, we update the stress values in all quadrature points - according to \eqref{eq:stress-update} and \eqref{eq:stress-update+rot}, - including the rotation of the coordinate system. - -\item \texttt{move\_mesh ()}: Given the solution computed before, in this - function we deform the mesh by moving each vertex by the displacement vector - field evaluated at this particular vertex. - -\item \texttt{output\_results ()}: This function simply outputs the solution - based on what we have said above, i.e. every processor computes output only - for its own portion of the domain, and this can then be later merged by an - external program. In addition to the solution, we also compute the norm of - the stress averaged over all the quadrature points on each cell. -\end{itemize} - -With this general structure of the code, we only have to define what case we -want to solve. For the present program, we have chosen to simulate the -quasistatic deformation of a vertical cylinder for which the bottom boundary -is fixed and the top boundary is pushed down at a prescribed vertical -velocity. However, the horizontal velocity of the top boundary is left -unspecified -- one can imagine this situation as a well-greased plate pushing -from the top onto the cylinder, the points on the top boundary of the cylinder -being allowed to slide horizontally along the surface of the plate, but forced -to move downward by the plate. The inner and outer boundaries of the cylinder -are free and not subject to any prescribed deflection or traction. In -addition, gravity acts on the body. - -The program text will reveal more about how to implement this situation, and -the results section will show what displacement pattern comes out of this -simulation. - -\subsection*{Possible directions for extensions} - -The program as is does not really solve an equation that has many applications -in practice: quasi-static material deformation based on a purely elastic law -is almost boring. However, the program may serve as the starting point for -more interesting experiments, and that indeed was the initial motivation for -writing it. Here are some suggestions of what the program is missing and in -what direction it may be extended: - -\paragraph*{Plasticity models.} The most obvious extension is to use a more -realistic material model for large-scale quasistatic deformation. The natural -choice for this would be plasticity, in which a nonlinear relationship between -stress and strain replaces equation \eqref{eq:stress-strain}. Plasticity -models are usually rather complicated to program since the stress-strain -dependence is generally non-smooth. The material can be thought of being able -to withstand only a maximal stress (the yield stress) after which it starts to -``flow''. A mathematical description to this can be given in the form of a -variational inequality, which alternatively can be treated as minimizing the -elastic energy -\begin{gather} - E(\vec u) = - (\varepsilon(\vec u), C\varepsilon(\vec u))_{\Omega} - - (\vec f, \vec u)_{\Omega} - (\vec b, \vec u)_{\Gamma_N}, -\end{gather} -subject to the constraint -\begin{gather} - f(\sigma(\vec u)) \le 0 -\end{gather} -on the stress. This extension makes the problem to be solved in each time step -nonlinear, so we need another loop within each time step. - -Without going into further details of this model, we refer to the excellent -book by Simo and Hughes on ``Computational Inelasticity'' for a -comprehensive overview of computational strategies for solving plastic -models. Alternatively, a brief but concise description of an algorithm for -plasticity is given in an article by S. Commend, A. Truty, and Th. Zimmermann, -titled ``Stabilized finite elements applied to -elastoplasticity: I. Mixed displacement-pressure formulation'' -(Computer Methods in Applied Mechanics and Engineering, vol. 193, -pp. 3559--3586, 2004). - - -\paragraph*{Stabilization issues.} The formulation we have chosen, i.e. using -piecewise (bi-, tri-)linear elements for all components of the displacement -vector, and treating the stress as a variable dependent on the displacement is -appropriate for most materials. However, this so-called displacement-based -formulation becomes unstable and exhibits spurious modes for incompressible or -nearly-incompressible materials. While fluids are usually not elastic (in most -cases, the stress depends on velocity gradients, not displacement gradients, -although there are exceptions such as electro-rheologic fluids), there are a -few solids that are nearly incompressible, for example rubber. Another case is -that many plasticity models ultimately let the material become incompressible, -although this is outside the scope of the present program. - -Incompressibility is characterized by Poisson's ratio -\begin{gather*} - \nu = \frac{\lambda}{2(\lambda+\mu)}, -\end{gather*} -where $\lambda,\mu$ are the Lam\'e constants of the material. -Physical constraints indicate that $-1\le \nu\le \tfrac 12$ (the condition -also follows from mathematical stability considerations). If $\nu$ -approaches $\tfrac 12$, then the material becomes incompressible. In that -case, pure displacement-based formulations are no longer appropriate for the -solution of such problems, and stabilization techniques have to be employed -for a stable and accurate solution. The book and paper cited above give -indications as to how to do this, but there is also a large volume of -literature on this subject; a good start to get an overview of the topic can -be found in the references of the paper by -H.-Y. Duan and Q. Lin on ``Mixed finite elements of least-squares type for -elasticity'' (Computer Methods in Applied Mechanics and Engineering, vol. 194, -pp. 1093--1112, 2005). - - -\paragraph*{Refinement during timesteps.} In the present form, the program -only refines the initial mesh a number of times, but then never again. For any -kind of realistic simulation, one would want to extend this so that the mesh -is refined and coarsened every few time steps instead. This is not hard to do, -in fact, but has been left for future tutorial programs or as an exercise, if -you wish. The main complication one has to overcome is that one has to -transfer the data that is stored in the quadrature points of the cells of the -old mesh to the new mesh, preferably by some sort of projection scheme. This -is only slightly messy in the sequential case; in fact, the functions -\texttt{FETools} \texttt{::} \texttt{get\_projection\_from\_quadrature\_points\_matrix} will do -the projection, and the \texttt{FiniteElement} \texttt{::} \texttt{get\_restriction\_matrix} and -\texttt{FiniteElement} \texttt{::} \texttt{get\_prolongation\_matrix} functions will do the -transfer between mother and child cells. However, it becomes complicated -once we run the program in parallel, since then each process only stores this -data for the cells it owned on the old mesh, and it may need to know the -values of the quadrature point data on other cells if the corresponding cells -on the new mesh are assigned to this process after subdividing the new mesh. A -global communication of these data elements is therefore necessary, making the -entire process a little more unpleasant. - - -\paragraph*{Ensuring mesh regularity.} At present, the program makes no attempt -to make sure that a cell, after moving its vertices at the end of the time -step, still has a valid geometry (i.e. that its Jacobian determinant is -positive and bounded away from zero everywhere). It is, in fact, not very hard -to set boundary values and forcing terms in such a way that one gets distorted -and inverted cells rather quickly. Certainly, in some cases of large -deformation, this is unavoidable with a mesh of finite mesh size, but in some -other cases this should be preventable by appropriate mesh refinement and/or a -reduction of the time step size. The program does not do that, but a more -sophisticated version definitely should employ some sort of heuristic defining -what amount of deformation of cells is acceptable, and what isn't. - - -\subsection*{Compiling the program} - -Finally, just to remind everyone: the program runs in 3d (see the definition -of the \texttt{elastic\_problem} variable in \texttt{main()}, unlike almost -all of the other example programs. While the compiler doesn't care what -dimension it compiles for, the linker has to know which library to link with. -And as explained in other places, this requires slight changes to the Makefile -compared to the other tutorial programs. In particular, everywhere where the -2d versions of libraries are mentioned, one needs to change this to 3d, -although this is already done in the distributed version of the Makefile. -Conversely, if you want to run the program in 2d (after making the necessary -changes to accommodate for a 2d geometry), you have to change the Makefile -back to allow for 2d. - -\end{document} diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img1.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img1.png deleted file mode 100644 index 4f85ec9084..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img1.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img10.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img10.png deleted file mode 100644 index d4f762bbfc..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img10.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img100.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img100.png deleted file mode 100644 index 074293292d..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img100.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img101.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img101.png deleted file mode 100644 index 60d2b91105..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img101.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img11.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img11.png deleted file mode 100644 index edf440bcf9..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img11.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img12.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img12.png deleted file mode 100644 index 897795f8bc..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img12.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img13.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img13.png deleted file mode 100644 index e24e3a6c29..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img13.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img14.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img14.png deleted file mode 100644 index 18f848a3b5..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img14.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img15.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img15.png deleted file mode 100644 index 646de73fd4..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img15.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img16.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img16.png deleted file mode 100644 index abfc0473d3..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img16.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img17.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img17.png deleted file mode 100644 index 71e902470b..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img17.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img18.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img18.png deleted file mode 100644 index 4044e4d13b..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img18.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img19.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img19.png deleted file mode 100644 index bee30fa41f..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img19.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img2.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img2.png deleted file mode 100644 index dbf2486876..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img2.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img20.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img20.png deleted file mode 100644 index b17e0d9b2e..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img20.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img21.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img21.png deleted file mode 100644 index 59f19b9476..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img21.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img22.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img22.png deleted file mode 100644 index 51bc83c6dd..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img22.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img23.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img23.png deleted file mode 100644 index 37de84a542..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img23.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img24.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img24.png deleted file mode 100644 index 50bf784172..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img24.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img25.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img25.png deleted file mode 100644 index 92f8d26d44..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img25.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img26.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img26.png deleted file mode 100644 index 91695bc5bc..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img26.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img27.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img27.png deleted file mode 100644 index d1adfec4b5..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img27.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img28.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img28.png deleted file mode 100644 index 27dee45bdb..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img28.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img29.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img29.png deleted file mode 100644 index de071a3ae1..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img29.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img3.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img3.png deleted file mode 100644 index fbd9219f0e..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img3.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img30.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img30.png deleted file mode 100644 index cc088f8067..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img30.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img31.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img31.png deleted file mode 100644 index 52d702af1e..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img31.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img32.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img32.png deleted file mode 100644 index df422c0b27..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img32.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img33.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img33.png deleted file mode 100644 index 4a0ae7d8cb..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img33.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img34.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img34.png deleted file mode 100644 index 4a0ae7d8cb..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img34.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img35.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img35.png deleted file mode 100644 index 96f95c6216..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img35.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img36.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img36.png deleted file mode 100644 index 404f319a00..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img36.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img37.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img37.png deleted file mode 100644 index e65e53a072..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img37.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img38.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img38.png deleted file mode 100644 index 71f20f386c..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img38.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img39.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img39.png deleted file mode 100644 index 3ccaa26cd9..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img39.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img4.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img4.png deleted file mode 100644 index 82a35db95c..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img4.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img40.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img40.png deleted file mode 100644 index 7309f7ecc1..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img40.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img41.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img41.png deleted file mode 100644 index 64019e29db..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img41.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img42.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img42.png deleted file mode 100644 index 42ff48a260..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img42.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img43.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img43.png deleted file mode 100644 index 8a5fc6c6ad..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img43.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img44.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img44.png deleted file mode 100644 index 24f793de1a..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img44.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img45.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img45.png deleted file mode 100644 index 457a2eea24..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img45.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img46.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img46.png deleted file mode 100644 index 71e3511039..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img46.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img47.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img47.png deleted file mode 100644 index 660e1f7a9e..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img47.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img48.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img48.png deleted file mode 100644 index 4752bb803a..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img48.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img49.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img49.png deleted file mode 100644 index 2ce876f00f..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img49.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img5.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img5.png deleted file mode 100644 index 095ea46829..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img5.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img50.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img50.png deleted file mode 100644 index 6208f147f1..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img50.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img51.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img51.png deleted file mode 100644 index a7412b9f18..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img51.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img52.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img52.png deleted file mode 100644 index a1369cbfc8..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img52.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img53.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img53.png deleted file mode 100644 index 11b7c77c30..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img53.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img54.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img54.png deleted file mode 100644 index b4019faf2d..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img54.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img55.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img55.png deleted file mode 100644 index 964a5b666a..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img55.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img56.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img56.png deleted file mode 100644 index 48e64e60b2..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img56.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img57.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img57.png deleted file mode 100644 index 6b14e28499..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img57.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img58.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img58.png deleted file mode 100644 index 1ea0e6a1b7..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img58.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img59.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img59.png deleted file mode 100644 index 0308bdfb3b..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img59.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img6.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img6.png deleted file mode 100644 index d704ea28ab..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img6.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img60.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img60.png deleted file mode 100644 index 01cd7abc69..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img60.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img61.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img61.png deleted file mode 100644 index 839a8a8a29..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img61.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img62.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img62.png deleted file mode 100644 index f7daf45ebb..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img62.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img63.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img63.png deleted file mode 100644 index d247f1dc67..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img63.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img64.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img64.png deleted file mode 100644 index 3b4318b6ca..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img64.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img65.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img65.png deleted file mode 100644 index c5a2088762..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img65.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img66.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img66.png deleted file mode 100644 index 4d1fcb84bd..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img66.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img67.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img67.png deleted file mode 100644 index f60a2bde1e..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img67.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img68.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img68.png deleted file mode 100644 index 25ac13b2fb..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img68.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img69.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img69.png deleted file mode 100644 index 3ca0181deb..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img69.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img7.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img7.png deleted file mode 100644 index 72c7d4979e..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img7.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img70.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img70.png deleted file mode 100644 index 8db096591f..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img70.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img71.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img71.png deleted file mode 100644 index c69666acc8..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img71.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img72.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img72.png deleted file mode 100644 index 9e0d0b001b..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img72.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img73.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img73.png deleted file mode 100644 index a2fb06cfa2..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img73.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img74.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img74.png deleted file mode 100644 index 784daab071..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img74.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img75.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img75.png deleted file mode 100644 index 1b231e7c8a..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img75.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img76.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img76.png deleted file mode 100644 index 933552a581..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img76.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img77.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img77.png deleted file mode 100644 index 040bda610c..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img77.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img78.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img78.png deleted file mode 100644 index ae00dc154a..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img78.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img79.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img79.png deleted file mode 100644 index 53c2a77bce..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img79.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img8.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img8.png deleted file mode 100644 index 09bf5c4114..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img8.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img80.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img80.png deleted file mode 100644 index cadb86bf8c..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img80.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img81.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img81.png deleted file mode 100644 index 18a99a6aa1..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img81.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img82.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img82.png deleted file mode 100644 index 4a5f786f15..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img82.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img83.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img83.png deleted file mode 100644 index 40d0d76ca9..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img83.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img84.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img84.png deleted file mode 100644 index 53b52139ad..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img84.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img85.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img85.png deleted file mode 100644 index e125080e8d..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img85.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img86.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img86.png deleted file mode 100644 index 928e241142..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img86.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img87.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img87.png deleted file mode 100644 index 16160fda82..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img87.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img88.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img88.png deleted file mode 100644 index b4b97f19c4..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img88.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img89.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img89.png deleted file mode 100644 index 344be488d3..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img89.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img9.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img9.png deleted file mode 100644 index 4a0ae7d8cb..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img9.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img90.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img90.png deleted file mode 100644 index 37de0c2c2d..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img90.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img91.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img91.png deleted file mode 100644 index b4667df342..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img91.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img92.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img92.png deleted file mode 100644 index f602f9496b..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img92.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img93.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img93.png deleted file mode 100644 index 70addbf6e9..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img93.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img94.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img94.png deleted file mode 100644 index 99aaee1866..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img94.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img95.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img95.png deleted file mode 100644 index 420b776da8..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img95.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img96.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img96.png deleted file mode 100644 index 48fbbd7df8..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img96.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img97.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img97.png deleted file mode 100644 index 5614d58f22..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img97.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img98.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img98.png deleted file mode 100644 index ffc82543e5..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img98.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img99.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img99.png deleted file mode 100644 index 23bf8a4cd4..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/intro/img99.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0002.p.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0002.p.png deleted file mode 100644 index 80b7152d16..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0002.p.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0002.s.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0002.s.png deleted file mode 100644 index 0d4761deba..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0002.s.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0005.s.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0005.s.png deleted file mode 100644 index eee66e647d..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0005.s.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0007.s.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0007.s.png deleted file mode 100644 index eb49a06d54..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0007.s.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0008.s.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0008.s.png deleted file mode 100644 index 952347e380..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0008.s.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0009.s.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0009.s.png deleted file mode 100644 index 9388e91ba5..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0009.s.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-000mesh.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-000mesh.png deleted file mode 100644 index ca8205638b..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-000mesh.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0010.s.png b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0010.s.png deleted file mode 100644 index e7b232bd16..0000000000 Binary files a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/parallel/solution-0010.s.png and /dev/null differ diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/results.html b/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/results.html deleted file mode 100644 index 4fae5cc422..0000000000 --- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-18.data/results.html +++ /dev/null @@ -1,380 +0,0 @@ - -

Results

- -

-Running the program takes a good while if one doesn't change the flags -in the Makefile: in debug mode (the default) and on only a single -machine, it takes about 3h45min on my Athlon XP 2GHz. Fortunately, but -setting debug-mode = off in the Makefile, this can be -reduced significantly, to about 23 minutes, a much more reasonable time. - -

- -

-If run, the program prints the following output, explaining what it is -doing during all that time: - -

-examples/step-18> time make run
-============================ Running step-18
-Timestep 1 at time 1
-  Cycle 0:
-    Number of active cells:       3712 (by partition: 3712)
-    Number of degrees of freedom: 17226 (by partition: 17226)
-    Assembling system... norm of rhs is 2.34224e+10
-    Solver converged in 117 iterations.
-    Updating quadrature point data...
-  Cycle 1:
-    Number of active cells:       12812 (by partition: 12812)
-    Number of degrees of freedom: 51726 (by partition: 51726)
-    Assembling system... norm of rhs is 2.34227e+10
-    Solver converged in 130 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
-Timestep 2 at time 2
-    Assembling system... norm of rhs is 2.30852e+10
-    Solver converged in 131 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
-Timestep 3 at time 3
-    Assembling system... norm of rhs is 2.27792e+10
-    Solver converged in 126 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
-Timestep 4 at time 4
-    Assembling system... norm of rhs is 2.25107e+10
-    Solver converged in 124 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
-Timestep 5 at time 5
-    Assembling system... norm of rhs is 2.22883e+10
-    Solver converged in 122 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
-Timestep 6 at time 6
-    Assembling system... norm of rhs is 2.21272e+10
-    Solver converged in 118 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
-Timestep 7 at time 7
-    Assembling system... norm of rhs is 2.20652e+10
-    Solver converged in 117 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
-Timestep 8 at time 8
-    Assembling system... norm of rhs is 2.22501e+10
-    Solver converged in 127 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
-Timestep 9 at time 9
-    Assembling system... norm of rhs is 2.32742e+10
-    Solver converged in 144 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
-Timestep 10 at time 10
-    Assembling system... norm of rhs is 2.55929e+10
-    Solver converged in 149 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
- -In other words, it is computing on 12,000 cells and with some 52,000 -unknowns. Not a whole lot, but enough for a coupled three-dimensional -problem to keep a computer busy for a while. At the end of the day, -this is what we have for output: - -
-examples/step-18> ls -l *.d2
--rw-r--r--  1 bangerth wheeler 8797414 May 25 09:10 solution-0001.0000.d2
--rw-r--r--  1 bangerth wheeler 8788500 May 25 09:32 solution-0002.0000.d2
--rw-r--r--  1 bangerth wheeler 8763718 May 25 09:55 solution-0003.0000.d2
--rw-r--r--  1 bangerth wheeler 8738940 May 25 10:17 solution-0004.0000.d2
--rw-r--r--  1 bangerth wheeler 8710104 May 25 10:39 solution-0005.0000.d2
--rw-r--r--  1 bangerth wheeler 8685388 May 25 11:01 solution-0006.0000.d2
--rw-r--r--  1 bangerth wheeler 8649088 May 25 11:23 solution-0007.0000.d2
--rw-r--r--  1 bangerth wheeler 8585146 May 25 11:45 solution-0008.0000.d2
--rw-r--r--  1 bangerth wheeler 8489764 May 25 12:07 solution-0009.0000.d2
--rw-r--r--  1 bangerth wheeler 8405388 May 25 12:29 solution-0010.0000.d2
-
-
-

- -

-Let us convert these files in deal.II intermediate format to gmv -format (this assumes that you have already compiled the step-19 example program): - -

-examples/step-18> ../step-19/step-19
-
-Converter from deal.II intermediate format to other graphics formats.
-
-Usage: ./step-19 [-p parameter_file] list_of_input_files [-x output_format] output_file
-
-examples/step-18> ../step-19/step-19 solution-0001.0000.d2 -x gmv solution-0001.0000.gmv
-examples/step-18> ../step-19/step-19 solution-0002.0000.d2 -x gmv solution-0002.0000.gmv
-[...]
-
- -Of course, since we have run the program only in sequential mode, we -do have only one intermediate file for each time step that we have to -take as input. -

- -

-If we visualize these files with GMV, we get to see the full picture -of the disaster our forced compression wreaks on the cylinder (click -on the images for a larger version; colors in the images encode the -norm of the stress in the material): -

- - - - - - - - - - - - - - - - - -
- - - Time = 2 - - - - Time = 5 - - - - Time = 7 -
- - - Time = 8 - - - - Time = 9 - - - - Time = 10 -
- -

-As is clearly visible, as we keep compressing the cylinder, it starts -to buckle and ultimately collapses. Towards the end of the simulation, -the deflection pattern becomes nonsymmetric (the cylinder top slides -to the right). The model clearly does not provide for this (all our -forces and boundary deflections are symmetric) but the effect is -probably physically correct anyway: in reality, small inhomogeneities -in the body's material properties would lead it to buckle to one side -to evade the forcing; in numerical simulations, small perturbations -such as numerical round-off or an inexact solution of a linear system -by an iterative solver could have the same effect. Another typical source for -asymmetries in adaptive computations is that only a certain fraction of cells -is refined in each step, which may lead to asymmetric meshes even if the -original coarse mesh was symmetric. -

- - -

-Whether the computation is fully converged is a different matter. In order to -see whether it is, we ran the program again with one more global refinement at -the beginning and with the time step halved. This would have taken a very long -time on a single machine, so we used our cluster again and ran it on 16 -processors (8 dual-processor machines) in parallel. The beginning of the output -now looks like this: - -

-Timestep 1 at time 0.5
-  Cycle 0:
-    Number of active cells:       29696 (by partition: 1862+1890+1866+1850+1864+1850+1858+1842+1911+1851+1911+1804+1854+1816+1839+1828)
-    Number of degrees of freedom: 113100 (by partition: 7089+7218+6978+6972+7110+6840+7119+7023+7542+7203+7068+6741+6921+6759+7464+7053)
-    Assembling system... norm of rhs is 1.05874e+10
-    Solver converged in 289 iterations.
-    Updating quadrature point data...
-  Cycle 1:
-    Number of active cells:       102097 (by partition: 6346+6478+6442+6570+6370+6483+6413+6376+6403+6195+6195+6195+6494+6571+6371+6195)
-    Number of degrees of freedom: 358875 (by partition: 22257+22161+22554+22482+21759+23361+23040+21609+22347+20937+21801+21678+24126+25149+21321+22293)
-    Assembling system... norm of rhs is 3.46364e+10
-    Solver converged in 249 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
-Timestep 2 at time 1
-    Assembling system... norm of rhs is 3.42269e+10
-    Solver converged in 248 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
-Timestep 3 at time 1.5
-    Assembling system... norm of rhs is 3.38229e+10
-    Solver converged in 247 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
-Timestep 4 at time 2
-    Assembling system... norm of rhs is 3.34247e+10
-    Solver converged in 247 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
-[...]
-
-Timestep 20 at time 10
-    Assembling system... norm of rhs is 3.2449e+10
-    Solver converged in 493 iterations.
-    Updating quadrature point data...
-    Moving mesh...
-
- -That's quite a good number of unknowns, given that we are in 3d. The output of -this program are 16 files for each time step: - -
-examples/step-18> ls -l solution-0001.000*
--rw-r--r--    1 bangerth mfw       4325219 Aug 11 09:44 solution-0001.0000-000.d2
--rw-r--r--    1 bangerth mfw       4454460 Aug 11 09:44 solution-0001.0000-001.d2
--rw-r--r--    1 bangerth mfw       4485242 Aug 11 09:43 solution-0001.0000-002.d2
--rw-r--r--    1 bangerth mfw       4517364 Aug 11 09:43 solution-0001.0000-003.d2
--rw-r--r--    1 bangerth mfw       4462829 Aug 11 09:43 solution-0001.0000-004.d2
--rw-r--r--    1 bangerth mfw       4482487 Aug 11 09:43 solution-0001.0000-005.d2
--rw-r--r--    1 bangerth mfw       4548619 Aug 11 09:43 solution-0001.0000-006.d2
--rw-r--r--    1 bangerth mfw       4522421 Aug 11 09:43 solution-0001.0000-007.d2
--rw-r--r--    1 bangerth mfw       4337529 Aug 11 09:43 solution-0001.0000-008.d2
--rw-r--r--    1 bangerth mfw       4163047 Aug 11 09:43 solution-0001.0000-009.d2
--rw-r--r--    1 bangerth mfw       4288247 Aug 11 09:43 solution-0001.0000-010.d2
--rw-r--r--    1 bangerth mfw       4350410 Aug 11 09:43 solution-0001.0000-011.d2
--rw-r--r--    1 bangerth mfw       4458427 Aug 11 09:43 solution-0001.0000-012.d2
--rw-r--r--    1 bangerth mfw       4466037 Aug 11 09:43 solution-0001.0000-013.d2
--rw-r--r--    1 bangerth mfw       4505679 Aug 11 09:44 solution-0001.0000-014.d2
--rw-r--r--    1 bangerth mfw       4340488 Aug 11 09:44 solution-0001.0000-015.d2
-
-
-We merge and convert these 16 intermediate files into a single gmv file as -follows: - -
-examples/step-18> time ../step-19/step-19 solution-0001.0000-* -x gmv -o solution-0001.0000.gmv
-
-real    0m45.929s
-user    0m41.290s
-sys     0m0.990s
-examples/step-18> ls -l solution-0001.0000.gmv
--rw-r--r--    1 bangerth mfw      68925360 Aug 11 17:04 solution-0001.0000.gmv
-
-
- -

-Doing so for all time steps, we obtain gmv files that we can visualize (albeit -with some difficulty, due to their size gmv isn't exactly fast when plotting -them). Here are first the mesh on which we compute as well as the partitioning -for the 16 processors: -

- - - - - - - -
- - - - - -
- -

-Finally, here is the same output as we have shown before for the much smaller -sequential case: -

- - - - - - - - - - - - - - - - - -
- - - Time = 2 - - - - Time = 5 - - - - Time = 7 -
- - - Time = 8 - - - - Time = 9 - - - - Time = 10 -
- -

-If one compares this with the previous run, the results are qualitatively -similar, but quantitatively definitely different. The previous computation was -therefore certainly not converged, though we can't say for sure anything about -the present one. One would need an even finer computation to find out. However, -the point may be moot: looking at the last picture in detail (click on it to -see it in larger), it is pretty obvious that not only is the linear small -deformation model we chose completely inadequate, but for a realistic -simulation we would also need to make sure that the body does not intersects -itself during deformation. Without such a formulation we cannot expect anything -that make sense, even if it produces nice pictures! -

diff --git a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/solution.gmv b/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/solution.gmv deleted file mode 100644 index f437cf3a17..0000000000 --- a/deal.II/doc/tutorial/chapter-2.step-by-step/step-20.data/solution.gmv +++ /dev/null @@ -1,147 +0,0 @@ -gmvinput ascii - -nodes 256 --1 -0.75 -1 -0.75 -0.75 -0.5 -0.75 -0.5 -1 -0.75 -1 -0.75 -0.75 -0.5 -0.75 -0.5 -0.5 -0.25 -0.5 -0.25 -0.25 0 -0.25 0 -0.5 -0.25 -0.5 -0.25 -0.25 0 -0.25 0 -1 -0.75 -1 -0.75 -0.75 -0.5 -0.75 -0.5 -1 -0.75 -1 -0.75 -0.75 -0.5 -0.75 -0.5 -0.5 -0.25 -0.5 -0.25 -0.25 0 -0.25 0 -0.5 -0.25 -0.5 -0.25 -0.25 0 -0.25 0 0 0.25 0 0.25 0.25 0.5 0.25 0.5 0 0.25 0 0.25 0.25 0.5 0.25 0.5 0.5 0.75 0.5 0.75 0.75 1 0.75 1 0.5 0.75 0.5 0.75 0.75 1 0.75 1 0 0.25 0 0.25 0.25 0.5 0.25 0.5 0 0.25 0 0.25 0.25 0.5 0.25 0.5 0.5 0.75 0.5 0.75 0.75 1 0.75 1 0.5 0.75 0.5 0.75 0.75 1 0.75 1 -1 -0.75 -1 -0.75 -0.75 -0.5 -0.75 -0.5 -1 -0.75 -1 -0.75 -0.75 -0.5 -0.75 -0.5 -0.5 -0.25 -0.5 -0.25 -0.25 0 -0.25 0 -0.5 -0.25 -0.5 -0.25 -0.25 0 -0.25 0 -1 -0.75 -1 -0.75 -0.75 -0.5 -0.75 -0.5 -1 -0.75 -1 -0.75 -0.75 -0.5 -0.75 -0.5 -0.5 -0.25 -0.5 -0.25 -0.25 0 -0.25 0 -0.5 -0.25 -0.5 -0.25 -0.25 0 -0.25 0 0 0.25 0 0.25 0.25 0.5 0.25 0.5 0 0.25 0 0.25 0.25 0.5 0.25 0.5 0.5 0.75 0.5 0.75 0.75 1 0.75 1 0.5 0.75 0.5 0.75 0.75 1 0.75 1 0 0.25 0 0.25 0.25 0.5 0.25 0.5 0 0.25 0 0.25 0.25 0.5 0.25 0.5 0.5 0.75 0.5 0.75 0.75 1 0.75 1 0.5 0.75 0.5 0.75 0.75 1 0.75 1 --1 -1 -0.75 -0.75 -1 -1 -0.75 -0.75 -0.75 -0.75 -0.5 -0.5 -0.75 -0.75 -0.5 -0.5 -1 -1 -0.75 -0.75 -1 -1 -0.75 -0.75 -0.75 -0.75 -0.5 -0.5 -0.75 -0.75 -0.5 -0.5 -0.5 -0.5 -0.25 -0.25 -0.5 -0.5 -0.25 -0.25 -0.25 -0.25 0 0 -0.25 -0.25 0 0 -0.5 -0.5 -0.25 -0.25 -0.5 -0.5 -0.25 -0.25 -0.25 -0.25 0 0 -0.25 -0.25 0 0 -1 -1 -0.75 -0.75 -1 -1 -0.75 -0.75 -0.75 -0.75 -0.5 -0.5 -0.75 -0.75 -0.5 -0.5 -1 -1 -0.75 -0.75 -1 -1 -0.75 -0.75 -0.75 -0.75 -0.5 -0.5 -0.75 -0.75 -0.5 -0.5 -0.5 -0.5 -0.25 -0.25 -0.5 -0.5 -0.25 -0.25 -0.25 -0.25 0 0 -0.25 -0.25 0 0 -0.5 -0.5 -0.25 -0.25 -0.5 -0.5 -0.25 -0.25 -0.25 -0.25 0 0 -0.25 -0.25 0 0 0 0 0.25 0.25 0 0 0.25 0.25 0.25 0.25 0.5 0.5 0.25 0.25 0.5 0.5 0 0 0.25 0.25 0 0 0.25 0.25 0.25 0.25 0.5 0.5 0.25 0.25 0.5 0.5 0.5 0.5 0.75 0.75 0.5 0.5 0.75 0.75 0.75 0.75 1 1 0.75 0.75 1 1 0.5 0.5 0.75 0.75 0.5 0.5 0.75 0.75 0.75 0.75 1 1 0.75 0.75 1 1 0 0 0.25 0.25 0 0 0.25 0.25 0.25 0.25 0.5 0.5 0.25 0.25 0.5 0.5 0 0 0.25 0.25 0 0 0.25 0.25 0.25 0.25 0.5 0.5 0.25 0.25 0.5 0.5 0.5 0.5 0.75 0.75 0.5 0.5 0.75 0.75 0.75 0.75 1 1 0.75 0.75 1 1 0.5 0.5 0.75 0.75 0.5 0.5 0.75 0.75 0.75 0.75 1 1 0.75 0.75 1 1 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -cells 64 -quad 4 -1 2 4 3 -quad 4 -5 6 8 7 -quad 4 -9 10 12 11 -quad 4 -13 14 16 15 -quad 4 -17 18 20 19 -quad 4 -21 22 24 23 -quad 4 -25 26 28 27 -quad 4 -29 30 32 31 -quad 4 -33 34 36 35 -quad 4 -37 38 40 39 -quad 4 -41 42 44 43 -quad 4 -45 46 48 47 -quad 4 -49 50 52 51 -quad 4 -53 54 56 55 -quad 4 -57 58 60 59 -quad 4 -61 62 64 63 -quad 4 -65 66 68 67 -quad 4 -69 70 72 71 -quad 4 -73 74 76 75 -quad 4 -77 78 80 79 -quad 4 -81 82 84 83 -quad 4 -85 86 88 87 -quad 4 -89 90 92 91 -quad 4 -93 94 96 95 -quad 4 -97 98 100 99 -quad 4 -101 102 104 103 -quad 4 -105 106 108 107 -quad 4 -109 110 112 111 -quad 4 -113 114 116 115 -quad 4 -117 118 120 119 -quad 4 -121 122 124 123 -quad 4 -125 126 128 127 -quad 4 -129 130 132 131 -quad 4 -133 134 136 135 -quad 4 -137 138 140 139 -quad 4 -141 142 144 143 -quad 4 -145 146 148 147 -quad 4 -149 150 152 151 -quad 4 -153 154 156 155 -quad 4 -157 158 160 159 -quad 4 -161 162 164 163 -quad 4 -165 166 168 167 -quad 4 -169 170 172 171 -quad 4 -173 174 176 175 -quad 4 -177 178 180 179 -quad 4 -181 182 184 183 -quad 4 -185 186 188 187 -quad 4 -189 190 192 191 -quad 4 -193 194 196 195 -quad 4 -197 198 200 199 -quad 4 -201 202 204 203 -quad 4 -205 206 208 207 -quad 4 -209 210 212 211 -quad 4 -213 214 216 215 -quad 4 -217 218 220 219 -quad 4 -221 222 224 223 -quad 4 -225 226 228 227 -quad 4 -229 230 232 231 -quad 4 -233 234 236 235 -quad 4 -237 238 240 239 -quad 4 -241 242 244 243 -quad 4 -245 246 248 247 -quad 4 -249 250 252 251 -quad 4 -253 254 256 255 -variable -u 1 -0.967187 1.03281 0.967187 1.03281 1.03281 1.07969 1.03281 1.07969 0.910939 0.976562 0.910939 0.976562 0.976562 1.02344 0.976562 1.02344 1.07969 1.10781 1.07969 1.10781 1.10781 1.11719 1.10781 1.11719 1.02344 1.05156 1.02344 1.05156 1.05156 1.06094 1.05156 1.06094 0.873438 0.939061 0.873438 0.939061 0.939061 0.985939 0.939061 0.985939 0.854685 0.920313 0.854685 0.920313 0.920313 0.967189 0.920313 0.967189 0.985939 1.01406 0.985939 1.01406 1.01406 1.02344 1.01406 1.02344 0.967189 0.995314 0.967189 0.995314 0.995314 1.00468 0.995314 1.00468 1.11719 1.10781 1.11719 1.10781 1.10781 1.07969 1.10781 1.07969 1.06094 1.05156 1.06094 1.05156 1.05156 1.02344 1.05156 1.02344 1.07969 1.03281 1.07969 1.03281 1.03281 0.967187 1.03281 0.967187 1.02344 0.976562 1.02344 0.976562 0.976562 0.910939 0.976562 0.910939 1.02344 1.01406 1.02344 1.01406 1.01406 0.985939 1.01406 0.985939 1.00468 0.995314 1.00468 0.995314 0.995314 0.967189 0.995314 0.967189 0.985939 0.939061 0.985939 0.939061 0.939061 0.873438 0.939061 0.873438 0.967189 0.920313 0.967189 0.920313 0.920313 0.854685 0.920313 0.854685 0.854685 0.920313 0.854685 0.920313 0.920313 0.967189 0.920313 0.967189 0.873438 0.939061 0.873438 0.939061 0.939061 0.985939 0.939061 0.985939 0.967189 0.995314 0.967189 0.995314 0.995314 1.00468 0.995314 1.00468 0.985939 1.01406 0.985939 1.01406 1.01406 1.02344 1.01406 1.02344 0.910939 0.976562 0.910939 0.976562 0.976562 1.02344 0.976562 1.02344 0.967187 1.03281 0.967187 1.03281 1.03281 1.07969 1.03281 1.07969 1.02344 1.05156 1.02344 1.05156 1.05156 1.06094 1.05156 1.06094 1.07969 1.10781 1.07969 1.10781 1.10781 1.11719 1.10781 1.11719 1.00468 0.995314 1.00468 0.995314 0.995314 0.967189 0.995314 0.967189 1.02344 1.01406 1.02344 1.01406 1.01406 0.985939 1.01406 0.985939 0.967189 0.920313 0.967189 0.920313 0.920313 0.854685 0.920313 0.854685 0.985939 0.939061 0.985939 0.939061 0.939061 0.873438 0.939061 0.873438 1.06094 1.05156 1.06094 1.05156 1.05156 1.02344 1.05156 1.02344 1.11719 1.10781 1.11719 1.10781 1.10781 1.07969 1.10781 1.07969 1.02344 0.976562 1.02344 0.976562 0.976562 0.910939 0.976562 0.910939 1.07969 1.03281 1.07969 1.03281 1.03281 0.967187 1.03281 0.967187 - -v 1 -0.2625 0.2625 0.196876 0.196876 0.187501 0.187501 0.140625 0.140625 0.196876 0.196876 0.131249 0.131249 0.140625 0.140625 0.0937485 0.0937485 0.1125 0.1125 0.0843746 0.0843746 0.0374999 0.0374999 0.0281241 0.0281241 0.0843746 0.0843746 0.0562506 0.0562506 0.0281241 0.0281241 0.0187511 0.0187511 0.131249 0.131249 0.0656243 0.0656243 0.0937485 0.0937485 0.0468755 0.0468755 0.0656243 0.0656243 -8.91508e-17 -8.91508e-17 0.0468755 0.0468755 9.30948e-16 9.30948e-16 0.0562506 0.0562506 0.0281257 0.0281257 0.0187511 0.0187511 0.0093763 0.0093763 0.0281257 0.0281257 5.94649e-16 5.94649e-16 0.0093763 0.0093763 9.51602e-17 9.51602e-17 -0.0374999 -0.0374999 -0.0281241 -0.0281241 -0.1125 -0.1125 -0.0843746 -0.0843746 -0.0281241 -0.0281241 -0.0187511 -0.0187511 -0.0843746 -0.0843746 -0.0562506 -0.0562506 -0.187501 -0.187501 -0.140625 -0.140625 -0.2625 -0.2625 -0.196876 -0.196876 -0.140625 -0.140625 -0.0937485 -0.0937485 -0.196876 -0.196876 -0.131249 -0.131249 -0.0187511 -0.0187511 -0.0093763 -0.0093763 -0.0562506 -0.0562506 -0.0281257 -0.0281257 -0.0093763 -0.0093763 -2.0763e-16 -2.0763e-16 -0.0281257 -0.0281257 5.47995e-16 5.47995e-16 -0.0937485 -0.0937485 -0.0468755 -0.0468755 -0.131249 -0.131249 -0.0656243 -0.0656243 -0.0468755 -0.0468755 -9.49962e-16 -9.49962e-16 -0.0656243 -0.0656243 -7.81872e-16 -7.81872e-16 -8.91508e-17 -8.91508e-17 -0.0656243 -0.0656243 9.30948e-16 9.30948e-16 -0.0468755 -0.0468755 -0.0656243 -0.0656243 -0.131249 -0.131249 -0.0468755 -0.0468755 -0.0937485 -0.0937485 5.94649e-16 5.94649e-16 -0.0281257 -0.0281257 9.51602e-17 9.51602e-17 -0.0093763 -0.0093763 -0.0281257 -0.0281257 -0.0562506 -0.0562506 -0.0093763 -0.0093763 -0.0187511 -0.0187511 -0.131249 -0.131249 -0.196876 -0.196876 -0.0937485 -0.0937485 -0.140625 -0.140625 -0.196876 -0.196876 -0.2625 -0.2625 -0.140625 -0.140625 -0.187501 -0.187501 -0.0562506 -0.0562506 -0.0843746 -0.0843746 -0.0187511 -0.0187511 -0.0281241 -0.0281241 -0.0843746 -0.0843746 -0.1125 -0.1125 -0.0281241 -0.0281241 -0.0374999 -0.0374999 -2.0763e-16 -2.0763e-16 0.0093763 0.0093763 5.47995e-16 5.47995e-16 0.0281257 0.0281257 0.0093763 0.0093763 0.0187511 0.0187511 0.0281257 0.0281257 0.0562506 0.0562506 -9.49962e-16 -9.49962e-16 0.0468755 0.0468755 -7.81872e-16 -7.81872e-16 0.0656243 0.0656243 0.0468755 0.0468755 0.0937485 0.0937485 0.0656243 0.0656243 0.131249 0.131249 0.0187511 0.0187511 0.0281241 0.0281241 0.0562506 0.0562506 0.0843746 0.0843746 0.0281241 0.0281241 0.0374999 0.0374999 0.0843746 0.0843746 0.1125 0.1125 0.0937485 0.0937485 0.140625 0.140625 0.131249 0.131249 0.196876 0.196876 0.140625 0.140625 0.187501 0.187501 0.196876 0.196876 0.2625 0.2625 - -p 1 -0.941992 0.941992 0.941992 0.941992 0.68457 0.68457 0.68457 0.68457 0.892773 0.892773 0.892773 0.892773 0.649414 0.649414 0.649414 0.649414 0.41543 0.41543 0.41543 0.41543 0.139258 0.139258 0.139258 0.139258 0.394336 0.394336 0.394336 0.394336 0.132227 0.132227 0.132227 0.132227 0.859961 0.859961 0.859961 0.859961 0.625977 0.625977 0.625977 0.625977 0.843555 0.843555 0.843555 0.843555 0.614258 0.614258 0.614258 0.614258 0.380273 0.380273 0.380273 0.380273 0.127539 0.127539 0.127539 0.127539 0.373242 0.373242 0.373242 0.373242 0.125195 0.125195 0.125195 0.125195 -0.139258 -0.139258 -0.139258 -0.139258 -0.41543 -0.41543 -0.41543 -0.41543 -0.132227 -0.132227 -0.132227 -0.132227 -0.394336 -0.394336 -0.394336 -0.394336 -0.68457 -0.68457 -0.68457 -0.68457 -0.941992 -0.941992 -0.941992 -0.941992 -0.649414 -0.649414 -0.649414 -0.649414 -0.892773 -0.892773 -0.892773 -0.892773 -0.127539 -0.127539 -0.127539 -0.127539 -0.380273 -0.380273 -0.380273 -0.380273 -0.125195 -0.125195 -0.125195 -0.125195 -0.373242 -0.373242 -0.373242 -0.373242 -0.625977 -0.625977 -0.625977 -0.625977 -0.859961 -0.859961 -0.859961 -0.859961 -0.614258 -0.614258 -0.614258 -0.614258 -0.843555 -0.843555 -0.843555 -0.843555 0.843555 0.843555 0.843555 0.843555 0.614258 0.614258 0.614258 0.614258 0.859961 0.859961 0.859961 0.859961 0.625977 0.625977 0.625977 0.625977 0.373242 0.373242 0.373242 0.373242 0.125195 0.125195 0.125195 0.125195 0.380273 0.380273 0.380273 0.380273 0.127539 0.127539 0.127539 0.127539 0.892773 0.892773 0.892773 0.892773 0.649414 0.649414 0.649414 0.649414 0.941992 0.941992 0.941992 0.941992 0.68457 0.68457 0.68457 0.68457 0.394336 0.394336 0.394336 0.394336 0.132227 0.132227 0.132227 0.132227 0.41543 0.41543 0.41543 0.41543 0.139258 0.139258 0.139258 0.139258 -0.125195 -0.125195 -0.125195 -0.125195 -0.373242 -0.373242 -0.373242 -0.373242 -0.127539 -0.127539 -0.127539 -0.127539 -0.380273 -0.380273 -0.380273 -0.380273 -0.614258 -0.614258 -0.614258 -0.614258 -0.843555 -0.843555 -0.843555 -0.843555 -0.625977 -0.625977 -0.625977 -0.625977 -0.859961 -0.859961 -0.859961 -0.859961 -0.132227 -0.132227 -0.132227 -0.132227 -0.394336 -0.394336 -0.394336 -0.394336 -0.139258 -0.139258 -0.139258 -0.139258 -0.41543 -0.41543 -0.41543 -0.41543 -0.649414 -0.649414 -0.649414 -0.649414 -0.892773 -0.892773 -0.892773 -0.892773 -0.68457 -0.68457 -0.68457 -0.68457 -0.941992 -0.941992 -0.941992 -0.941992 - -endvars -endgmv