.. _models-johnson_cook:

******************
Johnson-Cook Model
******************

Theory
======

The Johnson-Cook model [:footcite:`mat:ref:johncook`, :footcite:`mat:ref:johncook2`] is an isotropic, hypoelastic plasticity model.  Unlike the previously discussed models, the Johnson-Cook formulation is rate-dependent and as such is often considered for high-rate, finite strain simulations like those for impact. The viscoplastic response is phenomenological in that the form of the model is not derived from any physical mechanisms like other viscoplastic models, e.g. Zerilli-Armstrong [:footcite:`mat:ref:zerilli:1987`], Steinberg-Guinan-Lund [:footcite:`mat:ref:steinberg:1980`, :footcite:`mat:ref:steinberg:1989`], BCJ [:footcite:`mat:ref:brown`], and the MTS model [:footcite:`mat:ref:follansbee:1988`, :footcite:`mat:ref:follansbee:1989`] to name a few.  Like most other rate-dependent models, the current formulation utilizes an effective plastic strain rate, :math:`\dot{\bar{\varepsilon}}^{p}`, to capture rate dependence.

As with other hypoelastic plasticity models, an additive decomposition of of the total rate of deformation such that,

.. math::

    D_{ij}=D^{\text{e}}_{ij}+D^{\text{p}}_{ij},

is used such that an objective stress rate of the form,

.. math::

    \stackrel{\circ}{\sigma}_{ij}=\mathbb{C}_{ijkl}D_{kl}^{\text{e}},

with :math:`\mathbb{C}_{ijkl}` being the fourth-order, isotropic elasticity tensor, may be used.

With respect to the yield behavior, the Johnson-Cook model incorporates both strain rate and temperature, :math:`\theta`, dependence. This leads to a yield function of the form,

.. math::

    f\left(\sigma_{ij},\bar{\varepsilon}^p,\dot{\bar{\varepsilon}}^p,\theta\right)=\phi\left(\sigma_{ij}\right)-\bar{\sigma}\left(\bar{\varepsilon}^p,\dot{\bar{\varepsilon}}^p,\theta\right),

in which :math:`\phi\left(\sigma_{ij}\right)` is the effective stress -- the von Mises effective stress is used -- and :math:`\bar{\sigma}` is the isotropic hardening function. Incorporating the temperature and rate dependency, the hardening function is written as,

.. math::
   :label: jc:theory:eqn:flowStress

   \bar{\sigma}\left(\bar{\varepsilon}^p,\dot{\bar{\varepsilon}}^p,\theta\right) = \left[ A + B \left(\bar{\varepsilon}^p\right)^{N} \right]  \left[ 1 + C \left<\ln \dot{\bar{\varepsilon}}^{p*}\right> \right] \left[ 1 - \theta^{*\,M} \right]

where :math:`\bar{\varepsilon}^p` is the equivalent plastic strain, :math:`\dot{\bar{\varepsilon}}^{p*} = \dot{\bar{\varepsilon}}^p/\dot{\bar{\varepsilon}}_{0}` is a dimensionless plastic strain rate, and :math:`\theta^{*}` is the homologous temperature.  The quantities :math:`A`, :math:`B`, :math:`C`, :math:`\dot{\bar{\varepsilon}}_{0}`, :math:`N`, and :math:`M` are material parameters.  The Macaulay brackets in \eqref{jc:theory:eqn:flowStress} ensure that :math:`\bar{\sigma}` is equal to the static flow stress :math:`\bar{\sigma}_{\text{s}} = \left[ A + B \left(\bar{\varepsilon}^p\right)^{N} \right]\left[ 1 - \theta^{*\,M} \right]` when :math:`\dot{\bar{\varepsilon}}^p<\dot{\bar{\varepsilon}}_{0}`. The homologous temperature is defined as,

.. math::
   :label: jc:theory:eqn:homolgTemp

   \theta^{*}=\frac{\theta-\theta_{\text{ref}}}{\theta_{\text{melt}}-\theta_{\text{ref}}},

with :math:`\theta,~\theta_{\text{ref}}`, and :math:`\theta_{\text{melt}}` being the current, reference, and melt temperatures.  Note, the temperature used internal to the Johnson-Cook model is NOT the standard prescribed "temperature" field.  Instead, the material temperature is initialized by a model input as :math:`\theta_0`.  By assuming adiabatic thermal conditions, subsequent plastic work raises the material temperature via,

.. math::

    \Delta\theta=\frac{\beta}{\rho C_{v}}\bar{\sigma}\dot{\bar{\varepsilon}}^p,

where :math:`\rho` is the materials density, :math:`C_{v}` is the specific heat, and :math:`\beta` (:math:`0\leq\beta\leq 1`) is the fraction of plastic work that is converted to heat.

The Johnson-Cook model also has a failure criterion. The Johnson-Cook damage model [:footcite:`mat:ref:johncook2`] has a failure strain that is given by:

.. math::

    \varepsilon^f=\left(D_1+D_2\exp\left(D_3\eta\right)\right)\left(1+D_4\ln\dot{\bar{\varepsilon}}^{p*}\right)\left(1+D_5\theta^{*}\right)

with :math:`D_1,~D_2,~D_3,~D_4,` and :math:`D_5` being material parameters and :math:`\eta` is the triaxiality (:math:`\eta=\left(1/3\right)\sigma_{kk}/\bar{\sigma}_{vM}`). The damage in the model is accumulated over time using:

.. math::
   :label: jc:theory:eqn:dam

   D=\int_0^t\frac{\dot{\bar{\varepsilon}}^{p}}{\varepsilon^f}dt.

When :math:`D=1`, the material has failed.  For the default behavior of the Johnson-Cook model, the fracture behavior is not active.

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

The implementation of the Johnson-Cook model requires the effective strain rate to be used for calculating the rate effects on yield. This is done through a predictor-corrector return mapping algorithm. In what follows the temperature dependence is not included; this will be addressed later.

The initial response is assumed to be elastic and a trial stress state is calculated

.. math::

   T_{ij}^{\text{tr}} = T_{ij}^{n} + \mathbb{C}_{ijkl}\,\Delta\,t d_{kl}

Since the plastic response is independent of pressure we can use the deviatoric stress

.. math::

   s_{ij} = T_{ij} - \frac{1}{3}\delta_{ij}T_{kk}
   \\
   s_{ij}^{\text{tr}} = s_{ij}^{n} + 2\mu\,\Delta\,t d_{ij}^{\prime},

with :math:`d_{ij}^{\prime}` being the total deviatoric rate of deformation -- :math:`d_{ij}^{\prime}=d_{ij}-\left(1/3\right)\delta_{ij}d_{kk}`.
 
If this gives a von Mises stress that is greater then the effective stress, i.e.

.. math::

   \phi^{\text{tr}} = \sqrt{\frac{3}{2} s_{ij}^{\text{tr}}s_{ij}^{\text{tr}}} > A + B \left(\bar{\varepsilon}^{p\left(n\right)}\right)^{N},

then plastic deformation occurs and we solve the following nonlinear equation for :math:`\dot{\bar{\varepsilon}}^p`,

.. math::
   :label: mod4

   \left[ A + B \left( \bar{\varepsilon}_{p\left(n\right)} + \Delta t \dot{\bar{\varepsilon}}^p \right)^{N} \right] 
   \left[ 1 + C \ln \left(  \max \left( 1, \dot{\bar{\varepsilon}}^p / \dot{\bar{\varepsilon}}_{0} \right) \right) \right] 
   = \phi^{\text{tr}} - 3\mu \Delta t \dot{\bar{\varepsilon}}^p.

This simple equation comes from the radial return algorithm

.. math::

   s_{ij}^{n+1} = s_{ij}^{\text{tr}} - 3\mu \, \Delta t \, \dot{\bar{\varepsilon}}^p \, \frac{s_{ij}^{\text{tr}}}{\phi^{\text{tr}}}
   \;\;\; \rightarrow \;\;\;
   s_{ij}^{n+1} = \left( \phi^{\text{tr}} - 3\mu \, \Delta t \, \dot{\bar{\varepsilon}}^p \right) \frac{s_{ij}^{\text{tr}}}{\phi^{\text{tr}}}

Taking the inner product of both sides gives :eq:`mod4`.

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

The Johnson-Cook model is verified through a series of uniaxial stress and pure shear tests. Given the emphasis on the strain-rate and temperature dependent nature of the model a series of these tests are performed at different loading conditions. The material properties and model parameters used for these tests are given in :numref:`verProps` and come from the work of Corona and Orient [:footcite:`mat:ref:corona`]. Note, in this case a modified reference plastic strain rate is used (:math:`\dot{\bar{\varepsilon}}_0=1\times 10^{-4} \text{s}^{-1}`) as the one reported in [:footcite:`mat:ref:corona`] was selected based on calibration conditions. Here the value is selected to better investigate and highlight strain rate dependency.

.. _verProps:

.. csv-table:: The material properties and model parameters of the Johnson-Cook model used for verification testing
   :align: center
   :delim: &

   :math:`E` & 71.7 GPa & :math:`\nu` & 0.33
   :math:`A` & 217 MPa & :math:`B` & 405 MPa
   :math:`C` & 0.0075 & :math:`\dot{\bar{\varepsilon}}_0` & 1 :math:`\times 10^{-4}` s\ :math:`^{-1}`
   :math:`\theta_{\text{ref}}` & 293 K & :math:`\theta_{\text{melt}}` & 750 K
   :math:`N` & 0.41 & :math:`M` & 1.1
   :math:`\rho` & 2810 kg/m :math:`^3` & :math:`C_v` & 960 J/(kg-K)
   :math:`D_1` & 0.015 & :math:`D_2` & 0.24
   :math:`D_3` & -1.5 & :math:`D_4` & -0.039
   :math:`D_5` & 8.0 & &

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

To determine a (semi)-analytical expression of the Johnson-Cook model, the equivalency of plastic work for uniaxial loading is recalled such that,

.. math::
   :label: jc:ver:uni:pw

   \bar{\sigma}\dot{\bar{\varepsilon}}^p=\sigma\left(\dot{\varepsilon}-\dot{\varepsilon}^{\text{e}}\right),

with :math:`\sigma`, :math:`\dot{\varepsilon}`, and :math:`\dot{\varepsilon}^{\text{e}}` being the uniaxial stress, total strain rate, and elastic strain rate, respectively.  Assuming :math:`\dot{\bar{\varepsilon}}^{p}\ge\dot{\bar{\varepsilon}}_0`, and noting that :math:`\dot{\varepsilon}^{p}=\dot{\varepsilon}-\dot{\varepsilon}^{\text{e}}`, the expression for the flow stress :eq:`jc:theory:eqn:flowStress`, the definition of the homologous temperature :eq:`jc:theory:eqn:homolgTemp`, and the dimensionless strain rate, the plastic work expression :eq:`jc:ver:uni:pw` may be rearranged as

.. math::
   :label: jc:ver:uni:eqps

   \dot{\bar{\varepsilon}}^p=\dot{\bar{\varepsilon}}_0\exp\left[\frac{\sigma}{C\left[A+B\left(\bar{\varepsilon}^p\right)^N\right]\left[1-\theta^{*M}\right]}-\frac{1}{C}\right].

Given the implicit nature (in terms of effective plastic strain) of \eqref{jc:ver:uni:eqps}, a semi-analytical approach is used to evaluate the Johnson-Cook model. Specifically, a simple forward Euler integration scheme is adopted to solve \eqref{jc:ver:uni:eqps} and then update the remaining state variables. Using such an approach, :numref:`jc-ver-fig-uniNoTemp` presents the stress-strain and corresponding damage evolution of the Johnson-Cook determined at three strain rates. A constant total logarithmic strain rate is applied by utilizing an applied displacement of the form,

.. math::

   u_i\left(t\right)=\left(\text{e}^{\omega t}-1\right)\delta_{i1},

where :math:`\omega` is the considered strain rate.  Here rates corresponding to a slow quasistatic (:math:`\omega=1\times 10^{-3}\text{s}^{-1}`), medium (:math:`\omega=1\text{s}^{-1}`), and high rate (:math:`\omega=1\times 10^3\text{s}^{-1}`) loading are considered to explore a variety of regimes. Temperature effects are not addressed in :numref:`jc-ver-fig-uniNoTemp` (:math:`\beta=0`) to first investigate the purely mechanical response. The damage evolution is evaluated by simply integrating expression \eqref{jc:theory:eqn:dam} and noting that for a uniaxial loading :math:`\eta=1/3`.  In this case, as the constitutive behavior is being probed the material does not degrade when :math:`D\geq 1`.

.. _jc-ver-fig-uniNoTemp:

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

   .. image:: ../../_static/figures/stressStrainRates.png
      :alt: Stress-strain
      :scale: 15 %

   .. image:: ../../_static/figures/damageRates.png
      :alt: Damage
      :scale: 15 %

   Semi-analytical and numerical (a) stress-strain and (b) damage evolutions of the Johnson-Cook model subjected to a uniaxial loading at three different applied strain rates. In these results, :math:`\beta=0`.

From the results of :numref:`jc-ver-fig-uniNoTemp` clear agreement is observed between the numerical and semi-analytical response verifying the model behavior in a variety of conditions. Next, to explore the thermomechanical coupling, three different plastic work conversion ratios (:math:`\beta=0.00,~0.50` and :math:`1.0`) are considered for the medium strain rate (:math:`\omega = 1\text{s}^{-1}`). The stress, damage, and temperature evolutions are all presented in :numref:`jc-ver-fig-uniTemp` as a function of axial strains.

.. _jc-ver-fig-uniTemp:

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

   .. image:: ../../_static/figures/stressStrainTemp.png
      :alt: Stress-strain
      :scale: 15 %

   .. image:: ../../_static/figures/damageTemp.png
      :alt: Damage
      :scale: 15 %

   .. image:: ../../_static/figures/temperatureTemp.png
      :alt: Temperature
      :scale: 10 %

   Semi-analytical and numerical (a) stress-strain (b) damage and (c) temperature evolutions of the Johnson-Cook model subjected to a uniaxial loading with three different plastic work conversion ratios, :math:`\beta`. The strain rate for all three cases is :math:`\dot{\varepsilon}=1\text{s}^{-1}`.

From :numref:`jc-ver-fig-uniTemp` the influence of the thermomechanical coupling may be clearly observed. For instance, a roughly 50 K increase in material temperature over the loading range may be seen in the :math:`\beta=1` case leading to a roughly 25% decrease in the damage metric and approximately 10\% drop in final stress. Additionally, clear agreement between the semi-analytical and numerical responses providing additional verification of the coupled capabilities of the model.

Pure Shear
----------

For the pure shear case, a loading like that described in :ref:`Appendix A <appendix-common-pure-shear>` is utilized.  Specifically, displacements producing a deformation gradient of,

.. math::

    F_{ij}=\frac{1}{2}\left(\lambda+\lambda^{-1}\right)\left(\delta_{i1}\delta_{j1}+\delta_{i2}\delta_{j2}\right)+\frac{1}{2}\left(\lambda-\lambda^{-1}\right)\left(\delta_{i1}\delta_{j2}+\delta_{i2}\delta_{j1}\right)+\delta_{i3}\delta_{j3},

are considered with :math:`\lambda=\lambda\left(t\right)=\text{e}^{\omega t}`.  This loading leads to a logarithmic shear strain rate of :math:`\dot{\varepsilon}_{12}=\omega` that is constant in time enabling the study of strain rate effects.

In the shear stress case, the plastic work equivalency is written as,

.. math::

    \bar{\sigma}\dot{\bar{\varepsilon}}^p=2\sigma_{12}\dot{\varepsilon}^p_{12}.

Like the uniaxial stress case, the definition of the effective stress may be used with the fact that :math:`\dot{\varepsilon}^p_{12}=\frac{\sqrt{3}}{2}\dot{\bar{\varepsilon}}^p` to find the following form of the effective plastic strain rate when :math:`\dot{\bar{\varepsilon}}^{\text{p}}>\dot{\bar{\varepsilon}}_0`,

.. math::

    \dot{\bar{\varepsilon}}^p=\dot{\bar{\varepsilon}}_0\exp\left[\frac{\sqrt{3}\sigma_{12}}{C\left[A+B\left(\bar{\varepsilon}^p\right)^N\right]\left[1-\theta^{*M}\right]}-\frac{1}{C}\right].

A simple forward Euler scheme is then used to integrate the model at three different strain rates -- :math:`\omega=.001\text{s}^{-1}`, :math:`1\text{s}^{-1}` and :math:`1000\text{s}^{-1}`. The stress-strain and damage evolution responses of these cases are presented in :numref:`jc-ver-fig-shearNoTemp` for the purely mechanical case (:math:`\beta=0`). With respect to the damage evolution, it is noted that for pure shear responses :math:`\eta=0`.

.. _jc-ver-fig-shearNoTemp:

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

   .. image:: ../../_static/figures/shearStressRates.png
      :alt: Stress-strain
      :scale: 15 %

   .. image:: ../../_static/figures/shearDamageRates.png
      :alt: Damage
      :scale: 15 %

   Semi-analytical and numerical (a) stress-strain and (b) damage evolutions of the Johnson-Cook model subjected to a pure shear loading at three different applied strain rates. In these results, :math:`\beta=0`.

The effect of plastic work is considered for :math:`\omega=1\text{s}^{-1}` in :numref:`jc-ver-fig-shearTemp`. Similar influences like those reported in the uniaxial stress case are observed. A larger increase in temperature through plastic loading is noted however. Regardless in both the results of Figures :numref:`jc-ver-fig-shearNoTemp` and :numref:`jc-ver-fig-shearTemp` clear agreement between numerical and semi-analytical is observed further verifying the current implementation of the Johnson-Cook model.

.. _jc-ver-fig-shearTemp:

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

   .. image:: ../../_static/figures/shearStressTemps.png
      :alt: Stress-strain
      :scale: 15 %

   .. image:: ../../_static/figures/shearDamageTemps.png
      :alt: Damage
      :scale: 15 %

   .. image:: ../../_static/figures/shearTemperatureTemps.png
      :alt: Temperature
      :scale: 10 %

   Semi-analytical and numerical (a) stress-strain (b) damage and (c) temperature evolutions of the Johnson-Cook model subjected to a pure shear loading with three different plastic work conversion ratios, :math:`\beta`.  The strain rate for all three cases is :math:`\dot{\varepsilon}=1\text{s}^{-1}`.

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

.. code-block:: sierrainput

   BEGIN PARAMETERS FOR MODEL JOHNSON_COOK
     #
     # Elastic constants
     #
     YOUNGS MODULUS = <real>
     POISSONS RATIO = <real>
     SHEAR MODULUS  = <real>
     BULK MODULUS   = <real>
     LAMBDA         = <real>
     TWO MU         = <real>
     #
     # Yield surface parameters
     #
     YIELD STRESS       = <real>
     HARDENING CONSTANT = <real>
     HARDENING EXPONENT = <real>
     RATE CONSTANT      = <real>
     REFERENCE RATE     = <real> (0.001)
     EDOT_REF           = <real> (0.0)
     #
     # Failure strain parameters
     #
     D1 = <real> (0.0)
     D2 = <real> (0.0)
     D3 = <real> (0.0)
     D4 = <real> (0.0)
     D5 = <real> (0.0)
     #
     # Temperature softening commands
     #
     RHOCV                 = <real>
     BETA                  = <real>
     THERMAL EXPONENT      = <real>
     REFERENCE TEMPERATURE = <real>
     MELT TEMPERATURE      = <real>
     INITIAL TEMPERATURE   = <real>
     #
     FORMULATION = <int> (0)
     #
   END [PARAMETERS FOR MODEL JOHNSON_COOK]

In the command blocks that define the Johnson-Cook model:

.. See :numref:`mat:elasticConstants` for more information on elastic constants input.

- The ``YIELD STRESS`` defines the stress for onset of yield and the plasticity.
- The ``HARDENING CONSTANT`` command line defines :math:`B`.
- The ``HARDENING EXPONENT`` command line defines :math:`N`
- The ``RHOCV`` command line defines :math:`{\rho}C_v` which is the product of material density and specific heat.
- The material initial temperature is defined by the ``INITIAL TEMPERATURE`` command line. Note, the Johnson Cook material model temperature is NOT linked to the standard model "temperature" field that is set from ``BEGIN PRESCRIBED TEMPERATURE`` command blocks.
- The thermal exponent :math:`M` is defined with the ``THERMAL EXPONENT`` command line.  This exponent must be greater than zero.
- The reference temperature :math:`\theta_{ref}` is defined with the ``REFERENCE TEMPERATURE`` command line.
- The melt temperature :math:`\theta_{melt}` is defined with the ``MELT TEMPERATURE`` command line.
- The reference strain rate, :math:`\dot{\varepsilon}_{0}`, is defined with the ``REFERENCE RATE`` command line. The default is :math:`0.001 \, s^{-1}`.
- The fraction of plastic work that is converted to heat, :math:`\beta`, is defined with the ``BETA`` command line. The default is 0.95.
- The fracture coefficient :math:`D_{1}` is defined with the ``D1`` command line. The default is 0.0.
- The fracture coefficient :math:`D_{2}` is defined with the ``D2`` command line. The default is 0.0.
- The fracture coefficient :math:`D_{3}` is defined with the ``D3`` command line. The default is 0.0.
- The fracture coefficient :math:`D_{4}` is defined with the ``D4`` command line. The default is 0.0.
- The fracture coefficient :math:`D_{5}` is defined with the ``D5`` command line. The default is 0.0.
- The failure model -- and corresponding coefficients -- are only valid for solid (3D) elements. Specifying the values for 2D elements (e.g. shell) will result in an error as the damage model is not implemented. A possible alternative is the :math:`J_2` Plasticity Model specified with Johnson-Cook hardening and failure.
- ``FORMULATION`` controls the strain rate source term.  A ``FORMULATION`` of ``0`` is the default which is to use the total strain rate.  A ``FORMULATION`` of ``1`` means use the plastic strain rate.  The plastic strain rate is monotonic and changes a much lower frequency than the total strain rate, thus use of the plastic strain rate may be more stable.

Warnings and Usage Guidelines
-----------------------------

.. warning::

   Strongly rate dependent models may fare poorly in implicit quasistatic solution. In implicit the rate term used to evaluate the current load step is the rate seen by the model in the previous load step. Potentially this can cause the solution to jump back and forth between a high right and low rate equilibrium state from step to step.

Output variables available for this model are listed in :numref:`johncookstvar`.

.. _johncookstvar:

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

   ``RADIUS``       & radius of yield surface 
   ``EQPS``         & equivalent plastic strain 
   ``THETA``        & temperature 
   ``EQDOT``        & effective total strain rate 
   ``ITER``         & 
   ``EFAIL``        & failure strain, :math:`\varepsilon^{f}` 
   ``DAMAGE``       & damage, :math:`D` 
   ``YIELD_STRESS`` & yield stress 

.. raw::
   html

   <hr>

.. footbibliography::
