The Green-Lagrange strain tensor is defined by
@f[
\mathbf{E}:= \frac{1}{2}[\mathbf{C} - \mathbf{I} ]
- = \underbrace{\frac{1}{2}[\textrm{Grad}^T\ \mathbf{U} + \textrm{Grad}\ mathbf{U}]}_{\boldsymbol{\varepsilon}}
+ = \underbrace{\frac{1}{2}[\textrm{Grad}^T \mathbf{U} + \textrm{Grad}\mathbf{U}]}_{\boldsymbol{\varepsilon}}
+ \frac{1}{2}[\textrm{Grad}^T\ \mathbf{U}][\textrm{Grad}\ \mathbf{U}] \, ,
@f]
If the assumption of infinitesimal deformations is valid, then the second term
where $\kappa := \lambda + 2/3 \mu$ is the bulk modulus
and $\overline{I}_1 := \textrm{tr}\ \overline{\mathbf{b}}$.
The function $\mathcal{G}(J)$ is required to be strictly convex and satisfy the condition $\mathcal{G}(1) = 0$.
-In this work $\mathcal{G}:=\bigl[ \frac{1}{2} [{J}^{2} - 1 ] - \textrm{ln}( {J}) ] \bigr]$.
+In this work $\mathcal{G}:=\frac{1}{4} [ J^2 - 1 - 2\textrm{ln}J ]$.
Incompressibility imposes the isochoric constraint that $J=1$ for all motions $\mathbf{\varphi}$.
The Helmholtz free energy corresponding to an incompressible neo-Hookean material is given by
// That is $\overline{I}_1 :=\textrm{tr}(\overline{\mathbf{b}})$.
// In this example the SEF that governs the volumetric
// response is defined as
-// $ \Psi_{\text{vol}}(\widetilde{J}) = \kappa \bigl[ \frac{1}{2} [ \widetilde{J}^{2} - 1 ] - \textrm{ln}( \widetilde{J}) ] \bigr] $
+// $ \Psi_{\text{vol}}(\widetilde{J}) = \kappa \frac{1}{4} [ \widetilde{J}^2 - 1 - 2\textrm{ln}\widetilde{J} ]$.
// where $\kappa:= \lambda + 2/3 \mu$ is the <a href="http://en.wikipedia.org/wiki/Bulk_modulus">bulk modulus</a> and
// $\lambda$ is <a href="http://en.wikipedia.org/wiki/Lam%C3%A9_parameters">Lame's first parameter</a>.
template<int dim>
// Derivative of the volumetric free energy wrt $\widetilde{J}$
// return $\frac{\partial \Psi_{\text{vol}}(\widetilde{J})}{\partial \widetilde{J}}$
double get_dPsi_vol_dJ(void) const {
- return kappa * (J_tilde - 1.0 / J_tilde);
+ return (kappa / 2.0) * (J_tilde - 1.0 / J_tilde);
}
// Second derivative of the volumetric free energy wrt $\widetilde{J}$
// We calculate
// $\frac{\partial^2 \Psi_{\textrm{vol}}(\widetilde{J})}{\partial \widetilde{J} \partial \widetilde{J}}$
double get_d2Psi_vol_dJ2(void) const {
- return kappa * (1.0 + 1.0 / (J_tilde * J_tilde));
+ return ( (kappa / 2.0) * (1.0 + 1.0 / (J_tilde * J_tilde)));
}
// Return various data that we choose to store with the material