1 Introduction

Within the state-of-the-art finite element methods, discrete element methods, and hybrid methods, large strains and large displacements play an important role for dynamic and static modelling of geomaterials. The conventional approach utilizes either the traditional rate-based or co-rotational strain energy-based solutions in formulating both deformation kinematics and constitutive laws. The ability of these methods to properly capture large strain behaviour becomes problematic when the strain energy function is not known and/or where material anisotropy plays an important role.

For instance, within the combined finite-discrete element method framework the solid domains (called discrete elements) are discretized into finite elements, where finite rotations and large element displacements and strains are assumed “a priori” [1,2,3]. In general, to describe material constitutive laws under large strains, two approaches have been introduced in computational mechanics: hypoelastic and hyperelastic formulations. The classic hypoelastic formulation results in the final stress state being dependent on the loading path and therefore not being objective [4,5,6]. To counteract these problems associated with hypoelasticity, many research and commercial implementations of large strain elasticity employ the hyperelastic formulation [1, 3, 7]. The cornerstone of the hyperelastic formulation is the utilization of a strain energy function [7]. The strain energy function is the potential energy of internal forces measured per unit mass of the solid material. Cauchy stress components are obtained as the derivative of the strain energy function with respect to the associated strain tensor in the current deformed configuration [7].

Munjiza et al. [3] have recently proposed a multiplicative decomposition approach which naturally decomposes deformation into translation, rotation, plastic stretches, elastic stretches, volumetric stretches, shear stretches, etc. In essence, the total deformation is obtained from the displacement field via a composition of the respective deformation functions, which, when differentiation is applied, results in multiplication—thus the term multiplicative decomposition. This approach has been implemented to construct different material constitutive laws, such as the large strain elastic model [8] and von Mises plastic model [9]. Due to volumetric stretches being calculated separately from the rest of the stretches, this multiplicative decomposition approach has also been used in concert with a selective integration scheme to form composite elements that avoid the problem of volumetric locking [10], which is often encountered when using full numerical integration.

In this work, we introduce a hyperelastic constitutive approach following the above multiplicative decomposition concept. The proposed approach does not “a priori” involve any strain energy function and instead uses stress bearing mechanisms. This novel approach leads to a “whole family” of easily generated nonlinear large strain constitutive laws that produce independent-loading-path strain energies for both isotropic and anisotropic elastic materials. In the rest of the paper, the approach for handling both isotropic and anisotropic materials is showcased; of note, the model naturally incorporates plastic deformation as well as providing a platform for describing continuum damage. The model has been tested via numerical simulations, and we demonstrate here that it provides a new analysis methodology for continuum damage assessments.

2 Multiplicative decomposition of deformation

2.1 Generalized infinitesimal material element

Material properties of solids are tested using a representative volume of a solid, for instance, a \(20\times 20\times 20\) cm concrete cube. Using the continuum assumption, material properties of a representative cube can be assigned to an equivalent infinitesimal cube, which is often called the infinitesimal material element [3, 8,9,10]. In theory, one could easily imagine a generalized infinitesimal material element defined by the \(\left[ {\begin{array}{*{20}c} {{\varvec{\upalpha}}} & {{\varvec{\upbeta}}} & {{\varvec{\upgamma}}} \\ \end{array} } \right]\) material base as shown in Fig. 1, where the deformation of the solid body in the infinitesimal vicinity of point P is shown. This deformation is uniquely defined by the initial and current position of the three infinitesimal base vectors that define the edges of the generalized infinitesimal material element. These three base vectors also define the deformation gradient as described in detail in [3, 10].

Fig. 1
figure 1

a Initial position of the infinitesimal material element; b current position of the infinitesimal material element. The connection between the initial position and current position of the material element is given by the deformation gradient F

The initial position of the infinitesimal material vectors is [10]

$$ \left[ {\begin{array}{*{20}c} {{\overline{\mathbf{\alpha }}}} & {{\overline{\mathbf{\beta }}}} & {{\overline{\mathbf{\gamma }}}} \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\mathbf{i}} & {\mathbf{j}} & {\mathbf{k}} \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {\overline{\alpha }_{i} } & {\overline{\beta }_{i} } & {\overline{\gamma }_{i} } \\ {\overline{\alpha }_{j} } & {\overline{\beta }_{j} } & {\overline{\gamma }_{j} } \\ {\overline{\alpha }_{k} } & {\overline{\beta }_{k} } & {\overline{\gamma }_{k} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\overline{\alpha }_{i} } & {\overline{\beta }_{i} } & {\overline{\gamma }_{i} } \\ {\overline{\alpha }_{j} } & {\overline{\beta }_{j} } & {\overline{\gamma }_{j} } \\ {\overline{\alpha }_{k} } & {\overline{\beta }_{k} } & {\overline{\gamma }_{k} } \\ \end{array} } \right] $$
(1)

where \(\left[ {\begin{array}{*{20}c} {\mathbf{i}} & {\mathbf{j}} & {\mathbf{k}} \\ \end{array} } \right]\) is the global orthonormal vector base. In the current implementation, the material base \(\left[ {\begin{array}{*{20}c} {{\overline{\mathbf{\alpha }}}} & {{\overline{\mathbf{\beta }}}} & {{\overline{\mathbf{\gamma }}}} \\ \end{array} } \right]\) is specified for each finite element by the user as an input, thus allowing the orientation of the material axes to change over the domain on an element by element basis.

2.2 Kinematics of the material element

For a given material point, the initial and current material-embedded vector bases can be expressed in terms of the solid-embedded vector base as follows [10]:

$$ \left[ {\begin{array}{*{20}c} {{\overline{\mathbf{\alpha }}}} & {{\overline{\mathbf{\beta }}}} & {{\overline{\mathbf{\gamma }}}} \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\overline{\alpha }_{i} } & {\overline{\beta }_{i} } & {\overline{\gamma }_{i} } \\ {\overline{\alpha }_{j} } & {\overline{\beta }_{j} } & {\overline{\gamma }_{j} } \\ {\overline{\alpha }_{k} } & {\overline{\beta }_{k} } & {\overline{\gamma }_{k} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\frac{{\partial \overline{x}}}{\partial \xi }} & {\frac{{\partial \overline{x}}}{\partial \eta }} & {\frac{{\partial \overline{x}}}{\partial \zeta }} \\ {\frac{{\partial \overline{y}}}{\partial \xi }} & {\frac{{\partial \overline{y}}}{\partial \eta }} & {\frac{{\partial \overline{y}}}{\partial \zeta }} \\ {\frac{{\partial \overline{z}}}{\partial \xi }} & {\frac{{\partial \overline{z}}}{\partial \eta }} & {\frac{{\partial \overline{z}}}{\partial \zeta }} \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {\alpha_{\xi } } & {\beta_{\xi } } & {\gamma_{\xi } } \\ {\alpha_{\eta } } & {\beta_{\eta } } & {\gamma_{\eta } } \\ {\alpha_{\zeta } } & {\beta_{\zeta } } & {\gamma_{\zeta } } \\ \end{array} } \right] $$
(2)
$$ \left[ {\begin{array}{*{20}c} {{\tilde{\mathbf{\alpha }}}} & {{\tilde{\mathbf{\beta }}}} & {{\tilde{\mathbf{\gamma }}}} \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\tilde{\alpha }_{i} } & {\tilde{\beta }_{i} } & {\tilde{\gamma }_{i} } \\ {\tilde{\alpha }_{j} } & {\tilde{\beta }_{j} } & {\tilde{\gamma }_{j} } \\ {\tilde{\alpha }_{k} } & {\tilde{\beta }_{k} } & {\tilde{\gamma }_{k} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\frac{{\partial \tilde{x}}}{\partial \xi }} & {\frac{{\partial \tilde{x}}}{\partial \eta }} & {\frac{{\partial \tilde{x}}}{\partial \zeta }} \\ {\frac{{\partial \tilde{y}}}{\partial \xi }} & {\frac{{\partial \tilde{y}}}{\partial \eta }} & {\frac{{\partial \tilde{y}}}{\partial \zeta }} \\ {\frac{{\partial \tilde{z}}}{\partial \xi }} & {\frac{{\partial \tilde{z}}}{\partial \eta }} & {\frac{{\partial \tilde{z}}}{\partial \zeta }} \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {\alpha_{\xi } } & {\beta_{\xi } } & {\gamma_{\xi } } \\ {\alpha_{\eta } } & {\beta_{\eta } } & {\gamma_{\eta } } \\ {\alpha_{\zeta } } & {\beta_{\zeta } } & {\gamma_{\zeta } } \\ \end{array} } \right] $$
(3)

The solid-embedded coordinates are calculated [10]

$$ \left[ {\begin{array}{*{20}c} {\alpha_{\xi } } & {\beta_{\xi } } & {\gamma_{\xi } } \\ {\alpha_{\eta } } & {\beta_{\eta } } & {\gamma_{\eta } } \\ {\alpha_{\zeta } } & {\beta_{\zeta } } & {\beta_{\zeta } } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {\frac{{\partial \overline{x}}}{\partial \xi }} & {\frac{{\partial \overline{x}}}{\partial \eta }} & {\frac{{\partial \overline{x}}}{\partial \zeta }} \\ {\frac{{\partial \overline{y}}}{\partial \xi }} & {\frac{{\partial \overline{y}}}{\partial \eta }} & {\frac{{\partial \overline{y}}}{\partial \zeta }} \\ {\frac{{\partial \overline{z}}}{\partial \xi }} & {\frac{{\partial \overline{z}}}{\partial \eta }} & {\frac{{\partial \overline{z}}}{\partial \zeta }} \\ \end{array} } \right]^{ - 1} \left[ {\begin{array}{*{20}c} {\overline{\alpha }_{i} } & {\overline{\beta }_{i} } & {\overline{\gamma }_{i} } \\ {\overline{\alpha }_{j} } & {\overline{\beta }_{j} } & {\overline{\gamma }_{j} } \\ {\overline{\alpha }_{k} } & {\overline{\beta }_{k} } & {\overline{\gamma }_{k} } \\ \end{array} } \right] $$
(4)

By substituting Eq. (4) into Eq. (3), the geometry of the current material-embedded base is obtained and it is used to calculate the deformation of the material point, as explained in the following section.

2.3 Physical decomposition of the infinitesimal solid element

In this work, we assume that the material element is made of seven overlapping, but independent, stress bearing mechanisms; six mechanisms support their own corresponding internal moment, while the seventh mechanism supports hydrostatic stress only, as shown in Fig. 2.

Fig. 2
figure 2

The material element \({{\varvec{\upalpha}}}\)-\({{\varvec{\upbeta}}}\)-\({{\varvec{\upgamma}}}\) (shown in Fig. 1) is decomposed into seven stress bearing mechanisms carrying only specified internal moments: stress bearing mechanisms 1, 2, and 3 have surface density \(t = 2/3\) and are shown in (a)–(c), and stress bearing mechanisms 4, 5, and 6 have surface density \(t = 1\) and are shown in (d)–(f), while stress bearing mechanism 7 has a surface density \(t = 1\) and it supports the hydrostatic stress as described in detail in Sect. 3

Specifically, as shown in Fig. 2a, the first independent stress bearing mechanism carries only the internal moment calculated from the angular change between vectors \({{\varvec{\upxi}}}_{1}\) and \({{\varvec{\upeta}}}_{1}\), where

$$ \begin{gathered} {{\varvec{\upxi}}}_{1} = \frac{\sqrt 2 }{2}\left( {{{\varvec{\upbeta}}} + {{\varvec{\upalpha}}}} \right) \hfill \\ {{\varvec{\upeta}}}_{1} = \frac{\sqrt 2 }{2}\left( {{{\varvec{\upbeta}}} - {{\varvec{\upalpha}}}} \right) \hfill \\ \end{gathered}, $$
(5)

while the angle between vectors \({{\varvec{\upxi}}}_{1}\) and \({{\varvec{\upeta}}}_{1}\) is

$$ \varphi_{1} = {\text{arcos}}\left( {\frac{{{{\varvec{\upxi}}}_{1} \cdot {{\varvec{\upeta}}}_{1} }}{{\xi_{1} \eta_{1} }}} \right){\text{ where }}\xi_{1} = \left| {{{\varvec{\upxi}}}_{1} } \right|{\text{ and }}\eta_{1} = \left| {{{\varvec{\upeta}}}_{1} } \right| $$
(6)

and the angle ranges between the interval 0 and \(\pi\).

Similarly, as shown in Fig. 2b, the second independent stress bearing mechanism carries only the internal moment calculated from the angular change between vectors \({{\varvec{\upxi}}}_{2}\) and \({{\varvec{\upeta}}}_{2}\), where

$$ \begin{gathered} {{\varvec{\upxi}}}_{2} = \frac{\sqrt 2 }{2}\left( {{{\varvec{\upgamma}}} + {{\varvec{\upbeta}}}} \right) \hfill \\ {{\varvec{\upeta}}}_{2} = \frac{\sqrt 2 }{2}\left( {{{\varvec{\upgamma}}} - {{\varvec{\upbeta}}}} \right) \hfill \\ \end{gathered}, $$
(7)

while the angle between vectors \({{\varvec{\upxi}}}_{2}\) and \({{\varvec{\upeta}}}_{2}\) is

$$ \varphi_{2} = {\text{arcos}}\left( {\frac{{{{\varvec{\upxi}}}_{2} \cdot {{\varvec{\upeta}}}_{2} }}{{\xi_{2} \eta_{2} }}} \right){\text{ where }}\xi_{2} = \left| {{{\varvec{\upxi}}}_{2} } \right|{\text{ and }}\eta_{2} = \left| {{{\varvec{\upeta}}}_{2} } \right| $$
(8)

and the angle ranges between the interval 0 and \(\pi\).

As shown in Fig. 2c, the third independent stress bearing mechanism carries only the internal moment calculated from the angular change between vectors \({{\varvec{\upxi}}}_{3}\) and \({{\varvec{\upeta}}}_{3}\), where

$$ \begin{gathered} {{\varvec{\upxi}}}_{3} = \frac{\sqrt 2 }{2}\left( {{{\varvec{\upalpha}}} + {{\varvec{\upgamma}}}} \right) \hfill \\ {{\varvec{\upeta}}}_{3} = \frac{\sqrt 2 }{2}\left( {{{\varvec{\upalpha}}} - {{\varvec{\upgamma}}}} \right) \hfill \\ \end{gathered}, $$
(9)

while the angle between vectors \({{\varvec{\upxi}}}_{3}\) and \({{\varvec{\upeta}}}_{3}\) is

$$ \varphi_{3} = {\text{arcos}}\left( {\frac{{{{\varvec{\upxi}}}_{3} \cdot {{\varvec{\upeta}}}_{3} }}{{\xi_{3} \eta_{3} }}} \right){\text{ where }}\xi_{3} = \left| {{{\varvec{\upxi}}}_{3} } \right|{\text{ and }}\eta_{3} = \left| {{{\varvec{\upeta}}}_{3} } \right| $$
(10)

and the angle ranges between the interval 0 and \(\pi\).

The independent stress bearing mechanisms 4, 5, and 6 only carry the internal moment calculated from the angular changes of the base axis of the material element. For example, the fourth mechanism carries the internal moment calculated from axes \({{\varvec{\upalpha}}}\) and \({{\varvec{\upbeta}}}\); the fifth mechanism carries the internal moment calculated from axes \({{\varvec{\upbeta}}}\) and \({{\varvec{\upgamma}}}\), while the sixth mechanism carries the internal moment calculated from axes \({{\varvec{\upgamma}}}\) and \({{\varvec{\upalpha}}}\), as demonstrated in Fig. 2d–f. The angles between the material-embedded vectors are

$$ \begin{gathered} \varphi_{4} = {\text{arcos}}\left( {\frac{{{{\varvec{\upalpha}}} \cdot {{\varvec{\upbeta}}}}}{\alpha \beta }} \right) \hfill \\ \varphi_{5} = {\text{arcos}}\left( {\frac{{{{\varvec{\upbeta}}} \cdot {{\varvec{\upgamma}}}}}{\beta \gamma }} \right) \, \hfill \\ \varphi_{6} = {\text{arcos}}\left( {\frac{{{{\varvec{\upgamma}}} \cdot {{\varvec{\upalpha}}}}}{\gamma \alpha }} \right) \, \hfill \\ \end{gathered} $$
(11)

where

$$ \alpha = \left| {{\varvec{\upalpha}}} \right|{; }\beta = \left| {{\varvec{\upbeta}}} \right|{; }\gamma = \left| {{\varvec{\upgamma}}} \right| $$
(12)

The independent stress bearing seventh mechanism carries only the internal hydrostatic stress calculated from the volumetric change of the material element \({{\varvec{\upalpha}}}\)-\({{\varvec{\upbeta}}}\)-\({{\varvec{\upgamma}}}\).

2.4 Stretches

The stretching of the angle is defined as [3, 10]

$$ s_{i} = \frac{{\tilde{\varphi }_{i} }}{{\overline{\varphi }_{i} }} $$
(13)

where \(\tilde{\varphi }_{i}\) and \(\overline{\varphi }_{i}\) are the current and initial angles for the mechanism \(i\) defined previously, while \(i = 1,2,3, \ldots ,6\).

The volumetric stretch is defined as [3, 10]

$$ s_{v} = \frac{{\tilde{V}}}{{\overline{V}}} $$
(14)

where the initial volume of the material element is given by

$$ \overline{V} = \left( {{\overline{\mathbf{\alpha }}} \times {\overline{\mathbf{\beta }}}} \right) \cdot {\overline{\mathbf{\gamma }}}, $$
(15)

while the current volume of the material element is

$$ \tilde{V} = \left( {{\tilde{\mathbf{\alpha }}} \times {\tilde{\mathbf{\beta }}}} \right) \cdot {\tilde{\mathbf{\gamma }}} $$
(16)

2.5 Strains

There are many different ways to define the strains from the stretches. For example, one can define the logarithmic strains as

$$ \begin{gathered} e_{i} = \frac{\pi }{4}\ln s_{i} \hfill \\ e_{v} = \ln s_{v} \hfill \\ \end{gathered} $$
(17)

where \(e_{i} \, \left( {i = 1,2,3, \ldots ,6} \right)\) are the angular strains, while \(e_{v}\) is the volumetric strain.

It is worth noting here that, in case of infinitesimal deformation and \(\overline{\varphi }_{i} = \pi /2\), the angular strains defined above can be simplified as

$$ e_{i} = \frac{\pi }{4}\ln s_{i} = \frac{\pi }{4}\ln \left( {1 + \frac{{\tilde{\varphi }_{i} - \overline{\varphi }_{i} }}{{\overline{\varphi }_{i} }}} \right) \approx \frac{\pi }{4}\left( {\frac{{\tilde{\varphi }_{i} - \overline{\varphi }_{i} }}{{\overline{\varphi }_{i} }}} \right) = \frac{1}{2}\left( {\tilde{\varphi }_{i} - \frac{\pi }{2}} \right) $$
(18)

which recovers the classic engineering strain definition.

3 Moments, internal forces, Cauchy stress, and strain energy

3.1 Moments

As described above, the deformation of the material is divided into seven stress bearing mechanisms, of which the first six mechanisms are shear stress bearing mechanisms where the first and fourth mechanisms are in the plane defined by base vectors \({{\varvec{\upalpha}}}\) and \({{\varvec{\upbeta}}}\); mechanisms two and five are in the plane defined by base vectors \({{\varvec{\upbeta}}}\) and \({{\varvec{\upgamma}}}\), while the third and sixth mechanisms are in the plane defined by base vectors \({{\varvec{\upgamma}}}\) and \({{\varvec{\upalpha}}}\), as shown in Fig. 2. To measure the shear stress due to deformation, we further assume that the shear moment associated with each mechanism is a function of the angle change or angular strain, such as

$$ m_{i} = m_{i} \left( {s_{i} } \right) $$
(19)

where \(i = 1,2,3, \ldots ,6\), while the actual relationship between a shear moment and its corresponding angle is defined through the constitutive law.

The pressure due to the seventh mechanism, which is the spherical stress, can be calculated from any standard Equation Of State (EOS). Usually, the pressure is defined as a function of volumetric strain and internal energy, for instance

$$ m_{7} = p\left( {s_{7} ,{\text{ internal energy}}} \right) $$
(20)

The physical interpretation is given in Fig. 3, where internal forces produced are orthogonal to the surfaces of the deformed material element in its current configuration; a physical analogy would be a box containing pressurized gas.

Fig. 3
figure 3

Spherical stress produced by the seventh material mechanism due to general large strain deformation

3.2 Internal forces due to shear moments

The surfaces of the current deformed material element with respective to the stress bearing mechanism \(i\) in the vicinity of point \({\tilde{\text{P}}}\) are shown in Fig. 4.

Fig. 4
figure 4

Surfaces of the deformed material element

The material axis \({\tilde{\mathbf{\varsigma }}}_{i}\) in the current configuration is defined as

$$ \begin{gathered} {\tilde{\mathbf{\varsigma }}}_{i} = {\tilde{\mathbf{\gamma }}} \, \left( {i = 1,4} \right) \hfill \\ {\tilde{\mathbf{\varsigma }}}_{i} = {\tilde{\mathbf{\alpha }}} \, \left( {i = 2,5} \right) \hfill \\ {\tilde{\mathbf{\varsigma }}}_{i} = {\tilde{\mathbf{\beta }}} \, \left( {i = 3,6} \right) \hfill \\ \end{gathered} $$
(21)

The surfaces of the material element are obtained from the following vector products

$$ \begin{gathered} {\tilde{\mathbf{a}}}_{i} = {\tilde{\mathbf{\eta }}}_{i} \times {\tilde{\mathbf{\varsigma }}}_{i} \hfill \\ {\tilde{\mathbf{b}}}_{i} = {\tilde{\mathbf{\varsigma }}}_{i} \times {\tilde{\mathbf{\xi }}}_{i} \hfill \\ {\tilde{\mathbf{c}}}_{i} = {\tilde{\mathbf{\xi }}}_{i} \times {\tilde{\mathbf{\eta }}}_{i} \hfill \\ \end{gathered} $$
(22)

These three surfaces can be written in matrix form

$$ {\tilde{\mathbf{N}}}_{i} = \left[ {\begin{array}{*{20}c} {{\tilde{\mathbf{a}}}_{i} } & {{\tilde{\mathbf{b}}}_{i} } & {{\tilde{\mathbf{c}}}_{i} } \\ \end{array} } \right] $$
(23)

According to the moment balance, the internal force on surface \({\tilde{\mathbf{a}}}_{i}\) due to the shear moment is

$$ {\mathbf{p}}_{a} = \frac{{m_{i} }}{{\xi_{i} }}{\tilde{\mathbf{g}}}_{\xi \eta }, $$
(24)

while the internal force on surface \({\tilde{\mathbf{b}}}\) is

$$ {\mathbf{p}}_{b} = \frac{{m_{i} }}{{\eta_{i} }}{\tilde{\mathbf{g}}}_{\eta \xi } $$
(25)

where

$$ \begin{gathered} {\tilde{\mathbf{g}}}_{\xi \eta } = \frac{{\left( {{\tilde{\mathbf{\xi }}} \times {\tilde{\mathbf{\eta }}}} \right) \times {\tilde{\mathbf{\xi }}}}}{{\left| {\left( {{\tilde{\mathbf{\xi }}} \times {\tilde{\mathbf{\eta }}}} \right) \times {\tilde{\mathbf{\xi }}}} \right|}} \hfill \\ {\tilde{\mathbf{g}}}_{\eta \xi } = \frac{{\left( {{\tilde{\mathbf{\eta }}} \times {\tilde{\mathbf{\xi }}}} \right) \times {\tilde{\mathbf{\eta }}}}}{{\left| {\left( {{\tilde{\mathbf{\eta }}} \times {\tilde{\mathbf{\xi }}}} \right) \times {\tilde{\mathbf{\eta }}}} \right|}} \hfill \\ \end{gathered} $$
(26)

The internal force on surface \({\tilde{\mathbf{c}}}_{i}\) is zero

$$ {\tilde{\mathbf{p}}}_{c} = {\mathbf{0}} $$
(27)

These three internal forces can be written in matrix form

$$ {\mathbf{P}}_{i} = \left[ {\begin{array}{*{20}c} {{\mathbf{p}}_{a} } & {{\mathbf{p}}_{b} } & {{\mathbf{p}}_{c} } \\ \end{array} } \right] $$
(28)

According to the relationship between the stress deviator tensor and the internal force

$$ {\mathbf{P}}_{i} = {\mathbf{S}}_{i} {\tilde{\mathbf{N}}}_{i}, $$
(29)

the stress deviator tensor due to the \(i{\text{th}}\) stress bearing mechanism is calculated from

$$ {\mathbf{S}}_{i} = {\mathbf{P}}_{i} {\tilde{\mathbf{N}}}_{i}^{ - 1} = \frac{1}{V}\left[ {\begin{array}{*{20}c} {{\mathbf{p}}_{a} } & {{\mathbf{p}}_{b} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {{\tilde{\mathbf{a}}}_{i}^{{\text{T}}} } \\ {{\tilde{\mathbf{b}}}_{i}^{{\text{T}}} } \\ \end{array} } \right] $$
(30)

where

$$ V = \left( {{\tilde{\mathbf{\xi }}}_{i} \times {\tilde{\mathbf{\eta }}}_{i} } \right) \cdot {\tilde{\mathbf{\varsigma }}}_{i} $$
(31)

3.3 Cauchy stress

The Cauchy stress tensor is calculated by summing the deviatoric stresses due to the six independent shear stress bearing mechanisms and pressure

$$ {\mathbf{C}} = \frac{2}{3}\sum\limits_{i = 1}^{3} {{\mathbf{S}}_{i} } + \sum\limits_{j = 4}^{6} {{\mathbf{S}}_{j} } + p{\mathbf{I}} $$
(32)

One should note that the weights represent the contribution of each independent stress bearing mechanism to the Cauchy stress. In addition, the \(2/3\) factor used in Eq. (32) is necessary to recover the results obtained from Hooke’s Law at small strains and is due to the fact that \(m_{1}\), \(m_{2}\), and \(m_{3}\) are calculated in a coordinate system rotated 45° from the reference coordinate system.

3.4 Strain energy

In a similar fashion, the strain energy is then obtained by summing the strain energies of the seven independent stress bearing mechanisms, where for each stress bearing mechanism the strain energy is obtained from the work rate

$$ {\text{d}}w = \frac{1}{2}\left( {\frac{2}{3}\sum\limits_{i = 1}^{3} {m_{i} {\text{d}}\varphi_{i} + } \sum\limits_{j = 4}^{6} {m_{j} {\text{d}}\varphi_{j} + p{\text{d}}s_{v} } } \right) $$
(33)

It follows that one has considerable freedom in choosing constitutive equations for large strains, all of which will have a well-defined strain energy function. In practical application, one does not need the strain energy function and can proceed straight to writing seven constitutive equations (six for internal moments and one for the hydrostatic stress).

4 Hyperelastic constitutive law

4.1 Anisotropic elasticity

For both small and large strain elasticity, it is possible to make material parameters dependent on the initial direction of the base vectors of the infinitesimal material element. Essentially, this simply means that each of the seven stress bearing mechanisms employed has different material constants, such as

$$ \begin{gathered} m_{1} = 2\mu_{1} e_{1} \hfill \\ m_{2} = 2\mu_{2} e_{2} \hfill \\ m_{3} = 2\mu_{3} e_{3} \hfill \\ m_{4} = 2\mu_{4} e_{4} \hfill \\ m_{5} = 2\mu_{5} e_{5} \hfill \\ m_{6} = 2\mu_{6} e_{6} \hfill \\ m_{7} = Ke_{7} \hfill \\ \end{gathered} $$
(34)

where \(\mu_{i}\) is the shear modulus for each of the six shear stress bearing mechanisms, while \(K\) is the bulk modulus of the material. For a specific material, all these material constants can be measured with respect to the initial direction of the base vectors of the infinitesimal material element.

The above is a large strain hyperelastic anisotropic material law wherein only the strains are defined using the initial and current configurations of the material element. In this work, linear functions of one variable have been used to describe moment–strain relationships for each of the seven stress bearing mechanisms introduced. These linear functions can be replaced by any function of a single variable, thus producing seven independent functions that describe nonlinear elastic behaviour for each of the seven mechanisms. Regardless of the functions employed, the corresponding constitutive law is guaranteed to have the strain energy function.

4.2 Isotropic elasticity

In the case that all the six shear modulus introduced in (34) are the same, the material model becomes a large strain isotropic material model, where

$$ \begin{gathered} m_{1} = 2\mu e_{1} \hfill \\ m_{2} = 2\mu e_{2} \hfill \\ m_{3} = 2\mu e_{3} \hfill \\ m_{4} = 2\mu e_{4} \hfill \\ m_{5} = 2\mu e_{5} \hfill \\ m_{6} = 2\mu e_{6} \hfill \\ m_{7} = Ke_{7} \hfill \\ \end{gathered}, $$
(35)

while

$$ \begin{gathered} \mu = \frac{E}{{2\left( {1 + \nu } \right)}} \hfill \\ K = \frac{E}{{3\left( {1 - 2\nu } \right)}} \hfill \\ \end{gathered} $$
(36)

are the shear modulus and bulk modulus, respectively; in turn, \(E\) and \(\nu\) are the Young’s modulus and Poisson’s ratio.

5 Plastic constitutive law

5.1 Yield surface

Having now developed an approach to account for physically independent stress bearing mechanisms for elastic behaviour, it is only natural to extend the same concept to general inelastic behaviour. In order to achieve this, a yield criterion is introduced as:

$$ \phi = t\left[ {\left( {\frac{{m_{1} }}{{f_{1} }}} \right)^{2} + \left( {\frac{{m_{2} }}{{f_{2} }}} \right)^{2} + \left( {\frac{{m_{3} }}{{f_{3} }}} \right)^{2} } \right] + \left( {\frac{{m_{4} }}{{f_{4} }}} \right)^{2} + \left( {\frac{{m_{5} }}{{f_{5} }} } \right)^{2} + \left( {\frac{{m_{6} }}{{f_{6} }}} \right)^{2} - 1 $$
(37)

where \(t = {\raise0.7ex\hbox{$2$} \!\mathord{\left/ {\vphantom {2 3}}\right.\kern-\nulldelimiterspace} \!\lower0.7ex\hbox{$3$}}\) and \(m_{1}\), \(m_{2}\), \(m_{3}\), \(m_{4}\), \(m_{5}\), and \(m_{6}\) are the internal moment in each of the stress bearing mechanisms and \(f_{1}\), \(f_{2}\), \(f_{3}\), \(f_{4}\), \(f_{5}\), and \(f_{6}\) signify the strength of individual stress bearing mechanisms. As shown in Fig. 5, \(f_{1}\) is the shear strength of a sample rotated 45° with respect to the z-axis; \(f_{2}\) is the shear strength of a sample rotated 45° with respect to the x-axis; \(f_{3}\) is the shear strength of a sample rotated 45° with respect to the y-axis; \(f_{4}\) is the shear strength of a sample parallel to the basic axis of the xy plane; \(f_{5}\) is the shear strength of a sample parallel to the basic axis of the yz plane, and finally, \(f_{6}\) is the shear strength of a sample parallel to the basic axis of the zx plane.

Fig. 5
figure 5

Shear strength of stress bearing mechanisms 1 to 6

5.2 Shear strength

Experimental data routinely show that temperature, strain rate, effective plastic strain, and pressure greatly influence the strength of materials. Figure 6 shows the influence of temperature on the strength of metals [11]. For some materials, the strength decreases with an increase in temperature, such as stainless steel. For other materials, the strength increases with temperature until a certain point and then decreases as the temperature continues to rise, such as steel castings. Figure 7 shows the influence of the strain rate on the strength of mortar [12]. In this case, the rock strength increases as the strain rate is increased. It also shows that the stress decreases with an increase in strain once it reaches the peak strength. In addition, the strain rate also influences the breadth of the strain–stress curve—the curve is broader with a higher strain rate. This observed phenomenon indicates that more energy is needed to completely damage rock material that is under a higher strain rate. Moreover, the pressure acting on the material also impacts the material strength. Figure 8 shows a typical behaviour for rock materials wherein the strength of the material increases with the pressure due to friction [13].

Fig. 6
figure 6

(modified from [11])

Influence of temperature on the strength of metals. The shear strength factor is the ratio of strength at 21 °C

Fig. 7
figure 7

(modified from [12])

Influence of strain rate on the stress–strain relationship of mortar

Fig. 8
figure 8

(according to [13])

Influence of pressure on the strength of tuff

Given these observed behaviours, each shear strength of the individual stress bearing mechanisms can be further defined as a function of temperature, strain rate, effective plastic strain, and pressure:

$$ f_{i} = f_{i}^{T} \left( T \right)f_{i}^{{\dot{e}}} \left( {\dot{e},e_{eff}^{pl} } \right)f_{i}^{p} \left( p \right) $$
(38)

where \(f_{i}^{T} \left( T \right)\) is the shear strength factor as a function of temperature; \(f_{i}^{{\dot{e}}} \left( {\dot{e},e_{eff}^{pl} } \right)\) represents the influence of the strain rate and effective plastic strain on the shear strength; and \(f_{i}^{p} \left( p \right)\) defines the relationship between the shear strength and the pressure.

In this work, instead of representing Eq. (38) in an analytic form, functions \(f_{i}^{T} \left( T \right)\), \(f_{i}^{{\dot{e}}} \left( {\dot{e},e_{eff}^{pl} } \right)\) and \(f_{i}^{p} \left( p \right)\) are defined via an input file format that uses a table of numbers—most importantly, this table can be obtained directly from normalized experimental data. In order to form a continuum strength field (i.e. for any value of strain rate, temperature, or pressure), numerical interpolation algorithms (e.g. linear interpolation algorithm) could then be used based on the discretized experimental data. Thus, the mechanical response of a wide range of materials, including both metals and rocks, can be described using Eq. (38).

5.3 Plastic angle

When a material is loaded, elastic deformation first occurs. As the loading increases, plastic deformation then develops. In our hyperelastic framework, this total deformation is assumed to be the sum of the elastic deformation and plastic deformation

$$ \tilde{\varphi }_{i} = \tilde{\varphi }_{i}^{el} + \tilde{\varphi }_{i}^{pl} $$
(39)

where \(\tilde{\varphi }_{i}\) is the angle calculated from the current configuration of each material element as introduced in Sect. 2, while \(\tilde{\varphi }_{i}^{el}\) is the current elastic angle used to calculated the stress as introduced in Sect. 4, and \(\tilde{\varphi }_{i}^{pl}\) is the current plastic angle.

5.4 Return mapping

At each time step, the elastic angle is predicted from the difference between the current angle and previous plastic angle

$$ \overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{\varphi }}_{i}^{el} = \tilde{\varphi }_{i} - \overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\varphi }_{i}^{pl} $$
(40)

where \(\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{\varphi }}_{i}^{el}\) and \(\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\varphi }_{i}^{pl}\) are the predicted current elastic angle and previous plastic angle, respectively.

The predicted internal moment \(\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{i}\) in each of the stress bearing mechanisms is then calculated via Eq. (34) or (35) as

$$ \overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{i} = m_{i} \left( {\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{\varphi }}_{i}^{el} } \right) $$
(41)

All six predicted internal moments are then substituted into Eq. (37). If \(\phi\) in Eq. (37) is greater than zero, the material begins to yield and plastic deformation develops. For this case, one needs to calculate the plastic corrector using a return mapping algorithm. In order to return to the yield surface, one must always move in the direction of the gradient of this field. As shown in Fig. 9, for the sake of higher efficiency, we find the approximate solution of the plastic corrector instead of the exact one. The gradient of the yield surface at the predicted internal moment point is

$$ \nabla \phi = \left[ {\begin{array}{*{20}c} {\frac{{4\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{1} }}{{3f_{1}^{2} }}} & {\frac{{4\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{2} }}{{3f_{2}^{2} }}} & {\frac{{4\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{3} }}{{3f_{3}^{2} }}} & {\frac{{2\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{4} }}{{f_{4}^{2} }}} & {\frac{{2\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{5} }}{{f_{5}^{2} }}} & {\frac{{2\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{6} }}{{f_{6}^{2} }}} \\ \end{array} } \right]^{{\text{T}}} $$
(42)
Fig. 9
figure 9

Sketch of the return mapping algorithm, wherein the predicted internal moment is A; the exact return is designated as the solid dark point B, while the approximate solution is presented as the solid square C

The corrected internal moments are assumed as

$$ \begin{gathered} \tilde{m}_{1} = \overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{1} - \lambda \frac{{4\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{1} }}{{3f_{1}^{2} }} \hfill \\ \tilde{m}_{2} = \overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{2} - \lambda \frac{{4\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{2} }}{{3f_{2}^{2} }} \hfill \\ \tilde{m}_{3} = \overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{3} - \lambda \frac{{4\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{3} }}{{3f_{3}^{2} }} \hfill \\ \tilde{m}_{4} = \overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{4} - \lambda \frac{{2\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{4} }}{{f_{4}^{2} }} \hfill \\ \tilde{m}_{5} = \overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{5} - \lambda \frac{{2\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{5} }}{{f_{5}^{2} }} \hfill \\ \tilde{m}_{6} = \overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{6} - \lambda \frac{{2\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{6} }}{{f_{6}^{2} }} \hfill \\ \end{gathered} $$
(43)

where \(\lambda\) can be calculated by substituting Eq. (43) into Eq. (37). One then gets a quadratic equation for \(\lambda\), in the following form

$$ \begin{gathered} \frac{{2\left( {\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{1} - \lambda \frac{{4\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{1} }}{{3f_{1}^{2} }}} \right)^{2} }}{{3f_{1}^{2} }} + \frac{{2\left( {\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{2} - \lambda \frac{{4\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{2} }}{{3f_{2}^{2} }}} \right)^{2} }}{{3f_{2}^{2} }} + \frac{{2\left( {\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{3} - \lambda \frac{{4\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{3} }}{{3f_{3}^{2} }}} \right)^{2} }}{{3f_{3}^{2} }} + \hfill \\ \frac{{\left( {\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{4} - \lambda \frac{{2\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{4} }}{{f_{4}^{2} }}} \right)^{2} }}{{f_{4}^{2} }} + \frac{{\left( {\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{5} - \lambda \frac{{2\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{5} }}{{f_{5}^{2} }}} \right)^{2} }}{{f_{5}^{2} }} + \frac{{\left( {\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{6} - \lambda \frac{{2\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{\tilde{m}}_{6} }}{{f_{6}^{2} }}} \right)^{2} }}{{f_{6}^{2} }} - 1 = 0 \hfill \\ \end{gathered} $$
(44)

Obviously, one can always find two roots for the quadratic Eq. (44). However, only the real roots have an actual physical meaning and the smallest one will be the solution. It is worth noting that, in most cases, the difference between the predicted internal moment and the corrected one is very small. Thus, the accuracy of the proposed return mapping algorithm is guaranteed.

Once the corrected internal moments are obtained, the elastic angles in each of the stress bearing mechanisms are then calculated from the relationship between the elastic angle and internal moment

$$ \tilde{\varphi }_{i}^{el} = \overline{\varphi }_{i} e^{{\frac{{2\tilde{m}_{i} }}{\pi \mu }}} $$
(45)

The corrected plastic angle is then

$$ \tilde{\varphi }_{i}^{pl} = \tilde{\varphi }_{i} - \tilde{\varphi }_{i}^{el} $$
(46)

6 Validation of hyperelastic formula

In order to test the constitutive law introduced in this work, a material element [i,j,k] is deformed from its initial state marked by \(\left[ {{\overline{\mathbf{i}}},{\overline{\mathbf{j}}},{\overline{\mathbf{k}}}} \right]\), through its intermediate state \(\left[ {{\mathbf{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\smile}$}}{i} }},{\mathbf{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\smile}$}}{j} }},{\mathbf{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\smile}$}}{k} }}} \right]\) to its final state \(\left[ {{\tilde{\mathbf{i}}},{\tilde{\mathbf{j}}},{\tilde{\mathbf{k}}}} \right]\), as shown in Fig. 10.

Fig. 10
figure 10

The initial (left), intermediate (middle), and final (right) deformation state of the material element corresponding to \(\xi = 0\), \(\xi = 1\) and \(\xi = 2\), respectively

The current deformation state is dependent on the scalar variable

$$ \xi \in \left[ {0,2} \right] $$
(47)

where \(\xi = 0\) corresponds to the initial state, \(\xi = 1\) corresponds to the intermediate state, and \(\xi = 2\) corresponds to the final state. For a given current value of \(\xi \le 1\), the deformation state is calculated as

$$ \begin{gathered} {\tilde{\mathbf{i}}} = \left( {1 - \xi } \right){\overline{\mathbf{i}}} + \xi {\mathbf{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\smile}$}}{i} }} \hfill \\ {\tilde{\mathbf{j}}} = \left( {1 - \xi } \right){\overline{\mathbf{j}}} + \xi {\mathbf{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\smile}$}}{j} }} \hfill \\ {\tilde{\mathbf{k}}} = \left( {1 - \xi } \right){\overline{\mathbf{k}}} + \xi {\mathbf{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\smile}$}}{k} }} \hfill \\ \end{gathered} $$
(48)

In a similar manner for \(1 < \xi \le 2\)

$$ \begin{gathered} {\tilde{\mathbf{i}}} = \left( {2 - \xi } \right){\mathbf{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\smile}$}}{i} }} + \left( {\xi - 1} \right){\tilde{\mathbf{i}}} \hfill \\ {\tilde{\mathbf{j}}} = \left( {2 - \xi } \right){\mathbf{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\smile}$}}{j} }} + \left( {\xi - 1} \right){\tilde{\mathbf{j}}} \hfill \\ {\tilde{\mathbf{k}}} = \left( {2 - \xi } \right){\mathbf{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\smile}$}}{k} }} + \left( {\xi - 1} \right){\tilde{\mathbf{k}}} \hfill \\ \end{gathered} $$
(49)

This calculation is done in a loop starting with \(\xi = 0\) and finishing at \(\xi = 2\). Each step \(\xi\) is incremented by a small value, and the corresponding deformation and stresses are calculated together with the work rate. Work rates are then added together to obtain the stored strain energy.

6.1 Example 1

In Fig. 11, a uniaxial tension in the \({\mathbf{j}}\) direction is applied that starts with a material element of length 1 and finishes with the material element being of length 3. In Fig. 12, the same deformation is performed but using a different loading path that also includes shear. In Fig. 13, another loading path is followed that involves intermediate stretching in the \({\mathbf{i}}\) direction as well.

Fig. 11
figure 11

Uniaxial tension, loading path A

Fig. 12
figure 12

Uniaxial tension, loading path B

Fig. 13
figure 13

Uniaxial tension, loading path C

The obtained strain energies as a function of the loading parameter \(\xi\) are shown in Fig. 14. The three curves for the three loading paths are different, but they all have the same value at \(\xi = 2\), which is the final deformation state that is seen in all three cases.

Fig. 14
figure 14

Strain energies calculated in Eq. (33) as a function of the loading parameter \(\xi\) for uniaxial stretching that uses different loading paths

6.2 Example 2

In Fig. 15, the initial and final deformation shape of a material element that stretches in all directions and shears in all directions is shown. Different intermediate states have been used to obtain three different loading paths, and by integrating the work rate for all the deformation steps from \(\xi = 0\) to \(\xi = 2\), the curves of the stored strain energy are obtained for each loading path, as shown in Fig. 16. All three curves converge at the exactly the same value for \(\xi = 2\). This occurs because the final deformation shape is the same, which means that the supplied constitutive law has the proper strain energy function.

Fig. 15
figure 15

Large strain deformation, initial configuration (left), and final configuration (right)

Fig. 16
figure 16

Strain energies calculated in Eq. (33) as a function of the loading parameter \(\xi\) for loading paths that lead to the same general deformation at \(\xi = 2\)

In other words, the numerical experiments performed here confirm that the theoretical reasoning, described in this paper’s previous sections, has led to a constitutive law framework that is truly hyperelastic.

7 Numerical examples

The proposed general framework is implemented in Los Alamos’ Hybrid Optimization Software Suite (HOSS) which is based on the combined finite-discrete element method. In this section, the proposed framework is validated and verified via two numerical examples. In the first example, the biaxial compressive yield surface of a concrete block is studied using a single finite element. In the second example, the shear band of a cylinder under uniaxial load is simulated using HOSS. In both examples, the influence of the temperature and strain rate on the material shear strengths is ignored.

7.1 Example 1

In this example, a series of virtual experiments were conducted to investigate the response of the material under biaxial loading. The concrete material was loaded to failure at prescribed ratios of \(c_{1} :c_{2}\) with \(c_{3}\) equal to zero, where \(c_{1}\), \(c_{2}\), and \(c_{3}\) are the first, second, and third principle stresses. The concrete is assumed to be an isotropic material, where the elastic material parameters are: bulk modulus \(K = 8.3\) GPa and shear modulus \(\mu = 11.0\) GPa. The uniaxial compressive strength is assumed to be 30 MPa, while the density is 2000 kg/m3. The relationship between the shear strength and pressure \(f_{i}^{p} \left( p \right)\) is defined in Fig. 17.

Fig. 17
figure 17

Shear strength as a function of mean stress

According to the experimental failure behaviour of coal and synthetic material under plane strain biaxial compression conditions [14], the mean stresses can be defined as

$$ \begin{gathered} p_{1} = p + \eta \frac{{s_{1} + s_{2} }}{2} \hfill \\ p_{2} = p + \eta \frac{{s_{2} + s_{3} }}{2} \hfill \\ p_{3} = p + \eta \frac{{s_{3} + s_{1} }}{2} \hfill \\ \end{gathered} $$
(50)

where

$$ p = \frac{{\sigma_{11} + \sigma_{22} + \sigma_{33} }}{3}; \, s_{1} = \sigma_{11} - p; \, s_{2} = \sigma_{22} - p; \, s_{3} = \sigma_{33} - p $$
(51)

In Eq. (50), \(\eta \in \left[ {0,1} \right]\) is a parameter that controls whether the mean stress is defined in 2D or 3D. If \(\eta = 0.0\), the classic 3D definition of mean stress is obtained, where \(p_{1} = p_{2} = p_{3} = p\). If \(\eta = 1.0\), the mean stresses are defined by three 2D planes which yields

$$ p_{1} = \frac{{\sigma_{11} + \sigma_{22} }}{2}; \, p_{2} = \frac{{\sigma_{22} + \sigma_{33} }}{2}; \, p_{3} = \frac{{\sigma_{33} + \sigma_{11} }}{2} $$
(52)

In this study, the influence of the parameter \(\eta\) on the results is investigated. The comparison between the simulation results with different parameters \(\eta\) and experimental results [15, 16] for the biaxial yield surface of a concrete are shown in Fig. 18. The simulation results demonstrate that the parameter \(\eta\) greatly influences the response of the material model. For concrete, all results calculated with \(\eta \approx 0.9\) match the experimental results very well. Figure 18 together with Eq. (50) also indicates that there is more than one way to define the mean stress. Moreover, \(\eta\) is a material parameter that should be calibrated according to experimental data.

Fig. 18
figure 18

Comparison of the simulation results with different parameters \(\eta\) and experimental results for a concrete biaxial yield surface

7.2 Example 2

The failure process seen for a cylinder under a uniaxial compressive load is simulated using the plasticity–damage model developed in this work. The setup of the problem is shown in Fig. 19. Both the top and bottom faces of the cylinder sample are subjected to a constant velocity of 0.5 m/s in an opposite direction, see Fig. 19. Both the initial diameter and length of the cylinder sample are 50.8 mm. The material parameters utilized here are: shear modulus of 5 GPa, bulk modulus of 3.33 GPa, and \(\eta = 0.0\). The shear strength is assumed to be a linear function of the mean stress with a pure shear strength of 2 MPa and a slope (friction coefficient) of 0.5, as shown in Fig. 20. The strength factor as a function of the effective plastic strain is shown in Fig. 21, where the strength decreases with an increase in effective plastic strain and the material is completely damaged when the effective plastic strain is greater than 1%.

Fig. 19
figure 19

Finite-discrete element setup of the uniaxial compressive virtual experiment

Fig. 20
figure 20

Shear strength as a function of the mean stress

Fig. 21
figure 21

Shear strength factor as a function of the effective plastic strain

The cylinder was discretized using 60,569 composite tetrahedral finite elements [10] with an average size of 2.5 mm. The obtained damage sequence at different relative displacements is shown in Fig. 22, while the corresponding crosscut-quarter view of the damage is presented in Fig. 23. From Figs. 22 and 23, one can see that the maximum deformation (maximum plastic strain) occurs at the surface near the middle of the cylinder. Additionally, local damage zones are seen in locations where the maximum shear stress is created. At the end of the uniaxial compressive simulation, the method produces a complex damage pattern that is phenomenologically correct.

Fig. 22
figure 22

Obtained damage sequence at relative displacements of a 0.15 mm, b 0.2 mm, c 0.25 mm, and d 0.3 mm

Fig. 23
figure 23

Crosscut-quarter view of the obtained damage sequence at relative displacements of a 0.15 mm, b 0.2 mm, c 0.25 mm, and d 0.3 mm

8 Conclusions

An alternative framework for developing hyperelastic constitutive laws for anisotropic solids at large strains has been developed. The framework is based on a physical decomposition of an infinitesimal material element into seven different physically independent stress (force) bearing mechanisms. The constitutive law for each of the mechanisms is a general function of a single variable that connects its internal moment to a corresponding shear strain component, and for the seventh material element, it connects hydrostatic stress to volumetric strain. Regardless of the number of functions employed (experimental data may not be available), the obtained constitutive law produces a unique strain energy function. This has been proven theoretically and has also been tested using numerical examples.

In this paper, a nonstandard notation has been used on the lines of the approach developed in the book Large Strain Finite Element Method: A Practical Course [3], which in essence provides an engineering view to Gurtin’s [17] approach. Gurtin and co-workers have axiomatized continuum mechanics, and in the process, they redefined the stress tensor from its classical nineteenth-century definition into the modern definition of a linear mapping from the space of surfaces to the space of forces, where surfaces and forces are vectors. It is worth noting that without this revolutionary concept, it would not have been possible to develop mechanisms-based hyperelastic formulations. The work presented here is a natural extension of this line of research.

The main novelty of the developed framework is that the need for a priori knowledge of the strain energy function is replaced by internal stress bearing mechanisms, which lends itself to using a wide variety of constitutive laws, all of which lead to an uniquely defined strain energy; thus, a hyperelastic formulation is obtained without knowing the strain energy function. As a result, the developed framework enables material modellers to develop, in a systematic way, general anisotropic nonlinear elastic and plastic material laws for a hyperelastic formulation of large strain–large displacement solid deformation. The concept is quite broad, and it has been applied to construct material constitutive laws in different ways. For example, the formulations for deviatoric stress were constructed using a combination of three linear stretches and three angular stretches in the authors’ previous work [3, 8,9,10], while six independent angular stretches were used in this paper. It is possible to envisage that alternative stress bearing mechanisms, different from those provided in this paper and in previous work [3, 8,9,10], could be employed.