***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

runge_kutta

explicit Runge-Kutta integration with automatic time stepping based on integration error

theta_method_a

implicit generalized midpoint integration; this method normally supplies the best tangent matrix

theta_auto_a

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:

../../_images/MatRotation.fig.svg

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.

(216)#\[\ten \varepsilon_{tot}^\prime = \ten R^T\ten \varepsilon_{tot}\ten R\]

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:

(217)#\[\ten \sigma = \ten R\ten \sigma^\prime\ten R^T\]

Rotation by giving Euler angles is similar. The significance of the three angles is given in the following figure:

../../_images/MatEuler.fig.svg

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, or VINT 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