# UMAT - Unidimensional nonlinear viscoelastic constitutive subroutine

A nonlinear constitutive equation based on the modified superposition method has been implemented in a user material subroutine (UMAT) for Abaqus unidimensional applications. A Python application that generates the Fortran subroutine, based on the number of terms  and  employed in the formulation, can be downloaded here.

Requirements: Python

How to use it:

1. Download the Python subroutine a href="http://sposs.org/software/umat_nlv_1d/abaqus_umat_nlv_beam_v2.py">here.
2. Edit the file to change the parameters qmax and mmax according to your material fitting.
3. Execute the command "python abaqus_umat_nlv_beam"

Thats it. Your material subroutine is ready to use with Abaqus.

A brief theoretical description on the nonlinear viscoelastic constitutive equation employed in the implementation is presented below.

Theoretical description

For the nonlinear viscoelastic behavior, many investigations have been based on the multiple integral representation due to Green and Rivlin. Several approximate methods have been proposed to simplify the multiple integral representations. The modified superposition method proposed by Findley is implemented here. One can verifiy that this leads to the following relations:





The tensile stress relaxation function may be described by the following Prony series,



with  terms.  ,  and  are the material parameters. The hereditary integral may be re-written as,



where the state variables  are described by,



The state variable increment is given by,



being  the time step increment. Replacing Eq. \eqref{eq:eq5} in the first term to the right of Eq. \eqref{eq:eq6} and considering  constant over the interval  the following approximation is obtained,

\begin{gathered}
{p_{qm}}(t + \Delta t) = \exp \left[ { - \Delta t/{\tau _m}} \right]{p_{qm}}(t) + \int_{{\kern 1pt} t}^{{\kern 1pt} t + \Delta t} {\exp \left[ { - (t + \Delta t - \tau )/{\tau _m}} \right]{\mkern 1mu} \left( {\frac{{{\mkern 1mu} d[\varepsilon {{(\tau )}^q}]}}{{d\tau }}} \right){\mkern 1mu} d\tau } \\
\approx \exp \left[ { - \Delta t/{\tau _m}} \right]{p_{qm}}(t) + \left( {\frac{{{\mkern 1mu} \Delta {\varepsilon ^q}}}{{\Delta t}}} \right){\mkern 1mu} {\tau _m}{\mkern 1mu} \left( {1 - \exp \left[ { - \Delta t/{\tau _m}} \right]} \right) \\
\end{gathered}
\label{eq:eq7}\tag{7}\

Different approximation algorithms are described by Sorvari and Hamalainen. Replacing Eq. \eqref{eq:eq7} into \eqref{eq:eq6} leads to,

\Delta {p_{qm}} \approx {p_{qm}}{\mkern 1mu} {A_m} + \left( {\frac{{{\mkern 1mu} \Delta {\varepsilon ^q}}}{{\Delta t}}} \right){\mkern 1mu} {B_m}
\label{eq:eq8}\tag{8}

where  is the strain increment and  and   are described by,




The derivative of the state variable increment in relation to the strain increment is given by,

\frac{{\partial \Delta {p_{qm}}}}{{\partial \Delta \varepsilon }} = q{\mkern 1mu} {\left( {\varepsilon + \Delta \varepsilon } \right)^{q - 1}}\frac{{{B_m}}}{{\Delta t}}
\label{eq:eq11}\tag{11}

The stress increment can be obtained using Eq. \eqref{eq:eq4},

\Delta \sigma = {\mkern 1mu} \sum\limits_{q = 1}^{{q_{max}}} {\left\{ {{E_{q\infty }}{\mkern 1mu} \Delta {\varepsilon ^q} + {\mkern 1mu} \left( {\sum\limits_{m = 1}^{{m_{max}}} {{E_{qm}}\Delta {p_{qm}}} } \right)} \right\}}
\label{eq:eq12}\tag{12}

The material Jacobian matrix is then obtained deriving Eq. \eqref{eq:eq12} with respect to the strain increment. By replacing Eq. \eqref{eq:eq11} into the resultant equation, the following relation is obtained,

\frac{{\partial \Delta \sigma }}{{\partial \Delta \varepsilon }} = {\mkern 1mu} \sum\limits_{q = 1}^{{q_{max}}} {\left\{ {{E_{q\infty }}{\mkern 1mu} q{\mkern 1mu} {{\left( {\varepsilon + \Delta \varepsilon } \right)}^{q - 1}} + {\mkern 1mu} \left( {\sum\limits_{m = 1}^{{m_{max}}} {{E_{qm}}{\mkern 1mu} q{\mkern 1mu} {\mkern 1mu} {{\left( {\varepsilon + \Delta \varepsilon } \right)}^{q - 1}}\frac{{{B_m}}}{{\Delta t}}{\mkern 1mu} {\mkern 1mu} } } \right)} \right\}}
\label{eq:eq13}\tag{13}

which is used for numerical implementation into the finite element package user subroutine.

******************************************************************************
Revision Notes:
1.0 - Initial version
2.0 - Nonlinear strain increment corrected
******************************************************************************

Author      : Marcelo Caire

Copyright : <2015> <INOCEANO>