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