.. _models-hyperelastic_damage:

*************************
Hyperelastic Damage Model
*************************

Theory
======

The hyperelastic damage model is an isotropic, strain rate and temperature independent continuum damage formulation.  
In this case, the specific form is that discussed by Holzapfel [:footcite:`holzapfel`] and proposed primarily for particulate reinforced 
(filled) rubber-like materials exhibiting the so called Mullins effect.  Specifically, this model utilizes a Kachanov-like 
effective stress concept to propose an *effective* Helmholtz free energy, :math:`W`, of the form

.. math::

   W=\left(1-\zeta\right)W_0\left(C_{ij}\right),

in which :math:`\zeta=\left[0,1\right]` is the isotropic damage variable and :math:`W_0` is the Helmholtz free energy of the 
*undamaged* material and :math:`C_{ij}` is the right Cauchy-Green tensor (:math:`C_{ij}=F_{ki}F_{kj}` with :math:`F_{ij}` the 
deformation gradient).  The free energy expression of the neo-Hookean model (:numref:`models-neo_hookean`) 
is used to describe the undamaged strain energy and is given as,

.. math::

   W_0\left(C_{ij}\right)=\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),

with :math:`K` and :math:`\mu` the bulk and shear moduli, :math:`J` the determinant of the deformation gradient and :math:`\bar{C}_{kk}` the isochoric 
part of the deformation -- :math:`\bar{C}_{ij}=\bar{F}_{ki}\bar{F}_{kj}` and :math:`\bar{F}_{ij}=J^{-1/3}F_{ij}`.  In the undamaged configuration, 
the second Piola-Kirchoff stress, :math:`S^0_{ij}`, is the energetic conjugate of the right Cauchy-Green strain such that 

.. math::

   S^0_{ij}=2\frac{\partial W_0}{\partial C_{ij}},

leading to a *damaged* stress of the form,

.. math::

   S_{ij}=\left(1-\zeta\right)S^0_{ij}.

To describe the softening process, two damage related variables are needed.  The first is the previously mentioned smooth, continuous 
effective damage variable, :math:`\zeta`, while the second is the so-called discontinuous damage variable, :math:`\alpha`.  In essence, this second 
variable may be considered to be the maximum strain energy in the undamaged material throughout the entire loading history.  This 
statement may be expressed as,

.. math::
   :label: eq:hd-alpha

   \alpha=\max_{s\in\left[0,t\right]}W_{0}\left(s\right),

in which :math:`s` is a history variable representing any time in the loading history and the dependence on :math:`s` in :eq:`eq:hd-alpha` 
is used to indicate the loading history and not an explicit dependence on time or strain rate.  The two damage terms are 
related by assuming :math:`\zeta=\zeta\left(\alpha\right)`.  To ascertain this dependence, 
it is noted that :math:`\zeta\left(0\right)=0` and :math:`\zeta\left(\infty\right)=1` the former explicitly stating that the material is initially 
undamaged and the latter noting in the limit the material is completely damaged the strain energy will go to :math:`\infty`.  These observations 
lead to an expression of the form, 

.. math::
   :label: eq:hd-zetaDef

   \zeta\left(\alpha\right)=\zeta_{\infty}\left[1-\exp\left(-\alpha/\tau\right)\right],

with :math:`\tau` being a constant referred to as the damage saturation parameter and :math:`\zeta_{\infty}` being the maximum value 
of the damage parameter that may be achieved.

The evolution of the damage process is governed by a so-called damage function, :math:`f\left(C_{ij},\alpha\right)` 
(analogous to the yield function in plasticity), postulated as,

.. math::

   f\left(C_{ij},\alpha\right) = \phi\left(C_{ij}\right)-\alpha,

where :math:`\phi` is the thermodynamic driving of the damage process.  In this case, the thermodynamic conjugate of the 
damage variable :math:`\zeta` is the undamaged strain energy, :math:`W_0`, such that :math:`\phi\left(C_{ij}\right)=W_0\left(C_{ij}\right)`.  
By enforcing the consistency condition during damage (:math:`\dot{f}=0`), it can be shown that,

.. math::

   \dot{\alpha}=\dot{\phi}=\frac{\partial W_0}{\partial C_{ij}}\dot{C}_{ij}=\frac{1}{2}S^0_{ij}\dot{C}_{ij}.

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

For the hyperelastic damage model, the first step is to calculate the undamaged second Piola-Kirchoff stress, :math:`S^{0\left(n+1\right)}_{ij}` 
of the current :math:`\left(n+1\right)^{th}` time step.  To this end, the deformation gradient, :math:`F^{\left(n+1\right)}_{ij}`, is calculated 
based on the input stretch, :math:`V^{\left(n+1\right)}_{ij}`, and rotation, :math:`R^{\left(n+1\right)}_{ij}`, tensors 
via the polar decomposition.  The second Piola-Kirchoff stress may then be determined as,

.. math::

   S^{0\left(n+1\right)}_{ij}=\left[\frac{1}{2}K\left(\left(J^{\left(n+1\right)}\right)^2-1\right)I_{il}
                              +\mu \left(J^{\left(n+1\right)}\right)^{-2/3}\left(C^{\left(n+1\right)}_{il}-\frac{1}{3}C^{\left(n+1\right)}_{kk}I_{il}\right)\right]\left(C^{\left(n+1\right)}_{jl}\right)^{-1}.

To determine the damage state, the undamaged strain energy :math:`W^{\left(n+1\right)}_0`, is first calculated as,

.. math::

   W^{\left(n+1\right)}_0=\frac{1}{2}K\left(\frac{1}{2}\left(\left(J^{\left(n+1\right)}\right)^2-1\right)-\ln J^{\left(n+1\right)}\right)
                          +\frac{1}{2}\mu\left[\left(J^{\left(n+1\right)}\right)^{-2/3}C^{\left(n+1\right)}_{kk}-3\right].

The current discrete damage variable, :math:`\alpha^{\left(n+1\right)}`, may then be determined via,

.. math::

   \alpha^{\left(n+1\right)}=\max\left[\alpha^{\left(n\right)},W_0^{\left(n+1\right)}\right],

so that the current continuous damage variable, :math:`\zeta^{\left(n+1\right)}`, is,

.. math::

   \zeta^{\left(n+1\right)}=\zeta_{\infty}\left[1-\exp\left(\alpha^{\left(n+1\right)}/\tau\right)\right].

Finally, these expressions lead to an unrotated Cauchy stress of the form,

.. math::

   T_{ij}^{\left(n+1\right)}=\frac{1}{J^{\left(n+1\right)}}\left(1-\zeta^{\left(n+1\right)}\right)
                              R^{\left(n+1\right)}_{ki}F^{\left(n+1\right)}_{km}S^{0\left(n+1\right)}_{mn}F^{\left(n+1\right)}_{rn}R^{\left(n+1\right)}_{rj}.
 
Verification
============

Given the hyperelastic formulation of the hyperelastic damage model, it is possible
to find closed form solutions for simple loadings.  Two such instances (uniaxial strain and 
simple shear) are considered here to evaluate and verify the response of this implementation.  
In this case, the results explored here are extensions of the neo-Hookean verification tests previously 
discussed in :numref:`models-neo_hookean-verification` and [:footcite:`mat:ref:wmsch2`].  
One set of material properties was used for all tests and they are given in
:numref:`tab-hd-verProps`.  The damage parameters are taken from [:footcite:`holzapfel`].

.. _tab-hd-verProps:

.. csv-table:: The material properties for the hyperelastic damage model used for both the uniaxial and simple shear tests.
   :align: center
   :delim: &
   :header: Name, Description

   :math:`K`    & 0.5 MPa & :math:`\mu`  & 0.375 MPa
   :math:`\zeta_{\infty}` & 0.8 & :math:`\tau` & 0.3 MPa

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

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

.. math::
   :label: eqn:hd-defGrad

   F_{ij}=\lambda\delta_{1i}\delta_{1j} + \delta_{2i}\delta_{2j}+\delta_{3i}\delta_{3j}.
  
As the undamaged material is neo-Hookean, it is noted that the under these loading conditions the stress 
field is found by evaluating relation :eq:`eq-nh5` and may be written as

.. math::

   \sigma^0_{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^0_{22}=\sigma^0_{33} & =\frac{1}{2}K\left(\lambda-\frac{1}{\lambda}\right)-\frac{1}{3}\mu\left(\lambda^2-1\right)\lambda^{-5/3}, \\
   \sigma^0_{12}=\sigma^0_{23}=\sigma^0_{31}& = 0 \nonumber.

 
The damaged, effective stresses are then simply :math:`\sigma_{ij}=\left(1-\zeta\right)\sigma^0_{ij}` and the problem reduces to the determination of :math:`\zeta`.  
In this case, given the deformation gradient in :eq:`eqn:hd-defGrad`, :math:`J=\lambda` and 

.. math::

   W_0=\frac{1}{2}K\left[\frac{1}{2}\left(\lambda^2-1\right)-\ln\lambda\right]+\frac{1}{2}\mu\left[\lambda^{-2/3}\left(\lambda^2+2\right)-3\right].

During loading, :math:`\alpha=W_0` while during unloading :math:`\alpha=W_0\left(\lambda^{\text{max}}\right)` and :math:`\zeta` can be determined from :eq:`eq:hd-zetaDef`.
 
Both the corresponding analytical and numerical solutions are presented in :numref:`fig-hd-uniaxialResults` for a complete 
loading and unloading cycle.  Note, the damage parameter, :math:`\zeta`, increases during loading but remains constant during 
unloading verifying the irreversibility of the proposed model.

.. _fig-hd-uniaxialResults:

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

   Analytical and numerical results of the stress and damage state 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 prescribed.  Again, from the neo-Hookean model definitions the undamaged stresses may be determined via :eq:`eq-nh5` and noting this is a 
volume preserving definition (:math:`J=1`) leading to expressions of the form, 

.. math::

   \sigma^0_{11} & = \frac{2}{3}\mu\gamma^2, \nonumber \\
   \sigma^0_{22}=\sigma_{33} & = -\frac{1}{3}\mu\gamma^2, \nonumber \\
   \sigma^0_{12} & = \mu\gamma, \\
   \sigma^0_{23}=\sigma^0_{31} & = 0. \nonumber

In this case, the undamaged strain energy is simply,

.. math::

   W_0=\frac{1}{2}\mu\gamma^2,

and :math:`\zeta` may be evaluated via :eq:`eq:hd-zetaDef`.  The effective stresses are then :math:`\sigma_{ij}=\left(1-\zeta\right)\sigma^0_{ij}` 

Both the corresponding analytical and numerical solutions are presented in Figure. :numref:`fig-hd-shearResults` for a complete loading and 
unloading cycle.  Note, the damage parameter, :math:`\zeta`, increases during loading but remains constant during unloading given the 
irreversible form of the damage process.

.. _fig-hd-shearResults:

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

   Analytical and numerical results of the stress and damage state for the simple shear case.

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

.. code-block:: sierrainput

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

.. In the above command blocks:

.. - See :numref:`mat:elasticConstants` for more information on elastic constants input.  The elastic constants describe both the undamaged behavior of the material.

Output variables available for this model are listed in :numref:`out-tab-hd-stateVar`. For information about the hyperelastic damage model, consult [:footcite:`holzapfel`].

.. _out-tab-hd-stateVar:

.. csv-table:: State Variables for HYPERELASTIC DAMAGE Model
   :align: center
   :delim: &
   :header: Name, Description

   ``DAMAGE``   & continuous isotropic damage variable, :math:`\zeta` 
   ``ALPHA``    & discontinuous damage variable, :math:`\alpha` 
   ``PRESSURE`` & reference undamaged tensile pressure, :math:`\left(1/3\right)\left(1-\zeta\right)S_{kk}` 

.. raw::
   html

   <hr>

.. footbibliography::
