User materials

Other material laws can be defined by the user by means of the *USER MATERIAL keyword card. More information and examples can be found in section .

A user material card requires the coding of a user material subroutine, either of the CalculiX type or the Abaqus type.

For a user material routine of the CalculiX type the routine umat_user.f can be taken as example. The input primarily exists of the mechanical Lagrange strain tensor at the beginning and end of the increment, requested output is the Piola-Kirchhoff stress tensor of the second kind and the derivative of the Piola-Kirchhoff stress of the second kind with respect to the mechanical Lagrange strain tensor, both at the end of the increment. Details of other input fields is given in the section referenced above.

For a user material routine of the Abaqus type there are two possibilities: either the user wants to apply the routine to linear geometric calculations only. Then, the kind of strain and stress going in or out of the routine is not important and the previous paragraph applies. However, if the user would like to apply the routine to geometrically nonlinear calculations, the strain entering the routine is the corotational mechanical logarithmic strain and the required stress is the corotational Cauchy stress. So CalculiX has to perform some conversions before and after calling the Abaqus user material routine. For a prototype example of a Abaqus user material routine the user is referred to umat.f, for limitations on the use of the Abaqus interface fields section should be consulted.

Here, some information is given on how the fields used in CalculiX (mechanical Lagrange strain and Piola-Kirchhoff stress of the second kind) are converted into the fields required by Abaqus (corotational mechanical logarithmic strain and corotational Cauchy stress) and vice versa. The conversions are coded in umat_abaqusnl.f. The fields $ \boldsymbol{F}$, $ \boldsymbol{E} ^{\mathcal{M}}$ and $ \boldsymbol{S}$ are available at the start of the routine (the meaning of these variables is explained in the following paragraphs).

The mechanical logarithmic strain satisfies

$\displaystyle e_{\ln}^{\mathcal{M}} = \sum_{i} \ln{\lambda_i^{\mathcal{M}}} \boldsymbol{n}_i \otimes \boldsymbol{n}_i,$ (487)

where $ \lambda_i^{\mathcal{M}}$ are the eigenvalues of the mechanical deformation gradient $ \boldsymbol{F} ^{\mathcal{M}}$. In CalculiX, the mechanical deformation gradient is obtained by subtracting the thermal expansion from the total deformation gradient, i.e.

$\displaystyle \boldsymbol{F} ^{\mathcal{M}}= \boldsymbol{F} - \alpha \Delta T \boldsymbol{I}$ (488)

for isotropic expansion. This is a first order approximation of a multiplicative decomposition of the total deformation gradient into a mechanical and thermal component in the form $ \boldsymbol{F}=
\boldsymbol{F}^{\mathcal{M}} (1 + \alpha \Delta T)$, recall also $ \boldsymbol{F}=\boldsymbol{I} + (\nabla_0 \boldsymbol{u})^T$. The rotation tensor $ \boldsymbol{R}= \boldsymbol{n}_{\underline{i}}
\otimes \boldsymbol{N}_{\underline{i}}$ rotates the principal vectors $ \boldsymbol{N}_i$ of the motion in material coordinates into spatial coordinates $ \boldsymbol{n}_i$:

$\displaystyle \boldsymbol{n}_i = \boldsymbol{R} \cdot \boldsymbol{N}_i.$ (489)

It is a two-point tensor with one leg in the material frame of reference and one leg in the spatial frame of reference. The corotational mechanical logarithmic strain then amounts to (recall that $ \boldsymbol{R}$ is orthogonal, i.e. $ \boldsymbol{R}^{-1} = \boldsymbol{R}^T$) :

$\displaystyle \hat{\boldsymbol{e}}_{\ln}^ {\mathcal{M}} = \boldsymbol{R}^T \cdo...
...sum_{i} \ln{\lambda_i^{\mathcal{M}}} \boldsymbol{N}_i \otimes \boldsymbol{N}_i.$ (490)

$ \lambda_i^{\mathcal{M}}$ can be obtained from the eigenvalues of the mechanical Lagrange tensor $ \boldsymbol{E}^ {\mathcal{M}}= (\boldsymbol{F}^ {\mathcal{M},T} \cdot
\boldsymbol{F}^ {\mathcal{M}} - \boldsymbol{I})/2 $ and its eigenvectors are $ \boldsymbol{N}_i$.

The Cauchy tensor satisfies

$\displaystyle \boldsymbol{\sigma } = J^{-1} \boldsymbol{R} \cdot \boldsymbol{U} \cdot \boldsymbol{S} \cdot \boldsymbol{U}^T \cdot \boldsymbol{R}^T,$ (491)

and consequently the corotational Cauchy tensor amounts to

$\displaystyle \hat{\boldsymbol{\sigma }} = \boldsymbol{R}^T \cdot \boldsymbol{\...
...dsymbol{R} = J^{-1} \boldsymbol{U} \cdot \boldsymbol{S} \cdot \boldsymbol{U}^T.$ (492)

Here, $ J$ is the Jacobian determinant, $ \boldsymbol{S}$ is the Piola-Kirchhoff stress of the second kind and $ \boldsymbol{U}$ is the right-stretch tensor. The latter is the square root of the Cauchy-Green tensor $ \boldsymbol{C}$ and therefore it can also be derived from the Lagrange tensor. However, in routine umat_abaqusnl.f the mechanical Lagrange tensor is available and not the total one. So a relationship is needed between the total right-stretch tensor and the mechanical right-stretch tensor. Since $ \boldsymbol{U}$ has the same eigenvalues as $ \boldsymbol{F}$ and the multiplicative decomposition of the deformation gradient in a mechanical and thermal deformation gradient leads to $ \lambda = \lambda ^ {\mathcal{M}} (1 +
\alpha \Delta T)$ one obtains:

$\displaystyle \hat{\boldsymbol{\sigma }} = J^{-1} \boldsymbol{U}^ {\mathcal{M}}...
...\boldsymbol{S} \cdot (\boldsymbol{U}^ {\mathcal{M}})^T (1 + \alpha \Delta T)^2.$ (493)

The latter equation assumes that the thermal expansion is isotropic. In routine umat_abaqusnl.f $ \boldsymbol{S}$ is known, $ \boldsymbol{U}^
{\mathcal{M}}$ can be obtained from $ \boldsymbol{E} ^{\mathcal{M}}$ and $ (1 +
\alpha \Delta T)$ results from

$\displaystyle (1 +\alpha \Delta T) = \sqrt{\frac{(\boldsymbol{F}^T \cdot \boldsymbol{F})_{11} }{2 \boldsymbol{E}^ {\mathcal{M}}_{11}+1 }},$ (494)

where the index $ _{11}$ refers to element (1,1) of the corresponding matrix. In this way the corotational Cauchy stress is obtained from the Piola-Kirchhoff stress of the second kind. The inverse relationship is used after returning from the Abaqus material user subroutine:

$\displaystyle \boldsymbol{S} = J \boldsymbol{U}^{-1} \cdot \hat{\boldsymbol{\sigma }} \cdot \boldsymbol{U }^{-T}.$ (495)

Now, $ \partial \boldsymbol{S}/\partial \boldsymbol{E}^{\mathcal{M}}$ is needed in CalculiX (i.e. total Lagrangian approach), however, the Abaqus routine returns $ \partial \hat{\boldsymbol{\sigma}} /\partial
\hat{\boldsymbol{e}}_{\ln}^{\mathcal{M}}$. Now, taking into account the following considerations:

and writing the expression for the Piola-Kirchhoff stress of the second kind in a rectangular coordinate system:

$\displaystyle \boldsymbol{S}_{KL}=J \boldsymbol{U}^{-1}_{KM} \hat{\boldsymbol{\sigma }}_{MN} \boldsymbol{U}^{-1}_{NL}$ (497)

straightforward differentation yields:

$\displaystyle \left ( \frac{\partial \boldsymbol{S}_{KL}}{\partial \boldsymbol{E}_{PQ}^{\mathcal{M}}} \right )$ $\displaystyle = J^{\mathcal{M}} \left( {\boldsymbol{C}^{\mathcal{M}}}^{-1}_{PQ}...
...MN} \left( {\boldsymbol{U}^{\mathcal{M}}}^{-1}_{NL} \right) (1+\alpha \Delta T)$    
  $\displaystyle + 2 J^{\mathcal{M}} \left( \frac{\partial{\boldsymbol{U}^{\mathca...
...MN} \left( {\boldsymbol{U}^{\mathcal{M}}}^{-1}_{NL} \right) (1+\alpha \Delta T)$    
  $\displaystyle +2 J^{\mathcal{M}}\left( {\boldsymbol{U}^{\mathcal{M}}}^{-1}_{KM}...
...ht) \left( {\boldsymbol{U}^{\mathcal{M}}}^{-1}_{NL} \right) (1+\alpha \Delta T)$    
  $\displaystyle +2 J^{\mathcal{M}}\left( {\boldsymbol{U}^{\mathcal{M}}}^{-1}_{KM}...
..._{NL} }{\partial \boldsymbol{C}_{PQ}^{\mathcal{M}}} \right) (1+\alpha \Delta T)$ (498)

The first term in brackets on the second line, the third term in brackets on the third line and the second term in brackets on the fourth line are special cases of the derivative of a function of $ \boldsymbol{C}$ w.r.t $ \boldsymbol{C}$. Expressions for such a differentation based on the eigenvalues and structural tensors of $ \boldsymbol{C}$ were derived by Itskov [42] and are summarized in the Appendix of [25]. The second term in brackets on the third line is the tangent returned by the Abaqus UMAT routine.

Notice that the above equation is symmetric in (KL) and (PQ), i.e. switching K and L and/or P and Q. In particular, switching K and L in the second term leads to the fourth term. This symmetry is to be expected, since $ \boldsymbol{S}$ and $ \boldsymbol{E} ^{\mathcal{M}}$ are symmetric tensors. However, it is not clear whether the symmetry obtained by replacing KL by PQ is preserved. Therefore, in CalculiX a symmetrization of the resulting tangent matrix is performed, leading to 21 constants instead of 36 constants. The above procedure was implemented in umat_abaqusnl.f and umat_abaqusnl_total.f. It is used for those material models, which were only formulated for small strains, such as isotropic plasticity for an elastically orthotropic material, Johnson_Cook plasticity and Mohr_Coulomb plasticity.