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
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 is coded in umat_abaqusnl.f.
The mechanical logarithmic strain satisfies
![]() |
(486) |
where
are the eigenvalues of the mechanical
deformation gradient
. In calculiX, the
mechanical deformation gradient is obtained by subtracting the thermal
expansion from the total deformation gradient, i.e.
![]() |
(487) |
for isotropic expansion. The rotation tensor
rotates the principal vectors
of the motion in material coordinates in spatial
coordinates
:
![]() |
(488) |
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
is
orthogonal, i.e.
) :
![]() |
(489) |
can be obtained from the eigenvalues of the
mechanical Lagrange
tensor
and its eigenvectors are
.
The Cauchy tensor satisfies
![]() |
(490) |
and consequently the corotational Cauchy tensor amounts to
![]() |
(491) |
Here, is the Jacobian determinant,
is the Piola-Kirchhoff
stress of the second kind and
is the right-stretch
tensor. The latter is the square root of the Cauchy-Green tensor
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 relationships is needed between the
total right-stretch tensor and the mechanical right-stretch tensor. Since
has the same eigenvalues as
and the
multiplicative decomposition of the deformation gradient in a mechanical and
thermal deformation gradient leads to
one obtains:
![]() |
(492) |
The latter equation assumes that the thermal expansion is isotropic. In
routine umat_abaqusnl.f
is known,
can be obtained from
and
results from
![]() |
(493) |
where the index 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:
![]() |
(494) |
Now,
is needed
in CalculiX (i.e. total Lagrangian approach), however, the Abaqus routine returns
. Performing an
exact transformation is very tedious and nearly impossible. It would require
an enormous computational effort and frequently results in an asymmetric
- matrix even
if
is
symmetric. To avoid longer computational times due to the use of an asymmetric
linear equation solver a symmetrization is usually performed leading to an
approximation anyway. Therefore, a simplified approach is taken which reduced
the computational effort to a minimum while leading to acceptable convergence
rates despite the approximations involved.
From the relationship between
and
one obtains (in Carthesian coordinates)
![]() |
(495) |
(recall that
is symmetric). In the above equation the
dependence of
on
has been
neglected (first approximation). One can further write:
![]() |
(496) |
or, approximating the corotational mechanical logarithmic strain
by the
corotational mechanical
Eulerian strain
(second approximation):
![]() |
(497) |
The Eulerian strain satisfies:
![]() |
(498) |
which amounts to:
![]() |
(499) |
This can be written as:
![]() |
![]() |
![]() |
|
![]() |
![]() |
(500) |
where
![]() |
(501) |
This leads to:
![]() |
(502) |
or
![]() |
(503) |
Consequently, the corotational mechanical Eulerian strain amounts to:
![]() |
(504) |
leading to (again using the first approximation for the inverse mechanical right-stretch tensor)
where
Due to the symmetry of the corotational mechanical Eulerian strain tensor and the symmetry of the inverse right-stretch tensor, one can write after substitution of Equation (506) into Equation (505):
![]() |
(507) |
One finally obtains:
![]() |
(508) |
This is the expresson which is used for the material tangent. The approximations do not lead to a false result, they just slow down the convergence. Since the wish to avoid asymmetric matrices precludes quadratic convergence anyway the above approximations seem tolerable. This has been confirmed in practical numerical simulations of e.g. the deformation plasticity model and the Johnson-Cook model in implicit dynamic calculations (in explicit dynamic calculations the material tangent is not needed).