From: wolf Date: Wed, 25 May 2005 17:41:10 +0000 (+0000) Subject: Proofread and fix. X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7a78db2a934939a11769f05458242d2dc7351451;p=dealii-svn.git Proofread and fix. git-svn-id: https://svn.dealii.org/trunk@10743 0785d39b-7218-0410-832d-ea1e28bc413d --- 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 index 0cbfa55e87..e88fcad5f6 100644 --- 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 @@ -46,7 +46,7 @@ In addition, initial conditions \qquad \text{on $\Omega$}, \end{align} -and Dirichlet (displacement) or Neumann (force) boundary conditions need +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) @@ -63,11 +63,11 @@ In above formulation, $\varepsilon(\vec u)= \tfrac 12 (\nabla \vec u + \nabla 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 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. +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 @@ -75,7 +75,7 @@ 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 configuration happen on times scales that are +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 @@ -162,18 +162,19 @@ such that \\ +(\vec b(\vec x,t_n)-\vec b(\vec x,t_{n-1}), \varphi)_{\Gamma_N} \\ - \forall \varphi \in \{v\in H^1(\Omega(t_{n-1}))^d: v|_{\Gamma_D}=0\}. + \forall \varphi \in \{\vec v\in H^1(\Omega(t_{n-1}))^d: \vec + v|_{\Gamma_D}=0\}. \end{multline} -We note that 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. +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 @@ -220,7 +221,7 @@ 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 +course replace this term by numerical quadrature: \begin{gather} (\sigma^{n-1},\varepsilon(\varphi))_{\Omega(t_{n-1})} = @@ -249,19 +250,29 @@ 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 old mesh, and has -to be transferred to the new mesh. While the updating procedure has already -taken care of the case where the material is compressed or dilated, it has to -be explicitly extended to account for the case that a cell is rotated. 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 (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 +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 field in the neighborhood of a point), a dilational +component (that part of the gradient if 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$, which 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 @@ -270,7 +281,8 @@ variable is then [\sigma^{n-1} + C \varepsilon (\Delta \vec u^n)] R(\Delta \vec u^n). \end{gather} -This is all implemented in the function + +Both stress update and rotation are implemented in the function \texttt{update\_\-quadrature\_\-point\_history} of the example program. @@ -297,8 +309,8 @@ 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 allows to simply dump the intermediate format to a -file, from which it can later be recovered without loss of information. +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 @@ -320,7 +332,7 @@ 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}. This will generate one file +\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 @@ -343,13 +355,13 @@ you can be found in the documentation of the step-19 tutorial 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 on the first time step we +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 that the following +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 ()}]: @@ -375,7 +387,7 @@ sequence of operations on the present mesh: 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 that this in the present program, we nevertheless want to write it in a + 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 @@ -389,7 +401,7 @@ sequence of operations on the present mesh: 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 + 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 @@ -469,10 +481,10 @@ for (unsigned int i=0; i