.. _models-neo_hookean:

*****************
Neo-Hookean Model
*****************

Theory
======

The neo-Hookean model is a hyperelastic generalization of isotropic, small-strain linear elasticity. The stress-strain response for the neo-Hookean model may be determined from a free energy function - in this case the strain energy density, :math:`W`. The form of the strain energy density [:footcite:`SimoHughes:1998`] is

.. math::
   :label: eq-nh1

   W(C_{ij}) = \frac{1}{2}K\left[\frac{1}{2}\left( J^{2}-1 \right) - \ln J \right] + \frac{1}{2}\mu\left( \bar{C}_{kk} - 3 \right),

where :math:`K` and :math:`\mu` are the bulk and shear moduli, respectively. The deformation measure is given by :math:`C_{ij}`, the components of the right Cauchy-Green tensor, where :math:`C_{ij} = F_{ki}F_{kj}`. The determinant of the deformation gradient is given by :math:`J` and is a measure of the volumetric part of the deformation. :math:`\bar{C}_{ij}` provides the isochoric part of the deformation and is given by

.. math::
   :label: nh2

   \bar{C}_{ij} = \bar{F}_{ki}\bar{F}_{kj},\quad
   \bar{F}_{ij} = J^{-1/3}F_{ij}.

The second Piola-Kirchoff stress, with components :math:`S_{ij}`, may be determined by taking a derivative of the strain energy density and the Cauchy stress may be found by mapping from the second Piola-Kirchoff stress. The components of the Cauchy stress are

.. math::
   :label: eq-nh5

   \sigma_{ij} = \frac{1}{2}K \left( J - \frac{1}{J} \right) \delta_{ij}
   + J^{-5/3}\mu\left( B_{ij} - \frac{1}{3}B_{kk}\delta_{ij} \right),

where :math:`B_{ij} = F_{ik}F_{jk}`, are the components of the left Cauchy-Green tensor and :math:`\delta_{ij}` is the Kronecker delta. 

Linearizing :eq:`eq-nh5` we recover small strain linear elasticity

.. math::
   :label: eq-nh6

   \sigma_{ij} & = \left( K - \frac{2}{3}\mu \right) u_{k,k} \delta_{ij}
   + \mu \left( u_{i,j} + u_{j,i} \right) \nonumber \\
   & \\
   & = \left( K - \frac{2}{3}\mu \right) \varepsilon_{kk} \delta_{ij}
   + 2\mu \varepsilon_{ij} \nonumber.

The neo-Hookean model is used for the recoverable (elastic) part for a number of inelastic, finite deformation constitutive models.

Implementation
==============

As a hyperelastic model, the current state of the material may be determined by the total deformation.
To this end we use the polar decomposition of the deformation gradient,

.. math::
   :label: nh-imp1

   F_{ij} = V_{ik}R_{kj},

in which :math:`V_{ij}` are the components of the left stretch tensor and :math:`R_{ij}` is the corresponding rotation.
Noting that,

.. math::

   B_{ij} = V_{ik}V_{kj},

and :math:`J=\det\left(V_{ij}\right)`, the Cauchy stress (via :eq:`eq-nh5`) is found.
The unrotated stress, :math:`T_{ij}`, which is needed for internal force calculations in Sierra/SM, is found using the transformation

.. math::

   T_{ij} = R_{ki}\sigma_{kl}R_{lj}.

.. _models-neo_hookean-verification:

Verification
============

It is possible to find closed form solutions for a number of loadings. Five problems are described here: uniaxial stress, pure shear strain, pure shear stress, uniaxial strain and simple shear. One set of material properties was used for all tests and they are given in :numref:`tab-nh-verProps`. The elastic modulus and Poisson's ratio are given in addition to the bulk and shear moduli.

.. _tab-nh-verProps:

.. csv-table:: The material properties for the neo-Hookean model used for both the uniaxial and simple shear tests.
   :align: center
   :delim: &

   :math:`K` & 0.5 MPa & :math:`\mu` & 0.375 MPa
   :math:`E` & 0.9 MPa & :math:`\nu` & 0.2

Uniaxial Stress
---------------

For uniaxial stress we will assume, without loss of generality, that :math:`\sigma_{11} \ne 0`. The deformation, in terms of the components of the left stretch tensor, for this stress state is

.. math::

   V_{11} = \lambda_{1},\quad
   V_{22} = V_{33} = \lambda_{2},

with all other components being zero.

The Cauchy stress is given by :eq:`eq-nh5`, however for simplicity we will use the Kirchhoff stress instead

.. math::

   \tau_{ij} = J \sigma_{ij},

where in what follows :math:`\tau_{11} = \tau`. With the lateral stresses being zero we have two equations

.. math::

   \tau & = \frac{K}{2} \left( J^{2} - 1 \right) + \frac{2}{3} \mu J^{-2/3} \left( \lambda_{1}^{2} - \lambda_{2}^{2} \right)
   \nonumber \\
   \\
   0 & = \frac{K}{2} \left( J^{2} - 1 \right) - \frac{1}{3} \mu J^{-2/3} \left( \lambda_{1}^{2} - \lambda_{2}^{2} \right).
   \nonumber

First, we solve for :math:`J` by looking at the trace of the stress tensor. This gives us

.. math::

   \tau = \frac{3K}{2} \left( J^{2} - 1 \right).
   J = \sqrt{1 + \frac{2\tau}{3K}}.

Once we have :math:`J` we can write :math:`\lambda_{2}^{2} = J/\lambda_{1}` and solve for :math:`\lambda_{1}` by looking at the deviatoric part of the Kirchhoff stress. For this we have

.. math::

   \tau = \mu J^{-2/3} \left( \lambda_{1}^{2} - \frac{J}{\lambda_{1}} \right).

Rearranging we get a cubic equation for :math:`\lambda_{1}`

.. math::

   \lambda_{1}^{3}  - \left( \frac{\tau}{\mu} J^{2/3} \right) \lambda_{1} - J = 0.

A solution for this can be found with the following substitution

.. math::
   :label: eq-nha1

   \lambda_{1} = x + \frac{p}{3x},\quad
   p = \frac{\tau}{\mu} J^{2/3},

which gives a quadratic equation for :math:`x^{3}`

.. math::

   x^{6} - J x^{3} + \frac{p^{3}}{27} = 0.

The one meaningful solution to this polynomial is

.. math::

   x = \left[ \frac{J}{2} + \sqrt{ \left( \frac{J}{2} \right)^{2} - \left( \frac{p}{3} \right)^{3} } \; \right]^{1/3},

with which we can substitute into :eq:`eq-nha1` to get :math:`\lambda_{1}`. With :math:`J` and :math:`\lambda_{1}` we can solve for :math:`\lambda_{2}`. Note that in this solution the axial Kirchhoff stress, :math:`\tau`, is the independent variable.

.. _fig-nh-uniaxialStressResults:

.. subfigure:: AB
   :subcaptions: below
   :align: center

   .. image:: ../../_static/figures/neoHookeanUniaxialStressVerification1.png
      :alt: Axial stress
      :scale: 25 %

   .. image:: ../../_static/figures/neoHookeanUniaxialStressVerification2.png
      :alt: Lateral Strain
      :scale: 25 %

   Analytical and numerical results for the (a) uniaxial stress and (b) lateral strain. The green line gives the linear elastic response.

This solution is compared to the solution from a single element problem in Sierra/SM in :numref:`fig-nh-uniaxialStressResults`\ (a) and :numref:`fig-nh-uniaxialStressResults`\ (b). It should be noted that the response of the neo-Hookean model is *slightly* nonlinear. The linear elastic solution is given by the green line in each figure.

Pure Shear Strain
-----------------

For pure shear strain the deformation gradient, which is symmetric, is 

.. math::

   \left[ F_{ij} \right] =
   \frac{1}{2}\begin{bmatrix}
     \left( \lambda + \lambda^{-1} \right) &  \left( \lambda - \lambda^{-1} \right) & 0 \\
     \left( \lambda - \lambda^{-1} \right) &  \left( \lambda + \lambda^{-1} \right) & 0 \\
     0 & 0 & 2
   \end{bmatrix},

which gives no volume change, :math:`J=1`. Since there is no volume chance, the Kirchhoff stress is equal to the Cauchy stress: :math:`{\boldsymbol\tau} = {\boldsymbol\sigma}`. Using :eq:`eq-nh5`, the non-zero stress components are

.. math::

   \sigma_{12} & = \frac{\mu}{2} \left( \lambda^{2} - \lambda^{-2} \right) \nonumber \\
   \nonumber \\
   \sigma_{11} = \sigma_{22} & = \frac{\mu}{3} \left[ \frac{1}{2} \left( \lambda^{2} + \lambda^{-2} \right) - 1 \right] \\
   \nonumber \\
   \sigma_{33} & = \frac{\mu}{3} \left( 2 - \lambda^{2} + \lambda^{-2} \right).
   \nonumber

The results of a single element problem in Sierra/SM are compared with the analytical solution in :numref:`fig-nh-shearStrainResults`. It is interesting to note that the normal stresses, :math:`\sigma_{11}`, :math:`\sigma_{22}`, and :math:`\sigma_{33}` are not equal to zero. This is a much different result than what we get for the linear hypoelastic model.

.. _fig-nh-shearStrainResults:

.. figure:: ../../_static/figures/neoHookeanShearStrainVerification.png
   :align: center
   :scale: 25 %

   Analytical and numerical results for the neo-Hookean model subjected to a pure shear strain. The solid lines are the analytical results and the boxes are results from Sierra/SM.

Pure Shear Stress
-----------------

.. _fig-nh-shearStressResults:

.. figure:: ../../_static/figures/neoHookeanShearStressVerification.png
   :align: center
   :scale: 25 %

   Analytical and numerical results for the neo-Hookean model subjected to a pure shear stress. The curve gives the logarithmic strain component, :math:`\varepsilon_{33} = \frac{1}{2} \ln B`. The solid lines are the analytical results and the boxes are results from Sierra/SM.

Since pure shear strain did not result in a pure shear stress state, we do not expect a pure shear stress state to result in a pure shear strain state.
For pure shear stress the only non-zero stress component is

.. math::

   \sigma_{12} = \tau = \mu B_{12},

and using :eq:`eq-nh5` it can be shown that :math:`J=1`.
The deformation, in terms of the left Cauchy-Green deformation tensor, is

.. math::

   \left[ B_{ij} \right] = \begin{bmatrix}
   B & B_{12} & 0 \\ B_{12} & B & 0 \\ 0 & 0 & B
   \end{bmatrix}.

The equation we need to solve for the deformation is :math:`\det{\bf B} = 1`. This gives us the cubic equation

.. math::

   B^{3} - \left( \frac{\tau}{\mu} \right)^{2} B - 1 = 0.

This is a cubic equation of the same form as that in the uniaxial stress problem. We make the substitution

.. math::
   :label: eq-nh-shearstress1

   B = x + \frac{p}{3x},\ p = \left( \frac{\tau}{\mu} \right)^{2}.

This gives us a quadratic equation in :math:`x^{3}`

.. math::

   x^{6} - x^{3} + \frac{p^{3}}{27} = 0,

which has the solution

.. math::

   x = \left[ \frac{1}{2} + \frac{1}{2} \sqrt{ 1 - \frac{4 p^{3}}{27} } \; \right]^{1/3}.

Substituting this solution into :eq:`eq-nh-shearstress1` gives :math:`B`.

The results of a single element problem in Sierra/SM are compared with the analytical solution in :numref:`fig-nh-shearStressResults`.
Of interest here is the fact that the normal strains, :math:`\varepsilon_{11}`, :math:`\varepsilon_{22}`, and :math:`\varepsilon_{33}` are not equal to zero.
Again, this is a different result than what we get for the linear hypoelastic model.

Uniaxial Strain
---------------

First, utilizing a displacement condition corresponding to uniaxial strain results in a deformation gradient of the form,

.. math::

   F_{ij}=\lambda\delta_{1i}\delta_{1j} + \delta_{2i}\delta_{2j}+\delta_{3i}\delta_{3j}. 

By evaluating relation :eq:`eq-nh5` with this deformation field produces stresses that may be written as

.. math::

   \sigma_{11} & = \frac{1}{2}K\left(\lambda-\frac{1}{\lambda}\right)+\frac{2}{3}\mu\left(\lambda^2-1\right)\lambda^{-5/3}, \nonumber \\
   \\
   \sigma_{22} = \sigma_{33} & = \frac{1}{2}K\left(\lambda-\frac{1}{\lambda}\right)-\frac{1}{3}\mu\left(\lambda^2-1\right)\lambda^{-5/3} \nonumber

with the shear stress components equal to zero. Both the corresponding analytical and numerical solutions are presented in :numref:`fig-nh-uniaxialResults`.

.. _fig-nh-uniaxialResults:

.. figure:: ../../_static/figures/uniaxialResults.png
   :align: center
   :scale: 25 %

   Analytical and numerical results for the uniaxial stretch case.

Simple Shear
------------

For the simple shear case, a deformation gradient of the form,

.. math::

   F_{ij}=\delta_{ij}+\gamma\delta_{1i}\delta_{2j},

is assumed.  Noting this is a volume preserving deformation (:math:`J=1`) and again evaluating :eq:`eq-nh5` produces stresses that may be written as,

.. math::

   \sigma_{11} & =W \frac{2}{3}\mu\gamma^2 \nonumber \\
   \nonumber \\
   \sigma_{22}=\sigma_{33} & = -\frac{1}{3}\mu\gamma^2 \\
   \nonumber \\
   \sigma_{12} & = \mu\gamma

Both the corresponding analytical and numerical solutions are presented in :numref:`fig-nh-shearResults`.

.. _fig-nh-shearResults:

.. figure:: ../../_static/figures/neoHookeanShearVerification.png
   :align: center
   :scale: 25 %

   Analytical and numerical results for the simple shear case.

User Guide
==========

.. code-block:: sierrainput

   BEGIN PARAMETERS FOR MODEL NEO_HOOKEAN
     #
     # Elastic constants
     #
     YOUNGS MODULUS = <real>
     POISSONS RATIO = <real>
     SHEAR MODULUS  = <real>
     BULK MODULUS   = <real>
     LAMBDA         = <real>
     TWO MU         = <real>
   END [PARAMETERS FOR MODEL NEO_HOOKEAN]

There are no output variables available for the neo-Hookean model.

.. raw::
   html

   <hr>

.. footbibliography::
