Equivalent stress

Hosford equivalent stress

The header TFEL/Material/Hosford1972YieldCriterion.hxx introduces three functions which are meant to compute the Hosford equivalent stress and its first and second derivatives. This header is automatically included by MFront

The Hosford equivalent stress is defined by: \[ \sigma_{\mathrm{eq}}^{H}=\sqrt[a]{\displaystyle\frac{\displaystyle 1}{\displaystyle 2}\left({\left|\sigma_{1}-\sigma_{2}\right|}^{a}+{\left|\sigma_{1}-\sigma_{3}\right|}^{a}+{\left|\sigma_{2}-\sigma_{3}\right|}^{a}\right)} \] where \(s_{1}\), \(s_{2}\) and \(s_{3}\) are the eigenvalues of the stress.

Therefore, when \(a\) goes to infinity, the Hosford stress reduces to the Tresca stress. When \(n = 2\) the Hosford stress reduces to the von Mises stress.

The following functions has been implemented:

Example

The following example computes the Hosford equivalent stress, its normal and second derivative:

stress seq;
Stensor  n;
Stensor4 dn;
std::tie(seq,n,dn) = computeHosfordStressSecondDerivative(s,a,seps);

In this example, s is the stress tensor, a is the Hosford exponent, seps is a numerical parameter used to detect when two eigenvalues are equal.

If C++-17 is available, the previous code can be made much more readable:

const auto [seq,n,dn] = computeHosfordStressSecondDerivative(s,a,seps);

Barlat equivalent stress

The header TFEL/Material/Barlat2004YieldCriterion.hxx introduces various functions which are meant to compute the Barlat equivalent stress and its first and second derivatives. This header is automatically included by MFront for orthotropic behaviours.

The Barlat equivalent stress is defined as follows (see [1]): \[ \sigma_{\mathrm{eq}}^{B}= \sqrt[a]{ \frac{1}{4}\left( \sum_{i=0}^{3} \sum_{j=0}^{3} {\left|s'_{i}-s''_{j}\right|}^{a} \right) } \]

where \(s'_{i}\) and \(s''_{i}\) are the eigenvalues of two transformed stresses \(\underline{s}'\) and \(\underline{s}''\) by two linear transformation \(\underline{\underline{\mathbf{L}}}'\) and \(\underline{\underline{\mathbf{L}}}''\): \[ \left\{ \begin{aligned} \underline{s}' &= \underline{\underline{\mathbf{L'}}} \,\colon\,\underline{\sigma}\\ \underline{s}'' &= \underline{\underline{\mathbf{L''}}}\,\colon\,\underline{\sigma}\\ \end{aligned} \right. \]

The linear transformations \(\underline{\underline{\mathbf{L}}}'\) and \(\underline{\underline{\mathbf{L}}}''\) are defined by \(9\) coefficients (each) which describe the material orthotropy. There are defined through auxiliary linear transformations \(\underline{\underline{\mathbf{C}}}'\) and \(\underline{\underline{\mathbf{C}}}''\) as follows: \[ \begin{aligned} \underline{\underline{\mathbf{L}}}' &=\underline{\underline{\mathbf{C}}}'\,\colon\,\underline{\underline{\mathbf{M}}} \\ \underline{\underline{\mathbf{L}}}''&=\underline{\underline{\mathbf{C}}}''\,\colon\,\underline{\underline{\mathbf{M}}} \end{aligned} \] where \(\underline{\underline{\mathbf{M}}}\) is the transformation of the stress to its deviator: \[ \underline{\underline{\mathbf{M}}}=\underline{\underline{\mathbf{I}}}-\displaystyle\frac{\displaystyle 1}{\displaystyle 3}\underline{I}\,\otimes\,\underline{I} \]

The linear transformations \(\underline{\underline{\mathbf{C}}}'\) and \(\underline{\underline{\mathbf{C}}}''\) of the deviator stress are defined as follows: \[ \underline{\underline{\mathbf{C}}}'= \begin{pmatrix} 0 & -c'_{12} & -c'_{13} & 0 & 0 & 0 \\ -c'_{21} & 0 & -c'_{23} & 0 & 0 & 0 \\ -c'_{31} & -c'_{32} & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & c'_{44} & 0 & 0 \\ 0 & 0 & 0 & 0 & c'_{55} & 0 \\ 0 & 0 & 0 & 0 & 0 & c'_{66} \\ \end{pmatrix} \quad \text{and} \quad \underline{\underline{\mathbf{C}}}''= \begin{pmatrix} 0 & -c''_{12} & -c''_{13} & 0 & 0 & 0 \\ -c''_{21} & 0 & -c''_{23} & 0 & 0 & 0 \\ -c''_{31} & -c''_{32} & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & c''_{44} & 0 & 0 \\ 0 & 0 & 0 & 0 & c''_{55} & 0 \\ 0 & 0 & 0 & 0 & 0 & c''_{66} \\ \end{pmatrix} \]

The following functions have been implemented:

Linear transformations

To define the linear transformations, the makeBarlatLinearTransformation function has been introduced. This function takes two template parameter:

This functions takes the \(9\) coefficients as arguments, as follows:

const auto l1 = makeBarlatLinearTransformation<3>(c_12,c_21,c_13,c_31,
                                                  c_23,c_32,c_44,c_55,c_66);

Note In his paper, Barlat and coworkers uses the following convention for storing symmetric tensors:

\[ \begin{pmatrix} xx & yy & zz & yz & zx & xy \end{pmatrix} \]

which is not consistent with the TFEL/Cast3M/Abaqus/Ansys conventions:

\[ \begin{pmatrix} xx & yy & zz & xy & xz & yz \end{pmatrix} \]

Therefore, if one wants to use coefficients \(c^{B}\) given by Barlat, one shall call this function as follows:

const auto l1 = makeBarlatLinearTransformation<3>(cB_12,cB_21,cB_13,cB_31,
                                                  cB_23,cB_32,cB_66,cBB_55,cBB_44);

The TFEL/Material library also provide an overload of the makeBarlatLinearTransformation which template parameters are the modelling hypothesis and the orthotropic axis conventions. The purpose of this overload is to swap appropriate coefficients to get a consistent definition of the linear transformations for all the modelling hypotheses.

General functionalities

Computation of the inverse of the Langevin function

The inverse Langevin function is used in many statistically based network behaviours describing rubber-like materials.

The Langevin function \(\mathcal{L}\) is defined as follows: \[ \mathcal{L}\left(x\right)=\displaystyle\frac{\displaystyle 1}{\displaystyle \coth\left(x\right)}-\displaystyle\frac{\displaystyle 1}{\displaystyle x} \]

The complexity of the inverse Langevin function \(\mathcal{L}^{-1}\left(x\right)\) motivated the development of various approximations [2–4].

Comparison of various approximations of the inverse Langenvin function
Figure 1: Comparison of various approximations of the inverse Langenvin function

Figure 1 compares those approximations. The approximations of Bergström and Boyce [3] and Jedynak [4] are undistinguishable. See Jedynak for a quantitative discussion of the error generated by those approximations [4]. It is worth noting that all those approximations mostly differs near the pole of inverse Langevin function \(\mathcal{L}^{-1}\left(x\right)\).

The InverseLangevinFunctionApproximations enumeration lists the approximations that have been implemented and that can be evaluated in a constexpr context:

The computeApproximateInverseLangevinFunction computes one approximation of the inverse Langevin function and the computeApproximateInverseLangevinFunctionAndDerivative function computes an approximation of the inverse Langevin function and its derivative. These functions have two template parameters: the approximation selected and the numeric type to be used. By default, the JEDYNAK_2015 approximation is used and the numeric type can be deduced from the type of the argument.

The approximation proposed by Bergström and Boyce [3] is given by the following function: \[ \mathcal{L}^{-1}\left(x\right) \approx \left\{ \begin{aligned} c_{1} \tan\left(c_{2} \, x\right) + c_{3} \, x &\quad\text{if}\quad \left|x\right| \leq c_{0}\\ \displaystyle\frac{\displaystyle 1}{\displaystyle \mathop{sign}\left(x\right)-x}&\quad\text{if}\quad \left|x\right| > c_{0} \end{aligned} \right. \]

The computeBergstromBoyce1998ApproximateInverseLangevinFunction function computes this approximation and the computeBergstromBoyce1998ApproximateInverseLangevinFunctionAndDerivative function computes this function and its derivative. These functions can’t be declared constexpr because of tangent function is not constexpr. These functions have one template parameter, the numeric type to be used. This template parameter can be automatically deduced from the type of the argument.

Example of usage

using ApproximationFunctions = InverseLangevinFunctionApproximations;
// compute Cohen's approximation of the inverse Langevin function
const auto v = computeApproximateInverseLangevinFunction<
            ApproximationFunctions::COHEN_1991>(y)
// compute Jedynak's approximation of the inverse Langevin function and its derivative
const auto [f, df] = computeApproximateInverseLangevinFunctionAndDerivative(y)

\(\pi\)-plane

The \(\pi\)-plane is defined in the space defined by the three eigenvalues \(S_{0}\), \(S_{1}\) and \(S_{2}\) of the stress by the following equations: \[ S_{0}+S_{1}+S_{2}=0 \]

This plane contains deviatoric stress states and is perpendicular to the hydrostatic axis. A basis of this plane is given by the following vectors: \[ \vec{n}_{0}= \frac{1}{\sqrt{2}}\, \begin{pmatrix} 1 \\ -1 \\ 0 \end{pmatrix} \quad\text{and}\quad \vec{n}_{1}= \frac{1}{\sqrt{6}}\, \begin{pmatrix} -1 \\ -1 \\ 2 \end{pmatrix} \]

This plane is used to characterize the iso-values of equivalent stresses which are not sensitive to the hydrostatic pressure.

Various functions are available:

Orthotropic axes convention

Most finite element solver can’t have a unique definition of the orthotropic axes valid for all the modelling hypotheses.

For example, one can define a pipe using the following axes definition:

The Pipe orthotropic axes convention for 3D, 2D axysymmetric, 1D axisymmetric generalised plane strain or generalised plane stress (left) and 2D plane stress, strain, generalized plane strain (right)

With those conventions, named Pipe in MFront, the axial direction is either the second or the third material axis, a fact that must be taken into account when defining the stiffness tensor, the Hill tensor(s), the thermal expansion, etc.

This convention is only valid for \(3D\), \(2D\) axysymmetric, \(1D\) axisymmetric generalised plane strain or generalised plane stress. - \(\left(rr,tt,zz,...\right)\) in \(2D\) plane stress, strain, generalized plane strain.

The Plate orthotropic axes convention

If we were to model plates, an appropriate convention is the following:

By definition, this convention, named Plate in MFront is only valid for \(3D\), \(2D\) plane stress, \(2D\) plane strain and \(2D\) generalized plane strain modelling hypotheses.

Homogeneisation

The homogenization functions are part of the namespace tfel::material::homogenization. A specialization for elasticity is defined: tfel::material::homogenization::elasticity.

Eshelby tensors

The header Eshelby.hxx introduces the function computeEshelbyTensor which computes the Eshelby tensor of an ellipsoid. If we consider a constant stress-free strain \(\underline{\varepsilon}^\mathrm{T}\) filling an ellipsoidal volume embedded in an infinite homogeneous medium whose elasticity is \(\underline{C}_0\), the strain tensor inside the ellipsoid is given by

\(\underline{\varepsilon}=\underline{S}_0:\underline{\varepsilon}^\mathrm{T}\).

where \(\underline{S}_0\) is the Eshelby tensor. Note that it is related to the Hill tensor (P_0) by

\(\underline{P}_0=\underline{S}_0:\underline{C}_0^{-1}\)

which gives the strain tensor inside the ellipsoid as a function of the polarization tensor \(\underline{\tau }= -\underline{C}_0:\underline{\varepsilon}^\mathrm{T}\) :

\(\underline{\varepsilon}=-\underline{P}_0:\underline{\tau}\).

The function computeEshelbyTensor computes the Eshelby tensor of an ellipsoid whose semi-axis lengths are a, b, c, embedded in an isotropic matrix. It returns an object of type st2tost2<3u,real>, which is the fourth-order Eshelby tensor, in a basis which is adapted to the ellipsoid.

There is also computeSphereEshelbyTensor, computeAxisymmetricalEshelbyTensor, and also computeCircularCylinderEshelbyTensor and computeEllipticCylinderEshelbyTensor for plane strain elasticity.

The expressions can be found in [5] for the axisymmetrical ellipsoid and in [6] for other cases.

When two axes are very close, the formulas for three different axes are numerically instable, hence a parameter is introduced to switch to the formulas suited for the perfect axisymmetrical case. This parameter can be modified by the user, it is called precf when using float, precd for double, and precld. for long double. In the same way, the formulas for the axisymmetrical case are instable when the aspect ratio is near one, so a parameter allows to switch to the formula for a sphere.

Strain localisation tensors

The header Eshelby.hxx also introduces three functions that compute the strain localisation tensor of an ellipsoid. If we consider an ellipsoid whose elasticity is \(\underline{C}_i\), embedded in an infinite homogeneous medium whose elasticity is \(\underline{C}_0\), submitted to a external uniform strain field at infinity \(\underline{E}\), the strain field within the ellipsoid is uniform and given by

\(\underline{\varepsilon }= \underline{A}:\underline{E}\)

where \(\underline{A}\) is the localisation tensor.

Three functions are implemented for the different possible shapes : computeEllipsoidLocalisationTensor, computeAxisymmetricalEllipsoidLocalisationTensor and computeSphereLocalisationTensor. The ellipsoid is parametrized by its semi-axis lengths \(a,b,c\) but also by its axis orientations. The functions then return the localisation tensors taking into account the orientations.

Homogenization schemes

Different schemes are implemented and return the homogenized stiffness of the material. The scheme available are Mori-Tanaka scheme and dilute scheme. The available functions are computeMoriTanakaScheme, computeDiluteScheme, computeSphereDiluteScheme, computeSphereMoriTanakaScheme.

If a distribution of ellipsoids is considered, three types of distributions are considered : isotropic, transverse isotropic and with unique orientation. The corresponding functions are computeIsotropicDiluteScheme, computeTransverseIsotropicDiluteScheme, computeOrientedDiluteScheme, computeIsotropicMoriTanakaScheme, computeTransverseIsotropicMoriTanakaScheme and computeOrientedMoriTanakaScheme.

1.
Barlat, F., Aretz, H., Yoon, J. W., Karabin, M. E., Brem, J. C. and Dick, R. E. Linear transfomation-based anisotropic yield functions. International Journal of Plasticity. 1 May 2005. Vol. 21, no. 5, p. 1009–1039. DOI 10.1016/j.ijplas.2004.06.004. Available from: http://www.sciencedirect.com/science/article/pii/S0749641904001160
2.
Cohen, A. A padé approximant to the inverse langevin function. Rheologica Acta. 1 May 1991. Vol. 30, no. 3, p. 270–273. DOI 10.1007/BF00366640. Available from: https://doi.org/10.1007/BF00366640
3.
Bergström, J. S. and Boyce, M. C. Constitutive modeling of the large strain time-dependent behavior of elastomers. Journal of the Mechanics and Physics of Solids. 1 May 1998. Vol. 46, no. 5, p. 931–954. DOI 10.1016/S0022-5096(97)00075-6. Available from: https://www.sciencedirect.com/science/article/pii/S0022509697000756
4.
Jedynak, Radosław. Approximation of the inverse langevin function revisited. Rheologica Acta. 1 January 2015. Vol. 54, no. 1, p. 29–39. DOI 10.1007/s00397-014-0802-2. Available from: https://doi.org/10.1007/s00397-014-0802-2
5.
6.
Eshelby, John Douglas. The determination of the elastic field of an ellipsoidal inclusion, and related problems. Proceedings of the Royal Society A. 1957. Vol. 241, no. 1226. DOI 10.1098/rspa.1957.0133.