xref: /libCEED/examples/solids/index.md (revision 68e843ee0303723bf2ec95aa2ac2af8f169174e7)
1bcb2dfaeSJed Brown(example-petsc-elasticity)=
2bcb2dfaeSJed Brown
3bcb2dfaeSJed Brown# Solid mechanics mini-app
4bcb2dfaeSJed Brown
5bcb2dfaeSJed BrownThis example is located in the subdirectory {file}`examples/solids`.
6bcb2dfaeSJed BrownIt solves the steady-state static momentum balance equations using unstructured high-order finite/spectral element spatial discretizations.
7bcb2dfaeSJed BrownAs for the {ref}`example-petsc-navier-stokes` case, the solid mechanics elasticity example has been developed using PETSc, so that the pointwise physics (defined at quadrature points) is separated from the parallelization and meshing concerns.
8bcb2dfaeSJed Brown
9bcb2dfaeSJed BrownIn this mini-app, we consider three formulations used in solid mechanics applications: linear elasticity, Neo-Hookean hyperelasticity at small strain, and Neo-Hookean hyperelasticity at finite strain.
10bcb2dfaeSJed BrownWe provide the strong and weak forms of static balance of linear momentum in the small strain and finite strain regimes.
11bcb2dfaeSJed BrownThe stress-strain relationship (constitutive law) for each of the material models is provided.
12bcb2dfaeSJed BrownDue to the nonlinearity of material models in Neo-Hookean hyperelasticity, the Newton linearization of the material models is provided.
13bcb2dfaeSJed Brown
14bcb2dfaeSJed Brown:::{note}
15bcb2dfaeSJed BrownLinear elasticity and small-strain hyperelasticity can both by obtained from the finite-strain hyperelastic formulation by linearization of geometric and constitutive nonlinearities.
16bcb2dfaeSJed BrownThe effect of these linearizations is sketched in the diagram below, where $\bm \sigma$ and $\bm \epsilon$ are stress and strain, respectively, in the small strain regime, while $\bm S$ and $\bm E$ are their finite-strain generalizations (second Piola-Kirchoff tensor and Green-Lagrange strain tensor, respectively) defined in the initial configuration, and $\mathsf C$ is a linearized constitutive model.
17bcb2dfaeSJed Brown
18bcb2dfaeSJed Brown$$
19bcb2dfaeSJed Brown\begin{CD}
20bcb2dfaeSJed Brown  {\overbrace{\bm S(\bm E)}^{\text{Finite Strain Hyperelastic}}}
21bcb2dfaeSJed Brown  @>{\text{constitutive}}>{\text{linearization}}>
22bcb2dfaeSJed Brown  {\overbrace{\bm S = \mathsf C \bm E}^{\text{St. Venant-Kirchoff}}} \\
23bcb2dfaeSJed Brown  @V{\text{geometric}}V{\begin{smallmatrix}\bm E \to \bm \epsilon \\ \bm S \to \bm \sigma \end{smallmatrix}}V
24bcb2dfaeSJed Brown  @V{\begin{smallmatrix}\bm E \to \bm \epsilon \\ \bm S \to \bm \sigma \end{smallmatrix}}V{\text{geometric}}V \\
25bcb2dfaeSJed Brown  {\underbrace{\bm \sigma(\bm \epsilon)}_\text{Small Strain Hyperelastic}}
26bcb2dfaeSJed Brown  @>{\text{constitutive}}>\text{linearization}>
27bcb2dfaeSJed Brown  {\underbrace{\bm \sigma = \mathsf C \bm \epsilon}_\text{Linear Elastic}}
28bcb2dfaeSJed Brown\end{CD}
29bcb2dfaeSJed Brown$$ (hyperelastic-cd)
30bcb2dfaeSJed Brown:::
31bcb2dfaeSJed Brown
32bcb2dfaeSJed Brown(running-elasticity)=
33bcb2dfaeSJed Brown
34bcb2dfaeSJed Brown## Running the mini-app
35bcb2dfaeSJed Brown
36bcb2dfaeSJed Brown```{include} README.md
37bcb2dfaeSJed Brown:start-after: inclusion-solids-marker
38bcb2dfaeSJed Brown```
39bcb2dfaeSJed Brown
40bcb2dfaeSJed Brown(problem-linear-elasticity)=
41bcb2dfaeSJed Brown
42bcb2dfaeSJed Brown## Linear Elasticity
43bcb2dfaeSJed Brown
44bcb2dfaeSJed BrownThe strong form of the static balance of linear momentum at small strain for the three-dimensional linear elasticity problem is given by {cite}`hughes2012finite`:
45bcb2dfaeSJed Brown
46bcb2dfaeSJed Brown$$
47bcb2dfaeSJed Brown\nabla \cdot \bm{\sigma} + \bm{g} = \bm{0}
48bcb2dfaeSJed Brown$$ (lin-elas)
49bcb2dfaeSJed Brown
50bcb2dfaeSJed Brownwhere $\bm{\sigma}$ and $\bm{g}$ are stress and forcing functions, respectively.
51bcb2dfaeSJed BrownWe multiply {math:numref}`lin-elas` by a test function $\bm v$ and integrate the divergence term by parts to arrive at the weak form: find $\bm u \in \mathcal V \subset H^1(\Omega)$ such that
52bcb2dfaeSJed Brown
53bcb2dfaeSJed Brown$$
54bcb2dfaeSJed Brown\int_{\Omega}{ \nabla \bm{v} \tcolon \bm{\sigma}} \, dV
55bcb2dfaeSJed Brown- \int_{\partial \Omega}{\bm{v} \cdot \left(\bm{\sigma} \cdot \hat{\bm{n}}\right)} \, dS
56bcb2dfaeSJed Brown- \int_{\Omega}{\bm{v} \cdot \bm{g}} \, dV
57bcb2dfaeSJed Brown= 0, \quad \forall \bm v \in \mathcal V,
58bcb2dfaeSJed Brown$$ (lin-elas-weak)
59bcb2dfaeSJed Brown
60bcb2dfaeSJed Brownwhere $\bm{\sigma} \cdot \hat{\bm{n}}|_{\partial \Omega}$ is replaced by an applied force/traction boundary condition written in terms of the initial configuration.
61bcb2dfaeSJed BrownWhen inhomogeneous Dirichlet boundary conditions are present, $\mathcal V$ is an affine space that satisfies those boundary conditions.
62bcb2dfaeSJed Brown
63bcb2dfaeSJed Brown### Constitutive modeling
64bcb2dfaeSJed Brown
65bcb2dfaeSJed BrownIn their most general form, constitutive models define $\bm \sigma$ in terms of state variables.
66bcb2dfaeSJed BrownIn the model taken into consideration in the present mini-app, the state variables are constituted by the vector displacement field $\bm u$, and its gradient $\nabla \bm u$.
67bcb2dfaeSJed BrownWe begin by defining the symmetric (small/infintesimal) strain tensor as
68bcb2dfaeSJed Brown
69bcb2dfaeSJed Brown$$
70bcb2dfaeSJed Brown\bm{\epsilon} = \dfrac{1}{2}\left(\nabla \bm{u} + \nabla \bm{u}^T \right).
71bcb2dfaeSJed Brown$$ (small-strain)
72bcb2dfaeSJed Brown
73bcb2dfaeSJed BrownThis constitutive model $\bm \sigma(\bm \epsilon)$ is a linear tensor-valued function of a tensor-valued input, but we will consider the more general nonlinear case in other models below.
74bcb2dfaeSJed BrownIn these cases, an arbitrary choice of such a function will generally not be invariant under orthogonal transformations and thus will not admissible as a physical model must not depend on the coordinate system chosen to express it.
75bcb2dfaeSJed BrownIn particular, given an orthogonal transformation $Q$, we desire
76bcb2dfaeSJed Brown
77bcb2dfaeSJed Brown$$
78bcb2dfaeSJed BrownQ \bm \sigma(\bm \epsilon) Q^T = \bm \sigma(Q \bm \epsilon Q^T),
79bcb2dfaeSJed Brown$$ (elastic-invariance)
80bcb2dfaeSJed Brown
81bcb2dfaeSJed Brownwhich means that we can change our reference frame before or after computing $\bm \sigma$, and get the same result either way.
82bcb2dfaeSJed BrownConstitutive relations in which $\bm \sigma$ is uniquely determined by $\bm \epsilon$ while satisfying the invariance property {math:numref}`elastic-invariance` are known as Cauchy elastic materials.
83bcb2dfaeSJed BrownHere, we define a strain energy density functional $\Phi(\bm \epsilon) \in \mathbb R$ and obtain the strain energy from its gradient,
84bcb2dfaeSJed Brown
85bcb2dfaeSJed Brown$$
86bcb2dfaeSJed Brown\bm \sigma(\bm \epsilon) = \frac{\partial \Phi}{\partial \bm \epsilon}.
87bcb2dfaeSJed Brown$$ (strain-energy-grad)
88bcb2dfaeSJed Brown
89bcb2dfaeSJed Brown:::{note}
90bcb2dfaeSJed BrownThe strain energy density functional cannot be an arbitrary function $\Phi(\bm \epsilon)$; it can only depend on *invariants*, scalar-valued functions $\gamma$ satisfying
91bcb2dfaeSJed Brown
92bcb2dfaeSJed Brown$$
93bcb2dfaeSJed Brown\gamma(\bm \epsilon) = \gamma(Q \bm \epsilon Q^T)
94bcb2dfaeSJed Brown$$
95bcb2dfaeSJed Brown
96bcb2dfaeSJed Brownfor all orthogonal matrices $Q$.
97bcb2dfaeSJed Brown:::
98bcb2dfaeSJed Brown
99bcb2dfaeSJed BrownFor the linear elasticity model, the strain energy density is given by
100bcb2dfaeSJed Brown
101bcb2dfaeSJed Brown$$
102bcb2dfaeSJed Brown\bm{\Phi} = \frac{\lambda}{2} (\operatorname{trace} \bm{\epsilon})^2 + \mu \bm{\epsilon} : \bm{\epsilon} .
103bcb2dfaeSJed Brown$$
104bcb2dfaeSJed Brown
105bcb2dfaeSJed BrownThe constitutive law (stress-strain relationship) is therefore given by its gradient,
106bcb2dfaeSJed Brown
107bcb2dfaeSJed Brown$$
108bcb2dfaeSJed Brown\bm\sigma = \lambda (\operatorname{trace} \bm\epsilon) \bm I_3 + 2 \mu \bm\epsilon,
109bcb2dfaeSJed Brown$$
110bcb2dfaeSJed Brown
111bcb2dfaeSJed Brownwhere $\bm I_3$ is the $3 \times 3$ identity matrix, the colon represents a double contraction (over both indices of $\bm \epsilon$), and the Lamé parameters are given by
112bcb2dfaeSJed Brown
113bcb2dfaeSJed Brown$$
114bcb2dfaeSJed Brown\begin{aligned} \lambda &= \frac{E \nu}{(1 + \nu)(1 - 2 \nu)} \\ \mu &= \frac{E}{2(1 + \nu)} \end{aligned}.
115bcb2dfaeSJed Brown$$
116bcb2dfaeSJed Brown
117bcb2dfaeSJed BrownThe constitutive law (stress-strain relationship) can also be written as
118bcb2dfaeSJed Brown
119bcb2dfaeSJed Brown$$
120bcb2dfaeSJed Brown\bm{\sigma} = \mathsf{C} \!:\! \bm{\epsilon}.
121bcb2dfaeSJed Brown$$ (linear-stress-strain)
122bcb2dfaeSJed Brown
123bcb2dfaeSJed BrownFor notational convenience, we express the symmetric second order tensors $\bm \sigma$ and $\bm \epsilon$ as vectors of length 6 using the [Voigt notation](https://en.wikipedia.org/wiki/Voigt_notation).
124bcb2dfaeSJed BrownHence, the fourth order elasticity tensor $\mathsf C$ (also known as elastic moduli tensor or material stiffness tensor) can be represented as
125bcb2dfaeSJed Brown
126bcb2dfaeSJed Brown$$
127bcb2dfaeSJed Brown\mathsf C = \begin{pmatrix}
128bcb2dfaeSJed Brown\lambda + 2\mu & \lambda & \lambda & & & \\
129bcb2dfaeSJed Brown\lambda & \lambda + 2\mu & \lambda & & & \\
130bcb2dfaeSJed Brown\lambda & \lambda & \lambda + 2\mu & & & \\
131bcb2dfaeSJed Brown& & & \mu & & \\
132bcb2dfaeSJed Brown& & & & \mu & \\
133bcb2dfaeSJed Brown& & & & & \mu
134bcb2dfaeSJed Brown\end{pmatrix}.
135bcb2dfaeSJed Brown$$ (linear-elasticity-tensor)
136bcb2dfaeSJed Brown
137bcb2dfaeSJed BrownNote that the incompressible limit $\nu \to \frac 1 2$ causes $\lambda \to \infty$, and thus $\mathsf C$ becomes singular.
138bcb2dfaeSJed Brown
139bcb2dfaeSJed Brown(problem-hyper-small-strain)=
140bcb2dfaeSJed Brown
141bcb2dfaeSJed Brown## Hyperelasticity at Small Strain
142bcb2dfaeSJed Brown
143bcb2dfaeSJed BrownThe strong and weak forms given above, in {math:numref}`lin-elas` and {math:numref}`lin-elas-weak`, are valid for Neo-Hookean hyperelasticity at small strain.
144bcb2dfaeSJed BrownHowever, the strain energy density differs and is given by
145bcb2dfaeSJed Brown
146bcb2dfaeSJed Brown$$
147bcb2dfaeSJed Brown\bm{\Phi} = \lambda (1 + \operatorname{trace} \bm{\epsilon}) (\log(1 + \operatorname{trace} \bm\epsilon) - 1) + \mu \bm{\epsilon} : \bm{\epsilon} .
148bcb2dfaeSJed Brown$$
149bcb2dfaeSJed Brown
150bcb2dfaeSJed BrownAs above, we have the corresponding constitutive law given by
151bcb2dfaeSJed Brown
152bcb2dfaeSJed Brown$$
153bcb2dfaeSJed Brown\bm{\sigma} = \lambda \log(1 + \operatorname{trace} \bm\epsilon) \bm{I}_3 + 2\mu \bm{\epsilon}
154bcb2dfaeSJed Brown$$ (eq-neo-hookean-small-strain)
155bcb2dfaeSJed Brown
156bcb2dfaeSJed Brownwhere $\bm{\epsilon}$ is defined as in {math:numref}`small-strain`.
157bcb2dfaeSJed Brown
158bcb2dfaeSJed Brown### Newton linearization
159bcb2dfaeSJed Brown
160bcb2dfaeSJed BrownDue to nonlinearity in the constitutive law, we require a Newton linearization of {math:numref}`eq-neo-hookean-small-strain`.
161bcb2dfaeSJed BrownTo derive the Newton linearization, we begin by expressing the derivative,
162bcb2dfaeSJed Brown
163bcb2dfaeSJed Brown$$
164bcb2dfaeSJed Brown\diff \bm{\sigma} = \dfrac{\partial \bm{\sigma}}{\partial \bm{\epsilon}} \tcolon \diff \bm{\epsilon}
165bcb2dfaeSJed Brown$$
166bcb2dfaeSJed Brown
167bcb2dfaeSJed Brownwhere
168bcb2dfaeSJed Brown
169bcb2dfaeSJed Brown$$
170bcb2dfaeSJed Brown\diff \bm{\epsilon} = \dfrac{1}{2}\left( \nabla \diff \bm{u} + \nabla \diff \bm{u}^T \right)
171bcb2dfaeSJed Brown$$
172bcb2dfaeSJed Brown
173bcb2dfaeSJed Brownand
174bcb2dfaeSJed Brown
175bcb2dfaeSJed Brown$$
176bcb2dfaeSJed Brown\diff \nabla \bm{u} = \nabla \diff \bm{u} .
177bcb2dfaeSJed Brown$$
178bcb2dfaeSJed Brown
179bcb2dfaeSJed BrownTherefore,
180bcb2dfaeSJed Brown
181bcb2dfaeSJed Brown$$
182bcb2dfaeSJed Brown\diff \bm{\sigma}  = \bar{\lambda} \cdot \operatorname{trace} \diff \bm{\epsilon} \cdot \bm{I}_3 + 2\mu \diff \bm{\epsilon}
183bcb2dfaeSJed Brown$$ (derss)
184bcb2dfaeSJed Brown
185bcb2dfaeSJed Brownwhere we have introduced the symbol
186bcb2dfaeSJed Brown
187bcb2dfaeSJed Brown$$
188bcb2dfaeSJed Brown\bar{\lambda} = \dfrac{\lambda}{1 + \epsilon_v }
189bcb2dfaeSJed Brown$$
190bcb2dfaeSJed Brown
191bcb2dfaeSJed Brownwhere volumetric strain is given by $\epsilon_v = \sum_i \epsilon_{ii}$.
192bcb2dfaeSJed Brown
193bcb2dfaeSJed BrownEquation {math:numref}`derss` can be written in Voigt matrix notation as follows:
194bcb2dfaeSJed Brown
195bcb2dfaeSJed Brown$$
196bcb2dfaeSJed Brown\begin{pmatrix}
197bcb2dfaeSJed Brown  \diff \sigma_{11} \\
198bcb2dfaeSJed Brown  \diff \sigma_{22} \\
199bcb2dfaeSJed Brown  \diff \sigma_{33} \\
200bcb2dfaeSJed Brown  \diff \sigma_{23} \\
201bcb2dfaeSJed Brown  \diff \sigma_{13} \\
202bcb2dfaeSJed Brown  \diff \sigma_{12}
203bcb2dfaeSJed Brown\end{pmatrix}  =
204bcb2dfaeSJed Brown\begin{pmatrix}
205bcb2dfaeSJed Brown  2 \mu +\bar{\lambda} & \bar{\lambda} & \bar{\lambda} & & & \\
206bcb2dfaeSJed Brown  \bar{\lambda} & 2 \mu +\bar{\lambda} & \bar{\lambda} & & & \\
207bcb2dfaeSJed Brown  \bar{\lambda} & \bar{\lambda} & 2 \mu +\bar{\lambda} & & & \\
208bcb2dfaeSJed Brown  & & & \mu & & \\
209bcb2dfaeSJed Brown  & & & & \mu & \\
210bcb2dfaeSJed Brown  & & & & & \mu \\
211bcb2dfaeSJed Brown\end{pmatrix}
212bcb2dfaeSJed Brown\begin{pmatrix}
213bcb2dfaeSJed Brown  \diff \epsilon_{11} \\
214bcb2dfaeSJed Brown  \diff \epsilon_{22} \\
215bcb2dfaeSJed Brown  \diff \epsilon_{33} \\
216bcb2dfaeSJed Brown  2 \diff \epsilon_{23} \\
217bcb2dfaeSJed Brown  2 \diff \epsilon_{13} \\
218bcb2dfaeSJed Brown  2 \diff \epsilon_{12}
219bcb2dfaeSJed Brown\end{pmatrix}.
220bcb2dfaeSJed Brown$$ (mdss)
221bcb2dfaeSJed Brown
222bcb2dfaeSJed Brown(problem-hyperelasticity-finite-strain)=
223bcb2dfaeSJed Brown
224bcb2dfaeSJed Brown## Hyperelasticity at Finite Strain
225bcb2dfaeSJed Brown
226bcb2dfaeSJed BrownIn the *total Lagrangian* approach for the Neo-Hookean hyperelasticity problem, the discrete equations are formulated with respect to the initial configuration.
227bcb2dfaeSJed BrownIn this formulation, we solve for displacement $\bm u(\bm X)$ in the reference frame $\bm X$.
228bcb2dfaeSJed BrownThe notation for elasticity at finite strain is inspired by {cite}`holzapfel2000nonlinear` to distinguish between the current and initial configurations.
229bcb2dfaeSJed BrownAs explained in the {ref}`common-notation` section, we denote by capital letters the reference frame and by small letters the current one.
230bcb2dfaeSJed Brown
231bcb2dfaeSJed BrownThe strong form of the static balance of linear-momentum at *finite strain* (total Lagrangian) is given by:
232bcb2dfaeSJed Brown
233bcb2dfaeSJed Brown$$
234bcb2dfaeSJed Brown- \nabla_X \cdot \bm{P} - \rho_0 \bm{g} = \bm{0}
235bcb2dfaeSJed Brown$$ (sblFinS)
236bcb2dfaeSJed Brown
237bcb2dfaeSJed Brownwhere the $_X$ in $\nabla_X$ indicates that the gradient is calculated with respect to the initial configuration in the finite strain regime.
238bcb2dfaeSJed Brown$\bm{P}$ and $\bm{g}$ are the *first Piola-Kirchhoff stress* tensor and the prescribed forcing function, respectively.
239bcb2dfaeSJed Brown$\rho_0$ is known as the *initial* mass density.
240bcb2dfaeSJed BrownThe tensor $\bm P$ is not symmetric, living in the current configuration on the left and the initial configuration on the right.
241bcb2dfaeSJed Brown
242bcb2dfaeSJed Brown$\bm{P}$ can be decomposed as
243bcb2dfaeSJed Brown
244bcb2dfaeSJed Brown$$
245bcb2dfaeSJed Brown\bm{P} = \bm{F} \, \bm{S},
246bcb2dfaeSJed Brown$$ (1st2nd)
247bcb2dfaeSJed Brown
248bcb2dfaeSJed Brownwhere $\bm S$ is the *second Piola-Kirchhoff stress* tensor, a symmetric tensor defined entirely in the initial configuration, and $\bm{F} = \bm I_3 + \nabla_X \bm u$ is the deformation gradient.
249bcb2dfaeSJed BrownDifferent constitutive models can define $\bm S$.
250bcb2dfaeSJed Brown
251bcb2dfaeSJed Brown### Constitutive modeling
252bcb2dfaeSJed Brown
253bcb2dfaeSJed BrownFor the constitutive modeling of hyperelasticity at finite strain, we begin by defining two symmetric tensors in the initial configuration, the right Cauchy-Green tensor
254bcb2dfaeSJed Brown
255bcb2dfaeSJed Brown$$
256bcb2dfaeSJed Brown\bm C = \bm F^T \bm F
257bcb2dfaeSJed Brown$$
258bcb2dfaeSJed Brown
259bcb2dfaeSJed Brownand the Green-Lagrange strain tensor
260bcb2dfaeSJed Brown
261bcb2dfaeSJed Brown$$
262bcb2dfaeSJed Brown\bm E = \frac 1 2 (\bm C - \bm I_3) = \frac 1 2 \Big( \nabla_X \bm u + (\nabla_X \bm u)^T + (\nabla_X \bm u)^T \nabla_X \bm u \Big),
263bcb2dfaeSJed Brown$$ (eq-green-lagrange-strain)
264bcb2dfaeSJed Brown
265bcb2dfaeSJed Brownthe latter of which converges to the linear strain tensor $\bm \epsilon$ in the small-deformation limit.
266bcb2dfaeSJed BrownThe constitutive models considered, appropriate for large deformations, express $\bm S$ as a function of $\bm E$, similar to the linear case, shown in equation  {math:numref}`linear-stress-strain`, which  expresses the relationship between $\bm\sigma$ and $\bm\epsilon$.
267bcb2dfaeSJed Brown
268bcb2dfaeSJed BrownRecall that the strain energy density functional can only depend upon invariants.
269bcb2dfaeSJed BrownWe will assume without loss of generality that $\bm E$ is diagonal and take its set of eigenvalues as the invariants.
270bcb2dfaeSJed BrownIt is clear that there can be only three invariants, and there are many alternate choices, such as $\operatorname{trace}(\bm E), \operatorname{trace}(\bm E^2), \lvert \bm E \rvert$, and combinations thereof.
271bcb2dfaeSJed BrownIt is common in the literature for invariants to be taken from $\bm C = \bm I_3 + 2 \bm E$ instead of $\bm E$.
272bcb2dfaeSJed Brown
273bcb2dfaeSJed BrownFor example, if we take the compressible Neo-Hookean model,
274bcb2dfaeSJed Brown
275bcb2dfaeSJed Brown$$
276bcb2dfaeSJed Brown\begin{aligned}
277bcb2dfaeSJed Brown\Phi(\bm E) &= \frac{\lambda}{2}(\log J)^2 - \mu \log J + \frac \mu 2 (\operatorname{trace} \bm C - 3) \\
278bcb2dfaeSJed Brown  &= \frac{\lambda}{2}(\log J)^2 - \mu \log J + \mu \operatorname{trace} \bm E,
279bcb2dfaeSJed Brown\end{aligned}
280bcb2dfaeSJed Brown$$ (neo-hookean-energy)
281bcb2dfaeSJed Brown
282bcb2dfaeSJed Brownwhere $J = \lvert \bm F \rvert = \sqrt{\lvert \bm C \rvert}$ is the determinant of deformation (i.e., volume change) and $\lambda$ and $\mu$ are the Lamé parameters in the infinitesimal strain limit.
283bcb2dfaeSJed Brown
284bcb2dfaeSJed BrownTo evaluate {math:numref}`strain-energy-grad`, we make use of
285bcb2dfaeSJed Brown
286bcb2dfaeSJed Brown$$
287bcb2dfaeSJed Brown\frac{\partial J}{\partial \bm E} = \frac{\partial \sqrt{\lvert \bm C \rvert}}{\partial \bm E} = \lvert \bm C \rvert^{-1/2} \lvert \bm C \rvert \bm C^{-1} = J \bm C^{-1},
288bcb2dfaeSJed Brown$$
289bcb2dfaeSJed Brown
290bcb2dfaeSJed Brownwhere the factor of $\frac 1 2$ has been absorbed due to $\bm C = \bm I_3 + 2 \bm E.$
291bcb2dfaeSJed BrownCarrying through the differentiation {math:numref}`strain-energy-grad` for the model {math:numref}`neo-hookean-energy`, we arrive at
292bcb2dfaeSJed Brown
293bcb2dfaeSJed Brown$$
294bcb2dfaeSJed Brown\bm S = \lambda \log J \bm C^{-1} + \mu (\bm I_3 - \bm C^{-1}).
295bcb2dfaeSJed Brown$$ (neo-hookean-stress)
296bcb2dfaeSJed Brown
297bcb2dfaeSJed Brown:::{tip}
298bcb2dfaeSJed BrownAn equivalent form of {math:numref}`neo-hookean-stress` is
299bcb2dfaeSJed Brown
300bcb2dfaeSJed Brown$$
301bcb2dfaeSJed Brown\bm S = \lambda \log J \bm C^{-1} + 2 \mu \bm C^{-1} \bm E,
302bcb2dfaeSJed Brown$$ (neo-hookean-stress-stable)
303bcb2dfaeSJed Brown
304bcb2dfaeSJed Brownwhich is more numerically stable for small $\bm E$, and thus preferred for computation.
305bcb2dfaeSJed BrownNote that the product $\bm C^{-1} \bm E$ is also symmetric, and that $\bm E$ should be computed using {math:numref}`eq-green-lagrange-strain`.
306bcb2dfaeSJed Brown
307bcb2dfaeSJed BrownSimilarly, it is preferable to compute $\log J$ using `log1p`, especially in case of nearly incompressible materials.
308bcb2dfaeSJed BrownTo sketch this idea, suppose we have the $2\times 2$ non-symmetric matrix $\bm{F} = \left( \begin{smallmatrix} 1 + u_{0,0} & u_{0,1} \\ u_{1,0} & 1 + u_{1,1} \end{smallmatrix} \right)$.
309bcb2dfaeSJed BrownThen we compute
310bcb2dfaeSJed Brown
311bcb2dfaeSJed Brown$$
312bcb2dfaeSJed Brown\log J = \mathtt{log1p}(u_{0,0} + u_{1,1} + u_{0,0} u_{1,1} - u_{0,1} u_{1,0}),
313bcb2dfaeSJed Brown$$ (log1p)
314bcb2dfaeSJed Brown
315bcb2dfaeSJed Brownwhich gives accurate results even in the limit when the entries $u_{i,j}$ are very small.
316bcb2dfaeSJed BrownFor example, if $u_{i,j} \sim 10^{-8}$, then naive computation of $\bm I_3 - \bm C^{-1}$ and $\log J$ will have a relative accuracy of order $10^{-8}$ in double precision and no correct digits in single precision.
317bcb2dfaeSJed BrownWhen using the stable choices above, these quantities retain full $\varepsilon_{\text{machine}}$ relative accuracy.
318bcb2dfaeSJed Brown:::
319bcb2dfaeSJed Brown
320bcb2dfaeSJed Brown:::{dropdown} Mooney-Rivlin model
321bcb2dfaeSJed BrownWhile the Neo-Hookean model depends on just two scalar invariants, $\mathbb I_1 = \trace \bm C = 3 + 2\trace \bm E$ and $J$, Mooney-Rivlin models depend on the additional invariant, $\mathbb I_2 = \frac 1 2 (\mathbb I_1^2 - \bm C \tcolon \bm C)$.
322bcb2dfaeSJed BrownA coupled Mooney-Rivlin strain energy density (cf. Neo-Hookean {math:numref}`neo-hookean-energy`) is {cite}`holzapfel2000nonlinear`
323bcb2dfaeSJed Brown
324bcb2dfaeSJed Brown$$
325bcb2dfaeSJed Brown\Phi(\mathbb{I_1}, \mathbb{I_2}, J) = \frac{\lambda}{2}(\log J)^2 - (\mu_1 + 2\mu_2) \log J + \frac{\mu_1}{2}(\mathbb{I_1} - 3) + \frac{\mu_2}{2}(\mathbb{I_2} - 3).
326bcb2dfaeSJed Brown$$ (mooney-rivlin-energy_coupled)
327bcb2dfaeSJed Brown
328bcb2dfaeSJed BrownWe differentiate $\Phi$ as in the Neo-Hookean case {math:numref}`neo-hookean-stress` to yield the second Piola-Kirchoff tensor,
329bcb2dfaeSJed Brown
330bcb2dfaeSJed Brown$$
331bcb2dfaeSJed Brown\begin{aligned}
332bcb2dfaeSJed Brown\bm S &=  \lambda \log J \bm{C}^{-1} - (\mu_1 + 2\mu_2) \bm{C}^{-1} + \mu_1\bm I_3 + \mu_2(\mathbb{I_1} \bm I_3 - \bm C) \\
333bcb2dfaeSJed Brown&= (\lambda \log J - \mu_1 - 2\mu_2) \bm C^{-1} + (\mu_1 + \mu_2 \mathbb I_1) \bm I_3 - \mu_2 \bm C,
334bcb2dfaeSJed Brown\end{aligned}
335bcb2dfaeSJed Brown$$ (mooney-rivlin-stress_coupled)
336bcb2dfaeSJed Brown
337bcb2dfaeSJed Brownwhere we have used
338bcb2dfaeSJed Brown
339bcb2dfaeSJed Brown$$
340bcb2dfaeSJed Brown\begin{aligned}
341bcb2dfaeSJed Brown\frac{\partial \mathbb{I_1}}{\partial \bm E} &= 2 \bm I_3, & \frac{\partial \mathbb{I_2}}{\partial \bm E} &= 2 \mathbb I_1 \bm I_3 - 2 \bm C, & \frac{\partial \log J}{\partial \bm E} &= \bm{C}^{-1}.
342bcb2dfaeSJed Brown\end{aligned}
343bcb2dfaeSJed Brown$$ (None)
344bcb2dfaeSJed Brown
345bcb2dfaeSJed BrownThis is a common model for vulcanized rubber, with a shear modulus (defined for the small-strain limit) of $\mu_1 + \mu_2$ that should be significantly smaller than the first Lamé parameter $\lambda$.
346bcb2dfaeSJed Brown:::
347bcb2dfaeSJed Brown
348bcb2dfaeSJed Brown:::{dropdown} Mooney-Rivlin strain energy comparison
349bcb2dfaeSJed BrownWe apply traction to a block and plot integrated strain energy $\Phi$ as a function of the loading paramater.
350bcb2dfaeSJed Brown
351*68e843eeSJed Brown```{altair-plot}
352bcb2dfaeSJed Brown:hide-code:
353bcb2dfaeSJed Brown
354bcb2dfaeSJed Brownimport altair as alt
355bcb2dfaeSJed Brownimport pandas as pd
356bcb2dfaeSJed Brownnh = pd.read_csv("source/examples/solids/output/NH-strain.csv")
357bcb2dfaeSJed Brownnh["model"] = "Neo-Hookean"
358bcb2dfaeSJed Brownnh["parameters"] = "E=2.8, nu=0.4"
359bcb2dfaeSJed Brown
360bcb2dfaeSJed Brownmr = pd.read_csv("source/examples/solids/output/MR-strain.csv")
361bcb2dfaeSJed Brownmr["model"] = "Mooney-Rivlin; Neo-Hookean equivalent"
362bcb2dfaeSJed Brownmr["parameters"] = "mu_1=1, mu_2=0, nu=.4"
363bcb2dfaeSJed Brown
364bcb2dfaeSJed Brownmr1 = pd.read_csv("source/examples/solids/output/MR-strain1.csv")
365bcb2dfaeSJed Brownmr1["model"] = "Mooney-Rivlin"
366bcb2dfaeSJed Brownmr1["parameters"] = "mu_1=0.5, mu_2=0.5, nu=.4"
367bcb2dfaeSJed Brown
368bcb2dfaeSJed Browndf = pd.concat([nh, mr, mr1])
369bcb2dfaeSJed Brownhighlight = alt.selection_single(
370bcb2dfaeSJed Brown   on = "mouseover",
371bcb2dfaeSJed Brown   nearest = True,
372bcb2dfaeSJed Brown   fields=["model", "parameters"],
373bcb2dfaeSJed Brown)
374bcb2dfaeSJed Brownbase = alt.Chart(df).encode(
375bcb2dfaeSJed Brown   alt.X("increment"),
376bcb2dfaeSJed Brown   alt.Y("energy", scale=alt.Scale(type="sqrt")),
377bcb2dfaeSJed Brown   alt.Color("model"),
378bcb2dfaeSJed Brown   alt.Tooltip(("model", "parameters")),
379bcb2dfaeSJed Brown   opacity=alt.condition(highlight, alt.value(1), alt.value(.5)),
380bcb2dfaeSJed Brown   size=alt.condition(highlight, alt.value(2), alt.value(1)),
381bcb2dfaeSJed Brown)
382bcb2dfaeSJed Brownbase.mark_point().add_selection(highlight) + base.mark_line()
383bcb2dfaeSJed Brown```
384bcb2dfaeSJed Brown:::
385bcb2dfaeSJed Brown
386bcb2dfaeSJed Brown:::{note}
387bcb2dfaeSJed BrownOne can linearize {math:numref}`neo-hookean-stress` around $\bm E = 0$, for which $\bm C = \bm I_3 + 2 \bm E \to \bm I_3$ and $J \to 1 + \operatorname{trace} \bm E$, therefore {math:numref}`neo-hookean-stress` reduces to
388bcb2dfaeSJed Brown
389bcb2dfaeSJed Brown$$
390bcb2dfaeSJed Brown\bm S = \lambda (\trace \bm E) \bm I_3 + 2 \mu \bm E,
391bcb2dfaeSJed Brown$$ (eq-st-venant-kirchoff)
392bcb2dfaeSJed Brown
393bcb2dfaeSJed Brownwhich is the St. Venant-Kirchoff model (constitutive linearization without geometric linearization; see {math:numref}`hyperelastic-cd`).
394bcb2dfaeSJed Brown
395bcb2dfaeSJed BrownThis model can be used for geometrically nonlinear mechanics (e.g., snap-through of thin structures), but is inappropriate for large strain.
396bcb2dfaeSJed Brown
397bcb2dfaeSJed BrownAlternatively, one can drop geometric nonlinearities, $\bm E \to \bm \epsilon$ and $\bm C \to \bm I_3$, while retaining the nonlinear dependence on $J \to 1 + \operatorname{trace} \bm \epsilon$, thereby yielding {math:numref}`eq-neo-hookean-small-strain` (see {math:numref}`hyperelastic-cd`).
398bcb2dfaeSJed Brown:::
399bcb2dfaeSJed Brown
400bcb2dfaeSJed Brown### Weak form
401bcb2dfaeSJed Brown
402bcb2dfaeSJed BrownWe multiply {math:numref}`sblFinS` by a test function $\bm v$ and integrate by parts to obtain the weak form for finite-strain hyperelasticity:
403bcb2dfaeSJed Brownfind $\bm u \in \mathcal V \subset H^1(\Omega_0)$ such that
404bcb2dfaeSJed Brown
405bcb2dfaeSJed Brown$$
406bcb2dfaeSJed Brown\int_{\Omega_0}{\nabla_X \bm{v} \tcolon \bm{P}} \, dV
407bcb2dfaeSJed Brown - \int_{\Omega_0}{\bm{v} \cdot \rho_0 \bm{g}} \, dV
408bcb2dfaeSJed Brown - \int_{\partial \Omega_0}{\bm{v} \cdot (\bm{P} \cdot \hat{\bm{N}})} \, dS
409bcb2dfaeSJed Brown = 0, \quad \forall \bm v \in \mathcal V,
410bcb2dfaeSJed Brown$$ (hyperelastic-weak-form-initial)
411bcb2dfaeSJed Brown
412bcb2dfaeSJed Brownwhere $\bm{P} \cdot \hat{\bm{N}}|_{\partial\Omega}$ is replaced by any prescribed force/traction boundary condition written in terms of the initial configuration.
413bcb2dfaeSJed BrownThis equation contains material/constitutive nonlinearities in defining $\bm S(\bm E)$, as well as geometric nonlinearities through $\bm P = \bm F\, \bm S$, $\bm E(\bm F)$, and the body force $\bm g$, which must be pulled back from the current configuration to the initial configuration.
414bcb2dfaeSJed BrownDiscretization of {math:numref}`hyperelastic-weak-form-initial` produces a finite-dimensional system of nonlinear algebraic equations, which we solve using Newton-Raphson methods.
415bcb2dfaeSJed BrownOne attractive feature of Galerkin discretization is that we can arrive at the same linear system by discretizing the Newton linearization of the continuous form; that is, discretization and differentiation (Newton linearization) commute.
416bcb2dfaeSJed Brown
417bcb2dfaeSJed Brown### Newton linearization
418bcb2dfaeSJed Brown
419bcb2dfaeSJed BrownTo derive a Newton linearization of {math:numref}`hyperelastic-weak-form-initial`, we begin by expressing the derivative of {math:numref}`1st2nd` in incremental form,
420bcb2dfaeSJed Brown
421bcb2dfaeSJed Brown$$
422bcb2dfaeSJed Brown\diff \bm P = \frac{\partial \bm P}{\partial \bm F} \!:\! \diff \bm F = \diff \bm F\, \bm S + \bm F \underbrace{\frac{\partial \bm S}{\partial \bm E} \!:\! \diff \bm E}_{\diff \bm S}
423bcb2dfaeSJed Brown$$ (eq-diff-P)
424bcb2dfaeSJed Brown
425bcb2dfaeSJed Brownwhere
426bcb2dfaeSJed Brown
427bcb2dfaeSJed Brown$$
428bcb2dfaeSJed Brown\diff \bm E = \frac{\partial \bm E}{\partial \bm F} \!:\! \diff \bm F = \frac 1 2 \Big( \diff \bm F^T \bm F + \bm F^T \diff \bm F \Big)
429bcb2dfaeSJed Brown$$
430bcb2dfaeSJed Brown
431bcb2dfaeSJed Brownand $\diff\bm F = \nabla_X\diff\bm u$.
432bcb2dfaeSJed BrownThe quantity ${\partial \bm S} / {\partial \bm E}$ is known as the incremental elasticity tensor, and is analogous to the linear elasticity tensor $\mathsf C$ of {math:numref}`linear-elasticity-tensor`.
433bcb2dfaeSJed BrownWe now evaluate $\diff \bm S$ for the Neo-Hookean model {math:numref}`neo-hookean-stress`,
434bcb2dfaeSJed Brown
435bcb2dfaeSJed Brown$$
436bcb2dfaeSJed Brown\diff\bm S = \frac{\partial \bm S}{\partial \bm E} \!:\! \diff \bm E
437bcb2dfaeSJed Brown= \lambda (\bm C^{-1} \!:\! \diff\bm E) \bm C^{-1}
438bcb2dfaeSJed Brown  + 2 (\mu - \lambda \log J) \bm C^{-1} \diff\bm E \, \bm C^{-1},
439bcb2dfaeSJed Brown$$ (eq-neo-hookean-incremental-stress)
440bcb2dfaeSJed Brown
441bcb2dfaeSJed Brownwhere we have used
442bcb2dfaeSJed Brown
443bcb2dfaeSJed Brown$$
444bcb2dfaeSJed Brown\diff \bm C^{-1} = \frac{\partial \bm C^{-1}}{\partial \bm E} \!:\! \diff\bm E = -2 \bm C^{-1} \diff \bm E \, \bm C^{-1} .
445bcb2dfaeSJed Brown$$
446bcb2dfaeSJed Brown
447bcb2dfaeSJed Brown:::{note}
448bcb2dfaeSJed BrownIn the small-strain limit, $\bm C \to \bm I_3$ and $\log J \to 0$, thereby reducing {math:numref}`eq-neo-hookean-incremental-stress` to the St. Venant-Kirchoff model {math:numref}`eq-st-venant-kirchoff`.
449bcb2dfaeSJed Brown:::
450bcb2dfaeSJed Brown
451bcb2dfaeSJed Brown:::{dropdown} Newton linearization of Mooney-Rivlin
452bcb2dfaeSJed BrownSimilar to {math:numref}`eq-neo-hookean-incremental-stress`, we differentiate {math:numref}`mooney-rivlin-stress_coupled` using variational notation,
453bcb2dfaeSJed Brown
454bcb2dfaeSJed Brown$$
455bcb2dfaeSJed Brown\begin{aligned}
456bcb2dfaeSJed Brown\diff\bm S &= \lambda (\bm C^{-1} \tcolon \diff\bm E) \bm C^{-1} \\
457bcb2dfaeSJed Brown&\quad + 2(\mu_1 + 2\mu_2 - \lambda \log J) \bm C^{-1} \diff\bm E \bm C^{-1} \\
458bcb2dfaeSJed Brown&\quad + 2 \mu_2 \Big[ \trace (\diff\bm E) \bm I_3 - \diff\bm E\Big] .
459bcb2dfaeSJed Brown\end{aligned}
460bcb2dfaeSJed Brown$$ (mooney-rivlin-dS-coupled)
461bcb2dfaeSJed Brown
462bcb2dfaeSJed BrownNote that this agrees with {math:numref}`eq-neo-hookean-incremental-stress` if $\mu_1 = \mu, \mu_2 = 0$.
463bcb2dfaeSJed BrownMoving from Neo-Hookean to Mooney-Rivlin modifies the second term and adds the third.
464bcb2dfaeSJed Brown:::
465bcb2dfaeSJed Brown
466bcb2dfaeSJed Brown:::{dropdown} Cancellation vs symmetry
467bcb2dfaeSJed BrownSome cancellation is possible (at the expense of symmetry) if we substitute {math:numref}`eq-neo-hookean-incremental-stress` into {math:numref}`eq-diff-P`,
468bcb2dfaeSJed Brown
469bcb2dfaeSJed Brown$$
470bcb2dfaeSJed Brown\begin{aligned}
471bcb2dfaeSJed Brown\diff \bm P &= \diff \bm F\, \bm S
472bcb2dfaeSJed Brown  + \lambda (\bm C^{-1} : \diff \bm E) \bm F^{-T} + 2(\mu - \lambda \log J) \bm F^{-T} \diff\bm E \, \bm C^{-1} \\
473bcb2dfaeSJed Brown&= \diff \bm F\, \bm S
474bcb2dfaeSJed Brown  + \lambda (\bm F^{-T} : \diff \bm F) \bm F^{-T} + (\mu - \lambda \log J) \bm F^{-T} (\bm F^T \diff \bm F + \diff \bm F^T \bm F) \bm C^{-1} \\
475bcb2dfaeSJed Brown&= \diff \bm F\, \bm S
476bcb2dfaeSJed Brown  + \lambda (\bm F^{-T} : \diff \bm F) \bm F^{-T} + (\mu - \lambda \log J) \Big( \diff \bm F\, \bm C^{-1} + \bm F^{-T} \diff \bm F^T \bm F^{-T} \Big),
477bcb2dfaeSJed Brown\end{aligned}
478bcb2dfaeSJed Brown$$ (eq-diff-P-dF)
479bcb2dfaeSJed Brown
480bcb2dfaeSJed Brownwhere we have exploited $\bm F \bm C^{-1} = \bm F^{-T}$ and
481bcb2dfaeSJed Brown
482bcb2dfaeSJed Brown$$
483bcb2dfaeSJed Brown\begin{aligned} \bm C^{-1} \!:\! \diff \bm E = \bm C_{IJ}^{-1} \diff \bm E_{IJ} &= \frac 1 2 \bm F_{Ik}^{-1} \bm F_{Jk}^{-1} (\bm F_{\ell I} \diff \bm F_{\ell J} + \diff \bm F_{\ell I} \bm F_{\ell J}) \\ &= \frac 1 2 \Big( \delta_{\ell k} \bm F_{Jk}^{-1} \diff \bm F_{\ell J} + \delta_{\ell k} \bm F_{Ik}^{-1} \diff \bm F_{\ell I} \Big) \\ &= \bm F_{Ik}^{-1} \diff \bm F_{kI} = \bm F^{-T} \!:\! \diff \bm F. \end{aligned}
484bcb2dfaeSJed Brown$$
485bcb2dfaeSJed Brown
486bcb2dfaeSJed BrownWe prefer to compute with {math:numref}`eq-neo-hookean-incremental-stress` because {math:numref}`eq-diff-P-dF` is more expensive, requiring access to (non-symmetric) $\bm F^{-1}$ in addition to (symmetric) $\bm C^{-1} = \bm F^{-1} \bm F^{-T}$, having fewer symmetries to exploit in contractions, and being less numerically stable.
487bcb2dfaeSJed Brown:::
488bcb2dfaeSJed Brown
489bcb2dfaeSJed Brown:::{dropdown} $\diff\bm S$ in index notation
490bcb2dfaeSJed BrownIt is sometimes useful to express {math:numref}`eq-neo-hookean-incremental-stress` in index notation,
491bcb2dfaeSJed Brown
492bcb2dfaeSJed Brown$$
493bcb2dfaeSJed Brown\begin{aligned}
494bcb2dfaeSJed Brown\diff\bm S_{IJ} &= \frac{\partial \bm S_{IJ}}{\partial \bm E_{KL}} \diff \bm E_{KL} \\
495bcb2dfaeSJed Brown  &= \lambda (\bm C^{-1}_{KL} \diff\bm E_{KL}) \bm C^{-1}_{IJ} + 2 (\mu - \lambda \log J) \bm C^{-1}_{IK} \diff\bm E_{KL} \bm C^{-1}_{LJ} \\
496bcb2dfaeSJed Brown  &= \underbrace{\Big( \lambda \bm C^{-1}_{IJ} \bm C^{-1}_{KL} + 2 (\mu - \lambda \log J) \bm C^{-1}_{IK} \bm C^{-1}_{JL} \Big)}_{\mathsf C_{IJKL}} \diff \bm E_{KL} \,,
497bcb2dfaeSJed Brown\end{aligned}
498bcb2dfaeSJed Brown$$ (eq-neo-hookean-incremental-stress-index)
499bcb2dfaeSJed Brown
500bcb2dfaeSJed Brownwhere we have identified the effective elasticity tensor $\mathsf C = \mathsf C_{IJKL}$.
501bcb2dfaeSJed BrownIt is generally not desirable to store $\mathsf C$, but rather to use the earlier expressions so that only $3\times 3$ tensors (most of which are symmetric) must be manipulated.
502bcb2dfaeSJed BrownThat is, given the linearization point $\bm F$ and solution increment $\diff \bm F = \nabla_X (\diff \bm u)$ (which we are solving for in the Newton step), we compute $\diff \bm P$ via
503bcb2dfaeSJed Brown
504bcb2dfaeSJed Brown1. recover $\bm C^{-1}$ and $\log J$ (either stored at quadrature points or recomputed),
505bcb2dfaeSJed Brown2. proceed with $3\times 3$ matrix products as in {math:numref}`eq-neo-hookean-incremental-stress` or the second line of {math:numref}`eq-neo-hookean-incremental-stress-index` to compute $\diff \bm S$ while avoiding computation or storage of higher order tensors, and
506bcb2dfaeSJed Brown3. conclude by {math:numref}`eq-diff-P`, where $\bm S$ is either stored or recomputed from its definition exactly as in the nonlinear residual evaluation.
507bcb2dfaeSJed Brown:::
508bcb2dfaeSJed Brown
509bcb2dfaeSJed BrownNote that the Newton linearization of {math:numref}`hyperelastic-weak-form-initial` may be written as a weak form for linear operators: find $\diff\bm u \in \mathcal V_0$ such that
510bcb2dfaeSJed Brown
511bcb2dfaeSJed Brown$$
512bcb2dfaeSJed Brown\int_{\Omega_0} \nabla_X \bm v \!:\! \diff\bm P dV = \text{rhs}, \quad \forall \bm v \in \mathcal V_0,
513bcb2dfaeSJed Brown$$
514bcb2dfaeSJed Brown
515bcb2dfaeSJed Brownwhere $\diff \bm P$ is defined by {math:numref}`eq-diff-P` and {math:numref}`eq-neo-hookean-incremental-stress`, and $\mathcal V_0$ is the homogeneous space corresponding to $\mathcal V$.
516bcb2dfaeSJed Brown
517bcb2dfaeSJed Brown:::{note}
518bcb2dfaeSJed BrownThe decision of whether to recompute or store functions of the current state $\bm F$ depends on a roofline analysis {cite}`williams2009roofline,brown2010` of the computation and the cost of the constitutive model.
519bcb2dfaeSJed BrownFor low-order elements where flops tend to be in surplus relative to memory bandwidth, recomputation is likely to be preferable, where as the opposite may be true for high-order elements.
520bcb2dfaeSJed BrownSimilarly, analysis with a simple constitutive model may see better performance while storing little or nothing while an expensive model such as Arruda-Boyce {cite}`arruda1993largestretch`, which contains many special functions, may be faster when using more storage to avoid recomputation.
521bcb2dfaeSJed BrownIn the case where complete linearization is preferred, note the symmetry $\mathsf C_{IJKL} = \mathsf C_{KLIJ}$ evident in {math:numref}`eq-neo-hookean-incremental-stress-index`, thus $\mathsf C$ can be stored as a symmetric $6\times 6$ matrix, which has 21 unique entries.
522bcb2dfaeSJed BrownAlong with 6 entries for $\bm S$, this totals 27 entries of overhead compared to computing everything from $\bm F$.
523bcb2dfaeSJed BrownThis compares with 13 entries of overhead for direct storage of $\{ \bm S, \bm C^{-1}, \log J \}$, which is sufficient for the Neo-Hookean model to avoid all but matrix products.
524bcb2dfaeSJed Brown:::
525bcb2dfaeSJed Brown
526bcb2dfaeSJed Brown(problem-hyperelasticity-finite-strain-current-configuration)=
527bcb2dfaeSJed Brown
528bcb2dfaeSJed Brown## Hyperelasticity in current configuration
529bcb2dfaeSJed Brown
530bcb2dfaeSJed BrownIn the preceeding discussion, all equations have been formulated in the initial configuration.
531bcb2dfaeSJed BrownThis may feel convenient in that the computational domain is clearly independent of the solution, but there are some advantages to defining the equations in the current configuration.
532bcb2dfaeSJed Brown
533bcb2dfaeSJed Brown1. Body forces (like gravity), traction, and contact are more easily defined in the current configuration.
534bcb2dfaeSJed Brown2. Mesh quality in the initial configuration can be very bad for large deformation.
535bcb2dfaeSJed Brown3. The required storage and numerical representation can be smaller in the current configuration.
536bcb2dfaeSJed Brown
537bcb2dfaeSJed BrownMost of the benefit in case 3 can be attained solely by moving the Jacobian representation to the current configuration {cite}`davydov2020matrix`, though residual evaluation may also be slightly faster in current configuration.
538bcb2dfaeSJed BrownThere are multiple commuting paths from the nonlinear weak form in initial configuration {math:numref}`hyperelastic-weak-form-initial` to the Jacobian weak form in current configuration {math:numref}`jacobian-weak-form-current`.
539bcb2dfaeSJed BrownOne may push forward to the current configuration and then linearize or linearize in initial configuration and then push forward, as summarized below.
540bcb2dfaeSJed Brown
541bcb2dfaeSJed Brown$$
542bcb2dfaeSJed Brown\begin{CD}
543bcb2dfaeSJed Brown  {\overbrace{\nabla_X \bm{v} \tcolon \bm{FS}}^{\text{Initial Residual}}}
544bcb2dfaeSJed Brown  @>{\text{push forward}}>{}>
545bcb2dfaeSJed Brown  {\overbrace{\nabla_x \bm{v} \tcolon \bm{\tau}}^{\text{Current Residual}}} \\
546bcb2dfaeSJed Brown  @V{\text{linearize}}V{\begin{smallmatrix} \diff\bm F = \nabla_X\diff\bm u \\ \diff\bm S(\diff\bm E) \end{smallmatrix}}V
547bcb2dfaeSJed Brown  @V{\begin{smallmatrix} \diff\nabla_x\bm v = -\nabla_x\bm v \nabla_x \diff\bm u \\ \diff\bm\tau(\diff\bm\epsilon) \end{smallmatrix}}V{\text{linearize}}V \\
548bcb2dfaeSJed Brown  {\underbrace{\nabla_X\bm{v}\tcolon \Big(\diff\bm{F}\bm{S} + \bm{F}\diff\bm{S}\Big)}_\text{Initial Jacobian}}
549bcb2dfaeSJed Brown  @>{\text{push forward}}>{}>
550bcb2dfaeSJed Brown  {\underbrace{\nabla_x\bm{v}\tcolon \Big(\diff\bm{\tau} -\bm{\tau}(\nabla_x \diff\bm{u})^T \Big)}_\text{Current Jacobian}}
551bcb2dfaeSJed Brown\end{CD}
552bcb2dfaeSJed Brown$$ (initial-current-linearize)
553bcb2dfaeSJed Brown
554bcb2dfaeSJed BrownWe will follow both paths for consistency and because both intermediate representations may be useful for implementation.
555bcb2dfaeSJed Brown
556bcb2dfaeSJed Brown### Push forward, then linearize
557bcb2dfaeSJed Brown
558bcb2dfaeSJed BrownThe first term of {math:numref}`hyperelastic-weak-form-initial` can be rewritten in terms of the symmetric Kirchhoff stress tensor
559bcb2dfaeSJed Brown$\bm{\tau}=J\bm{\sigma}=\bm{P}\bm{F}^T = \bm F \bm S \bm F^T$ as
560bcb2dfaeSJed Brown
561bcb2dfaeSJed Brown$$
562bcb2dfaeSJed Brown\nabla_X \bm{v} \tcolon \bm{P} = \nabla_X \bm{v} \tcolon \bm{\tau}\bm{F}^{-T} = \nabla_X \bm{v}\bm{F}^{-1} \tcolon \bm{\tau} = \nabla_x \bm{v} \tcolon \bm{\tau}
563bcb2dfaeSJed Brown$$
564bcb2dfaeSJed Brown
565bcb2dfaeSJed Browntherefore, the weak form in terms of $\bm{\tau}$ and $\nabla_x$ with integral over $\Omega_0$ is
566bcb2dfaeSJed Brown
567bcb2dfaeSJed Brown$$
568bcb2dfaeSJed Brown\int_{\Omega_0}{\nabla_x \bm{v} \tcolon \bm{\tau}} \, dV
569bcb2dfaeSJed Brown - \int_{\Omega_0}{\bm{v} \cdot \rho_0 \bm{g}} \, dV
570bcb2dfaeSJed Brown - \int_{\partial \Omega_0}{\bm{v}\cdot(\bm{P}\cdot\hat{\bm{N}})} \, dS
571bcb2dfaeSJed Brown = 0, \quad \forall \bm v \in \mathcal V.
572bcb2dfaeSJed Brown$$ (hyperelastic-weak-form-current)
573bcb2dfaeSJed Brown
574bcb2dfaeSJed Brown#### Linearize in current configuration
575bcb2dfaeSJed Brown
576bcb2dfaeSJed BrownTo derive a Newton linearization of {math:numref}`hyperelastic-weak-form-current`, first we define
577bcb2dfaeSJed Brown
578bcb2dfaeSJed Brown$$
579bcb2dfaeSJed Brown\nabla_x \diff \bm{u} = \nabla_X \diff \bm{u} \  \bm{F}^{-1} = \diff \bm{F} \bm{F}^{-1}
580bcb2dfaeSJed Brown$$ (nabla_xdu)
581bcb2dfaeSJed Brown
582bcb2dfaeSJed Brownand $\bm{\tau}$ for Neo-Hookean materials as the push forward of {math:numref}`neo-hookean-stress`
583bcb2dfaeSJed Brown
584bcb2dfaeSJed Brown$$
585bcb2dfaeSJed Brown\bm{\tau} = \bm{F}\bm{S}\bm{F}^T = \mu (\bm{b} - \bm I_3) + \lambda \log J \bm{I}_3,
586bcb2dfaeSJed Brown$$ (tau-neo-hookean)
587bcb2dfaeSJed Brown
588bcb2dfaeSJed Brownwhere $\bm{b} = \bm{F} \bm{F}^T$, is the left Cauchy-Green tensor.
589bcb2dfaeSJed BrownThen by expanding the directional derivative of $\nabla_x \bm{v} \tcolon \bm{\tau}$, we arrive at
590bcb2dfaeSJed Brown
591bcb2dfaeSJed Brown$$
592bcb2dfaeSJed Brown\diff \ (\nabla_x \bm{v} \tcolon \bm{\tau}) = \diff \ (\nabla_x \bm{v})\tcolon \bm{\tau} + \nabla_x \bm{v} \tcolon \diff \bm{\tau} .
593bcb2dfaeSJed Brown$$ (hyperelastic-linearization-current1)
594bcb2dfaeSJed Brown
595bcb2dfaeSJed BrownThe first term of {math:numref}`hyperelastic-linearization-current1` can be written as
596bcb2dfaeSJed Brown
597bcb2dfaeSJed Brown$$
598bcb2dfaeSJed Brown\begin{aligned} \diff \ (\nabla_x \bm{v})\tcolon \bm{\tau} &= \diff \ (\nabla_X \bm{v} \bm{F}^{-1})\tcolon \bm{\tau} = \Big(\underbrace{\nabla_X (\diff \bm{v})}_{0}\bm{F}^{-1} +  \nabla_X \bm{v}\diff \bm{F}^{-1}\Big)\tcolon \bm{\tau}\\   &= \Big(-\nabla_X \bm{v} \bm{F}^{-1}\diff\bm{F}\bm{F}^{-1}\Big)\tcolon \bm{\tau}=\Big(-\nabla_x \bm{v} \diff\bm{F}\bm{F}^{-1}\Big)\tcolon \bm{\tau}\\   &= \Big(-\nabla_x \bm{v} \nabla_x \diff\bm{u} \Big)\tcolon \bm{\tau}= -\nabla_x \bm{v}\tcolon\bm{\tau}(\nabla_x \diff\bm{u})^T \,, \end{aligned}
599bcb2dfaeSJed Brown$$
600bcb2dfaeSJed Brown
601bcb2dfaeSJed Brownwhere we have used $\diff \bm{F}^{-1}=-\bm{F}^{-1} \diff \bm{F} \bm{F}^{-1}$ and {math:numref}`nabla_xdu`.
602bcb2dfaeSJed BrownUsing this and {math:numref}`hyperelastic-linearization-current1` in {math:numref}`hyperelastic-weak-form-current` yields the weak form in the current configuration
603bcb2dfaeSJed Brown
604bcb2dfaeSJed Brown$$
605bcb2dfaeSJed Brown\int_{\Omega_0} \nabla_x \bm v \tcolon \Big(\diff\bm\tau - \bm\tau (\nabla_x \diff\bm u)^T \Big) = \text{rhs}.
606bcb2dfaeSJed Brown$$ (jacobian-weak-form-current)
607bcb2dfaeSJed Brown
608bcb2dfaeSJed BrownIn the following, we will sometimes make use of the incremental strain tensor in the current configuration,
609bcb2dfaeSJed Brown
610bcb2dfaeSJed Brown$$
611bcb2dfaeSJed Brown\diff\bm\epsilon \equiv \frac{1}{2}\Big(\nabla_x \diff\bm{u} + (\nabla_x \diff\bm{u})^T   \Big) .
612bcb2dfaeSJed Brown$$
613bcb2dfaeSJed Brown
614bcb2dfaeSJed Brown:::{dropdown} Deriving $\diff\bm\tau$ for Neo-Hookean material
615bcb2dfaeSJed BrownTo derive a useful expression of $\diff\bm\tau$ for Neo-Hookean materials, we will use the representations
616bcb2dfaeSJed Brown
617bcb2dfaeSJed Brown$$
618bcb2dfaeSJed Brown\begin{aligned}
619bcb2dfaeSJed Brown\diff \bm{b} &= \diff \bm{F} \bm{F}^T + \bm{F} \diff \bm{F}^T \\
620bcb2dfaeSJed Brown&= \nabla_x \diff \bm{u} \ \bm{b} + \bm{b} \ (\nabla_x \diff \bm{u})^T \\
621bcb2dfaeSJed Brown&= (\nabla_x \diff\bm u)(\bm b - \bm I_3) + (\bm b - \bm I_3) (\nabla_x \diff\bm u)^T + 2 \diff\bm\epsilon
622bcb2dfaeSJed Brown\end{aligned}
623bcb2dfaeSJed Brown$$
624bcb2dfaeSJed Brown
625bcb2dfaeSJed Brownand
626bcb2dfaeSJed Brown
627bcb2dfaeSJed Brown$$
628bcb2dfaeSJed Brown\begin{aligned} \diff\ (\log J) &= \frac{\partial \log J}{\partial \bm{b}}\tcolon \diff \bm{b} = \frac{\partial J}{J\partial \bm{b}}\tcolon \diff \bm{b}=\frac{1}{2}\bm{b}^{-1}\tcolon \diff \bm{b} \\ &= \frac 1 2 \bm b^{-1} \tcolon \Big(\nabla_x \diff\bm u \ \bm b + \bm b (\nabla_x \diff\bm u)^T \Big) \\ &= \trace (\nabla_x \diff\bm u) \\ &= \trace \diff\bm\epsilon . \end{aligned}
629bcb2dfaeSJed Brown$$
630bcb2dfaeSJed Brown
631bcb2dfaeSJed BrownSubstituting into {math:numref}`tau-neo-hookean` gives
632bcb2dfaeSJed Brown
633bcb2dfaeSJed Brown$$
634bcb2dfaeSJed Brown\begin{aligned}
635bcb2dfaeSJed Brown\diff \bm{\tau} &= \mu \diff \bm{b} + \lambda \trace (\diff\bm\epsilon) \bm I_3 \\
636bcb2dfaeSJed Brown&= \underbrace{2 \mu \diff\bm\epsilon + \lambda \trace (\diff\bm\epsilon) \bm I_3 - 2\lambda \log J \diff\bm\epsilon}_{\bm F \diff\bm S \bm F^T} \\
637bcb2dfaeSJed Brown&\quad + (\nabla_x \diff\bm u)\underbrace{\Big( \mu (\bm b - \bm I_3) + \lambda \log J \bm I_3 \Big)}_{\bm\tau} \\
638bcb2dfaeSJed Brown&\quad + \underbrace{\Big( \mu (\bm b - \bm I_3) + \lambda \log J \bm I_3 \Big)}_{\bm\tau}  (\nabla_x \diff\bm u)^T ,
639bcb2dfaeSJed Brown\end{aligned}
640bcb2dfaeSJed Brown$$ (dtau-neo-hookean)
641bcb2dfaeSJed Brown
642bcb2dfaeSJed Brownwhere the final expression has been identified according to
643bcb2dfaeSJed Brown
644bcb2dfaeSJed Brown$$
645bcb2dfaeSJed Brown\diff\bm\tau = \diff\ (\bm F \bm S \bm F^T) = (\nabla_x \diff\bm u) \bm\tau + \bm F \diff\bm S \bm F^T + \bm\tau(\nabla_x \diff\bm u)^T.
646bcb2dfaeSJed Brown$$
647bcb2dfaeSJed Brown:::
648bcb2dfaeSJed Brown
649bcb2dfaeSJed BrownCollecting terms, we may thus opt to use either of the two forms
650bcb2dfaeSJed Brown
651bcb2dfaeSJed Brown$$
652bcb2dfaeSJed Brown\begin{aligned}
653bcb2dfaeSJed Brown\diff \bm{\tau} -\bm{\tau}(\nabla_x \diff\bm{u})^T &= (\nabla_x \diff\bm u)\bm\tau + \bm F \diff\bm S \bm F^T \\
654bcb2dfaeSJed Brown&= (\nabla_x \diff\bm u)\bm\tau + \lambda \trace(\diff\bm\epsilon) \bm I_3 + 2(\mu - \lambda \log J) \diff\bm\epsilon,
655bcb2dfaeSJed Brown\end{aligned}
656bcb2dfaeSJed Brown$$ (cur_simp_Jac)
657bcb2dfaeSJed Brown
658bcb2dfaeSJed Brownwith the last line showing the especially compact representation available for Neo-Hookean materials.
659bcb2dfaeSJed Brown
660bcb2dfaeSJed Brown### Linearize, then push forward
661bcb2dfaeSJed Brown
662bcb2dfaeSJed BrownWe can move the derivatives to the current configuration via
663bcb2dfaeSJed Brown
664bcb2dfaeSJed Brown$$
665bcb2dfaeSJed Brown\nabla_X \bm v \!:\! \diff\bm P = (\nabla_X \bm v) \bm F^{-1} \!:\! \diff \bm P \bm F^T = \nabla_x \bm v \!:\! \diff\bm P \bm F^T
666bcb2dfaeSJed Brown$$
667bcb2dfaeSJed Brown
668bcb2dfaeSJed Brownand expand
669bcb2dfaeSJed Brown
670bcb2dfaeSJed Brown$$
671bcb2dfaeSJed Brown\begin{aligned}
672bcb2dfaeSJed Brown\diff\bm P \bm F^T &= \diff\bm F \bm S \bm F^T + \bm F \diff\bm S \bm F^T \\
673bcb2dfaeSJed Brown&= \underbrace{\diff\bm F \bm F^{-1}}_{\nabla_x \diff\bm u} \underbrace{\bm F \bm S \bm F^T}_{\bm\tau} + \bm F \diff\bm S \bm F^T .
674bcb2dfaeSJed Brown\end{aligned}
675bcb2dfaeSJed Brown$$
676bcb2dfaeSJed Brown
677bcb2dfaeSJed Brown:::{dropdown} Representation of $\bm F \diff\bm S \bm F^T$ for Neo-Hookean materials
678bcb2dfaeSJed BrownNow we push {math:numref}`eq-neo-hookean-incremental-stress` forward via
679bcb2dfaeSJed Brown
680bcb2dfaeSJed Brown$$
681bcb2dfaeSJed Brown\begin{aligned}
682bcb2dfaeSJed Brown\bm F \diff\bm S \bm F^T &= \lambda (\bm C^{-1} \!:\! \diff\bm E) \bm F \bm C^{-1} \bm F^T
683bcb2dfaeSJed Brown  + 2 (\mu - \lambda \log J) \bm F \bm C^{-1} \diff\bm E \, \bm C^{-1} \bm F^T \\
684bcb2dfaeSJed Brown    &= \lambda (\bm C^{-1} \!:\! \diff\bm E) \bm I_3 + 2 (\mu - \lambda \log J) \bm F^{-T} \diff\bm E \, \bm F^{-1} \\
685bcb2dfaeSJed Brown    &= \lambda \operatorname{trace}(\nabla_x \diff\bm u) \bm I_3 + 2 (\mu - \lambda \log J) \diff\bm \epsilon
686bcb2dfaeSJed Brown\end{aligned}
687bcb2dfaeSJed Brown$$
688bcb2dfaeSJed Brown
689bcb2dfaeSJed Brownwhere we have used
690bcb2dfaeSJed Brown
691bcb2dfaeSJed Brown$$
692bcb2dfaeSJed Brown\begin{aligned}
693bcb2dfaeSJed Brown\bm C^{-1} \!:\! \diff\bm E &= \bm F^{-1} \bm F^{-T} \!:\! \bm F^T \diff\bm F \\
694bcb2dfaeSJed Brown&= \operatorname{trace}(\bm F^{-1} \bm F^{-T} \bm F^T \diff \bm F) \\
695bcb2dfaeSJed Brown&= \operatorname{trace}(\bm F^{-1} \diff\bm F) \\
696bcb2dfaeSJed Brown&= \operatorname{trace}(\diff \bm F \bm F^{-1}) \\
697bcb2dfaeSJed Brown&= \operatorname{trace}(\nabla_x \diff\bm u)
698bcb2dfaeSJed Brown\end{aligned}
699bcb2dfaeSJed Brown$$
700bcb2dfaeSJed Brown
701bcb2dfaeSJed Brownand
702bcb2dfaeSJed Brown
703bcb2dfaeSJed Brown$$
704bcb2dfaeSJed Brown\begin{aligned}
705bcb2dfaeSJed Brown\bm F^{-T} \diff\bm E \, \bm F^{-1} &= \frac 1 2 \bm F^{-T} (\bm F^T \diff\bm F + \diff\bm F^T \bm F) \bm F^{-1} \\
706bcb2dfaeSJed Brown&= \frac 1 2 (\diff \bm F \bm F^{-1} + \bm F^{-T} \diff\bm F^T) \\
707bcb2dfaeSJed Brown&= \frac 1 2 \Big(\nabla_x \diff\bm u + (\nabla_x\diff\bm u)^T \Big) \equiv \diff\bm\epsilon.
708bcb2dfaeSJed Brown\end{aligned}
709bcb2dfaeSJed Brown$$
710bcb2dfaeSJed Brown:::
711bcb2dfaeSJed Brown
712bcb2dfaeSJed BrownCollecting terms, the weak form of the Newton linearization for Neo-Hookean materials in the current configuration is
713bcb2dfaeSJed Brown
714bcb2dfaeSJed Brown$$
715bcb2dfaeSJed Brown\int_{\Omega_0} \nabla_x \bm v \!:\! \Big( (\nabla_x \diff\bm u) \bm\tau + \lambda \operatorname{trace}(\diff\bm\epsilon)\bm I_3 + 2(\mu - \lambda\log J)\diff \bm\epsilon \Big) dV = \text{rhs},
716bcb2dfaeSJed Brown$$ (jacobian-weak-form-current2)
717bcb2dfaeSJed Brown
718bcb2dfaeSJed Brownwhich equivalent to Algorithm 2 of {cite}`davydov2020matrix` and requires only derivatives with respect to the current configuration. Note that {math:numref}`cur_simp_Jac` and {math:numref}`jacobian-weak-form-current2` have recovered the same representation
719bcb2dfaeSJed Brownusing different algebraic manipulations.
720bcb2dfaeSJed Brown
721bcb2dfaeSJed Brown:::{tip}
722bcb2dfaeSJed BrownWe define a second order *Green-Euler* strain tensor (cf. Green-Lagrange strain {math:numref}`eq-green-lagrange-strain`) as
723bcb2dfaeSJed Brown
724bcb2dfaeSJed Brown$$
725bcb2dfaeSJed Brown\bm e = \frac 1 2 \Big(\bm{b} - \bm{I}_3 \Big) = \frac 1 2 \Big( \nabla_X \bm{u} + (\nabla_X \bm{u})^T + \nabla_X \bm{u} \, (\nabla_X \bm{u})^T \Big).
726bcb2dfaeSJed Brown$$ (green-euler-strain)
727bcb2dfaeSJed Brown
728bcb2dfaeSJed BrownThen, the Kirchhoff stress tensor {math:numref}`tau-neo-hookean` can be written as
729bcb2dfaeSJed Brown
730bcb2dfaeSJed Brown$$
731bcb2dfaeSJed Brown\bm \tau = \lambda \log J \bm I_{3} + 2\mu \bm e,
732bcb2dfaeSJed Brown$$ (tau-neo-hookean-stable)
733bcb2dfaeSJed Brown
734bcb2dfaeSJed Brownwhich is more numerically stable for small strain, and thus preferred for computation. Note that the $\log J$ is computed via `log1p` {math:numref}`log1p`, as we discussed in the previous tip.
735bcb2dfaeSJed Brown:::
736bcb2dfaeSJed Brown
737bcb2dfaeSJed Brown### Jacobian representation
738bcb2dfaeSJed Brown
739bcb2dfaeSJed BrownWe have implemented four storage variants for the Jacobian in our finite strain hyperelasticity. In each case, some variables are computed during residual evaluation and used during Jacobian application.
740bcb2dfaeSJed Brown
741*68e843eeSJed Brown:::{list-table} Four algorithms for Jacobian action in finite strain hyperelasticity problem
742bcb2dfaeSJed Brown:header-rows: 1
743*68e843eeSJed Brown:widths: auto
744bcb2dfaeSJed Brown
745*68e843eeSJed Brown* - Option `-problem`
746bcb2dfaeSJed Brown  - Static storage
747bcb2dfaeSJed Brown  - Computed storage
748*68e843eeSJed Brown  - \# scalars
749bcb2dfaeSJed Brown  - Equations
750bcb2dfaeSJed Brown
751bcb2dfaeSJed Brown
752*68e843eeSJed Brown* - `FSInitial-NH1`
753*68e843eeSJed Brown  - $\nabla_{X} \hat X, \operatorname{det}\nabla_{\hat X} X$
754*68e843eeSJed Brown  - $\nabla_X \bm u$
755bcb2dfaeSJed Brown  - 19
756*68e843eeSJed Brown  - {eq}`eq-diff-P` {eq}`eq-neo-hookean-incremental-stress`
757bcb2dfaeSJed Brown
758*68e843eeSJed Brown* - `FSInitial-NH2`
759*68e843eeSJed Brown  - $\nabla_{X} \hat X, \operatorname{det}\nabla_{\hat X} X$
760*68e843eeSJed Brown  - $\nabla_X \bm u, \bm C^{-1}, \lambda \log J$
761bcb2dfaeSJed Brown  - 26
762*68e843eeSJed Brown  - {eq}`eq-diff-P` {eq}`eq-neo-hookean-incremental-stress`
763bcb2dfaeSJed Brown
764*68e843eeSJed Brown* - `FSCurrent-NH1`
765*68e843eeSJed Brown  - $\nabla_{X} \hat X, \operatorname{det}\nabla_{\hat X} X$
766*68e843eeSJed Brown  - $\nabla_X \bm u$
767bcb2dfaeSJed Brown  - 19
768*68e843eeSJed Brown  - {eq}`jacobian-weak-form-current` {eq}`nabla_xdu`
769bcb2dfaeSJed Brown
770*68e843eeSJed Brown* - `FSCurrent-NH2`
771*68e843eeSJed Brown  - $\operatorname{det}\nabla_{\hat X} X$
772*68e843eeSJed Brown  - $\nabla_x \hat X, \bm \tau, \lambda \log J$
773bcb2dfaeSJed Brown  - 17
774*68e843eeSJed Brown  - {eq}`jacobian-weak-form-current` {eq}`jacobian-weak-form-current2`
775*68e843eeSJed Brown:::
776