NOTES | HOME
$$ \newcommand{\RR}{\mathbb{R}} \newcommand{\GG}{\mathbb{G}} \newcommand{\PP}{\mathbb{P}} \newcommand{\PS}{\mathcal{P}} \newcommand{\SS}{\mathbb{S}} \newcommand{\NN}{\mathbb{N}} \newcommand{\ZZ}{\mathbb{Z}} \newcommand{\CC}{\mathbb{C}} \newcommand{\HH}{\mathbb{H}} \newcommand{\ones}{\mathbb{1\hspace{-0.4em}1}} \newcommand{\alg}[1]{\mathfrak{#1}} \newcommand{\mat}[1]{ \begin{pmatrix} #1 \end{pmatrix} } \renewcommand{\bar}{\overline} \renewcommand{\hat}{\widehat} \renewcommand{\tilde}{\widetilde} \newcommand{\inv}[1]{ {#1}^{-1} } \newcommand{\eqdef}{\overset{\text{def}}=} \newcommand{\block}[1]{\left(#1\right)} \newcommand{\set}[1]{\left\{#1\right\}} \newcommand{\abs}[1]{\left|#1\right|} \newcommand{\trace}[1]{\mathrm{tr}\block{#1}} \newcommand{\norm}[1]{ \left\| #1 \right\| } \newcommand{\argmin}[1]{ \underset{#1}{\mathrm{argmin}} } \newcommand{\argmax}[1]{ \underset{#1}{\mathrm{argmax}} } \newcommand{\st}{\ \mathrm{s.t.}\ } \newcommand{\sign}[1]{\mathrm{sign}\block{#1}} \newcommand{\half}{\frac{1}{2}} \newcommand{\inner}[1]{\langle #1 \rangle} \newcommand{\dd}{\mathrm{d}} \newcommand{\ddd}[2]{\frac{\partial #1}{\partial #2} } \newcommand{\db}{\dd^b} \newcommand{\ds}{\dd^s} \newcommand{\dL}{\dd_L} \newcommand{\dR}{\dd_R} \newcommand{\Ad}{\mathrm{Ad}} \newcommand{\ad}{\mathrm{ad}} \newcommand{\LL}{\mathcal{L}} \newcommand{\Krylov}{\mathcal{K}} \newcommand{\Span}[1]{\mathrm{Span}\block{#1}} \newcommand{\diag}{\mathrm{diag}} \newcommand{\tr}{\mathrm{tr}} \newcommand{\sinc}{\mathrm{sinc}} \newcommand{\cat}[1]{\mathcal{#1}} \newcommand{\Ob}[1]{\mathrm{Ob}\block{\cat{#1}}} \newcommand{\Hom}[1]{\mathrm{Hom}\block{\cat{#1}}} \newcommand{\op}[1]{\cat{#1}^{op}} \newcommand{\hom}[2]{\cat{#1}\block{#2}} \newcommand{\id}{\mathrm{id}} \newcommand{\Set}{\mathbb{Set}} \newcommand{\Cat}{\mathbb{Cat}} \newcommand{\Hask}{\mathbb{Hask}} \newcommand{\lim}{\mathrm{lim}\ } \newcommand{\funcat}[1]{\left[\cat{#1}\right]} \newcommand{\natsq}[6]{ \begin{matrix} & #2\block{#4} & \overset{#2\block{#6}}\longrightarrow & #2\block{#5} & \\ {#1}_{#4} \hspace{-1.5em} &\downarrow & & \downarrow & \hspace{-1.5em} {#1}_{#5}\\ & #3\block{#4} & \underset{#3\block{#6}}\longrightarrow & #3\block{#5} & \\ \end{matrix} } \newcommand{\comtri}[6]{ \begin{matrix} #1 & \overset{#4}\longrightarrow & #2 & \\ #6 \hspace{-1em} & \searrow & \downarrow & \hspace{-1em} #5 \\ & & #3 & \end{matrix} } \newcommand{\natism}[6]{ \begin{matrix} & #2\block{#4} & \overset{#2\block{#6}}\longrightarrow & #2\block{#5} & \\ {#1}_{#4} \hspace{-1.5em} &\downarrow \uparrow & & \downarrow \uparrow & \hspace{-1.5em} {#1}_{#5}\\ & #3\block{#4} & \underset{#3\block{#6}}\longrightarrow & #3\block{#5} & \\ \end{matrix} } \newcommand{\cone}[1]{\mathcal{#1}} $$

Continuum Mechanics

Deformation Gradient

Let us consider a geometric object represented as a domain \(\Omega \subset \RR^3\). As the object evolves over time, we describe the trajectory of its points as a function \(p(x, t)\) of the material coordinates and time, starting at \(p(x, 0) = x\).

If the deformation is smooth (meaning we don’t tear or pinch the object), one can obtain at any given time \(t \geq 0\) some information about the deformation around each point \(x \in \Omega\) by studying the deformation gradient tensor, generally denoted by \(F\):

\[F(x, t) = \ddd{p}{x}(x, t)\]

For example, in the initial configuration the deformation gradient is everywhere the identity:

\[F(x, t) = I\]

which tells us that that the initial configuration is everywhere undeformed. Likewise, an object not moving \(p(x, t) = x\) has a deformation gradient everywhere the identity. If we now apply a linear transformation to the whole object as a function of time, as:

\[p(x, t) = A(t) x\]

(for instance, by scaling it \(A(t) = tI\)) we obtain the following deformation gradient:

\[F(x, t) = A(t)\]

On the contrary, if the deformation depends on \(x\), the deformation gradient tells us how the deformation looks like locally around \(x\) as a linear map.

Displacement Field

The displacement field \(u(x, t)\) is simply defined as the difference between current and initial positions for a given object point \(x\):

\[\begin{align} u(x, t) &= p(x, t) - p(x, 0) \\ &= p(x, t) - x\\ \end{align}\]

It is easy to see that the deformation gradient can be obtained from the displacement gradient as:

\[\ddd{u}{x}(x, t) = F - I\]

so that the deformation gradient is obtained as:

\[F(x, t) = \ddd{u}{x}(x, t) + I\]

Shape Functions

For numerical simulations, the displacement/deformation field is generally discretized using a finite number of primitive degrees of freefom (DOFs) \(q_j\) and the deformation at an arbitrary material coordinate \(x\) is obtained by interpolating the deformation at the \(q_j\). For instance, \(q_j\) can simply be composed of selected points in the solid, and a material point \(p(x)\) is given weights \(w_j(x)\) with respect to each of the \(q_j\), so that the deformed point is given by:

\[p(x) = \sum_j w_j(x) q_j\]

Generally, \(q_j\) are the nodes of a tetrahedral/hexahedral grid and \(w(x)\) are the associated barycentric coordinates. More advanced interpolation schemes are possible, for instance using rigid frames for \(q_j\) and dual quaternion skinning for interpolating the displacement field.

In the case of a linear combination as above, the deformation gradient at material coordinates \(x\) can be simply obtained by:

\[F(x, t) = \ddd{p}{x}(x, t) = \sum_j q_j(t) \ddd{w_j}{x}(x)\]

The functions \(w_j: \RR^3 \to \RR\) are called shape functions.

Strain Tensor

The deformation tensor gives a nice local representation of an arbitrary (smooth) object deformation. Now, if we want to simulate elastic materials, we will need to associate a potential energy to a deformed object. Since we have a local measure of deformation \(F\), we can obtain a deformation energy by summing infinitesimal energies associated with the deformation gradient \(F(x, t)\) at each point of the object:

\[V(t) = \int_\Omega W(F(x, t)).\dd x\]

\(W\) is called a potential energy density, and associates an infinitesimal energy to a deformation tensor \(F\). Now, for our energy to be well-behaved we will need \(W\) to satisfy the following:

Rather than defining the energy density directly on \(F\), one generally computes a so-called deformation tensor meeting the above requirements. Then, a stain tensor is obtained which quantifies how much the deformation tensor deviates from the identity. Finally, an energy density is associated to the strain tensor.

Principal Stretches

Use the polar decomposition of \(F=QR\), where \(Q\in SO(3)\) and \(R \in \SS^+\) is positive definite (assuming no orientation ever occurs), and use the pure deformation part:

\[C = R\]

\(R\) can be diagonalized as \(R=USU^T\), and the eigenvalues are known as the principal stretches. These eigenvalues depend solely on the coefficients of the characteristic polynomial of \(R\), which are known as its principal invariants. Therefore, one can formulate rotationnally invariant energy densities either as a function of the eigenvalues directly, or as a function of the principal invariants. The latter generally have a more physical interpretation.

Cauchy-Green Deformation Tensor (Right)

\[C = F^T F = R^T R\]

Green-Lagrange Strain Tensor

\[E = \half(C - I)\]

Cauchy Strain Tensor

For small displacements only (not rotationally invariant):

\[\epsilon = \half\block{F^T + F} - I\]

Energy Densities

Neo-Hookean Materials

\[W = k.\tr\block{F^T F - I}\]

Energy Integration

TODO gauss points etc

Quadrature Rules

Given a discretized deformation field with DOFs \(q_j\), shape functions \(w_j\) and an energy density function \(W\), there may exist efficient ways of integrating the deformation energy \(V\). Such integration schemes are called quadrature rules and generally involve the evaluation of the deformation gradients at a finite number of points, called integration points.