1 Introduction

In metals at room temperature, void nucleation and particle debonding, void growth and coalescence are the mechanisms for crack growth from the process region [15]. Detailed multiple-scale analysis of these mechanisms require robust polycrystalline plasticity and representation of dislocation dynamics and grain boundary barriers (Roters et al. [29] present a comprehensive review). Therefore, the so-called phenomenological models (e.g. [24]) are observed as a cost-effective tool for predicting damage and fracture in metals when overall quantities, like maximum load and dissipated energy, are of interest. Recently, several works have dealt with ductile damage using phenomenological models combined with enrichment [32] and tip remeshing techniques [6, 7, 11, 38]. Edge-based algorithms are specially appropriate for ductile fracture, as recently shown by Areias and Rabczuk [9].

The now well-established GTN model is based on the original yield surface by Gurson [20] and was subsequently modified by Tvergaard and Needleman [36, 37]. The void growth part of the GTN model is based on the micromechanics of the ductile process. Phenomenological models formulated based on thermodynamical principles have also been proposed such as the Lemaitre model [24] and its subsequent modifications. Among this class of constitutive models, the Rousselier model [30] is interesting from a computational perspective as it is simpler and requires the specification of fewer parameters than the GTN model, while possessing the ability to closely match the predictions of the latter by determination of said parameters. It adheres to the idea that the occurrence of localization, crack initiation and propagation emerges as a direct consequence of strain softening due to void growth. Hence, unlike micro-mechanics models of porous metal plasticity, the Rousselier model does not directly model the mechanism of coalescence. However, two properties are worth mentioning:

  1. 1.

    The Rousselier model predicts void fraction growth in pure shear.

  2. 2.

    The Rousselier yield surface has an isochoric vertex causing a non-zero plastic volumetric term component.

An extension of the model for viscoplastic and temperature dependent behavior was proposed by Tanguy and Besson [34], who used it for simulations of Charpy testing. We use a specialized and enhanced version of our integration scheme for plasticity ([7, 9]) for the Rousselier yield function. In addition to the smoothing of the complementarity condition, we use extrapolation of the void fraction variable. Crack propagation follows the newly developed algorithm based on rotation of edges. Examples showing the applicability of the new approach are shown with one verification example and three numerical tests where comparisons with published work are performed.

1.1 Equilibrium for an arbitrary reference configuration

Cauchy equations of equilibrium for an it reference configuration can be obtained by manipulation of the spatial version of equilibrium (the derivations for the latter are shown in Ogden [28]). Using standard notation (cf. [35]) we write the spatial version of Cauchy equations as (here, \(i\) is the direction index and \(j\) is the facet index):

$$\begin{aligned} \frac{\partial \sigma _{ij}}{\partial x_{p_{j}}}+b_{i}=0,\quad i=1,2,3,\quad j=1,2,3 \end{aligned}$$
(1)

with \(\sigma _{ij}\) (\(i,j=1,2,3\)) being the components of the Cauchy stress in an orthonormed basis and \(b_{i}\) the components of the body force vector. The coordinates \(x_{p_{j}}\) are the spatial, or deformed, coordinates of a given point (\(p\)) under consideration. Equation (1) is satisfied for a time parameter \(t\in [0,T]\) with \(T\) being the total time of analysis and for a position \(\varvec{x}_{p}\in \Omega _{t}\) belonging to the deformed position domain at the time of analysis (here denoted \(\Omega _{t}\)). In tensor notation, Eq. (1) can be presented as:

$$\begin{aligned} \nabla \cdot \varvec{\sigma }^{T}+\varvec{b}=\varvec{0}, \end{aligned}$$
(2)

where \(\nabla =\frac{\partial }{\partial \varvec{x}_{p}}\) is the spatial gradient operator. Together with (2), essential and natural boundary conditions defined in terms of two functions \(g_{i}\) and \(h_{i}\) are required (cf. [22]):

$$\begin{aligned} u_{i}=g_{i}\quad \mathrm{on }\quad \Gamma _{g_{i}} \end{aligned}$$
(3)
$$\begin{aligned} \sigma _{ij}n_{j}=h_{i}\quad \mathrm{on }\quad \Gamma _{h_{i}}, \end{aligned}$$
(4)

where the boundary \(\Gamma _{t}\,=\,\partial \Omega _{t}\) is partitioned in \(\Gamma _{\varvec{g}}\) and \(\Gamma _{\varvec{h}}\): \(\Gamma _{t}=\Gamma _{\varvec{g}}\cup \Gamma _{\varvec{h}}\) (respectively the essential and the natural boundaries). In Eq. (4), \(n_{j}\) are the components of outer normal to \(\Gamma _{t}\) (in the deformed configuration). Using the definition of the first Piola–Kirchhoff tensor (\(\varvec{P}\)) and denoting the deformation gradient as \(\varvec{F}\), it is possible to change the derivative variables in (1). Using the relation \(\varvec{\sigma }=\frac{1}{J}\varvec{P}\varvec{F}^{T}\) with \(J=\det \varvec{F}\) we can write the equilibrium equation in material form as:

$$\begin{aligned} \frac{\partial P_{ij}}{\partial X_{p_{j}}}+Jb_{i}=0, \end{aligned}$$
(5)

where \(X_{p_{j}}\) are the material, or undeformed, coordinates of a given point under consideration. A direct manipulation of (5) with the use of the second Piola–Kirchhoff stress, \(\varvec{S}\), allows the writing of the material form of equilibrium:

$$\begin{aligned} \frac{\partial \left( F_{ik}S_{kj}\right) }{\partial X_{p_{j}}}+J\!b_{i}=0 \end{aligned}$$
(6)

or, using \(\nabla _{0}\) as the material gradient operator (the derivative with respect to \(\varvec{X}_{p}\)):

$$\begin{aligned} \nabla _{0}\left( \varvec{F}\cdot \varvec{S}\right) ^{T}+J\!\varvec{b}=\varvec{0} \end{aligned}$$
(7)

The time parameter \(t\) is, in Eq. (7), the same as it was in Eq. (2). However, the position domain is now \(\Omega _{0}\equiv \Omega _{t}|_{t=0}.\) At this point, given (6), the conclusion of arbitrariness of \(X_{p_{j}}\) as reference coordinates allows us to use a reference configuration corresponding to an arbitrary instant \(t_{b}\) and the associated position domain \(\Omega _{b}.\) This results in the following generalization of (7):

$$\begin{aligned} \nabla _{b}\left( \varvec{F}_{b}\cdot \varvec{S}_{b}\right) ^{T}+J_{b}\varvec{b}=\varvec{0}, \end{aligned}$$
(8)

where

$$\begin{aligned} \nabla _{b}=\frac{\partial }{\partial \varvec{X}_{pb}} \end{aligned}$$
(9)
$$\begin{aligned} \varvec{F}_{b}=\nabla _{b}\varvec{x} \end{aligned}$$
(10)
$$\begin{aligned} J_{b}=\det \varvec{F}_{b} \end{aligned}$$
(11)
$$\begin{aligned} \varvec{S}_{b}=J_{b}\varvec{F}_{b}^{-1}\varvec{\sigma }\varvec{F}_{b}^{-T} \end{aligned}$$
(12)

The position domain is now \(\Omega _{b}\equiv \Omega _{t}|_{t=t_{b}}.\) The reader can now observe that, if a given time instance \(t_{a}\) is chosen from the interval \([0,T]\) not necessarily coinciding with \(t\), we can re-write (8) as:

$$\begin{aligned} \nabla _{b}\left( \varvec{F}_{ab}\cdot \varvec{S}_{ab}\right) ^{T}+J_{ab}\varvec{b}=\varvec{0} \end{aligned}$$
(13)

with \(\varvec{F}_{ab}=\nabla _{b}\varvec{x}_{pa}\), \(\varvec{S}_{ab}^{T}=\varvec{S}_{ab}\) etc. \(\varvec{F}_{ab}\) is denoted the relative deformation gradient. Equation (13) will be used in the weak form of equilibrium. The reader can note that it is possible to transform the boundary conditions (34) to the material setting. However, if boundary finite elements are used, they can be directly written in the deformed configuration. A fact worth pointing out is the following: \(t_{a}\) must be an equilibrium instant, in contrast with \(t_{b}\). This explains why simplification attempts of the equilibrium Eq. (13) by switching \(\varvec{F}_{ab}\) for \(\varvec{I}\) Footnote 1 result in loss of convergence for high values of deformation.

1.2 Kinematics and stress integration

If (13) is adopted as the equilibrium equation with time parameters \(t_{a}\) and \(t_{b}\), stress integration can be used in a form that avoids the polar decomposition at the iteration level. In a previous work [4] a rate-independent rotational approach is proposed, but it entails a more complex constitutive algorithm in finite strains. The present derivation achieves an efficient and robust time-integration scheme for finite plastic strains. In addition, if \(t_{b}=0\), hyperelastic models can be used directly in the material form (as discussed at length in [21]). Let us consider three configurations \(a\), \(b\) and \(c\) (respectively at times \(t_{a}\ge t_{b}\ge t_{c}\)) as depicted in Fig. 1. A consistent (and consistently linearized) updated-Lagrangian formulation is derived from (13) and the stepping suggested in that figure. The formulation can also be viewed as total Lagrangian, since the strain–displacement matrices are equivalent in structure.

Fig. 1
figure 1

Intermediate configurations used for stress integration. \(\varvec{\theta }\) denotes parent domain coordinates

The relative deformation gradient between two configurations \(\Omega _{a}\) and \(\Omega _{b}\) is given byFootnote 2:

$$\begin{aligned} \varvec{F}_{ab}=\frac{\partial \varvec{x}_{pa}}{\partial \varvec{x}_{pb}} \end{aligned}$$
(14)

or, using the covariant basis the following product is obtained:

$$\begin{aligned} \varvec{F}_{ab}=\varvec{x}_{a}^{T}\varvec{y}_{b}, \end{aligned}$$
(15)

where

$$\begin{aligned} \varvec{x}_{a}=\left( \frac{\partial \varvec{x}_{pa}}{\partial \varvec{\theta }}\right) ^{T} \end{aligned}$$
(16)

contains, as rows, the covariant basis vectors for configuration \(a\). Coordinates \(\varvec{\theta }\) are locally identified with the parent domain coordinates. In addition, \(\varvec{y}_{a}=\varvec{x}_{a}^{-T}\) contains, as columns, the contravariant basis vectors of the same configuration. The inverse of the deformation gradient is obtained by swapping configurations \(a\) and \(b\): \(\varvec{F}_{ab}^{-1}=\varvec{F}_{ba}\). The Jacobian determinant, using the same notation, is given by:

$$\begin{aligned} J_{ab}=\det \varvec{F}_{ab} \end{aligned}$$
(17)

and measures the ratio between the volumes at configurations \(a\) and \(b\). The spatial covariant metric is defined as:

$$\begin{aligned} \varvec{m}_{aa}=\varvec{x}_{a}\varvec{x}_{a}^{T} \end{aligned}$$
(18)

The relative velocity gradient is given from the derivative of \(\varvec{x}_{a}\) as \(\varvec{l}_{ab}=\dot{\varvec{x}}_{a}^{T}\varvec{y}_{b}\) Footnote 3and the strain rate as its symmetric part: \(\dot{\varvec{\varepsilon }}_{ab}\!=\!\frac{1}{2}\left( \varvec{F}_{ab}^{T}\varvec{l}_{ab}\!+\!\varvec{l}_{ab}^{T}\varvec{F}_{ab}\right) \!=\!\frac{1}{2}\left( \varvec{y}_{b}^{T}\varvec{x}_{a}\dot{\varvec{x}}_{a}^{T}\varvec{y}_{b}+\varvec{y}_{b}^{T}\dot{\varvec{x}}_{a}\varvec{x}_{a}^{T}\varvec{y}_{b}\right) =\frac{1}{2}\varvec{y}_{b}^{T}\dot{\varvec{m}}_{aa}\varvec{y}_{b}\). Using the spatial metric we write the right Cauchy-Green tensor (see [28] for the original nomenclature) between two configurations \(a\) and \(b\) directly from its definition (15), using the nomenclature \(\varvec{C}_{ab}\):

$$\begin{aligned} \varvec{C}_{ab}=\varvec{y}_{b}^{T}\varvec{m}_{aa}\varvec{y}_{b} \end{aligned}$$
(19)

Stress tensors are also given in relation to two configurations \(a\) and \(b\). Specifically, using the Cauchy stress tensor (\(\varvec{S}_{aa}\) or \(\varvec{\sigma }\) in the traditional notation) can be obtained from the second Piola–Kirchhoff stress \(\varvec{S}_{ab}\) between \(a\) and \(b\) Footnote 4:

$$\begin{aligned} \varvec{S}_{aa}=\frac{1}{J_{ab}}\varvec{F}_{ab}\varvec{S}_{ab}\varvec{F}_{ab}^{T} \end{aligned}$$
(20)

The reference configuration for the stress can be changed from \(b\) to \(c\) by a direct generalization of (20):

$$\begin{aligned} \varvec{S}_{ac}=\frac{J_{ac}}{J_{ab}}\varvec{F}_{cb}\varvec{S}_{ab}\varvec{F}_{cb}^{T} \end{aligned}$$
(21)

Power-conjugate quantities involving this definition of stress must be of the form:

$$\begin{aligned} \dot{w}=\frac{1}{2}\varvec{S}_{ab}:\dot{\varvec{C}}_{ab} \end{aligned}$$
(22)

\(\forall t_{a}>t_{b}\). The weak form of equilibrium is given by (the upper triangle indicates a “virtual quantity”, as employed by Antman [1]):

$$\begin{aligned} \underbrace{\frac{1}{2}\int _{\Omega _{b}}\varvec{S}_{ab}:\overset{\triangle }{\varvec{C}}_{ab}\mathrm d \Omega _{b}}_{\overset{\triangle }{W}_\mathrm{int }}=\overset{\triangle }{W}_\mathrm{ext } \end{aligned}$$
(23)

when \(t_{a}>t_{b}\) and, alternatively,

$$\begin{aligned} \int _{\Omega _{a}}\varvec{S}_{aa}:\overset{\triangle }{\varepsilon }_{aa}\mathrm d \Omega _{a}=\overset{\triangle }{W}_\mathrm{ext } \end{aligned}$$
(24)

when \(t_{a}=t_{b}\). These two forms follow directly from (2) and (13) in the previous section and the application of Green’s theorem. The so-called “stress updates” in the sense of approximations for the Lie derivative (described in Chapters 7 and 8 of [33]) are concisely given as:

$$\begin{aligned} \varvec{S}_{ab}=\Delta \check{\varvec{S}}_{ab}+\underbrace{\frac{1}{J_{bc}}\varvec{F}_{bc}\varvec{S}_{bc}\varvec{F}_{bc}^{T}}_{\varvec{S}_{bb}} \end{aligned}$$
(25)

with \(\Delta \check{\varvec{S}}_{ab}\) being the relative constitutive stressFootnote 5 and \(\varvec{S}_{bb}\) can be interpreted as the “transported” stress, whose source is purely kinematic, as Fig. 1 suggests. The strict total Lagrangian formulation is recovered for \(b=c=0\). When considering plasticity it is convenient for \(\Delta \check{\varvec{S}}_{ab}\) to depend on a “strain” measure, which in our case is the relative Green-Lagrange strain \(\varvec{E}_{ab}\):

$$\begin{aligned} \varvec{E}_{ab}=\frac{1}{2}\left[ \varvec{C}_{ab}+\varvec{I}\left( 2\alpha T_{ab}-1\right) \right] , \end{aligned}$$
(26)

where \(\alpha \) is the linear thermal expansion coefficient and \(T_{ab}\) is the temperature difference between configurations \(a\) and \(b\). For completeness, we also show that the back-stresses (here denoted by \(\varvec{B}\)) are given by a similar update scheme,

$$\begin{aligned} \varvec{B}_{ab}=\Delta \check{\varvec{B}}_{ab}+\underbrace{\frac{1}{J_{bc}}\varvec{F}_{bc}\varvec{B}_{bc}\varvec{F}_{bc}^{T}}_{\varvec{B}_{bb}} \end{aligned}$$
(27)

To create a stress contour map, Cauchy stresses are physically meaningful and correspond to \(\varvec{S}_{aa}\), calculated as \(\varvec{S}_{aa}=\varvec{F}_{ab}\left( \Delta \breve{\varvec{S}}_{ab}+\varvec{S}_{bb}\right) \varvec{F}_{ab}^{T}/J_{ab}\) with the appropriate transformations for a global coordinate system. The proposed approach implies a re-writing of classical \(\varvec{F}_{e}\varvec{F}_{p}\) plasticity codes to work with time increments (one of such codes is discussed in [8]). The linearization of (23) is straightforward (with fewer operations at the constitutive level than the traditional Kirchhoff-stress/strain rate approach) and follows:

$$\begin{aligned} \mathrm d \overset{\triangle }{W}_\mathrm{int }=\frac{1}{2}\int _{\Omega _{b}}\varvec{S}_{ab}:\mathrm d \overset{\triangle }{\varvec{C}}_{ab}\mathrm d \Omega _{b}+\frac{1}{4}\int _{\Omega _{b}}\mathrm d \varvec{C}_{ab}:\fancyscript{C}:\overset{\triangle }{\varvec{C}}_{ab}\mathrm d \Omega _{b}\nonumber \\ \end{aligned}$$
(28)

and \(\mathrm d \overset{}{W}_\mathrm{ext }\) being calculated according to the deformation-dependent loads. The determination of \(\varvec{C}_{ab}\) and \(\varvec{F}_{ab}\) does not have to be compatible in the sense that since an updated problem is solved when switching from \(b\) to \(c\) as reference configuration, it follows that mixed formulations can be used for \(\varvec{C}_{ab}\) and not for \(\varvec{F}_{bc}\) in (25). This aspect is dealt in the following section. Restrictions to moderate elastic strains are applicable once \(b\) and \(c\) do not coincide. The interesting versatility of the present approach is that for hyperelastic materials we can coalesce \(b=c=0\) and the Lagrangian description of hyperelasticity can be used without specific conditions and for arbitrarily large strains. Otherwise, it is clear that a Lie derivative of the stress is being implicitly calculated and the proposed algorithm belongs to the non-corotational hypoelastic class of algorithms (discussed in [16]). The following limitations are known to exist with this approach:

  • Energy dissipation for large amplitude closed loading cycles.

  • Restriction to elastic isotropy when using elasto-plastic constitutive laws.

In contrast with the \(\varvec{F}_{e}\varvec{F}_{p}\) approaches, where errors result from the plastic integration algorithm (cf. [7]), in the present approach the stress time integration has an associated error without plastic flow. A direct comparison with classical approximations (Kirchhoff/Saint-Venant using the Hencky strain) and hyperelastic models (Neo-Hookean according to the description by Wriggers [39]) is made to assess the range of elastic deformations for which the present approach can be accepted (cf. Fig. 2). When considering elasticity, high values of step size result in stress drifting. It is noticeable that, for metal elasto-plasticity, the error is not important since elastic strain components are typically less than \(2~\%\) of the total.

Fig. 2
figure 2

Closed cycle loading with high values of elastic strains: comparison with Neo-Hookean and Kirchhoff/Saint-Venant using the Hencky strain

1.3 Assumed-strain elements: polar decomposition when reaching convergence

For assumed-strain formulations, agreement must exist between \(\varvec{F}_{ab}\) and \(\varvec{C}_{ab}\). Since \(\varvec{C}_{ab}\) (or, in alternative, \(\varvec{E}_{ab}\)) has an assumed form (or, in alternative enhanced form) a long standing problem is the compatibility between \(\varvec{C}_{ab}\) and \(\varvec{F}_{ab}\), see [14]. This is solved by approximating the relative rotation matrix (identified as \(\varvec{R}_{ab}\)) by a purely kinematic one, which we identified as \(\varvec{R}_{ab}^\mathrm{kin }\). With our consistent incremental approach, no requirement for permanent polar decomposition exists. However, any mismatch between \(\varvec{F}_{ab}\) and \(\varvec{F}_{ab}^{\star }=\varvec{R}_{ab}\sqrt{\varvec{C}_{ab}}\) typically grows with the number of time steps. To circumvent this problem, we perform a polar decomposition at the end of each time step and use a kinematic rotation (here denoted as \(\varvec{R}_{ab}^\mathrm{kin }\)) to obtain:

$$\begin{aligned} \varvec{F}_{ab\,\mathrm{updated }}=\varvec{R}_{ab}^\mathrm{kin }\sqrt{\varvec{C}_{ab}} \end{aligned}$$
(29)

The kinematic rotation tensor \(\varvec{R}_{ab}^\mathrm{kin }\) depends on the element technology adopted. For shells, for example, the Kirchhoff rotation can be used [10]. In this paper, a simple iso-parametric plane stress element is used. Plane strain elements make use of a bubble shape function and continuous pressure (the so-called MINI elements [12]). Selective-reduced integration is used for the axisymmetric element [22].

1.4 Semi-implicit integration

Distinct semi-implicit integration approaches for constitutive laws have been proposed in the past with different meanings. Three of the typical perspectives are:

  1. 1.

    The flow vector being explicitly integrated, as in Moran et al. [27].

  2. 2.

    The flow law has a constant term dependent on the elastic left Cauchy Green tensor, as in Areias et al. [7].

  3. 3.

    Void fraction, or damage are frozen in the previous time-step and explicitly integrated [24].

We extend approach 3. with the implicit integration of void fraction and effective plastic strain and extrapolation. The use of particular properties in stress integration for elasto-plasticity allows considerable savings in serial codes (for example, concerning the Gurson model, the approach by Aravas [2] of splitting volumetric and deviatoric terms in the flow rule has been long established and extended). We must note that the use of OpenMP is currently widespread and computational load distribution by element groups a common practice. This shifts the focus from hand-optimized constitutive integration algorithms to effective general integration approaches with particular yield functions being introduced as particular cases. Using \(\Delta \gamma \) as the plastic strain increment, \(\varphi (\Delta \gamma ,\Delta \check{\varvec{S}}_{ab})\) as the yield function, \({n}=\frac{\partial \varphi }{\partial \Delta \check{\varvec{S}}_{ab}}\) as the flow vector and \(\varvec{v}\) as the set of history variables for a particular material (including the back-stresses), a constitutive system can be established. The evolution law for \(\varvec{v}\) is given by:

$$\begin{aligned} \dot{\varvec{v}}=\dot{\gamma }{\psi }(\varvec{S}_{ab},\varvec{v}), \end{aligned}$$
(30)

where \(\dot{\gamma }\) is the plastic multiplier and \({\psi }\) is the internal variable function (a thermodynamical approach was recently employed by Van Goethem and Areias [38]). The implicit integration of the constitutive laws and their implicit integration reveals the following residuals \(\{\varvec{r}_{\varepsilon },r_{\gamma },\varvec{r}_{v}\}\) Footnote 6

$$\begin{aligned} \varvec{r}_{\varepsilon }=\fancyscript{C}_\mathrm{linear }^{-1} \Delta \check{\varvec{S}}_{ab}-\varvec{E}_{ab}+\Delta \gamma \varvec{n} (\Delta \gamma ,\Delta \check{\varvec{S}}_{ab},\varvec{v})&= \varvec{0} \end{aligned}$$
(31)
$$\begin{aligned} r_{\gamma }=\varphi _{c}(\Delta \gamma ,\Delta \check{\varvec{S}}_{ab},\varvec{v})&= 0 \end{aligned}$$
(32)
$$\begin{aligned} \varvec{r}_{v}=\Delta \varvec{v}-\Delta \gamma \varvec{\psi }(\Delta \gamma ,\Delta \check{\varvec{S}}_{ab},\varvec{v})&= \varvec{0} \end{aligned}$$
(33)

complemented, for plane stress, by the equation \(\left[ \Delta \check{\varvec{S}}\right] _{33}=0\), [10]:

$$\begin{aligned}&\left[ \varvec{E}\right] _{33}=\Delta \gamma n_{33}+\frac{1}{{\fancyscript{C}}_{3333}}\left[ {\fancyscript{C}}_{3311}\left( \Delta \gamma n_{11}-\left[ \varvec{E}\right] _{11}\right) \right. \nonumber \\&\quad \ \qquad \quad \left. +{\fancyscript{C}}_{3322}\left( \Delta \gamma n_{22}-\left[ \varvec{E}\right] _{22}\right) \right] \end{aligned}$$
(34)

In (3133), \(\fancyscript{C}_\mathrm{linear }\) is the linear elasticity tensor, \(\varvec{n}\) is the flow vector. The terms \(\Delta \gamma \) and \(\Delta \varvec{v}\) are increments corresponding to \(\dot{\gamma }\) and \(\varvec{v}\), respectively. The increment in the thickness strain is determined after all relevant quantities have converged. It is a post-processing step at each quadrature point. The nonsmooth Eq. (32) has the following right-hand-side:

$$\begin{aligned} \varphi _{c}=\left\langle \mu \Delta \gamma +\varphi \left( \Delta \gamma ,\Delta \check{\varvec{S}}_{ab}\right) \right\rangle -\mu \Delta \gamma \end{aligned}$$
(35)

In (31), the flow vector is given by:

$$\begin{aligned} \varvec{n}=\left. \frac{\partial \varphi }{\partial \Delta \check{\varvec{S}}_{ab}}\right| _{\varvec{S}_{ab}=\check{\varvec{S}}_{ab}+\varvec{S}_{bb}} \end{aligned}$$
(36)

We further modify the constitutive system with the following combined implicit/extrapolation scheme:

  • History variables \(\varvec{v}\) are implicitly integrated by the backward-Euler method after the first two constitutive Eqs. (3132) are satisfied, by applying Newton-Raphson method to the following system: \(\varvec{v}_{n+1}^{\star }=\varvec{v}_{n}^{\star }+\Delta \gamma {\psi }_{n+1}\left( \Delta \gamma ,\Delta \check{S}_{ab},\varvec{v}_{n+1}^{\star }\right) \), noting the dependence of \({\psi }_{n+1}\) on \(\varvec{v}_{n+1}^{\star }\).

  • Extrapolation from the previous step is adopted for the arguments of \(\varvec{n}\) and \(\varphi _{c}\): \(\varvec{v}_{n+2}=\varvec{v}_{n+1}^{\star }+\frac{\Delta t_{n+2}}{\Delta t_{n+1}}\left( \varvec{v}_{n+1}^{\star }-\varvec{v}_{n}^{\star }\right) \) where \(\varvec{v}^{\star }\) indicates an implicitly integrated history variable and \(\varvec{v}\) indicates an extrapolated history variable.

The reduced constitutive system is finally given by:

$$\begin{aligned} \varvec{r}_{\varepsilon }=\fancyscript{C}_\mathrm{linear }^{-1}\Delta \check{\varvec{S}}_{ab}-\varvec{E}_{ab}+\Delta \gamma \varvec{n}(\Delta \gamma ,\Delta \check{\varvec{S}}_{ab},\varvec{v}_{n+1})&= \varvec{0}\nonumber \\ \end{aligned}$$
(37)
$$\begin{aligned} r_{\gamma }=\varphi _{c}(\Delta \gamma ,\Delta \check{\varvec{S}}_{ab},\varvec{v}_{n+1})&= 0 \end{aligned}$$
(38)

The system (3133) is typically solved for \(\Delta \check{\varvec{S}}_{ab}\) and \(\Delta \gamma \) by means of the Newton-Raphson method, which requires the derivatives of both equations with respect to \(\Delta \check{\varvec{S}}_{ab}\) and \(\Delta \gamma \). Using the residual \(\varvec{r}_{c}=\{\varvec{r}_{\varepsilon },r_{\gamma }\}^{T}\) we calculate the Jacobian as:

$$\begin{aligned} \varvec{J}=\left[ \begin{array}{ll} \fancyscript{C}_\mathrm{linear }^{-1}+\Delta \gamma \frac{\partial \varvec{n}}{\partial \Delta \check{\varvec{S}}_{ab}} &{} \varvec{n}+\Delta \gamma \frac{\partial \varvec{n}}{\partial \Delta \gamma }\\ \frac{\partial \varphi _{c}}{\partial \Delta \check{\varvec{S}}_{ab}} &{} \frac{\partial \varphi _{c}}{\partial \Delta \gamma } \end{array}\right] \end{aligned}$$
(39)

The consistent tangent modulus is defined as:

$$\begin{aligned} \fancyscript{C}_\mathrm{consistent }=\frac{\partial \Delta \check{\varvec{S}}_{ab}}{\partial \varvec{E}_{ab}} \end{aligned}$$
(40)

which, of course, is obtained from the Eqs. (31,32) performing the elimination for \(\Delta \gamma \):

$$\begin{aligned}&\!\!\!\!\fancyscript{C}_\mathrm{consistent}=\nonumber \\&\left[ \fancyscript{C}_\mathrm{linear}^{-1}+\Delta \gamma \frac{\partial \varvec{n}}{\partial \Delta \check{\varvec{S}}_{ab}}-\left( \frac{\partial \varphi _{c}}{\partial \Delta \gamma }\right) ^{-1}\left( \varvec{n}+\Delta \gamma \frac{\partial \varvec{n}}{\partial \Delta \gamma }\right) \otimes \frac{\partial \varphi _{c}}{\partial \Delta \check{\varvec{S}}_{ab}}\right] ^{-1}\nonumber \\ \end{aligned}$$
(41)

for \({\partial \varphi _{c}}/{\partial \Delta \gamma }\ne 0\). In alternative, performing the elimination for \(\Delta \check{\varvec{S}}_{ab}\):

$$\begin{aligned} {\fancyscript{C}}_\mathrm{consistent}=\overline{\fancyscript{C}}-\frac{\left[ \overline{\fancyscript{C}}\left( \varvec{n}+\Delta \gamma \frac{\partial \varvec{n}}{\partial \Delta \gamma }\right) \right] \otimes \left[ \left( \frac{\partial \varphi _{c}}{\partial \Delta \check{\varvec{S}}_{ab}}\right) ^{T}\overline{\fancyscript{C}}\right] }{\left( \frac{\partial \varphi _{c}}{\partial \Delta \check{\varvec{S}}_{ab}}\right) ^{T}\overline{\fancyscript{C}}\left( \varvec{n}+\Delta \gamma \frac{\partial \varvec{n}}{\partial \Delta \gamma }\right) -\frac{\partial \varphi _{c}}{\partial \Delta \gamma }}\nonumber \\ \end{aligned}$$
(42)

with

$$\begin{aligned} \overline{\fancyscript{C}}=\left( {\fancyscript{C}}_\mathrm{linear }^{-1}+\Delta \gamma \frac{\partial \varvec{n}}{\partial \Delta \check{\varvec{S}}_{ab}}\right) ^{-1} \end{aligned}$$
(43)

It is noticeable that form (42), contrasting with form (41), remains well behaved when \({\partial \varphi _{c}}/{\partial \Delta \gamma }\cong 0\). Using the Sherman–Morrison formula it is possible to present a different expression for \(\fancyscript{C}_\mathrm{consistent }\), with no gain in the number of arithmetic operations.

1.5 The Rousselier model and its integration

The Rousselier [30] model for ductile damage is characterized by the following yield function in non-dimensional form:

$$\begin{aligned} \varphi \left( y,\varvec{S}_{ab},f\right)&= \frac{\sigma (\varvec{S}_{ab})}{\left( 1-f\right) y}+\frac{\sigma _{1}f}{y}D\exp \left[ \frac{\mathrm{tr }\left[ \varvec{S}_{ab}\right] }{3\left( 1-f\right) \sigma _{1}}\right] \nonumber \\&\quad -1=0 \end{aligned}$$
(44)

in which \(f\) is the void fraction and \(y\) is the hardening value, given as a function of \(\varepsilon _{p}\). In addition to the hardening characteristics, the only additional properties are \(\sigma _{1}\), \(D\) and \(f_{0}\). The property \(\sigma _{1}\) can be estimated from the original yield stress, \(y_{0}=y|_{\varepsilon _{p}=0}\) and the ultimate tensile strength, \(y_{\max }=\underset{\varepsilon _{p}}{\max }y\) as:

$$\begin{aligned} \sigma _{1}^\mathrm{estimate }=\frac{1}{3}\left( y_{0}+y_{\max }\right) \end{aligned}$$
(45)

Note that \(y_{\max }\) must be provided by the actual hardening curve in the porous case (with \(f\) evolving). Void fraction follows from volume change and is calculated as

$$\begin{aligned} f=1-\left( 1-f_{0}\right) \exp \left[ -3\varepsilon _{m}\right] \end{aligned}$$
(46)

or, in alternative, using a linearized version,

$$\begin{aligned} f=1-\left( 1-f_{0}\right) \left( 1-3\varepsilon _{m}\right) \end{aligned}$$
(47)

The applicability of function \(\varphi (y,\varvec{S}_{ab},f)\) is of course conditional, since the system (3738) may not have a solution. A conservative upper bound for an allowable \(f\) is:

$$\begin{aligned} f_{\max }=1-\frac{\mathrm{tr }\left[ \varvec{S}_{ab}\right] }{3\sigma _{1}\log \left( \frac{y}{d\sigma _{1}}\right) } \end{aligned}$$
(48)

It can be observed that \(D\) indirectly controls the void growth rate. We can force the growth near the critical value of void fraction to model coalescence as in the GTN model, but with a slight difference:

$$\begin{aligned} f_{\star }=f_{c}+\frac{f_{f}-f_{c}}{f_{a}-f_{c}}\left( f-f_{c}\right) \end{aligned}$$
(49)

with \(f_{a}\), \(f_{c}\) and \(f_{f}\) being additional properties. An initial void fraction \(f_{0}\) must also be provided. Using Voigt notation, the corresponding deviatoric stress is \(\varvec{S}_{ab}^{\prime }=\mathtt{D ev}\cdot \varvec{S}_{ab}\), and \(\sigma =\sqrt{3\varvec{S}_{ab}^{\prime }\cdot \varvec{I}_{6}\cdot \varvec{S}_{ab}^{\prime }/2}\) is the von-Mises equivalent stress. Here, the Voigt form of \(\varvec{I}_{6}\) is given by:

$$\begin{aligned}{}[\varvec{I}_{6}]_{ij}=\delta _{ij}\left( 1+\sum \limits _{k=1}^{3}\delta _{ik+3}\right) \end{aligned}$$
(50)

The deviatoric matrix \(\mathtt{D ev}\) in the Voigt form is given by:

$$\begin{aligned} \mathtt{D ev}=\frac{1}{3}\left[ \begin{array}{l@{\quad }l@{\quad }l@{\quad }l@{\quad }l@{\quad }l} 2 &{} -1 &{} -1 &{} 0 &{} 0 &{} 0\\ -1 &{} 2 &{} -1 &{} 0 &{} 0 &{} 0\\ -1 &{} -1 &{} 2 &{} 0 &{} 0 &{} 0\\ 0 &{} 0 &{} 0 &{} 3 &{} 0 &{} 0\\ 0 &{} 0 &{} 0 &{} 0 &{} 3 &{} 0\\ 0 &{} 0 &{} 0 &{} 0 &{} 0 &{} 3 \end{array}\right] \end{aligned}$$
(51)

The equivalent plastic strain increment is computed based on the power equivalence relation:

$$\begin{aligned} \varvec{S}_{ab}\cdot \dot{\varvec{\varepsilon }}_{p}=\left( 1-f_{\star }\right) y\dot{\varepsilon }_{p} \end{aligned}$$
(52)

The effective plastic strain rate is given by this power equivalence:

$$\begin{aligned} \dot{\varepsilon }_{p}=\frac{\dot{\gamma }}{y(1-f_{\star })}\varvec{S}_{ab}\cdot \varvec{n} \end{aligned}$$
(53)

Integration of constitutive quantities follow the unconditionally stable backward-Euler scheme:

$$\begin{aligned} \varepsilon _{p_{n+1}}=\varepsilon _{p_{n}}+\frac{\Delta \gamma }{y_{n+1}(1-f_{\star })}\varvec{S}_{ab}\cdot \varvec{n} \end{aligned}$$
(54)

Time stepping is adapted so that \(\Delta \varepsilon _{p}=\varepsilon _{p_{n+1}}-\varepsilon _{p_{n}}\) is kept below \(5~\%\). This measure is necessary for accuracy reasons in problems with localization. The derivation of the derivatives of \(\varphi \) discussed in Sect. 1.4 are performed with AceGen [23] and exported to Simplas [3].

1.6 Implementation details

Since an equation containing the ramp function \(\left\langle x\right\rangle \) is non-smooth, the Newton-Raphson method will typically have convergence difficulties or fail to converge, and therefore a replacement can have convergence advantages. Eterovic and Bathe [19] recognized this in 1991 and used a semi-smooth function. We here use the Chen–Mangasarian replacement function ([17, 18]) \(S(x)\cong \left\langle x\right\rangle \), which is smooth in the complete domain, to replace the ramp function. The function depends on an Error parameter. Consequences of this replacement were discussed by Areias and Rabczuk [8]. Figure 3 shows the effect of this replacement in the satisfaction of the complementarity condition. In the examples we use a non-dimensional Error of \(1\times 10^{-4}.\)

Fig. 3
figure 3

Replacement of \(\Delta \gamma -\left\langle \Delta \gamma +\varphi \right\rangle \) by \(\Delta \gamma -S(\Delta \gamma +\varphi )\) as a function of an Error parameter

Crack propagation follows the edge rotation recently introduced by Areias and Rabczuk [9]. A representation depicting the procedure is shown in Fig. 4. The criterion is simply the critical void fraction, using the condition:

$$\begin{aligned} f\ge f_{f}\implies \text{ crack } \,\text{ advance } \end{aligned}$$
(55)

The crack path is determined by the Ma-Sutton method (cf. [26]) which is based solely on the relative displacement near the crack tip. Further details are provided in reference [6].

Fig. 4
figure 4

Edge-based crack propagation algorithm in 2D. Node 3 is moved by rotation around node 0

1.7 Verification of the Rousselier model integration: time and mesh dependence

A basic rectangular specimen is used to assess the discussed approach in terms of objectivity (both step size and mesh size). Dependence of load/displacement results in terms of displacement step size and mesh size is investigated. Toward this objective, a simple plane stress rectangular bar is tested, with Fig. 5 showing the necessary benchmark data. The effect of displacement step size is presented in Fig. 6 and the effect of mesh size is shown in Fig. 7. We can observe that:

  • Larger step sizes tend to produce higher loads.

  • For the same step size, extrapolation improves the accuracy.

  • Since a semi-implicit constitutive integration algorithm is adopted, relatively mesh-independent results are obtained, supporting the confidence in the formulation and computational implementation.

Fig. 5
figure 5

Plane stress verification test: relevant data and thickness contour plot (11,771 nodes)

Fig. 6
figure 6

Effect of displacement step and effect of the extrapolation of \(f\) and \(\varepsilon _{p}\) (11,771 nodes)

Fig. 7
figure 7

Effect of mesh size in the load/displacement results and void fraction evolution (\(\Delta \overline{u}=2\times 10^{-5}\))

2 Numerical examples

2.1 Lorentz notched rod problem

The notched rod problem proposed by Lorentz et al. [25] is now inspected in detail. Figure 8 shows the relevant data, in agreement with the original reference. An axisymmetric approach is adopted, with selectively reduced-integration triangular elements. For mesh dependence assessment, two meshes are employed: one with 7,964 nodes and another with 15,283 nodes. The crack propagation sequence is shown in Fig. 9. A close agreement with what is known can be observed: initiation at the center and propagation toward the notch up to final rupture. The load/diameter reduction results obtained with our approach are compared with the results in reference [25] in Fig. 10 showing acceptable agreement.

Fig. 8
figure 8

Lorentz notched problem (cf. [25]). Hardening law is implemented with a piecewise linear function.

Fig. 9
figure 9

Lorentz notched rod problem: effective plastic strain and void fraction contour plots. Three stages of crack propagation are shown.

Fig. 10
figure 10

Lorentz notched rod problem: load/diameter reduction results for two meshes, compared with the results of Lorentz et al. [25].

2.2 Cup and cone fracture

The axisymmetric problem problem by Besson et al. [13] is reproduced, now including the crack propagation after the satisfaction of \(f\ge f_{f}\). Cup and cone formation was detected, corresponding to experimental observation. Relevant data for this problem, using consistent units, is shown in Fig. 11. The stress/displacement results are compared with results obtained by Besson et al. [13]. A difference exists in the loading part of the curve due to the piecewise approximation of the hardening curve adopted in the present work (see Fig. 12). We are also concerned with the cup and cone formation, which requires a sufficiently refined mesh and elongated elements in the radial direction. Figure 13 shows the crack formed in the necking region and propagating toward the outer surface, forming the cup and cone. This type of results, combining the localization in ductile materials and a physically meaningful ductile crack formation is very rare in the literature. In addition, robustness is very favorable when compared with GFEM/XFEM.

Fig. 11
figure 11

Besson cylindrical specimen modeled with axisymmetric elements. Relevant data (see also [13]).

Fig. 12
figure 12

Besson cylindrical specimen: second Piola–Kirchhoff stress versus longitudinal displacement, compared with the results of Besson et al. [13].

Fig. 13
figure 13

Besson cylindrical specimen: cup and cone formation.

2.3 Compact tension specimen

The compact tension specimen by Samal et al. [31] is reproduced. In that work the Rousselier yield function was adopted to model the ductile fracture of the specimen and experimental results were reported. The Authors used a gradient model to attenuate the mesh dependence (similarly to the one by Areias et al. [5]). Relevant data for this test is shown in Fig. 14. We compare the force \(F\) as a function of the imposed displacement \(\overline{v}\) with the experimental results reported in Samal’s paper. The comparison is shown in Fig. 15 where good agreement can be observed. Slightly higher values were numerically obtained in [31]. In contrast with the previous examples, we use the linearized version of the Rousselier void fraction equation. A sequence of contour plots for the void fraction and effective plastic strain is shown in Fig. 16. Very high deformations are possible without convergence problems.

Fig. 14
figure 14

Compact tension specimen. Lengths given in meters. The hardening curve is provided in [31].

Fig. 15
figure 15

Compact tension specimen: comparison between experimental (reported in [31]) and numerical results.

Fig. 16
figure 16

Compact tension specimen (cf. [31]): sequence of void fraction and effective plastic strain contour plots.

3 Conclusions

This work presented a combination of established and newly proposed techniques which, in different contexts have proven effective for the solution of finite strain problems in plasticity and fracture. Specifically, the avoidance of return-mapping algorithms, the smoothing of elasto-plasticity complementarity conditions, the use of edge rotations to model fracture [9], the use of variable extrapolation and the simplified finite-strain approach based on relative stresses which circumvent the use of polar decomposition during iteration, contribute to a very efficient solution. The Rousselier yield function was used for practical reasons: it has fewer material parameters than the GTN model and a simple interpretation of \(D\) and \(\sigma _{1}\). With respect to the examples and benchmarks, we found that a good agreement was observed with results from the literature and, for the compact tension test, excellent accuracy was observed when comparing with the experimental results by Samal et al. [31]. Mesh insensitivity and step-size insensitivity were approximately achieved and the overall implementation fully verified. Compared with the extended finite element method (XFEM) our algorithm retains the underlying finite element technology, quadrature is unchanged and more complex crack patterns can be reproduced. Further extensions are the temperature dependence with a continuation of the work by Van Goethem and Areias [38] and plastic anisotropy.