***material
#
Description#
This command marks the definition of the materials in a structure to be studied. The behavior of each material is defined in a file with special syntax (see the chapter Material Behavior). The purpose of this command is therefore to define the material file names, associate these files to different element sets, and specify other global applications on top of a material model such as rotation of material coordinates or give local integration methods.
Syntax#
***material
\(~\,~\,\) [ *file
file ]
\(~\,~\,\) [ *standard
std-file ]
\(~\,~\,\) [ *integration
]
\(~\,~\,\) [ *rotation
]
\(~\,~\,\) [ *initialize_variable
]
The sub-commands for ***material
pertain to the behavior defined
in the current material file only. Note that the function of this
command is somewhat different than the equivalently named command used
in the Z-set .inp
file.
A last comment: Always Verify Your Materials. The behaviors supplied in the Z-mat library are compatible with the simulation program, so there is no excuse to not validate the material behavior with a given set of coefficients.
*integration
#
Description#
This option determines the local integration method for a material behavior.
Syntax#
*integration
method params
The allowable methods are summarized in the table below:
Methods |
Description |
---|---|
|
explicit Runge-Kutta integration with automatic time stepping based on integration error |
|
implicit generalized midpoint integration; this method normally supplies the best tangent matrix |
|
automatic time stepping in the implicit \(\theta\)-method |
runge_kutta
The Runge-Kutta method implements a second order explicit integration with automatic time stepping. Variables are normalized to allow varied variable magnitudes in “stiff” sets of equations. The method takes two real parameters. These are the convergence criteria followed by a minimum value for normalization. Standard RK error calculation for each integrated variable will be normalized by either the increment of the variable or this second parameter, whichever is greater. the resulting error is compared with the first parameter.
The Runge-Kutta integration with the
gen_evp
material behavior provides a tangent matrix in models with a single inelastic deformation. This matrix is however not consistent with the integration scheme, and thus yields less than optimal global convergence. The explicit integration also performs poorly in heavily time-dependent problems such as viscoplasticity. However, some complex models are only implemented with this method.theta_method_a
The \(\theta\)-A method is the standard integration for the majority of material laws requiring integration.
(215)#\[x(t+\Delta t)-x(t) = \dot x\left(t+\theta\Delta t\right) \Delta t\]This method requires 3 parameters to describe the convergence. These are first the \(\theta\) value (real) followed by the residual required for convergence (real) and the maximum number of local iterations in the integration (integer).
The value for \(\theta\) must be greater than zero and less than one. It is strongly advised to use theta values of \(1\) for time independent (plastic) materials, and \(1/2\) for time dependent (viscoplastic) problems. Time independent plasticity will normally show strong oscillations about the solution for values of \(\theta\) less than \(1\).
Reasonable values of convergence range from \(10^{-6}\) to \(10^{-10}\). Values which are too large usually lead to poor global convergence. Too small values will not converge due to numerical roundoff (\(10^{-12}\) is about the limit). Convergence will rarely take more than 25 iterations, and should not take more than 50. If this is the case, there may be some error in the integration (make a bug report), or the material parameters are excessive (damage laws may provoke this). If the local iterations are greater than 50 it is probably better to reduce the global iterations or use automatic time stepping (global or local).
The default integration is dependent on the material law used. Most behaviors modeling plastic or viscoplastic materials use a default of the \(\theta\)-method with theta = 1.0 ,eta = 1.e-9 and max_iteration = 200.
Example#
% plasticity or large deformation
*integration theta_method_a 1.0 1.e-9 50
% difficult viscoplastic case
*integration theta_method_a 0.5 1.e-6 100
% complex law
*integration runge_kutta 1.e-3 1.e-3
*rotation
#
Description#
This material option is used to change a coordinate systems by rotation. It is used here to simplify specification of some materials (anisotropy, etc), but the syntax is general. Other applications using the rotation object include specification of grain orientations for polycrystals.
There are currently two methods for specifying a rotation. These are by vectors of the rotated coordinate axes in the global coordinate system, and by Euler angles (used for crystal orientation for example). The first case is displayed in the following figure:
For the material rotation of this section, the material gradient will be rotated (rotation is applied) before being integrated by the material behavior. For small deformation mechanics, this would be a rotation of the strain tensor.
The material behavior then solves for the flux in terms of the new gradient, which is \(\ten \varepsilon_{tot}^\prime\rightarrow\ten \sigma^\prime\) for the mechanical problem. Afterwards the flux is rotated to the global coordinates again:
Rotation by giving Euler angles is similar. The significance of the three angles is given in the following figure:
Syntax#
For rotations specified using coordinate axes:
*rotation
\(~\,\) [ x1
\(x^*\) \(y^*\) [\(z^*\)] ]
\(~\,\) [ x2
\(x^*\) \(y^*\) [\(z^*\)] ]
\(~\,\) [ x3
\(x^*\) \(y^*\) [\(z^*\)] ]
The arguments x1, x2, x3
indicate the components of direction
vectors for the transformed coordinate frame. Exactly one direction is
required in 2D problems, and two directions are required in 3D. The
order of definition is not important. The local coordinate system may be
assembled with any of the geometrical axes. The input vectors will also
be normalized by the program to automatically make unit vectors.
Using the notation here that t1 is the first direction vector defined,
and t2 is the second (for 3D problems), direction vectors of the
coordinate system are defined as follows: The first vector is collinear
to t1. The second vector is a vector in the plane defined by t1,t2
and is perpendicular to t1. The third direction will always be
calculated using the vector product of the first two vectors. The t
vectors will replaced by those given by you using the x1
, x2
,
x3
choices.
For rotations specified using Euler angles:
*rotation
\(\phi_1\) \(\phi\) \(\phi_2\)
*initialize_variable
#
Description#
This command is used to give initial values to the variables of a material. Currently, only constant (uniform) values are allowed. This command is used in the place of the initializing commands in ABAQUS.
Syntax#
The syntax for the automatic time stepping control is the following:
*initialize_variable
\(~\,~\,\) var1 val1
\(~\,~\,\) ...
\(~\,~\,\) varN valN
The syntax is free format, except for the fact that variable name and initial values must be given in pairs. The definable parameters are:
- \(var_i\)
a character name of a variable of the problem. This can be from the
FLUX
, orVINT
variables. Each component of a tensorial or vector variable must be initialized separately.- \(val_i\)
real value for the limit of the last-given variable name.
Example#
This is an example for the problem 4022301 of ABAQUS. The input file is the following (this is for a custom behavior integrating the same Ziegler model as in ABAQUS:
***material
*integration theta_method_a 1.0 1.e-7 1500
*initialize_variable
epcum 0.43
X11 128.0
X22 -181.0
X33 53.0
***behavior ziegler_test
...
***return