xref: /libCEED/examples/solids/index.md (revision 15f4bfc55578d4550ff5084b68de2f42db2fcba9)
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.
518791656fSJed BrownWe multiply {eq}`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.
828791656fSJed BrownConstitutive relations in which $\bm \sigma$ is uniquely determined by $\bm \epsilon$ while satisfying the invariance property {eq}`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
1438791656fSJed BrownThe strong and weak forms given above, in {eq}`lin-elas` and {eq}`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
1568791656fSJed Brownwhere $\bm{\epsilon}$ is defined as in {eq}`small-strain`.
157bcb2dfaeSJed Brown
158bcb2dfaeSJed Brown### Newton linearization
159bcb2dfaeSJed Brown
1608791656fSJed BrownDue to nonlinearity in the constitutive law, we require a Newton linearization of {eq}`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
1938791656fSJed BrownEquation {eq}`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.
2668791656fSJed 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  {eq}`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
2848791656fSJed BrownTo evaluate {eq}`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.$
2918791656fSJed BrownCarrying through the differentiation {eq}`strain-energy-grad` for the model {eq}`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}
2988791656fSJed BrownAn equivalent form of {eq}`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.
3058791656fSJed BrownNote that the product $\bm C^{-1} \bm E$ is also symmetric, and that $\bm E$ should be computed using {eq}`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)$.
3228791656fSJed BrownA coupled Mooney-Rivlin strain energy density (cf. Neo-Hookean {eq}`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
3288791656fSJed BrownWe differentiate $\Phi$ as in the Neo-Hookean case {eq}`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
35168e843eeSJed Brown```{altair-plot}
352bcb2dfaeSJed Brown:hide-code:
353bcb2dfaeSJed Brown
354bcb2dfaeSJed Brownimport altair as alt
355bcb2dfaeSJed Brownimport pandas as pd
356*15f4bfc5SJed Browndef source_path(rel):
357*15f4bfc5SJed Brown    import os
358*15f4bfc5SJed Brown    return os.path.join(os.path.dirname(os.environ["DOCUTILSCONFIG"]), rel)
359*15f4bfc5SJed Brown
360*15f4bfc5SJed Brownnh = pd.read_csv(source_path("examples/solids/output/NH-strain.csv"))
361bcb2dfaeSJed Brownnh["model"] = "Neo-Hookean"
362bcb2dfaeSJed Brownnh["parameters"] = "E=2.8, nu=0.4"
363bcb2dfaeSJed Brown
364*15f4bfc5SJed Brownmr = pd.read_csv(source_path("examples/solids/output/MR-strain.csv"))
365bcb2dfaeSJed Brownmr["model"] = "Mooney-Rivlin; Neo-Hookean equivalent"
366bcb2dfaeSJed Brownmr["parameters"] = "mu_1=1, mu_2=0, nu=.4"
367bcb2dfaeSJed Brown
368*15f4bfc5SJed Brownmr1 = pd.read_csv(source_path("examples/solids/output/MR-strain1.csv"))
369bcb2dfaeSJed Brownmr1["model"] = "Mooney-Rivlin"
370bcb2dfaeSJed Brownmr1["parameters"] = "mu_1=0.5, mu_2=0.5, nu=.4"
371bcb2dfaeSJed Brown
372bcb2dfaeSJed Browndf = pd.concat([nh, mr, mr1])
373bcb2dfaeSJed Brownhighlight = alt.selection_single(
374bcb2dfaeSJed Brown   on = "mouseover",
375bcb2dfaeSJed Brown   nearest = True,
376bcb2dfaeSJed Brown   fields=["model", "parameters"],
377bcb2dfaeSJed Brown)
378bcb2dfaeSJed Brownbase = alt.Chart(df).encode(
379bcb2dfaeSJed Brown   alt.X("increment"),
380bcb2dfaeSJed Brown   alt.Y("energy", scale=alt.Scale(type="sqrt")),
381bcb2dfaeSJed Brown   alt.Color("model"),
382bcb2dfaeSJed Brown   alt.Tooltip(("model", "parameters")),
383bcb2dfaeSJed Brown   opacity=alt.condition(highlight, alt.value(1), alt.value(.5)),
384bcb2dfaeSJed Brown   size=alt.condition(highlight, alt.value(2), alt.value(1)),
385bcb2dfaeSJed Brown)
386bcb2dfaeSJed Brownbase.mark_point().add_selection(highlight) + base.mark_line()
387bcb2dfaeSJed Brown```
388bcb2dfaeSJed Brown:::
389bcb2dfaeSJed Brown
390bcb2dfaeSJed Brown:::{note}
3918791656fSJed BrownOne can linearize {eq}`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 {eq}`neo-hookean-stress` reduces to
392bcb2dfaeSJed Brown
393bcb2dfaeSJed Brown$$
394bcb2dfaeSJed Brown\bm S = \lambda (\trace \bm E) \bm I_3 + 2 \mu \bm E,
395bcb2dfaeSJed Brown$$ (eq-st-venant-kirchoff)
396bcb2dfaeSJed Brown
3978791656fSJed Brownwhich is the St. Venant-Kirchoff model (constitutive linearization without geometric linearization; see {eq}`hyperelastic-cd`).
398bcb2dfaeSJed Brown
399bcb2dfaeSJed BrownThis model can be used for geometrically nonlinear mechanics (e.g., snap-through of thin structures), but is inappropriate for large strain.
400bcb2dfaeSJed Brown
4018791656fSJed 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 {eq}`eq-neo-hookean-small-strain` (see {eq}`hyperelastic-cd`).
402bcb2dfaeSJed Brown:::
403bcb2dfaeSJed Brown
404bcb2dfaeSJed Brown### Weak form
405bcb2dfaeSJed Brown
4068791656fSJed BrownWe multiply {eq}`sblFinS` by a test function $\bm v$ and integrate by parts to obtain the weak form for finite-strain hyperelasticity:
407bcb2dfaeSJed Brownfind $\bm u \in \mathcal V \subset H^1(\Omega_0)$ such that
408bcb2dfaeSJed Brown
409bcb2dfaeSJed Brown$$
410bcb2dfaeSJed Brown\int_{\Omega_0}{\nabla_X \bm{v} \tcolon \bm{P}} \, dV
411bcb2dfaeSJed Brown - \int_{\Omega_0}{\bm{v} \cdot \rho_0 \bm{g}} \, dV
412bcb2dfaeSJed Brown - \int_{\partial \Omega_0}{\bm{v} \cdot (\bm{P} \cdot \hat{\bm{N}})} \, dS
413bcb2dfaeSJed Brown = 0, \quad \forall \bm v \in \mathcal V,
414bcb2dfaeSJed Brown$$ (hyperelastic-weak-form-initial)
415bcb2dfaeSJed Brown
416bcb2dfaeSJed 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.
417bcb2dfaeSJed 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.
4188791656fSJed BrownDiscretization of {eq}`hyperelastic-weak-form-initial` produces a finite-dimensional system of nonlinear algebraic equations, which we solve using Newton-Raphson methods.
419bcb2dfaeSJed 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.
420bcb2dfaeSJed Brown
421bcb2dfaeSJed Brown### Newton linearization
422bcb2dfaeSJed Brown
4238791656fSJed BrownTo derive a Newton linearization of {eq}`hyperelastic-weak-form-initial`, we begin by expressing the derivative of {eq}`1st2nd` in incremental form,
424bcb2dfaeSJed Brown
425bcb2dfaeSJed Brown$$
426bcb2dfaeSJed 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}
427bcb2dfaeSJed Brown$$ (eq-diff-P)
428bcb2dfaeSJed Brown
429bcb2dfaeSJed Brownwhere
430bcb2dfaeSJed Brown
431bcb2dfaeSJed Brown$$
432bcb2dfaeSJed 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)
433bcb2dfaeSJed Brown$$
434bcb2dfaeSJed Brown
435bcb2dfaeSJed Brownand $\diff\bm F = \nabla_X\diff\bm u$.
4368791656fSJed 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 {eq}`linear-elasticity-tensor`.
4378791656fSJed BrownWe now evaluate $\diff \bm S$ for the Neo-Hookean model {eq}`neo-hookean-stress`,
438bcb2dfaeSJed Brown
439bcb2dfaeSJed Brown$$
440bcb2dfaeSJed Brown\diff\bm S = \frac{\partial \bm S}{\partial \bm E} \!:\! \diff \bm E
441bcb2dfaeSJed Brown= \lambda (\bm C^{-1} \!:\! \diff\bm E) \bm C^{-1}
442bcb2dfaeSJed Brown  + 2 (\mu - \lambda \log J) \bm C^{-1} \diff\bm E \, \bm C^{-1},
443bcb2dfaeSJed Brown$$ (eq-neo-hookean-incremental-stress)
444bcb2dfaeSJed Brown
445bcb2dfaeSJed Brownwhere we have used
446bcb2dfaeSJed Brown
447bcb2dfaeSJed Brown$$
448bcb2dfaeSJed 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} .
449bcb2dfaeSJed Brown$$
450bcb2dfaeSJed Brown
451bcb2dfaeSJed Brown:::{note}
4528791656fSJed BrownIn the small-strain limit, $\bm C \to \bm I_3$ and $\log J \to 0$, thereby reducing {eq}`eq-neo-hookean-incremental-stress` to the St. Venant-Kirchoff model {eq}`eq-st-venant-kirchoff`.
453bcb2dfaeSJed Brown:::
454bcb2dfaeSJed Brown
455bcb2dfaeSJed Brown:::{dropdown} Newton linearization of Mooney-Rivlin
4568791656fSJed BrownSimilar to {eq}`eq-neo-hookean-incremental-stress`, we differentiate {eq}`mooney-rivlin-stress_coupled` using variational notation,
457bcb2dfaeSJed Brown
458bcb2dfaeSJed Brown$$
459bcb2dfaeSJed Brown\begin{aligned}
460bcb2dfaeSJed Brown\diff\bm S &= \lambda (\bm C^{-1} \tcolon \diff\bm E) \bm C^{-1} \\
461bcb2dfaeSJed Brown&\quad + 2(\mu_1 + 2\mu_2 - \lambda \log J) \bm C^{-1} \diff\bm E \bm C^{-1} \\
462bcb2dfaeSJed Brown&\quad + 2 \mu_2 \Big[ \trace (\diff\bm E) \bm I_3 - \diff\bm E\Big] .
463bcb2dfaeSJed Brown\end{aligned}
464bcb2dfaeSJed Brown$$ (mooney-rivlin-dS-coupled)
465bcb2dfaeSJed Brown
4668791656fSJed BrownNote that this agrees with {eq}`eq-neo-hookean-incremental-stress` if $\mu_1 = \mu, \mu_2 = 0$.
467bcb2dfaeSJed BrownMoving from Neo-Hookean to Mooney-Rivlin modifies the second term and adds the third.
468bcb2dfaeSJed Brown:::
469bcb2dfaeSJed Brown
470bcb2dfaeSJed Brown:::{dropdown} Cancellation vs symmetry
4718791656fSJed BrownSome cancellation is possible (at the expense of symmetry) if we substitute {eq}`eq-neo-hookean-incremental-stress` into {eq}`eq-diff-P`,
472bcb2dfaeSJed Brown
473bcb2dfaeSJed Brown$$
474bcb2dfaeSJed Brown\begin{aligned}
475bcb2dfaeSJed Brown\diff \bm P &= \diff \bm F\, \bm S
476bcb2dfaeSJed 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} \\
477bcb2dfaeSJed Brown&= \diff \bm F\, \bm S
478bcb2dfaeSJed 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} \\
479bcb2dfaeSJed Brown&= \diff \bm F\, \bm S
480bcb2dfaeSJed 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),
481bcb2dfaeSJed Brown\end{aligned}
482bcb2dfaeSJed Brown$$ (eq-diff-P-dF)
483bcb2dfaeSJed Brown
484bcb2dfaeSJed Brownwhere we have exploited $\bm F \bm C^{-1} = \bm F^{-T}$ and
485bcb2dfaeSJed Brown
486bcb2dfaeSJed Brown$$
487bcb2dfaeSJed 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}
488bcb2dfaeSJed Brown$$
489bcb2dfaeSJed Brown
4908791656fSJed BrownWe prefer to compute with {eq}`eq-neo-hookean-incremental-stress` because {eq}`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.
491bcb2dfaeSJed Brown:::
492bcb2dfaeSJed Brown
493bcb2dfaeSJed Brown:::{dropdown} $\diff\bm S$ in index notation
4948791656fSJed BrownIt is sometimes useful to express {eq}`eq-neo-hookean-incremental-stress` in index notation,
495bcb2dfaeSJed Brown
496bcb2dfaeSJed Brown$$
497bcb2dfaeSJed Brown\begin{aligned}
498bcb2dfaeSJed Brown\diff\bm S_{IJ} &= \frac{\partial \bm S_{IJ}}{\partial \bm E_{KL}} \diff \bm E_{KL} \\
499bcb2dfaeSJed 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} \\
500bcb2dfaeSJed 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} \,,
501bcb2dfaeSJed Brown\end{aligned}
502bcb2dfaeSJed Brown$$ (eq-neo-hookean-incremental-stress-index)
503bcb2dfaeSJed Brown
504bcb2dfaeSJed Brownwhere we have identified the effective elasticity tensor $\mathsf C = \mathsf C_{IJKL}$.
505bcb2dfaeSJed 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.
506bcb2dfaeSJed 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
507bcb2dfaeSJed Brown
508bcb2dfaeSJed Brown1. recover $\bm C^{-1}$ and $\log J$ (either stored at quadrature points or recomputed),
5098791656fSJed Brown2. proceed with $3\times 3$ matrix products as in {eq}`eq-neo-hookean-incremental-stress` or the second line of {eq}`eq-neo-hookean-incremental-stress-index` to compute $\diff \bm S$ while avoiding computation or storage of higher order tensors, and
5108791656fSJed Brown3. conclude by {eq}`eq-diff-P`, where $\bm S$ is either stored or recomputed from its definition exactly as in the nonlinear residual evaluation.
511bcb2dfaeSJed Brown:::
512bcb2dfaeSJed Brown
5138791656fSJed BrownNote that the Newton linearization of {eq}`hyperelastic-weak-form-initial` may be written as a weak form for linear operators: find $\diff\bm u \in \mathcal V_0$ such that
514bcb2dfaeSJed Brown
515bcb2dfaeSJed Brown$$
516bcb2dfaeSJed Brown\int_{\Omega_0} \nabla_X \bm v \!:\! \diff\bm P dV = \text{rhs}, \quad \forall \bm v \in \mathcal V_0,
517bcb2dfaeSJed Brown$$
518bcb2dfaeSJed Brown
5198791656fSJed Brownwhere $\diff \bm P$ is defined by {eq}`eq-diff-P` and {eq}`eq-neo-hookean-incremental-stress`, and $\mathcal V_0$ is the homogeneous space corresponding to $\mathcal V$.
520bcb2dfaeSJed Brown
521bcb2dfaeSJed Brown:::{note}
522bcb2dfaeSJed 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.
523bcb2dfaeSJed 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.
524bcb2dfaeSJed 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.
5258791656fSJed BrownIn the case where complete linearization is preferred, note the symmetry $\mathsf C_{IJKL} = \mathsf C_{KLIJ}$ evident in {eq}`eq-neo-hookean-incremental-stress-index`, thus $\mathsf C$ can be stored as a symmetric $6\times 6$ matrix, which has 21 unique entries.
526bcb2dfaeSJed BrownAlong with 6 entries for $\bm S$, this totals 27 entries of overhead compared to computing everything from $\bm F$.
527bcb2dfaeSJed 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.
528bcb2dfaeSJed Brown:::
529bcb2dfaeSJed Brown
530bcb2dfaeSJed Brown(problem-hyperelasticity-finite-strain-current-configuration)=
531bcb2dfaeSJed Brown
532bcb2dfaeSJed Brown## Hyperelasticity in current configuration
533bcb2dfaeSJed Brown
534bcb2dfaeSJed BrownIn the preceeding discussion, all equations have been formulated in the initial configuration.
535bcb2dfaeSJed 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.
536bcb2dfaeSJed Brown
537bcb2dfaeSJed Brown1. Body forces (like gravity), traction, and contact are more easily defined in the current configuration.
538bcb2dfaeSJed Brown2. Mesh quality in the initial configuration can be very bad for large deformation.
539bcb2dfaeSJed Brown3. The required storage and numerical representation can be smaller in the current configuration.
540bcb2dfaeSJed Brown
541bcb2dfaeSJed 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.
5428791656fSJed BrownThere are multiple commuting paths from the nonlinear weak form in initial configuration {eq}`hyperelastic-weak-form-initial` to the Jacobian weak form in current configuration {eq}`jacobian-weak-form-current`.
543bcb2dfaeSJed BrownOne may push forward to the current configuration and then linearize or linearize in initial configuration and then push forward, as summarized below.
544bcb2dfaeSJed Brown
545bcb2dfaeSJed Brown$$
546bcb2dfaeSJed Brown\begin{CD}
547bcb2dfaeSJed Brown  {\overbrace{\nabla_X \bm{v} \tcolon \bm{FS}}^{\text{Initial Residual}}}
548bcb2dfaeSJed Brown  @>{\text{push forward}}>{}>
549bcb2dfaeSJed Brown  {\overbrace{\nabla_x \bm{v} \tcolon \bm{\tau}}^{\text{Current Residual}}} \\
550bcb2dfaeSJed Brown  @V{\text{linearize}}V{\begin{smallmatrix} \diff\bm F = \nabla_X\diff\bm u \\ \diff\bm S(\diff\bm E) \end{smallmatrix}}V
551bcb2dfaeSJed 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 \\
552bcb2dfaeSJed Brown  {\underbrace{\nabla_X\bm{v}\tcolon \Big(\diff\bm{F}\bm{S} + \bm{F}\diff\bm{S}\Big)}_\text{Initial Jacobian}}
553bcb2dfaeSJed Brown  @>{\text{push forward}}>{}>
554bcb2dfaeSJed Brown  {\underbrace{\nabla_x\bm{v}\tcolon \Big(\diff\bm{\tau} -\bm{\tau}(\nabla_x \diff\bm{u})^T \Big)}_\text{Current Jacobian}}
555bcb2dfaeSJed Brown\end{CD}
556bcb2dfaeSJed Brown$$ (initial-current-linearize)
557bcb2dfaeSJed Brown
558bcb2dfaeSJed BrownWe will follow both paths for consistency and because both intermediate representations may be useful for implementation.
559bcb2dfaeSJed Brown
560bcb2dfaeSJed Brown### Push forward, then linearize
561bcb2dfaeSJed Brown
5628791656fSJed BrownThe first term of {eq}`hyperelastic-weak-form-initial` can be rewritten in terms of the symmetric Kirchhoff stress tensor
563bcb2dfaeSJed Brown$\bm{\tau}=J\bm{\sigma}=\bm{P}\bm{F}^T = \bm F \bm S \bm F^T$ as
564bcb2dfaeSJed Brown
565bcb2dfaeSJed Brown$$
566bcb2dfaeSJed 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}
567bcb2dfaeSJed Brown$$
568bcb2dfaeSJed Brown
569bcb2dfaeSJed Browntherefore, the weak form in terms of $\bm{\tau}$ and $\nabla_x$ with integral over $\Omega_0$ is
570bcb2dfaeSJed Brown
571bcb2dfaeSJed Brown$$
572bcb2dfaeSJed Brown\int_{\Omega_0}{\nabla_x \bm{v} \tcolon \bm{\tau}} \, dV
573bcb2dfaeSJed Brown - \int_{\Omega_0}{\bm{v} \cdot \rho_0 \bm{g}} \, dV
574bcb2dfaeSJed Brown - \int_{\partial \Omega_0}{\bm{v}\cdot(\bm{P}\cdot\hat{\bm{N}})} \, dS
575bcb2dfaeSJed Brown = 0, \quad \forall \bm v \in \mathcal V.
576bcb2dfaeSJed Brown$$ (hyperelastic-weak-form-current)
577bcb2dfaeSJed Brown
578bcb2dfaeSJed Brown#### Linearize in current configuration
579bcb2dfaeSJed Brown
5808791656fSJed BrownTo derive a Newton linearization of {eq}`hyperelastic-weak-form-current`, first we define
581bcb2dfaeSJed Brown
582bcb2dfaeSJed Brown$$
583bcb2dfaeSJed Brown\nabla_x \diff \bm{u} = \nabla_X \diff \bm{u} \  \bm{F}^{-1} = \diff \bm{F} \bm{F}^{-1}
584bcb2dfaeSJed Brown$$ (nabla_xdu)
585bcb2dfaeSJed Brown
5868791656fSJed Brownand $\bm{\tau}$ for Neo-Hookean materials as the push forward of {eq}`neo-hookean-stress`
587bcb2dfaeSJed Brown
588bcb2dfaeSJed Brown$$
589bcb2dfaeSJed Brown\bm{\tau} = \bm{F}\bm{S}\bm{F}^T = \mu (\bm{b} - \bm I_3) + \lambda \log J \bm{I}_3,
590bcb2dfaeSJed Brown$$ (tau-neo-hookean)
591bcb2dfaeSJed Brown
592bcb2dfaeSJed Brownwhere $\bm{b} = \bm{F} \bm{F}^T$, is the left Cauchy-Green tensor.
593bcb2dfaeSJed BrownThen by expanding the directional derivative of $\nabla_x \bm{v} \tcolon \bm{\tau}$, we arrive at
594bcb2dfaeSJed Brown
595bcb2dfaeSJed Brown$$
596bcb2dfaeSJed 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} .
597bcb2dfaeSJed Brown$$ (hyperelastic-linearization-current1)
598bcb2dfaeSJed Brown
5998791656fSJed BrownThe first term of {eq}`hyperelastic-linearization-current1` can be written as
600bcb2dfaeSJed Brown
601bcb2dfaeSJed Brown$$
602bcb2dfaeSJed 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}
603bcb2dfaeSJed Brown$$
604bcb2dfaeSJed Brown
6058791656fSJed Brownwhere we have used $\diff \bm{F}^{-1}=-\bm{F}^{-1} \diff \bm{F} \bm{F}^{-1}$ and {eq}`nabla_xdu`.
6068791656fSJed BrownUsing this and {eq}`hyperelastic-linearization-current1` in {eq}`hyperelastic-weak-form-current` yields the weak form in the current configuration
607bcb2dfaeSJed Brown
608bcb2dfaeSJed Brown$$
609bcb2dfaeSJed Brown\int_{\Omega_0} \nabla_x \bm v \tcolon \Big(\diff\bm\tau - \bm\tau (\nabla_x \diff\bm u)^T \Big) = \text{rhs}.
610bcb2dfaeSJed Brown$$ (jacobian-weak-form-current)
611bcb2dfaeSJed Brown
612bcb2dfaeSJed BrownIn the following, we will sometimes make use of the incremental strain tensor in the current configuration,
613bcb2dfaeSJed Brown
614bcb2dfaeSJed Brown$$
615bcb2dfaeSJed Brown\diff\bm\epsilon \equiv \frac{1}{2}\Big(\nabla_x \diff\bm{u} + (\nabla_x \diff\bm{u})^T   \Big) .
616bcb2dfaeSJed Brown$$
617bcb2dfaeSJed Brown
618bcb2dfaeSJed Brown:::{dropdown} Deriving $\diff\bm\tau$ for Neo-Hookean material
619bcb2dfaeSJed BrownTo derive a useful expression of $\diff\bm\tau$ for Neo-Hookean materials, we will use the representations
620bcb2dfaeSJed Brown
621bcb2dfaeSJed Brown$$
622bcb2dfaeSJed Brown\begin{aligned}
623bcb2dfaeSJed Brown\diff \bm{b} &= \diff \bm{F} \bm{F}^T + \bm{F} \diff \bm{F}^T \\
624bcb2dfaeSJed Brown&= \nabla_x \diff \bm{u} \ \bm{b} + \bm{b} \ (\nabla_x \diff \bm{u})^T \\
625bcb2dfaeSJed 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
626bcb2dfaeSJed Brown\end{aligned}
627bcb2dfaeSJed Brown$$
628bcb2dfaeSJed Brown
629bcb2dfaeSJed Brownand
630bcb2dfaeSJed Brown
631bcb2dfaeSJed Brown$$
632bcb2dfaeSJed 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}
633bcb2dfaeSJed Brown$$
634bcb2dfaeSJed Brown
6358791656fSJed BrownSubstituting into {eq}`tau-neo-hookean` gives
636bcb2dfaeSJed Brown
637bcb2dfaeSJed Brown$$
638bcb2dfaeSJed Brown\begin{aligned}
639bcb2dfaeSJed Brown\diff \bm{\tau} &= \mu \diff \bm{b} + \lambda \trace (\diff\bm\epsilon) \bm I_3 \\
640bcb2dfaeSJed 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} \\
641bcb2dfaeSJed Brown&\quad + (\nabla_x \diff\bm u)\underbrace{\Big( \mu (\bm b - \bm I_3) + \lambda \log J \bm I_3 \Big)}_{\bm\tau} \\
642bcb2dfaeSJed 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 ,
643bcb2dfaeSJed Brown\end{aligned}
644bcb2dfaeSJed Brown$$ (dtau-neo-hookean)
645bcb2dfaeSJed Brown
646bcb2dfaeSJed Brownwhere the final expression has been identified according to
647bcb2dfaeSJed Brown
648bcb2dfaeSJed Brown$$
649bcb2dfaeSJed 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.
650bcb2dfaeSJed Brown$$
651bcb2dfaeSJed Brown:::
652bcb2dfaeSJed Brown
653bcb2dfaeSJed BrownCollecting terms, we may thus opt to use either of the two forms
654bcb2dfaeSJed Brown
655bcb2dfaeSJed Brown$$
656bcb2dfaeSJed Brown\begin{aligned}
657bcb2dfaeSJed 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 \\
658bcb2dfaeSJed Brown&= (\nabla_x \diff\bm u)\bm\tau + \lambda \trace(\diff\bm\epsilon) \bm I_3 + 2(\mu - \lambda \log J) \diff\bm\epsilon,
659bcb2dfaeSJed Brown\end{aligned}
660bcb2dfaeSJed Brown$$ (cur_simp_Jac)
661bcb2dfaeSJed Brown
662bcb2dfaeSJed Brownwith the last line showing the especially compact representation available for Neo-Hookean materials.
663bcb2dfaeSJed Brown
664bcb2dfaeSJed Brown### Linearize, then push forward
665bcb2dfaeSJed Brown
666bcb2dfaeSJed BrownWe can move the derivatives to the current configuration via
667bcb2dfaeSJed Brown
668bcb2dfaeSJed Brown$$
669bcb2dfaeSJed 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
670bcb2dfaeSJed Brown$$
671bcb2dfaeSJed Brown
672bcb2dfaeSJed Brownand expand
673bcb2dfaeSJed Brown
674bcb2dfaeSJed Brown$$
675bcb2dfaeSJed Brown\begin{aligned}
676bcb2dfaeSJed Brown\diff\bm P \bm F^T &= \diff\bm F \bm S \bm F^T + \bm F \diff\bm S \bm F^T \\
677bcb2dfaeSJed 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 .
678bcb2dfaeSJed Brown\end{aligned}
679bcb2dfaeSJed Brown$$
680bcb2dfaeSJed Brown
681bcb2dfaeSJed Brown:::{dropdown} Representation of $\bm F \diff\bm S \bm F^T$ for Neo-Hookean materials
6828791656fSJed BrownNow we push {eq}`eq-neo-hookean-incremental-stress` forward via
683bcb2dfaeSJed Brown
684bcb2dfaeSJed Brown$$
685bcb2dfaeSJed Brown\begin{aligned}
686bcb2dfaeSJed Brown\bm F \diff\bm S \bm F^T &= \lambda (\bm C^{-1} \!:\! \diff\bm E) \bm F \bm C^{-1} \bm F^T
687bcb2dfaeSJed Brown  + 2 (\mu - \lambda \log J) \bm F \bm C^{-1} \diff\bm E \, \bm C^{-1} \bm F^T \\
688bcb2dfaeSJed 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} \\
689bcb2dfaeSJed Brown    &= \lambda \operatorname{trace}(\nabla_x \diff\bm u) \bm I_3 + 2 (\mu - \lambda \log J) \diff\bm \epsilon
690bcb2dfaeSJed Brown\end{aligned}
691bcb2dfaeSJed Brown$$
692bcb2dfaeSJed Brown
693bcb2dfaeSJed Brownwhere we have used
694bcb2dfaeSJed Brown
695bcb2dfaeSJed Brown$$
696bcb2dfaeSJed Brown\begin{aligned}
697bcb2dfaeSJed Brown\bm C^{-1} \!:\! \diff\bm E &= \bm F^{-1} \bm F^{-T} \!:\! \bm F^T \diff\bm F \\
698bcb2dfaeSJed Brown&= \operatorname{trace}(\bm F^{-1} \bm F^{-T} \bm F^T \diff \bm F) \\
699bcb2dfaeSJed Brown&= \operatorname{trace}(\bm F^{-1} \diff\bm F) \\
700bcb2dfaeSJed Brown&= \operatorname{trace}(\diff \bm F \bm F^{-1}) \\
701bcb2dfaeSJed Brown&= \operatorname{trace}(\nabla_x \diff\bm u)
702bcb2dfaeSJed Brown\end{aligned}
703bcb2dfaeSJed Brown$$
704bcb2dfaeSJed Brown
705bcb2dfaeSJed Brownand
706bcb2dfaeSJed Brown
707bcb2dfaeSJed Brown$$
708bcb2dfaeSJed Brown\begin{aligned}
709bcb2dfaeSJed 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} \\
710bcb2dfaeSJed Brown&= \frac 1 2 (\diff \bm F \bm F^{-1} + \bm F^{-T} \diff\bm F^T) \\
711bcb2dfaeSJed Brown&= \frac 1 2 \Big(\nabla_x \diff\bm u + (\nabla_x\diff\bm u)^T \Big) \equiv \diff\bm\epsilon.
712bcb2dfaeSJed Brown\end{aligned}
713bcb2dfaeSJed Brown$$
714bcb2dfaeSJed Brown:::
715bcb2dfaeSJed Brown
716bcb2dfaeSJed BrownCollecting terms, the weak form of the Newton linearization for Neo-Hookean materials in the current configuration is
717bcb2dfaeSJed Brown
718bcb2dfaeSJed Brown$$
719bcb2dfaeSJed 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},
720bcb2dfaeSJed Brown$$ (jacobian-weak-form-current2)
721bcb2dfaeSJed Brown
7228791656fSJed Brownwhich equivalent to Algorithm 2 of {cite}`davydov2020matrix` and requires only derivatives with respect to the current configuration. Note that {eq}`cur_simp_Jac` and {eq}`jacobian-weak-form-current2` have recovered the same representation
723bcb2dfaeSJed Brownusing different algebraic manipulations.
724bcb2dfaeSJed Brown
725bcb2dfaeSJed Brown:::{tip}
7268791656fSJed BrownWe define a second order *Green-Euler* strain tensor (cf. Green-Lagrange strain {eq}`eq-green-lagrange-strain`) as
727bcb2dfaeSJed Brown
728bcb2dfaeSJed Brown$$
729bcb2dfaeSJed 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).
730bcb2dfaeSJed Brown$$ (green-euler-strain)
731bcb2dfaeSJed Brown
7328791656fSJed BrownThen, the Kirchhoff stress tensor {eq}`tau-neo-hookean` can be written as
733bcb2dfaeSJed Brown
734bcb2dfaeSJed Brown$$
735bcb2dfaeSJed Brown\bm \tau = \lambda \log J \bm I_{3} + 2\mu \bm e,
736bcb2dfaeSJed Brown$$ (tau-neo-hookean-stable)
737bcb2dfaeSJed Brown
7388791656fSJed Brownwhich is more numerically stable for small strain, and thus preferred for computation. Note that the $\log J$ is computed via `log1p` {eq}`log1p`, as we discussed in the previous tip.
739bcb2dfaeSJed Brown:::
740bcb2dfaeSJed Brown
741bcb2dfaeSJed Brown### Jacobian representation
742bcb2dfaeSJed Brown
743bcb2dfaeSJed 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.
744bcb2dfaeSJed Brown
74568e843eeSJed Brown:::{list-table} Four algorithms for Jacobian action in finite strain hyperelasticity problem
746bcb2dfaeSJed Brown:header-rows: 1
74768e843eeSJed Brown:widths: auto
748bcb2dfaeSJed Brown
74968e843eeSJed Brown* - Option `-problem`
750bcb2dfaeSJed Brown  - Static storage
751bcb2dfaeSJed Brown  - Computed storage
75268e843eeSJed Brown  - \# scalars
753bcb2dfaeSJed Brown  - Equations
754bcb2dfaeSJed Brown
755bcb2dfaeSJed Brown
75668e843eeSJed Brown* - `FSInitial-NH1`
75768e843eeSJed Brown  - $\nabla_{X} \hat X, \operatorname{det}\nabla_{\hat X} X$
75868e843eeSJed Brown  - $\nabla_X \bm u$
759bcb2dfaeSJed Brown  - 19
76068e843eeSJed Brown  - {eq}`eq-diff-P` {eq}`eq-neo-hookean-incremental-stress`
761bcb2dfaeSJed Brown
76268e843eeSJed Brown* - `FSInitial-NH2`
76368e843eeSJed Brown  - $\nabla_{X} \hat X, \operatorname{det}\nabla_{\hat X} X$
76468e843eeSJed Brown  - $\nabla_X \bm u, \bm C^{-1}, \lambda \log J$
765bcb2dfaeSJed Brown  - 26
76668e843eeSJed Brown  - {eq}`eq-diff-P` {eq}`eq-neo-hookean-incremental-stress`
767bcb2dfaeSJed Brown
76868e843eeSJed Brown* - `FSCurrent-NH1`
76968e843eeSJed Brown  - $\nabla_{X} \hat X, \operatorname{det}\nabla_{\hat X} X$
77068e843eeSJed Brown  - $\nabla_X \bm u$
771bcb2dfaeSJed Brown  - 19
77268e843eeSJed Brown  - {eq}`jacobian-weak-form-current` {eq}`nabla_xdu`
773bcb2dfaeSJed Brown
77468e843eeSJed Brown* - `FSCurrent-NH2`
77568e843eeSJed Brown  - $\operatorname{det}\nabla_{\hat X} X$
77668e843eeSJed Brown  - $\nabla_x \hat X, \bm \tau, \lambda \log J$
777bcb2dfaeSJed Brown  - 17
77868e843eeSJed Brown  - {eq}`jacobian-weak-form-current` {eq}`jacobian-weak-form-current2`
77968e843eeSJed Brown:::
780