1 Introduction

The classical small strain plasticity theory finds a wide range of applications in the engineering analysis. This theory is based on the Huber–von Mises–Hencky (HMH) yield criterion and is most commonly utilized to capture the mechanical properties of metals, e.g., [22]. One of the simplest versions of this theory assumes the so-called isotropic hardening rule, i.e., the expansion of the yield surface in the stress space which occurs during the plastic straining. Linear, piecewise linear and nonlinear relations are used to describe the evolution of the yield stress. A slightly more sophisticated approach assumes the usage of kinematic hardening rule, i.e., the translation of the yield surface which occurs during straining. The so-called backstress variable which defines the translation of the yield surface center is, in the simplest case, taken to evolve according to the linear equation proposed by Prager [17]. Furthermore, a group of mixed-hardening models exists which combine the two aforementioned behaviors. The constitutive models listed above are available in practically every software which is utilized for engineering analysis, e.g., [6, 9, 11, 15]. In the case of cyclic loadings, the nonlinear kinematic hardening rules, such as the Armstrong–Frederick (A-F) rule [1], allow to achieve a substantially better agreement between the model predictions and the experimental results.

In order to capture such effects as strain rate sensitivity, creep or stress relaxation, a flow plasticity model must be generalized by formulating the so-called viscoplastic model. One of the classical formulations in this field is the constitutive model by Perzyna [16] and presents itself an extension of the flow plasticity model with isotropic hardening. A viscoplastic model assuming the mixed-hardening rule was proposed by Chaboche [5]. This model is a generalization of the previously proposed Chaboche–Rousselier elastoplastic model [3, 4] and is more suitable for predicting material response when subjected to cyclic loadings. One possible extension of the Chaboche viscoplastic model was introduced in the work by Benallal and Marquis [2]. The proposed model assumes utilizing a nonlinear kinematic hardening rule which was obtained by modifying the A-F equation. A function of the equivalent plastic strain was added to the so-called recovery term in the backstress evolution equation. In the original formulation by Marquis, this multiplier was taken in the form of an exponential law. Furthermore, it was assumed that the kinematic hardening behavior is captured by a single backstress variable, whereas the isotropic hardening is governed by the nonlinear rule developed by Voce [21]. The viscous effects follow a nonlinear power law.

In this study a generalization of the viscoplastic model by Marquis is proposed. It is assumed that the kinematic hardening can be described by any defined number of backstress variables, whereas the backstress evolution law proposed by Marquis is extended by allowing the usage of any selected function of the equivalent plastic strain as the additional multiplier in the evolution law’s recovery term. Furthermore, the model is generalized by allowing the isotropic hardening behavior to be described by arbitrary function of the equivalent plastic strain.

In the case of more advanced constitutive equations, the analytical solutions to boundary value problems are available for a limited number of cases only. Thus, in order to obtain solutions it is necessary to utilize numerical methods such as the finite element method (FEM), for instance. For that purpose, a numerical calculations algorithm has to be developed for the considered constitutive model.

In the work by Zienkiewicz and Cormeau [24], an algorithm for the finite element (FE) implementation of elasto-viscoplastic constitutive equations was proposed. Different variants of the associated and non-associated flow rule were considered. The cases of HMH and Tresca yield conditions with the assumption of ideal plasticity were analyzed. Furthermore, in one of the proposed model formulations the HMH yield condition with isotropic hardening was used. The aforementioned constitutive equations were utilized to solve several test problems using the introduced model integration algorithm. Moreover, an extended version of the constitutive model was proposed which included additional terms accounting for the viscoelastic effects. These studies were continued as reported in [25] by analyzing other viscoplastic model formulations which would utilize the Drucker–Prager or the Coulomb–Mohr yield conditions.

A review of the elastoplastic constitutive models along with their integration using the radial-return mapping algorithm was presented in [7] with the main focus on the models utilizing the isotropic hardening. The Newton–Raphson (N-R) method was used for solving the nonlinear equations which result from the algorithm. The case of nonlinear stress–strain relation in the elastic range was considered as well. In [8] a modified version of the radial-return algorithm was proposed which is correct for any defined number of internals variables which simulate the loading history effects. The nonlinear equation system which follows from the applied model discretization algorithm was solved using the N-R method. The proposed methodology was utilized to implement into FEM various elastoplastic and elasto-viscoplastic constitutive models. In [10] the FE implementation of two alternative viscoplastic models was discussed, i.e., the Perzyna and the so-called consistency model. A comparative study was conducted.

In the paper by Yang and Feng [23], a viscoplastic model was considered in which additive decomposition of the plastic strain was assumed, i.e., into the steady state and the viscoplastic parts. A numerical integration algorithm was developed for the constitutive model under consideration which was subsequently used to implement the model into the FE analysis program ABAQUS.

Simo and Taylor [19] used the radial-return mapping algorithm to derive the consistent tangent operators for elastoplastic models with mixed hardening behavior. In particular, the nonlinear isotropic hardening was assumed, whereas the kinematic hardening was simulated with a modified linear Prager rule. In the previous work by Suchocki [20], the FE implementation of the cyclic elastoplasticity was discussed. In particular, some generalizations of the Chaboche–Rousselier elastoplastic model were analyzed. Kullig and Wippler [14] developed a numerical integration algorithm for the viscoplastic Chaboche model including a static recovery term in the backstress evolution equation.

In this work the FE implementation of the proposed Marquis viscoplastic model generalization is discussed. The considered constitutive equation makes use of the modified A-F rule to capture the kinematic hardening behavior. Implementing this particular model formulation into FEM has not been thoroughly discussed in the literature yet. The radial-return mapping algorithm was used to integrate the considered constitutive model. A general formula for the fourth-order consistent tangent operator was derived and is presented in the paper. To the best of author’s knowledge, the specific forms of the tangent operator and the stress update procedure obtained for the considered class of viscoplastic constitutive models have not been reported in the literature yet. The derived operator along with the relations for the stress were utilized to implement the model into the non-commercial, open-source FE program CalculiX. This was achieved by taking advantage of UMAT (UserMATerial) subroutine option which is provided by CalculiX, c.f. [9]. In order to verify the performance of the developed UMAT subroutine, numerous FE simulations were performed. Selected results are included in this work. In the case of processes with the homogeneous stress and strain fields, such as uniaxial tension/compression (UT/UC), equibiaxial tension/compression (BT/BC) and simple shear (SS), the developed discrete version of the model was used to derive equation systems which describe the aforementioned deformations. The obtained equations were subsequently utilized to write proper programs in Scilab [18]. These programs allow one to calculate the material’s stress response for a given deformation process and strain history. Thus, the homogeneous deformations previously analyzed in CalculiX using the developed UMAT code were simulated again in Scilab with the prepared scripts. The results produced using these two different methods were compared to verify the performance of the UMAT subroutine. A perfect agreement was found between the results generated by CalculiX and those obtained in Scilab. Additionally, some results achieved when analyzing stress relaxation, creep and nonhomogeneous deformations are included. A notched flat bar subjected to cyclic biaxial tension/compression and a thick-walled tube loaded by internal pressure were analyzed. The developed UMAT subroutine’s performance has been tested for different types of finite elements. The code is attached in the appendix section.

2 Basic notions

The total stress tensor \(\varvec{\sigma }\) is taken to be the sum of the volumetric stress p and the stress deviator \(\textbf{s}\), i.e.,

$$\begin{aligned} \varvec{\sigma }=p\textbf{1}+\textbf{s}, \qquad p=B \epsilon ^{e}, \qquad \textbf{s}=2\mu \textbf{e}^{e}, \end{aligned}$$
(1)

with \(\epsilon ^{e}={{\,\textrm{tr}\,}}(\varvec{\varepsilon }^{e})\) and \(\textbf{e}^{e} =\varvec{\varepsilon }^{e}-\frac{1}{3}{{\,\textrm{tr}\,}}(\varvec{\varepsilon }^{e})\textbf{1}\), where \(\varvec{\varepsilon }^{e}\) is the small elastic strain tensor, \(\textbf{1}\) is the identity tensor, whereas \({{\,\textrm{tr}\,}}(\bullet )\) denotes the trace operation. B and \(\mu \) are the bulk and the shear elastic moduli, respectively. It is assumed that the total small strain tensor can be additively decomposed into the elastic and the plastic components, i.e.,

$$\begin{aligned} \varvec{\varepsilon }=\varvec{\varepsilon }^{e}+\varvec{\varepsilon }^{p}. \end{aligned}$$
(2)

Thus, in order to calculate the stress for a given strain it is, according to Eqs. (1) and (2) necessary to know the amount of plastic strain. The plastic strain tensor is determined utilizing the associated flow rule with the assumption of plastic incompressibility, i.e., \({{\,\textrm{tr}\,}}(\varvec{\varepsilon }^{p})=0\). The following form of the yield surface is assumed which takes into account both the isotropic and the kinematic hardening behaviors:

$$\begin{aligned} F(\varvec{\sigma },\textbf{X}, \bar{e}^{p})=J_{2}(\textbf{s}-\textbf{X})-k -R(\bar{e}^{p})=0, \end{aligned}$$
(3)

where \(J_{2}(\textbf{s}-\textbf{X})=\sqrt{\frac{3}{2}(\textbf{s}-\textbf{X}) \cdot (\textbf{s}-\textbf{X})}\) with \(\textbf{X}\) being the so-called backstress tensor. The initial yield stress is denoted as k, whereas \(R(\bar{e}^{p})\) is the isotropic hardening function with \(\bar{e}^{p}\) being the equivalent plastic strain defined as:

$$\begin{aligned} \bar{e}^{p}(t)=\int _{0}^{t}\dot{\bar{e}}^{p}(t')\text {d}t', \qquad \dot{\bar{e}}^{p}=\sqrt{\frac{2}{3}\dot{{\textbf {e}}}^{p} \cdot \dot{{\textbf {e}}}^{p}}. \end{aligned}$$
(4)

The flow rule associated with the yield surface given by Eq. (3) takes the form:

$$\begin{aligned} \dot{\textbf{e}}^{p}=\frac{3}{2}\dot{\bar{e}}^{p}\bar{\textbf{n}}, \qquad \bar{\textbf{n}}=\frac{\textbf{s}-\textbf{X}}{J_{2}(\textbf{s}-\textbf{X})}, \end{aligned}$$
(5)

with \(\bar{\textbf{n}}\) being the normalized effective stress. The effective plastic strain rate is assumed to be given by the following relation:

$$\begin{aligned} \dot{\bar{e}}^{p}=\zeta \left\langle \frac{J_{2}(\textbf{s}-\textbf{X}) -R(\bar{e}^{p})-k}{K}\right\rangle ^{m}, \end{aligned}$$
(6)

where \(\left\langle \bullet \right\rangle \) are Macaulay brackets while K and m are the viscoplasticity constants while \(\zeta =1 \, [1/s]\) is the viscosity parameter. In general, the isotropic hardening (or softening) behavior can be governed by any chosen function \(R(\bar{e}^{p})\). However, this function is commonly assumed in the form of a series of terms proposed by Voce [21], i.e.,

$$\begin{aligned} R=\sum _{i=1}^{N}R_{i}, \qquad R_{i}=Q_{i} \left( 1-e^{-b_{i}\bar{e}^{p}}\right) , \end{aligned}$$
(7)

with \(Q_{i}\) and \(b_{i}\) (\(i=1,2,\dots ,N\)) being the material parameters. In the original formulation presented in [2], a single backstress tensor \(\textbf{X}\) was used. However, the total backstress can be taken to be the sum of multiple components, i.e.,

$$\begin{aligned} \textbf{X}=\sum _{i=1}^{M}{} \textbf{X}^{(i)}. \end{aligned}$$
(8)

In [3,4,5] the backstress variables were assumed to follow the nonlinear evolution law developed by Armstrong–Frederick, c.f. [1], i.e.,

$$\begin{aligned} \dot{\textbf{X}}^{(i)}=\frac{2}{3}C_{i}\dot{\textbf{e}}^{p} -\gamma _{i}\dot{\bar{e}}^{p}{} \textbf{X}^{(i)}, \qquad (i=1,2,\dots ,M), \end{aligned}$$
(9)

where \(C_{i}\) and \(\gamma _{i}\) (\(i=1,2,\dots , M\)) are material parameters. In the paper by Benallal and Marquis [2], a modified version of the Armstrong–Frederick (A-F) evolution law was used. The modification concerns introducing a plastic strain function \(\varphi (\bar{e}^{p})\) in the equation’s “recovery” term, i.e.,

$$\begin{aligned} \dot{\textbf{X}}=\frac{2}{3}C\dot{\textbf{e}}^{p}-\gamma \varphi (\bar{e}^{p})\dot{\bar{e}}^{p}{} \textbf{X}, \end{aligned}$$
(10)

with the following specific form of \(\varphi (\bar{e}^{p})\) used in [2]:

$$\begin{aligned} \varphi (\bar{e}^{p})=\varphi _{\infty }+(1-\varphi _{\infty }) e^{-\bar{\omega } \bar{e}^{p}}, \end{aligned}$$
(11)

where \(\varphi _{\infty }\in \left\langle 0;1\right\rangle \) and \(\bar{\omega }\) are material constants. This concept can be generalized for the total backstress being a sum of M components as given in Eqs. (8) and (9), i.e.,

$$\begin{aligned} \dot{\textbf{X}}^{(i)}=\frac{2}{3}C_{i}\dot{\textbf{e}}^{p} -\gamma _{i}\varphi _{i}(\bar{e}^{p})\dot{\bar{e}}^{p}{} \textbf{X}^{(i)}, \qquad (i=1,2,\dots ,M), \end{aligned}$$
(12)

with

$$\begin{aligned} \varphi _{i}(\bar{e}^{p})=\varphi _{\infty \, i} +(1-\varphi _{\infty \, i})e^{-\bar{\omega }_{i} \bar{e}^{p}}, \end{aligned}$$
(13)

and \(\varphi _{\infty \, i}\in \left\langle 0;1\right\rangle \). In the following derivations the general case is considered, i.e., the forms of the functions \(R(\bar{e}^{p})\) and \(\varphi (\bar{e}^{p})\) remain unspecified.

3 Model discretization

For the purpose of discretizing the constitutive model described in the previous section, the radial-return mapping algorithm is utilized. For each computational step \(n+1\), the strain increment is initially assumed to be purely elastic. Thus, the deviatoric stress is calculated as:

$$\begin{aligned} {{\textbf {s}}}_{n+1}={{\textbf {s}}}^{pr}_{n+1}-2 \mu \Delta {{\textbf {e}}}^{p}, \end{aligned}$$
(14)

with the stress predictor \(\textbf{s}^{pr}_{n+1}=\textbf{s}_{n}+2 \mu \Delta \textbf{e}\). If the condition \(J_{2}(\textbf{s}^{pr}_{n+1}-\textbf{X}_{n})<k+R(\bar{e}^{p}_{n})\) is satisfied, then no yielding takes place and so \(\textbf{s}_{n+1}=\textbf{s}^{pr}_{n+1}\) and \(\bar{e}^{p}_{n+1}=\bar{e}^{p}_{n}\). If the condition is not satisfied the plastic flow occurs. The equivalent plastic strain is given as \(\bar{e}^{p}_{n+1}=\bar{e}^{p}_{n}+\Delta \bar{e}^{p}\) where the plastic strain increment \(\Delta \bar{e}^{p}\) has to be determined so that the other variables, i.e., \(\textbf{s}_{n+1}\), \(\textbf{X}_{n+1}\) and \(\textbf{e}_{n+1}^{p}\), can be updated. To this end, Eq. (12) is discretized using the backward Euler method, c.f. [14, 20]:

$$\begin{aligned} \textbf{X}^{(i)}_{n+1}=w_{i}\left( \textbf{X}^{(i)}_{n} +\frac{2}{3}C_{i}\Delta \textbf{e}^{p} \right) , \qquad \textbf{X}_{n+1}=\sum _{i=1}^{M} \textbf{X}^{(i)}_{n+1}, \end{aligned}$$
(15)

with

$$\begin{aligned} w_{i}=\frac{1}{1+\gamma _{i}\varphi _{i}(\bar{e}^{p}_{n} +\Delta \bar{e}^{p})\Delta \bar{e}^{p}}, \qquad i=1,2,\dots ,M. \end{aligned}$$
(16)

Subtracting \(\textbf{X}_{n+1}\) from Eq. (14) and substituting \(\Delta \textbf{e}^{p}=\frac{3}{2}\Delta \bar{e}^{p}\bar{\textbf{n}}\) after some manipulations leads to:

$$\begin{aligned} \textbf{s}_{n+1}-\textbf{X}_{n+1}=\textbf{Z} -\left( 3 \mu +\sum _{i=1}^{M}w_{i}C_{i} \right) \Delta \bar{e}^{p}\bar{\textbf{n}}, \qquad \textbf{Z} =\textbf{s}^{pr}_{n+1}- \sum _{i=1}^{M}w_{i}{} \textbf{X}^{(i)}_{n}, \end{aligned}$$
(17)

or, after using Eq. (5)\(_{2}\):

$$\begin{aligned} \left( \textbf{s}_{n+1}-\textbf{X}_{n+1}\right) \left[ 1+\left( 3 \mu +\sum _{i=1}^{M}w_{i}C_{i} \right) \frac{\Delta \bar{e}^{p}}{J_{2}(\textbf{s}_{n+1}-\textbf{X}_{n+1})}\right] =\textbf{Z}. \end{aligned}$$
(18)

During the plastic flow, the discretized form of Eq. (6) is given as:

$$\begin{aligned} \frac{\Delta \bar{e}^{p}}{\Delta t} =\left( \frac{J_{2}(\textbf{s}_{n+1}-\textbf{X}_{n+1}) -R(\bar{e}^{p}_{n+1})-k}{K}\right) ^{m}. \end{aligned}$$
(19)

Equation (19) can be solved for \(J_{2}(\textbf{s}_{n+1}-\textbf{X}_{n+1})\), i.e.,

$$\begin{aligned} J_{2}(\textbf{s}_{n+1}-\textbf{X}_{n+1})=h(\Delta \bar{e}^{p}) =K\left( \frac{\Delta \bar{e}^{p}}{\Delta t}\right) ^{\frac{1}{m}} +R(\bar{e}^{p}_{n}+\Delta \bar{e}^{p})+k. \end{aligned}$$
(20)

Thus,

$$\begin{aligned} \left( \textbf{s}_{n+1}-\textbf{X}_{n+1}\right) \alpha (\Delta \bar{e}^{p}) =\textbf{Z}, \qquad \alpha (\Delta \bar{e}^{p})=1 +\left( 3\mu + \sum _{i=1}^{M}w_{i}C_{i}\right) \frac{\Delta \bar{e}^{p}}{h(\Delta \bar{e}^{p})}. \end{aligned}$$
(21)

It follows from Eq. (21)\(_{1}\) that:

$$\begin{aligned} J_{2}\left( \textbf{s}_{n+1}-\textbf{X}_{n+1}\right) \alpha (\Delta \bar{e}^{p})=J_{2}(\textbf{Z}). \end{aligned}$$
(22)

Thus, the following scalar, nonlinear equation is obtained which can be utilized to compute the effective plastic strain increment \(\Delta \bar{e}^{p}\):

$$\begin{aligned} r(\Delta \bar{e}^{p})=h(\Delta \bar{e}^{p})\alpha (\Delta \bar{e}^{p})-J_{2}(\textbf{Z})=0. \end{aligned}$$
(23)

Equation (23) can be solved iteratively using the Newton–Raphson method. Thus, during every step of the iterative process a correction term is calculated:

$$\begin{aligned} c_{i+1}=-\frac{r(\Delta \bar{e}^{p}_{i})}{\left. \frac{\partial r (\Delta \bar{e}^{p})}{\partial \Delta \bar{e}^{p}}\right| _{\Delta \bar{e}^{p} =\Delta \bar{e}^{p}_{i}}}, \end{aligned}$$
(24)

which is subsequently used to update the equivalent plastic strain increment, i.e., \(\Delta \bar{e}^{p}_{i+1}=\Delta \bar{e}^{p}_{i}+c_{i+1}\). The derivative of \(r(\Delta \bar{e}^{p})\) with respect to \(\Delta \bar{e}^{p}\) takes the form:

$$\begin{aligned} \frac{\partial r(\Delta \bar{e}^{p})}{\partial \Delta \bar{e}^{p}} =\frac{\partial h(\Delta \bar{e}^{p})}{\partial \Delta \bar{e}^{p}} \alpha (\Delta \bar{e}^{p})+h(\Delta \bar{e}^{p}) \frac{\partial \alpha (\Delta \bar{e}^{p})}{\partial \Delta \bar{e}^{p}} -\frac{\partial J_{2}(\textbf{Z})}{\partial \Delta \bar{e}^{p}}, \end{aligned}$$
(25)

where

$$\begin{aligned} \frac{\partial h(\Delta \bar{e}^{p})}{\partial \Delta \bar{e}^{p}}&=\frac{K}{m \Delta t}\left( \frac{\Delta \bar{e}^{p}}{\Delta t} \right) ^{\frac{1-m}{m}}+\frac{\textrm{d}R(\bar{e}^{p}_{n+1})}{\textrm{d}\bar{e}^{p}}=\kappa , \end{aligned}$$
(26)
$$\begin{aligned} \frac{\partial J_{2}(\textbf{Z})}{\partial \Delta \bar{e}^{p}}&=\frac{3}{2}\sum ^{M}_{i=1}\gamma _{i}w_{i}^{2}\chi _{i} \left( \bar{\textbf{n}}_{n+1} \cdot \textbf{X}^{(i)}_{n}\right) \end{aligned}$$
(27)

and

$$\begin{aligned} \frac{\partial \alpha (\Delta \bar{e}^{p})}{\partial \Delta \bar{e}^{p}} =\frac{1}{h(\Delta \bar{e}^{p})}\left[ 3\mu + \sum _{i=1}^{M}w_{i}C_{i} \left( 1-\gamma _{i}w_{i}\chi _{i}\Delta \bar{e}^{p}\right) +(1-\alpha (\Delta \bar{e}^{p}))\kappa \right] . \end{aligned}$$
(28)

After computing \(\Delta \bar{e}^{p}\), the backstress components can be updated according to Eq. (15) and subsequently the total deviatoric stress can be calculated, i.e.,

$$\begin{aligned} \textbf{s}_{n+1}=\textbf{X}_{n+1}+\frac{\textbf{Z}}{\alpha (\Delta \bar{e}^{p})}. \end{aligned}$$
(29)

The presented integration algorithm is used to determine the consistent tangent operator which is required in order to implement the considered model into FEM.

4 Consistent tangent operator

Taking a variation of the deviatoric stress with respect to all quantities leads to:

$$\begin{aligned} \delta \textbf{s}_{n+1}=\delta \textbf{s}_{n+1}^{pr}-3\mu \delta \bar{e}^{p} \bar{\textbf{n}}_{n+1}-3 \mu \Delta \bar{e}^{p} \delta \bar{\textbf{n}}_{n+1}. \end{aligned}$$
(30)

It is seen that the variations \(\delta \bar{e}^{p}\) and \(\delta \bar{\textbf{n}}_{n+1}\) are necessary in order to determine the formula for the consistent tangent operator. The term \(\delta \bar{e}^{p}\) can be found by taking the variation on Eq. (23), i.e.,

$$\begin{aligned} \delta h(\Delta \bar{e}^{p})\alpha (\Delta \bar{e}^{p}) +h(\Delta \bar{e}^{p})\delta \alpha (\Delta \bar{e}^{p}) -\delta J_{2}(\textbf{Z})=0. \end{aligned}$$
(31)

The variations \(\delta h(\Delta \bar{e}^{p})\), \(\delta J_{2}(\textbf{Z})\) and \(\delta \alpha (\Delta \bar{e}^{p})\) need to be found so that Eq. (31) could be solved for \(\delta \bar{e}^{p}\). The variation \(\delta h(\Delta \bar{e}^{p})\) is determined by taking a variation on Eq. (20), thus,

$$\begin{aligned} \delta h(\Delta \bar{e}^{p})=\kappa (\Delta \bar{e}^{p}) \delta \bar{e}^{p}, \qquad \kappa (\Delta \bar{e}^{p})=\frac{K}{m \Delta t} \left( \frac{\Delta \bar{e}^{p}}{\Delta t}\right) ^{\frac{1-m}{m}} +\frac{\textrm{d}R(\bar{e}^{p})}{\textrm{d}\bar{e}^{p}}. \end{aligned}$$
(32)

In order to find \(\delta J_{2}(\textbf{Z})\), a variation must be taken on Eq. (17)\(_{2}\) which results in:

$$\begin{aligned} \delta \textbf{Z}=\delta \textbf{s}^{pr}_{n+1} -\sum _{i=1}^{M}\delta w_{i} \textbf{X}^{(i)}_{n}, \end{aligned}$$
(33)

with

$$\begin{aligned} \delta w_{i}=- \gamma _{i} w_{i}^{2} \left( \frac{\textrm{d}\varphi _{i}}{\textrm{d}\bar{e}^{p}} \Delta \bar{e}^{p}+\varphi _{i}\right) \delta \bar{e}^{p}. \end{aligned}$$
(34)

Thus,

$$\begin{aligned} \delta J_{2}(\textbf{Z})=\frac{3}{2}\bar{\textbf{n}}_{n+1} \cdot \delta \textbf{s}^{pr}_{n+1}+\frac{3}{2}\sum _{i=1}^{M} \gamma _{i}w_{i}^{2}\left( \bar{\textbf{n}}_{n+1} \cdot \textbf{X}^{(i)}_{n}\right) \chi _{i}\delta \bar{e}^{p}, \end{aligned}$$
(35)

where the following notation is introduced:

$$\begin{aligned} \chi _{i}=\frac{\textrm{d}\varphi _{i}(\bar{e}^{p}_{n+1})}{\textrm{d}\bar{e}^{p}} \Delta \bar{e}^{p} +\varphi _{i}(\bar{e}^{p}_{n+1}). \end{aligned}$$
(36)

Taking the variation on Eq. (21)\(_{2}\) leads to the formula for \(\delta \alpha (\Delta \bar{e}^{p})\):

$$\begin{aligned} \delta \alpha (\Delta \bar{e}^{p})=\frac{\delta \bar{e}^{p}}{h(\Delta \bar{e}^{p})}\left[ 3\mu + \sum _{i=1}^{M}w_{i}C_{i} \left( 1-\gamma _{i}w_{i}\chi _{i}\Delta \bar{e}^{p}\right) +(1-\alpha (\Delta \bar{e}^{p}))\kappa \right] . \end{aligned}$$
(37)

After inserting Eqs. (32), (35) and (37) into Eq. (31), it can be solved for \(\delta \bar{e}^{p}\); thus,

$$\begin{aligned} \delta \bar{e}^{p}=\frac{\frac{3}{2} \bar{\textbf{n}}_{n+1} \cdot \delta \textbf{s}^{pr}_{n+1}}{3 \mu + h^{*}}, \end{aligned}$$
(38)

where the so-called effective hardening modulus has been introduced:

$$\begin{aligned} h^{*}=\sum ^{M}_{i=1}w_{i}C_{i}\left( 1-\gamma _{i}w_{i} \chi _{i}\Delta \bar{e}^{p}\right) +\kappa -\frac{3}{2} \sum ^{M}_{i=1}\gamma _{i}w_{i}^{2}\left( \bar{\textbf{n}}_{n+1} \cdot \textbf{X}^{(i)}_{n}\right) \chi _{i}. \end{aligned}$$
(39)

It can be shown that \(\bar{\textbf{n}}_{n+1}=\frac{\textbf{Z}}{J_{2}(\textbf{Z})}\), e.g., [20]. Taking a variation on this relation \(\delta \bar{\textbf{n}}_{n+1}\) can be found, i.e.,

$$\begin{aligned} \delta \bar{\textbf{n}}_{n+1}=\frac{1}{J_{2}(\textbf{Z})} \left( \textbf{I}-\frac{3}{2}\bar{\textbf{n}}_{n+1} \otimes \bar{\textbf{n}}_{n+1}\right) \cdot \left( \delta \textbf{s}^{pr}_{n+1} +\sum _{i=1}^{M}\gamma _{i}w_{i}^{2}{} \textbf{X}^{(i)}_{n} \chi _{i}\delta \bar{e}^{p}\right) . \end{aligned}$$
(40)

Substituting Eqs. (38) and (40) into Eq. (30), after some rearrangements and taking into account the volumetric stress component, leads to a linear relation between the variations of stress and strain, i.e.,

$$\begin{aligned} \delta \varvec{\sigma }_{n+1}=\varvec{{\mathcal {C}}}^{vp}_{n+1} \cdot \delta \varvec{\varepsilon }_{n+1}, \end{aligned}$$
(41)

with the consistent viscoplastic tangent operator given as:

$$\begin{aligned} \varvec{{\mathcal {C}}}^{vp}_{n+1}&=\lambda ^{*}\varvec{1}\otimes \varvec{1} +2 \mu ^{*} \textbf{I}+\left( \frac{h^{*}}{1+\frac{h^{*}}{3 \mu }} -3\mu ^{*}\right) \bar{\textbf{n}}_{n+1}\otimes \bar{\textbf{n}}_{n+1} \nonumber \\&\quad -\frac{1-\frac{\mu ^{*}}{\mu }}{1+\frac{h^{*}}{3 \mu }} \sum ^{M}_{i=1}\gamma _{i} w_{i}^{2} \chi _{i} \left[ \textbf{X}^{(i)}_{n} \otimes \bar{\textbf{n}}_{n+1}-\frac{3}{2} \left( \bar{\textbf{n}}_{n+1} \cdot \textbf{X}^{(i)}_{n}\right) \bar{\textbf{n}}_{n+1}\otimes \bar{\textbf{n}}_{n+1} \right] , \end{aligned}$$
(42)

where \(\textbf{I}\) is the fourth order identity tensor, whereas the introduced effective Lamé constants are given by the following relations:

$$\begin{aligned} \mu ^{*}=\mu \left( 1-\frac{3 \mu \Delta \bar{e}^{p}}{J_{2} (\textbf{Z})}\right) , \qquad \lambda ^{*}=B-\frac{2}{3}\mu ^{*}. \end{aligned}$$
(43)

If \(J_{2}(\textbf{s}^{pr}_{n+1}-\textbf{X}_{n})<k+R(\bar{e}^{p}_{n})\), the elastic stiffness is used in the computations, i.e.,

$$\begin{aligned} \varvec{{\mathcal {C}}}^{e}=\lambda \varvec{1}\otimes \varvec{1}+2 \mu \textbf{I}, \end{aligned}$$
(44)

where the Lamé parameter \(\lambda =B-\frac{2}{3}\mu \).

5 User material (UMAT) subroutine for cyclic elasto-viscoplasticity

Many commercial and non-commercial FE packages provide some interfaces enabling the users to code their own constitutive laws, e.g., [6, 9, 11, 15]. The open-source FE analysis program CalculiX offers two options for writing a user subroutine UMAT (UserMATerial), i.e., the ABAQUS UMAT or the CalculiX native UMAT interface, c.f. [9]. Usually, the native interface proves to be more efficient than ABAQUS UMAT used under CalculiX. Thus, it was decided to code the constitutive model under study using CalculiX UMAT. Some details regarding the interaction of UMAT subroutine with CalculiX can be found in [9] or [20]. The FE solver provided by CalculiX assumes that the tangent operator is symmetric with 21 independent components only. Thus, the determined operator given by Eq. (42) was symmetrized for the purpose of implementing the considered viscoplastic model via CalculiX UMAT. It has been demonstrated that performing symmetrization does not affect the accuracy of computations and has very little influence on their robustness, e.g., [12, 13, 20].

6 Exemplary problems

In order to verify the performance of the constitutive model under consideration, a number of FE simulations have been conducted. These included simulations of processes with homogeneous stress and strain fields, i.e., uniaxial tension/compression (UT/UC), equibiaxial tension/compression (BT/BC) and simple shear (SS). The discretized version of the model which is discussed in Sect. 3 was used do derive the process equations for the aforementioned homogeneous deformations. These equations were subsequently used to write Scilab programs [18]. Each program can be utilized to calculate the stress response for a given strain history. The results generated in Scilab were used to verify the computations performed in CalculiX with the use of the written UMAT code. In addition, some more complicated problems were analyzed, i.e., stress relaxation test, creep test, notched flat bar in equibiaxial tension/compression and thick-walled tube loaded by internal pressure.

The material parameters gathered in Table 1 were utilized for the conducted simulations. Thus, a single backstress variable (\(M=1\)) and the function \(\varphi (\bar{e}^{p})\) form as given by Eq. (11) were used, whereas the isotropic hardening behavior was simulated using a single Voce term, i.e., \(N=1\) in Eq. (7). The Lamé parameters are calculated as: \(\lambda =\frac{E \nu }{(1+\nu )(1-2\nu )}\), \(\mu =\frac{E}{2(1+\nu )}\), whereas the bulk modulus \(B=\frac{E}{3(1-2\nu )}\). The results presented in the following paragraphs were obtained for C3D8 elements.Footnote 1 The developed UMAT procedure has been tested for other types of finite elements as well.

Table 1 Utilized material parameters of the viscoplastic model based on [2]

6.1 Uniaxial tension/compression (UT/UC)

A one-dimensional stress state is considered, i.e.,

$$\begin{aligned} \varvec{\sigma }_{3 \times 3}=\left[ \begin{array}{ccc} \sigma &{} 0 &{} 0 \\ 0 &{} 0 &{} 0 \\ 0 &{} 0 &{} 0 \end{array}\right] , \quad \textbf{s}_{3 \times 3}=\left[ \begin{array}{ccc} \frac{2}{3}\sigma &{} 0 &{} 0 \\ 0 &{} -\frac{1}{3}\sigma &{} 0 \\ 0 &{} 0 &{} -\frac{1}{3}\sigma \end{array}\right] , \quad \textbf{X}_{3 \times 3}=\left[ \begin{array}{ccc} \frac{2}{3} X &{} 0 &{} 0 \\ 0 &{} -\frac{1}{3}X &{} 0 \\ 0 &{} 0 &{} -\frac{1}{3}X \end{array}\right] . \end{aligned}$$
(45)

In each increment the axial stress predictor \(\sigma _{n+1}^{pr}\) is calculated for the given axial strain increment \(\Delta \varepsilon _{a}\):

$$\begin{aligned} \sigma _{n+1}^{pr}=\sigma _{n}+E\Delta \varepsilon _{a}. \end{aligned}$$
(46)

Subsequently, the yield criterion is checked. If \(\left| \sigma _{n+1}^{pr} -X_{n} \right| <k+R(\bar{e}^{p}_{n})\), the material response is elastic and \(\sigma _{n+1}=\sigma _{n+1}^{pr}\) is assumed. Otherwise, the plastic flow occurs and the plastic strain increment \(\Delta \bar{e}^{p}\) must be determined. This is done by solving Eq. (23) which in this particular case takes the form:

$$\begin{aligned} h(\Delta \bar{e}^{p})\alpha (\Delta \bar{e}^{p})- \left| Z\right| =0, \end{aligned}$$
(47)

with \(h(\Delta \bar{e}^{p})\) being specified by Eq. (20), whereas:

$$\begin{aligned} \alpha (\Delta \bar{e}^{p})=1+\left( E+\sum _{i=1}^{M}w_{i}C_{i}\right) \frac{\Delta \bar{e}^{p}}{h(\Delta \bar{e}^{p})}, \qquad Z=\sigma _{n+1}^{pr}-\sum _{i=1}^{M}w_{i}X_{n}^{(i)}. \end{aligned}$$
(48)

The fsolve function offered by Scilab was used for solving Eq. (47). After obtaining \(\Delta \bar{e}^{p}\), the backstress values are updated, i.e.,

$$\begin{aligned} X_{n+1}^{(i)}=w_{i}\left( X_{n}^{(i)}+C_{i} \Delta \bar{e}^{p}{{\,\textrm{sgn}\,}}(Z) \right) , \quad X_{n+1} =\sum _{i=1}^{M}X_{n+1}^{(i)}, \end{aligned}$$
(49)

where \({{\,\textrm{sgn}\,}}(\bullet )\) denotes the signum function, while \(w_{i}\) (\(i=1,2,\dots , M\)) is given by Eq. (16). Finally, the total axial stress is updated:

$$\begin{aligned} \sigma _{n+1}=X_{n+1}+\frac{Z}{\alpha (\Delta \bar{e}^{p})}. \end{aligned}$$
(50)

The computations according to Eqs. (4650) were performed in Scilab for every single increment of the performed simulations.

Fig. 1
figure 1

Deformation of a single FE: a uniaxial tension/compression, b equibiaxial tension/compression, c and d simple shear, e characteristic points of the geometry

In CalculiX the UT/UC FE simulations were conducted on a 1 mm\(\times \)1 mm\(\times \)1 mm cube meshed with a single C3D8 element. The considered deformation along with the applied boundary conditions can be seen in Fig. 1a. A kinematic loading in the form of a displacement \(\delta \) in the direction “1” (Fig. 1a,e) was applied to the cube’s ABCD face. Furthermore, a zero displacement in direction “1” was set on the face EFGH, a zero displacement in direction “2” was set on the face AEHD, and zero displacement in direction “3” was set on face ABFE.

In the first approach a ramp tension test was considered with the maximum displacement value \(\delta =0.005\) mm. The kinematic excitation was applied with different deformation rates, i.e., \(1\times 10^{-6}\ s^{-1}\), \(1\times 10^{-2}\ s^{-1}\) and 1 \(s^{-1}\). The simulations were performed in CalculiX utilizing the developed UMAT code and later repeated in Scilab using the program described above. An excellent agreement between the results obtained in CalculiX and those produced by Scilab was observed (Fig. 2).

In the second approach a cyclic deformation of the cube was analyzed. The kinematic excitation was defined using a saw function with the amplitude of \(\delta _{a}=0.005\) mm and the period \(T=0.2\) s. A preloading to the maximum value of \(\delta _{a}\) was defined which was followed by 10 full deformation cycles. Again, for the verification purposes, the considered deformation process was analyzed both in CalculiX and Scilab. As previously, the obtained results were found to be in an excellent agreement (Fig. 3). Both simulations were later repeated for the cube meshed with 125 C3D8 elements with the same results as previously.

Fig. 2
figure 2

Normal stress versus axial strain for cube undergoing uniaxial tension/compression with different strain rates

Fig. 3
figure 3

Normal stress versus axial strain for cube undergoing cyclic uniaxial tension/compression with the strain rate \(\dot{\varepsilon }=1\times 10^{-3}\ s^{-1}\)

Fig. 4
figure 4

Stress versus axial strain for cube undergoing cyclic equibiaxial tension/compression with the strain rate \(\dot{\varepsilon }=1\times 10^{-3}\ s^{-1}\)

6.2 Equibiaxial tension/compression (BT/BC)

A two-dimensional stress state is considered, i.e.,

$$\begin{aligned} \varvec{\sigma }_{3 \times 3}=\left[ \begin{array}{ccc} \sigma &{} 0 &{} 0 \\ 0 &{} \sigma &{} 0 \\ 0 &{} 0 &{} 0 \end{array}\right] , \qquad p=\frac{{{\,\textrm{tr}\,}}(\varvec{\sigma })}{3}=\frac{2}{3}\sigma , \end{aligned}$$
(51)

consequently:

$$\begin{aligned} \textbf{s}_{3 \times 3}=\left[ \begin{array}{ccc} \frac{1}{3}\sigma &{} 0 &{} 0 \\ 0 &{} \frac{1}{3}\sigma &{} 0 \\ 0 &{} 0 &{} -\frac{2}{3}\sigma \end{array}\right] , \qquad \textbf{X}_{3 \times 3}= \left[ \begin{array}{ccc} \frac{1}{3}X&{} 0 &{} 0 \\ 0 &{} \frac{1}{3}X &{} 0 \\ 0 &{} 0 &{} -\frac{2}{3}X \end{array}\right] . \end{aligned}$$
(52)

The total and plastic strain tensors have the following components:

$$\begin{aligned} \varvec{\varepsilon }_{3 \times 3}=\left[ \begin{array}{ccc} \varepsilon _{a} &{} 0 &{} 0 \\ 0 &{} \varepsilon _{a} &{} 0 \\ 0 &{} 0 &{} \varepsilon _{l} \end{array}\right] , \qquad \varvec{\varepsilon }_{3 \times 3}^{p}=\left[ \begin{array}{ccc} \varepsilon ^{p} &{} 0 &{} 0 \\ 0 &{} \varepsilon ^{p} &{} 0 \\ 0 &{} 0 &{} -2 \varepsilon ^{p} \end{array}\right] , \end{aligned}$$
(53)

with \(\varepsilon _{a}\) and \(\varepsilon _{l}\) being the axial and lateral strains, respectively. The axial stress in the increment \(n+1\) can be expressed as follows:

$$\begin{aligned} \sigma _{n+1}=\sigma ^{pr}_{n+1}-\frac{E}{1-\nu }\Delta \varepsilon ^{p}, \qquad \sigma _{n+1}^{pr}=\sigma _{n}+\frac{E}{1-\nu } \Delta \varepsilon _{a}. \end{aligned}$$
(54)

If the condition \(\left| \sigma _{n+1}^{pr} -X_{n} \right| <k+R(\bar{e}^{p}_{n})\) is satisfied, the predictor stress value is taken to be the total updated axial stress, i.e., \(\sigma _{n+1}=\sigma _{n+1}^{pr}\). Otherwise, the equivalent plastic strain increment \(\Delta \bar{e}^{p}\) needs to be determined by solving the following equation:

$$\begin{aligned} h(\Delta \bar{e}^{p})\alpha (\Delta \bar{e}^{p})-\left| Z\right| =0, \end{aligned}$$
(55)

where

$$\begin{aligned} \alpha (\Delta \bar{e}^{p})=1+\left( \frac{E}{2(1-\nu )} +\sum _{i=1}^{M}w_{i}C_{i}\right) \frac{\Delta \bar{e}^{p}}{h(\Delta \bar{e}^{p})}, \end{aligned}$$
(56)

and

$$\begin{aligned} Z=\sigma ^{pr}_{n+1}-\sum _{i=1}^{M}w_{i}X^{(i)}_{n}. \end{aligned}$$
(57)

where \(w_{i}\) (\(i=1,2,\dots ,M\)) is given by Eq. (16). After solving Eq. (55), the backstress variables can be updated, i.e.,

$$\begin{aligned} X_{n+1}=\sum _{i=1}^{M} X_{n+1}^{(i)}, \qquad X_{n+1}^{(i)}=w_{i}\left( C_{i} \Delta \bar{e}^{p} {{\,\textrm{sgn}\,}}(Z)+X_{n}^{(i)}\right) , \end{aligned}$$
(58)

and subsequently the total axial stress value can be computed:

$$\begin{aligned} \sigma _{n+1}=X_{n+1}+\frac{Z}{\alpha (\Delta \bar{e}^{p})}. \end{aligned}$$
(59)

The calculations according to Eqs. (5459) are performed in every increment of the analysis.

The FE simulation in CalculiX was performed on a 1 mm\(\times \)1 mm\(\times \)1 mm cube meshed with a single C3D8 element. The boundary conditions which were applied to the cube are depicted in Fig. 1b. A kinematic excitation was assumed in the form of a displacement \(\delta \) set on two faces, i.e., the displacement in direction “1” was applied to the cube’s face ABCD, whereas the displacement in direction “2” was applied to the face BFGC (Fig. 1b,e). A zero displacement in direction “1” was defined on the face EFGH, while a zero displacement in direction “2” was set on the face AEHD, and finally, a zero displacement in direction “3” was defined on the face ABFE. The time history of the displacement \(\delta \) was assumed in the form of a saw function with the amplitude \(\delta _{a}=0.005\) mm and the period \(T=20\) s. Consequently, the strain rate in each of the straining axes was equal to \(1\times 10^{-3}\ s^{-1}\). The initial prestraining and 10 subsequent cycles were analyzed. Again, the process equations derived for the discretized version of the model were used to write a Scilab program which calculates the material stress response for a given strain history. This program was utilized to verify the results obtained with CalculiX. An excellent agreement was found (Fig. 4). The considered FE simulations were subsequently repeated for the cube meshed with 125 C3D8 elements with the same results.

6.3 Simple shear (SS)

In the case of simple shear (SS) process, the stress tensors are assumed to have the following components:

$$\begin{aligned} \varvec{\sigma }_{3 \times 3}=\textbf{s}_{3 \times 3}=\left[ \begin{array}{ccc} 0 &{} \tau &{} 0 \\ \tau &{} 0 &{} 0 \\ 0 &{} 0 &{} 0 \end{array}\right] , \qquad \textbf{X}_{3 \times 3}=\left[ \begin{array}{ccc} 0 &{} X_{\tau } &{} 0 \\ X_{\tau } &{} 0 &{} 0 \\ 0 &{} 0 &{} 0 \end{array}\right] , \end{aligned}$$
(60)

with \(\tau \) and \(X_{\tau }\) being the shear stress and the shear backstress component, respectively. For the analyzed process, the following scalar equations can be obtained:

$$\begin{aligned} \tau _{n+1}=\tau _{n+1}^{pr}-2\mu \Delta \varepsilon _{s}^{p}, \qquad \tau _{n+1}^{pr}=\tau _{n}+2 \mu \Delta \varepsilon _{s}, \end{aligned}$$
(61)

with \(\tau _{n+1}^{pr}\) being the shear predictor stress in the increment \(n+1\) while \(\varepsilon _{s}^{p}\) is the plastic shear strain increment, whereas \(\Delta \varepsilon _{s}\) is the total shear strain increment. If \(\sqrt{3} \left| \tau ^{pr}_{n+1}-X_{\tau n} \right| < k+R(\bar{e}^{p}_{n})\) it is assumed that \(\tau _{n+1}=\tau _{n+1}^{pr}\). Otherwise, the plastic flow occurs and the equivalent plastic strain increment \(\Delta \bar{e}^{p}\) must be determined. This is done by solving the nonlinear equation:

$$\begin{aligned} h(\Delta \bar{e}^{p})\alpha (\Delta \bar{e}^{p})-\sqrt{3} \left| Z\right| =0, \end{aligned}$$
(62)

where

$$\begin{aligned} \alpha (\Delta \bar{e}^{p})=1+\left( 3 \mu +\sum _{i=1}^{M}w_{i}C_{i}\right) \frac{\Delta \bar{e}^{p}}{h(\Delta \bar{e}^{p})}, \qquad Z=\tau _{n+1}^{pr}-\sum _{i=1}^{M}w_{i}X_{\tau n}^{(i)}, \end{aligned}$$
(63)

while \(w_{i}\) (\(i=1,2,\dots ,M\)) is given by Eq. (16). After calculating the plastic strain increment, the stresses can be updated, i.e.,

$$\begin{aligned} \tau _{n+1}=X_{\tau n+1}+\frac{Z}{\alpha (\Delta \bar{e}^{p})}, \end{aligned}$$
(64)

and

$$\begin{aligned} X^{(i)}_{\tau n+1}=w_{i}\left( C_{i}\Delta \bar{e}^{p} \frac{{{\,\textrm{sgn}\,}}(Z)}{\sqrt{3}}+X^{(i)}_{n}\right) . \end{aligned}$$
(65)

The computations listed in Eqs. (6165) are performed for every analysis step.

As before, the analyzed deformation process was simulated in CalculiX for a cube meshed with a single C3D8 element. The deformed shape and the applied boundary conditions can be seen in Fig. 1c, d with \(\gamma =2 \varepsilon _{s}\) being the shear angle. A kinematic excitation was assumed in the form of the displacement \(\delta \) in the direction “1” applied to the cube’s face BFGC where the displacements in the directions “2” and “3” were set to zero. Due to the small deformations, it is assumed that \(\delta /1={{\,\text {tg}\,}}(\gamma )\approx \gamma \). The displacements in all directions were defined as zero on the face AEHD. A cyclic deformation was considered with the amplitude \(\delta _{a}=0.01\) mm and the period \(T=20\) s which resulted in the shear strain rate \(1\times 10^{-3}\) \(s^{-1}\). A preloading and 10 subsequent cycles were analyzed. Again, the set of equations derived for the discretized version of the model was utilized to write a Scilab program which was used to verify the results obtained in CalculiX. It can be seen in Fig. 5 that once again excellent agreement was found.

Fig. 5
figure 5

Shear stress versus shear strain for cube undergoing cyclic simple shear with the strain rate \(\dot{\varepsilon }=1 \times 10^{-3}\ s^{-1}\)

6.4 Stress relaxation

A one-dimensional stress relaxation process was simulated. Again, the FE simulation was performed in CalculiX using a cube meshed with a single C3D8 element. The boundary conditions as described in Sect. 6.1 were used with a different strain history which acted as an excitation (Fig. 6a). The material stress response can be seen in Fig. 6b. In order to validate the obtained FE results, a Scilab program utilizing Eqs. (4650) was used to simulate the considered deformation process again. It can be seen in Fig. 6b that the results obtained in CalculiX and Scilab are in a perfect agreement.

Fig. 6
figure 6

Cube undergoing stress relaxation in tension/compression: a axial strain history, b axial stress response

6.5 Creep

A creep test simulation was performed. In CalculiX, as before, a cube meshed with a C3D8 element was used. The defined boundary conditions are the same as described in Sect. 6.1 with the only difference being a stress excitation applied to the face ABCD instead of a displacement. The assumed stress history and the strain response can be seen in Fig. 7a and b, respectively.

Fig. 7
figure 7

Cube undergoing creep in tension: a axial stress history, b axial strain response

For the purpose of validating the obtained FE results, the axial strain history computed in CalculiX was used as an input for two different Scilab programs in order to check if the correct stress history will be recreated by each one of them. The first program utilizes the radial-return mapping algorithm which for the one-dimensional case leads to Eqs. (4650). The second Scilab program partially takes advantage of the analytical formulas. According to Eq. (6), for the stress state components defined by Eq. (45), the effective plastic strain is given as:

$$\begin{aligned} \dot{\bar{e}}^{p}=\left( \frac{\left| \sigma -X\right| -k -R(\bar{e}^{p})}{K}\right) ^{m}, \end{aligned}$$
(66)

with \(\bar{e}^{p}=\left| \varepsilon ^{p}\right| \) and, \(\dot{\bar{e}}^{p}=\left| \dot{\varepsilon }^{p}\right| \). After some rearrangements, a formula for the axial stress in the increment \(n+1\) is obtained, i.e.,

$$\begin{aligned} \sigma _{n+1}=X_{n+1}+\left[ k+R(\left| \varepsilon ^{p}_{n+1}\right| ) +K(\left| \dot{\varepsilon }^{p}_{n+1}\right| )^{1/m}\right] {{\,\textrm{sgn}\,}}(\sigma _{n+1}-X_{n+1}), \end{aligned}$$
(67)

where \({{\,\textrm{sgn}\,}}(\sigma _{n+1}-X_{n+1})={{\,\textrm{sgn}\,}}(\dot{\varepsilon }^{p}_{n+1})\) with \(\dot{\varepsilon }^{p}_{n+1} \approx \frac{\Delta \varepsilon ^{p}}{\Delta t}\). The previously presented recurrence-update formula given by Eq. (49)\(_{1}\) was utilized to calculate the backstress component:

$$\begin{aligned} X_{n+1}=w\left( X_{n}+C\Delta \varepsilon ^{p}\right) , \end{aligned}$$
(68)

with

$$\begin{aligned} w=\frac{1}{1+\gamma \varphi (\left| \varepsilon ^{p}_{n+1}\right| ) \left| \Delta \varepsilon ^{p}\right| }, \qquad \varphi (\left| \varepsilon ^{p}_{n+1}\right| )=\varphi _{\infty } +(1-\varphi _{\infty })e^{-\bar{\omega }\left| \varepsilon ^{p}_{n+1}\right| }, \end{aligned}$$
(69)

where \(\left| \varepsilon ^{p}_{n+1}\right| =\left| \varepsilon ^{p}_{n}\right| +\left| \Delta \varepsilon ^{p}_{n}\right| \). In the elastic initial range \(\sigma _{n+1}=E \varepsilon _{a, n+1}\).

The stress histories recreated by both Scilab programs based on the strain history given in Fig. 7b are presented in Fig. 7a. It is seen that they are in a very good agreement with the original stress history which was used as excitation in the previously performed FE analysis.

6.6 Notched flat bar in biaxial tension/compression

In order to check the performance of the developed UMAT code, a notched flat bar was considered which was subjected to cyclic biaxial tension/compression. The used geometry along with the dimensions, the applied boundary conditions and the coordinate system can be seen in Fig. 8a. The bar was meshed with C3D8 elements with three elements defined along the bar’s thickness which equaled to 0.1 mm (Fig. 8b). The kinematic excitation was defined on bar’s outer faces in the form of displacement histories \(\delta _{1}\) and \(\delta _{2}\) (Fig. 8a). The displacement \(\delta _{1}\) was set as a ramp elongation until its maximum value of 0.0025 mm which is reached for the time instant \(t=10\) s. The displacement \(\delta _{2}\) was defined with a saw function with the amplitude \(\delta _{2a}=0.005\) mm and the period \(T=40\) s. The total of 10 cycles were performed. The final contour maps obtained for the displacement magnitude, the Huber–von Mises–Hencky (HMH) equivalent stress and the equivalent total strain are shown in Fig. 9.

Fig. 8
figure 8

Notched flat bar undergoing cyclic deformation: a boundary conditions and dimensions, b FE mesh

Fig. 9
figure 9

Notched flat bar undergoing cyclic deformation: a displacement magnitude, b HMH equivalent stress. c equivalent total strain

6.7 Thick-walled tube loaded with internal pressure

As another problem a thick-walled tube loaded with internal pressure was considered. The assumed geometry along with the boundary conditions and the coordinate system are depicted in Fig. 10a. The pressure loading was defined using a saw function with the pressure limits \(p_{max}=470\) MPa, \(p_{min}=0\) MPa and the period \(T=20\) s. The total of 10 cycles were analyzed. The tube was assumed to be 100 mm thick and meshed with C3D8 elements (Fig. 10b). The contour plots showing the final distributions of the displacement magnitude, the HMH stress and the equivalent total strain can be seen in Fig. 11.

Fig. 10
figure 10

Thick-walled tube loaded with internal cyclic pressure: a boundary conditions and dimensions, b FE mesh

Fig. 11
figure 11

Thick-walled tube loaded with internal cyclic pressure: a displacement magnitude, b HMH equivalent stress. c equivalent total strain

7 Conclusions

The viscoplastic model proposed in the work by Benallal and Marquis [2] was analyzed. This model presents itself a certain generalization of the constitutive model which was introduced by Chaboche [3,4,5]. In this study the model by Benallal and Marquis was further generalized by assuming the isotropic hardening behavior to be governed by any selected function of the equivalent plastic strain \(R(\bar{e}^{p})\), c.f. Eq. (3). Moreover, the strain function in the “recovery” term of the backstress evolution law was taken to be any chosen function of the plastic strain \(\varphi (\bar{e}^{p})\), see Eq. (12). The model was also extended by allowing multiple backstress variables to be utilized.

The obtained generalized viscoplastic constitutive equation was subsequently discretized by using the radial-return mapping algorithm. A general formula for the consistent tangent operator was derived. According to the author’s best knowledge, this formula has not been presented in the literature before. The discrete model was implemented into the non-commercial, open-source FE program CalculiX by writing a UMAT subroutine which is included in the appendix section.

In order to verify the performance of the written UMAT code, proper equation sets were derived from the discretized version of the model which describe selected homogeneous deformation processes. The obtained equations were in the next step used to write Scilab scripts which computed the stress responses for the deformation histories in question. The simulation results obtained in Scilab were found to be in an excellent agreement to those obtained by performing the FE simulations in CalculiX using the developed UMAT subroutine. What is more, the UMAT code was used to solve several other boundary value problems such as notched flat bar in biaxial tension/compression and thick-walled tube loaded with internal pressure.